Site checkin for project PLC4X: Jenkins Tools
diff --git a/search-index.js b/search-index.js
index 2baac62..472401c 100644
--- a/search-index.js
+++ b/search-index.js
@@ -1 +1 @@
-antoraSearch.initSearch(lunr, {"index":{"version":"2.3.9","fields":["title","name","text","component"],"fieldVectors":[["title/1",[0,67.357]],["name/1",[1,1.532]],["text/1",[]],["component/1",[2,0.4]],["title/2-1",[3,33.925,4,29.665]],["name/2-1",[]],["text/2-1",[]],["component/2-1",[]],["title/2-2",[5,42.326]],["name/2-2",[]],["text/2-2",[]],["component/2-2",[]],["title/2-3",[6,11.806,7,12.464,8,9.361,9,16.101,10,15.692,11,20.935,12,27.094,13,12.15]],["name/2-3",[]],["text/2-3",[]],["component/2-3",[]],["title/2-4",[6,15.872,14,19.241,15,18.285,16,13.133,17,18.108]],["name/2-4",[]],["text/2-4",[]],["component/2-4",[]],["title/2",[2,9.757,16,17.047,18,40.443]],["name/2",[18,1.99]],["text/2",[3,2.295,4,2.007,5,2.362,6,2.448,7,2.584,8,2.579,9,2.234,10,5.031,11,2.904,12,3.759,13,1.686,14,1.986,15,4.207,16,3.352,19,2.295,20,2.772,21,3.652,22,3.162,23,3.759,24,2.742,25,1.672,26,2.163,27,1.925,28,2.475,29,7.999,30,5.18,31,2.742,32,2.981,33,2.517,34,2.539,35,4.47,36,1.896,37,2.742,38,4.336,39,2.416,40,3.516,41,2.234,42,4.47,43,5.767,44,2.007,45,2.362,46,4.582,47,2.981,48,4.051,49,3.759,50,4.713,51,4.811,52,3.757,53,3.274,54,3.194,55,3.112,56,2.539,57,2.436,58,2.455,59,2.455,60,3.759,61,3.735,62,4.47,63,3.584,64,3.559,65,3.215,66,3.112,67,1.775,68,2.609,69,6.755,70,4.098,71,2.475,72,2.634,73,1.505,74,2.742,75,2.191,76,2.981]],["component/2",[2,0.4]],["title/3-1",[7,30.986]],["name/3-1",[]],["text/3-1",[]],["component/3-1",[]],["title/3-2",[8,16.335,77,20.941,78,41.163]],["name/3-2",[]],["text/3-2",[]],["component/3-2",[]],["title/3-3",[8,19.195,77,24.608]],["name/3-3",[]],["text/3-3",[]],["component/3-3",[]],["title/3-4",[2,9.757,77,20.941,79,23.28]],["name/3-4",[]],["text/3-4",[]],["component/3-4",[]],["title/3-5",[2,8.492,77,18.225,79,20.261,80,29.705]],["name/3-5",[]],["text/3-5",[]],["component/3-5",[]],["title/3-6",[77,20.941,81,36.088,82,35.256]],["name/3-6",[]],["text/3-6",[]],["component/3-6",[]],["title/3-7",[82,35.256,83,19.505,84,18.456]],["name/3-7",[]],["text/3-7",[]],["component/3-7",[]],["title/3-8",[82,35.256,85,42.794,86,42.794]],["name/3-8",[]],["text/3-8",[]],["component/3-8",[]],["title/3-9",[82,35.256,87,30.883,88,26.407]],["name/3-9",[]],["text/3-9",[]],["component/3-9",[]],["title/3-10",[8,14.216,89,33.563,90,30.683,91,44.145]],["name/3-10",[]],["text/3-10",[]],["component/3-10",[]],["title/3",[2,11.466,79,27.357]],["name/3",[79,1.146]],["text/3",[2,1.187,3,0.803,4,0.702,7,2.647,8,1.988,14,1.242,15,0.66,16,0.474,17,1.929,22,1.106,25,1.046,26,1.836,27,1.204,36,0.663,37,0.959,46,1.072,47,1.042,50,2.235,51,0.792,52,1.313,53,1.37,57,1.523,61,0.73,67,1.11,75,2.262,77,3.792,78,2.776,79,4.176,80,2.302,81,1.003,82,4.94,83,2.045,84,0.513,85,1.19,86,2.128,87,2.914,88,0.734,89,1.918,90,0.98,91,2.522,92,2.326,93,0.722,94,1.245,95,1.548,96,0.691,97,1.245,98,1.353,99,1.072,100,1.663,101,1.245,102,1.588,103,1.658,104,1.947,105,0.771,106,2.568,107,0.706,108,1.245,109,1.029,110,0.888,111,1.19,112,2.874,113,1.68,114,1.277,115,1.277,116,2.011,117,2.302,118,2.476,119,1.534,120,1.817,121,0.93,122,1.029,123,0.969,124,1.792,125,1.477,126,2.061,127,1.397,128,0.939,129,1.476,130,0.532,131,0.808,132,0.912,133,1.072,134,2.351,135,1.563,136,0.93,137,1.742,138,1.663,139,1.563,140,0.939,141,1.029,142,1.204,143,3.126,144,4.686,145,1.563,146,1.277,147,1.734,148,3.063,149,0.761,150,1.563,151,1.563,152,2.351,153,0.873,154,1.802,155,1.602,156,3.516,157,1.245,158,2.478,159,1.617,160,0.873,161,1.072,162,0.859,163,1.19,164,0.852,165,0.687,166,2.019,167,1.358,168,0.743,169,0.949,170,2.421,171,0.969,172,2.353,173,1.216,174,1.096,175,0.959,176,1.68,177,1.016,178,1.488,179,1.563,180,1.563,181,1.314,182,1.314,183,1.753,184,1.68,185,0.743,186,1.19,187,2.522,188,1.245,189,1.41,190,0.949,191,0.88,192,2.026,193,2.226,194,0.747,195,1.41,196,1.563,197,1.696,198,1.663,199,2.868,200,1.817,201,1.89,202,4.34,203,1.042,204,1.563,205,1.977,206,0.738,207,1.269,208,1.41,209,0.826,210,1.911,211,4.043,212,3.577,213,1.072,214,1.029,215,2.256,216,2.645,217,1.042,218,1.435,219,1.216,220,1.426,221,1.84,222,1.353,223,1.222,224,0.98,225,1.216,226,0.673,227,1.088,228,0.939,229,1.033,230,0.845,231,1.126,232,3.881,233,3.753,234,2.889,235,2.552,236,2.429,237,2.128,238,2.796,239,2.522,240,2.522,241,2.522,242,2.522,243,1.106,244,2.422,245,1.072,246,0.859,247,3.12,248,1.731,249,0.786,250,0.702,251,1.41,252,1.947,253,1.245,254,1.029,255,0.904,256,1.042,257,0.781,258,0.808,259,1.245,260,1.277,261,1.314,262,1.277,263,0.866,264,1.245,265,1.245,266,1.19,267,1.314,268,1.277,269,1.563,270,1.41,271,1.353,272,1.042,273,2.351,274,1.216,275,1.144,276,0.859,277,1.277,278,1.166,279,1.245,280,1.41,281,0.624,282,1.41,283,1.563,284,0.959,285,0.845,286,0.896,287,1.166,288,0.866,289,0.93,290,1.166,291,1.057,292,0.852,293,1.277,294,1.314,295,0.959,296,1.144,297,1.222,298,0.752,299,0.61,300,1.106,301,0.786,302,0.991,303,1.563,304,1.563,305,1.41,306,1.563,307,1.563,308,0.629,309,2.601,310,1.731,311,1.401,312,1.633,313,2.378,314,2.05,315,0.814,316,1.144]],["component/3",[2,0.4]],["title/4-1",[166,35.176,317,66.069]],["name/4-1",[]],["text/4-1",[]],["component/4-1",[]],["title/4",[137,18.456,318,44.772,319,31.395]],["name/4",[318,2.204]],["text/4",[2,1.805,6,1.011,22,1.952,27,1.188,73,0.929,79,1.89,81,1.771,83,3.55,105,2.881,119,2.362,130,0.939,137,2.228,153,1.541,192,1.054,201,1.866,222,1.336,224,1.73,255,1.596,271,2.827,299,1.782,318,7.407,319,3.261,320,1.281,321,2.489,322,4.542,323,1.921,324,1.711,325,1.658,326,1.019,327,2.1,328,2.759,329,5.513,330,8.575,331,2.759,332,10.234,333,8.391,334,6.939,335,2.759,336,6.278,337,4.119,338,2.759,339,2.759,340,6.123,341,2.759,342,5.84,343,2.489,344,2.759,345,1.985,346,2.844,347,2.759,348,4.566,349,4.566,350,4.65,351,2.759,352,2.759,353,2.759,354,2.321,355,4.566,356,4.566,357,2.759,358,2.759,359,2.759,360,2.759,361,2.489,362,2.489,363,2.1,364,4.566,365,4.119,366,5.84,367,2.196,368,2.759,369,4.566,370,8.647,371,2.759,372,2.759,373,2.489,374,2.489,375,2.489,376,3.84,377,2.489,378,2.759,379,2.759,380,4.566,381,4.566,382,1.379,383,2.759,384,2.321,385,1.866,386,2.759,387,2.759,388,2.759,389,2.759,390,5.269,391,2.759,392,2.759,393,2.759,394,2.759,395,2.759,396,2.759,397,2.397,398,6.787,399,4.131,400,2.759,401,4.566,402,2.759,403,2.489,404,2.759,405,1.793,406,2.759,407,1.379,408,1.952,409,2.759,410,4.566,411,2.759,412,4.119,413,2.397,414,1.952,415,4.566,416,5.84,417,2.759,418,2.759,419,2.759,420,2.759,421,2.759,422,2.759,423,2.759,424,2.759,425,2.759,426,2.759,427,2.759,428,1.952,429,1.893,430,2.759,431,1.816,432,1.311,433,2.02,434,2.759]],["component/4",[2,0.4]],["title/5-1",[209,34.914,435,44.06]],["name/5-1",[]],["text/5-1",[]],["component/5-1",[]],["title/5-2",[436,55.772]],["name/5-2",[]],["text/5-2",[]],["component/5-2",[]],["title/5-3",[437,49.288,438,29.827]],["name/5-3",[]],["text/5-3",[]],["component/5-3",[]],["title/5-4",[206,23.118,257,24.453,324,30.344,439,44.145]],["name/5-4",[]],["text/5-4",[]],["component/5-4",[]],["title/5-5",[440,34.914,441,40.531]],["name/5-5",[]],["text/5-5",[]],["component/5-5",[]],["title/5-6",[170,42.016]],["name/5-6",[]],["text/5-6",[]],["component/5-6",[]],["title/5-7",[442,42.931,443,37.864]],["name/5-7",[]],["text/5-7",[]],["component/5-7",[]],["title/5",[435,53.413]],["name/5",[435,1.845]],["text/5",[2,1.343,8,1.928,17,0.927,20,1.376,22,2.688,24,2.331,27,2.858,34,1.26,36,0.941,45,2.008,50,2.239,51,1.124,54,1.817,56,1.26,61,1.774,69,1.689,70,5.006,75,1.862,79,0.919,80,1.347,84,2.679,88,1.042,93,1.024,95,0.906,99,1.522,103,0.97,105,1.094,106,3.745,117,4.954,118,1.19,124,1.795,137,1.636,142,1.636,143,2.936,148,1.537,149,1.081,158,2.756,160,2.122,165,0.975,166,1.181,168,1.054,170,2.614,178,2.023,192,1.451,194,1.061,209,1.172,210,2.444,215,1.32,220,3.01,222,1.839,224,1.391,229,1.404,230,1.199,244,1.013,247,4.487,248,1.013,249,1.116,250,2.65,252,1.545,255,1.283,271,1.074,276,1.219,298,1.828,299,2.303,301,2.507,314,1.199,318,1.767,320,2.313,322,1.726,324,1.376,325,1.333,367,1.828,399,1.569,407,1.109,435,2.534,436,3.47,437,5.399,438,3.267,439,4.496,440,2.633,441,2.331,442,5.028,443,2.177,444,2.733,445,1.522,446,1.376,447,3.968,448,1.333,449,1.569,450,2.002,451,2.002,452,1.767,453,1.596,454,1.239,455,2.219,456,2.219,457,2.219,458,1.32,459,2.002,460,2.219,461,2.219,462,1.813,463,2.219,464,2.219,465,2.219,466,1.5,467,3.716,468,2.219,469,1.19,470,2.219,471,2.219,472,1.689,473,3.652,474,1.229,475,5.232,476,3.968,477,1.407,478,2.892,479,1.596,480,2.715,481,1.199,482,3.744,483,3.525,484,1.545,485,4.496,486,4.983,487,2.737,488,4.983,489,3.428,490,2.002,491,1.866,492,1.993,493,2.733,494,1.522,495,1.689,496,1.596,497,1.283,498,1.655,499,1.866,500,1.767,501,2.219,502,1.307,503,1.407,504,2.733,505,2.331,506,2.646,507,1.726,508,1.249,509,1.48,510,2.382,511,4.774,512,7.304,513,1.927,514,2.219,515,1.866,516,4.983,517,2.002,518,1.229,519,1.249,520,2.733,521,4.7,522,1.442,523,1.866,524,1.767,525,1.164,526,1.32,527,2.614,528,1.689,529,1.927,530,1.655,531,2.002,532,1.689,533,1.48,534,1.655,535,1.361,536,1.655,537,4.496,538,2.219,539,1.229,540,1.239,541,1.689,542,2.002,543,1.48,544,2.356,545,1.655,546,2.892,547,2.407,548,2.002,549,1.767,550,1.424]],["component/5",[2,0.4]],["title/6-1",[551,55.772]],["name/6-1",[]],["text/6-1",[]],["component/6-1",[]],["title/6-2",[552,52.612,553,36.001]],["name/6-2",[]],["text/6-2",[]],["component/6-2",[]],["title/6-3",[158,26.253,554,31.938,555,47.282]],["name/6-3",[]],["text/6-3",[]],["component/6-3",[]],["title/6-4",[556,72.259]],["name/6-4",[]],["text/6-4",[]],["component/6-4",[]],["title/6-5",[93,30.499,557,46.739]],["name/6-5",[]],["text/6-5",[]],["component/6-5",[]],["title/6",[93,30.499,557,46.739]],["name/6",[557,1.958]],["text/6",[7,3.026,8,1.021,36,1.491,52,2.608,83,2.388,84,1.823,107,1.587,132,2.051,137,2.26,147,2.18,149,2.705,158,2.593,165,1.545,170,1.844,173,2.416,185,1.67,186,2.675,194,2.655,205,1.506,206,1.661,209,1.857,210,1.455,229,2.051,284,2.156,296,2.573,299,2.686,320,4.401,324,2.18,346,1.712,382,3.44,408,5.532,429,2.411,436,2.447,441,3.407,447,2.799,473,2.379,524,4.422,552,4.422,553,3.751,556,5.01,557,2.486,558,2.256,559,6.731,560,2.956,561,2.675,562,2.799,563,4.065,564,3.515,565,1.561,566,2.872,567,2.956,568,4.065,569,3.515,570,3.171,571,6.024,572,3.053,573,2.256,574,7.867,575,2.112,576,2.284,577,3.515,578,2.799,579,8.552,580,9.961,581,3.171,582,3.515,583,9.533,584,1.979,585,2.284,586,2.956,587,4.065,588,4.087,589,3.171,590,3.809,591,5.553,592,1.886,593,3.515,594,1.756,595,3.515,596,3.053,597,3.304,598,5.758,599,6.21,600,3.272,601,5.239,602,2.486,603,1.817,604,2.014,605,2.675]],["component/6",[2,0.4]],["title/7-1",[174,25.897,606,36.29]],["name/7-1",[]],["text/7-1",[]],["component/7-1",[]],["title/7-2",[2,11.466,79,27.357]],["name/7-2",[]],["text/7-2",[]],["component/7-2",[]],["title/7-3",[435,53.413]],["name/7-3",[]],["text/7-3",[]],["component/7-3",[]],["title/7-4",[285,35.719,606,36.29]],["name/7-4",[]],["text/7-4",[]],["component/7-4",[]],["title/7",[220,33.691,607,42.408]],["name/7",[1,1.532]],["text/7",[2,1.758,7,1.632,8,1.226,9,2.108,45,2.23,53,2.068,57,3.485,72,2.486,75,3.135,77,2.382,78,3.089,79,4.511,83,2.68,88,3.004,90,4.011,93,1.948,95,1.722,103,2.797,105,2.081,112,3.469,113,2.535,118,2.263,119,1.707,136,2.51,138,2.51,140,2.535,148,1.707,154,2.005,156,2.317,158,2.987,172,2.151,173,3.75,174,3.028,192,1.611,194,2.017,199,3.458,200,2.741,201,2.853,207,1.915,212,1.993,216,2.418,218,2.166,222,3.739,223,1.845,224,2.646,227,2.938,228,2.535,248,1.926,249,2.122,250,2.872,255,4.986,258,2.182,285,2.281,287,3.147,298,2.03,308,1.699,320,2.97,367,3.077,407,2.108,431,2.777,432,3.672,433,3.089,435,5.152,448,2.535,449,4.525,453,3.035,458,2.51,481,2.281,492,3.355,509,2.814,520,3.035,524,3.36,535,2.588,550,4.106,573,2.708,606,2.317,608,3.211,609,3.548,610,4.219,611,3.548,612,4.219,613,3.282,614,3.548,615,3.983,616,3.36,617,3.36,618,2.616,619,3.448,620,4.219,621,3.665,622,3.211,623,2.646,624,3.211,625,3.089,626,2.894,627,2.418,628,2.985,629,2.894,630,4.219]],["component/7",[2,0.4]],["title/8-1",[149,27.384,631,44.772,632,43.731]],["name/8-1",[]],["text/8-1",[]],["component/8-1",[]],["title/8-2",[8,16.335,633,41.163,634,44.772]],["name/8-2",[]],["text/8-2",[]],["component/8-2",[]],["title/8-3",[8,16.335,635,42.794,636,44.772]],["name/8-3",[]],["text/8-3",[]],["component/8-3",[]],["title/8",[8,19.195,631,52.612]],["name/8",[631,2.204]],["text/8",[2,0.372,3,1.1,4,0.962,8,2.439,10,1.043,15,0.904,16,1.97,19,2.492,27,1.587,32,1.428,44,0.962,54,1.024,58,1.176,59,1.176,61,1,67,1.464,70,1.314,73,0.721,77,2.147,79,2.691,87,1.176,88,2.279,95,0.874,104,1.491,106,1.037,112,2.179,118,1.149,122,2.426,124,1.012,126,2.167,137,1.21,142,1.587,143,1.262,144,3.553,148,2.332,149,3.165,153,1.196,154,1.752,156,1.176,158,2.692,162,2.025,164,1.167,165,0.941,166,1.14,169,1.3,172,1.092,173,0.932,174,2.547,185,1.752,192,0.818,205,2.079,207,0.972,210,1.526,212,2.724,220,1.092,234,1.807,235,1.03,248,1.683,250,0.962,276,1.176,281,0.855,285,1.158,292,1.167,295,3.537,299,1.439,314,1.158,320,0.994,370,7.243,382,3.247,385,1.448,432,3.088,441,1.314,448,1.287,454,1.196,477,1.359,480,1.167,491,1.801,494,2.529,506,1.491,510,1.343,513,1.861,535,2.261,544,2.286,618,3.009,628,1.515,631,5.174,632,6.245,633,4.757,634,3.864,635,2.806,637,3.694,638,1.801,639,2.142,640,1.932,641,1.115,642,1.666,643,3.686,644,2.142,645,2.492,646,1.932,647,5.765,648,8.713,649,1.706,650,1.568,651,2.699,652,2.946,653,2.936,654,1.428,655,1.392,656,1.3,657,2.142,658,1.274,659,1.666,660,1.541,661,1.515,662,1.541,663,2.142,664,1.666,665,1.491,666,2.142,667,2.608,668,1.63,669,2.567,670,2.142,671,2.142,672,2.142,673,2.142,674,1.706,675,1.541,676,1.801,677,1.666,678,2.142,679,1.491,680,1.801,681,2.142,682,2.142,683,2.142,684,1.666,685,1.801,686,2.142,687,3.686,688,2.338,689,1.41,690,1.3,691,1.63,692,2.261,693,1.75,694,3.1,695,3.686,696,2.567,697,7.573,698,2.142,699,2.142,700,2.142,701,2.142,702,5.862,703,7.243,704,2.142,705,4.853,706,1.932,707,2.608,708,1.63,709,2.142,710,1.801,711,2.142,712,1.206,713,1.63,714,2.142,715,3.686,716,3.686,717,2.567,718,2.142,719,2.142,720,3.326,721,4.853,722,4.853,723,4.216,724,4.853,725,4.853,726,7.099,727,4.853,728,4.853,729,4.853,730,2.142,731,1.25,732,1.328,733,2.142,734,1.932,735,2.142,736,2.022,737,1.932,738,2.142,739,1.41,740,1.176,741,2.867,742,1.132,743,2.142,744,1.541,745,2.142,746,1.666,747,3.686,748,1.541,749,0.858,750,1.158,751,1.666,752,1.491,753,1.861,754,1.515,755,1.63,756,1.63]],["component/8",[2,0.4]],["title/9-1",[757,80.094]],["name/9-1",[]],["text/9-1",[]],["component/9-1",[]],["title/9-2",[443,32.222,758,44.772,759,47.282]],["name/9-2",[]],["text/9-2",[]],["component/9-2",[]],["title/9",[2,7.517,83,15.026,443,24.823,758,34.492,759,36.426]],["name/9",[758,2.204]],["text/9",[2,0.469,4,0.869,7,1.306,8,1.44,14,0.86,15,0.441,17,1.411,20,0.647,27,0.45,28,1.072,30,0.609,32,1.29,36,2.956,37,0.64,41,1.352,44,1.516,48,1.37,51,0.529,53,0.512,55,0.727,57,0.569,61,0.487,68,0.609,71,0.578,77,0.721,79,1.859,80,3.265,83,2.783,84,2.51,90,1.696,92,0.64,93,0.893,94,1.541,95,1.619,103,1.476,104,0.727,107,1.791,111,2.569,113,0.627,117,0.634,118,0.56,119,2.818,120,3.495,125,1.023,126,2.571,127,0.967,131,1.001,136,0.621,137,0.888,138,0.621,140,0.627,142,0.45,147,0.647,148,1.094,149,1.317,153,0.583,154,0.496,155,0.598,157,0.831,158,4.402,160,0.583,165,0.851,168,1.285,170,4.297,172,0.532,173,0.842,177,0.678,186,1.473,191,1.09,192,0.739,194,0.499,199,0.564,200,0.678,201,0.706,202,1.227,205,0.447,206,0.493,207,1.228,209,1.023,210,0.801,211,0.716,212,0.493,217,1.29,220,0.532,225,2.104,226,1.165,229,3.026,235,0.931,236,0.907,244,1.541,247,2.282,248,0.476,249,1.361,250,0.469,251,0.942,255,1.119,257,0.967,260,2.21,271,2.4,281,1.079,284,0.64,285,1.046,298,1.301,299,0.755,302,1.715,308,1.597,309,0.716,320,2.497,346,1.932,382,0.522,405,2.918,408,4.073,429,0.716,432,1.604,433,0.764,435,4.069,436,3.452,440,1.784,441,2.755,443,1.55,444,0.751,445,0.716,447,0.831,448,1.163,449,1.913,453,1.392,454,0.583,467,0.536,469,0.56,473,1.159,474,1.869,475,1.308,476,1.541,477,1.227,479,0.751,481,0.564,487,1.063,492,0.548,497,0.604,499,0.878,500,4.283,502,0.615,503,0.662,507,0.812,510,0.655,526,0.621,527,2.356,528,0.795,532,0.795,534,1.443,536,0.779,541,0.795,553,1.474,554,2.253,555,0.878,557,3.805,558,0.67,559,2.918,563,0.764,565,0.86,567,0.878,568,1.417,571,3.177,573,1.242,574,2.904,576,1.257,579,0.942,580,2.44,581,5.194,583,3.578,584,1.09,588,0.874,589,0.942,594,0.522,597,1.151,598,1.308,605,1.473,607,0.67,618,1.2,622,0.795,626,1.327,632,3.085,637,0.795,638,2.274,651,0.764,652,0.634,655,1.757,656,0.634,662,0.751,665,0.727,677,0.812,708,0.795,742,0.552,746,0.812,749,0.418,750,0.564,758,3.576,759,1.627,760,0.942,761,0.942,762,1.044,763,1.044,764,0.716,765,1.163,766,1.044,767,1.044,768,1.044,769,0.985,770,0.583,771,0.716,772,1.044,773,2.049,774,0.878,775,4.093,776,2.44,777,1.044,778,0.831,779,1.044,780,1.044,781,1.044,782,1.935,783,1.044,784,0.942,785,1.213,786,0.583,787,1.044,788,1.627,789,1.063,790,1.044,791,0.812,792,0.678,793,1.044,794,2.21,795,1.677,796,2.704,797,1.044,798,0.878,799,0.942,800,0.812,801,0.795,802,0.476,803,1.627,804,1.044,805,1.757,806,2.933,807,0.716,808,1.935,809,2.274,810,0.878,811,1.044,812,1.257,813,1.044,814,0.942,815,0.604,816,4.852,817,0.878,818,2.704,819,0.706,820,0.837,821,1.044,822,0.942,823,1.369,824,0.942,825,0.738,826,1.044,827,1.913,828,1.044,829,1.044,830,1.945,831,0.907,832,0.795,833,1.273,834,1.935,835,0.779,836,1.044,837,1.044,838,2.704,839,2.274,840,1.935,841,0.942,842,1.044,843,0.812,844,1.473,845,1.044,846,0.954,847,0.716,848,1.044,849,0.795,850,0.764,851,0.67,852,0.716,853,1.044,854,0.907,855,1.044,856,1.044,857,2.569,858,0.764,859,1.044,860,1.044,861,1.443,862,0.942,863,1.044,864,1.473,865,1.308,866,3.046,867,2.546,868,0.795,869,1.133,870,0.764,871,1.109,872,0.942,873,1.417,874,1.044,875,1.044,876,0.795,877,1.044,878,2.626,879,1.935,880,1.044,881,1.746,882,1.29,883,1.642,884,0.942,885,1.044,886,1.935,887,2.704,888,1.044,889,1.044,890,1.044,891,1.044,892,0.942,893,1.044,894,0.687,895,2.282,896,1.044,897,2.44,898,0.831,899,1.044,900,0.985,901,0.878,902,0.907,903,0.985,904,1.044,905,1.044,906,1.273,907,0.878,908,0.647,909,1.044,910,1.044,911,1.044,912,0.942,913,1.119,914,3.376,915,1.044,916,0.942,917,2.154,918,0.985,919,1.044,920,1.044,921,1.044,922,1.044,923,0.878,924,1.044,925,0.751,926,0.678,927,1.044,928,1.044,929,1.044,930,0.942,931,0.779,932,0.764,933,1.935,934,1.257,935,1.038,936,1.044,937,1.581,938,1.308,939,0.696,940,0.727,941,1.935,942,1.044,943,1.044,944,0.751,945,1.044,946,1.044,947,1.14,948,0.779,949,0.942,950,1.627,951,0.795,952,0.878,953,0.878,954,0.878,955,0.831,956,1.044,957,3.376,958,1.044,959,0.942,960,1.044,961,0.878,962,1.044,963,1.541,964,0.985,965,0.764,966,0.696,967,0.795]],["component/9",[2,0.4]],["title/10",[895,54.154]],["name/10",[895,1.871]],["text/10",[2,1.145,15,0.927,16,1.142,17,2.067,18,1.579,27,0.945,32,1.464,36,1.597,52,1.769,68,1.281,71,2.085,73,0.739,81,1.409,83,3.819,103,0.96,104,2.622,106,1.063,107,1.7,119,2.668,127,2.471,128,1.319,137,2.666,148,0.888,158,3.962,165,0.965,174,1.938,176,1.319,178,1.169,181,1.846,182,1.846,194,1.8,195,1.981,206,1.037,207,0.997,211,1.506,220,2.989,221,2.478,229,1.826,235,1.056,237,1.671,244,1.002,245,1.506,246,1.206,281,0.876,295,1.347,299,1.469,309,1.506,311,1.391,315,1.143,320,1.019,334,2.809,336,4.046,343,3.397,346,3.212,365,1.981,385,1.484,397,1.907,405,2.447,407,3.296,408,1.553,414,1.553,429,1.506,435,1.464,444,2.709,445,3.391,448,1.319,454,1.226,487,1.206,492,1.152,523,3.167,526,1.306,550,1.409,552,1.748,555,1.846,563,3.62,571,3.498,574,3.62,608,1.671,626,1.506,629,1.506,650,6.212,664,1.708,665,1.529,669,1.529,680,1.846,688,1.393,708,1.671,710,1.846,731,1.281,742,1.99,761,1.981,773,5.342,789,3.219,841,1.981,894,1.445,912,3.397,935,1.178,937,1.794,965,2.757,968,1.671,969,2.195,970,2.195,971,2.195,972,2.195,973,2.195,974,2.195,975,2.195,976,2.195,977,4.295,978,2.195,979,2.195,980,1.464,981,1.582,982,2.195,983,2.195,984,4.944,985,2.195,986,2.195,987,2.195,988,1.907,989,2.195,990,2.195,991,2.195,992,2.24,993,1.529,994,1.907,995,1.981,996,2.195,997,1.981,998,2.195,999,2.195,1000,3.845,1001,2.195,1002,2.999,1003,2.195,1004,2.999,1005,1.981,1006,2.757,1007,2.072,1008,4.929,1009,3.765,1010,2.195,1011,1.846,1012,2.195,1013,5.861,1014,2.195,1015,2.195,1016,1.671,1017,2.072,1018,1.794,1019,2.195,1020,2.195,1021,1.671,1022,2.195,1023,1.846,1024,2.195,1025,2.195,1026,2.195,1027,2.195,1028,4.46,1029,1.846,1030,2.195,1031,2.195,1032,2.195,1033,2.195,1034,2.195,1035,5.288,1036,1.981,1037,3.555,1038,1.846,1039,1.846,1040,4.944,1041,1.464,1042,1.748,1043,2.195,1044,1.981,1045,1.981,1046,1.846,1047,1.748,1048,1.846,1049,1.846,1050,1.981,1051,2.195,1052,2.195,1053,2.195,1054,2.195,1055,3.765,1056,3.765,1057,1.638,1058,2.195,1059,1.794,1060,2.195,1061,2.195,1062,2.195,1063,2.195,1064,2.195,1065,2.195,1066,1.981,1067,1.846,1068,2.195,1069,2.195,1070,2.195,1071,2.195,1072,2.195,1073,1.907,1074,2.195,1075,2.195,1076,2.195,1077,4.46,1078,3.397,1079,3.077,1080,2.195,1081,2.195,1082,1.178,1083,1.671,1084,2.195,1085,2.195,1086,2.195,1087,2.195,1088,2.195,1089,2.195,1090,2.195,1091,1.247,1092,2.195,1093,2.195,1094,2.195,1095,2.072,1096,1.846]],["component/10",[2,0.4]],["title/11",[207,36.358]],["name/11",[207,1.256]],["text/11",[2,1.706,5,4.135,83,3.41,95,3.195,109,5.15,126,3.495,194,3.742,207,3.552,250,4.414,408,6.954,530,5.838,635,5.956,775,7.483,934,5.085,1000,6.086,1041,5.218,1097,8.869,1098,7.825,1099,7.825,1100,7.825,1101,5.838,1102,6.581,1103,4.702,1104,4.8,1105,7.825]],["component/11",[2,0.4]],["title/12",[2,8.492,8,14.216,83,16.975,827,34.616]],["name/12",[1106,2.767]],["text/12",[2,1.793,5,2.914,6,0.933,8,2.904,14,1.131,15,1.075,16,1.672,17,1.064,27,1.838,33,1.434,36,2.339,38,1.162,48,1.289,52,2.59,67,1.011,73,3.136,83,2.494,87,1.398,90,1.596,95,1.039,96,2.852,97,2.027,98,1.232,103,1.867,119,2.23,125,1.345,127,1.272,137,3.281,156,1.398,158,3.014,174,0.998,183,1.596,185,1.21,194,2.636,207,1.156,210,1.054,220,3.968,221,3.629,222,1.232,226,1.096,249,1.281,255,1.472,256,1.698,271,2.067,281,1.016,285,1.376,299,0.994,300,1.801,301,1.281,311,1.577,320,2.56,326,0.94,334,5.364,336,5.532,346,2.685,350,6.583,384,4.637,385,1.721,399,1.801,432,1.21,433,1.864,435,1.698,437,1.899,438,1.149,448,3.313,453,1.831,454,1.422,458,1.515,475,1.721,526,1.515,533,1.698,539,1.41,544,1.579,554,1.446,567,2.141,585,1.654,594,2.134,600,1.5,608,1.938,629,1.746,646,2.297,669,1.773,692,1.562,742,1.345,773,2.592,789,1.398,812,1.654,827,5.848,833,1.675,835,1.899,852,4.427,864,1.938,865,1.721,870,1.864,882,1.698,907,2.141,931,1.899,935,1.366,947,1.5,950,2.141,966,1.698,992,2.54,1006,1.864,1008,5.428,1028,3.852,1029,2.141,1035,2.297,1046,2.141,1047,2.027,1048,2.141,1049,2.141,1050,2.297,1077,3.852,1078,2.297,1079,2.08,1082,1.366,1083,3.25,1107,2.546,1108,2.546,1109,3.852,1110,2.384,1111,2.212,1112,2.141,1113,1.801,1114,3.02,1115,3.852,1116,1.831,1117,4.269,1118,4.974,1119,2.29,1120,3.9,1121,2.546,1122,2.546,1123,2.546,1124,3.25,1125,2.546,1126,2.297,1127,2.027,1128,2.546,1129,2.546,1130,1.899,1131,2.546,1132,3.709,1133,2.546,1134,1.938,1135,2.297,1136,2.546,1137,2.546,1138,2.212,1139,1.899,1140,2.546,1141,2.141,1142,2.08,1143,2.297,1144,2.546,1145,1.864,1146,2.546,1147,2.546,1148,2.403,1149,2.546,1150,4.269,1151,2.027,1152,2.546,1153,2.546,1154,1.801,1155,2.141,1156,2.546,1157,2.546,1158,2.027,1159,2.546,1160,1.864,1161,2.546,1162,1.746]],["component/12",[2,0.4]],["title/13-1",[452,52.612,453,47.525]],["name/13-1",[]],["text/13-1",[]],["component/13-1",[]],["title/13-2",[137,18.456,188,44.772,1163,56.223]],["name/13-2",[]],["text/13-2",[]],["component/13-2",[]],["title/13-3",[1164,67.357]],["name/13-3",[]],["text/13-3",[]],["component/13-3",[]],["title/13",[2,7.517,83,15.026,188,34.492,452,34.492,1164,36.426]],["name/13",[188,0.897,452,0.897,1164,0.948]],["text/13",[2,1.919,8,1.148,34,2.244,36,1.676,73,2.805,79,1.636,83,4.082,96,1.745,105,3,119,2.46,121,4.413,127,1.974,178,2.103,223,1.727,224,2.477,246,4.074,271,3.59,299,2.374,315,3.168,329,3.729,333,3.563,334,6.215,336,5.829,337,3.563,340,6.691,346,3.612,350,5.906,361,5.487,362,5.487,363,4.629,373,3.563,374,3.563,375,3.563,376,3.322,377,3.563,390,5.487,413,3.432,414,2.794,429,2.709,633,2.892,636,4.843,675,2.841,742,3.919,773,3.692,865,2.671,867,2.535,993,4.235,1082,2.119,1083,3.006,1118,8.573,1145,2.892,1165,7.417,1166,3.563,1167,3.95,1168,6.082,1169,6.082,1170,5.115,1171,5.487,1172,2.398,1173,2.709,1174,2.671,1175,3.95,1176,5.487,1177,3.95,1178,3.563,1179,3.322,1180,3.95,1181,2.567,1182,3.563,1183,3.95,1184,4.629,1185,3.95,1186,5.115,1187,3.95,1188,3.95,1189,3.563,1190,5.115,1191,3.95,1192,3.729,1193,3.95,1194,3.563,1195,4.286,1196,4.286]],["component/13",[2,0.4]],["title/14-1",[165,29.041,320,30.673]],["name/14-1",[]],["text/14-1",[]],["component/14-1",[]],["title/14-2",[165,29.041,320,30.673]],["name/14-2",[]],["text/14-2",[]],["component/14-2",[]],["title/14",[2,7.517,67,17.205,83,15.026,1041,28.885,1197,30.642]],["name/14",[67,0.636,1197,1.133]],["text/14",[2,1.437,7,2.333,13,2.274,17,1.633,27,1.682,36,2.558,54,1.868,67,3.555,73,1.315,83,3.282,88,1.835,95,3.007,105,1.927,124,1.845,126,2.693,153,2.181,156,2.145,158,3.439,165,1.717,181,3.285,182,3.285,187,3.524,192,1.492,210,1.617,211,4.136,220,4.824,222,2.919,226,1.682,256,2.605,257,1.952,297,3.221,311,2.721,320,1.813,397,3.393,432,1.856,437,2.914,438,2.722,445,4.136,466,2.641,473,1.674,475,2.641,503,2.478,508,2.2,525,3.163,527,2.049,530,4.498,558,2.507,563,2.86,571,4.266,574,4.415,604,2.238,656,2.371,765,4.426,773,5.434,774,3.285,815,4.789,817,3.285,827,4.266,849,5.606,898,4.802,930,3.524,968,2.973,1006,5.392,1007,3.687,1008,5.071,1041,4.021,1044,3.524,1045,3.524,1046,3.285,1047,3.11,1048,3.285,1049,3.285,1082,3.951,1109,3.524,1120,4.266,1197,2.763,1198,3.906,1199,3.906,1200,4.238,1201,3.906,1202,3.11,1203,3.285,1204,3.393,1205,2.507,1206,3.906,1207,7.365,1208,3.906,1209,3.906,1210,3.906,1211,4.238,1212,4.238,1213,7.365,1214,6.03,1215,4.238,1216,3.906,1217,3.285,1218,4.238,1219,4.238,1220,4.238,1221,2.128,1222,3.192,1223,4.238,1224,3.038,1225,3.285]],["component/14",[2,0.4]],["title/15-1",[44,29.665,84,21.688]],["name/15-1",[]],["text/15-1",[]],["component/15-1",[]],["title/15-2",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1226,15.771,1227,16.372]],["name/15-2",[]],["text/15-2",[]],["component/15-2",[]],["title/15-3",[299,25.783,467,33.925]],["name/15-3",[]],["text/15-3",[]],["component/15-3",[]],["title/15-4",[473,28.308,883,40.108]],["name/15-4",[]],["text/15-4",[]],["component/15-4",[]],["title/15-5",[9,33.018,440,34.914]],["name/15-5",[]],["text/15-5",[]],["component/15-5",[]],["title/15-6",[84,21.688,625,48.371]],["name/15-6",[]],["text/15-6",[]],["component/15-6",[]],["title/15-7",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1228,24.826]],["name/15-7",[]],["text/15-7",[]],["component/15-7",[]],["title/15-8",[299,25.783,467,33.925]],["name/15-8",[]],["text/15-8",[]],["component/15-8",[]],["title/15-9",[9,33.018,440,34.914]],["name/15-9",[]],["text/15-9",[]],["component/15-9",[]],["title/15-10",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1229,22.487]],["name/15-10",[]],["text/15-10",[]],["component/15-10",[]],["title/15-11",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1230,27.518]],["name/15-11",[]],["text/15-11",[]],["component/15-11",[]],["title/15-12",[9,33.018,440,34.914]],["name/15-12",[]],["text/15-12",[]],["component/15-12",[]],["title/15-13",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1231,23.142]],["name/15-13",[]],["text/15-13",[]],["component/15-13",[]],["title/15-14",[299,25.783,467,33.925]],["name/15-14",[]],["text/15-14",[]],["component/15-14",[]],["title/15-15",[473,28.308,883,40.108]],["name/15-15",[]],["text/15-15",[]],["component/15-15",[]],["title/15-16",[9,33.018,440,34.914]],["name/15-16",[]],["text/15-16",[]],["component/15-16",[]],["title/15-17",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1232,22.487]],["name/15-17",[]],["text/15-17",[]],["component/15-17",[]],["title/15-18",[299,25.783,467,33.925]],["name/15-18",[]],["text/15-18",[]],["component/15-18",[]],["title/15-19",[473,28.308,883,40.108]],["name/15-19",[]],["text/15-19",[]],["component/15-19",[]],["title/15-20",[9,33.018,440,34.914]],["name/15-20",[]],["text/15-20",[]],["component/15-20",[]],["title/15-21",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1233,27.518]],["name/15-21",[]],["text/15-21",[]],["component/15-21",[]],["title/15-22",[299,25.783,467,33.925]],["name/15-22",[]],["text/15-22",[]],["component/15-22",[]],["title/15-23",[473,28.308,883,40.108]],["name/15-23",[]],["text/15-23",[]],["component/15-23",[]],["title/15-24",[9,33.018,440,34.914]],["name/15-24",[]],["text/15-24",[]],["component/15-24",[]],["title/15-25",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1234,25.977]],["name/15-25",[]],["text/15-25",[]],["component/15-25",[]],["title/15-26",[299,25.783,467,33.925]],["name/15-26",[]],["text/15-26",[]],["component/15-26",[]],["title/15-27",[473,28.308,883,40.108]],["name/15-27",[]],["text/15-27",[]],["component/15-27",[]],["title/15-28",[9,33.018,440,34.914]],["name/15-28",[]],["text/15-28",[]],["component/15-28",[]],["title/15-29",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1235,27.518]],["name/15-29",[]],["text/15-29",[]],["component/15-29",[]],["title/15-30",[299,25.783,467,33.925]],["name/15-30",[]],["text/15-30",[]],["component/15-30",[]],["title/15-31",[473,28.308,883,40.108]],["name/15-31",[]],["text/15-31",[]],["component/15-31",[]],["title/15-32",[9,33.018,440,34.914]],["name/15-32",[]],["text/15-32",[]],["component/15-32",[]],["title/15-33",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1236,27.518]],["name/15-33",[]],["text/15-33",[]],["component/15-33",[]],["title/15-34",[299,25.783,467,33.925]],["name/15-34",[]],["text/15-34",[]],["component/15-34",[]],["title/15-35",[473,28.308,883,40.108]],["name/15-35",[]],["text/15-35",[]],["component/15-35",[]],["title/15-36",[9,33.018,440,34.914]],["name/15-36",[]],["text/15-36",[]],["component/15-36",[]],["title/15-37",[84,21.688,405,42.931]],["name/15-37",[]],["text/15-37",[]],["component/15-37",[]],["title/15-38",[84,8.419,119,10.375,137,21.286,263,14.203,405,16.666,508,14.444,1227,15.259,1237,23.139]],["name/15-38",[]],["text/15-38",[]],["component/15-38",[]],["title/15-39",[299,25.783,467,33.925]],["name/15-39",[]],["text/15-39",[]],["component/15-39",[]],["title/15-40",[473,28.308,883,40.108]],["name/15-40",[]],["text/15-40",[]],["component/15-40",[]],["title/15-41",[9,33.018,440,34.914]],["name/15-41",[]],["text/15-41",[]],["component/15-41",[]],["title/15-42",[84,8.419,119,10.375,137,21.286,263,14.203,405,16.666,508,14.444,1227,15.259,1238,23.139]],["name/15-42",[]],["text/15-42",[]],["component/15-42",[]],["title/15-43",[299,25.783,467,33.925]],["name/15-43",[]],["text/15-43",[]],["component/15-43",[]],["title/15-44",[473,28.308,883,40.108]],["name/15-44",[]],["text/15-44",[]],["component/15-44",[]],["title/15-45",[9,33.018,440,34.914]],["name/15-45",[]],["text/15-45",[]],["component/15-45",[]],["title/15-46",[84,8.419,119,10.375,137,21.286,263,14.203,405,16.666,508,14.444,1227,15.259,1239,25.648]],["name/15-46",[]],["text/15-46",[]],["component/15-46",[]],["title/15-47",[473,34.317]],["name/15-47",[]],["text/15-47",[]],["component/15-47",[]],["title/15-48",[84,8.419,119,10.375,137,21.286,263,14.203,405,16.666,508,14.444,1227,15.259,1240,25.648]],["name/15-48",[]],["text/15-48",[]],["component/15-48",[]],["title/15",[155,45.902]],["name/15",[155,1.586]],["text/15",[1,0.366,2,1.775,4,0.297,5,0.665,6,1.67,7,0.697,8,1.813,9,2.914,10,0.613,13,1.196,14,2.024,15,1.162,16,1.949,17,1.326,19,0.646,25,3.754,26,2.822,28,0.697,36,0.975,38,0.574,39,0.68,40,1.564,41,0.9,43,0.764,45,0.665,51,1.164,53,0.324,54,0.316,56,0.375,58,0.691,59,2.151,61,0.588,63,3.449,64,0.526,65,0.475,67,2.875,68,0.735,71,0.366,73,0.927,74,0.772,79,0.521,80,0.401,83,1.474,84,1.762,87,0.363,88,0.846,90,0.789,92,0.405,93,0.305,94,1.002,95,1.599,96,1.572,98,2.345,100,1.367,103,0.289,105,0.326,106,0.32,107,1.432,112,1.597,113,0.397,114,0.54,118,0.354,119,0.509,121,1.367,123,0.78,124,0.312,125,0.665,126,1.026,130,1.08,137,0.754,141,0.435,142,0.776,148,1.96,149,0.322,153,0.703,154,0.314,155,0.721,158,0.841,159,2.057,162,0.363,165,2.249,166,0.67,168,0.314,170,0.347,173,0.287,175,0.772,176,1.381,190,0.401,191,1.294,192,1.851,194,1.099,199,0.974,202,0.419,205,0.539,206,0.851,207,0.818,210,0.274,211,0.863,212,2.007,214,0.435,216,0.721,218,0.925,220,0.337,222,0.609,223,2.549,229,1.017,230,0.68,231,0.726,234,0.617,235,0.318,237,0.503,244,0.302,246,2.333,248,1.624,249,0.906,254,0.828,255,0.382,256,0.441,258,1.188,281,1.42,288,0.697,295,1.946,298,0.318,299,2.509,308,0.726,311,1.446,312,1.532,315,4.158,316,1.319,319,0.369,320,0.307,324,0.78,326,2.375,346,0.613,382,1.376,385,0.851,405,0.429,407,1.376,414,0.89,431,0.435,432,0.856,438,2.727,440,1.455,441,0.405,443,0.379,467,1.827,469,0.354,473,1.678,474,0.697,480,4.161,487,0.363,497,1.042,503,0.798,504,0.905,507,0.514,508,0.372,523,1.058,525,1.866,527,1.206,535,0.405,540,1.006,544,0.41,545,0.493,546,0.503,549,1.435,553,1.5,554,0.375,565,0.8,575,1.654,576,0.818,584,0.372,588,0.298,590,1.236,592,0.967,600,0.389,601,1.371,603,0.651,604,1.033,609,0.556,618,0.41,625,0.484,626,0.453,642,0.979,651,0.484,652,0.764,655,0.429,658,1.072,660,0.475,667,0.467,668,2.414,674,0.526,679,0.46,680,1.933,689,0.435,707,0.467,712,0.372,713,0.958,739,0.435,748,0.475,749,0.265,750,0.357,764,0.453,765,0.397,771,0.453,784,0.596,785,0.414,792,0.429,795,0.41,798,0.556,802,1.624,820,2.523,833,0.828,835,1.344,847,0.453,851,0.424,861,0.493,865,0.851,876,0.503,882,0.441,883,0.401,894,0.435,906,0.435,934,0.429,939,0.441,951,0.958,965,1.319,981,0.757,993,0.46,1002,1.83,1021,1.371,1041,0.441,1042,0.526,1047,0.526,1073,1.093,1082,0.354,1091,0.715,1103,0.397,1104,0.405,1110,0.703,1113,0.89,1115,0.596,1138,0.574,1145,0.484,1171,2.073,1174,0.851,1181,0.429,1205,0.424,1224,0.514,1231,0.556,1241,0.379,1242,0.503,1243,0.661,1244,0.661,1245,1.435,1246,1.258,1247,1.258,1248,0.424,1249,1.959,1250,0.514,1251,0.467,1252,1.626,1253,0.958,1254,0.397,1255,0.89,1256,2.592,1257,0.526,1258,0.772,1259,2.552,1260,2.552,1261,0.556,1262,2.175,1263,2.169,1264,0.441,1265,2.16,1266,0.661,1267,0.661,1268,0.661,1269,0.661,1270,0.661,1271,0.661,1272,0.661,1273,0.661,1274,0.661,1275,0.661,1276,0.661,1277,0.661,1278,0.661,1279,0.661,1280,0.322,1281,0.556,1282,0.863,1283,0.503,1284,0.624,1285,0.556,1286,1.058,1287,0.379,1288,0.764,1289,1.533,1290,0.556,1291,1.002,1292,2.298,1293,0.46,1294,0.467,1295,0.503,1296,0.493,1297,1.258,1298,0.484,1299,0.78,1300,0.596,1301,0.556,1302,0.661,1303,0.596,1304,2.753,1305,1.472,1306,0.661,1307,1.607,1308,0.441,1309,0.475,1310,0.424,1311,0.905,1312,0.46,1313,0.596,1314,0.952,1315,0.342,1316,0.46,1317,2.392,1318,0.596,1319,0.556,1320,0.661,1321,1.787,1322,0.828,1323,0.756,1324,1.802,1325,0.661,1326,0.661,1327,0.661,1328,0.493,1329,0.661,1330,0.661,1331,1.028,1332,1.258,1333,1.135,1334,0.979,1335,0.574,1336,0.484,1337,1.402,1338,0.596,1339,0.414,1340,0.661,1341,0.514,1342,0.453,1343,1.435,1344,0.596,1345,1.258,1346,0.54,1347,0.661,1348,0.596,1349,0.661,1350,0.624,1351,0.661,1352,0.661,1353,0.661,1354,1.554,1355,0.661,1356,0.735,1357,0.661,1358,0.661,1359,0.661,1360,0.661,1361,1.028,1362,0.661,1363,0.661,1364,0.661,1365,0.596,1366,0.414,1367,0.661,1368,0.661,1369,0.661,1370,0.661,1371,0.661,1372,0.503,1373,0.89,1374,0.596,1375,0.828,1376,1.319,1377,1.626,1378,0.414,1379,0.661,1380,0.484,1381,0.484,1382,0.958,1383,0.54,1384,1.296,1385,0.54,1386,0.493,1387,0.375,1388,0.596,1389,0.556,1390,0.357,1391,1.058,1392,0.905,1393,0.89,1394,0.661,1395,1.592,1396,0.661,1397,1.402,1398,0.556,1399,0.661,1400,0.661,1401,0.661,1402,1.093,1403,1.093,1404,0.661,1405,0.414,1406,0.526,1407,0.661,1408,0.839,1409,1.058,1410,0.596,1411,1.093,1412,0.661,1413,0.328,1414,0.798,1415,0.661,1416,0.372,1417,0.36,1418,0.661,1419,0.661,1420,0.335,1421,0.661,1422,0.661,1423,2.144,1424,0.661,1425,1.258,1426,0.661,1427,0.484,1428,0.54,1429,0.467,1430,0.661,1431,0.661,1432,0.661,1433,0.661,1434,1.533,1435,1.157,1436,0.661,1437,0.424,1438,1.13,1439,0.661,1440,0.661,1441,0.661,1442,0.661,1443,0.661,1444,0.493,1445,0.921,1446,0.596,1447,0.556,1448,0.514,1449,0.447,1450,0.419,1451,0.46,1452,0.503,1453,0.661,1454,0.503,1455,0.661,1456,1.028,1457,0.514,1458,0.596,1459,0.661,1460,0.661,1461,1.033,1462,0.514,1463,0.484,1464,0.661,1465,0.661,1466,0.467,1467,0.661,1468,0.67,1469,0.526,1470,0.503,1471,0.839,1472,1.135,1473,0.405,1474,0.475,1475,0.661,1476,0.661,1477,0.661,1478,0.484,1479,0.503,1480,0.596,1481,0.54,1482,0.661,1483,0.661,1484,0.661,1485,0.661,1486,0.661,1487,0.661,1488,0.514,1489,0.661,1490,0.372,1491,1.258,1492,1.058,1493,0.661,1494,0.54,1495,0.453,1496,0.661,1497,0.574,1498,0.526,1499,0.441,1500,0.661,1501,0.366,1502,0.556,1503,1.258,1504,0.661,1505,0.54,1506,0.46,1507,0.574,1508,0.503,1509,0.526,1510,1.093,1511,0.661,1512,0.574,1513,0.661,1514,0.661,1515,0.661,1516,0.405,1517,0.661,1518,0.596,1519,0.596,1520,0.661,1521,0.921,1522,0.958,1523,0.596,1524,0.661,1525,0.661,1526,0.526,1527,0.467,1528,0.401,1529,0.453,1530,0.596,1531,0.54,1532,0.661,1533,0.661,1534,0.41,1535,0.661,1536,0.661,1537,0.661,1538,0.596,1539,1.802,1540,0.475,1541,0.393,1542,0.574,1543,0.484,1544,0.624,1545,0.661,1546,1.258,1547,0.661,1548,0.661,1549,0.979,1550,0.574,1551,1.002,1552,0.596,1553,0.661,1554,0.556,1555,0.556,1556,0.503,1557,0.596,1558,0.939,1559,0.453,1560,0.596,1561,0.453,1562,0.661,1563,0.661,1564,0.661,1565,0.484,1566,0.661,1567,0.661,1568,0.661,1569,0.347,1570,0.661,1571,0.661,1572,0.661]],["component/15",[2,0.4]],["title/16-1",[2,11.466,83,22.92]],["name/16-1",[]],["text/16-1",[]],["component/16-1",[]],["title/16",[487,43.994]],["name/16",[1,1.532]],["text/16",[2,1.839,6,2.882,8,2.765,14,2.486,15,1.499,16,2.384,19,2.874,25,2.093,26,2.709,27,1.529,31,2.178,36,4.037,38,3.163,45,1.876,52,1.667,53,1.74,57,1.935,68,2.072,71,1.966,73,1.885,75,2.743,80,2.155,83,3.52,87,3.074,90,3.51,93,1.639,95,2.285,96,4.205,99,2.435,103,1.552,112,3.111,121,2.112,126,1.586,137,1.165,158,1.658,168,1.687,170,1.862,199,3.026,205,2.398,207,2.541,212,1.677,214,2.336,215,2.112,216,2.035,220,1.81,230,3.026,235,1.708,246,3.074,249,1.786,271,2.709,295,4.251,326,2.068,336,4.251,432,1.687,467,1.823,474,1.966,487,1.95,492,1.862,520,2.554,550,2.279,565,1.577,592,3.003,608,2.702,667,2.512,668,2.702,674,2.827,732,4.297,773,2.155,789,1.95,850,2.599,857,2.702,861,2.649,966,4.621,992,2.112,1002,2.827,1057,2.649,1091,3.18,1104,5.25,1116,4.026,1126,3.203,1155,2.986,1197,2.512,1259,3.363,1260,3.363,1289,2.368,1303,3.203,1323,2.133,1434,2.368,1474,2.554,1507,4.863,1558,2.649,1573,3.733,1574,2.368,1575,3.55,1576,2.761,1577,3.55,1578,2.599,1579,2.133,1580,3.55,1581,2.827,1582,3.203,1583,2.761,1584,2.901,1585,2.702,1586,3.084,1587,2.986,1588,3.203,1589,2.599,1590,4.354,1591,2.827,1592,3.55]],["component/16",[2,0.4]],["title/17-1",[8,14.216,119,19.793,346,23.833,1593,38.965]],["name/17-1",[]],["text/17-1",[]],["component/17-1",[]],["title/17-2",[203,44.06,1130,49.288]],["name/17-2",[]],["text/17-2",[]],["component/17-2",[]],["title/17-3",[203,44.06,1508,50.288]],["name/17-3",[]],["text/17-3",[]],["component/17-3",[]],["title/17-4",[203,44.06,1248,42.408]],["name/17-4",[]],["text/17-4",[]],["component/17-4",[]],["title/17-5",[867,42.408,1291,52.612]],["name/17-5",[]],["text/17-5",[]],["component/17-5",[]],["title/17-6",[1594,52.612,1595,55.562]],["name/17-6",[]],["text/17-6",[]],["component/17-6",[]],["title/17-7",[36,23.851,96,24.844,130,19.142]],["name/17-7",[]],["text/17-7",[]],["component/17-7",[]],["title/17",[83,19.505,336,34.491,350,44.772]],["name/17",[1596,2.767]],["text/17",[2,0.619,4,1.601,5,0.766,6,3.278,7,2.173,8,2.69,11,0.942,14,1.16,15,2.769,19,1.341,25,2.453,27,1.878,28,0.802,31,0.889,32,0.966,33,0.816,36,2.137,41,1.305,44,1.601,46,0.994,48,1.806,52,1.227,53,1.748,54,1.249,55,1.009,58,1.435,61,0.677,67,0.576,71,0.802,72,0.854,76,1.742,83,0.503,93,2.825,95,2.056,96,3.483,97,4.472,98,1.264,99,2.446,107,2.535,118,1.913,119,2.95,125,0.766,126,2.733,127,5.234,130,1.485,132,0.846,148,1.056,152,1.219,156,0.796,159,0.838,160,1.458,165,1.567,168,0.689,173,1.897,176,2.142,184,0.871,190,2.648,191,1.471,192,1.362,194,0.693,203,2.909,206,1.234,209,0.766,224,2.236,230,1.412,234,2.138,246,1.435,249,1.794,250,1.173,258,1.351,270,1.307,271,1.264,272,1.742,285,0.783,289,0.862,290,2.66,297,1.559,298,0.697,299,1.391,301,3.3,322,1.127,324,0.899,326,0.965,336,3.445,346,3.704,385,0.98,399,3.973,407,1.305,428,1.025,431,1.719,432,3.467,438,1.179,443,0.83,446,0.899,448,0.871,473,1.119,474,0.802,480,1.423,481,0.783,484,1.009,492,0.76,502,0.854,509,0.966,525,0.76,530,1.081,541,1.988,551,1.009,557,1.025,573,0.93,584,0.816,585,0.942,597,1.554,598,0.98,600,2.57,613,2.773,623,1.638,641,0.755,650,1.061,658,0.862,668,1.103,688,0.919,740,1.435,741,2.031,773,3.982,775,4.275,789,4.595,791,1.127,794,1.184,802,1.192,810,2.196,820,0.627,827,5.16,851,0.93,867,0.93,870,1.061,917,1.154,934,0.942,935,0.777,952,2.196,966,1.742,967,2.714,968,1.103,992,0.862,1000,2.773,1016,1.103,1018,1.184,1082,0.777,1083,2.714,1104,1.602,1116,2.565,1119,0.777,1120,3.563,1124,1.988,1130,1.081,1139,1.081,1160,1.061,1197,4.64,1221,1.423,1248,3.605,1254,1.569,1290,2.196,1291,1.154,1294,1.025,1305,2.134,1314,0.766,1319,1.219,1323,2.142,1344,1.307,1378,0.909,1383,1.184,1387,0.823,1454,1.103,1461,0.83,1462,1.127,1499,1.742,1508,1.103,1569,0.76,1576,1.127,1581,1.154,1586,1.259,1587,2.196,1593,1.154,1594,3.473,1595,2.196,1597,1.307,1598,1.449,1599,1.307,1600,2.612,1601,2.61,1602,1.368,1603,1.307,1604,1.449,1605,1.307,1606,2.134,1607,1.219,1608,2.612,1609,2.356,1610,3.935,1611,1.449,1612,3.098,1613,1.449,1614,2.612,1615,1.449,1616,3.565,1617,3.668,1618,1.154,1619,1.307,1620,1.307,1621,1.449,1622,2.612,1623,0.966,1624,3.219,1625,1.307,1626,0.942,1627,1.025,1628,1.368,1629,1.449,1630,1.307,1631,1.219,1632,1.449,1633,2.612,1634,1.449,1635,1.307,1636,1.154,1637,1.009,1638,1.449,1639,1.061,1640,1.009,1641,1.154,1642,1.449,1643,1.449,1644,1.449,1645,1.449,1646,1.184,1647,1.307,1648,1.449,1649,1.184,1650,1.307,1651,7.112,1652,0.919,1653,1.307,1654,1.103,1655,1.449,1656,2.612,1657,1.219,1658,1.449,1659,2.356,1660,1.127,1661,1.307,1662,1.307,1663,1.449,1664,1.307,1665,1.307,1666,1.449,1667,1.449,1668,1.449,1669,1.307,1670,1.009,1671,1.103]],["component/17",[2,0.4]],["title/18",[137,16.062,440,25.858,527,25.669,528,37.244]],["name/18",[527,1.452]],["text/18",[126,4.141,137,3.044,297,4.055,440,4.9,475,6.269,527,5.718,528,7.058,1082,4.974,1672,9.272]],["component/18",[2,0.4]],["title/19",[137,14.218,218,22.241,440,22.889,441,26.572,527,22.722]],["name/19",[218,0.822,527,0.84]],["text/19",[]],["component/19",[2,0.4]],["title/20-1",[892,59.605,1636,52.612]],["name/20-1",[]],["text/20-1",[]],["component/20-1",[]],["title/20",[867,42.408,1636,52.612]],["name/20",[867,1.776]],["text/20",[2,1.378,9,4.959,83,3.443,107,3.586,131,4.107,148,3.213,222,3.845,255,4.594,432,3.775,441,6.088,531,7.166,655,5.161,750,4.294,805,6.448,815,4.594,867,5.098,895,5.371,1135,7.166,1334,6.178,1636,9.292,1673,6.68]],["component/20",[2,0.4]],["title/21-1",[551,55.772]],["name/21-1",[]],["text/21-1",[]],["component/21-1",[]],["title/21-2",[802,36.56]],["name/21-2",[]],["text/21-2",[]],["component/21-2",[]],["title/21-3",[212,31.214,256,44.06]],["name/21-3",[]],["text/21-3",[]],["component/21-3",[]],["title/21-4",[6,24.21,212,31.214]],["name/21-4",[]],["text/21-4",[]],["component/21-4",[]],["title/21-5",[100,39.308,212,31.214]],["name/21-5",[]],["text/21-5",[]],["component/21-5",[]],["title/21-6",[5,34.914,77,24.608]],["name/21-6",[]],["text/21-6",[]],["component/21-6",[]],["title/21-7",[84,16.062,212,23.118,913,28.297,1574,32.632]],["name/21-7",[]],["text/21-7",[]],["component/21-7",[]],["title/21-8",[6,15.872,100,25.77,105,21.366,308,17.441,1674,37.63]],["name/21-8",[]],["text/21-8",[]],["component/21-8",[]],["title/21",[192,25.234,229,24.407]],["name/21",[1,1.532]],["text/21",[2,1.172,3,0.416,4,1.862,5,0.807,6,3.207,7,1.439,8,2.45,11,0.526,14,0.962,15,1.75,17,0.339,19,1.91,22,0.573,24,0.937,25,2.601,26,1.325,27,0.932,28,0.845,31,0.497,36,0.344,39,0.438,41,2.072,44,0.972,45,0.428,47,0.54,51,1.884,52,0.38,53,1.824,54,1.035,57,1.18,58,1.504,61,0.378,67,1.087,68,0.473,71,0.845,73,0.273,74,0.497,75,1.342,77,3.053,79,2.879,83,0.751,84,2.217,86,0.617,92,0.937,93,0.705,95,3.182,97,0.645,98,0.739,100,5.146,102,1.23,103,1.813,104,0.564,105,0.4,106,0.392,107,0.366,108,0.645,109,0.533,110,0.46,112,2.834,118,0.435,119,0.328,122,5.129,123,0.502,125,1.446,127,0.763,130,2.602,133,0.556,137,2.935,142,1.179,148,3.028,149,1.054,155,1.864,158,1.737,162,0.445,164,0.441,165,0.952,166,1.153,173,1.191,174,0.598,175,0.497,176,0.917,178,0.431,184,1.645,185,0.726,192,3.787,193,0.645,194,0.387,198,1.288,202,0.514,205,1.594,206,0.721,207,0.983,208,0.731,209,0.428,212,4.087,220,0.413,222,0.739,223,0.947,226,0.349,227,0.564,229,3.195,230,0.825,231,1.102,234,0.748,235,0.734,244,0.697,247,1.851,248,1.485,249,1.377,250,1.229,254,1.005,255,0.883,256,1.018,257,0.763,271,2.195,273,0.681,274,0.63,281,0.323,284,0.497,286,1.569,292,0.832,293,1.248,297,0.354,298,1.042,299,1.068,301,1.377,302,0.514,308,2.338,311,1.807,313,2.6,314,2.452,315,2.159,320,1.51,325,1.645,326,1.929,336,0.497,345,1.098,363,0.617,367,0.734,382,0.405,407,0.763,443,0.875,446,0.502,454,2.078,462,1.248,473,0.654,483,0.573,487,0.839,492,0.801,502,0.477,503,0.514,505,0.497,506,1.906,509,0.54,518,1.516,525,1.436,539,1.199,542,0.731,543,0.54,548,0.731,551,0.564,554,0.46,558,1.39,573,0.52,588,0.366,592,1.161,597,0.908,600,0.9,602,0.573,603,1.924,607,0.52,611,0.681,614,0.681,623,2.04,625,0.593,628,0.573,633,0.593,641,0.422,650,0.593,652,2.259,654,0.54,658,1.288,660,0.583,684,1.187,731,2.172,740,0.445,741,0.63,749,1.491,785,0.508,789,0.445,802,1.698,810,1.284,812,1.407,820,0.661,844,0.617,846,0.4,849,0.617,851,1.757,906,0.533,908,0.502,913,0.468,931,1.139,934,1.407,935,1.468,947,2.443,966,0.54,980,0.54,992,0.908,993,0.564,1011,0.681,1023,0.681,1041,0.54,1073,0.704,1091,1.848,1113,0.573,1119,1.468,1120,0.573,1154,1.08,1184,0.617,1242,0.617,1249,1.358,1265,2.259,1280,1.333,1282,0.556,1291,1.216,1293,0.564,1294,0.573,1296,0.604,1298,0.593,1310,0.52,1314,2.585,1317,0.704,1318,0.731,1322,1.801,1339,2.6,1366,0.508,1375,0.533,1390,2.242,1408,0.54,1420,0.41,1429,1.08,1445,1.585,1457,1.684,1461,0.464,1468,1.153,1471,0.54,1474,1.098,1506,0.564,1507,0.704,1516,0.497,1527,0.573,1528,0.492,1549,0.63,1569,0.801,1573,0.54,1574,1.444,1579,0.917,1593,0.645,1601,0.593,1603,0.731,1623,1.444,1624,0.464,1627,0.573,1657,0.681,1665,1.377,1669,0.731,1670,0.564,1674,0.704,1675,0.81,1676,0.81,1677,3.025,1678,0.81,1679,1.585,1680,0.645,1681,0.731,1682,0.645,1683,1.005,1684,0.81,1685,0.81,1686,0.81,1687,0.81,1688,0.645,1689,0.573,1690,0.731,1691,0.81,1692,0.81,1693,0.81,1694,0.81,1695,0.81,1696,0.81,1697,2.18,1698,0.81,1699,0.879,1700,0.879,1701,1.216,1702,0.681,1703,0.879,1704,0.879,1705,0.879,1706,0.879,1707,0.583,1708,1.724,1709,0.879,1710,1.527,1711,0.81,1712,0.81,1713,0.704,1714,0.681,1715,1.248,1716,0.681,1717,0.645,1718,2.469,1719,2.469,1720,1.953,1721,0.731,1722,0.456,1723,1.656,1724,0.63,1725,0.879,1726,0.765,1727,0.52,1728,0.879,1729,0.514,1730,0.81,1731,0.81,1732,0.81,1733,1.881,1734,0.662,1735,1.527,1736,0.81,1737,0.81,1738,0.593,1739,0.81,1740,0.731,1741,0.81,1742,4.535,1743,0.81,1744,0.681,1745,1.527,1746,0.765,1747,0.645,1748,0.765,1749,1.284,1750,0.81,1751,1.527,1752,0.879,1753,1.881,1754,2.165,1755,1.656,1756,1.656,1757,1.656,1758,0.879,1759,0.604,1760,0.533,1761,1.527,1762,0.731,1763,0.765,1764,0.81,1765,0.81,1766,0.731,1767,0.81,1768,1.377,1769,0.81,1770,1.377,1771,0.573,1772,0.81,1773,0.81,1774,0.731,1775,0.731,1776,0.81,1777,0.765,1778,1.032,1779,0.662,1780,0.765,1781,0.81,1782,0.879,1783,0.681,1784,0.731,1785,0.81,1786,0.81,1787,0.704,1788,0.645,1789,0.765,1790,0.63,1791,1.377,1792,1.527,1793,0.81]],["component/21",[2,0.4]],["title/22-1",[79,20.261,1468,26.052,1794,38.965,1795,39.985]],["name/22-1",[]],["text/22-1",[]],["component/22-1",[]],["title/22",[246,36.29,505,40.531]],["name/22",[294,2.327]],["text/22",[8,2.115,34,2.854,41,2.511,44,3.269,79,4.818,80,4.42,83,1.743,92,3.082,103,2.197,112,2.256,122,3.307,127,3.639,148,2.032,154,2.388,158,3.999,166,2.675,174,1.969,175,3.082,192,3.271,202,4.618,210,2.08,219,3.908,220,4.788,234,4.602,235,4.795,249,3.663,258,2.598,294,4.225,314,2.716,437,3.748,438,2.268,442,6.754,458,2.989,467,2.58,475,4.923,525,2.636,533,3.351,544,3.116,545,3.748,553,4.666,565,2.232,596,6.326,623,3.151,662,3.614,669,3.499,690,3.05,802,2.293,935,2.695,1082,2.695,1551,4.001,1778,5.79,1794,6.819,1795,4.106,1796,3.908,1797,4.533,1798,4.533,1799,5.451,1800,5.451,1801,3.554,1802,5.024,1803,4.533,1804,4.225]],["component/22",[2,0.4]],["title/23",[967,60.964]],["name/23",[1,1.532]],["text/23",[2,1.623,8,2.718,83,3.245,93,4.318,158,4.368,286,5.361,432,4.446,607,6.005,1082,5.019]],["component/23",[2,0.4]],["title/24",[137,16.062,440,25.858,527,25.669,528,37.244]],["name/24",[527,1.452]],["text/24",[126,4.141,137,3.044,297,4.055,440,4.9,475,6.269,527,5.718,528,7.058,1082,4.974,1672,9.272]],["component/24",[2,0.4]],["title/25",[229,24.407,669,46.006]],["name/25",[1805,2.767]],["text/25",[8,2.647,76,6.077,126,4.069,229,3.366,297,3.984,669,6.345,717,6.345,1082,5.787,1471,6.077,1803,8.22,1806,9.112]],["component/25",[2,0.4]],["title/26-1",[48,33.462,438,29.827]],["name/26-1",[]],["text/26-1",[]],["component/26-1",[]],["title/26-2",[221,43.481,1807,57.399]],["name/26-2",[]],["text/26-2",[]],["component/26-2",[]],["title/26-3",[492,29.494,662,40.443,690,34.131]],["name/26-3",[]],["text/26-3",[]],["component/26-3",[]],["title/26-4",[7,25.56,773,40.108]],["name/26-4",[]],["text/26-4",[]],["component/26-4",[]],["title/26",[2,9.757,158,26.253,617,44.772]],["name/26",[617,2.204]],["text/26",[2,0.772,5,1.414,8,2.457,13,1.009,15,1.129,48,2.254,50,1.576,54,2.128,59,1.469,76,1.784,79,1.843,83,3.289,93,1.235,95,2.332,102,1.52,103,1.17,105,2.818,106,1.295,107,1.208,118,1.435,123,1.659,124,1.264,125,1.414,126,1.195,136,1.592,137,0.878,141,1.761,148,1.082,153,1.494,154,1.271,156,2.444,158,3.452,159,2.573,164,2.425,165,1.176,166,1.424,173,3.216,191,1.507,192,2.182,194,1.279,198,1.592,203,1.784,207,2.02,210,1.843,216,2.55,221,5.566,224,1.678,234,1.311,244,1.221,249,1.346,250,1.998,252,1.863,257,1.337,285,1.446,289,1.592,292,1.458,297,1.946,298,2.748,299,1.044,302,1.697,311,0.988,407,1.337,408,1.893,438,2.009,478,3.387,480,4.028,482,2.823,487,2.444,490,2.413,492,1.403,496,1.924,525,1.403,535,1.641,543,1.784,544,1.659,550,1.717,553,1.458,565,1.977,571,1.893,576,1.738,597,2.647,600,1.576,617,3.543,629,3.052,633,1.959,636,2.13,658,1.592,659,2.081,690,2.701,732,1.659,739,1.761,749,1.072,750,1.446,751,2.081,752,5.889,770,2.485,795,2.759,799,7.198,800,4.444,847,3.052,858,1.959,895,1.809,925,1.924,967,3.387,981,2.4,1082,2.387,1097,2.413,1104,1.641,1119,1.435,1124,2.036,1162,1.835,1202,2.13,1203,2.25,1241,2.55,1254,1.608,1262,1.835,1310,2.856,1316,1.863,1323,1.608,1339,1.678,1437,4.274,1534,1.659,1573,1.784,1794,2.13,1796,2.081,1807,2.324,1808,1.52,1809,2.675,1810,2.186,1811,2.675,1812,2.413,1813,4.45,1814,6.216,1815,7.978,1816,2.675,1817,2.675,1818,2.525,1819,2.675,1820,2.675,1821,2.675,1822,2.675,1823,2.413,1824,2.081,1825,2.675,1826,2.675,1827,2.25,1828,2.25,1829,2.675,1830,3.866,1831,2.324,1832,2.675,1833,2.675,1834,4.805,1835,4.45,1836,4.45,1837,4.45,1838,4.45,1839,2.675,1840,2.25,1841,2.903,1842,4.828,1843,2.903,1844,4.45,1845,3.76,1846,2.525,1847,4.45,1848,4.828,1849,2.675,1850,2.675,1851,2.675,1852,2.25,1853,1.959,1854,2.675,1855,2.675,1856,1.959,1857,2.903,1858,2.675,1859,2.675,1860,2.675,1861,2.675]],["component/26",[2,0.4]],["title/27-1",[95,22.954,299,21.941,535,34.491]],["name/27-1",[]],["text/27-1",[]],["component/27-1",[]],["title/27-2",[32,37.494,165,24.714,1862,47.282]],["name/27-2",[]],["text/27-2",[]],["component/27-2",[]],["title/27-3",[80,40.108,1778,44.671]],["name/27-3",[]],["text/27-3",[]],["component/27-3",[]],["title/27",[80,40.108,192,25.234]],["name/27",[80,1.68]],["text/27",[2,0.877,3,1.161,6,1.852,8,2.392,11,1.469,14,1.716,15,2.523,17,0.945,27,1.663,32,4.477,44,1.015,45,2.041,54,1.081,65,1.627,73,0.761,75,2.93,77,2.5,79,3.687,80,4.075,83,0.785,88,1.062,93,1.044,95,1.577,96,2.234,100,1.345,103,1.689,105,1.116,106,1.095,107,2.699,117,3.069,118,2.072,122,1.488,123,1.402,124,2.388,125,1.195,126,1.725,127,1.93,130,0.77,131,1.997,137,0.742,142,0.974,144,1.656,149,1.101,154,1.075,158,2.36,160,1.263,165,0.994,166,1.204,170,1.186,172,2.578,173,1.68,175,2.369,192,3.678,202,2.45,205,0.969,206,1.068,209,1.195,212,2.824,221,1.488,226,0.974,228,1.359,231,1.555,233,1.6,244,3.338,250,3.014,252,6.957,253,1.801,255,3.457,257,1.13,273,1.902,276,2.776,285,1.223,286,1.296,292,1.232,297,0.989,298,2.432,299,0.883,301,1.138,311,1.427,315,1.178,324,1.402,327,2.94,367,1.858,442,4.362,472,1.721,473,1.655,477,3.792,478,1.721,482,1.434,483,3.576,518,1.252,519,1.274,521,3.075,525,1.186,529,1.965,530,1.687,535,5.629,537,2.04,539,2.139,540,1.263,550,1.452,568,5.354,600,1.332,602,2.732,609,1.902,616,3.075,641,1.178,652,1.373,654,1.508,764,1.551,765,3.037,785,1.418,789,1.242,791,1.759,801,4.55,802,2.307,908,1.402,917,1.801,931,2.881,932,1.656,1029,1.902,1119,2.712,1162,1.551,1182,2.04,1293,1.575,1356,1.32,1408,1.508,1423,1.529,1450,1.434,1624,1.296,1647,2.04,1670,1.575,1697,1.801,1726,5.643,1744,1.902,1778,1.529,1794,4.025,1797,2.04,1798,2.04,1810,1.848,1862,7.226,1863,3.862,1864,5.055,1865,1.529,1866,1.902,1867,2.261,1868,2.261,1869,2.261,1870,2.261,1871,2.261,1872,1.848,1873,1.721,1874,5.055,1875,3.862,1876,2.261,1877,2.261,1878,1.848,1879,2.261,1880,1.902,1881,5.055,1882,1.801,1883,1.902,1884,3.484,1885,2.261,1886,2.261,1887,3.646,1888,2.261,1889,2.261,1890,2.261,1891,1.801,1892,2.261,1893,2.261,1894,2.261,1895,2.261,1896,2.261,1897,2.261,1898,2.261,1899,2.135,1900,2.261,1901,3.862,1902,2.261,1903,2.881,1904,3.932,1905,2.261]],["component/27",[2,0.4]],["title/28",[1906,67.357]],["name/28",[1906,2.327]],["text/28",[8,2.625,30,5.273,80,5.484,126,4.034,192,3.45,297,3.95,432,4.293,554,5.132,1082,4.846,1796,7.026,1906,7.597,1907,9.034,1908,9.034]],["component/28",[2,0.4]],["title/29-1",[218,33.925,770,36.893]],["name/29-1",[]],["text/29-1",[]],["component/29-1",[]],["title/29-2",[635,60.964]],["name/29-2",[]],["text/29-2",[]],["component/29-2",[]],["title/29",[218,33.925,224,41.429]],["name/29",[1,1.532]],["text/29",[2,1.423,3,1.671,4,1.461,5,1.72,7,3.386,9,1.626,17,2.183,18,2.341,25,2.8,37,1.996,51,1.648,53,2.56,54,1.556,75,1.595,77,2.789,79,4.594,82,2.04,83,1.129,84,1.068,93,1.502,95,2.132,98,3.624,103,2.86,112,4.129,113,3.138,116,2.341,117,1.975,124,2.467,127,3.742,129,3.072,130,1.108,136,5.207,137,2.458,138,4.454,140,4.499,148,2.646,154,1.547,156,2.869,158,1.519,166,1.732,170,1.707,173,1.416,174,1.275,178,1.732,184,1.955,191,1.833,192,1.243,194,1.556,199,3.536,205,1.394,206,1.537,207,1.477,210,2.162,211,2.232,212,1.537,213,3.582,214,2.142,215,3.107,216,3.749,221,2.142,222,1.575,224,3.275,226,2.249,230,1.759,234,4.018,235,3.944,245,2.232,250,1.461,255,1.882,284,1.996,299,2.038,301,1.637,308,1.31,437,2.428,493,2.341,527,1.707,543,2.17,554,1.848,558,2.089,565,2.906,594,1.626,635,2.477,652,1.975,676,2.736,692,1.996,740,1.787,820,1.408,835,2.428,926,2.114,940,2.266,1203,2.736,1205,2.089,1290,2.736,1339,2.04,1444,4.88,1452,2.477,1556,4.979,1624,2.993,1778,2.2,1830,2.827,1852,2.736,1909,2.232,1910,3.531,1911,6.541,1912,6.175,1913,6.541,1914,3.072,1915,3.254,1916,2.531,1917,3.254,1918,3.254,1919,2.341,1920,3.254,1921,2.936,1922,2.936,1923,2.531,1924,3.254,1925,3.254,1926,3.254,1927,2.428,1928,3.254,1929,3.254,1930,3.254]],["component/29",[2,0.4]],["title/30-1",[117,48.623]],["name/30-1",[]],["text/30-1",[]],["component/30-1",[]],["title/30-2",[112,35.963]],["name/30-2",[]],["text/30-2",[]],["component/30-2",[]],["title/30-3",[67,22.333,100,33.451,130,19.142]],["name/30-3",[]],["text/30-3",[]],["component/30-3",[]],["title/30-4",[67,19.437,1808,27.796,1919,35.198,1931,33.563]],["name/30-4",[]],["text/30-4",[]],["component/30-4",[]],["title/30-5",[1321,51.389,1932,48.371]],["name/30-5",[]],["text/30-5",[]],["component/30-5",[]],["title/30-6",[213,45.318,1542,57.399]],["name/30-6",[]],["text/30-6",[]],["component/30-6",[]],["title/30-7",[216,37.864,1543,48.371]],["name/30-7",[]],["text/30-7",[]],["component/30-7",[]],["title/30-8",[216,32.222,1543,41.163,1933,50.723]],["name/30-8",[]],["text/30-8",[]],["component/30-8",[]],["title/30",[138,47.653]],["name/30",[138,1.646]],["text/30",[2,0.681,7,1.984,8,0.67,24,1.415,40,1.014,41,4.484,45,3.589,46,1.582,58,1.267,59,3.326,71,1.277,76,1.538,79,2.124,82,2.462,87,2.157,88,4.341,89,2.694,102,1.31,103,1.008,109,2.584,110,1.31,112,3.541,113,1.386,115,1.884,117,3.676,120,2.552,123,2.435,124,2.423,126,1.754,127,4.738,137,1.289,138,1.372,143,2.314,148,3.504,154,1.096,156,5.68,170,1.21,173,3.769,178,1.228,184,1.386,194,1.103,199,2.123,200,1.498,201,1.559,205,0.988,207,2.328,210,2.507,212,1.089,213,3.518,214,1.518,222,2.482,225,1.794,227,1.606,231,0.929,234,1.13,244,1.053,258,1.192,285,1.247,286,1.322,287,1.72,297,1.008,301,1.16,308,0.929,311,0.852,367,1.109,431,1.518,441,2.409,453,1.659,458,1.372,469,1.237,493,1.659,503,1.463,518,3.353,524,1.836,525,2.06,527,2.69,529,3.412,530,2.93,558,1.48,584,1.299,600,2.314,606,2.157,619,1.884,621,2.003,658,1.372,690,2.384,710,1.939,742,1.219,908,4.583,916,2.08,1101,1.72,1110,1.288,1111,2.003,1120,2.778,1162,2.694,1192,2.177,1202,1.836,1248,1.48,1339,1.446,1501,1.277,1516,1.415,1624,3.47,1729,1.463,1814,8.579,1834,8.579,1862,1.939,1912,2.177,1914,3.707,1919,3.689,1921,2.08,1932,3.755,1933,2.08,1934,2.08,1935,1.794,1936,2.177,1937,2.177,1938,3.985,1939,8.306,1940,1.559,1941,3.707,1942,2.306,1943,2.306,1944,3.543,1945,3.543,1946,5.129,1947,2.502,1948,3.927,1949,2.502,1950,2.502,1951,2.502,1952,1.72,1953,2.306,1954,2.306,1955,2.502,1956,2.306,1957,2.306,1958,2.502,1959,2.502,1960,2.08,1961,2.177,1962,2.502,1963,4.456,1964,3.412,1965,2.306,1966,2.003,1967,2.306,1968,3.927,1969,2.306,1970,2.306,1971,2.08,1972,2.177,1973,4.261,1974,3.054,1975,4.261,1976,2.502,1977,2.502,1978,2.502,1979,2.177,1980,2.502,1981,6.791,1982,2.306,1983,2.08,1984,3.927,1985,1.606]],["component/30",[2,0.4]],["title/31-1",[117,48.623]],["name/31-1",[]],["text/31-1",[]],["component/31-1",[]],["title/31-2",[112,35.963]],["name/31-2",[]],["text/31-2",[]],["component/31-2",[]],["title/31-3",[67,22.333,100,33.451,130,19.142]],["name/31-3",[]],["text/31-3",[]],["component/31-3",[]],["title/31-4",[67,19.437,1808,27.796,1919,35.198,1931,33.563]],["name/31-4",[]],["text/31-4",[]],["component/31-4",[]],["title/31-5",[1321,51.389,1932,48.371]],["name/31-5",[]],["text/31-5",[]],["component/31-5",[]],["title/31-6",[213,45.318,1542,57.399]],["name/31-6",[]],["text/31-6",[]],["component/31-6",[]],["title/31-7",[216,37.864,1543,48.371]],["name/31-7",[]],["text/31-7",[]],["component/31-7",[]],["title/31",[136,39.308,786,36.893]],["name/31",[1923,2.152]],["text/31",[2,0.813,4,1.279,7,1.813,8,2.011,20,1.767,41,1.424,44,1.279,45,4.043,57,1.552,58,1.565,59,1.565,71,1.578,74,1.748,79,2.473,82,2.939,87,2.575,88,4.267,89,3.215,90,1.786,93,1.315,103,1.246,109,1.875,112,3.107,113,1.712,116,2.049,117,4.201,123,1.767,124,2.215,126,2.667,127,2.343,128,1.712,136,1.695,137,1.539,143,4.507,148,4.244,154,1.354,156,5.915,160,1.591,173,3.783,177,1.851,178,1.517,199,3.229,200,1.851,201,1.926,205,1.221,207,2.711,210,2.473,213,3.215,216,4.384,222,2.269,227,1.984,231,1.147,234,1.396,250,2.105,258,1.473,285,1.54,286,1.633,287,2.125,297,1.246,298,1.371,299,1.112,308,1.147,346,1.388,431,1.875,441,1.748,469,1.528,474,1.578,479,2.049,494,3.215,513,2.475,517,4.229,518,3.833,525,1.494,527,1.494,553,1.552,584,1.604,604,1.633,619,2.328,621,2.475,658,1.695,665,1.984,740,1.565,742,1.506,748,2.049,802,1.3,908,4.744,1041,1.9,1101,2.125,1111,2.475,1202,2.269,1241,1.633,1248,1.829,1293,1.984,1438,1.786,1488,2.216,1516,1.748,1624,3.966,1834,2.396,1919,3.372,1922,8.491,1923,4.645,1932,3.432,1934,2.57,1935,2.216,1936,2.689,1937,2.689,1938,4.555,1940,3.169,1941,2.689,1963,2.475,1964,2.475,1986,5.638,1987,2.689,1988,3.091,1989,2.57,1990,2.849,1991,3.091,1992,3.091,1993,3.091,1994,7.423,1995,2.849,1996,2.475,1997,2.269,1998,1.926,1999,2.849,2000,2.849,2001,4.688,2002,4.072,2003,4.688,2004,3.316,2005,4.688,2006,4.688,2007,4.688,2008,4.688,2009,4.229,2010,4.688,2011,2.849,2012,2.849]],["component/31",[2,0.4]],["title/32-1",[117,48.623]],["name/32-1",[]],["text/32-1",[]],["component/32-1",[]],["title/32-2",[112,35.963]],["name/32-2",[]],["text/32-2",[]],["component/32-2",[]],["title/32-3",[67,22.333,100,33.451,130,19.142]],["name/32-3",[]],["text/32-3",[]],["component/32-3",[]],["title/32-4",[67,19.437,1808,27.796,1919,35.198,1931,33.563]],["name/32-4",[]],["text/32-4",[]],["component/32-4",[]],["title/32-5",[1321,51.389,1932,48.371]],["name/32-5",[]],["text/32-5",[]],["component/32-5",[]],["title/32-6",[213,45.318,1542,57.399]],["name/32-6",[]],["text/32-6",[]],["component/32-6",[]],["title/32-7",[216,37.864,1543,48.371]],["name/32-7",[]],["text/32-7",[]],["component/32-7",[]],["title/32",[140,48.129]],["name/32",[140,1.663]],["text/32",[2,0.945,7,1.629,8,1.583,15,1.057,40,1.1,45,3.374,58,1.375,59,1.375,71,1.386,77,2.029,79,3.195,82,2.64,87,2.312,88,4.469,89,2.887,90,1.57,93,2.514,95,1.022,102,1.422,103,1.095,109,1.648,112,3.198,113,1.504,117,3.307,120,1.627,123,2.61,126,2.852,127,1.251,128,2.53,130,1.433,136,1.489,138,1.489,140,4.636,142,1.078,143,3.21,147,1.552,148,3.744,153,1.398,154,1.19,155,3.66,156,5.728,158,1.169,159,2.434,164,1.364,165,1.1,170,1.313,173,3.897,174,0.981,178,1.333,184,1.504,194,1.197,199,2.276,200,1.627,201,1.693,205,1.073,206,1.183,207,2.899,210,2.255,213,1.717,216,2.413,221,2.77,222,1.212,227,1.743,231,1.008,248,1.143,250,2.446,255,1.448,257,1.251,258,1.295,275,1.833,276,2.312,285,1.353,286,1.435,287,1.868,288,2.331,297,2.792,301,1.259,308,1.008,324,1.552,407,1.251,431,1.648,441,1.536,469,1.343,473,1.804,474,2.331,510,1.57,518,3.944,519,1.41,525,1.313,527,1.313,584,1.41,617,1.994,619,2.046,621,2.175,658,2.505,696,2.931,741,1.947,770,1.398,802,1.143,805,2.735,908,3.96,926,1.627,940,1.743,1023,2.105,1101,1.868,1111,2.175,1241,3.66,1248,1.607,1323,1.504,1339,1.57,1501,2.331,1516,1.536,1543,1.833,1561,1.717,1565,1.833,1624,3.66,1626,1.627,1760,1.648,1778,1.693,1787,2.175,1808,1.422,1830,2.175,1834,2.105,1852,2.105,1865,1.693,1912,3.974,1914,2.363,1931,1.717,1932,1.833,1934,2.259,1935,1.947,1936,2.363,1937,2.363,1938,5.077,1941,2.363,1963,2.175,1972,2.363,1986,2.363,2013,2.716,2014,2.716,2015,2.716,2016,6.929,2017,2.716,2018,4.21,2019,2.716,2020,2.716,2021,2.716,2022,2.716,2023,2.716,2024,2.363,2025,2.716,2026,2.716,2027,4.21,2028,1.627,2029,2.716,2030,2.716,2031,1.57,2032,2.716,2033,2.716,2034,2.716,2035,4.568,2036,2.716,2037,5.91,2038,5.91,2039,5.91,2040,5.91,2041,4.568,2042,4.568,2043,2.716,2044,2.716,2045,1.771,2046,2.503,2047,2.175,2048,1.627,2049,2.716,2050,2.716]],["component/32",[2,0.4]],["title/33-1",[44,29.665,170,34.658]],["name/33-1",[]],["text/33-1",[]],["component/33-1",[]],["title/33",[6,24.21,1104,40.531]],["name/33",[1,1.532]],["text/33",[165,4.344,1255,6.991,1479,7.521]],["component/33",[2,0.4]],["title/34-1",[27,16.731,84,12.754,192,14.839,212,18.356,229,14.353,442,25.247]],["name/34-1",[]],["text/34-1",[]],["component/34-1",[]],["title/34-2",[132,28.56,218,25.126,220,24.952,2051,33.084]],["name/34-2",[]],["text/34-2",[]],["component/34-2",[]],["title/34-3",[84,18.456,654,37.494,1508,42.794]],["name/34-3",[]],["text/34-3",[]],["component/34-3",[]],["title/34-4",[84,21.688,218,33.925]],["name/34-4",[]],["text/34-4",[]],["component/34-4",[]],["title/34-5",[345,40.443,519,31.663,1516,34.491]],["name/34-5",[]],["text/34-5",[]],["component/34-5",[]],["title/34-6",[84,21.688,544,40.971]],["name/34-6",[]],["text/34-6",[]],["component/34-6",[]],["title/34-7",[84,21.688,2052,48.371]],["name/34-7",[]],["text/34-7",[]],["component/34-7",[]],["title/34-8",[174,19.18,320,22.717,449,34.616,559,31.796]],["name/34-8",[]],["text/34-8",[]],["component/34-8",[]],["title/34-9",[84,18.456,559,36.534,1938,37.002]],["name/34-9",[]],["text/34-9",[]],["component/34-9",[]],["title/34-10",[84,14.218,148,17.521,206,20.464,748,31.157,835,32.313]],["name/34-10",[]],["text/34-10",[]],["component/34-10",[]],["title/34-11",[77,20.941,84,18.456,202,35.663]],["name/34-11",[]],["text/34-11",[]],["component/34-11",[]],["title/34-12",[84,19.714,148,15.716,442,25.247,504,27.948,526,23.116]],["name/34-12",[]],["text/34-12",[]],["component/34-12",[]],["title/34",[2,8.492,79,20.261,84,16.062,207,22.212]],["name/34",[79,0.663,207,0.727]],["text/34",[2,0.983,4,1.328,5,0.722,7,1.314,8,1.104,9,0.683,11,0.888,14,0.32,15,0.823,17,1.42,20,0.847,24,0.838,27,1.636,33,0.406,34,0.409,44,1.112,45,0.381,50,0.805,52,0.915,53,0.67,54,0.932,56,0.776,58,1.624,61,0.91,68,0.797,70,0.442,72,1.148,74,0.442,75,0.955,77,2.013,79,3.424,82,0.857,83,2.269,84,3.533,86,2.251,88,2.12,89,0.494,93,1.143,95,0.294,102,1.68,103,0.852,105,1.874,106,0.943,107,1.118,110,1.407,116,0.518,117,2.307,119,1.826,122,3.375,124,1.971,125,0.722,126,0.61,127,0.36,131,0.372,132,2.435,133,0.494,137,1.586,142,1.066,143,1.148,144,2.487,147,0.847,148,3.784,153,0.402,154,1.405,155,0.783,158,1.948,159,0.417,160,1.088,168,0.926,170,0.378,172,0.367,173,0.848,174,0.764,175,0.838,176,1.777,177,0.468,178,1.037,184,0.433,185,0.649,186,1.04,190,0.437,192,2.703,194,1.184,198,0.429,202,3.744,205,0.309,206,0.34,207,2.049,209,0.381,210,1.869,212,0.645,215,0.429,218,3.031,220,2.615,222,1.839,226,0.31,227,0.951,229,2.417,232,0.606,234,0.353,235,1.423,244,1.904,247,3.991,248,1.734,249,0.362,250,0.613,252,0.502,253,0.574,255,0.417,257,0.683,261,0.606,262,0.589,263,0.399,265,1.088,266,0.548,271,0.349,276,2.48,278,0.537,285,0.389,286,0.783,287,1.019,297,1.083,298,0.657,299,1.628,300,0.51,301,1.488,302,1.236,308,0.29,311,0.915,313,3.55,314,4.634,325,0.821,327,0.548,345,0.518,346,0.351,367,0.937,382,2.085,407,1.697,429,0.494,431,0.474,432,0.649,436,4.268,440,0.381,442,3.836,445,0.937,448,0.433,449,1.379,458,2.261,466,0.487,467,0.37,469,1.822,472,0.548,473,1.787,475,0.487,477,1.571,479,0.518,480,2.46,481,0.389,482,1.571,483,0.966,484,0.502,492,1.299,493,0.518,494,0.937,495,1.04,496,0.983,497,0.79,498,0.537,500,1.972,502,1.742,503,0.867,504,1.781,505,1.195,510,1.222,519,0.769,521,1.972,522,0.468,525,2.188,526,0.813,527,0.378,533,0.48,543,0.48,544,1.834,545,0.537,546,1.885,549,1.972,550,0.462,554,0.409,559,5.07,560,1.149,565,0.32,568,0.527,571,1.379,574,1.427,576,0.468,578,1.552,584,0.769,585,1.266,586,1.149,587,1.427,588,3.039,590,0.937,597,0.813,598,0.487,601,1.04,605,0.548,607,0.877,624,0.548,629,1.699,641,0.375,652,0.829,654,0.911,655,0.888,660,0.518,661,0.966,688,0.457,689,0.899,690,1.503,713,2.585,732,0.847,739,0.474,740,1.36,742,0.381,748,1.781,749,0.289,754,0.51,756,0.548,770,0.402,788,0.606,792,0.468,801,0.548,812,0.468,823,0.51,830,0.518,844,0.548,846,0.355,847,2.33,850,0.527,852,0.494,873,0.527,883,0.437,894,0.899,898,0.574,908,0.447,913,1.127,925,0.983,926,0.468,932,1,935,1.586,938,0.487,944,0.518,947,2.239,954,0.606,955,0.574,980,0.48,992,0.429,1114,0.51,1119,0.386,1190,0.606,1205,1.251,1225,0.606,1238,0.65,1241,2.178,1242,1.04,1245,1.552,1262,0.494,1281,0.606,1293,0.502,1316,0.502,1319,0.606,1336,0.527,1339,1.222,1354,0.487,1405,1.222,1423,0.487,1429,0.966,1437,1.251,1461,0.783,1468,0.727,1469,0.574,1499,1.652,1501,0.399,1509,1.552,1516,0.838,1556,0.548,1569,1.022,1579,0.821,1583,0.56,1589,0.527,1591,0.574,1618,0.574,1619,0.65,1623,0.48,1624,0.413,1637,0.502,1640,0.502,1649,0.589,1652,0.457,1671,0.548,1677,0.48,1679,1.427,1707,0.518,1714,0.606,1715,0.589,1729,0.867,1738,0.527,1747,1.088,1749,0.606,1760,0.474,1778,1.318,1804,1.639,1882,0.574,1909,0.494,1916,0.56,1940,0.487,1952,0.537,2004,1.379,2048,0.468,2051,0.924,2052,3.755,2053,0.56,2054,1.233,2055,0.65,2056,0.65,2057,0.72,2058,1.337,2059,0.606,2060,0.606,2061,1.233,2062,1.366,2063,0.72,2064,1.972,2065,1.366,2066,0.65,2067,4.515,2068,1.639,2069,1.758,2070,0.606,2071,0.518,2072,0.65,2073,0.589,2074,0.72,2075,0.548,2076,1.116,2077,0.537,2078,1.116,2079,1.639,2080,0.65,2081,0.452,2082,0.606,2083,3.114,2084,0.65,2085,0.72,2086,7.303,2087,1,2088,0.56,2089,0.72,2090,0.72,2091,1.366,2092,0.65,2093,1.693,2094,0.65,2095,0.65,2096,0.606,2097,0.65,2098,0.65,2099,1.693,2100,0.65,2101,0.65,2102,1.088,2103,3.428,2104,0.65,2105,5.129,2106,2.114,2107,0.782,2108,0.782,2109,2.114,2110,1.149,2111,0.606,2112,0.65,2113,1.949,2114,0.65,2115,2.234,2116,0.606,2117,0.72,2118,0.72,2119,0.65,2120,0.72,2121,0.65,2122,0.65,2123,0.606,2124,0.65,2125,0.65,2126,0.65,2127,0.72,2128,0.782,2129,1.019,2130,0.527,2131,0.65,2132,1.454,2133,0.518,2134,0.65,2135,0.527,2136,0.65,2137,0.65,2138,0.548,2139,0.606,2140,0.37,2141,0.424,2142,0.72,2143,0.65,2144,0.72,2145,1.233,2146,0.574,2147,0.574,2148,0.574,2149,0.72,2150,0.65,2151,0.65,2152,0.606,2153,1.233,2154,0.537,2155,0.606,2156,0.589,2157,0.65,2158,0.548,2159,0.65,2160,0.65]],["component/34",[2,0.4]],["title/35",[84,25.897,846,27.734]],["name/35",[1,1.532]],["text/35",[]],["component/35",[2,0.4]],["title/36-1",[2161,80.094]],["name/36-1",[]],["text/36-1",[]],["component/36-1",[]],["title/36-2",[84,16.062,125,25.858,127,24.453,218,25.126]],["name/36-2",[]],["text/36-2",[]],["component/36-2",[]],["title/36-3",[84,18.456,218,28.87,1469,44.772]],["name/36-3",[]],["text/36-3",[]],["component/36-3",[]],["title/36-4",[27,24.211,84,18.456,442,36.534]],["name/36-4",[]],["text/36-4",[]],["component/36-4",[]],["title/36-5",[132,28.56,218,25.126,220,24.952,2051,33.084]],["name/36-5",[]],["text/36-5",[]],["component/36-5",[]],["title/36-6",[84,18.456,654,37.494,1508,42.794]],["name/36-6",[]],["text/36-6",[]],["component/36-6",[]],["title/36-7",[84,21.688,218,33.925]],["name/36-7",[]],["text/36-7",[]],["component/36-7",[]],["title/36-8",[345,40.443,519,31.663,1516,34.491]],["name/36-8",[]],["text/36-8",[]],["component/36-8",[]],["title/36-9",[84,21.688,544,40.971]],["name/36-9",[]],["text/36-9",[]],["component/36-9",[]],["title/36-10",[84,21.688,2052,48.371]],["name/36-10",[]],["text/36-10",[]],["component/36-10",[]],["title/36-11",[174,19.18,320,22.717,449,34.616,559,31.796]],["name/36-11",[]],["text/36-11",[]],["component/36-11",[]],["title/36-12",[84,18.456,559,36.534,1938,37.002]],["name/36-12",[]],["text/36-12",[]],["component/36-12",[]],["title/36-13",[84,14.218,215,25.77,299,16.903,526,25.77,2079,36.426]],["name/36-13",[]],["text/36-13",[]],["component/36-13",[]],["title/36-14",[84,14.218,148,17.521,206,20.464,748,31.157,835,32.313]],["name/36-14",[]],["text/36-14",[]],["component/36-14",[]],["title/36-15",[77,20.941,84,18.456,202,35.663]],["name/36-15",[]],["text/36-15",[]],["component/36-15",[]],["title/36-16",[148,19.793,244,22.335,298,23.539,2162,44.145]],["name/36-16",[]],["text/36-16",[]],["component/36-16",[]],["title/36-17",[84,19.714,148,15.716,442,25.247,504,27.948,526,23.116]],["name/36-17",[]],["text/36-17",[]],["component/36-17",[]],["title/36-18",[475,38.014,525,29.494,527,29.494]],["name/36-18",[]],["text/36-18",[]],["component/36-18",[]],["title/36-19",[155,32.222,252,39.15,525,29.494]],["name/36-19",[]],["text/36-19",[]],["component/36-19",[]],["title/36-20",[1671,50.288,2158,50.288]],["name/36-20",[]],["text/36-20",[]],["component/36-20",[]],["title/36",[2,11.466,84,21.688]],["name/36",[84,0.908]],["text/36",[0,0.406,2,1.017,3,0.248,4,1.101,5,0.921,6,0.342,7,1.073,8,1.451,9,0.466,10,0.235,11,1.37,13,0.657,14,0.414,15,1.299,16,0.147,17,1.287,20,0.578,24,0.572,25,0.181,27,1.88,31,0.296,32,0.901,33,0.525,34,0.275,36,0.396,37,0.296,38,0.221,44,2.059,45,0.493,46,0.331,50,0.796,51,0.245,52,0.635,53,0.457,54,1.008,56,0.53,58,1.347,59,0.265,61,0.631,63,0.259,65,0.348,68,0.544,70,0.572,72,1.635,74,0.829,75,0.457,77,2.347,78,0.354,79,2.221,80,0.293,82,1.74,83,2.737,84,3.53,86,1.866,87,1.158,88,2.601,89,0.64,90,0.303,93,1.281,95,0.711,96,0.412,98,0.234,99,0.331,101,0.385,102,1.393,103,0.922,105,1.518,106,0.843,107,0.952,109,0.318,110,0.767,111,0.368,112,0.947,113,0.812,115,0.395,116,0.348,117,2.207,119,1.575,120,0.314,121,0.555,122,2.562,124,1.718,125,0.921,126,0.416,127,0.871,131,0.482,132,2.549,136,0.288,137,2.273,142,1.056,143,0.549,144,2.662,147,0.578,148,3.821,149,0.235,153,0.973,154,1.599,155,1.208,158,1.295,159,0.279,160,0.754,165,0.927,166,0.257,168,0.642,170,0.914,171,0.3,172,0.475,173,1.207,174,0.53,175,0.572,176,1.047,177,0.878,178,1.122,184,0.29,185,0.828,186,1.326,190,0.566,192,1.06,194,0.833,198,0.288,199,0.261,202,3.996,205,1.319,206,0.638,207,0.219,209,0.255,210,1.713,212,1.454,214,0.318,215,0.555,216,0.277,218,2.124,220,2.546,222,1.629,226,0.582,227,0.649,229,0.499,232,2.83,234,0.457,235,1.179,239,2.777,240,2.777,241,2.777,242,2.777,244,2.189,246,0.265,247,3.242,248,1.405,249,0.243,250,0.947,252,1.213,253,0.385,255,0.279,257,0.466,258,0.482,261,0.784,262,0.395,263,0.268,265,0.743,266,0.368,271,1.187,276,1.691,278,0.361,285,0.942,286,0.534,287,1.008,292,0.263,295,0.572,296,0.354,297,1.072,298,1.619,299,1.949,300,0.342,301,1.829,302,1.337,305,0.436,308,0.195,311,0.644,313,2.876,314,2.105,315,0.252,319,0.27,320,0.433,321,0.436,324,0.3,325,0.56,327,0.71,336,0.572,345,0.348,346,0.235,367,0.65,382,1.386,403,0.841,405,0.314,407,1.225,408,0.66,414,0.342,429,0.331,431,0.318,432,0.828,433,0.354,436,3.477,440,0.255,442,3.809,445,0.331,448,0.812,449,2.178,454,0.521,458,1.254,466,0.63,467,0.479,469,1.488,472,0.368,473,1.965,474,0.516,475,0.327,476,0.385,477,2.623,479,0.671,480,1.834,481,1.664,482,1.337,483,2.178,484,1.213,487,1.158,492,0.914,493,0.671,494,0.64,495,0.71,496,1.253,497,0.539,498,0.361,499,0.406,500,1.679,502,0.549,503,0.591,504,1.516,505,0.296,509,0.901,510,0.847,511,0.348,519,0.525,520,0.348,521,1.679,522,0.314,525,2.62,526,1.036,527,0.254,533,0.322,535,0.296,539,0.748,543,0.622,544,1.52,545,0.696,546,1.866,549,1.076,550,0.31,554,0.275,559,4.573,560,0.784,565,0.215,568,0.354,571,1.232,574,1.275,576,0.314,578,1.076,584,0.761,585,0.878,586,0.784,587,0.989,588,2.715,590,0.64,597,0.804,598,0.327,601,1.028,602,0.66,603,0.25,605,0.368,607,1.118,608,0.368,623,0.303,624,0.71,625,0.989,626,0.331,629,2.67,640,0.436,641,0.252,652,0.566,654,0.622,655,0.878,658,0.555,661,0.66,662,0.671,688,0.307,690,0.82,693,0.395,697,0.436,713,1.866,732,0.838,734,0.436,737,0.436,739,0.614,740,0.957,742,0.493,748,1.763,749,0.194,750,1.14,752,0.337,754,0.342,756,0.368,764,0.331,770,0.973,788,0.406,789,0.265,792,0.314,795,0.3,805,0.314,812,0.314,830,0.348,839,0.406,844,0.368,846,0.238,847,2.995,850,0.354,852,0.331,868,0.368,873,0.683,883,0.293,894,0.889,895,0.63,898,0.385,908,0.3,913,0.781,925,0.671,926,0.314,938,0.327,944,0.348,947,1.983,952,0.406,954,0.406,955,0.385,961,0.406,980,0.322,992,0.288,993,0.337,1002,0.385,1016,1.028,1021,0.368,1057,0.361,1096,0.406,1101,0.361,1110,0.27,1119,0.259,1124,0.368,1158,0.743,1173,0.331,1190,0.406,1205,1.118,1225,0.406,1231,0.406,1237,0.436,1241,2.084,1242,0.71,1245,1.387,1255,0.342,1259,0.812,1260,0.812,1262,0.331,1281,0.406,1282,0.331,1289,0.322,1293,0.337,1301,0.406,1316,0.337,1323,0.29,1336,0.354,1339,1.092,1354,0.327,1372,0.368,1373,0.342,1405,1.092,1420,0.245,1423,0.327,1429,0.956,1437,0.867,1461,0.998,1468,0.496,1470,0.368,1478,0.354,1479,0.368,1499,0.622,1501,0.748,1509,1.679,1516,0.572,1521,0.354,1522,0.368,1523,0.436,1556,0.368,1557,0.436,1569,1.106,1578,0.354,1579,0.56,1581,0.385,1585,0.368,1588,0.436,1589,0.683,1591,0.385,1618,0.385,1623,0.622,1624,0.277,1627,0.342,1637,0.337,1640,0.337,1641,0.385,1649,0.395,1652,0.591,1664,0.436,1670,0.337,1671,0.368,1677,0.322,1679,0.683,1701,0.385,1707,0.348,1714,0.406,1715,0.395,1729,0.307,1740,0.436,1747,0.385,1760,0.318,1778,1.178,1783,0.406,1796,0.376,1804,2.062,1824,0.376,1878,0.395,1882,1.387,1909,0.64,1916,0.376,1940,0.327,1952,0.361,1971,0.436,1985,0.337,1998,0.327,2004,1.491,2024,0.456,2045,0.342,2048,0.314,2051,0.63,2052,3.656,2054,0.436,2055,0.436,2056,0.436,2058,0.64,2059,0.406,2060,0.784,2061,1.219,2064,1.387,2066,0.436,2068,2.062,2069,0.841,2070,0.406,2071,0.348,2072,0.436,2073,0.395,2075,0.368,2076,0.762,2077,1.3,2078,0.762,2079,1.465,2080,0.841,2081,0.303,2082,0.406,2083,2.784,2084,0.436,2087,0.683,2092,0.436,2093,2.41,2094,0.841,2095,0.436,2096,0.406,2097,0.436,2098,0.436,2099,1.513,2100,0.436,2101,0.436,2102,0.743,2103,4.137,2104,0.436,2110,0.784,2111,0.406,2112,0.436,2114,0.436,2115,2.212,2116,0.406,2119,0.436,2121,0.436,2122,0.436,2123,0.784,2124,0.841,2125,0.436,2126,0.436,2129,0.696,2130,0.354,2131,0.436,2132,1.3,2133,0.348,2134,2.212,2135,0.354,2136,0.436,2137,0.436,2138,0.368,2139,0.784,2140,0.248,2141,0.285,2143,0.436,2145,1.219,2146,0.743,2147,0.385,2148,1.679,2150,0.436,2151,0.436,2152,0.406,2153,0.841,2154,0.361,2155,0.406,2156,0.395,2159,0.436,2160,0.436,2162,0.841,2163,3.34,2164,0.932,2165,2.108,2166,0.483,2167,1.351,2168,1.351,2169,0.483,2170,0.932,2171,0.932,2172,0.932,2173,0.354,2174,1.572,2175,0.483,2176,0.483,2177,0.436,2178,0.483,2179,0.385,2180,0.483,2181,0.483,2182,0.483,2183,0.483,2184,0.483,2185,0.483,2186,0.483,2187,0.456,2188,0.456,2189,0.483,2190,0.483,2191,0.483,2192,0.483,2193,0.483,2194,0.42,2195,0.483,2196,0.483,2197,0.932,2198,0.483,2199,0.932,2200,2.66,2201,0.483,2202,0.483,2203,0.456,2204,0.932,2205,0.395,2206,0.524,2207,0.524,2208,0.524,2209,1.466,2210,0.483,2211,0.483,2212,0.456,2213,0.483,2214,1.012,2215,0.483,2216,0.483,2217,0.524,2218,0.932,2219,0.483,2220,0.406,2221,0.932,2222,0.483,2223,0.483,2224,0.841,2225,0.483,2226,0.483,2227,0.483,2228,0.483,2229,0.932,2230,0.483,2231,0.483,2232,0.524,2233,0.483,2234,0.483,2235,0.483,2236,0.483,2237,0.436,2238,0.483,2239,0.436,2240,0.436,2241,0.406,2242,0.483,2243,0.483,2244,0.483,2245,0.483,2246,0.483,2247,0.483,2248,0.483,2249,0.483,2250,0.483]],["component/36",[2,0.4]],["title/37-1",[8,19.195,2251,59.605]],["name/37-1",[]],["text/37-1",[]],["component/37-1",[]],["title/37-2",[84,21.688,207,29.991]],["name/37-2",[]],["text/37-2",[]],["component/37-2",[]],["title/37-3",[559,36.534,629,38.565,1677,37.494]],["name/37-3",[]],["text/37-3",[]],["component/37-3",[]],["title/37",[84,18.456,846,27.734,2052,41.163]],["name/37",[846,1.365]],["text/37",[2,1.295,5,0.973,8,0.939,13,1.219,24,1.984,41,0.921,44,2.925,50,1.905,58,1.012,61,0.86,77,1.204,79,2.697,82,2.028,83,3.027,84,1.706,87,1.776,88,3.059,93,1.493,106,0.892,107,0.832,112,1.452,118,0.988,119,3.922,124,1.528,133,1.263,134,1.549,137,3.275,138,1.096,140,1.943,143,1.085,147,2.68,148,2.635,153,1.029,154,0.875,155,4.275,158,3.042,160,1.806,166,0.981,172,0.939,178,0.981,192,0.704,198,1.096,202,2.051,207,1.468,209,0.973,210,0.763,222,2.092,223,0.805,229,0.68,234,2.899,235,1.555,243,3.057,244,4.426,248,2.372,250,0.827,263,2.877,265,1.467,266,4.501,271,2.092,276,3.248,285,0.996,286,1.056,297,1.414,302,2.051,311,1.195,313,2.028,314,2.336,320,0.855,326,0.68,407,1.616,431,1.212,432,2.054,458,1.096,473,0.789,480,1.004,481,3.522,483,2.287,492,0.966,527,2.267,532,1.402,535,2.651,539,3.607,546,3.289,559,2.101,587,1.349,588,1.951,590,1.263,594,0.921,600,1.905,602,4.184,607,2.075,624,3.955,626,2.964,628,2.287,629,3.564,651,1.349,653,1.467,655,1.197,658,1.096,692,1.13,739,2.128,749,0.738,775,4.958,778,1.467,795,1.142,803,2.719,805,1.197,812,2.101,823,1.303,825,3.057,846,0.909,847,1.263,864,4.501,868,1.402,873,2.367,913,1.065,932,2.367,940,1.283,944,1.325,947,1.085,992,1.096,1016,2.461,1119,0.988,1151,5.187,1205,5.602,1241,1.853,1262,2.218,1285,1.549,1366,1.155,1389,1.549,1390,1.748,1405,1.155,1413,0.915,1429,2.287,1435,1.182,1461,1.056,1471,2.882,1488,5.066,1555,1.549,1623,1.228,1640,1.283,1707,1.325,1775,1.662,1812,1.662,1856,1.349,1923,1.433,1938,1.212,1985,2.252,2052,4.33,2053,1.433,2068,5.478,2071,1.325,2078,1.505,2102,4.709,2110,5.478,2111,1.549,2116,5.478,2123,5.478,2173,1.349,2174,1.662,2251,6.73,2252,1.662,2253,1.467,2254,1.842,2255,1.842,2256,1.842,2257,1.842,2258,1.842,2259,1.662,2260,4.322,2261,3.233,2262,3.233,2263,3.233,2264,1.842,2265,1.842,2266,3.233,2267,3.233,2268,1.662,2269,1.842,2270,1.842,2271,1.842,2272,2.515,2273,1.505,2274,1.842,2275,1.842,2276,1.842,2277,1.842,2278,1.999,2279,1.549,2280,1.549,2281,1.549,2282,1.842]],["component/37",[2,0.4]],["title/38",[2253,63.781]],["name/38",[1,1.532]],["text/38",[]],["component/38",[2,0.4]],["title/39-1",[235,31.783,1468,35.176]],["name/39-1",[]],["text/39-1",[]],["component/39-1",[]],["title/39-2",[1468,35.176,2283,57.399]],["name/39-2",[]],["text/39-2",[]],["component/39-2",[]],["title/39-3",[676,55.562,2284,59.605]],["name/39-3",[]],["text/39-3",[]],["component/39-3",[]],["title/39",[39,30.396,235,27.047,1683,37.002]],["name/39",[39,0.609,235,0.542,1683,0.742]],["text/39",[3,2.215,4,1.157,6,1.58,7,1.669,8,2.415,14,1.916,15,1.821,26,2.088,27,2.395,30,1.504,31,1.581,39,4.233,41,1.288,44,1.157,51,1.305,58,1.415,61,1.203,63,1.382,71,1.427,73,1.452,79,1.786,93,1.19,95,2.271,103,1.127,110,2.45,131,1.333,137,2.862,161,2.958,162,1.415,166,1.372,168,1.225,170,3.412,171,1.598,173,1.121,174,1.01,175,1.581,176,1.549,185,1.225,192,2.765,205,1.104,210,2.693,212,1.217,217,2.876,223,1.127,226,1.11,229,1.593,231,2.24,234,1.263,235,5.172,244,1.176,248,2.539,250,1.157,258,1.333,276,1.415,284,3.99,290,1.922,297,1.127,298,1.24,301,1.296,308,1.038,310,1.176,311,2.055,312,1.857,325,1.549,326,1.593,367,3.129,432,1.225,438,1.947,441,1.581,443,4.996,458,1.533,474,1.427,481,2.332,509,1.719,511,1.854,519,1.451,526,1.533,553,1.404,592,2.314,597,2.566,603,2.23,662,1.854,684,6.467,690,2.618,789,2.369,805,1.675,807,1.768,832,3.283,846,1.271,906,1.696,925,1.854,938,1.742,947,2.541,966,4.337,968,1.961,1139,1.922,1184,1.961,1241,1.477,1248,1.654,1265,1.564,1282,1.768,1307,4.57,1310,1.654,1322,1.696,1339,1.616,1366,3.488,1388,3.891,1390,1.393,1395,4.528,1408,1.719,1447,2.167,1461,1.477,1472,2.325,1490,1.451,1501,3.08,1529,1.768,1569,1.352,1578,1.887,1627,1.823,1683,4.764,1708,7.215,1722,1.451,1724,2.004,1808,1.464,1909,1.768,1916,2.004,1938,1.696,1985,1.794,2058,1.768,2279,5.47,2283,6.289,2284,2.325,2285,4.313,2286,2.004,2287,2.577,2288,2.803,2289,2.577,2290,2.577,2291,1.393,2292,2.577,2293,2.577,2294,4.828,2295,2.325,2296,3.283,2297,2.577,2298,2.577,2299,2.325,2300,2.577,2301,2.577,2302,2.167,2303,2.325,2304,2.325,2305,2.325,2306,2.577,2307,2.004,2308,2.004,2309,2.577,2310,2.433,2311,4.313,2312,2.577,2313,2.577,2314,2.577,2315,2.577]],["component/39",[2,0.4]],["title/40-1",[6,17.93,212,23.118,218,25.126,299,19.096]],["name/40-1",[]],["text/40-1",[]],["component/40-1",[]],["title/40-2",[25,18.301,212,23.118,218,25.126,299,19.096]],["name/40-2",[]],["text/40-2",[]],["component/40-2",[]],["title/40-3",[6,15.872,26,20.966,39,23.417,174,16.978,1683,28.506]],["name/40-3",[]],["text/40-3",[]],["component/40-3",[]],["title/40-4",[25,18.301,26,23.685,31,30.018,174,19.18]],["name/40-4",[]],["text/40-4",[]],["component/40-4",[]],["title/40",[25,18.301,27,21.071,299,19.096,1916,38.059]],["name/40",[25,0.599,820,0.693]],["text/40",[4,2.487,6,3.934,8,1.609,15,1.479,25,3.779,26,4.115,27,4.691,31,2.149,36,2.349,54,1.675,75,1.717,77,2.063,79,2.293,82,3.473,87,1.924,106,2.681,131,1.811,149,1.706,165,1.54,173,1.524,174,2.692,183,2.197,192,2.981,194,1.675,212,5.212,222,1.696,229,2.884,234,1.717,235,4.349,244,4.612,276,1.924,281,1.398,298,1.685,299,4.12,302,2.222,308,1.41,311,1.294,320,2.571,326,2.884,346,1.706,482,2.222,505,2.149,525,2.905,539,3.067,600,2.064,628,2.478,641,1.824,691,2.666,742,2.927,820,1.516,1241,3.936,1248,2.248,1314,1.851,1322,5.137,1366,4.895,1417,1.909,1463,2.565,1746,3.307,1748,3.307,1753,3.043,1808,1.99,1852,2.946,2051,2.368,2053,4.308,2294,2.336,2295,3.16,2310,3.307,2316,3.801,2317,3.801,2318,3.16,2319,6.009,2320,6.009,2321,3.801,2322,3.801,2323,3.801,2324,5.354,2325,4.526,2326,6.009,2327,3.801,2328,3.801,2329,2.862,2330,6.009,2331,3.801,2332,3.801,2333,6.009,2334,3.503]],["component/40",[2,0.4]],["title/41-1",[16,24.284]],["name/41-1",[]],["text/41-1",[]],["component/41-1",[]],["title/41-2",[16,20.032,1249,24.113]],["name/41-2",[]],["text/41-2",[]],["component/41-2",[]],["title/41-3",[13,18.453,815,28.297,1221,26.663,2083,29.705]],["name/41-3",[]],["text/41-3",[]],["component/41-3",[]],["title/41-4",[2083,40.108,2335,51.389]],["name/41-4",[]],["text/41-4",[]],["component/41-4",[]],["title/41",[192,25.234,272,44.06]],["name/41",[192,0.612,272,1.068]],["text/41",[2,1.123,4,0.716,6,3.5,7,1.49,8,2.525,10,2.28,11,1.848,13,2.608,14,2.08,16,2.096,17,0.666,23,1.34,24,0.978,25,3.167,28,2.133,31,1.745,33,1.602,36,1.634,38,1.759,39,2.907,40,4.61,41,1.422,43,3.622,44,1.73,45,0.842,48,1.441,49,1.34,52,0.749,53,0.781,54,0.762,58,0.875,61,0.744,66,1.11,67,1.53,71,0.883,73,1.576,75,0.781,81,1.023,83,1.336,84,0.523,88,1.336,92,1.745,95,2.436,96,0.704,98,0.771,102,2.188,103,1.244,106,0.771,107,1.284,118,0.855,119,0.645,125,1.503,126,1.27,127,0.797,130,2.706,136,0.948,137,1.765,141,1.049,142,2.788,148,0.645,149,1.386,161,1.093,164,1.55,166,1.515,170,3.396,172,1.451,174,1.51,183,0.999,184,1.709,185,1.352,192,2.641,193,2.265,198,0.948,201,1.078,205,1.651,207,0.724,209,0.842,210,1.939,222,2.266,223,1.244,226,0.686,229,1.423,230,0.862,231,1.145,235,2.87,245,1.093,246,0.875,248,0.728,249,0.802,254,1.872,255,0.922,259,1.269,272,2.569,281,2.381,285,1.538,288,1.575,289,0.948,290,1.189,292,0.868,297,2.047,299,0.622,300,1.128,301,2.705,308,2.165,311,1.423,312,0.686,320,0.74,326,1.051,367,2.252,382,1.422,432,1.352,443,0.913,467,0.818,480,0.868,481,0.862,487,0.875,497,1.645,506,1.11,509,1.063,518,0.883,519,0.898,522,1.848,526,0.948,534,1.189,540,0.89,550,1.023,551,1.11,565,0.708,584,0.898,588,1.284,594,0.797,603,2.421,622,1.213,641,1.482,665,1.11,667,2.012,731,0.93,749,1.14,756,1.213,765,1.709,769,1.505,770,0.89,778,2.265,789,0.875,802,2.723,815,0.922,820,1.231,846,0.786,847,1.951,861,1.189,894,1.049,932,1.167,940,1.11,947,1.676,981,0.67,1006,2.083,1059,1.302,1110,1.588,1124,1.213,1160,1.167,1221,0.868,1249,1.709,1280,1.386,1299,2.582,1323,0.958,1334,1.24,1386,1.189,1390,0.862,1392,1.146,1405,0.999,1417,2.099,1461,0.913,1468,0.849,1471,1.063,1527,2.012,1528,1.727,1534,2.903,1565,1.167,1569,2.021,1573,1.897,1574,1.897,1576,1.24,1579,1.709,1583,1.24,1589,1.167,1606,1.302,1620,1.438,1624,1.63,1627,1.128,1630,1.438,1659,1.438,1671,1.213,1713,1.385,1722,0.898,1724,2.213,1729,1.011,1734,1.302,1744,2.392,1801,1.128,1808,2.66,1891,1.269,1931,1.951,1952,1.189,2081,0.999,2083,3.93,2288,1.036,2294,1.063,2325,1.302,2335,2.996,2336,1.269,2337,1.438,2338,1.34,2339,1.594,2340,1.438,2341,1.34,2342,1.189,2343,3.122,2344,2.97,2345,1.594,2346,1.128,2347,1.848,2348,2.325,2349,1.34,2350,1.167,2351,1.594,2352,1.302,2353,1.594,2354,1.302,2355,2.845,2356,1.594,2357,2.845,2358,1.594,2359,1.011,2360,1.385,2361,1.128,2362,1.385,2363,2.566,2364,1.729,2365,3.852,2366,2.845,2367,2.165,2368,1.385,2369,1.594,2370,1.594,2371,1.729,2372,1.729,2373,1.594,2374,1.385,2375,4.521,2376,1.594,2377,3.087,2378,1.036]],["component/41",[2,0.4]],["title/42-1",[2379,80.094]],["name/42-1",[]],["text/42-1",[]],["component/42-1",[]],["title/42-2",[112,35.963]],["name/42-2",[]],["text/42-2",[]],["component/42-2",[]],["title/42-3",[216,45.902]],["name/42-3",[]],["text/42-3",[]],["component/42-3",[]],["title/42",[174,25.897,606,36.29]],["name/42",[1,1.532]],["text/42",[2,1.792,19,5.303,52,3.374,100,5.539,112,4.18,148,2.906,174,4.282,215,6.899,216,5.335,222,5.288,225,8.033,289,4.274,308,2.893,515,6.042,606,6.001,820,4.47,1104,4.407,1378,4.505]],["component/42",[2,0.4]],["title/43-1",[8,11.288,27,16.731,477,24.645,707,27.486,708,29.574,2380,38.854]],["name/43-1",[]],["text/43-1",[]],["component/43-1",[]],["title/43-2",[2,6.743,1104,23.836,1259,23.347,1260,23.347,1450,24.645,1845,25.57]],["name/43-2",[]],["text/43-2",[]],["component/43-2",[]],["title/43",[23,32.675,137,12.754,707,27.486,1259,23.347,1260,23.347,1845,25.57]],["name/43",[707,0.797,1845,0.742,2381,0.876]],["text/43",[2,0.738,4,1.138,8,2.615,14,1.125,15,1.07,20,1.571,23,2.131,25,0.948,27,3.088,36,1.075,41,1.266,56,1.439,61,1.183,83,1.475,102,3.121,106,1.226,112,2.889,119,1.025,127,1.266,128,1.522,130,0.863,131,2.199,132,3.207,137,1.396,140,3.302,142,1.091,156,1.392,165,1.114,170,1.329,172,2.802,192,2.098,194,1.211,207,3.255,215,1.507,218,1.301,222,2.058,244,2.937,245,1.738,271,2.058,276,1.392,281,1.011,290,1.89,295,1.554,298,1.219,299,1.659,300,1.792,311,2.649,320,1.974,325,2.555,326,1.571,346,2.676,399,1.792,458,3.828,469,1.359,473,1.086,474,1.403,481,1.37,492,1.329,494,1.738,496,7.036,507,1.971,539,2.355,565,1.889,575,2.555,598,3.715,645,1.713,667,3.008,692,2.609,693,2.07,707,6.123,732,1.571,736,5.187,742,1.339,749,1.704,752,3.826,785,1.589,789,1.392,791,1.971,800,4.274,802,1.941,819,1.713,832,1.928,846,1.25,847,5.937,858,1.855,867,1.626,902,2.201,926,1.646,964,4.014,965,1.855,981,3.012,1037,2.392,1113,1.792,1224,1.971,1259,2.555,1260,3.302,1378,3.445,1387,2.415,1390,2.97,1405,1.589,1450,2.697,1512,2.201,1550,2.201,1559,1.738,1565,3.113,1612,2.201,1628,2.392,1646,3.475,1652,3.485,1677,1.69,1715,2.07,1722,1.427,1729,2.697,1801,1.792,1818,4.014,1845,5.109,1872,2.07,1884,4.957,1938,1.667,1985,6.267,1998,1.713,2073,2.07,2087,1.855,2253,4.375,2324,1.738,2334,2.534,2367,4.182,2370,2.534,2380,5.494,2382,3.527,2383,2.749,2384,2.749,2385,2.749,2386,2.749,2387,2.749,2388,2.749,2389,2.749,2390,8.497,2391,2.749,2392,2.749,2393,2.749,2394,2.392,2395,4.614,2396,2.749,2397,2.749,2398,2.749,2399,2.749,2400,2.749,2401,6.03,2402,2.749,2403,2.749,2404,2.749,2405,5.187,2406,1.764,2407,2.392,2408,2.749,2409,2.131,2410,2.749,2411,2.392,2412,2.749,2413,2.392,2414,2.749,2415,2.749]],["component/43",[2,0.4]],["title/44",[174,22.038,199,30.396,606,30.883]],["name/44",[1321,2.152]],["text/44",[]],["component/44",[2,0.4]],["title/45",[174,22.038,199,30.396,606,30.883]],["name/45",[1321,2.152]],["text/45",[]],["component/45",[2,0.4]],["title/46-1",[158,26.253,618,34.866,2318,50.723]],["name/46-1",[]],["text/46-1",[]],["component/46-1",[]],["title/46-2",[8,14.216,98,23.685,1323,29.403,1343,38.965]],["name/46-2",[]],["text/46-2",[]],["component/46-2",[]],["title/46-3",[16,20.032,96,29.194]],["name/46-3",[]],["text/46-3",[]],["component/46-3",[]],["title/46-4",[73,22.246,223,28.891]],["name/46-4",[]],["text/46-4",[]],["component/46-4",[]],["title/46-5",[73,22.246,820,28.595]],["name/46-5",[]],["text/46-5",[]],["component/46-5",[]],["title/46-6",[73,22.246,627,37.864]],["name/46-6",[]],["text/46-6",[]],["component/46-6",[]],["title/46",[174,22.038,215,33.451,606,30.883]],["name/46",[1343,2.204]],["text/46",[0,0.91,2,0.347,4,0.899,6,1.023,7,0.419,8,1.902,13,1.311,15,0.845,16,2.613,19,0.556,21,0.885,25,1.723,26,0.524,27,2.188,30,2.029,34,0.615,37,1.228,38,0.913,40,1.227,52,1.633,53,0.531,54,1.662,57,1.09,59,0.595,61,0.505,63,0.581,66,1.393,67,2.018,70,1.228,71,0.599,73,1.17,74,0.664,75,1.704,77,0.403,79,1.439,83,0.376,84,0.657,88,1.915,93,0.924,96,1.802,98,1.683,103,0.473,105,0.987,106,0.969,110,0.615,112,0.486,118,0.581,124,3.229,126,0.483,127,0.541,131,0.56,132,0.632,133,0.743,137,3.868,141,1.317,143,2.402,148,2.648,154,0.514,155,0.62,156,1.099,158,0.505,159,0.626,160,0.604,162,0.595,164,0.59,165,0.476,173,2.21,174,0.784,175,1.712,177,0.703,178,1.065,192,0.764,194,0.518,200,0.703,205,0.464,206,1.642,209,1.837,210,1.688,212,1.318,215,4.223,218,2.826,219,0.842,222,1.351,223,3.308,229,1.284,231,1.124,234,1.368,244,1.274,248,0.913,250,1.253,257,0.541,271,0.524,275,0.793,276,1.099,281,1.387,286,0.62,288,0.599,289,0.644,292,0.59,297,0.473,298,1.342,299,1.357,301,0.545,308,0.806,311,0.4,312,0.862,314,1.509,319,2.573,326,0.4,346,0.975,367,0.963,382,0.541,407,2.037,428,1.974,436,0.754,438,3.415,448,0.65,454,0.604,473,2.177,478,0.824,480,3.396,489,0.977,492,0.568,493,1.439,494,1.373,505,0.664,518,0.599,519,1.958,525,1.05,535,0.664,539,0.599,543,0.722,553,1.894,554,0.615,565,1.544,575,0.65,592,0.581,603,0.56,618,0.671,627,0.62,636,0.862,661,1.974,665,0.754,696,0.754,732,0.671,740,0.595,750,0.585,802,0.494,820,1.208,846,0.534,858,0.793,878,0.842,935,2.472,938,0.732,940,1.943,968,0.824,981,0.455,1082,0.581,1103,0.65,1104,0.664,1119,1.074,1229,2.28,1241,1.599,1253,2.646,1254,2.089,1256,0.885,1262,0.743,1264,1.861,1265,0.657,1283,0.824,1294,0.766,1296,0.808,1313,0.977,1314,3.611,1316,0.754,1333,0.977,1339,0.679,1343,3.67,1354,0.732,1378,2.18,1383,0.885,1390,1.082,1397,0.842,1398,0.91,1408,2.318,1409,0.91,1416,3.849,1427,2.545,1435,0.695,1438,1.255,1449,2.35,1451,0.754,1454,0.824,1466,0.766,1488,0.842,1501,0.599,1516,0.664,1576,0.842,1579,1.203,1624,1.599,1640,0.754,1652,1.269,1680,0.862,1760,1.836,1828,0.91,1840,0.91,1985,0.754,2009,0.977,2045,0.766,2053,0.842,2058,0.743,2071,0.779,2076,0.885,2083,1.215,2102,0.862,2132,2.593,2133,1.439,2140,1.785,2158,0.824,2294,0.722,2337,0.977,2342,0.808,2378,0.703,2416,1.083,2417,1.083,2418,1.083,2419,1.083,2420,1.083,2421,2.791,2422,2.791,2423,1.083,2424,1.083,2425,1.083,2426,1.083,2427,1.083,2428,0.977,2429,1.083,2430,1.083,2431,1.083,2432,1.083,2433,1.083,2434,2.001,2435,1.083,2436,1.083,2437,1.083,2438,1.083,2439,1.083,2440,5.505,2441,3.476,2442,5.442,2443,4.077,2444,1.083,2445,2.001,2446,0.977,2447,1.022,2448,1.083,2449,1.083,2450,0.793,2451,1.022,2452,1.083,2453,1.083,2454,2.001,2455,1.083,2456,1.083,2457,1.083,2458,1.083,2459,1.083,2460,1.083,2461,2.17,2462,1.083,2463,2.001,2464,1.635,2465,2.222,2466,6.232,2467,1.739,2468,1.083,2469,2.001,2470,1.083,2471,2.001,2472,2.791,2473,2.001,2474,1.083,2475,1.083,2476,2.001,2477,0.91,2478,1.083,2479,1.083,2480,1.083,2481,1.083,2482,0.842,2483,1.083,2484,1.083,2485,1.083,2486,1.083,2487,1.083,2488,1.083,2489,2.001,2490,1.083,2491,2.001,2492,1.083,2493,1.083,2494,1.083,2495,1.083,2496,1.083,2497,0.885,2498,1.083,2499,1.523,2500,0.862,2501,1.465,2502,0.91,2503,0.977,2504,0.862,2505,1.805,2506,1.805,2507,2.001,2508,3.476,2509,2.001,2510,2.001,2511,1.083,2512,2.001,2513,2.001,2514,1.805,2515,2.001,2516,2.001,2517,2.001,2518,1.083,2519,1.083,2520,1.683,2521,2.001,2522,2.001,2523,2.001,2524,1.805,2525,1.594,2526,1.083,2527,1.083,2528,2.001,2529,3.476,2530,1.083,2531,2.001,2532,2.001,2533,1.083,2534,1.594,2535,1.083,2536,1.083,2537,1.083,2538,1.083,2539,0.977,2540,0.754,2541,0.842,2542,2.001,2543,1.083,2544,1.083,2545,1.083,2546,1.083]],["component/46",[2,0.4]],["title/47-1",[8,14.216,98,23.685,312,21.071,1323,29.403]],["name/47-1",[]],["text/47-1",[]],["component/47-1",[]],["title/47-2",[73,22.246,223,28.891]],["name/47-2",[]],["text/47-2",[]],["component/47-2",[]],["title/47-3",[73,22.246,820,28.595]],["name/47-3",[]],["text/47-3",[]],["component/47-3",[]],["title/47-4",[73,22.246,627,37.864]],["name/47-4",[]],["text/47-4",[]],["component/47-4",[]],["title/47",[112,25.245,174,22.038,606,30.883]],["name/47",[312,1.192]],["text/47",[2,0.71,4,1.493,5,0.704,6,1.739,7,0.515,8,1.928,13,1.79,14,0.592,15,1.727,16,2.012,19,1.242,20,0.826,25,1.244,26,1.98,27,1.762,28,0.737,30,1.412,34,0.757,36,1.026,38,1.518,41,0.666,44,0.598,45,1.757,52,1.562,53,0.653,54,2.541,57,1.812,59,1.329,61,0.622,66,0.927,67,3.011,68,1.412,73,2.352,75,0.653,77,0.496,79,1.002,88,2.496,89,0.913,95,1.938,96,2.348,98,1.61,103,0.582,105,1.194,106,1.61,107,1.501,109,0.876,112,0.598,116,0.958,124,2.242,126,2.12,130,0.824,131,1.251,137,3.94,141,2.188,147,0.826,148,1.655,158,0.622,159,0.77,160,1.351,162,0.732,163,1.014,164,2.229,165,0.585,168,1.15,171,2.062,173,2.312,175,2.04,177,0.865,185,1.15,191,0.75,192,1.813,194,0.637,200,0.865,205,1.037,209,1.757,210,1.694,212,0.629,218,0.684,223,2.902,228,0.8,229,0.894,231,1.647,248,0.608,250,1.493,254,0.876,271,0.645,281,0.531,289,2.434,291,0.9,292,0.726,297,1.789,298,1.968,299,1.298,301,0.67,308,1.339,310,1.104,311,1.511,312,1.042,313,1.517,314,1.308,315,1.732,319,2.284,320,0.618,382,1.209,407,2.044,438,3.644,446,1.501,454,1.857,467,2.437,469,0.714,473,1.425,474,0.737,480,1.319,487,0.732,492,0.699,518,1.841,519,1.363,522,0.865,525,0.699,527,0.699,553,2.895,565,0.592,566,1.088,573,0.855,575,1.454,584,0.75,585,0.865,588,1.501,592,1.784,594,1.209,603,1.719,604,1.387,606,1.329,627,2.72,692,0.817,732,0.826,740,0.732,742,2.508,795,0.826,820,2.704,823,0.942,843,1.036,846,1.194,851,0.855,913,0.77,935,0.714,938,0.9,940,0.927,947,0.785,948,1.805,981,1.718,1041,0.888,1113,0.942,1119,0.714,1134,2.531,1221,0.726,1249,2.12,1254,2.458,1258,2.04,1264,0.888,1265,2.881,1283,1.014,1314,1.757,1316,1.685,1341,1.036,1342,0.913,1346,1.088,1356,1.412,1405,0.835,1408,0.888,1413,0.661,1416,3.272,1423,0.9,1449,0.9,1451,0.927,1466,0.942,1473,2.509,1490,0.75,1516,0.817,1540,2.392,1549,1.036,1559,1.66,1569,0.699,1578,0.975,1579,0.8,1583,1.036,1624,0.763,1660,1.036,1760,1.592,1779,1.088,1790,1.036,1997,1.06,1998,0.9,2004,0.942,2051,1.636,2058,0.913,2083,2.483,2140,2.1,2205,1.977,2294,1.614,2335,1.036,2409,1.12,2461,1.036,2464,1.977,2465,1.06,2477,1.12,2482,1.036,2497,1.088,2499,1.842,2500,1.06,2501,0.975,2502,1.12,2503,1.201,2504,1.06,2505,1.201,2534,4.627,2539,1.201,2540,1.685,2541,2.586,2547,1.201,2548,1.06,2549,1.332,2550,1.332,2551,1.201,2552,1.12,2553,1.257,2554,1.157,2555,1.201,2556,2.102,2557,1.977,2558,1.201,2559,3.862,2560,1.332,2561,1.332,2562,1.332,2563,1.332,2564,1.977,2565,1.257,2566,2.42,2567,1.201,2568,2.183,2569,2.183,2570,3,2571,1.927,2572,1.157,2573,1.12,2574,1.332,2575,1.332,2576,1.06,2577,2.183,2578,2.183,2579,1.842,2580,1.201,2581,1.201,2582,2.102,2583,1.201,2584,2.889,2585,1.201,2586,1.12,2587,1.332,2588,1.201,2589,1.201,2590,1.088,2591,1.201,2592,1.332,2593,1.201,2594,1.332,2595,1.332,2596,1.332,2597,1.332,2598,1.332,2599,1.201,2600,1.257,2601,1.201,2602,1.332,2603,1.157,2604,1.332,2605,1.201,2606,1.332,2607,1.332,2608,1.332,2609,1.332,2610,1.332,2611,1.332]],["component/47",[2,0.4]],["title/48-1",[8,14.216,98,23.685,1323,29.403,1543,35.824]],["name/48-1",[]],["text/48-1",[]],["component/48-1",[]],["title/48-2",[73,22.246,223,28.891]],["name/48-2",[]],["text/48-2",[]],["component/48-2",[]],["title/48-3",[73,22.246,820,28.595]],["name/48-3",[]],["text/48-3",[]],["component/48-3",[]],["title/48-4",[73,22.246,627,37.864]],["name/48-4",[]],["text/48-4",[]],["component/48-4",[]],["title/48",[174,22.038,216,32.222,606,30.883]],["name/48",[1543,2.026]],["text/48",[2,0.465,4,2.308,5,0.789,6,0.983,8,1.809,13,1.011,15,1.882,16,1.888,19,0.766,26,1.298,27,1.573,36,1.138,38,0.681,41,0.746,44,0.67,45,1.417,48,1.358,53,0.731,54,2.132,55,1.039,57,1.99,59,3.143,61,0.697,67,3.063,68,0.871,73,2.689,75,0.731,79,1.512,84,0.49,88,2.925,92,0.915,95,1.095,96,3.118,105,1.323,106,1.768,107,0.674,118,0.801,124,2.428,126,1.991,130,0.508,131,0.772,137,3.797,141,2.934,147,0.925,149,0.727,156,2.006,159,0.863,160,1.497,163,1.136,164,2.43,165,0.656,168,1.275,171,1.663,173,0.649,175,0.915,185,1.275,191,2.511,192,1.963,205,1.149,210,1.11,218,0.766,223,3.237,228,0.897,229,1.899,231,1.08,234,0.731,247,1.813,248,1.224,254,0.982,271,0.722,276,0.82,279,2.135,281,1.07,289,1.595,290,1.113,291,1.009,299,1.425,311,0.991,320,1.695,326,0.551,407,1.34,438,4.495,446,1.663,454,1.497,467,2.639,469,1.439,475,1.009,480,0.813,487,2.006,492,0.783,502,0.879,505,0.915,518,2.469,519,1.51,525,0.783,527,1.407,553,3.393,566,1.219,573,0.958,575,1.611,585,0.97,588,1.649,592,2.392,594,1.34,603,1.888,604,2.555,606,1.473,627,1.537,732,0.925,740,0.82,742,1.417,755,1.136,795,0.925,820,3.204,823,1.897,843,1.161,851,0.958,871,0.855,947,1.58,948,2.724,981,0.627,1041,0.995,1042,1.188,1119,0.801,1160,1.092,1221,0.813,1241,0.855,1249,0.545,1254,3.089,1258,2.24,1264,2.435,1265,2.217,1314,2.356,1316,2.543,1331,1.219,1341,1.161,1342,1.024,1350,1.409,1354,1.009,1395,0.863,1397,1.161,1413,0.741,1416,1.51,1423,4.509,1451,1.039,1468,0.794,1473,2.735,1516,1.645,1543,4.559,1549,1.161,1559,2.505,1569,1.916,1660,1.161,1722,0.84,1727,0.958,1760,0.982,1780,1.409,1884,1.346,1985,1.867,1997,1.188,2002,1.296,2051,1.009,2083,4.284,2140,1.377,2194,2.33,2205,1.219,2280,1.255,2294,1.788,2335,1.161,2378,0.97,2382,0.958,2409,1.255,2450,1.092,2464,2.191,2497,2.191,2540,3.105,2541,1.161,2551,1.346,2552,1.255,2553,1.409,2554,1.296,2556,2.33,2564,2.984,2565,1.409,2572,1.296,2579,2.78,2582,2.33,2584,3.173,2590,2.191,2600,2.531,2612,2.91,2613,1.113,2614,1.619,2615,1.188,2616,1.619,2617,1.619,2618,4.838,2619,1.619,2620,1.619,2621,1.619,2622,1.619,2623,1.619,2624,2.91,2625,1.619,2626,2.91,2627,1.619,2628,5.577,2629,2.91,2630,2.91,2631,1.619,2632,3.963,2633,3.963,2634,1.619,2635,1.619,2636,1.619,2637,1.619,2638,1.409,2639,2.91,2640,1.619,2641,1.296,2642,2.91,2643,1.497,2644,1.619,2645,6.757,2646,2.91,2647,2.91,2648,2.91,2649,2.91,2650,1.619,2651,2.91,2652,1.409,2653,1.619,2654,2.91,2655,1.219,2656,1.296,2657,1.619,2658,1.409,2659,1.409,2660,1.409,2661,1.409,2662,1.409,2663,1.409,2664,1.409,2665,1.619,2666,1.409,2667,1.619,2668,1.619,2669,1.619,2670,1.492,2671,1.492]],["component/48",[2,0.4]],["title/49",[8,16.335,148,22.742,314,30.396]],["name/49",[8,0.465,314,0.866]],["text/49",[2,1.466,8,1.804,9,3.103,20,3.851,48,3.145,57,4.604,75,3.044,77,3.577,83,3.332,92,3.809,95,2.535,111,4.727,137,2.038,148,4.5,154,4.016,165,3.714,173,2.701,178,3.306,192,2.372,198,3.695,210,2.571,220,3.167,244,2.834,247,4.199,250,2.788,258,3.211,286,3.559,298,2.987,314,6.015,527,3.257,543,4.141,614,5.222,740,3.411,850,4.546,950,5.222,1205,3.986,1420,4.28,1449,5.713,1778,4.199,2045,4.393,2053,4.83,2152,5.222,2291,4.568,2672,8.45]],["component/49",[2,0.4]],["title/50-1",[63,23.237,205,18.558,206,20.464,1626,28.145,2673,34.492]],["name/50-1",[]],["text/50-1",[]],["component/50-1",[]],["title/50-2",[63,35.444,228,39.701]],["name/50-2",[]],["text/50-2",[]],["component/50-2",[]],["title/50-3",[229,24.407,820,28.595]],["name/50-3",[]],["text/50-3",[]],["component/50-3",[]],["title/50-4",[16,24.284]],["name/50-4",[]],["text/50-4",[]],["component/50-4",[]],["title/50-5",[73,22.246,223,28.891]],["name/50-5",[]],["text/50-5",[]],["component/50-5",[]],["title/50-6",[73,22.246,820,28.595]],["name/50-6",[]],["text/50-6",[]],["component/50-6",[]],["title/50",[63,30.162,96,24.844,1626,36.534]],["name/50",[63,0.859,1626,1.041]],["text/50",[2,0.959,3,0.784,4,1.23,5,0.428,6,1.193,7,0.838,8,1.422,10,2.021,11,0.527,13,1.846,14,0.36,15,1.572,16,1.915,17,0.639,19,0.784,20,0.503,25,1.954,26,1.326,27,2.108,28,0.449,30,0.892,34,0.461,36,1.162,38,0.989,39,0.826,40,1.636,41,0.405,45,1.145,46,0.556,48,1.649,52,1.286,53,0.397,54,1.31,56,0.461,57,1.181,58,0.839,59,1.19,61,1.52,63,3.51,67,2.975,68,0.473,71,0.846,73,1.861,74,0.497,75,1.062,76,0.541,77,0.302,79,0.897,83,0.281,87,0.445,88,1.948,89,0.556,93,0.374,95,1.694,96,2.005,98,1.049,99,0.556,102,0.868,105,1.351,106,1.326,107,1.237,109,0.534,111,0.617,112,0.973,119,0.328,123,0.503,124,1.96,126,1.454,130,0.52,131,1.12,132,0.473,137,3.664,140,0.487,141,1.426,142,1.402,143,0.478,147,0.947,148,0.876,154,0.385,155,0.876,157,0.646,158,0.379,159,1.584,161,1.879,162,0.839,163,0.617,164,1.181,165,0.672,168,0.385,171,0.947,173,1.805,174,1.276,175,0.497,185,1.03,191,0.457,192,1.733,198,0.482,205,1.395,206,1.024,207,0.694,210,1.879,212,0.383,217,0.541,218,0.416,222,0.392,223,2.954,224,0.508,228,0.487,229,1.203,230,0.438,231,1.311,234,1.062,243,1.081,244,0.37,248,0.697,249,0.408,250,1.672,254,1.005,258,1.925,267,0.682,271,0.74,276,0.445,281,2.422,288,1.517,289,0.909,291,0.548,297,1.198,298,3.148,299,2.788,301,1.09,308,0.872,310,0.697,311,1.533,312,0.658,313,0.958,314,0.826,319,0.453,320,0.376,326,1.93,327,0.617,346,1.334,367,1.318,382,1.083,407,2.073,438,2.954,446,0.947,454,1.21,458,0.909,467,1.671,469,0.82,474,0.449,480,0.833,487,1.19,492,0.425,495,2.085,496,2.984,502,0.478,505,0.497,518,1.517,519,1.22,522,0.527,527,0.425,536,1.14,540,0.453,541,0.617,553,2.473,558,0.52,565,0.36,566,0.663,573,0.52,575,0.918,584,1.22,585,0.527,588,1.681,592,0.82,594,1.083,603,1.925,604,0.465,606,1.504,623,0.508,627,0.876,628,0.574,634,2.965,641,0.796,656,0.927,677,0.631,679,0.565,696,1.509,712,0.457,731,0.473,732,1.699,742,1.145,756,0.617,770,0.453,771,0.556,773,1.315,795,0.503,820,2.832,823,1.081,832,0.617,833,1.005,843,0.631,846,0.754,851,0.52,868,0.617,882,0.541,908,0.503,913,1.584,935,1.469,947,0.478,948,0.605,981,0.91,1041,0.541,1079,0.663,1113,0.574,1119,0.435,1134,0.617,1160,0.594,1184,0.617,1221,1.181,1241,0.876,1249,1.907,1254,2.493,1258,1.329,1264,0.541,1265,2.26,1280,0.744,1287,1.242,1299,0.661,1307,0.473,1314,1.967,1315,1.12,1316,1.509,1331,0.663,1354,0.548,1373,1.081,1387,1.231,1390,0.438,1392,0.583,1395,0.469,1405,1.359,1406,0.646,1408,4.639,1413,0.403,1416,0.86,1423,2.805,1427,5.093,1437,0.52,1451,0.565,1461,0.876,1468,0.432,1473,1.997,1474,0.583,1490,0.457,1494,0.663,1498,0.646,1501,0.846,1516,0.937,1527,0.574,1528,0.492,1540,1.558,1549,1.188,1559,1.879,1569,0.425,1574,0.541,1578,1.119,1579,0.918,1626,0.527,1637,0.565,1660,0.631,1670,0.565,1727,0.52,1729,0.514,1760,0.534,1779,0.663,1784,0.731,1790,0.631,1801,0.574,1872,0.663,1985,1.064,1998,0.548,2051,0.548,2064,1.217,2081,0.508,2082,0.682,2140,0.416,2194,0.704,2205,1.248,2253,0.646,2272,0.631,2288,2.949,2294,3.264,2335,0.631,2342,0.605,2359,0.514,2378,1.408,2406,0.565,2409,0.682,2450,0.594,2461,0.631,2464,1.248,2465,0.646,2477,0.682,2482,0.631,2497,1.77,2524,1.955,2525,0.646,2534,2.181,2540,1.064,2541,0.631,2548,0.646,2554,0.704,2555,0.731,2556,1.327,2557,0.663,2558,0.731,2559,4.284,2564,1.248,2567,0.731,2568,0.731,2569,0.731,2570,1.378,2572,0.704,2573,0.682,2577,0.731,2578,0.731,2579,1.649,2580,1.378,2581,0.731,2582,1.327,2583,0.731,2584,1.882,2585,1.378,2586,0.682,2588,0.731,2589,0.731,2590,1.248,2591,0.731,2605,0.731,2652,0.765,2655,0.663,2656,0.704,2658,0.765,2659,0.765,2660,0.765,2661,0.765,2662,0.765,2663,0.765,2666,0.765,2670,0.811,2671,0.811,2673,4.402,2674,5.224,2675,1.528,2676,4.895,2677,1.528,2678,0.811,2679,0.811,2680,1.528,2681,3.743,2682,0.731,2683,2.166,2684,1.378,2685,0.583,2686,2.937,2687,0.663,2688,1.528,2689,2.739,2690,1.528,2691,2.739,2692,0.811,2693,0.811,2694,0.811,2695,0.811,2696,0.811,2697,0.811,2698,1.528,2699,0.811,2700,0.811,2701,0.811,2702,1.528,2703,1.528,2704,1.528,2705,1.528,2706,1.528,2707,0.811,2708,0.811,2709,0.811,2710,1.528,2711,0.811,2712,0.765,2713,0.765,2714,0.704,2715,0.631,2716,0.811,2717,0.811,2718,0.811,2719,0.682,2720,0.811,2721,0.811,2722,2.972,2723,0.88,2724,0.88,2725,0.88,2726,0.88,2727,0.811,2728,0.811,2729,0.811,2730,0.731,2731,0.811]],["component/50",[2,0.4]],["title/51",[83,22.92,1585,50.288]],["name/51",[83,0.556,1585,1.219]],["text/51",[25,3.438,83,3.189,336,5.639,785,6.799,846,4.534,1585,6.996,1683,6.049,2338,7.73,2732,9.782]],["component/51",[2,0.4]],["title/52",[83,22.92,1057,49.288]],["name/52",[83,0.556,1057,1.195]],["text/52",[2,1.798,8,2.476,14,3.786,27,3.67,38,3.89,83,2.956,96,3.766,98,4.125,158,3.979,223,3.726,480,4.644,642,8.06,820,3.688,931,6.357,1057,7.731,1361,6.964,1450,5.405]],["component/52",[2,0.4]],["title/53",[83,19.505,414,39.774,2240,50.723]],["name/53",[83,0.556,414,1.133]],["text/53",[]],["component/53",[2,0.4]],["title/54-1",[73,18.931,272,37.494,443,32.222]],["name/54-1",[]],["text/54-1",[]],["component/54-1",[]],["title/54-2",[231,32.25]],["name/54-2",[]],["text/54-2",[]],["component/54-2",[]],["title/54",[83,22.92,1004,52.612]],["name/54",[83,0.556,1004,1.275]],["text/54",[2,1.187,8,2.462,10,1.695,13,2.933,15,1.469,16,1.055,17,2.859,27,1.499,38,3.55,56,3.13,73,3.395,83,1.207,96,3.745,98,2.667,102,1.977,106,1.684,110,1.977,112,2.474,137,3.519,142,1.499,143,2.05,153,1.943,161,2.387,168,1.654,172,1.775,173,1.514,177,2.261,192,1.329,209,1.839,231,2.754,234,2.7,243,2.462,246,1.911,289,2.07,309,3.779,311,2.035,466,2.353,487,3.026,510,2.182,554,1.977,588,1.571,603,1.799,645,3.725,649,2.771,690,3.345,694,2.926,752,2.423,755,2.649,795,2.158,802,1.588,820,2.385,926,2.261,981,3.267,1004,8.959,1038,5.751,1104,2.135,1114,4.838,1120,2.462,1176,7.646,1217,4.633,1249,1.27,1258,2.135,1288,2.113,1312,2.423,1335,3.023,1378,2.182,1384,2.503,1451,2.423,1466,3.897,1501,1.927,1626,2.261,1853,2.548,2291,1.881,2338,4.633,2501,2.548,2732,3.139,2733,4.97,2734,3.139,2735,5.509,2736,5.509,2737,5.509,2738,3.48,2739,3.48,2740,3.776,2741,3.776,2742,2.548,2743,2.926,2744,2.012,2745,3.48,2746,3.48,2747,3.48,2748,5.509,2749,3.48,2750,3.48,2751,3.48,2752,3.48,2753,3.48,2754,3.48,2755,3.48,2756,7.646,2757,3.48,2758,3.48,2759,3.48,2760,3.48,2761,3.48,2762,3.48,2763,3.48,2764,3.48,2765,3.48,2766,3.48,2767,3.48,2768,3.48]],["component/54",[2,0.4]],["title/55-1",[2,9.757,121,33.451,1382,42.794]],["name/55-1",[]],["text/55-1",[]],["component/55-1",[]],["title/55-2",[551,55.772]],["name/55-2",[]],["text/55-2",[]],["component/55-2",[]],["title/55-3",[2769,80.094]],["name/55-3",[]],["text/55-3",[]],["component/55-3",[]],["title/55-4",[121,33.451,174,22.038,2770,50.723]],["name/55-4",[]],["text/55-4",[]],["component/55-4",[]],["title/55-5",[119,26.725,1382,50.288]],["name/55-5",[]],["text/55-5",[]],["component/55-5",[]],["title/55-6",[16,11.78,119,15.716,121,23.116,174,15.229,1380,28.446,2771,32.675]],["name/55-6",[]],["text/55-6",[]],["component/55-6",[]],["title/55-7",[16,10.68,119,14.249,120,22.89,121,20.958,174,13.808,1380,25.79,1528,21.385]],["name/55-7",[]],["text/55-7",[]],["component/55-7",[]],["title/55-8",[1381,48.371,1382,50.288]],["name/55-8",[]],["text/55-8",[]],["component/55-8",[]],["title/55-9",[16,11.78,121,23.116,174,15.229,1380,28.446,1381,28.446,2771,32.675]],["name/55-9",[]],["text/55-9",[]],["component/55-9",[]],["title/55-10",[16,10.68,120,22.89,121,20.958,174,13.808,1380,25.79,1381,25.79,1528,21.385]],["name/55-10",[]],["text/55-10",[]],["component/55-10",[]],["title/55-11",[2772,59.605,2773,59.605]],["name/55-11",[]],["text/55-11",[]],["component/55-11",[]],["title/55-12",[882,44.06,1717,52.612]],["name/55-12",[]],["text/55-12",[]],["component/55-12",[]],["title/55",[83,22.92,121,39.308]],["name/55",[83,0.556,121,0.953]],["text/55",[2,1.069,3,1.103,4,1.659,6,0.428,7,0.452,8,1.678,13,0.441,14,1.918,15,0.494,16,2.598,17,1.246,19,0.6,26,1.04,27,2.487,31,0.717,33,1.678,34,1.22,38,0.534,41,1.074,50,0.689,58,1.18,59,0.642,61,1.003,70,1.318,72,0.689,73,1.945,75,1.053,76,1.433,83,1.034,84,0.384,85,2.813,92,0.717,93,0.54,95,2.183,96,3.015,98,1.442,101,4.257,105,0.577,119,1.967,120,3.16,121,5.431,122,0.769,125,0.618,126,0.522,127,0.584,131,0.605,137,2.023,140,1.791,143,0.689,148,0.473,149,1.8,155,0.67,156,1.18,168,1.021,173,0.935,174,2.787,183,1.347,185,1.021,191,1.678,192,0.447,205,0.92,209,0.618,210,0.889,223,0.511,228,1.291,230,0.632,231,1.2,234,1.811,235,3.283,243,1.52,244,2.637,246,1.637,247,0.79,248,0.981,249,1.081,250,0.525,256,0.78,258,1.111,271,0.566,276,2.372,279,2.373,281,0.857,284,1.828,295,2.984,297,1.888,298,0.562,311,1.365,314,0.632,319,0.653,326,1.365,336,0.717,346,1.451,382,2.887,384,0.983,399,1.52,438,0.97,446,0.725,453,2.144,454,0.653,458,0.696,473,0.92,474,3.199,475,0.79,480,1.171,482,1.363,484,2.573,487,1.637,497,0.676,502,1.266,505,1.828,532,0.89,535,1.828,543,1.987,544,1.332,554,0.664,561,0.89,576,1.936,588,2.608,590,2.044,604,0.67,613,0.909,626,0.802,641,0.609,652,0.71,655,2.401,658,0.696,675,0.841,691,2.268,696,3.387,731,1.739,742,1.575,749,0.861,754,0.827,755,0.89,770,1.2,771,1.473,785,0.733,792,0.76,795,0.725,802,3.365,805,0.76,820,0.93,825,0.827,827,0.827,852,0.802,865,0.79,881,1.055,913,1.723,925,0.841,951,0.89,981,2.043,1091,0.664,1139,0.872,1232,0.955,1241,1.708,1245,6.693,1280,3.591,1301,3.108,1328,0.872,1380,3.914,1381,3.561,1382,6.523,1390,1.611,1392,1.545,1397,0.909,1417,0.637,1428,1.755,1434,0.78,1450,1.89,1451,2.075,1454,0.89,1463,1.573,1468,0.622,1490,0.658,1502,0.983,1528,1.809,1561,1.473,1565,1.573,1569,0.613,1573,0.78,1601,0.856,1639,3.914,1657,0.983,1679,3.161,1717,3.438,1727,0.75,1738,0.856,1795,0.955,1853,1.573,1866,1.807,1903,1.603,1904,0.909,1927,1.603,1940,0.79,1961,1.104,1974,0.909,1989,2.689,2088,0.909,2133,1.545,2140,0.6,2148,1.711,2154,2.223,2329,1.755,2360,1.016,2374,1.866,2375,2.506,2381,0.909,2382,1.379,2406,1.496,2615,0.931,2643,0.653,2734,1.055,2742,0.856,2770,3.334,2771,1.807,2772,1.938,2773,1.938,2774,1.169,2775,1.169,2776,1.169,2777,2.506,2778,1.169,2779,1.169,2780,1.169,2781,1.169,2782,0.931,2783,1.055,2784,0.983,2785,0.983,2786,1.055,2787,4.318,2788,2.98,2789,1.169,2790,1.104,2791,1.055,2792,0.983,2793,6.162,2794,1.169,2795,2.148,2796,1.169,2797,6.162,2798,1.169,2799,1.169,2800,2.148,2801,4.823,2802,1.169,2803,3.696,2804,3.696,2805,2.98,2806,1.169,2807,2.506,2808,2.98,2809,2.148,2810,2.98,2811,2.98,2812,2.98,2813,2.148,2814,2.148,2815,2.148,2816,2.148,2817,2.148,2818,1.807,2819,1.938,2820,4.864,2821,4.864,2822,1.711,2823,2.028,2824,2.148,2825,1.169,2826,1.169,2827,2.148,2828,1.169,2829,1.169,2830,1.169,2831,1.169,2832,1.169,2833,1.169,2834,1.169,2835,1.169,2836,1.169,2837,1.169,2838,1.169,2839,1.169,2840,1.169,2841,1.169,2842,1.169,2843,1.169,2844,1.169,2845,1.169,2846,1.169,2847,1.169,2848,1.169,2849,1.169,2850,1.169,2851,1.169,2852,1.169,2853,1.169,2854,1.169,2855,1.169,2856,1.169,2857,1.055,2858,2.506,2859,1.938,2860,1.169,2861,1.055,2862,1.169,2863,1.169,2864,1.169,2865,1.635,2866,0.983,2867,1.169]],["component/55",[2,0.4]],["title/56-1",[205,24.09,206,26.563,1289,37.494]],["name/56-1",[]],["text/56-1",[]],["component/56-1",[]],["title/56-2",[2,8.492,87,26.877,1289,32.632,1444,36.504]],["name/56-2",[]],["text/56-2",[]],["component/56-2",[]],["title/56-3",[2,7.517,8,12.584,119,17.521,1289,28.885,1444,32.313]],["name/56-3",[]],["text/56-3",[]],["component/56-3",[]],["title/56-4",[85,50.288,87,36.29]],["name/56-4",[]],["text/56-4",[]],["component/56-4",[]],["title/56",[83,22.92,1289,44.06]],["name/56",[83,0.556,1289,1.068]],["text/56",[2,1.499,4,1.419,7,0.694,8,1.864,13,1.924,14,1.404,15,0.758,16,2.867,17,1.77,25,1.182,27,1.361,28,2.345,34,1.02,44,0.806,45,0.949,48,0.909,52,0.843,54,3.067,56,1.795,59,0.986,67,1.255,68,1.048,70,1.101,73,2.16,75,1.549,77,0.669,79,1.309,83,1.77,84,1.39,85,2.406,87,0.986,88,1.484,93,0.829,95,1.29,96,3.059,102,4.398,103,0.785,105,1.559,107,0.81,110,1.02,112,1.901,113,1.079,116,1.291,118,0.963,119,1.713,124,0.848,126,1.412,127,1.58,131,2.638,132,1.048,134,1.509,136,1.068,137,1.39,138,1.068,140,1.079,148,2.352,153,1.002,154,0.853,155,1.029,156,0.986,160,2.365,164,3.169,165,0.789,168,0.853,170,2.221,173,3.368,174,3.166,178,0.956,184,1.079,185,0.853,190,1.09,192,0.686,194,1.511,203,1.197,205,2.186,206,1.493,222,2.469,231,0.723,234,2.5,244,0.819,249,0.903,250,1.419,258,0.928,272,1.197,276,1.736,281,0.716,288,0.994,292,0.978,297,2.231,298,3.086,299,1.233,311,1.564,315,0.935,319,1.002,320,1.467,323,1.25,326,1.168,367,0.863,432,0.853,438,0.81,469,0.963,473,1.354,478,2.406,480,3.773,482,1.139,492,0.942,493,1.291,494,1.231,495,1.366,496,6.023,502,1.862,503,1.139,519,1.011,532,1.366,533,1.197,573,2.029,588,0.81,594,0.897,602,2.236,606,0.986,607,1.152,623,1.126,624,1.366,626,1.231,633,2.314,634,2.517,641,1.646,655,1.166,688,2.005,692,1.101,720,1.619,742,0.949,753,1.559,764,1.231,791,1.396,795,1.113,800,1.396,802,2.655,820,0.777,850,1.314,868,1.366,926,1.166,940,1.25,981,0.754,1006,1.314,1139,2.358,1181,1.166,1221,2.308,1222,1.467,1224,1.396,1241,1.029,1249,2.687,1289,5.918,1294,1.27,1356,2.472,1381,1.314,1420,0.909,1435,1.152,1437,4.725,1438,2.655,1444,7.648,1461,1.029,1501,0.994,1506,1.25,1538,1.619,1646,1.467,1810,1.467,1827,1.509,1840,1.509,1853,1.314,1872,2.583,1909,1.231,1935,1.396,1938,2.787,2048,1.166,2087,1.314,2133,1.291,2179,2.517,2281,1.509,2329,4.752,2342,1.339,2367,1.366,2382,1.152,2407,2.984,2684,2.851,2742,2.314,2786,1.619,2819,1.619,2868,3.161,2869,1.467,2870,1.467,2871,1.795,2872,3.161,2873,1.795,2874,4.235,2875,1.795,2876,1.795,2877,1.795,2878,1.795,2879,5.101,2880,4.235,2881,3.161,2882,1.795,2883,1.795,2884,1.795,2885,1.396,2886,1.795,2887,1.795,2888,1.795,2889,1.795,2890,1.795,2891,1.509,2892,3.161,2893,1.509,2894,3.161,2895,1.795,2896,1.795,2897,3.161,2898,1.795,2899,1.795,2900,1.795,2901,1.795,2902,1.795,2903,1.795,2904,3.161,2905,1.795,2906,1.795,2907,1.795,2908,1.795,2909,1.795]],["component/56",[2,0.4]],["title/57",[83,22.92,1179,55.562]],["name/57",[83,0.556,1179,1.347]],["text/57",[2,1.931,63,5.156,315,5.005,1654,8.471]],["component/57",[2,0.4]],["title/58",[1174,44.671,2910,55.562]],["name/58",[1174,1.083,2910,1.347]],["text/58",[2,1.568,38,4.124,137,2.965,231,3.637,237,6.876,334,6.739,1145,6.614,1174,6.108,2910,7.597,2911,9.802,2912,9.034,2913,9.034,2914,9.034]],["component/58",[2,0.4]],["title/59-1",[79,27.357,295,40.531]],["name/59-1",[]],["text/59-1",[]],["component/59-1",[]],["title/59-2",[244,30.158,802,30.158]],["name/59-2",[]],["text/59-2",[]],["component/59-2",[]],["title/59-3",[234,39.258]],["name/59-3",[]],["text/59-3",[]],["component/59-3",[]],["title/59",[295,26.572,1174,29.286,1259,26.028,1260,26.028,1337,33.69]],["name/59",[1174,1.083,1337,1.246]],["text/59",[2,1.356,8,2.496,10,1.881,13,3.551,16,2.217,20,1.402,27,2.177,36,1.638,37,1.387,38,3.758,41,1.13,57,1.232,59,1.242,63,1.213,70,1.387,75,1.108,77,0.842,79,0.936,88,1.062,92,1.387,93,1.044,103,0.989,112,2.684,124,2.388,125,1.195,126,1.01,128,4.034,137,0.742,144,1.656,148,2.418,156,1.242,159,1.308,168,2.402,174,0.886,178,1.204,190,1.373,199,2.088,205,2.876,210,2.093,231,0.911,234,2.478,243,3.576,244,3.566,246,1.242,248,2.307,275,1.656,276,3.687,291,1.529,292,1.232,295,6.129,297,0.989,311,3.289,320,1.793,323,1.575,326,0.835,336,2.369,473,1.655,477,1.434,497,1.308,565,1.005,573,1.452,576,2.51,603,1.169,645,1.529,652,2.345,690,1.373,707,4.749,708,1.721,751,1.759,752,5.092,754,1.6,765,1.359,802,3.758,833,1.488,839,1.902,846,1.905,867,5.014,908,3.135,935,1.213,1021,1.721,1112,1.902,1158,1.801,1162,1.551,1174,1.529,1232,3.156,1241,3.426,1249,1.41,1259,5.351,1260,5.351,1261,1.902,1280,1.881,1305,1.848,1310,1.452,1337,1.759,1420,1.145,1429,1.6,1450,3.792,1454,1.721,1499,3.371,1509,1.801,1559,6.108,1727,1.452,1729,1.434,1738,2.828,1801,1.6,1845,3.327,2077,1.687,2083,4.742,2173,1.656,2252,4.56,2341,1.902,2359,1.434,2381,3.004,2382,1.452,2401,1.902,2413,2.135,2442,1.801,2504,1.801,2548,4.76,2615,3.075,2743,1.902,2784,3.248,2785,3.248,2818,3.248,2915,2.261,2916,2.261,2917,4.56,2918,3.862,2919,2.261,2920,3.862,2921,2.261,2922,3.862,2923,2.261,2924,2.261,2925,2.261,2926,2.261,2927,2.261,2928,2.261,2929,2.261,2930,2.261,2931,2.261,2932,2.261,2933,2.261,2934,2.261,2935,2.261,2936,2.261,2937,2.261,2938,2.261,2939,2.261,2940,2.261,2941,2.261,2942,2.261,2943,2.261,2944,2.261,2945,2.261,2946,2.261,2947,2.261,2948,2.261,2949,2.261,2950,2.261,2951,1.902,2952,2.261,2953,2.261,2954,3.484,2955,2.261,2956,2.261,2957,2.261,2958,2.261]],["component/59",[2,0.4]],["title/60",[246,43.994]],["name/60",[1,1.532]],["text/60",[]],["component/60",[2,0.4]],["title/61-1",[16,17.047,130,19.142,1249,20.519]],["name/61-1",[]],["text/61-1",[]],["component/61-1",[]],["title/61-2",[1299,34.666]],["name/61-2",[]],["text/61-2",[]],["component/61-2",[]],["title/61",[1521,48.371,1522,50.288]],["name/61",[1521,1.173,1522,1.219]],["text/61",[7,2.388,16,2.552,17,2.581,25,2.309,40,4.209,67,2.452,73,2.079,75,3.026,77,2.299,84,2.026,130,2.865,142,3.624,169,3.748,226,2.658,229,2.281,257,3.085,281,2.463,308,2.486,310,2.818,311,3.109,312,2.658,326,2.281,594,3.085,770,3.447,786,3.447,871,3.538,1280,4.099,1299,2.672,1315,4.352,1413,4.178,1417,4.586,1420,3.127,1521,6.162,1522,7.289,1541,5.007,1808,3.507,2140,4.321,2141,3.637,2291,3.337,2304,5.569,2305,5.569,2643,4.7,2744,3.57,2959,7.593,2960,3.787,2961,3.787,2962,3.787,2963,3.71,2964,3.787,2965,3.673]],["component/61",[2,0.4]],["title/62-1",[1417,30.636,1468,29.934,2966,50.723]],["name/62-1",[]],["text/62-1",[]],["component/62-1",[]],["title/62-2",[16,17.047,130,19.142,1249,20.519]],["name/62-2",[]],["text/62-2",[]],["component/62-2",[]],["title/62-3",[1299,34.666]],["name/62-3",[]],["text/62-3",[]],["component/62-3",[]],["title/62-4",[107,29.827,172,33.691]],["name/62-4",[]],["text/62-4",[]],["component/62-4",[]],["title/62",[38,22.335,165,21.508,992,29.112,1722,27.556]],["name/62",[165,1.216]],["text/62",[4,1.101,5,1.295,6,1.965,7,2.952,8,1.201,10,3.068,13,2.878,16,1.254,17,1.025,25,0.917,26,1.186,33,2.329,36,2.275,37,4.317,38,4.312,40,2.358,48,3.191,54,1.172,59,1.346,66,1.707,67,0.974,73,3.092,74,1.504,77,0.913,84,0.805,96,1.083,110,1.392,119,3.593,124,1.954,130,1.408,137,1.357,141,2.721,142,2.31,143,3.712,149,1.194,155,1.405,162,2.271,165,4.617,166,2.202,169,1.488,172,1.25,190,1.488,214,5.022,223,1.072,226,1.781,229,1.528,231,0.987,234,1.201,248,2.448,257,1.225,272,1.635,281,1.65,285,1.325,291,1.657,297,1.072,308,1.665,310,1.119,311,1.528,312,1.055,326,2.327,367,1.179,432,1.165,438,1.867,469,1.315,481,1.325,497,1.417,506,1.707,558,1.573,561,1.866,565,1.089,590,1.681,594,1.225,641,1.276,642,1.906,656,3.256,679,3.735,731,2.414,749,1.657,770,4.535,786,1.369,802,1.119,825,3.795,857,3.148,871,1.405,913,2.391,992,3.748,1170,5.298,1186,2.061,1249,1.509,1252,1.734,1280,2.014,1299,1.79,1307,3.131,1314,1.295,1315,2.774,1339,1.537,1378,1.537,1387,1.392,1390,2.9,1395,2.391,1413,3.128,1417,2.923,1420,2.094,1457,1.906,1468,1.305,1473,1.504,1479,3.148,1480,2.211,1541,2.46,1722,3.548,1873,4.083,1927,1.828,2031,1.537,2140,2.754,2141,1.444,2291,1.325,2349,2.061,2359,2.623,2361,2.925,2500,3.293,2525,1.952,2643,3.518,2685,4.531,2744,1.417,2951,2.061,2960,1.504,2961,1.504,2962,1.504,2963,1.473,2964,1.504,2965,1.458,2966,3.731,2967,5.364,2968,2.451,2969,2.451,2970,6.3,2971,5.364,2972,1.866,2973,8.309,2974,1.906,2975,4.135,2976,4.135,2977,2.211,2978,2.061,2979,2.451,2980,2.003,2981,2.451,2982,2.451,2983,2.451]],["component/62",[2,0.4]],["title/63-1",[69,32.969,79,17.935,789,23.792,992,25.77,2347,28.145]],["name/63-1",[]],["text/63-1",[]],["component/63-1",[]],["title/63-2",[16,17.047,130,19.142,1249,20.519]],["name/63-2",[]],["text/63-2",[]],["component/63-2",[]],["title/63-3",[43,48.623]],["name/63-3",[]],["text/63-3",[]],["component/63-3",[]],["title/63-4",[1299,34.666]],["name/63-4",[]],["text/63-4",[]],["component/63-4",[]],["title/63-5",[2343,53.413]],["name/63-5",[]],["text/63-5",[]],["component/63-5",[]],["title/63-6",[107,29.827,172,33.691]],["name/63-6",[]],["text/63-6",[]],["component/63-6",[]],["title/63",[1526,63.781]],["name/63",[69,2.106]],["text/63",[6,1.977,7,2.088,8,1.953,9,1.694,10,3.733,16,1.636,17,1.417,25,1.268,36,1.438,37,3.311,38,2.463,40,2.955,43,4.081,50,1.998,51,1.717,53,1.662,54,1.621,67,2.144,69,5.117,73,2.263,77,1.263,79,1.404,84,1.113,87,1.862,95,1.384,128,4.605,130,2.289,137,2.926,142,3.3,149,1.651,154,2.565,169,2.058,174,2.115,178,1.805,185,1.611,226,2.324,229,1.252,244,3.819,248,2.463,250,1.522,257,1.694,258,1.753,276,2.964,281,2.153,292,1.847,308,1.365,310,1.547,311,1.994,312,1.46,325,2.037,326,1.252,473,1.453,588,3.035,594,1.694,645,2.292,770,3.013,786,1.893,789,1.862,792,2.203,802,1.547,871,1.943,992,2.017,1119,2.895,1181,2.203,1249,2.453,1251,2.398,1280,2.628,1288,2.058,1299,1.467,1310,2.176,1315,4.327,1356,1.979,1375,2.231,1387,1.926,1395,1.961,1413,3.338,1417,4.856,1420,2.733,1473,2.08,1490,1.909,1526,2.7,1541,3.211,1569,1.778,1639,2.482,1729,2.15,1931,2.325,2140,2.771,2141,1.998,2291,4.524,2343,2.261,2344,4.264,2347,2.203,2359,2.15,2643,3.013,2744,1.961,2782,2.7,2960,2.08,2961,2.08,2962,2.08,2963,2.037,2964,2.08,2965,2.017,2984,6.914,2985,5.396,2986,3.059,2987,4.297,2988,4.868,2989,6.445,2990,3.059,2991,7.097,2992,2.851,2993,2.7,2994,2.851,2995,3.059,2996,2.58,2997,3.059,2998,5.493,2999,2.7,3000,3.059,3001,3.059]],["component/63",[2,0.4]],["title/64-1",[16,17.047,130,19.142,1249,20.519]],["name/64-1",[]],["text/64-1",[]],["component/64-1",[]],["title/64-2",[1299,34.666]],["name/64-2",[]],["text/64-2",[]],["component/64-2",[]],["title/64",[199,35.719,1172,40.108]],["name/64",[199,0.866,1172,0.972]],["text/64",[7,2.402,16,1.883,17,2.596,25,2.322,40,4.222,67,2.467,73,2.091,77,2.313,84,2.038,88,2.917,119,2.512,130,2.877,142,3.639,169,3.77,199,5.193,226,2.674,229,2.294,257,3.103,281,2.478,308,2.5,310,2.834,311,3.122,312,2.674,326,2.294,594,3.103,786,3.468,871,3.559,1172,5.831,1280,4.116,1299,3.657,1315,4.967,1413,3.083,1417,4.604,1420,3.145,1541,5.027,2140,4.339,2141,3.659,2291,4.568,2643,4.718,2744,3.591,2960,3.809,2961,3.809,2962,3.809,2963,3.731,2964,3.809,2965,3.695,3002,6.21,3003,6.21]],["component/64",[2,0.4]],["title/65-1",[25,21.028,107,25.382,172,28.671]],["name/65-1",[]],["text/65-1",[]],["component/65-1",[]],["title/65",[25,21.028,1172,34.131,1654,42.794]],["name/65",[]],["text/65",[2,1.227,4,1.644,6,2.59,8,2.324,19,1.88,20,2.271,22,2.59,25,4.06,26,3.421,27,2.469,30,2.137,31,3.518,39,1.979,40,4.696,43,2.223,44,1.644,53,3.465,67,2.278,71,2.028,72,2.157,73,2.38,81,2.35,83,2.452,93,2.647,95,1.495,98,3.872,99,2.511,105,1.806,106,1.772,131,1.893,194,2.742,200,2.379,201,2.476,209,1.935,233,2.59,256,2.442,271,1.772,285,1.979,288,2.028,293,2.992,296,2.681,302,2.322,326,2.611,367,1.761,432,1.74,474,2.028,481,1.979,497,2.117,533,3.824,539,2.028,550,2.35,553,1.995,565,1.626,573,2.35,603,1.893,690,2.223,731,2.137,742,1.935,754,2.59,765,2.2,778,2.916,851,2.35,902,6.141,906,2.41,1110,3.947,1172,4.856,1173,3.933,1282,2.511,1299,1.585,1314,1.935,1468,3.763,1474,2.634,1501,2.028,1569,1.921,1597,3.303,1609,3.303,1637,2.55,1654,7.011,1689,2.59,1727,2.35,1880,4.822,2130,2.681,2173,2.681,2296,2.787,2346,6.811,2382,2.35,2520,4.822,2613,2.731,3004,2.992,3005,2.916,3006,3.303,3007,5.734,3008,7.068,3009,3.456,3010,3.456,3011,5.173,3012,3.303,3013,2.379,3014,3.661,3015,2.916,3016,3.303,3017,3.661,3018,3.079,3019,7.068,3020,3.661,3021,3.303,3022,3.661,3023,3.661]],["component/65",[2,0.4]],["title/66-1",[992,47.653]],["name/66-1",[]],["text/66-1",[]],["component/66-1",[]],["title/66-2",[16,17.047,130,19.142,1249,20.519]],["name/66-2",[]],["text/66-2",[]],["component/66-2",[]],["title/66-3",[3013,52.045]],["name/66-3",[]],["text/66-3",[]],["component/66-3",[]],["title/66-4",[25,21.028,107,25.382,172,28.671]],["name/66-4",[]],["text/66-4",[]],["component/66-4",[]],["title/66-5",[13,24.916,749,26.482]],["name/66-5",[]],["text/66-5",[]],["component/66-5",[]],["title/66",[1173,54.939]],["name/66",[1173,1.898]],["text/66",[1,1.988,2,0.762,4,1.612,6,0.964,7,1.698,8,2.128,12,1.229,13,1.354,17,1.1,19,1.843,25,1.642,26,0.707,28,1.457,33,0.823,34,3.207,36,0.62,38,0.667,40,2.703,41,0.73,44,1.182,47,0.974,48,1.333,51,0.74,52,1.236,53,0.716,57,0.796,61,1.229,67,2.909,72,0.861,73,1.478,77,0.544,83,0.507,84,0.48,88,1.236,92,0.896,93,1.215,98,1.274,107,1.188,110,0.83,113,1.581,118,0.784,119,0.591,123,0.906,128,0.878,130,0.896,137,1.853,142,1.546,148,0.591,149,2.138,154,1.251,168,0.694,169,0.887,170,0.766,172,0.745,183,1.65,203,0.974,205,1.127,206,1.696,211,1.002,223,2.215,226,1.546,229,0.972,231,1.445,246,0.803,248,0.667,271,0.707,281,2.253,284,0.896,288,2.431,299,0.57,308,1.06,309,1.002,310,0.667,311,1.326,312,0.629,326,2.434,346,0.712,438,1.981,451,1.318,454,0.816,469,3.744,473,0.626,481,1.423,492,0.766,497,3.265,525,1.38,540,0.816,550,0.938,551,1.832,553,0.796,565,3.1,588,0.66,592,0.784,594,0.73,627,3.236,641,1.87,656,0.887,658,0.869,659,1.136,688,0.927,689,0.962,712,4.598,740,0.803,746,1.136,749,2.03,764,1.002,770,1.469,807,1.002,819,2.968,820,2.662,830,1.051,846,0.721,851,0.938,866,3.239,872,2.374,906,1.732,913,0.845,923,1.229,926,0.949,948,1.09,965,1.927,966,0.974,981,2.128,1082,2.355,1091,2.039,1104,0.896,1110,0.816,1116,1.051,1154,1.034,1172,4.634,1173,5.758,1249,1.602,1252,3.994,1280,1.282,1286,1.229,1287,1.508,1296,1.09,1298,1.07,1307,2.562,1311,1.051,1314,1.391,1315,1.361,1356,0.853,1373,1.034,1375,0.962,1387,3.207,1390,1.423,1395,0.845,1413,2.179,1414,1.669,1416,3.463,1449,1.779,1463,3.709,1468,2.337,1490,2.022,1494,1.194,1501,0.809,1502,1.229,1506,1.017,1528,0.887,1531,1.194,1561,1.002,1584,1.194,1612,1.269,1631,1.229,1637,1.017,1683,0.962,1689,1.034,1701,2.095,1707,1.893,1722,2.853,1733,1.269,1788,1.164,1891,1.164,1903,4.588,1940,1.779,2028,2.333,2031,2.251,2075,1.112,2088,1.136,2135,1.927,2139,1.229,2140,1.351,2146,2.095,2158,1.112,2273,1.194,2346,2.539,2361,1.034,2378,0.949,2382,0.938,2643,0.816,2719,1.229,2744,0.845,2972,1.112,2974,1.136,2984,1.318,3004,4.139,3005,1.164,3013,3.292,3024,2.374,3025,5.066,3026,5.066,3027,1.461,3028,2.631,3029,6.59,3030,5.646,3031,2.374,3032,1.461,3033,1.461,3034,1.461,3035,3.239,3036,3.59,3037,1.461,3038,2.631,3039,1.461,3040,1.461,3041,1.461,3042,2.792,3043,1.461,3044,1.461,3045,1.379,3046,2.631,3047,1.461,3048,1.461,3049,1.461,3050,1.461,3051,1.461,3052,2.374,3053,2.631,3054,1.318,3055,1.461,3056,1.461,3057,1.461,3058,1.461,3059,1.318,3060,1.461,3061,1.461,3062,1.461,3063,1.461,3064,1.461,3065,1.461,3066,1.461,3067,1.461,3068,1.461,3069,1.461,3070,1.461,3071,2.631,3072,3.378,3073,2.631,3074,1.461,3075,1.318,3076,0.949,3077,1.318,3078,0.927,3079,1.318,3080,1.755,3081,1.318,3082,1.318,3083,2.374,3084,3.056,3085,1.318,3086,2.374,3087,1.318,3088,2.374,3089,1.318,3090,1.318,3091,0.949,3092,1.318,3093,1.318,3094,1.318,3095,1.318,3096,2.889,3097,1.318,3098,1.318,3099,1.318,3100,1.318,3101,1.318,3102,1.017,3103,1.461,3104,3.586,3105,1.461,3106,2.484,3107,1.461,3108,1.461,3109,1.461,3110,1.461,3111,1.461,3112,1.461,3113,1.461,3114,1.461,3115,1.461,3116,1.461]],["component/66",[2,0.4]],["title/67-1",[16,17.047,130,19.142,1249,20.519]],["name/67-1",[]],["text/67-1",[]],["component/67-1",[]],["title/67",[3117,80.094]],["name/67",[3118,2.767]],["text/67",[]],["component/67",[2,0.4]],["title/68",[3119,67.357]],["name/68",[3119,2.327]],["text/68",[]],["component/68",[2,0.4]],["title/69",[1529,54.939]],["name/69",[1529,1.898]],["text/69",[]],["component/69",[2,0.4]],["title/70-1",[16,17.047,130,19.142,1249,20.519]],["name/70-1",[]],["text/70-1",[]],["component/70-1",[]],["title/70-2",[1299,34.666]],["name/70-2",[]],["text/70-2",[]],["component/70-2",[]],["title/70-3",[13,24.916,749,26.482]],["name/70-3",[]],["text/70-3",[]],["component/70-3",[]],["title/70-4",[73,22.246,326,24.407]],["name/70-4",[]],["text/70-4",[]],["component/70-4",[]],["title/70",[1470,60.964]],["name/70",[1255,1.958]],["text/70",[1,3.755,2,0.596,7,1.329,8,2.604,16,1.653,17,1.436,25,2.536,38,1.568,40,3.393,67,1.364,73,3.381,75,3.784,77,1.279,84,1.127,93,1.585,95,1.402,130,2.628,142,2.92,169,2.085,173,1.494,174,2.658,176,2.064,205,1.472,223,3.682,226,2.348,229,1.269,230,1.857,257,1.716,258,2.819,278,2.562,281,2.176,288,5.398,308,1.383,310,1.568,311,3.111,312,1.479,313,2.154,325,2.064,326,2.505,385,3.686,432,1.632,438,1.55,462,2.806,539,1.902,565,1.526,588,2.461,592,1.842,594,1.716,645,2.322,712,1.934,746,4.241,749,1.377,786,1.918,802,1.568,809,2.888,820,2.934,871,1.968,1110,1.918,1255,3.857,1280,2.656,1287,1.968,1288,2.085,1298,2.514,1299,2.36,1308,2.29,1312,5.376,1315,4.354,1361,2.806,1384,3.922,1390,4.174,1395,4.465,1413,3.833,1414,2.178,1417,2.971,1420,2.761,1450,2.178,1452,2.614,1470,2.614,1490,1.934,1541,3.244,1662,3.098,1873,5.161,2028,2.232,2031,4.252,2140,2.8,2141,2.024,2291,2.948,2294,3.636,2302,4.585,2361,2.43,2534,2.735,2643,3.045,2744,1.986,2960,2.107,2961,2.107,2962,2.107,2963,2.064,2964,2.107,2965,2.043,3005,2.735,3076,2.232,3091,2.232,3096,2.26,3120,3.434,3121,6.117,3122,3.098,3123,4.455,3124,4.919,3125,3.434,3126,3.434,3127,3.434]],["component/70",[2,0.4]],["title/71-1",[16,17.047,130,19.142,1249,20.519]],["name/71-1",[]],["text/71-1",[]],["component/71-1",[]],["title/71-2",[39,43.302]],["name/71-2",[]],["text/71-2",[]],["component/71-2",[]],["title/71-3",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/71-3",[]],["text/71-3",[]],["component/71-3",[]],["title/71-4",[13,24.916,805,42.931]],["name/71-4",[]],["text/71-4",[]],["component/71-4",[]],["title/71-5",[13,24.916,1759,49.288]],["name/71-5",[]],["text/71-5",[]],["component/71-5",[]],["title/71",[1478,58.64]],["name/71",[1478,2.026]],["text/71",[3,2.149,4,1.879,6,2.599,7,0.962,8,2.824,10,2.639,13,3.238,14,1.104,15,1.049,25,2.027,28,3.001,36,1.775,38,1.135,39,3.835,40,2.382,41,1.242,44,1.116,59,1.365,63,1.334,67,3.248,72,1.465,73,2.388,77,0.926,81,2.686,84,0.816,92,2.567,103,1.087,130,2.415,131,1.285,142,1.802,148,1.005,153,1.388,160,1.388,169,1.509,171,1.541,174,1.64,185,1.181,205,1.793,210,2.632,217,3.614,223,1.83,226,1.802,229,0.918,231,1.685,249,1.25,250,1.116,258,2.802,281,3.879,288,4.257,292,2.28,297,1.087,308,1.001,310,1.135,311,2.002,312,1.07,326,0.918,407,1.242,444,3.01,473,1.065,481,2.262,518,1.377,519,1.4,541,1.892,565,1.104,584,1.4,588,2.446,600,1.465,604,1.425,627,3.106,656,1.509,679,1.731,712,2.357,749,2.172,750,1.344,802,2.902,820,3.07,846,2.064,882,1.658,1145,6.285,1170,2.09,1181,3.521,1249,0.907,1280,3.455,1312,2.914,1315,2.164,1336,1.82,1387,4.029,1395,3.676,1405,2.624,1406,1.979,1413,2.69,1416,2.357,1438,1.559,1461,1.425,1478,5.193,1490,3.052,1759,4.742,1760,1.636,1856,1.82,2224,2.243,2288,4.995,2299,2.243,2406,1.731,2685,1.788,2715,3.255,2858,3.519,3128,2.486,3129,2.486,3130,4.889,3131,6.357,3132,2.486,3133,2.486,3134,2.486,3135,2.243,3136,3.775,3137,2.243,3138,2.243,3139,2.243,3140,2.243,3141,2.243,3142,2.243,3143,2.243,3144,3.775,3145,3.775,3146,2.09,3147,2.243,3148,2.243,3149,3.775,3150,2.243,3151,1.933,3152,2.243,3153,2.243,3154,2.243,3155,2.243,3156,2.243,3157,9.492,3158,1.979,3159,2.486,3160,4.185,3161,2.486,3162,4.185,3163,2.486,3164,2.486,3165,2.486,3166,2.486,3167,2.486,3168,4.185,3169,2.486,3170,2.16,3171,2.486,3172,2.486,3173,2.486,3174,2.486,3175,2.486]],["component/71",[2,0.4]],["title/72-1",[1067,55.562,1172,40.108]],["name/72-1",[]],["text/72-1",[]],["component/72-1",[]],["title/72-2",[16,17.047,130,19.142,1249,20.519]],["name/72-2",[]],["text/72-2",[]],["component/72-2",[]],["title/72-3",[3013,52.045]],["name/72-3",[]],["text/72-3",[]],["component/72-3",[]],["title/72-4",[25,21.028,107,25.382,172,28.671]],["name/72-4",[]],["text/72-4",[]],["component/72-4",[]],["title/72-5",[13,24.916,749,26.482]],["name/72-5",[]],["text/72-5",[]],["component/72-5",[]],["title/72",[192,30.59]],["name/72",[3176,2.496]],["text/72",[2,1.069,4,1.337,6,1.781,7,1.152,8,1.412,14,3.157,15,1.257,25,3.143,26,1.441,36,2.062,37,1.827,38,1.359,40,3.124,41,1.488,44,1.337,51,2.462,52,1.399,61,1.391,67,3.111,73,2.985,77,1.109,83,1.033,84,0.978,92,1.827,98,2.353,99,2.043,103,1.302,126,1.33,130,1.655,142,2.652,149,1.45,169,1.808,171,1.847,192,2.352,206,1.407,226,2.652,228,1.789,229,1.1,248,1.359,250,1.337,281,1.939,288,2.692,308,1.199,310,1.359,311,2.275,312,1.282,326,3.274,346,1.45,438,3.209,443,1.707,447,2.371,474,3.411,497,2.811,536,2.222,540,1.663,565,2.736,575,1.789,588,1.344,603,1.54,627,4.488,656,2.951,712,2.737,744,2.142,749,1.194,764,2.043,770,2.714,820,3.39,906,1.96,907,2.504,935,1.598,981,3.29,1082,1.598,1091,1.692,1110,1.663,1127,2.371,1172,3.739,1173,3.334,1249,1.087,1252,2.107,1280,2.367,1287,2.786,1315,1.54,1413,3.058,1414,3.083,1579,1.789,1631,2.504,1640,2.074,1716,2.504,1722,1.677,1760,3.199,1903,3.626,2028,4.619,2031,3.862,2071,2.142,2140,1.529,2146,3.871,2346,2.107,2361,2.107,2382,1.911,2520,4.088,2540,2.074,2573,2.504,2613,4.594,2643,2.714,2744,1.722,2865,2.267,2972,2.267,2987,3.871,3011,2.687,3013,3.158,3052,2.687,3072,1.986,3076,1.935,3077,2.687,3078,1.889,3079,2.687,3080,3.242,3081,2.687,3082,2.687,3083,4.385,3084,4.949,3085,2.687,3086,4.385,3087,2.687,3088,4.385,3089,2.687,3090,2.687,3091,1.935,3092,2.687,3093,2.687,3094,2.687,3095,2.687,3096,4.678,3097,2.687,3098,2.687,3099,2.687,3100,2.687,3101,2.687,3102,2.074,3176,2.687,3177,2.267,3178,2.687,3179,2.687,3180,2.687,3181,2.978,3182,2.687,3183,2.978,3184,2.978,3185,2.978,3186,2.504]],["component/72",[2,0.4]],["title/73-1",[16,17.047,130,19.142,1249,20.519]],["name/73-1",[]],["text/73-1",[]],["component/73-1",[]],["title/73-2",[1299,34.666]],["name/73-2",[]],["text/73-2",[]],["component/73-2",[]],["title/73",[1376,48.371,3187,52.612]],["name/73",[1376,1.173,3187,1.275]],["text/73",[7,2.32,16,1.818,17,2.507,25,2.243,40,4.146,67,2.382,73,2.019,77,2.234,84,1.969,130,2.809,142,4.062,169,3.641,226,2.583,229,2.216,257,2.997,281,2.393,308,2.415,310,2.738,311,3.048,312,2.583,326,3.048,438,3.725,594,2.997,786,3.349,871,3.437,1280,4.019,1299,3.571,1315,4.267,1376,6.906,1413,4.097,1417,4.496,1420,3.038,1530,7.444,1541,4.909,2140,4.237,2141,3.534,2291,3.242,2406,5.746,2643,5.673,2744,3.468,2960,3.679,2961,3.679,2962,3.679,2963,3.604,2964,3.679,2965,3.568,2977,5.411,3187,7.511]],["component/73",[2,0.4]],["title/74-1",[467,41.127]],["name/74-1",[]],["text/74-1",[]],["component/74-1",[]],["title/74",[6,17.93,44,21.971,67,19.437,100,29.112]],["name/74",[1,1.532]],["text/74",[2,1.205,6,3.85,13,3.434,26,4.7,51,3.517,63,3.726,67,3.617,96,2.081,112,2.115,165,3.053,194,2.252,199,3.755,207,3.153,210,1.95,215,2.802,216,2.699,223,3.037,248,2.15,254,4.571,281,4.054,315,3.617,320,2.187,346,3.383,473,2.018,565,2.092,627,3.98,656,2.859,820,3.006,1173,4.764,1258,5.061,1259,4.173,1260,4.173,1295,5.286,1341,3.663,1342,3.23,1372,5.286,1376,5.085,1470,6.931,1473,4.26,1478,5.085,1521,5.085,1526,5.53,1529,4.764,1931,4.764,2350,5.085,2613,3.513,2893,3.961,2973,5.84,3119,5.84,3187,5.53,3188,6.945,3189,5.53,3190,6.945,3191,6.265,3192,6.265,3193,6.945,3194,4.71,3195,6.945,3196,4.71]],["component/74",[2,0.4]],["title/75-1",[16,17.047,130,19.142,1249,20.519]],["name/75-1",[]],["text/75-1",[]],["component/75-1",[]],["title/75-2",[43,48.623]],["name/75-2",[]],["text/75-2",[]],["component/75-2",[]],["title/75-3",[2343,53.413]],["name/75-3",[]],["text/75-3",[]],["component/75-3",[]],["title/75-4",[1808,45.498]],["name/75-4",[]],["text/75-4",[]],["component/75-4",[]],["title/75-5",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/75-5",[]],["text/75-5",[]],["component/75-5",[]],["title/75",[1372,60.964]],["name/75",[3197,2.496]],["text/75",[6,2.084,7,1.402,8,2.511,9,1.049,10,2.77,13,3.617,14,2.123,15,1.529,16,2.281,17,0.878,24,1.288,25,0.785,36,0.89,38,1.654,40,2.5,43,2.901,45,1.109,48,1.063,50,1.237,51,1.063,53,1.776,54,1.004,61,0.98,66,1.462,67,1.439,73,0.707,76,1.4,77,0.782,79,0.869,84,0.689,95,2.866,113,1.261,128,3.417,130,1.936,136,2.155,137,2.47,142,3.24,149,1.765,154,2.703,156,1.153,159,1.214,160,1.172,162,1.153,168,0.998,169,1.274,171,1.302,173,1.576,174,1.42,175,1.288,178,1.118,185,2.272,205,0.899,210,0.869,223,1.584,226,0.904,229,0.775,231,0.845,244,3.63,250,0.943,254,1.381,258,1.085,271,1.754,281,1.907,288,2.647,292,1.144,301,1.056,308,1.924,309,5.455,310,0.958,311,1.766,312,0.904,319,2.023,326,2.101,382,3.208,432,3.051,444,1.51,448,1.261,469,1.126,473,0.899,561,1.598,565,0.932,588,3.397,603,2.471,606,1.99,627,2.076,689,2.384,712,1.182,752,2.523,765,5,770,3.176,792,1.364,802,2.182,815,1.214,820,0.909,935,3.051,1112,1.765,1114,3.381,1119,1.944,1172,2.901,1181,1.364,1249,2.562,1251,1.485,1256,5.245,1280,1.765,1286,1.765,1287,1.203,1288,1.274,1300,6.788,1310,2.325,1315,2.941,1356,1.225,1372,3.638,1375,1.381,1386,1.566,1413,2.824,1417,4.1,1420,1.835,1447,1.765,1468,1.929,1471,1.4,1481,1.715,1490,1.182,1534,1.302,1569,1.901,1639,1.537,1729,1.331,1808,2.715,1845,3.145,1931,2.485,2135,2.652,2291,3.075,2343,1.4,2344,3.032,2359,3.032,2361,1.485,2406,2.523,2782,2.885,2822,1.672,2986,1.894,2987,2.885,2988,1.894,2989,4.783,2990,1.894,2991,5.59,2992,1.765,2993,1.672,2994,1.765,2995,1.894,2996,1.598,2997,1.894,2998,4.647,2999,1.672,3000,1.894,3001,1.894,3042,2.818,3197,1.894,3198,2.099,3199,2.099,3200,2.099,3201,3.623,3202,3.623,3203,2.099,3204,1.598,3205,4.779,3206,1.894,3207,1.894,3208,1.894,3209,7.02,3210,2.099,3211,3.623,3212,2.099,3213,1.765,3214,3.623,3215,2.099,3216,3.623,3217,2.099,3218,2.099]],["component/75",[2,0.4]],["title/76-1",[16,17.047,130,19.142,1249,20.519]],["name/76-1",[]],["text/76-1",[]],["component/76-1",[]],["title/76-2",[1299,34.666]],["name/76-2",[]],["text/76-2",[]],["component/76-2",[]],["title/76-3",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/76-3",[]],["text/76-3",[]],["component/76-3",[]],["title/76-4",[16,20.032,1249,24.113]],["name/76-4",[]],["text/76-4",[]],["component/76-4",[]],["title/76-5",[192,25.234,749,26.482]],["name/76-5",[]],["text/76-5",[]],["component/76-5",[]],["title/76-6",[73,22.246,326,24.407]],["name/76-6",[]],["text/76-6",[]],["component/76-6",[]],["title/76",[3189,63.781]],["name/76",[3189,2.204]],["text/76",[4,1.392,7,1.2,8,2.324,10,1.51,13,3.016,14,1.377,16,2.596,17,1.296,25,1.879,36,2.131,40,3.2,51,1.57,67,1.995,73,2.693,77,1.155,84,1.018,95,1.266,103,2.196,128,3.018,130,2.478,142,3.135,153,2.805,168,1.474,169,1.882,185,1.474,192,1.184,205,1.329,210,2.622,212,2.373,226,1.335,229,1.145,230,1.676,231,1.248,257,1.55,278,2.313,281,2.004,286,1.777,308,1.248,310,1.415,311,1.856,312,1.335,313,1.944,325,1.863,326,2.689,367,1.492,385,3.396,407,1.55,412,2.797,432,1.474,438,1.4,466,2.096,565,1.377,588,3.611,594,1.55,667,2.193,712,3.566,746,3.907,749,3.206,750,1.676,786,1.731,789,3.478,792,2.015,802,1.415,830,2.23,871,1.777,939,2.068,981,1.303,1110,1.731,1249,2.311,1255,2.193,1280,2.447,1287,3.629,1288,1.882,1299,2.174,1307,1.81,1308,2.068,1310,1.99,1315,4.136,1361,5.174,1387,3.597,1395,1.793,1413,4.661,1414,1.967,1417,2.737,1420,2.544,1450,1.967,1452,2.36,1490,1.746,1541,2.988,1931,4.343,2028,2.015,2031,3.97,2081,3.15,2140,2.579,2141,1.827,2291,2.716,2302,4.224,2359,1.967,2367,3.823,2378,2.015,2643,2.805,2744,1.793,2960,1.902,2961,1.902,2962,1.902,2963,1.863,2964,1.902,2965,1.845,3072,2.068,3076,2.015,3078,5.719,3080,2.068,3091,2.015,3096,2.041,3121,7.724,3122,2.797,3123,6.536,3124,4.532,3189,6.369,3219,2.797,3220,3.101,3221,2.694,3222,3.101,3223,3.101,3224,2.412,3225,3.101,3226,2.534,3227,2.36]],["component/76",[2,0.4]],["title/77-1",[16,17.047,130,19.142,1249,20.519]],["name/77-1",[]],["text/77-1",[]],["component/77-1",[]],["title/77-2",[63,35.444,1299,28.595]],["name/77-2",[]],["text/77-2",[]],["component/77-2",[]],["title/77-3",[1299,34.666]],["name/77-3",[]],["text/77-3",[]],["component/77-3",[]],["title/77-4",[63,35.444,64,52.612]],["name/77-4",[]],["text/77-4",[]],["component/77-4",[]],["title/77-5",[1299,34.666]],["name/77-5",[]],["text/77-5",[]],["component/77-5",[]],["title/77-6",[39,43.302]],["name/77-6",[]],["text/77-6",[]],["component/77-6",[]],["title/77-7",[63,35.444,65,47.525]],["name/77-7",[]],["text/77-7",[]],["component/77-7",[]],["title/77-8",[1299,34.666]],["name/77-8",[]],["text/77-8",[]],["component/77-8",[]],["title/77-9",[39,43.302]],["name/77-9",[]],["text/77-9",[]],["component/77-9",[]],["title/77-10",[67,26.244,565,29.349]],["name/77-10",[]],["text/77-10",[]],["component/77-10",[]],["title/77-11",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/77-11",[]],["text/77-11",[]],["component/77-11",[]],["title/77-12",[16,20.032,1249,24.113]],["name/77-12",[]],["text/77-12",[]],["component/77-12",[]],["title/77-13",[192,25.234,749,26.482]],["name/77-13",[]],["text/77-13",[]],["component/77-13",[]],["title/77-14",[1103,39.701,3228,46.739]],["name/77-14",[]],["text/77-14",[]],["component/77-14",[]],["title/77-15",[73,22.246,326,24.407]],["name/77-15",[]],["text/77-15",[]],["component/77-15",[]],["title/77-16",[8,19.195,3229,49.288]],["name/77-16",[]],["text/77-16",[]],["component/77-16",[]],["title/77-17",[231,32.25]],["name/77-17",[]],["text/77-17",[]],["component/77-17",[]],["title/77",[63,35.444,3230,66.069]],["name/77",[63,1.485]],["text/77",[3,0.419,6,0.563,7,0.842,8,2.027,10,1.06,13,3.344,14,2.023,15,1.578,16,1.381,17,0.91,24,1.335,25,1.029,28,0.451,33,1.226,37,1.335,38,1.256,39,2.021,40,2.677,49,1.831,51,1.656,56,0.463,59,0.843,63,4.112,64,1.223,65,1.105,67,1.809,72,0.905,73,2.209,77,0.811,84,0.715,88,0.383,95,0.627,96,1.84,103,0.952,108,0.649,125,0.811,126,0.364,130,1.785,142,4.001,148,0.33,149,0.397,162,0.448,164,0.444,168,0.387,169,1.322,174,1.785,183,2.856,185,1.554,192,0.586,205,1.179,206,0.725,210,1.886,217,2.493,223,2.869,226,1.408,229,1.016,231,1.505,244,2.393,245,3.596,248,0.372,250,1.678,257,1.088,258,3.149,274,0.634,278,0.608,280,0.735,281,3.538,288,3.634,300,1.086,301,1.384,308,0.877,310,0.994,311,1.815,312,0.937,313,3.287,326,1.683,367,0.392,382,0.407,407,0.767,438,3.389,446,1.35,448,0.49,510,2.612,518,0.85,522,0.53,539,0.451,565,0.362,588,3.764,594,1.088,603,0.422,604,0.88,618,0.505,641,0.425,679,0.568,688,0.517,689,0.536,712,2.346,749,1.969,750,1.177,770,2.927,786,1.216,802,0.701,805,0.998,819,3.544,820,1.803,830,1.105,833,0.536,846,1.613,871,1.248,913,0.471,939,0.544,963,2.191,981,0.342,1017,3.529,1091,0.872,1103,2.503,1110,0.455,1162,0.559,1181,2.429,1248,3.909,1249,1.913,1251,2.645,1252,0.577,1253,0.62,1254,0.49,1262,0.559,1263,0.769,1280,1.821,1287,2.387,1288,0.495,1299,1.618,1307,2.659,1308,0.544,1309,0.586,1311,0.586,1312,0.568,1315,2.54,1356,0.476,1387,1.237,1390,1.767,1391,3.144,1392,3.771,1393,1.54,1395,0.471,1405,1.365,1408,6.386,1413,4.14,1414,0.517,1417,2.037,1420,1.103,1427,4.637,1438,0.963,1450,0.517,1456,0.666,1463,1.594,1473,0.942,1490,2.346,1505,1.779,1541,2.224,1607,0.686,1641,0.649,1682,0.649,1708,0.649,1722,0.459,1759,1.146,1856,1.124,2028,1.415,2031,1.365,2081,1.365,2083,1.67,2140,2.139,2141,1.283,2288,4.77,2291,1.177,2362,0.708,2378,0.53,2406,0.568,2643,3.255,2655,0.666,2673,1.734,2681,5.92,2682,1.385,2685,1.105,2686,3.758,2715,2.14,2744,1.259,2822,1.223,2858,2.314,2960,1.335,2961,1.335,2962,1.335,2963,1.308,2964,1.335,2965,1.295,2987,1.734,3042,1.693,3072,0.544,3076,0.998,3078,3.116,3080,0.544,3084,0.568,3091,0.53,3096,0.536,3102,0.568,3135,1.385,3136,2.482,3137,1.385,3138,1.385,3139,1.385,3140,1.385,3141,1.385,3142,1.385,3143,1.385,3144,2.482,3145,2.482,3146,1.291,3147,1.385,3148,1.385,3149,2.482,3150,1.385,3151,1.194,3152,1.385,3153,1.385,3154,1.385,3155,1.385,3156,1.385,3213,0.686,3224,0.634,3226,0.666,3227,0.62,3228,4.481,3231,1.891,3232,0.815,3233,5.242,3234,2.752,3235,2.362,3236,2.362,3237,4.056,3238,0.884,3239,0.815,3240,0.815,3241,0.708,3242,0.884,3243,0.884,3244,0.708,3245,0.815,3246,0.815,3247,1.779,3248,0.815,3249,0.815,3250,0.815,3251,1.536,3252,0.815,3253,1.536,3254,1.536,3255,0.815,3256,0.815,3257,0.815,3258,0.815,3259,0.815,3260,1.536,3261,0.815,3262,0.815,3263,1.536,3264,0.608,3265,0.735,3266,0.686,3267,0.708,3268,0.686,3269,0.815,3270,0.815,3271,0.735,3272,0.815,3273,0.735,3274,0.815,3275,1.536,3276,0.735,3277,0.815,3278,0.815,3279,0.815,3280,0.815,3281,0.815,3282,1.536,3283,0.815,3284,0.815,3285,0.815,3286,0.815,3287,0.815,3288,0.884,3289,0.884,3290,0.884,3291,0.884,3292,0.884,3293,0.815,3294,0.815,3295,0.815,3296,0.815,3297,0.815,3298,0.815,3299,1.536,3300,0.815,3301,0.815,3302,0.815,3303,0.815,3304,0.815,3305,0.815]],["component/77",[2,0.4]],["title/78-1",[16,17.047,130,19.142,1249,20.519]],["name/78-1",[]],["text/78-1",[]],["component/78-1",[]],["title/78-2",[1299,34.666]],["name/78-2",[]],["text/78-2",[]],["component/78-2",[]],["title/78-3",[16,20.032,1249,24.113]],["name/78-3",[]],["text/78-3",[]],["component/78-3",[]],["title/78-4",[36,28.028,867,42.408]],["name/78-4",[]],["text/78-4",[]],["component/78-4",[]],["title/78-5",[707,46.739,3306,66.069]],["name/78-5",[]],["text/78-5",[]],["component/78-5",[]],["title/78-6",[876,50.288,3307,53.988]],["name/78-6",[]],["text/78-6",[]],["component/78-6",[]],["title/78-7",[13,24.916,749,26.482]],["name/78-7",[]],["text/78-7",[]],["component/78-7",[]],["title/78-8",[73,22.246,326,24.407]],["name/78-8",[]],["text/78-8",[]],["component/78-8",[]],["title/78-9",[13,16.335,231,17.441,846,21.366,1259,26.028,1260,26.028]],["name/78-9",[]],["text/78-9",[]],["component/78-9",[]],["title/78-10",[8,19.195,3229,49.288]],["name/78-10",[]],["text/78-10",[]],["component/78-10",[]],["title/78-11",[73,14.584,473,18.558,498,32.313,1259,26.028,1260,26.028]],["name/78-11",[]],["text/78-11",[]],["component/78-11",[]],["title/78-12",[319,27.324,498,36.504,1259,29.403,1260,29.403]],["name/78-12",[]],["text/78-12",[]],["component/78-12",[]],["title/78-13",[2083,40.108,2335,51.389]],["name/78-13",[]],["text/78-13",[]],["component/78-13",[]],["title/78-14",[295,30.018,882,32.632,1259,29.403,1260,29.403]],["name/78-14",[]],["text/78-14",[]],["component/78-14",[]],["title/78-15",[107,22.09,172,24.952,1259,29.403,1260,29.403]],["name/78-15",[]],["text/78-15",[]],["component/78-15",[]],["title/78",[1259,39.701,1260,39.701]],["name/78",[2381,2.152]],["text/78",[2,0.903,4,1.63,6,0.473,7,0.714,8,2.207,10,1.145,13,1.505,14,1.044,15,0.992,16,1.654,17,1.517,18,0.928,19,1.207,25,2.214,26,1.362,27,1.211,28,0.714,31,0.416,33,1.824,34,0.385,36,0.997,38,0.31,40,1.902,41,0.922,44,0.579,47,0.452,48,0.934,50,0.76,51,0.653,52,1.104,53,1.779,55,1.285,56,0.733,58,0.372,61,0.317,66,0.472,67,1.843,68,0.396,70,1.442,71,1.022,72,1.385,73,2.195,76,0.86,77,0.253,83,0.976,84,0.606,87,0.709,88,0.606,93,0.313,95,0.96,96,0.57,98,0.893,102,0.385,103,0.297,106,1.138,107,0.582,110,0.385,112,0.828,113,0.775,119,0.522,126,0.303,128,0.407,130,2.088,137,1.523,142,2.35,148,0.746,149,1.577,158,0.317,162,0.709,166,0.361,168,0.877,169,0.412,172,0.346,173,1.224,185,0.613,191,0.382,192,0.493,194,0.324,200,0.441,205,1.555,206,0.609,207,0.308,210,1.341,214,0.849,218,0.662,222,0.893,223,1.028,225,0.527,226,0.556,227,0.472,228,0.775,229,0.682,230,0.697,231,0.743,235,0.621,244,1.657,246,0.372,248,0.589,249,0.649,250,0.828,257,0.339,258,0.667,260,0.554,266,0.516,268,0.554,275,0.496,281,2.866,284,0.791,286,0.389,291,0.872,292,0.37,293,1.054,295,5.197,297,0.297,298,0.326,299,0.265,301,0.341,302,0.43,308,0.947,310,0.31,311,0.868,312,0.292,315,0.353,319,3.047,320,0.599,324,0.421,325,0.775,326,2.104,346,1.37,367,0.326,376,0.57,413,0.589,432,0.613,438,1.639,443,0.389,446,1.144,458,0.403,462,0.554,466,0.458,467,0.662,469,2.791,473,1.387,477,1.17,479,0.488,481,0.997,497,1.873,498,3.228,503,1.784,511,0.488,527,0.356,535,0.416,540,1.03,552,0.54,553,0.37,558,0.435,562,0.54,563,0.944,565,1.044,570,1.164,576,1.828,578,2.24,584,0.382,585,0.441,592,1.261,594,0.645,598,1.902,600,0.76,604,0.389,613,0.527,618,0.8,622,0.516,627,0.739,645,3.137,651,0.496,654,0.86,656,0.412,667,0.48,675,0.488,688,1.491,707,4.612,708,0.516,712,1.324,731,0.753,739,0.446,742,0.358,749,0.517,750,1.521,751,1.003,752,2.255,753,2.042,765,1.109,771,0.465,773,0.412,785,0.809,786,0.379,789,0.709,794,0.554,798,1.977,802,1.284,807,0.885,815,0.392,819,0.872,820,1.017,833,1.547,846,1.388,847,3.568,851,0.435,852,0.885,857,0.982,858,1.351,861,0.506,865,0.458,867,4.703,871,0.389,876,0.516,878,2.823,882,0.452,894,0.446,908,0.421,918,0.64,934,1.199,939,0.452,951,0.516,961,0.57,965,1.351,967,0.516,977,0.589,980,0.452,981,1.818,1039,1.085,1082,0.364,1083,0.516,1091,0.385,1110,0.379,1116,0.488,1119,0.364,1141,0.57,1142,0.554,1154,0.48,1158,2.89,1174,0.872,1197,0.48,1205,0.435,1224,0.527,1249,2.507,1250,0.527,1251,1.663,1254,1.109,1258,0.791,1259,4.85,1260,4.714,1261,1.977,1280,1.944,1287,1.347,1288,0.412,1298,1.721,1299,0.799,1307,1.372,1308,0.452,1309,0.488,1310,1.184,1311,0.488,1314,0.975,1315,1.216,1328,2.416,1337,1.003,1338,0.612,1341,0.527,1342,0.465,1346,0.554,1354,0.458,1356,0.396,1375,0.849,1383,0.554,1384,0.488,1387,2.458,1390,1.521,1393,1.305,1403,0.589,1413,2.448,1414,0.43,1416,3.207,1417,1.281,1420,0.934,1435,0.435,1437,0.435,1450,1.17,1463,0.944,1471,0.452,1473,1.132,1474,0.488,1492,1.085,1495,0.885,1497,1.121,1499,0.452,1501,0.376,1506,0.472,1512,0.589,1516,0.416,1528,2.203,1541,0.768,1551,0.54,1561,0.465,1569,0.356,1574,0.452,1579,0.775,1586,0.589,1601,0.496,1617,0.57,1627,0.48,1641,1.027,1652,0.43,1689,0.48,1690,0.612,1716,0.57,1722,2.776,1724,1.003,1727,0.828,1783,1.552,1801,0.913,1845,4.167,1853,2.06,1865,1.902,1878,1.508,1883,1.085,1903,0.506,1940,0.458,1952,0.506,2028,1.527,2031,1.157,2048,0.838,2073,0.554,2077,0.506,2083,2.423,2129,0.506,2130,0.944,2140,1.207,2141,0.4,2253,0.54,2259,0.612,2291,0.697,2325,0.554,2335,1.435,2341,3.639,2347,0.838,2354,0.554,2359,0.43,2360,0.589,2363,1.164,2367,0.516,2373,1.29,2375,0.57,2376,0.678,2378,0.838,2381,2.519,2382,0.435,2390,3.768,2394,1.218,2401,0.57,2405,1.218,2411,0.64,2428,0.612,2499,0.982,2500,0.54,2504,0.54,2525,1.027,2552,1.085,2576,0.54,2613,0.962,2643,2.229,2719,2.366,2742,0.496,2744,0.392,2790,1.218,2791,3.601,2893,0.57,2960,0.416,2961,0.416,2962,0.416,2963,0.407,2964,0.416,2965,0.403,2974,1.828,2998,0.554,3004,1.508,3009,0.64,3015,0.54,3018,0.57,3054,0.612,3072,0.452,3076,0.441,3078,2.745,3080,0.452,3084,0.472,3091,0.441,3096,0.446,3102,0.472,3104,1.054,3106,0.64,3170,0.589,3179,0.612,3186,1.085,3204,0.516,3213,1.085,3224,0.527,3244,0.589,3264,0.506,3307,1.921,3308,1.29,3309,1.29,3310,0.678,3311,0.678,3312,0.678,3313,0.678,3314,1.845,3315,0.678,3316,1.29,3317,1.29,3318,1.29,3319,1.29,3320,1.29,3321,0.678,3322,0.678,3323,0.678,3324,0.678,3325,1.508,3326,1.29,3327,1.121,3328,0.678,3329,1.29,3330,0.678,3331,0.678,3332,1.29,3333,1.29,3334,2.813,3335,1.29,3336,1.29,3337,0.678,3338,1.29,3339,0.678,3340,0.678,3341,1.29,3342,0.678,3343,0.736,3344,0.736,3345,0.678,3346,0.678,3347,0.589,3348,0.678,3349,0.678,3350,0.678,3351,0.57,3352,1.164,3353,0.612,3354,0.678,3355,0.678,3356,0.589,3357,0.678,3358,0.678,3359,0.678,3360,0.678,3361,0.678,3362,0.678,3363,0.736,3364,0.736,3365,0.736,3366,0.736,3367,0.678,3368,0.678,3369,0.736,3370,0.678,3371,0.678,3372,0.736,3373,1.845,3374,1.845,3375,1.845,3376,1.845,3377,0.678,3378,0.678,3379,0.736,3380,1.4,3381,2.002,3382,0.678,3383,0.589,3384,1.845,3385,0.678,3386,0.736,3387,0.736,3388,0.736,3389,0.736,3390,0.736,3391,0.736,3392,0.64,3393,0.736,3394,0.64,3395,0.736,3396,0.736,3397,0.736,3398,0.736,3399,0.736,3400,0.736,3401,0.736,3402,0.736,3403,0.736,3404,0.736,3405,0.736,3406,1.4,3407,0.736,3408,0.612,3409,0.54,3410,0.736,3411,0.678,3412,1.29,3413,0.678,3414,0.612,3415,0.678,3416,0.678,3417,0.678,3418,0.678]],["component/78",[2,0.4]],["title/79-1",[16,17.047,130,19.142,1249,20.519]],["name/79-1",[]],["text/79-1",[]],["component/79-1",[]],["title/79-2",[1299,34.666]],["name/79-2",[]],["text/79-2",[]],["component/79-2",[]],["title/79",[6,17.93,207,22.212,346,23.833,3191,44.145]],["name/79",[6,0.587,346,0.78]],["text/79",[6,3.585,7,2.49,16,1.952,17,2.691,25,2.408,40,4.3,67,2.557,73,2.168,77,2.398,84,2.113,130,2.948,142,3.728,169,3.908,226,2.772,229,2.378,257,3.217,281,2.569,308,2.592,310,2.938,311,3.199,312,2.772,326,2.378,346,4.765,594,3.217,786,3.595,871,3.689,1280,4.217,1299,3.747,1315,4.477,1413,3.196,1417,4.718,1420,3.26,1541,5.151,2140,4.446,2141,3.793,2291,3.48,2643,4.835,2744,3.723,2960,3.949,2961,3.949,2962,3.949,2963,3.868,2964,3.949,2965,3.83]],["component/79",[2,0.4]],["title/80-1",[16,17.047,130,19.142,1249,20.519]],["name/80-1",[]],["text/80-1",[]],["component/80-1",[]],["title/80-2",[1299,34.666]],["name/80-2",[]],["text/80-2",[]],["component/80-2",[]],["title/80-3",[16,17.047,130,19.142,1249,20.519]],["name/80-3",[]],["text/80-3",[]],["component/80-3",[]],["title/80-4",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/80-4",[]],["text/80-4",[]],["component/80-4",[]],["title/80-5",[16,20.032,1249,24.113]],["name/80-5",[]],["text/80-5",[]],["component/80-5",[]],["title/80-6",[192,25.234,749,26.482]],["name/80-6",[]],["text/80-6",[]],["component/80-6",[]],["title/80",[2,9.757,1295,42.794,1299,24.334]],["name/80",[2,0.48]],["text/80",[2,1.518,6,2.395,7,1.679,8,1.899,10,2.114,13,2.964,16,3.424,17,1.815,25,2.444,40,3.845,67,2.596,70,5.366,73,1.462,77,1.617,84,1.425,96,1.918,130,2.978,142,3.385,164,2.365,169,2.635,210,2.706,222,2.101,223,1.898,226,2.814,229,1.604,231,1.748,257,2.169,281,2.608,308,1.748,310,1.981,311,2.904,312,1.869,326,2.414,367,2.088,438,2.95,533,2.895,565,1.928,594,2.169,603,2.245,627,2.488,739,2.857,749,3.506,750,2.347,786,2.424,820,1.879,871,2.488,981,1.823,1249,3.733,1258,2.663,1280,3.183,1295,4.974,1299,2.829,1315,3.379,1390,2.347,1413,3.245,1417,3.561,1420,2.198,1541,3.888,2140,3.356,2141,2.558,2291,2.347,2643,4.884,2744,2.51,2960,2.663,2961,2.663,2962,2.663,2963,2.608,2964,2.663,2965,2.583,2996,3.304,3042,6.114,3231,3.771,3419,4.341,3420,4.341,3421,4.341,3422,4.341,3423,4.341,3424,4.341,3425,4.341]],["component/80",[2,0.4]],["title/81-1",[16,17.047,130,19.142,1249,20.519]],["name/81-1",[]],["text/81-1",[]],["component/81-1",[]],["title/81-2",[1808,45.498]],["name/81-2",[]],["text/81-2",[]],["component/81-2",[]],["title/81-3",[16,20.032,1249,24.113]],["name/81-3",[]],["text/81-3",[]],["component/81-3",[]],["title/81-4",[13,24.916,749,26.482]],["name/81-4",[]],["text/81-4",[]],["component/81-4",[]],["title/81-5",[73,22.246,326,24.407]],["name/81-5",[]],["text/81-5",[]],["component/81-5",[]],["title/81-6",[8,19.195,3229,49.288]],["name/81-6",[]],["text/81-6",[]],["component/81-6",[]],["title/81",[220,33.691,2350,48.371]],["name/81",[2350,2.026]],["text/81",[2,0.483,6,1.019,7,1.778,8,2.194,10,1.355,13,3.518,14,2.041,16,2.289,17,1.163,25,2.824,26,1.346,36,1.18,38,4.596,40,3.319,41,1.39,44,1.249,50,1.639,51,2.327,61,1.299,67,2.709,73,1.547,76,1.855,77,1.036,84,0.913,87,1.528,95,1.135,102,1.58,104,1.937,112,1.249,115,2.273,124,2.171,126,2.052,130,1.565,136,2.734,138,1.655,142,1.979,154,2.184,162,1.528,169,1.688,173,1.999,185,2.184,205,1.192,210,1.152,226,1.979,229,1.027,231,1.85,235,2.211,244,1.27,248,1.27,276,1.528,281,1.834,308,1.12,310,1.27,311,2.519,312,1.198,320,1.291,326,1.698,382,1.39,432,1.322,473,1.969,474,2.545,561,2.117,565,1.235,587,2.036,588,2.075,603,1.438,627,1.594,641,1.448,712,3.841,731,2.682,749,1.842,750,2.484,770,3.279,786,1.553,789,1.528,802,1.27,939,1.855,981,1.168,1082,1.492,1110,2.566,1162,1.908,1249,2.968,1250,2.163,1254,1.671,1280,2.238,1287,3.909,1288,1.688,1307,2.682,1308,1.855,1309,2.001,1310,1.785,1314,1.47,1315,3.037,1342,1.908,1356,1.623,1366,1.744,1393,4.154,1413,4.037,1414,1.764,1416,1.566,1417,3.716,1420,1.409,1534,1.725,1569,1.459,1727,1.785,1738,2.036,1808,3.874,1814,2.339,1931,1.908,1944,2.509,1945,2.509,2028,3.816,2031,3.682,2083,1.688,2157,2.509,2291,1.504,2324,1.908,2347,2.986,2350,5.954,2359,4.79,2361,1.967,2576,2.215,2782,2.215,2792,2.339,2989,3.865,2998,2.273,3072,1.855,3076,1.807,3078,5.917,3080,1.855,3084,1.937,3091,1.807,3096,1.83,3102,1.937,3104,3.755,3206,2.509,3207,2.509,3208,2.509,3224,2.163,3264,2.075,3426,2.781,3427,2.781,3428,2.509,3429,5.872,3430,2.781,3431,2.781,3432,2.509,3433,2.781,3434,2.781,3435,2.781,3436,2.781,3437,2.781,3438,2.781,3439,2.509]],["component/81",[2,0.4]],["title/82-1",[16,13.133,185,20.586,382,21.646,588,19.554,2286,33.69]],["name/82-1",[]],["text/82-1",[]],["component/82-1",[]],["title/82-2",[15,33.811]],["name/82-2",[]],["text/82-2",[]],["component/82-2",[]],["title/82-3",[16,17.047,130,19.142,1249,20.519]],["name/82-3",[]],["text/82-3",[]],["component/82-3",[]],["title/82-4",[1299,34.666]],["name/82-4",[]],["text/82-4",[]],["component/82-4",[]],["title/82-5",[641,41.713]],["name/82-5",[]],["text/82-5",[]],["component/82-5",[]],["title/82-6",[980,53.413]],["name/82-6",[]],["text/82-6",[]],["component/82-6",[]],["title/82-7",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/82-7",[]],["text/82-7",[]],["component/82-7",[]],["title/82-8",[192,25.234,749,26.482]],["name/82-8",[]],["text/82-8",[]],["component/82-8",[]],["title/82-9",[1103,39.701,3228,46.739]],["name/82-9",[]],["text/82-9",[]],["component/82-9",[]],["title/82-10",[73,22.246,326,24.407]],["name/82-10",[]],["text/82-10",[]],["component/82-10",[]],["title/82-11",[8,19.195,3229,49.288]],["name/82-11",[]],["text/82-11",[]],["component/82-11",[]],["title/82-12",[1221,43.644]],["name/82-12",[]],["text/82-12",[]],["component/82-12",[]],["title/82",[315,29.281,3440,53.075,3441,48.845]],["name/82",[315,0.834,3440,1.512]],["text/82",[2,0.646,4,1.517,5,1.146,6,0.433,7,1.007,8,1.264,10,0.301,13,2.794,14,1.156,15,1.099,16,1.699,17,2.152,19,0.317,25,2.448,26,0.821,27,0.508,28,1.664,30,0.689,36,0.262,38,2.829,40,1.485,41,0.309,44,0.761,45,0.327,48,1.318,50,2.385,53,0.579,54,0.565,56,0.963,57,1.181,59,1.191,61,0.551,67,1.728,68,0.361,70,3.157,71,0.342,72,0.364,73,2.024,74,1.04,77,0.23,79,0.489,84,0.203,87,0.649,95,0.482,96,2.274,102,0.351,103,0.948,105,0.836,106,0.572,107,1.175,109,0.407,110,0.351,112,0.973,119,0.25,123,0.732,124,0.558,126,0.276,127,0.309,130,0.738,131,0.32,137,2.583,141,0.407,142,1.294,147,0.383,148,0.686,149,1.814,154,1.03,160,0.345,162,1.43,163,0.47,164,0.337,167,1.473,168,0.294,169,0.375,170,2.569,172,0.315,174,1.92,178,1.386,184,0.371,185,1.924,191,0.955,192,0.994,194,0.565,198,0.703,199,0.334,201,1.146,205,1.115,206,0.558,207,0.536,210,1.078,214,0.407,215,0.703,217,0.412,222,0.572,223,2.251,226,0.934,228,0.371,229,1.376,230,0.334,233,0.437,237,0.899,246,0.339,248,0.282,249,0.594,250,0.761,257,0.309,258,1.121,274,0.918,281,3.14,284,0.724,286,0.677,288,3.799,289,0.703,291,0.418,297,0.27,298,0.568,299,0.461,301,1.512,302,0.392,308,0.249,309,2.317,310,0.282,311,1.248,312,0.266,313,0.388,315,3.493,320,1.006,322,0.481,324,1.614,326,2.478,354,0.52,367,0.297,385,0.418,428,0.437,432,0.806,438,2.323,446,0.732,458,1.29,469,1.163,474,0.342,477,1.906,481,1.172,482,0.392,487,0.931,497,0.357,502,0.696,503,0.749,504,0.445,510,0.388,511,0.445,518,1.871,520,0.445,522,0.402,526,0.368,527,0.324,533,0.412,539,0.342,540,1.211,553,0.643,565,0.525,572,0.537,575,0.371,584,0.348,585,0.402,588,2.091,594,0.59,603,1.346,604,0.354,607,0.397,616,0.492,623,0.388,637,0.47,641,0.322,652,1.029,656,0.717,658,0.368,660,0.445,664,0.918,669,0.43,679,0.822,684,0.481,691,3.728,692,0.379,712,3.031,723,0.537,732,0.383,739,2.223,740,0.339,742,1.968,744,0.445,749,1.043,750,0.334,771,0.424,773,0.375,785,0.74,786,0.947,789,1.191,794,0.505,801,1.291,802,0.539,807,0.424,815,0.357,819,0.418,820,0.267,823,0.437,833,1.978,858,0.452,871,0.354,878,1.686,894,1.978,906,0.407,913,1.954,934,1.409,935,0.91,938,1.146,939,1.446,944,0.849,947,0.364,963,0.94,980,0.412,988,1.026,993,1.813,994,1.026,1000,0.481,1018,0.505,1059,0.505,1082,1.163,1091,0.351,1103,2.432,1110,0.947,1113,0.437,1130,1.265,1132,0.537,1141,0.993,1145,2.727,1154,0.437,1205,0.397,1241,0.677,1248,0.397,1249,1.787,1250,0.481,1251,2.126,1254,0.371,1265,0.375,1280,0.575,1283,1.291,1287,1.492,1288,1.029,1299,1.127,1307,3.508,1308,0.412,1309,0.445,1311,2.912,1312,4.44,1315,2.093,1323,1.019,1328,0.461,1334,0.918,1354,0.418,1356,1.754,1373,0.835,1378,1.063,1384,0.849,1385,0.965,1386,2.779,1387,1.707,1390,0.334,1391,0.993,1393,0.437,1395,1.738,1402,0.537,1405,0.74,1411,0.537,1413,2.672,1414,0.392,1416,0.955,1417,0.924,1420,0.598,1428,2.127,1435,0.397,1438,0.388,1449,3.48,1452,1.65,1456,0.505,1457,0.481,1461,0.354,1462,0.918,1468,0.629,1473,0.724,1481,0.505,1490,1.466,1495,0.81,1501,1.201,1505,0.965,1506,0.43,1531,0.505,1540,0.445,1541,0.703,1556,0.47,1565,0.452,1569,0.324,1573,0.787,1574,1.446,1606,0.505,1624,0.354,1640,0.43,1651,1.065,1652,0.749,1670,0.822,1677,0.412,1683,0.407,1701,0.492,1702,1.823,1713,0.537,1717,0.94,1722,0.665,1729,0.392,1759,2.52,1779,0.505,1790,0.481,1801,0.437,1831,0.537,1845,0.777,1883,1.823,1927,0.461,1940,0.798,1966,0.537,1996,0.537,2028,1.692,2031,1.359,2045,0.437,2047,0.537,2048,0.402,2071,0.445,2081,0.74,2083,1.029,2129,0.461,2130,1.241,2132,0.461,2140,0.871,2141,0.364,2154,4.015,2220,2.189,2272,0.918,2288,2.63,2291,0.334,2296,0.899,2307,0.481,2342,0.461,2347,0.402,2348,0.505,2368,0.537,2378,0.767,2442,0.492,2447,0.583,2461,0.481,2467,0.537,2482,0.481,2557,0.505,2579,0.47,2615,0.492,2641,1.026,2643,0.947,2685,0.445,2687,0.505,2714,0.537,2715,0.918,2744,0.683,2865,0.899,2869,0.505,2885,0.481,2960,0.379,2961,0.379,2962,0.379,2963,0.371,2964,0.379,2965,0.368,2974,0.481,2978,0.993,2980,0.965,3072,0.412,3076,0.767,3078,0.392,3080,0.412,3084,0.43,3091,0.402,3096,0.407,3102,0.43,3123,2.456,3204,0.47,3221,2.611,3226,1.772,3227,0.47,3228,2.39,3241,0.537,3247,0.505,3264,0.461,3307,0.965,3325,0.965,3327,1.026,3347,0.537,3356,0.537,3383,0.537,3408,0.558,3409,0.492,3440,1.601,3442,1.473,3443,0.583,3444,0.505,3445,0.583,3446,0.671,3447,1.601,3448,0.583,3449,0.583,3450,0.583,3451,0.583,3452,2.168,3453,1.115,3454,0.583,3455,0.583,3456,1.115,3457,0.583,3458,1.115,3459,1.026,3460,0.583,3461,0.583,3462,0.583,3463,1.115,3464,0.583,3465,0.583,3466,1.601,3467,1.601,3468,3.516,3469,0.583,3470,0.583,3471,0.583,3472,0.537,3473,0.583,3474,0.583,3475,0.671,3476,0.671,3477,0.558,3478,0.583,3479,0.583,3480,0.583,3481,0.583,3482,0.583,3483,1.115,3484,1.115,3485,0.583,3486,0.583,3487,1.115,3488,0.583,3489,0.583,3490,1.115,3491,0.583,3492,0.583,3493,1.115,3494,0.583,3495,1.115,3496,0.583,3497,0.583,3498,0.583,3499,1.601,3500,1.601,3501,2.457,3502,1.601,3503,1.601,3504,1.601,3505,2.837,3506,1.601,3507,1.115,3508,1.115,3509,0.583,3510,1.115,3511,0.583,3512,1.601,3513,1.065,3514,0.537,3515,0.583,3516,0.583,3517,0.583,3518,0.583,3519,0.583,3520,0.583,3521,0.583,3522,0.583,3523,0.583,3524,0.583,3525,0.537,3526,0.537,3527,4.858,3528,1.065,3529,1.065,3530,1.065,3531,0.583,3532,0.583,3533,0.583,3534,0.583,3535,0.583,3536,0.583,3537,0.558,3538,0.583,3539,0.583,3540,0.583,3541,0.583,3542,0.583,3543,0.583,3544,0.583,3545,0.583,3546,0.583,3547,1.601,3548,0.583,3549,0.583,3550,0.583,3551,0.583,3552,0.583,3553,2.837,3554,0.583,3555,0.583,3556,0.583,3557,0.583,3558,0.583,3559,1.115,3560,0.583,3561,1.601,3562,1.115,3563,1.115,3564,0.583,3565,0.583,3566,2.837,3567,0.583,3568,1.601,3569,2.349,3570,0.583,3571,0.583,3572,1.115,3573,0.583,3574,1.115,3575,1.601,3576,0.583,3577,0.583,3578,1.115,3579,0.583,3580,0.583,3581,0.583,3582,0.583,3583,0.583,3584,0.583,3585,0.583,3586,0.583,3587,0.583,3588,0.583,3589,0.583,3590,0.583,3591,0.583,3592,0.583,3593,0.583,3594,0.583,3595,1.115,3596,0.583,3597,0.583,3598,0.583,3599,0.583,3600,0.583,3601,0.583,3602,0.583,3603,0.583,3604,0.583,3605,0.583,3606,0.583,3607,0.583]],["component/82",[2,0.4]],["title/83-1",[124,31.214,955,52.612]],["name/83-1",[]],["text/83-1",[]],["component/83-1",[]],["title/83-2",[67,26.244,1282,45.318]],["name/83-2",[]],["text/83-2",[]],["component/83-2",[]],["title/83-3",[25,18.301,183,30.683,934,31.796,2096,41.15]],["name/83-3",[]],["text/83-3",[]],["component/83-3",[]],["title/83-4",[16,13.133,185,20.586,382,21.646,588,19.554,2286,33.69]],["name/83-4",[]],["text/83-4",[]],["component/83-4",[]],["title/83-5",[15,33.811]],["name/83-5",[]],["text/83-5",[]],["component/83-5",[]],["title/83-6",[16,17.047,130,19.142,1249,20.519]],["name/83-6",[]],["text/83-6",[]],["component/83-6",[]],["title/83-7",[1299,34.666]],["name/83-7",[]],["text/83-7",[]],["component/83-7",[]],["title/83-8",[641,41.713]],["name/83-8",[]],["text/83-8",[]],["component/83-8",[]],["title/83-9",[980,53.413]],["name/83-9",[]],["text/83-9",[]],["component/83-9",[]],["title/83-10",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/83-10",[]],["text/83-10",[]],["component/83-10",[]],["title/83-11",[192,25.234,749,26.482]],["name/83-11",[]],["text/83-11",[]],["component/83-11",[]],["title/83-12",[1103,39.701,3228,46.739]],["name/83-12",[]],["text/83-12",[]],["component/83-12",[]],["title/83-13",[73,22.246,326,24.407]],["name/83-13",[]],["text/83-13",[]],["component/83-13",[]],["title/83-14",[36,20.758,742,25.858,2135,35.824,3608,44.145]],["name/83-14",[]],["text/83-14",[]],["component/83-14",[]],["title/83-15",[315,34.408,3247,53.988]],["name/83-15",[]],["text/83-15",[]],["component/83-15",[]],["title/83-16",[315,29.281,319,31.395,1416,31.663]],["name/83-16",[]],["text/83-16",[]],["component/83-16",[]],["title/83-17",[319,36.893,653,52.612]],["name/83-17",[]],["text/83-17",[]],["component/83-17",[]],["title/83-18",[319,27.324,1416,27.556,1528,29.705,3609,44.145]],["name/83-18",[]],["text/83-18",[]],["component/83-18",[]],["title/83-19",[319,31.063,487,19.349,1416,19.838,3610,31.78,3611,31.78,3612,31.78]],["name/83-19",[]],["text/83-19",[]],["component/83-19",[]],["title/83-20",[319,24.187,326,16.001,1416,24.393,3613,39.077,3614,43.314]],["name/83-20",[]],["text/83-20",[]],["component/83-20",[]],["title/83-21",[691,37.244,1416,27.556,2499,37.244,3615,44.145]],["name/83-21",[]],["text/83-21",[]],["component/83-21",[]],["title/83-22",[127,24.453,320,22.717,771,33.563,3444,39.985]],["name/83-22",[]],["text/83-22",[]],["component/83-22",[]],["title/83-23",[438,25.382,1373,39.774,3444,45.943]],["name/83-23",[]],["text/83-23",[]],["component/83-23",[]],["title/83-24",[8,19.195,3229,49.288]],["name/83-24",[]],["text/83-24",[]],["component/83-24",[]],["title/83-25",[1221,43.644]],["name/83-25",[]],["text/83-25",[]],["component/83-25",[]],["title/83",[315,34.408,3441,57.399]],["name/83",[315,1.441]],["text/83",[1,0.378,2,0.491,3,0.121,4,0.988,5,0.473,6,0.328,7,1.094,8,1.661,9,0.231,10,0.115,13,1.68,14,1.384,15,0.857,16,1.216,17,2.07,18,0.934,19,2.59,24,0.284,25,1.852,26,0.811,27,0.474,28,0.825,30,0.522,32,0.309,33,0.731,34,1.433,36,0.861,38,1.777,40,0.655,41,1.099,44,0.402,45,0.125,48,1.114,50,1.196,52,0.516,53,0.227,54,0.113,55,0.322,56,0.508,57,0.913,58,0.129,59,0.92,60,0.389,61,0.696,67,1.182,68,0.138,70,2.079,71,1.028,72,0.402,73,1.872,74,0.419,75,0.438,77,0.088,78,0.172,79,0.192,81,0.151,84,0.224,88,0.217,90,0.561,93,0.688,94,0.188,95,0.279,96,2.457,98,0.224,100,0.275,101,0.188,102,0.388,103,0.568,105,0.542,106,0.224,107,0.586,108,0.188,110,0.263,112,0.583,113,0.41,114,0.193,118,0.126,119,0.445,120,0.301,123,0.287,124,0.877,125,0.473,126,0.58,127,2.172,130,0.442,131,0.353,137,3.464,142,0.642,147,0.287,148,0.603,149,1.714,154,0.523,156,0.129,158,0.11,162,0.604,163,0.179,164,0.128,165,0.203,166,0.246,167,0.593,168,0.882,169,0.143,170,1.56,172,0.561,173,0.201,174,1.166,178,1.506,183,0.561,184,0.142,185,1.481,190,0.281,191,0.839,192,1.961,194,0.526,198,0.275,199,0.127,201,0.461,205,0.638,206,0.219,207,0.499,209,0.125,210,1.109,212,1.265,214,0.155,215,0.406,217,0.455,218,0.238,220,1.366,221,0.305,222,0.224,223,1.237,224,0.29,226,0.799,228,0.538,229,1.099,230,0.127,231,0.6,233,0.167,234,0.438,235,1.814,246,0.129,248,0.408,249,0.934,250,0.494,255,0.136,256,0.157,257,0.231,258,1.137,260,0.193,271,0.433,274,0.36,275,0.172,277,0.193,281,2.561,284,0.284,286,0.265,288,2.221,289,0.406,290,0.176,291,0.159,292,0.128,297,0.202,298,0.223,299,0.507,301,0.653,308,0.886,309,1.509,310,0.108,311,0.686,312,0.101,313,0.428,315,3.752,319,4.325,320,1.807,322,0.183,323,0.164,324,1.039,326,2.248,334,0.176,346,0.332,354,0.198,363,0.179,367,0.223,382,0.447,399,0.167,407,0.447,428,0.167,431,0.155,432,1.85,433,0.172,438,2.011,441,0.549,443,0.391,444,0.169,445,0.162,446,0.423,448,0.538,454,0.259,458,0.772,467,0.238,469,1.437,473,0.87,474,0.13,476,0.543,477,0.823,480,0.372,481,0.369,482,0.149,485,0.213,487,2.328,492,0.124,497,1.459,498,0.176,502,0.273,503,0.294,505,0.284,510,0.428,511,0.169,515,0.198,518,0.825,520,0.169,522,0.153,525,0.358,533,0.157,534,0.176,539,0.256,540,0.5,544,0.423,553,0.707,554,0.737,557,0.328,558,0.297,562,0.369,565,0.902,572,1.764,575,0.142,576,0.301,584,0.384,588,1.703,592,0.366,594,0.447,596,0.402,597,0.654,599,0.213,603,0.671,604,0.63,605,0.179,607,0.297,611,0.198,616,0.876,618,0.287,623,0.148,625,0.172,627,0.513,637,0.179,638,1.409,641,0.355,642,0.183,645,0.605,649,0.188,650,0.339,652,0.668,653,0.543,654,0.309,656,0.668,658,0.275,660,0.169,664,0.36,669,0.164,675,2.967,677,0.696,679,0.766,684,0.183,688,0.149,689,0.449,690,0.143,691,2.038,692,0.145,696,0.475,702,0.616,703,1.171,706,0.616,712,1.833,717,0.766,723,0.205,732,0.287,739,1.103,740,0.129,741,0.183,742,1.791,744,0.169,749,0.672,750,0.369,765,0.661,770,0.5,771,2.414,773,0.281,774,0.389,785,0.934,786,1.32,789,2.266,792,0.153,800,0.183,801,0.519,802,0.408,805,0.153,806,0.205,807,0.162,819,0.461,820,0.2,823,0.328,824,0.213,825,0.167,827,0.328,833,0.981,843,0.183,846,0.116,849,0.179,851,0.151,852,0.754,858,0.5,862,0.418,865,0.313,871,0.135,873,0.5,876,0.179,878,1.159,882,0.157,884,0.418,894,1.448,895,0.159,901,0.198,906,0.155,913,1.174,923,0.198,926,0.301,931,0.176,932,0.339,934,0.715,935,0.248,937,0.378,938,1.912,939,1.354,944,0.643,947,0.765,948,1.384,951,0.681,953,0.389,963,0.876,965,0.172,980,0.309,981,1.309,988,0.402,992,0.406,993,2.17,994,0.402,995,1.171,997,0.418,1000,0.855,1005,0.213,1006,0.339,1011,0.198,1018,0.193,1021,0.681,1038,0.198,1039,0.198,1042,0.188,1059,0.193,1082,0.59,1091,1.153,1101,0.176,1103,1.322,1104,0.145,1110,0.614,1113,0.167,1114,0.167,1116,0.491,1119,0.248,1120,0.483,1127,0.188,1130,0.509,1132,0.205,1134,0.519,1141,0.389,1143,0.213,1145,1.227,1151,0.543,1154,0.328,1160,0.172,1166,0.418,1178,0.213,1181,0.443,1186,0.389,1189,0.213,1194,0.418,1197,0.167,1205,0.151,1229,0.193,1241,0.265,1248,0.297,1249,1.032,1250,0.183,1251,0.918,1253,0.681,1254,1.956,1259,0.278,1260,0.142,1264,0.455,1265,0.668,1280,0.225,1283,0.519,1285,0.198,1287,0.744,1288,0.414,1294,0.167,1296,0.176,1298,0.95,1299,0.725,1307,2.408,1308,0.455,1309,0.169,1311,1.335,1312,2.54,1314,0.245,1315,0.96,1322,0.155,1323,0.661,1328,1.641,1334,0.696,1336,0.172,1346,2.431,1354,0.159,1356,0.87,1366,1.164,1373,0.483,1375,0.155,1378,1.273,1384,0.333,1385,0.378,1386,1.25,1387,0.737,1390,0.127,1391,0.389,1392,0.791,1393,0.483,1395,1.272,1402,0.402,1405,1.051,1408,0.733,1411,0.205,1413,1.683,1414,0.294,1416,1.508,1417,0.372,1420,0.119,1428,0.899,1429,0.483,1435,0.151,1437,0.151,1438,0.148,1444,0.176,1445,0.655,1448,0.183,1449,1.598,1450,0.945,1452,2.264,1456,0.193,1457,0.183,1461,0.135,1462,0.36,1468,0.585,1471,0.157,1473,0.419,1481,0.899,1490,1.331,1495,0.468,1497,0.205,1499,0.733,1501,0.609,1505,0.378,1506,0.322,1518,0.213,1519,0.418,1527,0.167,1528,1.017,1531,0.193,1540,0.791,1541,0.275,1555,0.198,1556,0.179,1561,0.318,1565,0.339,1569,0.469,1573,0.733,1574,0.597,1582,0.213,1594,0.188,1595,0.198,1601,0.172,1605,0.213,1606,0.193,1617,0.198,1623,0.157,1624,0.135,1635,0.418,1637,0.164,1639,0.172,1640,0.164,1650,0.213,1651,0.418,1652,0.433,1653,0.213,1660,0.183,1661,0.213,1670,0.322,1673,1.092,1677,0.157,1683,0.724,1689,0.167,1701,1.034,1702,0.752,1707,0.169,1717,0.369,1722,0.944,1734,0.193,1759,1.111,1763,0.222,1771,0.633,1774,0.213,1787,0.205,1788,0.543,1790,0.183,1801,0.328,1827,0.574,1831,0.205,1845,0.305,1880,0.574,1883,0.925,1891,0.188,1909,0.162,1938,0.155,1940,1.373,1966,0.205,1974,0.36,1979,1.225,1983,0.807,1994,0.213,1996,0.593,1997,0.188,2028,0.715,2031,0.561,2045,0.167,2047,0.205,2048,0.843,2059,0.198,2071,0.169,2075,0.681,2081,0.29,2088,0.36,2129,0.176,2130,0.339,2132,0.345,2135,0.172,2138,0.179,2140,0.765,2141,0.139,2147,0.188,2154,1.998,2158,0.352,2173,0.339,2177,0.213,2179,0.369,2220,0.925,2237,0.418,2272,0.36,2273,0.193,2288,1.206,2291,0.25,2296,0.988,2307,0.183,2329,0.193,2342,0.176,2347,0.153,2348,0.193,2349,0.198,2350,0.805,2363,0.418,2368,0.205,2374,0.205,2375,1.092,2378,0.443,2382,0.297,2401,0.389,2406,0.475,2442,0.188,2446,0.616,2461,0.36,2465,0.188,2467,0.402,2482,0.36,2499,0.681,2501,0.172,2502,0.574,2506,0.616,2514,0.213,2557,0.378,2576,0.188,2579,0.519,2593,0.616,2599,0.616,2601,0.616,2613,0.176,2615,0.369,2641,0.955,2643,0.614,2656,0.205,2673,0.369,2685,0.643,2687,0.378,2714,0.205,2715,0.36,2733,0.213,2742,0.339,2744,0.268,2756,0.616,2777,0.389,2807,0.389,2818,0.389,2859,0.213,2865,0.352,2869,0.193,2885,0.855,2917,0.213,2959,0.616,2960,0.145,2961,0.145,2962,0.145,2963,0.142,2964,0.145,2965,0.14,2972,0.179,2974,0.183,2978,0.198,2980,0.378,2992,0.198,3015,0.188,3031,0.213,3059,0.418,3072,0.157,3075,0.213,3076,0.301,3078,0.149,3080,0.157,3084,0.164,3091,0.153,3096,0.155,3102,0.164,3123,1.217,3130,0.418,3151,0.531,3158,0.543,3170,0.402,3177,0.179,3178,0.213,3204,0.179,3221,1.612,3226,0.731,3227,0.179,3228,1.436,3241,0.205,3247,0.193,3264,0.176,3307,0.378,3325,0.378,3327,0.402,3347,2.944,3351,0.389,3352,0.418,3356,0.205,3383,0.205,3392,0.222,3408,0.616,3409,0.712,3428,0.213,3432,0.418,3439,0.213,3441,0.402,3442,0.593,3443,1.752,3444,2.431,3445,0.222,3447,0.437,3448,0.222,3449,0.437,3450,0.222,3451,0.222,3452,1.49,3453,0.437,3454,0.222,3455,0.222,3456,0.437,3457,0.222,3458,0.437,3459,0.402,3460,0.222,3461,0.222,3462,0.222,3463,0.437,3464,0.644,3465,0.222,3466,0.644,3467,0.644,3468,1.582,3469,1.038,3470,0.437,3471,0.437,3472,1.456,3473,0.644,3474,0.222,3477,0.213,3478,0.222,3479,0.437,3480,1.038,3481,1.038,3482,1.038,3483,0.437,3484,0.437,3485,0.437,3486,0.222,3487,0.437,3488,0.437,3489,0.437,3490,0.437,3491,0.437,3492,0.437,3493,0.437,3494,0.644,3495,0.437,3496,0.222,3497,0.222,3498,0.222,3499,1.038,3500,1.038,3501,1.038,3502,0.644,3503,0.644,3504,0.644,3505,1.225,3506,0.644,3507,0.437,3508,0.437,3509,0.222,3510,0.437,3511,0.222,3512,0.644,3513,0.418,3514,0.205,3515,0.222,3516,0.222,3517,0.222,3518,0.222,3519,0.222,3520,0.222,3521,0.222,3522,0.222,3523,0.222,3524,0.222,3525,0.955,3526,1.128,3527,2.382,3528,0.418,3529,0.418,3530,0.616,3531,0.222,3532,0.222,3533,0.222,3534,0.222,3535,0.222,3536,0.222,3537,0.213,3538,0.222,3539,0.222,3540,0.222,3541,0.222,3542,0.222,3543,0.222,3544,0.222,3545,0.222,3546,0.222,3547,0.644,3548,0.222,3549,0.222,3550,1.038,3551,4,3552,0.222,3553,1.225,3554,0.222,3555,0.222,3556,0.222,3557,0.222,3558,0.222,3559,0.844,3560,0.222,3561,1.038,3562,0.644,3563,0.437,3564,0.222,3565,0.222,3566,1.225,3567,0.222,3568,1.038,3569,1.984,3570,0.222,3571,0.222,3572,0.437,3573,0.222,3574,0.437,3575,0.644,3576,0.222,3577,0.222,3578,0.437,3579,0.222,3580,0.222,3581,0.222,3582,0.222,3583,0.222,3584,0.222,3585,0.222,3586,0.222,3587,0.222,3588,0.222,3589,0.222,3590,0.222,3591,0.222,3592,0.222,3593,0.222,3594,0.222,3595,0.437,3596,0.222,3597,0.222,3598,0.222,3599,0.222,3600,0.222,3601,0.222,3602,0.222,3603,0.222,3604,0.222,3605,0.222,3606,0.222,3607,0.222,3608,0.418,3609,0.418,3610,1.512,3611,0.418,3612,0.418,3613,0.213,3615,0.213,3616,0.236,3617,0.236,3618,0.236,3619,0.236,3620,0.463,3621,0.236,3622,0.236,3623,0.236,3624,0.463,3625,0.236,3626,2.2,3627,0.236,3628,1.1,3629,0.236,3630,1.1,3631,0.236,3632,0.682,3633,0.236,3634,0.682,3635,0.616,3636,0.236,3637,0.236,3638,0.236,3639,0.236,3640,0.236,3641,0.236,3642,0.236,3643,0.236,3644,0.463,3645,0.236,3646,0.236,3647,0.236,3648,0.644,3649,0.236,3650,0.236,3651,0.236,3652,0.236,3653,0.222,3654,0.236,3655,0.236,3656,0.256,3657,0.236,3658,0.236,3659,0.236,3660,0.236,3661,0.236,3662,0.463,3663,1.582,3664,1.1,3665,0.236,3666,0.236,3667,0.236,3668,0.463,3669,0.236,3670,0.236,3671,0.236,3672,0.213,3673,0.682,3674,0.236,3675,0.463,3676,0.222,3677,0.236,3678,0.463,3679,0.682,3680,0.895,3681,0.236,3682,0.236,3683,0.236,3684,0.463,3685,0.236,3686,0.236,3687,0.236,3688,0.236,3689,0.236,3690,0.213,3691,0.236,3692,0.236,3693,0.236,3694,0.992,3695,0.236,3696,0.236,3697,0.236,3698,0.213,3699,0.236,3700,0.236,3701,0.236,3702,0.463,3703,0.463,3704,0.463,3705,0.807,3706,0.236,3707,0.463,3708,1.092,3709,0.236,3710,0.236,3711,0.752,3712,0.752,3713,0.682,3714,0.992,3715,0.236,3716,0.682,3717,0.682,3718,0.682,3719,1.298,3720,0.682,3721,0.236,3722,0.682,3723,0.236,3724,0.236,3725,0.682,3726,1.676,3727,0.682,3728,0.682,3729,0.682,3730,0.236,3731,0.236,3732,0.236,3733,0.236,3734,0.236,3735,0.682,3736,0.682,3737,0.682,3738,0.463,3739,0.682,3740,0.895,3741,0.236,3742,0.895,3743,1.1,3744,0.236,3745,0.236,3746,0.895,3747,0.236,3748,0.236,3749,0.236,3750,1.1,3751,1.1,3752,0.213,3753,0.236,3754,0.236,3755,0.236,3756,0.895,3757,0.463,3758,0.236,3759,0.236,3760,0.463,3761,0.463,3762,0.463,3763,0.236,3764,0.236,3765,0.236,3766,0.236,3767,0.198,3768,0.236,3769,0.236,3770,0.236,3771,0.236,3772,0.236,3773,0.236,3774,0.236,3775,0.236,3776,0.236,3777,0.236,3778,0.236,3779,0.236,3780,0.236,3781,0.463,3782,0.236,3783,0.236,3784,0.236,3785,0.236,3786,0.236,3787,0.213,3788,0.682,3789,0.236,3790,0.213,3791,0.236,3792,0.236,3793,0.236,3794,0.236,3795,0.236,3796,0.236,3797,0.213,3798,0.236,3799,0.236,3800,0.236,3801,0.236,3802,0.236,3803,0.236,3804,0.236,3805,0.236,3806,0.236,3807,0.236,3808,0.236,3809,0.236,3810,0.236,3811,0.236,3812,0.236,3813,0.236,3814,0.236,3815,0.236,3816,0.236,3817,0.236,3818,0.236,3819,0.236,3820,0.236,3821,0.236,3822,0.236,3823,0.236,3824,0.236,3825,0.236,3826,0.236,3827,0.236,3828,0.682,3829,0.236,3830,0.236,3831,0.236,3832,0.236,3833,0.463,3834,0.236,3835,0.236,3836,0.236,3837,0.236,3838,0.236,3839,0.236,3840,0.236,3841,0.236,3842,0.236,3843,0.682,3844,0.236,3845,0.205,3846,0.236,3847,0.236,3848,0.236,3849,0.236,3850,0.236,3851,0.236,3852,0.236,3853,0.236,3854,0.236,3855,0.236,3856,0.236,3857,0.236,3858,0.213,3859,0.236,3860,0.236,3861,0.236,3862,0.236,3863,0.236,3864,0.236,3865,0.236,3866,0.236,3867,0.418,3868,0.236,3869,0.418,3870,0.236,3871,0.236,3872,0.236,3873,0.236,3874,0.236,3875,0.236,3876,0.236,3877,0.682,3878,0.236,3879,0.236,3880,0.236,3881,0.463,3882,0.236,3883,0.236,3884,0.236,3885,0.236,3886,0.236,3887,0.222,3888,0.236,3889,0.236,3890,0.236,3891,0.236,3892,0.463,3893,0.463,3894,0.463,3895,0.236,3896,0.236,3897,0.236,3898,0.236,3899,0.236,3900,0.236,3901,0.236,3902,0.236,3903,0.236,3904,0.236,3905,0.236,3906,0.236,3907,0.236,3908,0.236,3909,0.236,3910,0.236,3911,0.236,3912,0.236,3913,0.236,3914,0.236,3915,0.236,3916,0.236,3917,0.236,3918,0.236,3919,0.213,3920,0.236,3921,0.236,3922,0.236,3923,0.236,3924,0.236,3925,0.236,3926,0.236,3927,0.236,3928,0.236,3929,0.236]],["component/83",[2,0.4]],["title/84-1",[16,17.047,130,19.142,1249,20.519]],["name/84-1",[]],["text/84-1",[]],["component/84-1",[]],["title/84-2",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/84-2",[]],["text/84-2",[]],["component/84-2",[]],["title/84-3",[16,20.032,1249,24.113]],["name/84-3",[]],["text/84-3",[]],["component/84-3",[]],["title/84-4",[192,25.234,749,26.482]],["name/84-4",[]],["text/84-4",[]],["component/84-4",[]],["title/84-5",[326,24.407,1258,40.531]],["name/84-5",[]],["text/84-5",[]],["component/84-5",[]],["title/84-6",[1559,54.939]],["name/84-6",[]],["text/84-6",[]],["component/84-6",[]],["title/84-7",[73,22.246,326,24.407]],["name/84-7",[]],["text/84-7",[]],["component/84-7",[]],["title/84-8",[8,19.195,3229,49.288]],["name/84-8",[]],["text/84-8",[]],["component/84-8",[]],["title/84-9",[231,32.25]],["name/84-9",[]],["text/84-9",[]],["component/84-9",[]],["title/84",[1258,49.136]],["name/84",[1258,1.698]],["text/84",[2,0.863,7,1.186,8,2.101,10,1.493,13,2.369,16,2.41,25,2.704,31,1.88,34,1.741,38,2.271,40,2.187,52,2.337,61,1.431,67,3.383,73,2.434,77,1.141,84,1.006,95,1.251,100,1.823,103,2.176,130,1.694,137,1.006,142,2.705,168,1.456,169,1.86,176,1.841,177,1.991,183,3.12,185,1.456,210,2.06,223,3.161,226,2.143,229,1.132,230,1.657,231,1.234,235,1.474,248,1.399,271,1.483,281,3.73,299,1.196,308,1.234,310,1.399,311,2.32,312,1.32,326,3.146,367,1.474,382,1.531,469,2.669,481,1.657,534,2.286,536,2.286,565,1.361,584,1.726,588,1.384,603,1.585,712,3.537,744,2.204,749,2.518,750,1.657,755,3.787,785,3.12,819,2.072,820,2.719,832,2.333,846,1.512,939,2.044,981,2.09,1103,2.99,1110,1.711,1181,1.991,1249,2.639,1254,1.841,1258,5.927,1280,1.493,1287,3.6,1288,1.86,1307,3.666,1308,2.044,1309,2.204,1314,1.619,1315,1.585,1356,1.789,1375,2.017,1376,3.643,1377,4.489,1385,2.504,1386,3.712,1387,3.568,1393,4.443,1395,1.772,1413,3.947,1414,1.944,1427,2.244,1437,3.194,1458,2.765,1559,2.102,1573,2.044,1652,1.944,1677,2.044,1722,1.726,1727,1.967,2028,4.081,2031,3.939,2081,3.12,2378,1.991,2382,3.194,2655,2.504,2743,2.577,2865,3.787,2866,2.577,3072,2.044,3076,1.991,3078,6.128,3080,2.044,3084,2.134,3091,1.991,3096,2.017,3102,2.134,3177,2.333,3227,2.333,3228,2.168,3264,2.286,3930,3.065,3931,4.697,3932,3.065,3933,3.065,3934,3.065,3935,3.065,3936,2.765,3937,3.065,3938,3.065,3939,3.065,3940,3.065,3941,3.065,3942,3.065,3943,3.065,3944,3.065,3945,3.065]],["component/84",[2,0.4]],["title/85-1",[16,17.047,130,19.142,1249,20.519]],["name/85-1",[]],["text/85-1",[]],["component/85-1",[]],["title/85-2",[67,26.244,565,29.349]],["name/85-2",[]],["text/85-2",[]],["component/85-2",[]],["title/85-3",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/85-3",[]],["text/85-3",[]],["component/85-3",[]],["title/85-4",[16,20.032,1249,24.113]],["name/85-4",[]],["text/85-4",[]],["component/85-4",[]],["title/85-5",[192,25.234,749,26.482]],["name/85-5",[]],["text/85-5",[]],["component/85-5",[]],["title/85-6",[1103,39.701,3228,46.739]],["name/85-6",[]],["text/85-6",[]],["component/85-6",[]],["title/85-7",[73,22.246,326,24.407]],["name/85-7",[]],["text/85-7",[]],["component/85-7",[]],["title/85",[96,21.622,977,42.511,3192,44.145,3946,48.932]],["name/85",[3192,2.496]],["text/85",[6,1.226,7,1.295,8,0.972,10,1.63,13,2.869,16,1.62,17,2.233,25,1.998,37,2.053,38,1.528,40,2.93,48,1.695,67,3.303,71,1.854,73,2.984,87,1.838,96,4.109,103,2.336,110,1.901,127,1.673,130,2.59,137,1.099,142,3.816,149,1.63,162,1.838,172,1.707,173,1.456,175,2.053,192,1.278,210,2.76,223,2.336,226,2.3,229,1.236,231,2.151,245,3.664,249,1.684,281,2.131,308,1.348,311,3.071,324,2.076,326,3.436,354,2.815,367,1.61,438,2.411,466,2.263,565,1.487,588,3.009,712,3.754,749,2.672,750,1.81,770,1.869,819,4.507,820,1.449,939,2.232,977,2.908,981,1.406,1095,3.16,1103,2.011,1110,1.869,1249,2.433,1280,1.63,1287,3.82,1288,2.032,1299,2.312,1307,1.954,1308,2.232,1315,1.731,1342,2.296,1387,3.786,1393,2.368,1395,1.936,1413,4.4,1414,2.123,1543,2.451,1722,1.885,2031,4.18,2081,3.35,2083,5.646,2378,2.175,2442,2.665,2643,2.983,2673,2.665,3045,3.16,3072,2.232,3076,4.331,3078,5.899,3080,2.232,3091,2.175,3192,6.864,3224,2.603,3227,2.548,3228,4.715,3231,2.908,3537,3.02,3648,3.16,3931,3.16,3946,3.347,3947,3.632,3948,3.632,3949,3.632,3950,3.632,3951,3.632,3952,3.632,3953,3.632,3954,3.632,3955,5.796,3956,3.632,3957,5.796,3958,3.632,3959,3.632,3960,3.632,3961,3.632,3962,3.632,3963,3.632,3964,3.632,3965,3.632]],["component/85",[2,0.4]],["title/86-1",[606,36.29,2324,45.318]],["name/86-1",[]],["text/86-1",[]],["component/86-1",[]],["title/86-2",[2324,45.318,2344,41.908]],["name/86-2",[]],["text/86-2",[]],["component/86-2",[]],["title/86",[2324,45.318,2344,41.908]],["name/86",[2324,1.099,2344,1.016]],["text/86",[5,1.605,6,1.81,8,1.814,10,1.48,11,1.974,14,1.35,15,2.086,16,0.921,17,1.27,25,3.172,27,1.308,38,3.871,44,1.364,48,1.539,52,1.427,53,3.06,54,1.453,75,1.489,104,3.44,107,1.372,112,1.364,118,1.63,127,3.12,128,2.969,130,2.126,131,1.571,136,1.807,138,1.807,140,1.826,146,2.483,154,1.444,164,1.655,173,1.322,174,1.937,177,1.974,178,1.617,183,3.915,185,1.444,194,2.985,198,1.807,200,1.974,203,2.026,205,1.302,207,3.265,220,2.519,231,1.223,234,3.525,243,2.149,244,3.613,250,2.218,267,2.555,271,1.471,284,1.864,285,1.642,286,2.831,295,1.864,297,1.328,301,2.485,311,2.307,313,3.098,314,2.671,320,1.41,323,2.115,336,1.864,367,1.461,454,2.759,472,2.312,480,1.655,482,1.927,484,4.348,511,2.185,518,3.983,522,1.974,526,1.807,562,2.419,588,2.23,632,2.363,692,1.864,740,2.714,744,2.185,789,1.669,809,2.555,897,2.741,953,2.555,1110,1.696,1119,1.63,1134,2.312,1323,1.826,1390,1.642,1420,2.502,1451,2.115,1466,2.149,1490,1.711,1499,2.026,1527,4.417,1528,2.999,1573,2.026,1618,2.419,1624,1.741,1679,2.224,1697,2.419,1721,2.741,1828,2.555,1903,2.266,1952,2.266,1998,2.054,2154,3.686,2173,2.224,2288,4.057,2324,6.791,2325,4.037,2344,6.427,2347,5.511,2348,6.931,2352,2.483,2450,3.617,2501,2.224,2603,2.639,2783,4.457,2784,4.155,2785,4.155,2801,2.741,2822,3.934,2991,5.728,2993,2.419,2996,2.312,3180,2.741,3698,2.741,3858,2.741,3966,3.038,3967,3.038,3968,3.038,3969,3.038,3970,3.038,3971,4.457,3972,3.038,3973,3.038,3974,3.038,3975,4.941,3976,3.038,3977,3.038,3978,4.941]],["component/86",[2,0.4]],["title/87-1",[802,30.158,3979,59.605]],["name/87-1",[]],["text/87-1",[]],["component/87-1",[]],["title/87",[16,17.047,272,37.494,1590,43.731]],["name/87",[16,0.486,1590,1.246]],["text/87",[2,0.361,6,0.762,7,1.835,8,2.655,13,0.784,14,1.596,15,2.002,16,3.544,17,3.13,18,1.495,19,2.436,20,3.503,24,1.275,25,0.777,26,1.006,27,3.006,30,1.213,44,0.933,48,3.231,51,1.053,52,2.228,54,0.994,55,2.501,56,3.209,57,1.957,61,1.677,73,0.7,79,0.861,88,1.687,95,0.849,96,3.085,103,0.909,105,1.025,106,1.739,107,0.938,118,1.115,124,0.982,131,1.075,132,2.769,133,2.464,137,2.598,142,1.547,147,1.289,148,0.841,149,1.75,154,1.707,157,1.655,160,1.161,162,1.142,164,1.957,165,0.914,171,1.289,172,1.06,178,1.912,190,1.262,191,1.17,206,0.982,211,1.426,217,1.386,226,1.547,228,1.249,229,2.357,231,2.275,248,2.165,257,2.371,289,1.237,292,1.133,296,1.522,297,1.571,299,2.725,300,2.541,301,1.807,310,0.949,311,0.768,312,0.895,313,1.303,314,1.124,315,1.082,325,1.249,326,1.327,346,1.012,382,1.039,407,1.039,438,0.938,445,1.426,474,1.151,502,2.795,505,1.275,506,1.447,526,2.137,539,1.151,565,0.923,575,2.158,594,1.039,597,2.137,604,2.059,641,1.082,656,2.181,658,1.237,661,1.47,713,6.306,717,2.501,731,2.097,740,1.973,742,1.098,802,3.417,807,1.426,812,1.351,833,2.364,846,1.025,864,2.734,865,1.405,913,2.077,935,1.115,1023,1.748,1101,1.551,1102,1.748,1103,1.249,1154,1.47,1184,2.734,1217,1.748,1221,1.133,1242,1.582,1249,0.759,1253,1.582,1262,1.426,1264,1.386,1265,2.181,1314,3.956,1317,1.806,1331,1.698,1384,1.495,1413,1.032,1427,1.522,1435,1.334,1438,2.974,1445,3.473,1448,1.617,1449,1.405,1490,1.17,1498,1.655,1540,1.495,1561,1.426,1590,7.701,1594,1.655,1599,3.241,1607,1.748,1652,3.009,1771,2.541,1845,2.364,1873,1.582,1927,2.68,2070,1.748,2132,3.539,2133,3.412,2138,1.582,2308,1.617,2347,1.351,2354,1.698,2540,2.501,2547,5.755,2643,2.006,2869,1.698,2963,2.158,3409,1.655,3459,1.806,3711,3.021,3712,3.021,3787,1.875,3979,5.096,3980,1.875,3981,1.962,3982,2.078,3983,8.285,3984,1.875,3985,3.592,3986,2.078,3987,2.078,3988,2.078,3989,2.078,3990,3.592,3991,2.078,3992,3.592,3993,3.592,3994,2.078,3995,2.078,3996,2.078,3997,2.078]],["component/87",[2,0.4]],["title/88-1",[3998,67.357]],["name/88-1",[]],["text/88-1",[]],["component/88-1",[]],["title/88-2",[231,32.25]],["name/88-2",[]],["text/88-2",[]],["component/88-2",[]],["title/88",[16,20.032,316,48.371]],["name/88",[16,0.486,316,1.173]],["text/88",[2,0.88,5,2.68,6,1.858,7,1.214,8,0.912,15,2.694,16,3.453,17,2.12,19,1.611,21,2.564,27,3.157,28,1.738,30,1.831,33,2.856,34,1.782,36,1.331,45,1.658,46,4.378,47,2.092,48,2.569,51,3.713,52,2.382,54,1.5,58,1.723,73,1.056,75,1.538,78,2.297,88,1.474,96,3.804,98,2.455,106,1.519,107,2.29,124,1.482,125,1.658,137,3.358,142,1.351,148,1.269,154,1.491,165,2.229,168,1.491,171,1.946,172,1.6,174,1.23,176,1.885,184,1.885,190,3.079,212,1.482,222,1.519,224,1.967,229,1.873,231,2.042,257,3.19,258,1.622,277,2.564,285,1.696,292,3.478,297,2.218,299,2.861,301,2.551,312,2.184,315,2.641,316,4.673,323,3.531,346,3.57,367,1.509,382,1.568,438,2.882,446,1.946,479,2.257,480,1.71,484,2.185,502,2.988,510,1.967,519,1.767,539,1.738,553,1.71,554,1.782,600,2.988,601,2.388,606,1.723,661,2.22,692,1.925,693,2.564,740,1.723,744,2.257,864,2.388,935,1.683,966,2.092,993,3.531,1082,3.933,1102,4.265,1127,4.038,1228,2.831,1241,1.798,1258,1.925,1264,4.257,1293,2.185,1314,2.68,1378,1.967,1403,2.726,1438,3.18,1462,2.44,1468,1.671,1490,1.767,1492,2.639,1573,2.092,1593,2.499,1610,2.831,1652,4.049,1729,1.99,1845,2.065,1909,2.152,1974,2.44,1998,2.121,2045,2.22,2077,2.341,2138,2.388,2156,2.564,2586,2.639,2685,2.257,3018,2.639,3151,2.44,3409,2.499,3442,2.726,3472,2.726,3980,2.831,3984,2.831,3998,6.768,3999,3.138,4000,3.138,4001,3.138,4002,3.138,4003,3.138,4004,3.138,4005,3.138,4006,3.138,4007,3.138,4008,3.138]],["component/88",[2,0.4]],["title/89",[207,36.358]],["name/89",[1,1.532]],["text/89",[]],["component/89",[2,0.4]],["title/90-1",[96,24.844,592,30.162,1091,31.938]],["name/90-1",[]],["text/90-1",[]],["component/90-1",[]],["title/90-2",[149,27.384,1204,48.845,1558,41.943]],["name/90-2",[]],["text/90-2",[]],["component/90-2",[]],["title/90-3",[3,28.87,231,22.638,4009,56.223]],["name/90-3",[]],["text/90-3",[]],["component/90-3",[]],["title/90-4",[3,28.87,16,17.047,231,22.638]],["name/90-4",[]],["text/90-4",[]],["component/90-4",[]],["title/90-5",[4010,71.686,4011,71.686]],["name/90-5",[]],["text/90-5",[]],["component/90-5",[]],["title/90-6",[539,44.355]],["name/90-6",[]],["text/90-6",[]],["component/90-6",[]],["title/90",[96,24.844,592,30.162,1091,31.938]],["name/90",[1558,2.064]],["text/90",[2,0.323,4,2.35,6,1.196,7,0.72,8,1.904,13,0.702,14,0.827,15,1.378,16,1.587,17,1.364,19,1.676,27,2.564,36,1.848,38,0.85,44,0.836,48,1.653,53,1.6,56,2.475,58,2.875,59,1.023,61,0.869,67,0.739,73,0.627,74,1.142,75,0.912,87,1.793,93,0.859,95,2.137,96,3.975,98,0.901,104,1.296,105,0.918,106,4.355,107,0.84,112,1.465,118,0.999,125,2.303,127,1.631,132,1.087,133,1.277,137,3.429,148,0.753,149,2.55,154,0.885,158,0.869,161,1.277,162,1.023,164,3.571,165,0.818,173,0.81,174,0.73,184,1.119,189,1.679,191,1.048,205,1.398,206,0.88,212,0.88,220,0.949,222,1.58,223,3.59,230,1.764,231,2.108,234,2.136,250,0.836,268,1.521,271,1.58,277,1.521,279,5.972,281,2.992,297,1.427,299,1.7,301,0.937,311,1.206,315,1.7,326,0.688,407,1.631,438,2.363,484,1.296,497,1.887,520,3.134,525,1.712,534,1.389,545,1.389,554,1.057,565,0.827,575,1.961,585,1.21,588,1.473,592,1.751,597,4.202,598,2.207,618,1.154,641,0.97,649,2.599,659,1.448,664,1.448,674,2.599,688,1.181,689,1.225,717,2.272,746,2.538,750,1.006,765,1.961,807,3.591,812,1.21,820,0.806,831,1.617,846,0.918,854,1.617,900,1.757,935,0.999,947,1.097,981,2.501,1016,1.417,1091,1.057,1103,1.119,1204,8.314,1249,0.679,1265,4.288,1283,2.484,1293,1.296,1294,1.317,1295,1.417,1314,2.303,1315,2.253,1338,1.679,1356,1.905,1366,4.94,1450,1.181,1461,1.87,1501,1.807,1541,1.108,1550,1.617,1558,6.537,1574,1.241,1579,1.119,1581,1.482,1583,1.448,1590,4.631,1623,1.241,1729,2.07,1733,1.617,1771,3.703,1789,1.757,1934,1.679,1987,1.757,2048,1.21,2058,2.239,2081,2.046,2083,1.13,2087,2.389,2140,1.676,2148,1.482,2273,1.521,2286,2.538,2318,1.679,2340,1.679,2450,1.363,2451,1.757,2641,4.548,2712,5.62,2713,4.113,2951,4.402,2965,1.942,3182,1.679,3204,1.417,3676,3.081,3711,2.745,3712,5.007,3887,4.942,3936,1.679,4009,1.862,4012,1.862,4013,1.862,4014,1.862,4015,2.944,4016,2.02,4017,4.942,4018,4.357,4019,5.235,4020,2.02,4021,3.264,4022,2.02,4023,2.02,4024,4.728,4025,1.862,4026,2.02,4027,2.02,4028,2.02,4029,2.02,4030,5.235,4031,3.264,4032,2.02,4033,3.264,4034,1.862,4035,2.02,4036,2.02,4037,1.862,4038,2.02,4039,2.02,4040,2.02,4041,2.02,4042,1.862,4043,1.862,4044,1.862]],["component/90",[2,0.4]],["title/91-1",[174,22.038,606,30.883,1434,37.494]],["name/91-1",[]],["text/91-1",[]],["component/91-1",[]],["title/91-2",[119,32.398]],["name/91-2",[]],["text/91-2",[]],["component/91-2",[]],["title/91-3",[1904,62.298]],["name/91-3",[]],["text/91-3",[]],["component/91-3",[]],["title/91-4",[8,14.216,98,23.685,112,21.971,802,22.335]],["name/91-4",[]],["text/91-4",[]],["component/91-4",[]],["title/91-5",[234,32.383,1434,44.06]],["name/91-5",[]],["text/91-5",[]],["component/91-5",[]],["title/91-6",[8,12.584,244,19.771,675,31.157,685,36.426,802,19.771]],["name/91-6",[]],["text/91-6",[]],["component/91-6",[]],["title/91",[1434,53.413]],["name/91",[1434,1.845]],["text/91",[2,1.135,3,0.834,4,1.298,5,1.528,6,0.595,7,0.628,8,2.029,13,2.276,14,0.721,15,1.221,16,2.117,17,1.984,25,1.081,26,1.4,27,2.817,28,0.899,30,1.688,33,0.914,34,0.922,41,1.445,44,1.298,48,0.822,51,2.403,52,0.762,54,1.869,56,0.922,57,0.885,58,3.315,60,1.365,61,1.35,67,1.885,73,0.547,75,1.916,77,0.605,79,1.619,83,1.003,88,0.762,96,2.405,98,2.297,103,1.264,105,1.929,106,3.38,112,0.729,119,3.451,124,0.767,126,0.725,132,0.947,137,3.604,148,0.657,149,2.311,153,0.906,154,0.772,159,0.939,161,1.113,162,0.892,164,0.885,165,0.714,168,0.772,169,0.985,170,0.852,173,2.625,174,1.532,185,0.772,191,1.628,192,1.812,193,1.293,194,0.776,198,0.966,206,0.767,207,1.313,209,0.858,210,1.197,212,1.366,223,0.71,229,1.068,231,0.654,234,1.417,237,1.236,244,0.741,246,0.892,249,0.817,250,1.755,258,0.839,281,1.56,282,1.465,288,0.899,297,1.71,298,1.881,299,2.355,310,0.741,311,2.229,312,0.699,313,1.018,314,0.878,316,1.188,326,0.6,363,1.236,382,1.445,407,1.445,428,1.148,432,0.772,480,2.13,492,0.852,494,1.113,505,0.996,509,1.083,519,0.914,539,0.899,554,1.643,587,1.188,588,0.733,592,0.871,594,0.811,597,0.966,603,2.022,623,1.018,668,2.976,675,2.812,685,3.288,688,1.03,692,0.996,694,1.365,731,1.688,732,1.007,740,2.148,742,0.858,802,4.249,812,1.879,870,1.188,895,1.098,908,1.007,926,1.055,947,0.956,981,2.535,1091,0.922,1114,5.862,1221,2.13,1249,1.986,1264,2.607,1265,3.304,1280,0.791,1348,3.527,1366,1.018,1409,2.432,1434,6.655,1435,1.042,1448,1.263,1461,0.93,1471,1.083,1501,2.165,1559,2.682,1569,0.852,1579,2.349,1591,4.805,1624,0.93,1680,1.293,1702,3.99,1727,1.042,1771,1.148,1777,1.532,1801,1.148,1823,1.465,1866,1.365,1904,7.361,1909,1.113,1960,3.527,1998,1.098,2004,2.046,2048,1.055,2058,1.113,2064,1.293,2179,3.779,2286,1.263,2307,1.263,2354,1.327,2501,2.117,2540,2.722,2541,1.263,2548,2.303,2564,1.327,2571,1.293,2870,1.327,2885,1.263,3146,2.432,3204,1.236,3325,1.327,3394,1.532,3790,2.609,3998,2.432,4045,1.623,4046,1.623,4047,1.623,4048,1.623,4049,3.91,4050,1.623,4051,1.623,4052,6.542,4053,2.892,4054,1.623,4055,1.623,4056,2.892,4057,1.623,4058,1.623,4059,1.623,4060,1.623,4061,1.623,4062,1.623,4063,1.623,4064,1.623,4065,1.623,4066,6.035,4067,1.623,4068,1.623,4069,1.623,4070,5.443,4071,1.623,4072,1.623,4073,1.623,4074,1.623,4075,1.623,4076,1.623,4077,3.91,4078,1.623,4079,1.623,4080,1.623,4081,2.892,4082,2.892,4083,2.892,4084,1.623,4085,1.623,4086,1.623]],["component/91",[2,0.4]],["title/92-1",[25,24.71,1257,52.612]],["name/92-1",[]],["text/92-1",[]],["component/92-1",[]],["title/92-2",[3,33.925,231,26.603]],["name/92-2",[]],["text/92-2",[]],["component/92-2",[]],["title/92-3",[25,18.301,235,23.539,245,33.563,1257,38.965]],["name/92-3",[]],["text/92-3",[]],["component/92-3",[]],["title/92-4",[4087,80.094]],["name/92-4",[]],["text/92-4",[]],["component/92-4",[]],["title/92",[2,7.517,8,12.584,96,19.139,230,23.417,235,20.837]],["name/92",[235,1.331]],["text/92",[2,0.967,3,1.047,4,0.915,8,2.563,16,3.31,17,0.852,22,1.442,25,3.299,26,1.709,30,2.728,38,2.877,46,1.398,51,1.032,55,1.419,57,1.111,61,2.603,72,2.081,75,0.999,77,0.759,79,1.935,88,1.659,95,0.832,96,0.901,98,2.262,103,0.891,105,2.75,107,1.594,124,1.669,126,0.91,131,1.054,137,3.858,152,1.714,153,1.972,173,1.536,192,0.778,194,0.975,198,1.213,206,0.963,207,0.925,210,2.61,212,1.669,218,1.047,219,1.585,223,2.437,229,2.551,231,1.882,235,4.106,245,3.823,271,1.709,281,2.515,288,1.129,297,2.044,299,2.695,302,1.293,310,0.93,312,0.878,313,1.278,314,1.102,323,2.459,407,1.019,438,3.346,454,1.138,466,3.16,527,1.853,540,1.138,553,1.111,554,2.006,575,1.225,592,1.895,597,1.213,604,2.024,618,1.264,665,3.254,696,1.419,717,1.419,731,2.728,789,1.94,802,0.93,820,1.529,870,1.492,917,1.623,935,1.093,981,2.342,1116,1.466,1249,2.52,1254,1.225,1257,8.425,1314,2.47,1323,1.225,1365,1.839,1366,2.215,1434,1.359,1435,1.308,1469,1.623,1495,1.398,1501,3.087,1506,1.419,1540,1.466,1552,3.186,1558,1.52,1560,1.839,1569,1.853,1626,1.324,1627,1.442,1771,1.442,2004,1.442,2272,2.747,2280,1.714,2308,2.747,2352,2.886,2367,3.557,2571,1.623,2579,1.551,2638,3.334,2742,2.586,2792,1.714,2891,3.93,3177,1.551,3353,1.839,4088,2.038,4089,8.213,4090,3.532,4091,7.411,4092,3.532,4093,3.532,4094,2.038,4095,1.839,4096,2.038,4097,1.839,4098,7.411,4099,6.048,4100,4.673,4101,3.532,4102,2.038,4103,4.673,4104,4.673,4105,2.038,4106,3.532,4107,3.532,4108,3.532,4109,3.532,4110,3.532,4111,6.905,4112,3.532,4113,3.532,4114,3.532,4115,2.038,4116,2.038,4117,2.038]],["component/92",[2,0.4]],["title/93-1",[220,33.691,750,35.719]],["name/93-1",[]],["text/93-1",[]],["component/93-1",[]],["title/93-2",[40,29.041,882,44.06]],["name/93-2",[]],["text/93-2",[]],["component/93-2",[]],["title/93",[]],["name/93",[]],["text/93",[2,1.059,6,2.235,7,1.534,8,1.772,14,1.761,19,3.132,25,3.122,26,4.04,40,5.028,48,2.008,51,2.008,53,2.99,73,2.503,77,1.477,81,2.545,83,2.116,90,3.825,95,1.619,98,4.798,126,3.32,130,1.35,138,2.359,158,1.851,166,2.111,168,1.884,173,1.725,190,2.407,210,1.642,222,1.919,226,1.707,228,4.467,229,1.465,254,2.609,259,3.157,271,2.953,281,1.582,308,1.596,310,1.81,311,2.253,312,1.707,313,2.486,314,2.143,367,1.907,438,1.79,450,3.577,454,2.214,553,2.16,558,2.545,565,3.302,590,2.719,600,2.336,637,3.018,692,2.432,731,2.314,750,2.143,760,3.577,764,4.184,765,2.382,849,3.018,852,2.719,861,4.551,906,2.609,934,2.576,935,3.272,1036,3.577,1067,3.334,1104,3.742,1130,2.958,1155,3.334,1172,5.068,1282,2.719,1474,4.388,1569,2.08,1579,2.382,1584,3.24,1587,3.334,1623,2.644,1654,4.643,1689,4.315,1722,2.233,1762,3.577,1865,2.681,2075,3.018,2147,3.157,2241,3.334,2336,3.157,2346,4.315,2540,4.248,3006,6.707,3013,4.831,3015,3.157,3016,3.577,3021,3.577,3177,4.643,3672,3.577,3690,3.577,4118,3.965,4119,3.577,4120,3.965,4121,3.965,4122,6.1]],["component/93",[2,0.4]],["title/94",[40,35.206]],["name/94",[1,1.532]],["text/94",[10,4.516,39,5.013,43,5.629,1172,5.629,1299,4.013,1534,5.75,1808,5.267,2343,6.184,2344,5.882,3013,6.025]],["component/94",[2,0.4]],["title/95",[2343,44.06,2344,41.908]],["name/95",[2343,1.068,2344,1.016]],["text/95",[40,3.585,54,2.819,77,2.196,128,4.901,130,2.008,137,3.595,142,3.512,154,2.803,174,3.197,183,3.698,185,2.803,226,2.539,229,2.178,244,4.267,248,2.692,281,3.254,292,3.213,308,2.374,310,2.692,311,3.013,312,2.539,313,3.698,314,3.188,473,2.526,540,3.293,588,3.682,792,3.832,1119,4.375,1181,3.832,1251,4.171,1356,3.442,1375,3.881,1420,2.986,1490,3.321,1639,4.317,1729,3.74,2291,4.409,2343,7.061,2344,6.716,2347,3.832,2450,4.317,2991,8.721,2993,4.696,2994,4.959,2996,4.488,3971,5.32]],["component/95",[2,0.4]],["title/96",[1534,40.971,1808,37.531]],["name/96",[1534,0.993,1808,0.91]],["text/96",[36,3.37,38,4.53,40,4.362,77,2.959,130,2.704,226,3.421,229,2.934,281,3.169,308,3.198,310,3.626,311,4.188,312,3.421,313,4.981,314,4.294,540,4.436,662,5.714,1534,6.154,1808,6.148,1865,5.371,2324,5.448,2347,5.161]],["component/96",[2,0.4]],["title/97",[10,32.179,39,35.719]],["name/97",[39,1.496]],["text/97",[10,3.728,36,3.247,39,5.752,40,4.261,43,4.647,52,3.595,77,2.851,130,2.606,136,4.554,137,2.513,138,4.554,140,4.6,226,3.296,229,2.828,281,3.054,308,3.904,310,3.494,311,3.931,312,3.296,313,4.8,314,4.138,540,4.274,588,3.456,786,4.274,1534,4.747,1865,5.175,3414,6.906,4123,7.654]],["component/97",[2,0.4]],["title/98",[3013,52.045]],["name/98",[3013,1.798]],["text/98",[2,0.92,8,2.564,9,2.65,19,2.723,25,1.983,40,3.88,47,5.048,48,3.833,52,3.555,77,1.975,83,1.84,105,2.616,113,3.186,130,1.805,138,3.155,191,2.986,226,2.283,229,1.959,235,2.551,249,2.668,259,4.223,271,2.567,281,2.116,288,4.192,308,3.048,310,2.42,311,3.261,312,2.283,313,3.325,314,2.867,382,2.65,540,2.961,584,2.986,622,4.036,651,3.882,731,4.418,765,3.186,773,3.219,785,3.325,786,2.961,819,3.585,1172,4.595,1248,3.404,1252,3.751,1287,3.039,1307,3.095,1328,3.956,1378,3.325,1387,3.012,1554,4.459,1689,3.751,1722,2.986,1808,3.012,1865,3.585,2048,3.446,2241,4.459,2268,4.784,2296,4.036,2346,6.244,2382,3.404,2730,4.784,3013,7.474,3024,4.784,3035,4.784,3186,4.459,4124,5.303,4125,5.303,4126,5.303,4127,5.303,4128,5.303,4129,5.303]],["component/98",[2,0.4]],["title/99",[1299,34.666]],["name/99",[1299,1.198]],["text/99",[6,2.867,10,4.788,13,2.951,36,3.32,40,4.321,77,2.915,95,3.195,130,2.664,142,3.37,226,3.37,229,2.891,281,3.923,308,3.151,310,3.572,311,3.632,312,3.37,313,4.907,314,4.231,540,4.37,1299,4.652,1534,4.853,1865,5.291,2081,4.907,2359,4.963,4130,7.06]],["component/99",[2,0.4]],["title/100",[43,48.623]],["name/100",[43,1.68]],["text/100",[6,2.867,10,4.788,13,2.951,36,3.32,40,4.321,43,6.525,77,2.915,95,3.195,130,2.664,142,3.37,226,3.37,229,2.891,281,3.923,308,3.151,310,3.572,311,3.632,312,3.37,313,4.907,314,4.231,540,4.37,1534,4.853,1865,5.291,2081,4.907,2359,4.963,4130,7.06]],["component/100",[2,0.4]],["title/101-1",[112,25.245,231,22.638,518,31.135]],["name/101-1",[]],["text/101-1",[]],["component/101-1",[]],["title/101",[83,22.92,1688,52.612]],["name/101",[1688,2.204]],["text/101",[2,0.598,3,0.714,4,1.547,6,0.922,7,0.973,8,1.733,14,0.617,15,1.454,17,0.581,19,0.714,25,0.52,26,1.667,27,1.82,30,2.011,33,0.783,41,1.722,44,1.129,51,0.704,52,0.653,54,0.664,57,0.757,61,0.649,67,0.999,68,1.468,71,0.77,73,0.847,77,0.937,83,1.195,95,2.615,100,4.248,102,0.789,103,0.608,106,0.673,107,1.555,112,2.678,120,2.238,122,2.267,124,0.657,125,1.329,128,1.511,130,2.031,131,1.781,132,0.811,137,3.758,146,4.466,148,1.017,149,1.678,154,0.661,159,0.804,164,0.757,166,0.74,168,0.661,173,1.838,176,2.07,191,0.783,192,3.727,194,0.664,199,1.36,205,1.078,209,1.329,212,1.997,220,0.709,223,1.848,229,2.638,230,0.751,231,0.56,233,0.983,244,2.923,248,1.148,249,0.699,250,0.624,268,1.136,274,5.284,276,1.892,285,0.751,289,0.827,297,0.608,299,1.344,302,2.681,311,1.561,320,2.537,325,0.835,326,3.188,407,1.722,432,1.195,446,0.862,459,1.254,469,0.746,482,0.882,487,1.381,502,0.819,506,0.968,507,1.081,509,1.677,510,1.577,518,5.135,563,1.017,565,1.117,568,1.841,592,0.746,597,2.91,598,1.701,602,0.983,604,0.796,613,1.081,623,0.871,628,1.779,641,0.724,717,0.968,749,1.008,773,1.527,775,5.435,776,2.269,785,0.871,795,2.621,802,1.148,803,1.169,812,0.903,816,1.254,817,1.169,820,1.829,822,1.254,825,0.983,846,0.686,854,1.207,871,0.796,938,1.701,947,5.288,966,2.297,980,0.927,1066,1.254,1091,1.429,1096,1.169,1114,0.983,1142,1.136,1162,0.953,1222,1.136,1248,1.614,1249,1.542,1265,2.091,1280,0.677,1282,0.953,1314,3.938,1339,3.067,1366,2.65,1374,1.254,1390,0.751,1397,1.081,1445,2.522,1446,1.254,1468,0.74,1495,3.749,1527,1.779,1569,0.729,1589,1.841,1673,1.169,1677,5.624,1679,1.017,1682,1.107,1688,4.75,1697,1.107,1718,2.269,1719,2.269,1720,2.269,1722,0.783,1724,1.081,1727,0.892,1749,1.169,1753,2.185,1766,1.254,1768,2.269,1770,2.269,1771,0.983,2002,2.185,2004,1.779,2051,1.701,2083,0.844,2087,1.017,2288,2.238,2307,1.081,2336,1.107,2571,1.107,2590,1.136,2687,1.136,2807,1.169,2954,4.931,2999,1.107,3004,1.136,3012,1.254,3158,2.003,3244,1.207,3708,2.897,3845,1.207,4015,1.254,4119,1.254,4131,1.39,4132,3.445,4133,1.39,4134,1.312,4135,1.39,4136,1.39,4137,2.515,4138,1.169,4139,1.254,4140,1.39,4141,1.39,4142,1.39,4143,1.39,4144,1.39,4145,1.39,4146,1.39,4147,1.39,4148,1.39,4149,1.39,4150,1.39,4151,1.39,4152,1.39,4153,1.39,4154,1.39,4155,2.515,4156,1.39,4157,3.445,4158,1.39,4159,1.39,4160,1.39,4161,4.226,4162,1.39,4163,1.39,4164,4.226,4165,1.39,4166,1.39,4167,5.465,4168,1.39,4169,1.39,4170,2.515,4171,1.39,4172,1.39,4173,1.39,4174,1.39,4175,1.39,4176,2.515,4177,1.39,4178,1.39,4179,3.445,4180,1.39,4181,1.39,4182,1.39,4183,2.515,4184,1.39,4185,1.39,4186,1.39,4187,1.39,4188,2.515,4189,1.39,4190,1.39,4191,1.39,4192,1.39,4193,1.39,4194,1.39,4195,1.39,4196,1.39,4197,1.39,4198,1.39,4199,1.39,4200,1.39]],["component/101",[2,0.4]],["title/102",[231,22.638,1322,37.002,1529,38.565]],["name/102",[1529,1.898]],["text/102",[3,4.274,4,1.941,6,0.947,8,2.418,13,1.63,26,1.25,33,3.138,37,1.585,44,1.16,47,1.723,52,1.213,56,2.455,73,2.193,103,1.13,119,1.045,125,1.365,137,3.231,143,5.344,166,1.375,174,1.013,210,1.07,223,2.848,228,2.597,229,0.954,248,1.179,264,3.442,281,1.725,297,1.13,311,1.597,326,2.058,367,1.243,438,2.515,443,1.48,469,5.48,481,1.397,553,3.55,575,1.552,584,1.455,592,1.386,641,1.345,659,2.009,712,5.273,771,2.965,873,1.891,901,2.172,980,1.723,1103,1.552,1119,1.386,1287,3.193,1307,4.858,1322,1.7,1336,1.891,1387,3.7,1390,2.337,1392,5.639,1438,1.62,1461,1.48,1506,1.799,1528,1.568,1529,1.772,1722,1.455,1856,1.891,2060,2.172,2140,1.326,2294,1.723,2346,1.827,3078,6.368,3158,4.437,3266,3.635,3267,3.755,3268,2.172,3271,2.331,3273,5.877,3276,2.331,3351,3.635,3514,2.244,3635,5.027,3694,2.331,3714,2.331,3797,2.331,3867,5.877,3869,3.899,3919,2.331,4138,2.172,4201,2.583,4202,2.583,4203,2.583,4204,2.583,4205,7.249,4206,7.839,4207,4.322,4208,5.572,4209,5.572,4210,5.572,4211,5.572,4212,5.572,4213,4.322,4214,5.572,4215,10.513,4216,4.322,4217,2.583,4218,4.322,4219,2.583,4220,2.583,4221,2.583,4222,2.583,4223,3.899,4224,4.322,4225,4.686,4226,2.583,4227,3.635,4228,4.322,4229,4.686,4230,2.583,4231,4.322,4232,4.322,4233,5.572,4234,2.583,4235,2.583,4236,2.583,4237,2.583,4238,2.583,4239,4.322,4240,2.583,4241,2.583,4242,2.583,4243,2.583,4244,2.172,4245,2.583,4246,2.583,4247,2.583,4248,2.583]],["component/102",[2,0.4]],["title/103-1",[3,33.925,326,24.407]],["name/103-1",[]],["text/103-1",[]],["component/103-1",[]],["title/103-2",[326,24.407,1495,45.318]],["name/103-2",[]],["text/103-2",[]],["component/103-2",[]],["title/103-3",[326,20.77,540,31.395,981,23.619]],["name/103-3",[]],["text/103-3",[]],["component/103-3",[]],["title/103-4",[981,27.755,1395,38.208]],["name/103-4",[]],["text/103-4",[]],["component/103-4",[]],["title/103-5",[981,27.755,4249,62.369]],["name/103-5",[]],["text/103-5",[]],["component/103-5",[]],["title/103-6",[264,52.612,981,27.755]],["name/103-6",[]],["text/103-6",[]],["component/103-6",[]],["title/103-7",[981,27.755,4225,55.562]],["name/103-7",[]],["text/103-7",[]],["component/103-7",[]],["title/103-8",[981,27.755,4227,55.562]],["name/103-8",[]],["text/103-8",[]],["component/103-8",[]],["title/103-9",[981,27.755,4250,59.605]],["name/103-9",[]],["text/103-9",[]],["component/103-9",[]],["title/103-10",[981,27.755,4244,55.562]],["name/103-10",[]],["text/103-10",[]],["component/103-10",[]],["title/103-11",[110,37.531,981,27.755]],["name/103-11",[]],["text/103-11",[]],["component/103-11",[]],["title/103-12",[130,22.494,981,27.755]],["name/103-12",[]],["text/103-12",[]],["component/103-12",[]],["title/103-13",[981,27.755,4251,59.605]],["name/103-13",[]],["text/103-13",[]],["component/103-13",[]],["title/103-14",[981,27.755,4252,66.069]],["name/103-14",[]],["text/103-14",[]],["component/103-14",[]],["title/103-15",[981,27.755,3767,55.562]],["name/103-15",[]],["text/103-15",[]],["component/103-15",[]],["title/103-16",[3,33.925,981,27.755]],["name/103-16",[]],["text/103-16",[]],["component/103-16",[]],["title/103-17",[981,27.755,4229,55.562]],["name/103-17",[]],["text/103-17",[]],["component/103-17",[]],["title/103-18",[981,27.755,4253,62.369]],["name/103-18",[]],["text/103-18",[]],["component/103-18",[]],["title/103-19",[846,32.591,981,27.755]],["name/103-19",[]],["text/103-19",[]],["component/103-19",[]],["title/103-20",[981,27.755,1626,42.931]],["name/103-20",[]],["text/103-20",[]],["component/103-20",[]],["title/103-21",[162,43.994]],["name/103-21",[]],["text/103-21",[]],["component/103-21",[]],["title/103-22",[39,30.396,161,38.565,1683,37.002]],["name/103-22",[]],["text/103-22",[]],["component/103-22",[]],["title/103-23",[4254,80.094]],["name/103-23",[]],["text/103-23",[]],["component/103-23",[]],["title/103-24",[3042,62.298]],["name/103-24",[]],["text/103-24",[]],["component/103-24",[]],["title/103",[749,26.482,1322,43.481]],["name/103",[1322,1.821]],["text/103",[3,4.317,4,1.834,6,0.526,7,0.556,8,2.255,9,0.497,11,0.335,14,0.441,15,1.094,17,1.597,19,0.265,24,0.317,25,0.372,26,0.25,27,0.619,28,0.55,31,0.61,33,0.291,34,0.564,39,3.866,41,0.924,44,0.83,45,1.714,47,0.344,48,0.261,50,0.585,52,0.675,53,0.253,57,0.281,58,2.098,59,1.015,61,0.241,65,0.371,66,0.359,67,0.205,71,0.286,73,1.539,74,0.317,81,1.433,88,1.048,93,0.663,95,1.445,100,0.591,102,0.293,103,0.808,105,0.255,106,0.481,107,0.834,109,0.34,110,1.472,112,0.232,118,0.277,123,0.32,124,0.244,125,1.369,126,1.157,130,2.578,131,1.514,132,1.079,133,0.354,137,2.577,141,1.705,142,1.524,147,0.32,149,1.58,153,1.032,159,1.875,160,2.133,161,2.428,162,1.781,164,1.412,165,0.437,166,0.984,168,0.683,170,0.271,171,0.616,173,0.225,174,1.388,176,0.31,184,0.597,185,1.541,190,0.872,191,1.041,192,1.56,194,0.247,198,0.307,199,0.279,200,0.335,205,0.426,206,0.873,209,0.273,210,0.765,215,0.307,221,0.34,223,1.895,229,0.191,230,0.279,231,1.179,233,1.307,244,0.236,248,1.48,249,0.26,250,0.232,257,1.116,258,1.83,264,3.639,271,0.481,279,1.472,281,3.703,284,1.59,286,0.569,288,2.261,289,0.307,292,1.007,296,0.378,297,0.434,298,0.248,299,0.388,301,0.5,308,0.208,311,3.023,315,0.748,320,1.203,324,0.891,326,3.903,345,0.371,346,0.251,367,0.248,382,0.258,407,0.718,429,0.354,432,0.245,443,0.569,454,0.555,469,2.049,473,0.221,477,0.911,481,0.279,491,0.434,492,0.271,502,1.315,505,1.134,506,0.359,510,0.324,512,0.487,518,1.621,519,0.291,522,0.335,525,0.271,526,0.307,535,1.134,536,0.741,539,1.796,540,0.288,565,0.441,575,0.863,588,1.464,592,1.57,600,1.089,603,1.975,604,2.189,618,0.616,622,0.393,623,1.159,628,0.365,641,0.517,645,0.971,650,0.727,652,0.603,655,0.335,658,1.328,660,0.371,661,0.703,665,0.692,667,0.365,689,0.654,690,0.603,712,2.819,717,0.359,740,0.284,742,0.525,749,1.3,750,0.279,754,0.365,765,0.31,785,0.324,807,2.428,812,0.335,814,0.466,820,0.223,825,0.365,831,0.448,832,0.393,844,0.393,846,1.884,857,0.393,865,0.349,871,1.859,894,0.945,913,0.575,935,0.277,944,0.371,959,0.896,963,0.411,981,4.56,1042,1.144,1091,0.293,1103,1.557,1110,0.555,1119,0.277,1138,0.448,1142,1.51,1154,0.703,1205,0.331,1242,0.393,1249,1.068,1252,3.232,1256,0.422,1265,0.313,1287,1.678,1288,1.122,1294,0.365,1296,0.385,1307,2.229,1310,2.621,1311,1.606,1312,1.804,1314,0.273,1315,0.267,1322,0.654,1323,0.597,1356,0.301,1366,0.324,1373,0.365,1375,0.654,1378,0.324,1387,3.068,1389,0.836,1390,0.999,1395,2.361,1398,0.836,1406,1.144,1410,0.896,1413,0.256,1420,0.503,1423,0.971,1435,0.638,1437,0.638,1438,0.901,1445,1.897,1449,0.672,1461,0.296,1463,1.353,1466,0.365,1468,0.765,1473,0.61,1490,1.041,1495,3.572,1498,0.791,1499,0.663,1501,0.795,1554,0.434,1561,1.531,1569,0.97,1574,0.344,1576,1.117,1578,1.353,1579,0.597,1589,0.378,1601,0.378,1623,0.344,1625,0.466,1626,1.684,1637,0.359,1646,0.422,1652,0.327,1677,0.344,1681,1.296,1682,2.063,1683,3.295,1707,0.371,1708,6.805,1722,0.291,1724,2.277,1738,0.378,1747,1.144,1760,2.134,1788,1.778,1791,0.466,1808,0.293,1853,0.378,1856,1.353,1882,0.411,1887,0.487,1935,0.773,1940,0.349,1952,0.385,1974,0.401,1985,0.359,1998,0.349,2048,0.335,2051,0.349,2058,1.268,2087,0.378,2129,1.379,2133,0.715,2239,0.466,2279,1.877,2281,0.836,2288,2.816,2294,3.197,2295,0.466,2296,0.756,2308,0.773,2336,0.411,2362,0.448,2450,1.052,2552,0.434,2664,0.487,2777,0.434,2857,0.466,2861,0.466,2865,0.756,2866,2.462,2870,0.422,2885,0.401,2891,0.836,2972,0.393,2999,7.272,3005,0.411,3010,0.487,3042,3.37,3078,3.426,3104,0.812,3233,0.516,3234,0.516,3265,0.466,3266,0.434,3267,0.448,3268,0.836,3525,0.448,3526,0.448,3528,0.466,3529,0.466,3530,0.466,3705,1.296,3708,1.208,3752,1.667,3767,3.644,3845,0.448,4034,0.516,4097,0.466,4138,0.434,4139,0.896,4223,3.446,4225,3.644,4227,4.21,4229,2.462,4244,1.554,4249,4.09,4250,4.324,4251,4.699,4252,0.516,4253,0.938,4254,0.516,4255,0.516,4256,2.927,4257,0.516,4258,0.994,4259,1.078,4260,0.994,4261,0.516,4262,0.994,4263,0.56,4264,0.516,4265,0.516,4266,2.927,4267,0.516,4268,0.994,4269,0.516,4270,0.994,4271,0.516,4272,0.516,4273,0.994,4274,0.994,4275,0.56,4276,0.516,4277,0.516,4278,0.994,4279,0.56,4280,0.56,4281,4.083,4282,0.994,4283,0.516,4284,0.516,4285,0.516,4286,0.994,4287,0.487,4288,0.516,4289,0.56,4290,0.56,4291,0.516,4292,0.516,4293,4.701,4294,2.812,4295,2.422,4296,0.56,4297,1.078,4298,0.994,4299,0.516,4300,0.516,4301,0.994,4302,2.591,4303,0.516,4304,0.516,4305,0.994,4306,0.516,4307,0.516,4308,0.56,4309,0.516,4310,0.516,4311,0.516,4312,0.56,4313,0.516,4314,0.516,4315,0.516,4316,0.516,4317,0.516,4318,0.516,4319,0.516,4320,0.516,4321,1.436,4322,0.994,4323,0.994,4324,0.516,4325,0.516,4326,0.516,4327,0.516,4328,0.516,4329,0.516,4330,0.516,4331,0.516,4332,0.516,4333,0.516,4334,0.516,4335,0.994,4336,0.56,4337,0.56,4338,0.56,4339,0.56]],["component/103",[2,0.4]],["title/104",[6,20.602,165,24.714,1479,42.794]],["name/104",[6,1.014]],["text/104",[13,3.971,15,0.998,38,1.83,72,6.272,73,3.14,96,1.772,98,3.334,148,2.112,165,1.762,185,2.924,223,4.782,298,1.929,308,0.951,326,3.445,473,1.012,497,6.156,525,2.103,588,2.778,656,4.182,820,2.663,870,2.935,949,6.215,981,3.145,1314,3.251,1342,2.75,1416,2.258,1423,7.9,1473,6.85,1551,7.213,1846,6.503,1873,7.097,1927,1.763,2155,6.296,2973,3.372,2980,5.027,4095,2.132,4287,2.231,4340,2.363,4341,2.363,4342,2.363,4343,2.363,4344,2.363,4345,2.363,4346,2.363,4347,2.363,4348,2.363,4349,2.363,4350,2.363,4351,2.363,4352,2.363,4353,4.009,4354,2.363,4355,2.363,4356,2.363,4357,4.009,4358,5.222,4359,2.363,4360,4.009,4361,4.009,4362,5.222,4363,4.009,4364,2.363,4365,4.009,4366,5.222,4367,2.363,4368,4.009,4369,2.363,4370,4.009,4371,4.009,4372,7.486,4373,2.363,4374,7.486,4375,2.363,4376,5.55,4377,2.132,4378,2.363,4379,2.363,4380,2.363,4381,2.363,4382,2.363,4383,2.363,4384,2.363,4385,5.222,4386,5.222,4387,4.009,4388,2.363]],["component/104",[2,0.4]],["title/105",[6,24.21,1255,46.739]],["name/105",[6,1.014]],["text/105",[67,2.355,137,1.947,168,3.891,205,2.541,223,2.593,438,3.696,820,2.567,1151,4.722,1342,4.067,1416,3.339,2965,5.579,3124,9.122,3219,5.35,4376,9.572,4377,5.35,4389,5.93,4390,8.187,4391,10.971,4392,10.61,4393,8.187,4394,8.187,4395,8.187,4396,8.187,4397,8.187,4398,5.93,4399,8.187,4400,8.187,4401,8.187,4402,8.187,4403,5.93,4404,8.187,4405,8.187,4406,5.93,4407,5.93,4408,5.93,4409,5.93,4410,5.93,4411,5.93,4412,5.93,4413,5.93,4414,5.93,4415,5.93]],["component/105",[2,0.4]],["title/106-1",[44,29.665,84,21.688]],["name/106-1",[]],["text/106-1",[]],["component/106-1",[]],["title/106-2",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1226,15.771,1227,16.372]],["name/106-2",[]],["text/106-2",[]],["component/106-2",[]],["title/106-3",[299,25.783,467,33.925]],["name/106-3",[]],["text/106-3",[]],["component/106-3",[]],["title/106-4",[473,28.308,883,40.108]],["name/106-4",[]],["text/106-4",[]],["component/106-4",[]],["title/106-5",[9,33.018,440,34.914]],["name/106-5",[]],["text/106-5",[]],["component/106-5",[]],["title/106-6",[84,21.688,625,48.371]],["name/106-6",[]],["text/106-6",[]],["component/106-6",[]],["title/106-7",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1228,24.826]],["name/106-7",[]],["text/106-7",[]],["component/106-7",[]],["title/106-8",[299,25.783,467,33.925]],["name/106-8",[]],["text/106-8",[]],["component/106-8",[]],["title/106-9",[9,33.018,440,34.914]],["name/106-9",[]],["text/106-9",[]],["component/106-9",[]],["title/106-10",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1229,22.487]],["name/106-10",[]],["text/106-10",[]],["component/106-10",[]],["title/106-11",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1230,27.518]],["name/106-11",[]],["text/106-11",[]],["component/106-11",[]],["title/106-12",[9,33.018,440,34.914]],["name/106-12",[]],["text/106-12",[]],["component/106-12",[]],["title/106-13",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1231,23.142]],["name/106-13",[]],["text/106-13",[]],["component/106-13",[]],["title/106-14",[299,25.783,467,33.925]],["name/106-14",[]],["text/106-14",[]],["component/106-14",[]],["title/106-15",[473,28.308,883,40.108]],["name/106-15",[]],["text/106-15",[]],["component/106-15",[]],["title/106-16",[9,33.018,440,34.914]],["name/106-16",[]],["text/106-16",[]],["component/106-16",[]],["title/106-17",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1232,22.487]],["name/106-17",[]],["text/106-17",[]],["component/106-17",[]],["title/106-18",[299,25.783,467,33.925]],["name/106-18",[]],["text/106-18",[]],["component/106-18",[]],["title/106-19",[473,28.308,883,40.108]],["name/106-19",[]],["text/106-19",[]],["component/106-19",[]],["title/106-20",[9,33.018,440,34.914]],["name/106-20",[]],["text/106-20",[]],["component/106-20",[]],["title/106-21",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1233,27.518]],["name/106-21",[]],["text/106-21",[]],["component/106-21",[]],["title/106-22",[299,25.783,467,33.925]],["name/106-22",[]],["text/106-22",[]],["component/106-22",[]],["title/106-23",[473,28.308,883,40.108]],["name/106-23",[]],["text/106-23",[]],["component/106-23",[]],["title/106-24",[9,33.018,440,34.914]],["name/106-24",[]],["text/106-24",[]],["component/106-24",[]],["title/106-25",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1234,25.977]],["name/106-25",[]],["text/106-25",[]],["component/106-25",[]],["title/106-26",[299,25.783,467,33.925]],["name/106-26",[]],["text/106-26",[]],["component/106-26",[]],["title/106-27",[473,28.308,883,40.108]],["name/106-27",[]],["text/106-27",[]],["component/106-27",[]],["title/106-28",[9,33.018,440,34.914]],["name/106-28",[]],["text/106-28",[]],["component/106-28",[]],["title/106-29",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1235,27.518]],["name/106-29",[]],["text/106-29",[]],["component/106-29",[]],["title/106-30",[299,25.783,467,33.925]],["name/106-30",[]],["text/106-30",[]],["component/106-30",[]],["title/106-31",[473,28.308,883,40.108]],["name/106-31",[]],["text/106-31",[]],["component/106-31",[]],["title/106-32",[9,33.018,440,34.914]],["name/106-32",[]],["text/106-32",[]],["component/106-32",[]],["title/106-33",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1236,27.518]],["name/106-33",[]],["text/106-33",[]],["component/106-33",[]],["title/106-34",[299,25.783,467,33.925]],["name/106-34",[]],["text/106-34",[]],["component/106-34",[]],["title/106-35",[473,28.308,883,40.108]],["name/106-35",[]],["text/106-35",[]],["component/106-35",[]],["title/106-36",[9,33.018,440,34.914]],["name/106-36",[]],["text/106-36",[]],["component/106-36",[]],["title/106-37",[84,21.688,405,42.931]],["name/106-37",[]],["text/106-37",[]],["component/106-37",[]],["title/106-38",[84,8.419,119,10.375,137,21.286,263,14.203,405,16.666,508,14.444,1227,15.259,1237,23.139]],["name/106-38",[]],["text/106-38",[]],["component/106-38",[]],["title/106-39",[299,25.783,467,33.925]],["name/106-39",[]],["text/106-39",[]],["component/106-39",[]],["title/106-40",[473,28.308,883,40.108]],["name/106-40",[]],["text/106-40",[]],["component/106-40",[]],["title/106-41",[9,33.018,440,34.914]],["name/106-41",[]],["text/106-41",[]],["component/106-41",[]],["title/106-42",[84,8.419,119,10.375,137,21.286,263,14.203,405,16.666,508,14.444,1227,15.259,1238,23.139]],["name/106-42",[]],["text/106-42",[]],["component/106-42",[]],["title/106-43",[299,25.783,467,33.925]],["name/106-43",[]],["text/106-43",[]],["component/106-43",[]],["title/106-44",[473,28.308,883,40.108]],["name/106-44",[]],["text/106-44",[]],["component/106-44",[]],["title/106-45",[9,33.018,440,34.914]],["name/106-45",[]],["text/106-45",[]],["component/106-45",[]],["title/106-46",[84,8.419,119,10.375,137,21.286,263,14.203,405,16.666,508,14.444,1227,15.259,1239,25.648]],["name/106-46",[]],["text/106-46",[]],["component/106-46",[]],["title/106-47",[473,34.317]],["name/106-47",[]],["text/106-47",[]],["component/106-47",[]],["title/106-48",[84,8.419,119,10.375,137,21.286,263,14.203,405,16.666,508,14.444,1227,15.259,1240,25.648]],["name/106-48",[]],["text/106-48",[]],["component/106-48",[]],["title/106",[155,45.902]],["name/106",[155,1.586]],["text/106",[1,0.366,2,1.775,4,0.297,5,0.665,6,1.67,7,0.697,8,1.813,9,2.914,10,0.613,13,1.196,14,2.024,15,1.162,16,1.949,17,1.326,19,0.646,25,3.754,26,2.822,28,0.697,36,0.975,38,0.574,39,0.68,40,1.564,41,0.9,43,0.764,45,0.665,51,1.164,53,0.324,54,0.316,56,0.375,58,0.691,59,2.151,61,0.588,63,3.449,64,0.526,65,0.475,67,2.875,68,0.735,71,0.366,73,0.927,74,0.772,79,0.521,80,0.401,83,1.474,84,1.762,87,0.363,88,0.846,90,0.789,92,0.405,93,0.305,94,1.002,95,1.599,96,1.572,98,2.345,100,1.367,103,0.289,105,0.326,106,0.32,107,1.432,112,1.597,113,0.397,114,0.54,118,0.354,119,0.509,121,1.367,123,0.78,124,0.312,125,0.665,126,1.026,130,1.08,137,0.754,141,0.435,142,0.776,148,1.96,149,0.322,153,0.703,154,0.314,155,0.721,158,0.841,159,2.057,162,0.363,165,2.249,166,0.67,168,0.314,170,0.347,173,0.287,175,0.772,176,1.381,190,0.401,191,1.294,192,1.851,194,1.099,199,0.974,202,0.419,205,0.539,206,0.851,207,0.818,210,0.274,211,0.863,212,2.007,214,0.435,216,0.721,218,0.925,220,0.337,222,0.609,223,2.549,229,1.017,230,0.68,231,0.726,234,0.617,235,0.318,237,0.503,244,0.302,246,2.333,248,1.624,249,0.906,254,0.828,255,0.382,256,0.441,258,1.188,281,1.42,288,0.697,295,1.946,298,0.318,299,2.509,308,0.726,311,1.446,312,1.532,315,4.158,316,1.319,319,0.369,320,0.307,324,0.78,326,2.375,346,0.613,382,1.376,385,0.851,405,0.429,407,1.376,414,0.89,431,0.435,432,0.856,438,2.727,440,1.455,441,0.405,443,0.379,467,1.827,469,0.354,473,1.678,474,0.697,480,4.161,487,0.363,497,1.042,503,0.798,504,0.905,507,0.514,508,0.372,523,1.058,525,1.866,527,1.206,535,0.405,540,1.006,544,0.41,545,0.493,546,0.503,549,1.435,553,1.5,554,0.375,565,0.8,575,1.654,576,0.818,584,0.372,588,0.298,590,1.236,592,0.967,600,0.389,601,1.371,603,0.651,604,1.033,609,0.556,618,0.41,625,0.484,626,0.453,642,0.979,651,0.484,652,0.764,655,0.429,658,1.072,660,0.475,667,0.467,668,2.414,674,0.526,679,0.46,680,1.933,689,0.435,707,0.467,712,0.372,713,0.958,739,0.435,748,0.475,749,0.265,750,0.357,764,0.453,765,0.397,771,0.453,784,0.596,785,0.414,792,0.429,795,0.41,798,0.556,802,1.624,820,2.523,833,0.828,835,1.344,847,0.453,851,0.424,861,0.493,865,0.851,876,0.503,882,0.441,883,0.401,894,0.435,906,0.435,934,0.429,939,0.441,951,0.958,965,1.319,981,0.757,993,0.46,1002,1.83,1021,1.371,1041,0.441,1042,0.526,1047,0.526,1073,1.093,1082,0.354,1091,0.715,1103,0.397,1104,0.405,1110,0.703,1113,0.89,1115,0.596,1138,0.574,1145,0.484,1171,2.073,1174,0.851,1181,0.429,1205,0.424,1224,0.514,1231,0.556,1241,0.379,1242,0.503,1243,0.661,1244,0.661,1245,1.435,1246,1.258,1247,1.258,1248,0.424,1249,1.959,1250,0.514,1251,0.467,1252,1.626,1253,0.958,1254,0.397,1255,0.89,1256,2.592,1257,0.526,1258,0.772,1259,2.552,1260,2.552,1261,0.556,1262,2.175,1263,2.169,1264,0.441,1265,2.16,1266,0.661,1267,0.661,1268,0.661,1269,0.661,1270,0.661,1271,0.661,1272,0.661,1273,0.661,1274,0.661,1275,0.661,1276,0.661,1277,0.661,1278,0.661,1279,0.661,1280,0.322,1281,0.556,1282,0.863,1283,0.503,1284,0.624,1285,0.556,1286,1.058,1287,0.379,1288,0.764,1289,1.533,1290,0.556,1291,1.002,1292,2.298,1293,0.46,1294,0.467,1295,0.503,1296,0.493,1297,1.258,1298,0.484,1299,0.78,1300,0.596,1301,0.556,1302,0.661,1303,0.596,1304,2.753,1305,1.472,1306,0.661,1307,1.607,1308,0.441,1309,0.475,1310,0.424,1311,0.905,1312,0.46,1313,0.596,1314,0.952,1315,0.342,1316,0.46,1317,2.392,1318,0.596,1319,0.556,1320,0.661,1321,1.787,1322,0.828,1323,0.756,1324,1.802,1325,0.661,1326,0.661,1327,0.661,1328,0.493,1329,0.661,1330,0.661,1331,1.028,1332,1.258,1333,1.135,1334,0.979,1335,0.574,1336,0.484,1337,1.402,1338,0.596,1339,0.414,1340,0.661,1341,0.514,1342,0.453,1343,1.435,1344,0.596,1345,1.258,1346,0.54,1347,0.661,1348,0.596,1349,0.661,1350,0.624,1351,0.661,1352,0.661,1353,0.661,1354,1.554,1355,0.661,1356,0.735,1357,0.661,1358,0.661,1359,0.661,1360,0.661,1361,1.028,1362,0.661,1363,0.661,1364,0.661,1365,0.596,1366,0.414,1367,0.661,1368,0.661,1369,0.661,1370,0.661,1371,0.661,1372,0.503,1373,0.89,1374,0.596,1375,0.828,1376,1.319,1377,1.626,1378,0.414,1379,0.661,1380,0.484,1381,0.484,1382,0.958,1383,0.54,1384,1.296,1385,0.54,1386,0.493,1387,0.375,1388,0.596,1389,0.556,1390,0.357,1391,1.058,1392,0.905,1393,0.89,1394,0.661,1395,1.592,1396,0.661,1397,1.402,1398,0.556,1399,0.661,1400,0.661,1401,0.661,1402,1.093,1403,1.093,1404,0.661,1405,0.414,1406,0.526,1407,0.661,1408,0.839,1409,1.058,1410,0.596,1411,1.093,1412,0.661,1413,0.328,1414,0.798,1415,0.661,1416,0.372,1417,0.36,1418,0.661,1419,0.661,1420,0.335,1421,0.661,1422,0.661,1423,2.144,1424,0.661,1425,1.258,1426,0.661,1427,0.484,1428,0.54,1429,0.467,1430,0.661,1431,0.661,1432,0.661,1433,0.661,1434,1.533,1435,1.157,1436,0.661,1437,0.424,1438,1.13,1439,0.661,1440,0.661,1441,0.661,1442,0.661,1443,0.661,1444,0.493,1445,0.921,1446,0.596,1447,0.556,1448,0.514,1449,0.447,1450,0.419,1451,0.46,1452,0.503,1453,0.661,1454,0.503,1455,0.661,1456,1.028,1457,0.514,1458,0.596,1459,0.661,1460,0.661,1461,1.033,1462,0.514,1463,0.484,1464,0.661,1465,0.661,1466,0.467,1467,0.661,1468,0.67,1469,0.526,1470,0.503,1471,0.839,1472,1.135,1473,0.405,1474,0.475,1475,0.661,1476,0.661,1477,0.661,1478,0.484,1479,0.503,1480,0.596,1481,0.54,1482,0.661,1483,0.661,1484,0.661,1485,0.661,1486,0.661,1487,0.661,1488,0.514,1489,0.661,1490,0.372,1491,1.258,1492,1.058,1493,0.661,1494,0.54,1495,0.453,1496,0.661,1497,0.574,1498,0.526,1499,0.441,1500,0.661,1501,0.366,1502,0.556,1503,1.258,1504,0.661,1505,0.54,1506,0.46,1507,0.574,1508,0.503,1509,0.526,1510,1.093,1511,0.661,1512,0.574,1513,0.661,1514,0.661,1515,0.661,1516,0.405,1517,0.661,1518,0.596,1519,0.596,1520,0.661,1521,0.921,1522,0.958,1523,0.596,1524,0.661,1525,0.661,1526,0.526,1527,0.467,1528,0.401,1529,0.453,1530,0.596,1531,0.54,1532,0.661,1533,0.661,1534,0.41,1535,0.661,1536,0.661,1537,0.661,1538,0.596,1539,1.802,1540,0.475,1541,0.393,1542,0.574,1543,0.484,1544,0.624,1545,0.661,1546,1.258,1547,0.661,1548,0.661,1549,0.979,1550,0.574,1551,1.002,1552,0.596,1553,0.661,1554,0.556,1555,0.556,1556,0.503,1557,0.596,1558,0.939,1559,0.453,1560,0.596,1561,0.453,1562,0.661,1563,0.661,1564,0.661,1565,0.484,1566,0.661,1567,0.661,1568,0.661,1569,0.347,1570,0.661,1571,0.661,1572,0.661]],["component/106",[2,0.4]],["title/107-1",[2,11.466,83,22.92]],["name/107-1",[]],["text/107-1",[]],["component/107-1",[]],["title/107",[487,43.994]],["name/107",[1,1.532]],["text/107",[2,1.839,6,2.882,8,2.765,14,2.486,15,1.499,16,2.384,19,2.874,25,2.093,26,2.709,27,1.529,31,2.178,36,4.037,38,3.163,45,1.876,52,1.667,53,1.74,57,1.935,68,2.072,71,1.966,73,1.885,75,2.743,80,2.155,83,3.52,87,3.074,90,3.51,93,1.639,95,2.285,96,4.205,99,2.435,103,1.552,112,3.111,121,2.112,126,1.586,137,1.165,158,1.658,168,1.687,170,1.862,199,3.026,205,2.398,207,2.541,212,1.677,214,2.336,215,2.112,216,2.035,220,1.81,230,3.026,235,1.708,246,3.074,249,1.786,271,2.709,295,4.251,326,2.068,336,4.251,432,1.687,467,1.823,474,1.966,487,1.95,492,1.862,520,2.554,550,2.279,565,1.577,592,3.003,608,2.702,667,2.512,668,2.702,674,2.827,732,4.297,773,2.155,789,1.95,850,2.599,857,2.702,861,2.649,966,4.621,992,2.112,1002,2.827,1057,2.649,1091,3.18,1104,5.25,1116,4.026,1126,3.203,1155,2.986,1197,2.512,1259,3.363,1260,3.363,1289,2.368,1303,3.203,1323,2.133,1434,2.368,1474,2.554,1507,4.863,1558,2.649,1573,3.733,1574,2.368,1575,3.55,1576,2.761,1577,3.55,1578,2.599,1579,2.133,1580,3.55,1581,2.827,1582,3.203,1583,2.761,1584,2.901,1585,2.702,1586,3.084,1587,2.986,1588,3.203,1589,2.599,1590,4.354,1591,2.827,1592,3.55]],["component/107",[2,0.4]],["title/108",[137,14.218,218,22.241,440,22.889,441,26.572,527,22.722]],["name/108",[218,0.822,527,0.84]],["text/108",[]],["component/108",[2,0.4]],["title/109",[0,67.357]],["name/109",[1,1.532]],["text/109",[]],["component/109",[2,0.4]],["title/110",[2,8.492,8,14.216,83,16.975,827,34.616]],["name/110",[1106,2.767]],["text/110",[2,1.793,5,2.914,6,0.933,8,2.904,14,1.131,15,1.075,16,1.672,17,1.064,27,1.838,33,1.434,36,2.339,38,1.162,48,1.289,52,2.59,67,1.011,73,3.136,83,2.494,87,1.398,90,1.596,95,1.039,96,2.852,97,2.027,98,1.232,103,1.867,119,2.23,125,1.345,127,1.272,137,3.281,156,1.398,158,3.014,174,0.998,183,1.596,185,1.21,194,2.636,207,1.156,210,1.054,220,3.968,221,3.629,222,1.232,226,1.096,249,1.281,255,1.472,256,1.698,271,2.067,281,1.016,285,1.376,299,0.994,300,1.801,301,1.281,311,1.577,320,2.56,326,0.94,334,5.364,336,5.532,346,2.685,350,6.583,384,4.637,385,1.721,399,1.801,432,1.21,433,1.864,435,1.698,437,1.899,438,1.149,448,3.313,453,1.831,454,1.422,458,1.515,475,1.721,526,1.515,533,1.698,539,1.41,544,1.579,554,1.446,567,2.141,585,1.654,594,2.134,600,1.5,608,1.938,629,1.746,646,2.297,669,1.773,692,1.562,742,1.345,773,2.592,789,1.398,812,1.654,827,5.848,833,1.675,835,1.899,852,4.427,864,1.938,865,1.721,870,1.864,882,1.698,907,2.141,931,1.899,935,1.366,947,1.5,950,2.141,966,1.698,992,2.54,1006,1.864,1008,5.428,1028,3.852,1029,2.141,1035,2.297,1046,2.141,1047,2.027,1048,2.141,1049,2.141,1050,2.297,1077,3.852,1078,2.297,1079,2.08,1082,1.366,1083,3.25,1107,2.546,1108,2.546,1109,3.852,1110,2.384,1111,2.212,1112,2.141,1113,1.801,1114,3.02,1115,3.852,1116,1.831,1117,4.269,1118,4.974,1119,2.29,1120,3.9,1121,2.546,1122,2.546,1123,2.546,1124,3.25,1125,2.546,1126,2.297,1127,2.027,1128,2.546,1129,2.546,1130,1.899,1131,2.546,1132,3.709,1133,2.546,1134,1.938,1135,2.297,1136,2.546,1137,2.546,1138,2.212,1139,1.899,1140,2.546,1141,2.141,1142,2.08,1143,2.297,1144,2.546,1145,1.864,1146,2.546,1147,2.546,1148,2.403,1149,2.546,1150,4.269,1151,2.027,1152,2.546,1153,2.546,1154,1.801,1155,2.141,1156,2.546,1157,2.546,1158,2.027,1159,2.546,1160,1.864,1161,2.546,1162,1.746]],["component/110",[2,0.4]],["title/111-1",[165,29.041,320,30.673]],["name/111-1",[]],["text/111-1",[]],["component/111-1",[]],["title/111-2",[165,29.041,320,30.673]],["name/111-2",[]],["text/111-2",[]],["component/111-2",[]],["title/111",[2,7.517,67,17.205,83,15.026,1041,28.885,1197,30.642]],["name/111",[67,0.636,1197,1.133]],["text/111",[2,1.502,7,2.49,13,2.427,17,1.778,27,1.831,36,2.73,54,2.034,67,3.693,73,1.432,83,3.393,88,1.998,95,3.169,105,2.098,124,2.009,126,2.874,153,2.375,156,2.336,158,3.625,165,1.869,181,3.577,182,3.577,187,3.837,192,1.624,210,1.761,211,4.414,220,4.414,222,2.059,226,1.831,256,2.836,297,3.395,311,2.377,320,1.975,397,3.695,432,2.021,437,3.173,438,2.905,445,4.414,466,2.876,473,1.822,475,2.876,503,2.698,508,2.395,525,2.231,527,2.231,530,4.801,558,2.73,563,3.114,571,4.553,574,4.712,604,2.437,765,4.665,773,5.255,774,3.577,815,4.49,817,3.577,827,3.009,849,5.909,898,5.125,930,3.837,1006,4.712,1007,4.015,1008,3.577,1041,4.292,1044,3.837,1045,3.837,1046,3.577,1047,3.387,1048,3.577,1049,3.577,1082,4.165,1109,3.837,1120,3.009,1197,3.009,1198,4.253,1199,4.253,1201,4.253,1202,3.387,1203,3.577,1204,3.695,1205,2.73,1206,4.253,1207,7.763,1208,4.253,1209,4.253,1210,4.253,1213,6.435,1214,4.253,1216,4.253,1217,3.577,1221,2.317,1222,3.475,1224,3.308,1225,3.577,4416,4.615,4417,4.615]],["component/111",[2,0.4]],["title/112-1",[452,52.612,453,47.525]],["name/112-1",[]],["text/112-1",[]],["component/112-1",[]],["title/112-2",[137,18.456,188,44.772,1163,56.223]],["name/112-2",[]],["text/112-2",[]],["component/112-2",[]],["title/112-3",[1164,67.357]],["name/112-3",[]],["text/112-3",[]],["component/112-3",[]],["title/112",[2,7.517,83,15.026,188,34.492,452,34.492,1164,36.426]],["name/112",[188,0.897,452,0.897,1164,0.948]],["text/112",[2,1.925,8,1.165,36,1.701,73,2.827,79,1.66,83,4.091,96,1.772,105,3.035,119,2.489,121,4.455,127,2.004,178,2.135,223,1.754,224,2.515,246,4.113,271,3.624,299,2.401,315,3.205,333,3.618,334,6.265,336,5.865,337,3.618,340,6.755,346,3.647,350,5.962,361,5.551,362,5.551,363,4.684,373,3.618,374,3.618,375,3.618,376,3.372,377,3.618,390,5.551,413,3.484,414,2.837,429,2.751,633,2.936,636,4.9,675,2.885,742,3.957,773,3.735,865,2.711,867,2.574,993,4.285,1082,2.151,1083,3.052,1118,8.624,1145,2.936,1165,7.487,1166,3.618,1167,4.01,1168,6.153,1169,6.153,1170,5.175,1171,5.551,1172,2.434,1173,2.751,1174,2.711,1175,4.01,1176,5.551,1177,4.01,1178,3.618,1179,3.372,1180,4.01,1181,2.606,1182,3.618,1183,4.01,1184,4.684,1185,4.01,1186,5.175,1187,4.01,1188,4.01,1189,3.618,1190,5.175,1191,4.01,1192,3.785,1193,4.01,1194,3.618]],["component/112",[2,0.4]],["title/113-1",[8,14.216,119,19.793,346,23.833,1593,38.965]],["name/113-1",[]],["text/113-1",[]],["component/113-1",[]],["title/113-2",[203,44.06,1130,49.288]],["name/113-2",[]],["text/113-2",[]],["component/113-2",[]],["title/113-3",[203,44.06,1508,50.288]],["name/113-3",[]],["text/113-3",[]],["component/113-3",[]],["title/113-4",[203,44.06,1248,42.408]],["name/113-4",[]],["text/113-4",[]],["component/113-4",[]],["title/113-5",[867,42.408,1291,52.612]],["name/113-5",[]],["text/113-5",[]],["component/113-5",[]],["title/113-6",[1594,52.612,1595,55.562]],["name/113-6",[]],["text/113-6",[]],["component/113-6",[]],["title/113-7",[36,23.851,96,24.844,130,19.142]],["name/113-7",[]],["text/113-7",[]],["component/113-7",[]],["title/113",[83,19.505,336,34.491,350,44.772]],["name/113",[1596,2.767]],["text/113",[2,0.619,4,1.601,5,0.766,6,3.278,7,2.173,8,2.69,11,0.942,14,1.16,15,2.769,19,1.341,25,2.453,27,1.878,28,0.802,31,0.889,32,0.966,33,0.816,36,2.137,41,1.305,44,1.601,46,0.994,48,1.806,52,1.227,53,1.748,54,1.249,55,1.009,58,1.435,61,0.677,67,0.576,71,0.802,72,0.854,76,1.742,83,0.503,93,2.825,95,2.056,96,3.483,97,4.472,98,1.264,99,2.446,107,2.535,118,1.913,119,2.95,125,0.766,126,2.733,127,5.234,130,1.485,132,0.846,148,1.056,152,1.219,156,0.796,159,0.838,160,1.458,165,1.567,168,0.689,173,1.897,176,2.142,184,0.871,190,2.648,191,1.471,192,1.362,194,0.693,203,2.909,206,1.234,209,0.766,224,2.236,230,1.412,234,2.138,246,1.435,249,1.794,250,1.173,258,1.351,270,1.307,271,1.264,272,1.742,285,0.783,289,0.862,290,2.66,297,1.559,298,0.697,299,1.391,301,3.3,322,1.127,324,0.899,326,0.965,336,3.445,346,3.704,385,0.98,399,3.973,407,1.305,428,1.025,431,1.719,432,3.467,438,1.179,443,0.83,446,0.899,448,0.871,473,1.119,474,0.802,480,1.423,481,0.783,484,1.009,492,0.76,502,0.854,509,0.966,525,0.76,530,1.081,541,1.988,551,1.009,557,1.025,573,0.93,584,0.816,585,0.942,597,1.554,598,0.98,600,2.57,613,2.773,623,1.638,641,0.755,650,1.061,658,0.862,668,1.103,688,0.919,740,1.435,741,2.031,773,3.982,775,4.275,789,4.595,791,1.127,794,1.184,802,1.192,810,2.196,820,0.627,827,5.16,851,0.93,867,0.93,870,1.061,917,1.154,934,0.942,935,0.777,952,2.196,966,1.742,967,2.714,968,1.103,992,0.862,1000,2.773,1016,1.103,1018,1.184,1082,0.777,1083,2.714,1104,1.602,1116,2.565,1119,0.777,1120,3.563,1124,1.988,1130,1.081,1139,1.081,1160,1.061,1197,4.64,1221,1.423,1248,3.605,1254,1.569,1290,2.196,1291,1.154,1294,1.025,1305,2.134,1314,0.766,1319,1.219,1323,2.142,1344,1.307,1378,0.909,1383,1.184,1387,0.823,1454,1.103,1461,0.83,1462,1.127,1499,1.742,1508,1.103,1569,0.76,1576,1.127,1581,1.154,1586,1.259,1587,2.196,1593,1.154,1594,3.473,1595,2.196,1597,1.307,1598,1.449,1599,1.307,1600,2.612,1601,2.61,1602,1.368,1603,1.307,1604,1.449,1605,1.307,1606,2.134,1607,1.219,1608,2.612,1609,2.356,1610,3.935,1611,1.449,1612,3.098,1613,1.449,1614,2.612,1615,1.449,1616,3.565,1617,3.668,1618,1.154,1619,1.307,1620,1.307,1621,1.449,1622,2.612,1623,0.966,1624,3.219,1625,1.307,1626,0.942,1627,1.025,1628,1.368,1629,1.449,1630,1.307,1631,1.219,1632,1.449,1633,2.612,1634,1.449,1635,1.307,1636,1.154,1637,1.009,1638,1.449,1639,1.061,1640,1.009,1641,1.154,1642,1.449,1643,1.449,1644,1.449,1645,1.449,1646,1.184,1647,1.307,1648,1.449,1649,1.184,1650,1.307,1651,7.112,1652,0.919,1653,1.307,1654,1.103,1655,1.449,1656,2.612,1657,1.219,1658,1.449,1659,2.356,1660,1.127,1661,1.307,1662,1.307,1663,1.449,1664,1.307,1665,1.307,1666,1.449,1667,1.449,1668,1.449,1669,1.307,1670,1.009,1671,1.103]],["component/113",[2,0.4]],["title/114-1",[892,59.605,1636,52.612]],["name/114-1",[]],["text/114-1",[]],["component/114-1",[]],["title/114",[867,42.408,1636,52.612]],["name/114",[867,1.776]],["text/114",[2,1.378,9,4.959,83,3.443,107,3.586,131,4.107,148,3.213,222,3.845,255,4.594,432,3.775,441,6.088,531,7.166,655,5.161,750,4.294,805,6.448,815,4.594,867,5.098,895,5.371,1135,7.166,1334,6.178,1636,9.292,1673,6.68]],["component/114",[2,0.4]],["title/115-1",[16,24.284]],["name/115-1",[]],["text/115-1",[]],["component/115-1",[]],["title/115-2",[16,20.032,1249,24.113]],["name/115-2",[]],["text/115-2",[]],["component/115-2",[]],["title/115-3",[13,18.453,815,28.297,1221,26.663,2083,29.705]],["name/115-3",[]],["text/115-3",[]],["component/115-3",[]],["title/115",[192,25.234,272,44.06]],["name/115",[192,0.612,272,1.068]],["text/115",[2,1.168,4,0.875,6,3.174,7,1.746,8,2.657,10,2.631,11,2.206,13,2.538,14,2.4,16,2.326,23,1.638,24,1.195,25,3.239,28,2.499,31,2.083,33,1.912,36,1.44,38,2.06,39,3.313,40,4.718,41,1.697,43,4.085,44,1.524,45,1.029,48,1.72,49,1.638,52,0.915,53,0.955,54,0.931,61,0.909,66,1.356,71,1.079,73,1.52,75,0.955,81,1.25,83,1.178,88,1.595,92,2.083,95,1.386,96,0.861,98,0.943,102,2.564,103,1.485,106,0.943,107,1.533,125,1.029,126,0.87,127,0.973,130,2.739,136,1.159,137,2.011,142,2.638,148,0.788,149,0.949,161,1.336,164,1.85,170,3.214,172,1.731,174,0.763,183,1.221,185,1.614,192,2.764,193,2.704,198,1.159,205,1.455,207,0.884,209,1.029,210,2.237,222,2.615,223,1.485,226,0.839,229,1.667,230,1.053,231,0.784,235,3.237,245,1.336,246,1.07,254,2.234,255,1.126,259,1.551,272,3.01,281,2.156,285,1.836,289,1.159,290,1.453,292,1.061,297,2.362,299,0.76,301,2.718,308,1.817,311,1.667,326,1.254,367,2.171,382,1.697,432,0.926,443,1.116,480,1.061,481,1.053,487,1.07,506,1.356,509,1.299,518,1.079,519,1.097,522,2.206,526,1.159,534,1.453,551,1.356,565,0.865,584,1.097,588,1.533,594,0.973,603,2.794,641,1.768,665,1.356,731,1.137,749,1.361,756,1.482,765,1.17,778,2.704,789,1.07,802,2.797,815,1.126,820,1.469,846,0.961,861,1.453,894,1.282,932,1.426,940,1.356,947,2,1006,1.426,1059,1.592,1110,1.896,1124,1.482,1160,1.426,1221,1.061,1249,1.972,1280,1.654,1299,2.912,1323,1.17,1334,1.515,1386,1.453,1405,1.221,1417,1.061,1461,1.116,1468,1.037,1471,1.299,1527,2.402,1528,2.061,1534,3.35,1565,1.426,1569,2.367,1573,1.299,1574,2.264,1576,1.515,1579,1.17,1583,1.515,1589,1.426,1606,1.592,1620,1.757,1624,1.946,1627,1.378,1630,1.757,1659,1.757,1671,1.482,1734,1.592,1744,2.855,1808,3.069,1891,1.551,1931,2.329,1952,1.453,2081,1.221,2083,2.061,2288,1.266,2325,1.592,2336,1.551,2337,1.757,2338,1.638,2339,1.948,2340,1.757,2341,1.638,2342,1.453,2343,3.603,2344,3.427,2345,1.948,2346,1.378,2347,2.206,2348,2.774,2349,1.638,2350,1.426,2351,1.948,2352,1.592,2353,1.948,2354,1.592,2355,3.395,2356,1.948,2357,3.395,2358,1.948,2359,1.235,2360,1.692,2361,1.378,2362,1.692,2365,4.513,2366,3.395,2367,1.482,2368,1.692,2369,1.948,4418,2.113,4419,2.113]],["component/115",[2,0.4]],["title/116-1",[2379,80.094]],["name/116-1",[]],["text/116-1",[]],["component/116-1",[]],["title/116-2",[112,35.963]],["name/116-2",[]],["text/116-2",[]],["component/116-2",[]],["title/116",[174,25.897,606,36.29]],["name/116",[1,1.532]],["text/116",[2,1.69,19,5.001,52,3.621,100,5.795,112,4.373,148,3.119,174,4.185,215,6.881,222,5.168,225,7.576,289,4.587,308,3.105,515,6.484,606,5.864,820,4.215,1104,4.73,1378,4.835]],["component/116",[2,0.4]],["title/117",[174,22.038,199,30.396,606,30.883]],["name/117",[1321,2.152]],["text/117",[]],["component/117",[2,0.4]],["title/118",[174,22.038,199,30.396,606,30.883]],["name/118",[1321,2.152]],["text/118",[]],["component/118",[2,0.4]],["title/119-1",[158,26.253,618,34.866,2318,50.723]],["name/119-1",[]],["text/119-1",[]],["component/119-1",[]],["title/119-2",[8,14.216,98,23.685,1323,29.403,1343,38.965]],["name/119-2",[]],["text/119-2",[]],["component/119-2",[]],["title/119-3",[16,20.032,96,29.194]],["name/119-3",[]],["text/119-3",[]],["component/119-3",[]],["title/119-4",[73,22.246,223,28.891]],["name/119-4",[]],["text/119-4",[]],["component/119-4",[]],["title/119-5",[73,22.246,820,28.595]],["name/119-5",[]],["text/119-5",[]],["component/119-5",[]],["title/119-6",[73,22.246,627,37.864]],["name/119-6",[]],["text/119-6",[]],["component/119-6",[]],["title/119",[174,22.038,215,33.451,606,30.883]],["name/119",[1343,2.204]],["text/119",[0,0.91,2,0.347,4,0.899,6,1.023,7,0.419,8,1.811,13,1.311,15,0.845,16,2.613,19,0.556,21,0.885,25,1.723,26,0.524,27,2.188,30,2.029,34,0.615,37,1.228,38,0.913,40,1.227,52,1.633,53,0.531,54,1.662,57,1.09,59,0.595,61,0.505,63,0.581,66,1.393,67,2.018,70,1.228,71,0.599,73,1.17,74,0.664,75,1.704,77,0.403,79,1.439,83,0.376,84,0.657,88,1.915,93,0.924,96,1.802,98,1.683,103,0.473,105,0.987,106,0.969,110,0.615,112,0.486,118,0.581,124,3.229,126,0.483,127,0.541,131,0.56,132,0.632,133,0.743,137,3.868,141,1.317,143,2.402,148,2.648,154,0.514,155,0.62,156,1.099,158,0.505,159,0.626,160,0.604,162,0.595,164,0.59,165,0.476,173,2.21,174,0.784,175,1.712,177,0.703,178,1.065,192,0.764,194,0.518,200,0.703,205,0.464,206,1.642,209,1.837,210,1.688,212,1.318,215,4.223,218,2.826,219,0.842,222,1.351,223,3.308,229,1.284,231,1.124,234,1.368,244,1.274,248,0.913,250,1.253,257,0.541,271,0.524,275,0.793,276,1.099,281,1.387,286,0.62,288,0.599,289,0.644,292,0.59,297,0.473,298,1.342,299,1.357,301,0.545,308,0.806,311,0.4,312,0.862,314,1.509,319,2.573,326,0.4,346,0.975,367,0.963,382,0.541,407,2.037,428,1.974,436,0.754,438,3.415,448,0.65,454,0.604,473,2.177,478,0.824,480,3.396,489,0.977,492,0.568,493,1.439,494,1.373,505,0.664,518,0.599,519,1.958,525,1.05,535,0.664,539,0.599,543,0.722,553,1.894,554,0.615,565,1.544,575,0.65,592,0.581,603,0.56,618,0.671,627,0.62,636,0.862,661,1.974,665,0.754,696,0.754,732,0.671,740,0.595,750,0.585,802,0.494,820,1.208,846,0.534,858,0.793,878,0.842,935,2.472,938,0.732,940,1.943,968,0.824,981,0.455,1082,0.581,1103,0.65,1104,0.664,1119,1.074,1229,2.28,1241,1.599,1253,2.646,1254,2.089,1256,0.885,1262,0.743,1264,1.861,1265,0.657,1283,0.824,1294,0.766,1296,0.808,1313,0.977,1314,3.611,1316,0.754,1333,0.977,1339,0.679,1343,3.67,1354,0.732,1378,2.18,1383,0.885,1390,1.082,1397,0.842,1398,0.91,1408,2.318,1409,0.91,1416,3.849,1427,2.545,1435,0.695,1438,1.255,1449,2.35,1451,0.754,1454,0.824,1466,0.766,1488,0.842,1501,0.599,1516,0.664,1576,0.842,1579,1.203,1624,1.599,1640,0.754,1652,1.269,1680,0.862,1760,1.836,1828,0.91,1840,0.91,1985,0.754,2009,0.977,2045,0.766,2053,0.842,2058,0.743,2071,0.779,2076,0.885,2083,1.215,2102,0.862,2132,2.593,2133,1.439,2140,1.785,2158,0.824,2294,0.722,2337,0.977,2342,0.808,2378,0.703,2416,1.083,2417,1.083,2418,1.083,2419,1.083,2420,1.083,2421,2.791,2422,2.791,2423,1.083,2424,1.083,2425,1.083,2426,1.083,2427,1.083,2428,0.977,2429,1.083,2430,1.083,2431,1.083,2432,1.083,2433,1.083,2434,2.001,2435,1.083,2436,1.083,2437,1.083,2438,1.083,2439,1.083,2440,5.505,2441,3.476,2442,5.442,2443,4.077,2444,1.083,2445,2.001,2446,0.977,2447,1.022,2448,1.083,2449,1.083,2450,0.793,2451,1.022,2452,1.083,2453,1.083,2454,2.001,2455,1.083,2456,1.083,2457,1.083,2458,1.083,2459,1.083,2460,1.083,2461,2.17,2462,1.083,2463,2.001,2464,1.635,2465,2.222,2466,6.232,2467,1.739,2468,1.083,2469,2.001,2470,1.083,2471,2.001,2472,2.791,2473,2.001,2474,1.083,2475,1.083,2476,2.001,2477,0.91,2478,1.083,2479,1.083,2480,1.083,2481,1.083,2482,0.842,2483,1.083,2484,1.083,2485,1.083,2486,1.083,2487,1.083,2488,1.083,2489,2.001,2490,1.083,2491,2.001,2492,1.083,2493,1.083,2494,1.083,2495,1.083,2496,1.083,2497,0.885,2498,1.083,2499,1.523,2500,0.862,2501,1.465,2502,0.91,2503,0.977,2504,0.862,2505,1.805,2506,1.805,2507,2.001,2508,3.476,2509,2.001,2510,2.001,2511,1.083,2512,2.001,2513,2.001,2514,1.805,2515,2.001,2516,2.001,2517,2.001,2518,1.083,2519,1.083,2520,1.683,2521,2.001,2522,2.001,2523,2.001,2524,1.805,2525,1.594,2526,1.083,2527,1.083,2528,2.001,2529,3.476,2530,1.083,2531,2.001,2532,2.001,2533,1.083,2534,1.594,2535,1.083,2536,1.083,2537,1.083,2538,1.083,2539,0.977,2540,0.754,2541,0.842,2542,2.001,2543,1.083,2544,1.083,2545,1.083,2546,1.083,4420,1.175]],["component/119",[2,0.4]],["title/120-1",[8,14.216,98,23.685,312,21.071,1323,29.403]],["name/120-1",[]],["text/120-1",[]],["component/120-1",[]],["title/120-2",[73,22.246,223,28.891]],["name/120-2",[]],["text/120-2",[]],["component/120-2",[]],["title/120-3",[73,22.246,820,28.595]],["name/120-3",[]],["text/120-3",[]],["component/120-3",[]],["title/120-4",[73,22.246,627,37.864]],["name/120-4",[]],["text/120-4",[]],["component/120-4",[]],["title/120",[112,25.245,174,22.038,606,30.883]],["name/120",[312,1.192]],["text/120",[2,0.711,4,1.496,5,0.706,6,1.742,7,0.517,8,1.931,13,1.793,14,0.593,15,1.73,16,2.015,19,1.245,20,0.828,25,1.246,26,1.984,27,1.765,28,0.739,30,1.416,34,0.758,36,1.029,38,1.521,41,0.667,44,0.599,45,1.761,52,1.565,53,0.654,54,2.545,57,1.816,59,1.332,61,0.623,66,0.93,67,3.015,68,1.416,73,2.355,75,0.654,77,0.497,79,1.004,88,2.5,89,0.916,95,1.941,96,2.352,98,1.613,103,0.584,105,1.196,106,1.613,107,1.504,109,0.879,112,0.599,116,0.96,124,2.246,126,2.123,130,0.826,131,1.254,137,3.941,141,2.193,147,0.828,148,1.658,158,0.623,159,0.772,160,1.354,162,0.733,163,1.016,164,2.233,165,0.587,168,1.153,171,2.066,173,2.316,175,2.044,177,0.868,185,1.153,191,0.752,192,1.816,194,0.638,200,0.868,205,1.039,209,1.761,210,1.697,212,0.631,218,0.686,223,2.906,228,0.802,229,0.896,231,1.65,248,0.609,250,1.496,254,0.879,271,0.646,281,0.533,289,2.438,291,0.903,292,0.728,297,1.792,298,1.972,299,1.3,301,0.672,308,1.342,310,1.107,311,1.514,312,1.044,315,1.735,319,2.289,320,0.62,382,1.212,407,2.048,438,3.648,446,1.504,454,1.861,467,2.441,469,0.716,473,1.428,474,0.739,480,1.322,487,0.733,492,0.7,518,1.845,519,1.366,522,0.868,525,0.7,527,0.7,553,2.9,565,0.593,566,1.091,573,0.857,575,1.457,584,0.752,585,0.868,588,1.504,592,1.788,594,1.212,603,1.723,604,1.39,606,1.332,627,2.725,692,0.819,732,0.828,740,0.733,742,2.513,795,0.828,820,2.708,823,0.945,843,1.038,846,1.196,851,0.857,913,0.772,935,0.716,938,0.903,940,0.93,947,0.787,948,1.809,981,1.722,1041,0.89,1113,0.945,1119,0.716,1134,2.536,1221,0.728,1226,1.39,1249,2.124,1254,2.463,1258,2.044,1264,0.89,1265,2.886,1283,1.016,1314,1.761,1316,1.689,1341,1.038,1342,0.916,1346,1.091,1356,1.416,1405,0.837,1408,0.89,1413,0.663,1416,3.277,1423,0.903,1449,0.903,1451,0.93,1466,0.945,1473,2.514,1490,0.752,1516,0.819,1540,2.397,1549,1.038,1559,1.664,1569,0.7,1578,0.977,1579,0.802,1583,1.038,1624,0.765,1660,1.038,1760,1.596,1779,1.091,1790,1.038,1997,1.063,1998,0.903,2004,0.945,2051,1.64,2058,0.916,2083,2.488,2140,2.105,2205,1.982,2294,1.617,2335,1.038,2409,1.123,2461,1.038,2464,1.982,2465,1.063,2477,1.123,2482,1.038,2497,1.091,2499,1.846,2500,1.063,2501,0.977,2502,1.123,2503,1.205,2504,1.063,2505,1.205,2534,4.634,2539,1.205,2540,1.689,2541,2.592,2547,1.205,2548,1.063,2549,1.335,2550,1.335,2551,1.205,2552,1.123,2553,1.26,2554,1.16,2555,1.205,2556,2.107,2557,1.982,2558,1.205,2559,3.869,2560,1.335,2561,1.335,2562,1.335,2563,1.335,2564,1.982,2565,1.26,2566,2.425,2567,1.205,2568,2.188,2569,2.188,2570,3.006,2571,1.931,2572,1.16,2573,1.123,2574,1.335,2575,1.335,2576,1.063,2577,2.188,2578,2.188,2579,1.846,2580,1.205,2581,1.205,2582,2.107,2583,1.205,2584,2.895,2585,1.205,2586,1.123,2587,1.335,2588,1.205,2589,1.205,2590,1.091,2591,1.205,2592,1.335,2593,1.205,2594,1.335,2595,1.335,2596,1.335,2597,1.335,2598,1.335,2599,1.205,2600,1.26,2601,1.205,2602,1.335,2603,1.16,2604,1.335,2605,1.205,2606,1.335,2607,1.335,2608,1.335,2609,1.335,2610,1.335,2611,1.335]],["component/120",[2,0.4]],["title/121",[174,22.038,216,32.222,606,30.883]],["name/121",[1543,2.026]],["text/121",[]],["component/121",[2,0.4]],["title/122-1",[63,23.237,205,18.558,206,20.464,1626,28.145,2673,34.492]],["name/122-1",[]],["text/122-1",[]],["component/122-1",[]],["title/122-2",[63,35.444,228,39.701]],["name/122-2",[]],["text/122-2",[]],["component/122-2",[]],["title/122-3",[229,24.407,820,28.595]],["name/122-3",[]],["text/122-3",[]],["component/122-3",[]],["title/122-4",[16,24.284]],["name/122-4",[]],["text/122-4",[]],["component/122-4",[]],["title/122-5",[73,22.246,223,28.891]],["name/122-5",[]],["text/122-5",[]],["component/122-5",[]],["title/122-6",[73,22.246,820,28.595]],["name/122-6",[]],["text/122-6",[]],["component/122-6",[]],["title/122",[2,6.113,63,18.898,83,12.22,96,15.565,323,24.529,1626,22.89,2352,28.785]],["name/122",[63,0.859,1626,1.041]],["text/122",[2,0.926,3,0.743,4,1.172,5,0.405,6,1.139,7,0.797,8,1.368,10,1.938,11,0.498,13,1.776,14,0.34,15,1.988,16,1.854,17,0.605,19,0.743,20,0.475,25,1.883,26,1.263,27,2.028,28,0.424,30,0.845,34,0.435,36,1.107,38,0.94,39,0.783,40,1.566,41,0.383,45,1.088,46,0.525,48,1.575,52,1.226,53,0.375,54,1.248,56,0.435,57,1.122,58,0.795,59,1.434,61,1.452,63,3.403,67,2.896,68,0.447,71,0.802,73,1.796,74,0.47,75,1.009,76,0.511,77,0.285,79,0.853,83,0.266,87,0.421,88,1.869,89,0.525,93,0.354,95,1.624,96,1.926,98,0.997,99,0.525,102,0.823,105,1.287,106,1.263,107,1.404,109,0.504,111,0.583,112,0.925,119,0.31,123,0.475,124,1.88,126,1.388,130,0.493,131,1.065,132,0.447,137,3.818,140,0.46,141,1.718,142,1.339,143,0.451,147,0.898,148,1.609,154,0.364,155,0.83,157,0.61,158,0.962,159,1.509,161,1.79,162,0.795,163,0.583,164,1.122,165,0.636,168,0.688,171,0.898,173,1.731,174,1.219,175,0.47,185,1.24,191,0.431,192,1.665,198,0.456,205,1.332,206,1.233,207,0.657,210,1.805,212,0.362,217,0.511,218,0.393,222,0.371,223,2.867,224,0.48,228,0.46,229,1.149,230,0.414,231,1.252,234,1.009,243,1.024,244,0.35,248,0.661,249,0.385,250,1.6,254,0.953,258,1.843,267,0.644,271,0.701,276,0.421,281,2.343,288,1.445,289,0.861,291,0.518,297,1.141,298,3.051,299,1.701,301,1.036,308,0.829,310,0.661,311,1.47,312,0.624,314,0.414,319,0.428,320,0.356,326,1.86,327,0.583,346,1.271,367,1.256,382,1.304,407,1.988,438,2.864,446,0.898,454,1.15,458,0.861,467,1.596,469,1.105,474,0.424,480,0.789,487,1.131,492,0.402,495,1.987,496,2.862,502,0.451,505,0.47,518,2.203,519,1.47,522,0.498,527,0.402,536,1.08,540,0.428,541,0.583,553,2.375,558,0.492,565,0.34,566,0.626,573,0.492,575,0.87,584,1.16,585,0.498,588,1.968,592,0.777,594,1.029,603,1.843,604,0.439,606,1.434,623,0.48,627,0.83,628,0.542,634,2.837,641,0.754,656,0.879,677,0.596,679,0.533,696,1.434,712,0.431,731,0.447,732,1.619,742,1.088,756,0.583,770,0.428,771,0.525,773,1.25,795,0.898,820,2.745,823,1.024,832,0.583,833,0.953,843,0.596,846,0.714,851,0.492,868,0.583,882,0.511,908,0.475,913,1.798,935,1.4,947,0.451,948,0.571,981,0.865,1041,0.511,1079,0.626,1113,0.542,1119,0.411,1134,0.583,1160,0.561,1184,0.583,1221,1.122,1229,0.626,1241,0.83,1249,1.947,1254,2.391,1258,1.263,1264,0.511,1265,2.163,1280,0.705,1287,1.18,1299,0.627,1307,0.447,1314,1.883,1315,1.065,1316,1.817,1331,0.626,1354,0.518,1373,1.024,1387,1.17,1390,0.414,1392,0.551,1395,0.443,1405,1.291,1406,0.61,1408,4.506,1413,0.719,1416,0.815,1420,1.322,1423,2.69,1427,4.947,1437,0.492,1451,0.533,1461,0.83,1468,0.408,1473,2.441,1474,0.551,1490,0.815,1494,0.626,1498,0.61,1501,0.802,1516,1.263,1527,0.542,1528,0.465,1540,1.481,1549,1.126,1559,1.79,1569,0.402,1574,0.511,1578,1.06,1579,0.87,1626,0.498,1637,0.533,1660,0.596,1670,0.533,1727,0.492,1729,0.486,1760,0.504,1779,0.626,1784,0.691,1790,0.596,1801,0.542,1872,0.626,1985,1.008,1998,0.518,2051,0.518,2064,1.153,2081,0.48,2082,0.644,2140,0.393,2194,0.665,2205,1.183,2253,0.61,2272,0.596,2288,2.833,2291,0.414,2294,3.557,2335,0.596,2342,0.571,2359,0.486,2378,1.338,2406,0.533,2409,1.218,2450,0.561,2461,0.596,2464,1.183,2465,0.61,2477,0.644,2482,0.596,2497,1.683,2524,3.589,2525,0.61,2534,2.078,2540,1.008,2541,0.596,2548,0.61,2554,0.665,2555,0.691,2556,1.258,2557,0.626,2558,0.691,2564,1.183,2567,0.691,2568,0.691,2569,0.691,2570,1.306,2572,0.665,2573,0.644,2577,0.691,2578,0.691,2579,1.987,2580,2.355,2581,0.691,2582,2.267,2583,1.306,2584,2.701,2585,1.306,2586,1.218,2588,0.691,2589,0.691,2590,1.683,2591,0.691,2605,1.306,2652,1.367,2655,0.626,2656,0.665,2658,0.723,2659,0.723,2660,0.723,2661,0.723,2662,0.723,2663,0.723,2666,0.723,2673,4.248,2674,5.034,2675,1.448,2676,4.71,2677,1.448,2678,0.766,2679,0.766,2680,1.448,2681,3.589,2682,0.691,2683,2.059,2684,1.306,2685,0.551,2686,2.805,2687,0.626,2688,1.448,2689,2.61,2690,1.448,2691,2.61,2692,0.766,2693,0.766,2694,0.766,2695,0.766,2696,0.766,2697,0.766,2698,1.448,2699,0.766,2700,0.766,2701,0.766,2702,1.448,2703,1.448,2704,1.448,2705,1.448,2706,1.448,2707,0.766,2708,0.766,2709,0.766,2710,2.61,2711,1.448,2712,0.723,2713,0.723,2714,0.665,2715,0.596,2716,0.766,2717,0.766,2718,0.766,2719,0.644,2720,0.766,2721,0.766,2727,0.766,2728,0.766,2729,1.448,2730,0.691,2731,1.448,4421,4.73,4422,0.831]],["component/122",[2,0.4]],["title/123-1",[16,17.047,130,19.142,1249,20.519]],["name/123-1",[]],["text/123-1",[]],["component/123-1",[]],["title/123-2",[1299,34.666]],["name/123-2",[]],["text/123-2",[]],["component/123-2",[]],["title/123",[1521,48.371,1522,50.288]],["name/123",[1521,1.173,1522,1.219]],["text/123",[7,2.402,16,2.562,17,2.596,25,2.322,40,4.222,67,2.467,73,2.091,75,3.044,77,2.313,130,2.877,142,3.639,226,2.674,229,2.294,257,3.103,281,2.478,308,2.5,310,2.834,311,3.122,312,2.674,326,2.294,594,3.103,770,3.468,786,3.468,871,3.559,1226,3.559,1280,4.116,1299,2.688,1315,4.369,1413,4.195,1417,4.604,1420,3.145,1521,6.186,1522,7.311,1541,5.027,1808,3.527,2140,4.339,2141,3.659,2291,3.357,2304,5.602,2305,5.602,2643,4.718,2744,3.591,2959,7.623,2960,3.809,2961,3.809,2962,3.809,2963,3.731,2964,3.809,2965,3.695]],["component/123",[2,0.4]],["title/124",[8,16.335,148,22.742,314,30.396]],["name/124",[8,0.465,314,0.866]],["text/124",[2,1.466,8,1.804,9,3.103,20,3.851,48,3.145,57,4.604,75,3.044,77,3.577,83,3.332,92,3.809,95,2.535,111,4.727,137,2.038,148,4.5,154,4.016,165,3.714,173,2.701,178,3.306,192,2.372,198,3.695,210,2.571,220,3.167,244,2.834,247,4.199,250,2.788,258,3.211,286,3.559,298,2.987,314,6.015,527,3.257,543,4.141,614,5.222,740,3.411,850,4.546,950,5.222,1205,3.986,1420,4.28,1449,5.713,1778,4.199,2045,4.393,2053,4.83,2152,5.222,2291,4.568,2672,8.45]],["component/124",[2,0.4]],["title/125-1",[1417,30.636,1468,29.934,2966,50.723]],["name/125-1",[]],["text/125-1",[]],["component/125-1",[]],["title/125-2",[16,17.047,130,19.142,1249,20.519]],["name/125-2",[]],["text/125-2",[]],["component/125-2",[]],["title/125-3",[1299,34.666]],["name/125-3",[]],["text/125-3",[]],["component/125-3",[]],["title/125-4",[107,29.827,172,33.691]],["name/125-4",[]],["text/125-4",[]],["component/125-4",[]],["title/125",[38,22.335,165,21.508,992,29.112,1722,27.556]],["name/125",[165,1.216]],["text/125",[4,1.103,5,1.298,6,1.969,7,2.956,8,1.204,10,3.073,13,2.881,16,1.256,17,1.027,25,0.919,26,1.189,33,2.333,36,2.279,37,4.322,38,4.315,40,2.362,48,3.195,54,1.175,59,1.349,66,1.711,67,0.976,73,3.095,74,1.507,77,0.915,96,1.086,110,1.396,119,3.596,124,1.958,130,1.411,137,1.36,141,2.727,142,2.314,143,3.717,149,1.197,155,1.408,162,2.276,165,4.62,166,2.206,172,1.253,190,1.491,214,5.028,223,1.074,226,1.784,229,1.531,231,0.989,234,1.204,248,2.453,257,1.228,272,1.638,281,1.653,285,1.328,291,1.661,297,1.074,308,1.668,310,1.121,311,1.531,312,1.058,326,2.331,367,1.182,432,1.168,438,1.871,469,1.318,481,1.328,497,1.421,506,1.711,558,1.577,561,1.87,565,1.091,590,1.685,594,1.228,641,1.279,642,1.911,656,3.262,679,3.741,731,2.418,749,1.661,770,4.54,786,1.372,802,1.121,825,3.801,857,3.154,871,1.408,913,2.396,992,3.754,1170,5.306,1186,2.066,1226,1.408,1249,1.512,1252,1.738,1280,2.018,1299,1.793,1307,3.136,1314,1.298,1315,2.778,1339,1.541,1378,1.541,1387,1.396,1390,2.905,1395,2.396,1413,3.132,1417,2.928,1420,2.098,1457,1.911,1468,1.308,1473,1.507,1479,3.154,1480,2.216,1541,2.465,1722,3.553,1873,4.09,1927,1.833,2031,1.541,2140,2.759,2141,1.448,2291,1.328,2349,2.066,2359,2.628,2361,2.931,2500,3.299,2525,1.956,2643,3.523,2685,4.538,2744,1.421,2951,2.066,2960,1.507,2961,1.507,2962,1.507,2963,1.476,2964,1.507,2965,1.462,2966,3.738,2967,5.373,2968,2.457,2969,2.457,2970,6.309,2971,5.373,2972,1.87,2973,8.315,2974,1.911,2975,4.143,2976,4.143,2977,2.216,2978,2.066,2979,2.457,2980,2.007,2981,2.457,2982,2.457,2983,2.457]],["component/125",[2,0.4]],["title/126-1",[69,32.969,79,17.935,789,23.792,992,25.77,2347,28.145]],["name/126-1",[]],["text/126-1",[]],["component/126-1",[]],["title/126-2",[16,17.047,130,19.142,1249,20.519]],["name/126-2",[]],["text/126-2",[]],["component/126-2",[]],["title/126-3",[43,48.623]],["name/126-3",[]],["text/126-3",[]],["component/126-3",[]],["title/126-4",[1299,34.666]],["name/126-4",[]],["text/126-4",[]],["component/126-4",[]],["title/126-5",[2343,53.413]],["name/126-5",[]],["text/126-5",[]],["component/126-5",[]],["title/126-6",[107,29.827,172,33.691]],["name/126-6",[]],["text/126-6",[]],["component/126-6",[]],["title/126",[1526,63.781]],["name/126",[69,2.106]],["text/126",[6,1.982,7,2.093,8,1.957,9,1.7,10,3.74,16,1.64,17,1.422,25,1.272,36,1.443,37,3.319,38,2.47,40,2.961,43,4.09,50,2.004,51,1.723,53,1.667,54,1.626,67,2.149,69,5.128,73,2.268,77,1.267,79,1.408,87,1.868,95,1.389,128,4.614,130,2.294,137,2.93,142,3.306,149,1.657,154,2.571,174,2.121,178,1.811,185,1.616,226,2.33,229,1.256,244,3.825,248,2.47,250,1.527,257,1.7,258,1.759,276,2.972,281,2.159,292,1.853,308,1.369,310,1.552,311,1.999,312,1.465,325,2.044,326,1.256,473,1.457,588,3.041,594,1.7,645,2.3,770,3.021,786,1.899,789,1.868,792,2.21,802,1.552,871,1.949,992,2.024,1119,2.902,1181,2.21,1226,1.949,1249,2.459,1251,2.406,1280,2.635,1288,2.065,1299,1.472,1310,2.183,1315,4.334,1356,1.985,1375,2.238,1387,1.932,1395,1.967,1413,3.345,1417,4.863,1420,2.74,1473,2.087,1490,1.915,1526,2.708,1541,3.219,1569,1.784,1639,2.49,1729,2.157,1931,2.333,2140,2.778,2141,2.004,2291,4.531,2343,2.268,2344,4.273,2347,2.21,2359,2.157,2643,3.021,2744,1.967,2782,2.708,2960,2.087,2961,2.087,2962,2.087,2963,2.044,2964,2.087,2965,2.024,2984,6.927,2985,5.41,2986,3.068,2987,4.308,2988,4.881,2989,6.457,2990,3.068,2991,7.107,2992,2.86,2993,2.708,2994,2.86,2995,3.068,2996,2.589,2997,3.068,2998,5.505,2999,2.708,3000,3.068,3001,3.068]],["component/126",[2,0.4]],["title/127-1",[16,17.047,130,19.142,1249,20.519]],["name/127-1",[]],["text/127-1",[]],["component/127-1",[]],["title/127-2",[1299,34.666]],["name/127-2",[]],["text/127-2",[]],["component/127-2",[]],["title/127",[199,35.719,1172,40.108]],["name/127",[199,0.866,1172,0.972]],["text/127",[7,2.417,16,1.894,17,2.611,25,2.336,40,4.235,67,2.481,73,2.103,77,2.327,88,2.934,119,2.527,130,2.888,142,3.653,199,5.209,226,2.69,229,2.308,257,3.122,281,2.492,308,2.515,310,2.851,311,3.134,312,2.69,326,2.308,594,3.122,786,3.488,871,3.58,1172,5.849,1226,3.58,1280,4.132,1299,3.672,1315,4.982,1413,3.101,1417,4.623,1420,3.164,1541,5.048,2140,4.356,2141,3.681,2291,4.587,2643,4.737,2744,3.612,2960,3.832,2961,3.832,2962,3.832,2963,3.754,2964,3.832,2965,3.716,3002,6.247,3003,6.247]],["component/127",[2,0.4]],["title/128-1",[25,21.028,107,25.382,172,28.671]],["name/128-1",[]],["text/128-1",[]],["component/128-1",[]],["title/128",[25,21.028,1172,34.131,1654,42.794]],["name/128",[]],["text/128",[2,1.227,4,1.644,6,2.59,8,2.324,19,1.88,20,2.271,22,2.59,25,4.06,26,3.421,27,2.469,30,2.137,31,3.518,39,1.979,40,4.696,43,2.223,44,1.644,53,3.465,67,2.278,71,2.028,72,2.157,73,2.38,81,2.35,83,2.452,93,2.647,95,1.495,98,3.872,99,2.511,105,1.806,106,1.772,131,1.893,194,2.742,200,2.379,201,2.476,209,1.935,233,2.59,256,2.442,271,1.772,285,1.979,288,2.028,293,2.992,296,2.681,302,2.322,326,2.611,367,1.761,432,1.74,474,2.028,481,1.979,497,2.117,533,3.824,539,2.028,550,2.35,553,1.995,565,1.626,573,2.35,603,1.893,690,2.223,731,2.137,742,1.935,754,2.59,765,2.2,778,2.916,851,2.35,902,6.141,906,2.41,1110,3.947,1172,4.856,1173,3.933,1282,2.511,1299,1.585,1314,1.935,1468,3.763,1474,2.634,1501,2.028,1569,1.921,1597,3.303,1609,3.303,1637,2.55,1654,7.011,1689,2.59,1727,2.35,1880,4.822,2130,2.681,2173,2.681,2296,2.787,2346,6.811,2382,2.35,2520,4.822,2613,2.731,3004,2.992,3005,2.916,3006,3.303,3007,5.734,3008,7.068,3009,3.456,3010,3.456,3011,5.173,3012,3.303,3013,2.379,3014,3.661,3015,2.916,3016,3.303,3017,3.661,3018,3.079,3019,7.068,3020,3.661,3021,3.303,3022,3.661,3023,3.661]],["component/128",[2,0.4]],["title/129-1",[992,47.653]],["name/129-1",[]],["text/129-1",[]],["component/129-1",[]],["title/129-2",[16,17.047,130,19.142,1249,20.519]],["name/129-2",[]],["text/129-2",[]],["component/129-2",[]],["title/129-3",[3013,52.045]],["name/129-3",[]],["text/129-3",[]],["component/129-3",[]],["title/129-4",[25,21.028,107,25.382,172,28.671]],["name/129-4",[]],["text/129-4",[]],["component/129-4",[]],["title/129-5",[13,24.916,749,26.482]],["name/129-5",[]],["text/129-5",[]],["component/129-5",[]],["title/129",[1173,54.939]],["name/129",[1173,1.898]],["text/129",[1,1.99,2,0.762,4,1.614,6,0.965,7,1.7,8,2.13,12,1.23,13,1.355,17,1.101,19,1.845,25,1.643,26,0.708,28,1.459,33,0.824,34,3.21,36,0.621,38,0.668,40,2.705,41,0.731,44,1.183,47,0.976,48,1.334,51,0.741,52,1.237,53,0.717,57,0.797,61,1.23,67,2.911,72,0.862,73,1.479,77,0.545,83,0.508,88,1.237,92,0.898,93,1.216,98,1.275,107,1.189,110,0.831,113,1.583,118,0.785,119,0.592,123,0.907,128,0.879,130,0.897,137,1.855,142,1.548,148,0.592,149,2.14,154,1.252,168,0.695,170,0.768,172,0.746,183,1.652,203,0.976,205,1.129,206,1.698,211,1.004,223,2.217,226,1.548,229,0.973,231,1.447,246,0.804,248,0.668,271,0.708,281,2.255,284,0.898,288,2.433,299,0.571,308,1.061,309,1.004,310,0.668,311,1.328,312,0.63,326,2.436,346,0.713,438,1.984,451,1.32,454,0.817,469,3.747,473,0.627,481,1.424,492,0.768,497,3.268,525,1.382,540,0.817,550,0.939,551,1.835,553,0.797,565,3.102,588,0.661,592,0.785,594,0.731,627,3.239,641,1.872,656,0.888,658,0.871,659,1.138,688,0.928,689,0.963,712,4.601,740,0.804,746,1.138,749,2.032,764,1.004,770,1.471,807,1.004,819,2.971,820,2.664,830,1.052,846,0.722,851,0.939,866,3.242,872,2.377,906,1.734,913,0.846,923,1.23,926,0.951,948,1.092,965,1.929,966,0.976,981,2.13,1082,2.357,1091,2.042,1104,0.898,1110,0.817,1116,1.052,1154,1.035,1172,4.637,1173,5.761,1226,0.839,1249,1.603,1252,3.998,1280,1.283,1286,1.23,1287,1.51,1296,1.092,1298,1.071,1307,2.564,1311,1.052,1314,1.392,1315,1.362,1356,0.854,1373,1.035,1375,0.963,1387,3.21,1390,1.424,1395,0.846,1413,2.181,1414,1.671,1416,3.466,1449,1.781,1463,3.712,1468,2.339,1490,2.024,1494,1.196,1501,0.81,1502,1.23,1506,1.019,1528,0.888,1531,1.196,1561,1.004,1584,1.196,1612,1.271,1631,1.23,1637,1.019,1683,0.963,1689,1.035,1701,2.098,1707,1.895,1722,2.856,1733,1.271,1788,1.165,1891,1.165,1903,4.591,1940,1.781,2028,2.335,2031,2.254,2075,1.114,2088,1.138,2135,1.929,2139,1.23,2140,1.353,2146,2.098,2158,1.114,2273,1.196,2346,2.542,2361,1.035,2378,0.951,2382,0.939,2643,0.817,2719,1.23,2744,0.846,2972,1.114,2974,1.138,2984,1.32,3004,4.143,3005,1.165,3013,3.295,3024,2.377,3025,5.071,3026,5.071,3027,1.463,3028,2.635,3029,6.595,3030,5.651,3031,2.377,3032,1.463,3033,1.463,3034,1.463,3035,3.242,3036,3.594,3037,1.463,3038,2.635,3039,1.463,3040,1.463,3041,1.463,3042,2.795,3043,1.463,3044,1.463,3045,1.381,3046,2.635,3047,1.463,3048,1.463,3049,1.463,3050,1.463,3051,1.463,3052,2.377,3053,2.635,3054,1.32,3055,1.463,3056,1.463,3057,1.463,3058,1.463,3059,1.32,3060,1.463,3061,1.463,3062,1.463,3063,1.463,3064,1.463,3065,1.463,3066,1.463,3067,1.463,3068,1.463,3069,1.463,3070,1.463,3071,2.635,3072,3.382,3073,2.635,3074,1.463,3075,1.32,3076,0.951,3077,1.32,3078,0.928,3079,1.32,3080,1.757,3081,1.32,3082,1.32,3083,2.377,3084,3.059,3085,1.32,3086,2.377,3087,1.32,3088,2.377,3089,1.32,3090,1.32,3091,0.951,3092,1.32,3093,1.32,3094,1.32,3095,1.32,3096,2.892,3097,1.32,3098,1.32,3099,1.32,3100,1.32,3101,1.32,3102,1.019,3103,1.463,3104,3.59,3105,1.463,3106,2.487,3107,1.463,3108,1.463,3109,1.463,3110,1.463,3111,1.463,3112,1.463,3113,1.463,3114,1.463,3115,1.463,3116,1.463]],["component/129",[2,0.4]],["title/130-1",[16,17.047,130,19.142,1249,20.519]],["name/130-1",[]],["text/130-1",[]],["component/130-1",[]],["title/130",[3117,80.094]],["name/130",[3118,2.767]],["text/130",[]],["component/130",[2,0.4]],["title/131",[3119,67.357]],["name/131",[3119,2.327]],["text/131",[]],["component/131",[2,0.4]],["title/132",[1529,54.939]],["name/132",[1529,1.898]],["text/132",[]],["component/132",[2,0.4]],["title/133-1",[16,17.047,130,19.142,1249,20.519]],["name/133-1",[]],["text/133-1",[]],["component/133-1",[]],["title/133-2",[1299,34.666]],["name/133-2",[]],["text/133-2",[]],["component/133-2",[]],["title/133-3",[13,24.916,749,26.482]],["name/133-3",[]],["text/133-3",[]],["component/133-3",[]],["title/133-4",[73,22.246,326,24.407]],["name/133-4",[]],["text/133-4",[]],["component/133-4",[]],["title/133",[1470,60.964]],["name/133",[1255,1.958]],["text/133",[1,3.888,2,0.629,7,1.402,8,2.511,16,1.725,17,1.515,25,2.127,38,1.654,40,3.496,67,1.439,73,3.439,75,3.898,77,1.35,93,1.673,95,1.479,130,2.708,142,3.023,173,1.576,174,2.752,176,2.177,205,1.553,223,3.779,226,2.449,229,1.339,230,1.959,257,1.811,258,2.941,278,2.703,281,2.27,288,5.5,308,1.459,310,1.654,311,3.192,312,1.56,325,2.177,326,2.594,385,2.45,432,1.722,462,2.961,539,2.007,588,1.636,592,1.944,594,1.811,645,2.45,712,2.041,749,1.452,786,2.023,802,1.654,809,3.047,820,3.039,871,2.077,1110,2.023,1226,2.077,1255,4.024,1280,2.77,1287,2.077,1288,2.2,1298,2.653,1299,2.462,1308,2.416,1312,5.538,1315,4.113,1361,2.961,1384,4.091,1390,4.3,1395,4.599,1413,3.949,1414,2.298,1417,3.099,1420,1.835,1450,2.298,1452,2.758,1470,2.758,1541,3.384,1662,3.269,1873,5.344,2028,2.355,2031,4.403,2140,2.921,2141,2.135,2291,1.959,2294,3.793,2302,3.047,2303,3.269,2361,2.563,2534,2.886,2643,3.176,2744,2.096,2960,2.223,2961,2.223,2962,2.223,2963,2.177,2964,2.223,2965,2.156,3005,2.886,3076,2.355,3091,2.355,3096,2.385,3120,3.624,3121,6.334,3122,3.269,3123,4.648,3125,3.624,3126,3.624,3127,3.624]],["component/133",[2,0.4]],["title/134-1",[16,17.047,130,19.142,1249,20.519]],["name/134-1",[]],["text/134-1",[]],["component/134-1",[]],["title/134-2",[39,43.302]],["name/134-2",[]],["text/134-2",[]],["component/134-2",[]],["title/134-3",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/134-3",[]],["text/134-3",[]],["component/134-3",[]],["title/134-4",[13,24.916,805,42.931]],["name/134-4",[]],["text/134-4",[]],["component/134-4",[]],["title/134-5",[13,24.916,1759,49.288]],["name/134-5",[]],["text/134-5",[]],["component/134-5",[]],["title/134",[1478,58.64]],["name/134",[1478,2.026]],["text/134",[3,2.153,4,1.883,6,2.603,7,0.964,8,2.826,10,2.644,13,3.241,14,1.107,15,1.052,25,2.03,28,3.006,36,1.779,38,1.137,39,3.84,40,2.386,41,1.245,44,1.119,59,1.369,63,1.337,67,3.251,72,1.468,73,2.392,77,0.928,81,2.691,92,2.572,103,1.09,130,2.418,131,1.288,142,1.806,148,1.008,153,1.391,160,1.391,171,1.545,174,1.643,185,1.184,205,1.796,210,2.636,217,3.62,223,1.833,226,1.806,229,0.92,231,1.688,249,1.253,250,1.119,258,2.807,281,3.882,288,4.262,292,2.285,297,1.09,308,1.003,310,1.137,311,2.005,312,1.073,326,0.92,407,1.245,444,3.016,473,1.068,481,2.267,518,1.38,519,1.403,541,1.896,565,1.107,584,1.403,588,2.451,600,1.468,604,1.428,627,3.111,656,1.513,679,1.735,712,2.361,749,2.176,750,1.347,802,2.906,820,3.074,846,2.068,882,1.662,1145,6.292,1170,2.095,1181,3.527,1226,1.428,1249,0.909,1280,3.459,1312,2.92,1315,2.168,1336,1.824,1387,4.035,1395,3.682,1405,2.629,1406,1.984,1413,2.695,1416,2.361,1438,1.562,1461,1.428,1478,5.2,1490,3.057,1759,4.749,1760,1.64,1856,1.824,2224,2.248,2288,5.001,2299,2.248,2406,1.735,2685,1.792,2715,3.261,2858,3.526,3128,2.492,3129,2.492,3130,4.897,3131,6.366,3132,2.492,3133,2.492,3134,2.492,3135,2.248,3136,3.783,3137,2.248,3138,2.248,3139,2.248,3140,2.248,3141,2.248,3142,2.248,3143,2.248,3144,3.783,3145,3.783,3146,2.095,3147,2.248,3148,2.248,3149,3.783,3150,2.248,3151,1.938,3152,2.248,3153,2.248,3154,2.248,3155,2.248,3156,2.248,3157,9.5,3158,1.984,3159,2.492,3160,4.193,3161,2.492,3162,4.193,3163,2.492,3164,2.492,3165,2.492,3166,2.492,3167,2.492,3168,4.193,3169,2.492,3170,2.165,3171,2.492,3172,2.492,3173,2.492,3174,2.492,3175,2.492]],["component/134",[2,0.4]],["title/135-1",[1067,55.562,1172,40.108]],["name/135-1",[]],["text/135-1",[]],["component/135-1",[]],["title/135-2",[16,17.047,130,19.142,1249,20.519]],["name/135-2",[]],["text/135-2",[]],["component/135-2",[]],["title/135-3",[3013,52.045]],["name/135-3",[]],["text/135-3",[]],["component/135-3",[]],["title/135-4",[25,21.028,107,25.382,172,28.671]],["name/135-4",[]],["text/135-4",[]],["component/135-4",[]],["title/135-5",[13,24.916,749,26.482]],["name/135-5",[]],["text/135-5",[]],["component/135-5",[]],["title/135",[192,30.59]],["name/135",[3176,2.496]],["text/135",[2,1.071,4,1.341,6,1.785,7,1.155,8,1.415,14,3.163,15,1.261,25,3.147,26,1.445,36,2.067,37,1.832,38,1.363,40,3.13,41,1.492,44,1.341,51,2.468,52,1.403,61,1.394,67,3.116,73,2.988,77,1.112,83,1.036,92,1.832,98,2.358,99,2.048,103,1.306,126,1.334,130,1.659,142,2.657,149,1.455,171,1.852,192,2.357,206,1.411,226,2.657,228,1.794,229,1.103,248,1.363,250,1.341,281,1.944,288,2.698,308,1.202,310,1.363,311,2.28,312,1.286,326,3.278,346,1.455,438,3.214,443,1.711,447,2.378,474,3.417,497,2.817,536,2.228,540,1.668,565,2.741,575,1.794,588,1.348,603,1.544,627,4.495,656,2.958,712,2.744,744,2.148,749,1.197,764,2.048,770,2.721,820,3.395,906,1.965,907,2.511,935,1.602,981,3.295,1082,1.602,1091,1.696,1110,1.668,1127,2.378,1172,3.746,1173,3.342,1226,1.711,1249,1.09,1252,2.113,1280,2.373,1287,2.792,1315,1.544,1413,3.064,1414,3.09,1579,1.794,1631,2.511,1640,2.079,1716,2.511,1722,1.682,1760,3.206,1903,3.635,2028,4.626,2031,3.869,2071,2.148,2140,1.533,2146,3.88,2346,2.113,2361,2.113,2382,1.917,2520,4.097,2540,2.079,2573,2.511,2613,4.603,2643,2.721,2744,1.727,2865,2.273,2972,2.273,2987,3.88,3011,2.694,3013,3.166,3052,2.694,3072,1.992,3076,1.94,3077,2.694,3078,1.894,3079,2.694,3080,3.249,3081,2.694,3082,2.694,3083,4.395,3084,4.958,3085,2.694,3086,4.395,3087,2.694,3088,4.395,3089,2.694,3090,2.694,3091,1.94,3092,2.694,3093,2.694,3094,2.694,3095,2.694,3096,4.686,3097,2.694,3098,2.694,3099,2.694,3100,2.694,3101,2.694,3102,2.079,3176,2.694,3177,2.273,3178,2.694,3179,2.694,3180,2.694,3181,2.986,3182,2.694,3183,2.986,3184,2.986,3185,2.986,3186,2.511]],["component/135",[2,0.4]],["title/136-1",[16,17.047,130,19.142,1249,20.519]],["name/136-1",[]],["text/136-1",[]],["component/136-1",[]],["title/136-2",[1299,34.666]],["name/136-2",[]],["text/136-2",[]],["component/136-2",[]],["title/136",[1376,48.371,3187,52.612]],["name/136",[1376,1.173,3187,1.275]],["text/136",[7,2.334,16,1.829,17,2.522,25,2.256,40,4.159,67,2.396,73,2.031,77,2.247,130,2.82,142,4.074,226,2.597,229,2.228,257,3.014,281,2.407,308,2.429,310,2.753,311,3.06,312,2.597,326,3.06,438,3.74,594,3.014,786,3.368,871,3.457,1226,3.457,1280,4.035,1299,3.585,1315,4.283,1376,6.927,1413,4.113,1417,4.514,1420,3.055,1530,7.473,1541,4.928,2140,4.253,2141,3.554,2291,3.261,2406,5.768,2643,5.687,2744,3.488,2960,3.7,2961,3.7,2962,3.7,2963,3.625,2964,3.7,2965,3.589,2977,5.442,3187,7.534]],["component/136",[2,0.4]],["title/137-1",[6,17.93,44,21.971,67,19.437,100,29.112]],["name/137-1",[]],["text/137-1",[]],["component/137-1",[]],["title/137-2",[467,41.127]],["name/137-2",[]],["text/137-2",[]],["component/137-2",[]],["title/137",[]],["name/137",[1,1.532]],["text/137",[2,1.213,6,3.861,13,3.449,26,4.717,51,3.541,63,3.75,67,3.633,96,2.1,112,2.134,165,3.073,194,2.272,199,3.78,207,3.173,210,1.968,215,2.827,216,2.723,223,3.057,248,2.169,254,4.601,281,4.067,315,3.641,320,2.206,346,3.405,473,2.036,565,2.111,627,4.007,656,2.885,820,3.026,1173,4.795,1258,5.088,1259,4.201,1260,4.201,1295,5.321,1341,3.696,1342,3.26,1372,5.321,1376,5.118,1470,6.961,1473,4.289,1478,5.118,1521,5.118,1526,5.567,1529,4.795,1931,4.795,2350,5.118,2613,3.545,2893,3.996,2973,5.879,3119,5.879,3187,5.567,3188,6.991,3189,5.567,3190,6.991,3191,6.307,3193,6.991,3194,4.752,3195,6.991,3196,4.752]],["component/137",[2,0.4]],["title/138-1",[16,17.047,130,19.142,1249,20.519]],["name/138-1",[]],["text/138-1",[]],["component/138-1",[]],["title/138-2",[43,48.623]],["name/138-2",[]],["text/138-2",[]],["component/138-2",[]],["title/138-3",[2343,53.413]],["name/138-3",[]],["text/138-3",[]],["component/138-3",[]],["title/138-4",[1808,45.498]],["name/138-4",[]],["text/138-4",[]],["component/138-4",[]],["title/138-5",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/138-5",[]],["text/138-5",[]],["component/138-5",[]],["title/138",[1372,60.964]],["name/138",[3197,2.496]],["text/138",[6,2.087,7,1.404,8,2.513,9,1.051,10,2.774,13,3.619,14,2.126,15,1.532,16,2.284,17,0.879,24,1.29,25,0.787,36,0.892,38,1.657,40,2.503,43,2.906,45,1.112,48,1.065,50,1.239,51,1.065,53,1.779,54,1.006,61,0.982,66,1.465,67,1.442,73,0.708,76,1.403,77,0.783,79,0.871,95,2.869,113,1.264,128,3.422,130,1.939,136,2.159,137,2.473,142,3.243,149,1.768,154,2.707,156,1.155,159,1.216,160,1.175,162,1.155,168,1,171,1.304,173,1.579,174,1.423,175,1.29,178,1.12,185,2.275,205,0.901,210,0.871,223,1.587,226,0.906,229,0.777,231,0.847,244,3.633,250,0.944,254,1.384,258,1.088,271,1.757,281,1.91,288,2.651,292,1.146,301,1.058,308,1.927,309,5.46,310,0.96,311,1.768,312,0.906,319,2.027,326,2.104,382,3.212,432,3.054,444,1.513,448,1.264,469,1.128,473,0.901,561,1.601,565,0.934,588,3.4,603,2.475,606,1.993,627,2.08,689,2.388,712,1.185,752,2.527,765,5.004,770,3.18,792,1.367,802,2.185,815,1.216,820,0.91,935,3.055,1112,1.769,1114,3.386,1119,1.947,1172,2.906,1181,1.367,1226,1.205,1249,2.565,1251,1.488,1256,5.251,1280,1.768,1286,1.769,1287,1.205,1288,1.277,1300,6.795,1310,2.329,1315,2.945,1356,1.228,1372,3.643,1375,1.384,1386,1.569,1413,2.827,1417,4.104,1420,1.838,1447,1.769,1468,1.932,1471,1.403,1481,1.719,1490,1.185,1534,1.304,1569,1.904,1639,1.54,1729,1.334,1808,2.719,1845,3.15,1931,2.489,2135,2.657,2291,3.079,2343,1.403,2344,3.036,2359,3.036,2361,1.488,2406,2.527,2782,2.89,2822,1.675,2986,1.898,2987,2.89,2988,1.898,2989,4.789,2990,1.898,2991,5.597,2992,1.769,2993,1.675,2994,1.769,2995,1.898,2996,1.601,2997,1.898,2998,4.653,2999,1.675,3000,1.898,3001,1.898,3042,2.823,3197,1.898,3198,2.103,3199,2.103,3200,2.103,3201,3.629,3202,3.629,3203,2.103,3204,1.601,3205,4.787,3206,1.898,3207,1.898,3208,1.898,3209,7.028,3210,2.103,3211,3.629,3212,2.103,3213,1.769,3214,3.629,3215,2.103,3216,3.629,3217,2.103,3218,2.103]],["component/138",[2,0.4]],["title/139-1",[16,17.047,130,19.142,1249,20.519]],["name/139-1",[]],["text/139-1",[]],["component/139-1",[]],["title/139-2",[1299,34.666]],["name/139-2",[]],["text/139-2",[]],["component/139-2",[]],["title/139-3",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/139-3",[]],["text/139-3",[]],["component/139-3",[]],["title/139-4",[16,20.032,1249,24.113]],["name/139-4",[]],["text/139-4",[]],["component/139-4",[]],["title/139-5",[192,25.234,749,26.482]],["name/139-5",[]],["text/139-5",[]],["component/139-5",[]],["title/139-6",[73,22.246,326,24.407]],["name/139-6",[]],["text/139-6",[]],["component/139-6",[]],["title/139",[3189,63.781]],["name/139",[3189,2.204]],["text/139",[4,1.461,7,1.259,8,2.175,10,1.585,13,3.092,14,1.445,16,2.653,17,1.36,25,1.217,36,2.215,40,3.291,51,1.648,67,2.074,73,2.76,77,1.212,95,1.328,103,2.284,128,3.138,130,2.549,142,3.224,153,2.916,168,1.547,185,1.547,192,1.243,205,1.394,210,2.709,212,2.467,226,1.401,229,1.202,230,1.759,231,1.31,257,1.626,278,2.428,281,2.084,286,1.865,308,1.31,310,1.485,311,1.929,312,1.401,325,1.955,326,2.766,367,1.565,385,2.2,407,1.626,412,2.936,432,1.547,466,2.2,588,3.38,594,1.626,667,2.302,712,3.684,749,3.286,750,1.759,786,1.817,789,3.593,792,2.114,802,1.485,830,2.341,871,1.865,939,2.17,981,1.367,1110,1.817,1226,1.865,1249,2.387,1255,2.302,1280,2.544,1287,3.749,1288,1.975,1299,2.26,1307,1.899,1308,2.17,1310,2.089,1315,3.871,1361,5.345,1387,3.716,1395,1.882,1413,4.746,1414,2.064,1417,2.846,1420,1.648,1450,2.064,1452,2.477,1541,3.107,1931,4.487,2028,2.114,2031,4.102,2081,3.275,2140,2.682,2141,1.917,2291,1.759,2302,2.736,2303,2.936,2359,2.064,2367,3.975,2378,2.114,2643,2.916,2744,1.882,2960,1.996,2961,1.996,2962,1.996,2963,1.955,2964,1.996,2965,1.936,3072,2.17,3076,2.114,3078,5.833,3080,2.17,3091,2.114,3096,2.142,3121,7.896,3122,2.936,3123,6.699,3189,6.528,3219,2.936,3220,3.254,3221,2.827,3222,3.254,3223,3.254,3224,2.531,3225,3.254,3226,2.659,3227,2.477]],["component/139",[2,0.4]],["title/140-1",[16,17.047,130,19.142,1249,20.519]],["name/140-1",[]],["text/140-1",[]],["component/140-1",[]],["title/140-2",[63,35.444,1299,28.595]],["name/140-2",[]],["text/140-2",[]],["component/140-2",[]],["title/140-3",[1299,34.666]],["name/140-3",[]],["text/140-3",[]],["component/140-3",[]],["title/140-4",[63,35.444,64,52.612]],["name/140-4",[]],["text/140-4",[]],["component/140-4",[]],["title/140-5",[1299,34.666]],["name/140-5",[]],["text/140-5",[]],["component/140-5",[]],["title/140-6",[39,43.302]],["name/140-6",[]],["text/140-6",[]],["component/140-6",[]],["title/140-7",[63,35.444,65,47.525]],["name/140-7",[]],["text/140-7",[]],["component/140-7",[]],["title/140-8",[1299,34.666]],["name/140-8",[]],["text/140-8",[]],["component/140-8",[]],["title/140-9",[39,43.302]],["name/140-9",[]],["text/140-9",[]],["component/140-9",[]],["title/140-10",[67,26.244,565,29.349]],["name/140-10",[]],["text/140-10",[]],["component/140-10",[]],["title/140-11",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/140-11",[]],["text/140-11",[]],["component/140-11",[]],["title/140-12",[16,20.032,1249,24.113]],["name/140-12",[]],["text/140-12",[]],["component/140-12",[]],["title/140-13",[192,25.234,749,26.482]],["name/140-13",[]],["text/140-13",[]],["component/140-13",[]],["title/140-14",[1103,39.701,3228,46.739]],["name/140-14",[]],["text/140-14",[]],["component/140-14",[]],["title/140-15",[73,22.246,326,24.407]],["name/140-15",[]],["text/140-15",[]],["component/140-15",[]],["title/140-16",[8,19.195,3229,49.288]],["name/140-16",[]],["text/140-16",[]],["component/140-16",[]],["title/140-17",[231,32.25]],["name/140-17",[]],["text/140-17",[]],["component/140-17",[]],["title/140",[63,35.444,3230,66.069]],["name/140",[63,1.485]],["text/140",[3,0.518,6,0.687,7,1.016,8,1.989,10,1.279,13,3.266,14,1.717,16,1.328,17,1.098,24,1.611,25,1.228,28,0.559,33,1.479,37,1.611,38,1.499,39,2.369,40,2.629,49,2.208,51,1.957,56,0.573,59,1.03,63,4.499,64,1.493,65,1.348,67,2.09,72,1.105,73,2.463,77,0.978,88,0.474,96,2.14,103,0.82,108,0.803,125,0.991,126,0.451,130,1.791,142,3.15,148,0.408,149,0.491,168,0.479,174,2.062,183,3.299,185,1.837,192,0.716,205,1.407,206,0.886,210,2.006,217,2.922,223,3.1,226,1.664,229,1.213,231,1.556,244,2.73,245,3.005,257,1.312,258,2.505,280,0.91,281,3.346,288,4.051,300,1.326,301,1.652,308,1.057,310,1.199,311,1.943,312,1.131,326,1.943,367,0.485,382,0.504,407,0.937,438,2.375,446,1.628,448,0.606,518,1.038,539,0.559,565,0.448,588,4.021,594,1.312,603,0.522,604,1.074,618,0.626,641,0.525,679,0.703,689,0.664,712,2.728,749,2.26,750,1.42,786,1.466,805,1.218,819,3.812,820,2.096,830,1.348,833,0.664,846,1.62,871,1.505,913,0.583,939,0.673,963,2.615,981,0.424,1091,1.065,1103,2.911,1110,0.563,1162,0.692,1181,2.847,1226,1.505,1248,4.394,1249,1.41,1252,0.714,1253,0.768,1254,0.606,1262,0.692,1280,2.134,1287,2.776,1288,0.612,1299,1.896,1307,1.094,1308,0.673,1309,0.726,1311,0.726,1312,0.703,1315,2.915,1356,0.589,1387,1.865,1390,1.42,1392,2.362,1393,1.858,1395,0.583,1405,1.647,1408,6.281,1413,4.163,1414,0.64,1417,2.387,1420,1.33,1427,4.818,1438,1.176,1450,0.64,1456,0.824,1473,1.15,1490,2.728,1505,2.146,1541,2.607,1607,0.848,1682,0.803,1708,0.803,1722,0.568,1759,1.399,1856,1.372,2028,1.706,2031,1.647,2081,1.176,2140,2.487,2141,1.547,2288,5.247,2291,1.42,2378,0.656,2406,0.703,2643,3.675,2655,0.824,2681,5.086,2682,1.691,2685,1.348,2686,4.37,2715,2.554,2744,1.518,2822,1.493,2858,2.761,2960,1.611,2961,1.611,2962,1.611,2963,1.578,2964,1.611,2965,1.562,2987,2.091,3072,0.673,3076,1.218,3078,3.576,3080,0.673,3084,0.703,3091,0.656,3096,0.664,3102,0.703,3135,1.691,3136,2.962,3137,1.691,3138,1.691,3139,1.691,3140,1.691,3141,1.691,3142,1.691,3143,1.691,3144,2.962,3145,2.962,3146,1.577,3147,1.691,3148,1.691,3149,2.962,3150,1.691,3151,1.458,3152,1.691,3153,1.691,3154,1.691,3155,1.691,3156,1.691,3213,0.848,3224,0.785,3226,0.824,3227,0.768,3228,5.015,3231,2.281,3232,1.009,3239,1.009,3240,1.009,3241,0.876,3245,1.009,3246,1.009,3247,2.146,3248,1.009,3249,1.009,3250,1.009,3251,1.875,3252,1.009,3253,1.875,3254,1.875,3255,1.009,3256,1.009,3257,1.009,3258,1.009,3259,1.009,3260,1.875,3261,1.009,3262,1.009,3263,1.875,3264,0.753,3265,0.91,3266,0.848,3267,0.876,3268,0.848,3269,1.009,3270,1.009,3271,0.91,3272,1.009,3273,0.91,3274,1.009,3275,1.875,3276,0.91,3277,1.009,3278,1.009,3279,1.009,3280,1.009,3281,1.009,3282,1.009,3283,1.009,3284,1.009,3285,1.009,3286,1.009,3287,1.009,3293,1.009,3294,1.009,3295,1.009,3296,1.009,3297,1.009,3298,1.009,3299,1.875,3300,1.009,3301,1.009,3302,1.009,3303,1.009,3304,1.009,3305,1.009]],["component/140",[2,0.4]],["title/141-1",[16,17.047,130,19.142,1249,20.519]],["name/141-1",[]],["text/141-1",[]],["component/141-1",[]],["title/141-2",[1299,34.666]],["name/141-2",[]],["text/141-2",[]],["component/141-2",[]],["title/141-3",[16,20.032,1249,24.113]],["name/141-3",[]],["text/141-3",[]],["component/141-3",[]],["title/141-4",[36,28.028,867,42.408]],["name/141-4",[]],["text/141-4",[]],["component/141-4",[]],["title/141-5",[707,46.739,3306,66.069]],["name/141-5",[]],["text/141-5",[]],["component/141-5",[]],["title/141-6",[876,50.288,3307,53.988]],["name/141-6",[]],["text/141-6",[]],["component/141-6",[]],["title/141-7",[13,24.916,749,26.482]],["name/141-7",[]],["text/141-7",[]],["component/141-7",[]],["title/141-8",[73,22.246,326,24.407]],["name/141-8",[]],["text/141-8",[]],["component/141-8",[]],["title/141-9",[13,16.335,231,17.441,846,21.366,1259,26.028,1260,26.028]],["name/141-9",[]],["text/141-9",[]],["component/141-9",[]],["title/141-10",[8,19.195,3229,49.288]],["name/141-10",[]],["text/141-10",[]],["component/141-10",[]],["title/141-11",[107,22.09,172,24.952,1259,29.403,1260,29.403]],["name/141-11",[]],["text/141-11",[]],["component/141-11",[]],["title/141",[1259,39.701,1260,39.701]],["name/141",[2381,2.152]],["text/141",[2,0.563,4,1.715,6,0.364,7,0.384,8,1.813,10,0.484,13,1.964,14,0.821,15,0.78,16,1.579,17,1.356,18,1.33,19,1.331,25,2.631,26,1.57,27,0.428,28,0.55,31,0.61,33,1.826,36,1.376,38,0.454,40,2.289,41,0.924,48,1.312,50,1.089,52,0.467,53,2.349,55,0.692,56,1.05,61,0.464,66,0.692,67,1.721,68,0.58,70,1.99,71,1.024,72,1.089,73,1.88,77,0.37,83,0.641,84,0.607,87,1.015,88,0.868,95,0.406,96,0.817,102,0.564,103,0.434,106,1.57,110,0.564,112,1.164,113,1.111,119,0.402,128,0.597,130,2.395,142,2.687,149,0.9,158,0.464,166,0.529,168,0.472,173,0.804,185,0.878,192,0.379,205,2.054,206,0.469,207,0.451,210,1.073,214,0.654,218,0.949,223,1.418,225,0.773,226,0.796,227,0.692,229,0.957,230,0.999,231,0.744,235,0.889,244,1.744,246,0.546,249,0.93,250,0.446,257,0.497,258,0.514,266,0.756,268,0.812,275,0.727,281,2.898,284,1.134,286,0.569,291,1.25,293,0.812,295,5.113,297,0.434,298,0.478,299,0.388,301,0.5,308,1.043,310,0.454,311,0.957,312,0.428,319,1.032,324,0.616,325,1.111,326,2.599,346,1.86,367,0.478,376,0.836,432,0.878,438,1.17,443,0.569,446,1.607,458,0.591,466,0.672,467,0.949,469,2.794,477,1.172,481,1.401,497,1.876,503,2.423,511,0.715,527,0.521,552,0.791,558,0.638,562,0.791,563,0.727,565,0.821,570,0.896,576,2.107,578,3.042,584,0.56,585,0.646,594,0.924,598,2.193,600,1.089,604,0.569,618,1.146,627,1.059,645,3.522,651,0.727,654,1.233,656,0.603,667,0.703,688,2.057,707,4.804,712,1.826,731,1.079,739,0.654,749,0.741,750,1.401,751,1.438,752,3.017,765,1.111,786,0.555,789,1.015,794,0.812,798,2.179,802,1.744,807,1.268,815,0.575,819,1.25,820,1.404,833,2.134,846,1.884,847,3.573,851,0.638,852,1.268,857,1.407,858,1.897,865,0.672,867,5.15,871,0.569,876,0.756,878,2.971,894,0.654,908,0.616,934,0.646,939,0.663,951,0.756,961,0.836,967,0.756,981,0.776,1039,1.554,1082,0.533,1083,0.756,1091,0.564,1110,0.555,1119,0.533,1158,3.042,1174,0.672,1197,0.703,1205,0.638,1224,0.773,1226,0.569,1249,2.928,1250,0.773,1251,2.294,1254,1.111,1258,0.61,1259,4.228,1260,3.922,1261,2.727,1280,1.262,1287,1.859,1288,0.603,1298,1.897,1299,1.122,1307,1.893,1308,0.663,1309,0.715,1310,1.186,1311,0.715,1314,1.369,1315,1.677,1328,2.419,1337,0.773,1341,0.773,1342,0.682,1354,0.672,1356,0.58,1375,0.654,1384,0.715,1387,2.723,1390,0.999,1393,1.833,1413,2.943,1414,0.63,1416,0.56,1417,1.412,1420,1.312,1437,0.638,1450,1.172,1463,1.353,1471,0.663,1473,1.59,1492,1.554,1495,0.682,1499,0.663,1501,0.55,1512,0.863,1516,0.61,1528,2.319,1541,1.1,1551,0.791,1561,0.682,1579,0.597,1601,0.727,1617,0.836,1627,0.703,1641,0.791,1652,0.63,1689,0.703,1690,0.896,1716,0.836,1722,2.44,1727,1.186,1783,1.554,1845,2.514,1853,2.796,1865,2.583,1878,1.51,1883,1.554,1940,0.672,2028,2.107,2031,1.625,2048,0.646,2073,0.812,2077,0.741,2129,0.741,2130,0.727,2140,1.665,2141,0.585,2259,0.896,2291,0.999,2325,0.812,2341,3.212,2359,0.63,2378,0.646,2381,2.971,2390,4.525,2394,1.745,2405,1.745,2411,0.938,2428,0.896,2499,0.756,2500,0.791,2504,0.791,2525,1.472,2576,0.791,2643,2.908,2719,3.212,2744,0.575,2791,4.699,2893,0.836,2960,0.61,2961,0.61,2962,0.61,2963,0.597,2964,0.61,2965,0.591,2974,1.438,3015,0.791,3018,0.836,3054,0.896,3072,0.663,3076,0.646,3078,3.542,3080,0.663,3084,0.692,3091,0.646,3096,0.654,3102,0.692,3104,1.51,3179,0.896,3186,1.554,3213,1.554,3224,0.773,3244,0.863,3264,0.741,3307,2.65,3308,1.848,3309,1.848,3310,0.994,3311,0.994,3312,0.994,3313,0.994,3314,2.591,3315,0.994,3316,1.848,3317,1.848,3318,1.848,3319,1.848,3320,1.848,3321,0.994,3322,0.994,3323,0.994,3324,0.994,3325,2.117,3326,1.848,3327,1.606,3328,0.994,3329,1.848,3330,0.994,3331,0.994,3332,0.994,3333,0.994,3334,3.82,3335,0.994,3336,1.848,3337,0.994,3338,1.848,3339,0.994,3340,0.994,3341,1.848,3342,0.994,3345,0.994,3346,0.994,3347,0.863,3348,0.994,3349,0.994,3350,0.994,3351,0.836,3352,1.668,3353,0.896,3354,0.994,3355,0.994,3356,0.863,3357,0.994,3358,0.994,3359,0.994,3360,0.994,3361,0.994,3362,0.994,3367,0.994,3368,0.994,3370,0.994,3371,0.994,3373,1.848,3374,1.848,3375,1.848,3376,1.848,3377,0.994,3378,0.994,3382,0.994,3383,0.863,3384,0.994,3385,0.994,3411,0.994,3412,1.848,3413,0.994,3414,0.896,3415,0.994,3416,0.994,3417,0.994,3418,0.994,4423,1.078,4424,2.005,4425,1.078,4426,1.078,4427,1.078]],["component/141",[2,0.4]],["title/142-1",[16,17.047,130,19.142,1249,20.519]],["name/142-1",[]],["text/142-1",[]],["component/142-1",[]],["title/142-2",[1299,34.666]],["name/142-2",[]],["text/142-2",[]],["component/142-2",[]],["title/142",[6,17.93,207,22.212,346,23.833,3191,44.145]],["name/142",[6,0.587,346,0.78]],["text/142",[6,3.596,7,2.506,16,1.964,17,2.708,25,2.422,40,4.314,67,2.573,73,2.181,77,2.412,130,2.96,142,3.744,226,2.789,229,2.393,257,3.237,281,2.584,308,2.608,310,2.957,311,3.212,312,2.789,326,2.393,346,4.78,594,3.237,786,3.617,871,3.712,1226,3.712,1280,4.235,1299,3.763,1315,4.496,1413,3.216,1417,4.737,1420,3.28,1541,5.173,2140,4.464,2141,3.816,2291,3.502,2643,4.855,2744,3.746,2960,3.974,2961,3.974,2962,3.974,2963,3.892,2964,3.974,2965,3.854]],["component/142",[2,0.4]],["title/143-1",[16,17.047,130,19.142,1249,20.519]],["name/143-1",[]],["text/143-1",[]],["component/143-1",[]],["title/143-2",[1808,45.498]],["name/143-2",[]],["text/143-2",[]],["component/143-2",[]],["title/143-3",[16,20.032,1249,24.113]],["name/143-3",[]],["text/143-3",[]],["component/143-3",[]],["title/143-4",[13,24.916,749,26.482]],["name/143-4",[]],["text/143-4",[]],["component/143-4",[]],["title/143-5",[73,22.246,326,24.407]],["name/143-5",[]],["text/143-5",[]],["component/143-5",[]],["title/143-6",[8,19.195,3229,49.288]],["name/143-6",[]],["text/143-6",[]],["component/143-6",[]],["title/143",[220,33.691,2350,48.371]],["name/143",[2350,2.026]],["text/143",[2,0.484,6,1.022,7,1.782,8,2.197,10,1.358,13,3.522,14,2.046,16,2.293,17,1.166,25,2.828,26,1.35,36,1.183,38,4.6,40,3.324,41,1.394,44,1.252,50,1.643,51,2.333,61,1.302,67,2.713,73,1.551,76,1.86,77,1.039,87,1.532,95,1.138,102,1.584,104,1.942,112,1.252,115,2.279,124,2.176,126,2.057,130,1.568,136,2.74,138,1.659,142,1.983,154,2.189,162,1.532,173,2.004,185,2.189,205,1.195,210,1.155,226,1.983,229,1.03,231,1.854,235,2.216,244,1.273,248,1.273,276,1.532,281,1.838,308,1.123,310,1.273,311,2.524,312,1.201,320,1.295,326,1.701,382,1.394,432,1.325,473,1.973,474,2.55,561,2.123,565,1.239,587,2.042,588,2.079,603,1.442,627,1.598,641,1.452,712,3.847,731,2.688,749,1.846,750,2.49,770,3.285,786,1.557,789,1.532,802,1.273,939,1.86,981,1.171,1082,1.496,1110,2.572,1162,1.913,1226,1.598,1249,2.972,1250,2.169,1254,1.676,1280,2.243,1287,3.915,1288,1.693,1307,2.688,1308,1.86,1309,2.006,1310,1.79,1314,1.474,1315,3.042,1342,1.913,1356,1.628,1366,1.749,1393,4.162,1413,4.043,1414,1.769,1416,1.57,1417,3.722,1420,1.412,1534,1.729,1569,1.463,1727,1.79,1738,2.042,1808,3.88,1814,2.345,1931,1.913,1944,2.516,1945,2.516,2028,3.823,2031,3.689,2083,1.693,2157,2.516,2291,1.508,2324,1.913,2347,2.993,2350,5.961,2359,4.796,2361,1.973,2576,2.221,2782,2.221,2792,2.345,2989,3.873,2998,2.279,3072,1.86,3076,1.812,3078,5.923,3080,1.86,3084,1.942,3091,1.812,3096,1.835,3102,1.942,3104,3.763,3206,2.516,3207,2.516,3208,2.516,3224,2.169,3264,2.08,3426,2.789,3427,2.789,3428,2.516,3429,5.883,3430,2.789,3431,2.789,3432,2.516,3433,2.789,3434,2.789,3435,2.789,3436,2.789,3437,2.789,3438,2.789,3439,2.516]],["component/143",[2,0.4]],["title/144-1",[16,17.047,130,19.142,1249,20.519]],["name/144-1",[]],["text/144-1",[]],["component/144-1",[]],["title/144-2",[1299,34.666]],["name/144-2",[]],["text/144-2",[]],["component/144-2",[]],["title/144-3",[16,17.047,130,19.142,1249,20.519]],["name/144-3",[]],["text/144-3",[]],["component/144-3",[]],["title/144-4",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/144-4",[]],["text/144-4",[]],["component/144-4",[]],["title/144-5",[16,20.032,1249,24.113]],["name/144-5",[]],["text/144-5",[]],["component/144-5",[]],["title/144-6",[192,25.234,749,26.482]],["name/144-6",[]],["text/144-6",[]],["component/144-6",[]],["title/144",[2,9.757,1295,42.794,1299,24.334]],["name/144",[2,0.48]],["text/144",[2,1.521,6,2.402,7,1.686,8,1.905,10,2.123,13,2.972,16,3.427,17,1.822,25,2.452,40,3.853,67,2.604,70,5.377,73,1.468,77,1.623,96,1.926,130,2.984,142,3.393,164,2.375,210,2.714,222,2.11,223,1.906,226,2.823,229,1.61,231,1.755,257,2.178,281,2.616,308,1.755,310,1.99,311,2.911,312,1.877,326,2.422,367,2.097,438,2.96,533,2.907,565,1.936,594,2.178,603,2.254,627,2.498,739,2.869,749,3.513,750,2.356,786,2.434,820,1.886,871,2.498,981,1.831,1226,2.498,1249,3.739,1258,2.674,1280,3.193,1295,4.99,1299,2.837,1315,3.39,1390,2.356,1413,3.255,1417,3.572,1420,2.208,1541,3.9,2140,3.366,2141,2.568,2291,2.356,2643,4.894,2744,2.521,2960,2.674,2961,2.674,2962,2.674,2963,2.619,2964,2.674,2965,2.593,2996,3.318,3042,6.129,3231,3.787,3419,4.359,3420,4.359,3421,4.359,3422,4.359,3423,4.359,3424,4.359,3425,4.359]],["component/144",[2,0.4]],["title/145-1",[124,31.214,955,52.612]],["name/145-1",[]],["text/145-1",[]],["component/145-1",[]],["title/145-2",[67,26.244,1282,45.318]],["name/145-2",[]],["text/145-2",[]],["component/145-2",[]],["title/145-3",[25,18.301,183,30.683,934,31.796,2096,41.15]],["name/145-3",[]],["text/145-3",[]],["component/145-3",[]],["title/145-4",[16,13.133,185,20.586,382,21.646,588,19.554,2286,33.69]],["name/145-4",[]],["text/145-4",[]],["component/145-4",[]],["title/145-5",[15,33.811]],["name/145-5",[]],["text/145-5",[]],["component/145-5",[]],["title/145-6",[16,17.047,130,19.142,1249,20.519]],["name/145-6",[]],["text/145-6",[]],["component/145-6",[]],["title/145-7",[1299,34.666]],["name/145-7",[]],["text/145-7",[]],["component/145-7",[]],["title/145-8",[641,41.713]],["name/145-8",[]],["text/145-8",[]],["component/145-8",[]],["title/145-9",[980,53.413]],["name/145-9",[]],["text/145-9",[]],["component/145-9",[]],["title/145-10",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/145-10",[]],["text/145-10",[]],["component/145-10",[]],["title/145-11",[192,25.234,749,26.482]],["name/145-11",[]],["text/145-11",[]],["component/145-11",[]],["title/145-12",[1103,39.701,3228,46.739]],["name/145-12",[]],["text/145-12",[]],["component/145-12",[]],["title/145-13",[73,22.246,326,24.407]],["name/145-13",[]],["text/145-13",[]],["component/145-13",[]],["title/145-14",[36,20.758,742,25.858,2135,35.824,3608,44.145]],["name/145-14",[]],["text/145-14",[]],["component/145-14",[]],["title/145-15",[315,34.408,3247,53.988]],["name/145-15",[]],["text/145-15",[]],["component/145-15",[]],["title/145-16",[315,29.281,319,31.395,1416,31.663]],["name/145-16",[]],["text/145-16",[]],["component/145-16",[]],["title/145-17",[319,36.893,653,52.612]],["name/145-17",[]],["text/145-17",[]],["component/145-17",[]],["title/145-18",[319,27.324,1416,27.556,1528,29.705,3609,44.145]],["name/145-18",[]],["text/145-18",[]],["component/145-18",[]],["title/145-19",[319,31.063,487,19.349,1416,19.838,3610,31.78,3611,31.78,3612,31.78]],["name/145-19",[]],["text/145-19",[]],["component/145-19",[]],["title/145-20",[319,24.187,326,16.001,1416,24.393,3613,39.077,3614,43.314]],["name/145-20",[]],["text/145-20",[]],["component/145-20",[]],["title/145-21",[691,37.244,1416,27.556,2499,37.244,3615,44.145]],["name/145-21",[]],["text/145-21",[]],["component/145-21",[]],["title/145-22",[127,24.453,320,22.717,771,33.563,3444,39.985]],["name/145-22",[]],["text/145-22",[]],["component/145-22",[]],["title/145-23",[438,25.382,1373,39.774,3444,45.943]],["name/145-23",[]],["text/145-23",[]],["component/145-23",[]],["title/145-24",[8,19.195,3229,49.288]],["name/145-24",[]],["text/145-24",[]],["component/145-24",[]],["title/145-25",[1221,43.644]],["name/145-25",[]],["text/145-25",[]],["component/145-25",[]],["title/145",[315,34.408,3441,57.399]],["name/145",[315,1.441]],["text/145",[1,0.382,2,0.496,3,0.122,4,0.998,5,0.478,6,0.332,7,1.105,8,1.673,9,0.234,10,0.116,13,1.693,14,1.201,15,0.866,16,1.226,17,2.086,18,0.944,19,2.609,24,0.287,25,1.866,26,0.82,27,0.479,28,0.834,30,0.528,32,0.312,33,0.739,34,1.447,36,0.87,38,1.303,40,0.662,41,1.11,44,0.406,45,0.126,48,1.125,50,0.655,52,0.522,53,0.23,54,0.114,55,0.326,56,0.514,57,0.923,58,0.131,59,0.93,60,0.394,61,0.703,67,1.193,68,0.139,70,1.465,71,1.038,72,0.407,73,1.885,74,0.424,75,0.443,77,0.089,78,0.175,79,0.194,81,0.153,84,0.154,88,0.22,90,0.567,93,0.695,94,0.19,95,0.282,96,2.474,98,0.227,100,0.279,101,0.19,102,0.392,103,0.574,105,0.548,106,0.227,107,0.592,108,0.19,110,0.266,112,0.589,113,0.415,114,0.195,118,0.128,119,0.45,120,0.304,123,0.29,124,0.886,125,0.478,126,0.586,127,2.19,130,0.447,131,0.357,137,3.542,142,0.39,147,0.29,148,0.609,149,1.73,154,0.528,156,0.131,158,0.111,162,0.611,163,0.181,164,0.13,165,0.206,166,0.249,167,0.6,168,0.891,170,1.575,172,0.567,173,0.204,174,1.177,178,1.52,183,0.567,184,0.143,185,1.495,190,0.284,191,0.848,192,1.976,194,0.532,198,0.279,199,0.129,201,0.467,205,0.476,206,0.221,207,0.505,209,0.126,210,1.12,212,1.277,214,0.157,215,0.411,217,0.46,218,0.241,220,1.379,221,0.308,222,0.227,223,1.249,224,0.294,226,0.808,228,0.544,229,1.109,230,0.129,231,0.606,233,0.169,234,0.443,235,1.83,246,0.131,248,0.413,249,0.943,250,0.499,255,0.138,256,0.159,257,0.234,258,1.149,260,0.195,271,0.438,275,0.175,277,0.195,281,2.498,284,0.287,286,0.268,288,2.24,289,0.411,290,0.178,291,0.161,292,0.13,297,0.205,298,0.225,299,0.512,301,0.66,308,0.895,309,0.621,310,0.109,311,0.693,312,0.103,315,3.772,319,4.347,320,1.823,322,0.185,323,0.166,324,1.05,326,2.263,334,0.178,346,0.336,354,0.201,363,0.181,367,0.225,382,0.452,399,0.169,407,0.452,428,0.169,431,0.157,432,1.866,433,0.175,438,2.027,441,0.555,443,0.396,444,0.172,445,0.164,446,0.428,448,0.544,454,0.262,458,0.781,467,0.241,469,1.451,473,0.879,474,0.132,476,0.55,477,0.832,480,0.376,481,0.373,482,0.151,485,0.215,487,2.347,492,0.125,497,1.474,498,0.178,502,0.276,503,0.297,505,0.287,510,0.433,511,0.172,515,0.201,518,0.834,520,0.172,522,0.155,525,0.362,533,0.159,534,0.178,539,0.259,540,0.505,544,0.428,553,0.715,554,0.745,557,0.331,558,0.301,562,0.373,565,0.911,572,1.782,575,0.143,576,0.304,584,0.389,588,1.718,592,0.37,594,0.452,596,0.407,597,0.662,599,0.215,603,0.679,604,0.637,605,0.181,607,0.301,611,0.201,616,0.885,618,0.29,623,0.15,625,0.175,627,0.519,637,0.181,638,1.424,641,0.36,642,0.185,645,0.612,649,0.19,650,0.343,652,0.675,653,0.55,654,0.312,656,0.675,658,0.279,660,0.172,664,0.364,669,0.166,675,2.992,677,0.704,679,0.774,684,0.185,688,0.151,689,0.454,690,0.145,691,2.058,692,0.146,696,0.481,702,0.623,703,1.184,706,0.623,712,1.85,717,0.774,723,0.207,732,0.29,739,1.115,740,0.131,741,0.185,742,1.807,744,0.172,749,0.679,750,0.373,765,0.668,770,0.505,771,2.436,773,0.284,774,0.394,785,0.944,786,1.047,789,2.285,792,0.155,800,0.185,801,0.525,802,0.413,805,0.155,806,0.207,807,0.164,819,0.467,820,0.203,823,0.331,824,0.215,825,0.169,827,0.331,833,0.991,843,0.185,846,0.118,849,0.181,851,0.153,852,0.763,858,0.505,862,0.423,865,0.317,871,0.137,873,0.505,876,0.181,878,1.171,882,0.159,884,0.423,894,1.462,895,0.161,901,0.201,906,0.157,913,1.186,923,0.201,926,0.304,931,0.178,932,0.343,934,0.449,935,0.251,937,0.383,938,1.931,939,1.368,944,0.651,947,0.773,948,1.399,951,0.689,953,0.394,963,0.885,965,0.175,980,0.312,981,1.321,988,0.407,992,0.411,993,2.19,994,0.407,995,1.184,997,0.423,1000,0.865,1005,0.215,1006,0.343,1011,0.201,1018,0.195,1021,0.689,1038,0.201,1039,0.201,1042,0.19,1059,0.195,1082,0.597,1091,1.165,1101,0.178,1103,1.335,1104,0.146,1110,0.621,1113,0.169,1114,0.169,1116,0.497,1119,0.251,1120,0.488,1127,0.19,1130,0.515,1132,0.207,1134,0.525,1141,0.394,1143,0.215,1145,1.24,1151,0.55,1154,0.331,1160,0.175,1166,0.423,1178,0.215,1181,0.449,1186,0.394,1189,0.215,1194,0.423,1197,0.169,1205,0.153,1226,0.137,1229,0.195,1248,0.301,1249,0.871,1250,0.185,1251,0.928,1253,0.689,1254,1.974,1259,0.281,1260,0.143,1264,0.46,1265,0.675,1280,0.228,1283,0.525,1285,0.201,1287,0.752,1288,0.419,1294,0.169,1296,0.178,1298,0.961,1299,0.733,1307,2.428,1308,0.46,1309,0.172,1311,1.349,1312,2.381,1314,0.248,1315,0.97,1322,0.157,1323,0.668,1328,1.658,1334,0.704,1336,0.175,1346,2.453,1354,0.161,1356,0.879,1366,1.176,1373,0.488,1375,0.157,1378,1.286,1384,0.337,1385,0.383,1386,1.263,1387,0.745,1390,0.129,1391,0.394,1392,0.8,1393,0.488,1395,1.285,1402,0.407,1405,1.062,1408,0.742,1411,0.207,1413,1.698,1414,0.297,1416,1.523,1417,0.376,1420,0.121,1428,0.909,1429,0.488,1435,0.153,1437,0.153,1438,0.15,1444,0.178,1445,0.662,1448,0.185,1449,1.614,1450,0.955,1452,2.285,1456,0.195,1457,0.185,1461,0.137,1462,0.364,1468,0.592,1471,0.159,1473,0.424,1481,0.909,1490,1.345,1495,0.474,1497,0.207,1499,0.742,1501,0.616,1505,0.383,1506,0.326,1518,0.215,1519,0.423,1527,0.169,1528,1.028,1531,0.195,1540,0.8,1541,0.279,1555,0.201,1556,0.181,1561,0.321,1565,0.343,1569,0.475,1573,0.742,1574,0.603,1582,0.215,1594,0.19,1595,0.201,1601,0.175,1605,0.215,1606,0.195,1617,0.201,1623,0.159,1624,0.137,1635,0.423,1637,0.166,1639,0.175,1640,0.166,1650,0.215,1652,0.438,1653,0.215,1660,0.185,1661,0.215,1670,0.326,1673,1.104,1677,0.159,1683,0.732,1689,0.169,1701,1.045,1702,0.761,1707,0.172,1717,0.373,1722,0.954,1734,0.195,1759,1.124,1763,0.225,1771,0.64,1774,0.215,1787,0.207,1788,0.55,1790,0.185,1801,0.331,1827,0.581,1831,0.207,1845,0.308,1880,0.581,1891,0.19,1909,0.164,1938,0.157,1940,1.387,1966,0.207,1974,0.364,1979,1.239,1983,0.816,1994,0.215,1996,0.6,1997,0.19,2028,0.723,2031,0.567,2045,0.169,2047,0.207,2048,0.853,2059,0.201,2071,0.172,2075,0.689,2081,0.294,2088,0.364,2129,0.178,2130,0.343,2132,0.349,2135,0.175,2138,0.181,2140,0.773,2141,0.14,2147,0.19,2154,2.017,2158,0.357,2173,0.343,2177,0.215,2179,0.373,2220,0.935,2237,0.423,2272,0.364,2273,0.195,2288,1.219,2291,0.253,2296,0.689,2307,0.185,2329,0.195,2342,0.178,2347,0.155,2348,0.195,2349,0.201,2350,0.814,2363,0.423,2368,0.207,2374,0.207,2375,1.104,2378,0.449,2382,0.301,2401,0.394,2406,0.481,2442,0.19,2446,0.623,2461,0.364,2465,0.19,2467,0.407,2482,0.364,2499,0.689,2501,0.175,2502,0.581,2506,0.623,2514,0.215,2557,0.383,2576,0.19,2579,0.525,2593,0.623,2599,0.623,2601,0.623,2613,0.178,2615,0.373,2641,0.966,2643,0.621,2656,0.207,2673,0.373,2685,0.651,2687,0.383,2714,0.207,2715,0.364,2733,0.215,2742,0.343,2744,0.271,2756,0.623,2777,0.394,2807,0.394,2818,0.394,2859,0.215,2865,0.357,2869,0.195,2885,0.865,2917,0.215,2959,0.623,2960,0.146,2961,0.146,2962,0.146,2963,0.143,2964,0.146,2965,0.142,2972,0.181,2974,0.185,2978,0.201,2980,0.383,2992,0.201,3015,0.19,3031,0.215,3059,0.423,3072,0.159,3075,0.215,3076,0.304,3078,0.151,3080,0.159,3084,0.166,3091,0.155,3096,0.157,3102,0.166,3123,0.909,3130,0.423,3151,0.537,3158,0.55,3170,0.407,3177,0.181,3178,0.215,3204,0.181,3221,1.308,3226,0.739,3227,0.181,3228,1.451,3241,0.207,3247,0.195,3264,0.178,3307,0.383,3325,0.383,3327,0.407,3347,2.971,3351,0.394,3352,0.423,3356,0.207,3383,0.207,3392,0.225,3408,0.623,3409,0.72,3428,0.215,3432,0.423,3439,0.215,3441,0.407,3442,0.6,3443,1.77,3444,2.453,3445,0.225,3447,0.442,3448,0.225,3449,0.442,3450,0.225,3451,0.225,3453,0.442,3454,0.225,3455,0.225,3456,0.442,3457,0.225,3458,0.442,3459,0.407,3460,0.225,3461,0.225,3462,0.225,3463,0.442,3464,0.652,3465,0.225,3466,0.652,3467,0.652,3468,1.599,3469,1.05,3470,0.442,3471,0.442,3472,1.471,3473,0.652,3474,0.225,3477,0.215,3478,0.225,3479,0.442,3480,1.05,3481,1.05,3482,1.05,3483,0.442,3484,0.442,3485,0.442,3486,0.225,3487,0.442,3488,0.442,3489,0.442,3490,0.442,3491,0.442,3492,0.442,3493,0.442,3494,0.652,3495,0.442,3496,0.225,3497,0.225,3498,0.225,3499,1.05,3500,1.05,3501,1.05,3502,0.652,3503,0.652,3504,0.652,3505,1.239,3506,0.652,3507,0.442,3508,0.442,3509,0.225,3510,0.442,3511,0.225,3512,0.652,3513,0.423,3514,0.207,3515,0.225,3516,0.225,3517,0.225,3518,0.225,3519,0.225,3520,0.225,3521,0.225,3522,0.225,3523,0.225,3524,0.225,3525,0.966,3526,1.14,3527,2.405,3528,0.423,3529,0.423,3530,0.623,3531,0.225,3532,0.225,3533,0.225,3534,0.225,3535,0.225,3536,0.225,3537,0.215,3538,0.225,3539,0.225,3540,0.225,3541,0.225,3542,0.225,3543,0.225,3544,0.225,3545,0.225,3546,0.225,3547,0.652,3548,0.225,3549,0.225,3550,1.05,3551,4.033,3552,0.225,3553,1.239,3554,0.225,3555,0.225,3556,0.225,3557,0.225,3558,0.225,3559,0.854,3560,0.225,3561,1.05,3562,0.652,3563,0.442,3564,0.225,3565,0.225,3566,1.239,3567,0.225,3568,1.05,3569,2.005,3570,0.225,3571,0.225,3572,0.442,3573,0.225,3574,0.442,3575,0.652,3576,0.225,3577,0.225,3578,0.442,3579,0.225,3580,0.225,3581,0.225,3582,0.225,3583,0.225,3584,0.225,3585,0.225,3586,0.225,3587,0.225,3588,0.225,3589,0.225,3590,0.225,3591,0.225,3592,0.225,3593,0.225,3594,0.225,3595,0.442,3596,0.225,3597,0.225,3598,0.225,3599,0.225,3600,0.225,3601,0.225,3602,0.225,3603,0.225,3604,0.225,3605,0.225,3606,0.225,3607,0.225,3608,0.423,3609,0.423,3610,1.528,3611,0.423,3612,0.423,3613,0.215,3615,0.215,3616,0.238,3617,0.238,3618,0.238,3619,0.238,3620,0.468,3621,0.238,3622,0.238,3623,0.238,3624,0.468,3625,0.238,3626,2.222,3627,0.238,3628,1.112,3629,0.238,3630,1.112,3631,0.238,3632,0.69,3633,0.238,3634,0.69,3635,0.623,3636,0.238,3637,0.238,3638,0.238,3639,0.238,3640,0.238,3641,0.238,3642,0.238,3643,0.238,3644,0.468,3645,0.238,3646,0.238,3647,0.238,3648,0.652,3649,0.238,3650,0.238,3651,0.238,3652,0.238,3653,0.225,3654,0.238,3655,0.238,3657,0.238,3658,0.238,3659,0.238,3660,0.238,3661,0.238,3662,0.468,3663,1.599,3664,1.112,3665,0.238,3666,0.238,3667,0.238,3668,0.468,3669,0.238,3670,0.238,3671,0.238,3672,0.215,3673,0.69,3674,0.238,3675,0.468,3676,0.225,3677,0.238,3678,0.468,3679,0.69,3680,0.905,3681,0.238,3682,0.238,3683,0.238,3684,0.468,3685,0.238,3686,0.238,3687,0.238,3688,0.238,3689,0.238,3690,0.215,3691,0.238,3692,0.238,3693,0.238,3694,1.003,3695,0.238,3696,0.238,3697,0.238,3698,0.215,3699,0.238,3700,0.238,3701,0.238,3702,0.468,3703,0.468,3704,0.468,3705,0.816,3706,0.238,3707,0.468,3708,1.104,3709,0.238,3710,0.238,3711,0.761,3712,0.761,3713,0.69,3714,1.003,3715,0.238,3716,0.69,3717,0.69,3718,0.69,3719,1.312,3720,0.69,3721,0.238,3722,0.69,3723,0.238,3724,0.238,3725,0.69,3726,1.694,3727,0.69,3728,0.69,3729,0.69,3730,0.238,3731,0.238,3732,0.238,3733,0.238,3734,0.238,3735,0.69,3736,0.69,3737,0.69,3738,0.468,3739,0.69,3740,0.905,3741,0.238,3742,0.905,3743,1.112,3744,0.238,3745,0.238,3746,0.905,3747,0.238,3748,0.238,3749,0.238,3750,1.112,3751,1.112,3752,0.215,3753,0.238,3754,0.238,3755,0.238,3756,0.905,3757,0.468,3758,0.238,3759,0.238,3760,0.468,3761,0.468,3762,0.468,3763,0.238,3764,0.238,3765,0.238,3766,0.238,3767,0.201,3768,0.238,3769,0.238,3770,0.238,3771,0.238,3772,0.238,3773,0.238,3774,0.238,3775,0.238,3776,0.238,3777,0.238,3778,0.238,3779,0.238,3780,0.238,3781,0.468,3782,0.238,3783,0.238,3784,0.238,3785,0.238,3786,0.238,3787,0.215,3788,0.69,3789,0.238,3790,0.215,3791,0.238,3792,0.238,3793,0.238,3794,0.238,3795,0.238,3796,0.238,3797,0.215,3798,0.238,3799,0.238,3800,0.238,3801,0.238,3802,0.238,3803,0.238,3804,0.238,3805,0.238,3806,0.238,3807,0.238,3808,0.238,3809,0.238,3810,0.238,3811,0.238,3812,0.238,3813,0.238,3814,0.238,3815,0.238,3816,0.238,3817,0.238,3818,0.238,3819,0.238,3820,0.238,3821,0.238,3822,0.238,3823,0.238,3824,0.238,3825,0.238,3826,0.238,3827,0.238,3828,0.69,3829,0.238,3830,0.238,3831,0.238,3832,0.238,3833,0.468,3834,0.238,3835,0.238,3836,0.238,3837,0.238,3838,0.238,3839,0.238,3840,0.238,3841,0.238,3842,0.238,3843,0.69,3844,0.238,3845,0.207,3846,0.238,3847,0.238,3848,0.238,3849,0.238,3850,0.238,3851,0.238,3852,0.238,3853,0.238,3854,0.238,3855,0.238,3856,0.238,3857,0.238,3858,0.215,3859,0.238,3860,0.238,3861,0.238,3862,0.238,3863,0.238,3864,0.238,3865,0.238,3866,0.238,3867,0.423,3868,0.238,3869,0.423,3870,0.238,3871,0.238,3872,0.238,3873,0.238,3874,0.238,3875,0.238,3876,0.238,3877,0.69,3878,0.238,3879,0.238,3880,0.238,3881,0.468,3882,0.238,3883,0.238,3884,0.238,3885,0.238,3886,0.238,3887,0.225,3888,0.238,3889,0.238,3890,0.238,3891,0.238,3892,0.468,3893,0.468,3894,0.468,3895,0.238,3896,0.238,3897,0.238,3898,0.238,3899,0.238,3900,0.238,3901,0.238,3902,0.238,3903,0.238,3904,0.238,3905,0.238,3906,0.238,3907,0.238,3908,0.238,3909,0.238,3910,0.238,3911,0.238,3912,0.238,3913,0.238,3914,0.238,3915,0.238,3916,0.238,3917,0.238,3918,0.238,3919,0.215,3920,0.238,3921,0.238,3922,0.238,3923,0.238,3924,0.238,3925,0.238,3926,0.238,3927,0.238,3928,0.238,3929,0.238]],["component/145",[2,0.4]],["title/146-1",[16,17.047,130,19.142,1249,20.519]],["name/146-1",[]],["text/146-1",[]],["component/146-1",[]],["title/146-2",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/146-2",[]],["text/146-2",[]],["component/146-2",[]],["title/146-3",[16,20.032,1249,24.113]],["name/146-3",[]],["text/146-3",[]],["component/146-3",[]],["title/146-4",[192,25.234,749,26.482]],["name/146-4",[]],["text/146-4",[]],["component/146-4",[]],["title/146-5",[326,24.407,1258,40.531]],["name/146-5",[]],["text/146-5",[]],["component/146-5",[]],["title/146-6",[1559,54.939]],["name/146-6",[]],["text/146-6",[]],["component/146-6",[]],["title/146-7",[73,22.246,326,24.407]],["name/146-7",[]],["text/146-7",[]],["component/146-7",[]],["title/146-8",[8,19.195,3229,49.288]],["name/146-8",[]],["text/146-8",[]],["component/146-8",[]],["title/146-9",[231,32.25]],["name/146-9",[]],["text/146-9",[]],["component/146-9",[]],["title/146",[1258,49.136]],["name/146",[1258,1.698]],["text/146",[2,0.866,7,1.189,8,2.104,10,1.497,13,2.374,16,2.414,25,2.709,31,1.885,34,1.746,38,2.277,40,2.192,52,2.342,61,1.435,67,3.387,73,2.438,77,1.145,95,1.255,100,1.829,103,2.181,130,1.698,137,1.009,142,2.71,168,1.461,176,1.847,177,1.997,183,3.127,185,1.461,210,2.065,223,3.167,226,2.148,229,1.135,230,1.662,231,1.238,235,1.479,248,1.403,271,1.488,281,3.734,299,1.199,308,1.238,310,1.403,311,2.325,312,1.324,326,3.15,367,1.479,382,1.536,469,2.676,481,1.662,534,2.293,536,2.293,565,1.365,584,1.731,588,1.388,603,1.589,712,3.544,744,2.211,749,2.523,750,1.662,755,3.796,785,3.127,819,2.078,820,2.724,832,2.339,846,1.516,939,2.05,981,2.095,1103,2.997,1110,1.716,1181,1.997,1226,1.761,1249,2.643,1254,1.847,1258,5.933,1280,1.497,1287,3.607,1288,1.866,1307,3.673,1308,2.05,1309,2.211,1314,1.624,1315,1.589,1356,1.794,1375,2.023,1376,3.651,1377,4.499,1385,2.512,1386,3.721,1387,3.575,1393,4.452,1395,1.777,1413,3.953,1414,1.95,1427,2.25,1437,3.201,1458,2.773,1559,2.108,1573,2.05,1652,1.95,1677,2.05,1722,1.731,1727,1.973,2028,4.09,2031,3.947,2081,3.127,2378,1.997,2382,3.201,2655,2.512,2743,2.585,2865,3.796,2866,2.585,3072,2.05,3076,1.997,3078,6.135,3080,2.05,3084,2.14,3091,1.997,3096,2.023,3102,2.14,3177,2.339,3227,2.339,3228,2.174,3264,2.293,3930,3.073,3931,4.708,3932,3.073,3933,3.073,3934,3.073,3935,3.073,3936,2.773,3937,3.073,3938,3.073,3939,3.073,3940,3.073,3941,3.073,3942,3.073,3943,3.073,3944,3.073,3945,3.073]],["component/146",[2,0.4]],["title/147-1",[606,36.29,2324,45.318]],["name/147-1",[]],["text/147-1",[]],["component/147-1",[]],["title/147-2",[2324,45.318,2344,41.908]],["name/147-2",[]],["text/147-2",[]],["component/147-2",[]],["title/147",[2324,45.318,2344,41.908]],["name/147",[2324,1.099,2344,1.016]],["text/147",[5,1.615,6,1.819,8,1.821,10,1.488,11,1.986,14,1.357,15,2.095,16,0.926,17,2.075,25,3.181,27,1.316,38,3.882,44,1.372,48,1.548,52,1.435,53,3.073,54,1.461,75,1.498,104,3.456,107,1.379,112,1.372,118,1.639,127,3.133,128,2.983,130,2.134,131,1.58,136,1.818,138,1.818,140,1.836,146,2.497,154,1.452,164,1.665,173,1.329,174,1.946,177,1.986,178,1.627,183,3.931,185,1.452,194,2.997,198,1.818,200,1.986,203,2.038,205,1.309,207,3.276,220,2.531,231,1.23,234,3.538,243,2.162,244,3.623,250,2.229,267,2.57,271,1.479,284,1.875,285,1.652,286,2.845,295,1.875,297,1.336,301,2.497,311,2.316,320,1.419,323,2.128,336,1.875,367,1.47,454,2.772,472,2.326,480,1.665,482,1.938,484,4.365,511,2.198,518,3.997,522,1.986,526,1.818,562,2.433,588,2.241,632,2.377,692,1.875,740,2.727,744,2.198,789,1.678,809,2.57,897,2.757,953,2.57,1110,1.706,1119,1.639,1134,2.326,1226,2.845,1323,1.836,1390,1.652,1420,2.514,1451,2.128,1466,2.162,1490,1.721,1499,2.038,1527,4.435,1528,3.013,1573,2.038,1618,2.433,1624,1.751,1679,2.237,1697,2.433,1721,2.757,1828,2.57,1903,2.28,1998,2.066,2154,3.703,2173,2.237,2288,4.073,2324,6.804,2325,4.056,2344,6.438,2347,5.526,2348,6.949,2352,2.497,2450,3.634,2501,2.237,2603,2.655,2783,4.478,2784,4.174,2785,4.174,2801,2.757,2822,3.953,2991,5.747,2993,2.433,2996,2.326,3180,2.757,3698,2.757,3858,2.757,3966,3.056,3967,3.056,3968,3.056,3969,3.056,3970,3.056,3971,4.478,3972,3.056,3973,3.056,3974,3.056,3975,4.964,3976,3.056,3977,3.056,3978,4.964]],["component/147",[2,0.4]],["title/148-1",[802,30.158,3979,59.605]],["name/148-1",[]],["text/148-1",[]],["component/148-1",[]],["title/148",[16,17.047,272,37.494,1590,43.731]],["name/148",[16,0.486,1590,1.246]],["text/148",[2,0.361,6,0.763,7,1.838,8,2.657,13,0.785,14,1.598,15,2.005,16,3.545,17,3.133,18,1.498,19,2.439,20,3.508,24,1.278,25,0.779,26,1.008,27,3.01,30,1.216,44,0.935,48,3.235,51,1.055,52,2.231,54,0.996,55,2.505,56,3.213,57,1.961,61,1.68,73,0.701,79,0.862,88,1.69,95,0.85,96,3.088,103,0.911,105,1.027,106,1.742,107,0.94,118,1.117,124,0.984,131,1.077,132,2.773,133,2.468,137,2.601,142,1.549,147,1.291,148,0.842,149,1.753,154,1.71,157,1.658,160,1.163,162,1.144,164,1.961,165,0.915,171,1.291,172,1.062,178,1.916,190,1.264,191,1.173,206,0.984,211,1.428,217,1.389,226,1.549,228,1.251,229,2.36,231,2.278,248,2.168,257,2.374,289,1.239,292,1.135,296,1.525,297,1.573,299,2.728,300,2.545,301,1.81,310,0.951,311,0.769,312,0.897,315,1.085,325,1.251,326,1.329,346,1.014,382,1.041,407,1.041,438,0.94,445,1.428,474,1.153,502,2.799,505,1.278,506,1.45,526,2.141,539,1.153,565,0.925,575,2.162,594,1.041,597,2.141,604,2.062,641,1.085,656,2.184,658,1.239,661,1.473,713,6.311,717,2.505,731,2.1,740,1.976,742,1.101,802,3.421,807,1.428,812,1.353,833,2.368,846,1.027,864,2.739,865,1.408,913,2.081,935,1.117,1023,1.751,1101,1.554,1102,1.751,1103,1.251,1154,1.473,1184,2.739,1217,1.751,1221,1.135,1226,1.193,1242,1.585,1249,0.76,1253,1.585,1262,1.428,1264,1.389,1265,2.184,1314,3.96,1317,1.809,1331,1.702,1384,1.498,1413,1.034,1427,1.525,1435,1.337,1438,2.979,1445,3.478,1448,1.62,1449,1.408,1490,1.173,1498,1.658,1540,1.498,1561,1.428,1590,7.706,1594,1.658,1599,3.246,1607,1.751,1652,3.013,1771,2.545,1845,2.368,1873,1.585,1927,2.684,2070,1.751,2132,3.544,2133,3.417,2138,1.585,2308,1.62,2347,1.353,2354,1.702,2540,2.505,2547,5.762,2643,2.009,2869,1.702,2963,2.162,3409,1.658,3459,1.809,3711,3.026,3712,3.026,3787,1.879,3979,5.103,3980,1.879,3981,1.966,3982,2.083,3983,8.292,3984,1.879,3985,3.598,3986,2.083,3987,2.083,3988,2.083,3989,2.083,3990,3.598,3991,2.083,3992,3.598,3993,3.598,3994,2.083,3995,2.083,3996,2.083,3997,2.083]],["component/148",[2,0.4]],["title/149",[207,36.358]],["name/149",[1,1.532]],["text/149",[]],["component/149",[2,0.4]],["title/150-1",[3998,67.357]],["name/150-1",[]],["text/150-1",[]],["component/150-1",[]],["title/150-2",[231,32.25]],["name/150-2",[]],["text/150-2",[]],["component/150-2",[]],["title/150",[16,20.032,316,48.371]],["name/150",[16,0.486,316,1.173]],["text/150",[2,0.88,5,2.68,6,1.858,7,1.214,8,0.912,15,2.694,16,3.453,17,2.12,19,1.611,21,2.564,27,3.157,28,1.738,30,1.831,33,2.856,34,1.782,36,1.331,45,1.658,46,4.378,47,2.092,48,2.569,51,3.713,52,2.382,54,1.5,58,1.723,73,1.056,75,1.538,78,2.297,88,1.474,96,3.804,98,2.455,106,1.519,107,2.29,124,1.482,125,1.658,137,3.358,142,1.351,148,1.269,154,1.491,165,2.229,168,1.491,171,1.946,172,1.6,174,1.23,176,1.885,184,1.885,190,3.079,212,1.482,222,1.519,224,1.967,229,1.873,231,2.042,257,3.19,258,1.622,277,2.564,285,1.696,292,3.478,297,2.218,299,2.861,301,2.551,312,2.184,315,2.641,316,4.673,323,3.531,346,3.57,367,1.509,382,1.568,438,2.882,446,1.946,479,2.257,480,1.71,484,2.185,502,2.988,510,1.967,519,1.767,539,1.738,553,1.71,554,1.782,600,2.988,601,2.388,606,1.723,661,2.22,692,1.925,693,2.564,740,1.723,744,2.257,864,2.388,935,1.683,966,2.092,993,3.531,1082,3.933,1102,4.265,1127,4.038,1228,2.831,1241,1.798,1258,1.925,1264,4.257,1293,2.185,1314,2.68,1378,1.967,1403,2.726,1438,3.18,1462,2.44,1468,1.671,1490,1.767,1492,2.639,1573,2.092,1593,2.499,1610,2.831,1652,4.049,1729,1.99,1845,2.065,1909,2.152,1974,2.44,1998,2.121,2045,2.22,2077,2.341,2138,2.388,2156,2.564,2586,2.639,2685,2.257,3018,2.639,3151,2.44,3409,2.499,3442,2.726,3472,2.726,3980,2.831,3984,2.831,3998,6.768,3999,3.138,4000,3.138,4001,3.138,4002,3.138,4003,3.138,4004,3.138,4005,3.138,4006,3.138,4007,3.138,4008,3.138]],["component/150",[2,0.4]],["title/151-1",[96,24.844,592,30.162,1091,31.938]],["name/151-1",[]],["text/151-1",[]],["component/151-1",[]],["title/151-2",[3,33.925,231,26.603]],["name/151-2",[]],["text/151-2",[]],["component/151-2",[]],["title/151-3",[4017,75.609]],["name/151-3",[]],["text/151-3",[]],["component/151-3",[]],["title/151-4",[107,29.827,172,33.691]],["name/151-4",[]],["text/151-4",[]],["component/151-4",[]],["title/151-5",[539,44.355]],["name/151-5",[]],["text/151-5",[]],["component/151-5",[]],["title/151",[96,24.844,592,30.162,1091,31.938]],["name/151",[1558,2.064]],["text/151",[2,0.675,6,1.426,8,1.131,13,2.268,14,1.729,15,3.489,16,2.228,19,3.087,36,3.117,38,1.776,47,2.595,53,1.907,56,2.211,87,3.303,93,1.796,96,4.612,98,1.884,106,3.557,112,2.7,118,2.088,131,2.012,137,3.563,158,1.817,164,3.276,189,3.511,210,1.611,212,1.839,220,1.984,223,2.629,229,1.438,230,2.104,281,2.399,299,1.519,315,2.027,367,1.872,407,1.945,474,2.155,520,2.799,575,3.613,585,2.529,588,2.714,592,3.226,597,4.918,598,2.631,603,3.8,618,2.413,649,3.099,664,3.027,674,4.788,696,2.71,717,2.71,935,2.088,1016,2.962,1091,2.211,1204,7.181,1265,3.65,1294,2.753,1305,3.18,1314,2.056,1356,3.509,1366,4.608,1405,2.44,1558,6.166,1561,2.669,1581,3.099,1623,2.595,1771,4.254,2058,4.124,2148,3.099,2280,3.273,2286,4.677,2308,4.677,2340,3.511,2742,2.849,2951,6.951,3182,3.511,3477,3.511,3711,3.273,3712,3.273,3936,3.511,4012,3.891,4013,3.891,4014,3.891,4015,5.425,4017,3.674,4018,3.891,4019,8.266,4021,7.348,4025,3.891,4030,7.348,4031,3.891,4033,3.891,4037,3.891,4042,3.891,4043,3.891,4044,3.891,4428,4.222,4429,4.222,4430,4.222]],["component/151",[2,0.4]],["title/152-1",[174,22.038,606,30.883,1434,37.494]],["name/152-1",[]],["text/152-1",[]],["component/152-1",[]],["title/152-2",[119,32.398]],["name/152-2",[]],["text/152-2",[]],["component/152-2",[]],["title/152-3",[1904,62.298]],["name/152-3",[]],["text/152-3",[]],["component/152-3",[]],["title/152-4",[8,14.216,98,23.685,112,21.971,802,22.335]],["name/152-4",[]],["text/152-4",[]],["component/152-4",[]],["title/152-5",[234,32.383,1434,44.06]],["name/152-5",[]],["text/152-5",[]],["component/152-5",[]],["title/152-6",[8,12.584,244,19.771,675,31.157,685,36.426,802,19.771]],["name/152-6",[]],["text/152-6",[]],["component/152-6",[]],["title/152",[1434,53.413]],["name/152",[1434,1.845]],["text/152",[2,1.136,3,0.835,4,1.3,5,1.53,6,0.596,7,0.629,8,2.031,13,2.278,14,0.722,15,1.222,16,2.119,17,1.986,25,1.083,26,1.402,27,2.82,28,0.9,30,1.69,33,0.916,34,0.924,41,1.447,44,1.3,48,0.823,51,2.406,52,0.764,54,1.872,56,0.924,57,0.886,58,3.318,60,1.367,61,1.352,67,1.887,73,0.547,75,1.919,77,0.606,79,1.621,83,1.004,88,0.764,96,2.408,98,2.299,103,1.266,105,1.931,106,3.383,112,0.73,119,3.453,124,0.768,126,0.726,132,0.949,137,3.605,148,0.658,149,2.314,153,0.908,154,0.773,159,0.94,161,1.115,162,0.893,164,0.886,165,0.715,168,0.773,169,0.987,170,0.853,173,2.628,174,1.534,185,0.773,191,1.631,192,1.814,193,1.295,194,0.777,198,0.967,206,0.768,207,1.314,209,0.859,210,1.199,212,1.368,223,0.711,229,1.07,231,0.655,234,1.419,237,1.238,244,0.742,246,0.893,249,0.818,250,1.758,258,0.841,281,1.562,282,1.467,288,0.9,297,1.712,298,1.883,299,2.357,310,0.742,311,2.231,312,0.7,316,1.19,326,0.601,363,1.238,382,1.447,407,1.447,428,1.15,432,0.773,480,2.133,492,0.853,494,1.115,505,0.997,509,1.084,519,0.916,539,0.9,554,1.645,587,1.19,588,0.734,592,0.872,594,0.813,597,0.967,603,2.024,623,1.02,668,2.98,675,2.816,685,3.292,688,1.031,692,0.997,694,1.367,731,1.69,732,1.008,740,2.15,742,0.859,802,4.251,812,1.882,870,1.19,895,1.099,908,1.008,926,1.056,947,0.958,981,2.537,1091,0.924,1114,5.866,1221,2.133,1226,0.932,1249,1.989,1264,2.611,1265,3.308,1280,0.792,1348,3.532,1366,1.02,1409,2.435,1434,6.657,1435,1.044,1448,1.265,1461,0.932,1471,1.084,1501,2.168,1559,2.685,1569,0.853,1579,2.352,1591,4.81,1624,0.932,1680,1.295,1702,3.995,1727,1.044,1771,1.15,1777,1.535,1801,1.15,1823,1.467,1866,1.367,1904,7.364,1909,1.115,1960,3.532,1998,1.099,2004,2.048,2048,1.056,2058,1.115,2064,1.295,2179,3.783,2286,1.265,2307,1.265,2354,1.329,2501,2.12,2540,2.726,2541,1.265,2548,2.306,2564,1.329,2571,1.295,2870,1.329,2885,1.265,3146,2.435,3204,1.238,3325,1.329,3394,1.535,3790,2.612,3998,2.435,4045,1.626,4046,1.626,4047,1.626,4048,1.626,4049,3.915,4050,1.626,4051,1.626,4052,6.548,4053,2.896,4054,1.626,4055,1.626,4056,2.896,4057,1.626,4058,1.626,4059,1.626,4060,1.626,4061,1.626,4062,1.626,4063,1.626,4064,1.626,4065,1.626,4066,6.04,4067,1.626,4068,1.626,4069,1.626,4070,5.449,4071,1.626,4072,1.626,4073,1.626,4074,1.626,4075,1.626,4076,1.626,4077,3.915,4078,1.626,4079,1.626,4080,1.626,4081,2.896,4082,2.896,4083,2.896,4084,1.626,4085,1.626,4086,1.626]],["component/152",[2,0.4]],["title/153-1",[25,24.71,1257,52.612]],["name/153-1",[]],["text/153-1",[]],["component/153-1",[]],["title/153-2",[3,33.925,231,26.603]],["name/153-2",[]],["text/153-2",[]],["component/153-2",[]],["title/153-3",[25,18.301,235,23.539,245,33.563,1257,38.965]],["name/153-3",[]],["text/153-3",[]],["component/153-3",[]],["title/153-4",[4087,80.094]],["name/153-4",[]],["text/153-4",[]],["component/153-4",[]],["title/153",[2,7.517,8,12.584,96,19.139,230,23.417,235,20.837]],["name/153",[235,1.331]],["text/153",[2,0.95,3,1.019,4,0.891,8,2.536,16,3.291,17,0.83,21,3.741,22,1.404,25,3.157,26,1.67,30,2.672,38,2.83,40,0.872,46,1.361,51,1.005,55,1.382,57,1.081,61,2.555,72,2.033,75,0.973,77,0.739,79,1.896,88,1.621,95,0.81,96,0.877,98,2.216,103,0.868,105,2.7,107,1.558,124,1.63,126,0.886,131,1.026,137,3.873,152,1.669,153,1.927,173,1.501,192,0.758,194,0.949,198,1.181,206,0.938,207,0.901,210,2.567,212,1.63,218,1.019,219,1.543,223,2.393,229,2.512,231,1.844,235,4.198,245,3.754,271,1.67,281,2.474,288,1.099,297,2.002,299,3.167,302,1.259,310,0.906,312,0.855,323,2.403,407,0.992,438,3.299,454,1.108,466,3.096,527,1.81,540,1.108,553,1.081,554,1.96,575,1.192,592,1.851,597,1.181,604,1.978,618,1.231,665,3.188,696,1.382,717,1.382,731,2.672,789,1.895,802,0.906,820,1.494,870,1.453,917,1.58,935,1.065,981,2.299,1116,1.427,1226,1.137,1249,2.482,1254,1.192,1257,8.291,1264,4.536,1314,2.42,1323,1.192,1365,1.79,1366,2.164,1434,1.323,1435,1.274,1469,1.58,1495,1.361,1501,3.031,1540,1.427,1552,3.113,1558,1.48,1560,1.79,1569,1.81,1626,1.289,1627,1.404,1771,1.404,2004,1.404,2272,2.684,2280,1.669,2308,2.684,2352,2.82,2367,3.485,2571,1.58,2579,1.51,2638,3.257,2742,2.526,2792,1.669,2891,3.85,3177,1.51,3353,1.79,4088,1.984,4089,8.114,4090,3.451,4091,7.308,4092,3.451,4093,3.451,4094,1.984,4095,1.79,4096,1.984,4097,1.79,4098,7.308,4100,4.578,4101,3.451,4102,1.984,4103,4.578,4104,4.578,4105,1.984,4106,3.451,4107,3.451,4108,3.451,4109,3.451,4110,3.451,4111,6.801,4112,3.451,4113,3.451,4114,3.451,4115,1.984,4116,1.984,4117,1.984,4431,5.938,4432,2.153]],["component/153",[2,0.4]],["title/154",[83,22.92,1585,50.288]],["name/154",[83,0.556,1585,1.219]],["text/154",[25,3.438,83,3.189,336,5.639,785,6.799,846,4.534,1585,6.996,1683,6.049,2338,7.73,2732,9.782]],["component/154",[2,0.4]],["title/155",[83,22.92,1057,49.288]],["name/155",[83,0.556,1057,1.195]],["text/155",[]],["component/155",[2,0.4]],["title/156",[83,19.505,414,39.774,2240,50.723]],["name/156",[83,0.556,414,1.133]],["text/156",[]],["component/156",[2,0.4]],["title/157-1",[2,9.757,121,33.451,1382,42.794]],["name/157-1",[]],["text/157-1",[]],["component/157-1",[]],["title/157-2",[551,55.772]],["name/157-2",[]],["text/157-2",[]],["component/157-2",[]],["title/157-3",[2769,80.094]],["name/157-3",[]],["text/157-3",[]],["component/157-3",[]],["title/157-4",[121,33.451,174,22.038,2770,50.723]],["name/157-4",[]],["text/157-4",[]],["component/157-4",[]],["title/157-5",[119,26.725,1382,50.288]],["name/157-5",[]],["text/157-5",[]],["component/157-5",[]],["title/157-6",[16,11.78,119,15.716,121,23.116,174,15.229,1380,28.446,2771,32.675]],["name/157-6",[]],["text/157-6",[]],["component/157-6",[]],["title/157-7",[16,10.68,119,14.249,120,22.89,121,20.958,174,13.808,1380,25.79,1528,21.385]],["name/157-7",[]],["text/157-7",[]],["component/157-7",[]],["title/157-8",[1381,48.371,1382,50.288]],["name/157-8",[]],["text/157-8",[]],["component/157-8",[]],["title/157-9",[16,11.78,121,23.116,174,15.229,1380,28.446,1381,28.446,2771,32.675]],["name/157-9",[]],["text/157-9",[]],["component/157-9",[]],["title/157-10",[16,10.68,120,22.89,121,20.958,174,13.808,1380,25.79,1381,25.79,1528,21.385]],["name/157-10",[]],["text/157-10",[]],["component/157-10",[]],["title/157-11",[2772,59.605,2773,59.605]],["name/157-11",[]],["text/157-11",[]],["component/157-11",[]],["title/157-12",[882,44.06,1717,52.612]],["name/157-12",[]],["text/157-12",[]],["component/157-12",[]],["title/157",[83,22.92,121,39.308]],["name/157",[83,0.556,121,0.953]],["text/157",[2,0.931,3,1.109,4,1.667,6,0.431,7,0.455,8,1.684,13,0.443,14,1.926,15,0.496,16,2.604,17,1.252,19,0.604,26,1.045,27,2.496,31,0.721,33,1.686,34,1.227,38,0.537,41,1.079,50,0.693,58,1.186,59,0.646,61,1.008,70,1.325,72,0.693,73,1.952,75,1.058,76,1.44,83,1.039,84,0.386,85,2.825,92,0.721,93,0.543,95,2.191,96,3.024,98,1.449,101,4.273,105,0.58,119,1.975,120,3.173,121,5.366,122,0.774,125,0.621,126,0.525,127,0.588,131,0.608,137,2.029,140,1.799,143,0.693,148,0.476,149,1.808,155,0.674,156,1.186,168,1.026,173,0.939,174,2.795,183,1.354,185,1.026,191,1.686,192,0.449,205,0.925,209,0.621,210,0.894,223,0.514,228,1.297,230,0.636,231,1.206,234,1.819,235,3.293,243,1.527,244,2.646,246,1.186,247,0.795,248,0.986,249,1.086,250,0.528,256,0.784,258,1.117,271,0.569,276,2.381,279,2.384,281,0.862,284,1.837,295,2.995,297,1.896,298,0.566,311,1.371,314,0.636,319,0.656,326,1.371,336,0.721,346,1.458,382,2.897,384,0.989,399,1.527,438,0.975,446,0.729,453,2.154,454,0.656,458,0.699,473,0.925,474,3.21,475,0.795,480,1.177,482,1.37,484,2.585,487,1.645,497,0.68,502,1.272,505,1.837,532,0.895,535,1.837,543,1.997,544,1.339,554,0.668,561,0.895,576,1.946,588,2.617,590,2.054,604,0.674,613,0.914,626,0.806,641,0.612,652,0.714,655,2.412,658,0.699,675,0.846,691,2.279,696,3.4,731,1.748,742,1.582,749,0.865,754,0.832,755,0.895,770,1.206,771,1.481,785,0.737,792,0.764,795,0.729,802,3.375,805,0.764,820,0.935,825,0.832,827,0.832,852,0.806,865,0.795,881,1.061,913,1.732,925,0.846,951,0.895,981,2.051,1091,0.668,1139,0.877,1232,0.961,1241,1.716,1245,6.708,1280,3.601,1301,3.122,1328,0.877,1380,3.929,1381,3.575,1382,6.537,1390,1.619,1392,1.553,1397,0.914,1417,0.641,1428,1.764,1434,0.784,1450,1.899,1451,2.085,1454,0.895,1463,1.581,1468,0.626,1490,0.662,1502,0.989,1528,1.818,1561,1.481,1565,1.581,1569,0.617,1573,0.784,1601,0.861,1639,3.929,1657,0.989,1679,3.174,1717,3.453,1727,0.755,1738,0.861,1795,0.961,1853,1.581,1866,1.816,1903,1.611,1904,0.914,1927,1.611,1940,0.795,1961,1.11,1974,0.914,1989,2.701,2088,0.914,2133,1.553,2140,0.604,2148,1.719,2154,2.234,2329,1.764,2360,1.021,2374,1.876,2375,2.518,2381,0.914,2382,1.386,2406,1.503,2615,0.936,2643,0.656,2734,1.061,2742,0.861,2770,3.349,2771,1.816,2772,1.948,2773,1.948,2774,1.176,2775,1.176,2777,2.518,2778,1.176,2779,1.176,2780,1.176,2781,1.176,2782,0.936,2783,1.061,2784,0.989,2785,0.989,2786,1.061,2787,4.336,2788,2.994,2789,1.176,2790,1.11,2791,1.061,2792,0.989,2793,6.182,2794,1.176,2795,2.159,2796,1.176,2797,6.182,2798,1.176,2799,1.176,2800,2.159,2801,4.841,2802,1.176,2803,3.712,2804,3.712,2805,2.994,2806,1.176,2807,2.518,2808,2.994,2809,2.159,2810,2.994,2811,2.994,2812,2.994,2813,2.159,2814,2.159,2815,2.159,2816,2.159,2817,2.159,2818,1.816,2819,1.948,2820,4.882,2821,4.882,2822,1.719,2823,2.038,2824,2.159,2825,1.176,2826,1.176,2827,2.159,2828,1.176,2829,1.176,2830,1.176,2831,1.176,2832,1.176,2833,1.176,2834,1.176,2835,1.176,2836,1.176,2837,1.176,2838,1.176,2839,1.176,2840,1.176,2841,1.176,2842,1.176,2843,1.176,2844,1.176,2845,1.176,2846,1.176,2847,1.176,2848,1.176,2849,1.176,2850,1.176,2851,1.176,2852,1.176,2853,1.176,2854,1.176,2855,1.176,2856,1.176,2857,1.061,2858,2.518,2859,1.948,2860,1.176,2861,1.061,2862,1.176,2863,1.176,2864,1.176,2865,1.643,2866,0.989,2867,1.176]],["component/157",[2,0.4]],["title/158-1",[73,18.931,272,37.494,443,32.222]],["name/158-1",[]],["text/158-1",[]],["component/158-1",[]],["title/158-2",[231,32.25]],["name/158-2",[]],["text/158-2",[]],["component/158-2",[]],["title/158",[83,22.92,1004,52.612]],["name/158",[83,0.556,1004,1.275]],["text/158",[2,1.189,8,2.466,10,1.701,13,2.938,15,1.474,16,1.059,17,2.865,27,1.503,38,3.557,56,3.138,73,3.399,83,1.211,96,3.751,98,2.674,102,1.983,106,1.69,110,1.983,112,2.48,137,3.522,142,1.503,143,2.057,153,1.95,161,2.395,168,1.659,172,1.78,173,1.519,177,2.269,192,1.333,209,1.845,231,2.76,234,2.707,243,2.47,246,1.918,289,2.077,309,3.789,311,2.041,466,2.361,487,3.034,510,2.189,554,1.983,588,1.576,603,1.805,645,3.735,649,2.78,690,3.353,694,2.936,752,2.431,755,2.657,795,2.165,802,1.594,820,2.391,926,2.269,981,3.273,1004,8.965,1038,5.764,1104,2.142,1114,4.848,1120,2.47,1176,7.658,1217,4.645,1249,1.274,1258,2.142,1288,2.12,1312,2.431,1335,3.033,1378,2.189,1384,2.511,1451,2.431,1466,3.908,1501,1.933,1626,2.269,1853,2.556,2291,1.888,2338,4.645,2501,2.556,2732,3.15,2733,4.983,2734,3.15,2735,5.524,2736,5.524,2737,5.524,2738,3.491,2739,3.491,2742,2.556,2743,2.936,2744,2.019,2745,3.491,2746,3.491,2747,3.491,2748,5.524,2749,3.491,2750,3.491,2751,3.491,2752,3.491,2753,3.491,2754,3.491,2755,3.491,2756,7.658,2757,3.491,2758,3.491,2759,3.491,2760,3.491,2761,3.491,2762,3.491,2763,3.491,2764,3.491,2765,3.491,2766,3.491,2767,3.491,2768,3.491,4433,3.788]],["component/158",[2,0.4]],["title/159-1",[205,24.09,206,26.563,1289,37.494]],["name/159-1",[]],["text/159-1",[]],["component/159-1",[]],["title/159-2",[2,8.492,87,26.877,1289,32.632,1444,36.504]],["name/159-2",[]],["text/159-2",[]],["component/159-2",[]],["title/159-3",[2,7.517,8,12.584,119,17.521,1289,28.885,1444,32.313]],["name/159-3",[]],["text/159-3",[]],["component/159-3",[]],["title/159-4",[85,50.288,87,36.29]],["name/159-4",[]],["text/159-4",[]],["component/159-4",[]],["title/159",[83,22.92,1289,44.06]],["name/159",[83,0.556,1289,1.068]],["text/159",[2,1.499,4,1.419,7,0.694,8,1.864,13,1.924,14,1.404,15,0.758,16,2.867,17,1.77,25,1.182,27,1.361,28,2.345,34,1.02,44,0.806,45,0.949,48,0.909,52,0.843,54,3.067,56,1.795,59,0.986,67,1.255,68,1.048,70,1.101,73,2.16,75,1.549,77,0.669,79,1.309,83,1.77,84,1.39,85,2.406,87,0.986,88,1.484,93,0.829,95,1.29,96,3.059,102,4.398,103,0.785,105,1.559,107,0.81,110,1.02,112,1.901,113,1.079,116,1.291,118,0.963,119,1.713,124,0.848,126,1.412,127,1.58,131,2.638,132,1.048,134,1.509,136,1.068,137,1.39,138,1.068,140,1.079,148,2.352,153,1.002,154,0.853,155,1.029,156,0.986,160,2.365,164,3.169,165,0.789,168,0.853,170,2.221,173,3.368,174,3.166,178,0.956,184,1.079,185,0.853,190,1.09,192,0.686,194,1.511,203,1.197,205,2.186,206,1.493,222,2.469,231,0.723,234,2.5,244,0.819,249,0.903,250,1.419,258,0.928,272,1.197,276,1.736,281,0.716,288,0.994,292,0.978,297,2.231,298,3.086,299,1.233,311,1.564,315,0.935,319,1.002,320,1.467,323,1.25,326,1.168,367,0.863,432,0.853,438,0.81,469,0.963,473,1.354,478,2.406,480,3.773,482,1.139,492,0.942,493,1.291,494,1.231,495,1.366,496,6.023,502,1.862,503,1.139,519,1.011,532,1.366,533,1.197,573,2.029,588,0.81,594,0.897,602,2.236,606,0.986,607,1.152,623,1.126,624,1.366,626,1.231,633,2.314,634,2.517,641,1.646,655,1.166,688,2.005,692,1.101,720,1.619,742,0.949,753,1.559,764,1.231,791,1.396,795,1.113,800,1.396,802,2.655,820,0.777,850,1.314,868,1.366,926,1.166,940,1.25,981,0.754,1006,1.314,1139,2.358,1181,1.166,1221,2.308,1222,1.467,1224,1.396,1241,1.029,1249,2.687,1289,5.918,1294,1.27,1356,2.472,1381,1.314,1420,0.909,1435,1.152,1437,4.725,1438,2.655,1444,7.648,1461,1.029,1501,0.994,1506,1.25,1538,1.619,1646,1.467,1810,1.467,1827,1.509,1840,1.509,1853,1.314,1872,2.583,1909,1.231,1935,1.396,1938,2.787,2048,1.166,2087,1.314,2133,1.291,2179,2.517,2281,1.509,2329,4.752,2342,1.339,2367,1.366,2382,1.152,2407,2.984,2684,2.851,2742,2.314,2786,1.619,2819,1.619,2868,3.161,2869,1.467,2870,1.467,2871,1.795,2872,3.161,2873,1.795,2874,4.235,2875,1.795,2876,1.795,2877,1.795,2878,1.795,2879,5.101,2880,4.235,2881,3.161,2882,1.795,2883,1.795,2884,1.795,2885,1.396,2886,1.795,2887,1.795,2888,1.795,2889,1.795,2890,1.795,2891,1.509,2892,3.161,2893,1.509,2894,3.161,2895,1.795,2896,1.795,2897,3.161,2898,1.795,2899,1.795,2900,1.795,2901,1.795,2902,1.795,2903,1.795,2904,3.161,2905,1.795,2906,1.795,2907,1.795,2908,1.795,2909,1.795]],["component/159",[2,0.4]],["title/160",[1174,44.671,2910,55.562]],["name/160",[1174,1.083,2910,1.347]],["text/160",[2,1.653,231,3.835,1174,6.44,2910,8.009,2912,9.524,2913,9.524,2914,9.524]],["component/160",[2,0.4]],["title/161",[83,22.92,1179,55.562]],["name/161",[83,0.556,1179,1.347]],["text/161",[2,1.931,63,5.156,315,5.005,1654,8.471]],["component/161",[2,0.4]],["title/162-1",[79,27.357,295,40.531]],["name/162-1",[]],["text/162-1",[]],["component/162-1",[]],["title/162-2",[244,30.158,802,30.158]],["name/162-2",[]],["text/162-2",[]],["component/162-2",[]],["title/162-3",[234,39.258]],["name/162-3",[]],["text/162-3",[]],["component/162-3",[]],["title/162",[551,55.772]],["name/162",[1174,1.083,1337,1.246]],["text/162",[2,1.356,8,2.496,10,1.881,13,3.551,16,2.217,20,1.402,27,2.177,36,1.638,37,1.387,38,3.758,41,1.13,57,1.232,59,1.242,63,1.213,70,1.387,75,1.108,77,0.842,79,0.936,88,1.062,92,1.387,93,1.044,103,0.989,112,2.684,124,2.388,125,1.195,126,1.01,128,4.034,137,0.742,144,1.656,148,2.418,156,1.242,159,1.308,168,2.402,174,0.886,178,1.204,190,1.373,199,2.088,205,2.876,210,2.093,231,0.911,234,2.478,243,3.576,244,3.566,246,1.242,248,2.307,275,1.656,276,3.687,291,1.529,292,1.232,295,6.129,297,0.989,311,3.289,320,1.793,323,1.575,326,0.835,336,2.369,473,1.655,477,1.434,497,1.308,565,1.005,573,1.452,576,2.51,603,1.169,645,1.529,652,2.345,690,1.373,707,4.749,708,1.721,751,1.759,752,5.092,754,1.6,765,1.359,802,3.758,833,1.488,839,1.902,846,1.905,867,5.014,908,3.135,935,1.213,1021,1.721,1112,1.902,1158,1.801,1162,1.551,1174,1.529,1232,3.156,1241,3.426,1249,1.41,1259,5.351,1260,5.351,1261,1.902,1280,1.881,1305,1.848,1310,1.452,1337,1.759,1420,1.145,1429,1.6,1450,3.792,1454,1.721,1499,3.371,1509,1.801,1559,6.108,1727,1.452,1729,1.434,1738,2.828,1801,1.6,1845,3.327,2077,1.687,2083,4.742,2173,1.656,2252,4.56,2341,1.902,2359,1.434,2381,3.004,2382,1.452,2401,1.902,2413,2.135,2442,1.801,2504,1.801,2548,4.76,2615,3.075,2743,1.902,2784,3.248,2785,3.248,2818,3.248,2915,2.261,2916,2.261,2917,4.56,2918,3.862,2919,2.261,2920,3.862,2921,2.261,2922,3.862,2923,2.261,2924,2.261,2925,2.261,2926,2.261,2927,2.261,2928,2.261,2929,2.261,2930,2.261,2931,2.261,2932,2.261,2933,2.261,2934,2.261,2935,2.261,2936,2.261,2937,2.261,2938,2.261,2939,2.261,2940,2.261,2941,2.261,2942,2.261,2943,2.261,2944,2.261,2945,2.261,2946,2.261,2947,2.261,2948,2.261,2949,2.261,2950,2.261,2951,1.902,2952,2.261,2953,2.261,2954,3.484,2955,2.261,2956,2.261,2957,2.261,2958,2.261]],["component/162",[2,0.4]],["title/163-1",[220,33.691,750,35.719]],["name/163-1",[]],["text/163-1",[]],["component/163-1",[]],["title/163-2",[40,29.041,882,44.06]],["name/163-2",[]],["text/163-2",[]],["component/163-2",[]],["title/163",[]],["name/163",[]],["text/163",[2,1.062,6,2.242,7,1.54,8,1.777,14,1.768,19,3.141,25,3.128,26,4.049,40,5.032,48,2.016,51,2.016,53,2.998,73,2.509,77,1.482,81,2.554,83,2.122,90,3.836,95,1.625,98,4.805,126,3.328,130,1.355,138,2.368,158,1.858,166,2.119,168,1.891,173,1.731,190,2.416,210,1.648,222,1.926,226,1.714,228,4.478,229,1.47,254,2.619,259,3.169,271,2.961,281,1.588,308,1.602,310,1.817,311,2.26,312,1.714,367,1.914,438,1.797,450,3.59,454,2.222,553,2.169,558,2.554,565,3.31,590,2.73,600,2.345,637,3.029,692,2.441,731,2.323,750,2.152,760,3.59,764,4.196,765,2.391,849,3.029,852,2.73,861,4.564,906,2.619,934,2.586,935,3.282,1036,3.59,1067,3.347,1104,3.753,1130,2.969,1155,3.347,1172,5.078,1226,2.281,1282,2.73,1474,4.401,1569,2.088,1579,2.391,1584,3.252,1587,3.347,1623,2.654,1654,4.656,1689,4.328,1722,2.241,1762,3.59,1865,2.691,2075,3.029,2147,3.169,2241,3.347,2336,3.169,2346,4.328,2540,4.26,3006,6.723,3013,4.842,3015,3.169,3016,3.59,3021,3.59,3177,4.656,3672,3.59,3690,3.59,4118,3.98,4119,3.59,4120,3.98,4121,3.98,4122,6.118]],["component/163",[2,0.4]],["title/164",[246,43.994]],["name/164",[1,1.532]],["text/164",[]],["component/164",[2,0.4]],["title/165",[40,35.206]],["name/165",[1,1.532]],["text/165",[10,4.516,39,5.013,43,5.629,1172,5.629,1299,4.013,1534,5.75,1808,5.267,2343,6.184,2344,5.882,3013,6.025]],["component/165",[2,0.4]],["title/166",[2343,44.06,2344,41.908]],["name/166",[2343,1.068,2344,1.016]],["text/166",[40,3.599,54,2.835,77,2.209,128,4.92,130,2.019,137,3.601,142,3.526,154,2.818,174,3.209,183,3.718,185,2.818,226,2.554,229,2.191,244,4.28,248,2.707,281,3.267,292,3.231,308,2.388,310,2.707,311,3.024,312,2.554,473,2.541,540,3.311,588,3.696,792,3.853,1119,4.392,1181,3.853,1226,3.398,1251,4.195,1356,3.461,1375,3.903,1420,3.003,1490,3.339,1639,4.341,1729,3.761,2291,4.426,2343,7.076,2344,6.73,2347,3.853,2450,4.341,2991,8.736,2993,4.722,2994,4.987,2996,4.514,3971,5.35]],["component/166",[2,0.4]],["title/167",[1534,40.971,1808,37.531]],["name/167",[1534,0.993,1808,0.91]],["text/167",[36,3.395,38,4.551,40,4.383,77,2.981,130,2.725,226,3.447,229,2.957,281,3.194,308,3.223,310,3.653,311,4.199,312,3.447,540,4.469,662,5.757,1226,4.587,1534,6.183,1808,6.169,1865,5.411,2324,5.49,2347,5.201]],["component/167",[2,0.4]],["title/168",[10,32.179,39,35.719]],["name/168",[39,1.496]],["text/168",[10,3.755,36,3.271,39,5.772,40,4.281,43,4.681,52,3.621,77,2.872,130,2.625,136,4.587,137,2.531,138,4.587,140,4.633,226,3.32,229,2.848,281,3.077,308,3.922,310,3.52,311,3.944,312,3.32,540,4.306,588,3.481,786,4.306,1226,4.419,1534,4.782,1865,5.213,3414,6.956,4123,7.71]],["component/168",[2,0.4]],["title/169",[1299,34.666]],["name/169",[1299,1.198]],["text/169",[6,2.889,10,4.811,13,2.973,36,3.344,40,4.341,77,2.936,95,3.219,130,2.684,142,3.395,226,3.395,229,2.912,281,3.941,308,3.174,310,3.599,311,3.649,312,3.395,540,4.402,1226,4.518,1299,4.668,1534,4.889,1865,5.33,2081,4.944,2359,5.001,4130,7.112]],["component/169",[2,0.4]],["title/170",[3013,52.045]],["name/170",[3013,1.798]],["text/170",[2,0.925,8,2.572,9,2.663,19,2.737,25,1.993,40,3.891,47,5.066,48,3.847,52,3.568,77,1.985,83,1.849,105,2.629,113,3.203,130,1.814,138,3.171,191,3.001,226,2.295,229,1.969,235,2.564,249,2.681,259,4.244,271,2.58,281,2.127,288,4.207,308,3.059,310,2.433,311,3.27,312,2.295,382,2.663,540,2.976,584,3.001,622,4.057,651,3.902,731,4.434,765,3.203,773,3.235,785,3.342,786,2.976,819,3.603,1172,4.611,1226,3.054,1248,3.421,1252,3.77,1287,3.054,1307,3.111,1328,3.976,1378,3.342,1387,3.027,1554,4.482,1689,3.77,1722,3.001,1808,3.027,1865,3.603,2048,3.463,2241,4.482,2268,4.808,2296,4.057,2346,6.262,2382,3.421,2730,4.808,3013,7.482,3024,4.808,3035,4.808,3186,4.482,4124,5.33,4125,5.33,4126,5.33,4127,5.33,4128,5.33,4129,5.33]],["component/170",[2,0.4]],["title/171",[43,48.623]],["name/171",[43,1.68]],["text/171",[6,2.889,10,4.811,13,2.973,36,3.344,40,4.341,43,6.548,77,2.936,95,3.219,130,2.684,142,3.395,226,3.395,229,2.912,281,3.941,308,3.174,310,3.599,311,3.649,312,3.395,540,4.402,1226,4.518,1534,4.889,1865,5.33,2081,4.944,2359,5.001,4130,7.112]],["component/171",[2,0.4]],["title/172-1",[3,33.925,4,29.665]],["name/172-1",[]],["text/172-1",[]],["component/172-1",[]],["title/172-2",[5,42.326]],["name/172-2",[]],["text/172-2",[]],["component/172-2",[]],["title/172-3",[6,11.806,7,12.464,8,9.361,9,16.101,10,15.692,11,20.935,12,27.094,13,12.15]],["name/172-3",[]],["text/172-3",[]],["component/172-3",[]],["title/172-4",[6,15.872,14,19.241,15,18.285,16,13.133,17,18.108]],["name/172-4",[]],["text/172-4",[]],["component/172-4",[]],["title/172",[2,9.757,16,17.047,18,40.443]],["name/172",[18,1.99]],["text/172",[3,2.295,4,2.007,5,2.362,6,2.448,7,2.584,8,2.579,9,2.234,10,5.031,11,2.904,12,3.759,13,1.686,14,1.986,15,4.207,16,3.352,19,2.295,20,2.772,21,3.652,22,3.162,23,3.759,24,2.742,25,1.672,26,2.163,27,1.925,28,2.475,29,7.999,30,5.18,31,2.742,32,2.981,33,2.517,34,2.539,35,4.47,36,1.896,37,2.742,38,4.336,39,2.416,40,3.516,41,2.234,42,4.47,43,5.767,44,2.007,45,2.362,46,4.582,47,2.981,48,4.051,49,3.759,50,4.713,51,4.811,52,3.757,53,3.274,54,3.194,55,3.112,56,2.539,57,2.436,58,2.455,59,2.455,60,3.759,61,3.735,62,4.47,63,3.584,64,3.559,65,3.215,66,3.112,67,1.775,68,2.609,69,6.755,70,4.098,71,2.475,72,2.634,73,1.505,74,2.742,75,2.191,76,2.981]],["component/172",[2,0.4]],["title/173-1",[7,30.986]],["name/173-1",[]],["text/173-1",[]],["component/173-1",[]],["title/173-2",[8,16.335,77,20.941,78,41.163]],["name/173-2",[]],["text/173-2",[]],["component/173-2",[]],["title/173-3",[8,19.195,77,24.608]],["name/173-3",[]],["text/173-3",[]],["component/173-3",[]],["title/173-4",[2,9.757,77,20.941,79,23.28]],["name/173-4",[]],["text/173-4",[]],["component/173-4",[]],["title/173-5",[2,8.492,77,18.225,79,20.261,80,29.705]],["name/173-5",[]],["text/173-5",[]],["component/173-5",[]],["title/173-6",[77,20.941,81,36.088,82,35.256]],["name/173-6",[]],["text/173-6",[]],["component/173-6",[]],["title/173-7",[82,35.256,83,19.505,84,18.456]],["name/173-7",[]],["text/173-7",[]],["component/173-7",[]],["title/173-8",[82,35.256,85,42.794,86,42.794]],["name/173-8",[]],["text/173-8",[]],["component/173-8",[]],["title/173-9",[82,41.429,220,33.691]],["name/173-9",[]],["text/173-9",[]],["component/173-9",[]],["title/173-10",[82,30.683,88,22.982,233,34.616,619,39.985]],["name/173-10",[]],["text/173-10",[]],["component/173-10",[]],["title/173-11",[8,14.216,89,33.563,90,30.683,91,44.145]],["name/173-11",[]],["text/173-11",[]],["component/173-11",[]],["title/173",[2,11.466,79,27.357]],["name/173",[79,1.146]],["text/173",[2,1.075,3,0.674,4,1.073,7,2.804,8,2.106,14,1.46,15,0.554,16,0.398,17,1.692,22,1.69,25,1.229,26,1.591,27,1.029,28,0.727,36,0.557,37,0.806,44,1.073,46,0.901,47,1.594,50,1.937,51,0.665,52,1.122,53,1.171,57,1.302,58,0.721,61,1.116,67,0.522,75,1.171,77,3.686,78,2.407,79,4.265,80,1.996,81,0.843,82,5.79,83,2.15,84,0.431,85,1,86,1.819,87,4.136,88,1.122,89,1.639,90,1.498,91,2.156,92,2.883,93,0.606,94,1.046,95,1.652,96,0.58,97,1.046,98,1.157,99,0.901,100,1.422,101,1.046,102,1.357,103,1.77,104,1.664,105,0.648,106,2.275,107,1.079,108,1.046,109,0.864,110,0.746,111,1,112,2.11,113,1.436,114,1.073,115,1.073,116,1.719,117,1.996,118,2.171,119,1.33,120,2.136,121,0.781,122,0.864,123,0.815,124,1.553,125,0.694,126,1.808,127,1.194,128,0.789,129,1.24,130,0.447,131,0.679,132,0.767,133,0.901,134,2.009,135,1.313,136,0.781,137,1.891,138,1.422,139,1.313,140,0.789,141,0.864,142,1.416,143,2.385,144,3.855,145,1.313,146,1.073,147,1.482,148,2.805,149,0.64,150,1.313,151,1.313,152,2.009,153,0.733,154,1.924,155,1.369,156,3.164,157,1.046,158,2.194,159,1.382,160,0.733,161,0.901,162,0.721,163,1,164,1.302,165,0.577,166,2.803,167,1.141,168,1.136,169,0.797,170,2.123,171,0.815,172,2.064,173,1.04,174,0.937,175,0.806,176,1.436,177,0.853,178,1.272,179,1.313,180,1.313,181,1.105,182,1.105,183,1.498,184,0.789,185,0.624,186,1,187,2.156,188,1.046,189,1.185,190,0.797,191,0.74,192,2.011,193,1.903,194,0.628,195,1.185,196,1.313,198,1.422,199,2.846,200,1.553,201,1.616,202,4.177,203,0.876,204,1.313,205,1.734,206,0.621,207,1.085,208,1.185,209,0.694,210,1.361,211,3.223,212,4.154,213,0.901,214,0.864,215,1.956,216,1.884,217,0.876,218,1.227,219,1.859,220,1.218,221,1.573,222,1.157,223,1.045,224,0.824,225,1.022,226,0.566,227,0.915,229,0.485,230,0.71,231,2.12,232,2.009,233,3.325,234,1.984,235,1.947,236,2.856,237,1.819,238,2.389,239,2.156,240,2.156,241,2.156,242,2.156,243,0.929,244,2.145,245,0.901,246,2.892,247,2.737,248,1.5,249,1.202,250,1.073,251,1.185,252,1.664,253,1.046,254,0.864,255,0.76,256,0.876,257,0.656,258,0.679,259,1.046,260,1.073,261,1.105,262,1.073,263,0.727,264,1.046,265,1.046,266,1,267,1.105,268,1.073,269,1.313,270,1.185,271,1.157,272,0.876,273,2.009,274,1.022,275,0.962,276,0.721,277,1.073,278,0.98,279,1.046,280,1.185,281,0.524,282,1.185,283,1.313,284,0.806,285,0.71,286,0.753,287,0.98,291,0.888,294,1.105,295,1.466,296,0.962,297,1.045,298,0.632,299,0.513,300,0.929,301,0.661,302,0.833,303,1.313,304,1.313,305,1.185,306,1.313,307,1.313,308,0.529,309,2.255,310,1.5,311,1.214,312,1.416,314,1.777,315,0.684,316,0.962,325,0.789,382,0.656,399,0.929,428,0.929,438,0.593,444,0.945,448,2.824,458,0.781,473,0.563,483,0.929,510,0.824,607,0.843,615,2.256,616,1.903,619,1.073,632,1.022,637,1,652,0.797,732,0.815,741,1.022,755,1,935,0.705,1139,0.98,1160,0.962,1232,2.686,1254,0.789,1293,0.915,1295,2.502,1435,0.843,1466,1.69,1510,5.004,1544,1.24,1579,0.789,1624,0.753,1641,1.046,1680,1.046,1698,2.389,1713,1.141,1727,0.843,1878,1.073,1899,1.24,1997,1.046,2776,1.313,2870,1.073,3653,1.24,3981,1.24,4434,1.425,4435,1.425,4436,2.389,4437,1.425]],["component/173",[2,0.4]],["title/174-1",[209,34.914,435,44.06]],["name/174-1",[]],["text/174-1",[]],["component/174-1",[]],["title/174-2",[436,55.772]],["name/174-2",[]],["text/174-2",[]],["component/174-2",[]],["title/174-3",[437,49.288,438,29.827]],["name/174-3",[]],["text/174-3",[]],["component/174-3",[]],["title/174-4",[206,23.118,257,24.453,324,30.344,439,44.145]],["name/174-4",[]],["text/174-4",[]],["component/174-4",[]],["title/174-5",[440,34.914,441,40.531]],["name/174-5",[]],["text/174-5",[]],["component/174-5",[]],["title/174-6",[170,42.016]],["name/174-6",[]],["text/174-6",[]],["component/174-6",[]],["title/174-7",[442,42.931,443,37.864]],["name/174-7",[]],["text/174-7",[]],["component/174-7",[]],["title/174",[435,53.413]],["name/174",[435,1.845]],["text/174",[2,1.273,8,1.985,15,0.844,17,1.452,20,1.24,22,2.457,24,2.131,27,2.941,34,1.136,36,0.848,44,0.898,45,1.836,50,2.047,51,1.013,54,1.661,56,1.136,61,1.622,69,1.522,70,4.766,75,2.696,79,0.828,80,1.214,83,1.205,84,2.55,88,0.939,93,0.923,95,0.816,99,1.371,103,1.519,105,0.986,106,3.551,107,0.903,117,4.716,118,1.073,124,1.641,127,0.999,137,1.512,142,1.496,143,2.713,148,1.863,149,0.974,158,2.569,160,2.572,165,1.527,166,1.065,168,0.95,170,2.416,173,0.87,178,1.849,192,1.327,194,1.661,209,1.057,210,2.278,215,1.19,220,3.176,222,2.663,224,1.254,229,1.283,230,1.081,244,0.913,247,4.211,248,0.913,249,1.006,250,2.797,252,1.392,255,1.156,271,1.681,276,1.098,298,1.671,299,2.147,301,2.317,309,1.371,318,1.592,320,2.554,322,1.555,324,1.24,325,1.201,367,1.671,399,1.414,407,1.736,408,1.414,428,1.414,435,3.071,436,3.207,437,5.096,438,3.312,439,4.155,440,2.434,441,2.131,442,4.768,443,1.991,444,3.313,445,1.371,446,1.24,447,3.667,448,1.201,449,2.457,450,1.804,451,1.804,452,1.592,453,1.438,454,1.117,455,1.999,456,1.999,457,1.999,458,1.19,459,1.804,460,1.999,461,1.999,462,1.634,463,1.999,464,1.999,465,1.999,466,1.352,467,3.507,468,1.999,469,1.073,470,1.999,471,1.999,472,1.522,473,3.628,474,1.107,475,4.618,476,4.381,477,1.268,478,2.644,479,1.438,480,2.998,481,1.081,482,3.49,483,3.258,484,1.392,485,4.155,486,4.605,487,2.53,488,4.605,489,3.134,490,1.804,491,1.681,492,2.886,493,2.499,494,1.371,495,1.522,496,1.438,497,1.156,498,1.492,499,1.681,500,1.592,501,1.999,502,1.178,503,1.268,504,2.499,505,2.131,506,2.419,507,1.555,508,1.126,509,1.333,510,2.178,511,4.48,512,6.926,513,1.737,514,1.999,515,1.681,516,4.605,517,1.804,518,1.107,519,1.126,520,2.499,521,4.381,522,1.299,523,1.681,524,1.592,525,1.049,526,1.19,527,2.416,528,1.522,529,1.737,530,1.492,531,3.134,532,1.522,533,1.333,534,1.492,535,1.227,536,1.492,537,4.155,538,1.999,539,1.107,540,1.117,541,1.522,542,1.804,543,1.333,544,2.154,545,1.492,546,2.644,548,1.804,549,1.592,550,1.283,573,1.283,600,1.178,751,1.555,895,1.352,903,1.887,1082,1.073,1466,1.414,1574,1.333,1649,1.634,1807,1.737,1824,3.582,2130,1.464,2551,1.804,2885,1.555,4438,2.169,4439,2.169]],["component/174",[2,0.4]],["title/175-1",[166,35.176,317,66.069]],["name/175-1",[]],["text/175-1",[]],["component/175-1",[]],["title/175",[137,18.456,318,44.772,319,31.395]],["name/175",[318,2.204]],["text/175",[2,1.805,6,1.011,22,1.952,27,1.188,73,0.929,79,1.89,81,1.771,83,3.55,105,2.881,119,2.362,130,0.939,137,2.228,153,1.541,192,1.054,201,1.866,222,1.336,224,1.73,255,1.596,271,2.827,299,1.782,318,7.407,319,3.261,320,1.281,321,2.489,322,4.542,323,1.921,324,1.711,325,1.658,326,1.019,327,2.1,328,2.759,329,5.513,330,8.575,331,2.759,332,10.234,333,8.391,334,6.939,335,2.759,336,6.278,337,4.119,338,2.759,339,2.759,340,6.123,341,2.759,342,5.84,343,2.489,344,2.759,345,1.985,346,2.844,347,2.759,348,4.566,349,4.566,350,4.65,351,2.759,352,2.759,353,2.759,354,2.321,355,4.566,356,4.566,357,2.759,358,2.759,359,2.759,360,2.759,361,2.489,362,2.489,363,2.1,364,4.566,365,4.119,366,5.84,367,2.196,368,2.759,369,4.566,370,8.647,371,2.759,372,2.759,373,2.489,374,2.489,375,2.489,376,3.84,377,2.489,378,2.759,379,2.759,380,4.566,381,4.566,382,1.379,383,2.759,384,2.321,385,1.866,386,2.759,387,2.759,388,2.759,389,2.759,390,5.269,391,2.759,392,2.759,393,2.759,394,2.759,395,2.759,396,2.759,397,2.397,398,6.787,399,4.131,400,2.759,401,4.566,402,2.759,403,2.489,404,2.759,405,1.793,406,2.759,407,1.379,408,1.952,409,2.759,410,4.566,411,2.759,412,4.119,413,2.397,414,1.952,415,4.566,416,5.84,417,2.759,418,2.759,419,2.759,420,2.759,421,2.759,422,2.759,423,2.759,424,2.759,425,2.759,426,2.759,427,2.759,428,1.952,429,1.893,430,2.759,431,1.816,432,1.311,433,2.02,434,2.759]],["component/175",[2,0.4]],["title/176-1",[551,55.772]],["name/176-1",[]],["text/176-1",[]],["component/176-1",[]],["title/176-2",[552,52.612,553,36.001]],["name/176-2",[]],["text/176-2",[]],["component/176-2",[]],["title/176-3",[158,26.253,554,31.938,555,47.282]],["name/176-3",[]],["text/176-3",[]],["component/176-3",[]],["title/176-4",[556,72.259]],["name/176-4",[]],["text/176-4",[]],["component/176-4",[]],["title/176-5",[93,30.499,557,46.739]],["name/176-5",[]],["text/176-5",[]],["component/176-5",[]],["title/176",[93,30.499,557,46.739]],["name/176",[557,1.958]],["text/176",[7,3.026,8,1.021,36,1.491,52,2.608,83,2.388,84,1.823,107,1.587,132,2.051,137,2.26,147,2.18,149,2.705,158,2.593,165,1.545,170,1.844,173,2.416,185,1.67,186,2.675,194,2.655,205,1.506,206,1.661,209,1.857,210,1.455,229,2.051,284,2.156,296,2.573,299,2.686,320,4.401,324,2.18,346,1.712,382,3.44,408,5.532,429,2.411,436,2.447,441,3.407,447,2.799,473,2.379,524,4.422,552,4.422,553,3.751,556,5.01,557,2.486,558,2.256,559,6.731,560,2.956,561,2.675,562,2.799,563,4.065,564,3.515,565,1.561,566,2.872,567,2.956,568,4.065,569,3.515,570,3.171,571,6.024,572,3.053,573,2.256,574,7.867,575,2.112,576,2.284,577,3.515,578,2.799,579,8.552,580,9.961,581,3.171,582,3.515,583,9.533,584,1.979,585,2.284,586,2.956,587,4.065,588,4.087,589,3.171,590,3.809,591,5.553,592,1.886,593,3.515,594,1.756,595,3.515,596,3.053,597,3.304,598,5.758,599,6.21,600,3.272,601,5.239,602,2.486,603,1.817,604,2.014,605,2.675]],["component/176",[2,0.4]],["title/177-1",[174,25.897,606,36.29]],["name/177-1",[]],["text/177-1",[]],["component/177-1",[]],["title/177-2",[2,11.466,79,27.357]],["name/177-2",[]],["text/177-2",[]],["component/177-2",[]],["title/177-3",[435,53.413]],["name/177-3",[]],["text/177-3",[]],["component/177-3",[]],["title/177-4",[285,35.719,606,36.29]],["name/177-4",[]],["text/177-4",[]],["component/177-4",[]],["title/177",[220,33.691,607,42.408]],["name/177",[1,1.532]],["text/177",[2,1.758,7,1.632,8,1.226,9,2.108,45,2.23,53,2.068,57,3.485,72,2.486,75,3.135,77,2.382,78,3.089,79,4.511,83,2.68,88,3.004,90,4.011,93,1.948,95,1.722,103,2.797,105,2.081,112,3.469,113,2.535,118,2.263,119,1.707,136,2.51,138,2.51,140,2.535,148,1.707,154,2.005,156,2.317,158,2.987,172,2.151,173,3.75,174,3.028,192,1.611,194,2.017,199,3.458,200,2.741,201,2.853,207,1.915,212,1.993,216,2.418,218,2.166,222,3.739,223,1.845,224,2.646,227,2.938,228,2.535,248,1.926,249,2.122,250,2.872,255,4.986,258,2.182,285,2.281,287,3.147,298,2.03,308,1.699,320,2.97,367,3.077,407,2.108,431,2.777,432,3.672,433,3.089,435,5.152,448,2.535,449,4.525,453,3.035,458,2.51,481,2.281,492,3.355,509,2.814,520,3.035,524,3.36,535,2.588,550,4.106,573,2.708,606,2.317,608,3.211,609,3.548,610,4.219,611,3.548,612,4.219,613,3.282,614,3.548,615,3.983,616,3.36,617,3.36,618,2.616,619,3.448,620,4.219,621,3.665,622,3.211,623,2.646,624,3.211,625,3.089,626,2.894,627,2.418,628,2.985,629,2.894,630,4.219]],["component/177",[2,0.4]],["title/178-1",[149,27.384,631,44.772,632,43.731]],["name/178-1",[]],["text/178-1",[]],["component/178-1",[]],["title/178-2",[8,16.335,633,41.163,634,44.772]],["name/178-2",[]],["text/178-2",[]],["component/178-2",[]],["title/178-3",[8,16.335,635,42.794,636,44.772]],["name/178-3",[]],["text/178-3",[]],["component/178-3",[]],["title/178",[8,19.195,631,52.612]],["name/178",[631,2.204]],["text/178",[2,0.372,3,1.1,4,0.962,8,2.439,10,1.043,15,0.904,16,1.97,19,2.492,27,1.587,32,1.428,44,0.962,54,1.024,58,1.176,59,1.176,61,1,67,1.464,70,1.314,73,0.721,77,2.147,79,2.691,87,1.176,88,2.279,95,0.874,104,1.491,106,1.037,112,2.179,118,1.149,122,2.426,124,1.012,126,2.167,137,1.21,142,1.587,143,1.262,144,3.553,148,2.332,149,3.165,153,1.196,154,1.752,156,1.176,158,2.692,162,2.025,164,1.167,165,0.941,166,1.14,169,1.3,172,1.092,173,0.932,174,2.547,185,1.752,192,0.818,205,2.079,207,0.972,210,1.526,212,2.724,220,1.092,234,1.807,235,1.03,248,1.683,250,0.962,276,1.176,281,0.855,285,1.158,292,1.167,295,3.537,299,1.439,314,1.158,320,0.994,370,7.243,382,3.247,385,1.448,432,3.088,441,1.314,448,1.287,454,1.196,477,1.359,480,1.167,491,1.801,494,2.529,506,1.491,510,1.343,513,1.861,535,2.261,544,2.286,618,3.009,628,1.515,631,5.174,632,6.245,633,4.757,634,3.864,635,2.806,637,3.694,638,1.801,639,2.142,640,1.932,641,1.115,642,1.666,643,3.686,644,2.142,645,2.492,646,1.932,647,5.765,648,8.713,649,1.706,650,1.568,651,2.699,652,2.946,653,2.936,654,1.428,655,1.392,656,1.3,657,2.142,658,1.274,659,1.666,660,1.541,661,1.515,662,1.541,663,2.142,664,1.666,665,1.491,666,2.142,667,2.608,668,1.63,669,2.567,670,2.142,671,2.142,672,2.142,673,2.142,674,1.706,675,1.541,676,1.801,677,1.666,678,2.142,679,1.491,680,1.801,681,2.142,682,2.142,683,2.142,684,1.666,685,1.801,686,2.142,687,3.686,688,2.338,689,1.41,690,1.3,691,1.63,692,2.261,693,1.75,694,3.1,695,3.686,696,2.567,697,7.573,698,2.142,699,2.142,700,2.142,701,2.142,702,5.862,703,7.243,704,2.142,705,4.853,706,1.932,707,2.608,708,1.63,709,2.142,710,1.801,711,2.142,712,1.206,713,1.63,714,2.142,715,3.686,716,3.686,717,2.567,718,2.142,719,2.142,720,3.326,721,4.853,722,4.853,723,4.216,724,4.853,725,4.853,726,7.099,727,4.853,728,4.853,729,4.853,730,2.142,731,1.25,732,1.328,733,2.142,734,1.932,735,2.142,736,2.022,737,1.932,738,2.142,739,1.41,740,1.176,741,2.867,742,1.132,743,2.142,744,1.541,745,2.142,746,1.666,747,3.686,748,1.541,749,0.858,750,1.158,751,1.666,752,1.491,753,1.861,754,1.515,755,1.63,756,1.63]],["component/178",[2,0.4]],["title/179-1",[757,80.094]],["name/179-1",[]],["text/179-1",[]],["component/179-1",[]],["title/179-2",[443,32.222,758,44.772,759,47.282]],["name/179-2",[]],["text/179-2",[]],["component/179-2",[]],["title/179",[2,7.517,83,15.026,443,24.823,758,34.492,759,36.426]],["name/179",[758,2.204]],["text/179",[2,0.469,4,0.868,7,1.305,8,1.439,14,0.859,15,0.44,17,1.41,20,0.647,27,0.449,28,1.071,30,0.609,32,1.289,36,2.954,37,0.64,41,1.35,44,1.78,48,1.369,51,0.528,53,0.511,55,0.726,57,0.568,61,0.487,68,0.609,71,0.578,77,0.72,79,1.858,80,3.263,83,2.781,84,2.509,90,1.694,92,0.64,93,0.892,94,1.539,95,1.618,103,1.475,104,0.726,107,1.789,111,2.567,113,0.627,117,0.633,118,0.559,119,2.817,120,3.492,125,1.022,126,2.57,127,0.966,131,1,137,0.887,138,0.62,140,0.627,142,0.449,147,0.647,148,1.093,149,1.316,153,0.582,154,0.496,155,0.598,157,0.83,158,4.401,160,0.582,165,0.458,168,1.284,170,4.295,172,0.532,173,0.841,177,0.678,186,1.471,191,1.089,192,0.738,194,0.924,199,0.564,200,0.678,201,0.705,202,1.226,205,0.447,206,0.493,207,1.227,209,1.022,210,0.8,211,0.715,212,0.493,217,1.289,220,0.532,225,2.102,226,1.164,229,3.025,235,0.93,236,0.906,244,1.54,247,2.281,248,0.476,249,1.359,250,0.468,251,0.941,255,1.118,257,0.966,260,2.208,271,2.398,281,1.078,284,0.64,285,1.045,298,1.3,299,0.754,302,1.714,308,1.596,309,0.715,320,2.495,346,1.93,382,0.521,405,2.916,408,4.071,429,0.715,432,1.603,433,0.764,435,4.067,436,3.45,440,1.782,441,2.753,443,1.549,444,0.75,445,0.715,447,0.83,448,1.624,449,1.912,453,1.391,454,0.582,467,0.535,469,0.559,473,1.158,474,1.868,475,0.705,476,1.539,477,1.226,479,0.75,481,0.564,487,1.062,492,0.547,497,0.603,499,0.877,500,4.28,502,0.614,503,0.661,507,0.811,510,0.654,526,0.62,527,2.079,528,0.794,532,0.794,534,1.442,536,0.778,541,0.794,553,1.472,554,2.251,555,0.877,557,3.802,558,0.669,559,2.916,563,0.764,565,0.859,567,0.877,568,1.415,571,2.804,573,1.241,574,2.902,576,1.256,579,0.941,580,2.438,581,4.849,583,3.576,584,1.089,588,0.873,589,0.941,594,0.521,597,1.15,598,1.307,605,1.471,607,0.669,618,1.199,622,0.794,626,1.326,632,3.083,637,0.794,638,2.272,651,0.764,652,0.633,655,1.756,656,0.633,662,0.75,665,0.726,677,0.811,708,0.794,742,0.551,746,0.811,749,0.418,750,0.564,758,3.573,759,1.626,760,0.941,761,1.744,762,1.043,763,1.043,764,0.715,765,1.162,766,1.043,767,1.043,768,1.043,769,0.984,770,0.582,771,0.715,772,1.043,773,2.048,774,0.877,775,4.091,776,2.438,777,1.043,778,0.83,779,1.043,780,1.043,781,1.043,782,1.933,783,1.043,784,0.941,785,1.212,787,1.043,788,1.626,789,1.062,790,1.043,791,0.811,792,0.678,793,1.043,794,2.208,795,1.676,796,2.702,797,1.043,798,0.877,799,0.941,800,0.811,801,0.794,802,0.476,803,1.626,804,1.043,805,1.756,806,2.93,807,0.715,808,1.933,809,2.272,810,0.877,811,1.043,812,1.256,813,1.043,814,0.941,815,0.603,816,4.849,817,0.877,818,2.702,819,0.705,820,0.837,821,1.043,822,0.941,823,1.368,824,0.941,825,0.738,826,1.043,827,1.912,828,1.043,829,1.043,830,1.944,831,0.906,832,0.794,833,1.272,834,1.933,835,0.778,836,1.043,837,1.043,838,2.702,839,2.272,840,1.933,841,0.941,842,1.043,843,0.811,844,1.471,845,1.043,846,0.954,847,0.715,848,1.043,849,0.794,850,0.764,851,0.669,852,0.715,853,1.043,854,0.906,855,1.043,856,1.043,857,2.567,858,0.764,859,1.043,860,1.043,861,1.442,862,0.941,863,1.043,864,1.471,865,1.307,866,3.043,867,2.544,868,0.794,870,0.764,871,1.108,872,0.941,873,1.415,874,1.043,875,1.043,876,0.794,877,1.043,878,2.624,879,1.933,880,1.043,881,1.744,882,1.289,883,1.64,884,0.941,885,1.043,886,1.933,887,2.702,888,1.043,889,1.043,890,1.043,891,1.043,892,0.941,893,1.043,894,0.686,895,1.827,896,1.043,897,2.438,898,0.83,899,1.043,900,0.984,901,0.877,902,0.906,903,0.984,904,1.043,905,1.043,906,1.272,907,0.877,908,0.647,909,1.043,910,1.043,911,1.043,912,0.941,913,1.118,914,3.373,915,1.043,916,0.941,917,2.152,918,0.984,919,1.043,920,1.043,921,1.043,922,1.043,923,0.877,924,1.043,925,0.75,926,0.678,927,1.043,928,1.043,929,1.043,930,0.941,931,0.778,932,0.764,933,1.933,934,1.256,935,1.037,936,1.043,937,1.58,938,1.307,939,0.695,940,0.726,941,1.933,942,1.043,943,1.043,944,0.75,945,1.043,946,1.043,947,1.139,948,0.778,949,0.941,950,1.626,951,0.794,952,0.877,953,0.877,954,0.877,955,0.83,956,1.043,957,3.373,958,1.043,959,0.941,960,1.043,961,0.877,962,1.043,963,1.539,964,0.984,965,0.764,966,0.695,967,0.794,1550,0.906,1824,0.811,1923,0.811,1960,0.941,4440,1.132,4441,1.132]],["component/179",[2,0.4]],["title/180",[895,54.154]],["name/180",[895,1.871]],["text/180",[2,1.147,15,0.931,16,1.146,17,2.073,18,1.586,27,0.949,32,1.47,36,1.603,52,1.775,68,1.287,71,2.093,73,0.742,81,1.415,83,3.822,103,0.964,104,2.631,106,1.067,107,1.706,119,2.675,127,2.478,128,1.325,137,2.671,148,0.892,158,3.969,165,0.969,174,1.944,176,1.325,178,1.174,181,1.854,182,1.854,194,1.807,195,1.989,206,1.042,207,1.001,211,1.512,220,2.997,221,2.487,229,1.832,235,1.061,237,1.678,244,1.006,245,1.512,246,1.211,281,0.88,295,1.352,299,1.475,309,1.512,311,1.396,315,1.148,320,1.024,334,2.819,336,4.056,343,3.409,346,3.22,365,1.989,385,1.491,405,2.456,407,3.304,408,1.56,414,1.56,429,1.512,435,1.47,444,2.718,445,3.402,448,1.325,454,1.231,487,1.211,492,1.157,523,3.178,526,1.312,550,1.415,552,1.756,555,1.854,563,3.631,571,3.509,574,3.631,608,1.678,626,1.512,629,1.512,650,6.223,664,1.715,665,1.535,669,1.535,680,1.854,688,1.398,708,1.678,710,1.854,731,1.287,742,1.997,761,1.989,773,5.351,789,3.228,841,1.989,894,1.451,912,3.409,935,1.183,937,1.802,965,2.767,968,1.678,969,2.205,970,2.205,971,2.205,972,2.205,973,2.205,974,2.205,975,2.205,976,2.205,977,4.309,978,2.205,979,2.205,980,1.47,981,1.587,982,2.205,983,2.205,984,4.96,985,2.205,986,2.205,987,2.205,988,1.915,989,2.205,990,2.205,991,2.205,992,2.248,993,1.535,994,1.915,995,1.989,996,2.205,997,1.989,998,2.205,999,2.205,1000,3.858,1001,2.205,1002,3.009,1003,2.205,1004,3.009,1005,1.989,1006,2.767,1008,4.171,1009,3.779,1010,2.205,1011,1.854,1012,2.205,1013,5.878,1014,2.205,1015,2.205,1016,1.678,1017,2.081,1018,1.802,1019,2.205,1020,2.205,1021,1.678,1022,2.205,1023,1.854,1024,2.205,1025,2.205,1026,2.205,1027,2.205,1028,4.474,1029,1.854,1030,2.205,1031,2.205,1032,2.205,1033,2.205,1034,2.205,1035,5.303,1036,1.989,1037,3.567,1038,1.854,1039,1.854,1040,4.96,1041,1.47,1042,1.756,1043,2.205,1044,1.989,1045,1.989,1046,1.854,1047,1.756,1048,1.854,1049,1.854,1050,1.989,1051,2.205,1052,2.205,1053,2.205,1054,2.205,1055,3.779,1056,3.779,1057,1.645,1058,2.205,1059,1.802,1060,2.205,1061,2.205,1062,2.205,1063,2.205,1064,2.205,1065,2.205,1066,1.989,1067,1.854,1068,2.205,1069,2.205,1070,2.205,1071,2.205,1072,2.205,1073,1.915,1074,2.205,1075,2.205,1076,2.205,1077,4.474,1078,3.409,1079,3.088,1080,2.205,1081,2.205,1082,1.183,1083,1.678,1084,2.205,1085,2.205,1086,2.205,1087,2.205,1088,2.205,1089,2.205,1090,2.205,1091,2.147,1092,2.205,1093,2.205,1094,2.205,1095,2.081,1096,1.854]],["component/180",[2,0.4]],["title/181",[207,36.358]],["name/181",[207,1.256]],["text/181",[2,1.706,5,4.135,83,3.41,95,3.195,109,5.15,126,3.495,194,3.742,207,3.552,250,4.414,408,6.954,530,5.838,635,5.956,775,7.483,934,5.085,1000,6.086,1041,5.218,1097,8.869,1098,7.825,1099,7.825,1100,7.825,1101,5.838,1102,6.581,1103,4.702,1104,4.8,1105,7.825]],["component/181",[2,0.4]],["title/182-1",[551,55.772]],["name/182-1",[]],["text/182-1",[]],["component/182-1",[]],["title/182-2",[802,36.56]],["name/182-2",[]],["text/182-2",[]],["component/182-2",[]],["title/182-3",[212,31.214,256,44.06]],["name/182-3",[]],["text/182-3",[]],["component/182-3",[]],["title/182-4",[6,24.21,212,31.214]],["name/182-4",[]],["text/182-4",[]],["component/182-4",[]],["title/182-5",[100,39.308,212,31.214]],["name/182-5",[]],["text/182-5",[]],["component/182-5",[]],["title/182-6",[5,34.914,77,24.608]],["name/182-6",[]],["text/182-6",[]],["component/182-6",[]],["title/182-7",[84,16.062,212,23.118,913,28.297,1574,32.632]],["name/182-7",[]],["text/182-7",[]],["component/182-7",[]],["title/182-8",[6,15.872,100,25.77,105,21.366,308,17.441,1674,37.63]],["name/182-8",[]],["text/182-8",[]],["component/182-8",[]],["title/182",[192,25.234,229,24.407]],["name/182",[1,1.532]],["text/182",[2,1.302,4,1.88,5,0.935,6,3.099,7,1.62,8,2.418,14,0.786,15,1.767,17,0.396,19,1.891,22,0.671,24,0.582,25,2.569,26,2.444,27,1.071,28,0.525,36,0.402,41,2.319,44,1.117,45,0.501,47,0.632,51,1.58,52,0.445,53,1.53,54,1.189,57,1.355,58,0.972,61,0.826,67,0.703,68,0.553,71,0.525,73,0.319,74,0.582,75,1.53,77,3.046,79,2.938,83,1.278,84,2.399,86,0.722,92,1.085,93,0.817,95,3.21,97,0.755,98,0.856,100,5.032,102,1.005,103,1.611,104,0.66,105,0.468,106,0.459,107,0.428,108,0.755,109,0.624,110,0.539,112,2.974,118,0.509,119,0.383,122,5.382,123,0.588,125,0.935,127,0.884,130,2.338,133,1.213,137,2.897,142,1.071,146,0.775,148,2.456,149,0.862,155,2.111,156,0.521,158,1.955,162,0.521,164,0.517,165,0.778,166,1.324,173,1.082,174,0.693,176,1.063,178,0.505,184,1.875,192,3.88,193,0.755,194,0.453,198,1.48,202,0.601,205,1.578,206,0.836,207,0.803,208,0.855,209,0.935,212,4.221,220,0.483,222,0.459,223,1.088,226,0.408,227,0.66,229,3.26,230,0.513,231,1.257,234,0.867,235,0.851,244,0.808,247,1.682,248,1.424,249,0.89,250,0.794,254,0.624,255,0.548,256,1.18,271,2.624,273,0.797,274,0.737,284,0.582,286,1.014,292,0.964,293,0.775,297,0.415,298,0.851,299,1.218,301,1.57,308,2.445,311,1.714,314,2.73,315,2.416,320,0.44,325,1.495,326,1.865,345,1.273,363,0.722,367,0.851,382,0.474,407,0.884,443,1.014,446,0.588,454,2.057,462,1.446,473,0.758,483,0.671,487,0.972,492,0.928,503,0.601,506,1.732,509,0.632,518,1.728,525,0.497,539,0.525,542,0.855,543,0.632,548,0.855,551,0.66,554,0.539,558,1.136,592,0.509,597,1.053,600,0.559,602,0.671,603,1.286,607,0.608,611,0.797,614,0.797,623,2.31,625,0.694,633,0.694,641,1.295,650,0.694,652,2.542,654,0.632,655,0.616,658,1.48,660,0.682,684,1.376,689,0.624,731,2.444,740,0.521,749,1.86,801,0.722,802,1.681,810,1.488,812,1.15,820,0.766,844,0.722,846,0.468,849,0.722,851,2.003,906,0.624,908,0.588,913,0.548,931,1.32,934,0.616,935,1.334,947,2.734,966,1.18,992,0.564,993,0.66,1011,0.797,1079,0.775,1091,2.636,1113,0.671,1119,1.674,1120,1.252,1154,1.252,1184,0.722,1234,4.38,1249,1.344,1265,1.894,1280,0.462,1282,0.65,1291,0.755,1293,0.66,1296,0.707,1298,0.694,1314,1.946,1318,0.855,1322,2.054,1339,2.909,1366,0.594,1375,0.624,1390,2.508,1408,0.632,1420,0.48,1429,1.252,1445,1.821,1457,1.376,1461,0.543,1468,0.505,1471,0.632,1474,1.273,1495,0.65,1506,0.66,1516,0.582,1527,0.671,1528,0.576,1549,0.737,1569,0.497,1574,1.659,1579,0.57,1593,0.755,1601,0.694,1602,0.895,1603,0.855,1623,1.659,1624,0.543,1627,0.671,1657,0.797,1665,0.855,1669,0.855,1670,0.66,1674,0.824,1675,0.948,1676,0.948,1677,3.094,1678,0.948,1679,1.821,1680,0.755,1681,0.855,1682,0.755,1683,1.164,1684,0.948,1685,0.948,1686,0.948,1687,1.769,1688,1.981,1689,0.671,1690,0.855,1691,0.948,1692,0.948,1693,0.948,1694,0.948,1695,0.948,1696,0.948,1697,2.485,1708,0.755,1710,1.769,1711,0.948,1712,0.948,1713,0.824,1714,0.797,1715,1.446,1716,0.797,1718,2.244,1719,2.244,1720,1.596,1721,0.855,1730,0.948,1731,0.948,1732,0.948,1733,1.537,1734,0.775,1735,1.769,1736,0.948,1737,0.948,1738,0.694,1739,0.948,1740,0.855,1741,0.948,1742,5.049,1743,0.948,1744,0.797,1745,1.769,1746,0.895,1747,0.755,1748,0.895,1749,1.488,1750,0.948,1751,1.769,1753,1.537,1754,2.487,1759,0.707,1761,0.948,1762,0.855,1764,0.948,1765,1.769,1766,0.855,1767,1.769,1768,0.855,1769,0.948,1770,0.855,1771,0.671,1772,0.948,1773,0.948,1774,0.855,1775,0.855,1776,0.948,1778,0.641,1779,0.775,1780,0.895,1781,0.948,1783,0.797,1784,0.855,1785,0.948,1786,0.948,1787,0.824,1788,0.755,1789,0.895,1790,0.737,1791,1.596,1792,1.769,1793,0.948,1935,0.737,2045,0.671,2288,0.616,4442,1.029,4443,1.029]],["component/182",[2,0.4]],["title/183-1",[79,20.261,1468,26.052,1794,38.965,1795,39.985]],["name/183-1",[]],["text/183-1",[]],["component/183-1",[]],["title/183",[246,36.29,505,40.531]],["name/183",[294,2.327]],["text/183",[8,2.183,14,2.332,41,2.624,44,2.357,77,1.955,79,4.683,80,3.187,83,3.324,92,3.221,122,3.455,127,2.624,148,2.124,154,3.572,158,3.509,166,2.795,174,2.058,175,3.221,192,3.352,202,4.767,210,2.174,219,4.083,220,4.476,234,4.302,235,4.222,246,2.884,249,2.641,294,4.415,298,2.525,314,2.838,428,3.714,437,3.916,438,2.37,442,6.589,458,3.123,467,2.696,481,2.838,544,3.256,545,3.916,553,2.861,623,3.292,669,3.656,690,3.187,806,4.561,1468,2.795,1473,3.221,1551,4.181,1670,3.656,1680,4.181,1778,5.081,1794,8.075,1795,4.29,1796,5.845,1797,4.736,1798,4.736,1801,3.714,1802,5.25,1803,4.736,1804,6.32,1904,4.083,2099,4.561,2283,4.561,2613,3.916,4444,5.696]],["component/183",[2,0.4]],["title/184",[967,60.964]],["name/184",[1,1.532]],["text/184",[2,1.623,8,2.718,83,3.245,93,4.318,158,4.368,286,5.361,432,4.446,607,6.005,1082,5.019]],["component/184",[2,0.4]],["title/185",[137,16.062,440,25.858,527,25.669,528,37.244]],["name/185",[527,1.452]],["text/185",[30,5.365,126,4.105,137,3.017,297,4.019,440,4.857,527,4.822,528,6.996,1082,4.931,1796,7.149,1824,7.149,4445,9.973]],["component/185",[2,0.4]],["title/186",[229,24.407,669,46.006]],["name/186",[1805,2.767]],["text/186",[8,2.647,76,6.077,126,4.069,229,3.366,297,3.984,669,6.345,717,6.345,1082,5.787,1471,6.077,1803,8.22,1806,9.112]],["component/186",[2,0.4]],["title/187-1",[48,33.462,438,29.827]],["name/187-1",[]],["text/187-1",[]],["component/187-1",[]],["title/187-2",[221,43.481,1807,57.399]],["name/187-2",[]],["text/187-2",[]],["component/187-2",[]],["title/187-3",[492,29.494,662,40.443,690,34.131]],["name/187-3",[]],["text/187-3",[]],["component/187-3",[]],["title/187-4",[7,25.56,773,40.108]],["name/187-4",[]],["text/187-4",[]],["component/187-4",[]],["title/187",[]],["name/187",[617,2.204]],["text/187",[2,1.019,5,1.47,8,2.5,13,1.049,15,1.174,48,2.327,54,2.197,59,1.528,76,1.855,79,1.903,83,3.236,93,1.284,95,2.397,102,1.58,103,1.216,105,2.897,106,1.346,118,1.492,123,1.725,124,1.314,125,1.47,126,1.242,136,1.655,137,0.913,141,1.83,148,1.125,154,1.322,156,2.524,158,3.797,159,2.658,164,2.504,165,1.223,166,1.481,173,3.285,191,1.566,192,1.755,194,1.33,198,1.655,203,1.855,207,2.086,210,1.903,216,2.634,221,5.352,224,1.744,244,1.27,249,1.399,250,2.063,252,1.937,257,1.39,289,1.655,292,1.515,297,2.01,298,2.825,302,1.764,311,1.027,407,1.39,438,2.075,478,3.498,480,4.115,482,2.915,487,2.524,490,2.509,492,1.459,496,2.001,525,1.459,535,1.706,543,1.855,544,1.725,550,1.785,553,1.515,565,2.041,571,1.967,576,1.807,597,2.734,600,1.639,617,4.676,629,3.152,633,2.036,636,2.215,658,1.655,659,2.163,690,2.79,732,1.725,739,1.83,749,1.115,750,1.504,751,2.163,752,5.992,770,2.566,795,2.85,799,7.337,800,4.568,847,3.152,858,2.036,895,1.88,925,2.001,967,3.498,981,2.467,1082,2.465,1097,2.509,1104,1.706,1119,1.492,1124,2.117,1162,1.908,1202,2.215,1203,2.339,1241,2.634,1254,1.671,1262,1.908,1310,2.95,1316,1.937,1323,1.671,1339,1.744,1437,4.378,1534,1.725,1573,1.855,1794,2.215,1796,2.163,1807,2.416,1808,1.58,1809,2.781,1810,2.273,1811,2.781,1812,2.509,1813,4.595,1814,6.35,1815,8.132,1816,2.781,1817,2.781,1818,2.625,1819,2.781,1820,2.781,1821,2.781,1822,2.781,1823,2.509,1824,2.163,1825,2.781,1826,2.781,1827,2.339,1828,2.339,1829,2.781,1830,3.992,1831,2.416,1832,2.781,1833,2.781,1834,4.939,1835,4.595,1836,4.595,1837,4.595,1838,4.595,1839,2.781,1840,2.339,1844,4.595,1845,3.865,1847,2.781,1849,2.781,1850,2.781,1851,2.781,1852,2.339,1853,2.036,1854,2.781,1855,2.781,1856,2.036,1858,2.781,1859,2.781,1860,2.781,1861,2.781,4446,3.018]],["component/187",[2,0.4]],["title/188-1",[95,22.954,299,21.941,535,34.491]],["name/188-1",[]],["text/188-1",[]],["component/188-1",[]],["title/188-2",[32,37.494,165,24.714,1862,47.282]],["name/188-2",[]],["text/188-2",[]],["component/188-2",[]],["title/188-3",[80,40.108,1778,44.671]],["name/188-3",[]],["text/188-3",[]],["component/188-3",[]],["title/188",[80,40.108,192,25.234]],["name/188",[80,1.68]],["text/188",[2,0.877,3,1.161,6,1.852,8,2.392,11,1.469,14,1.716,15,2.523,17,0.945,27,1.663,32,4.477,44,1.015,45,2.041,54,1.081,65,1.627,73,0.761,75,2.93,77,2.5,79,3.687,80,4.075,83,0.785,88,1.062,93,1.044,95,1.577,96,2.234,100,1.345,103,1.689,105,1.116,106,1.095,107,2.699,117,3.069,118,2.072,122,1.488,123,1.402,124,2.388,125,1.195,126,1.725,127,1.93,130,0.77,131,1.997,137,0.742,142,0.974,144,1.656,149,1.101,154,1.075,158,2.36,160,1.263,165,0.994,166,1.204,170,1.186,172,2.578,173,1.68,175,2.369,192,3.678,202,2.45,205,0.969,206,1.068,209,1.195,212,2.824,221,1.488,226,0.974,228,1.359,231,1.555,233,1.6,244,3.338,250,3.014,252,6.957,253,1.801,255,3.457,257,1.13,273,1.902,276,2.776,285,1.223,286,1.296,292,1.232,297,0.989,298,2.432,299,0.883,301,1.138,311,1.427,315,1.178,324,1.402,327,2.94,367,1.858,442,4.362,472,1.721,473,1.655,477,3.792,478,1.721,482,1.434,483,3.576,518,1.252,519,1.274,521,3.075,525,1.186,529,1.965,530,1.687,535,5.629,537,2.04,539,2.139,540,1.263,550,1.452,568,5.354,600,1.332,602,2.732,609,1.902,616,3.075,641,1.178,652,1.373,654,1.508,764,1.551,765,3.037,785,1.418,789,1.242,791,1.759,801,4.55,802,2.307,908,1.402,917,1.801,931,2.881,932,1.656,1029,1.902,1119,2.712,1162,1.551,1182,2.04,1293,1.575,1356,1.32,1408,1.508,1423,1.529,1450,1.434,1624,1.296,1647,2.04,1670,1.575,1697,1.801,1726,5.643,1744,1.902,1778,1.529,1794,4.025,1797,2.04,1798,2.04,1810,1.848,1862,7.226,1863,3.862,1864,5.055,1865,1.529,1866,1.902,1867,2.261,1868,2.261,1869,2.261,1870,2.261,1871,2.261,1872,1.848,1873,1.721,1874,5.055,1875,3.862,1876,2.261,1877,2.261,1878,1.848,1879,2.261,1880,1.902,1881,5.055,1882,1.801,1883,1.902,1884,3.484,1885,2.261,1886,2.261,1887,3.646,1888,2.261,1889,2.261,1890,2.261,1891,1.801,1892,2.261,1893,2.261,1894,2.261,1895,2.261,1896,2.261,1897,2.261,1898,2.261,1899,2.135,1900,2.261,1901,3.862,1902,2.261,1903,2.881,1904,3.932,1905,2.261]],["component/188",[2,0.4]],["title/189-1",[218,33.925,770,36.893]],["name/189-1",[]],["text/189-1",[]],["component/189-1",[]],["title/189-2",[635,60.964]],["name/189-2",[]],["text/189-2",[]],["component/189-2",[]],["title/189",[218,33.925,224,41.429]],["name/189",[1,1.532]],["text/189",[2,1.485,3,1.823,4,1.594,5,1.876,7,3.815,9,1.774,17,2.34,25,2.941,37,2.178,44,1.594,51,1.798,53,2.743,54,1.698,75,1.74,77,3.386,79,4.582,82,3.51,83,1.232,84,1.165,93,1.639,95,2.285,98,3.807,100,2.112,103,3.03,112,4.273,113,2.133,117,2.155,122,2.336,124,2.644,125,1.876,127,2.797,130,1.209,137,2.582,138,2.112,140,2.133,148,2.803,156,1.95,158,1.658,166,1.89,170,1.862,173,1.544,174,1.392,178,1.89,184,2.133,191,1.999,199,4.252,205,1.521,206,1.677,207,1.612,210,1.47,211,2.435,212,2.644,213,3.839,214,2.336,215,2.112,216,3.971,221,2.336,222,1.718,226,1.529,231,3.167,234,3.396,235,3.783,245,2.435,246,4.701,250,1.594,255,2.053,284,2.178,298,1.708,299,2.184,308,1.43,527,1.862,543,2.368,554,2.017,558,2.279,565,2.486,594,1.774,635,2.702,652,2.155,676,2.986,677,2.761,692,2.178,740,1.95,820,1.537,926,2.307,940,2.472,1203,2.986,1205,2.279,1290,2.986,1501,1.966,1624,3.208,1670,2.472,1778,2.4,1830,3.084,1852,2.986,1909,2.435,1915,3.55,1916,2.761,1917,3.55,1918,3.55,1919,2.554,1920,3.55,1921,3.203,1922,3.203,1923,2.761,1924,3.55,1925,3.55,1926,3.55,1927,2.649,1928,3.55,1929,3.55,1930,3.55,2187,5.284,2188,3.351,4447,3.852,4448,3.852,4449,3.852]],["component/189",[2,0.4]],["title/190",[1906,67.357]],["name/190",[1906,2.327]],["text/190",[8,2.625,30,5.273,80,5.484,126,4.034,192,3.45,297,3.95,432,4.293,554,5.132,1082,4.846,1796,7.026,1906,7.597,1907,9.034,1908,9.034]],["component/190",[2,0.4]],["title/191-1",[117,48.623]],["name/191-1",[]],["text/191-1",[]],["component/191-1",[]],["title/191-2",[1919,57.614]],["name/191-2",[]],["text/191-2",[]],["component/191-2",[]],["title/191-3",[1932,58.64]],["name/191-3",[]],["text/191-3",[]],["component/191-3",[]],["title/191-4",[213,54.939]],["name/191-4",[]],["text/191-4",[]],["component/191-4",[]],["title/191-5",[216,45.902]],["name/191-5",[]],["text/191-5",[]],["component/191-5",[]],["title/191-6",[216,37.864,1933,59.605]],["name/191-6",[]],["text/191-6",[]],["component/191-6",[]],["title/191",[138,47.653]],["name/191",[138,1.646]],["text/191",[7,1.369,8,1.028,40,1.555,41,5.066,45,4.148,88,4.013,102,2.01,109,2.329,110,2.01,112,2.507,117,4.197,120,3.627,123,2.194,124,3.266,127,5.187,137,1.162,143,2.085,148,3.456,156,5.913,170,1.856,173,3.95,184,2.126,205,1.516,210,2.311,212,1.672,213,3.829,214,2.329,222,1.713,297,1.547,301,1.78,311,1.307,441,2.171,493,2.545,518,3.829,524,2.818,525,1.856,606,1.944,689,2.329,690,3.389,710,2.976,742,1.87,908,5.298,916,3.192,1120,2.503,1162,3.829,1202,2.818,1339,2.219,1624,4.499,1814,9.052,1834,9.299,1862,2.976,1919,4.973,1921,3.192,1932,5.062,1933,3.192,1938,4.55,1939,9.85,1942,3.538,1943,3.538,1944,3.192,1945,3.192,1946,5.582,1948,3.538,1952,2.64,1953,3.538,1954,3.538,1956,3.538,1957,3.538,1963,6.006,1964,4.85,1965,3.538,1966,3.074,1967,3.538,1968,5.582,1969,3.538,1970,3.538,1971,3.192,1972,3.34,1981,8.544,1982,3.538,1983,3.192,1984,5.582,1985,2.464,2978,2.976]],["component/191",[2,0.4]],["title/192-1",[117,48.623]],["name/192-1",[]],["text/192-1",[]],["component/192-1",[]],["title/192-2",[1919,57.614]],["name/192-2",[]],["text/192-2",[]],["component/192-2",[]],["title/192-3",[1932,58.64]],["name/192-3",[]],["text/192-3",[]],["component/192-3",[]],["title/192-4",[213,54.939]],["name/192-4",[]],["text/192-4",[]],["component/192-4",[]],["title/192-5",[216,45.902]],["name/192-5",[]],["text/192-5",[]],["component/192-5",[]],["title/192",[136,39.308,786,36.893]],["name/192",[1923,2.152]],["text/192",[8,2.125,44,1.734,45,4.351,74,2.37,88,3.867,90,2.422,93,1.783,116,2.779,117,3.629,123,2.395,124,2.825,126,1.725,128,2.321,136,3.557,137,2.401,143,4.851,148,4.382,156,6.12,160,2.157,173,3.582,177,2.51,205,1.655,210,2.476,213,4.101,216,5.103,222,2.894,250,3.284,297,1.689,298,1.858,299,1.508,346,1.881,441,2.37,474,2.139,517,5.394,518,4.05,525,2.026,604,2.214,740,2.122,786,2.157,802,1.763,908,5.106,1041,2.576,1202,3.076,1241,2.214,1438,2.422,1488,3.005,1624,4.719,1919,4.301,1922,9.397,1923,4.65,1932,4.377,1938,4.813,1963,3.356,1964,3.356,1986,6.904,1987,3.647,1989,3.485,1990,3.863,1994,8.034,1995,3.863,1996,3.356,1997,3.076,1998,2.612,1999,3.863,2000,3.863,2001,5.979,2002,5.194,2003,5.979,2004,5.174,2005,5.979,2006,5.979,2007,5.979,2008,5.979,2009,5.394,2010,5.979,2011,3.863,2012,3.863,4450,4.191,4451,4.191,4452,4.191]],["component/192",[2,0.4]],["title/193-1",[117,48.623]],["name/193-1",[]],["text/193-1",[]],["component/193-1",[]],["title/193-2",[1919,57.614]],["name/193-2",[]],["text/193-2",[]],["component/193-2",[]],["title/193-3",[1932,58.64]],["name/193-3",[]],["text/193-3",[]],["component/193-3",[]],["title/193-4",[213,54.939]],["name/193-4",[]],["text/193-4",[]],["component/193-4",[]],["title/193-5",[216,45.902]],["name/193-5",[]],["text/193-5",[]],["component/193-5",[]],["title/193-6",[4453,80.094]],["name/193-6",[]],["text/193-6",[]],["component/193-6",[]],["title/193-7",[4454,86.904]],["name/193-7",[]],["text/193-7",[]],["component/193-7",[]],["title/193-8",[4455,80.094]],["name/193-8",[]],["text/193-8",[]],["component/193-8",[]],["title/193",[140,48.129]],["name/193",[140,1.663]],["text/193",[8,1.953,34,1.287,36,0.961,44,1.018,45,3.552,46,1.555,50,1.335,51,1.148,53,1.896,56,1.287,74,1.39,79,3.032,81,2.484,88,3.157,89,2.654,93,3.97,102,2.876,106,1.873,110,1.287,117,2.349,120,1.473,123,2.399,124,2.828,126,2.673,127,2.992,128,5.519,130,1.317,133,1.555,136,1.348,137,0.744,140,5.355,148,3.479,153,1.266,155,4.482,156,5.848,159,1.311,160,2.161,165,2.225,169,2.349,171,1.405,173,3.185,176,1.362,178,1.207,184,1.362,192,0.866,194,1.084,199,1.225,205,2.169,207,1.029,213,1.555,216,2.217,217,1.511,219,1.763,221,3.332,222,2.898,229,1.429,230,1.225,234,2.482,235,1.09,236,1.969,244,2.732,248,1.034,250,1.737,252,1.578,275,2.833,276,4.022,285,1.225,286,2.217,297,3.603,298,2.88,301,1.947,325,2.325,367,1.861,436,1.578,473,2.565,479,1.63,483,1.603,487,1.245,492,2.03,518,3.722,519,1.276,539,1.255,607,1.455,658,2.302,665,1.578,692,1.39,696,2.694,740,1.245,770,2.161,795,3.14,805,3.29,830,2.783,908,3.712,925,1.63,937,1.852,968,1.725,1119,3.606,1148,2.139,1222,1.852,1241,5.523,1284,2.139,1335,1.969,1339,2.426,1354,1.532,1378,1.421,1437,1.455,1488,1.763,1494,1.852,1501,1.255,1516,1.39,1565,1.659,1584,1.852,1624,3.431,1626,2.514,1674,1.969,1734,1.852,1791,2.045,1810,1.852,1911,2.266,1913,2.266,1919,1.63,1932,1.659,1935,1.763,1938,3.94,1964,1.969,1998,1.532,2018,2.266,2027,3.869,2045,1.603,2046,2.266,2047,3.361,2048,2.514,2076,1.852,2077,1.691,2078,1.852,2088,1.763,2093,1.969,2203,2.139,2220,1.906,2291,1.225,2294,1.511,2603,1.969,2823,3.653,3151,1.763,3204,1.725,3513,2.045,3569,2.045,3663,2.139,4134,3.653,4453,5.063,4455,2.266,4456,2.459,4457,2.459,4458,2.459,4459,2.459,4460,2.459,4461,2.459,4462,2.459,4463,2.459,4464,2.459,4465,2.459,4466,4.198,4467,2.459,4468,2.459,4469,2.459,4470,4.198,4471,2.459,4472,2.459,4473,4.198]],["component/193",[2,0.4]],["title/194-1",[44,29.665,170,34.658]],["name/194-1",[]],["text/194-1",[]],["component/194-1",[]],["title/194",[6,24.21,1104,40.531]],["name/194",[1,1.532]],["text/194",[165,4.344,1255,6.991,1479,7.521]],["component/194",[2,0.4]],["title/195-1",[27,16.731,84,12.754,192,14.839,212,18.356,229,14.353,442,25.247]],["name/195-1",[]],["text/195-1",[]],["component/195-1",[]],["title/195-2",[132,28.56,218,25.126,220,24.952,2051,33.084]],["name/195-2",[]],["text/195-2",[]],["component/195-2",[]],["title/195-3",[84,18.456,654,37.494,1508,42.794]],["name/195-3",[]],["text/195-3",[]],["component/195-3",[]],["title/195-4",[84,21.688,218,33.925]],["name/195-4",[]],["text/195-4",[]],["component/195-4",[]],["title/195-5",[345,40.443,519,31.663,1516,34.491]],["name/195-5",[]],["text/195-5",[]],["component/195-5",[]],["title/195-6",[84,21.688,544,40.971]],["name/195-6",[]],["text/195-6",[]],["component/195-6",[]],["title/195-7",[84,21.688,2052,48.371]],["name/195-7",[]],["text/195-7",[]],["component/195-7",[]],["title/195-8",[174,19.18,320,22.717,449,34.616,559,31.796]],["name/195-8",[]],["text/195-8",[]],["component/195-8",[]],["title/195-9",[84,18.456,559,36.534,1938,37.002]],["name/195-9",[]],["text/195-9",[]],["component/195-9",[]],["title/195-10",[84,14.218,148,17.521,206,20.464,748,31.157,835,32.313]],["name/195-10",[]],["text/195-10",[]],["component/195-10",[]],["title/195-11",[77,20.941,84,18.456,202,35.663]],["name/195-11",[]],["text/195-11",[]],["component/195-11",[]],["title/195-12",[84,19.714,148,15.716,442,25.247,504,27.948,526,23.116]],["name/195-12",[]],["text/195-12",[]],["component/195-12",[]],["title/195",[2,8.492,79,20.261,84,16.062,207,22.212]],["name/195",[79,0.663,207,0.727]],["text/195",[2,0.958,4,1.283,5,0.694,7,1.272,8,1.07,9,0.656,11,0.853,14,0.307,15,0.792,17,1.374,20,0.814,24,0.806,27,1.586,33,0.389,34,0.393,44,1.073,45,0.365,50,0.774,52,0.882,53,0.644,54,0.897,56,0.746,58,1.57,61,0.876,68,0.767,70,0.424,72,1.106,74,0.424,75,0.92,77,1.961,79,3.368,82,0.824,83,2.219,84,3.503,86,2.175,88,2.06,89,0.474,93,1.103,95,0.282,102,1.623,103,0.821,105,1.816,106,0.908,107,1.079,110,1.357,116,0.497,117,2.235,119,1.774,122,3.285,124,1.912,125,0.694,126,0.587,127,0.345,131,0.357,132,2.362,133,0.474,137,1.543,142,1.029,143,1.106,144,2.406,147,0.814,148,4.181,153,0.386,154,1.358,155,0.753,158,1.89,159,0.4,160,1.048,168,0.892,170,0.362,172,0.352,173,0.816,174,0.736,175,0.806,176,1.717,177,0.449,178,0.999,184,0.415,185,0.624,186,1,190,0.419,192,3.725,194,1.142,198,0.411,202,3.653,205,0.296,206,0.326,207,1.991,209,0.365,210,1.816,212,0.621,215,0.411,218,2.958,220,2.545,222,1.782,226,0.298,227,0.915,229,3.044,232,0.581,234,0.339,235,1.375,244,1.847,247,3.894,248,1.681,249,0.348,250,0.59,252,0.481,253,0.55,255,0.4,257,0.656,261,0.581,262,0.565,263,0.383,265,1.046,266,0.526,271,0.334,276,2.409,278,0.516,285,0.374,286,0.753,287,0.98,297,1.045,298,0.632,299,1.579,300,0.489,301,1.438,302,1.19,308,0.278,311,0.883,314,2.541,325,0.789,327,0.526,345,0.497,346,0.337,367,0.903,382,2.023,407,1.643,429,0.474,431,0.455,432,0.624,436,4.168,440,0.365,442,3.743,445,0.901,448,0.415,449,1.328,458,2.191,466,0.467,467,0.355,469,1.763,472,0.526,473,1.734,477,1.516,479,0.497,480,2.39,481,4.562,482,1.516,483,0.929,484,0.481,492,1.253,493,0.497,494,0.901,495,1,496,0.945,497,0.76,498,0.516,500,1.903,502,1.684,503,0.833,504,1.719,505,1.151,510,1.177,519,0.74,521,1.903,522,0.449,525,2.123,526,0.781,533,0.461,543,0.461,544,1.772,545,0.516,546,1.819,549,1.903,550,0.444,554,0.393,559,4.979,560,1.105,565,0.307,568,0.506,571,1.328,574,1.374,576,0.449,578,1.495,584,0.74,585,1.22,586,1.105,587,1.374,588,2.973,590,0.901,597,0.781,598,0.467,601,1,605,0.526,607,0.843,624,0.526,629,1.639,641,0.36,652,0.797,654,0.876,655,0.853,660,0.497,661,0.929,688,0.438,689,0.864,690,1.451,713,2.502,732,0.814,739,0.455,740,1.312,742,0.365,748,1.719,749,0.277,754,0.489,756,0.526,770,0.386,788,0.581,792,0.449,801,0.526,812,0.449,823,0.489,830,0.497,844,0.526,846,0.341,847,2.255,850,0.506,852,0.474,873,0.506,883,0.419,894,0.864,898,0.55,908,0.429,913,1.085,925,0.945,926,0.449,932,0.962,935,1.533,938,0.467,944,0.497,947,2.17,954,0.581,955,0.55,980,0.461,992,0.411,1114,0.489,1119,0.371,1190,0.581,1205,1.205,1225,0.581,1238,0.623,1241,2.11,1242,1,1245,1.495,1262,0.474,1281,0.581,1293,0.481,1316,0.481,1319,0.581,1336,0.506,1339,1.177,1354,0.467,1405,1.177,1423,0.467,1429,0.929,1437,1.205,1461,0.753,1468,0.699,1469,0.55,1499,1.593,1501,0.383,1509,1.495,1516,0.806,1556,0.526,1569,0.985,1579,0.789,1583,0.537,1589,0.506,1591,0.55,1618,0.55,1619,0.623,1623,0.461,1624,0.396,1637,0.481,1640,0.481,1649,0.565,1652,0.438,1671,0.526,1677,0.461,1679,1.374,1707,0.497,1714,0.581,1715,0.565,1729,0.833,1738,0.506,1747,1.046,1749,0.581,1760,0.455,1778,1.269,1804,1.578,1824,0.537,1882,0.55,1909,0.474,1916,0.537,1940,0.467,1952,0.516,2004,1.328,2048,0.449,2051,0.888,2052,3.655,2053,0.537,2054,1.185,2055,0.623,2056,0.623,2057,0.691,2058,1.287,2059,0.581,2060,0.581,2061,1.185,2062,1.313,2063,0.691,2064,1.903,2065,6.934,2066,0.623,2067,4.385,2068,1.578,2069,1.693,2070,0.581,2071,0.497,2072,0.623,2073,0.565,2074,0.691,2075,0.526,2076,1.073,2077,0.516,2078,1.073,2079,1.578,2080,0.623,2081,0.433,2082,0.581,2083,3.03,2084,0.623,2085,0.691,2087,0.962,2088,0.537,2089,0.691,2090,0.691,2091,1.313,2092,0.623,2093,1.631,2094,0.623,2095,0.623,2096,0.581,2097,0.623,2098,0.623,2099,1.631,2100,0.623,2101,0.623,2102,1.046,2103,3.322,2104,0.623,2105,4.992,2110,1.105,2111,0.581,2112,0.623,2113,1.877,2114,0.623,2115,2.156,2116,0.581,2117,0.691,2118,0.691,2119,0.623,2120,0.691,2121,0.623,2122,0.623,2123,0.581,2124,0.623,2125,0.623,2126,0.623,2127,0.691,2129,0.98,2130,0.506,2131,0.623,2132,1.4,2133,0.497,2134,0.623,2135,0.506,2136,0.623,2137,0.623,2138,0.526,2139,0.581,2140,0.355,2141,0.407,2142,0.691,2143,0.623,2144,0.691,2145,1.185,2146,0.55,2147,0.55,2148,0.55,2149,0.691,2150,0.623,2151,0.623,2152,0.581,2153,1.185,2154,0.516,2155,0.581,2156,0.565,2157,0.623,2158,0.526,2159,0.623,2160,0.623,2212,1.772,4474,0.691,4475,0.691,4476,1.877,4477,0.75]],["component/195",[2,0.4]],["title/196",[84,25.897,846,27.734]],["name/196",[1,1.532]],["text/196",[]],["component/196",[2,0.4]],["title/197-1",[2161,80.094]],["name/197-1",[]],["text/197-1",[]],["component/197-1",[]],["title/197-2",[84,16.062,125,25.858,127,24.453,218,25.126]],["name/197-2",[]],["text/197-2",[]],["component/197-2",[]],["title/197-3",[84,18.456,218,28.87,1469,44.772]],["name/197-3",[]],["text/197-3",[]],["component/197-3",[]],["title/197-4",[27,24.211,84,18.456,442,36.534]],["name/197-4",[]],["text/197-4",[]],["component/197-4",[]],["title/197-5",[132,28.56,218,25.126,220,24.952,2051,33.084]],["name/197-5",[]],["text/197-5",[]],["component/197-5",[]],["title/197-6",[84,18.456,654,37.494,1508,42.794]],["name/197-6",[]],["text/197-6",[]],["component/197-6",[]],["title/197-7",[84,21.688,218,33.925]],["name/197-7",[]],["text/197-7",[]],["component/197-7",[]],["title/197-8",[345,40.443,519,31.663,1516,34.491]],["name/197-8",[]],["text/197-8",[]],["component/197-8",[]],["title/197-9",[84,21.688,544,40.971]],["name/197-9",[]],["text/197-9",[]],["component/197-9",[]],["title/197-10",[84,21.688,2052,48.371]],["name/197-10",[]],["text/197-10",[]],["component/197-10",[]],["title/197-11",[174,19.18,320,22.717,449,34.616,559,31.796]],["name/197-11",[]],["text/197-11",[]],["component/197-11",[]],["title/197-12",[84,18.456,559,36.534,1938,37.002]],["name/197-12",[]],["text/197-12",[]],["component/197-12",[]],["title/197-13",[84,14.218,215,25.77,299,16.903,526,25.77,2079,36.426]],["name/197-13",[]],["text/197-13",[]],["component/197-13",[]],["title/197-14",[84,14.218,148,17.521,206,20.464,748,31.157,835,32.313]],["name/197-14",[]],["text/197-14",[]],["component/197-14",[]],["title/197-15",[77,20.941,84,18.456,202,35.663]],["name/197-15",[]],["text/197-15",[]],["component/197-15",[]],["title/197-16",[148,19.793,244,22.335,298,23.539,2162,44.145]],["name/197-16",[]],["text/197-16",[]],["component/197-16",[]],["title/197-17",[84,19.714,148,15.716,442,25.247,504,27.948,526,23.116]],["name/197-17",[]],["text/197-17",[]],["component/197-17",[]],["title/197-18",[525,34.658,1824,51.389]],["name/197-18",[]],["text/197-18",[]],["component/197-18",[]],["title/197-19",[155,32.222,252,39.15,525,29.494]],["name/197-19",[]],["text/197-19",[]],["component/197-19",[]],["title/197-20",[1671,50.288,2158,50.288]],["name/197-20",[]],["text/197-20",[]],["component/197-20",[]],["title/197",[2,11.466,84,21.688]],["name/197",[84,0.908]],["text/197",[0,0.394,2,0.999,3,0.24,4,1.071,5,0.894,6,0.331,7,1.045,8,1.421,9,0.452,10,0.228,11,1.332,13,0.638,14,0.402,15,1.267,16,0.142,17,1.254,20,0.561,24,0.555,25,0.175,27,1.839,31,0.287,32,0.874,33,0.509,34,0.266,36,0.383,37,0.287,38,0.214,44,3.295,45,0.478,46,0.321,50,0.773,51,0.237,52,0.616,53,0.443,54,0.98,56,0.514,58,1.31,59,0.257,61,0.612,63,0.251,65,0.337,68,0.528,70,0.555,72,1.592,74,0.804,75,0.443,77,2.306,78,0.343,79,2.178,80,0.284,82,1.694,83,2.7,84,3.508,86,1.816,87,1.126,88,2.551,89,0.62,90,0.293,93,1.247,95,0.691,96,0.399,98,0.227,99,0.321,101,0.373,102,1.355,103,0.896,105,1.48,106,0.819,107,0.925,109,0.308,110,0.745,111,0.356,112,0.92,113,0.788,115,0.382,116,0.337,117,2.155,119,1.538,120,0.304,121,0.538,122,2.502,124,1.677,125,0.894,126,0.404,127,0.846,131,0.467,132,2.492,136,0.278,137,2.237,142,1.027,143,0.533,144,2.598,147,0.561,148,4.072,149,0.228,153,0.945,154,1.56,155,1.175,158,1.262,159,0.271,160,0.732,165,0.901,166,0.249,168,0.623,170,0.888,171,0.29,172,0.461,173,1.175,174,0.514,175,0.555,176,1.017,177,0.852,178,1.091,184,0.281,185,0.804,186,1.288,190,0.549,192,1.032,194,0.809,198,0.278,199,0.253,202,3.927,205,1.286,206,0.619,207,0.212,209,0.247,210,1.674,212,1.418,214,0.308,215,0.538,216,0.268,218,2.075,220,2.494,222,1.589,226,0.565,227,0.629,229,0.484,232,2.76,234,0.443,235,1.148,239,2.707,240,2.707,241,2.707,242,2.707,244,2.142,246,0.257,247,3.173,248,1.37,249,0.235,250,0.92,252,1.178,253,0.373,255,0.271,257,0.452,258,0.467,261,0.76,262,0.382,263,0.259,265,0.72,266,0.356,271,1.155,276,1.648,278,0.349,285,0.915,286,0.518,287,0.978,291,0.316,292,0.255,295,0.555,296,0.343,297,1.043,298,1.579,299,1.909,300,0.331,301,1.785,302,1.3,305,0.422,308,0.188,311,0.625,314,2.055,315,0.244,319,0.261,320,0.42,321,0.422,324,0.29,325,0.543,327,0.688,336,0.555,345,0.337,346,0.228,367,0.631,382,1.35,403,0.816,405,0.304,407,1.192,408,0.64,414,0.331,429,0.321,431,0.308,432,0.804,433,0.343,436,3.406,440,0.247,442,3.739,445,0.321,448,0.788,449,2.123,454,0.505,458,1.22,466,0.611,467,0.464,469,1.45,472,0.356,473,1.922,474,0.501,476,0.373,477,2.564,479,0.65,480,1.789,481,4.162,482,1.3,483,2.123,484,1.178,487,1.126,492,0.888,493,0.65,494,0.62,495,0.688,496,1.217,497,0.523,498,0.349,499,0.394,500,1.632,502,0.533,503,0.573,504,1.474,505,0.287,509,0.874,510,0.822,511,0.337,519,0.509,520,0.337,521,1.632,522,0.304,525,2.566,526,1.007,533,0.312,535,0.287,539,0.726,543,0.603,544,1.479,545,0.674,546,1.816,549,1.044,550,0.3,554,0.266,559,4.501,560,0.76,565,0.208,568,0.343,571,1.197,574,1.239,576,0.304,578,1.044,584,0.738,585,0.852,586,0.76,587,0.96,588,2.666,590,0.62,597,0.78,598,0.316,601,0.998,602,0.64,603,0.242,605,0.356,607,1.086,608,0.356,623,0.293,624,0.688,625,0.96,626,0.321,629,2.608,640,0.422,641,0.244,652,0.549,654,0.603,655,0.852,658,0.538,661,0.64,662,0.65,688,0.297,690,0.796,693,0.382,697,0.422,713,1.816,732,0.813,734,0.422,737,0.422,739,0.595,740,0.93,742,0.478,748,1.716,749,0.188,750,1.108,752,0.326,754,0.331,756,0.356,764,0.321,770,0.945,788,0.394,789,0.257,792,0.304,795,0.29,805,0.304,812,0.304,830,0.337,839,0.394,844,0.356,846,0.231,847,2.929,850,0.343,852,0.321,868,0.356,873,0.662,883,0.284,894,0.863,895,0.611,898,0.373,908,0.29,913,0.758,925,0.65,926,0.304,938,0.316,944,0.337,947,1.934,952,0.394,954,0.394,955,0.373,961,0.394,980,0.312,992,0.278,993,0.326,1002,0.373,1016,0.998,1021,0.356,1057,0.349,1096,0.394,1101,0.349,1110,0.261,1119,0.251,1124,0.356,1158,0.72,1173,0.321,1190,0.394,1205,1.086,1225,0.394,1231,0.394,1237,0.422,1241,2.034,1242,0.688,1245,1.348,1255,0.331,1259,0.788,1260,0.788,1262,0.321,1281,0.394,1282,0.321,1289,0.312,1293,0.326,1301,0.394,1316,0.326,1323,0.281,1336,0.343,1339,1.061,1354,0.316,1372,0.356,1373,0.331,1405,1.061,1420,0.237,1423,0.316,1429,0.928,1437,0.842,1461,0.97,1468,0.481,1470,0.356,1478,0.343,1479,0.356,1499,0.603,1501,0.726,1509,1.632,1510,0.407,1516,0.555,1521,0.343,1522,0.356,1523,0.422,1556,0.356,1557,0.422,1569,1.075,1578,0.343,1579,0.543,1581,0.373,1585,0.356,1588,0.422,1589,0.662,1591,0.373,1618,0.373,1623,0.603,1624,0.268,1627,0.331,1637,0.326,1640,0.326,1641,0.373,1649,0.382,1652,0.573,1664,0.422,1670,0.326,1671,0.356,1677,0.312,1679,0.662,1701,0.373,1707,0.337,1714,0.394,1715,0.382,1729,0.297,1740,0.422,1747,0.373,1760,0.308,1778,1.386,1783,0.394,1796,0.364,1804,2.006,1824,0.703,1878,0.382,1882,1.348,1909,0.62,1916,0.364,1940,0.316,1952,0.349,1971,0.422,1985,0.326,1998,0.316,2004,1.45,2024,0.442,2045,0.331,2048,0.304,2051,0.611,2052,3.581,2054,0.422,2055,0.422,2056,0.422,2058,0.62,2059,0.394,2060,0.76,2061,1.183,2064,1.348,2066,0.422,2068,2.006,2069,0.816,2070,0.394,2071,0.337,2072,0.422,2073,0.382,2075,0.356,2076,0.739,2077,1.262,2078,0.739,2079,1.423,2080,0.816,2081,0.293,2082,0.394,2083,2.724,2084,0.422,2087,0.662,2092,0.422,2093,2.347,2094,0.816,2095,0.422,2096,0.394,2097,0.422,2098,0.422,2099,1.47,2100,0.422,2101,0.422,2102,0.72,2103,4.048,2104,0.422,2110,0.76,2111,0.394,2112,0.422,2114,0.422,2115,2.152,2116,0.394,2119,0.422,2121,0.422,2122,0.422,2123,0.76,2124,0.816,2125,0.422,2126,0.422,2129,0.674,2130,0.343,2131,0.422,2132,1.262,2133,0.337,2134,2.152,2135,0.343,2136,0.422,2137,0.422,2138,0.356,2139,0.76,2140,0.24,2141,0.276,2143,0.422,2145,1.183,2146,0.72,2147,0.373,2148,1.632,2150,0.422,2151,0.422,2152,0.394,2153,0.816,2154,0.349,2155,0.394,2156,0.382,2159,0.422,2160,0.422,2162,0.816,2164,0.904,2165,2.05,2166,0.468,2167,1.311,2168,1.311,2169,0.468,2170,0.904,2171,0.904,2172,0.904,2173,0.343,2174,1.527,2175,0.468,2176,0.468,2177,0.422,2178,0.468,2179,0.373,2180,0.468,2181,0.468,2182,0.468,2183,0.468,2184,0.468,2185,0.468,2186,0.468,2187,0.442,2188,0.442,2189,0.468,2190,0.468,2191,0.468,2192,0.468,2193,0.468,2194,0.407,2195,0.468,2196,0.468,2197,0.904,2198,0.468,2199,0.904,2201,0.468,2202,0.468,2203,0.442,2204,0.904,2205,0.382,2210,0.468,2211,1.311,2212,1.598,2213,0.468,2215,0.468,2216,0.468,2218,0.904,2219,0.468,2220,0.394,2221,3,2222,0.468,2223,0.468,2224,0.816,2225,0.904,2226,0.468,2227,0.468,2228,0.468,2229,0.904,2230,0.468,2231,0.468,2233,0.468,2234,0.468,2235,0.468,2236,0.468,2237,0.422,2238,0.468,2239,0.422,2240,0.422,2241,0.394,2242,0.468,2243,0.468,2244,0.468,2245,0.468,2246,0.468,2247,0.468,2248,0.468,2249,0.468,2250,0.468,4436,3,4474,0.468,4475,0.468,4476,1.311,4478,3.256,4479,0.508,4480,0.508,4481,0.508]],["component/197",[2,0.4]],["title/198-1",[8,19.195,2251,59.605]],["name/198-1",[]],["text/198-1",[]],["component/198-1",[]],["title/198-2",[84,21.688,207,29.991]],["name/198-2",[]],["text/198-2",[]],["component/198-2",[]],["title/198-3",[559,36.534,629,38.565,1677,37.494]],["name/198-3",[]],["text/198-3",[]],["component/198-3",[]],["title/198",[84,18.456,846,27.734,2052,41.163]],["name/198",[846,1.365]],["text/198",[2,1.272,5,0.941,8,0.911,13,1.183,24,1.925,41,0.889,44,3.462,50,1.848,58,1.723,61,0.831,77,1.168,79,2.643,82,1.967,83,2.986,84,1.899,87,1.723,88,2.997,93,1.448,103,1.372,106,0.861,107,0.803,112,1.409,118,0.955,119,3.88,124,1.482,133,1.221,134,1.497,137,3.284,138,1.059,140,1.885,143,1.049,147,2.609,148,3.119,153,0.994,154,0.846,155,4.201,158,2.98,160,1.752,166,0.948,172,0.908,178,0.948,192,0.68,198,1.866,202,1.99,207,1.424,209,0.941,210,0.737,222,2.036,223,0.778,229,0.657,234,2.835,235,1.509,243,2.976,244,4.378,248,2.315,250,0.799,263,2.808,265,1.417,266,4.402,271,2.036,276,3.177,285,0.962,286,1.02,289,1.059,297,1.372,302,1.99,311,1.159,314,2.741,320,0.826,326,0.657,407,1.568,431,1.171,432,1.999,458,1.059,473,0.763,480,0.97,481,4.169,483,2.219,492,0.934,527,2.207,532,1.355,535,2.581,539,3.534,546,3.202,559,2.733,587,1.303,588,2.289,590,1.221,594,0.889,600,1.848,602,4.092,607,2.014,624,3.86,626,2.885,628,2.219,629,3.478,651,1.303,653,1.417,655,1.156,658,1.059,692,1.092,739,2.065,749,0.713,775,4.858,778,1.417,795,1.104,803,2.638,805,1.156,812,2.038,823,1.259,825,2.976,846,0.878,847,1.221,864,4.402,868,1.355,873,2.297,913,1.029,932,2.297,940,1.239,944,1.28,947,1.049,992,1.059,1016,2.388,1119,0.955,1151,5.082,1205,5.525,1241,1.798,1262,2.152,1285,1.497,1366,1.116,1389,1.497,1390,1.696,1405,1.116,1413,0.884,1429,2.219,1435,1.142,1461,1.02,1471,2.805,1488,4.964,1510,2.725,1555,1.497,1623,1.187,1640,1.239,1707,1.28,1775,1.606,1812,1.606,1856,1.303,1923,1.384,1938,1.171,1985,2.184,2052,4.234,2053,1.384,2068,5.367,2071,1.28,2078,1.454,2102,4.606,2110,5.367,2111,1.497,2116,5.367,2123,5.367,2173,1.303,2174,1.606,2251,6.613,2252,1.606,2253,1.417,2254,1.78,2255,1.78,2256,1.78,2257,1.78,2258,1.78,2259,1.606,2260,4.207,2261,3.137,2262,3.137,2263,3.137,2264,1.78,2265,1.78,2266,3.137,2267,3.137,2268,1.606,2269,1.78,2270,1.78,2271,1.78,2272,2.44,2273,1.454,2274,1.78,2275,1.78,2276,1.78,2277,1.78,2279,1.497,2280,1.497,2281,1.497,2282,1.78,4482,1.931,4483,1.931]],["component/198",[2,0.4]],["title/199-1",[235,31.783,1468,35.176]],["name/199-1",[]],["text/199-1",[]],["component/199-1",[]],["title/199-2",[1468,35.176,2283,57.399]],["name/199-2",[]],["text/199-2",[]],["component/199-2",[]],["title/199-3",[676,55.562,2284,59.605]],["name/199-3",[]],["text/199-3",[]],["component/199-3",[]],["title/199",[39,30.396,235,27.047,1683,37.002]],["name/199",[39,0.609,235,0.542,1683,0.742]],["text/199",[3,2.215,4,1.157,6,1.58,7,1.669,8,2.415,14,1.916,15,1.821,26,2.088,27,2.395,30,1.504,31,1.581,39,4.233,41,1.288,44,1.157,51,1.305,58,1.415,61,1.203,63,1.382,71,1.427,73,1.452,79,1.786,93,1.19,95,2.271,103,1.127,110,2.45,131,1.333,137,2.862,161,2.958,162,1.415,166,1.372,168,1.225,170,3.412,171,1.598,173,1.121,174,1.01,175,1.581,176,1.549,185,1.225,192,2.765,205,1.104,210,2.693,212,1.217,217,2.876,223,1.127,226,1.11,229,1.593,231,2.24,234,1.263,235,5.172,244,1.176,248,2.539,250,1.157,258,1.333,276,1.415,284,3.99,290,1.922,297,1.127,298,1.24,301,1.296,308,1.038,310,1.176,311,2.055,312,1.857,325,1.549,326,1.593,367,3.129,432,1.225,438,1.947,441,1.581,443,4.996,458,1.533,474,1.427,481,2.332,509,1.719,511,1.854,519,1.451,526,1.533,553,1.404,592,2.314,597,2.566,603,2.23,662,1.854,684,6.467,690,2.618,789,2.369,805,1.675,807,1.768,832,3.283,846,1.271,906,1.696,925,1.854,938,1.742,947,2.541,966,4.337,968,1.961,1139,1.922,1184,1.961,1241,1.477,1248,1.654,1265,1.564,1282,1.768,1307,4.57,1310,1.654,1322,1.696,1339,1.616,1366,3.488,1388,3.891,1390,1.393,1395,4.528,1408,1.719,1447,2.167,1461,1.477,1472,2.325,1490,1.451,1501,3.08,1529,1.768,1569,1.352,1578,1.887,1627,1.823,1683,4.764,1708,7.215,1722,1.451,1724,2.004,1808,1.464,1909,1.768,1916,2.004,1938,1.696,1985,1.794,2058,1.768,2279,5.47,2283,6.289,2284,2.325,2285,4.313,2286,2.004,2287,2.577,2288,2.803,2289,2.577,2290,2.577,2291,1.393,2292,2.577,2293,2.577,2294,4.828,2295,2.325,2296,3.283,2297,2.577,2298,2.577,2299,2.325,2300,2.577,2301,2.577,2302,2.167,2303,2.325,2304,2.325,2305,2.325,2306,2.577,2307,2.004,2308,2.004,2309,2.577,2310,2.433,2311,4.313,2312,2.577,2313,2.577,2314,2.577,2315,2.577]],["component/199",[2,0.4]],["title/200",[2253,63.781]],["name/200",[1,1.532]],["text/200",[]],["component/200",[2,0.4]],["title/201",[6,14.237,25,14.531,79,16.088,137,12.754,228,23.347,4484,42.157]],["name/201",[25,0.599,820,0.693]],["text/201",[6,3.398,25,3.468,192,3.541,210,3.839,262,7.577,367,4.461,1448,7.212,1795,8.906,4485,10.061]],["component/201",[2,0.4]],["title/202-1",[112,25.245,231,22.638,518,31.135]],["name/202-1",[]],["text/202-1",[]],["component/202-1",[]],["title/202",[83,22.92,1688,52.612]],["name/202",[1688,2.204]],["text/202",[2,0.598,3,0.714,4,1.547,6,0.922,7,0.973,8,1.733,14,0.617,15,1.454,17,0.581,19,0.714,25,0.52,26,1.667,27,1.82,30,2.011,33,0.783,41,1.722,44,1.129,51,0.704,52,0.653,54,0.664,57,0.757,61,0.649,67,0.999,68,1.468,71,0.77,73,0.847,77,0.937,83,1.195,95,2.615,100,4.248,102,0.789,103,0.608,106,0.673,107,1.555,112,2.678,120,2.238,122,2.267,124,0.657,125,1.329,128,1.511,130,2.031,131,1.781,132,0.811,137,3.758,146,4.466,148,1.017,149,1.678,154,0.661,159,0.804,164,0.757,166,0.74,168,0.661,173,1.838,176,2.07,191,0.783,192,3.727,194,0.664,199,1.36,205,1.078,209,1.329,212,1.997,220,0.709,223,1.848,229,2.638,230,0.751,231,0.56,233,0.983,244,2.923,248,1.148,249,0.699,250,0.624,268,1.136,274,5.284,276,1.892,285,0.751,289,0.827,297,0.608,299,1.344,302,2.681,311,1.561,320,2.537,325,0.835,326,3.188,407,1.722,432,1.195,446,0.862,459,1.254,469,0.746,482,0.882,487,1.381,502,0.819,506,0.968,507,1.081,509,1.677,510,1.577,518,5.135,563,1.017,565,1.117,568,1.841,592,0.746,597,2.91,598,1.701,602,0.983,604,0.796,613,1.081,623,0.871,628,1.779,641,0.724,717,0.968,749,1.008,773,1.527,775,5.435,776,2.269,785,0.871,795,2.621,802,1.148,803,1.169,812,0.903,816,1.254,817,1.169,820,1.829,822,1.254,825,0.983,846,0.686,854,1.207,871,0.796,938,1.701,947,5.288,966,2.297,980,0.927,1066,1.254,1091,1.429,1096,1.169,1114,0.983,1142,1.136,1162,0.953,1222,1.136,1248,1.614,1249,1.542,1265,2.091,1280,0.677,1282,0.953,1314,3.938,1339,3.067,1366,2.65,1374,1.254,1390,0.751,1397,1.081,1445,2.522,1446,1.254,1468,0.74,1495,3.749,1527,1.779,1569,0.729,1589,1.841,1673,1.169,1677,5.624,1679,1.017,1682,1.107,1688,4.75,1697,1.107,1718,2.269,1719,2.269,1720,2.269,1722,0.783,1724,1.081,1727,0.892,1749,1.169,1753,2.185,1766,1.254,1768,2.269,1770,2.269,1771,0.983,2002,2.185,2004,1.779,2051,1.701,2083,0.844,2087,1.017,2288,2.238,2307,1.081,2336,1.107,2571,1.107,2590,1.136,2687,1.136,2807,1.169,2954,4.931,2999,1.107,3004,1.136,3012,1.254,3158,2.003,3244,1.207,3708,2.897,3845,1.207,4015,1.254,4119,1.254,4131,1.39,4132,3.445,4133,1.39,4134,1.312,4135,1.39,4136,1.39,4137,2.515,4138,1.169,4139,1.254,4140,1.39,4141,1.39,4142,1.39,4143,1.39,4144,1.39,4145,1.39,4146,1.39,4147,1.39,4148,1.39,4149,1.39,4150,1.39,4151,1.39,4152,1.39,4153,1.39,4154,1.39,4155,2.515,4156,1.39,4157,3.445,4158,1.39,4159,1.39,4160,1.39,4161,4.226,4162,1.39,4163,1.39,4164,4.226,4165,1.39,4166,1.39,4167,5.465,4168,1.39,4169,1.39,4170,2.515,4171,1.39,4172,1.39,4173,1.39,4174,1.39,4175,1.39,4176,2.515,4177,1.39,4178,1.39,4179,3.445,4180,1.39,4181,1.39,4182,1.39,4183,2.515,4184,1.39,4185,1.39,4186,1.39,4187,1.39,4188,2.515,4189,1.39,4190,1.39,4191,1.39,4192,1.39,4193,1.39,4194,1.39,4195,1.39,4196,1.39,4197,1.39,4198,1.39,4199,1.39,4200,1.39]],["component/202",[2,0.4]],["title/203",[231,22.638,1322,37.002,1529,38.565]],["name/203",[1529,1.898]],["text/203",[3,4.274,4,1.941,6,0.947,8,2.418,13,1.63,26,1.25,33,3.138,37,1.585,44,1.16,47,1.723,52,1.213,56,2.455,73,2.193,103,1.13,119,1.045,125,1.365,137,3.231,143,5.344,166,1.375,174,1.013,210,1.07,223,2.848,228,2.597,229,0.954,248,1.179,264,3.442,281,1.725,297,1.13,311,1.597,326,2.058,367,1.243,438,2.515,443,1.48,469,5.48,481,1.397,553,3.55,575,1.552,584,1.455,592,1.386,641,1.345,659,2.009,712,5.273,771,2.965,873,1.891,901,2.172,980,1.723,1103,1.552,1119,1.386,1287,3.193,1307,4.858,1322,1.7,1336,1.891,1387,3.7,1390,2.337,1392,5.639,1438,1.62,1461,1.48,1506,1.799,1528,1.568,1529,1.772,1722,1.455,1856,1.891,2060,2.172,2140,1.326,2294,1.723,2346,1.827,3078,6.368,3158,4.437,3266,3.635,3267,3.755,3268,2.172,3271,2.331,3273,5.877,3276,2.331,3351,3.635,3514,2.244,3635,5.027,3694,2.331,3714,2.331,3797,2.331,3867,5.877,3869,3.899,3919,2.331,4138,2.172,4201,2.583,4202,2.583,4203,2.583,4204,2.583,4205,7.249,4206,7.839,4207,4.322,4208,5.572,4209,5.572,4210,5.572,4211,5.572,4212,5.572,4213,4.322,4214,5.572,4215,10.513,4216,4.322,4217,2.583,4218,4.322,4219,2.583,4220,2.583,4221,2.583,4222,2.583,4223,3.899,4224,4.322,4225,4.686,4226,2.583,4227,3.635,4228,4.322,4229,4.686,4230,2.583,4231,4.322,4232,4.322,4233,5.572,4234,2.583,4235,2.583,4236,2.583,4237,2.583,4238,2.583,4239,4.322,4240,2.583,4241,2.583,4242,2.583,4243,2.583,4244,2.172,4245,2.583,4246,2.583,4247,2.583,4248,2.583]],["component/203",[2,0.4]],["title/204-1",[3,33.925,326,24.407]],["name/204-1",[]],["text/204-1",[]],["component/204-1",[]],["title/204-2",[326,24.407,1495,45.318]],["name/204-2",[]],["text/204-2",[]],["component/204-2",[]],["title/204-3",[326,20.77,540,31.395,981,23.619]],["name/204-3",[]],["text/204-3",[]],["component/204-3",[]],["title/204-4",[981,27.755,1395,38.208]],["name/204-4",[]],["text/204-4",[]],["component/204-4",[]],["title/204-5",[264,52.612,981,27.755]],["name/204-5",[]],["text/204-5",[]],["component/204-5",[]],["title/204-6",[981,27.755,4225,55.562]],["name/204-6",[]],["text/204-6",[]],["component/204-6",[]],["title/204-7",[981,27.755,4227,55.562]],["name/204-7",[]],["text/204-7",[]],["component/204-7",[]],["title/204-8",[981,27.755,4250,59.605]],["name/204-8",[]],["text/204-8",[]],["component/204-8",[]],["title/204-9",[981,27.755,4244,55.562]],["name/204-9",[]],["text/204-9",[]],["component/204-9",[]],["title/204-10",[110,37.531,981,27.755]],["name/204-10",[]],["text/204-10",[]],["component/204-10",[]],["title/204-11",[130,22.494,981,27.755]],["name/204-11",[]],["text/204-11",[]],["component/204-11",[]],["title/204-12",[981,27.755,4251,59.605]],["name/204-12",[]],["text/204-12",[]],["component/204-12",[]],["title/204-13",[981,27.755,3767,55.562]],["name/204-13",[]],["text/204-13",[]],["component/204-13",[]],["title/204-14",[3,33.925,981,27.755]],["name/204-14",[]],["text/204-14",[]],["component/204-14",[]],["title/204-15",[981,27.755,1626,42.931]],["name/204-15",[]],["text/204-15",[]],["component/204-15",[]],["title/204-16",[981,27.755,4229,55.562]],["name/204-16",[]],["text/204-16",[]],["component/204-16",[]],["title/204-17",[162,43.994]],["name/204-17",[]],["text/204-17",[]],["component/204-17",[]],["title/204",[749,26.482,1322,43.481]],["name/204",[1322,1.821]],["text/204",[3,4.617,4,1.086,6,0.488,7,0.735,8,2.119,9,0.95,14,0.311,15,1.403,17,1.011,19,0.36,24,0.43,25,0.262,26,0.339,27,0.818,28,0.737,31,0.816,33,0.395,39,3.944,41,1.208,44,0.853,45,1.756,47,0.467,48,0.355,50,1.12,52,0.329,53,0.343,58,2.606,73,1.875,74,0.43,81,1.552,93,0.877,95,1.669,100,0.792,103,1.057,106,0.339,107,0.601,109,0.461,110,1.642,112,0.315,114,0.573,118,0.376,124,0.331,125,1.278,126,1.662,130,1.808,131,1.718,132,0.409,133,0.481,137,2.611,141,1.902,142,1.041,149,1.812,153,1.061,159,2.364,160,2.078,161,3.254,162,2.044,164,1.318,165,0.308,166,1.012,168,0.632,170,0.368,171,0.825,174,1.133,176,0.421,184,0.421,185,1.943,190,1.154,191,0.395,192,1.812,199,0.379,200,0.455,205,0.3,206,0.331,209,0.37,210,0.551,215,0.417,223,1.788,229,0.259,230,0.379,231,1.164,233,0.941,248,1.699,249,0.352,257,1.445,258,2.114,264,4.011,271,0.339,279,2.302,281,3.726,284,1.483,288,2.264,289,0.417,292,1.036,296,0.513,297,0.582,298,0.337,301,0.669,308,0.282,311,2.894,315,0.693,320,1.543,326,4.074,346,0.341,367,0.337,382,0.35,407,0.95,429,0.481,443,0.763,454,0.391,469,2.193,477,1.206,481,0.379,491,0.589,492,0.368,502,0.413,505,0.43,518,2.264,522,0.455,525,0.368,535,0.816,539,1.84,540,0.391,565,0.311,575,0.8,588,1.846,592,1.996,600,1.425,603,2.29,604,2.538,618,0.435,622,0.533,623,1.192,628,0.496,641,0.365,645,0.474,650,0.513,652,0.425,660,0.504,661,0.941,667,0.496,689,2.449,690,0.808,712,2.671,740,0.385,742,0.37,749,1.332,750,0.379,754,0.496,765,0.421,807,3.037,814,0.632,820,0.303,825,0.496,831,0.609,844,0.533,857,0.533,871,1.657,894,0.461,913,0.405,934,0.455,944,0.504,959,0.632,981,4.411,1091,0.398,1103,1.737,1110,0.391,1119,0.376,1142,1.087,1154,0.496,1205,0.45,1249,1.055,1252,4.268,1265,0.425,1287,1.905,1288,0.808,1307,2.172,1310,2.842,1311,1.739,1312,1.684,1314,0.37,1315,0.362,1322,0.461,1323,0.421,1366,0.439,1378,0.439,1387,3.548,1389,0.589,1390,1.307,1395,2.743,1398,1.119,1406,1.513,1410,1.201,1413,0.348,1420,0.674,1423,1.285,1435,0.854,1437,0.854,1438,2.084,1445,2.116,1449,0.9,1461,0.402,1463,1.391,1466,0.496,1468,0.373,1473,0.816,1495,4.138,1498,1.06,1499,0.887,1501,1.339,1554,0.589,1561,2.28,1569,1.269,1574,0.467,1578,1.391,1589,0.513,1601,0.513,1623,0.467,1625,0.632,1626,1.878,1646,0.573,1652,0.444,1677,0.467,1681,1.201,1682,2.302,1683,1.591,1707,0.504,1708,6.239,1722,0.395,1724,1.478,1738,0.513,1747,1.513,1760,1.902,1788,1.513,1808,0.398,1853,0.513,1856,1.77,1882,0.558,1935,1.035,1940,0.474,1974,0.545,2048,0.455,2058,1.659,2087,0.513,2129,3.05,2140,0.36,2156,0.573,2239,0.632,2279,2.431,2281,0.589,2288,2.877,2294,3.873,2308,1.035,2336,0.558,2362,0.609,2450,0.974,2552,0.589,2664,0.661,2777,0.589,2857,0.632,2861,0.632,2866,2.431,2870,0.573,2891,1.119,2972,0.533,2999,7.385,3005,0.558,3078,3.827,3265,0.632,3266,0.589,3268,1.119,3525,0.609,3526,0.609,3705,1.201,3708,1.598,3752,2.182,3767,3.989,4097,0.632,4138,0.589,4139,0.632,4223,3.995,4225,3.438,4227,4.884,4229,3.129,4244,1.598,4249,0.661,4250,5.023,4251,4.28,4253,1.256,4255,0.701,4256,4.088,4257,0.701,4258,1.331,4260,1.331,4261,0.701,4262,1.331,4264,0.701,4265,0.701,4266,2.891,4267,0.701,4268,0.701,4269,0.701,4270,0.701,4271,0.701,4272,0.701,4273,0.701,4274,0.701,4276,0.701,4277,0.701,4278,0.701,4281,2.418,4282,1.331,4283,0.701,4284,0.701,4285,0.701,4286,0.701,4288,0.701,4291,0.701,4292,0.701,4298,1.331,4299,0.701,4300,0.701,4301,1.331,4302,2.418,4303,0.701,4304,1.331,4305,0.701,4306,0.701,4307,0.701,4309,0.701,4310,0.701,4311,0.701,4313,0.701,4314,0.701,4315,0.701,4316,0.701,4317,0.701,4318,0.701,4319,0.701,4320,0.701,4321,1.901,4322,1.331,4323,1.331,4324,0.701,4325,0.701,4326,0.701,4327,0.701,4328,0.701,4329,0.701,4330,0.701,4331,0.701,4332,0.701,4333,0.701,4334,0.701,4335,0.701,4486,1.444,4487,0.76,4488,0.76,4489,0.76,4490,1.444,4491,1.444]],["component/204",[2,0.4]],["title/205",[6,24.21,1255,46.739]],["name/205",[6,1.014]],["text/205",[67,2.355,137,1.947,168,3.891,205,2.541,223,2.593,438,3.696,820,2.567,1151,4.722,1342,4.067,1416,3.339,2965,5.579,3124,9.122,3219,5.35,4376,9.572,4377,5.35,4389,5.93,4390,8.187,4391,10.971,4392,10.61,4393,8.187,4394,8.187,4395,8.187,4396,8.187,4397,8.187,4398,5.93,4399,8.187,4400,8.187,4401,8.187,4402,8.187,4403,5.93,4404,8.187,4405,8.187,4406,5.93,4407,5.93,4408,5.93,4409,5.93,4410,5.93,4411,5.93,4412,5.93,4413,5.93,4414,5.93,4415,5.93]],["component/205",[2,0.4]],["title/206",[6,20.602,165,24.714,1479,42.794]],["name/206",[6,1.014]],["text/206",[13,3.971,15,0.998,38,1.83,72,6.272,73,3.14,96,1.772,98,3.334,148,2.112,165,1.762,185,2.924,223,4.782,298,1.929,308,0.951,326,3.445,473,1.012,497,6.156,525,2.103,588,2.778,656,4.182,820,2.663,870,2.935,949,6.215,981,3.145,1314,3.251,1342,2.75,1416,2.258,1423,7.9,1473,6.85,1551,7.213,1846,6.503,1873,7.097,1927,1.763,2155,6.296,2973,3.372,2980,5.027,4095,2.132,4287,2.231,4340,2.363,4341,2.363,4342,2.363,4343,2.363,4344,2.363,4345,2.363,4346,2.363,4347,2.363,4348,2.363,4349,2.363,4350,2.363,4351,2.363,4352,2.363,4353,4.009,4354,2.363,4355,2.363,4356,2.363,4357,4.009,4358,5.222,4359,2.363,4360,4.009,4361,4.009,4362,5.222,4363,4.009,4364,2.363,4365,4.009,4366,5.222,4367,2.363,4368,4.009,4369,2.363,4370,4.009,4371,4.009,4372,7.486,4373,2.363,4374,7.486,4375,2.363,4376,5.55,4377,2.132,4378,2.363,4379,2.363,4380,2.363,4381,2.363,4382,2.363,4383,2.363,4384,2.363,4385,5.222,4386,5.222,4387,4.009,4388,2.363]],["component/206",[2,0.4]]],"invertedIndex":[["",{"_index":137,"title":{"4":{},"18":{},"19":{},"24":{},"43":{},"108":{},"175":{},"185":{},"201":{},"13-2":{},"15-2":{},"15-7":{},"15-10":{},"15-11":{},"15-13":{},"15-17":{},"15-21":{},"15-25":{},"15-29":{},"15-33":{},"15-38":{},"15-42":{},"15-46":{},"15-48":{},"106-2":{},"106-7":{},"106-10":{},"106-11":{},"106-13":{},"106-17":{},"106-21":{},"106-25":{},"106-29":{},"106-33":{},"106-38":{},"106-42":{},"106-46":{},"106-48":{},"112-2":{}},"name":{},"text":{"3":{},"4":{},"5":{},"6":{},"8":{},"9":{},"10":{},"12":{},"15":{},"16":{},"18":{},"21":{},"24":{},"26":{},"27":{},"29":{},"30":{},"31":{},"34":{},"36":{},"37":{},"39":{},"41":{},"43":{},"46":{},"47":{},"48":{},"49":{},"50":{},"54":{},"55":{},"56":{},"58":{},"59":{},"62":{},"63":{},"66":{},"75":{},"78":{},"82":{},"83":{},"84":{},"85":{},"87":{},"88":{},"90":{},"91":{},"92":{},"95":{},"97":{},"101":{},"102":{},"103":{},"105":{},"106":{},"107":{},"110":{},"115":{},"119":{},"120":{},"122":{},"124":{},"125":{},"126":{},"129":{},"138":{},"145":{},"146":{},"148":{},"150":{},"151":{},"152":{},"153":{},"157":{},"158":{},"159":{},"162":{},"166":{},"168":{},"173":{},"174":{},"175":{},"176":{},"178":{},"179":{},"180":{},"182":{},"185":{},"187":{},"188":{},"189":{},"191":{},"192":{},"193":{},"195":{},"197":{},"198":{},"199":{},"202":{},"203":{},"204":{},"205":{}},"component":{}}],["0",{"_index":1490,"title":{},"name":{},"text":{"15":{},"39":{},"47":{},"50":{},"55":{},"63":{},"66":{},"70":{},"71":{},"75":{},"76":{},"77":{},"82":{},"83":{},"86":{},"87":{},"88":{},"95":{},"103":{},"106":{},"120":{},"122":{},"126":{},"129":{},"134":{},"138":{},"140":{},"145":{},"147":{},"148":{},"150":{},"157":{},"166":{},"199":{}},"component":{}}],["0..1",{"_index":3774,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["0..3",{"_index":3775,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["0.1",{"_index":3827,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["0.1.0",{"_index":1240,"title":{"15-48":{},"106-48":{}},"name":{},"text":{},"component":{}}],["0.10.0",{"_index":1229,"title":{"15-10":{},"106-10":{}},"name":{},"text":{"46":{},"83":{},"119":{},"122":{},"145":{}},"component":{}}],["0.11",{"_index":3355,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["0.11.0",{"_index":1228,"title":{"15-7":{},"106-7":{}},"name":{},"text":{"88":{},"150":{}},"component":{}}],["0.12",{"_index":3406,"title":{},"name":{},"text":{"78":{}},"component":{}}],["0.12.0",{"_index":1226,"title":{"15-2":{},"106-2":{}},"name":{},"text":{"120":{},"123":{},"125":{},"126":{},"127":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"147":{},"148":{},"152":{},"153":{},"163":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{}},"component":{}}],["0.13",{"_index":2373,"title":{},"name":{},"text":{"41":{},"78":{}},"component":{}}],["0.13.0",{"_index":313,"title":{},"name":{},"text":{"3":{},"21":{},"34":{},"36":{},"37":{},"47":{},"50":{},"70":{},"76":{},"77":{},"82":{},"83":{},"86":{},"87":{},"91":{},"92":{},"93":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{}},"component":{}}],["0.13.0/rc1",{"_index":2206,"title":{},"name":{},"text":{"36":{}},"component":{}}],["0.13.0/rc1/apach",{"_index":2209,"title":{},"name":{},"text":{"36":{}},"component":{}}],["0.13.0/rc1/readm",{"_index":2207,"title":{},"name":{},"text":{"36":{}},"component":{}}],["0.13.0/rc1/release_not",{"_index":2208,"title":{},"name":{},"text":{"36":{}},"component":{}}],["0.13.01",{"_index":2278,"title":{},"name":{},"text":{"37":{}},"component":{}}],["0.13.jar",{"_index":2262,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["0.2.0",{"_index":1239,"title":{"15-46":{},"106-46":{}},"name":{},"text":{},"component":{}}],["0.3.0",{"_index":1238,"title":{"15-42":{},"106-42":{}},"name":{},"text":{"34":{},"195":{}},"component":{}}],["0.3.1",{"_index":1237,"title":{"15-38":{},"106-38":{}},"name":{},"text":{"36":{},"197":{}},"component":{}}],["0.4.0",{"_index":1236,"title":{"15-33":{},"106-33":{}},"name":{},"text":{},"component":{}}],["0.5",{"_index":2993,"title":{},"name":{},"text":{"63":{},"75":{},"86":{},"95":{},"126":{},"138":{},"147":{},"166":{}},"component":{}}],["0.5.0",{"_index":1235,"title":{"15-29":{},"106-29":{}},"name":{},"text":{},"component":{}}],["0.6.0",{"_index":1234,"title":{"15-25":{},"106-25":{}},"name":{},"text":{"182":{}},"component":{}}],["0.7",{"_index":1500,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["0.7.0",{"_index":1233,"title":{"15-21":{},"106-21":{}},"name":{},"text":{},"component":{}}],["0.8",{"_index":2926,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["0.8.0",{"_index":1232,"title":{"15-17":{},"106-17":{}},"name":{},"text":{"55":{},"59":{},"157":{},"162":{},"173":{}},"component":{}}],["0.9",{"_index":4120,"title":{},"name":{},"text":{"93":{},"163":{}},"component":{}}],["0.9.0",{"_index":1231,"title":{"15-13":{},"106-13":{}},"name":{},"text":{"15":{},"36":{},"106":{},"197":{}},"component":{}}],["0.9.1",{"_index":1230,"title":{"15-11":{},"106-11":{}},"name":{},"text":{},"component":{}}],["00",{"_index":4216,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["0000",{"_index":3849,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["000000000006ff0408d20002",{"_index":2289,"title":{},"name":{},"text":{"39":{},"199":{}},"component":{}}],["000001:bool[10",{"_index":2931,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["01",{"_index":3714,"title":{},"name":{},"text":{"83":{},"102":{},"145":{},"203":{}},"component":{}}],["01)(02)(03)(04",{"_index":3741,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["01)(02)(03)(04)(05",{"_index":3792,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["0100",{"_index":3850,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["02",{"_index":3867,"title":{},"name":{},"text":{"83":{},"102":{},"145":{},"203":{}},"component":{}}],["02/11/2015",{"_index":728,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["03",{"_index":3869,"title":{},"name":{},"text":{"83":{},"102":{},"145":{},"203":{}},"component":{}}],["03.05.2020",{"_index":3538,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["03:25",{"_index":729,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["04",{"_index":702,"title":{},"name":{},"text":{"8":{},"83":{},"145":{},"178":{}},"component":{}}],["05",{"_index":703,"title":{},"name":{},"text":{"8":{},"83":{},"145":{},"178":{}},"component":{}}],["06",{"_index":3694,"title":{},"name":{},"text":{"83":{},"102":{},"145":{},"203":{}},"component":{}}],["07",{"_index":2756,"title":{},"name":{},"text":{"54":{},"83":{},"145":{},"158":{}},"component":{}}],["07)(08",{"_index":3696,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["07)(08)(09)(10)(11)(12)(13)(14",{"_index":3796,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["08",{"_index":3742,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["08)(11)(14",{"_index":3702,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["09",{"_index":3743,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["09)(10)(11",{"_index":3700,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["0:event",{"_index":3768,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["0ab0",{"_index":3894,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["0truefalseusemessagerouteruseconnectionmanagertruefalsefalseusemessagerouteruseconnectionmanagertruefalsefals",{"_index":4415,"title":{},"name":{},"text":{"105":{},"205":{}},"component":{}}],["0x",{"_index":3246,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["0x00",{"_index":4261,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["0x00','0x07",{"_index":4333,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["0x0000",{"_index":3265,"title":{},"name":{},"text":{"77":{},"103":{},"140":{},"204":{}},"component":{}}],["0x01",{"_index":3266,"title":{},"name":{},"text":{"77":{},"102":{},"103":{},"140":{},"203":{},"204":{}},"component":{}}],["0x02",{"_index":3267,"title":{},"name":{},"text":{"77":{},"102":{},"103":{},"140":{},"203":{}},"component":{}}],["0x03",{"_index":3268,"title":{},"name":{},"text":{"77":{},"102":{},"103":{},"140":{},"203":{},"204":{}},"component":{}}],["0x04",{"_index":3269,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["0x04','0x01",{"_index":4317,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["0x04','0x03",{"_index":4319,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["0x05",{"_index":3270,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["0x05','0x01",{"_index":4325,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["0x05','0x03",{"_index":4329,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["0x06",{"_index":3271,"title":{},"name":{},"text":{"77":{},"102":{},"140":{},"203":{}},"component":{}}],["0x07",{"_index":4276,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["0x0d",{"_index":3365,"title":{},"name":{},"text":{"78":{}},"component":{}}],["0x0f",{"_index":3272,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["0x10",{"_index":3273,"title":{},"name":{},"text":{"77":{},"102":{},"140":{},"203":{}},"component":{}}],["0x14",{"_index":3274,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["0x15",{"_index":3276,"title":{},"name":{},"text":{"77":{},"102":{},"140":{},"203":{}},"component":{}}],["0x32",{"_index":2239,"title":{},"name":{},"text":{"36":{},"103":{},"197":{},"204":{}},"component":{}}],["0x40",{"_index":4220,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["0x41",{"_index":4242,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["0xa",{"_index":3060,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["0xaxxx",{"_index":3754,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["0xbyyi",{"_index":3755,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["0xf0",{"_index":4315,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["0xhhhh",{"_index":3853,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["0xxyid",{"_index":3846,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["1",{"_index":588,"title":{"82-1":{},"83-4":{},"145-4":{}},"name":{},"text":{"6":{},"9":{},"15":{},"21":{},"34":{},"36":{},"37":{},"41":{},"47":{},"48":{},"50":{},"54":{},"55":{},"56":{},"63":{},"66":{},"70":{},"71":{},"72":{},"75":{},"76":{},"77":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"90":{},"91":{},"95":{},"97":{},"103":{},"104":{},"106":{},"115":{},"120":{},"122":{},"126":{},"129":{},"133":{},"134":{},"135":{},"138":{},"139":{},"140":{},"143":{},"145":{},"146":{},"147":{},"151":{},"152":{},"157":{},"158":{},"159":{},"166":{},"168":{},"176":{},"179":{},"195":{},"197":{},"198":{},"204":{},"206":{}},"component":{}}],["1)(2)(3)(4",{"_index":3692,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["1,4,2,192.168.0.1,1,1",{"_index":3220,"title":{},"name":{},"text":{"76":{},"139":{}},"component":{}}],["1,mod_1,(submod_1,,submod_1,)],[test",{"_index":3435,"title":{},"name":{},"text":{"81":{},"143":{}},"component":{}}],["1.0",{"_index":2992,"title":{},"name":{},"text":{"63":{},"75":{},"83":{},"126":{},"138":{},"145":{}},"component":{}}],["1.0.0",{"_index":1247,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["1.1.1.digital_input.0.1:bool",{"_index":3438,"title":{},"name":{},"text":{"81":{},"143":{}},"component":{}}],["1.16",{"_index":2420,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["1.19",{"_index":727,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["1.34242598e9",{"_index":2758,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["1.40969664e9",{"_index":2762,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["1.5",{"_index":3147,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["1.8",{"_index":2868,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["1.9.1",{"_index":1995,"title":{},"name":{},"text":{"31":{},"192":{}},"component":{}}],["1/2",{"_index":3859,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["10",{"_index":1392,"title":{},"name":{},"text":{"15":{},"41":{},"50":{},"55":{},"77":{},"83":{},"102":{},"106":{},"122":{},"140":{},"145":{},"157":{},"203":{}},"component":{}}],["100",{"_index":277,"title":{},"name":{},"text":{"3":{},"83":{},"88":{},"90":{},"145":{},"150":{},"173":{}},"component":{}}],["1000",{"_index":2744,"title":{},"name":{},"text":{"54":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"72":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"123":{},"125":{},"126":{},"127":{},"129":{},"133":{},"135":{},"136":{},"139":{},"140":{},"141":{},"142":{},"144":{},"145":{},"158":{}},"component":{}}],["10000",{"_index":3251,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["1000m",{"_index":4058,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["100m",{"_index":3676,"title":{},"name":{},"text":{"83":{},"90":{},"145":{}},"component":{}}],["1024",{"_index":3455,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["104",{"_index":1530,"title":{},"name":{},"text":{"15":{},"73":{},"106":{},"136":{}},"component":{}}],["10:dpt_value_temp",{"_index":2509,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["11",{"_index":113,"title":{},"name":{},"text":{"3":{},"7":{},"9":{},"15":{},"29":{},"30":{},"31":{},"32":{},"36":{},"56":{},"66":{},"75":{},"78":{},"83":{},"98":{},"106":{},"129":{},"138":{},"141":{},"145":{},"159":{},"170":{},"173":{},"177":{},"179":{},"189":{},"197":{}},"component":{}}],["1100",{"_index":3851,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["1135309911",{"_index":2852,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["115200",{"_index":3142,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["11:dpt_value_temp",{"_index":2510,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["12",{"_index":3881,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["12)(13)(14",{"_index":3701,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["1200",{"_index":3409,"title":{},"name":{},"text":{"78":{},"82":{},"83":{},"87":{},"88":{},"145":{},"148":{},"150":{}},"component":{}}],["120000",{"_index":3328,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["121",{"_index":1524,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["123",{"_index":3243,"title":{},"name":{},"text":{"77":{}},"component":{}}],["125",{"_index":3237,"title":{},"name":{},"text":{"77":{}},"component":{}}],["12687",{"_index":2949,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["127",{"_index":1536,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["127.0.0.1",{"_index":2749,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["127.0.0.1:6667",{"_index":2745,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["128000",{"_index":3143,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["12:dpt_openclos",{"_index":2513,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["12th",{"_index":379,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["13",{"_index":3170,"title":{},"name":{},"text":{"71":{},"78":{},"83":{},"134":{},"145":{}},"component":{}}],["132",{"_index":1401,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["134",{"_index":1491,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["139",{"_index":1533,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["13th",{"_index":380,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["14",{"_index":3169,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["140049.html",{"_index":4044,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["141",{"_index":1535,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["144",{"_index":1537,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["14400",{"_index":3139,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["14th",{"_index":409,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["15",{"_index":3797,"title":{},"name":{},"text":{"83":{},"102":{},"145":{},"203":{}},"component":{}}],["15)}/{middl",{"_index":3210,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["15)}/{sub",{"_index":3211,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["1500",{"_index":3469,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["1500?dti=0&lc=en",{"_index":3552,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["1502",{"_index":2699,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["158",{"_index":1520,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["15th",{"_index":364,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["15|14|13|12|11|10",{"_index":3760,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16",{"_index":1287,"title":{},"name":{},"text":{"15":{},"50":{},"66":{},"70":{},"72":{},"75":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"98":{},"102":{},"103":{},"106":{},"122":{},"129":{},"133":{},"135":{},"138":{},"139":{},"140":{},"141":{},"143":{},"145":{},"146":{},"170":{},"203":{},"204":{}},"component":{}}],["16#xy00",{"_index":3901,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy11",{"_index":3902,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy12",{"_index":3904,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy13",{"_index":3905,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy14",{"_index":3906,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy15",{"_index":3907,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy22",{"_index":3909,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy25",{"_index":3910,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy32",{"_index":3911,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy71",{"_index":3912,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy74",{"_index":3914,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy75",{"_index":3915,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy91",{"_index":3916,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy92",{"_index":3917,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy94",{"_index":3918,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy95",{"_index":3920,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy96",{"_index":3921,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy9c",{"_index":3923,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xya0",{"_index":3924,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xyb1",{"_index":3925,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xyb2",{"_index":3927,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xyb3",{"_index":3928,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xyb4",{"_index":3929,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16)(17)(18)(19",{"_index":3798,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["163",{"_index":1503,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["164",{"_index":1515,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["166",{"_index":1517,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["168",{"_index":1504,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["16bit",{"_index":4339,"title":{},"name":{},"text":{"103":{}},"component":{}}],["16t20:01:39.216+08:00",{"_index":2757,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["16t20:01:40.150+08:00",{"_index":2759,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["16t20:01:41.154+08:00",{"_index":2761,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["16t20:01:42.155+08:00",{"_index":2763,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["16t20:01:43.157+08:00",{"_index":2765,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["174",{"_index":1489,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["17th",{"_index":3133,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["18",{"_index":4448,"title":{},"name":{},"text":{"189":{}},"component":{}}],["18th",{"_index":328,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["19/bin/java",{"_index":3427,"title":{},"name":{},"text":{"81":{},"143":{}},"component":{}}],["192",{"_index":1493,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["192.168.0.1",{"_index":3222,"title":{},"name":{},"text":{"76":{},"139":{}},"component":{}}],["19200",{"_index":3140,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["19:11:14.369+0200",{"_index":704,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["19:11:14.683+0200",{"_index":709,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["19:11:14.859+0200",{"_index":714,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["19:11:14.892+0200",{"_index":719,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["19:11:15.396+0200",{"_index":730,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["19th",{"_index":400,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["1:entri",{"_index":3770,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["1:event",{"_index":3769,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["1:extern",{"_index":3772,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["1:intern",{"_index":3771,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["1>/dev/nul",{"_index":2005,"title":{},"name":{},"text":{"31":{},"192":{}},"component":{}}],["1x",{"_index":3245,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["1}(,{field",{"_index":4308,"title":{},"name":{},"text":{"103":{}},"component":{}}],["2",{"_index":185,"title":{"82-1":{},"83-4":{},"145-4":{}},"name":{},"text":{"3":{},"6":{},"8":{},"12":{},"21":{},"34":{},"36":{},"39":{},"41":{},"47":{},"48":{},"50":{},"55":{},"56":{},"63":{},"71":{},"75":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"86":{},"91":{},"95":{},"103":{},"104":{},"110":{},"115":{},"120":{},"122":{},"126":{},"134":{},"138":{},"139":{},"140":{},"141":{},"143":{},"145":{},"146":{},"147":{},"152":{},"157":{},"159":{},"166":{},"173":{},"176":{},"178":{},"195":{},"197":{},"199":{},"204":{},"206":{}},"component":{}}],["2,mod_1,(submod_1,,submod_1",{"_index":3436,"title":{},"name":{},"text":{"81":{},"143":{}},"component":{}}],["2.0",{"_index":776,"title":{},"name":{},"text":{"9":{},"101":{},"179":{},"202":{}},"component":{}}],["2.0a",{"_index":3035,"title":{},"name":{},"text":{"66":{},"98":{},"129":{},"170":{}},"component":{}}],["2.0b",{"_index":3036,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["2.1",{"_index":3483,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["2.14.0",{"_index":1326,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["2.2",{"_index":3484,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["2/4",{"_index":3217,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["20",{"_index":1607,"title":{},"name":{},"text":{"17":{},"77":{},"87":{},"113":{},"140":{},"148":{}},"component":{}}],["20)(21)(22",{"_index":3799,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["200",{"_index":1347,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["2000",{"_index":1017,"title":{},"name":{},"text":{"10":{},"77":{},"180":{}},"component":{}}],["2007",{"_index":1053,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["2008",{"_index":3411,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["201",{"_index":1349,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["2012",{"_index":1019,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["2013",{"_index":1065,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["2015",{"_index":1022,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["2016",{"_index":196,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["2017",{"_index":3134,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["2018",{"_index":370,"title":{},"name":{},"text":{"4":{},"8":{},"175":{},"178":{}},"component":{}}],["2019",{"_index":330,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["202",{"_index":1352,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["2020",{"_index":1176,"title":{},"name":{},"text":{"13":{},"54":{},"112":{},"158":{}},"component":{}}],["2021",{"_index":1171,"title":{},"name":{},"text":{"13":{},"15":{},"106":{},"112":{}},"component":{}}],["2022",{"_index":2970,"title":{},"name":{},"text":{"62":{},"125":{}},"component":{}}],["2022/10/04",{"_index":3652,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["2024",{"_index":1196,"title":{},"name":{},"text":{"13":{}},"component":{}}],["206",{"_index":1404,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["207",{"_index":1407,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["209",{"_index":1412,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["2097152",{"_index":3337,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["20native%20api.html",{"_index":2768,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["20th",{"_index":406,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["21",{"_index":1914,"title":{},"name":{},"text":{"29":{},"30":{},"32":{}},"component":{}}],["210",{"_index":1415,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["211",{"_index":1419,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["212",{"_index":1422,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["213",{"_index":1424,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["214",{"_index":1426,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["215",{"_index":1430,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["218",{"_index":1433,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["21th",{"_index":355,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["22.04",{"_index":1949,"title":{},"name":{},"text":{"30":{}},"component":{}}],["2258",{"_index":2292,"title":{},"name":{},"text":{"39":{},"199":{}},"component":{}}],["22th",{"_index":392,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["23)(24)(25",{"_index":3800,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["239",{"_index":1439,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["24",{"_index":2146,"title":{},"name":{},"text":{"34":{},"36":{},"66":{},"72":{},"129":{},"135":{},"195":{},"197":{}},"component":{}}],["240",{"_index":1441,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["245",{"_index":1443,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["246",{"_index":1442,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["24th",{"_index":342,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["254",{"_index":1385,"title":{},"name":{},"text":{"15":{},"82":{},"83":{},"84":{},"106":{},"145":{},"146":{}},"component":{}}],["255",{"_index":1447,"title":{},"name":{},"text":{"15":{},"39":{},"75":{},"106":{},"138":{},"199":{}},"component":{}}],["256",{"_index":1458,"title":{},"name":{},"text":{"15":{},"84":{},"106":{},"146":{}},"component":{}}],["26",{"_index":3805,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["261",{"_index":1453,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["262",{"_index":1464,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["27)(28",{"_index":3802,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["270",{"_index":1465,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["272",{"_index":1455,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["276",{"_index":1353,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["278",{"_index":1355,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["279",{"_index":1357,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["280",{"_index":1360,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["29",{"_index":3024,"title":{},"name":{},"text":{"66":{},"98":{},"129":{},"170":{}},"component":{}}],["29)(30",{"_index":3803,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["291",{"_index":1363,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["298",{"_index":1368,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["299",{"_index":1369,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["2>&1",{"_index":2006,"title":{},"name":{},"text":{"31":{},"192":{}},"component":{}}],["2_1",{"_index":3541,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["2s",{"_index":4337,"title":{},"name":{},"text":{"103":{}},"component":{}}],["3",{"_index":382,"title":{"82-1":{},"83-4":{},"145-4":{}},"name":{},"text":{"4":{},"6":{},"8":{},"9":{},"15":{},"21":{},"34":{},"36":{},"41":{},"46":{},"47":{},"50":{},"55":{},"75":{},"77":{},"81":{},"83":{},"84":{},"87":{},"88":{},"91":{},"98":{},"103":{},"106":{},"115":{},"119":{},"120":{},"122":{},"138":{},"140":{},"143":{},"145":{},"146":{},"148":{},"150":{},"152":{},"157":{},"170":{},"173":{},"175":{},"176":{},"178":{},"179":{},"182":{},"195":{},"197":{},"204":{}},"component":{}}],["3.0.0",{"_index":2000,"title":{},"name":{},"text":{"31":{},"192":{}},"component":{}}],["3.1",{"_index":3487,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["3.2",{"_index":3490,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["3.27.7",{"_index":2042,"title":{},"name":{},"text":{"32":{}},"component":{}}],["3.3",{"_index":3493,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["3.3.0",{"_index":4449,"title":{},"name":{},"text":{"189":{}},"component":{}}],["3.4",{"_index":3495,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["3.6",{"_index":2187,"title":{},"name":{},"text":{"36":{},"189":{},"197":{}},"component":{}}],["3.6.0",{"_index":129,"title":{},"name":{},"text":{"3":{},"29":{},"173":{}},"component":{}}],["3.7",{"_index":1921,"title":{},"name":{},"text":{"29":{},"30":{},"189":{},"191":{}},"component":{}}],["3.9.13",{"_index":2001,"title":{},"name":{},"text":{"31":{},"192":{}},"component":{}}],["300",{"_index":3550,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["300,400",{"_index":3671,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["300/400.\\r\\nsystem",{"_index":3857,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["300/s7",{"_index":3639,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["30000",{"_index":3331,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["300001",{"_index":3254,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["30001",{"_index":3253,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["312",{"_index":1370,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["314",{"_index":1371,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["32",{"_index":2031,"title":{},"name":{},"text":{"32":{},"62":{},"66":{},"70":{},"72":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"125":{},"129":{},"133":{},"135":{},"139":{},"140":{},"141":{},"143":{},"145":{},"146":{}},"component":{}}],["34",{"_index":3863,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["343",{"_index":3665,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["3600000",{"_index":3324,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["365535",{"_index":3258,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["38400",{"_index":3141,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["39999",{"_index":3256,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["3th",{"_index":347,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["3x",{"_index":3248,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["3xxxx",{"_index":3255,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["3xxxxx",{"_index":3257,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["4",{"_index":913,"title":{"21-7":{},"182-7":{}},"name":{},"text":{"9":{},"21":{},"34":{},"36":{},"37":{},"47":{},"50":{},"55":{},"62":{},"66":{},"77":{},"82":{},"83":{},"87":{},"103":{},"120":{},"122":{},"125":{},"129":{},"140":{},"145":{},"148":{},"157":{},"179":{},"182":{},"195":{},"197":{},"198":{},"204":{}},"component":{}}],["4.0",{"_index":350,"title":{"17":{},"113":{}},"name":{},"text":{"4":{},"12":{},"13":{},"110":{},"112":{},"175":{}},"component":{}}],["4.0.0",{"_index":1741,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["4.207406e7",{"_index":2766,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["40",{"_index":3083,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["400",{"_index":3551,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["4000",{"_index":2977,"title":{},"name":{},"text":{"62":{},"73":{},"125":{},"136":{}},"component":{}}],["400002:word",{"_index":2933,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["400003:uint",{"_index":2935,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["400004:int",{"_index":2937,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["400005:dint[4",{"_index":2939,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["400006:real",{"_index":2941,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["400007:real",{"_index":2943,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["400008:real",{"_index":2945,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["400020:uint[10",{"_index":3278,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["40020:uint[10",{"_index":3280,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["405678",{"_index":3284,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["405678{unit",{"_index":3289,"title":{},"name":{},"text":{"77":{}},"component":{}}],["4095",{"_index":3212,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["41",{"_index":4217,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["417",{"_index":3892,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["42",{"_index":2711,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["43083",{"_index":1324,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["44228",{"_index":1327,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["443",{"_index":3666,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["45",{"_index":1514,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["45678",{"_index":3286,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["45678{unit",{"_index":3291,"title":{},"name":{},"text":{"77":{}},"component":{}}],["4755",{"_index":1957,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["48",{"_index":3086,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["496",{"_index":1837,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["499b",{"_index":3375,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["4:40",{"_index":3539,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["4:40pm",{"_index":3536,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["4th",{"_index":412,"title":{},"name":{},"text":{"4":{},"76":{},"139":{},"175":{}},"component":{}}],["4x",{"_index":3249,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["4x00001:bool",{"_index":3232,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["4x00001[10",{"_index":2629,"title":{},"name":{},"text":{"48":{}},"component":{}}],["4x00001[2",{"_index":2668,"title":{},"name":{},"text":{"48":{}},"component":{}}],["4x00011",{"_index":2639,"title":{},"name":{},"text":{"48":{}},"component":{}}],["4x00020:uint[10",{"_index":3279,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["4x0020:uint[10",{"_index":3281,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["4x05678",{"_index":3285,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["4x05678{unit",{"_index":3290,"title":{},"name":{},"text":{"77":{}},"component":{}}],["4x5678",{"_index":3287,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["4x5678{unit",{"_index":3292,"title":{},"name":{},"text":{"77":{}},"component":{}}],["4xt05",{"_index":3893,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["5",{"_index":2406,"title":{},"name":{},"text":{"43":{},"50":{},"55":{},"71":{},"73":{},"75":{},"77":{},"83":{},"122":{},"134":{},"136":{},"138":{},"140":{},"145":{},"157":{}},"component":{}}],["50",{"_index":2822,"title":{},"name":{},"text":{"55":{},"75":{},"77":{},"86":{},"138":{},"140":{},"147":{},"157":{}},"component":{}}],["500",{"_index":2514,"title":{},"name":{},"text":{"46":{},"83":{},"119":{},"145":{}},"component":{}}],["5000",{"_index":3231,"title":{},"name":{},"text":{"77":{},"80":{},"85":{},"140":{},"144":{}},"component":{}}],["502",{"_index":2677,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["512",{"_index":1567,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["52)?dti=0&lc=en",{"_index":3557,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["56",{"_index":3088,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["5678",{"_index":3282,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["57600",{"_index":3136,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["59",{"_index":3298,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["5c60d6b9",{"_index":2183,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["5th",{"_index":415,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["6",{"_index":679,"title":{},"name":{},"text":{"8":{},"15":{},"50":{},"62":{},"71":{},"77":{},"82":{},"83":{},"106":{},"122":{},"125":{},"134":{},"140":{},"145":{},"178":{}},"component":{}}],["6.0",{"_index":1970,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["60",{"_index":3326,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["60000",{"_index":3330,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["600000",{"_index":3260,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["600050[10",{"_index":3294,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["60050[10",{"_index":3296,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["60870",{"_index":3187,"title":{"73":{},"136":{}},"name":{"73":{},"136":{}},"text":{"73":{},"74":{},"136":{},"137":{}},"component":{}}],["609995[10",{"_index":3301,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["610000",{"_index":3261,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["61131",{"_index":1377,"title":{},"name":{},"text":{"15":{},"84":{},"106":{},"146":{}},"component":{}}],["64",{"_index":2028,"title":{},"name":{},"text":{"32":{},"66":{},"70":{},"72":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"129":{},"133":{},"135":{},"139":{},"140":{},"141":{},"143":{},"145":{},"146":{}},"component":{}}],["64bit",{"_index":1284,"title":{},"name":{},"text":{"15":{},"106":{},"193":{}},"component":{}}],["65535",{"_index":3213,"title":{},"name":{},"text":{"75":{},"77":{},"78":{},"138":{},"140":{},"141":{}},"component":{}}],["65536",{"_index":2682,"title":{},"name":{},"text":{"50":{},"77":{},"122":{},"140":{}},"component":{}}],["6667",{"_index":2750,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["69995[10",{"_index":3303,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["699999",{"_index":3263,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["6x",{"_index":3250,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["6x00050[10",{"_index":3295,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["6x0050[10",{"_index":3297,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["6x09995[10",{"_index":3302,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["6x9995[10",{"_index":3304,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["7",{"_index":2685,"title":{},"name":{},"text":{"50":{},"62":{},"71":{},"77":{},"82":{},"83":{},"88":{},"122":{},"125":{},"134":{},"140":{},"145":{},"150":{}},"component":{}}],["7.0.1",{"_index":1547,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["72",{"_index":586,"title":{},"name":{},"text":{"6":{},"34":{},"36":{},"176":{},"195":{},"197":{}},"component":{}}],["72hr",{"_index":2119,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["7474",{"_index":711,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["754",{"_index":3529,"title":{},"name":{},"text":{"82":{},"83":{},"103":{},"145":{}},"component":{}}],["7:11:15",{"_index":722,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["8",{"_index":712,"title":{},"name":{},"text":{"8":{},"15":{},"50":{},"66":{},"70":{},"71":{},"72":{},"75":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"102":{},"103":{},"106":{},"122":{},"129":{},"133":{},"134":{},"135":{},"138":{},"139":{},"140":{},"141":{},"143":{},"145":{},"146":{},"178":{},"203":{},"204":{}},"component":{}}],["80",{"_index":1598,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["8196",{"_index":3354,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["8445",{"_index":2950,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["8e5e",{"_index":3374,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["8th",{"_index":351,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["9",{"_index":677,"title":{},"name":{},"text":{"8":{},"9":{},"50":{},"83":{},"122":{},"145":{},"178":{},"179":{},"189":{}},"component":{}}],["9.4141104e7",{"_index":2760,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["9.5824531e8",{"_index":2764,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["95",{"_index":3619,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["954f",{"_index":3376,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["9600",{"_index":3138,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["9995",{"_index":3299,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["9999",{"_index":3305,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["99999",{"_index":3259,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["_",{"_index":2523,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["__________/\\__________/\\____________________",{"_index":3761,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["_initi",{"_index":725,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["a,b",{"_index":3765,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["a512",{"_index":2256,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["a5e02789976",{"_index":3861,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["a=12",{"_index":3390,"title":{},"name":{},"text":{"78":{}},"component":{}}],["a=eventnotifi",{"_index":3389,"title":{},"name":{},"text":{"78":{}},"component":{}}],["aaaab3nzac1yc2eaaaadaqabaaacaqdd10ykyazlxhjvter71irrvvpyr8obdljd1avwb67ts+uejjzo8ofqklasaqw9eqosfprgzw0sfzhepejvbx0n1ifsrexoyigld8wzyx/uolirlphfv+esgjvln90x/l+zps+yo3lq6qfuiqkxqqvb4ajbysyc/jifpmlvx06zaubpfdwiagibgawbx/59q0qsspx5r8tgda+xlw/8zg5abkazus2cm/sojcfqq7km4bd/wtf5r5xvakvbyilmt8dk9hs9ofvl/rfglyqx4bjy5uctwpbrwlwqfyq1u7jr39i870xngn+biechazu098bgybh/cwmgt7btjqskxksf2szahjt8ga2pl+j6mtw6/epziyengvfobvslvaz9slm26nel1+shdnd9dk/4grnbujbmzhzlftjmk7oc4r+wpcbiw99cfeshtkhsxhjkz/3kmcmuehhnrbdmy+xhecr/r/pax58a9vhxqqhbwes6tvc1gvm2ufsmkoaktnkme4v7bplbqcef8tkz7/gkp6vp1il0bddmwzpodfpmbijzqjvc38a++b5k0gagwkypvsenamzvifhrngjjum/qxbnaf1fjpiocsea0zqbyvvopdpkl9kprz32alhztnrfcewltgnm1sjinn4zqjxqs5mjbz2rjmglkszvjloso7khibq",{"_index":1819,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["aachen",{"_index":357,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["aarch64",{"_index":1912,"title":{},"name":{},"text":{"29":{},"30":{},"32":{}},"component":{}}],["ab",{"_index":1521,"title":{"61":{},"123":{}},"name":{"61":{},"123":{}},"text":{"15":{},"36":{},"61":{},"74":{},"106":{},"123":{},"137":{},"197":{}},"component":{}}],["abandon",{"_index":1303,"title":{},"name":{},"text":{"15":{},"16":{},"106":{},"107":{}},"component":{}}],["aber",{"_index":423,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["abil",{"_index":1601,"title":{},"name":{},"text":{"17":{},"21":{},"55":{},"78":{},"83":{},"103":{},"113":{},"141":{},"145":{},"157":{},"182":{},"204":{}},"component":{}}],["abort",{"_index":4295,"title":{},"name":{},"text":{"103":{}},"component":{}}],["abov",{"_index":1501,"title":{},"name":{},"text":{"15":{},"30":{},"32":{},"34":{},"36":{},"39":{},"46":{},"50":{},"54":{},"56":{},"65":{},"66":{},"78":{},"82":{},"83":{},"90":{},"91":{},"92":{},"103":{},"106":{},"119":{},"122":{},"128":{},"129":{},"141":{},"145":{},"152":{},"153":{},"158":{},"159":{},"189":{},"193":{},"195":{},"197":{},"199":{},"204":{}},"component":{}}],["absolut",{"_index":614,"title":{},"name":{},"text":{"7":{},"21":{},"49":{},"124":{},"177":{},"182":{}},"component":{}}],["abstract",{"_index":2336,"title":{},"name":{},"text":{"41":{},"93":{},"101":{},"103":{},"115":{},"163":{},"202":{},"204":{}},"component":{}}],["acceler",{"_index":1212,"title":{},"name":{},"text":{"14":{}},"component":{}}],["accept",{"_index":503,"title":{},"name":{},"text":{"5":{},"9":{},"14":{},"15":{},"21":{},"30":{},"34":{},"36":{},"56":{},"78":{},"82":{},"83":{},"106":{},"111":{},"141":{},"145":{},"159":{},"174":{},"179":{},"182":{},"195":{},"197":{}},"component":{}}],["access",{"_index":48,"title":{"26-1":{},"187-1":{}},"name":{},"text":{"2":{},"9":{},"12":{},"17":{},"26":{},"41":{},"48":{},"49":{},"50":{},"56":{},"62":{},"66":{},"75":{},"78":{},"82":{},"83":{},"85":{},"86":{},"87":{},"88":{},"90":{},"91":{},"93":{},"98":{},"103":{},"110":{},"113":{},"115":{},"122":{},"124":{},"125":{},"129":{},"138":{},"141":{},"145":{},"147":{},"148":{},"150":{},"152":{},"159":{},"163":{},"170":{},"172":{},"179":{},"187":{},"204":{}},"component":{}}],["access?dti=0&lc=en",{"_index":3586,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["access_deni",{"_index":2659,"title":{},"name":{},"text":{"48":{},"50":{},"122":{}},"component":{}}],["accessor",{"_index":2496,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["accomplish",{"_index":3413,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["accord",{"_index":873,"title":{},"name":{},"text":{"9":{},"34":{},"36":{},"37":{},"83":{},"102":{},"145":{},"179":{},"195":{},"197":{},"198":{},"203":{}},"component":{}}],["account",{"_index":476,"title":{},"name":{},"text":{"5":{},"9":{},"36":{},"83":{},"145":{},"174":{},"179":{},"197":{}},"component":{}}],["accumul",{"_index":1332,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["achiev",{"_index":2122,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["ack",{"_index":4202,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["acknowledg",{"_index":3351,"title":{},"name":{},"text":{"78":{},"83":{},"102":{},"141":{},"145":{},"203":{}},"component":{}}],["ackstate_com",{"_index":3811,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["ackstate_go",{"_index":3810,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["acquir",{"_index":3496,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["acquisit",{"_index":3178,"title":{},"name":{},"text":{"72":{},"83":{},"135":{},"145":{}},"component":{}}],["act",{"_index":839,"title":{},"name":{},"text":{"9":{},"36":{},"59":{},"162":{},"179":{},"197":{}},"component":{}}],["action",{"_index":596,"title":{},"name":{},"text":{"6":{},"22":{},"83":{},"145":{},"176":{}},"component":{}}],["activ",{"_index":448,"title":{},"name":{},"text":{"5":{},"7":{},"8":{},"9":{},"10":{},"12":{},"17":{},"34":{},"36":{},"46":{},"75":{},"77":{},"83":{},"110":{},"113":{},"119":{},"138":{},"140":{},"145":{},"173":{},"174":{},"177":{},"178":{},"179":{},"180":{},"195":{},"197":{}},"component":{}}],["activemq",{"_index":1056,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["actor",{"_index":3608,"title":{"83-14":{},"145-14":{}},"name":{},"text":{"83":{},"145":{}},"component":{}}],["actual",{"_index":1579,"title":{},"name":{},"text":{"16":{},"21":{},"34":{},"36":{},"41":{},"46":{},"47":{},"50":{},"72":{},"78":{},"90":{},"91":{},"93":{},"103":{},"107":{},"115":{},"119":{},"120":{},"122":{},"135":{},"141":{},"152":{},"163":{},"173":{},"182":{},"195":{},"197":{}},"component":{}}],["ad",{"_index":165,"title":{"62":{},"104":{},"125":{},"206":{},"14-1":{},"14-2":{},"27-2":{},"111-1":{},"111-2":{},"188-2":{}},"name":{"62":{},"125":{}},"text":{"3":{},"5":{},"6":{},"8":{},"9":{},"10":{},"14":{},"15":{},"17":{},"21":{},"26":{},"27":{},"32":{},"33":{},"36":{},"40":{},"43":{},"46":{},"47":{},"48":{},"49":{},"50":{},"56":{},"62":{},"74":{},"83":{},"87":{},"88":{},"90":{},"91":{},"103":{},"104":{},"106":{},"111":{},"113":{},"119":{},"120":{},"122":{},"124":{},"125":{},"137":{},"145":{},"148":{},"150":{},"152":{},"159":{},"173":{},"174":{},"176":{},"178":{},"179":{},"180":{},"182":{},"187":{},"188":{},"193":{},"194":{},"197":{},"204":{},"206":{}},"component":{}}],["adapt",{"_index":1654,"title":{"65":{},"128":{}},"name":{},"text":{"17":{},"57":{},"65":{},"93":{},"113":{},"128":{},"161":{},"163":{}},"component":{}}],["add",{"_index":298,"title":{"36-16":{},"197-16":{}},"name":{},"text":{"3":{},"5":{},"7":{},"9":{},"15":{},"17":{},"21":{},"26":{},"27":{},"31":{},"34":{},"36":{},"39":{},"40":{},"43":{},"46":{},"47":{},"49":{},"50":{},"55":{},"56":{},"78":{},"82":{},"83":{},"91":{},"103":{},"104":{},"106":{},"113":{},"119":{},"120":{},"122":{},"124":{},"141":{},"145":{},"152":{},"157":{},"159":{},"173":{},"174":{},"177":{},"179":{},"182":{},"183":{},"187":{},"188":{},"189":{},"192":{},"193":{},"195":{},"197":{},"199":{},"204":{},"206":{}},"component":{}}],["add/upd",{"_index":2332,"title":{},"name":{},"text":{"40":{}},"component":{}}],["add_tag",{"_index":2640,"title":{},"name":{},"text":{"48":{}},"component":{}}],["addchangeofstateitem(\"h",{"_index":2507,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["addchangeofstatetagaddress(\"h",{"_index":2517,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["addcyclicfield/addcyclictagaddress",{"_index":2539,"title":{},"name":{},"text":{"46":{},"47":{},"119":{},"120":{}},"component":{}}],["addcyclicitem(\"h",{"_index":2511,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["addcyclictagaddress(\"h",{"_index":2518,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["addit",{"_index":166,"title":{"4-1":{},"175-1":{}},"name":{},"text":{"3":{},"5":{},"8":{},"15":{},"21":{},"22":{},"26":{},"27":{},"29":{},"36":{},"37":{},"39":{},"41":{},"62":{},"78":{},"83":{},"93":{},"101":{},"102":{},"103":{},"106":{},"125":{},"141":{},"145":{},"163":{},"173":{},"174":{},"178":{},"182":{},"183":{},"187":{},"188":{},"189":{},"197":{},"198":{},"199":{},"202":{},"203":{},"204":{}},"component":{}}],["additem",{"_index":2503,"title":{},"name":{},"text":{"46":{},"47":{},"119":{},"120":{}},"component":{}}],["additem(\"st",{"_index":4112,"title":{},"name":{},"text":{"92":{},"153":{}},"component":{}}],["additemhandler(knxeventhandl",{"_index":2516,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["addition",{"_index":1641,"title":{},"name":{},"text":{"17":{},"36":{},"77":{},"78":{},"113":{},"141":{},"173":{},"197":{}},"component":{}}],["addquery(\"field1",{"_index":2468,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["addquery(\"field2",{"_index":2470,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["addr",{"_index":4213,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["address",{"_index":13,"title":{"2-3":{},"41-3":{},"66-5":{},"70-3":{},"71-3":{},"71-4":{},"71-5":{},"72-5":{},"75-5":{},"76-3":{},"77-11":{},"78-7":{},"78-9":{},"80-4":{},"81-4":{},"82-7":{},"83-10":{},"84-2":{},"85-3":{},"115-3":{},"129-5":{},"133-3":{},"134-3":{},"134-4":{},"134-5":{},"135-5":{},"138-5":{},"139-3":{},"140-11":{},"141-7":{},"141-9":{},"143-4":{},"144-4":{},"145-10":{},"146-2":{},"172-3":{}},"name":{},"text":{"2":{},"14":{},"15":{},"26":{},"36":{},"37":{},"41":{},"46":{},"47":{},"48":{},"50":{},"54":{},"55":{},"56":{},"59":{},"62":{},"66":{},"71":{},"74":{},"75":{},"76":{},"77":{},"78":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"87":{},"90":{},"91":{},"99":{},"100":{},"102":{},"104":{},"106":{},"111":{},"115":{},"119":{},"120":{},"122":{},"125":{},"129":{},"134":{},"137":{},"138":{},"139":{},"140":{},"141":{},"143":{},"144":{},"145":{},"146":{},"148":{},"151":{},"152":{},"157":{},"158":{},"159":{},"162":{},"169":{},"171":{},"172":{},"187":{},"197":{},"198":{},"203":{},"206":{}},"component":{}}],["address.com",{"_index":1821,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["address/hostname}:{port}?remot",{"_index":3420,"title":{},"name":{},"text":{"80":{},"144":{}},"component":{}}],["address`and",{"_index":4418,"title":{},"name":{},"text":{"115":{}},"component":{}}],["address}.{bit",{"_index":3502,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["address}:string({str",{"_index":3507,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["address}:{data",{"_index":3226,"title":{},"name":{},"text":{"76":{},"77":{},"82":{},"83":{},"139":{},"140":{},"145":{}},"component":{}}],["address}:{port",{"_index":3933,"title":{},"name":{},"text":{"84":{},"146":{}},"component":{}}],["address}:{port}?{opt",{"_index":3224,"title":{},"name":{},"text":{"76":{},"77":{},"78":{},"81":{},"85":{},"139":{},"140":{},"141":{},"143":{}},"component":{}}],["address}[{array",{"_index":3160,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["addrress",{"_index":2886,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["addtag",{"_index":2566,"title":{},"name":{},"text":{"47":{},"120":{}},"component":{}}],["addtagaddress(\"tag1",{"_index":2474,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["addtagaddress(\"tag2",{"_index":2475,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["adjust",{"_index":2196,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["administr",{"_index":2036,"title":{},"name":{},"text":{"32":{}},"component":{}}],["admit",{"_index":1159,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["adoc",{"_index":1875,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["adopt",{"_index":1106,"title":{},"name":{"12":{},"110":{}},"text":{},"component":{}}],["advanc",{"_index":1166,"title":{},"name":{},"text":{"13":{},"83":{},"112":{},"145":{}},"component":{}}],["advantag",{"_index":3672,"title":{},"name":{},"text":{"83":{},"93":{},"145":{},"163":{}},"component":{}}],["advertencia",{"_index":3580,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["advertis",{"_index":2790,"title":{},"name":{},"text":{"55":{},"78":{},"157":{}},"component":{}}],["advis",{"_index":2194,"title":{},"name":{},"text":{"36":{},"48":{},"50":{},"122":{},"197":{}},"component":{}}],["advisori",{"_index":875,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["aerospac",{"_index":973,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["aes128_sha256_rsaoaep",{"_index":3312,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["aes256_sha256_rsapss",{"_index":3313,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["affect",{"_index":951,"title":{},"name":{},"text":{"9":{},"15":{},"55":{},"78":{},"83":{},"106":{},"141":{},"145":{},"157":{},"179":{}},"component":{}}],["afraid",{"_index":457,"title":{},"name":{},"text":{"5":{},"174":{}},"component":{}}],["afterward",{"_index":2156,"title":{},"name":{},"text":{"34":{},"36":{},"88":{},"150":{},"195":{},"197":{},"204":{}},"component":{}}],["ag",{"_index":1108,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["again",{"_index":1729,"title":{},"name":{},"text":{"21":{},"30":{},"34":{},"36":{},"41":{},"43":{},"50":{},"59":{},"63":{},"75":{},"82":{},"88":{},"90":{},"95":{},"122":{},"126":{},"138":{},"150":{},"162":{},"166":{},"195":{},"197":{}},"component":{}}],["against",{"_index":651,"title":{},"name":{},"text":{"8":{},"9":{},"15":{},"37":{},"78":{},"98":{},"106":{},"141":{},"170":{},"178":{},"179":{},"198":{}},"component":{}}],["agent",{"_index":1809,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000",{"_index":2904,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["aggreg",{"_index":2141,"title":{},"name":{},"text":{"34":{},"36":{},"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"123":{},"125":{},"126":{},"127":{},"133":{},"136":{},"139":{},"140":{},"141":{},"142":{},"144":{},"145":{},"195":{},"197":{}},"component":{}}],["ago",{"_index":189,"title":{},"name":{},"text":{"3":{},"90":{},"151":{},"173":{}},"component":{}}],["agre",{"_index":2687,"title":{},"name":{},"text":{"50":{},"82":{},"83":{},"101":{},"122":{},"145":{},"202":{}},"component":{}}],["agreement",{"_index":817,"title":{},"name":{},"text":{"9":{},"14":{},"101":{},"111":{},"179":{},"202":{}},"component":{}}],["ai",{"_index":3540,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["aid",{"_index":3589,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["aim",{"_index":94,"title":{},"name":{},"text":{"3":{},"9":{},"15":{},"83":{},"106":{},"145":{},"173":{},"179":{}},"component":{}}],["ak",{"_index":2066,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["aka",{"_index":4048,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["alarm",{"_index":1346,"title":{},"name":{},"text":{"15":{},"47":{},"78":{},"83":{},"106":{},"120":{},"145":{}},"component":{}}],["alarm/ev",{"_index":3801,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["alarm_",{"_index":3559,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["alarm_8",{"_index":3678,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["alarm_d",{"_index":3560,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["alarm_sq",{"_index":3677,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["alarma",{"_index":3603,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["alarms/us",{"_index":3641,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["alert",{"_index":3388,"title":{},"name":{},"text":{"78":{}},"component":{}}],["algorithm",{"_index":2259,"title":{},"name":{},"text":{"37":{},"78":{},"141":{},"198":{}},"component":{}}],["alia",{"_index":1559,"title":{"84-6":{},"146-6":{}},"name":{},"text":{"15":{},"43":{},"47":{},"48":{},"50":{},"59":{},"84":{},"91":{},"106":{},"120":{},"122":{},"146":{},"152":{},"162":{}},"component":{}}],["alias",{"_index":2655,"title":{},"name":{},"text":{"48":{},"50":{},"77":{},"84":{},"122":{},"140":{},"146":{}},"component":{}}],["align",{"_index":1398,"title":{},"name":{},"text":{"15":{},"46":{},"103":{},"106":{},"119":{},"204":{}},"component":{}}],["alik",{"_index":4121,"title":{},"name":{},"text":{"93":{},"163":{}},"component":{}}],["aliv",{"_index":1541,"title":{},"name":{},"text":{"15":{},"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"90":{},"106":{},"123":{},"125":{},"126":{},"127":{},"133":{},"136":{},"139":{},"140":{},"141":{},"142":{},"144":{},"145":{}},"component":{}}],["allen",{"_index":2304,"title":{},"name":{},"text":{"39":{},"61":{},"123":{},"199":{}},"component":{}}],["allow",{"_index":14,"title":{"2-4":{},"172-4":{}},"name":{},"text":{"2":{},"3":{},"9":{},"12":{},"15":{},"16":{},"17":{},"21":{},"27":{},"34":{},"36":{},"39":{},"41":{},"43":{},"47":{},"50":{},"52":{},"55":{},"56":{},"71":{},"72":{},"75":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"86":{},"87":{},"90":{},"91":{},"93":{},"101":{},"103":{},"106":{},"107":{},"110":{},"113":{},"115":{},"120":{},"122":{},"134":{},"135":{},"138":{},"139":{},"140":{},"141":{},"143":{},"145":{},"147":{},"148":{},"151":{},"152":{},"157":{},"159":{},"163":{},"172":{},"173":{},"179":{},"182":{},"183":{},"188":{},"195":{},"197":{},"199":{},"202":{},"204":{}},"component":{}}],["alm",{"_index":3613,"title":{"83-20":{},"145-20":{}},"name":{},"text":{"83":{},"145":{}},"component":{}}],["alon",{"_index":1587,"title":{},"name":{},"text":{"16":{},"17":{},"93":{},"107":{},"113":{},"163":{}},"component":{}}],["along",{"_index":844,"title":{},"name":{},"text":{"9":{},"21":{},"34":{},"36":{},"103":{},"179":{},"182":{},"195":{},"197":{},"204":{}},"component":{}}],["alongsid",{"_index":157,"title":{},"name":{},"text":{"3":{},"9":{},"50":{},"87":{},"122":{},"148":{},"173":{},"179":{}},"component":{}}],["alpha",{"_index":3939,"title":{},"name":{},"text":{"84":{},"146":{}},"component":{}}],["alphabet",{"_index":1223,"title":{},"name":{},"text":{"14":{}},"component":{}}],["alreadi",{"_index":2045,"title":{},"name":{},"text":{"32":{},"36":{},"46":{},"49":{},"82":{},"83":{},"88":{},"119":{},"124":{},"145":{},"150":{},"182":{},"193":{},"197":{}},"component":{}}],["altern",{"_index":1998,"title":{},"name":{},"text":{"31":{},"36":{},"43":{},"47":{},"50":{},"86":{},"88":{},"91":{},"103":{},"120":{},"122":{},"147":{},"150":{},"152":{},"192":{},"193":{},"197":{}},"component":{}}],["although",{"_index":3439,"title":{},"name":{},"text":{"81":{},"83":{},"143":{},"145":{}},"component":{}}],["altöt",{"_index":974,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["alway",{"_index":584,"title":{},"name":{},"text":{"6":{},"9":{},"15":{},"17":{},"30":{},"31":{},"32":{},"34":{},"36":{},"41":{},"47":{},"50":{},"71":{},"78":{},"82":{},"83":{},"84":{},"98":{},"102":{},"106":{},"113":{},"115":{},"120":{},"122":{},"134":{},"141":{},"145":{},"146":{},"170":{},"176":{},"179":{},"195":{},"197":{},"203":{}},"component":{}}],["am",{"_index":2973,"title":{},"name":{},"text":{"62":{},"74":{},"104":{},"125":{},"137":{},"206":{}},"component":{}}],["ambigu",{"_index":3033,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["amount",{"_index":1154,"title":{},"name":{},"text":{"12":{},"21":{},"66":{},"78":{},"82":{},"83":{},"87":{},"103":{},"110":{},"129":{},"145":{},"148":{},"182":{},"204":{}},"component":{}}],["ampersand",{"_index":2368,"title":{},"name":{},"text":{"41":{},"82":{},"83":{},"115":{},"145":{}},"component":{}}],["amq",{"_index":3456,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["ams/ad",{"_index":1480,"title":{},"name":{},"text":{"15":{},"62":{},"106":{},"125":{}},"component":{}}],["ams/tcp",{"_index":2966,"title":{"62-1":{},"125-1":{}},"name":{},"text":{"62":{},"125":{}},"component":{}}],["amsnetid",{"_index":2975,"title":{},"name":{},"text":{"62":{},"125":{}},"component":{}}],["analog",{"_index":1759,"title":{"71-5":{},"134-5":{}},"name":{},"text":{"21":{},"71":{},"77":{},"82":{},"83":{},"134":{},"140":{},"145":{},"182":{}},"component":{}}],["analog:1",{"_index":3174,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["analog:2[3",{"_index":3175,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["analog:{start",{"_index":3173,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["analys",{"_index":644,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["analysi",{"_index":669,"title":{"25":{},"186":{}},"name":{},"text":{"8":{},"10":{},"12":{},"22":{},"25":{},"82":{},"83":{},"110":{},"145":{},"178":{},"180":{},"183":{},"186":{}},"component":{}}],["analyt",{"_index":384,"title":{},"name":{},"text":{"4":{},"12":{},"55":{},"110":{},"157":{},"175":{}},"component":{}}],["analyz",{"_index":1178,"title":{},"name":{},"text":{"13":{},"83":{},"112":{},"145":{}},"component":{}}],["anchor",{"_index":2233,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["and/or",{"_index":843,"title":{},"name":{},"text":{"9":{},"47":{},"48":{},"50":{},"83":{},"120":{},"122":{},"145":{},"179":{}},"component":{}}],["annot",{"_index":4017,"title":{"151-3":{}},"name":{},"text":{"90":{},"151":{}},"component":{}}],["announc",{"_index":2134,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["announce@apache.org",{"_index":2159,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["anoth",{"_index":190,"title":{},"name":{},"text":{"3":{},"15":{},"17":{},"34":{},"36":{},"56":{},"59":{},"62":{},"83":{},"87":{},"88":{},"93":{},"103":{},"106":{},"113":{},"125":{},"145":{},"148":{},"150":{},"159":{},"162":{},"163":{},"173":{},"195":{},"197":{},"204":{}},"component":{}}],["anounc",{"_index":738,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["answer",{"_index":923,"title":{},"name":{},"text":{"9":{},"66":{},"83":{},"129":{},"145":{},"179":{}},"component":{}}],["anteas",{"_index":3520,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["anymor",{"_index":1566,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["anyon",{"_index":898,"title":{},"name":{},"text":{"9":{},"14":{},"34":{},"36":{},"111":{},"179":{},"195":{},"197":{}},"component":{}}],["anyth",{"_index":908,"title":{},"name":{},"text":{"9":{},"21":{},"27":{},"30":{},"31":{},"32":{},"34":{},"36":{},"50":{},"59":{},"78":{},"91":{},"122":{},"141":{},"152":{},"162":{},"179":{},"182":{},"188":{},"191":{},"192":{},"193":{},"195":{},"197":{}},"component":{}}],["anyway",{"_index":4479,"title":{},"name":{},"text":{"197":{}},"component":{}}],["anywher",{"_index":1777,"title":{},"name":{},"text":{"21":{},"91":{},"152":{}},"component":{}}],["anzoátegui",{"_index":990,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["apach",{"_index":83,"title":{"9":{},"12":{},"13":{},"14":{},"17":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"101":{},"110":{},"111":{},"112":{},"113":{},"122":{},"154":{},"155":{},"156":{},"157":{},"158":{},"159":{},"161":{},"179":{},"202":{},"3-7":{},"16-1":{},"107-1":{},"173-7":{}},"name":{"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"154":{},"155":{},"156":{},"157":{},"158":{},"159":{},"161":{}},"text":{"3":{},"4":{},"6":{},"7":{},"9":{},"10":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"20":{},"21":{},"22":{},"23":{},"26":{},"27":{},"29":{},"34":{},"36":{},"37":{},"41":{},"43":{},"46":{},"49":{},"50":{},"51":{},"52":{},"54":{},"55":{},"56":{},"65":{},"66":{},"72":{},"78":{},"91":{},"93":{},"98":{},"101":{},"106":{},"107":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"119":{},"122":{},"124":{},"128":{},"129":{},"135":{},"141":{},"152":{},"154":{},"157":{},"158":{},"159":{},"163":{},"170":{},"173":{},"174":{},"175":{},"176":{},"177":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"187":{},"188":{},"189":{},"195":{},"197":{},"198":{},"202":{}},"component":{}}],["apache.releases.http",{"_index":2172,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["apache.snapshots.http",{"_index":2171,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["apachecon",{"_index":403,"title":{},"name":{},"text":{"4":{},"36":{},"175":{},"197":{}},"component":{}}],["apacheid@plc4x",{"_index":1826,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["apache’",{"_index":1796,"title":{},"name":{},"text":{"22":{},"26":{},"28":{},"36":{},"183":{},"185":{},"187":{},"190":{},"197":{}},"component":{}}],["apart",{"_index":3962,"title":{},"name":{},"text":{"85":{}},"component":{}}],["api",{"_index":98,"title":{"46-2":{},"47-1":{},"48-1":{},"91-4":{},"119-2":{},"120-1":{},"152-4":{}},"name":{},"text":{"3":{},"12":{},"15":{},"17":{},"21":{},"29":{},"36":{},"41":{},"46":{},"47":{},"50":{},"52":{},"54":{},"55":{},"65":{},"66":{},"72":{},"78":{},"83":{},"88":{},"90":{},"91":{},"92":{},"93":{},"104":{},"106":{},"110":{},"113":{},"115":{},"119":{},"120":{},"122":{},"128":{},"129":{},"135":{},"145":{},"150":{},"151":{},"152":{},"153":{},"157":{},"158":{},"163":{},"173":{},"182":{},"189":{},"197":{},"206":{}},"component":{}}],["apimodel.plcresponsecode_ok",{"_index":2528,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["apimodel.plcsubscriptionev",{"_index":2522,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["app",{"_index":3663,"title":{},"name":{},"text":{"83":{},"145":{},"193":{}},"component":{}}],["app(31)(32",{"_index":3804,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["app.go",{"_index":2421,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["appear",{"_index":753,"title":{},"name":{},"text":{"8":{},"56":{},"78":{},"159":{},"178":{}},"component":{}}],["append",{"_index":2268,"title":{},"name":{},"text":{"37":{},"98":{},"170":{},"198":{}},"component":{}}],["appl",{"_index":2022,"title":{},"name":{},"text":{"32":{}},"component":{}}],["apple’",{"_index":1958,"title":{},"name":{},"text":{"30":{}},"component":{}}],["appli",{"_index":688,"title":{},"name":{},"text":{"8":{},"10":{},"17":{},"34":{},"36":{},"56":{},"66":{},"77":{},"78":{},"83":{},"90":{},"91":{},"113":{},"129":{},"141":{},"145":{},"152":{},"159":{},"178":{},"180":{},"195":{},"197":{}},"component":{}}],["applic",{"_index":19,"title":{},"name":{},"text":{"2":{},"8":{},"15":{},"16":{},"17":{},"21":{},"42":{},"46":{},"47":{},"48":{},"50":{},"55":{},"65":{},"66":{},"78":{},"82":{},"83":{},"87":{},"88":{},"90":{},"93":{},"98":{},"101":{},"103":{},"106":{},"107":{},"113":{},"116":{},"119":{},"120":{},"122":{},"128":{},"129":{},"141":{},"145":{},"148":{},"150":{},"151":{},"157":{},"163":{},"170":{},"172":{},"178":{},"182":{},"202":{},"204":{}},"component":{}}],["application/json",{"_index":2808,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["approach",{"_index":2576,"title":{},"name":{},"text":{"47":{},"78":{},"81":{},"83":{},"120":{},"141":{},"143":{},"145":{}},"component":{}}],["appropri",{"_index":824,"title":{},"name":{},"text":{"9":{},"83":{},"145":{},"179":{}},"component":{}}],["approv",{"_index":580,"title":{},"name":{},"text":{"6":{},"9":{},"176":{},"179":{}},"component":{}}],["apr",{"_index":721,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["april",{"_index":348,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["apt",{"_index":1834,"title":{},"name":{},"text":{"26":{},"30":{},"31":{},"32":{},"187":{},"191":{}},"component":{}}],["arbitari",{"_index":2863,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["arbitr",{"_index":4126,"title":{},"name":{},"text":{"98":{},"170":{}},"component":{}}],["arbitrari",{"_index":4264,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["architect",{"_index":1062,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["architectur",{"_index":18,"title":{"2":{},"172":{}},"name":{"2":{},"172":{}},"text":{"10":{},"29":{},"78":{},"83":{},"87":{},"141":{},"145":{},"148":{},"180":{}},"component":{}}],["archiv",{"_index":626,"title":{},"name":{},"text":{"7":{},"9":{},"10":{},"15":{},"36":{},"37":{},"55":{},"56":{},"106":{},"157":{},"159":{},"177":{},"179":{},"180":{},"197":{},"198":{}},"component":{}}],["archive.apache.org",{"_index":836,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["arduino",{"_index":3131,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["arduino’",{"_index":3163,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["are:/n",{"_index":3465,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["area",{"_index":3228,"title":{"77-14":{},"82-9":{},"83-12":{},"85-6":{},"140-14":{},"145-12":{}},"name":{},"text":{"77":{},"82":{},"83":{},"84":{},"85":{},"140":{},"145":{},"146":{}},"component":{}}],["area}{start",{"_index":3241,"title":{},"name":{},"text":{"77":{},"82":{},"83":{},"140":{},"145":{}},"component":{}}],["aren’t",{"_index":2054,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["arg",{"_index":3712,"title":{},"name":{},"text":{"83":{},"87":{},"90":{},"145":{},"148":{},"151":{}},"component":{}}],["arglin",{"_index":1930,"title":{},"name":{},"text":{"29":{},"189":{}},"component":{}}],["argument",{"_index":161,"title":{"103-22":{}},"name":{},"text":{"3":{},"39":{},"41":{},"50":{},"54":{},"90":{},"91":{},"103":{},"115":{},"122":{},"152":{},"158":{},"173":{},"199":{},"204":{}},"component":{}}],["aris",{"_index":1925,"title":{},"name":{},"text":{"29":{},"189":{}},"component":{}}],["arm64.jar",{"_index":2044,"title":{},"name":{},"text":{"32":{}},"component":{}}],["arm64/bin/java",{"_index":1951,"title":{},"name":{},"text":{"30":{}},"component":{}}],["arm_64.jar",{"_index":2043,"title":{},"name":{},"text":{"32":{}},"component":{}}],["around",{"_index":323,"title":{"122":{}},"name":{},"text":{"4":{},"56":{},"59":{},"83":{},"86":{},"88":{},"92":{},"145":{},"147":{},"150":{},"153":{},"159":{},"162":{},"175":{}},"component":{}}],["arrang",{"_index":3682,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["array",{"_index":1395,"title":{"103-4":{},"204-4":{}},"name":{},"text":{"15":{},"39":{},"48":{},"50":{},"62":{},"63":{},"66":{},"70":{},"71":{},"76":{},"77":{},"82":{},"83":{},"84":{},"85":{},"103":{},"106":{},"122":{},"125":{},"126":{},"129":{},"133":{},"134":{},"139":{},"140":{},"145":{},"146":{},"199":{},"204":{}},"component":{}}],["arrayfield",{"_index":4321,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["arrayoutofboundexcept",{"_index":1532,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["arrays.aslist",{"_index":4165,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["arrays.aslist(\"read",{"_index":4159,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["arrayutils.toprimitive(data.toarray(new",{"_index":3872,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["arrow",{"_index":2896,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["articl",{"_index":451,"title":{},"name":{},"text":{"5":{},"66":{},"129":{},"174":{}},"component":{}}],["artifact",{"_index":202,"title":{"34-11":{},"36-15":{},"195-11":{},"197-15":{}},"name":{},"text":{"3":{},"9":{},"15":{},"21":{},"22":{},"27":{},"34":{},"36":{},"37":{},"106":{},"173":{},"179":{},"182":{},"183":{},"188":{},"195":{},"197":{},"198":{}},"component":{}}],["artifici",{"_index":4298,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["arument",{"_index":4490,"title":{},"name":{},"text":{"204":{}},"component":{}}],["asc",{"_index":1227,"title":{"15-2":{},"15-7":{},"15-10":{},"15-11":{},"15-13":{},"15-17":{},"15-21":{},"15-25":{},"15-29":{},"15-33":{},"15-38":{},"15-42":{},"15-46":{},"15-48":{},"106-2":{},"106-7":{},"106-10":{},"106-11":{},"106-13":{},"106-17":{},"106-21":{},"106-25":{},"106-29":{},"106-33":{},"106-38":{},"106-42":{},"106-46":{},"106-48":{}},"name":{},"text":{},"component":{}}],["ascii",{"_index":65,"title":{"77-7":{},"140-7":{}},"name":{},"text":{"2":{},"15":{},"27":{},"36":{},"77":{},"103":{},"106":{},"140":{},"172":{},"188":{},"197":{}},"component":{}}],["asciidoc",{"_index":1874,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["asciidoctor",{"_index":537,"title":{},"name":{},"text":{"5":{},"27":{},"174":{},"188":{}},"component":{}}],["asf",{"_index":568,"title":{},"name":{},"text":{"6":{},"9":{},"27":{},"34":{},"36":{},"101":{},"176":{},"179":{},"188":{},"195":{},"197":{},"202":{}},"component":{}}],["asia",{"_index":1168,"title":{},"name":{},"text":{"13":{},"112":{}},"component":{}}],["ask",{"_index":20,"title":{},"name":{},"text":{"2":{},"5":{},"9":{},"31":{},"34":{},"36":{},"43":{},"47":{},"49":{},"50":{},"59":{},"65":{},"87":{},"120":{},"122":{},"124":{},"128":{},"148":{},"162":{},"172":{},"174":{},"179":{},"195":{},"197":{}},"component":{}}],["asn.1",{"_index":1705,"title":{},"name":{},"text":{"21":{}},"component":{}}],["aspect",{"_index":1630,"title":{},"name":{},"text":{"17":{},"41":{},"113":{},"115":{}},"component":{}}],["assembl",{"_index":262,"title":{},"name":{},"text":{"3":{},"34":{},"36":{},"173":{},"195":{},"197":{},"201":{}},"component":{}}],["assent",{"_index":595,"title":{},"name":{},"text":{"6":{},"176":{}},"component":{}}],["assert",{"_index":4249,"title":{"103-5":{}},"name":{},"text":{"103":{},"204":{}},"component":{}}],["assertionexcept",{"_index":4282,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["assess",{"_index":759,"title":{"9":{},"179":{},"9-2":{},"179-2":{}},"name":{},"text":{"9":{},"179":{}},"component":{}}],["assign",{"_index":2885,"title":{},"name":{},"text":{"56":{},"82":{},"83":{},"91":{},"103":{},"145":{},"152":{},"159":{},"174":{}},"component":{}}],["assist",{"_index":523,"title":{},"name":{},"text":{"5":{},"10":{},"15":{},"106":{},"174":{},"180":{}},"component":{}}],["assistant.io/integrations/ad",{"_index":2969,"title":{},"name":{},"text":{"62":{},"125":{}},"component":{}}],["associ",{"_index":572,"title":{},"name":{},"text":{"6":{},"82":{},"83":{},"145":{},"176":{}},"component":{}}],["associated_valu",{"_index":3808,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["assso",{"_index":1211,"title":{},"name":{},"text":{"14":{}},"component":{}}],["assum",{"_index":2378,"title":{},"name":{},"text":{"41":{},"46":{},"48":{},"50":{},"66":{},"76":{},"77":{},"78":{},"82":{},"83":{},"84":{},"85":{},"119":{},"122":{},"129":{},"139":{},"140":{},"141":{},"145":{},"146":{}},"component":{}}],["assur",{"_index":639,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["asymmetr",{"_index":3022,"title":{},"name":{},"text":{"65":{},"128":{}},"component":{}}],["async",{"_index":2600,"title":{},"name":{},"text":{"47":{},"48":{},"120":{}},"component":{}}],["asynchron",{"_index":948,"title":{},"name":{},"text":{"9":{},"47":{},"48":{},"50":{},"66":{},"83":{},"120":{},"122":{},"129":{},"145":{},"179":{}},"component":{}}],["asyncio",{"_index":2616,"title":{},"name":{},"text":{"48":{}},"component":{}}],["asyncio.run(communicate_with_plc",{"_index":2636,"title":{},"name":{},"text":{"48":{}},"component":{}}],["asyncrespons",{"_index":2568,"title":{},"name":{},"text":{"47":{},"50":{},"120":{},"122":{}},"component":{}}],["asyncresponse.whencomplete((respons",{"_index":2569,"title":{},"name":{},"text":{"47":{},"50":{},"120":{},"122":{}},"component":{}}],["attach",{"_index":60,"title":{},"name":{},"text":{"2":{},"83":{},"91":{},"145":{},"152":{},"172":{}},"component":{}}],["attack",{"_index":1634,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["attain",{"_index":4219,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["attempt",{"_index":2719,"title":{},"name":{},"text":{"50":{},"66":{},"78":{},"122":{},"129":{},"141":{}},"component":{}}],["attend",{"_index":321,"title":{},"name":{},"text":{"4":{},"36":{},"175":{},"197":{}},"component":{}}],["attent",{"_index":2071,"title":{},"name":{},"text":{"34":{},"36":{},"37":{},"46":{},"72":{},"82":{},"83":{},"119":{},"135":{},"145":{},"195":{},"197":{},"198":{}},"component":{}}],["attribut",{"_index":1724,"title":{},"name":{},"text":{"21":{},"39":{},"41":{},"78":{},"101":{},"103":{},"199":{},"202":{},"204":{}},"component":{}}],["attributeid",{"_index":3364,"title":{},"name":{},"text":{"78":{}},"component":{}}],["audit",{"_index":3417,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["aufbechen",{"_index":1191,"title":{},"name":{},"text":{"13":{},"112":{}},"component":{}}],["aufbrechen",{"_index":378,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["august",{"_index":1170,"title":{},"name":{},"text":{"13":{},"62":{},"71":{},"112":{},"125":{},"134":{}},"component":{}}],["ausbg2\":0,\"ausbg1\":2,\"bgtyp\":130,\"index\":6,\"mifb\":\"6es7",{"_index":3895,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["ausbg2\":3,\"ausbg1\":22021,\"bgtyp\":0,\"index\":129,\"mifb\":\"boot",{"_index":3897,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["ausbg2\":768,\"ausbg1\":22021,\"bgtyp\":0,\"index\":7,\"mifb",{"_index":3896,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["auslesen",{"_index":1185,"title":{},"name":{},"text":{"13":{},"112":{}},"component":{}}],["authent",{"_index":798,"title":{},"name":{},"text":{"9":{},"15":{},"78":{},"106":{},"141":{},"179":{}},"component":{}}],["authentication?truefalseconfig",{"_index":4379,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["authorized_key",{"_index":1817,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["auto",{"_index":2893,"title":{},"name":{},"text":{"56":{},"74":{},"78":{},"137":{},"141":{},"159":{}},"component":{}}],["autom",{"_index":992,"title":{"62":{},"125":{},"63-1":{},"66-1":{},"126-1":{},"129-1":{}},"name":{},"text":{"10":{},"12":{},"16":{},"17":{},"21":{},"34":{},"36":{},"37":{},"62":{},"63":{},"83":{},"107":{},"110":{},"113":{},"125":{},"126":{},"145":{},"180":{},"182":{},"195":{},"197":{},"198":{}},"component":{}}],["automat",{"_index":154,"title":{},"name":{},"text":{"3":{},"7":{},"8":{},"9":{},"15":{},"22":{},"26":{},"27":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"46":{},"49":{},"50":{},"56":{},"63":{},"66":{},"75":{},"81":{},"82":{},"83":{},"86":{},"87":{},"88":{},"90":{},"91":{},"95":{},"101":{},"106":{},"119":{},"122":{},"124":{},"126":{},"129":{},"138":{},"143":{},"145":{},"147":{},"148":{},"150":{},"152":{},"159":{},"166":{},"173":{},"177":{},"178":{},"179":{},"183":{},"187":{},"188":{},"195":{},"197":{},"198":{},"202":{}},"component":{}}],["automatisierungsindustri",{"_index":377,"title":{},"name":{},"text":{"4":{},"13":{},"112":{},"175":{}},"component":{}}],["automatización",{"_index":985,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["avail",{"_index":126,"title":{},"name":{},"text":{"3":{},"8":{},"9":{},"11":{},"14":{},"15":{},"16":{},"17":{},"18":{},"24":{},"25":{},"26":{},"27":{},"28":{},"30":{},"31":{},"32":{},"34":{},"36":{},"41":{},"46":{},"47":{},"48":{},"50":{},"55":{},"56":{},"59":{},"72":{},"77":{},"78":{},"81":{},"82":{},"83":{},"91":{},"92":{},"93":{},"103":{},"106":{},"107":{},"111":{},"113":{},"115":{},"119":{},"120":{},"122":{},"135":{},"140":{},"143":{},"145":{},"152":{},"153":{},"157":{},"159":{},"162":{},"163":{},"173":{},"178":{},"179":{},"181":{},"185":{},"186":{},"187":{},"188":{},"190":{},"192":{},"193":{},"195":{},"197":{},"204":{}},"component":{}}],["aviso",{"_index":3578,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["avoid",{"_index":2272,"title":{},"name":{},"text":{"37":{},"50":{},"82":{},"83":{},"92":{},"122":{},"145":{},"153":{},"198":{}},"component":{}}],["avro",{"_index":1699,"title":{},"name":{},"text":{"21":{}},"component":{}}],["await",{"_index":2632,"title":{},"name":{},"text":{"48":{}},"component":{}}],["awar",{"_index":4034,"title":{},"name":{},"text":{"90":{},"103":{}},"component":{}}],["awesom",{"_index":610,"title":{},"name":{},"text":{"7":{},"177":{}},"component":{}}],["b",{"_index":1702,"title":{},"name":{},"text":{"21":{},"82":{},"83":{},"91":{},"145":{},"152":{}},"component":{}}],["b01sec",{"_index":3826,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["b0sec",{"_index":3830,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["b1",{"_index":2040,"title":{},"name":{},"text":{"32":{}},"component":{}}],["b1/cmake",{"_index":2041,"title":{},"name":{},"text":{"32":{}},"component":{}}],["b10sec",{"_index":3831,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["back",{"_index":526,"title":{"34-12":{},"36-13":{},"36-17":{},"195-12":{},"197-13":{},"197-17":{}},"name":{},"text":{"5":{},"9":{},"10":{},"12":{},"34":{},"36":{},"39":{},"41":{},"82":{},"86":{},"87":{},"103":{},"110":{},"115":{},"147":{},"148":{},"174":{},"179":{},"180":{},"195":{},"197":{},"199":{}},"component":{}}],["background",{"_index":566,"title":{},"name":{},"text":{"6":{},"47":{},"48":{},"50":{},"120":{},"122":{},"176":{}},"component":{}}],["backoff",{"_index":2773,"title":{"55-11":{},"157-11":{}},"name":{},"text":{"55":{},"157":{}},"component":{}}],["backplan",{"_index":3121,"title":{},"name":{},"text":{"70":{},"76":{},"133":{},"139":{}},"component":{}}],["backup",{"_index":1614,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["backward",{"_index":881,"title":{},"name":{},"text":{"9":{},"55":{},"157":{},"179":{}},"component":{}}],["bacnet",{"_index":69,"title":{"63-1":{},"126-1":{}},"name":{"63":{},"126":{}},"text":{"2":{},"5":{},"63":{},"126":{},"172":{},"174":{}},"component":{}}],["bacnet/ip",{"_index":1526,"title":{"63":{},"126":{}},"name":{},"text":{"15":{},"63":{},"74":{},"106":{},"126":{},"137":{}},"component":{}}],["bad",{"_index":1855,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["balanc",{"_index":2780,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["banner",{"_index":434,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["base",{"_index":41,"title":{},"name":{},"text":{"2":{},"9":{},"15":{},"17":{},"21":{},"22":{},"30":{},"31":{},"37":{},"39":{},"41":{},"43":{},"47":{},"48":{},"50":{},"55":{},"59":{},"66":{},"71":{},"72":{},"78":{},"81":{},"82":{},"83":{},"91":{},"101":{},"103":{},"106":{},"113":{},"115":{},"120":{},"122":{},"129":{},"134":{},"135":{},"141":{},"143":{},"145":{},"152":{},"157":{},"162":{},"172":{},"179":{},"182":{},"183":{},"191":{},"198":{},"199":{},"202":{},"204":{}},"component":{}}],["baseeventtyp",{"_index":3391,"title":{},"name":{},"text":{"78":{}},"component":{}}],["basefreemarkerlanguagetemplatehelp",{"_index":4200,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["baseoptim",{"_index":1431,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["bash_profil",{"_index":2012,"title":{},"name":{},"text":{"31":{},"192":{}},"component":{}}],["basi",{"_index":3244,"title":{},"name":{},"text":{"77":{},"78":{},"101":{},"141":{},"202":{}},"component":{}}],["basic",{"_index":228,"title":{"201":{},"50-2":{},"122-2":{}},"name":{},"text":{"3":{},"7":{},"27":{},"47":{},"48":{},"50":{},"55":{},"72":{},"78":{},"82":{},"83":{},"87":{},"93":{},"102":{},"120":{},"122":{},"135":{},"145":{},"148":{},"157":{},"163":{},"177":{},"188":{},"203":{}},"component":{}}],["basic128rsa15",{"_index":3309,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["basic256",{"_index":3310,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["basic256sha256",{"_index":3311,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["batch",{"_index":3790,"title":{},"name":{},"text":{"83":{},"91":{},"145":{},"152":{}},"component":{}}],["baud",{"_index":3137,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["be",{"_index":125,"title":{"36-2":{},"197-2":{}},"name":{},"text":{"3":{},"9":{},"12":{},"15":{},"17":{},"21":{},"26":{},"27":{},"34":{},"36":{},"41":{},"55":{},"59":{},"77":{},"83":{},"88":{},"90":{},"101":{},"102":{},"103":{},"106":{},"110":{},"113":{},"115":{},"140":{},"145":{},"150":{},"157":{},"162":{},"173":{},"179":{},"182":{},"187":{},"188":{},"189":{},"195":{},"197":{},"202":{},"203":{},"204":{}},"component":{}}],["bearer",{"_index":2388,"title":{},"name":{},"text":{"43":{}},"component":{}}],["becam",{"_index":1020,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["beckhoff",{"_index":1479,"title":{"104":{},"206":{}},"name":{},"text":{"15":{},"33":{},"36":{},"62":{},"106":{},"125":{},"194":{},"197":{}},"component":{}}],["becom",{"_index":444,"title":{},"name":{},"text":{"5":{},"9":{},"10":{},"71":{},"75":{},"83":{},"134":{},"138":{},"145":{},"173":{},"174":{},"179":{},"180":{}},"component":{}}],["befor",{"_index":502,"title":{},"name":{},"text":{"5":{},"9":{},"17":{},"21":{},"34":{},"36":{},"48":{},"50":{},"55":{},"56":{},"82":{},"83":{},"87":{},"88":{},"101":{},"103":{},"113":{},"122":{},"145":{},"148":{},"150":{},"157":{},"159":{},"174":{},"179":{},"195":{},"197":{},"202":{},"204":{}},"component":{}}],["begin",{"_index":792,"title":{},"name":{},"text":{"9":{},"15":{},"34":{},"36":{},"55":{},"63":{},"75":{},"76":{},"83":{},"95":{},"106":{},"126":{},"138":{},"139":{},"145":{},"157":{},"166":{},"179":{},"195":{},"197":{}},"component":{}}],["beginn",{"_index":269,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["behav",{"_index":283,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["behavior",{"_index":1141,"title":{},"name":{},"text":{"12":{},"78":{},"82":{},"83":{},"110":{},"145":{}},"component":{}}],["behaviour",{"_index":4222,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["behind",{"_index":1152,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["belong",{"_index":1281,"title":{},"name":{},"text":{"15":{},"34":{},"36":{},"106":{},"195":{},"197":{}},"component":{}}],["below",{"_index":2382,"title":{},"name":{},"text":{"43":{},"48":{},"55":{},"56":{},"59":{},"65":{},"66":{},"72":{},"78":{},"83":{},"84":{},"98":{},"128":{},"129":{},"135":{},"145":{},"146":{},"157":{},"159":{},"162":{},"170":{}},"component":{}}],["ben",{"_index":970,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["benefit",{"_index":1593,"title":{"17-1":{},"113-1":{}},"name":{},"text":{"17":{},"21":{},"88":{},"113":{},"150":{},"182":{}},"component":{}}],["benevol",{"_index":921,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["berlin",{"_index":381,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["besid",{"_index":1036,"title":{},"name":{},"text":{"10":{},"93":{},"163":{},"180":{}},"component":{}}],["best",{"_index":1996,"title":{},"name":{},"text":{"31":{},"82":{},"83":{},"145":{},"192":{}},"component":{}}],["beta",{"_index":1525,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["better",{"_index":1734,"title":{},"name":{},"text":{"21":{},"41":{},"83":{},"115":{},"145":{},"182":{},"193":{}},"component":{}}],["between",{"_index":33,"title":{},"name":{},"text":{"2":{},"12":{},"17":{},"34":{},"36":{},"41":{},"55":{},"62":{},"66":{},"77":{},"78":{},"83":{},"88":{},"91":{},"101":{},"102":{},"103":{},"110":{},"113":{},"115":{},"125":{},"129":{},"140":{},"141":{},"145":{},"150":{},"152":{},"157":{},"172":{},"195":{},"197":{},"202":{},"203":{},"204":{}},"component":{}}],["beverag",{"_index":999,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["beyond",{"_index":1878,"title":{},"name":{},"text":{"27":{},"36":{},"78":{},"141":{},"173":{},"188":{},"197":{}},"component":{}}],["big",{"_index":385,"title":{},"name":{},"text":{"4":{},"8":{},"10":{},"12":{},"15":{},"17":{},"70":{},"76":{},"82":{},"106":{},"110":{},"113":{},"133":{},"139":{},"175":{},"178":{},"180":{}},"component":{}}],["big_endian",{"_index":3233,"title":{},"name":{},"text":{"77":{},"103":{}},"component":{}}],["big_endian_byte_swap",{"_index":3235,"title":{},"name":{},"text":{"77":{}},"component":{}}],["bigendian",{"_index":2303,"title":{},"name":{},"text":{"39":{},"133":{},"139":{},"199":{}},"component":{}}],["bigger",{"_index":1625,"title":{},"name":{},"text":{"17":{},"103":{},"113":{},"204":{}},"component":{}}],["biggest",{"_index":1609,"title":{},"name":{},"text":{"17":{},"65":{},"113":{},"128":{}},"component":{}}],["bin",{"_index":2823,"title":{},"name":{},"text":{"55":{},"157":{},"193":{}},"component":{}}],["bin/bash",{"_index":1988,"title":{},"name":{},"text":{"31":{}},"component":{}}],["bin/connect",{"_index":2813,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["bin/kafka",{"_index":2797,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["bin/nifi.sh",{"_index":2902,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["bin/zookeep",{"_index":2794,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["binari",{"_index":805,"title":{"71-4":{},"134-4":{}},"name":{},"text":{"9":{},"20":{},"32":{},"36":{},"37":{},"39":{},"55":{},"77":{},"83":{},"114":{},"140":{},"145":{},"157":{},"179":{},"193":{},"197":{},"198":{},"199":{}},"component":{}}],["binaries/3.27.7",{"_index":2039,"title":{},"name":{},"text":{"32":{}},"component":{}}],["binary(b",{"_index":3360,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["bind",{"_index":587,"title":{},"name":{},"text":{"6":{},"34":{},"36":{},"37":{},"81":{},"91":{},"143":{},"152":{},"176":{},"195":{},"197":{},"198":{}},"component":{}}],["bio",{"_index":969,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["bit",{"_index":288,"title":{},"name":{},"text":{"3":{},"15":{},"32":{},"41":{},"46":{},"50":{},"56":{},"65":{},"66":{},"70":{},"71":{},"72":{},"75":{},"77":{},"82":{},"83":{},"91":{},"92":{},"98":{},"103":{},"106":{},"119":{},"122":{},"128":{},"129":{},"133":{},"134":{},"135":{},"138":{},"140":{},"145":{},"152":{},"153":{},"159":{},"170":{},"204":{}},"component":{}}],["bit)}/{middl",{"_index":3200,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["bit)}/{sub",{"_index":3201,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["bitstr",{"_index":1306,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["bit|byt",{"_index":4293,"title":{},"name":{},"text":{"103":{}},"component":{}}],["bloc",{"_index":4484,"title":{"201":{}},"name":{},"text":{},"component":{}}],["block",{"_index":1449,"title":{},"name":{},"text":{"15":{},"46":{},"47":{},"49":{},"66":{},"82":{},"83":{},"87":{},"103":{},"106":{},"119":{},"120":{},"124":{},"129":{},"145":{},"148":{},"204":{}},"component":{}}],["blog",{"_index":452,"title":{"13":{},"112":{},"13-1":{},"112-1":{}},"name":{"13":{},"112":{}},"text":{"5":{},"174":{}},"component":{}}],["blue",{"_index":1692,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["board",{"_index":579,"title":{},"name":{},"text":{"6":{},"9":{},"176":{},"179":{}},"component":{}}],["boilerpl",{"_index":2307,"title":{},"name":{},"text":{"39":{},"82":{},"83":{},"91":{},"101":{},"145":{},"152":{},"199":{},"202":{}},"component":{}}],["bombard",{"_index":2856,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["book",{"_index":1628,"title":{},"name":{},"text":{"17":{},"43":{},"113":{}},"component":{}}],["bool",{"_index":3076,"title":{},"name":{},"text":{"66":{},"70":{},"72":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"129":{},"133":{},"135":{},"139":{},"140":{},"141":{},"143":{},"145":{},"146":{}},"component":{}}],["boolean",{"_index":1315,"title":{},"name":{},"text":{"15":{},"50":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"90":{},"103":{},"106":{},"122":{},"123":{},"125":{},"126":{},"127":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"204":{}},"component":{}}],["boost",{"_index":4434,"title":{},"name":{},"text":{"173":{}},"component":{}}],["boot",{"_index":3071,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["bootstrap",{"_index":1866,"title":{},"name":{},"text":{"27":{},"55":{},"91":{},"152":{},"157":{},"188":{}},"component":{}}],["bootstrap_debug_param",{"_index":2903,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["born",{"_index":2013,"title":{},"name":{},"text":{"32":{}},"component":{}}],["both",{"_index":28,"title":{},"name":{},"text":{"2":{},"9":{},"15":{},"17":{},"21":{},"41":{},"47":{},"50":{},"56":{},"66":{},"71":{},"77":{},"78":{},"82":{},"83":{},"88":{},"91":{},"103":{},"106":{},"113":{},"115":{},"120":{},"122":{},"129":{},"134":{},"140":{},"141":{},"145":{},"150":{},"152":{},"159":{},"172":{},"173":{},"179":{},"182":{},"204":{}},"component":{}}],["bottom",{"_index":2883,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["bound",{"_index":814,"title":{},"name":{},"text":{"9":{},"103":{},"179":{},"204":{}},"component":{}}],["box",{"_index":1653,"title":{},"name":{},"text":{"17":{},"83":{},"113":{},"145":{}},"component":{}}],["bracket",{"_index":1389,"title":{},"name":{},"text":{"15":{},"37":{},"103":{},"106":{},"198":{},"204":{}},"component":{}}],["bradley",{"_index":2305,"title":{},"name":{},"text":{"39":{},"61":{},"123":{},"199":{}},"component":{}}],["brain",{"_index":1888,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["brainstorm",{"_index":4255,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["branch",{"_index":442,"title":{"5-7":{},"34-1":{},"34-12":{},"36-4":{},"36-17":{},"174-7":{},"195-1":{},"195-12":{},"197-4":{},"197-17":{}},"name":{},"text":{"5":{},"22":{},"27":{},"34":{},"36":{},"174":{},"183":{},"188":{},"195":{},"197":{}},"component":{}}],["brand",{"_index":3645,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["braumat",{"_index":997,"title":{},"name":{},"text":{"10":{},"83":{},"145":{},"180":{}},"component":{}}],["break",{"_index":491,"title":{},"name":{},"text":{"5":{},"8":{},"103":{},"174":{},"178":{},"204":{}},"component":{}}],["brew",{"_index":1994,"title":{},"name":{},"text":{"31":{},"83":{},"145":{},"192":{}},"component":{}}],["bridg",{"_index":2241,"title":{},"name":{},"text":{"36":{},"93":{},"98":{},"163":{},"170":{},"197":{}},"component":{}}],["brief",{"_index":2131,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["bring",{"_index":1474,"title":{},"name":{},"text":{"15":{},"16":{},"21":{},"50":{},"65":{},"78":{},"93":{},"106":{},"107":{},"122":{},"128":{},"163":{},"182":{}},"component":{}}],["broad",{"_index":1129,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["broadcast",{"_index":12,"title":{"2-3":{},"172-3":{}},"name":{},"text":{"2":{},"66":{},"129":{},"172":{}},"component":{}}],["broker",{"_index":2770,"title":{"55-4":{},"157-4":{}},"name":{},"text":{"55":{},"157":{}},"component":{}}],["brought",{"_index":3690,"title":{},"name":{},"text":{"83":{},"93":{},"145":{},"163":{}},"component":{}}],["brownfield",{"_index":1121,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["brows",{"_index":1342,"title":{},"name":{},"text":{"15":{},"47":{},"48":{},"74":{},"78":{},"81":{},"85":{},"104":{},"105":{},"106":{},"120":{},"137":{},"141":{},"143":{},"205":{},"206":{}},"component":{}}],["browseapi",{"_index":2565,"title":{},"name":{},"text":{"47":{},"48":{},"120":{}},"component":{}}],["browser",{"_index":720,"title":{},"name":{},"text":{"8":{},"56":{},"159":{},"178":{}},"component":{}}],["brussel",{"_index":425,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["bu",{"_index":1172,"title":{"64":{},"65":{},"127":{},"128":{},"72-1":{},"135-1":{}},"name":{"64":{},"127":{}},"text":{"13":{},"64":{},"65":{},"66":{},"72":{},"75":{},"93":{},"94":{},"98":{},"112":{},"127":{},"128":{},"129":{},"135":{},"138":{},"163":{},"165":{},"170":{}},"component":{}}],["bubbl",{"_index":4296,"title":{},"name":{},"text":{"103":{}},"component":{}}],["buffer",{"_index":1328,"title":{},"name":{},"text":{"15":{},"55":{},"78":{},"82":{},"83":{},"98":{},"106":{},"141":{},"145":{},"157":{},"170":{}},"component":{}}],["bug",{"_index":440,"title":{"18":{},"19":{},"24":{},"108":{},"185":{},"5-5":{},"15-5":{},"15-9":{},"15-12":{},"15-16":{},"15-20":{},"15-24":{},"15-28":{},"15-32":{},"15-36":{},"15-41":{},"15-45":{},"106-5":{},"106-9":{},"106-12":{},"106-16":{},"106-20":{},"106-24":{},"106-28":{},"106-32":{},"106-36":{},"106-41":{},"106-45":{},"174-5":{}},"name":{},"text":{"5":{},"9":{},"15":{},"18":{},"24":{},"34":{},"36":{},"106":{},"174":{},"179":{},"185":{},"195":{},"197":{}},"component":{}}],["bugfix",{"_index":549,"title":{},"name":{},"text":{"5":{},"15":{},"34":{},"36":{},"106":{},"174":{},"195":{},"197":{}},"component":{}}],["build",{"_index":79,"title":{"3":{},"34":{},"173":{},"195":{},"201":{},"3-4":{},"3-5":{},"7-2":{},"22-1":{},"59-1":{},"63-1":{},"126-1":{},"162-1":{},"173-4":{},"173-5":{},"177-2":{},"183-1":{}},"name":{"3":{},"34":{},"173":{},"195":{}},"text":{"3":{},"4":{},"5":{},"7":{},"8":{},"9":{},"13":{},"15":{},"21":{},"22":{},"26":{},"27":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"39":{},"40":{},"46":{},"47":{},"48":{},"50":{},"56":{},"59":{},"63":{},"75":{},"82":{},"83":{},"87":{},"91":{},"92":{},"106":{},"112":{},"119":{},"120":{},"122":{},"126":{},"138":{},"145":{},"148":{},"152":{},"153":{},"159":{},"162":{},"173":{},"174":{},"175":{},"177":{},"178":{},"179":{},"182":{},"183":{},"187":{},"188":{},"189":{},"193":{},"195":{},"197":{},"198":{},"199":{}},"component":{}}],["build.gradl",{"_index":304,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["build/test",{"_index":1592,"title":{},"name":{},"text":{"16":{},"107":{}},"component":{}}],["builder",{"_index":2540,"title":{},"name":{},"text":{"46":{},"47":{},"48":{},"50":{},"72":{},"87":{},"91":{},"93":{},"119":{},"120":{},"122":{},"135":{},"148":{},"152":{},"163":{}},"component":{}}],["builder.add_item(\"random",{"_index":2628,"title":{},"name":{},"text":{"48":{}},"component":{}}],["builder.addchangeofstatetagaddress(\"valu",{"_index":2595,"title":{},"name":{},"text":{"47":{},"120":{}},"component":{}}],["builder.addcyclictagaddress(\"valu",{"_index":2596,"title":{},"name":{},"text":{"47":{},"120":{}},"component":{}}],["builder.addeventtagaddress(\"valu",{"_index":2598,"title":{},"name":{},"text":{"47":{},"120":{}},"component":{}}],["builder.additem(\"valu",{"_index":4421,"title":{},"name":{},"text":{"122":{}},"component":{}}],["builder.addsource({connectionnam",{"_index":4050,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["builder.addtagaddress(\"valu",{"_index":2559,"title":{},"name":{},"text":{"47":{},"50":{},"120":{}},"component":{}}],["builder.build",{"_index":2564,"title":{},"name":{},"text":{"47":{},"48":{},"50":{},"91":{},"120":{},"122":{},"152":{}},"component":{}}],["builder.job({jobnam",{"_index":4055,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["builds.apache.org/job/plc4x",{"_index":1798,"title":{},"name":{},"text":{"22":{},"27":{},"183":{},"188":{}},"component":{}}],["built",{"_index":92,"title":{},"name":{},"text":{"3":{},"9":{},"15":{},"21":{},"22":{},"41":{},"48":{},"49":{},"55":{},"59":{},"66":{},"71":{},"72":{},"106":{},"115":{},"124":{},"129":{},"134":{},"135":{},"157":{},"162":{},"173":{},"179":{},"182":{},"183":{}},"component":{}}],["bulk",{"_index":3338,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["bump",{"_index":1917,"title":{},"name":{},"text":{"29":{},"189":{}},"component":{}}],["bunch",{"_index":456,"title":{},"name":{},"text":{"5":{},"174":{}},"component":{}}],["bundl",{"_index":1488,"title":{},"name":{},"text":{"15":{},"31":{},"37":{},"46":{},"106":{},"119":{},"192":{},"193":{},"198":{}},"component":{}}],["buri",{"_index":3401,"title":{},"name":{},"text":{"78":{}},"component":{}}],["busi",{"_index":930,"title":{},"name":{},"text":{"9":{},"14":{},"111":{},"179":{}},"component":{}}],["busmonitor",{"_index":3205,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["button",{"_index":495,"title":{},"name":{},"text":{"5":{},"34":{},"36":{},"50":{},"56":{},"122":{},"159":{},"174":{},"195":{},"197":{}},"component":{}}],["byte",{"_index":1307,"title":{},"name":{},"text":{"15":{},"39":{},"50":{},"62":{},"66":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"98":{},"102":{},"103":{},"106":{},"122":{},"125":{},"129":{},"139":{},"140":{},"141":{},"143":{},"145":{},"146":{},"170":{},"199":{},"203":{},"204":{}},"component":{}}],["byte[data.s",{"_index":3873,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["bytebuf",{"_index":1519,"title":{},"name":{},"text":{"15":{},"83":{},"106":{},"145":{}},"component":{}}],["byteord",{"_index":4254,"title":{"103-23":{}},"name":{},"text":{"103":{}},"component":{}}],["c",{"_index":199,"title":{"44":{},"45":{},"64":{},"117":{},"118":{},"127":{}},"name":{"64":{},"127":{}},"text":{"3":{},"7":{},"9":{},"15":{},"16":{},"29":{},"30":{},"31":{},"32":{},"36":{},"59":{},"64":{},"74":{},"82":{},"83":{},"101":{},"103":{},"106":{},"107":{},"127":{},"137":{},"145":{},"162":{},"173":{},"177":{},"179":{},"189":{},"193":{},"197":{},"202":{},"204":{}},"component":{}}],["c,d,e",{"_index":3766,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["c,with",{"_index":239,"title":{},"name":{},"text":{"3":{},"36":{},"173":{},"197":{}},"component":{}}],["c.a",{"_index":986,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["c/c",{"_index":4435,"title":{},"name":{},"text":{"173":{}},"component":{}}],["c:\\windows\\system32\\packet.dl",{"_index":2029,"title":{},"name":{},"text":{"32":{}},"component":{}}],["c:\\windows\\system32\\wpcap.dl",{"_index":2030,"title":{},"name":{},"text":{"32":{}},"component":{}}],["c:\\windows\\syswow64\\packet.dl",{"_index":2032,"title":{},"name":{},"text":{"32":{}},"component":{}}],["c:\\windows\\syswow64\\wpcap.dl",{"_index":2033,"title":{},"name":{},"text":{"32":{}},"component":{}}],["ca",{"_index":2408,"title":{},"name":{},"text":{"43":{}},"component":{}}],["cach",{"_index":1590,"title":{"87":{},"148":{}},"name":{"87":{},"148":{}},"text":{"16":{},"87":{},"90":{},"107":{},"148":{}},"component":{}}],["cachedplcconnectionmanag",{"_index":3979,"title":{"87-1":{},"148-1":{}},"name":{},"text":{"87":{},"148":{}},"component":{}}],["cachedplcconnectionmanager.getbuild",{"_index":3990,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["cachedplcconnectionmanager.getbuilder().build",{"_index":3986,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["cachedurationmilli",{"_index":4024,"title":{},"name":{},"text":{"90":{}},"component":{}}],["calcit",{"_index":1585,"title":{"51":{},"154":{}},"name":{"51":{},"154":{}},"text":{"16":{},"36":{},"51":{},"107":{},"154":{},"197":{}},"component":{}}],["calcul",{"_index":1856,"title":{},"name":{},"text":{"26":{},"37":{},"71":{},"77":{},"102":{},"103":{},"134":{},"140":{},"187":{},"198":{},"203":{},"204":{}},"component":{}}],["calculator.html",{"_index":1848,"title":{},"name":{},"text":{"26":{}},"component":{}}],["call",{"_index":106,"title":{},"name":{},"text":{"3":{},"5":{},"8":{},"10":{},"15":{},"21":{},"26":{},"27":{},"34":{},"36":{},"37":{},"40":{},"41":{},"43":{},"46":{},"47":{},"48":{},"50":{},"54":{},"65":{},"78":{},"82":{},"83":{},"87":{},"88":{},"90":{},"91":{},"101":{},"103":{},"106":{},"115":{},"119":{},"120":{},"122":{},"128":{},"141":{},"145":{},"148":{},"150":{},"151":{},"152":{},"158":{},"173":{},"174":{},"178":{},"180":{},"182":{},"187":{},"188":{},"193":{},"195":{},"197":{},"198":{},"202":{},"204":{}},"component":{}}],["callback",{"_index":2541,"title":{},"name":{},"text":{"46":{},"47":{},"48":{},"50":{},"91":{},"119":{},"120":{},"122":{},"152":{}},"component":{}}],["calle",{"_index":3462,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["caller",{"_index":3457,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["came",{"_index":1603,"title":{},"name":{},"text":{"17":{},"21":{},"113":{},"182":{}},"component":{}}],["camel",{"_index":1057,"title":{"52":{},"155":{}},"name":{"52":{},"155":{}},"text":{"10":{},"16":{},"36":{},"52":{},"107":{},"180":{},"197":{}},"component":{}}],["can0",{"_index":4124,"title":{},"name":{},"text":{"98":{},"170":{}},"component":{}}],["canbrows",{"_index":1275,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["cancel",{"_index":2224,"title":{},"name":{},"text":{"36":{},"71":{},"134":{},"197":{}},"component":{}}],["candid",{"_index":2079,"title":{"36-13":{},"197-13":{}},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["candiscov",{"_index":1269,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["candriveradapt",{"_index":3008,"title":{},"name":{},"text":{"65":{},"128":{}},"component":{}}],["canframebuild",{"_index":3021,"title":{},"name":{},"text":{"65":{},"93":{},"128":{},"163":{}},"component":{}}],["canopen",{"_index":1173,"title":{"66":{},"129":{}},"name":{"66":{},"129":{}},"text":{"13":{},"36":{},"65":{},"66":{},"72":{},"74":{},"112":{},"128":{},"129":{},"135":{},"137":{},"197":{}},"component":{}}],["canopendriv",{"_index":3023,"title":{},"name":{},"text":{"65":{},"128":{}},"component":{}}],["canopenfram",{"_index":3020,"title":{},"name":{},"text":{"65":{},"128":{}},"component":{}}],["canread",{"_index":1272,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["cansubscrib",{"_index":1274,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["canva",{"_index":2879,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["canwrit",{"_index":1273,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["can’t",{"_index":171,"title":{},"name":{},"text":{"3":{},"36":{},"39":{},"47":{},"48":{},"50":{},"71":{},"72":{},"75":{},"87":{},"88":{},"103":{},"120":{},"122":{},"134":{},"135":{},"138":{},"148":{},"150":{},"173":{},"193":{},"197":{},"199":{},"204":{}},"component":{}}],["cap_net_raw,cap_net_admin=eip",{"_index":1945,"title":{},"name":{},"text":{"30":{},"81":{},"143":{},"191":{}},"component":{}}],["capabl",{"_index":1787,"title":{},"name":{},"text":{"21":{},"32":{},"83":{},"145":{},"182":{}},"component":{}}],["capac",{"_index":3757,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["captu",{"_index":2906,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["captur",{"_index":2324,"title":{"86":{},"147":{},"86-1":{},"86-2":{},"147-1":{},"147-2":{}},"name":{"86":{},"147":{}},"text":{"40":{},"43":{},"81":{},"86":{},"96":{},"143":{},"147":{},"167":{}},"component":{}}],["card",{"_index":3833,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["care",{"_index":3204,"title":{},"name":{},"text":{"75":{},"78":{},"82":{},"83":{},"90":{},"91":{},"138":{},"145":{},"152":{},"193":{}},"component":{}}],["carri",{"_index":3472,"title":{},"name":{},"text":{"82":{},"83":{},"88":{},"145":{},"150":{}},"component":{}}],["case",{"_index":4,"title":{"2-1":{},"172-1":{}},"name":{},"text":{"2":{},"3":{},"8":{},"9":{},"15":{},"17":{},"21":{},"29":{},"31":{},"34":{},"36":{},"39":{},"40":{},"41":{},"43":{},"46":{},"47":{},"48":{},"50":{},"55":{},"56":{},"62":{},"65":{},"66":{},"71":{},"72":{},"76":{},"78":{},"82":{},"83":{},"90":{},"91":{},"92":{},"101":{},"102":{},"103":{},"106":{},"113":{},"115":{},"119":{},"120":{},"122":{},"125":{},"128":{},"129":{},"134":{},"135":{},"139":{},"141":{},"145":{},"152":{},"153":{},"157":{},"159":{},"172":{},"173":{},"178":{},"179":{},"182":{},"189":{},"195":{},"197":{},"199":{},"202":{},"203":{},"204":{}},"component":{}}],["cask",{"_index":1999,"title":{},"name":{},"text":{"31":{},"192":{}},"component":{}}],["cassandra",{"_index":1071,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["cast",{"_index":1365,"title":{},"name":{},"text":{"15":{},"92":{},"106":{},"153":{}},"component":{}}],["cast(paramet",{"_index":4323,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["catalina",{"_index":1854,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["catch",{"_index":2571,"title":{},"name":{},"text":{"47":{},"91":{},"92":{},"101":{},"120":{},"152":{},"153":{},"202":{}},"component":{}}],["categori",{"_index":4118,"title":{},"name":{},"text":{"93":{},"163":{}},"component":{}}],["caus",{"_index":74,"title":{},"name":{},"text":{"2":{},"15":{},"21":{},"31":{},"34":{},"36":{},"46":{},"50":{},"62":{},"82":{},"83":{},"90":{},"103":{},"106":{},"119":{},"122":{},"125":{},"145":{},"172":{},"182":{},"192":{},"193":{},"195":{},"197":{},"204":{}},"component":{}}],["cbu",{"_index":3188,"title":{},"name":{},"text":{"74":{},"137":{}},"component":{}}],["cc",{"_index":2238,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["ccla",{"_index":826,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["cd",{"_index":2210,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["cd10",{"_index":772,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["cd20",{"_index":777,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["cd30",{"_index":783,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["cd40",{"_index":787,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["cd50",{"_index":793,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["cdi",{"_index":666,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["central",{"_index":850,"title":{},"name":{},"text":{"9":{},"16":{},"34":{},"36":{},"49":{},"56":{},"107":{},"124":{},"159":{},"179":{},"195":{},"197":{}},"component":{}}],["ceo",{"_index":984,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["certain",{"_index":1612,"title":{},"name":{},"text":{"17":{},"43":{},"66":{},"113":{},"129":{}},"component":{}}],["certainli",{"_index":1781,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["certif",{"_index":707,"title":{"43":{},"43-1":{},"78-5":{},"141-5":{}},"name":{"43":{}},"text":{"8":{},"15":{},"43":{},"59":{},"78":{},"106":{},"141":{},"162":{},"178":{}},"component":{}}],["certifi",{"_index":1575,"title":{},"name":{},"text":{"16":{},"107":{}},"component":{}}],["chain",{"_index":1512,"title":{},"name":{},"text":{"15":{},"43":{},"78":{},"106":{},"141":{}},"component":{}}],["chair",{"_index":556,"title":{"6-4":{},"176-4":{}},"name":{},"text":{"6":{},"176":{}},"component":{}}],["challeng",{"_index":1830,"title":{},"name":{},"text":{"26":{},"29":{},"32":{},"187":{},"189":{}},"component":{}}],["chanc",{"_index":2275,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["chang",{"_index":473,"title":{"15-4":{},"15-15":{},"15-19":{},"15-23":{},"15-27":{},"15-31":{},"15-35":{},"15-40":{},"15-44":{},"15-47":{},"78-11":{},"106-4":{},"106-15":{},"106-19":{},"106-23":{},"106-27":{},"106-31":{},"106-35":{},"106-40":{},"106-44":{},"106-47":{}},"name":{},"text":{"5":{},"6":{},"9":{},"14":{},"15":{},"17":{},"21":{},"27":{},"32":{},"34":{},"36":{},"37":{},"43":{},"46":{},"47":{},"55":{},"56":{},"59":{},"63":{},"66":{},"71":{},"74":{},"75":{},"78":{},"81":{},"83":{},"95":{},"103":{},"104":{},"106":{},"111":{},"113":{},"119":{},"120":{},"126":{},"129":{},"134":{},"137":{},"138":{},"143":{},"145":{},"157":{},"159":{},"162":{},"166":{},"173":{},"174":{},"176":{},"179":{},"182":{},"188":{},"193":{},"195":{},"197":{},"198":{},"206":{}},"component":{}}],["changed)i",{"_index":4383,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["changer",{"_index":3922,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["changes?truefalseconfig",{"_index":4380,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["changes?trueupd",{"_index":4382,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["channel",{"_index":878,"title":{},"name":{},"text":{"9":{},"46":{},"78":{},"82":{},"83":{},"119":{},"141":{},"145":{},"179":{}},"component":{}}],["chapter",{"_index":133,"title":{},"name":{},"text":{"3":{},"21":{},"34":{},"37":{},"46":{},"87":{},"90":{},"103":{},"119":{},"148":{},"173":{},"182":{},"193":{},"195":{},"198":{},"204":{}},"component":{}}],["char",{"_index":1393,"title":{},"name":{},"text":{"15":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"106":{},"140":{},"141":{},"143":{},"145":{},"146":{}},"component":{}}],["charact",{"_index":1386,"title":{},"name":{},"text":{"15":{},"41":{},"75":{},"82":{},"83":{},"84":{},"106":{},"115":{},"138":{},"145":{},"146":{}},"component":{}}],["characterist",{"_index":3903,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["charg",{"_index":774,"title":{},"name":{},"text":{"9":{},"14":{},"83":{},"111":{},"145":{},"179":{}},"component":{}}],["chart",{"_index":1858,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["cheap",{"_index":1644,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["cheatsheet",{"_index":1877,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["check",{"_index":88,"title":{"3-9":{},"173-10":{}},"name":{},"text":{"3":{},"5":{},"7":{},"8":{},"14":{},"15":{},"27":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"41":{},"46":{},"47":{},"48":{},"50":{},"56":{},"59":{},"64":{},"66":{},"77":{},"78":{},"83":{},"87":{},"88":{},"91":{},"92":{},"103":{},"106":{},"111":{},"115":{},"119":{},"120":{},"122":{},"127":{},"129":{},"140":{},"141":{},"145":{},"148":{},"150":{},"152":{},"153":{},"159":{},"162":{},"173":{},"174":{},"177":{},"178":{},"188":{},"191":{},"192":{},"193":{},"195":{},"197":{},"198":{}},"component":{}}],["checkbox",{"_index":2895,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["checklist",{"_index":2282,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["checkout",{"_index":2076,"title":{},"name":{},"text":{"34":{},"36":{},"46":{},"119":{},"193":{},"195":{},"197":{}},"component":{}}],["checksum",{"_index":264,"title":{"103-6":{},"204-5":{}},"name":{},"text":{"3":{},"102":{},"103":{},"173":{},"203":{},"204":{}},"component":{}}],["checksumrawdata",{"_index":4299,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["cherri",{"_index":2072,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["child",{"_index":3957,"title":{},"name":{},"text":{"85":{}},"component":{}}],["chip",{"_index":1192,"title":{},"name":{},"text":{"13":{},"30":{},"112":{}},"component":{}}],["chmod",{"_index":1956,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["choco",{"_index":2018,"title":{},"name":{},"text":{"32":{},"193":{}},"component":{}}],["chocolatey",{"_index":2016,"title":{},"name":{},"text":{"32":{}},"component":{}}],["choic",{"_index":515,"title":{},"name":{},"text":{"5":{},"42":{},"83":{},"116":{},"145":{},"174":{}},"component":{}}],["choos",{"_index":1649,"title":{},"name":{},"text":{"17":{},"34":{},"36":{},"113":{},"174":{},"195":{},"197":{}},"component":{}}],["chri",{"_index":2142,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["christof",{"_index":181,"title":{},"name":{},"text":{"3":{},"10":{},"14":{},"111":{},"173":{},"180":{}},"component":{}}],["christofer.dutz@accso.d",{"_index":1215,"title":{},"name":{},"text":{"14":{}},"component":{}}],["christofer.dutz@timecho.com",{"_index":4417,"title":{},"name":{},"text":{"111":{}},"component":{}}],["chronolog",{"_index":3402,"title":{},"name":{},"text":{"78":{}},"component":{}}],["chunk",{"_index":3334,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["ci",{"_index":294,"title":{},"name":{"22":{},"183":{}},"text":{"3":{},"22":{},"173":{},"183":{}},"component":{}}],["cigar",{"_index":1088,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["cip",{"_index":3219,"title":{},"name":{},"text":{"76":{},"105":{},"139":{},"205":{}},"component":{}}],["cipreadrequest",{"_index":4401,"title":{},"name":{},"text":{"105":{},"205":{}},"component":{}}],["ciprrdata",{"_index":4400,"title":{},"name":{},"text":{"105":{},"205":{}},"component":{}}],["cipwriterequest",{"_index":4404,"title":{},"name":{},"text":{"105":{},"205":{}},"component":{}}],["circular",{"_index":3758,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["civiet",{"_index":1195,"title":{},"name":{},"text":{"13":{}},"component":{}}],["clang",{"_index":4455,"title":{"193-8":{}},"name":{},"text":{"193":{}},"component":{}}],["clariti",{"_index":4078,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["class",{"_index":1366,"title":{},"name":{},"text":{"15":{},"21":{},"37":{},"39":{},"40":{},"81":{},"83":{},"90":{},"91":{},"92":{},"101":{},"103":{},"106":{},"143":{},"145":{},"151":{},"152":{},"153":{},"182":{},"198":{},"199":{},"202":{},"204":{}},"component":{}}],["class=\"bare\">https://lists.apache.org/list.html?dev@plc4x.apache.org",{"_index":888,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["classic",{"_index":3412,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["classifi",{"_index":3673,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["classload",{"_index":1785,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["classpath",{"_index":1790,"title":{},"name":{},"text":{"21":{},"47":{},"50":{},"82":{},"83":{},"120":{},"122":{},"145":{},"182":{}},"component":{}}],["clean",{"_index":748,"title":{"34-10":{},"36-14":{},"195-10":{},"197-14":{}},"name":{},"text":{"8":{},"15":{},"31":{},"34":{},"36":{},"106":{},"178":{},"195":{},"197":{}},"component":{}}],["cleaner",{"_index":1318,"title":{},"name":{},"text":{"15":{},"21":{},"106":{},"182":{}},"component":{}}],["cleanup",{"_index":1345,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["cleanup.policy=compact",{"_index":2821,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["clear",{"_index":3937,"title":{},"name":{},"text":{"84":{},"146":{}},"component":{}}],["clearli",{"_index":806,"title":{},"name":{},"text":{"9":{},"83":{},"145":{},"179":{},"183":{}},"component":{}}],["cli",{"_index":699,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["click",{"_index":496,"title":{},"name":{},"text":{"5":{},"26":{},"34":{},"36":{},"43":{},"50":{},"56":{},"122":{},"159":{},"174":{},"187":{},"195":{},"197":{}},"component":{}}],["client",{"_index":1845,"title":{"43":{},"43-2":{}},"name":{"43":{}},"text":{"26":{},"43":{},"59":{},"75":{},"78":{},"82":{},"83":{},"87":{},"88":{},"138":{},"141":{},"145":{},"148":{},"150":{},"162":{},"187":{}},"component":{}}],["client’",{"_index":1849,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["clipsal",{"_index":3002,"title":{},"name":{},"text":{"64":{},"127":{}},"component":{}}],["clone",{"_index":485,"title":{},"name":{},"text":{"5":{},"83":{},"145":{},"174":{}},"component":{}}],["close",{"_index":1652,"title":{},"name":{},"text":{"17":{},"34":{},"36":{},"43":{},"46":{},"78":{},"82":{},"83":{},"84":{},"87":{},"88":{},"103":{},"113":{},"119":{},"141":{},"145":{},"146":{},"148":{},"150":{},"195":{},"197":{},"204":{}},"component":{}}],["cloud",{"_index":1083,"title":{},"name":{},"text":{"10":{},"12":{},"13":{},"17":{},"78":{},"110":{},"112":{},"113":{},"141":{},"180":{}},"component":{}}],["cluster",{"_index":1616,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["cmake",{"_index":2188,"title":{},"name":{},"text":{"36":{},"189":{},"197":{}},"component":{}}],["cmd",{"_index":4210,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["cn",{"_index":2403,"title":{},"name":{},"text":{"43":{}},"component":{}}],["co",{"_index":427,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["co10",{"_index":891,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["co20",{"_index":896,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["co30",{"_index":905,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["co40",{"_index":910,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["co50",{"_index":915,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["co60",{"_index":919,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["co70",{"_index":922,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["cockpit",{"_index":1146,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["cocoon",{"_index":1015,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["code",{"_index":229,"title":{"21":{},"25":{},"182":{},"186":{},"34-1":{},"50-3":{},"122-3":{},"195-1":{}},"name":{},"text":{"3":{},"5":{},"6":{},"9":{},"10":{},"15":{},"21":{},"25":{},"34":{},"36":{},"37":{},"39":{},"40":{},"41":{},"46":{},"47":{},"48":{},"50":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"87":{},"88":{},"91":{},"92":{},"93":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"106":{},"115":{},"119":{},"120":{},"122":{},"123":{},"125":{},"126":{},"127":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"148":{},"150":{},"151":{},"152":{},"153":{},"163":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"173":{},"174":{},"176":{},"179":{},"180":{},"182":{},"186":{},"193":{},"195":{},"197":{},"198":{},"199":{},"202":{},"203":{},"204":{}},"component":{}}],["code:(transport",{"_index":1482,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["code:)?//{transport",{"_index":1483,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["codebas",{"_index":1469,"title":{"36-3":{},"197-3":{}},"name":{},"text":{"15":{},"34":{},"92":{},"106":{},"153":{},"195":{}},"component":{}}],["codecentr",{"_index":1107,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["code}://{transport",{"_index":2357,"title":{},"name":{},"text":{"41":{},"115":{}},"component":{}}],["code}:{transport",{"_index":2356,"title":{},"name":{},"text":{"41":{},"115":{}},"component":{}}],["code}[{count",{"_index":3504,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["code}{start",{"_index":3501,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["coffe",{"_index":3968,"title":{},"name":{},"text":{"86":{},"147":{}},"component":{}}],["coil",{"_index":2681,"title":{},"name":{},"text":{"50":{},"77":{},"122":{},"140":{}},"component":{}}],["coil:1",{"_index":2703,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["coil:1{unit",{"_index":2372,"title":{},"name":{},"text":{"41":{}},"component":{}}],["coil:3[4",{"_index":2704,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["coil:{start",{"_index":2690,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["cold",{"_index":3967,"title":{},"name":{},"text":{"86":{},"147":{}},"component":{}}],["collabor",{"_index":1005,"title":{},"name":{},"text":{"10":{},"83":{},"145":{},"180":{}},"component":{}}],["collect",{"_index":1114,"title":{},"name":{},"text":{"12":{},"34":{},"54":{},"75":{},"83":{},"91":{},"101":{},"110":{},"138":{},"145":{},"152":{},"158":{},"195":{},"202":{}},"component":{}}],["collections.emptylist",{"_index":4162,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["collections.singleton(\"packag",{"_index":4158,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["collections.singletonlist",{"_index":4170,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["cologn",{"_index":349,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["column",{"_index":3513,"title":{},"name":{},"text":{"82":{},"83":{},"145":{},"193":{}},"component":{}}],["com",{"_index":3414,"title":{},"name":{},"text":{"78":{},"97":{},"141":{},"168":{}},"component":{}}],["com.google.googlejavaformat.java.formatt",{"_index":4142,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["com.google.googlejavaformat.java.formatterexcept",{"_index":4143,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["com.sun.jersey.server.impl.application.webapplicationimpl",{"_index":724,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["combin",{"_index":3005,"title":{},"name":{},"text":{"65":{},"66":{},"70":{},"103":{},"128":{},"129":{},"133":{},"204":{}},"component":{}}],["come",{"_index":740,"title":{},"name":{},"text":{"8":{},"17":{},"21":{},"29":{},"31":{},"34":{},"36":{},"46":{},"47":{},"48":{},"49":{},"66":{},"82":{},"83":{},"86":{},"87":{},"88":{},"91":{},"103":{},"113":{},"119":{},"120":{},"124":{},"129":{},"145":{},"147":{},"148":{},"150":{},"152":{},"178":{},"182":{},"189":{},"192":{},"193":{},"195":{},"197":{},"204":{}},"component":{}}],["comfort",{"_index":745,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["comma",{"_index":4309,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["command",{"_index":143,"title":{},"name":{},"text":{"3":{},"5":{},"8":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"46":{},"50":{},"54":{},"55":{},"62":{},"102":{},"119":{},"122":{},"125":{},"157":{},"158":{},"173":{},"174":{},"178":{},"191":{},"192":{},"195":{},"197":{},"198":{},"203":{}},"component":{}}],["commandcod",{"_index":4239,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["commandlin",{"_index":513,"title":{},"name":{},"text":{"5":{},"8":{},"31":{},"174":{},"178":{}},"component":{}}],["comment",{"_index":532,"title":{},"name":{},"text":{"5":{},"9":{},"37":{},"55":{},"56":{},"157":{},"159":{},"174":{},"179":{},"198":{}},"component":{}}],["commerci",{"_index":1197,"title":{"14":{},"111":{}},"name":{"14":{},"111":{}},"text":{"14":{},"16":{},"17":{},"78":{},"83":{},"107":{},"111":{},"113":{},"141":{},"145":{}},"component":{}}],["commit",{"_index":436,"title":{"5-2":{},"174-2":{}},"name":{},"text":{"5":{},"6":{},"9":{},"34":{},"36":{},"46":{},"119":{},"174":{},"176":{},"179":{},"193":{},"195":{},"197":{}},"component":{}}],["committ",{"_index":408,"title":{},"name":{},"text":{"4":{},"6":{},"9":{},"10":{},"11":{},"26":{},"36":{},"174":{},"175":{},"176":{},"179":{},"180":{},"181":{},"197":{}},"component":{}}],["committe",{"_index":555,"title":{"6-3":{},"176-3":{}},"name":{},"text":{"9":{},"10":{},"179":{},"180":{}},"component":{}}],["commod",{"_index":1645,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["common",{"_index":667,"title":{},"name":{},"text":{"8":{},"15":{},"16":{},"41":{},"43":{},"76":{},"78":{},"103":{},"106":{},"107":{},"139":{},"141":{},"178":{},"204":{}},"component":{}}],["commun",{"_index":36,"title":{"17-7":{},"78-4":{},"83-14":{},"113-7":{},"141-4":{},"145-14":{}},"name":{},"text":{"2":{},"3":{},"5":{},"6":{},"9":{},"10":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"21":{},"36":{},"40":{},"41":{},"43":{},"47":{},"48":{},"50":{},"59":{},"62":{},"63":{},"66":{},"71":{},"72":{},"75":{},"76":{},"78":{},"81":{},"82":{},"83":{},"88":{},"90":{},"96":{},"97":{},"99":{},"100":{},"106":{},"107":{},"110":{},"111":{},"112":{},"113":{},"115":{},"120":{},"122":{},"125":{},"126":{},"129":{},"134":{},"135":{},"138":{},"139":{},"141":{},"143":{},"145":{},"150":{},"151":{},"162":{},"167":{},"168":{},"169":{},"171":{},"172":{},"173":{},"174":{},"176":{},"179":{},"180":{},"182":{},"193":{},"197":{}},"component":{}}],["communicate_with_plc",{"_index":2622,"title":{},"name":{},"text":{"48":{}},"component":{}}],["communicationpath",{"_index":3122,"title":{},"name":{},"text":{"70":{},"76":{},"133":{},"139":{}},"component":{}}],["compani",{"_index":827,"title":{"12":{},"110":{}},"name":{},"text":{"9":{},"12":{},"14":{},"17":{},"55":{},"83":{},"110":{},"111":{},"113":{},"145":{},"157":{},"179":{}},"component":{}}],["compar",{"_index":2279,"title":{},"name":{},"text":{"37":{},"39":{},"103":{},"198":{},"199":{},"204":{}},"component":{}}],["comparison",{"_index":3549,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["compat",{"_index":882,"title":{"55-12":{},"78-14":{},"93-2":{},"157-12":{},"163-2":{}},"name":{},"text":{"9":{},"12":{},"15":{},"50":{},"71":{},"78":{},"83":{},"106":{},"110":{},"122":{},"134":{},"145":{},"179":{}},"component":{}}],["compatibl",{"_index":2867,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["compil",{"_index":89,"title":{"3-10":{},"173-11":{}},"name":{},"text":{"3":{},"30":{},"31":{},"32":{},"34":{},"36":{},"47":{},"50":{},"120":{},"122":{},"173":{},"193":{},"195":{},"197":{}},"component":{}}],["complain",{"_index":1775,"title":{},"name":{},"text":{"21":{},"37":{},"182":{},"198":{}},"component":{}}],["complaint",{"_index":1924,"title":{},"name":{},"text":{"29":{},"189":{}},"component":{}}],["complement",{"_index":4338,"title":{},"name":{},"text":{"103":{}},"component":{}}],["complet",{"_index":858,"title":{},"name":{},"text":{"9":{},"26":{},"43":{},"46":{},"78":{},"82":{},"83":{},"119":{},"141":{},"145":{},"179":{},"187":{}},"component":{}}],["completablefutur",{"_index":2567,"title":{},"name":{},"text":{"47":{},"50":{},"120":{},"122":{}},"component":{}}],["complex",{"_index":1495,"title":{"103-2":{},"204-2":{}},"name":{},"text":{"15":{},"78":{},"82":{},"83":{},"92":{},"101":{},"103":{},"106":{},"141":{},"145":{},"153":{},"182":{},"202":{},"204":{}},"component":{}}],["complextypedefinit",{"_index":4136,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["complextypedefinition’",{"_index":4443,"title":{},"name":{},"text":{"182":{}},"component":{}}],["compli",{"_index":577,"title":{},"name":{},"text":{"6":{},"176":{}},"component":{}}],["complianc",{"_index":4191,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["complic",{"_index":1697,"title":{},"name":{},"text":{"21":{},"27":{},"86":{},"101":{},"147":{},"182":{},"188":{},"202":{}},"component":{}}],["compon",{"_index":642,"title":{},"name":{},"text":{"8":{},"15":{},"52":{},"62":{},"83":{},"106":{},"125":{},"145":{},"178":{}},"component":{}}],["comprehens",{"_index":3418,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["comput",{"_index":224,"title":{"29":{},"189":{}},"name":{},"text":{"3":{},"4":{},"5":{},"7":{},"13":{},"17":{},"26":{},"29":{},"50":{},"83":{},"88":{},"112":{},"113":{},"122":{},"145":{},"150":{},"173":{},"174":{},"175":{},"177":{},"187":{}},"component":{}}],["con",{"_index":1169,"title":{},"name":{},"text":{"13":{},"112":{}},"component":{}}],["concentr",{"_index":1577,"title":{},"name":{},"text":{"16":{},"107":{}},"component":{}}],["concept",{"_index":272,"title":{"41":{},"87":{},"115":{},"148":{},"54-1":{},"158-1":{}},"name":{"41":{},"115":{}},"text":{"3":{},"17":{},"41":{},"56":{},"62":{},"113":{},"115":{},"125":{},"159":{},"173":{}},"component":{}}],["concern",{"_index":1629,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["conclus",{"_index":4087,"title":{"92-4":{},"153-4":{}},"name":{},"text":{},"component":{}}],["concret",{"_index":1681,"title":{},"name":{},"text":{"21":{},"103":{},"182":{},"204":{}},"component":{}}],["concurr",{"_index":1102,"title":{},"name":{},"text":{"11":{},"87":{},"88":{},"148":{},"150":{},"181":{}},"component":{}}],["condit",{"_index":1142,"title":{},"name":{},"text":{"12":{},"78":{},"101":{},"103":{},"110":{},"202":{},"204":{}},"component":{}}],["conduct",{"_index":570,"title":{},"name":{},"text":{"6":{},"78":{},"141":{},"176":{}},"component":{}}],["conf",{"_index":4084,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["confer",{"_index":318,"title":{"4":{},"175":{}},"name":{"4":{},"175":{}},"text":{"4":{},"5":{},"174":{},"175":{}},"component":{}}],["config",{"_index":1280,"title":{},"name":{},"text":{"15":{},"21":{},"41":{},"50":{},"55":{},"59":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"91":{},"101":{},"106":{},"115":{},"122":{},"123":{},"125":{},"126":{},"127":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"152":{},"157":{},"162":{},"182":{},"202":{}},"component":{}}],["config.yml",{"_index":2916,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["config/connect",{"_index":2787,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["config/plc4x",{"_index":2804,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["config/server.properti",{"_index":2798,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["config/sink.properti",{"_index":2825,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["config/zookeeper.properti",{"_index":2796,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["configur",{"_index":802,"title":{"21-2":{},"59-2":{},"87-1":{},"91-4":{},"91-6":{},"148-1":{},"152-4":{},"152-6":{},"162-2":{},"182-2":{}},"name":{},"text":{"9":{},"15":{},"17":{},"21":{},"22":{},"27":{},"31":{},"32":{},"41":{},"43":{},"46":{},"54":{},"55":{},"56":{},"59":{},"62":{},"63":{},"70":{},"71":{},"75":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"87":{},"91":{},"92":{},"101":{},"106":{},"113":{},"115":{},"119":{},"125":{},"126":{},"133":{},"134":{},"138":{},"139":{},"141":{},"143":{},"145":{},"148":{},"152":{},"153":{},"157":{},"158":{},"159":{},"162":{},"179":{},"182":{},"188":{},"192":{},"202":{}},"component":{}}],["configuraci%c3%b3n",{"_index":3593,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["configure/compile/transf",{"_index":3631,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["config}(?{param",{"_index":1484,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["config}?{opt",{"_index":2358,"title":{},"name":{},"text":{"41":{},"115":{}},"component":{}}],["config}?{paramet",{"_index":2694,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["confirm",{"_index":2401,"title":{},"name":{},"text":{"43":{},"59":{},"78":{},"83":{},"145":{},"162":{}},"component":{}}],["conflict",{"_index":560,"title":{},"name":{},"text":{"6":{},"34":{},"36":{},"176":{},"195":{},"197":{}},"component":{}}],["confluenc",{"_index":1907,"title":{},"name":{},"text":{"28":{},"190":{}},"component":{}}],["congrat",{"_index":2160,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["conjunct",{"_index":3935,"title":{},"name":{},"text":{"84":{},"146":{}},"component":{}}],["conn",{"_index":4114,"title":{},"name":{},"text":{"92":{},"153":{}},"component":{}}],["connect",{"_index":16,"title":{"2":{},"87":{},"88":{},"148":{},"150":{},"172":{},"2-4":{},"41-1":{},"41-2":{},"46-3":{},"50-4":{},"55-6":{},"55-7":{},"55-9":{},"55-10":{},"61-1":{},"62-2":{},"63-2":{},"64-1":{},"66-2":{},"67-1":{},"70-1":{},"71-1":{},"72-2":{},"73-1":{},"75-1":{},"76-1":{},"76-4":{},"77-1":{},"77-12":{},"78-1":{},"78-3":{},"79-1":{},"80-1":{},"80-3":{},"80-5":{},"81-1":{},"81-3":{},"82-1":{},"82-3":{},"83-4":{},"83-6":{},"84-1":{},"84-3":{},"85-1":{},"85-4":{},"90-4":{},"115-1":{},"115-2":{},"119-3":{},"122-4":{},"123-1":{},"125-2":{},"126-2":{},"127-1":{},"129-2":{},"130-1":{},"133-1":{},"134-1":{},"135-2":{},"136-1":{},"138-1":{},"139-1":{},"139-4":{},"140-1":{},"140-12":{},"141-1":{},"141-3":{},"142-1":{},"143-1":{},"143-3":{},"144-1":{},"144-3":{},"144-5":{},"145-4":{},"145-6":{},"146-1":{},"146-3":{},"157-6":{},"157-7":{},"157-9":{},"157-10":{},"172-4":{}},"name":{"87":{},"88":{},"148":{},"150":{}},"text":{"2":{},"3":{},"8":{},"10":{},"12":{},"15":{},"16":{},"36":{},"41":{},"46":{},"47":{},"48":{},"50":{},"54":{},"55":{},"56":{},"59":{},"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"88":{},"90":{},"91":{},"92":{},"106":{},"107":{},"110":{},"115":{},"119":{},"120":{},"122":{},"123":{},"125":{},"126":{},"127":{},"133":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"147":{},"148":{},"150":{},"151":{},"152":{},"153":{},"157":{},"158":{},"159":{},"162":{},"172":{},"173":{},"178":{},"180":{},"197":{}},"component":{}}],["connectconnectedbrowsereadwritesubscribeunsubscribedisconnectinitializingsend",{"_index":4389,"title":{},"name":{},"text":{"105":{},"205":{}},"component":{}}],["connectconnectedbrowsereadwritesubscribeunsubscribeinitializingsend",{"_index":4340,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["connectedentity.updateallthetag",{"_index":4041,"title":{},"name":{},"text":{"90":{}},"component":{}}],["connection'",{"_index":2623,"title":{},"name":{},"text":{"48":{}},"component":{}}],["connection.clos",{"_index":2446,"title":{},"name":{},"text":{"46":{},"83":{},"119":{},"145":{}},"component":{}}],["connection.execute(request",{"_index":2633,"title":{},"name":{},"text":{"48":{}},"component":{}}],["connection.getmetadata().canread",{"_index":2462,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["connection.getmetadata().cansubscrib",{"_index":2498,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["connection.is_read_support",{"_index":2637,"title":{},"name":{},"text":{"48":{}},"component":{}}],["connection.p",{"_index":2455,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["connection.read_request_build",{"_index":2626,"title":{},"name":{},"text":{"48":{}},"component":{}}],["connection.readrequestbuild",{"_index":2467,"title":{},"name":{},"text":{"46":{},"82":{},"83":{},"119":{},"145":{}},"component":{}}],["connection.setdevice(mockdevic",{"_index":4100,"title":{},"name":{},"text":{"92":{},"153":{}},"component":{}}],["connection.subscriptionrequestbuild",{"_index":2506,"title":{},"name":{},"text":{"46":{},"83":{},"119":{},"145":{}},"component":{}}],["connection.write_request_build",{"_index":2667,"title":{},"name":{},"text":{"48":{}},"component":{}}],["connection_str",{"_index":2618,"title":{},"name":{},"text":{"48":{}},"component":{}}],["connectioncach",{"_index":3989,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["connectionmanag",{"_index":3985,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["connectionmanager.getconnection(connectionstr",{"_index":3991,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["connectionmanagerclos",{"_index":4405,"title":{},"name":{},"text":{"105":{},"205":{}},"component":{}}],["connectionnam",{"_index":4052,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["connectionrequestchanel",{"_index":2434,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["connectionresult",{"_index":2438,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["connectionresult.connect",{"_index":2444,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["connectionresult.err",{"_index":2439,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["connectionresult.err.error",{"_index":2443,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["connectionstr",{"_index":2548,"title":{},"name":{},"text":{"47":{},"50":{},"59":{},"91":{},"120":{},"122":{},"152":{},"162":{}},"component":{}}],["connector",{"_index":1382,"title":{"55-1":{},"55-5":{},"55-8":{},"157-1":{},"157-5":{},"157-8":{}},"name":{},"text":{"15":{},"55":{},"106":{},"157":{}},"component":{}}],["connector.class\":\"org.apache.plc4x.kafka.plc4xsinkconnector",{"_index":2855,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["connector.class\":\"org.apache.plc4x.kafka.plc4xsourceconnector",{"_index":2809,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["connectorio",{"_index":1046,"title":{},"name":{},"text":{"10":{},"12":{},"14":{},"110":{},"111":{},"180":{}},"component":{}}],["consensu",{"_index":583,"title":{},"name":{},"text":{"6":{},"9":{},"176":{},"179":{}},"component":{}}],["consid",{"_index":1466,"title":{},"name":{},"text":{"15":{},"46":{},"47":{},"54":{},"86":{},"103":{},"106":{},"119":{},"120":{},"147":{},"158":{},"173":{},"174":{},"204":{}},"component":{}}],["consider",{"_index":3787,"title":{},"name":{},"text":{"83":{},"87":{},"145":{},"148":{}},"component":{}}],["consist",{"_index":830,"title":{},"name":{},"text":{"9":{},"34":{},"36":{},"66":{},"76":{},"77":{},"129":{},"139":{},"140":{},"179":{},"193":{},"195":{},"197":{}},"component":{}}],["consol",{"_index":696,"title":{},"name":{},"text":{"8":{},"32":{},"46":{},"50":{},"55":{},"83":{},"92":{},"119":{},"122":{},"145":{},"151":{},"153":{},"157":{},"178":{},"193":{}},"component":{}}],["const",{"_index":4225,"title":{"103-7":{},"204-6":{}},"name":{},"text":{"102":{},"103":{},"203":{},"204":{}},"component":{}}],["constant",{"_index":3752,"title":{},"name":{},"text":{"83":{},"103":{},"145":{},"204":{}},"component":{}}],["constraint",{"_index":4447,"title":{},"name":{},"text":{"189":{}},"component":{}}],["construct",{"_index":906,"title":{},"name":{},"text":{"9":{},"15":{},"21":{},"39":{},"65":{},"66":{},"72":{},"82":{},"83":{},"93":{},"106":{},"128":{},"129":{},"135":{},"145":{},"163":{},"179":{},"182":{},"199":{}},"component":{}}],["constructor",{"_index":3887,"title":{},"name":{},"text":{"83":{},"90":{},"145":{}},"component":{}}],["consult",{"_index":1006,"title":{},"name":{},"text":{"10":{},"12":{},"14":{},"41":{},"56":{},"83":{},"110":{},"111":{},"115":{},"145":{},"159":{},"180":{}},"component":{}}],["consum",{"_index":2777,"title":{},"name":{},"text":{"55":{},"83":{},"103":{},"145":{},"157":{},"204":{}},"component":{}}],["consumer.sh",{"_index":2802,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["contact",{"_index":1207,"title":{},"name":{},"text":{"14":{},"111":{}},"component":{}}],["contain",{"_index":248,"title":{},"name":{},"text":{"3":{},"5":{},"7":{},"8":{},"9":{},"15":{},"21":{},"32":{},"34":{},"36":{},"37":{},"39":{},"41":{},"46":{},"47":{},"48":{},"50":{},"55":{},"59":{},"62":{},"63":{},"66":{},"72":{},"74":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"87":{},"95":{},"101":{},"102":{},"103":{},"106":{},"119":{},"120":{},"122":{},"125":{},"126":{},"129":{},"135":{},"137":{},"143":{},"145":{},"146":{},"148":{},"157":{},"162":{},"166":{},"173":{},"174":{},"177":{},"178":{},"179":{},"182":{},"193":{},"195":{},"197":{},"198":{},"199":{},"202":{},"203":{},"204":{}},"component":{}}],["content",{"_index":535,"title":{"27-1":{},"188-1":{}},"name":{},"text":{"5":{},"7":{},"8":{},"15":{},"26":{},"27":{},"36":{},"37":{},"46":{},"55":{},"78":{},"103":{},"106":{},"119":{},"157":{},"174":{},"177":{},"178":{},"187":{},"188":{},"197":{},"198":{},"204":{}},"component":{}}],["context",{"_index":1066,"title":{},"name":{},"text":{"10":{},"101":{},"180":{},"202":{}},"component":{}}],["continu",{"_index":505,"title":{"22":{},"183":{}},"name":{},"text":{"5":{},"21":{},"34":{},"36":{},"40":{},"46":{},"48":{},"50":{},"55":{},"83":{},"87":{},"91":{},"103":{},"119":{},"122":{},"145":{},"148":{},"152":{},"157":{},"174":{},"195":{},"197":{},"204":{}},"component":{}}],["contradict",{"_index":945,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["contrast",{"_index":661,"title":{},"name":{},"text":{"8":{},"34":{},"36":{},"46":{},"87":{},"88":{},"103":{},"119":{},"148":{},"150":{},"178":{},"195":{},"197":{},"204":{}},"component":{}}],["contribut",{"_index":435,"title":{"5":{},"174":{},"5-1":{},"7-3":{},"174-1":{},"177-3":{}},"name":{"5":{},"174":{}},"text":{"5":{},"7":{},"9":{},"10":{},"12":{},"110":{},"174":{},"177":{},"179":{},"180":{}},"component":{}}],["contributor",{"_index":816,"title":{},"name":{},"text":{"9":{},"101":{},"179":{},"202":{}},"component":{}}],["control",{"_index":789,"title":{"63-1":{},"126-1":{}},"name":{},"text":{"9":{},"10":{},"12":{},"16":{},"17":{},"21":{},"27":{},"36":{},"39":{},"41":{},"43":{},"63":{},"76":{},"78":{},"81":{},"82":{},"83":{},"86":{},"92":{},"107":{},"110":{},"113":{},"115":{},"126":{},"139":{},"141":{},"143":{},"145":{},"147":{},"153":{},"179":{},"180":{},"188":{},"197":{},"199":{}},"component":{}}],["controlador)?dti=0&lc=",{"_index":3584,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["conveni",{"_index":111,"title":{},"name":{},"text":{"3":{},"9":{},"36":{},"49":{},"50":{},"122":{},"124":{},"173":{},"179":{},"197":{}},"component":{}}],["convent",{"_index":459,"title":{},"name":{},"text":{"5":{},"101":{},"174":{},"202":{}},"component":{}}],["convers",{"_index":1494,"title":{},"name":{},"text":{"15":{},"50":{},"66":{},"106":{},"122":{},"129":{},"193":{}},"component":{}}],["convert",{"_index":1651,"title":{},"name":{},"text":{"17":{},"82":{},"83":{},"113":{}},"component":{}}],["convertidor",{"_index":3570,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["conveyorentry\":fals",{"_index":2850,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["conveyorright\":true,\"load\":fals",{"_index":2845,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["cool",{"_index":471,"title":{},"name":{},"text":{"5":{},"174":{}},"component":{}}],["coordin",{"_index":4127,"title":{},"name":{},"text":{"98":{},"170":{}},"component":{}}],["cope",{"_index":3978,"title":{},"name":{},"text":{"86":{},"147":{}},"component":{}}],["copenhagen",{"_index":1064,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["copi",{"_index":482,"title":{},"name":{},"text":{"5":{},"26":{},"27":{},"34":{},"36":{},"40":{},"55":{},"56":{},"82":{},"83":{},"86":{},"101":{},"145":{},"147":{},"157":{},"159":{},"174":{},"187":{},"188":{},"195":{},"197":{},"202":{}},"component":{}}],["copyright",{"_index":803,"title":{},"name":{},"text":{"9":{},"37":{},"101":{},"179":{},"198":{},"202":{}},"component":{}}],["core",{"_index":668,"title":{},"name":{},"text":{"8":{},"15":{},"16":{},"17":{},"91":{},"106":{},"107":{},"113":{},"152":{},"178":{}},"component":{}}],["cornerston",{"_index":3636,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["corpor",{"_index":957,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["correct",{"_index":1429,"title":{},"name":{},"text":{"15":{},"21":{},"34":{},"36":{},"37":{},"59":{},"83":{},"106":{},"145":{},"162":{},"182":{},"195":{},"197":{},"198":{}},"component":{}}],["correctli",{"_index":1354,"title":{},"name":{},"text":{"15":{},"34":{},"36":{},"46":{},"48":{},"50":{},"78":{},"82":{},"83":{},"106":{},"119":{},"122":{},"141":{},"145":{},"193":{},"195":{},"197":{}},"component":{}}],["correspond",{"_index":24,"title":{},"name":{},"text":{"2":{},"5":{},"21":{},"30":{},"34":{},"36":{},"37":{},"41":{},"75":{},"77":{},"83":{},"87":{},"103":{},"115":{},"138":{},"140":{},"145":{},"148":{},"172":{},"174":{},"182":{},"195":{},"197":{},"198":{},"204":{}},"component":{}}],["cost",{"_index":1594,"title":{"17-6":{},"113-6":{}},"name":{},"text":{"17":{},"83":{},"87":{},"113":{},"145":{},"148":{}},"component":{}}],["cotppacket",{"_index":4487,"title":{},"name":{},"text":{"204":{}},"component":{}}],["cotppacket('len",{"_index":4263,"title":{},"name":{},"text":{"103":{}},"component":{}}],["count",{"_index":2129,"title":{},"name":{},"text":{"34":{},"36":{},"78":{},"82":{},"83":{},"103":{},"141":{},"145":{},"195":{},"197":{},"204":{}},"component":{}}],["count(cast(paramet",{"_index":4327,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["counter",{"_index":3514,"title":{},"name":{},"text":{"82":{},"83":{},"102":{},"145":{},"203":{}},"component":{}}],["countermeasur",{"_index":4047,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["counterpart",{"_index":1313,"title":{},"name":{},"text":{"15":{},"46":{},"106":{},"119":{}},"component":{}}],["count|length|termin",{"_index":4294,"title":{},"name":{},"text":{"103":{}},"component":{}}],["coupl",{"_index":2734,"title":{},"name":{},"text":{"54":{},"55":{},"157":{},"158":{}},"component":{}}],["cours",{"_index":4028,"title":{},"name":{},"text":{"90":{}},"component":{}}],["cp",{"_index":3626,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["cpp",{"_index":2050,"title":{},"name":{},"text":{"32":{}},"component":{}}],["cpu",{"_index":1452,"title":{},"name":{},"text":{"15":{},"29":{},"70":{},"76":{},"82":{},"83":{},"106":{},"133":{},"139":{},"145":{}},"component":{}}],["cp’",{"_index":3450,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["craft",{"_index":1330,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["crc",{"_index":4205,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["creat",{"_index":27,"title":{"40":{},"34-1":{},"36-4":{},"43-1":{},"195-1":{},"197-4":{}},"name":{},"text":{"2":{},"3":{},"4":{},"5":{},"8":{},"9":{},"10":{},"12":{},"14":{},"16":{},"17":{},"21":{},"27":{},"34":{},"36":{},"39":{},"40":{},"43":{},"46":{},"47":{},"48":{},"50":{},"52":{},"54":{},"55":{},"56":{},"59":{},"65":{},"78":{},"82":{},"83":{},"86":{},"87":{},"88":{},"90":{},"91":{},"101":{},"103":{},"107":{},"110":{},"111":{},"113":{},"119":{},"120":{},"122":{},"128":{},"141":{},"145":{},"147":{},"148":{},"150":{},"152":{},"157":{},"158":{},"159":{},"162":{},"172":{},"173":{},"174":{},"175":{},"178":{},"179":{},"180":{},"182":{},"188":{},"195":{},"197":{},"199":{},"202":{},"204":{}},"component":{}}],["createconnect",{"_index":4003,"title":{},"name":{},"text":{"88":{},"150":{}},"component":{}}],["creation",{"_index":23,"title":{"43":{}},"name":{},"text":{"2":{},"41":{},"43":{},"115":{},"172":{}},"component":{}}],["creativ",{"_index":3835,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["credenti",{"_index":2168,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["criteria",{"_index":918,"title":{},"name":{},"text":{"9":{},"78":{},"179":{}},"component":{}}],["critic",{"_index":1502,"title":{},"name":{},"text":{"15":{},"55":{},"66":{},"106":{},"129":{},"157":{}},"component":{}}],["cross",{"_index":663,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["cruz",{"_index":989,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["cryptograph",{"_index":2393,"title":{},"name":{},"text":{"43":{}},"component":{}}],["cs10",{"_index":838,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["cs20",{"_index":933,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["cs30",{"_index":941,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["cs40",{"_index":942,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["cs50",{"_index":946,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["css",{"_index":1867,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["ctlrx",{"_index":3117,"title":{"67":{},"130":{}},"name":{},"text":{},"component":{}}],["ctrl+",{"_index":2414,"title":{},"name":{},"text":{"43":{}},"component":{}}],["ctrl+g",{"_index":2398,"title":{},"name":{},"text":{"43":{}},"component":{}}],["ctrl+n",{"_index":2397,"title":{},"name":{},"text":{"43":{}},"component":{}}],["ctrlx",{"_index":3118,"title":{},"name":{"67":{},"130":{}},"text":{},"component":{}}],["curl",{"_index":1989,"title":{},"name":{},"text":{"31":{},"55":{},"157":{},"192":{}},"component":{}}],["current",{"_index":44,"title":{"74":{},"15-1":{},"33-1":{},"106-1":{},"137-1":{},"194-1":{}},"name":{},"text":{"2":{},"8":{},"9":{},"17":{},"21":{},"22":{},"27":{},"31":{},"34":{},"36":{},"37":{},"39":{},"41":{},"47":{},"48":{},"56":{},"65":{},"66":{},"71":{},"72":{},"78":{},"81":{},"82":{},"83":{},"86":{},"87":{},"90":{},"91":{},"101":{},"102":{},"103":{},"113":{},"115":{},"120":{},"128":{},"129":{},"134":{},"135":{},"143":{},"145":{},"147":{},"148":{},"152":{},"159":{},"172":{},"173":{},"174":{},"178":{},"179":{},"182":{},"183":{},"188":{},"189":{},"192":{},"193":{},"195":{},"197":{},"198":{},"199":{},"202":{},"203":{},"204":{}},"component":{}}],["current_mod",{"_index":3706,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["currentmod",{"_index":3730,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["custom",{"_index":256,"title":{"21-3":{},"182-3":{}},"name":{},"text":{"3":{},"12":{},"14":{},"15":{},"21":{},"55":{},"65":{},"83":{},"106":{},"110":{},"111":{},"128":{},"145":{},"157":{},"173":{},"182":{}},"component":{}}],["cve",{"_index":1304,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["cve/secur",{"_index":874,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["cxf",{"_index":1054,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["cyc",{"_index":3615,"title":{"83-21":{},"145-21":{}},"name":{},"text":{"83":{},"145":{}},"component":{}}],["cycl",{"_index":3630,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["cyclic",{"_index":2499,"title":{"83-21":{},"145-21":{}},"name":{},"text":{"46":{},"47":{},"78":{},"83":{},"119":{},"120":{},"141":{},"145":{}},"component":{}}],["césar",{"_index":982,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["d",{"_index":2220,"title":{},"name":{},"text":{"36":{},"82":{},"83":{},"145":{},"193":{},"197":{}},"component":{}}],["d\"maven.repo.local\"=\"../.m2",{"_index":2270,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["d1",{"_index":2736,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["da",{"_index":1189,"title":{},"name":{},"text":{"13":{},"83":{},"112":{},"145":{}},"component":{}}],["daffodil",{"_index":1711,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["danger",{"_index":490,"title":{},"name":{},"text":{"5":{},"26":{},"174":{},"187":{}},"component":{}}],["dap",{"_index":3430,"title":{},"name":{},"text":{"81":{},"143":{}},"component":{}}],["dark",{"_index":1691,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["dat_id",{"_index":3749,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["data",{"_index":73,"title":{"46-4":{},"46-5":{},"46-6":{},"47-2":{},"47-3":{},"47-4":{},"48-2":{},"48-3":{},"48-4":{},"50-5":{},"50-6":{},"54-1":{},"70-4":{},"76-6":{},"77-15":{},"78-8":{},"78-11":{},"81-5":{},"82-10":{},"83-13":{},"84-7":{},"85-7":{},"119-4":{},"119-5":{},"119-6":{},"120-2":{},"120-3":{},"120-4":{},"122-5":{},"122-6":{},"133-4":{},"139-6":{},"140-15":{},"141-8":{},"143-5":{},"145-13":{},"146-7":{},"158-1":{}},"name":{},"text":{"2":{},"4":{},"8":{},"10":{},"12":{},"13":{},"14":{},"15":{},"16":{},"21":{},"27":{},"39":{},"41":{},"46":{},"47":{},"48":{},"50":{},"54":{},"55":{},"56":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"87":{},"88":{},"90":{},"91":{},"93":{},"101":{},"102":{},"103":{},"104":{},"106":{},"107":{},"110":{},"111":{},"112":{},"115":{},"119":{},"120":{},"122":{},"123":{},"125":{},"126":{},"127":{},"128":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"148":{},"150":{},"152":{},"157":{},"158":{},"159":{},"163":{},"172":{},"175":{},"178":{},"180":{},"182":{},"188":{},"199":{},"202":{},"203":{},"204":{},"206":{}},"component":{}}],["data_block",{"_index":3519,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["databas",{"_index":649,"title":{},"name":{},"text":{"8":{},"54":{},"83":{},"90":{},"145":{},"151":{},"158":{},"178":{}},"component":{}}],["dataio",{"_index":4139,"title":{},"name":{},"text":{"101":{},"103":{},"202":{},"204":{}},"component":{}}],["datasend",{"_index":4346,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["datasourc",{"_index":3930,"title":{},"name":{},"text":{"84":{},"146":{}},"component":{}}],["datastructur",{"_index":4284,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["datatyp",{"_index":1384,"title":{},"name":{},"text":{"15":{},"54":{},"70":{},"78":{},"82":{},"83":{},"87":{},"106":{},"133":{},"141":{},"145":{},"148":{},"158":{}},"component":{}}],["date",{"_index":324,"title":{"5-4":{},"174-4":{}},"name":{},"text":{"4":{},"5":{},"6":{},"15":{},"17":{},"27":{},"32":{},"36":{},"78":{},"82":{},"83":{},"85":{},"103":{},"106":{},"113":{},"141":{},"145":{},"174":{},"175":{},"176":{},"188":{},"197":{}},"component":{}}],["date_and_tim",{"_index":3537,"title":{},"name":{},"text":{"82":{},"83":{},"85":{},"145":{}},"component":{}}],["datetim",{"_index":4289,"title":{},"name":{},"text":{"103":{}},"component":{}}],["day",{"_index":354,"title":{},"name":{},"text":{"4":{},"82":{},"83":{},"85":{},"145":{},"175":{}},"component":{}}],["db",{"_index":3510,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["db.db1.4:int",{"_index":2563,"title":{},"name":{},"text":{"47":{},"120":{}},"component":{}}],["db01:dw05:bool",{"_index":4023,"title":{},"name":{},"text":{"90":{}},"component":{}}],["db2:30:string(10",{"_index":1394,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["db2:30:string(10)[3",{"_index":1396,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["dbi",{"_index":3521,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["dbranchname=rel/{curr",{"_index":2164,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["dbranchname=rel/{minor",{"_index":2198,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["dbranchname=releases/cod",{"_index":2062,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["dbyte",{"_index":3871,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["db{data",{"_index":3505,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["dc",{"_index":3634,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["de",{"_index":3566,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["de/java/openjdk/download",{"_index":2021,"title":{},"name":{},"text":{"32":{}},"component":{}}],["deactiv",{"_index":2026,"title":{},"name":{},"text":{"32":{}},"component":{}}],["dead",{"_index":4035,"title":{},"name":{},"text":{"90":{}},"component":{}}],["deal",{"_index":1138,"title":{},"name":{},"text":{"12":{},"15":{},"103":{},"106":{},"110":{}},"component":{}}],["debug",{"_index":85,"title":{"3-8":{},"56-4":{},"159-4":{},"173-8":{}},"name":{},"text":{"3":{},"55":{},"56":{},"157":{},"159":{},"173":{}},"component":{}}],["debug_suspend_flag=i",{"_index":2817,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["decemb",{"_index":1175,"title":{},"name":{},"text":{"13":{},"112":{}},"component":{}}],["decentr",{"_index":3834,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["decid",{"_index":290,"title":{},"name":{},"text":{"3":{},"17":{},"39":{},"41":{},"43":{},"48":{},"83":{},"113":{},"115":{},"145":{},"199":{}},"component":{}}],["decis",{"_index":557,"title":{"6":{},"176":{},"6-5":{},"176-5":{}},"name":{"6":{},"176":{}},"text":{"6":{},"9":{},"17":{},"83":{},"113":{},"145":{},"176":{},"179":{}},"component":{}}],["declar",{"_index":807,"title":{},"name":{},"text":{"9":{},"39":{},"66":{},"78":{},"82":{},"83":{},"87":{},"90":{},"103":{},"129":{},"141":{},"145":{},"148":{},"179":{},"199":{},"204":{}},"component":{}}],["decod",{"_index":1286,"title":{},"name":{},"text":{"15":{},"66":{},"75":{},"106":{},"129":{},"138":{}},"component":{}}],["decor",{"_index":4016,"title":{},"name":{},"text":{"90":{}},"component":{}}],["dedic",{"_index":550,"title":{},"name":{},"text":{"5":{},"7":{},"10":{},"16":{},"26":{},"27":{},"34":{},"36":{},"41":{},"65":{},"66":{},"107":{},"128":{},"129":{},"174":{},"177":{},"180":{},"187":{},"188":{},"195":{},"197":{}},"component":{}}],["deeper",{"_index":368,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["def",{"_index":2621,"title":{},"name":{},"text":{"48":{}},"component":{}}],["default",{"_index":142,"title":{},"name":{},"text":{"3":{},"5":{},"8":{},"9":{},"15":{},"21":{},"27":{},"32":{},"34":{},"36":{},"41":{},"43":{},"50":{},"54":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"87":{},"88":{},"95":{},"99":{},"100":{},"103":{},"106":{},"115":{},"122":{},"123":{},"125":{},"126":{},"127":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"148":{},"150":{},"158":{},"166":{},"169":{},"171":{},"173":{},"174":{},"178":{},"179":{},"182":{},"188":{},"195":{},"197":{},"204":{}},"component":{}}],["defaultplcdrivermanager().getconnection(\"s7://10.10.1.33?remot",{"_index":3479,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["defaultplcsubscriptionfield",{"_index":1364,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["defaults7messageprocessor",{"_index":1539,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["defer",{"_index":2445,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["defin",{"_index":149,"title":{"8-1":{},"90-2":{},"178-1":{}},"name":{},"text":{"3":{},"5":{},"6":{},"8":{},"9":{},"15":{},"21":{},"27":{},"36":{},"40":{},"41":{},"48":{},"55":{},"62":{},"63":{},"66":{},"72":{},"75":{},"77":{},"78":{},"82":{},"83":{},"85":{},"87":{},"90":{},"91":{},"101":{},"103":{},"106":{},"115":{},"125":{},"126":{},"129":{},"135":{},"138":{},"140":{},"141":{},"145":{},"148":{},"152":{},"157":{},"173":{},"174":{},"176":{},"178":{},"179":{},"182":{},"188":{},"197":{},"202":{},"204":{}},"component":{}}],["definit",{"_index":623,"title":{},"name":{},"text":{"7":{},"17":{},"21":{},"22":{},"36":{},"50":{},"56":{},"82":{},"83":{},"91":{},"101":{},"103":{},"113":{},"122":{},"145":{},"152":{},"159":{},"177":{},"182":{},"183":{},"197":{},"202":{},"204":{}},"component":{}}],["del",{"_index":3606,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["delay",{"_index":2962,"title":{},"name":{},"text":{"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"123":{},"125":{},"126":{},"127":{},"133":{},"136":{},"139":{},"140":{},"141":{},"142":{},"144":{},"145":{}},"component":{}}],["deleg",{"_index":3010,"title":{},"name":{},"text":{"65":{},"103":{},"128":{}},"component":{}}],["delet",{"_index":2093,"title":{},"name":{},"text":{"34":{},"36":{},"193":{},"195":{},"197":{}},"component":{}}],["delimit",{"_index":4201,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["deliv",{"_index":3007,"title":{},"name":{},"text":{"65":{},"128":{}},"component":{}}],["deltav",{"_index":3119,"title":{"68":{},"131":{}},"name":{"68":{},"131":{}},"text":{"74":{},"137":{}},"component":{}}],["demand",{"_index":1203,"title":{},"name":{},"text":{"14":{},"26":{},"29":{},"111":{},"187":{},"189":{}},"component":{}}],["demo",{"_index":4109,"title":{},"name":{},"text":{"92":{},"153":{}},"component":{}}],["demonstr",{"_index":2497,"title":{},"name":{},"text":{"46":{},"47":{},"48":{},"50":{},"119":{},"120":{},"122":{}},"component":{}}],["deni",{"_index":1840,"title":{},"name":{},"text":{"26":{},"46":{},"56":{},"119":{},"159":{},"187":{}},"component":{}}],["dentro",{"_index":3605,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["depend",{"_index":308,"title":{"21-8":{},"182-8":{}},"name":{},"text":{"3":{},"7":{},"9":{},"15":{},"21":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"39":{},"40":{},"41":{},"42":{},"46":{},"47":{},"50":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"93":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"103":{},"104":{},"106":{},"115":{},"116":{},"119":{},"120":{},"122":{},"123":{},"125":{},"126":{},"127":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"163":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"173":{},"177":{},"179":{},"182":{},"189":{},"195":{},"197":{},"199":{},"204":{},"206":{}},"component":{}}],["deploy",{"_index":1778,"title":{"27-3":{},"188-3":{}},"name":{},"text":{"21":{},"22":{},"27":{},"29":{},"32":{},"34":{},"36":{},"49":{},"124":{},"182":{},"183":{},"188":{},"189":{},"195":{},"197":{}},"component":{}}],["deprec",{"_index":1467,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["der",{"_index":376,"title":{},"name":{},"text":{"4":{},"13":{},"78":{},"112":{},"141":{},"175":{}},"component":{}}],["deriv",{"_index":1684,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["describ",{"_index":558,"title":{},"name":{},"text":{"6":{},"9":{},"14":{},"21":{},"29":{},"30":{},"50":{},"62":{},"78":{},"83":{},"93":{},"111":{},"122":{},"125":{},"141":{},"145":{},"163":{},"176":{},"179":{},"182":{},"189":{}},"component":{}}],["descript",{"_index":226,"title":{},"name":{},"text":{"3":{},"9":{},"12":{},"14":{},"21":{},"27":{},"29":{},"34":{},"36":{},"39":{},"41":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"87":{},"93":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"110":{},"111":{},"115":{},"123":{},"125":{},"126":{},"127":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"148":{},"163":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"173":{},"179":{},"182":{},"188":{},"189":{},"195":{},"197":{},"199":{}},"component":{}}],["descriptor",{"_index":2985,"title":{},"name":{},"text":{"63":{},"126":{}},"component":{}}],["deselect",{"_index":1929,"title":{},"name":{},"text":{"29":{},"189":{}},"component":{}}],["deseri",{"_index":4302,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["design",{"_index":1617,"title":{},"name":{},"text":{"17":{},"78":{},"83":{},"113":{},"141":{},"145":{}},"component":{}}],["desir",{"_index":902,"title":{},"name":{},"text":{"9":{},"43":{},"65":{},"128":{},"179":{}},"component":{}}],["desktop",{"_index":4469,"title":{},"name":{},"text":{"193":{}},"component":{}}],["despit",{"_index":3032,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["destinationaddress",{"_index":4231,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["destroy",{"_index":4005,"title":{},"name":{},"text":{"88":{},"150":{}},"component":{}}],["detach",{"_index":4009,"title":{"90-3":{}},"name":{},"text":{"90":{}},"component":{}}],["detail",{"_index":172,"title":{"62-4":{},"63-6":{},"65-1":{},"66-4":{},"72-4":{},"78-15":{},"125-4":{},"126-6":{},"128-1":{},"129-4":{},"135-4":{},"141-11":{},"151-4":{}},"name":{},"text":{"3":{},"7":{},"8":{},"9":{},"27":{},"34":{},"36":{},"37":{},"41":{},"43":{},"54":{},"62":{},"66":{},"78":{},"82":{},"83":{},"85":{},"87":{},"88":{},"115":{},"125":{},"129":{},"145":{},"148":{},"150":{},"158":{},"173":{},"177":{},"178":{},"179":{},"188":{},"195":{},"197":{},"198":{}},"component":{}}],["detect",{"_index":3151,"title":{},"name":{},"text":{"71":{},"77":{},"83":{},"88":{},"134":{},"140":{},"145":{},"150":{},"193":{}},"component":{}}],["determin",{"_index":1788,"title":{},"name":{},"text":{"21":{},"66":{},"83":{},"103":{},"129":{},"145":{},"182":{},"204":{}},"component":{}}],["detour",{"_index":1663,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["dev",{"_index":524,"title":{},"name":{},"text":{"5":{},"6":{},"7":{},"30":{},"174":{},"176":{},"177":{},"191":{}},"component":{}}],["dev/ttys0",{"_index":4123,"title":{},"name":{},"text":{"97":{},"168":{}},"component":{}}],["dev@plc4x.apache.org",{"_index":433,"title":{},"name":{},"text":{"4":{},"7":{},"9":{},"12":{},"36":{},"83":{},"110":{},"145":{},"175":{},"177":{},"179":{},"197":{}},"component":{}}],["devel",{"_index":1942,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["develop",{"_index":220,"title":{"7":{},"81":{},"143":{},"177":{},"34-2":{},"36-5":{},"93-1":{},"163-1":{},"173-9":{},"195-2":{},"197-5":{}},"name":{},"text":{"3":{},"5":{},"8":{},"9":{},"10":{},"12":{},"14":{},"15":{},"16":{},"21":{},"22":{},"34":{},"36":{},"49":{},"83":{},"86":{},"90":{},"101":{},"106":{},"107":{},"110":{},"111":{},"124":{},"145":{},"147":{},"151":{},"173":{},"174":{},"178":{},"179":{},"180":{},"182":{},"183":{},"195":{},"197":{},"202":{}},"component":{}}],["devi",{"_index":3116,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["devic",{"_index":38,"title":{"62":{},"125":{}},"name":{},"text":{"2":{},"12":{},"15":{},"16":{},"36":{},"41":{},"46":{},"47":{},"48":{},"50":{},"52":{},"54":{},"55":{},"58":{},"59":{},"62":{},"63":{},"66":{},"70":{},"71":{},"72":{},"75":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"90":{},"92":{},"96":{},"104":{},"106":{},"107":{},"110":{},"115":{},"119":{},"120":{},"122":{},"125":{},"126":{},"129":{},"133":{},"134":{},"135":{},"138":{},"140":{},"141":{},"143":{},"145":{},"146":{},"147":{},"151":{},"153":{},"157":{},"158":{},"162":{},"167":{},"172":{},"197":{},"206":{}},"component":{}}],["device.slot.id.module_name.channel.bit:format",{"_index":3437,"title":{},"name":{},"text":{"81":{},"143":{}},"component":{}}],["df1",{"_index":1529,"title":{"69":{},"102":{},"132":{},"203":{}},"name":{"69":{},"102":{},"132":{},"203":{}},"text":{"15":{},"39":{},"74":{},"102":{},"106":{},"137":{},"199":{},"203":{}},"component":{}}],["df1command",{"_index":4233,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["df1symbol",{"_index":4224,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["df1symbolmessagefram",{"_index":4230,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["df1symbolmessageframeack",{"_index":4237,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["df1symbolmessageframenak",{"_index":4238,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["df1unprotectedreadrequest",{"_index":4241,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["df1unprotectedreadrespons",{"_index":4243,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["dfdl",{"_index":1710,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["di",{"_index":1402,"title":{},"name":{},"text":{"15":{},"82":{},"83":{},"106":{},"145":{}},"component":{}}],["diagnos",{"_index":1936,"title":{},"name":{},"text":{"30":{},"31":{},"32":{}},"component":{}}],["diagnosi",{"_index":3840,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["diagnost",{"_index":3347,"title":{},"name":{},"text":{"78":{},"82":{},"83":{},"141":{},"145":{}},"component":{}}],["diagram",{"_index":1880,"title":{},"name":{},"text":{"27":{},"65":{},"83":{},"128":{},"145":{},"188":{}},"component":{}}],["dialog",{"_index":2683,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["dialogu",{"_index":3662,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["dictat",{"_index":920,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["dictionari",{"_index":3045,"title":{},"name":{},"text":{"66":{},"85":{},"129":{}},"component":{}}],["didact",{"_index":3744,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["didn’t",{"_index":1549,"title":{},"name":{},"text":{"15":{},"21":{},"47":{},"48":{},"50":{},"106":{},"120":{},"122":{},"182":{}},"component":{}}],["die",{"_index":337,"title":{},"name":{},"text":{"4":{},"13":{},"112":{},"175":{}},"component":{}}],["differ",{"_index":52,"title":{},"name":{},"text":{"2":{},"3":{},"6":{},"10":{},"12":{},"16":{},"17":{},"21":{},"34":{},"36":{},"41":{},"42":{},"46":{},"47":{},"50":{},"56":{},"66":{},"72":{},"78":{},"83":{},"84":{},"86":{},"87":{},"88":{},"91":{},"97":{},"98":{},"101":{},"102":{},"103":{},"107":{},"110":{},"113":{},"115":{},"116":{},"119":{},"120":{},"122":{},"129":{},"135":{},"141":{},"145":{},"146":{},"147":{},"148":{},"150":{},"152":{},"159":{},"168":{},"170":{},"172":{},"173":{},"176":{},"180":{},"182":{},"195":{},"197":{},"202":{},"203":{},"204":{}},"component":{}}],["differenti",{"_index":3635,"title":{},"name":{},"text":{"83":{},"102":{},"145":{},"203":{}},"component":{}}],["difficult",{"_index":270,"title":{},"name":{},"text":{"3":{},"17":{},"113":{},"173":{}},"component":{}}],["digest",{"_index":845,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["digit",{"_index":1145,"title":{},"name":{},"text":{"12":{},"13":{},"15":{},"58":{},"71":{},"82":{},"83":{},"106":{},"110":{},"112":{},"134":{},"145":{}},"component":{}}],["digital:4",{"_index":3165,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["digital:4:pullup",{"_index":3167,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["digital:4[5",{"_index":3166,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["digital:{start",{"_index":3159,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["dint",{"_index":1414,"title":{},"name":{},"text":{"15":{},"66":{},"70":{},"72":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"106":{},"129":{},"133":{},"135":{},"139":{},"140":{},"141":{},"143":{},"145":{},"146":{}},"component":{}}],["dir",{"_index":2252,"title":{},"name":{},"text":{"37":{},"59":{},"162":{},"198":{}},"component":{}}],["direct",{"_index":1018,"title":{},"name":{},"text":{"10":{},"17":{},"82":{},"83":{},"113":{},"145":{},"180":{}},"component":{}}],["direct_peripheral_access",{"_index":3517,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["directli",{"_index":1323,"title":{"46-2":{},"47-1":{},"48-1":{},"119-2":{},"120-1":{}},"name":{},"text":{"15":{},"16":{},"17":{},"26":{},"32":{},"36":{},"41":{},"82":{},"83":{},"86":{},"92":{},"103":{},"106":{},"107":{},"113":{},"115":{},"145":{},"147":{},"153":{},"187":{},"197":{},"204":{}},"component":{}}],["directo",{"_index":3582,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["director",{"_index":762,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["directori",{"_index":276,"title":{},"name":{},"text":{"3":{},"5":{},"8":{},"27":{},"32":{},"34":{},"36":{},"37":{},"39":{},"40":{},"43":{},"46":{},"48":{},"50":{},"55":{},"56":{},"59":{},"63":{},"81":{},"101":{},"119":{},"122":{},"126":{},"143":{},"157":{},"159":{},"162":{},"173":{},"174":{},"178":{},"188":{},"193":{},"195":{},"197":{},"198":{},"199":{},"202":{}},"component":{}}],["dirti",{"_index":2203,"title":{},"name":{},"text":{"36":{},"193":{},"197":{}},"component":{}}],["dir}/security/pki/reject",{"_index":2958,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["dir}/security/plc4x",{"_index":2952,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["disabl",{"_index":291,"title":{},"name":{},"text":{"3":{},"47":{},"48":{},"50":{},"59":{},"62":{},"78":{},"82":{},"83":{},"120":{},"122":{},"125":{},"141":{},"145":{},"162":{},"173":{},"197":{}},"component":{}}],["disableinsecureendpoint",{"_index":2918,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["disadvantag",{"_index":1658,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["discard",{"_index":2865,"title":{},"name":{},"text":{"55":{},"72":{},"82":{},"83":{},"84":{},"103":{},"135":{},"145":{},"146":{},"157":{}},"component":{}}],["disconnect",{"_index":2965,"title":{},"name":{},"text":{"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"90":{},"105":{},"123":{},"125":{},"126":{},"127":{},"133":{},"136":{},"139":{},"140":{},"141":{},"142":{},"144":{},"145":{},"205":{}},"component":{}}],["discontinu",{"_index":3999,"title":{},"name":{},"text":{"88":{},"150":{}},"component":{}}],["discov",{"_index":1341,"title":{},"name":{},"text":{"15":{},"47":{},"48":{},"74":{},"78":{},"106":{},"120":{},"137":{},"141":{}},"component":{}}],["discover",{"_index":779,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["discoveri",{"_index":2791,"title":{},"name":{},"text":{"55":{},"78":{},"141":{},"157":{}},"component":{}}],["discret",{"_index":2686,"title":{},"name":{},"text":{"50":{},"77":{},"122":{},"140":{}},"component":{}}],["discrimin",{"_index":4227,"title":{"103-8":{},"204-7":{}},"name":{},"text":{"102":{},"103":{},"203":{},"204":{}},"component":{}}],["discriminatedtyp",{"_index":4223,"title":{},"name":{},"text":{"102":{},"103":{},"203":{},"204":{}},"component":{}}],["discriminatedtype`",{"_index":4300,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["discuss",{"_index":500,"title":{},"name":{},"text":{"5":{},"9":{},"34":{},"36":{},"174":{},"179":{},"195":{},"197":{}},"component":{}}],["disk",{"_index":4468,"title":{},"name":{},"text":{"193":{}},"component":{}}],["dispatch",{"_index":3027,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["display",{"_index":1831,"title":{},"name":{},"text":{"26":{},"82":{},"83":{},"145":{},"187":{}},"component":{}}],["disposit",{"_index":3646,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["dist.apache.org",{"_index":834,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["distinguish",{"_index":4138,"title":{},"name":{},"text":{"101":{},"102":{},"103":{},"202":{},"203":{},"204":{}},"component":{}}],["distribut",{"_index":120,"title":{"55-7":{},"55-10":{},"157-7":{},"157-10":{}},"name":{},"text":{"3":{},"9":{},"30":{},"32":{},"36":{},"55":{},"83":{},"101":{},"145":{},"157":{},"173":{},"179":{},"191":{},"193":{},"197":{},"202":{}},"component":{}}],["distributed.properti",{"_index":2788,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["distributed.sh",{"_index":2824,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["distrubut",{"_index":2778,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["ditto",{"_index":2910,"title":{"58":{},"160":{}},"name":{"58":{},"160":{}},"text":{"58":{},"160":{}},"component":{}}],["dive",{"_index":2384,"title":{},"name":{},"text":{"43":{}},"component":{}}],["djqassistant.neo4jversion=3",{"_index":747,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["dk",{"_index":3319,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["dle",{"_index":4206,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["dll",{"_index":4467,"title":{},"name":{},"text":{"193":{}},"component":{}}],["dmaven.repo.local=../.m2",{"_index":2269,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["do",{"_index":662,"title":{"26-3":{},"187-3":{}},"name":{},"text":{"8":{},"9":{},"22":{},"36":{},"39":{},"96":{},"167":{},"178":{},"179":{},"197":{},"199":{}},"component":{}}],["doap",{"_index":2162,"title":{"36-16":{},"197-16":{}},"name":{},"text":{"36":{},"197":{}},"component":{}}],["doap.rdf",{"_index":2228,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["doc",{"_index":2235,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["doc\":\"plc",{"_index":2842,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["docker",{"_index":615,"title":{},"name":{},"text":{"7":{},"173":{},"177":{}},"component":{}}],["document",{"_index":170,"title":{"5-6":{},"33-1":{},"174-6":{},"194-1":{}},"name":{},"text":{"3":{},"5":{},"6":{},"9":{},"15":{},"16":{},"27":{},"29":{},"30":{},"32":{},"34":{},"36":{},"39":{},"41":{},"43":{},"56":{},"66":{},"82":{},"83":{},"91":{},"103":{},"106":{},"107":{},"115":{},"129":{},"145":{},"152":{},"159":{},"173":{},"174":{},"176":{},"179":{},"188":{},"189":{},"191":{},"195":{},"197":{},"199":{},"204":{}},"component":{}}],["doesn't",{"_index":2464,"title":{},"name":{},"text":{"46":{},"47":{},"48":{},"50":{},"119":{},"120":{},"122":{}},"component":{}}],["doesn’t",{"_index":159,"title":{},"name":{},"text":{"3":{},"15":{},"17":{},"26":{},"32":{},"34":{},"36":{},"46":{},"47":{},"48":{},"50":{},"59":{},"75":{},"91":{},"101":{},"103":{},"106":{},"113":{},"119":{},"120":{},"122":{},"138":{},"152":{},"162":{},"173":{},"187":{},"193":{},"195":{},"197":{},"202":{},"204":{}},"component":{}}],["domain",{"_index":664,"title":{},"name":{},"text":{"8":{},"10":{},"82":{},"83":{},"90":{},"145":{},"151":{},"178":{},"180":{}},"component":{}}],["domin",{"_index":3034,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["done",{"_index":105,"title":{"21-8":{},"182-8":{}},"name":{},"text":{"3":{},"4":{},"5":{},"7":{},"13":{},"14":{},"15":{},"21":{},"26":{},"27":{},"34":{},"36":{},"46":{},"47":{},"48":{},"50":{},"55":{},"56":{},"65":{},"82":{},"83":{},"87":{},"90":{},"91":{},"92":{},"98":{},"103":{},"106":{},"111":{},"112":{},"119":{},"120":{},"122":{},"128":{},"145":{},"148":{},"152":{},"153":{},"157":{},"159":{},"170":{},"173":{},"174":{},"175":{},"177":{},"182":{},"187":{},"188":{},"195":{},"197":{}},"component":{}}],["don’t",{"_index":45,"title":{},"name":{},"text":{"2":{},"5":{},"7":{},"15":{},"16":{},"21":{},"27":{},"30":{},"31":{},"32":{},"34":{},"36":{},"41":{},"47":{},"48":{},"50":{},"56":{},"75":{},"82":{},"83":{},"88":{},"103":{},"106":{},"107":{},"115":{},"120":{},"122":{},"138":{},"145":{},"150":{},"159":{},"172":{},"174":{},"177":{},"182":{},"188":{},"191":{},"192":{},"193":{},"195":{},"197":{},"204":{}},"component":{}}],["door",{"_index":2250,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["dotnet",{"_index":213,"title":{"30-6":{},"31-6":{},"32-6":{},"191-4":{},"192-4":{},"193-4":{}},"name":{},"text":{"3":{},"29":{},"30":{},"31":{},"32":{},"173":{},"189":{},"191":{},"192":{},"193":{}},"component":{}}],["dotnet,with",{"_index":240,"title":{},"name":{},"text":{"3":{},"36":{},"173":{},"197":{}},"component":{}}],["doubl",{"_index":1356,"title":{},"name":{},"text":{"15":{},"27":{},"47":{},"56":{},"63":{},"66":{},"75":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"90":{},"95":{},"103":{},"106":{},"120":{},"126":{},"129":{},"138":{},"140":{},"141":{},"143":{},"145":{},"146":{},"151":{},"159":{},"166":{},"188":{}},"component":{}}],["down",{"_index":109,"title":{},"name":{},"text":{"3":{},"11":{},"21":{},"30":{},"31":{},"32":{},"36":{},"47":{},"50":{},"82":{},"103":{},"120":{},"122":{},"173":{},"181":{},"182":{},"191":{},"197":{},"204":{}},"component":{}}],["download",{"_index":155,"title":{"15":{},"106":{},"36-19":{},"197-19":{}},"name":{"15":{},"106":{}},"text":{"3":{},"9":{},"15":{},"21":{},"32":{},"34":{},"36":{},"37":{},"46":{},"50":{},"55":{},"56":{},"62":{},"106":{},"119":{},"122":{},"125":{},"157":{},"159":{},"173":{},"179":{},"182":{},"193":{},"195":{},"197":{},"198":{}},"component":{}}],["download.adoc",{"_index":2230,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["downsid",{"_index":1712,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["dp",{"_index":3628,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["dpkg",{"_index":1969,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["dprocessallmodules=tru",{"_index":2219,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["dq",{"_index":3542,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["draft",{"_index":1340,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["drag",{"_index":2880,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["dramat",{"_index":204,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["drive",{"_index":1132,"title":{},"name":{},"text":{"12":{},"82":{},"83":{},"110":{},"145":{}},"component":{}}],["driver",{"_index":25,"title":{"40":{},"65":{},"128":{},"201":{},"40-2":{},"40-4":{},"65-1":{},"66-4":{},"72-4":{},"83-3":{},"92-1":{},"92-3":{},"128-1":{},"129-4":{},"135-4":{},"145-3":{},"153-1":{},"153-3":{}},"name":{"40":{},"201":{}},"text":{"2":{},"3":{},"15":{},"16":{},"17":{},"21":{},"29":{},"36":{},"40":{},"41":{},"43":{},"46":{},"47":{},"50":{},"51":{},"56":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"91":{},"92":{},"93":{},"98":{},"101":{},"103":{},"106":{},"107":{},"113":{},"115":{},"119":{},"120":{},"122":{},"123":{},"125":{},"126":{},"127":{},"128":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"147":{},"148":{},"152":{},"153":{},"154":{},"159":{},"163":{},"170":{},"172":{},"173":{},"182":{},"189":{},"197":{},"201":{},"202":{},"204":{}},"component":{}}],["driver_manag",{"_index":2620,"title":{},"name":{},"text":{"48":{}},"component":{}}],["driver_manager.connection(connection_str",{"_index":2625,"title":{},"name":{},"text":{"48":{}},"component":{}}],["drivermanag",{"_index":21,"title":{},"name":{},"text":{"2":{},"46":{},"88":{},"119":{},"150":{},"153":{},"172":{}},"component":{}}],["drivermanager.getconnect",{"_index":4007,"title":{},"name":{},"text":{"88":{},"150":{}},"component":{}}],["drivermanager.getconnection(\"mock:mi",{"_index":4431,"title":{},"name":{},"text":{"153":{}},"component":{}}],["drivermanager.getconnection(\"modbu",{"_index":2435,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["drivers.registerknxdriver(drivermanag",{"_index":2432,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["drivers.registermodbusdriver(drivermanag",{"_index":2433,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["drivers/transport",{"_index":1477,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["drop",{"_index":1971,"title":{},"name":{},"text":{"30":{},"36":{},"191":{},"197":{}},"component":{}}],["dsa",{"_index":2399,"title":{},"name":{},"text":{"43":{}},"component":{}}],["dskiptest",{"_index":238,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["dst",{"_index":4208,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["dti=0&lc=",{"_index":3607,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["dti=0&lc=en",{"_index":3563,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["dtl",{"_index":1440,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["dual",{"_index":1667,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["due",{"_index":851,"title":{},"name":{},"text":{"9":{},"15":{},"17":{},"21":{},"47":{},"48":{},"50":{},"65":{},"66":{},"78":{},"83":{},"106":{},"113":{},"120":{},"122":{},"128":{},"129":{},"141":{},"145":{},"179":{},"182":{}},"component":{}}],["dummi",{"_index":2318,"title":{"46-1":{},"119-1":{}},"name":{},"text":{"40":{},"90":{}},"component":{}}],["duplex",{"_index":4204,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["durat",{"_index":1283,"title":{},"name":{},"text":{"15":{},"46":{},"47":{},"82":{},"83":{},"90":{},"106":{},"119":{},"120":{},"145":{}},"component":{}}],["duration.ofmillis(1000",{"_index":2597,"title":{},"name":{},"text":{"47":{},"120":{}},"component":{}}],["dure",{"_index":652,"title":{},"name":{},"text":{"8":{},"9":{},"15":{},"21":{},"27":{},"29":{},"34":{},"36":{},"55":{},"59":{},"82":{},"83":{},"103":{},"106":{},"145":{},"157":{},"162":{},"173":{},"178":{},"179":{},"182":{},"188":{},"189":{},"195":{},"197":{},"204":{}},"component":{}}],["dutz",{"_index":182,"title":{},"name":{},"text":{"3":{},"10":{},"14":{},"111":{},"173":{},"180":{}},"component":{}}],["dword",{"_index":1308,"title":{},"name":{},"text":{"15":{},"70":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"106":{},"133":{},"139":{},"140":{},"141":{},"143":{},"145":{},"146":{}},"component":{}}],["dy",{"_index":2014,"title":{},"name":{},"text":{"32":{}},"component":{}}],["dynam",{"_index":1789,"title":{},"name":{},"text":{"21":{},"90":{},"182":{}},"component":{}}],["dywicki",{"_index":1045,"title":{},"name":{},"text":{"10":{},"14":{},"111":{},"180":{}},"component":{}}],["düsseldorf",{"_index":371,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["e",{"_index":2004,"title":{},"name":{},"text":{"31":{},"34":{},"36":{},"47":{},"91":{},"92":{},"101":{},"120":{},"152":{},"153":{},"192":{},"195":{},"197":{},"202":{}},"component":{}}],["e.g",{"_index":466,"title":{},"name":{},"text":{"5":{},"14":{},"34":{},"36":{},"54":{},"76":{},"78":{},"85":{},"92":{},"111":{},"139":{},"141":{},"153":{},"158":{},"174":{},"195":{},"197":{}},"component":{}}],["each",{"_index":168,"title":{},"name":{},"text":{"3":{},"5":{},"9":{},"15":{},"16":{},"17":{},"34":{},"36":{},"39":{},"47":{},"48":{},"50":{},"54":{},"55":{},"56":{},"59":{},"66":{},"75":{},"76":{},"77":{},"78":{},"82":{},"83":{},"84":{},"88":{},"91":{},"93":{},"101":{},"103":{},"105":{},"106":{},"107":{},"113":{},"120":{},"122":{},"129":{},"138":{},"139":{},"140":{},"141":{},"145":{},"146":{},"150":{},"152":{},"157":{},"158":{},"159":{},"162":{},"163":{},"173":{},"174":{},"179":{},"195":{},"197":{},"199":{},"202":{},"204":{},"205":{}},"component":{}}],["earli",{"_index":1597,"title":{},"name":{},"text":{"17":{},"65":{},"113":{},"128":{}},"component":{}}],["eas",{"_index":3497,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["easi",{"_index":2286,"title":{"82-1":{},"83-4":{},"145-4":{}},"name":{},"text":{"39":{},"90":{},"91":{},"151":{},"152":{},"199":{}},"component":{}}],["easier",{"_index":3125,"title":{},"name":{},"text":{"70":{},"133":{}},"component":{}}],["easiest",{"_index":2792,"title":{},"name":{},"text":{"55":{},"81":{},"92":{},"143":{},"153":{},"157":{}},"component":{}}],["easili",{"_index":778,"title":{},"name":{},"text":{"9":{},"37":{},"41":{},"65":{},"115":{},"128":{},"179":{},"198":{}},"component":{}}],["ebook",{"_index":1890,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["ec",{"_index":2400,"title":{},"name":{},"text":{"43":{}},"component":{}}],["echo",{"_index":2003,"title":{},"name":{},"text":{"31":{},"192":{}},"component":{}}],["eclips",{"_index":1174,"title":{"58":{},"59":{},"160":{}},"name":{"58":{},"59":{},"160":{},"162":{}},"text":{"13":{},"15":{},"58":{},"59":{},"78":{},"106":{},"112":{},"141":{},"160":{},"162":{}},"component":{}}],["ecosystem",{"_index":3633,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["ed",{"_index":2984,"title":{},"name":{},"text":{"63":{},"66":{},"126":{},"129":{}},"component":{}}],["edg",{"_index":413,"title":{},"name":{},"text":{"4":{},"13":{},"78":{},"112":{},"175":{}},"component":{}}],["edgent",{"_index":414,"title":{"53":{},"156":{}},"name":{"53":{},"156":{}},"text":{"4":{},"10":{},"13":{},"15":{},"36":{},"106":{},"112":{},"175":{},"180":{},"197":{}},"component":{}}],["edinburgh",{"_index":394,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["edit",{"_index":1222,"title":{},"name":{},"text":{"14":{},"56":{},"101":{},"111":{},"159":{},"193":{},"202":{}},"component":{}}],["editor",{"_index":2680,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["ee",{"_index":678,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["effect",{"_index":275,"title":{},"name":{},"text":{"3":{},"32":{},"46":{},"59":{},"78":{},"83":{},"119":{},"141":{},"145":{},"162":{},"173":{},"193":{}},"component":{}}],["effort",{"_index":1155,"title":{},"name":{},"text":{"12":{},"16":{},"93":{},"107":{},"110":{},"163":{}},"component":{}}],["einführung",{"_index":1188,"title":{},"name":{},"text":{"13":{},"112":{}},"component":{}}],["eip",{"_index":1255,"title":{"105":{},"205":{}},"name":{"70":{},"133":{}},"text":{"15":{},"33":{},"36":{},"70":{},"76":{},"106":{},"133":{},"139":{},"194":{},"197":{}},"component":{}}],["eipconnectionrequest",{"_index":4393,"title":{},"name":{},"text":{"105":{},"205":{}},"component":{}}],["eipconnectionresponse\"?truefalseextract",{"_index":4411,"title":{},"name":{},"text":{"105":{},"205":{}},"component":{}}],["ej",{"_index":1099,"title":{},"name":{},"text":{"11":{},"181":{}},"component":{}}],["ejb3",{"_index":670,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["el",{"_index":3575,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["elasticsearch",{"_index":1546,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["elect",{"_index":912,"title":{},"name":{},"text":{"9":{},"10":{},"179":{},"180":{}},"component":{}}],["electr",{"_index":977,"title":{"85":{}},"name":{},"text":{"10":{},"78":{},"85":{},"180":{}},"component":{}}],["electron",{"_index":3048,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["element",{"_index":2294,"title":{},"name":{},"text":{"39":{},"40":{},"41":{},"46":{},"47":{},"48":{},"50":{},"70":{},"102":{},"103":{},"119":{},"120":{},"122":{},"133":{},"193":{},"199":{},"203":{},"204":{}},"component":{}}],["elimin",{"_index":1728,"title":{},"name":{},"text":{"21":{}},"component":{}}],["em",{"_index":4031,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["em.connect(myentity.class",{"_index":4037,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["em.read(myentity.class",{"_index":4032,"title":{},"name":{},"text":{"90":{}},"component":{}}],["email",{"_index":629,"title":{"37-3":{},"198-3":{}},"name":{},"text":{"7":{},"10":{},"12":{},"26":{},"34":{},"36":{},"37":{},"110":{},"177":{},"180":{},"187":{},"195":{},"197":{},"198":{}},"component":{}}],["email(",{"_index":1209,"title":{},"name":{},"text":{"14":{},"111":{}},"component":{}}],["embed",{"_index":3415,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["employ",{"_index":1051,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["empti",{"_index":628,"title":{},"name":{},"text":{"7":{},"8":{},"21":{},"37":{},"40":{},"50":{},"101":{},"103":{},"122":{},"177":{},"178":{},"198":{},"202":{},"204":{}},"component":{}}],["en",{"_index":3597,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["en.pdf",{"_index":3866,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["enabl",{"_index":87,"title":{"3-9":{},"56-2":{},"56-4":{},"159-2":{},"159-4":{}},"name":{},"text":{"3":{},"8":{},"12":{},"15":{},"16":{},"30":{},"31":{},"32":{},"36":{},"37":{},"40":{},"50":{},"56":{},"63":{},"78":{},"81":{},"82":{},"85":{},"90":{},"106":{},"107":{},"110":{},"122":{},"126":{},"141":{},"143":{},"151":{},"159":{},"173":{},"178":{},"197":{},"198":{}},"component":{}}],["encapsul",{"_index":4409,"title":{},"name":{},"text":{"105":{},"205":{}},"component":{}}],["encod",{"_index":3042,"title":{"103-24":{}},"name":{},"text":{"66":{},"75":{},"77":{},"80":{},"103":{},"129":{},"138":{},"144":{}},"component":{}}],["encoding.max",{"_index":3336,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["encoding.rec",{"_index":3333,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["encoding.send",{"_index":3335,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["encount",{"_index":2870,"title":{},"name":{},"text":{"56":{},"91":{},"103":{},"152":{},"159":{},"173":{},"204":{}},"component":{}}],["encourag",{"_index":236,"title":{},"name":{},"text":{"3":{},"9":{},"173":{},"179":{},"193":{}},"component":{}}],["encrypt",{"_index":1261,"title":{},"name":{},"text":{"15":{},"59":{},"78":{},"106":{},"141":{},"162":{}},"component":{}}],["end",{"_index":1119,"title":{},"name":{},"text":{"12":{},"17":{},"21":{},"26":{},"27":{},"34":{},"36":{},"37":{},"46":{},"47":{},"48":{},"50":{},"63":{},"75":{},"78":{},"83":{},"86":{},"95":{},"102":{},"103":{},"110":{},"113":{},"119":{},"120":{},"122":{},"126":{},"138":{},"141":{},"145":{},"147":{},"166":{},"182":{},"187":{},"188":{},"193":{},"195":{},"197":{},"198":{},"203":{},"204":{}},"component":{}}],["endian",{"_index":2302,"title":{},"name":{},"text":{"39":{},"70":{},"76":{},"133":{},"139":{},"199":{}},"component":{}}],["endors",{"_index":1206,"title":{},"name":{},"text":{"14":{},"111":{}},"component":{}}],["endpoint",{"_index":2341,"title":{},"name":{},"text":{"41":{},"59":{},"78":{},"115":{},"141":{},"162":{}},"component":{}}],["endtransact",{"_index":4235,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["enforc",{"_index":637,"title":{},"name":{},"text":{"8":{},"9":{},"82":{},"83":{},"93":{},"145":{},"163":{},"173":{},"178":{},"179":{}},"component":{}}],["engag",{"_index":1043,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["engin",{"_index":650,"title":{},"name":{},"text":{"8":{},"10":{},"17":{},"21":{},"83":{},"103":{},"113":{},"145":{},"178":{},"180":{},"182":{},"204":{}},"component":{}}],["english",{"_index":3839,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["enjoy",{"_index":978,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["enlac",{"_index":3581,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["enorm",{"_index":1153,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["enough",{"_index":1997,"title":{},"name":{},"text":{"31":{},"47":{},"48":{},"83":{},"120":{},"145":{},"173":{},"192":{}},"component":{}}],["ensur",{"_index":147,"title":{},"name":{},"text":{"3":{},"6":{},"9":{},"32":{},"34":{},"36":{},"37":{},"47":{},"48":{},"50":{},"82":{},"83":{},"87":{},"103":{},"120":{},"122":{},"145":{},"148":{},"173":{},"176":{},"179":{},"195":{},"197":{},"198":{}},"component":{}}],["ensurepip",{"_index":1984,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["enter",{"_index":800,"title":{},"name":{},"text":{"9":{},"26":{},"43":{},"56":{},"83":{},"145":{},"159":{},"179":{},"187":{}},"component":{}}],["enthusiast",{"_index":1058,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["entir",{"_index":791,"title":{},"name":{},"text":{"9":{},"17":{},"27":{},"43":{},"56":{},"113":{},"159":{},"179":{},"188":{}},"component":{}}],["entiti",{"_index":1204,"title":{"90-2":{}},"name":{},"text":{"14":{},"90":{},"111":{},"151":{}},"component":{}}],["entr",{"_index":3565,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["entri",{"_index":1224,"title":{},"name":{},"text":{"14":{},"15":{},"43":{},"56":{},"78":{},"106":{},"111":{},"141":{},"159":{}},"component":{}}],["enum",{"_index":3708,"title":{},"name":{},"text":{"83":{},"101":{},"103":{},"145":{},"202":{},"204":{}},"component":{}}],["environ",{"_index":1565,"title":{},"name":{},"text":{"15":{},"32":{},"41":{},"43":{},"55":{},"82":{},"83":{},"106":{},"115":{},"145":{},"157":{},"193":{}},"component":{}}],["episod",{"_index":361,"title":{},"name":{},"text":{"4":{},"13":{},"112":{},"175":{}},"component":{}}],["equal",{"_index":801,"title":{},"name":{},"text":{"9":{},"27":{},"34":{},"82":{},"83":{},"145":{},"179":{},"182":{},"188":{},"195":{}},"component":{}}],["equip",{"_index":3130,"title":{},"name":{},"text":{"71":{},"83":{},"134":{},"145":{}},"component":{}}],["equival",{"_index":3054,"title":{},"name":{},"text":{"66":{},"78":{},"129":{},"141":{}},"component":{}}],["erfurt",{"_index":331,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["err",{"_index":2466,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["error",{"_index":59,"title":{},"name":{},"text":{"2":{},"8":{},"15":{},"26":{},"30":{},"31":{},"32":{},"36":{},"46":{},"47":{},"48":{},"50":{},"55":{},"56":{},"59":{},"62":{},"71":{},"77":{},"82":{},"83":{},"90":{},"103":{},"106":{},"119":{},"120":{},"122":{},"125":{},"134":{},"140":{},"145":{},"157":{},"159":{},"162":{},"172":{},"178":{},"187":{},"197":{}},"component":{}}],["errorclass",{"_index":4273,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["errorcod",{"_index":4274,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["es",{"_index":3547,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["especi",{"_index":198,"title":{},"name":{},"text":{"3":{},"21":{},"26":{},"34":{},"36":{},"37":{},"41":{},"49":{},"50":{},"82":{},"83":{},"86":{},"91":{},"92":{},"103":{},"115":{},"122":{},"124":{},"145":{},"147":{},"152":{},"153":{},"173":{},"182":{},"187":{},"195":{},"197":{},"198":{}},"component":{}}],["establish",{"_index":55,"title":{},"name":{},"text":{"2":{},"9":{},"17":{},"48":{},"78":{},"83":{},"87":{},"92":{},"113":{},"141":{},"145":{},"148":{},"153":{},"172":{},"179":{}},"component":{}}],["et",{"_index":1302,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["etc",{"_index":562,"title":{},"name":{},"text":{"6":{},"78":{},"83":{},"86":{},"141":{},"145":{},"147":{},"176":{}},"component":{}}],["eth",{"_index":1522,"title":{"61":{},"123":{}},"name":{"61":{},"123":{}},"text":{"15":{},"36":{},"61":{},"106":{},"123":{},"197":{}},"component":{}}],["ethercat",{"_index":2351,"title":{},"name":{},"text":{"41":{},"115":{}},"component":{}}],["ethernet",{"_index":1931,"title":{"30-4":{},"31-4":{},"32-4":{}},"name":{},"text":{"32":{},"41":{},"63":{},"74":{},"75":{},"76":{},"81":{},"115":{},"126":{},"137":{},"138":{},"139":{},"143":{}},"component":{}}],["ethernet/ip",{"_index":1470,"title":{"70":{},"133":{}},"name":{},"text":{"15":{},"36":{},"70":{},"74":{},"106":{},"133":{},"137":{},"197":{}},"component":{}}],["ethernetip",{"_index":3120,"title":{},"name":{},"text":{"70":{},"133":{}},"component":{}}],["etx",{"_index":4214,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["eu",{"_index":410,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["euregjug",{"_index":358,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["europ",{"_index":397,"title":{},"name":{},"text":{"4":{},"10":{},"14":{},"111":{},"175":{}},"component":{}}],["european",{"_index":928,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["eval",{"_index":2008,"title":{},"name":{},"text":{"31":{},"192":{}},"component":{}}],["evalu",{"_index":4256,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["even",{"_index":118,"title":{},"name":{},"text":{"3":{},"5":{},"7":{},"8":{},"9":{},"15":{},"17":{},"21":{},"26":{},"27":{},"37":{},"41":{},"46":{},"48":{},"56":{},"66":{},"83":{},"86":{},"87":{},"90":{},"103":{},"106":{},"113":{},"119":{},"129":{},"145":{},"147":{},"148":{},"151":{},"159":{},"173":{},"174":{},"177":{},"178":{},"179":{},"182":{},"187":{},"188":{},"198":{},"204":{}},"component":{}}],["even_par",{"_index":3154,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["event",{"_index":319,"title":{"4":{},"175":{},"78-12":{},"83-16":{},"83-17":{},"83-18":{},"83-19":{},"83-20":{},"145-16":{},"145-17":{},"145-18":{},"145-19":{},"145-20":{}},"name":{},"text":{"4":{},"15":{},"36":{},"46":{},"47":{},"50":{},"55":{},"56":{},"75":{},"78":{},"83":{},"106":{},"119":{},"120":{},"122":{},"138":{},"141":{},"145":{},"157":{},"159":{},"175":{},"197":{}},"component":{}}],["event.getaddress(fieldnam",{"_index":2530,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["event.getfieldnam",{"_index":2526,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["event.getresponsecode(fieldnam",{"_index":2527,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["event.getresponsecode(tagnam",{"_index":2536,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["event.gettag(tagname).getaddressstr",{"_index":2537,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["event.gettagnam",{"_index":2535,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["event.getvalue(fieldname).getstr",{"_index":2533,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["event.getvalue(tagname).getstr",{"_index":2538,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["event_com",{"_index":3813,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["event_go",{"_index":3812,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["event_id",{"_index":3746,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["event_last_chang",{"_index":3814,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["event_st",{"_index":3809,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["eventid",{"_index":3392,"title":{},"name":{},"text":{"78":{},"83":{},"145":{}},"component":{}}],["eventloop",{"_index":3659,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["events/alarm",{"_index":3196,"title":{},"name":{},"text":{"74":{},"137":{}},"component":{}}],["eventtyp",{"_index":3381,"title":{},"name":{},"text":{"78":{}},"component":{}}],["eventu",{"_index":2273,"title":{},"name":{},"text":{"37":{},"66":{},"83":{},"90":{},"129":{},"145":{},"198":{}},"component":{}}],["everyth",{"_index":823,"title":{},"name":{},"text":{"9":{},"34":{},"37":{},"47":{},"48":{},"50":{},"82":{},"83":{},"120":{},"122":{},"145":{},"179":{},"195":{},"198":{}},"component":{}}],["everywher",{"_index":2070,"title":{},"name":{},"text":{"34":{},"36":{},"87":{},"148":{},"195":{},"197":{}},"component":{}}],["evolut",{"_index":1149,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["exact",{"_index":1662,"title":{},"name":{},"text":{"17":{},"70":{},"113":{},"133":{}},"component":{}}],["exactli",{"_index":2058,"title":{},"name":{},"text":{"34":{},"36":{},"39":{},"46":{},"47":{},"90":{},"91":{},"103":{},"119":{},"120":{},"151":{},"152":{},"195":{},"197":{},"199":{},"204":{}},"component":{}}],["exampl",{"_index":231,"title":{"102":{},"203":{},"54-2":{},"77-17":{},"78-9":{},"84-9":{},"88-2":{},"90-3":{},"90-4":{},"92-2":{},"101-1":{},"140-17":{},"141-9":{},"146-9":{},"150-2":{},"151-2":{},"153-2":{},"158-2":{},"202-1":{}},"name":{},"text":{"3":{},"15":{},"21":{},"27":{},"30":{},"31":{},"32":{},"39":{},"41":{},"46":{},"47":{},"48":{},"50":{},"54":{},"55":{},"56":{},"58":{},"59":{},"62":{},"66":{},"71":{},"75":{},"76":{},"77":{},"78":{},"80":{},"81":{},"83":{},"84":{},"85":{},"86":{},"87":{},"88":{},"90":{},"91":{},"92":{},"101":{},"103":{},"106":{},"115":{},"119":{},"120":{},"122":{},"125":{},"129":{},"134":{},"138":{},"139":{},"140":{},"141":{},"143":{},"144":{},"145":{},"146":{},"147":{},"148":{},"150":{},"152":{},"153":{},"157":{},"158":{},"159":{},"160":{},"162":{},"173":{},"182":{},"188":{},"189":{},"199":{},"202":{},"204":{}},"component":{}}],["examples/tree/master/plc4x",{"_index":2914,"title":{},"name":{},"text":{"58":{},"160":{}},"component":{}}],["exccept",{"_index":2644,"title":{},"name":{},"text":{"48":{}},"component":{}}],["exce",{"_index":2714,"title":{},"name":{},"text":{"50":{},"82":{},"83":{},"122":{},"145":{}},"component":{}}],["exceed",{"_index":3356,"title":{},"name":{},"text":{"78":{},"82":{},"83":{},"141":{},"145":{}},"component":{}}],["except",{"_index":604,"title":{},"name":{},"text":{"6":{},"14":{},"15":{},"31":{},"47":{},"48":{},"50":{},"55":{},"71":{},"77":{},"78":{},"82":{},"83":{},"87":{},"92":{},"101":{},"103":{},"106":{},"111":{},"120":{},"122":{},"134":{},"140":{},"141":{},"145":{},"148":{},"153":{},"157":{},"176":{},"192":{},"202":{},"204":{}},"component":{}}],["excess",{"_index":3498,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["exchang",{"_index":2974,"title":{},"name":{},"text":{"62":{},"66":{},"78":{},"82":{},"83":{},"125":{},"129":{},"141":{},"145":{}},"component":{}}],["exclud",{"_index":208,"title":{},"name":{},"text":{"3":{},"21":{},"173":{},"182":{}},"component":{}}],["exclus",{"_index":1812,"title":{},"name":{},"text":{"26":{},"37":{},"187":{},"198":{}},"component":{}}],["exec",{"_index":2264,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["execut",{"_index":124,"title":{"83-1":{},"145-1":{}},"name":{},"text":{"3":{},"5":{},"8":{},"14":{},"15":{},"26":{},"27":{},"29":{},"30":{},"31":{},"34":{},"36":{},"37":{},"46":{},"47":{},"48":{},"50":{},"56":{},"59":{},"62":{},"81":{},"82":{},"83":{},"87":{},"88":{},"91":{},"92":{},"101":{},"103":{},"106":{},"111":{},"119":{},"120":{},"122":{},"125":{},"143":{},"145":{},"148":{},"150":{},"152":{},"153":{},"159":{},"162":{},"173":{},"174":{},"178":{},"187":{},"188":{},"189":{},"191":{},"192":{},"193":{},"195":{},"197":{},"198":{},"202":{},"204":{}},"component":{}}],["exeut",{"_index":2453,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["exist",{"_index":600,"title":{},"name":{},"text":{"6":{},"12":{},"15":{},"17":{},"21":{},"26":{},"27":{},"30":{},"37":{},"40":{},"71":{},"78":{},"88":{},"93":{},"103":{},"106":{},"110":{},"113":{},"134":{},"141":{},"150":{},"163":{},"174":{},"176":{},"182":{},"187":{},"188":{},"198":{},"204":{}},"component":{}}],["expand",{"_index":280,"title":{},"name":{},"text":{"3":{},"77":{},"140":{},"173":{}},"component":{}}],["expans",{"_index":3832,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["expect",{"_index":284,"title":{},"name":{},"text":{"3":{},"6":{},"9":{},"21":{},"29":{},"39":{},"55":{},"66":{},"78":{},"82":{},"83":{},"86":{},"103":{},"129":{},"141":{},"145":{},"147":{},"157":{},"173":{},"176":{},"179":{},"182":{},"189":{},"199":{},"204":{}},"component":{}}],["expedit",{"_index":3056,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["expens",{"_index":1643,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["experi",{"_index":611,"title":{},"name":{},"text":{"7":{},"21":{},"83":{},"145":{},"177":{},"182":{}},"component":{}}],["experienc",{"_index":976,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["experiment",{"_index":1713,"title":{},"name":{},"text":{"21":{},"41":{},"82":{},"173":{},"182":{}},"component":{}}],["expert",{"_index":4013,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["expir",{"_index":2864,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["expires\":nul",{"_index":2854,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["expiri",{"_index":3329,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["explain",{"_index":296,"title":{},"name":{},"text":{"3":{},"6":{},"36":{},"65":{},"87":{},"103":{},"128":{},"148":{},"173":{},"176":{},"197":{},"204":{}},"component":{}}],["explan",{"_index":944,"title":{},"name":{},"text":{"9":{},"34":{},"36":{},"37":{},"82":{},"83":{},"103":{},"145":{},"179":{},"195":{},"197":{},"198":{},"204":{}},"component":{}}],["explicit",{"_index":1333,"title":{},"name":{},"text":{"15":{},"46":{},"106":{},"119":{}},"component":{}}],["explicitli",{"_index":66,"title":{},"name":{},"text":{"2":{},"41":{},"46":{},"47":{},"62":{},"75":{},"78":{},"103":{},"115":{},"119":{},"120":{},"125":{},"138":{},"141":{},"172":{}},"component":{}}],["exploit",{"_index":1635,"title":{},"name":{},"text":{"17":{},"83":{},"113":{},"145":{}},"component":{}}],["explor",{"_index":2391,"title":{},"name":{},"text":{"43":{}},"component":{}}],["export",{"_index":1301,"title":{},"name":{},"text":{"15":{},"36":{},"55":{},"106":{},"157":{},"197":{}},"component":{}}],["expos",{"_index":1167,"title":{},"name":{},"text":{"13":{},"112":{}},"component":{}}],["express",{"_index":2999,"title":{},"name":{},"text":{"63":{},"75":{},"101":{},"103":{},"126":{},"138":{},"202":{},"204":{}},"component":{}}],["extend",{"_index":1248,"title":{"17-4":{},"113-4":{}},"name":{},"text":{"15":{},"17":{},"30":{},"31":{},"32":{},"39":{},"40":{},"77":{},"82":{},"83":{},"98":{},"101":{},"106":{},"113":{},"140":{},"145":{},"170":{},"199":{},"202":{}},"component":{}}],["extens",{"_index":2405,"title":{},"name":{},"text":{"43":{},"78":{},"141":{}},"component":{}}],["extent",{"_index":855,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["extern",{"_index":1471,"title":{},"name":{},"text":{"15":{},"21":{},"25":{},"37":{},"41":{},"75":{},"78":{},"83":{},"91":{},"106":{},"115":{},"138":{},"141":{},"145":{},"152":{},"182":{},"186":{},"198":{}},"component":{}}],["extra",{"_index":2776,"title":{},"name":{},"text":{"55":{},"173":{}},"component":{}}],["extract",{"_index":1151,"title":{},"name":{},"text":{"12":{},"37":{},"83":{},"105":{},"110":{},"145":{},"198":{},"205":{}},"component":{}}],["extras/tree/develop/plc4j/examples/hello",{"_index":2741,"title":{},"name":{},"text":{"54":{}},"component":{}}],["extrem",{"_index":1160,"title":{},"name":{},"text":{"12":{},"17":{},"41":{},"48":{},"50":{},"83":{},"110":{},"113":{},"115":{},"122":{},"145":{},"173":{}},"component":{}}],["ey",{"_index":2678,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["f",{"_index":1555,"title":{},"name":{},"text":{"15":{},"37":{},"83":{},"106":{},"145":{},"198":{}},"component":{}}],["f2a8624db28a",{"_index":3377,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["f2a8624db28a;a=value;r",{"_index":3379,"title":{},"name":{},"text":{"78":{}},"component":{}}],["f2a8624db28a;r",{"_index":3378,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["f\\n",{"_index":2491,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["facad",{"_index":3006,"title":{},"name":{},"text":{"65":{},"93":{},"128":{},"163":{}},"component":{}}],["face",{"_index":950,"title":{},"name":{},"text":{"9":{},"12":{},"49":{},"110":{},"124":{},"179":{}},"component":{}}],["fachkonferenz",{"_index":383,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["facilit",{"_index":3680,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["fact",{"_index":1660,"title":{},"name":{},"text":{"17":{},"47":{},"48":{},"50":{},"83":{},"113":{},"120":{},"122":{},"145":{}},"component":{}}],["factor",{"_index":1639,"title":{},"name":{},"text":{"17":{},"55":{},"63":{},"75":{},"83":{},"95":{},"113":{},"126":{},"138":{},"145":{},"157":{},"166":{}},"component":{}}],["factori",{"_index":1193,"title":{},"name":{},"text":{"13":{},"112":{}},"component":{}}],["fail",{"_index":658,"title":{},"name":{},"text":{"8":{},"15":{},"17":{},"21":{},"26":{},"30":{},"31":{},"32":{},"36":{},"37":{},"55":{},"66":{},"82":{},"83":{},"87":{},"103":{},"106":{},"113":{},"129":{},"145":{},"148":{},"157":{},"178":{},"182":{},"187":{},"193":{},"197":{},"198":{}},"component":{}}],["failsafearglin",{"_index":1928,"title":{},"name":{},"text":{"29":{},"189":{}},"component":{}}],["failur",{"_index":1139,"title":{},"name":{},"text":{"12":{},"17":{},"39":{},"55":{},"56":{},"110":{},"113":{},"157":{},"159":{},"173":{},"199":{}},"component":{}}],["fairli",{"_index":2370,"title":{},"name":{},"text":{"41":{},"43":{}},"component":{}}],["faith",{"_index":899,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["fall",{"_index":3629,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["fallo",{"_index":3579,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["fals",{"_index":2291,"title":{},"name":{},"text":{"39":{},"49":{},"54":{},"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"95":{},"122":{},"123":{},"124":{},"125":{},"126":{},"127":{},"133":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"158":{},"166":{},"193":{},"199":{}},"component":{}}],["famili",{"_index":3753,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["familiar",{"_index":2337,"title":{},"name":{},"text":{"41":{},"46":{},"115":{},"119":{}},"component":{}}],["faq",{"_index":564,"title":{},"name":{},"text":{"6":{},"176":{}},"component":{}}],["far",{"_index":260,"title":{},"name":{},"text":{"3":{},"9":{},"78":{},"83":{},"145":{},"173":{},"179":{}},"component":{}}],["fashion",{"_index":2573,"title":{},"name":{},"text":{"47":{},"50":{},"72":{},"120":{},"122":{},"135":{}},"component":{}}],["fast",{"_index":3975,"title":{},"name":{},"text":{"86":{},"147":{}},"component":{}}],["faster",{"_index":927,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["fatal",{"_index":1973,"title":{},"name":{},"text":{"30":{}},"component":{}}],["fault",{"_index":3763,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["favor",{"_index":2143,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["favorit",{"_index":2955,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["favourit",{"_index":1084,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["fd",{"_index":3038,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["feat(plc4go/bacnet",{"_index":470,"title":{},"name":{},"text":{"5":{},"174":{}},"component":{}}],["featur",{"_index":467,"title":{"15-3":{},"15-8":{},"15-14":{},"15-18":{},"15-22":{},"15-26":{},"15-30":{},"15-34":{},"15-39":{},"15-43":{},"74-1":{},"106-3":{},"106-8":{},"106-14":{},"106-18":{},"106-22":{},"106-26":{},"106-30":{},"106-34":{},"106-39":{},"106-43":{},"137-2":{}},"name":{},"text":{"5":{},"9":{},"15":{},"16":{},"22":{},"34":{},"36":{},"41":{},"47":{},"48":{},"50":{},"78":{},"83":{},"106":{},"107":{},"120":{},"122":{},"141":{},"145":{},"174":{},"179":{},"183":{},"195":{},"197":{}},"component":{}}],["feature.xml",{"_index":1486,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["februari",{"_index":356,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["feel",{"_index":529,"title":{},"name":{},"text":{"5":{},"27":{},"30":{},"174":{},"188":{}},"component":{}}],["feinauer",{"_index":1026,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["fellow",{"_index":2176,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["fetch",{"_index":520,"title":{},"name":{},"text":{"5":{},"7":{},"16":{},"36":{},"82":{},"83":{},"90":{},"107":{},"145":{},"151":{},"174":{},"177":{},"197":{}},"component":{}}],["few",{"_index":926,"title":{},"name":{},"text":{"9":{},"29":{},"32":{},"34":{},"36":{},"43":{},"54":{},"56":{},"66":{},"83":{},"91":{},"129":{},"145":{},"152":{},"158":{},"159":{},"179":{},"189":{},"195":{},"197":{}},"component":{}}],["fiction",{"_index":1725,"title":{},"name":{},"text":{"21":{}},"component":{}}],["field",{"_index":981,"title":{"103-3":{},"103-4":{},"103-5":{},"103-6":{},"103-7":{},"103-8":{},"103-9":{},"103-10":{},"103-11":{},"103-12":{},"103-13":{},"103-14":{},"103-15":{},"103-16":{},"103-17":{},"103-18":{},"103-19":{},"103-20":{},"204-3":{},"204-4":{},"204-5":{},"204-6":{},"204-7":{},"204-8":{},"204-9":{},"204-10":{},"204-11":{},"204-12":{},"204-13":{},"204-14":{},"204-15":{},"204-16":{}},"name":{},"text":{"10":{},"15":{},"26":{},"41":{},"43":{},"46":{},"47":{},"48":{},"50":{},"54":{},"55":{},"56":{},"66":{},"72":{},"76":{},"77":{},"78":{},"80":{},"81":{},"83":{},"84":{},"85":{},"90":{},"91":{},"92":{},"103":{},"104":{},"106":{},"119":{},"120":{},"122":{},"129":{},"135":{},"139":{},"140":{},"141":{},"143":{},"144":{},"145":{},"146":{},"152":{},"153":{},"157":{},"158":{},"159":{},"180":{},"187":{},"204":{},"206":{}},"component":{}}],["field1",{"_index":2490,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["field2",{"_index":2493,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["fieldaddress",{"_index":4061,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["fieldbu",{"_index":2349,"title":{},"name":{},"text":{"41":{},"62":{},"83":{},"115":{},"125":{},"145":{}},"component":{}}],["fieldnam",{"_index":2524,"title":{},"name":{},"text":{"46":{},"50":{},"119":{},"122":{}},"component":{}}],["fieldqueri",{"_index":4091,"title":{},"name":{},"text":{"92":{},"153":{}},"component":{}}],["figur",{"_index":2676,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["file",{"_index":244,"title":{"36-16":{},"59-2":{},"91-6":{},"152-6":{},"162-2":{},"197-16":{}},"name":{},"text":{"3":{},"5":{},"9":{},"10":{},"15":{},"21":{},"26":{},"27":{},"30":{},"34":{},"36":{},"37":{},"39":{},"40":{},"43":{},"46":{},"49":{},"50":{},"55":{},"56":{},"59":{},"63":{},"75":{},"77":{},"78":{},"81":{},"86":{},"91":{},"95":{},"101":{},"103":{},"106":{},"119":{},"122":{},"124":{},"126":{},"138":{},"140":{},"141":{},"143":{},"147":{},"152":{},"157":{},"159":{},"162":{},"166":{},"173":{},"174":{},"179":{},"180":{},"182":{},"187":{},"188":{},"193":{},"195":{},"197":{},"198":{},"199":{},"202":{}},"component":{}}],["file\":\"test.sink.txt",{"_index":2811,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["file:/users/christofer.dutz/projects/apache/plc4x/target/jqassistant/stor",{"_index":701,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["filehash",{"_index":2258,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["filesystem",{"_index":3321,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["fileutils.readfiletostring(outputfil",{"_index":4182,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["fileutils.writestringtofil",{"_index":4180,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["fill",{"_index":1550,"title":{},"name":{},"text":{"15":{},"43":{},"90":{},"106":{},"179":{}},"component":{}}],["filter",{"_index":2998,"title":{},"name":{},"text":{"63":{},"75":{},"78":{},"81":{},"126":{},"138":{},"143":{}},"component":{}}],["filtered/plc4x",{"_index":2227,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["final",{"_index":938,"title":{},"name":{},"text":{"9":{},"34":{},"36":{},"39":{},"46":{},"47":{},"82":{},"83":{},"101":{},"119":{},"120":{},"145":{},"179":{},"195":{},"197":{},"199":{},"202":{}},"component":{}}],["find",{"_index":286,"title":{},"name":{},"text":{"3":{},"21":{},"23":{},"27":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"46":{},"49":{},"76":{},"78":{},"82":{},"83":{},"86":{},"103":{},"119":{},"124":{},"139":{},"141":{},"145":{},"147":{},"173":{},"182":{},"184":{},"188":{},"193":{},"195":{},"197":{},"198":{}},"component":{}}],["fine",{"_index":522,"title":{},"name":{},"text":{"5":{},"34":{},"36":{},"41":{},"47":{},"50":{},"77":{},"82":{},"83":{},"86":{},"103":{},"115":{},"120":{},"122":{},"145":{},"147":{},"174":{},"195":{},"197":{},"204":{}},"component":{}}],["finish",{"_index":494,"title":{},"name":{},"text":{"5":{},"8":{},"31":{},"34":{},"36":{},"43":{},"46":{},"56":{},"91":{},"119":{},"152":{},"159":{},"174":{},"178":{},"195":{},"197":{}},"component":{}}],["finsh",{"_index":2456,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["firmata",{"_index":1478,"title":{"71":{},"134":{}},"name":{"71":{},"134":{}},"text":{"15":{},"36":{},"71":{},"74":{},"106":{},"134":{},"137":{},"197":{}},"component":{}}],["firmwar",{"_index":3648,"title":{},"name":{},"text":{"83":{},"85":{},"145":{}},"component":{}}],["first",{"_index":407,"title":{},"name":{},"text":{"4":{},"5":{},"7":{},"10":{},"15":{},"17":{},"21":{},"26":{},"32":{},"34":{},"36":{},"37":{},"46":{},"47":{},"48":{},"50":{},"71":{},"76":{},"77":{},"83":{},"87":{},"90":{},"91":{},"92":{},"101":{},"103":{},"106":{},"113":{},"119":{},"120":{},"122":{},"134":{},"139":{},"140":{},"145":{},"148":{},"151":{},"152":{},"153":{},"174":{},"175":{},"177":{},"180":{},"182":{},"187":{},"195":{},"197":{},"198":{},"202":{},"204":{}},"component":{}}],["firstli",{"_index":1841,"title":{},"name":{},"text":{"26":{}},"component":{}}],["firt",{"_index":3789,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["fit",{"_index":2189,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["fix",{"_index":9,"title":{"2-3":{},"15-5":{},"15-9":{},"15-12":{},"15-16":{},"15-20":{},"15-24":{},"15-28":{},"15-32":{},"15-36":{},"15-41":{},"15-45":{},"106-5":{},"106-9":{},"106-12":{},"106-16":{},"106-20":{},"106-24":{},"106-28":{},"106-32":{},"106-36":{},"106-41":{},"106-45":{},"172-3":{}},"name":{},"text":{"2":{},"7":{},"15":{},"20":{},"29":{},"34":{},"36":{},"49":{},"63":{},"75":{},"83":{},"98":{},"103":{},"106":{},"114":{},"124":{},"126":{},"138":{},"145":{},"170":{},"172":{},"177":{},"189":{},"195":{},"197":{},"204":{}},"component":{}}],["flag",{"_index":1554,"title":{},"name":{},"text":{"15":{},"98":{},"103":{},"106":{},"170":{},"204":{}},"component":{}}],["flags_mark",{"_index":3518,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["flavor",{"_index":1733,"title":{},"name":{},"text":{"21":{},"66":{},"90":{},"129":{},"182":{}},"component":{}}],["flavornam",{"_index":4176,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["flex",{"_index":195,"title":{},"name":{},"text":{"3":{},"10":{},"173":{},"180":{}},"component":{}}],["flexibl",{"_index":1130,"title":{"17-2":{},"113-2":{}},"name":{},"text":{"12":{},"17":{},"82":{},"83":{},"93":{},"110":{},"113":{},"145":{},"163":{}},"component":{}}],["flexibu",{"_index":341,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["fli",{"_index":2098,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["float",{"_index":1288,"title":{},"name":{},"text":{"15":{},"54":{},"63":{},"70":{},"75":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"103":{},"106":{},"126":{},"133":{},"138":{},"139":{},"140":{},"141":{},"143":{},"145":{},"146":{},"158":{},"204":{}},"component":{}}],["floor",{"_index":1123,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["flow",{"_index":2900,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["flux",{"_index":2484,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["fm",{"_index":3740,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["fmt.printf(\"\\n\\nresult",{"_index":2489,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["fmt.printf(\"couldn't",{"_index":2459,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["fmt.printf(\"error",{"_index":2441,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["fmt.printf(\"got",{"_index":2531,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["fmt.printf(\"thi",{"_index":2463,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["focu",{"_index":1073,"title":{},"name":{},"text":{"10":{},"15":{},"21":{},"106":{},"180":{}},"component":{}}],["focus",{"_index":1037,"title":{},"name":{},"text":{"10":{},"43":{},"180":{}},"component":{}}],["folder",{"_index":1975,"title":{},"name":{},"text":{"30":{}},"component":{}}],["folk",{"_index":3966,"title":{},"name":{},"text":{"86":{},"147":{}},"component":{}}],["follow",{"_index":210,"title":{},"name":{},"text":{"3":{},"5":{},"6":{},"8":{},"9":{},"12":{},"14":{},"15":{},"22":{},"26":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"39":{},"41":{},"46":{},"47":{},"48":{},"49":{},"50":{},"55":{},"59":{},"71":{},"74":{},"75":{},"76":{},"77":{},"78":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"91":{},"92":{},"93":{},"102":{},"103":{},"106":{},"110":{},"111":{},"115":{},"119":{},"120":{},"122":{},"124":{},"134":{},"137":{},"138":{},"139":{},"140":{},"141":{},"143":{},"144":{},"145":{},"146":{},"151":{},"152":{},"153":{},"157":{},"162":{},"163":{},"173":{},"174":{},"176":{},"178":{},"179":{},"183":{},"187":{},"189":{},"191":{},"192":{},"195":{},"197":{},"198":{},"199":{},"201":{},"203":{},"204":{}},"component":{}}],["fontawesom",{"_index":1871,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["food",{"_index":998,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["for(int",{"_index":2586,"title":{},"name":{},"text":{"47":{},"50":{},"88":{},"120":{},"122":{},"150":{}},"component":{}}],["forbidden",{"_index":1793,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["forc",{"_index":746,"title":{},"name":{},"text":{"8":{},"9":{},"66":{},"70":{},"76":{},"90":{},"129":{},"178":{},"179":{}},"component":{}}],["fork",{"_index":439,"title":{"5-4":{},"174-4":{}},"name":{},"text":{"5":{},"174":{}},"component":{}}],["form",{"_index":209,"title":{"5-1":{},"174-1":{}},"name":{},"text":{"3":{},"5":{},"6":{},"9":{},"17":{},"21":{},"27":{},"34":{},"36":{},"37":{},"41":{},"46":{},"47":{},"54":{},"55":{},"65":{},"83":{},"91":{},"101":{},"103":{},"113":{},"115":{},"119":{},"120":{},"128":{},"145":{},"152":{},"157":{},"158":{},"173":{},"174":{},"176":{},"179":{},"182":{},"188":{},"195":{},"197":{},"198":{},"202":{},"204":{}},"component":{}}],["formal",{"_index":4482,"title":{},"name":{},"text":{"198":{}},"component":{}}],["format",{"_index":749,"title":{"103":{},"204":{},"66-5":{},"70-3":{},"71-3":{},"72-5":{},"75-5":{},"76-3":{},"76-5":{},"77-11":{},"77-13":{},"78-7":{},"80-4":{},"80-6":{},"81-4":{},"82-7":{},"82-8":{},"83-10":{},"83-11":{},"84-2":{},"84-4":{},"85-3":{},"85-5":{},"129-5":{},"133-3":{},"134-3":{},"135-5":{},"138-5":{},"139-3":{},"139-5":{},"140-11":{},"140-13":{},"141-7":{},"143-4":{},"144-4":{},"144-6":{},"145-10":{},"145-11":{},"146-2":{},"146-4":{}},"name":{},"text":{"8":{},"9":{},"15":{},"21":{},"26":{},"34":{},"36":{},"37":{},"41":{},"43":{},"55":{},"62":{},"66":{},"70":{},"71":{},"72":{},"76":{},"77":{},"78":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"101":{},"103":{},"106":{},"115":{},"125":{},"129":{},"133":{},"134":{},"135":{},"139":{},"140":{},"141":{},"143":{},"144":{},"145":{},"146":{},"157":{},"178":{},"179":{},"182":{},"187":{},"195":{},"197":{},"198":{},"202":{},"204":{}},"component":{}}],["formatt",{"_index":4157,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["formatter.formatsourceandfiximport",{"_index":4181,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["formatterexcept",{"_index":4184,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["forward",{"_index":22,"title":{},"name":{},"text":{"2":{},"3":{},"4":{},"5":{},"21":{},"65":{},"92":{},"128":{},"153":{},"172":{},"173":{},"174":{},"175":{},"182":{}},"component":{}}],["fossa",{"_index":426,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["found",{"_index":153,"title":{},"name":{},"text":{"3":{},"4":{},"8":{},"9":{},"14":{},"15":{},"26":{},"32":{},"34":{},"36":{},"37":{},"54":{},"56":{},"71":{},"76":{},"91":{},"92":{},"103":{},"106":{},"111":{},"134":{},"139":{},"152":{},"153":{},"158":{},"159":{},"173":{},"175":{},"178":{},"179":{},"193":{},"195":{},"197":{},"198":{},"204":{}},"component":{}}],["foundat",{"_index":563,"title":{},"name":{},"text":{"6":{},"9":{},"10":{},"14":{},"78":{},"101":{},"111":{},"141":{},"176":{},"179":{},"180":{},"202":{}},"component":{}}],["founder",{"_index":1027,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["four",{"_index":1763,"title":{},"name":{},"text":{"21":{},"83":{},"145":{}},"component":{}}],["fragment",{"_index":2695,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["frame",{"_index":2346,"title":{},"name":{},"text":{"41":{},"65":{},"66":{},"72":{},"93":{},"98":{},"102":{},"115":{},"128":{},"129":{},"135":{},"163":{},"170":{},"203":{}},"component":{}}],["framedata",{"_index":3019,"title":{},"name":{},"text":{"65":{},"128":{}},"component":{}}],["framework",{"_index":1627,"title":{},"name":{},"text":{"17":{},"21":{},"36":{},"39":{},"41":{},"78":{},"92":{},"113":{},"115":{},"141":{},"153":{},"182":{},"197":{},"199":{}},"component":{}}],["franca",{"_index":3638,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["frankfurt",{"_index":343,"title":{},"name":{},"text":{"4":{},"10":{},"175":{},"180":{}},"component":{}}],["frecuencia",{"_index":3571,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["free",{"_index":530,"title":{},"name":{},"text":{"5":{},"11":{},"14":{},"17":{},"27":{},"30":{},"111":{},"113":{},"174":{},"181":{},"188":{}},"component":{}}],["freed",{"_index":1648,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["freedom",{"_index":3836,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["freeli",{"_index":1650,"title":{},"name":{},"text":{"17":{},"83":{},"113":{},"145":{}},"component":{}}],["freemark",{"_index":1688,"title":{"101":{},"202":{}},"name":{"101":{},"202":{}},"text":{"21":{},"101":{},"182":{},"202":{}},"component":{}}],["freemarker.template.configur",{"_index":4144,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["freemarker.template.templ",{"_index":4145,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["freemarkerconfigur",{"_index":4161,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["freemarkerconfiguration.gettemplate(\"templates/java/data",{"_index":4173,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["freemarkerconfiguration.gettemplate(\"templates/java/enum",{"_index":4171,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["freemarkerconfiguration.gettemplate(\"templates/java/io",{"_index":4168,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["freemarkerconfiguration.gettemplate(\"templates/java/pojo",{"_index":4166,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["freemarkerlanguageoutput",{"_index":4132,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["freemarkerlanguagetemplatehelp",{"_index":4137,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["freez",{"_index":2056,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["frequenc",{"_index":1564,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["fresh",{"_index":1992,"title":{},"name":{},"text":{"31":{}},"component":{}}],["friendli",{"_index":455,"title":{},"name":{},"text":{"5":{},"174":{}},"component":{}}],["front",{"_index":2237,"title":{},"name":{},"text":{"36":{},"83":{},"145":{},"197":{}},"component":{}}],["fssl",{"_index":1990,"title":{},"name":{},"text":{"31":{},"192":{}},"component":{}}],["fulfil",{"_index":1225,"title":{},"name":{},"text":{"14":{},"34":{},"36":{},"111":{},"195":{},"197":{}},"component":{}}],["full",{"_index":481,"title":{},"name":{},"text":{"5":{},"7":{},"9":{},"17":{},"34":{},"36":{},"37":{},"39":{},"41":{},"43":{},"62":{},"65":{},"66":{},"71":{},"78":{},"82":{},"83":{},"84":{},"102":{},"103":{},"113":{},"115":{},"125":{},"128":{},"129":{},"134":{},"141":{},"145":{},"146":{},"174":{},"177":{},"179":{},"183":{},"195":{},"197":{},"198":{},"199":{},"203":{},"204":{}},"component":{}}],["fulli",{"_index":254,"title":{},"name":{},"text":{"3":{},"15":{},"21":{},"41":{},"47":{},"48":{},"50":{},"74":{},"75":{},"93":{},"106":{},"115":{},"120":{},"122":{},"137":{},"138":{},"163":{},"173":{},"182":{}},"component":{}}],["func",{"_index":2422,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["function",{"_index":1254,"title":{},"name":{},"text":{"15":{},"17":{},"26":{},"46":{},"47":{},"48":{},"50":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"92":{},"106":{},"113":{},"119":{},"120":{},"122":{},"140":{},"141":{},"143":{},"145":{},"146":{},"153":{},"173":{},"187":{}},"component":{}}],["functionalinterfac",{"_index":4079,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["functions/librari",{"_index":3661,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["fundament",{"_index":1143,"title":{},"name":{},"text":{"12":{},"83":{},"110":{},"145":{}},"component":{}}],["further",{"_index":1506,"title":{},"name":{},"text":{"15":{},"21":{},"56":{},"66":{},"78":{},"82":{},"83":{},"92":{},"102":{},"106":{},"129":{},"145":{},"159":{},"182":{},"203":{}},"component":{}}],["futher",{"_index":4432,"title":{},"name":{},"text":{"153":{}},"component":{}}],["futur",{"_index":428,"title":{},"name":{},"text":{"4":{},"17":{},"46":{},"82":{},"83":{},"91":{},"113":{},"119":{},"145":{},"152":{},"173":{},"174":{},"175":{},"183":{}},"component":{}}],["fxr",{"_index":1980,"title":{},"name":{},"text":{"30":{}},"component":{}}],["für",{"_index":421,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["g",{"_index":3383,"title":{},"name":{},"text":{"78":{},"82":{},"83":{},"141":{},"145":{}},"component":{}}],["g120",{"_index":3573,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["g120c",{"_index":3667,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["gain",{"_index":1115,"title":{},"name":{},"text":{"12":{},"15":{},"106":{},"110":{}},"component":{}}],["gap",{"_index":2389,"title":{},"name":{},"text":{"43":{}},"component":{}}],["garcía",{"_index":983,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["gateway",{"_index":1112,"title":{},"name":{},"text":{"12":{},"59":{},"75":{},"110":{},"138":{},"162":{}},"component":{}}],["gather",{"_index":646,"title":{},"name":{},"text":{"8":{},"12":{},"110":{},"178":{}},"component":{}}],["gb",{"_index":395,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["gcc",{"_index":1932,"title":{"30-5":{},"31-5":{},"32-5":{},"191-3":{},"192-3":{},"193-3":{}},"name":{},"text":{"30":{},"31":{},"32":{},"191":{},"192":{},"193":{}},"component":{}}],["gener",{"_index":192,"title":{"21":{},"27":{},"41":{},"72":{},"115":{},"135":{},"182":{},"188":{},"34-1":{},"76-5":{},"77-13":{},"80-6":{},"82-8":{},"83-11":{},"84-4":{},"85-5":{},"139-5":{},"140-13":{},"144-6":{},"145-11":{},"146-4":{},"195-1":{}},"name":{"41":{},"115":{}},"text":{"3":{},"4":{},"5":{},"7":{},"8":{},"9":{},"14":{},"15":{},"17":{},"21":{},"22":{},"26":{},"27":{},"28":{},"29":{},"34":{},"36":{},"37":{},"39":{},"40":{},"41":{},"43":{},"46":{},"47":{},"48":{},"49":{},"50":{},"54":{},"55":{},"56":{},"72":{},"76":{},"77":{},"78":{},"82":{},"83":{},"85":{},"91":{},"92":{},"101":{},"103":{},"106":{},"111":{},"113":{},"115":{},"119":{},"120":{},"122":{},"124":{},"135":{},"139":{},"140":{},"141":{},"145":{},"152":{},"153":{},"157":{},"158":{},"159":{},"173":{},"174":{},"175":{},"177":{},"178":{},"179":{},"182":{},"183":{},"187":{},"188":{},"190":{},"193":{},"195":{},"197":{},"198":{},"199":{},"201":{},"202":{},"204":{}},"component":{}}],["generate(fil",{"_index":1772,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["generation/target",{"_index":2118,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["generation/target/checkout/cod",{"_index":2117,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["generation/{0.13.0",{"_index":2086,"title":{},"name":{},"text":{"34":{}},"component":{}}],["generation/{cod",{"_index":2065,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["generation/{minor",{"_index":2063,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["generation/{releas",{"_index":2085,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["generationexcept",{"_index":1754,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["genericcan",{"_index":3176,"title":{},"name":{"72":{},"135":{}},"text":{"72":{},"135":{}},"component":{}}],["genrat",{"_index":1709,"title":{},"name":{},"text":{"21":{}},"component":{}}],["geograph",{"_index":3926,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["ger",{"_index":332,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["german",{"_index":1186,"title":{},"name":{},"text":{"13":{},"62":{},"83":{},"112":{},"125":{},"145":{}},"component":{}}],["germani",{"_index":975,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["get",{"_index":606,"title":{"42":{},"44":{},"45":{},"46":{},"47":{},"48":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"7-1":{},"7-4":{},"86-1":{},"91-1":{},"147-1":{},"152-1":{},"177-1":{},"177-4":{}},"name":{},"text":{"7":{},"30":{},"42":{},"47":{},"48":{},"50":{},"56":{},"75":{},"88":{},"116":{},"120":{},"122":{},"138":{},"150":{},"159":{},"177":{},"191":{}},"component":{}}],["getallattribut",{"_index":4394,"title":{},"name":{},"text":{"105":{},"205":{}},"component":{}}],["getcomplextypetemplates(configur",{"_index":4163,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["getconnection(\"s7://192.168.1.51?remot",{"_index":3713,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["getdataiotemplates(configur",{"_index":4172,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["getenumtypetemplates(configur",{"_index":4169,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["gethelp",{"_index":4187,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["gethelper(typedefinit",{"_index":4174,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["getnam",{"_index":1753,"title":{},"name":{},"text":{"21":{},"40":{},"101":{},"182":{},"202":{}},"component":{}}],["getnumberofvalu",{"_index":2709,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["getpressur",{"_index":4025,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["getprotocolcod",{"_index":1267,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["getresponsecod",{"_index":2708,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["getspectemplates(configur",{"_index":4160,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["getsubscriptionhandle(\"mymod",{"_index":3724,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["getsubscriptionhandle(\"mysi",{"_index":3778,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["getsubscriptionhandle(\"myusr",{"_index":3785,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["getter",{"_index":2712,"title":{},"name":{},"text":{"50":{},"90":{},"122":{}},"component":{}}],["gettypecontext",{"_index":1756,"title":{},"name":{},"text":{"21":{}},"component":{}}],["gettypedefinit",{"_index":4442,"title":{},"name":{},"text":{"182":{}},"component":{}}],["getvalu",{"_index":2495,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["getvers",{"_index":1757,"title":{},"name":{},"text":{"21":{}},"component":{}}],["get{field",{"_index":4038,"title":{},"name":{},"text":{"90":{}},"component":{}}],["git",{"_index":117,"title":{"30-1":{},"31-1":{},"32-1":{},"191-1":{},"192-1":{},"193-1":{}},"name":{},"text":{"3":{},"5":{},"9":{},"27":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"173":{},"174":{},"179":{},"188":{},"189":{},"191":{},"192":{},"193":{},"195":{},"197":{}},"component":{}}],["gitbox",{"_index":782,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["github",{"_index":475,"title":{"36-18":{}},"name":{},"text":{"5":{},"9":{},"12":{},"14":{},"18":{},"22":{},"24":{},"34":{},"36":{},"48":{},"55":{},"110":{},"111":{},"157":{},"174":{},"179":{}},"component":{}}],["github.com/apache/plc4x/plc4go",{"_index":2425,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["gitpubsub",{"_index":1901,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["give",{"_index":594,"title":{},"name":{},"text":{"6":{},"9":{},"12":{},"29":{},"37":{},"41":{},"47":{},"48":{},"50":{},"56":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"87":{},"91":{},"110":{},"115":{},"120":{},"122":{},"123":{},"125":{},"126":{},"127":{},"129":{},"133":{},"136":{},"139":{},"140":{},"141":{},"142":{},"144":{},"145":{},"148":{},"152":{},"159":{},"176":{},"179":{},"189":{},"198":{}},"component":{}}],["given",{"_index":603,"title":{},"name":{},"text":{"6":{},"15":{},"21":{},"36":{},"39":{},"41":{},"46":{},"47":{},"48":{},"50":{},"54":{},"59":{},"65":{},"72":{},"75":{},"77":{},"80":{},"81":{},"82":{},"83":{},"84":{},"91":{},"103":{},"106":{},"115":{},"119":{},"120":{},"122":{},"128":{},"135":{},"138":{},"140":{},"143":{},"144":{},"145":{},"146":{},"151":{},"152":{},"158":{},"162":{},"176":{},"182":{},"197":{},"199":{},"204":{}},"component":{}}],["gladli",{"_index":3649,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["global",{"_index":2002,"title":{},"name":{},"text":{"31":{},"48":{},"101":{},"192":{},"202":{}},"component":{}}],["glossari",{"_index":569,"title":{},"name":{},"text":{"6":{},"176":{}},"component":{}}],["gmbh",{"_index":1008,"title":{},"name":{},"text":{"10":{},"12":{},"14":{},"110":{},"111":{},"180":{}},"component":{}}],["go",{"_index":215,"title":{"46":{},"119":{},"36-13":{},"197-13":{}},"name":{},"text":{"3":{},"5":{},"16":{},"29":{},"34":{},"36":{},"42":{},"43":{},"46":{},"74":{},"82":{},"83":{},"103":{},"107":{},"116":{},"119":{},"137":{},"145":{},"173":{},"174":{},"189":{},"195":{},"197":{},"204":{}},"component":{}}],["go(lang",{"_index":1379,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["go,with",{"_index":241,"title":{},"name":{},"text":{"3":{},"36":{},"173":{},"197":{}},"component":{}}],["go.mod",{"_index":2418,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["go/golang",{"_index":2379,"title":{"42-1":{},"116-1":{}},"name":{},"text":{},"component":{}}],["go/pkg/mod/github.com/apache/plc4/plc4go@v0.0.0",{"_index":2426,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["goal",{"_index":585,"title":{},"name":{},"text":{"6":{},"12":{},"17":{},"34":{},"36":{},"47":{},"48":{},"50":{},"78":{},"82":{},"90":{},"110":{},"113":{},"120":{},"122":{},"141":{},"151":{},"176":{},"195":{},"197":{}},"component":{}}],["goe",{"_index":345,"title":{"34-5":{},"36-8":{},"195-5":{},"197-8":{}},"name":{},"text":{"4":{},"21":{},"34":{},"36":{},"103":{},"175":{},"182":{},"195":{},"197":{}},"component":{}}],["golang",{"_index":468,"title":{},"name":{},"text":{"5":{},"174":{}},"component":{}}],["good",{"_index":177,"title":{},"name":{},"text":{"3":{},"9":{},"31":{},"34":{},"36":{},"46":{},"47":{},"54":{},"84":{},"86":{},"119":{},"120":{},"146":{},"147":{},"158":{},"173":{},"179":{},"192":{},"195":{},"197":{}},"component":{}}],["goodi",{"_index":1879,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["googl",{"_index":2245,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["govern",{"_index":4196,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["go’",{"_index":2419,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["gpg",{"_index":2174,"title":{},"name":{},"text":{"36":{},"37":{},"197":{},"198":{}},"component":{}}],["gpg_tty=$(tti",{"_index":2193,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["gpl",{"_index":1666,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["grace",{"_index":2772,"title":{"55-11":{},"157-11":{}},"name":{},"text":{"55":{},"157":{}},"component":{}}],["gracefulli",{"_index":1425,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["grade",{"_index":1580,"title":{},"name":{},"text":{"16":{},"107":{}},"component":{}}],["gradl",{"_index":91,"title":{"3-10":{},"173-11":{}},"name":{},"text":{"3":{},"173":{}},"component":{}}],["graduat",{"_index":763,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["grain",{"_index":2353,"title":{},"name":{},"text":{"41":{},"115":{}},"component":{}}],["grant",{"_index":916,"title":{},"name":{},"text":{"9":{},"30":{},"179":{},"191":{}},"component":{}}],["graph",{"_index":647,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["graphic",{"_index":1859,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["graphml",{"_index":671,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["grate",{"_index":3647,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["great",{"_index":1124,"title":{},"name":{},"text":{"12":{},"17":{},"26":{},"36":{},"41":{},"110":{},"113":{},"115":{},"187":{},"197":{}},"component":{}}],["greater",{"_index":114,"title":{},"name":{},"text":{"3":{},"15":{},"83":{},"106":{},"145":{},"173":{},"204":{}},"component":{}}],["greatli",{"_index":1290,"title":{},"name":{},"text":{"15":{},"17":{},"29":{},"106":{},"113":{},"189":{}},"component":{}}],["grep",{"_index":2265,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["group",{"_index":309,"title":{},"name":{},"text":{"3":{},"9":{},"10":{},"54":{},"66":{},"75":{},"82":{},"83":{},"129":{},"138":{},"145":{},"158":{},"173":{},"174":{},"179":{},"180":{}},"component":{}}],["group(0",{"_index":3209,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["group2",{"_index":3656,"title":{},"name":{},"text":{"83":{}},"component":{}}],["groupaddress",{"_index":2529,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["grow",{"_index":3460,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["grpc",{"_index":1700,"title":{},"name":{},"text":{"21":{}},"component":{}}],["gs_usb",{"_index":4129,"title":{},"name":{},"text":{"98":{},"170":{}},"component":{}}],["gsd",{"_index":3429,"title":{},"name":{},"text":{"81":{},"143":{}},"component":{}}],["guarante",{"_index":849,"title":{},"name":{},"text":{"9":{},"14":{},"21":{},"83":{},"93":{},"111":{},"145":{},"163":{},"179":{},"182":{}},"component":{}}],["gui",{"_index":514,"title":{},"name":{},"text":{"5":{},"174":{}},"component":{}}],["guid",{"_index":225,"title":{},"name":{},"text":{"3":{},"9":{},"30":{},"42":{},"78":{},"116":{},"141":{},"173":{},"179":{}},"component":{}}],["guid(g",{"_index":3361,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["h",{"_index":2807,"title":{},"name":{},"text":{"55":{},"83":{},"101":{},"145":{},"157":{},"202":{}},"component":{}}],["hackathon",{"_index":366,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["hadnler",{"_index":2519,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["half",{"_index":2994,"title":{},"name":{},"text":{"63":{},"75":{},"95":{},"126":{},"138":{},"166":{}},"component":{}}],["halv",{"_index":1244,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["hamburg",{"_index":416,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["hammer",{"_index":2890,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["hand",{"_index":1184,"title":{},"name":{},"text":{"13":{},"21":{},"39":{},"50":{},"87":{},"112":{},"122":{},"148":{},"182":{},"199":{}},"component":{}}],["handbook",{"_index":2982,"title":{},"name":{},"text":{"62":{},"125":{}},"component":{}}],["handi",{"_index":1721,"title":{},"name":{},"text":{"21":{},"86":{},"147":{},"182":{}},"component":{}}],["handl",{"_index":191,"title":{},"name":{},"text":{"3":{},"9":{},"15":{},"17":{},"26":{},"29":{},"47":{},"48":{},"50":{},"55":{},"78":{},"82":{},"83":{},"87":{},"90":{},"91":{},"98":{},"101":{},"103":{},"106":{},"113":{},"120":{},"122":{},"145":{},"148":{},"152":{},"157":{},"170":{},"173":{},"179":{},"187":{},"189":{},"202":{},"204":{}},"component":{}}],["handle(str",{"_index":4080,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["handler",{"_index":1409,"title":{},"name":{},"text":{"15":{},"46":{},"91":{},"106":{},"119":{},"152":{}},"component":{}}],["handshak",{"_index":1492,"title":{},"name":{},"text":{"15":{},"78":{},"88":{},"106":{},"141":{},"150":{}},"component":{}}],["handwritten",{"_index":1496,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["hang",{"_index":1411,"title":{},"name":{},"text":{"15":{},"82":{},"83":{},"106":{},"145":{}},"component":{}}],["happen",{"_index":479,"title":{},"name":{},"text":{"5":{},"9":{},"31":{},"34":{},"36":{},"78":{},"88":{},"150":{},"174":{},"179":{},"193":{},"195":{},"197":{}},"component":{}}],["happi",{"_index":1774,"title":{},"name":{},"text":{"21":{},"83":{},"145":{},"182":{}},"component":{}}],["hard",{"_index":1935,"title":{},"name":{},"text":{"30":{},"31":{},"32":{},"56":{},"103":{},"159":{},"182":{},"193":{},"204":{}},"component":{}}],["hardwar",{"_index":1116,"title":{},"name":{},"text":{"12":{},"16":{},"17":{},"66":{},"78":{},"83":{},"92":{},"107":{},"110":{},"113":{},"129":{},"145":{},"153":{}},"component":{}}],["hash",{"_index":2102,"title":{},"name":{},"text":{"34":{},"36":{},"37":{},"46":{},"119":{},"195":{},"197":{},"198":{}},"component":{}}],["hashmap",{"_index":3679,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["hasn’t",{"_index":2551,"title":{},"name":{},"text":{"47":{},"48":{},"120":{},"174":{}},"component":{}}],["have",{"_index":1573,"title":{},"name":{},"text":{"16":{},"21":{},"26":{},"41":{},"55":{},"82":{},"83":{},"84":{},"86":{},"88":{},"107":{},"115":{},"145":{},"146":{},"147":{},"150":{},"157":{},"187":{}},"component":{}}],["haven’t",{"_index":868,"title":{},"name":{},"text":{"9":{},"36":{},"37":{},"50":{},"56":{},"122":{},"159":{},"179":{},"197":{},"198":{}},"component":{}}],["hay",{"_index":3594,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["header",{"_index":825,"title":{},"name":{},"text":{"9":{},"37":{},"55":{},"62":{},"83":{},"101":{},"103":{},"125":{},"145":{},"157":{},"179":{},"198":{},"202":{},"204":{}},"component":{}}],["heartbeat",{"_index":3025,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["heartbeat:nodeid",{"_index":3074,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["heat",{"_index":3218,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["heavi",{"_index":2447,"title":{},"name":{},"text":{"46":{},"82":{},"119":{}},"component":{}}],["heavili",{"_index":4012,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["hello",{"_index":3353,"title":{},"name":{},"text":{"78":{},"92":{},"141":{},"153":{}},"component":{}}],["help",{"_index":285,"title":{"7-4":{},"177-4":{}},"name":{},"text":{"3":{},"7":{},"8":{},"9":{},"12":{},"17":{},"26":{},"27":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"41":{},"62":{},"65":{},"86":{},"88":{},"101":{},"110":{},"113":{},"115":{},"125":{},"128":{},"147":{},"150":{},"173":{},"177":{},"178":{},"179":{},"188":{},"193":{},"195":{},"197":{},"198":{},"202":{}},"component":{}}],["helper",{"_index":146,"title":{},"name":{},"text":{"3":{},"86":{},"101":{},"147":{},"173":{},"182":{},"202":{}},"component":{}}],["helper.packagename(protocolnam",{"_index":4188,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["henc",{"_index":3069,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["herbi",{"_index":2696,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["here",{"_index":297,"title":{},"name":{},"text":{"3":{},"14":{},"17":{},"18":{},"21":{},"24":{},"25":{},"26":{},"27":{},"28":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"39":{},"41":{},"46":{},"47":{},"50":{},"55":{},"56":{},"59":{},"62":{},"71":{},"78":{},"82":{},"83":{},"86":{},"87":{},"88":{},"90":{},"91":{},"92":{},"101":{},"102":{},"103":{},"111":{},"113":{},"115":{},"119":{},"120":{},"122":{},"125":{},"134":{},"141":{},"145":{},"147":{},"148":{},"150":{},"152":{},"153":{},"157":{},"159":{},"162":{},"173":{},"182":{},"185":{},"186":{},"187":{},"188":{},"190":{},"191":{},"192":{},"193":{},"195":{},"197":{},"198":{},"199":{},"202":{},"203":{},"204":{}},"component":{}}],["here]/subcompon",{"_index":465,"title":{},"name":{},"text":{"5":{},"174":{}},"component":{}}],["herebi",{"_index":1670,"title":{},"name":{},"text":{"17":{},"21":{},"27":{},"36":{},"50":{},"82":{},"83":{},"113":{},"122":{},"145":{},"182":{},"183":{},"188":{},"189":{},"197":{}},"component":{}}],["herein",{"_index":2392,"title":{},"name":{},"text":{"43":{}},"component":{}}],["here’",{"_index":1740,"title":{},"name":{},"text":{"21":{},"36":{},"182":{},"197":{}},"component":{}}],["hessen",{"_index":344,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["hex",{"_index":2295,"title":{},"name":{},"text":{"39":{},"40":{},"103":{},"199":{}},"component":{}}],["hexadecim",{"_index":3059,"title":{},"name":{},"text":{"66":{},"83":{},"129":{},"145":{}},"component":{}}],["hidden",{"_index":4010,"title":{"90-5":{}},"name":{},"text":{},"component":{}}],["hide",{"_index":2271,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["hierarchi",{"_index":1690,"title":{},"name":{},"text":{"21":{},"78":{},"141":{},"182":{}},"component":{}}],["high",{"_index":865,"title":{},"name":{},"text":{"9":{},"12":{},"13":{},"15":{},"55":{},"78":{},"83":{},"87":{},"103":{},"106":{},"110":{},"112":{},"141":{},"145":{},"148":{},"157":{},"179":{}},"component":{}}],["higher",{"_index":1202,"title":{},"name":{},"text":{"14":{},"26":{},"30":{},"31":{},"111":{},"187":{},"191":{},"192":{}},"component":{}}],["highest",{"_index":872,"title":{},"name":{},"text":{"9":{},"66":{},"129":{},"179":{}},"component":{}}],["highli",{"_index":1111,"title":{},"name":{},"text":{"12":{},"30":{},"31":{},"32":{},"110":{}},"component":{}}],["highlight",{"_index":2882,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["hint",{"_index":1769,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["histori",{"_index":788,"title":{},"name":{},"text":{"9":{},"34":{},"36":{},"179":{},"195":{},"197":{}},"component":{}}],["hit",{"_index":1851,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["hmi",{"_index":3568,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["hoc",{"_index":693,"title":{},"name":{},"text":{"8":{},"36":{},"43":{},"88":{},"150":{},"178":{},"197":{}},"component":{}}],["hold",{"_index":1427,"title":{},"name":{},"text":{"15":{},"46":{},"50":{},"77":{},"84":{},"87":{},"106":{},"119":{},"122":{},"140":{},"146":{},"148":{}},"component":{}}],["holiday",{"_index":2137,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["home",{"_index":0,"title":{"1":{},"109":{}},"name":{},"text":{"36":{},"46":{},"119":{},"197":{}},"component":{}}],["homebrew",{"_index":1986,"title":{},"name":{},"text":{"31":{},"32":{},"192":{}},"component":{}}],["homepag",{"_index":893,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["honest",{"_index":860,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["honor",{"_index":3047,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["hood",{"_index":3009,"title":{},"name":{},"text":{"65":{},"78":{},"128":{}},"component":{}}],["hop",{"_index":1003,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["hope",{"_index":363,"title":{},"name":{},"text":{"4":{},"13":{},"21":{},"83":{},"91":{},"112":{},"145":{},"152":{},"175":{},"182":{}},"component":{}}],["hopefulli",{"_index":609,"title":{},"name":{},"text":{"7":{},"15":{},"27":{},"106":{},"177":{},"188":{}},"component":{}}],["host",{"_index":76,"title":{},"name":{},"text":{"2":{},"17":{},"25":{},"26":{},"30":{},"50":{},"55":{},"75":{},"78":{},"81":{},"113":{},"122":{},"138":{},"143":{},"157":{},"172":{},"186":{},"187":{}},"component":{}}],["hostnam",{"_index":2360,"title":{},"name":{},"text":{"41":{},"55":{},"78":{},"115":{},"157":{}},"component":{}}],["hostname}:{port",{"_index":4130,"title":{},"name":{},"text":{"99":{},"100":{},"169":{},"171":{}},"component":{}}],["hot",{"_index":3698,"title":{},"name":{},"text":{"83":{},"86":{},"145":{},"147":{}},"component":{}}],["hour",{"_index":186,"title":{},"name":{},"text":{"3":{},"6":{},"9":{},"34":{},"36":{},"173":{},"176":{},"179":{},"195":{},"197":{}},"component":{}}],["hous",{"_index":1050,"title":{},"name":{},"text":{"10":{},"12":{},"110":{},"180":{}},"component":{}}],["html",{"_index":1897,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["http",{"_index":710,"title":{},"name":{},"text":{"8":{},"10":{},"30":{},"178":{},"180":{},"191":{}},"component":{}}],["http.tcp",{"_index":2923,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["http://archive.apache.org/dist/plc4x/0.13.0/apach",{"_index":2232,"title":{},"name":{},"text":{"36":{}},"component":{}}],["http://archive.apache.org/dist/plc4x/{curr",{"_index":4480,"title":{},"name":{},"text":{"197":{}},"component":{}}],["http://localhost:7474",{"_index":733,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["http://localhost:8080/nifi",{"_index":2873,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["http://localhost:8083/connector",{"_index":2803,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["http://plc4x.apache.org",{"_index":2242,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["http://plc4x.apache.org/users/download.html",{"_index":2229,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["http://www.beckhoff.com",{"_index":2981,"title":{},"name":{},"text":{"62":{},"125":{}},"component":{}}],["httpport",{"_index":2922,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["https://cache.industry.siemens.com/dl/files/604/44240604/att_67003/v1/s7sfc_en",{"_index":3865,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["https://ci",{"_index":1797,"title":{},"name":{},"text":{"22":{},"27":{},"183":{},"188":{}},"component":{}}],["https://community.apache.org/apach",{"_index":766,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["https://community.chocolatey.org",{"_index":2017,"title":{},"name":{},"text":{"32":{}},"component":{}}],["https://cwiki.apache.org/confluence/display/plc4x",{"_index":1908,"title":{},"name":{},"text":{"28":{},"190":{}},"component":{}}],["https://cwiki.apache.org/confluence/display/plc4x/validating+a+staged+releas",{"_index":2216,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["https://cwiki.apache.org/confluence/pages/viewpage.action?pageid=122916896",{"_index":1857,"title":{},"name":{},"text":{"26":{}},"component":{}}],["https://dist.apache.org/repos/dist/dev/plc4x",{"_index":2104,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["https://dist.apache.org/repos/dist/dev/plc4x/0.13.0/rc1",{"_index":2214,"title":{},"name":{},"text":{"36":{}},"component":{}}],["https://dist.apache.org/repos/dist/dev/plc4x/0.9.0/rc1",{"_index":2222,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["https://dist.apache.org/repos/dist/dev/plc4x/build",{"_index":2113,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["https://dist.apache.org/repos/dist/dev/plc4x/{curr",{"_index":2211,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["https://dist.apache.org/repos/dist/release/plc4x",{"_index":2151,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["https://dist.apache.org/repos/dist/release/plc4x/0.13.0",{"_index":2217,"title":{},"name":{},"text":{"36":{}},"component":{}}],["https://dist.apache.org/repos/dist/release/plc4x/0.3.0",{"_index":2149,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["https://dist.apache.org/repos/dist/release/plc4x/build",{"_index":2144,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["https://dist.apache.org/repos/dist/release/plc4x/{curr",{"_index":2225,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["https://download.beckhoff.com/download/document/automation/twincat3/twincat_3_ads_intro_de.pdf",{"_index":2983,"title":{},"name":{},"text":{"62":{},"125":{}},"component":{}}],["https://en.wikipedia.org/wiki/can_bu",{"_index":3039,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["https://en.wikipedia.org/wiki/iec_61131",{"_index":1399,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["https://gitbox.apache.org/repos/asf/plc4x",{"_index":2120,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["https://gitbox.apache.org/repos/asf?p=plc4x",{"_index":2090,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["https://gitbox.apache.org/repos/asf?p=plc4x.git",{"_index":2201,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["https://github.com/apache/plc4x",{"_index":2740,"title":{},"name":{},"text":{"54":{}},"component":{}}],["https://github.com/apache/plc4x.git",{"_index":516,"title":{},"name":{},"text":{"5":{},"174":{}},"component":{}}],["https://github.com/apache/plc4x/act",{"_index":1799,"title":{},"name":{},"text":{"22":{}},"component":{}}],["https://github.com/apache/plc4x/issu",{"_index":1672,"title":{},"name":{},"text":{"18":{},"24":{}},"component":{}}],["https://github.com/apache/plc4x/issues/1582",{"_index":1962,"title":{},"name":{},"text":{"30":{}},"component":{}}],["https://github.com/apache/plc4x/tree/develop/plc4j/examples/hello",{"_index":4433,"title":{},"name":{},"text":{"158":{}},"component":{}}],["https://github.com/eclipse/ditto",{"_index":2913,"title":{},"name":{},"text":{"58":{},"160":{}},"component":{}}],["https://github.com/{your",{"_index":486,"title":{},"name":{},"text":{"5":{},"174":{}},"component":{}}],["https://gmail.googleblog.com/2009/07/send",{"_index":2246,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["https://golang.org",{"_index":2416,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["https://id.apache.org",{"_index":1816,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["https://in2lutions.com/in2lutions/[in2lut",{"_index":1133,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["https://infosys.beckhoff.com/english.php?content=../content/1033/ams_nat/4275563275.html&id",{"_index":2971,"title":{},"name":{},"text":{"62":{},"125":{}},"component":{}}],["https://iotdb.apache.org/userguide/master/client/programming%20",{"_index":2767,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["https://issues.apache.org/jira",{"_index":1825,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["https://issues.apache.org/jira/projects/plc4x",{"_index":4445,"title":{},"name":{},"text":{"185":{}},"component":{}}],["https://kafka.apache.org/download",{"_index":2781,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["https://learn.microsoft.com/d",{"_index":2020,"title":{},"name":{},"text":{"32":{}},"component":{}}],["https://npcap.com/#download",{"_index":2034,"title":{},"name":{},"text":{"32":{}},"component":{}}],["https://packages.microsoft.com/config/ubuntu/22.04/packag",{"_index":1967,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["https://plc4x.apache.org",{"_index":1905,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["https://plc4x.apache.org/developers/release/validation.html",{"_index":4477,"title":{},"name":{},"text":{"195":{}},"component":{}}],["https://plc4x.apache.org/plc4x/latest/developers/release/validation.html",{"_index":2128,"title":{},"name":{},"text":{"34":{}},"component":{}}],["https://plc4x.apache.org/users/protocols/s7.html",{"_index":1485,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["https://raw.githubusercontent.com/homebrew/install/head/install.sh",{"_index":1991,"title":{},"name":{},"text":{"31":{}},"component":{}}],["https://raw.githubusercontent.com/homebrew/install/master/instal",{"_index":4451,"title":{},"name":{},"text":{"192":{}},"component":{}}],["https://reference.apache.org/committer/email",{"_index":2244,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["https://repo.maven.apache.org/maven2/com/googlecode/cmak",{"_index":2037,"title":{},"name":{},"text":{"32":{}},"component":{}}],["https://repository.apache.org",{"_index":2099,"title":{},"name":{},"text":{"34":{},"36":{},"183":{},"195":{},"197":{}},"component":{}}],["https://repository.apache.org/content/repositories/orgapacheplc4x",{"_index":2125,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["https://repository.apache.org/content/repositories/snapshot",{"_index":2672,"title":{},"name":{},"text":{"49":{},"124":{}},"component":{}}],["https://search.maven.org/search?q=plc4j",{"_index":2878,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["https://selfserve.apache.org/otp",{"_index":1847,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["https://snap7.sourceforge.net",{"_index":3543,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["https://sonarcloud.io/dashboard?id=apache_plc4x",{"_index":1806,"title":{},"name":{},"text":{"25":{},"186":{}},"component":{}}],["https://stackoverflow.com/questions/73753672/a",{"_index":1978,"title":{},"name":{},"text":{"30":{}},"component":{}}],["https://support.industry.siemens.com/cs/document/109481157/comunicaci%c3%b3n",{"_index":3564,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["https://support.industry.siemens.com/cs/document/109797648/simat",{"_index":3548,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["https://support.industry.siemens.com/cs/document/13649203/simat",{"_index":3544,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["https://support.industry.siemens.com/cs/document/15166942/writ",{"_index":3555,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["https://support.industry.siemens.com/cs/document/21402122/technolog",{"_index":3587,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["https://support.industry.siemens.com/cs/document/24013249/how",{"_index":3558,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["https://support.industry.siemens.com/cs/document/24037531/%c2%bfqu%c3%a9",{"_index":3591,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["https://support.industry.siemens.com/cs/document/77467239/transform",{"_index":3588,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["https://support.industry.siemens.com/cs/document/97550333/sinam",{"_index":3585,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["https://support.industry.siemens.com/cs/mdm/109746537?c=98956468747&lc=",{"_index":3554,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["https://vimeo.com/167857327",{"_index":197,"title":{},"name":{},"text":{"3":{}},"component":{}}],["https://visualstudio.microsoft.com/de/visu",{"_index":2049,"title":{},"name":{},"text":{"32":{}},"component":{}}],["https://www.apache.org/dev/release.html#approv",{"_index":2215,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["https://www.apache.org/dev/release/validation.html#approv",{"_index":2127,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["https://www.apache.org/licenses/licens",{"_index":4192,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["https://www.eclipse.org/ditto",{"_index":2912,"title":{},"name":{},"text":{"58":{},"160":{}},"component":{}}],["https://www.home",{"_index":2968,"title":{},"name":{},"text":{"62":{},"125":{}},"component":{}}],["https://www.oracle.com/technetwork/java/javaee/tech/persist",{"_index":4042,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["huge",{"_index":1344,"title":{},"name":{},"text":{"15":{},"17":{},"106":{},"113":{}},"component":{}}],["human",{"_index":2293,"title":{},"name":{},"text":{"39":{},"199":{}},"component":{}}],["hundr",{"_index":3794,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["hutcheson",{"_index":971,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["hw",{"_index":1094,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["i)iot",{"_index":1144,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["i.",{"_index":300,"title":{},"name":{},"text":{"3":{},"12":{},"34":{},"36":{},"41":{},"43":{},"77":{},"87":{},"110":{},"140":{},"148":{},"173":{},"195":{},"197":{}},"component":{}}],["i0.2:bool",{"_index":2562,"title":{},"name":{},"text":{"47":{},"120":{}},"component":{}}],["icla",{"_index":818,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["icon",{"_index":1872,"title":{},"name":{},"text":{"27":{},"43":{},"50":{},"56":{},"122":{},"159":{},"188":{}},"component":{}}],["id",{"_index":770,"title":{"29-1":{},"189-1":{}},"name":{},"text":{"9":{},"26":{},"32":{},"34":{},"36":{},"41":{},"50":{},"55":{},"61":{},"62":{},"63":{},"66":{},"72":{},"75":{},"77":{},"81":{},"83":{},"85":{},"122":{},"123":{},"125":{},"126":{},"129":{},"135":{},"138":{},"143":{},"145":{},"157":{},"179":{},"187":{},"193":{},"195":{},"197":{}},"component":{}}],["id\":17,\"index\":0,\"n_dr\":4",{"_index":3900,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["idea",{"_index":636,"title":{"8-3":{},"178-3":{}},"name":{},"text":{"13":{},"26":{},"46":{},"112":{},"119":{},"187":{}},"component":{}}],["ideal",{"_index":484,"title":{},"name":{},"text":{"5":{},"17":{},"34":{},"36":{},"55":{},"86":{},"88":{},"90":{},"113":{},"147":{},"150":{},"157":{},"174":{},"195":{},"197":{}},"component":{}}],["ident",{"_index":1578,"title":{},"name":{},"text":{"16":{},"36":{},"39":{},"47":{},"50":{},"103":{},"107":{},"120":{},"122":{},"197":{},"199":{},"204":{}},"component":{}}],["identif",{"_index":3464,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["identifi",{"_index":819,"title":{},"name":{},"text":{"9":{},"43":{},"66":{},"77":{},"78":{},"82":{},"83":{},"84":{},"85":{},"98":{},"129":{},"140":{},"141":{},"145":{},"146":{},"170":{},"179":{}},"component":{}}],["identifier=1",{"_index":2437,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["id}/plc4x.git",{"_index":488,"title":{},"name":{},"text":{"5":{},"174":{}},"component":{}}],["id}@apache.org",{"_index":2175,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["ie",{"_index":3028,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["iec",{"_index":1376,"title":{"73":{},"136":{}},"name":{"73":{},"136":{}},"text":{"15":{},"73":{},"74":{},"84":{},"106":{},"136":{},"137":{},"146":{}},"component":{}}],["ieee",{"_index":3528,"title":{},"name":{},"text":{"82":{},"83":{},"103":{},"145":{}},"component":{}}],["if(numvalu",{"_index":2583,"title":{},"name":{},"text":{"47":{},"50":{},"120":{},"122":{}},"component":{}}],["if(response.getresponsecode(fieldnam",{"_index":2729,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["if(response.getresponsecode(tagnam",{"_index":2578,"title":{},"name":{},"text":{"47":{},"50":{},"120":{},"122":{}},"component":{}}],["ifconfig",{"_index":3973,"title":{},"name":{},"text":{"86":{},"147":{}},"component":{}}],["iiot",{"_index":1118,"title":{},"name":{},"text":{"12":{},"13":{},"110":{},"112":{}},"component":{}}],["im",{"_index":1983,"title":{},"name":{},"text":{"30":{},"83":{},"145":{},"191":{}},"component":{}}],["imag",{"_index":616,"title":{},"name":{},"text":{"7":{},"27":{},"82":{},"83":{},"145":{},"173":{},"177":{},"188":{}},"component":{}}],["imagin",{"_index":4096,"title":{},"name":{},"text":{"92":{},"153":{}},"component":{}}],["imaginari",{"_index":4258,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["immedi",{"_index":4004,"title":{},"name":{},"text":{"88":{},"150":{}},"component":{}}],["impact",{"_index":2857,"title":{},"name":{},"text":{"55":{},"103":{},"157":{},"204":{}},"component":{}}],["implement",{"_index":26,"title":{"40-3":{},"40-4":{}},"name":{},"text":{"2":{},"3":{},"15":{},"16":{},"21":{},"39":{},"40":{},"46":{},"47":{},"48":{},"50":{},"55":{},"62":{},"65":{},"66":{},"72":{},"74":{},"78":{},"81":{},"82":{},"83":{},"87":{},"91":{},"92":{},"93":{},"101":{},"102":{},"103":{},"106":{},"107":{},"119":{},"120":{},"122":{},"125":{},"128":{},"129":{},"135":{},"137":{},"141":{},"143":{},"145":{},"148":{},"152":{},"153":{},"157":{},"163":{},"172":{},"173":{},"182":{},"199":{},"202":{},"203":{},"204":{}},"component":{}}],["impli",{"_index":4195,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["implicit",{"_index":4250,"title":{"103-9":{},"204-8":{}},"name":{},"text":{"103":{},"204":{}},"component":{}}],["implicitli",{"_index":4301,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["import",{"_index":947,"title":{},"name":{},"text":{"9":{},"12":{},"21":{},"34":{},"36":{},"37":{},"39":{},"41":{},"47":{},"48":{},"50":{},"82":{},"83":{},"90":{},"91":{},"101":{},"110":{},"115":{},"120":{},"122":{},"145":{},"152":{},"179":{},"182":{},"195":{},"197":{},"198":{},"199":{},"202":{}},"component":{}}],["impos",{"_index":3346,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["imposs",{"_index":952,"title":{},"name":{},"text":{"9":{},"17":{},"36":{},"113":{},"179":{},"197":{}},"component":{}}],["improv",{"_index":1291,"title":{"17-5":{},"113-5":{}},"name":{},"text":{"15":{},"17":{},"21":{},"106":{},"113":{},"182":{}},"component":{}}],["in10",{"_index":956,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["in20",{"_index":960,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["in`fals",{"_index":4303,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["inappropri",{"_index":2191,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["includ",{"_index":576,"title":{},"name":{},"text":{"6":{},"9":{},"15":{},"26":{},"34":{},"36":{},"55":{},"59":{},"78":{},"83":{},"106":{},"141":{},"145":{},"157":{},"162":{},"176":{},"179":{},"187":{},"195":{},"197":{}},"component":{}}],["incom",{"_index":2520,"title":{},"name":{},"text":{"46":{},"65":{},"72":{},"119":{},"128":{},"135":{}},"component":{}}],["incompat",{"_index":883,"title":{"15-4":{},"15-15":{},"15-19":{},"15-23":{},"15-27":{},"15-31":{},"15-35":{},"15-40":{},"15-44":{},"106-4":{},"106-15":{},"106-19":{},"106-23":{},"106-27":{},"106-31":{},"106-35":{},"106-40":{},"106-44":{}},"name":{},"text":{"9":{},"15":{},"34":{},"36":{},"106":{},"179":{},"195":{},"197":{}},"component":{}}],["inconsist",{"_index":3478,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["incorrectli",{"_index":4465,"title":{},"name":{},"text":{"193":{}},"component":{}}],["increas",{"_index":203,"title":{"17-2":{},"17-3":{},"17-4":{},"113-2":{},"113-3":{},"113-4":{}},"name":{},"text":{"3":{},"17":{},"26":{},"56":{},"66":{},"86":{},"113":{},"129":{},"147":{},"159":{},"173":{},"187":{}},"component":{}}],["increment",{"_index":2060,"title":{},"name":{},"text":{"34":{},"36":{},"102":{},"195":{},"197":{},"203":{}},"component":{}}],["incub",{"_index":405,"title":{"15-37":{},"15-38":{},"15-42":{},"15-46":{},"15-48":{},"106-37":{},"106-38":{},"106-42":{},"106-46":{},"106-48":{}},"name":{},"text":{"4":{},"9":{},"10":{},"15":{},"36":{},"106":{},"175":{},"179":{},"180":{},"197":{}},"component":{}}],["independ",{"_index":857,"title":{},"name":{},"text":{"9":{},"16":{},"62":{},"78":{},"103":{},"107":{},"125":{},"141":{},"179":{},"204":{}},"component":{}}],["index",{"_index":1,"title":{},"name":{"1":{},"7":{},"16":{},"21":{},"23":{},"29":{},"33":{},"35":{},"38":{},"42":{},"60":{},"74":{},"89":{},"94":{},"107":{},"109":{},"116":{},"137":{},"149":{},"164":{},"165":{},"177":{},"182":{},"184":{},"189":{},"194":{},"196":{},"200":{}},"text":{"15":{},"66":{},"70":{},"83":{},"106":{},"129":{},"133":{},"145":{}},"component":{}}],["index.adoc",{"_index":1885,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["index=0x0000",{"_index":3889,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["index};[s|i|g|b]={identifier};a=attributeid;{data",{"_index":3363,"title":{},"name":{},"text":{"78":{}},"component":{}}],["index};[s|i|g|b]={identifier};{data",{"_index":4427,"title":{},"name":{},"text":{"141":{}},"component":{}}],["indic",{"_index":1940,"title":{},"name":{},"text":{"30":{},"31":{},"34":{},"36":{},"55":{},"66":{},"78":{},"82":{},"83":{},"103":{},"129":{},"141":{},"145":{},"157":{},"195":{},"197":{},"204":{}},"component":{}}],["indirectli",{"_index":3650,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["individu",{"_index":815,"title":{"41-3":{},"71-3":{},"75-5":{},"76-3":{},"77-11":{},"80-4":{},"82-7":{},"83-10":{},"84-2":{},"85-3":{},"115-3":{},"134-3":{},"138-5":{},"139-3":{},"140-11":{},"144-4":{},"145-10":{},"146-2":{}},"name":{},"text":{"9":{},"14":{},"20":{},"41":{},"75":{},"78":{},"82":{},"111":{},"114":{},"115":{},"138":{},"141":{},"179":{}},"component":{}}],["industri",{"_index":336,"title":{"17":{},"113":{}},"name":{},"text":{"4":{},"10":{},"12":{},"13":{},"16":{},"17":{},"21":{},"36":{},"51":{},"55":{},"59":{},"86":{},"107":{},"110":{},"112":{},"113":{},"147":{},"154":{},"157":{},"162":{},"175":{},"180":{},"197":{}},"component":{}}],["industrieanlagen",{"_index":387,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["industry40",{"_index":1596,"title":{},"name":{"17":{},"113":{}},"text":{},"component":{}}],["industryfus",{"_index":1117,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["inf/services/org.apache.plc4x.java.api.plcdriv",{"_index":2323,"title":{},"name":{},"text":{"40":{}},"component":{}}],["inf/services/org.apache.plc4x.plugins.codegenerator.language.languageoutput",{"_index":1773,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["inf/services/org.apache.plc4x.plugins.codegenerator.protocol.protocol",{"_index":1746,"title":{},"name":{},"text":{"21":{},"40":{},"182":{}},"component":{}}],["influenc",{"_index":959,"title":{},"name":{},"text":{"9":{},"103":{},"179":{},"204":{}},"component":{}}],["info",{"_index":697,"title":{},"name":{},"text":{"8":{},"36":{},"178":{},"197":{}},"component":{}}],["info'init",{"_index":4344,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["info'rec",{"_index":4342,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["info1",{"_index":3750,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["info2",{"_index":3751,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["inform",{"_index":432,"title":{},"name":{},"text":{"4":{},"7":{},"8":{},"9":{},"12":{},"14":{},"15":{},"16":{},"17":{},"20":{},"23":{},"28":{},"34":{},"36":{},"37":{},"39":{},"41":{},"56":{},"62":{},"65":{},"70":{},"75":{},"76":{},"78":{},"81":{},"82":{},"83":{},"91":{},"101":{},"103":{},"106":{},"107":{},"110":{},"111":{},"113":{},"114":{},"115":{},"125":{},"128":{},"133":{},"138":{},"139":{},"141":{},"143":{},"145":{},"152":{},"159":{},"175":{},"177":{},"178":{},"179":{},"184":{},"190":{},"195":{},"197":{},"198":{},"199":{},"202":{}},"component":{}}],["infra",{"_index":799,"title":{},"name":{},"text":{"9":{},"26":{},"179":{},"187":{}},"component":{}}],["infrastructur",{"_index":967,"title":{"23":{},"184":{}},"name":{},"text":{"9":{},"17":{},"26":{},"78":{},"113":{},"141":{},"179":{},"187":{}},"component":{}}],["inherit",{"_index":273,"title":{},"name":{},"text":{"3":{},"21":{},"27":{},"173":{},"182":{},"188":{}},"component":{}}],["init",{"_index":2009,"title":{},"name":{},"text":{"31":{},"46":{},"119":{},"192":{}},"component":{}}],["initi",{"_index":618,"title":{"46-1":{},"119-1":{}},"name":{},"text":{"7":{},"8":{},"9":{},"15":{},"46":{},"77":{},"78":{},"83":{},"90":{},"92":{},"103":{},"106":{},"119":{},"140":{},"141":{},"145":{},"151":{},"153":{},"177":{},"178":{},"179":{},"204":{}},"component":{}}],["inject",{"_index":3041,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["inlin",{"_index":4285,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["innov",{"_index":1608,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["input",{"_index":2288,"title":{},"name":{},"text":{"39":{},"41":{},"50":{},"71":{},"77":{},"82":{},"83":{},"86":{},"101":{},"103":{},"115":{},"122":{},"134":{},"140":{},"145":{},"147":{},"182":{},"199":{},"202":{},"204":{}},"component":{}}],["input:{start",{"_index":2688,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["insan",{"_index":1642,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["insecur",{"_index":2919,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["insert",{"_index":1898,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["insid",{"_index":1589,"title":{},"name":{},"text":{"16":{},"34":{},"36":{},"41":{},"101":{},"103":{},"107":{},"115":{},"195":{},"197":{},"202":{},"204":{}},"component":{}}],["inspect",{"_index":2316,"title":{},"name":{},"text":{"40":{}},"component":{}}],["inspir",{"_index":2340,"title":{},"name":{},"text":{"41":{},"90":{},"115":{},"151":{}},"component":{}}],["instal",{"_index":156,"title":{},"name":{},"text":{"3":{},"7":{},"8":{},"12":{},"14":{},"17":{},"26":{},"29":{},"30":{},"31":{},"32":{},"43":{},"46":{},"48":{},"55":{},"56":{},"59":{},"75":{},"83":{},"110":{},"111":{},"113":{},"119":{},"138":{},"145":{},"157":{},"159":{},"162":{},"173":{},"177":{},"178":{},"182":{},"187":{},"189":{},"191":{},"192":{},"193":{}},"component":{}}],["instanc",{"_index":30,"title":{},"name":{},"text":{"2":{},"9":{},"28":{},"39":{},"46":{},"47":{},"50":{},"65":{},"82":{},"83":{},"87":{},"88":{},"91":{},"92":{},"101":{},"119":{},"120":{},"122":{},"128":{},"145":{},"148":{},"150":{},"152":{},"153":{},"172":{},"179":{},"185":{},"190":{},"199":{},"202":{}},"component":{}}],["instance_data_block",{"_index":3522,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["instance’",{"_index":4307,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["instant",{"_index":3703,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["instant.now",{"_index":3704,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["instanti",{"_index":3477,"title":{},"name":{},"text":{"82":{},"83":{},"145":{},"151":{}},"component":{}}],["instantli",{"_index":2963,"title":{},"name":{},"text":{"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"87":{},"123":{},"125":{},"126":{},"127":{},"133":{},"136":{},"139":{},"140":{},"141":{},"142":{},"144":{},"145":{},"148":{}},"component":{}}],["instead",{"_index":141,"title":{},"name":{},"text":{"3":{},"15":{},"26":{},"41":{},"46":{},"47":{},"48":{},"50":{},"62":{},"82":{},"103":{},"106":{},"119":{},"120":{},"122":{},"125":{},"173":{},"187":{},"204":{}},"component":{}}],["institut",{"_index":1080,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["instruct",{"_index":1972,"title":{},"name":{},"text":{"30":{},"32":{},"191":{}},"component":{}}],["int",{"_index":1413,"title":{},"name":{},"text":{"15":{},"37":{},"47":{},"48":{},"50":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"87":{},"103":{},"106":{},"120":{},"122":{},"123":{},"125":{},"126":{},"127":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"148":{},"198":{},"204":{}},"component":{}}],["int32",{"_index":2747,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["intal",{"_index":1982,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["integ",{"_index":1312,"title":{},"name":{},"text":{"15":{},"54":{},"70":{},"71":{},"77":{},"82":{},"83":{},"103":{},"106":{},"133":{},"134":{},"140":{},"145":{},"158":{},"204":{}},"component":{}}],["integer16",{"_index":3092,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["integer24",{"_index":3093,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["integer32",{"_index":3094,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["integer40",{"_index":3095,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["integer48",{"_index":3097,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["integer56",{"_index":3098,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["integer64",{"_index":3099,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["integer8",{"_index":3090,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["integr",{"_index":246,"title":{"22":{},"60":{},"164":{},"183":{}},"name":{},"text":{"3":{},"10":{},"13":{},"15":{},"16":{},"17":{},"36":{},"41":{},"54":{},"55":{},"59":{},"66":{},"78":{},"82":{},"83":{},"91":{},"106":{},"107":{},"112":{},"113":{},"115":{},"129":{},"141":{},"145":{},"152":{},"157":{},"158":{},"162":{},"173":{},"180":{},"183":{},"189":{},"197":{}},"component":{}}],["intellij",{"_index":635,"title":{"8-3":{},"29-2":{},"178-3":{},"189-2":{}},"name":{},"text":{"8":{},"11":{},"29":{},"178":{},"181":{},"189":{}},"component":{}}],["intend",{"_index":3476,"title":{},"name":{},"text":{"82":{}},"component":{}}],["intens",{"_index":3981,"title":{},"name":{},"text":{"87":{},"148":{},"173":{}},"component":{}}],["intention",{"_index":2205,"title":{},"name":{},"text":{"36":{},"47":{},"48":{},"50":{},"120":{},"122":{},"197":{}},"component":{}}],["interact",{"_index":2951,"title":{},"name":{},"text":{"59":{},"62":{},"90":{},"125":{},"151":{},"162":{}},"component":{}}],["intercept",{"_index":1828,"title":{},"name":{},"text":{"26":{},"46":{},"86":{},"119":{},"147":{},"187":{}},"component":{}}],["interceptor",{"_index":4027,"title":{},"name":{},"text":{"90":{}},"component":{}}],["interest",{"_index":104,"title":{},"name":{},"text":{"3":{},"8":{},"9":{},"10":{},"21":{},"81":{},"86":{},"90":{},"143":{},"147":{},"173":{},"178":{},"179":{},"180":{},"182":{}},"component":{}}],["interfac",{"_index":731,"title":{},"name":{},"text":{"8":{},"10":{},"21":{},"41":{},"50":{},"55":{},"62":{},"65":{},"78":{},"81":{},"87":{},"91":{},"92":{},"93":{},"98":{},"115":{},"122":{},"125":{},"128":{},"141":{},"143":{},"148":{},"152":{},"153":{},"157":{},"163":{},"170":{},"178":{},"180":{},"182":{}},"component":{}}],["interface?dti=0&dl=en&lc=",{"_index":3546,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["interlocutor",{"_index":3470,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["intermedi",{"_index":3012,"title":{},"name":{},"text":{"65":{},"101":{},"128":{},"202":{}},"component":{}}],["intern",{"_index":1021,"title":{},"name":{},"text":{"10":{},"15":{},"36":{},"59":{},"83":{},"106":{},"145":{},"162":{},"180":{},"197":{}},"component":{}}],["internal_error",{"_index":2662,"title":{},"name":{},"text":{"48":{},"50":{},"122":{}},"component":{}}],["internalplcwriterequest",{"_index":1513,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["interop",{"_index":1544,"title":{},"name":{},"text":{"15":{},"106":{},"173":{}},"component":{}}],["interpret",{"_index":3525,"title":{},"name":{},"text":{"82":{},"83":{},"103":{},"145":{},"204":{}},"component":{}}],["interrupt",{"_index":3908,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["intersect",{"_index":4428,"title":{},"name":{},"text":{"151":{}},"component":{}}],["interv",{"_index":2501,"title":{},"name":{},"text":{"46":{},"47":{},"54":{},"83":{},"86":{},"91":{},"119":{},"120":{},"145":{},"147":{},"152":{},"158":{}},"component":{}}],["intra",{"_index":3683,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["introduc",{"_index":507,"title":{},"name":{},"text":{"5":{},"9":{},"15":{},"43":{},"101":{},"106":{},"174":{},"179":{},"202":{}},"component":{}}],["introduct",{"_index":551,"title":{"162":{},"6-1":{},"21-1":{},"55-2":{},"157-2":{},"176-1":{},"182-1":{}},"name":{},"text":{"17":{},"21":{},"41":{},"66":{},"113":{},"115":{},"129":{},"182":{}},"component":{}}],["intuit",{"_index":2249,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["invalid",{"_index":1538,"title":{},"name":{},"text":{"15":{},"56":{},"106":{},"159":{}},"component":{}}],["invalid_address",{"_index":2660,"title":{},"name":{},"text":{"48":{},"50":{},"122":{}},"component":{}}],["invalid_datatyp",{"_index":2661,"title":{},"name":{},"text":{"48":{},"50":{},"122":{}},"component":{}}],["invest",{"_index":1676,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["investig",{"_index":2276,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["invit",{"_index":903,"title":{},"name":{},"text":{"9":{},"174":{},"179":{}},"component":{}}],["involv",{"_index":445,"title":{},"name":{},"text":{"5":{},"9":{},"10":{},"14":{},"34":{},"36":{},"83":{},"87":{},"111":{},"145":{},"148":{},"174":{},"179":{},"180":{},"195":{},"197":{}},"component":{}}],["io",{"_index":3158,"title":{},"name":{},"text":{"71":{},"83":{},"101":{},"102":{},"134":{},"145":{},"202":{},"203":{}},"component":{}}],["ioctl",{"_index":2192,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["ioexcept",{"_index":4164,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["iot",{"_index":334,"title":{},"name":{},"text":{"4":{},"10":{},"12":{},"13":{},"58":{},"83":{},"110":{},"112":{},"145":{},"175":{},"180":{}},"component":{}}],["iotdb",{"_index":1004,"title":{"54":{},"158":{}},"name":{"54":{},"158":{}},"text":{"10":{},"54":{},"158":{},"180":{}},"component":{}}],["iotdb’",{"_index":2748,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["ip",{"_index":2359,"title":{},"name":{},"text":{"41":{},"50":{},"59":{},"62":{},"63":{},"75":{},"76":{},"78":{},"81":{},"99":{},"100":{},"115":{},"122":{},"125":{},"126":{},"138":{},"139":{},"141":{},"143":{},"162":{},"169":{},"171":{}},"component":{}}],["ip.address",{"_index":2957,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["ip/host",{"_index":2697,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["ipconfig",{"_index":3974,"title":{},"name":{},"text":{"86":{},"147":{}},"component":{}}],["ipv4",{"_index":2976,"title":{},"name":{},"text":{"62":{},"125":{}},"component":{}}],["isar",{"_index":972,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["isbrowsesupport",{"_index":1279,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["isdiscoverysupport",{"_index":1270,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["isn’t",{"_index":1454,"title":{},"name":{},"text":{"15":{},"17":{},"46":{},"55":{},"59":{},"106":{},"113":{},"119":{},"157":{},"162":{}},"component":{}}],["isoontcp",{"_index":1568,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["isreadsupport",{"_index":1276,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["isrun",{"_index":4026,"title":{},"name":{},"text":{"90":{}},"component":{}}],["issu",{"_index":527,"title":{"18":{},"19":{},"24":{},"108":{},"185":{},"36-18":{}},"name":{"18":{},"19":{},"24":{},"108":{},"185":{}},"text":{"5":{},"9":{},"14":{},"15":{},"18":{},"24":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"47":{},"48":{},"49":{},"50":{},"78":{},"82":{},"92":{},"106":{},"111":{},"120":{},"122":{},"124":{},"141":{},"153":{},"174":{},"179":{},"185":{},"189":{},"198":{}},"component":{}}],["issubscribesupport",{"_index":1278,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["ist",{"_index":1987,"title":{},"name":{},"text":{"31":{},"90":{},"192":{}},"component":{}}],["isvalid{typenam",{"_index":2718,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["isw",{"_index":1078,"title":{},"name":{},"text":{"10":{},"12":{},"110":{},"180":{}},"component":{}}],["iswritesupport",{"_index":1277,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["isxyz",{"_index":1421,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["is{field",{"_index":4039,"title":{},"name":{},"text":{"90":{}},"component":{}}],["it'",{"_index":2582,"title":{},"name":{},"text":{"47":{},"48":{},"50":{},"120":{},"122":{}},"component":{}}],["item",{"_index":1423,"title":{},"name":{},"text":{"15":{},"27":{},"34":{},"36":{},"47":{},"48":{},"50":{},"103":{},"104":{},"106":{},"120":{},"122":{},"188":{},"195":{},"197":{},"204":{},"206":{}},"component":{}}],["iter",{"_index":2051,"title":{"34-2":{},"36-5":{},"195-2":{},"197-5":{}},"name":{},"text":{"34":{},"36":{},"40":{},"47":{},"48":{},"50":{},"101":{},"103":{},"120":{},"122":{},"195":{},"197":{},"202":{}},"component":{}}],["itself",{"_index":175,"title":{},"name":{},"text":{"3":{},"15":{},"21":{},"22":{},"27":{},"34":{},"36":{},"39":{},"46":{},"47":{},"48":{},"50":{},"75":{},"85":{},"106":{},"119":{},"120":{},"122":{},"138":{},"173":{},"183":{},"188":{},"195":{},"197":{},"199":{}},"component":{}}],["it’",{"_index":160,"title":{},"name":{},"text":{"3":{},"5":{},"9":{},"17":{},"27":{},"31":{},"34":{},"36":{},"37":{},"46":{},"47":{},"48":{},"56":{},"71":{},"75":{},"82":{},"87":{},"103":{},"113":{},"119":{},"120":{},"134":{},"138":{},"148":{},"159":{},"173":{},"174":{},"179":{},"188":{},"192":{},"193":{},"195":{},"197":{},"198":{},"204":{}},"component":{}}],["iv",{"_index":362,"title":{},"name":{},"text":{"4":{},"13":{},"112":{},"175":{}},"component":{}}],["i’m",{"_index":3970,"title":{},"name":{},"text":{"86":{},"147":{}},"component":{}}],["jackson",{"_index":2287,"title":{},"name":{},"text":{"39":{},"199":{}},"component":{}}],["januari",{"_index":418,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["jar",{"_index":243,"title":{},"name":{},"text":{"3":{},"37":{},"50":{},"54":{},"55":{},"59":{},"86":{},"122":{},"147":{},"157":{},"158":{},"162":{},"173":{},"198":{}},"component":{}}],["jar.jar",{"_index":2785,"title":{},"name":{},"text":{"55":{},"59":{},"86":{},"147":{},"157":{},"162":{}},"component":{}}],["java",{"_index":112,"title":{"47":{},"120":{},"30-2":{},"31-2":{},"32-2":{},"42-2":{},"91-4":{},"101-1":{},"116-2":{},"152-4":{},"202-1":{}},"name":{},"text":{"3":{},"7":{},"8":{},"15":{},"16":{},"21":{},"22":{},"29":{},"30":{},"31":{},"32":{},"36":{},"37":{},"42":{},"43":{},"46":{},"47":{},"50":{},"54":{},"56":{},"59":{},"74":{},"78":{},"81":{},"82":{},"83":{},"86":{},"90":{},"91":{},"101":{},"103":{},"106":{},"107":{},"116":{},"119":{},"120":{},"122":{},"137":{},"141":{},"143":{},"145":{},"147":{},"151":{},"152":{},"158":{},"159":{},"162":{},"173":{},"177":{},"178":{},"182":{},"189":{},"191":{},"197":{},"198":{},"202":{},"204":{}},"component":{}}],["java,with",{"_index":242,"title":{},"name":{},"text":{"3":{},"36":{},"173":{},"197":{}},"component":{}}],["java.io.fil",{"_index":1766,"title":{},"name":{},"text":{"21":{},"101":{},"182":{},"202":{}},"component":{}}],["java.io.ioexcept",{"_index":1446,"title":{},"name":{},"text":{"15":{},"101":{},"106":{},"202":{}},"component":{}}],["java.nio.charset.standardcharset",{"_index":4152,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["java.time.dur",{"_index":3993,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["java.util",{"_index":4153,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["java.util.map",{"_index":1767,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["java.util.opt",{"_index":1752,"title":{},"name":{},"text":{"21":{}},"component":{}}],["java_arg",{"_index":2905,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["java_hom",{"_index":2025,"title":{},"name":{},"text":{"32":{}},"component":{}}],["javadoc",{"_index":261,"title":{},"name":{},"text":{"3":{},"34":{},"36":{},"173":{},"195":{},"197":{}},"component":{}}],["javalanguageoutput",{"_index":4154,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["javalanguagetemplatehelper(thistyp",{"_index":4177,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["javascript",{"_index":1869,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["java’",{"_index":2449,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["jax",{"_index":672,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["jcek",{"_index":3320,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["jdbc",{"_index":2338,"title":{},"name":{},"text":{"41":{},"51":{},"54":{},"115":{},"154":{},"158":{}},"component":{}}],["jdk",{"_index":115,"title":{},"name":{},"text":{"3":{},"30":{},"36":{},"81":{},"143":{},"173":{},"197":{}},"component":{}}],["jenkin",{"_index":1794,"title":{"22-1":{},"183-1":{}},"name":{},"text":{"22":{},"26":{},"27":{},"183":{},"187":{},"188":{}},"component":{}}],["jenkinsfil",{"_index":1802,"title":{},"name":{},"text":{"22":{},"183":{}},"component":{}}],["jersey",{"_index":726,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["jetbrain",{"_index":1098,"title":{},"name":{},"text":{"11":{},"181":{}},"component":{}}],["jira",{"_index":1824,"title":{"197-18":{}},"name":{},"text":{"26":{},"36":{},"174":{},"179":{},"185":{},"187":{},"195":{},"197":{}},"component":{}}],["jitter",{"_index":2862,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["jk",{"_index":2394,"title":{},"name":{},"text":{"43":{},"78":{},"141":{}},"component":{}}],["jm",{"_index":3681,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["job",{"_index":1904,"title":{"91-3":{},"152-3":{}},"name":{},"text":{"27":{},"55":{},"91":{},"152":{},"157":{},"183":{},"188":{}},"component":{}}],["jobbuild",{"_index":4054,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["jobbuilder.build",{"_index":4062,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["jobbuilder.field({fieldnam",{"_index":4060,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["jobbuilder.source({connectionnam",{"_index":4059,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["jobconfigurationtriggeredimplbuild",{"_index":4053,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["jobnam",{"_index":4070,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["join",{"_index":904,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["jpa",{"_index":674,"title":{},"name":{},"text":{"8":{},"15":{},"16":{},"90":{},"106":{},"107":{},"151":{},"178":{}},"component":{}}],["jprofil",{"_index":1100,"title":{},"name":{},"text":{"11":{},"181":{}},"component":{}}],["jqassist",{"_index":631,"title":{"8":{},"178":{},"8-1":{},"178-1":{}},"name":{"8":{},"178":{}},"text":{"8":{},"178":{}},"component":{}}],["jqassistant:serv",{"_index":695,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["jqueri",{"_index":1868,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["jre",{"_index":2166,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["json",{"_index":675,"title":{"91-6":{},"152-6":{}},"name":{},"text":{"8":{},"13":{},"55":{},"78":{},"83":{},"91":{},"112":{},"145":{},"152":{},"157":{},"178":{}},"component":{}}],["jsp",{"_index":4043,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["julian",{"_index":1025,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["jump",{"_index":3017,"title":{},"name":{},"text":{"65":{},"128":{}},"component":{}}],["june",{"_index":329,"title":{},"name":{},"text":{"4":{},"13":{},"175":{}},"component":{}}],["junit",{"_index":676,"title":{"39-3":{},"199-3":{}},"name":{},"text":{"8":{},"29":{},"178":{},"189":{}},"component":{}}],["justifi",{"_index":943,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["justin",{"_index":179,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["kafka",{"_index":121,"title":{"55":{},"157":{},"55-1":{},"55-4":{},"55-6":{},"55-7":{},"55-9":{},"55-10":{},"157-1":{},"157-4":{},"157-6":{},"157-7":{},"157-9":{},"157-10":{}},"name":{"55":{},"157":{}},"text":{"3":{},"13":{},"15":{},"16":{},"36":{},"55":{},"106":{},"107":{},"112":{},"157":{},"173":{},"197":{}},"component":{}}],["kafka_debug=i",{"_index":2816,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["kafka’",{"_index":2789,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["kannel",{"_index":1001,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["kar",{"_index":1487,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["karaf",{"_index":1002,"title":{},"name":{},"text":{"10":{},"15":{},"16":{},"36":{},"106":{},"107":{},"180":{},"197":{}},"component":{}}],["keen",{"_index":909,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["keep",{"_index":257,"title":{"5-4":{},"174-4":{}},"name":{},"text":{"3":{},"9":{},"14":{},"21":{},"26":{},"27":{},"32":{},"34":{},"36":{},"46":{},"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"87":{},"88":{},"103":{},"119":{},"123":{},"125":{},"126":{},"127":{},"133":{},"136":{},"139":{},"140":{},"141":{},"142":{},"144":{},"145":{},"148":{},"150":{},"173":{},"179":{},"187":{},"188":{},"195":{},"197":{},"204":{}},"component":{}}],["key",{"_index":847,"title":{},"name":{},"text":{"9":{},"15":{},"26":{},"34":{},"36":{},"37":{},"41":{},"43":{},"78":{},"106":{},"141":{},"179":{},"187":{},"195":{},"197":{},"198":{}},"component":{}}],["key/valu",{"_index":3451,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["keyserver.ubuntu.com",{"_index":2182,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["keyservers.net",{"_index":2181,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["keystor",{"_index":2390,"title":{},"name":{},"text":{"43":{},"78":{},"141":{}},"component":{}}],["keyword",{"_index":4280,"title":{},"name":{},"text":{"103":{}},"component":{}}],["kibana",{"_index":1548,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["kill",{"_index":1418,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["kind",{"_index":3004,"title":{},"name":{},"text":{"65":{},"66":{},"78":{},"101":{},"128":{},"129":{},"202":{}},"component":{}}],["kindli",{"_index":1097,"title":{},"name":{},"text":{"11":{},"26":{},"181":{},"187":{}},"component":{}}],["kirchheim",{"_index":1030,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["knife",{"_index":1086,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["know",{"_index":1637,"title":{},"name":{},"text":{"17":{},"34":{},"36":{},"50":{},"65":{},"66":{},"83":{},"103":{},"113":{},"122":{},"128":{},"129":{},"145":{},"195":{},"197":{}},"component":{}}],["knowledg",{"_index":4014,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["known",{"_index":892,"title":{"20-1":{},"114-1":{}},"name":{},"text":{"9":{},"179":{}},"component":{}}],["knx",{"_index":1256,"title":{},"name":{},"text":{"15":{},"46":{},"75":{},"103":{},"106":{},"119":{},"138":{}},"component":{}}],["knxeventhandler(ev",{"_index":2521,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["knxnet",{"_index":3198,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["knxnet/ip",{"_index":1372,"title":{"75":{},"138":{}},"name":{},"text":{"15":{},"36":{},"74":{},"75":{},"106":{},"137":{},"138":{},"197":{}},"component":{}}],["knxnetip",{"_index":3197,"title":{},"name":{"75":{},"138":{}},"text":{"75":{},"138":{}},"component":{}}],["knxproj",{"_index":1300,"title":{},"name":{},"text":{"15":{},"75":{},"106":{},"138":{}},"component":{}}],["kommunik",{"_index":386,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["kse",{"_index":2380,"title":{"43-1":{}},"name":{},"text":{"43":{}},"component":{}}],["ksql",{"_index":1165,"title":{},"name":{},"text":{"13":{},"112":{}},"component":{}}],["l",{"_index":1285,"title":{},"name":{},"text":{"15":{},"37":{},"83":{},"106":{},"145":{},"198":{}},"component":{}}],["la",{"_index":988,"title":{},"name":{},"text":{"10":{},"82":{},"83":{},"145":{},"180":{}},"component":{}}],["label",{"_index":1810,"title":{},"name":{},"text":{"26":{},"27":{},"56":{},"159":{},"187":{},"188":{},"193":{}},"component":{}}],["lack",{"_index":1716,"title":{},"name":{},"text":{"21":{},"72":{},"78":{},"135":{},"141":{},"182":{}},"component":{}}],["lalala",{"_index":1896,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["languag",{"_index":100,"title":{"74":{},"21-5":{},"21-8":{},"30-3":{},"31-3":{},"32-3":{},"137-1":{},"182-5":{},"182-8":{}},"name":{},"text":{"3":{},"15":{},"21":{},"27":{},"42":{},"83":{},"84":{},"101":{},"103":{},"106":{},"116":{},"145":{},"146":{},"173":{},"182":{},"188":{},"189":{},"202":{},"204":{}},"component":{}}],["languagenam",{"_index":1719,"title":{},"name":{},"text":{"21":{},"101":{},"182":{},"202":{}},"component":{}}],["languageoutput",{"_index":1761,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["larg",{"_index":1457,"title":{},"name":{},"text":{"15":{},"21":{},"62":{},"82":{},"83":{},"106":{},"125":{},"145":{},"182":{}},"component":{}}],["larger",{"_index":3144,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["last",{"_index":1461,"title":{},"name":{},"text":{"15":{},"17":{},"21":{},"34":{},"36":{},"37":{},"39":{},"41":{},"50":{},"56":{},"71":{},"82":{},"83":{},"90":{},"91":{},"102":{},"103":{},"106":{},"113":{},"115":{},"122":{},"134":{},"145":{},"152":{},"159":{},"182":{},"195":{},"197":{},"198":{},"199":{},"203":{},"204":{}},"component":{}}],["latenc",{"_index":1659,"title":{},"name":{},"text":{"17":{},"41":{},"113":{},"115":{}},"component":{}}],["later",{"_index":108,"title":{},"name":{},"text":{"3":{},"21":{},"77":{},"83":{},"140":{},"145":{},"173":{},"182":{}},"component":{}}],["latest",{"_index":543,"title":{},"name":{},"text":{"5":{},"21":{},"26":{},"29":{},"34":{},"36":{},"46":{},"49":{},"55":{},"119":{},"124":{},"157":{},"174":{},"182":{},"187":{},"189":{},"195":{},"197":{}},"component":{}}],["launch",{"_index":3341,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["law",{"_index":4193,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["lay",{"_index":1703,"title":{},"name":{},"text":{"21":{}},"component":{}}],["layer",{"_index":1689,"title":{},"name":{},"text":{"21":{},"65":{},"66":{},"78":{},"83":{},"93":{},"98":{},"128":{},"129":{},"141":{},"145":{},"163":{},"170":{},"182":{}},"component":{}}],["lazi",{"_index":591,"title":{},"name":{},"text":{"6":{},"176":{}},"component":{}}],["lc10",{"_index":804,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["lc20",{"_index":808,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["lc30",{"_index":811,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["lc40",{"_index":813,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["lc50",{"_index":821,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["ld",{"_index":3523,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["ldap",{"_index":1850,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["leak",{"_index":1292,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["learn",{"_index":1180,"title":{},"name":{},"text":{"13":{},"112":{}},"component":{}}],["leas",{"_index":3983,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["leav",{"_index":2088,"title":{},"name":{},"text":{"34":{},"55":{},"66":{},"83":{},"129":{},"145":{},"157":{},"193":{},"195":{}},"component":{}}],["leb",{"_index":1131,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["led",{"_index":3913,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["left",{"_index":754,"title":{},"name":{},"text":{"8":{},"34":{},"36":{},"55":{},"59":{},"65":{},"103":{},"128":{},"157":{},"162":{},"178":{},"195":{},"197":{},"204":{}},"component":{}}],["legaci",{"_index":1588,"title":{},"name":{},"text":{"16":{},"36":{},"107":{},"197":{}},"component":{}}],["legend",{"_index":3193,"title":{},"name":{},"text":{"74":{},"137":{}},"component":{}}],["len",{"_index":2664,"title":{},"name":{},"text":{"48":{},"103":{},"204":{}},"component":{}}],["len(response.tags[tag_name].valu",{"_index":2649,"title":{},"name":{},"text":{"48":{}},"component":{}}],["length",{"_index":1252,"title":{},"name":{},"text":{"15":{},"62":{},"66":{},"72":{},"77":{},"98":{},"103":{},"106":{},"125":{},"129":{},"135":{},"140":{},"170":{},"204":{}},"component":{}}],["lengthdr\":28,\"szl",{"_index":3899,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["length})[{count",{"_index":3508,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["less",{"_index":744,"title":{},"name":{},"text":{"8":{},"72":{},"82":{},"83":{},"84":{},"86":{},"88":{},"135":{},"145":{},"146":{},"147":{},"150":{},"178":{}},"component":{}}],["let’",{"_index":2342,"title":{},"name":{},"text":{"41":{},"46":{},"50":{},"56":{},"82":{},"83":{},"115":{},"119":{},"122":{},"145":{},"159":{}},"component":{}}],["level",{"_index":765,"title":{},"name":{},"text":{"9":{},"14":{},"15":{},"27":{},"41":{},"59":{},"65":{},"75":{},"78":{},"83":{},"90":{},"93":{},"98":{},"103":{},"106":{},"111":{},"115":{},"128":{},"138":{},"141":{},"145":{},"162":{},"163":{},"170":{},"179":{},"188":{},"204":{}},"component":{}}],["lib",{"_index":2786,"title":{},"name":{},"text":{"55":{},"56":{},"157":{},"159":{}},"component":{}}],["libpcap",{"_index":1919,"title":{"30-4":{},"31-4":{},"32-4":{},"191-2":{},"192-2":{},"193-2":{}},"name":{},"text":{"29":{},"30":{},"31":{},"189":{},"191":{},"192":{},"193":{}},"component":{}}],["librari",{"_index":90,"title":{"3-10":{},"173-11":{}},"name":{},"text":{"3":{},"7":{},"9":{},"12":{},"15":{},"16":{},"31":{},"32":{},"36":{},"83":{},"93":{},"106":{},"107":{},"110":{},"145":{},"163":{},"173":{},"177":{},"179":{},"192":{},"197":{}},"component":{}}],["librecon",{"_index":1177,"title":{},"name":{},"text":{"13":{},"112":{}},"component":{}}],["licens",{"_index":775,"title":{},"name":{},"text":{"9":{},"11":{},"17":{},"37":{},"101":{},"113":{},"179":{},"181":{},"198":{},"202":{}},"component":{}}],["life",{"_index":2178,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["lifetim",{"_index":3323,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["light",{"_index":3440,"title":{"82":{}},"name":{"82":{}},"text":{"82":{}},"component":{}}],["like",{"_index":1009,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["limit",{"_index":446,"title":{},"name":{},"text":{"5":{},"17":{},"21":{},"47":{},"48":{},"50":{},"55":{},"77":{},"78":{},"82":{},"83":{},"88":{},"101":{},"113":{},"120":{},"122":{},"140":{},"141":{},"145":{},"150":{},"157":{},"174":{},"182":{},"202":{}},"component":{}}],["line",{"_index":795,"title":{},"name":{},"text":{"9":{},"15":{},"26":{},"36":{},"37":{},"47":{},"48":{},"50":{},"54":{},"55":{},"56":{},"101":{},"106":{},"120":{},"122":{},"157":{},"158":{},"159":{},"179":{},"187":{},"193":{},"197":{},"198":{},"202":{}},"component":{}}],["lingua",{"_index":3637,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["link",{"_index":32,"title":{"27-2":{},"188-2":{}},"name":{},"text":{"2":{},"8":{},"9":{},"10":{},"17":{},"27":{},"36":{},"83":{},"113":{},"145":{},"172":{},"178":{},"179":{},"180":{},"188":{},"197":{}},"component":{}}],["link_lay",{"_index":3202,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["lint",{"_index":3096,"title":{},"name":{},"text":{"66":{},"70":{},"72":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"129":{},"133":{},"135":{},"139":{},"140":{},"141":{},"143":{},"145":{},"146":{}},"component":{}}],["linux",{"_index":138,"title":{"30":{},"191":{}},"name":{"30":{},"191":{}},"text":{"3":{},"7":{},"9":{},"29":{},"30":{},"32":{},"37":{},"56":{},"81":{},"86":{},"93":{},"97":{},"98":{},"143":{},"147":{},"159":{},"163":{},"168":{},"170":{},"173":{},"177":{},"179":{},"189":{},"198":{}},"component":{}}],["list",{"_index":320,"title":{"14-1":{},"14-2":{},"34-8":{},"36-11":{},"83-22":{},"111-1":{},"111-2":{},"145-22":{},"195-8":{},"197-11":{}},"name":{},"text":{"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"12":{},"14":{},"15":{},"21":{},"36":{},"37":{},"40":{},"41":{},"43":{},"47":{},"48":{},"50":{},"56":{},"59":{},"74":{},"78":{},"81":{},"82":{},"83":{},"86":{},"101":{},"103":{},"106":{},"110":{},"111":{},"120":{},"122":{},"137":{},"143":{},"145":{},"147":{},"159":{},"162":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"182":{},"197":{},"198":{},"202":{},"204":{}},"component":{}}],["listdriv",{"_index":1266,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["listen",{"_index":2987,"title":{},"name":{},"text":{"63":{},"72":{},"75":{},"77":{},"126":{},"135":{},"138":{},"140":{}},"component":{}}],["listservic",{"_index":4390,"title":{},"name":{},"text":{"105":{},"205":{}},"component":{}}],["liter",{"_index":1243,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["littl",{"_index":692,"title":{},"name":{},"text":{"8":{},"12":{},"29":{},"37":{},"43":{},"47":{},"56":{},"82":{},"83":{},"86":{},"88":{},"91":{},"93":{},"110":{},"120":{},"145":{},"147":{},"150":{},"152":{},"159":{},"163":{},"178":{},"189":{},"193":{},"198":{}},"component":{}}],["little_endian",{"_index":3234,"title":{},"name":{},"text":{"77":{},"103":{}},"component":{}}],["little_endian_byte_swap",{"_index":3236,"title":{},"name":{},"text":{"77":{}},"component":{}}],["live",{"_index":1618,"title":{},"name":{},"text":{"17":{},"34":{},"36":{},"86":{},"113":{},"147":{},"195":{},"197":{}},"component":{}}],["lizenzkosten",{"_index":391,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["llvm",{"_index":4473,"title":{},"name":{},"text":{"193":{}},"component":{}}],["lo",{"_index":3602,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["load",{"_index":1927,"title":{},"name":{},"text":{"29":{},"55":{},"62":{},"82":{},"87":{},"104":{},"125":{},"148":{},"157":{},"189":{},"206":{}},"component":{}}],["loaded?truefalsei",{"_index":4384,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["loader",{"_index":3898,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["local",{"_index":50,"title":{},"name":{},"text":{"2":{},"3":{},"5":{},"26":{},"34":{},"36":{},"37":{},"55":{},"63":{},"75":{},"78":{},"81":{},"82":{},"83":{},"103":{},"126":{},"138":{},"141":{},"143":{},"145":{},"157":{},"172":{},"173":{},"174":{},"193":{},"195":{},"197":{},"198":{},"204":{}},"component":{}}],["local_data",{"_index":3524,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["localhost",{"_index":3433,"title":{},"name":{},"text":{"81":{},"143":{}},"component":{}}],["localhost:2181",{"_index":2820,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["localhost:9092",{"_index":2800,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["localtim",{"_index":3396,"title":{},"name":{},"text":{"78":{}},"component":{}}],["locat",{"_index":325,"title":{},"name":{},"text":{"4":{},"5":{},"21":{},"34":{},"36":{},"39":{},"43":{},"63":{},"70":{},"76":{},"78":{},"87":{},"101":{},"126":{},"133":{},"139":{},"141":{},"148":{},"173":{},"174":{},"175":{},"182":{},"193":{},"195":{},"197":{},"199":{},"202":{}},"component":{}}],["log",{"_index":1437,"title":{},"name":{},"text":{"15":{},"26":{},"34":{},"36":{},"50":{},"56":{},"78":{},"83":{},"84":{},"103":{},"106":{},"122":{},"141":{},"145":{},"146":{},"159":{},"187":{},"193":{},"195":{},"197":{},"204":{}},"component":{}}],["log.error(\"error",{"_index":4074,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["log4j",{"_index":1325,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["logger",{"_index":4155,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["logger.error(\"error",{"_index":2590,"title":{},"name":{},"text":{"47":{},"48":{},"50":{},"101":{},"120":{},"122":{},"202":{}},"component":{}}],["logger.error(\"thi",{"_index":2556,"title":{},"name":{},"text":{"47":{},"48":{},"50":{},"120":{},"122":{}},"component":{}}],["logger.info",{"_index":2652,"title":{},"name":{},"text":{"48":{},"50":{},"122":{}},"component":{}}],["logger.info(\"valu",{"_index":2584,"title":{},"name":{},"text":{"47":{},"48":{},"50":{},"120":{},"122":{}},"component":{}}],["loggerfactory.getlogger(javalanguageoutput.class",{"_index":4156,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["logic",{"_index":31,"title":{"40-4":{}},"name":{},"text":{"2":{},"16":{},"17":{},"21":{},"36":{},"39":{},"40":{},"41":{},"55":{},"65":{},"78":{},"84":{},"103":{},"107":{},"113":{},"115":{},"128":{},"141":{},"146":{},"157":{},"172":{},"197":{},"199":{},"204":{}},"component":{}}],["login",{"_index":1807,"title":{"26-2":{},"187-2":{}},"name":{},"text":{"26":{},"174":{},"187":{}},"component":{}}],["logix",{"_index":3189,"title":{"76":{},"139":{}},"name":{"76":{},"139":{}},"text":{"74":{},"76":{},"137":{},"139":{}},"component":{}}],["logix:tcp://127.0.0.1:502?communicationpath=[1,1",{"_index":3225,"title":{},"name":{},"text":{"76":{},"139":{}},"component":{}}],["logix:tcp://{ip",{"_index":3223,"title":{},"name":{},"text":{"76":{},"139":{}},"component":{}}],["logmessag",{"_index":2892,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["logo",{"_index":3442,"title":{},"name":{},"text":{"82":{},"83":{},"88":{},"145":{},"150":{}},"component":{}}],["logstash",{"_index":1523,"title":{},"name":{},"text":{"15":{},"36":{},"106":{},"197":{}},"component":{}}],["long",{"_index":833,"title":{},"name":{},"text":{"9":{},"12":{},"15":{},"50":{},"59":{},"77":{},"78":{},"82":{},"83":{},"87":{},"106":{},"110":{},"122":{},"140":{},"141":{},"145":{},"148":{},"162":{},"179":{}},"component":{}}],["longer",{"_index":1262,"title":{},"name":{},"text":{"15":{},"26":{},"34":{},"36":{},"37":{},"46":{},"77":{},"87":{},"106":{},"119":{},"140":{},"148":{},"187":{},"195":{},"197":{},"198":{}},"component":{}}],["look",{"_index":367,"title":{},"name":{},"text":{"4":{},"5":{},"7":{},"21":{},"27":{},"30":{},"34":{},"36":{},"39":{},"41":{},"46":{},"50":{},"56":{},"62":{},"65":{},"76":{},"77":{},"78":{},"80":{},"82":{},"83":{},"84":{},"85":{},"86":{},"88":{},"93":{},"102":{},"103":{},"115":{},"119":{},"122":{},"125":{},"128":{},"139":{},"140":{},"141":{},"144":{},"145":{},"146":{},"147":{},"150":{},"151":{},"159":{},"163":{},"174":{},"175":{},"177":{},"182":{},"188":{},"193":{},"195":{},"197":{},"199":{},"201":{},"203":{},"204":{}},"component":{}}],["lookup",{"_index":2428,"title":{},"name":{},"text":{"46":{},"78":{},"119":{},"141":{}},"component":{}}],["loop",{"_index":2450,"title":{},"name":{},"text":{"46":{},"48":{},"50":{},"86":{},"90":{},"95":{},"103":{},"119":{},"122":{},"147":{},"166":{},"204":{}},"component":{}}],["loos",{"_index":1619,"title":{},"name":{},"text":{"17":{},"34":{},"113":{},"195":{}},"component":{}}],["loss",{"_index":1633,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["lost",{"_index":3471,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["lot",{"_index":176,"title":{},"name":{},"text":{"3":{},"10":{},"15":{},"17":{},"21":{},"34":{},"36":{},"39":{},"70":{},"84":{},"88":{},"101":{},"103":{},"106":{},"113":{},"133":{},"146":{},"150":{},"173":{},"180":{},"182":{},"193":{},"195":{},"197":{},"199":{},"202":{},"204":{}},"component":{}}],["love",{"_index":1183,"title":{},"name":{},"text":{"13":{},"112":{}},"component":{}}],["low",{"_index":259,"title":{},"name":{},"text":{"3":{},"41":{},"93":{},"98":{},"115":{},"163":{},"170":{},"173":{}},"component":{}}],["lower",{"_index":1891,"title":{},"name":{},"text":{"27":{},"41":{},"66":{},"83":{},"115":{},"129":{},"145":{},"188":{}},"component":{}}],["lowest",{"_index":3075,"title":{},"name":{},"text":{"66":{},"83":{},"129":{},"145":{}},"component":{}}],["lreal",{"_index":3102,"title":{},"name":{},"text":{"66":{},"72":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"129":{},"135":{},"140":{},"141":{},"143":{},"145":{},"146":{}},"component":{}}],["ltime",{"_index":3533,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["luka",{"_index":1060,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["lukasz@connectorio.com",{"_index":1216,"title":{},"name":{},"text":{"14":{},"111":{}},"component":{}}],["lword",{"_index":1309,"title":{},"name":{},"text":{"15":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"106":{},"140":{},"141":{},"143":{},"145":{},"146":{}},"component":{}}],["m",{"_index":1556,"title":{},"name":{},"text":{"15":{},"29":{},"34":{},"36":{},"82":{},"83":{},"106":{},"145":{},"195":{},"197":{}},"component":{}}],["m\"delet",{"_index":2150,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["m\"remov",{"_index":2223,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["m\"stage",{"_index":2114,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["m1",{"_index":2023,"title":{},"name":{},"text":{"32":{}},"component":{}}],["m2",{"_index":2024,"title":{},"name":{},"text":{"32":{},"36":{},"197":{}},"component":{}}],["m2/repositori",{"_index":303,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["m2/settings.xml",{"_index":2169,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["m340",{"_index":3947,"title":{},"name":{},"text":{"85":{}},"component":{}}],["m580",{"_index":3948,"title":{},"name":{},"text":{"85":{}},"component":{}}],["maa",{"_index":359,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["mac",{"_index":136,"title":{"31":{},"192":{}},"name":{},"text":{"3":{},"7":{},"9":{},"26":{},"29":{},"31":{},"32":{},"36":{},"41":{},"56":{},"75":{},"81":{},"86":{},"97":{},"115":{},"138":{},"143":{},"147":{},"159":{},"168":{},"173":{},"177":{},"187":{},"192":{},"193":{},"197":{}},"component":{}}],["mac/linux",{"_index":2254,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["machin",{"_index":221,"title":{"26-2":{},"187-2":{}},"name":{},"text":{"3":{},"10":{},"12":{},"26":{},"27":{},"29":{},"32":{},"83":{},"103":{},"110":{},"145":{},"173":{},"180":{},"187":{},"188":{},"189":{},"193":{}},"component":{}}],["machineri",{"_index":1600,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["maco",{"_index":1923,"title":{},"name":{"31":{},"192":{}},"text":{"29":{},"31":{},"37":{},"179":{},"189":{},"192":{},"198":{}},"component":{}}],["made",{"_index":934,"title":{"83-3":{},"145-3":{}},"name":{},"text":{"9":{},"11":{},"15":{},"17":{},"21":{},"78":{},"82":{},"83":{},"93":{},"106":{},"113":{},"141":{},"145":{},"163":{},"179":{},"181":{},"182":{},"204":{}},"component":{}}],["magic",{"_index":1870,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["mail",{"_index":449,"title":{"34-8":{},"36-11":{},"195-8":{},"197-11":{}},"name":{},"text":{"5":{},"7":{},"9":{},"34":{},"36":{},"174":{},"177":{},"179":{},"195":{},"197":{}},"component":{}}],["mailinglist",{"_index":1199,"title":{},"name":{},"text":{"14":{},"111":{}},"component":{}}],["main",{"_index":935,"title":{},"name":{},"text":{"9":{},"10":{},"12":{},"17":{},"21":{},"22":{},"34":{},"46":{},"47":{},"50":{},"59":{},"72":{},"75":{},"82":{},"83":{},"87":{},"88":{},"90":{},"92":{},"93":{},"103":{},"110":{},"113":{},"119":{},"120":{},"122":{},"135":{},"138":{},"145":{},"148":{},"150":{},"151":{},"153":{},"162":{},"163":{},"173":{},"179":{},"180":{},"182":{},"195":{}},"component":{}}],["main(str",{"_index":3711,"title":{},"name":{},"text":{"83":{},"87":{},"90":{},"145":{},"148":{},"151":{}},"component":{}}],["mainli",{"_index":1242,"title":{},"name":{},"text":{"15":{},"21":{},"34":{},"36":{},"87":{},"103":{},"106":{},"148":{},"195":{},"197":{}},"component":{}}],["mainstream",{"_index":1012,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["maintain",{"_index":931,"title":{},"name":{},"text":{"9":{},"12":{},"21":{},"27":{},"52":{},"83":{},"110":{},"145":{},"179":{},"182":{},"188":{}},"component":{}}],["major",{"_index":590,"title":{},"name":{},"text":{"6":{},"15":{},"34":{},"36":{},"37":{},"55":{},"62":{},"93":{},"106":{},"125":{},"157":{},"163":{},"176":{},"195":{},"197":{},"198":{}},"component":{}}],["make",{"_index":93,"title":{"6":{},"176":{},"6-5":{},"176-5":{}},"name":{},"text":{"3":{},"5":{},"7":{},"9":{},"15":{},"16":{},"17":{},"21":{},"23":{},"26":{},"27":{},"29":{},"31":{},"32":{},"34":{},"36":{},"37":{},"39":{},"46":{},"50":{},"55":{},"56":{},"59":{},"65":{},"66":{},"70":{},"78":{},"83":{},"90":{},"103":{},"106":{},"107":{},"113":{},"119":{},"122":{},"128":{},"129":{},"133":{},"145":{},"151":{},"157":{},"159":{},"162":{},"173":{},"174":{},"177":{},"179":{},"182":{},"184":{},"187":{},"188":{},"189":{},"192":{},"193":{},"195":{},"197":{},"198":{},"199":{},"204":{}},"component":{}}],["manag",{"_index":554,"title":{"6-3":{},"176-3":{}},"name":{},"text":{"9":{},"12":{},"15":{},"21":{},"28":{},"29":{},"34":{},"36":{},"46":{},"54":{},"55":{},"83":{},"88":{},"90":{},"91":{},"92":{},"106":{},"110":{},"119":{},"145":{},"150":{},"152":{},"153":{},"157":{},"158":{},"179":{},"182":{},"189":{},"190":{},"195":{},"197":{}},"component":{}}],["mandatori",{"_index":809,"title":{},"name":{},"text":{"9":{},"70":{},"86":{},"133":{},"147":{},"179":{}},"component":{}}],["manejo",{"_index":3576,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["mani",{"_index":575,"title":{},"name":{},"text":{"6":{},"15":{},"43":{},"46":{},"47":{},"48":{},"50":{},"72":{},"82":{},"83":{},"87":{},"90":{},"92":{},"102":{},"103":{},"106":{},"119":{},"120":{},"122":{},"135":{},"145":{},"148":{},"151":{},"153":{},"176":{},"203":{},"204":{}},"component":{}}],["manner",{"_index":887,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["manual",{"_index":110,"title":{"103-11":{},"204-10":{}},"name":{},"text":{"3":{},"21":{},"30":{},"34":{},"36":{},"39":{},"46":{},"54":{},"56":{},"62":{},"66":{},"78":{},"82":{},"83":{},"85":{},"103":{},"119":{},"125":{},"129":{},"141":{},"145":{},"158":{},"159":{},"173":{},"182":{},"191":{},"193":{},"195":{},"197":{},"199":{},"204":{}},"component":{}}],["manualarray",{"_index":4244,"title":{"103-10":{},"204-9":{}},"name":{},"text":{"102":{},"103":{},"203":{},"204":{}},"component":{}}],["manufactur",{"_index":1040,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["map",{"_index":1091,"title":{"90":{},"151":{},"90-1":{},"151-1":{}},"name":{},"text":{"10":{},"15":{},"16":{},"21":{},"55":{},"66":{},"72":{},"77":{},"78":{},"82":{},"83":{},"90":{},"91":{},"101":{},"103":{},"106":{},"107":{},"129":{},"135":{},"140":{},"141":{},"145":{},"151":{},"152":{},"157":{},"180":{},"182":{},"202":{},"204":{}},"component":{}}],["map.foreach((x",{"_index":3728,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["map.get(s7modeevent.fields.current_mode.nam",{"_index":3731,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["map.get(s7sysevent.fields.event_id.nam",{"_index":3779,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["march",{"_index":352,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["mark",{"_index":659,"title":{},"name":{},"text":{"8":{},"26":{},"66":{},"90":{},"102":{},"129":{},"178":{},"187":{},"203":{}},"component":{}}],["mark_par",{"_index":3155,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["marker",{"_index":1557,"title":{},"name":{},"text":{"15":{},"36":{},"106":{},"197":{}},"component":{}}],["market",{"_index":907,"title":{},"name":{},"text":{"9":{},"12":{},"72":{},"110":{},"135":{},"179":{}},"component":{}}],["markup",{"_index":1876,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["mask",{"_index":3044,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["master",{"_index":3919,"title":{},"name":{},"text":{"83":{},"102":{},"145":{},"203":{}},"component":{}}],["match",{"_index":1310,"title":{},"name":{},"text":{"15":{},"21":{},"26":{},"39":{},"59":{},"63":{},"75":{},"76":{},"78":{},"81":{},"103":{},"106":{},"126":{},"138":{},"139":{},"141":{},"143":{},"162":{},"187":{},"199":{},"204":{}},"component":{}}],["materi",{"_index":317,"title":{"4-1":{},"175-1":{}},"name":{},"text":{},"component":{}}],["mathemat",{"_index":1034,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["matrix",{"_index":1800,"title":{},"name":{},"text":{"22":{}},"component":{}}],["matter",{"_index":925,"title":{},"name":{},"text":{"9":{},"26":{},"34":{},"36":{},"39":{},"55":{},"157":{},"179":{},"187":{},"193":{},"195":{},"197":{},"199":{}},"component":{}}],["matthia",{"_index":1074,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["matur",{"_index":758,"title":{"9":{},"179":{},"9-2":{},"179-2":{}},"name":{"9":{},"179":{}},"text":{"9":{},"179":{}},"component":{}}],["maven",{"_index":77,"title":{"3-2":{},"3-3":{},"3-4":{},"3-5":{},"3-6":{},"21-6":{},"34-11":{},"36-15":{},"173-2":{},"173-3":{},"173-4":{},"173-5":{},"173-6":{},"182-6":{},"195-11":{},"197-15":{}},"name":{},"text":{"3":{},"7":{},"8":{},"9":{},"21":{},"27":{},"29":{},"32":{},"34":{},"36":{},"37":{},"40":{},"46":{},"47":{},"49":{},"50":{},"56":{},"59":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"91":{},"92":{},"93":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"119":{},"120":{},"122":{},"123":{},"124":{},"125":{},"126":{},"127":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"152":{},"153":{},"159":{},"162":{},"163":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"173":{},"177":{},"178":{},"179":{},"182":{},"183":{},"188":{},"189":{},"195":{},"197":{},"198":{},"202":{}},"component":{}}],["mavencentr",{"_index":306,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["mavenloc",{"_index":307,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["maven’",{"_index":1786,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["max",{"_index":1391,"title":{},"name":{},"text":{"15":{},"77":{},"82":{},"83":{},"106":{},"145":{}},"component":{}}],["maxim",{"_index":3620,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["maximum",{"_index":1251,"title":{},"name":{},"text":{"15":{},"63":{},"75":{},"77":{},"78":{},"82":{},"83":{},"95":{},"106":{},"126":{},"138":{},"141":{},"145":{},"166":{}},"component":{}}],["maxleasetim",{"_index":3992,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["maxwaittim",{"_index":3994,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["mclean",{"_index":180,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["md5",{"_index":1836,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["md5.html",{"_index":4446,"title":{},"name":{},"text":{"187":{}},"component":{}}],["mean",{"_index":47,"title":{},"name":{},"text":{"2":{},"3":{},"21":{},"66":{},"78":{},"88":{},"98":{},"102":{},"103":{},"129":{},"150":{},"151":{},"170":{},"172":{},"173":{},"182":{},"203":{},"204":{}},"component":{}}],["meaning",{"_index":2806,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["meant",{"_index":760,"title":{},"name":{},"text":{"9":{},"93":{},"163":{},"179":{}},"component":{}}],["measur",{"_index":2733,"title":{},"name":{},"text":{"54":{},"83":{},"145":{},"158":{}},"component":{}}],["mechan",{"_index":1744,"title":{},"name":{},"text":{"21":{},"27":{},"41":{},"115":{},"182":{},"188":{}},"component":{}}],["meet",{"_index":429,"title":{},"name":{},"text":{"4":{},"6":{},"9":{},"10":{},"13":{},"34":{},"36":{},"103":{},"112":{},"175":{},"176":{},"179":{},"180":{},"195":{},"197":{},"204":{}},"component":{}}],["meetup",{"_index":333,"title":{},"name":{},"text":{"4":{},"13":{},"112":{},"175":{}},"component":{}}],["mehr",{"_index":420,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["member",{"_index":571,"title":{},"name":{},"text":{"6":{},"9":{},"10":{},"14":{},"26":{},"34":{},"36":{},"111":{},"176":{},"179":{},"180":{},"187":{},"195":{},"197":{}},"component":{}}],["memori",{"_index":1103,"title":{"77-14":{},"82-9":{},"83-12":{},"85-6":{},"140-14":{},"145-12":{}},"name":{},"text":{"11":{},"15":{},"46":{},"77":{},"82":{},"83":{},"84":{},"85":{},"87":{},"90":{},"102":{},"103":{},"106":{},"119":{},"140":{},"145":{},"146":{},"148":{},"181":{},"203":{},"204":{}},"component":{}}],["mention",{"_index":812,"title":{},"name":{},"text":{"9":{},"12":{},"21":{},"34":{},"36":{},"37":{},"87":{},"90":{},"91":{},"101":{},"103":{},"110":{},"148":{},"152":{},"179":{},"182":{},"195":{},"197":{},"198":{},"202":{}},"component":{}}],["mentor",{"_index":761,"title":{},"name":{},"text":{"9":{},"10":{},"179":{},"180":{}},"component":{}}],["menu",{"_index":1862,"title":{"27-2":{},"188-2":{}},"name":{},"text":{"27":{},"30":{},"188":{},"191":{}},"component":{}}],["merg",{"_index":504,"title":{"34-12":{},"36-17":{},"195-12":{},"197-17":{}},"name":{},"text":{"5":{},"15":{},"34":{},"36":{},"82":{},"106":{},"174":{},"195":{},"197":{}},"component":{}}],["meritocrat",{"_index":911,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["messag",{"_index":469,"title":{},"name":{},"text":{"5":{},"9":{},"15":{},"30":{},"31":{},"32":{},"34":{},"36":{},"43":{},"47":{},"48":{},"50":{},"56":{},"62":{},"66":{},"75":{},"78":{},"82":{},"83":{},"84":{},"101":{},"102":{},"103":{},"106":{},"120":{},"122":{},"125":{},"129":{},"138":{},"141":{},"145":{},"146":{},"159":{},"174":{},"179":{},"195":{},"197":{},"202":{},"203":{},"204":{}},"component":{}}],["messagecodec",{"_index":29,"title":{},"name":{},"text":{"2":{},"172":{}},"component":{}}],["messageend",{"_index":4234,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["messagesecur",{"_index":4423,"title":{},"name":{},"text":{"141":{}},"component":{}}],["messagestart",{"_index":4226,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["messagetyp",{"_index":4266,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["met",{"_index":621,"title":{},"name":{},"text":{"7":{},"30":{},"31":{},"32":{},"177":{}},"component":{}}],["meta",{"_index":1745,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["metadata",{"_index":2335,"title":{"41-4":{},"78-13":{}},"name":{},"text":{"41":{},"47":{},"48":{},"50":{},"78":{},"120":{},"122":{}},"component":{}}],["method",{"_index":1265,"title":{},"name":{},"text":{"15":{},"21":{},"39":{},"46":{},"47":{},"48":{},"50":{},"82":{},"83":{},"87":{},"90":{},"91":{},"101":{},"103":{},"106":{},"119":{},"120":{},"122":{},"145":{},"148":{},"151":{},"152":{},"182":{},"199":{},"202":{},"204":{}},"component":{}}],["mi",{"_index":2735,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["micro",{"_index":3416,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["microsecond",{"_index":3534,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["microservic",{"_index":3980,"title":{},"name":{},"text":{"87":{},"88":{},"148":{},"150":{}},"component":{}}],["microsoft",{"_index":1963,"title":{},"name":{},"text":{"30":{},"31":{},"32":{},"191":{},"192":{}},"component":{}}],["middl",{"_index":3511,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["midi",{"_index":3128,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["milan",{"_index":1075,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["millisecond",{"_index":3325,"title":{},"name":{},"text":{"78":{},"82":{},"83":{},"91":{},"141":{},"145":{},"152":{}},"component":{}}],["milo",{"_index":1337,"title":{"59":{}},"name":{"59":{},"162":{}},"text":{"15":{},"59":{},"78":{},"106":{},"141":{},"162":{}},"component":{}}],["min",{"_index":1920,"title":{},"name":{},"text":{"29":{},"189":{}},"component":{}}],["mind",{"_index":1029,"title":{},"name":{},"text":{"10":{},"12":{},"27":{},"110":{},"180":{},"188":{}},"component":{}}],["mingw",{"_index":2035,"title":{},"name":{},"text":{"32":{}},"component":{}}],["minim",{"_index":1780,"title":{},"name":{},"text":{"21":{},"48":{},"182":{}},"component":{}}],["minimum",{"_index":227,"title":{},"name":{},"text":{"3":{},"7":{},"21":{},"30":{},"31":{},"32":{},"34":{},"36":{},"78":{},"141":{},"173":{},"177":{},"182":{},"195":{},"197":{}},"component":{}}],["minor",{"_index":546,"title":{},"name":{},"text":{"5":{},"15":{},"34":{},"36":{},"37":{},"106":{},"174":{},"195":{},"197":{},"198":{}},"component":{}}],["minut",{"_index":3327,"title":{},"name":{},"text":{"78":{},"82":{},"83":{},"141":{},"145":{}},"component":{}}],["mirror",{"_index":2145,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["miss",{"_index":431,"title":{},"name":{},"text":{"4":{},"7":{},"15":{},"17":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"83":{},"106":{},"113":{},"145":{},"175":{},"177":{},"195":{},"197":{},"198":{}},"component":{}}],["mission",{"_index":2775,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["mit",{"_index":340,"title":{},"name":{},"text":{"4":{},"13":{},"112":{},"175":{}},"component":{}}],["mitsch",{"_index":1093,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["mitsubishi",{"_index":3404,"title":{},"name":{},"text":{"78":{}},"component":{}}],["mittelstand",{"_index":1187,"title":{},"name":{},"text":{"13":{},"112":{}},"component":{}}],["mock",{"_index":1257,"title":{"92-1":{},"92-3":{},"153-1":{},"153-3":{}},"name":{},"text":{"15":{},"92":{},"106":{},"153":{}},"component":{}}],["mock:mi",{"_index":4110,"title":{},"name":{},"text":{"92":{},"153":{}},"component":{}}],["mock:{nam",{"_index":4088,"title":{},"name":{},"text":{"92":{},"153":{}},"component":{}}],["mockdevic",{"_index":4089,"title":{},"name":{},"text":{"92":{},"153":{}},"component":{}}],["mockdriv",{"_index":4104,"title":{},"name":{},"text":{"92":{},"153":{}},"component":{}}],["mockito",{"_index":4105,"title":{},"name":{},"text":{"92":{},"153":{}},"component":{}}],["mockito.mock(mockdevice.class",{"_index":4106,"title":{},"name":{},"text":{"92":{},"153":{}},"component":{}}],["mod",{"_index":2417,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["modbu",{"_index":63,"title":{"50":{},"77":{},"122":{},"140":{},"50-1":{},"50-2":{},"77-2":{},"77-4":{},"77-7":{},"122-1":{},"122-2":{},"140-2":{},"140-4":{},"140-7":{}},"name":{"50":{},"77":{},"122":{},"140":{}},"text":{"2":{},"15":{},"36":{},"39":{},"46":{},"50":{},"57":{},"59":{},"71":{},"74":{},"77":{},"106":{},"119":{},"122":{},"134":{},"137":{},"140":{},"161":{},"162":{},"172":{},"197":{},"199":{}},"component":{}}],["modbus://127.0.0.1:5020",{"_index":2619,"title":{},"name":{},"text":{"48":{}},"component":{}}],["modbusdevic",{"_index":2928,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["modbusiotest",{"_index":2311,"title":{},"name":{},"text":{"39":{},"199":{}},"component":{}}],["modbusp",{"_index":2674,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["modbuspal.jar",{"_index":2675,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["modbustcpadu",{"_index":2290,"title":{},"name":{},"text":{"39":{},"199":{}},"component":{}}],["modbustcpaduio.pars",{"_index":2298,"title":{},"name":{},"text":{"39":{},"199":{}},"component":{}}],["modbustcpaduio.seri",{"_index":2297,"title":{},"name":{},"text":{"39":{},"199":{}},"component":{}}],["modbustestsuite.xml",{"_index":2314,"title":{},"name":{},"text":{"39":{},"199":{}},"component":{}}],["mode",{"_index":1528,"title":{"55-7":{},"55-10":{},"83-18":{},"145-18":{},"157-7":{},"157-10":{}},"name":{},"text":{"15":{},"21":{},"41":{},"50":{},"55":{},"66":{},"78":{},"83":{},"86":{},"102":{},"106":{},"115":{},"122":{},"129":{},"141":{},"145":{},"147":{},"157":{},"182":{},"203":{}},"component":{}}],["model",{"_index":443,"title":{"9":{},"179":{},"5-7":{},"9-2":{},"54-1":{},"158-1":{},"174-7":{},"179-2":{}},"name":{},"text":{"5":{},"9":{},"15":{},"17":{},"21":{},"39":{},"41":{},"72":{},"78":{},"83":{},"102":{},"103":{},"106":{},"113":{},"115":{},"135":{},"141":{},"145":{},"174":{},"179":{},"182":{},"199":{},"203":{},"204":{}},"component":{}}],["model.html",{"_index":768,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["modern",{"_index":1610,"title":{},"name":{},"text":{"17":{},"88":{},"113":{},"150":{}},"component":{}}],["modetransitiontyp",{"_index":3707,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["modetransitiontype.enumforvalue(currentmode).nam",{"_index":3734,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["modif",{"_index":3040,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["modifi",{"_index":1895,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["modul",{"_index":212,"title":{"21-3":{},"21-4":{},"21-5":{},"21-7":{},"34-1":{},"40-1":{},"40-2":{},"182-3":{},"182-4":{},"182-5":{},"182-7":{},"195-1":{}},"name":{},"text":{"3":{},"7":{},"8":{},"9":{},"15":{},"16":{},"21":{},"27":{},"29":{},"30":{},"34":{},"36":{},"39":{},"40":{},"46":{},"47":{},"50":{},"76":{},"83":{},"88":{},"90":{},"91":{},"92":{},"101":{},"106":{},"107":{},"119":{},"120":{},"122":{},"139":{},"145":{},"150":{},"151":{},"152":{},"153":{},"173":{},"177":{},"178":{},"179":{},"182":{},"188":{},"189":{},"191":{},"195":{},"197":{},"199":{},"202":{}},"component":{}}],["modular",{"_index":1694,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["moment",{"_index":2059,"title":{},"name":{},"text":{"34":{},"36":{},"83":{},"145":{},"195":{},"197":{}},"component":{}}],["money",{"_index":1647,"title":{},"name":{},"text":{"17":{},"27":{},"113":{},"188":{}},"component":{}}],["monitor",{"_index":870,"title":{},"name":{},"text":{"9":{},"12":{},"17":{},"91":{},"92":{},"104":{},"110":{},"113":{},"152":{},"153":{},"179":{},"206":{}},"component":{}}],["monolith",{"_index":460,"title":{},"name":{},"text":{"5":{},"174":{}},"component":{}}],["montreal",{"_index":402,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["more",{"_index":107,"title":{"62-4":{},"63-6":{},"65-1":{},"66-4":{},"72-4":{},"78-15":{},"125-4":{},"126-6":{},"128-1":{},"129-4":{},"135-4":{},"141-11":{},"151-4":{}},"name":{},"text":{"3":{},"6":{},"9":{},"10":{},"15":{},"17":{},"20":{},"21":{},"26":{},"27":{},"34":{},"36":{},"37":{},"41":{},"47":{},"48":{},"50":{},"56":{},"66":{},"78":{},"82":{},"83":{},"86":{},"87":{},"88":{},"90":{},"92":{},"101":{},"103":{},"106":{},"113":{},"114":{},"115":{},"120":{},"122":{},"129":{},"145":{},"147":{},"148":{},"150":{},"153":{},"159":{},"173":{},"174":{},"176":{},"179":{},"180":{},"182":{},"188":{},"195":{},"197":{},"198":{},"202":{},"204":{}},"component":{}}],["mostli",{"_index":1507,"title":{},"name":{},"text":{"15":{},"16":{},"21":{},"106":{},"107":{}},"component":{}}],["mount",{"_index":716,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["mous",{"_index":2897,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["move",{"_index":1509,"title":{},"name":{},"text":{"15":{},"34":{},"36":{},"59":{},"106":{},"162":{},"195":{},"197":{}},"component":{}}],["mpi",{"_index":3627,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["mqtt",{"_index":1661,"title":{},"name":{},"text":{"17":{},"83":{},"113":{},"145":{}},"component":{}}],["ms",{"_index":3675,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["msec",{"_index":3829,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["msg",{"_index":3733,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["msg).getmap",{"_index":3727,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["mspec",{"_index":1322,"title":{"102":{},"103":{},"203":{},"204":{}},"name":{"103":{},"204":{}},"text":{"15":{},"21":{},"39":{},"40":{},"83":{},"102":{},"103":{},"106":{},"145":{},"182":{},"199":{},"203":{},"204":{}},"component":{}}],["much",{"_index":1294,"title":{},"name":{},"text":{"15":{},"17":{},"21":{},"46":{},"56":{},"83":{},"90":{},"103":{},"106":{},"113":{},"119":{},"145":{},"151":{},"159":{}},"component":{}}],["muestren",{"_index":3601,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["multi",{"_index":1551,"title":{},"name":{},"text":{"15":{},"22":{},"78":{},"104":{},"106":{},"141":{},"183":{},"206":{}},"component":{}}],["multipl",{"_index":51,"title":{},"name":{},"text":{"2":{},"3":{},"5":{},"9":{},"15":{},"21":{},"29":{},"36":{},"39":{},"63":{},"66":{},"72":{},"74":{},"75":{},"76":{},"77":{},"78":{},"81":{},"87":{},"88":{},"91":{},"92":{},"93":{},"101":{},"106":{},"126":{},"129":{},"135":{},"137":{},"138":{},"139":{},"140":{},"143":{},"148":{},"150":{},"152":{},"153":{},"163":{},"172":{},"173":{},"174":{},"179":{},"182":{},"189":{},"193":{},"197":{},"199":{},"202":{}},"component":{}}],["music",{"_index":3129,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["mutat",{"_index":3387,"title":{},"name":{},"text":{"78":{}},"component":{}}],["mvn",{"_index":144,"title":{},"name":{},"text":{"3":{},"8":{},"27":{},"34":{},"36":{},"59":{},"162":{},"173":{},"178":{},"188":{},"195":{},"197":{}},"component":{}}],["mvn.cmd",{"_index":145,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["mvn/maven",{"_index":150,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["mvnw",{"_index":135,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["mvnw.cmd",{"_index":139,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["mx",{"_index":3405,"title":{},"name":{},"text":{"78":{}},"component":{}}],["my@email",{"_index":1820,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["myadress",{"_index":4111,"title":{},"name":{},"text":{"92":{},"153":{}},"component":{}}],["myentiti",{"_index":4019,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["myid@plc4x",{"_index":1832,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["n",{"_index":2980,"title":{},"name":{},"text":{"62":{},"82":{},"83":{},"104":{},"125":{},"145":{},"206":{}},"component":{}}],["n/a",{"_index":3183,"title":{},"name":{},"text":{"72":{},"135":{}},"component":{}}],["na",{"_index":404,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["nak",{"_index":4203,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["name",{"_index":311,"title":{},"name":{},"text":{"3":{},"10":{},"12":{},"14":{},"15":{},"21":{},"26":{},"27":{},"30":{},"34":{},"36":{},"37":{},"39":{},"40":{},"41":{},"43":{},"46":{},"47":{},"48":{},"50":{},"54":{},"55":{},"56":{},"59":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"90":{},"91":{},"93":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"106":{},"110":{},"111":{},"115":{},"119":{},"120":{},"122":{},"123":{},"125":{},"126":{},"127":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"147":{},"148":{},"152":{},"157":{},"158":{},"159":{},"162":{},"163":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"173":{},"180":{},"182":{},"187":{},"188":{},"191":{},"195":{},"197":{},"198":{},"199":{},"202":{},"203":{},"204":{}},"component":{}}],["namespac",{"_index":3384,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["namespace(n",{"_index":3357,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["name}.{child",{"_index":3955,"title":{},"name":{},"text":{"85":{}},"component":{}}],["name}.{output",{"_index":1732,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["name}.{protocol",{"_index":1731,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["name}://{transport",{"_index":2693,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["name}:{data",{"_index":3956,"title":{},"name":{},"text":{"85":{}},"component":{}}],["name}:{transport",{"_index":2692,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["name}={opt",{"_index":2365,"title":{},"name":{},"text":{"41":{},"115":{}},"component":{}}],["nanosecond",{"_index":3535,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["nar",{"_index":2874,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["nar/target",{"_index":2877,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["nativ",{"_index":1335,"title":{},"name":{},"text":{"15":{},"54":{},"106":{},"158":{},"193":{}},"component":{}}],["natur",{"_index":862,"title":{},"name":{},"text":{"9":{},"83":{},"145":{},"179":{}},"component":{}}],["navig",{"_index":1884,"title":{},"name":{},"text":{"27":{},"43":{},"48":{},"188":{}},"component":{}}],["ndodeid",{"_index":3057,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["near",{"_index":1680,"title":{},"name":{},"text":{"21":{},"46":{},"91":{},"119":{},"152":{},"173":{},"182":{},"183":{}},"component":{}}],["necess",{"_index":3342,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["necessari",{"_index":2972,"title":{},"name":{},"text":{"62":{},"66":{},"72":{},"83":{},"103":{},"125":{},"129":{},"135":{},"145":{},"204":{}},"component":{}}],["need",{"_index":173,"title":{},"name":{},"text":{"3":{},"6":{},"7":{},"8":{},"9":{},"15":{},"17":{},"21":{},"26":{},"27":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"39":{},"40":{},"46":{},"47":{},"48":{},"49":{},"50":{},"54":{},"55":{},"56":{},"70":{},"75":{},"78":{},"81":{},"83":{},"85":{},"86":{},"90":{},"91":{},"92":{},"93":{},"101":{},"103":{},"106":{},"113":{},"119":{},"120":{},"122":{},"124":{},"133":{},"138":{},"141":{},"143":{},"145":{},"147":{},"152":{},"153":{},"157":{},"158":{},"159":{},"163":{},"173":{},"174":{},"176":{},"177":{},"178":{},"179":{},"182":{},"187":{},"188":{},"189":{},"191":{},"192":{},"193":{},"195":{},"197":{},"199":{},"202":{}},"component":{}}],["negoti",{"_index":3307,"title":{"78-6":{},"141-6":{}},"name":{},"text":{"78":{},"82":{},"83":{},"141":{},"145":{}},"component":{}}],["neo4j",{"_index":648,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["net",{"_index":214,"title":{},"name":{},"text":{"3":{},"15":{},"16":{},"29":{},"30":{},"36":{},"62":{},"78":{},"82":{},"83":{},"106":{},"107":{},"125":{},"141":{},"145":{},"173":{},"189":{},"191":{},"197":{}},"component":{}}],["netti",{"_index":1518,"title":{},"name":{},"text":{"15":{},"83":{},"106":{},"145":{}},"component":{}}],["network",{"_index":2347,"title":{"63-1":{},"126-1":{}},"name":{},"text":{"41":{},"63":{},"78":{},"81":{},"82":{},"83":{},"86":{},"87":{},"95":{},"96":{},"115":{},"126":{},"143":{},"145":{},"147":{},"148":{},"166":{},"167":{}},"component":{}}],["never",{"_index":1657,"title":{},"name":{},"text":{"17":{},"21":{},"55":{},"113":{},"157":{},"182":{}},"component":{}}],["new",{"_index":299,"title":{"40":{},"15-3":{},"15-8":{},"15-14":{},"15-18":{},"15-22":{},"15-26":{},"15-30":{},"15-34":{},"15-39":{},"15-43":{},"27-1":{},"36-13":{},"40-1":{},"40-2":{},"106-3":{},"106-8":{},"106-14":{},"106-18":{},"106-22":{},"106-26":{},"106-30":{},"106-34":{},"106-39":{},"106-43":{},"188-1":{},"197-13":{}},"name":{},"text":{"3":{},"4":{},"5":{},"6":{},"8":{},"9":{},"10":{},"12":{},"13":{},"15":{},"17":{},"21":{},"26":{},"27":{},"29":{},"31":{},"34":{},"36":{},"40":{},"41":{},"43":{},"46":{},"47":{},"48":{},"50":{},"56":{},"66":{},"78":{},"82":{},"83":{},"84":{},"87":{},"88":{},"90":{},"91":{},"92":{},"101":{},"103":{},"106":{},"110":{},"112":{},"113":{},"115":{},"119":{},"120":{},"122":{},"129":{},"141":{},"145":{},"146":{},"148":{},"150":{},"151":{},"152":{},"153":{},"159":{},"173":{},"174":{},"175":{},"176":{},"178":{},"179":{},"180":{},"182":{},"188":{},"189":{},"192":{},"195":{},"197":{},"202":{}},"component":{}}],["newer",{"_index":116,"title":{},"name":{},"text":{"3":{},"29":{},"31":{},"34":{},"36":{},"47":{},"56":{},"120":{},"159":{},"173":{},"192":{},"195":{},"197":{}},"component":{}}],["newli",{"_index":2679,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["next",{"_index":132,"title":{"34-2":{},"36-5":{},"195-2":{},"197-5":{}},"name":{},"text":{"3":{},"6":{},"17":{},"34":{},"36":{},"43":{},"46":{},"50":{},"56":{},"87":{},"90":{},"91":{},"101":{},"103":{},"113":{},"119":{},"122":{},"148":{},"152":{},"159":{},"173":{},"176":{},"195":{},"197":{},"202":{},"204":{}},"component":{}}],["nexu",{"_index":1804,"title":{},"name":{},"text":{"22":{},"34":{},"36":{},"183":{},"195":{},"197":{}},"component":{}}],["nfi",{"_index":2010,"title":{},"name":{},"text":{"31":{},"192":{}},"component":{}}],["ng",{"_index":3428,"title":{},"name":{},"text":{"81":{},"83":{},"143":{},"145":{}},"component":{}}],["nice",{"_index":1715,"title":{},"name":{},"text":{"21":{},"34":{},"36":{},"43":{},"182":{},"195":{},"197":{}},"component":{}}],["nifi",{"_index":1289,"title":{"56":{},"159":{},"56-1":{},"56-2":{},"56-3":{},"159-1":{},"159-2":{},"159-3":{}},"name":{"56":{},"159":{}},"text":{"15":{},"16":{},"36":{},"56":{},"106":{},"107":{},"159":{},"197":{}},"component":{}}],["nifi.bat",{"_index":2872,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["nifi.sh",{"_index":2871,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["nifi/nifi",{"_index":2876,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["nightmar",{"_index":1675,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["nil",{"_index":2440,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["nioeventloopgroup",{"_index":1358,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["nmap",{"_index":4466,"title":{},"name":{},"text":{"193":{}},"component":{}}],["nmt",{"_index":3026,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["nmt:nodeid",{"_index":3070,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["no_par",{"_index":3149,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["node",{"_index":1903,"title":{},"name":{},"text":{"27":{},"55":{},"66":{},"72":{},"78":{},"86":{},"129":{},"135":{},"147":{},"157":{},"188":{}},"component":{}}],["nodeid",{"_index":3073,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["nodeid:type[arrays",{"_index":3184,"title":{},"name":{},"text":{"72":{},"135":{}},"component":{}}],["non",{"_index":11,"title":{"2-3":{},"172-3":{}},"name":{},"text":{"2":{},"17":{},"21":{},"27":{},"34":{},"36":{},"41":{},"50":{},"86":{},"103":{},"113":{},"115":{},"122":{},"147":{},"172":{},"188":{},"195":{},"197":{}},"component":{}}],["none",{"_index":1865,"title":{},"name":{},"text":{"27":{},"32":{},"78":{},"93":{},"96":{},"97":{},"98":{},"99":{},"100":{},"141":{},"163":{},"167":{},"168":{},"169":{},"170":{},"171":{},"188":{}},"component":{}}],["normal",{"_index":292,"title":{},"name":{},"text":{"3":{},"8":{},"21":{},"26":{},"27":{},"36":{},"41":{},"46":{},"47":{},"56":{},"59":{},"63":{},"71":{},"75":{},"78":{},"83":{},"87":{},"88":{},"95":{},"103":{},"115":{},"119":{},"120":{},"126":{},"134":{},"138":{},"145":{},"148":{},"150":{},"159":{},"162":{},"166":{},"178":{},"182":{},"187":{},"188":{},"197":{},"204":{}},"component":{}}],["nortec",{"_index":419,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["not_found",{"_index":2658,"title":{},"name":{},"text":{"48":{},"50":{},"122":{}},"component":{}}],["notat",{"_index":1373,"title":{"83-23":{},"145-23":{}},"name":{},"text":{"15":{},"36":{},"50":{},"66":{},"82":{},"83":{},"103":{},"106":{},"122":{},"129":{},"145":{},"197":{}},"component":{}}],["note",{"_index":750,"title":{"93-1":{},"163-1":{}},"name":{},"text":{"8":{},"9":{},"15":{},"20":{},"26":{},"36":{},"46":{},"71":{},"76":{},"77":{},"78":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"90":{},"93":{},"103":{},"106":{},"114":{},"119":{},"134":{},"139":{},"140":{},"141":{},"143":{},"144":{},"145":{},"146":{},"163":{},"178":{},"179":{},"187":{},"197":{},"204":{}},"component":{}}],["noth",{"_index":2891,"title":{},"name":{},"text":{"56":{},"92":{},"103":{},"153":{},"159":{},"204":{}},"component":{}}],["notic",{"_index":602,"title":{},"name":{},"text":{"6":{},"21":{},"27":{},"36":{},"37":{},"56":{},"101":{},"159":{},"176":{},"182":{},"188":{},"197":{},"198":{},"202":{}},"component":{}}],["notif",{"_index":498,"title":{"78-11":{},"78-12":{}},"name":{},"text":{"5":{},"34":{},"36":{},"78":{},"83":{},"145":{},"174":{},"195":{},"197":{}},"component":{}}],["notifi",{"_index":2158,"title":{"36-20":{},"197-20":{}},"name":{},"text":{"34":{},"46":{},"66":{},"83":{},"119":{},"129":{},"145":{},"195":{}},"component":{}}],["novemb",{"_index":369,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["now",{"_index":480,"title":{},"name":{},"text":{"5":{},"8":{},"15":{},"17":{},"26":{},"34":{},"36":{},"37":{},"41":{},"46":{},"47":{},"48":{},"50":{},"52":{},"55":{},"56":{},"83":{},"86":{},"88":{},"91":{},"106":{},"113":{},"115":{},"119":{},"120":{},"122":{},"145":{},"147":{},"150":{},"152":{},"157":{},"159":{},"174":{},"178":{},"187":{},"195":{},"197":{},"198":{}},"component":{}}],["nowday",{"_index":1157,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["nowher",{"_index":2089,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["npcap",{"_index":2027,"title":{},"name":{},"text":{"32":{},"193":{}},"component":{}}],["npe",{"_index":1552,"title":{},"name":{},"text":{"15":{},"92":{},"106":{},"153":{}},"component":{}}],["ns=0;i=2253;a=eventnotifier;bool{eventid",{"_index":3380,"title":{},"name":{},"text":{"78":{}},"component":{}}],["ns=1;i=1337",{"_index":3370,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["ns=1;i=1337;a=value;dint",{"_index":3372,"title":{},"name":{},"text":{"78":{}},"component":{}}],["ns=1;i=1337;dint",{"_index":3371,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["ns=2",{"_index":3385,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["ns=2;g=09087e75",{"_index":3373,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["ns=2;s=helloworld/scalartypes/boolean",{"_index":3367,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["ns=2;s=helloworld/scalartypes/boolean;a=value;bool",{"_index":3369,"title":{},"name":{},"text":{"78":{}},"component":{}}],["ns=2;s=helloworld/scalartypes/boolean;bool",{"_index":3368,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["ns={namespac",{"_index":3362,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["null",{"_index":2866,"title":{},"name":{},"text":{"55":{},"84":{},"103":{},"146":{},"157":{},"204":{}},"component":{}}],["num",{"_index":3199,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["num_valu",{"_index":2648,"title":{},"name":{},"text":{"48":{}},"component":{}}],["number",{"_index":258,"title":{},"name":{},"text":{"3":{},"7":{},"15":{},"17":{},"22":{},"30":{},"31":{},"32":{},"36":{},"39":{},"49":{},"50":{},"55":{},"56":{},"63":{},"70":{},"71":{},"75":{},"77":{},"78":{},"82":{},"83":{},"88":{},"91":{},"103":{},"106":{},"113":{},"122":{},"124":{},"126":{},"133":{},"134":{},"138":{},"140":{},"141":{},"145":{},"150":{},"152":{},"157":{},"159":{},"173":{},"177":{},"197":{},"199":{},"204":{}},"component":{}}],["number}.db{short",{"_index":3506,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["number}:{start",{"_index":3512,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["number}[{numb",{"_index":2689,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["numer",{"_index":1375,"title":{},"name":{},"text":{"15":{},"21":{},"63":{},"66":{},"75":{},"78":{},"83":{},"84":{},"95":{},"103":{},"106":{},"126":{},"129":{},"138":{},"141":{},"145":{},"146":{},"166":{},"182":{}},"component":{}}],["numeric(i",{"_index":3359,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["numlargeboxes\":1630806456",{"_index":2846,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["numsmallbox",{"_index":2851,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["numvalu",{"_index":2580,"title":{},"name":{},"text":{"47":{},"50":{},"120":{},"122":{}},"component":{}}],["nwdiag",{"_index":1861,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["nürtingen",{"_index":365,"title":{},"name":{},"text":{"4":{},"10":{},"175":{},"180":{}},"component":{}}],["o",{"_index":3348,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["o.n.s.communityneoserv",{"_index":705,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["o.n.s.w.jetty9webserv",{"_index":715,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["o.o",{"_index":1049,"title":{},"name":{},"text":{"10":{},"12":{},"14":{},"110":{},"111":{},"180":{}},"component":{}}],["ob",{"_index":3762,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["ob100",{"_index":3688,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["ob101",{"_index":3689,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["ob_numb",{"_index":3748,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["object",{"_index":592,"title":{"90":{},"151":{},"90-1":{},"151-1":{}},"name":{},"text":{"6":{},"15":{},"16":{},"21":{},"39":{},"46":{},"47":{},"48":{},"50":{},"66":{},"70":{},"78":{},"83":{},"90":{},"91":{},"92":{},"101":{},"102":{},"103":{},"106":{},"107":{},"119":{},"120":{},"122":{},"129":{},"133":{},"145":{},"151":{},"152":{},"153":{},"176":{},"182":{},"199":{},"202":{},"203":{},"204":{}},"component":{}}],["observ",{"_index":2334,"title":{},"name":{},"text":{"40":{},"43":{}},"component":{}}],["obtain",{"_index":1673,"title":{},"name":{},"text":{"20":{},"83":{},"101":{},"114":{},"145":{},"202":{}},"component":{}}],["obviou",{"_index":1638,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["obvious",{"_index":4290,"title":{},"name":{},"text":{"103":{}},"component":{}}],["occur",{"_index":1974,"title":{},"name":{},"text":{"30":{},"55":{},"83":{},"88":{},"103":{},"145":{},"150":{},"157":{},"204":{}},"component":{}}],["occurr",{"_index":2195,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["octet",{"_index":3110,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["octet_str",{"_index":3103,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["octob",{"_index":393,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["od",{"_index":3046,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["odbc",{"_index":2339,"title":{},"name":{},"text":{"41":{},"115":{}},"component":{}}],["odd",{"_index":1553,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["odd_par",{"_index":3153,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["offer",{"_index":1041,"title":{"14":{},"111":{}},"name":{},"text":{"10":{},"11":{},"14":{},"15":{},"21":{},"31":{},"47":{},"48":{},"50":{},"106":{},"111":{},"120":{},"122":{},"180":{},"181":{},"192":{}},"component":{}}],["offici",{"_index":508,"title":{"15-2":{},"15-7":{},"15-10":{},"15-11":{},"15-13":{},"15-17":{},"15-21":{},"15-25":{},"15-29":{},"15-33":{},"15-38":{},"15-42":{},"15-46":{},"15-48":{},"106-2":{},"106-7":{},"106-10":{},"106-11":{},"106-13":{},"106-17":{},"106-21":{},"106-25":{},"106-29":{},"106-33":{},"106-38":{},"106-42":{},"106-46":{},"106-48":{}},"name":{},"text":{"5":{},"14":{},"15":{},"106":{},"111":{},"174":{}},"component":{}}],["offlin",{"_index":949,"title":{},"name":{},"text":{"9":{},"104":{},"179":{},"206":{}},"component":{}}],["offset",{"_index":1428,"title":{},"name":{},"text":{"15":{},"55":{},"82":{},"83":{},"106":{},"145":{},"157":{}},"component":{}}],["offset}:bool[{count",{"_index":3503,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["ohn",{"_index":388,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["oil&ga",{"_index":996,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["ok",{"_index":1985,"title":{},"name":{},"text":{"30":{},"36":{},"37":{},"39":{},"43":{},"46":{},"48":{},"50":{},"103":{},"119":{},"122":{},"191":{},"197":{},"198":{},"199":{}},"component":{}}],["old",{"_index":2148,"title":{},"name":{},"text":{"34":{},"36":{},"55":{},"90":{},"151":{},"157":{},"195":{},"197":{}},"component":{}}],["older",{"_index":835,"title":{"34-10":{},"36-14":{},"195-10":{},"197-14":{}},"name":{},"text":{"9":{},"12":{},"15":{},"29":{},"106":{},"110":{},"179":{}},"component":{}}],["oldest",{"_index":3759,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["omit",{"_index":2081,"title":{},"name":{},"text":{"34":{},"36":{},"41":{},"50":{},"76":{},"77":{},"82":{},"83":{},"84":{},"85":{},"90":{},"99":{},"100":{},"115":{},"122":{},"139":{},"140":{},"145":{},"146":{},"169":{},"171":{},"195":{},"197":{}},"component":{}}],["ommit",{"_index":3113,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["on",{"_index":15,"title":{"2-4":{},"82-2":{},"83-5":{},"145-5":{},"172-4":{}},"name":{},"text":{"2":{},"3":{},"8":{},"9":{},"10":{},"12":{},"15":{},"16":{},"17":{},"21":{},"26":{},"27":{},"32":{},"34":{},"36":{},"39":{},"40":{},"43":{},"46":{},"47":{},"48":{},"50":{},"54":{},"55":{},"56":{},"71":{},"72":{},"75":{},"77":{},"78":{},"82":{},"83":{},"86":{},"87":{},"88":{},"90":{},"91":{},"101":{},"103":{},"104":{},"106":{},"107":{},"110":{},"113":{},"119":{},"120":{},"122":{},"134":{},"135":{},"138":{},"141":{},"145":{},"147":{},"148":{},"150":{},"151":{},"152":{},"157":{},"158":{},"159":{},"172":{},"173":{},"174":{},"178":{},"179":{},"180":{},"182":{},"187":{},"188":{},"195":{},"197":{},"199":{},"202":{},"204":{},"206":{}},"component":{}}],["onc",{"_index":1727,"title":{},"name":{},"text":{"21":{},"48":{},"50":{},"55":{},"59":{},"65":{},"78":{},"81":{},"84":{},"91":{},"101":{},"122":{},"128":{},"141":{},"143":{},"146":{},"152":{},"157":{},"162":{},"173":{},"202":{}},"component":{}}],["onlin",{"_index":1846,"title":{},"name":{},"text":{"26":{},"104":{},"206":{}},"component":{}}],["onto",{"_index":2898,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["opc",{"_index":1259,"title":{"43":{},"59":{},"78":{},"141":{},"43-2":{},"78-9":{},"78-11":{},"78-12":{},"78-14":{},"78-15":{},"141-9":{},"141-11":{}},"name":{},"text":{"15":{},"16":{},"36":{},"43":{},"59":{},"74":{},"78":{},"83":{},"106":{},"107":{},"137":{},"141":{},"145":{},"162":{},"197":{}},"component":{}}],["opc.tcp",{"_index":2921,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["opc.tcp://{ip.address}:12687/plc4x",{"_index":2956,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["opcua",{"_index":2381,"title":{},"name":{"43":{},"78":{},"141":{}},"text":{"55":{},"59":{},"78":{},"141":{},"157":{},"162":{}},"component":{}}],["opcua:tcp://127.0.0.1:12686?discovery=true&username=admin&password=password",{"_index":3340,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["opcua:{transport}://{ip",{"_index":3339,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["opcua_qu",{"_index":3398,"title":{},"name":{},"text":{"78":{}},"component":{}}],["opcua_server_timestamp",{"_index":3399,"title":{},"name":{},"text":{"78":{}},"component":{}}],["opcua_source_timestamp",{"_index":3400,"title":{},"name":{},"text":{"78":{}},"component":{}}],["opcuafield",{"_index":1367,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["opcuaserver.pfx",{"_index":2953,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["open",{"_index":346,"title":{"79":{},"142":{},"17-1":{},"113-1":{}},"name":{"79":{},"142":{}},"text":{"4":{},"6":{},"9":{},"10":{},"12":{},"13":{},"15":{},"17":{},"31":{},"34":{},"36":{},"40":{},"43":{},"46":{},"50":{},"55":{},"66":{},"72":{},"74":{},"78":{},"79":{},"83":{},"87":{},"88":{},"103":{},"106":{},"110":{},"112":{},"113":{},"119":{},"122":{},"129":{},"135":{},"137":{},"141":{},"142":{},"145":{},"148":{},"150":{},"157":{},"175":{},"176":{},"179":{},"180":{},"192":{},"195":{},"197":{},"204":{}},"component":{}}],["openconnectionmanag",{"_index":4396,"title":{},"name":{},"text":{"105":{},"205":{}},"component":{}}],["openjdk",{"_index":1941,"title":{},"name":{},"text":{"30":{},"31":{},"32":{}},"component":{}}],["openli",{"_index":1161,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["openssl",{"_index":4454,"title":{"193-7":{}},"name":{},"text":{},"component":{}}],["oper",{"_index":565,"title":{"77-10":{},"85-2":{},"140-10":{}},"name":{},"text":{"6":{},"9":{},"15":{},"16":{},"22":{},"26":{},"29":{},"34":{},"36":{},"41":{},"43":{},"46":{},"47":{},"50":{},"59":{},"62":{},"65":{},"66":{},"70":{},"71":{},"72":{},"74":{},"75":{},"76":{},"77":{},"78":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"87":{},"90":{},"93":{},"101":{},"103":{},"106":{},"107":{},"115":{},"119":{},"120":{},"122":{},"125":{},"128":{},"129":{},"134":{},"135":{},"137":{},"138":{},"140":{},"141":{},"143":{},"144":{},"145":{},"146":{},"148":{},"162":{},"163":{},"176":{},"179":{},"187":{},"189":{},"195":{},"197":{},"202":{},"204":{}},"component":{}}],["operador",{"_index":3567,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["opi",{"_index":1844,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["opiepasswd",{"_index":1829,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["opinion",{"_index":936,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["opm",{"_index":1558,"title":{"90-2":{}},"name":{"90":{},"151":{}},"text":{"15":{},"16":{},"90":{},"92":{},"106":{},"107":{},"151":{},"153":{}},"component":{}}],["oppos",{"_index":962,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["opt",{"_index":3623,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["optim",{"_index":2978,"title":{},"name":{},"text":{"62":{},"82":{},"83":{},"125":{},"145":{},"191":{}},"component":{}}],["option",{"_index":130,"title":{"17-7":{},"30-3":{},"31-3":{},"32-3":{},"61-1":{},"62-2":{},"63-2":{},"64-1":{},"66-2":{},"67-1":{},"70-1":{},"71-1":{},"72-2":{},"73-1":{},"75-1":{},"76-1":{},"77-1":{},"78-1":{},"79-1":{},"80-1":{},"80-3":{},"81-1":{},"82-3":{},"83-6":{},"84-1":{},"85-1":{},"103-12":{},"113-7":{},"123-1":{},"125-2":{},"126-2":{},"127-1":{},"129-2":{},"130-1":{},"133-1":{},"134-1":{},"135-2":{},"136-1":{},"138-1":{},"139-1":{},"140-1":{},"141-1":{},"142-1":{},"143-1":{},"144-1":{},"144-3":{},"145-6":{},"146-1":{},"204-11":{}},"name":{},"text":{"3":{},"4":{},"15":{},"17":{},"21":{},"27":{},"29":{},"32":{},"41":{},"43":{},"47":{},"48":{},"50":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"93":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"103":{},"106":{},"113":{},"115":{},"120":{},"122":{},"123":{},"125":{},"126":{},"127":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"147":{},"163":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"173":{},"175":{},"182":{},"188":{},"189":{},"193":{},"202":{},"204":{}},"component":{}}],["optional\":false,\"name\":\"org.apache.plc4x.kafka.schema.field\",\"field\":\"field",{"_index":2838,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["optional\":false,\"name\":\"org.apache.plc4x.kafka.schema.jobresult",{"_index":2841,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["optional.empti",{"_index":1758,"title":{},"name":{},"text":{"21":{}},"component":{}}],["oracl",{"_index":2019,"title":{},"name":{},"text":{"32":{}},"component":{}}],["oracle’",{"_index":1915,"title":{},"name":{},"text":{"29":{},"189":{}},"component":{}}],["order",{"_index":250,"title":{},"name":{},"text":{"3":{},"5":{},"7":{},"8":{},"9":{},"11":{},"17":{},"21":{},"26":{},"27":{},"29":{},"31":{},"32":{},"34":{},"36":{},"37":{},"39":{},"46":{},"47":{},"49":{},"50":{},"55":{},"56":{},"63":{},"71":{},"72":{},"75":{},"77":{},"78":{},"82":{},"83":{},"86":{},"90":{},"91":{},"101":{},"103":{},"113":{},"119":{},"120":{},"122":{},"124":{},"126":{},"134":{},"135":{},"138":{},"141":{},"145":{},"147":{},"152":{},"157":{},"159":{},"173":{},"174":{},"177":{},"178":{},"179":{},"181":{},"182":{},"187":{},"188":{},"189":{},"192":{},"193":{},"195":{},"197":{},"198":{},"199":{},"202":{}},"component":{}}],["ordinari",{"_index":1331,"title":{},"name":{},"text":{"15":{},"48":{},"50":{},"87":{},"106":{},"122":{},"148":{}},"component":{}}],["org.apache.commons.io.fileutil",{"_index":4146,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["org.apache.plc4x",{"_index":310,"title":{},"name":{},"text":{"3":{},"39":{},"47":{},"50":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"87":{},"91":{},"92":{},"93":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"120":{},"122":{},"123":{},"125":{},"126":{},"127":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"148":{},"152":{},"153":{},"163":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"173":{},"199":{}},"component":{}}],["org.apache.plc4x.java.api.plcdriv",{"_index":2322,"title":{},"name":{},"text":{"40":{}},"component":{}}],["org.apache.plc4x.java.modbu",{"_index":2309,"title":{},"name":{},"text":{"39":{},"199":{}},"component":{}}],["org.apache.plc4x.java.opm.plcentitymanagercomplextest",{"_index":4116,"title":{},"name":{},"text":{"92":{},"153":{}},"component":{}}],["org.apache.plc4x.java.opm.plcentitymanagertest",{"_index":4115,"title":{},"name":{},"text":{"92":{},"153":{}},"component":{}}],["org.apache.plc4x.java.s7.readwrite.utils.statichelper.szl",{"_index":3841,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["org.apache.plc4x.java.scraper.scrapertest",{"_index":4117,"title":{},"name":{},"text":{"92":{},"153":{}},"component":{}}],["org.apache.plc4x.language.java",{"_index":4141,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["org.apache.plc4x.plugin",{"_index":1742,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["org.apache.plc4x.plugins.codegenerator.languag",{"_index":1764,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["org.apache.plc4x.plugins.codegenerator.protocol",{"_index":1750,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["org.apache.plc4x.plugins.codegenerator.protocol.freemarker.freemarkerlanguageoutput",{"_index":4147,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["org.apache.plc4x.plugins.codegenerator.protocol.freemarker.freemarkerlanguagetemplatehelp",{"_index":4148,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["org.apache.plc4x.plugins.codegenerator.protocol.protocol",{"_index":1748,"title":{},"name":{},"text":{"21":{},"40":{},"182":{}},"component":{}}],["org.apache.plc4x.plugins.codegenerator.types.definitions.complextypedefinit",{"_index":1765,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["org.apache.plc4x.plugins.codegenerator.types.definitions.typedefinit",{"_index":4149,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["org.apache.plc4x.plugins.codegenerator.types.exceptions.generationexcept",{"_index":1751,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["org.apache.plc4x.plugins:plc4x",{"_index":1749,"title":{},"name":{},"text":{"21":{},"34":{},"101":{},"182":{},"195":{},"202":{}},"component":{}}],["org.apache.plc4x.test.parserserializer.parserserializertestsuiterunn",{"_index":2310,"title":{},"name":{},"text":{"39":{},"40":{},"199":{}},"component":{}}],["org.apache.plc4x.{languag",{"_index":1730,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["org.apache.plc4x:plc4x",{"_index":734,"title":{},"name":{},"text":{"8":{},"36":{},"178":{},"197":{}},"component":{}}],["org.slf4j.logg",{"_index":4150,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["org.slf4j.loggerfactori",{"_index":4151,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["organ",{"_index":964,"title":{},"name":{},"text":{"9":{},"43":{},"179":{}},"component":{}}],["organiz",{"_index":958,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["orgapacheplc4x",{"_index":2100,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["orient",{"_index":3179,"title":{},"name":{},"text":{"72":{},"78":{},"135":{},"141":{}},"component":{}}],["origin",{"_index":511,"title":{},"name":{},"text":{"5":{},"36":{},"39":{},"78":{},"82":{},"83":{},"86":{},"141":{},"145":{},"147":{},"174":{},"197":{},"199":{}},"component":{}}],["ortpasswd",{"_index":1842,"title":{},"name":{},"text":{"26":{}},"component":{}}],["os",{"_index":786,"title":{"31":{},"192":{}},"name":{},"text":{"9":{},"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"97":{},"98":{},"123":{},"125":{},"126":{},"127":{},"133":{},"136":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"168":{},"170":{},"192":{}},"component":{}}],["osgi",{"_index":680,"title":{},"name":{},"text":{"8":{},"10":{},"15":{},"106":{},"178":{},"180":{}},"component":{}}],["ot",{"_index":1894,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["other",{"_index":1883,"title":{},"name":{},"text":{"27":{},"78":{},"82":{},"83":{},"141":{},"188":{}},"component":{}}],["otherwis",{"_index":2077,"title":{},"name":{},"text":{"34":{},"36":{},"59":{},"78":{},"88":{},"141":{},"150":{},"162":{},"193":{},"195":{},"197":{}},"component":{}}],["otp",{"_index":1835,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["ott",{"_index":1061,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["ou",{"_index":2404,"title":{},"name":{},"text":{"43":{}},"component":{}}],["ourselv",{"_index":1686,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["out",{"_index":178,"title":{},"name":{},"text":{"3":{},"5":{},"10":{},"13":{},"21":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"46":{},"49":{},"56":{},"59":{},"63":{},"75":{},"82":{},"83":{},"86":{},"87":{},"112":{},"119":{},"124":{},"126":{},"138":{},"145":{},"147":{},"148":{},"159":{},"162":{},"173":{},"174":{},"180":{},"182":{},"189":{},"193":{},"195":{},"197":{},"198":{}},"component":{}}],["outdat",{"_index":1934,"title":{},"name":{},"text":{"30":{},"31":{},"32":{},"90":{}},"component":{}}],["outgo",{"_index":3181,"title":{},"name":{},"text":{"72":{},"135":{}},"component":{}}],["outlin",{"_index":3931,"title":{},"name":{},"text":{"84":{},"85":{},"146":{}},"component":{}}],["outofmemori",{"_index":4036,"title":{},"name":{},"text":{"90":{}},"component":{}}],["output",{"_index":518,"title":{"101-1":{},"202-1":{}},"name":{},"text":{"5":{},"21":{},"27":{},"30":{},"31":{},"32":{},"41":{},"46":{},"47":{},"48":{},"50":{},"71":{},"77":{},"82":{},"83":{},"86":{},"101":{},"103":{},"115":{},"119":{},"120":{},"122":{},"134":{},"140":{},"145":{},"147":{},"174":{},"182":{},"188":{},"191":{},"192":{},"193":{},"202":{},"204":{}},"component":{}}],["outputdir",{"_index":1735,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["outputfil",{"_index":4179,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["outputflavor",{"_index":1720,"title":{},"name":{},"text":{"21":{},"101":{},"182":{},"202":{}},"component":{}}],["outputflavor)?replac",{"_index":4189,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["outsid",{"_index":1011,"title":{},"name":{},"text":{"10":{},"21":{},"83":{},"145":{},"180":{},"182":{}},"component":{}}],["over",{"_index":68,"title":{},"name":{},"text":{"2":{},"9":{},"10":{},"15":{},"16":{},"21":{},"34":{},"36":{},"47":{},"48":{},"50":{},"56":{},"78":{},"82":{},"83":{},"101":{},"106":{},"107":{},"120":{},"122":{},"141":{},"145":{},"159":{},"172":{},"179":{},"180":{},"182":{},"195":{},"197":{},"202":{}},"component":{}}],["overal",{"_index":4063,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["overflow",{"_index":1329,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["overlap",{"_index":979,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["overrid",{"_index":274,"title":{},"name":{},"text":{"3":{},"21":{},"77":{},"82":{},"83":{},"101":{},"173":{},"182":{},"202":{}},"component":{}}],["overridden",{"_index":278,"title":{},"name":{},"text":{"3":{},"34":{},"36":{},"70":{},"76":{},"77":{},"133":{},"139":{},"173":{},"195":{},"197":{}},"component":{}}],["overview",{"_index":757,"title":{"9-1":{},"179-1":{}},"name":{},"text":{},"component":{}}],["overwritten",{"_index":1776,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["owner",{"_index":1954,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["ownership",{"_index":822,"title":{},"name":{},"text":{"9":{},"101":{},"179":{},"202":{}},"component":{}}],["p",{"_index":232,"title":{},"name":{},"text":{"3":{},"34":{},"36":{},"173":{},"195":{},"197":{}},"component":{}}],["p)pmc",{"_index":841,"title":{},"name":{},"text":{"9":{},"10":{},"179":{},"180":{}},"component":{}}],["packag",{"_index":1339,"title":{},"name":{},"text":{"15":{},"21":{},"26":{},"29":{},"30":{},"32":{},"34":{},"36":{},"39":{},"46":{},"62":{},"101":{},"106":{},"119":{},"125":{},"182":{},"187":{},"191":{},"193":{},"195":{},"197":{},"199":{},"202":{}},"component":{}}],["packagenam",{"_index":4133,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["packet",{"_index":1417,"title":{"62-1":{},"125-1":{}},"name":{},"text":{"15":{},"40":{},"41":{},"55":{},"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"106":{},"115":{},"123":{},"125":{},"126":{},"127":{},"133":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"157":{}},"component":{}}],["packet.dl",{"_index":4461,"title":{},"name":{},"text":{"193":{}},"component":{}}],["pad",{"_index":4251,"title":{"103-13":{},"204-12":{}},"name":{},"text":{"103":{},"204":{}},"component":{}}],["pade",{"_index":4305,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["page",{"_index":255,"title":{},"name":{},"text":{"3":{},"4":{},"5":{},"7":{},"9":{},"12":{},"15":{},"20":{},"21":{},"27":{},"29":{},"32":{},"34":{},"36":{},"41":{},"83":{},"106":{},"110":{},"114":{},"115":{},"145":{},"173":{},"174":{},"175":{},"177":{},"179":{},"182":{},"188":{},"189":{},"195":{},"197":{}},"component":{}}],["pair",{"_index":2367,"title":{},"name":{},"text":{"41":{},"43":{},"56":{},"76":{},"78":{},"92":{},"115":{},"139":{},"153":{},"159":{}},"component":{}}],["pair.of(plcresponsecode.ok",{"_index":4102,"title":{},"name":{},"text":{"92":{},"153":{}},"component":{}}],["pandora’",{"_index":3660,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["panel",{"_index":3562,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["para",{"_index":3574,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["paralel",{"_index":1913,"title":{},"name":{},"text":{"29":{},"193":{}},"component":{}}],["parallel",{"_index":3459,"title":{},"name":{},"text":{"82":{},"83":{},"87":{},"145":{},"148":{}},"component":{}}],["param",{"_index":1348,"title":{},"name":{},"text":{"15":{},"91":{},"106":{},"152":{}},"component":{}}],["paramet",{"_index":162,"title":{"103-21":{},"204-17":{}},"name":{},"text":{"3":{},"8":{},"15":{},"21":{},"39":{},"46":{},"47":{},"50":{},"62":{},"75":{},"77":{},"78":{},"81":{},"82":{},"83":{},"85":{},"87":{},"90":{},"91":{},"103":{},"106":{},"119":{},"120":{},"122":{},"125":{},"138":{},"143":{},"145":{},"148":{},"152":{},"173":{},"178":{},"182":{},"199":{},"204":{}},"component":{}}],["parameter",{"_index":3687,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["parameter.discriminatorvalues[0",{"_index":4314,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["parameter.lengthinbyt",{"_index":4269,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["parameterlength",{"_index":4268,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["parametr",{"_index":1604,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["parent",{"_index":1882,"title":{},"name":{},"text":{"27":{},"34":{},"36":{},"103":{},"188":{},"195":{},"197":{},"204":{}},"component":{}}],["parent:0.0.1",{"_index":735,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["pariti",{"_index":3150,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["pars",{"_index":1708,"title":{},"name":{},"text":{"21":{},"39":{},"77":{},"103":{},"140":{},"182":{},"199":{},"204":{}},"component":{}}],["parseexcept",{"_index":4283,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["parser",{"_index":1683,"title":{"39":{},"199":{},"40-3":{},"103-22":{}},"name":{"39":{},"199":{}},"text":{"21":{},"39":{},"51":{},"66":{},"82":{},"83":{},"103":{},"129":{},"145":{},"154":{},"182":{},"199":{},"204":{}},"component":{}}],["parserseri",{"_index":2330,"title":{},"name":{},"text":{"40":{}},"component":{}}],["parserserializertestsuite.xml",{"_index":2326,"title":{},"name":{},"text":{"40":{}},"component":{}}],["parserserializertestsuiterunn",{"_index":2312,"title":{},"name":{},"text":{"39":{},"199":{}},"component":{}}],["part",{"_index":103,"title":{},"name":{},"text":{"3":{},"5":{},"7":{},"9":{},"10":{},"12":{},"15":{},"16":{},"21":{},"22":{},"26":{},"27":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"39":{},"41":{},"46":{},"47":{},"56":{},"59":{},"71":{},"72":{},"76":{},"77":{},"78":{},"82":{},"83":{},"84":{},"85":{},"87":{},"91":{},"92":{},"101":{},"102":{},"103":{},"106":{},"107":{},"110":{},"115":{},"119":{},"120":{},"134":{},"135":{},"139":{},"140":{},"141":{},"145":{},"146":{},"148":{},"152":{},"153":{},"159":{},"162":{},"173":{},"174":{},"177":{},"179":{},"180":{},"182":{},"187":{},"188":{},"189":{},"195":{},"197":{},"198":{},"199":{},"202":{},"203":{},"204":{}},"component":{}}],["parti",{"_index":201,"title":{},"name":{},"text":{"3":{},"4":{},"7":{},"9":{},"30":{},"31":{},"32":{},"41":{},"65":{},"82":{},"83":{},"128":{},"145":{},"173":{},"175":{},"177":{},"179":{}},"component":{}}],["partial",{"_index":3443,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["particip",{"_index":2135,"title":{"83-14":{},"145-14":{}},"name":{},"text":{"34":{},"36":{},"66":{},"75":{},"83":{},"129":{},"138":{},"145":{},"195":{},"197":{}},"component":{}}],["particular",{"_index":1334,"title":{},"name":{},"text":{"15":{},"20":{},"41":{},"82":{},"83":{},"106":{},"114":{},"115":{},"145":{}},"component":{}}],["partit",{"_index":101,"title":{},"name":{},"text":{"3":{},"36":{},"55":{},"83":{},"145":{},"157":{},"173":{},"197":{}},"component":{}}],["paso",{"_index":3592,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["pass",{"_index":1569,"title":{},"name":{},"text":{"15":{},"17":{},"21":{},"34":{},"36":{},"39":{},"41":{},"47":{},"48":{},"50":{},"55":{},"63":{},"65":{},"75":{},"78":{},"81":{},"82":{},"83":{},"91":{},"92":{},"93":{},"101":{},"103":{},"106":{},"113":{},"115":{},"120":{},"122":{},"126":{},"128":{},"138":{},"143":{},"145":{},"152":{},"153":{},"157":{},"163":{},"182":{},"195":{},"197":{},"199":{},"202":{},"204":{}},"component":{}}],["passion",{"_index":1013,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["passiv",{"_index":1527,"title":{},"name":{},"text":{"15":{},"21":{},"41":{},"50":{},"83":{},"86":{},"101":{},"106":{},"115":{},"122":{},"145":{},"147":{},"182":{},"202":{}},"component":{}}],["password",{"_index":752,"title":{},"name":{},"text":{"8":{},"26":{},"36":{},"43":{},"54":{},"59":{},"75":{},"78":{},"138":{},"141":{},"158":{},"162":{},"178":{},"187":{},"197":{}},"component":{}}],["past",{"_index":1852,"title":{},"name":{},"text":{"26":{},"29":{},"32":{},"40":{},"187":{},"189":{}},"component":{}}],["patch",{"_index":531,"title":{},"name":{},"text":{"5":{},"20":{},"114":{},"174":{}},"component":{}}],["path",{"_index":128,"title":{},"name":{},"text":{"3":{},"10":{},"31":{},"32":{},"43":{},"59":{},"63":{},"66":{},"75":{},"76":{},"78":{},"86":{},"95":{},"101":{},"126":{},"129":{},"138":{},"139":{},"141":{},"147":{},"162":{},"166":{},"173":{},"180":{},"192":{},"193":{},"202":{}},"component":{}}],["path/to/java",{"_index":1946,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["pattern",{"_index":1481,"title":{},"name":{},"text":{"15":{},"75":{},"82":{},"83":{},"106":{},"138":{},"145":{}},"component":{}}],["paus",{"_index":2909,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["pay",{"_index":1640,"title":{},"name":{},"text":{"17":{},"34":{},"36":{},"37":{},"46":{},"72":{},"82":{},"83":{},"113":{},"119":{},"135":{},"145":{},"195":{},"197":{},"198":{}},"component":{}}],["payload",{"_index":1463,"title":{},"name":{},"text":{"15":{},"40":{},"55":{},"66":{},"77":{},"78":{},"103":{},"106":{},"129":{},"141":{},"157":{},"204":{}},"component":{}}],["payload.lengthinbyt",{"_index":4262,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["payloadlength",{"_index":4270,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["pc",{"_index":3545,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["pcap",{"_index":2343,"title":{"95":{},"166":{},"63-5":{},"75-3":{},"126-5":{},"138-3":{}},"name":{"95":{},"166":{}},"text":{"41":{},"63":{},"75":{},"94":{},"95":{},"115":{},"126":{},"138":{},"165":{},"166":{}},"component":{}}],["pcap.filt",{"_index":2997,"title":{},"name":{},"text":{"63":{},"75":{},"126":{},"138":{}},"component":{}}],["pcap.loop",{"_index":2995,"title":{},"name":{},"text":{"63":{},"75":{},"126":{},"138":{}},"component":{}}],["pcap.protocol",{"_index":3001,"title":{},"name":{},"text":{"63":{},"75":{},"126":{},"138":{}},"component":{}}],["pcap.replay",{"_index":2990,"title":{},"name":{},"text":{"63":{},"75":{},"126":{},"138":{}},"component":{}}],["pcap.support",{"_index":2988,"title":{},"name":{},"text":{"63":{},"75":{},"126":{},"138":{}},"component":{}}],["pcap4j",{"_index":4464,"title":{},"name":{},"text":{"193":{}},"component":{}}],["pcapng",{"_index":3971,"title":{},"name":{},"text":{"86":{},"95":{},"147":{},"166":{}},"component":{}}],["pcs/server",{"_index":3969,"title":{},"name":{},"text":{"86":{},"147":{}},"component":{}}],["pcs7",{"_index":995,"title":{},"name":{},"text":{"10":{},"83":{},"145":{},"180":{}},"component":{}}],["pdo",{"_index":3030,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["pdu",{"_index":3454,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["peek",{"_index":4252,"title":{"103-14":{}},"name":{},"text":{"103":{}},"component":{}}],["pem",{"_index":3322,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["pengchen",{"_index":1218,"title":{},"name":{},"text":{"14":{}},"component":{}}],["pengcheng.zheng@timecho.com",{"_index":1220,"title":{},"name":{},"text":{"14":{}},"component":{}}],["peopl",{"_index":608,"title":{},"name":{},"text":{"7":{},"10":{},"12":{},"16":{},"36":{},"107":{},"110":{},"177":{},"180":{},"197":{}},"component":{}}],["per",{"_index":510,"title":{},"name":{},"text":{"5":{},"8":{},"9":{},"32":{},"34":{},"36":{},"54":{},"77":{},"82":{},"83":{},"88":{},"101":{},"103":{},"145":{},"150":{},"158":{},"173":{},"174":{},"178":{},"179":{},"195":{},"197":{},"202":{}},"component":{}}],["percentag",{"_index":4336,"title":{},"name":{},"text":{"103":{}},"component":{}}],["perfect",{"_index":501,"title":{},"name":{},"text":{"5":{},"174":{}},"component":{}}],["perfekt",{"_index":338,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["perform",{"_index":544,"title":{"34-6":{},"36-9":{},"195-6":{},"197-9":{}},"name":{},"text":{"5":{},"8":{},"12":{},"15":{},"22":{},"26":{},"34":{},"36":{},"55":{},"83":{},"106":{},"110":{},"145":{},"157":{},"174":{},"178":{},"183":{},"187":{},"195":{},"197":{}},"component":{}}],["perhap",{"_index":2427,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["period",{"_index":2138,"title":{},"name":{},"text":{"34":{},"36":{},"83":{},"87":{},"88":{},"145":{},"148":{},"150":{},"195":{},"197":{}},"component":{}}],["peripher",{"_index":3738,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["peripheri",{"_index":3847,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["permiss",{"_index":1162,"title":{},"name":{},"text":{"12":{},"26":{},"27":{},"30":{},"59":{},"77":{},"81":{},"101":{},"110":{},"140":{},"143":{},"162":{},"187":{},"188":{},"191":{},"202":{}},"component":{}}],["permit",{"_index":1338,"title":{},"name":{},"text":{"15":{},"78":{},"90":{},"106":{}},"component":{}}],["persist",{"_index":3936,"title":{},"name":{},"text":{"84":{},"90":{},"146":{},"151":{}},"component":{}}],["person",{"_index":954,"title":{},"name":{},"text":{"9":{},"34":{},"36":{},"179":{},"195":{},"197":{}},"component":{}}],["person(",{"_index":1208,"title":{},"name":{},"text":{"14":{},"111":{}},"component":{}}],["perspect",{"_index":1620,"title":{},"name":{},"text":{"17":{},"41":{},"113":{},"115":{}},"component":{}}],["petit",{"_index":3886,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["pg_or_pc",{"_index":3452,"title":{},"name":{},"text":{"82":{},"83":{}},"component":{}}],["pgp",{"_index":265,"title":{},"name":{},"text":{"3":{},"34":{},"36":{},"37":{},"173":{},"195":{},"197":{},"198":{}},"component":{}}],["pharmaceut",{"_index":1063,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["phase",{"_index":654,"title":{"34-3":{},"36-6":{},"195-3":{},"197-6":{}},"name":{},"text":{"8":{},"21":{},"27":{},"34":{},"36":{},"78":{},"83":{},"141":{},"145":{},"178":{},"182":{},"188":{},"195":{},"197":{}},"component":{}}],["philosophi",{"_index":3448,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["phone",{"_index":2402,"title":{},"name":{},"text":{"43":{}},"component":{}}],["phone(",{"_index":1210,"title":{},"name":{},"text":{"14":{},"111":{}},"component":{}}],["physic",{"_index":1059,"title":{},"name":{},"text":{"10":{},"41":{},"82":{},"83":{},"115":{},"145":{},"180":{}},"component":{}}],["pick",{"_index":2073,"title":{},"name":{},"text":{"34":{},"36":{},"43":{},"78":{},"141":{},"195":{},"197":{}},"component":{}}],["piec",{"_index":1599,"title":{},"name":{},"text":{"17":{},"87":{},"113":{},"148":{}},"component":{}}],["pietrorimoldi&c",{"_index":1136,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["pile",{"_index":2451,"title":{},"name":{},"text":{"46":{},"90":{},"119":{}},"component":{}}],["pin",{"_index":3157,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["ping",{"_index":1253,"title":{},"name":{},"text":{"15":{},"46":{},"77":{},"83":{},"87":{},"106":{},"119":{},"140":{},"145":{},"148":{}},"component":{}}],["pingresult",{"_index":2457,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["pingresult.err",{"_index":2458,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["pingresult.err.error",{"_index":2460,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["pingresultchannel",{"_index":2454,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["pip",{"_index":2614,"title":{},"name":{},"text":{"48":{}},"component":{}}],["pipe",{"_index":2274,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["pipelin",{"_index":1795,"title":{"22-1":{},"183-1":{}},"name":{},"text":{"22":{},"55":{},"157":{},"183":{},"201":{}},"component":{}}],["pkc",{"_index":3317,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["pkcs#12",{"_index":2395,"title":{},"name":{},"text":{"43":{}},"component":{}}],["pkcs11",{"_index":3318,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["pkcs12",{"_index":3316,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["pki",{"_index":2386,"title":{},"name":{},"text":{"43":{}},"component":{}}],["pl8230",{"_index":1838,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["place",{"_index":2173,"title":{},"name":{},"text":{"36":{},"37":{},"59":{},"65":{},"83":{},"86":{},"128":{},"145":{},"147":{},"162":{},"197":{},"198":{}},"component":{}}],["plain",{"_index":3182,"title":{},"name":{},"text":{"72":{},"90":{},"135":{},"151":{}},"component":{}}],["plan",{"_index":1583,"title":{},"name":{},"text":{"16":{},"34":{},"41":{},"47":{},"90":{},"107":{},"115":{},"120":{},"195":{}},"component":{}}],["plant",{"_index":1622,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["platform",{"_index":852,"title":{},"name":{},"text":{"9":{},"12":{},"34":{},"36":{},"55":{},"78":{},"83":{},"93":{},"110":{},"141":{},"145":{},"157":{},"163":{},"179":{},"195":{},"197":{}},"component":{}}],["play",{"_index":2352,"title":{"122":{}},"name":{},"text":{"41":{},"86":{},"92":{},"115":{},"147":{},"153":{}},"component":{}}],["plc",{"_index":96,"title":{"50":{},"85":{},"90":{},"92":{},"122":{},"151":{},"153":{},"17-7":{},"46-3":{},"90-1":{},"113-7":{},"119-3":{},"151-1":{}},"name":{},"text":{"3":{},"12":{},"13":{},"15":{},"16":{},"17":{},"27":{},"36":{},"41":{},"46":{},"47":{},"48":{},"50":{},"52":{},"54":{},"55":{},"56":{},"62":{},"74":{},"77":{},"78":{},"80":{},"82":{},"83":{},"85":{},"87":{},"88":{},"90":{},"91":{},"92":{},"104":{},"106":{},"107":{},"110":{},"112":{},"113":{},"115":{},"119":{},"120":{},"122":{},"125":{},"137":{},"140":{},"141":{},"144":{},"145":{},"148":{},"150":{},"151":{},"152":{},"153":{},"157":{},"158":{},"159":{},"173":{},"188":{},"197":{},"206":{}},"component":{}}],["plc(a",{"_index":3756,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["plc4[languag",{"_index":463,"title":{},"name":{},"text":{"5":{},"174":{}},"component":{}}],["plc4c",{"_index":1321,"title":{"30-5":{},"31-5":{},"32-5":{}},"name":{"44":{},"45":{},"117":{},"118":{}},"text":{"15":{},"106":{}},"component":{}}],["plc4go",{"_index":1343,"title":{"46-2":{},"119-2":{}},"name":{"46":{},"119":{}},"text":{"15":{},"46":{},"106":{},"119":{}},"component":{}}],["plc4go.newplcdrivermanag",{"_index":2429,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["plc4j",{"_index":312,"title":{"47-1":{},"120-1":{}},"name":{"47":{},"120":{}},"text":{"3":{},"15":{},"39":{},"41":{},"46":{},"47":{},"50":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"87":{},"88":{},"91":{},"92":{},"93":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"106":{},"119":{},"120":{},"122":{},"123":{},"125":{},"126":{},"127":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"148":{},"150":{},"152":{},"153":{},"163":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"173":{},"199":{}},"component":{}}],["plc4j/driver",{"_index":2321,"title":{},"name":{},"text":{"40":{}},"component":{}}],["plc4j/integrations/apach",{"_index":2875,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["plc4j/tools/captur",{"_index":3972,"title":{},"name":{},"text":{"86":{},"147":{}},"component":{}}],["plc4net",{"_index":1542,"title":{"30-6":{},"31-6":{},"32-6":{}},"name":{},"text":{"15":{},"106":{}},"component":{}}],["plc4pi",{"_index":1543,"title":{"30-7":{},"30-8":{},"31-7":{},"32-7":{},"48-1":{}},"name":{"48":{},"121":{}},"text":{"15":{},"32":{},"48":{},"85":{},"106":{}},"component":{}}],["plc4py.plcdrivermanag",{"_index":2617,"title":{},"name":{},"text":{"48":{}},"component":{}}],["plc4x",{"_index":2,"title":{"2":{},"3":{},"9":{},"12":{},"13":{},"14":{},"26":{},"34":{},"36":{},"80":{},"92":{},"110":{},"111":{},"112":{},"122":{},"144":{},"153":{},"172":{},"173":{},"179":{},"195":{},"197":{},"3-4":{},"3-5":{},"7-2":{},"16-1":{},"43-2":{},"55-1":{},"56-2":{},"56-3":{},"107-1":{},"157-1":{},"159-2":{},"159-3":{},"173-4":{},"173-5":{},"177-2":{}},"name":{"80":{},"144":{}},"text":{"3":{},"4":{},"5":{},"7":{},"8":{},"9":{},"10":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"20":{},"21":{},"23":{},"26":{},"27":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"41":{},"42":{},"43":{},"46":{},"47":{},"48":{},"49":{},"50":{},"52":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"65":{},"66":{},"70":{},"72":{},"74":{},"78":{},"80":{},"81":{},"82":{},"83":{},"84":{},"87":{},"88":{},"90":{},"91":{},"92":{},"93":{},"98":{},"101":{},"106":{},"107":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"119":{},"120":{},"122":{},"124":{},"128":{},"129":{},"133":{},"135":{},"137":{},"141":{},"143":{},"144":{},"145":{},"146":{},"148":{},"150":{},"151":{},"152":{},"153":{},"157":{},"158":{},"159":{},"160":{},"161":{},"162":{},"163":{},"170":{},"173":{},"174":{},"175":{},"177":{},"178":{},"179":{},"180":{},"181":{},"182":{},"184":{},"187":{},"188":{},"189":{},"195":{},"197":{},"198":{},"202":{}},"component":{"1":{},"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"18":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"88":{},"89":{},"90":{},"91":{},"92":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"134":{},"135":{},"136":{},"137":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"147":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{},"189":{},"190":{},"191":{},"192":{},"193":{},"194":{},"195":{},"196":{},"197":{},"198":{},"199":{},"200":{},"201":{},"202":{},"203":{},"204":{},"205":{},"206":{}}}],["plc4x/plc4j/integrations/opcua",{"_index":2915,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["plc4x2",{"_index":1811,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["plc4x://127.0.0.1?remot",{"_index":3422,"title":{},"name":{},"text":{"80":{},"144":{}},"component":{}}],["plc4x:{transport}://{ip",{"_index":3419,"title":{},"name":{},"text":{"80":{},"144":{}},"component":{}}],["plc4xconnectionstr",{"_index":4051,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["plc4xopcuaserv",{"_index":2927,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["plc4xsourceprocessor",{"_index":2881,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["plc4x’",{"_index":3463,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["plc_connection.is_write_support",{"_index":2665,"title":{},"name":{},"text":{"48":{}},"component":{}}],["plcbool(fals",{"_index":2723,"title":{},"name":{},"text":{"50":{}},"component":{}}],["plcbool(tru",{"_index":2722,"title":{},"name":{},"text":{"50":{}},"component":{}}],["plcboolean",{"_index":1400,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["plcconnect",{"_index":1540,"title":{},"name":{},"text":{"15":{},"47":{},"50":{},"82":{},"83":{},"87":{},"92":{},"106":{},"120":{},"122":{},"145":{},"148":{},"153":{}},"component":{}}],["plcconnection.getmetadata().isreadsupport",{"_index":2555,"title":{},"name":{},"text":{"47":{},"50":{},"120":{},"122":{}},"component":{}}],["plcconnection.getmetadata().issubscribesupport",{"_index":2592,"title":{},"name":{},"text":{"47":{},"120":{}},"component":{}}],["plcconnection.getmetadata().iswritesupport",{"_index":2720,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["plcconnection.readrequestbuild",{"_index":2558,"title":{},"name":{},"text":{"47":{},"50":{},"120":{},"122":{}},"component":{}}],["plcconnection.subscriptionrequestbuild",{"_index":2594,"title":{},"name":{},"text":{"47":{},"120":{}},"component":{}}],["plcconnection.writerequestbuild",{"_index":2721,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["plcconnectionexcept",{"_index":3995,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["plcconnectionmanag",{"_index":2547,"title":{},"name":{},"text":{"47":{},"87":{},"120":{},"148":{}},"component":{}}],["plcconnectionmetadata",{"_index":1271,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["plcconsumerregistr",{"_index":3722,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["plcdrivermanag",{"_index":1264,"title":{},"name":{},"text":{"15":{},"46":{},"47":{},"48":{},"50":{},"83":{},"87":{},"88":{},"91":{},"106":{},"119":{},"120":{},"122":{},"145":{},"148":{},"150":{},"152":{},"153":{}},"component":{}}],["plcdrivermanager().getconnection(connectionstr",{"_index":2701,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["plcdrivermanager.getdefault().getconnectionmanager().getconnection(\"mock:mi",{"_index":4099,"title":{},"name":{},"text":{"92":{}},"component":{}}],["plcdrivermanager.getdefault().getconnectionmanager().getconnection(connectionstr",{"_index":2550,"title":{},"name":{},"text":{"47":{},"120":{}},"component":{}}],["plcdrivermetadata",{"_index":1268,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["plcentiti",{"_index":4018,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["plcentitymanag",{"_index":4030,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["plceventmodesubscript",{"_index":3710,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["plcfield",{"_index":4429,"title":{},"name":{},"text":{"151":{}},"component":{}}],["plcfield(\"db01:dw01:long",{"_index":4430,"title":{},"name":{},"text":{"151":{}},"component":{}}],["plcincompatibledatatypeexcept",{"_index":2717,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["plcint(1",{"_index":2671,"title":{},"name":{},"text":{"48":{},"50":{}},"component":{}}],["plcint(2",{"_index":2670,"title":{},"name":{},"text":{"48":{},"50":{}},"component":{}}],["plcint(3",{"_index":2725,"title":{},"name":{},"text":{"50":{}},"component":{}}],["plcint(4",{"_index":2726,"title":{},"name":{},"text":{"50":{}},"component":{}}],["plcint(42",{"_index":2724,"title":{},"name":{},"text":{"50":{}},"component":{}}],["plclist",{"_index":1350,"title":{},"name":{},"text":{"15":{},"48":{},"106":{}},"component":{}}],["plclist([plcint(1",{"_index":2669,"title":{},"name":{},"text":{"48":{}},"component":{}}],["plclogger",{"_index":700,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["plcmockconnect",{"_index":4098,"title":{},"name":{},"text":{"92":{},"153":{}},"component":{}}],["plcreadrequest",{"_index":2461,"title":{},"name":{},"text":{"46":{},"47":{},"50":{},"82":{},"83":{},"119":{},"120":{},"122":{},"145":{}},"component":{}}],["plcreadrequest.build",{"_index":2557,"title":{},"name":{},"text":{"47":{},"50":{},"82":{},"83":{},"120":{},"122":{},"145":{}},"component":{}}],["plcreadrequestresult",{"_index":2483,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["plcreadrespons",{"_index":2482,"title":{},"name":{},"text":{"46":{},"47":{},"50":{},"82":{},"83":{},"119":{},"120":{},"122":{},"145":{}},"component":{}}],["plcrequestbuild",{"_index":2702,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["plcresponsecod",{"_index":4092,"title":{},"name":{},"text":{"92":{},"153":{}},"component":{}}],["plcresponsecode.not_found",{"_index":3882,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["plcresponsecode.ok",{"_index":2579,"title":{},"name":{},"text":{"47":{},"48":{},"50":{},"82":{},"83":{},"92":{},"120":{},"122":{},"145":{},"153":{}},"component":{}}],["plcstring(\"hello",{"_index":4103,"title":{},"name":{},"text":{"92":{},"153":{}},"component":{}}],["plcstruct/map",{"_index":3397,"title":{},"name":{},"text":{"78":{}},"component":{}}],["plcsubscriptionevent.gettagnam",{"_index":2610,"title":{},"name":{},"text":{"47":{},"120":{}},"component":{}}],["plcsubscriptionhandl",{"_index":2606,"title":{},"name":{},"text":{"47":{},"120":{}},"component":{}}],["plcsubscriptionrequest",{"_index":2599,"title":{},"name":{},"text":{"47":{},"83":{},"120":{},"145":{}},"component":{}}],["plcsubscriptionrequest.build",{"_index":2593,"title":{},"name":{},"text":{"47":{},"83":{},"120":{},"145":{}},"component":{}}],["plcsubscriptionrespons",{"_index":2601,"title":{},"name":{},"text":{"47":{},"83":{},"120":{},"145":{}},"component":{}}],["plctag",{"_index":2641,"title":{},"name":{},"text":{"48":{},"82":{},"83":{},"90":{},"145":{}},"component":{}}],["plctag(\"db01:dw01:real",{"_index":4020,"title":{},"name":{},"text":{"90":{}},"component":{}}],["plctag(valu",{"_index":4022,"title":{},"name":{},"text":{"90":{}},"component":{}}],["plcvalu",{"_index":1397,"title":{},"name":{},"text":{"15":{},"46":{},"48":{},"55":{},"101":{},"106":{},"119":{},"157":{},"202":{}},"component":{}}],["plcwriterequest",{"_index":2727,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["plcwriterequest.build",{"_index":2666,"title":{},"name":{},"text":{"48":{},"50":{},"122":{}},"component":{}}],["plcwriterespons",{"_index":2588,"title":{},"name":{},"text":{"47":{},"50":{},"120":{},"122":{}},"component":{}}],["plc’",{"_index":2924,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["pleas",{"_index":222,"title":{},"name":{},"text":{"3":{},"4":{},"5":{},"7":{},"12":{},"14":{},"15":{},"20":{},"21":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"40":{},"41":{},"42":{},"43":{},"46":{},"50":{},"56":{},"78":{},"80":{},"82":{},"83":{},"88":{},"90":{},"93":{},"106":{},"110":{},"111":{},"114":{},"115":{},"116":{},"119":{},"122":{},"144":{},"145":{},"150":{},"159":{},"163":{},"173":{},"174":{},"175":{},"177":{},"182":{},"189":{},"191":{},"192":{},"193":{},"195":{},"197":{},"198":{}},"component":{}}],["plu",{"_index":3617,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["plugin",{"_index":122,"title":{},"name":{},"text":{"3":{},"8":{},"21":{},"22":{},"27":{},"34":{},"36":{},"55":{},"101":{},"157":{},"173":{},"178":{},"182":{},"183":{},"188":{},"189":{},"195":{},"197":{},"202":{}},"component":{}}],["plugin:1.3.0:serv",{"_index":698,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["plugin:3.0.1:sign",{"_index":2190,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["pm",{"_index":723,"title":{},"name":{},"text":{"8":{},"82":{},"83":{},"145":{},"178":{}},"component":{}}],["pmc",{"_index":574,"title":{},"name":{},"text":{"6":{},"9":{},"10":{},"14":{},"34":{},"36":{},"111":{},"176":{},"179":{},"180":{},"195":{},"197":{}},"component":{}}],["pn",{"_index":3668,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["podl",{"_index":1024,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["podling’",{"_index":4440,"title":{},"name":{},"text":{"179":{}},"component":{}}],["point",{"_index":894,"title":{},"name":{},"text":{"9":{},"10":{},"15":{},"34":{},"36":{},"41":{},"78":{},"82":{},"83":{},"103":{},"106":{},"115":{},"141":{},"145":{},"179":{},"180":{},"195":{},"197":{},"204":{}},"component":{}}],["pointer",{"_index":3684,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["pojo",{"_index":4015,"title":{},"name":{},"text":{"90":{},"101":{},"151":{},"202":{}},"component":{}}],["polici",{"_index":578,"title":{},"name":{},"text":{"6":{},"34":{},"36":{},"78":{},"141":{},"176":{},"195":{},"197":{}},"component":{}}],["poll",{"_index":1451,"title":{},"name":{},"text":{"15":{},"46":{},"47":{},"48":{},"50":{},"54":{},"55":{},"86":{},"106":{},"119":{},"120":{},"122":{},"147":{},"157":{},"158":{}},"component":{}}],["polyglot",{"_index":461,"title":{},"name":{},"text":{"5":{},"174":{}},"component":{}}],["pom",{"_index":86,"title":{"3-8":{},"173-8":{}},"name":{},"text":{"3":{},"21":{},"34":{},"36":{},"173":{},"182":{},"195":{},"197":{}},"component":{}}],["pom.xml",{"_index":2053,"title":{},"name":{},"text":{"34":{},"37":{},"40":{},"46":{},"49":{},"119":{},"124":{},"195":{},"198":{}},"component":{}}],["pool",{"_index":316,"title":{"88":{},"150":{}},"name":{"88":{},"150":{}},"text":{"3":{},"15":{},"88":{},"91":{},"106":{},"150":{},"152":{},"173":{}},"component":{}}],["pool.sk",{"_index":2180,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["pooledplcdrivermanag",{"_index":3998,"title":{"88-1":{},"150-1":{}},"name":{},"text":{"88":{},"91":{},"150":{},"152":{}},"component":{}}],["pooledplddrivermanag",{"_index":4008,"title":{},"name":{},"text":{"88":{},"150":{}},"component":{}}],["poor",{"_index":3691,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["pop",{"_index":2899,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["popul",{"_index":4107,"title":{},"name":{},"text":{"92":{},"153":{}},"component":{}}],["popular",{"_index":1631,"title":{},"name":{},"text":{"17":{},"66":{},"72":{},"113":{},"129":{},"135":{}},"component":{}}],["popup",{"_index":2407,"title":{},"name":{},"text":{"43":{},"56":{},"159":{}},"component":{}}],["port",{"_index":10,"title":{"97":{},"168":{},"2-3":{},"172-3":{}},"name":{},"text":{"2":{},"8":{},"15":{},"36":{},"41":{},"50":{},"54":{},"59":{},"62":{},"63":{},"71":{},"75":{},"76":{},"77":{},"78":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"94":{},"97":{},"99":{},"100":{},"106":{},"115":{},"122":{},"125":{},"126":{},"134":{},"138":{},"139":{},"140":{},"141":{},"143":{},"144":{},"145":{},"146":{},"147":{},"158":{},"162":{},"165":{},"168":{},"169":{},"171":{},"172":{},"178":{},"197":{}},"component":{}}],["portabl",{"_index":4122,"title":{},"name":{},"text":{"93":{},"163":{}},"component":{}}],["portal",{"_index":3500,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["portion",{"_index":1706,"title":{},"name":{},"text":{"21":{}},"component":{}}],["posit",{"_index":1042,"title":{},"name":{},"text":{"10":{},"15":{},"48":{},"83":{},"103":{},"106":{},"145":{},"180":{}},"component":{}}],["possess",{"_index":2452,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["possibl",{"_index":53,"title":{},"name":{},"text":{"2":{},"3":{},"7":{},"9":{},"15":{},"16":{},"17":{},"21":{},"29":{},"34":{},"36":{},"41":{},"46":{},"47":{},"48":{},"50":{},"63":{},"65":{},"66":{},"75":{},"78":{},"82":{},"83":{},"86":{},"90":{},"93":{},"103":{},"106":{},"107":{},"113":{},"115":{},"119":{},"120":{},"122":{},"126":{},"128":{},"129":{},"138":{},"141":{},"145":{},"147":{},"151":{},"163":{},"172":{},"173":{},"177":{},"179":{},"182":{},"189":{},"193":{},"195":{},"197":{},"204":{}},"component":{}}],["post",{"_index":453,"title":{"13-1":{},"112-1":{}},"name":{},"text":{"5":{},"7":{},"9":{},"12":{},"30":{},"55":{},"110":{},"157":{},"174":{},"177":{},"179":{}},"component":{}}],["postprocesstemplateoutput(fil",{"_index":4178,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["potenti",{"_index":1125,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["power",{"_index":917,"title":{},"name":{},"text":{"9":{},"17":{},"27":{},"92":{},"113":{},"153":{},"179":{},"188":{}},"component":{}}],["powershel",{"_index":2257,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["ppmc",{"_index":914,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["practic",{"_index":3449,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["pragmat",{"_index":1028,"title":{},"name":{},"text":{"10":{},"12":{},"110":{},"180":{}},"component":{}}],["pre",{"_index":169,"title":{},"name":{},"text":{"3":{},"8":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"91":{},"152":{},"173":{},"178":{},"193":{}},"component":{}}],["preassur",{"_index":4029,"title":{},"name":{},"text":{"90":{}},"component":{}}],["precis",{"_index":3530,"title":{},"name":{},"text":{"82":{},"83":{},"103":{},"145":{}},"component":{}}],["precondit",{"_index":620,"title":{},"name":{},"text":{"7":{},"177":{}},"component":{}}],["predefin",{"_index":2656,"title":{},"name":{},"text":{"48":{},"50":{},"83":{},"122":{},"145":{}},"component":{}}],["predict",{"_index":1140,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["prefix",{"_index":545,"title":{},"name":{},"text":{"5":{},"15":{},"22":{},"34":{},"36":{},"90":{},"106":{},"174":{},"183":{},"195":{},"197":{}},"component":{}}],["preliminari",{"_index":1147,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["prepar",{"_index":218,"title":{"19":{},"29":{},"108":{},"189":{},"29-1":{},"34-2":{},"34-4":{},"36-2":{},"36-3":{},"36-5":{},"36-7":{},"40-1":{},"40-2":{},"189-1":{},"195-2":{},"195-4":{},"197-2":{},"197-3":{},"197-5":{},"197-7":{}},"name":{"19":{},"108":{}},"text":{"3":{},"7":{},"15":{},"34":{},"36":{},"43":{},"46":{},"47":{},"48":{},"50":{},"78":{},"83":{},"92":{},"106":{},"119":{},"120":{},"122":{},"141":{},"145":{},"153":{},"173":{},"177":{},"195":{},"197":{}},"component":{}}],["prerequisit",{"_index":619,"title":{"173-10":{}},"name":{},"text":{"7":{},"30":{},"31":{},"32":{},"173":{},"177":{}},"component":{}}],["prerequisitecheck",{"_index":1937,"title":{},"name":{},"text":{"30":{},"31":{},"32":{}},"component":{}}],["present",{"_index":2087,"title":{},"name":{},"text":{"34":{},"36":{},"43":{},"56":{},"90":{},"101":{},"103":{},"159":{},"195":{},"197":{},"202":{},"204":{}},"component":{}}],["preset",{"_index":3674,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["press",{"_index":736,"title":{},"name":{},"text":{"8":{},"43":{},"178":{}},"component":{}}],["pressur",{"_index":4021,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["pretti",{"_index":506,"title":{},"name":{},"text":{"5":{},"8":{},"21":{},"41":{},"62":{},"87":{},"101":{},"103":{},"115":{},"125":{},"148":{},"174":{},"178":{},"182":{},"202":{}},"component":{}}],["prevent",{"_index":953,"title":{},"name":{},"text":{"9":{},"83":{},"86":{},"145":{},"147":{},"179":{}},"component":{}}],["previou",{"_index":625,"title":{"15-6":{},"106-6":{}},"name":{},"text":{"7":{},"15":{},"21":{},"36":{},"83":{},"106":{},"145":{},"177":{},"182":{},"197":{}},"component":{}}],["previous",{"_index":1336,"title":{},"name":{},"text":{"15":{},"34":{},"36":{},"71":{},"83":{},"102":{},"106":{},"134":{},"145":{},"195":{},"197":{},"203":{}},"component":{}}],["primari",{"_index":622,"title":{},"name":{},"text":{"7":{},"9":{},"41":{},"78":{},"98":{},"103":{},"170":{},"177":{},"179":{},"204":{}},"component":{}}],["print",{"_index":2280,"title":{},"name":{},"text":{"37":{},"48":{},"92":{},"151":{},"153":{},"198":{}},"component":{}}],["print(f\"build",{"_index":2627,"title":{},"name":{},"text":{"48":{}},"component":{}}],["print(f\"connect",{"_index":2624,"title":{},"name":{},"text":{"48":{}},"component":{}}],["print(f\"execut",{"_index":2631,"title":{},"name":{},"text":{"48":{}},"component":{}}],["print(f\"request",{"_index":2630,"title":{},"name":{},"text":{"48":{}},"component":{}}],["print(f\"respons",{"_index":2634,"title":{},"name":{},"text":{"48":{}},"component":{}}],["prior",{"_index":1783,"title":{},"name":{},"text":{"21":{},"36":{},"78":{},"141":{},"182":{},"197":{}},"component":{}}],["prioriti",{"_index":866,"title":{},"name":{},"text":{"9":{},"66":{},"129":{},"179":{}},"component":{}}],["priority_class",{"_index":3747,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["privat",{"_index":598,"title":{},"name":{},"text":{"6":{},"9":{},"17":{},"34":{},"36":{},"43":{},"78":{},"90":{},"101":{},"113":{},"141":{},"151":{},"176":{},"179":{},"195":{},"197":{},"202":{}},"component":{}}],["privileg",{"_index":1943,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["pro",{"_index":4441,"title":{},"name":{},"text":{"179":{}},"component":{}}],["proactiv",{"_index":869,"title":{},"name":{},"text":{"9":{}},"component":{}}],["probabl",{"_index":1624,"title":{},"name":{},"text":{"17":{},"21":{},"27":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"41":{},"46":{},"47":{},"82":{},"83":{},"86":{},"91":{},"113":{},"115":{},"119":{},"120":{},"145":{},"147":{},"152":{},"173":{},"182":{},"188":{},"189":{},"191":{},"192":{},"193":{},"195":{},"197":{}},"component":{}}],["problem",{"_index":5,"title":{"2-2":{},"21-6":{},"172-2":{},"182-6":{}},"name":{},"text":{"2":{},"11":{},"12":{},"15":{},"17":{},"21":{},"26":{},"29":{},"34":{},"36":{},"37":{},"47":{},"48":{},"50":{},"62":{},"82":{},"83":{},"86":{},"88":{},"91":{},"106":{},"110":{},"113":{},"120":{},"122":{},"125":{},"145":{},"147":{},"150":{},"152":{},"172":{},"181":{},"182":{},"187":{},"189":{},"195":{},"197":{},"198":{}},"component":{}}],["problemat",{"_index":4000,"title":{},"name":{},"text":{"88":{},"150":{}},"component":{}}],["proce",{"_index":3695,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["procedur",{"_index":876,"title":{"78-6":{},"141-6":{}},"name":{},"text":{"9":{},"15":{},"78":{},"83":{},"106":{},"141":{},"145":{},"179":{}},"component":{}}],["process",{"_index":742,"title":{"83-14":{},"145-14":{}},"name":{},"text":{"8":{},"9":{},"10":{},"12":{},"13":{},"30":{},"31":{},"34":{},"36":{},"40":{},"43":{},"47":{},"48":{},"50":{},"55":{},"56":{},"65":{},"78":{},"82":{},"83":{},"87":{},"91":{},"103":{},"110":{},"112":{},"120":{},"122":{},"128":{},"145":{},"148":{},"152":{},"157":{},"159":{},"178":{},"179":{},"180":{},"191":{},"195":{},"197":{},"204":{}},"component":{}}],["processor",{"_index":1444,"title":{"56-2":{},"56-3":{},"159-2":{},"159-3":{}},"name":{},"text":{"15":{},"29":{},"56":{},"83":{},"106":{},"145":{},"159":{}},"component":{}}],["prod.deb",{"_index":1968,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["produc",{"_index":655,"title":{},"name":{},"text":{"8":{},"9":{},"15":{},"20":{},"34":{},"36":{},"37":{},"55":{},"56":{},"103":{},"106":{},"114":{},"157":{},"159":{},"178":{},"179":{},"182":{},"195":{},"197":{},"198":{}},"component":{}}],["product",{"_index":399,"title":{},"name":{},"text":{"4":{},"5":{},"12":{},"17":{},"43":{},"55":{},"83":{},"110":{},"113":{},"145":{},"157":{},"173":{},"174":{},"175":{}},"component":{}}],["profibu",{"_index":3739,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["profil",{"_index":82,"title":{"3-6":{},"3-7":{},"3-8":{},"3-9":{},"173-6":{},"173-7":{},"173-8":{},"173-9":{},"173-10":{}},"name":{},"text":{"3":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"40":{},"173":{},"189":{},"195":{},"197":{},"198":{}},"component":{}}],["profinet",{"_index":2350,"title":{"81":{},"143":{}},"name":{"81":{},"143":{}},"text":{"41":{},"74":{},"81":{},"83":{},"115":{},"137":{},"143":{},"145":{}},"component":{}}],["profinet:raw://127.0.0.1?gsddirectory=/profinet/gsd&devices=[[test",{"_index":3434,"title":{},"name":{},"text":{"81":{},"143":{}},"component":{}}],["profinet:raw://{ip",{"_index":3431,"title":{},"name":{},"text":{"81":{},"143":{}},"component":{}}],["program",{"_index":1378,"title":{},"name":{},"text":{"15":{},"17":{},"42":{},"43":{},"46":{},"54":{},"62":{},"82":{},"83":{},"88":{},"98":{},"103":{},"106":{},"113":{},"116":{},"119":{},"125":{},"145":{},"150":{},"158":{},"170":{},"193":{},"204":{}},"component":{}}],["programm",{"_index":1581,"title":{},"name":{},"text":{"16":{},"17":{},"36":{},"90":{},"107":{},"113":{},"151":{},"197":{}},"component":{}}],["programmat",{"_index":2554,"title":{},"name":{},"text":{"47":{},"48":{},"50":{},"120":{},"122":{}},"component":{}}],["progran",{"_index":2423,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["progress",{"_index":3194,"title":{},"name":{},"text":{"74":{},"137":{}},"component":{}}],["project",{"_index":158,"title":{"26":{},"6-3":{},"46-1":{},"119-1":{},"176-3":{}},"name":{},"text":{"3":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"12":{},"14":{},"15":{},"16":{},"21":{},"22":{},"23":{},"26":{},"27":{},"29":{},"32":{},"34":{},"36":{},"37":{},"46":{},"47":{},"50":{},"52":{},"78":{},"83":{},"90":{},"93":{},"106":{},"107":{},"110":{},"111":{},"119":{},"120":{},"122":{},"141":{},"145":{},"151":{},"163":{},"173":{},"174":{},"176":{},"177":{},"178":{},"179":{},"180":{},"182":{},"183":{},"184":{},"187":{},"188":{},"189":{},"195":{},"197":{},"198":{}},"component":{}}],["project.build.directory}/gener",{"_index":1736,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["project.vers",{"_index":2306,"title":{},"name":{},"text":{"39":{},"199":{}},"component":{}}],["project/cmak",{"_index":2038,"title":{},"name":{},"text":{"32":{}},"component":{}}],["project?dti=0&lc=en",{"_index":3590,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["project’",{"_index":581,"title":{},"name":{},"text":{"6":{},"9":{},"176":{},"179":{}},"component":{}}],["prolifer",{"_index":1359,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["prolong",{"_index":3984,"title":{},"name":{},"text":{"87":{},"88":{},"148":{},"150":{}},"component":{}}],["promin",{"_index":889,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["promis",{"_index":1511,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["promiss",{"_index":2448,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["promot",{"_index":450,"title":{},"name":{},"text":{"5":{},"93":{},"163":{},"174":{}},"component":{}}],["prompt",{"_index":2413,"title":{},"name":{},"text":{"43":{},"59":{},"162":{}},"component":{}}],["propag",{"_index":3308,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["properti",{"_index":279,"title":{},"name":{},"text":{"3":{},"48":{},"55":{},"90":{},"103":{},"157":{},"173":{},"204":{}},"component":{}}],["proprietari",{"_index":1602,"title":{},"name":{},"text":{"17":{},"113":{},"182":{}},"component":{}}],["prosi",{"_index":3407,"title":{},"name":{},"text":{"78":{}},"component":{}}],["protect",{"_index":2954,"title":{},"name":{},"text":{"59":{},"101":{},"162":{},"202":{}},"component":{}}],["protocol",{"_index":6,"title":{"33":{},"74":{},"79":{},"104":{},"105":{},"142":{},"194":{},"201":{},"205":{},"206":{},"2-3":{},"2-4":{},"21-4":{},"21-8":{},"40-1":{},"40-3":{},"137-1":{},"172-3":{},"172-4":{},"182-4":{},"182-8":{}},"name":{"79":{},"104":{},"105":{},"142":{},"205":{},"206":{}},"text":{"2":{},"4":{},"12":{},"15":{},"16":{},"17":{},"21":{},"27":{},"36":{},"39":{},"40":{},"41":{},"46":{},"47":{},"48":{},"50":{},"55":{},"62":{},"63":{},"65":{},"66":{},"71":{},"72":{},"74":{},"75":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"85":{},"86":{},"87":{},"88":{},"90":{},"91":{},"93":{},"99":{},"100":{},"101":{},"102":{},"103":{},"106":{},"107":{},"110":{},"113":{},"115":{},"119":{},"120":{},"122":{},"125":{},"126":{},"128":{},"129":{},"134":{},"135":{},"137":{},"138":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"147":{},"148":{},"150":{},"151":{},"152":{},"157":{},"163":{},"169":{},"171":{},"172":{},"175":{},"182":{},"188":{},"197":{},"199":{},"201":{},"202":{},"203":{},"204":{}},"component":{}}],["protocol(",{"_index":4485,"title":{},"name":{},"text":{"201":{}},"component":{}}],["protocol/driv",{"_index":1214,"title":{},"name":{},"text":{"14":{},"111":{}},"component":{}}],["protocolid",{"_index":4260,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["protocolnam",{"_index":1718,"title":{},"name":{},"text":{"21":{},"101":{},"182":{},"202":{}},"component":{}}],["protocolvers",{"_index":1723,"title":{},"name":{},"text":{"21":{}},"component":{}}],["proven",{"_index":794,"title":{},"name":{},"text":{"9":{},"17":{},"78":{},"82":{},"113":{},"141":{},"179":{}},"component":{}}],["provid",{"_index":95,"title":{"27-1":{},"188-1":{}},"name":{},"text":{"3":{},"5":{},"7":{},"8":{},"9":{},"11":{},"12":{},"14":{},"15":{},"16":{},"17":{},"21":{},"26":{},"27":{},"29":{},"32":{},"34":{},"36":{},"39":{},"41":{},"47":{},"48":{},"49":{},"50":{},"55":{},"56":{},"63":{},"65":{},"70":{},"75":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"87":{},"90":{},"92":{},"93":{},"99":{},"100":{},"101":{},"103":{},"106":{},"107":{},"110":{},"111":{},"113":{},"115":{},"120":{},"122":{},"124":{},"126":{},"128":{},"133":{},"138":{},"139":{},"141":{},"143":{},"145":{},"146":{},"148":{},"153":{},"157":{},"159":{},"163":{},"169":{},"171":{},"173":{},"174":{},"177":{},"178":{},"179":{},"181":{},"182":{},"187":{},"188":{},"189":{},"195":{},"197":{},"199":{},"202":{},"204":{}},"component":{}}],["provis",{"_index":3343,"title":{},"name":{},"text":{"78":{}},"component":{}}],["proxi",{"_index":1295,"title":{"80":{},"144":{}},"name":{},"text":{"15":{},"74":{},"80":{},"90":{},"106":{},"137":{},"144":{},"173":{}},"component":{}}],["proxim",{"_index":3475,"title":{},"name":{},"text":{"82":{}},"component":{}}],["pseudocod",{"_index":3709,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["pto",{"_index":987,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["public",{"_index":597,"title":{},"name":{},"text":{"6":{},"9":{},"17":{},"21":{},"26":{},"34":{},"36":{},"39":{},"83":{},"87":{},"90":{},"91":{},"92":{},"101":{},"113":{},"145":{},"148":{},"151":{},"152":{},"153":{},"176":{},"179":{},"182":{},"187":{},"195":{},"197":{},"199":{},"202":{}},"component":{}}],["publicli",{"_index":780,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["publish",{"_index":2613,"title":{},"name":{},"text":{"48":{},"65":{},"72":{},"74":{},"78":{},"83":{},"128":{},"135":{},"137":{},"145":{},"183":{}},"component":{}}],["publishrequest",{"_index":3386,"title":{},"name":{},"text":{"78":{}},"component":{}}],["pull",{"_index":437,"title":{"5-3":{},"174-3":{}},"name":{},"text":{"5":{},"12":{},"14":{},"22":{},"29":{},"110":{},"111":{},"174":{},"183":{}},"component":{}}],["pullup",{"_index":3162,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["purchas",{"_index":1668,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["pure",{"_index":1374,"title":{},"name":{},"text":{"15":{},"101":{},"106":{},"202":{}},"component":{}}],["purpos",{"_index":3177,"title":{},"name":{},"text":{"72":{},"83":{},"84":{},"92":{},"93":{},"135":{},"145":{},"146":{},"153":{},"163":{}},"component":{}}],["push",{"_index":521,"title":{},"name":{},"text":{"5":{},"27":{},"34":{},"36":{},"174":{},"188":{},"195":{},"197":{}},"component":{}}],["put",{"_index":864,"title":{},"name":{},"text":{"9":{},"12":{},"37":{},"87":{},"88":{},"110":{},"148":{},"150":{},"179":{},"198":{}},"component":{}}],["put/get",{"_index":3616,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["pyenv",{"_index":1922,"title":{},"name":{},"text":{"29":{},"31":{},"189":{},"192":{}},"component":{}}],["pypi",{"_index":2612,"title":{},"name":{},"text":{"48":{}},"component":{}}],["python",{"_index":216,"title":{"48":{},"121":{},"30-7":{},"30-8":{},"31-7":{},"32-7":{},"42-3":{},"191-5":{},"191-6":{},"192-5":{},"193-5":{}},"name":{},"text":{"3":{},"7":{},"15":{},"16":{},"26":{},"29":{},"31":{},"32":{},"36":{},"42":{},"74":{},"106":{},"107":{},"137":{},"173":{},"177":{},"187":{},"189":{},"192":{},"193":{},"197":{}},"component":{}}],["python,en",{"_index":2163,"title":{},"name":{},"text":{"36":{}},"component":{}}],["python,with",{"_index":4436,"title":{},"name":{},"text":{"173":{},"197":{}},"component":{}}],["python.ex",{"_index":2046,"title":{},"name":{},"text":{"32":{},"193":{}},"component":{}}],["python3",{"_index":1981,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["pythonista",{"_index":1072,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["q",{"_index":1966,"title":{},"name":{},"text":{"30":{},"82":{},"83":{},"145":{},"191":{}},"component":{}}],["q0.4:bool",{"_index":2560,"title":{},"name":{},"text":{"47":{},"120":{}},"component":{}}],["q0:byte",{"_index":2561,"title":{},"name":{},"text":{"47":{},"120":{}},"component":{}}],["qu10",{"_index":859,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["qu20",{"_index":863,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["qu30",{"_index":877,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["qu40",{"_index":880,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["qu50",{"_index":885,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["qualifi",{"_index":2355,"title":{},"name":{},"text":{"41":{},"115":{}},"component":{}}],["qualiti",{"_index":638,"title":{},"name":{},"text":{"8":{},"9":{},"83":{},"145":{},"178":{},"179":{}},"component":{}}],["quantum",{"_index":3949,"title":{},"name":{},"text":{"85":{}},"component":{}}],["que",{"_index":3595,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["queri",{"_index":694,"title":{},"name":{},"text":{"8":{},"54":{},"91":{},"152":{},"158":{},"178":{}},"component":{}}],["question",{"_index":605,"title":{},"name":{},"text":{"6":{},"9":{},"34":{},"36":{},"83":{},"145":{},"176":{},"179":{},"195":{},"197":{}},"component":{}}],["queue",{"_index":3461,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["quick",{"_index":253,"title":{},"name":{},"text":{"3":{},"27":{},"34":{},"36":{},"173":{},"188":{},"195":{},"197":{}},"component":{}}],["quickli",{"_index":1714,"title":{},"name":{},"text":{"21":{},"34":{},"36":{},"182":{},"195":{},"197":{}},"component":{}}],["quickstart",{"_index":2769,"title":{"55-3":{},"157-3":{}},"name":{},"text":{},"component":{}}],["quit",{"_index":184,"title":{},"name":{},"text":{"3":{},"17":{},"21":{},"29":{},"30":{},"32":{},"34":{},"36":{},"41":{},"56":{},"82":{},"83":{},"88":{},"90":{},"103":{},"113":{},"145":{},"150":{},"159":{},"173":{},"182":{},"189":{},"191":{},"193":{},"195":{},"197":{},"204":{}},"component":{}}],["rack",{"_index":3221,"title":{},"name":{},"text":{"76":{},"82":{},"83":{},"139":{},"145":{}},"component":{}}],["rack2",{"_index":3654,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["rack=0&remot",{"_index":3480,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["rais",{"_index":2861,"title":{},"name":{},"text":{"55":{},"103":{},"157":{},"204":{}},"component":{}}],["random",{"_index":755,"title":{},"name":{},"text":{"8":{},"48":{},"54":{},"55":{},"84":{},"146":{},"157":{},"158":{},"173":{},"178":{}},"component":{}}],["random/device1.machinea.sensor1:str",{"_index":3943,"title":{},"name":{},"text":{"84":{},"146":{}},"component":{}}],["random/device1.machinea.sensor1:uint",{"_index":3942,"title":{},"name":{},"text":{"84":{},"146":{}},"component":{}}],["random/foo:int",{"_index":3940,"title":{},"name":{},"text":{"84":{},"146":{}},"component":{}}],["random/foo:integ",{"_index":2737,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["random/foo:udint",{"_index":3941,"title":{},"name":{},"text":{"84":{},"146":{}},"component":{}}],["random/temporary:integ",{"_index":2948,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["random_foo_integ",{"_index":2752,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["rang",{"_index":2525,"title":{},"name":{},"text":{"46":{},"50":{},"62":{},"78":{},"119":{},"122":{},"125":{},"141":{}},"component":{}}],["rat",{"_index":2251,"title":{"37-1":{},"198-1":{}},"name":{},"text":{"37":{},"198":{}},"component":{}}],["rat.log",{"_index":2263,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["rate",{"_index":2858,"title":{},"name":{},"text":{"55":{},"71":{},"77":{},"134":{},"140":{},"157":{}},"component":{}}],["raw",{"_index":1808,"title":{"96":{},"167":{},"30-4":{},"31-4":{},"32-4":{},"75-4":{},"81-2":{},"138-4":{},"143-2":{}},"name":{"96":{},"167":{}},"text":{"26":{},"32":{},"39":{},"40":{},"41":{},"61":{},"75":{},"81":{},"94":{},"96":{},"98":{},"103":{},"115":{},"123":{},"138":{},"143":{},"165":{},"167":{},"170":{},"187":{},"199":{},"204":{}},"component":{}}],["raw.protocol",{"_index":3208,"title":{},"name":{},"text":{"75":{},"81":{},"138":{},"143":{}},"component":{}}],["raw.resolv",{"_index":3206,"title":{},"name":{},"text":{"75":{},"81":{},"138":{},"143":{}},"component":{}}],["raw.support",{"_index":3207,"title":{},"name":{},"text":{"75":{},"81":{},"138":{},"143":{}},"component":{}}],["rc",{"_index":2165,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["rc1",{"_index":2115,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["rdbm",{"_index":681,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["re",{"_index":1293,"title":{},"name":{},"text":{"15":{},"21":{},"27":{},"31":{},"34":{},"36":{},"88":{},"90":{},"106":{},"150":{},"173":{},"182":{},"188":{},"195":{},"197":{}},"component":{}}],["re10",{"_index":829,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["re20",{"_index":837,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["re30",{"_index":842,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["re40",{"_index":848,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["re50",{"_index":853,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["reach",{"_index":2996,"title":{},"name":{},"text":{"63":{},"75":{},"80":{},"86":{},"95":{},"126":{},"138":{},"144":{},"147":{},"166":{}},"component":{}}],["reaction",{"_index":1201,"title":{},"name":{},"text":{"14":{},"111":{}},"component":{}}],["reactor",{"_index":687,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["read",{"_index":223,"title":{"46-4":{},"47-2":{},"48-2":{},"50-5":{},"119-4":{},"120-2":{},"122-5":{}},"name":{},"text":{"3":{},"7":{},"13":{},"15":{},"21":{},"37":{},"39":{},"41":{},"46":{},"47":{},"48":{},"50":{},"52":{},"55":{},"62":{},"66":{},"70":{},"71":{},"74":{},"75":{},"77":{},"78":{},"80":{},"82":{},"83":{},"84":{},"85":{},"90":{},"91":{},"92":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"112":{},"115":{},"119":{},"120":{},"122":{},"125":{},"129":{},"133":{},"134":{},"137":{},"138":{},"140":{},"141":{},"144":{},"145":{},"146":{},"151":{},"152":{},"153":{},"157":{},"173":{},"177":{},"182":{},"198":{},"199":{},"202":{},"203":{},"204":{},"205":{},"206":{}},"component":{}}],["read'read",{"_index":4362,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["read'writ",{"_index":4364,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["read(str",{"_index":4090,"title":{},"name":{},"text":{"92":{},"153":{}},"component":{}}],["read({read",{"_index":1570,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["read/writ",{"_index":3247,"title":{"83-15":{},"145-15":{}},"name":{},"text":{"77":{},"82":{},"83":{},"140":{},"145":{}},"component":{}}],["read/write/subscrib",{"_index":3332,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["readabl",{"_index":832,"title":{},"name":{},"text":{"9":{},"39":{},"43":{},"50":{},"84":{},"103":{},"122":{},"146":{},"179":{},"199":{}},"component":{}}],["readbuff",{"_index":1459,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["readi",{"_index":732,"title":{},"name":{},"text":{"8":{},"16":{},"26":{},"34":{},"36":{},"43":{},"46":{},"47":{},"48":{},"50":{},"82":{},"83":{},"91":{},"107":{},"119":{},"120":{},"122":{},"145":{},"152":{},"173":{},"178":{},"187":{},"195":{},"197":{}},"component":{}}],["reading/writ",{"_index":1678,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["reading/writing/brows",{"_index":3951,"title":{},"name":{},"text":{"85":{}},"component":{}}],["readm",{"_index":2116,"title":{},"name":{},"text":{"34":{},"36":{},"37":{},"195":{},"197":{},"198":{}},"component":{}}],["readme.md",{"_index":2266,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["readrequest",{"_index":2465,"title":{},"name":{},"text":{"46":{},"47":{},"50":{},"83":{},"119":{},"120":{},"122":{},"145":{}},"component":{}}],["readrequest.addtagaddress(\"myszl",{"_index":3485,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["readrequest.build",{"_index":3489,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["readrequest.execut",{"_index":2477,"title":{},"name":{},"text":{"46":{},"47":{},"50":{},"119":{},"120":{},"122":{}},"component":{}}],["readrequest.execute().get",{"_index":2707,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["readrequest.execute().get(5000",{"_index":2574,"title":{},"name":{},"text":{"47":{},"120":{}},"component":{}}],["readrequestbuild",{"_index":2638,"title":{},"name":{},"text":{"48":{},"92":{},"153":{}},"component":{}}],["readrequestresult",{"_index":2478,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["readrequestresult.err",{"_index":2479,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["readrequestresult.err.error",{"_index":2480,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["readrequestresult.response.getvalue(\"field1",{"_index":2486,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["readrequestresult.response.getvalue(\"field2",{"_index":2488,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["readrespons",{"_index":2572,"title":{},"name":{},"text":{"47":{},"48":{},"50":{},"120":{},"122":{}},"component":{}}],["readresponsechanel",{"_index":2476,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["real",{"_index":1110,"title":{},"name":{},"text":{"12":{},"15":{},"30":{},"36":{},"41":{},"65":{},"66":{},"70":{},"72":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"103":{},"106":{},"110":{},"115":{},"128":{},"129":{},"133":{},"135":{},"139":{},"140":{},"141":{},"143":{},"145":{},"146":{},"147":{},"197":{},"204":{}},"component":{}}],["real32",{"_index":3100,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["real64",{"_index":3101,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["realiz",{"_index":4119,"title":{},"name":{},"text":{"93":{},"101":{},"163":{},"202":{}},"component":{}}],["realizar",{"_index":3596,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["realli",{"_index":665,"title":{},"name":{},"text":{"8":{},"9":{},"10":{},"31":{},"41":{},"46":{},"92":{},"103":{},"115":{},"119":{},"153":{},"178":{},"179":{},"180":{},"193":{}},"component":{}}],["reason",{"_index":1623,"title":{},"name":{},"text":{"17":{},"21":{},"34":{},"36":{},"37":{},"83":{},"90":{},"93":{},"103":{},"113":{},"145":{},"151":{},"163":{},"182":{},"195":{},"197":{},"198":{},"204":{}},"component":{}}],["reboot",{"_index":4458,"title":{},"name":{},"text":{"193":{}},"component":{}}],["rebuild",{"_index":2333,"title":{},"name":{},"text":{"40":{}},"component":{}}],["receiv",{"_index":497,"title":{},"name":{},"text":{"5":{},"9":{},"15":{},"34":{},"36":{},"41":{},"55":{},"59":{},"62":{},"65":{},"66":{},"72":{},"78":{},"82":{},"83":{},"90":{},"104":{},"106":{},"125":{},"128":{},"129":{},"135":{},"141":{},"145":{},"157":{},"162":{},"174":{},"179":{},"195":{},"197":{},"206":{}},"component":{}}],["receive_pdo_1:nodeid:type[arrays",{"_index":3062,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["receive_pdo_2:nodeid:type[arrays",{"_index":3064,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["receive_pdo_3:nodeid:type[arrays",{"_index":3066,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["receive_pdo_4:nodeid:type[arrays",{"_index":3068,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["receive_timestamp",{"_index":2377,"title":{},"name":{},"text":{"41":{}},"component":{}}],["receivebuffers",{"_index":4426,"title":{},"name":{},"text":{"141":{}},"component":{}}],["receivetim",{"_index":3395,"title":{},"name":{},"text":{"78":{}},"component":{}}],["recent",{"_index":1023,"title":{},"name":{},"text":{"10":{},"21":{},"32":{},"87":{},"148":{},"180":{}},"component":{}}],["recept",{"_index":3793,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["reciev",{"_index":2843,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["recipi",{"_index":2248,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["recogn",{"_index":901,"title":{},"name":{},"text":{"9":{},"83":{},"102":{},"145":{},"179":{},"203":{}},"component":{}}],["recognis",{"_index":890,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["recommend",{"_index":2075,"title":{},"name":{},"text":{"34":{},"36":{},"66":{},"83":{},"93":{},"129":{},"145":{},"163":{},"195":{},"197":{}},"component":{}}],["record",{"_index":183,"title":{"83-3":{},"145-3":{}},"name":{},"text":{"3":{},"12":{},"40":{},"41":{},"55":{},"66":{},"77":{},"83":{},"84":{},"86":{},"95":{},"110":{},"115":{},"129":{},"140":{},"145":{},"146":{},"147":{},"157":{},"166":{},"173":{}},"component":{}}],["record)(extend",{"_index":3275,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["records\":[{\"ausbg2\":0,\"ausbg1\":61,\"bgtyp\":130,\"index\":1,\"mifb\":\"6es7",{"_index":3891,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["recreat",{"_index":790,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["red",{"_index":2901,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["reduc",{"_index":613,"title":{},"name":{},"text":{"7":{},"17":{},"55":{},"78":{},"101":{},"113":{},"157":{},"177":{},"202":{}},"component":{}}],["reduct",{"_index":1595,"title":{"17-6":{},"113-6":{}},"name":{},"text":{"17":{},"83":{},"113":{},"145":{}},"component":{}}],["redund",{"_index":2779,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["ref",{"_index":1900,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["refactor",{"_index":1317,"title":{},"name":{},"text":{"15":{},"21":{},"87":{},"106":{},"148":{}},"component":{}}],["refer",{"_index":539,"title":{"90-6":{},"151-5":{}},"name":{},"text":{"5":{},"12":{},"21":{},"27":{},"36":{},"37":{},"40":{},"43":{},"46":{},"65":{},"70":{},"77":{},"82":{},"83":{},"87":{},"88":{},"91":{},"103":{},"110":{},"119":{},"128":{},"133":{},"140":{},"145":{},"148":{},"150":{},"152":{},"174":{},"182":{},"188":{},"193":{},"197":{},"198":{},"204":{}},"component":{}}],["referenc",{"_index":1747,"title":{},"name":{},"text":{"21":{},"34":{},"36":{},"103":{},"182":{},"195":{},"197":{},"204":{}},"component":{}}],["reflect",{"_index":2074,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["refresh",{"_index":4046,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["regard",{"_index":1282,"title":{"83-2":{},"145-2":{}},"name":{},"text":{"15":{},"21":{},"36":{},"39":{},"65":{},"93":{},"101":{},"106":{},"128":{},"163":{},"182":{},"197":{},"199":{},"202":{}},"component":{}}],["regardless",{"_index":3109,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["regist",{"_index":1408,"title":{},"name":{},"text":{"15":{},"21":{},"27":{},"39":{},"46":{},"47":{},"50":{},"77":{},"83":{},"106":{},"119":{},"120":{},"122":{},"140":{},"145":{},"182":{},"188":{},"199":{}},"component":{}}],["register(msg",{"_index":3725,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["register:1",{"_index":2705,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["register:1:r",{"_index":2469,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["register:20:uint[10",{"_index":3277,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["register:3:r",{"_index":2471,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["register:3[4",{"_index":2706,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["register:50[10",{"_index":3293,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["register:5678",{"_index":3283,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["register:5678{unit",{"_index":3288,"title":{},"name":{},"text":{"77":{}},"component":{}}],["register:9995[10",{"_index":3300,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["register:{start",{"_index":2691,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["registermod",{"_index":3723,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["registers:1",{"_index":3252,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["registersi",{"_index":3777,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["registerusr",{"_index":3784,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["registr",{"_index":3791,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["registri",{"_index":1560,"title":{},"name":{},"text":{"15":{},"92":{},"106":{},"153":{}},"component":{}}],["regular",{"_index":2500,"title":{},"name":{},"text":{"46":{},"47":{},"62":{},"78":{},"119":{},"120":{},"125":{},"141":{}},"component":{}}],["reject",{"_index":2124,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["rel",{"_index":4140,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["rel/0.13.0",{"_index":547,"title":{},"name":{},"text":{"5":{}},"component":{}}],["rel/{curr",{"_index":2197,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["rel/{major",{"_index":4438,"title":{},"name":{},"text":{"174":{}},"component":{}}],["relat",{"_index":211,"title":{},"name":{},"text":{"3":{},"9":{},"10":{},"14":{},"15":{},"29":{},"66":{},"87":{},"106":{},"111":{},"129":{},"148":{},"173":{},"179":{},"180":{},"189":{}},"component":{}}],["relationship",{"_index":2894,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["relax",{"_index":3349,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["relay",{"_index":1545,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["releas",{"_index":84,"title":{"34":{},"35":{},"36":{},"37":{},"195":{},"196":{},"197":{},"198":{},"3-7":{},"15-1":{},"15-2":{},"15-6":{},"15-7":{},"15-10":{},"15-11":{},"15-13":{},"15-17":{},"15-21":{},"15-25":{},"15-29":{},"15-33":{},"15-37":{},"15-38":{},"15-42":{},"15-46":{},"15-48":{},"21-7":{},"34-1":{},"34-3":{},"34-4":{},"34-6":{},"34-7":{},"34-9":{},"34-10":{},"34-11":{},"34-12":{},"36-2":{},"36-3":{},"36-4":{},"36-6":{},"36-7":{},"36-9":{},"36-10":{},"36-12":{},"36-13":{},"36-14":{},"36-15":{},"36-17":{},"37-2":{},"106-1":{},"106-2":{},"106-6":{},"106-7":{},"106-10":{},"106-11":{},"106-13":{},"106-17":{},"106-21":{},"106-25":{},"106-29":{},"106-33":{},"106-37":{},"106-38":{},"106-42":{},"106-46":{},"106-48":{},"173-7":{},"182-7":{},"195-1":{},"195-3":{},"195-4":{},"195-6":{},"195-7":{},"195-9":{},"195-10":{},"195-11":{},"195-12":{},"197-2":{},"197-3":{},"197-4":{},"197-6":{},"197-7":{},"197-9":{},"197-10":{},"197-12":{},"197-13":{},"197-14":{},"197-15":{},"197-17":{},"198-2":{}},"name":{"36":{},"197":{}},"text":{"3":{},"5":{},"6":{},"9":{},"15":{},"21":{},"29":{},"34":{},"36":{},"37":{},"41":{},"46":{},"48":{},"55":{},"56":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"106":{},"119":{},"141":{},"145":{},"157":{},"159":{},"173":{},"174":{},"176":{},"179":{},"182":{},"189":{},"195":{},"197":{},"198":{}},"component":{}}],["release.properti",{"_index":2095,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["release.zip",{"_index":2110,"title":{},"name":{},"text":{"34":{},"36":{},"37":{},"195":{},"197":{},"198":{}},"component":{}}],["release.zip.asc",{"_index":2111,"title":{},"name":{},"text":{"34":{},"36":{},"37":{},"195":{},"197":{},"198":{}},"component":{}}],["release.zip.sha512",{"_index":2112,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["release/{cod",{"_index":2057,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["release:branch",{"_index":2061,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["release:perform",{"_index":2094,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["release:prepar",{"_index":2080,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["release:rollback",{"_index":2092,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["release_not",{"_index":2068,"title":{},"name":{},"text":{"34":{},"36":{},"37":{},"195":{},"197":{},"198":{}},"component":{}}],["releases/cod",{"_index":2067,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["relese.zip",{"_index":2213,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["reli",{"_index":293,"title":{},"name":{},"text":{"3":{},"21":{},"65":{},"78":{},"128":{},"141":{},"182":{}},"component":{}}],["reliabl",{"_index":796,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["remain",{"_index":3186,"title":{},"name":{},"text":{"72":{},"78":{},"98":{},"135":{},"141":{},"170":{}},"component":{}}],["rememb",{"_index":2415,"title":{},"name":{},"text":{"43":{}},"component":{}}],["remot",{"_index":70,"title":{},"name":{},"text":{"2":{},"5":{},"8":{},"34":{},"36":{},"46":{},"55":{},"56":{},"59":{},"78":{},"80":{},"82":{},"83":{},"119":{},"141":{},"144":{},"145":{},"157":{},"159":{},"162":{},"172":{},"174":{},"178":{},"195":{},"197":{}},"component":{}}],["remov",{"_index":601,"title":{},"name":{},"text":{"6":{},"15":{},"34":{},"36":{},"88":{},"106":{},"150":{},"176":{},"195":{},"197":{}},"component":{}}],["renam",{"_index":1263,"title":{},"name":{},"text":{"15":{},"77":{},"106":{}},"component":{}}],["render",{"_index":1664,"title":{},"name":{},"text":{"17":{},"36":{},"113":{},"197":{}},"component":{}}],["repeat",{"_index":854,"title":{},"name":{},"text":{"9":{},"90":{},"101":{},"179":{},"202":{}},"component":{}}],["repeatedli",{"_index":3982,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["replac",{"_index":1305,"title":{},"name":{},"text":{"15":{},"17":{},"59":{},"106":{},"113":{},"151":{},"162":{}},"component":{}}],["replacethiswiththerealgitcommittag",{"_index":2121,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["replay",{"_index":2344,"title":{"86":{},"95":{},"147":{},"166":{},"86-2":{},"147-2":{}},"name":{"86":{},"95":{},"147":{},"166":{}},"text":{"41":{},"63":{},"75":{},"86":{},"94":{},"95":{},"115":{},"126":{},"138":{},"147":{},"165":{},"166":{}},"component":{}}],["repli",{"_index":2139,"title":{},"name":{},"text":{"34":{},"36":{},"66":{},"129":{},"195":{},"197":{}},"component":{}}],["replic",{"_index":2801,"title":{},"name":{},"text":{"55":{},"86":{},"147":{},"157":{}},"component":{}}],["repo",{"_index":483,"title":{},"name":{},"text":{"5":{},"21":{},"27":{},"34":{},"36":{},"37":{},"173":{},"174":{},"182":{},"188":{},"193":{},"195":{},"197":{},"198":{}},"component":{}}],["report",{"_index":441,"title":{"19":{},"108":{},"5-5":{},"174-5":{}},"name":{},"text":{"5":{},"6":{},"8":{},"9":{},"15":{},"20":{},"30":{},"31":{},"32":{},"39":{},"83":{},"106":{},"114":{},"145":{},"174":{},"176":{},"178":{},"179":{},"191":{},"192":{},"199":{}},"component":{}}],["repositori",{"_index":247,"title":{},"name":{},"text":{"3":{},"5":{},"9":{},"21":{},"34":{},"36":{},"48":{},"49":{},"55":{},"124":{},"157":{},"173":{},"174":{},"179":{},"182":{},"195":{},"197":{}},"component":{}}],["repres",{"_index":963,"title":{},"name":{},"text":{"9":{},"77":{},"82":{},"83":{},"103":{},"140":{},"145":{},"179":{}},"component":{}}],["represent",{"_index":2296,"title":{},"name":{},"text":{"39":{},"65":{},"82":{},"83":{},"98":{},"103":{},"128":{},"145":{},"170":{},"199":{}},"component":{}}],["reproduc",{"_index":784,"title":{},"name":{},"text":{"9":{},"15":{},"106":{},"179":{}},"component":{}}],["request",{"_index":438,"title":{"5-3":{},"26-1":{},"83-23":{},"145-23":{},"174-3":{},"187-1":{}},"name":{},"text":{"5":{},"12":{},"14":{},"15":{},"17":{},"22":{},"26":{},"39":{},"46":{},"47":{},"48":{},"50":{},"55":{},"56":{},"62":{},"66":{},"70":{},"72":{},"73":{},"76":{},"77":{},"78":{},"80":{},"82":{},"83":{},"85":{},"87":{},"88":{},"90":{},"92":{},"93":{},"102":{},"105":{},"106":{},"110":{},"111":{},"113":{},"119":{},"120":{},"122":{},"125":{},"129":{},"135":{},"136":{},"140":{},"141":{},"144":{},"145":{},"148":{},"150":{},"153":{},"157":{},"159":{},"163":{},"173":{},"174":{},"183":{},"187":{},"199":{},"203":{},"205":{}},"component":{}}],["request/respons",{"_index":3031,"title":{},"name":{},"text":{"66":{},"83":{},"129":{},"145":{}},"component":{}}],["request?falsear",{"_index":4385,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["requestapi",{"_index":4376,"title":{},"name":{},"text":{"104":{},"105":{},"205":{},"206":{}},"component":{}}],["requestif",{"_index":4407,"title":{},"name":{},"text":{"105":{},"205":{}},"component":{}}],["requestrec",{"_index":4391,"title":{},"name":{},"text":{"105":{},"205":{}},"component":{}}],["requestsend",{"_index":4395,"title":{},"name":{},"text":{"105":{},"205":{}},"component":{}}],["requestus",{"_index":4378,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["requir",{"_index":7,"title":{"2-3":{},"3-1":{},"26-4":{},"172-3":{},"173-1":{},"187-4":{}},"name":{},"text":{"2":{},"3":{},"6":{},"7":{},"9":{},"14":{},"15":{},"17":{},"21":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"39":{},"41":{},"46":{},"47":{},"50":{},"55":{},"56":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"87":{},"88":{},"90":{},"91":{},"93":{},"101":{},"103":{},"106":{},"111":{},"113":{},"115":{},"119":{},"120":{},"122":{},"123":{},"125":{},"126":{},"127":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"148":{},"150":{},"152":{},"157":{},"159":{},"163":{},"172":{},"173":{},"176":{},"177":{},"179":{},"182":{},"189":{},"191":{},"195":{},"197":{},"199":{},"202":{},"204":{}},"component":{}}],["research",{"_index":1077,"title":{},"name":{},"text":{"10":{},"12":{},"110":{},"180":{}},"component":{}}],["reserv",{"_index":3767,"title":{"103-15":{},"204-13":{}},"name":{},"text":{"83":{},"103":{},"145":{},"204":{}},"component":{}}],["resistor",{"_index":3164,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["resolut",{"_index":2155,"title":{},"name":{},"text":{"34":{},"36":{},"104":{},"195":{},"197":{},"206":{}},"component":{}}],["resolution'read",{"_index":4363,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["resolution'subscrib",{"_index":4371,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["resolution'writ",{"_index":4368,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["resolv",{"_index":561,"title":{},"name":{},"text":{"6":{},"55":{},"62":{},"75":{},"81":{},"125":{},"138":{},"143":{},"157":{},"176":{}},"component":{}}],["resolved?falsetru",{"_index":4388,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["resolved?falsetruei",{"_index":4387,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["resolved?unresolvedresolvedtruei",{"_index":4386,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["resourc",{"_index":1221,"title":{"41-3":{},"71-3":{},"75-5":{},"76-3":{},"77-11":{},"80-4":{},"82-7":{},"82-12":{},"83-10":{},"83-25":{},"84-2":{},"85-3":{},"115-3":{},"134-3":{},"138-5":{},"139-3":{},"140-11":{},"144-4":{},"145-10":{},"145-25":{},"146-2":{}},"name":{},"text":{"14":{},"17":{},"41":{},"47":{},"48":{},"50":{},"56":{},"87":{},"91":{},"111":{},"113":{},"115":{},"120":{},"122":{},"148":{},"152":{},"159":{}},"component":{}}],["respect",{"_index":900,"title":{},"name":{},"text":{"9":{},"90":{},"179":{}},"component":{}}],["respond",{"_index":879,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["respons",{"_index":553,"title":{"6-2":{},"176-2":{}},"name":{},"text":{"6":{},"9":{},"15":{},"22":{},"26":{},"31":{},"39":{},"46":{},"47":{},"48":{},"50":{},"65":{},"66":{},"78":{},"82":{},"83":{},"88":{},"92":{},"93":{},"102":{},"106":{},"119":{},"120":{},"122":{},"128":{},"129":{},"145":{},"150":{},"153":{},"163":{},"176":{},"179":{},"183":{},"187":{},"199":{},"203":{}},"component":{}}],["response.getfieldnam",{"_index":2605,"title":{},"name":{},"text":{"47":{},"50":{},"120":{},"122":{}},"component":{}}],["response.getnumberofvalues(fieldnam",{"_index":4422,"title":{},"name":{},"text":{"122":{}},"component":{}}],["response.getnumberofvalues(tagnam",{"_index":2581,"title":{},"name":{},"text":{"47":{},"50":{},"120":{},"122":{}},"component":{}}],["response.getobject(fieldnam",{"_index":2710,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["response.getobject(tagnam",{"_index":2585,"title":{},"name":{},"text":{"47":{},"50":{},"120":{},"122":{}},"component":{}}],["response.getresponsecode(fieldname).nam",{"_index":2731,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["response.getresponsecode(tagname).nam",{"_index":2591,"title":{},"name":{},"text":{"47":{},"50":{},"120":{},"122":{}},"component":{}}],["response.getsubscriptionhandle(subscriptionnam",{"_index":2608,"title":{},"name":{},"text":{"47":{},"120":{}},"component":{}}],["response.gettagnam",{"_index":2577,"title":{},"name":{},"text":{"47":{},"50":{},"120":{},"122":{}},"component":{}}],["response.response_cod",{"_index":2635,"title":{},"name":{},"text":{"48":{}},"component":{}}],["response.tag_nam",{"_index":2646,"title":{},"name":{},"text":{"48":{}},"component":{}}],["response.tags[tag_name].nam",{"_index":2654,"title":{},"name":{},"text":{"48":{}},"component":{}}],["response.tags[tag_name].response_cod",{"_index":2647,"title":{},"name":{},"text":{"48":{}},"component":{}}],["response.tags[tag_name].valu",{"_index":2650,"title":{},"name":{},"text":{"48":{}},"component":{}}],["response.tags[tag_name].value.get_list",{"_index":2651,"title":{},"name":{},"text":{"48":{}},"component":{}}],["response_cod",{"_index":2657,"title":{},"name":{},"text":{"48":{}},"component":{}}],["response_pend",{"_index":2663,"title":{},"name":{},"text":{"48":{},"50":{},"122":{}},"component":{}}],["responseapi",{"_index":4406,"title":{},"name":{},"text":{"105":{},"205":{}},"component":{}}],["responsereadwithconnectionmanagerreadwithoutconnectionmanagerreadwithoutmessageroutersend",{"_index":4398,"title":{},"name":{},"text":{"105":{},"205":{}},"component":{}}],["responserec",{"_index":4397,"title":{},"name":{},"text":{"105":{},"205":{}},"component":{}}],["responsesend",{"_index":4392,"title":{},"name":{},"text":{"105":{},"205":{}},"component":{}}],["responsewritewithconnectionmanagerwritewithoutconnectionmanagerwritewithoutmessageroutersend",{"_index":4403,"title":{},"name":{},"text":{"105":{},"205":{}},"component":{}}],["rest",{"_index":1679,"title":{},"name":{},"text":{"21":{},"34":{},"36":{},"55":{},"86":{},"101":{},"147":{},"157":{},"182":{},"195":{},"197":{},"202":{}},"component":{}}],["restart",{"_index":2047,"title":{},"name":{},"text":{"32":{},"82":{},"83":{},"145":{},"193":{}},"component":{}}],["restor",{"_index":3474,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["restrict",{"_index":810,"title":{},"name":{},"text":{"9":{},"17":{},"21":{},"113":{},"179":{},"182":{}},"component":{}}],["result",{"_index":58,"title":{},"name":{},"text":{"2":{},"8":{},"15":{},"17":{},"21":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"39":{},"41":{},"50":{},"55":{},"78":{},"83":{},"88":{},"90":{},"91":{},"103":{},"106":{},"113":{},"122":{},"145":{},"150":{},"152":{},"157":{},"172":{},"173":{},"178":{},"182":{},"195":{},"197":{},"198":{},"199":{},"204":{}},"component":{}}],["resultapi",{"_index":4375,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["resulthandl",{"_index":4077,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["resultread",{"_index":4360,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["resultunsubscrib",{"_index":4373,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["resultwrit",{"_index":4367,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["retir",{"_index":2240,"title":{"53":{},"156":{}},"name":{},"text":{"36":{},"197":{}},"component":{}}],["retri",{"_index":2859,"title":{},"name":{},"text":{"55":{},"83":{},"145":{},"157":{}},"component":{}}],["retriabl",{"_index":2860,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["retriev",{"_index":2354,"title":{},"name":{},"text":{"41":{},"78":{},"87":{},"91":{},"115":{},"148":{},"152":{}},"component":{}}],["retrofit",{"_index":1126,"title":{},"name":{},"text":{"12":{},"16":{},"107":{},"110":{}},"component":{}}],["return",{"_index":1314,"title":{},"name":{},"text":{"15":{},"17":{},"21":{},"40":{},"46":{},"47":{},"48":{},"50":{},"62":{},"65":{},"66":{},"78":{},"81":{},"83":{},"84":{},"87":{},"88":{},"90":{},"92":{},"101":{},"103":{},"104":{},"106":{},"113":{},"119":{},"120":{},"122":{},"125":{},"128":{},"129":{},"141":{},"143":{},"145":{},"146":{},"148":{},"150":{},"151":{},"153":{},"182":{},"202":{},"204":{},"206":{}},"component":{}}],["rev",{"_index":3651,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["revers",{"_index":4286,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["review",{"_index":499,"title":{},"name":{},"text":{"5":{},"9":{},"36":{},"174":{},"179":{},"197":{}},"component":{}}],["revis",{"_index":2096,"title":{"83-3":{},"145-3":{}},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["revolution",{"_index":398,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["revolv",{"_index":3622,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["rewind",{"_index":4312,"title":{},"name":{},"text":{"103":{}},"component":{}}],["rewound",{"_index":4297,"title":{},"name":{},"text":{"103":{}},"component":{}}],["rewritten",{"_index":3446,"title":{},"name":{},"text":{"82":{}},"component":{}}],["rheinjug",{"_index":372,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["rhine",{"_index":360,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["right",{"_index":573,"title":{},"name":{},"text":{"6":{},"7":{},"9":{},"17":{},"21":{},"47":{},"48":{},"50":{},"56":{},"59":{},"65":{},"113":{},"120":{},"122":{},"128":{},"159":{},"162":{},"174":{},"176":{},"177":{},"179":{}},"component":{}}],["risk",{"_index":1632,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["rm",{"_index":2123,"title":{},"name":{},"text":{"34":{},"36":{},"37":{},"195":{},"197":{},"198":{}},"component":{}}],["road",{"_index":1918,"title":{},"name":{},"text":{"29":{},"189":{}},"component":{}}],["roadmap",{"_index":2553,"title":{},"name":{},"text":{"47":{},"48":{},"120":{}},"component":{}}],["roadshow",{"_index":411,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["role",{"_index":552,"title":{"6-2":{},"176-2":{}},"name":{},"text":{"6":{},"10":{},"78":{},"141":{},"176":{},"180":{}},"component":{}}],["room",{"_index":3216,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["root",{"_index":690,"title":{"26-3":{},"187-3":{}},"name":{},"text":{"8":{},"22":{},"26":{},"30":{},"34":{},"36":{},"39":{},"54":{},"59":{},"65":{},"83":{},"103":{},"128":{},"145":{},"158":{},"162":{},"178":{},"183":{},"187":{},"191":{},"195":{},"197":{},"199":{},"204":{}},"component":{}}],["root.m1.d1",{"_index":2751,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["root.mi.d1",{"_index":2754,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["root.mi.d1.foo",{"_index":2738,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["root.mi.d1.random_foo_integ",{"_index":2739,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["roster",{"_index":582,"title":{},"name":{},"text":{"6":{},"176":{}},"component":{}}],["round",{"_index":1388,"title":{},"name":{},"text":{"15":{},"39":{},"106":{},"199":{}},"component":{}}],["rout",{"_index":1361,"title":{},"name":{},"text":{"15":{},"52":{},"70":{},"76":{},"106":{},"133":{},"139":{}},"component":{}}],["routes'rec",{"_index":4343,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["routes'send",{"_index":4341,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["routin",{"_index":3788,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["row",{"_index":2409,"title":{},"name":{},"text":{"43":{},"47":{},"48":{},"50":{},"120":{},"122":{}},"component":{}}],["rr",{"_index":3488,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["rr.execute().get",{"_index":3492,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["rs",{"_index":673,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["rs232",{"_index":2345,"title":{},"name":{},"text":{"41":{},"115":{}},"component":{}}],["rs458",{"_index":62,"title":{},"name":{},"text":{"2":{},"172":{}},"component":{}}],["rs475",{"_index":42,"title":{},"name":{},"text":{"2":{},"172":{}},"component":{}}],["rs485",{"_index":49,"title":{},"name":{},"text":{"2":{},"41":{},"77":{},"115":{},"140":{},"172":{}},"component":{}}],["rsa",{"_index":1818,"title":{},"name":{},"text":{"26":{},"43":{},"187":{}},"component":{}}],["rtu",{"_index":64,"title":{"77-4":{},"140-4":{}},"name":{},"text":{"2":{},"15":{},"77":{},"106":{},"140":{},"172":{}},"component":{}}],["rule",{"_index":632,"title":{"8-1":{},"178-1":{}},"name":{},"text":{"8":{},"9":{},"86":{},"147":{},"173":{},"178":{},"179":{}},"component":{}}],["run",{"_index":234,"title":{"59-3":{},"91-5":{},"152-5":{},"162-3":{}},"name":{},"text":{"3":{},"8":{},"15":{},"17":{},"21":{},"22":{},"26":{},"29":{},"30":{},"31":{},"34":{},"36":{},"37":{},"39":{},"40":{},"46":{},"48":{},"50":{},"54":{},"55":{},"56":{},"59":{},"62":{},"83":{},"86":{},"90":{},"91":{},"106":{},"113":{},"119":{},"122":{},"125":{},"145":{},"147":{},"152":{},"157":{},"158":{},"159":{},"162":{},"173":{},"178":{},"182":{},"183":{},"189":{},"193":{},"195":{},"197":{},"198":{},"199":{}},"component":{}}],["run/stop",{"_index":3640,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["runner",{"_index":2284,"title":{"39-3":{},"199-3":{}},"name":{},"text":{"39":{},"199":{}},"component":{}}],["running\":false,\"conveyorleft\":tru",{"_index":2844,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["runtim",{"_index":1113,"title":{},"name":{},"text":{"12":{},"15":{},"21":{},"43":{},"47":{},"50":{},"82":{},"83":{},"106":{},"110":{},"120":{},"122":{},"145":{},"182":{}},"component":{}}],["runtimeexcept",{"_index":2716,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["rx",{"_index":3171,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["rühl",{"_index":1090,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["s",{"_index":2442,"title":{},"name":{},"text":{"46":{},"59":{},"82":{},"83":{},"85":{},"119":{},"145":{},"162":{}},"component":{}}],["s,i,b",{"_index":3382,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["s.r.l",{"_index":1137,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["s/%sw",{"_index":3952,"title":{},"name":{},"text":{"85":{}},"component":{}}],["s120",{"_index":3669,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["s20",{"_index":3964,"title":{},"name":{},"text":{"85":{}},"component":{}}],["s5",{"_index":994,"title":{},"name":{},"text":{"10":{},"82":{},"83":{},"145":{},"180":{}},"component":{}}],["s5time",{"_index":3532,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["s7",{"_index":315,"title":{"82":{},"83":{},"145":{},"83-15":{},"83-16":{},"145-15":{},"145-16":{}},"name":{"82":{},"83":{},"145":{}},"text":{"3":{},"10":{},"13":{},"15":{},"21":{},"27":{},"36":{},"47":{},"56":{},"57":{},"74":{},"78":{},"82":{},"83":{},"87":{},"88":{},"90":{},"103":{},"106":{},"112":{},"120":{},"137":{},"145":{},"148":{},"150":{},"151":{},"159":{},"161":{},"173":{},"180":{},"182":{},"188":{},"197":{},"204":{}},"component":{}}],["s7://10.10.64.20",{"_index":2549,"title":{},"name":{},"text":{"47":{},"120":{}},"component":{}}],["s7://192.168.23.30",{"_index":2887,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["s7_1200",{"_index":3468,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["s7_1500",{"_index":3527,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["s7_300",{"_index":3466,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["s7_400",{"_index":3467,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["s7alarmev",{"_index":3614,"title":{"83-20":{},"145-20":{}},"name":{},"text":{},"component":{}}],["s7app",{"_index":3664,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["s7diagnosticeventid",{"_index":3781,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["s7diagnosticeventid(10",{"_index":3786,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["s7messag",{"_index":4265,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7messagerequest",{"_index":4271,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7messagerespons",{"_index":4272,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7messageresponsedata",{"_index":4275,"title":{},"name":{},"text":{"103":{}},"component":{}}],["s7messageuserdata",{"_index":4277,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7modeev",{"_index":3609,"title":{"83-18":{},"145-18":{}},"name":{},"text":{"83":{},"145":{}},"component":{}}],["s7paramet",{"_index":3705,"title":{},"name":{},"text":{"83":{},"103":{},"145":{},"204":{}},"component":{}}],["s7parameter('messagetyp",{"_index":4488,"title":{},"name":{},"text":{"204":{}},"component":{}}],["s7parameterreadvarresponse).numitem",{"_index":4324,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7parameterwritevarrequest).item",{"_index":4328,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7parameterwritevarresponse).numitem",{"_index":4332,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7payload",{"_index":4278,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7payload('messagetyp",{"_index":4489,"title":{},"name":{},"text":{"204":{}},"component":{}}],["s7payload(uint",{"_index":4313,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7payloadreadvarrequest",{"_index":4318,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7payloadreadvarrespons",{"_index":4320,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7payloadsetupcommun",{"_index":4316,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7payloaduserdata",{"_index":4334,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7payloadwritevarrequest",{"_index":4326,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7payloadwritevarrespons",{"_index":4330,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7sysev",{"_index":3611,"title":{"83-19":{},"145-19":{}},"name":{},"text":{"83":{},"145":{}},"component":{}}],["s7userev",{"_index":3612,"title":{"83-19":{},"145-19":{}},"name":{},"text":{"83":{},"145":{}},"component":{}}],["s7varpayloaddataitem",{"_index":4322,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7varpayloadstatusitem",{"_index":4331,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s\\n",{"_index":2532,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["safe",{"_index":1827,"title":{},"name":{},"text":{"26":{},"56":{},"83":{},"145":{},"159":{},"187":{}},"component":{}}],["sake",{"_index":1823,"title":{},"name":{},"text":{"26":{},"91":{},"152":{},"187":{}},"component":{}}],["same",{"_index":61,"title":{},"name":{},"text":{"2":{},"3":{},"5":{},"8":{},"9":{},"15":{},"17":{},"21":{},"34":{},"36":{},"37":{},"39":{},"41":{},"43":{},"46":{},"47":{},"48":{},"50":{},"55":{},"66":{},"72":{},"75":{},"78":{},"81":{},"82":{},"83":{},"84":{},"87":{},"90":{},"91":{},"92":{},"101":{},"103":{},"106":{},"113":{},"115":{},"119":{},"120":{},"122":{},"129":{},"135":{},"138":{},"141":{},"143":{},"145":{},"146":{},"148":{},"152":{},"153":{},"157":{},"172":{},"173":{},"174":{},"178":{},"179":{},"182":{},"195":{},"197":{},"198":{},"199":{},"202":{}},"component":{}}],["sampl",{"_index":2374,"title":{},"name":{},"text":{"41":{},"55":{},"83":{},"145":{},"157":{}},"component":{}}],["sandbox",{"_index":1510,"title":{},"name":{},"text":{"15":{},"106":{},"173":{},"197":{},"198":{}},"component":{}}],["sandbox,en",{"_index":4478,"title":{},"name":{},"text":{"197":{}},"component":{}}],["sapi",{"_index":3625,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sat",{"_index":4257,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["satisfi",{"_index":1695,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["save",{"_index":1646,"title":{},"name":{},"text":{"17":{},"43":{},"56":{},"103":{},"113":{},"159":{},"204":{}},"component":{}}],["sb",{"_index":3878,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["scada",{"_index":1194,"title":{},"name":{},"text":{"13":{},"83":{},"112":{},"145":{}},"component":{}}],["scale",{"_index":1621,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["scan",{"_index":653,"title":{"83-17":{},"145-17":{}},"name":{},"text":{"8":{},"37":{},"83":{},"145":{},"178":{},"198":{}},"component":{}}],["scanner",{"_index":643,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["scenario",{"_index":1127,"title":{},"name":{},"text":{"12":{},"72":{},"83":{},"88":{},"110":{},"135":{},"145":{},"150":{}},"component":{}}],["schedul",{"_index":2179,"title":{},"name":{},"text":{"36":{},"56":{},"83":{},"91":{},"145":{},"152":{},"159":{},"197":{}},"component":{}}],["scheduled,1000",{"_index":4057,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["scheduled,10000",{"_index":4082,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["schema",{"_index":1717,"title":{"55-12":{},"157-12":{}},"name":{},"text":{"21":{},"55":{},"82":{},"83":{},"145":{},"157":{}},"component":{}}],["scheme",{"_index":3215,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["schneider",{"_index":3946,"title":{"85":{}},"name":{},"text":{"85":{}},"component":{}}],["scienc",{"_index":1150,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["scm",{"_index":2084,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["scope",{"_index":462,"title":{},"name":{},"text":{"5":{},"21":{},"70":{},"78":{},"133":{},"174":{},"182":{}},"component":{}}],["scout",{"_index":3599,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["scrape",{"_index":1563,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["scraper",{"_index":1434,"title":{"91":{},"152":{},"91-1":{},"91-5":{},"152-1":{},"152-5":{}},"name":{"91":{},"152":{}},"text":{"15":{},"16":{},"55":{},"91":{},"92":{},"106":{},"107":{},"152":{},"153":{},"157":{}},"component":{}}],["scraper.start",{"_index":4071,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["scraperconfig",{"_index":4065,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["scraperconfigur",{"_index":4083,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["scraperconfiguration.fromfile(\"{path",{"_index":4085,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["scraperconfigurationtriggeredimpl",{"_index":4064,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["scraperconfigurationtriggeredimpl.class",{"_index":4086,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["scraperconfigurationtriggeredimplbuild",{"_index":4049,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["scraperexcept",{"_index":4073,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["screen",{"_index":2396,"title":{},"name":{},"text":{"43":{}},"component":{}}],["script",{"_index":134,"title":{},"name":{},"text":{"3":{},"37":{},"56":{},"159":{},"173":{},"198":{}},"component":{}}],["sdk",{"_index":1964,"title":{},"name":{},"text":{"30":{},"31":{},"191":{},"192":{},"193":{}},"component":{}}],["sdo",{"_index":3029,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["sdo:nodeid:index/subindex:type[arrays",{"_index":3055,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["se",{"_index":3600,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["search",{"_index":624,"title":{},"name":{},"text":{"7":{},"34":{},"36":{},"37":{},"56":{},"159":{},"177":{},"195":{},"197":{},"198":{}},"component":{}}],["sebastian",{"_index":1089,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["sec",{"_index":3828,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["second",{"_index":56,"title":{},"name":{},"text":{"2":{},"5":{},"15":{},"34":{},"36":{},"43":{},"50":{},"54":{},"56":{},"77":{},"78":{},"82":{},"83":{},"87":{},"90":{},"91":{},"102":{},"106":{},"122":{},"140":{},"141":{},"145":{},"148":{},"151":{},"152":{},"158":{},"159":{},"172":{},"174":{},"193":{},"195":{},"197":{},"203":{}},"component":{}}],["secondari",{"_index":3473,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["secret",{"_index":4011,"title":{"90-5":{}},"name":{},"text":{},"component":{}}],["section",{"_index":607,"title":{"7":{},"177":{}},"name":{},"text":{"9":{},"21":{},"23":{},"34":{},"36":{},"37":{},"56":{},"82":{},"83":{},"145":{},"159":{},"173":{},"179":{},"182":{},"184":{},"193":{},"195":{},"197":{},"198":{}},"component":{}}],["secur",{"_index":867,"title":{"20":{},"114":{},"17-5":{},"78-4":{},"113-5":{},"141-4":{}},"name":{"20":{},"114":{}},"text":{"9":{},"13":{},"17":{},"20":{},"43":{},"59":{},"78":{},"112":{},"113":{},"114":{},"141":{},"162":{},"179":{}},"component":{}}],["securitypolici",{"_index":3315,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["see",{"_index":131,"title":{},"name":{},"text":{"3":{},"9":{},"20":{},"27":{},"34":{},"36":{},"39":{},"40":{},"43":{},"46":{},"47":{},"48":{},"50":{},"55":{},"56":{},"65":{},"71":{},"82":{},"83":{},"86":{},"87":{},"92":{},"101":{},"103":{},"114":{},"119":{},"120":{},"122":{},"128":{},"134":{},"145":{},"147":{},"148":{},"151":{},"153":{},"157":{},"159":{},"173":{},"179":{},"188":{},"195":{},"197":{},"199":{},"202":{},"204":{}},"component":{}}],["seed",{"_index":1843,"title":{},"name":{},"text":{"26":{}},"component":{}}],["seem",{"_index":123,"title":{},"name":{},"text":{"3":{},"15":{},"21":{},"26":{},"27":{},"30":{},"31":{},"32":{},"50":{},"66":{},"82":{},"83":{},"103":{},"106":{},"122":{},"129":{},"145":{},"173":{},"182":{},"187":{},"188":{},"191":{},"192":{},"193":{}},"component":{}}],["segment",{"_index":2361,"title":{},"name":{},"text":{"41":{},"62":{},"66":{},"70":{},"72":{},"75":{},"81":{},"115":{},"125":{},"129":{},"133":{},"135":{},"138":{},"143":{}},"component":{}}],["select",{"_index":102,"title":{},"name":{},"text":{"3":{},"21":{},"26":{},"30":{},"32":{},"34":{},"36":{},"41":{},"43":{},"50":{},"54":{},"56":{},"78":{},"81":{},"82":{},"83":{},"101":{},"103":{},"115":{},"122":{},"141":{},"143":{},"145":{},"158":{},"159":{},"173":{},"182":{},"187":{},"191":{},"193":{},"195":{},"197":{},"202":{}},"component":{}}],["self",{"_index":708,"title":{"43-1":{}},"name":{},"text":{"8":{},"9":{},"10":{},"59":{},"78":{},"162":{},"178":{},"179":{},"180":{}},"component":{}}],["semant",{"_index":1067,"title":{"72-1":{},"135-1":{}},"name":{},"text":{"10":{},"93":{},"163":{},"180":{}},"component":{}}],["semver",{"_index":2055,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["send",{"_index":72,"title":{},"name":{},"text":{"2":{},"7":{},"17":{},"34":{},"36":{},"55":{},"65":{},"66":{},"71":{},"77":{},"78":{},"82":{},"83":{},"92":{},"104":{},"113":{},"128":{},"129":{},"134":{},"140":{},"141":{},"145":{},"153":{},"157":{},"172":{},"177":{},"195":{},"197":{},"206":{}},"component":{}}],["sendbuffers",{"_index":4425,"title":{},"name":{},"text":{"141":{}},"component":{}}],["sendunitdata",{"_index":4399,"title":{},"name":{},"text":{"105":{},"205":{}},"component":{}}],["sens",{"_index":4306,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["sensit",{"_index":3366,"title":{},"name":{},"text":{"78":{}},"component":{}}],["sent",{"_index":2140,"title":{},"name":{},"text":{"34":{},"36":{},"46":{},"47":{},"48":{},"50":{},"55":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"72":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"90":{},"102":{},"119":{},"120":{},"122":{},"123":{},"125":{},"126":{},"127":{},"129":{},"133":{},"135":{},"136":{},"139":{},"140":{},"141":{},"142":{},"144":{},"145":{},"157":{},"195":{},"197":{},"203":{},"204":{}},"component":{}}],["separ",{"_index":1574,"title":{"21-7":{},"182-7":{}},"name":{},"text":{"16":{},"21":{},"41":{},"50":{},"78":{},"82":{},"83":{},"90":{},"103":{},"107":{},"115":{},"122":{},"145":{},"174":{},"182":{},"204":{}},"component":{}}],["separar",{"_index":2884,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["septemb",{"_index":401,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["seqdiag",{"_index":1860,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["sequenc",{"_index":3526,"title":{},"name":{},"text":{"82":{},"83":{},"103":{},"145":{},"204":{}},"component":{}}],["sequenti",{"_index":3795,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["seri",{"_index":1038,"title":{},"name":{},"text":{"10":{},"54":{},"83":{},"145":{},"158":{},"180":{}},"component":{}}],["serial",{"_index":39,"title":{"39":{},"97":{},"168":{},"199":{},"40-3":{},"71-2":{},"77-6":{},"77-9":{},"103-22":{},"134-2":{},"140-6":{},"140-9":{}},"name":{"39":{},"97":{},"168":{},"199":{}},"text":{"2":{},"15":{},"21":{},"39":{},"41":{},"50":{},"65":{},"71":{},"77":{},"94":{},"97":{},"103":{},"106":{},"115":{},"122":{},"128":{},"134":{},"140":{},"165":{},"168":{},"172":{},"199":{},"204":{}},"component":{}}],["serial.baud",{"_index":3135,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["serial.num",{"_index":3145,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["serial.par",{"_index":3148,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["serv",{"_index":2147,"title":{},"name":{},"text":{"34":{},"36":{},"83":{},"93":{},"145":{},"163":{},"195":{},"197":{}},"component":{}}],["server",{"_index":295,"title":{"59":{},"59-1":{},"78-14":{},"162-1":{}},"name":{},"text":{"3":{},"8":{},"10":{},"15":{},"16":{},"36":{},"43":{},"55":{},"59":{},"78":{},"86":{},"106":{},"107":{},"141":{},"147":{},"157":{},"162":{},"173":{},"178":{},"180":{},"197":{}},"component":{}}],["servic",{"_index":1082,"title":{},"name":{},"text":{"10":{},"12":{},"13":{},"14":{},"15":{},"17":{},"18":{},"22":{},"23":{},"24":{},"25":{},"26":{},"28":{},"46":{},"66":{},"72":{},"78":{},"81":{},"82":{},"83":{},"88":{},"106":{},"110":{},"111":{},"112":{},"113":{},"119":{},"129":{},"135":{},"141":{},"143":{},"145":{},"150":{},"174":{},"180":{},"184":{},"185":{},"186":{},"187":{},"190":{}},"component":{}}],["serviceload",{"_index":1743,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["servlet",{"_index":1792,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["session",{"_index":1853,"title":{},"name":{},"text":{"26":{},"54":{},"55":{},"56":{},"78":{},"103":{},"141":{},"157":{},"158":{},"159":{},"187":{},"204":{}},"component":{}}],["set",{"_index":205,"title":{"50-1":{},"56-1":{},"122-1":{},"159-1":{}},"name":{},"text":{"3":{},"6":{},"8":{},"9":{},"15":{},"16":{},"21":{},"27":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"39":{},"41":{},"46":{},"47":{},"48":{},"50":{},"55":{},"56":{},"59":{},"66":{},"70":{},"71":{},"75":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"86":{},"90":{},"101":{},"103":{},"105":{},"106":{},"107":{},"115":{},"119":{},"120":{},"122":{},"129":{},"133":{},"134":{},"138":{},"139":{},"140":{},"141":{},"143":{},"145":{},"147":{},"157":{},"159":{},"162":{},"173":{},"176":{},"178":{},"179":{},"182":{},"188":{},"189":{},"191":{},"192":{},"193":{},"195":{},"197":{},"199":{},"202":{},"204":{},"205":{}},"component":{}}],["setcap",{"_index":1944,"title":{},"name":{},"text":{"30":{},"81":{},"143":{},"191":{}},"component":{}}],["setter",{"_index":2713,"title":{},"name":{},"text":{"50":{},"90":{},"122":{}},"component":{}}],["setting\"respons",{"_index":4410,"title":{},"name":{},"text":{"105":{},"205":{}},"component":{}}],["settings.xml",{"_index":2170,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["setup",{"_index":219,"title":{},"name":{},"text":{"3":{},"22":{},"46":{},"92":{},"119":{},"153":{},"173":{},"183":{},"193":{}},"component":{}}],["sever",{"_index":965,"title":{},"name":{},"text":{"9":{},"10":{},"15":{},"43":{},"66":{},"78":{},"83":{},"106":{},"129":{},"145":{},"179":{},"180":{}},"component":{}}],["sfc",{"_index":3556,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["sg",{"_index":2746,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["sga",{"_index":828,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["sha512",{"_index":263,"title":{"15-2":{},"15-7":{},"15-10":{},"15-11":{},"15-13":{},"15-17":{},"15-21":{},"15-25":{},"15-29":{},"15-33":{},"15-38":{},"15-42":{},"15-46":{},"15-48":{},"106-2":{},"106-7":{},"106-10":{},"106-11":{},"106-13":{},"106-17":{},"106-21":{},"106-25":{},"106-29":{},"106-33":{},"106-38":{},"106-42":{},"106-46":{},"106-48":{}},"name":{},"text":{"3":{},"34":{},"36":{},"37":{},"173":{},"195":{},"197":{},"198":{}},"component":{}}],["share",{"_index":46,"title":{},"name":{},"text":{"2":{},"3":{},"17":{},"30":{},"36":{},"50":{},"88":{},"92":{},"113":{},"122":{},"150":{},"153":{},"172":{},"173":{},"193":{},"197":{}},"component":{}}],["sharpen",{"_index":1087,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["shasum",{"_index":2255,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["sheet",{"_index":3049,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["ship",{"_index":1584,"title":{},"name":{},"text":{"16":{},"66":{},"93":{},"107":{},"129":{},"163":{},"193":{}},"component":{}}],["shop",{"_index":1122,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["short",{"_index":1405,"title":{},"name":{},"text":{"15":{},"34":{},"36":{},"37":{},"41":{},"43":{},"47":{},"50":{},"71":{},"77":{},"82":{},"83":{},"106":{},"115":{},"120":{},"122":{},"134":{},"140":{},"145":{},"151":{},"195":{},"197":{},"198":{}},"component":{}}],["shortcut",{"_index":464,"title":{},"name":{},"text":{"5":{},"174":{}},"component":{}}],["shorter",{"_index":1505,"title":{},"name":{},"text":{"15":{},"77":{},"82":{},"83":{},"106":{},"140":{},"145":{}},"component":{}}],["shortest",{"_index":2369,"title":{},"name":{},"text":{"41":{},"115":{}},"component":{}}],["shouldn’t",{"_index":1738,"title":{},"name":{},"text":{"21":{},"34":{},"55":{},"59":{},"81":{},"103":{},"143":{},"157":{},"162":{},"182":{},"195":{},"204":{}},"component":{}}],["show",{"_index":2742,"title":{},"name":{},"text":{"54":{},"55":{},"56":{},"78":{},"83":{},"92":{},"145":{},"151":{},"153":{},"157":{},"158":{},"159":{}},"component":{}}],["shown",{"_index":2615,"title":{},"name":{},"text":{"48":{},"55":{},"59":{},"82":{},"83":{},"145":{},"157":{},"162":{}},"component":{}}],["sicher",{"_index":424,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["side",{"_index":533,"title":{},"name":{},"text":{"5":{},"12":{},"22":{},"34":{},"36":{},"56":{},"65":{},"80":{},"82":{},"83":{},"110":{},"128":{},"144":{},"145":{},"159":{},"174":{},"195":{},"197":{}},"component":{}}],["siemen",{"_index":993,"title":{},"name":{},"text":{"10":{},"13":{},"15":{},"21":{},"36":{},"82":{},"83":{},"88":{},"106":{},"112":{},"145":{},"150":{},"180":{},"182":{},"197":{}},"component":{}}],["sig",{"_index":3815,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sig_[1..8]_data_statu",{"_index":3823,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sig_[1…8",{"_index":3816,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sig_[1…8]_data",{"_index":3820,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sig_[1…8]_data_co",{"_index":3822,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sig_[1…8]_data_go",{"_index":3821,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sig_[1…8]_data_length",{"_index":3825,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sig_[1…8]_data_s",{"_index":3824,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sig_[1…8]_stat",{"_index":3818,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sig_data",{"_index":3819,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sig_stat",{"_index":3817,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sign",{"_index":477,"title":{"43-1":{}},"name":{},"text":{"5":{},"8":{},"9":{},"27":{},"34":{},"36":{},"59":{},"78":{},"82":{},"83":{},"103":{},"141":{},"145":{},"162":{},"174":{},"178":{},"179":{},"188":{},"195":{},"197":{},"204":{}},"component":{}}],["sign_encrypt",{"_index":3314,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["signal",{"_index":2502,"title":{},"name":{},"text":{"46":{},"47":{},"83":{},"119":{},"120":{},"145":{}},"component":{}}],["signatur",{"_index":266,"title":{},"name":{},"text":{"3":{},"34":{},"36":{},"37":{},"78":{},"141":{},"173":{},"195":{},"197":{},"198":{}},"component":{}}],["signific",{"_index":1475,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["silenc",{"_index":593,"title":{},"name":{},"text":{"6":{},"176":{}},"component":{}}],["silicon",{"_index":1959,"title":{},"name":{},"text":{"30":{}},"component":{}}],["silo",{"_index":375,"title":{},"name":{},"text":{"4":{},"13":{},"112":{},"175":{}},"component":{}}],["simat",{"_index":3408,"title":{},"name":{},"text":{"78":{},"82":{},"83":{},"145":{}},"component":{}}],["similar",{"_index":1760,"title":{},"name":{},"text":{"21":{},"32":{},"34":{},"36":{},"46":{},"47":{},"48":{},"50":{},"71":{},"72":{},"103":{},"119":{},"120":{},"122":{},"134":{},"135":{},"195":{},"197":{},"204":{}},"component":{}}],["simocod",{"_index":3410,"title":{},"name":{},"text":{"78":{}},"component":{}}],["simot",{"_index":3598,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["simpl",{"_index":3,"title":{"2-1":{},"90-3":{},"90-4":{},"92-2":{},"103-1":{},"103-16":{},"151-2":{},"153-2":{},"172-1":{},"204-1":{},"204-14":{}},"name":{},"text":{"2":{},"3":{},"8":{},"21":{},"27":{},"29":{},"36":{},"39":{},"50":{},"55":{},"71":{},"77":{},"83":{},"91":{},"92":{},"101":{},"102":{},"103":{},"122":{},"134":{},"140":{},"145":{},"152":{},"153":{},"157":{},"172":{},"173":{},"178":{},"188":{},"189":{},"197":{},"199":{},"202":{},"203":{},"204":{}},"component":{}}],["simpler",{"_index":1319,"title":{},"name":{},"text":{"15":{},"17":{},"34":{},"106":{},"113":{},"195":{}},"component":{}}],["simplest",{"_index":472,"title":{},"name":{},"text":{"5":{},"27":{},"34":{},"36":{},"86":{},"147":{},"174":{},"188":{},"195":{},"197":{}},"component":{}}],["simpli",{"_index":164,"title":{},"name":{},"text":{"3":{},"8":{},"21":{},"26":{},"32":{},"41":{},"46":{},"47":{},"48":{},"50":{},"56":{},"77":{},"80":{},"82":{},"83":{},"86":{},"87":{},"90":{},"91":{},"101":{},"103":{},"115":{},"119":{},"120":{},"122":{},"144":{},"145":{},"147":{},"148":{},"151":{},"152":{},"159":{},"173":{},"178":{},"182":{},"187":{},"202":{},"204":{}},"component":{}}],["simplic",{"_index":1128,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["simplif",{"_index":4288,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["simplifi",{"_index":2130,"title":{},"name":{},"text":{"34":{},"36":{},"65":{},"78":{},"82":{},"83":{},"128":{},"141":{},"145":{},"174":{},"195":{},"197":{}},"component":{}}],["simplist",{"_index":1762,"title":{},"name":{},"text":{"21":{},"93":{},"163":{},"182":{}},"component":{}}],["simul",{"_index":1258,"title":{"84":{},"146":{},"84-5":{},"146-5":{}},"name":{"84":{},"146":{}},"text":{"15":{},"47":{},"48":{},"50":{},"54":{},"74":{},"78":{},"80":{},"84":{},"88":{},"106":{},"120":{},"122":{},"137":{},"141":{},"144":{},"146":{},"150":{},"158":{}},"component":{}}],["simulated%3a%2f%2flocalhost",{"_index":3425,"title":{},"name":{},"text":{"80":{},"144":{}},"component":{}}],["simulated://127.0.0.1",{"_index":2743,"title":{},"name":{},"text":{"54":{},"59":{},"84":{},"146":{},"158":{},"162":{}},"component":{}}],["simulated://localhost",{"_index":3424,"title":{},"name":{},"text":{"80":{},"144":{}},"component":{}}],["simulated:{transport}://{ip",{"_index":3932,"title":{},"name":{},"text":{"84":{},"146":{}},"component":{}}],["simulationdevic",{"_index":2946,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["simultan",{"_index":3745,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sin",{"_index":3583,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["sinam",{"_index":3572,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["singl",{"_index":1473,"title":{},"name":{},"text":{"15":{},"47":{},"48":{},"50":{},"62":{},"63":{},"74":{},"77":{},"78":{},"82":{},"83":{},"103":{},"104":{},"106":{},"120":{},"122":{},"125":{},"126":{},"137":{},"140":{},"141":{},"145":{},"183":{},"204":{},"206":{}},"component":{}}],["singlefieldoptim",{"_index":1432,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["sink",{"_index":1381,"title":{"55-8":{},"55-9":{},"55-10":{},"157-8":{},"157-9":{},"157-10":{}},"name":{},"text":{"15":{},"55":{},"56":{},"106":{},"157":{},"159":{}},"component":{}}],["sink.properti",{"_index":2826,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["sint",{"_index":3091,"title":{},"name":{},"text":{"66":{},"70":{},"72":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"129":{},"133":{},"135":{},"139":{},"140":{},"141":{},"143":{},"145":{},"146":{}},"component":{}}],["site",{"_index":252,"title":{"36-19":{},"197-19":{}},"name":{},"text":{"3":{},"5":{},"26":{},"27":{},"34":{},"36":{},"173":{},"174":{},"187":{},"188":{},"193":{},"195":{},"197":{}},"component":{}}],["site.xml",{"_index":1881,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["situat",{"_index":1403,"title":{},"name":{},"text":{"15":{},"78":{},"88":{},"106":{},"150":{}},"component":{}}],["size",{"_index":1387,"title":{},"name":{},"text":{"15":{},"17":{},"43":{},"50":{},"62":{},"63":{},"66":{},"71":{},"76":{},"77":{},"78":{},"82":{},"83":{},"84":{},"85":{},"98":{},"102":{},"103":{},"106":{},"113":{},"122":{},"125":{},"126":{},"129":{},"134":{},"139":{},"140":{},"141":{},"145":{},"146":{},"170":{},"203":{},"204":{}},"component":{}}],["sizes'brows",{"_index":4357,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["sizes'rec",{"_index":4351,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["sizes'send",{"_index":4352,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["size}]:{nam",{"_index":3242,"title":{},"name":{},"text":{"77":{}},"component":{}}],["size}]:{speci",{"_index":3161,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["sketch",{"_index":2299,"title":{},"name":{},"text":{"39":{},"71":{},"134":{},"199":{}},"component":{}}],["skin",{"_index":1864,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["skip",{"_index":233,"title":{"173-10":{}},"name":{},"text":{"3":{},"27":{},"65":{},"82":{},"83":{},"101":{},"103":{},"128":{},"145":{},"173":{},"188":{},"202":{},"204":{}},"component":{}}],["slave",{"_index":2673,"title":{"50-1":{},"122-1":{}},"name":{},"text":{"50":{},"77":{},"83":{},"85":{},"122":{},"145":{}},"component":{}}],["slide",{"_index":1164,"title":{"13":{},"112":{},"13-3":{},"112-3":{}},"name":{"13":{},"112":{}},"text":{},"component":{}}],["slightli",{"_index":1383,"title":{},"name":{},"text":{"15":{},"17":{},"46":{},"78":{},"106":{},"113":{},"119":{}},"component":{}}],["slot",{"_index":3123,"title":{},"name":{},"text":{"70":{},"76":{},"82":{},"83":{},"133":{},"139":{},"145":{}},"component":{}}],["slot2",{"_index":3655,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["slot=3&control",{"_index":3481,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["slower",{"_index":3976,"title":{},"name":{},"text":{"86":{},"147":{}},"component":{}}],["slz_id",{"_index":3890,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["small",{"_index":1462,"title":{},"name":{},"text":{"15":{},"17":{},"82":{},"83":{},"88":{},"106":{},"113":{},"145":{},"150":{}},"component":{}}],["smaller",{"_index":2715,"title":{},"name":{},"text":{"50":{},"71":{},"77":{},"82":{},"83":{},"122":{},"134":{},"140":{},"145":{}},"component":{}}],["smart",{"_index":1081,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["smooth",{"_index":612,"title":{},"name":{},"text":{"7":{},"177":{}},"component":{}}],["snap7",{"_index":3618,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["snapshot",{"_index":314,"title":{"49":{},"124":{}},"name":{"49":{},"124":{}},"text":{"3":{},"5":{},"8":{},"21":{},"22":{},"34":{},"36":{},"37":{},"46":{},"47":{},"49":{},"50":{},"55":{},"86":{},"87":{},"91":{},"92":{},"93":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"119":{},"122":{},"124":{},"157":{},"173":{},"178":{},"182":{},"183":{},"195":{},"197":{},"198":{}},"component":{}}],["snapshot}/rc1",{"_index":2106,"title":{},"name":{},"text":{"34":{}},"component":{}}],["snapshot}/rc1/apach",{"_index":2109,"title":{},"name":{},"text":{"34":{}},"component":{}}],["snapshot}/rc1/readm",{"_index":2107,"title":{},"name":{},"text":{"34":{}},"component":{}}],["snapshot}/rc1/release_not",{"_index":2108,"title":{},"name":{},"text":{"34":{}},"component":{}}],["snip",{"_index":4199,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["snippet",{"_index":2308,"title":{},"name":{},"text":{"39":{},"87":{},"92":{},"103":{},"148":{},"151":{},"153":{},"199":{},"204":{}},"component":{}}],["socket",{"_index":1534,"title":{"96":{},"167":{}},"name":{"96":{},"167":{}},"text":{"15":{},"26":{},"41":{},"75":{},"81":{},"94":{},"96":{},"97":{},"99":{},"100":{},"106":{},"115":{},"138":{},"143":{},"165":{},"167":{},"168":{},"169":{},"171":{},"187":{}},"component":{}}],["socketcan",{"_index":3013,"title":{"98":{},"170":{},"66-3":{},"72-3":{},"129-3":{},"135-3":{}},"name":{"98":{},"170":{}},"text":{"65":{},"66":{},"72":{},"93":{},"94":{},"98":{},"128":{},"129":{},"135":{},"163":{},"165":{},"170":{}},"component":{}}],["socketcanfram",{"_index":3014,"title":{},"name":{},"text":{"65":{},"128":{}},"component":{}}],["soften",{"_index":2387,"title":{},"name":{},"text":{"43":{}},"component":{}}],["softnet",{"_index":3624,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["softwar",{"_index":773,"title":{"26-4":{},"187-4":{}},"name":{},"text":{"9":{},"10":{},"12":{},"13":{},"14":{},"16":{},"17":{},"50":{},"78":{},"82":{},"83":{},"98":{},"101":{},"107":{},"110":{},"111":{},"112":{},"113":{},"122":{},"145":{},"170":{},"179":{},"180":{},"202":{}},"component":{}}],["solingen",{"_index":353,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["solut",{"_index":1120,"title":{},"name":{},"text":{"12":{},"14":{},"17":{},"21":{},"30":{},"54":{},"83":{},"110":{},"111":{},"113":{},"145":{},"158":{},"182":{},"191":{}},"component":{}}],["solv",{"_index":1109,"title":{},"name":{},"text":{"12":{},"14":{},"110":{},"111":{}},"component":{}}],["somefourdigitnumb",{"_index":2126,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["somenumb",{"_index":2101,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["someon",{"_index":856,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["someth",{"_index":519,"title":{"34-5":{},"36-8":{},"195-5":{},"197-8":{}},"name":{},"text":{"5":{},"27":{},"32":{},"34":{},"36":{},"39":{},"41":{},"46":{},"47":{},"48":{},"50":{},"56":{},"71":{},"88":{},"91":{},"103":{},"115":{},"119":{},"120":{},"122":{},"134":{},"150":{},"152":{},"159":{},"174":{},"188":{},"193":{},"195":{},"197":{},"199":{}},"component":{}}],["sometim",{"_index":1952,"title":{},"name":{},"text":{"30":{},"34":{},"36":{},"41":{},"78":{},"86":{},"103":{},"115":{},"191":{},"195":{},"197":{}},"component":{}}],["somewher",{"_index":1899,"title":{},"name":{},"text":{"27":{},"173":{},"188":{}},"component":{}}],["sonar",{"_index":1805,"title":{},"name":{"25":{},"186":{}},"text":{},"component":{}}],["sonarcloud",{"_index":1803,"title":{},"name":{},"text":{"22":{},"25":{},"183":{},"186":{}},"component":{}}],["soon",{"_index":54,"title":{},"name":{},"text":{"2":{},"5":{},"8":{},"14":{},"15":{},"17":{},"21":{},"26":{},"27":{},"29":{},"34":{},"36":{},"40":{},"41":{},"46":{},"47":{},"48":{},"50":{},"56":{},"62":{},"63":{},"75":{},"82":{},"83":{},"86":{},"87":{},"88":{},"91":{},"95":{},"101":{},"106":{},"111":{},"113":{},"115":{},"119":{},"120":{},"122":{},"125":{},"126":{},"138":{},"145":{},"147":{},"148":{},"150":{},"152":{},"159":{},"166":{},"172":{},"174":{},"178":{},"182":{},"187":{},"188":{},"189":{},"195":{},"197":{},"202":{}},"component":{}}],["sophist",{"_index":1320,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["sort",{"_index":968,"title":{},"name":{},"text":{"10":{},"14":{},"17":{},"39":{},"46":{},"113":{},"119":{},"180":{},"193":{},"199":{}},"component":{}}],["sourc",{"_index":119,"title":{"15-2":{},"15-7":{},"15-10":{},"15-11":{},"15-13":{},"15-17":{},"15-21":{},"15-25":{},"15-29":{},"15-33":{},"15-38":{},"15-42":{},"15-46":{},"15-48":{},"17-1":{},"55-5":{},"55-6":{},"55-7":{},"56-3":{},"91-2":{},"106-2":{},"106-7":{},"106-10":{},"106-11":{},"106-13":{},"106-17":{},"106-21":{},"106-25":{},"106-29":{},"106-33":{},"106-38":{},"106-42":{},"106-46":{},"106-48":{},"113-1":{},"152-2":{},"157-5":{},"157-6":{},"157-7":{},"159-3":{}},"name":{},"text":{"3":{},"4":{},"7":{},"9":{},"10":{},"12":{},"13":{},"15":{},"17":{},"21":{},"34":{},"36":{},"37":{},"41":{},"43":{},"50":{},"55":{},"56":{},"62":{},"64":{},"66":{},"78":{},"82":{},"83":{},"91":{},"102":{},"106":{},"110":{},"112":{},"113":{},"122":{},"125":{},"127":{},"129":{},"141":{},"145":{},"152":{},"157":{},"159":{},"173":{},"175":{},"177":{},"179":{},"180":{},"182":{},"195":{},"197":{},"198":{},"203":{}},"component":{}}],["source.properti",{"_index":2805,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["sourceaddress",{"_index":4232,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["sourcecod",{"_index":781,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["sourcenam",{"_index":3394,"title":{},"name":{},"text":{"78":{},"91":{},"152":{}},"component":{}}],["sourcenod",{"_index":3393,"title":{},"name":{},"text":{"78":{}},"component":{}}],["sources/plc4x",{"_index":1737,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["sp",{"_index":1047,"title":{},"name":{},"text":{"10":{},"12":{},"14":{},"15":{},"106":{},"110":{},"111":{},"180":{}},"component":{}}],["space",{"_index":2917,"title":{},"name":{},"text":{"59":{},"83":{},"145":{},"162":{}},"component":{}}],["space_par",{"_index":3156,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["spanish",{"_index":3838,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["spark",{"_index":1069,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["spawn",{"_index":548,"title":{},"name":{},"text":{"5":{},"21":{},"174":{},"182":{}},"component":{}}],["speak",{"_index":1613,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["spec",{"_index":1682,"title":{},"name":{},"text":{"21":{},"77":{},"101":{},"103":{},"140":{},"182":{},"202":{},"204":{}},"component":{}}],["special",{"_index":81,"title":{"3-6":{},"173-6":{}},"name":{},"text":{"3":{},"4":{},"10":{},"41":{},"65":{},"71":{},"83":{},"93":{},"103":{},"115":{},"128":{},"134":{},"145":{},"163":{},"173":{},"175":{},"180":{},"193":{},"204":{}},"component":{}}],["specif",{"_index":1722,"title":{"62":{},"125":{}},"name":{},"text":{"21":{},"39":{},"41":{},"43":{},"48":{},"62":{},"66":{},"72":{},"77":{},"78":{},"82":{},"83":{},"84":{},"85":{},"93":{},"98":{},"101":{},"102":{},"103":{},"125":{},"129":{},"135":{},"140":{},"141":{},"145":{},"146":{},"163":{},"170":{},"199":{},"202":{},"203":{},"204":{}},"component":{}}],["specifi",{"_index":1390,"title":{},"name":{},"text":{"15":{},"21":{},"37":{},"39":{},"41":{},"43":{},"46":{},"50":{},"55":{},"62":{},"66":{},"70":{},"77":{},"78":{},"80":{},"82":{},"83":{},"86":{},"101":{},"102":{},"103":{},"106":{},"119":{},"122":{},"125":{},"129":{},"133":{},"140":{},"141":{},"144":{},"145":{},"147":{},"157":{},"182":{},"198":{},"199":{},"202":{},"203":{},"204":{}},"component":{}}],["speed",{"_index":2991,"title":{},"name":{},"text":{"63":{},"75":{},"86":{},"95":{},"126":{},"138":{},"147":{},"166":{}},"component":{}}],["spi",{"_index":3447,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["split",{"_index":1456,"title":{},"name":{},"text":{"15":{},"77":{},"82":{},"83":{},"106":{},"140":{},"145":{}},"component":{}}],["spot",{"_index":2186,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["sql",{"_index":2732,"title":{},"name":{},"text":{"51":{},"54":{},"154":{},"158":{}},"component":{}}],["squar",{"_index":2281,"title":{},"name":{},"text":{"37":{},"56":{},"103":{},"159":{},"198":{},"204":{}},"component":{}}],["src",{"_index":4209,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["src/jjqassist",{"_index":686,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["src/main/java",{"_index":2319,"title":{},"name":{},"text":{"40":{}},"component":{}}],["src/main/releas",{"_index":2317,"title":{},"name":{},"text":{"40":{}},"component":{}}],["src/main/resources/meta",{"_index":2320,"title":{},"name":{},"text":{"40":{}},"component":{}}],["src/site",{"_index":1863,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["src/site/asciidoc",{"_index":538,"title":{},"name":{},"text":{"5":{},"174":{}},"component":{}}],["src/site/asciidoc/protocols/wombat",{"_index":1886,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["src/site/resourc",{"_index":2226,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["src/site/us",{"_index":2231,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["src/test/java",{"_index":2331,"title":{},"name":{},"text":{"40":{}},"component":{}}],["src/test/resourc",{"_index":2327,"title":{},"name":{},"text":{"40":{}},"component":{}}],["src/test/resources/testsuit",{"_index":2315,"title":{},"name":{},"text":{"39":{},"199":{}},"component":{}}],["srchk",{"_index":3003,"title":{},"name":{},"text":{"64":{},"127":{}},"component":{}}],["ssh",{"_index":1815,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["ssh/id_rsa.pub",{"_index":1822,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["ssl",{"_index":706,"title":{},"name":{},"text":{"8":{},"83":{},"145":{},"178":{}},"component":{}}],["st",{"_index":4211,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["stabil",{"_index":1508,"title":{"17-3":{},"34-3":{},"36-6":{},"113-3":{},"195-3":{},"197-6":{}},"name":{},"text":{"15":{},"17":{},"106":{},"113":{}},"component":{}}],["stabl",{"_index":3653,"title":{},"name":{},"text":{"83":{},"145":{},"173":{}},"component":{}}],["stack",{"_index":1576,"title":{},"name":{},"text":{"16":{},"17":{},"41":{},"46":{},"103":{},"107":{},"113":{},"115":{},"119":{}},"component":{}}],["stackoverflow",{"_index":1977,"title":{},"name":{},"text":{"30":{}},"component":{}}],["stage",{"_index":2052,"title":{"37":{},"198":{},"34-7":{},"36-10":{},"195-7":{},"197-10":{}},"name":{},"text":{"34":{},"36":{},"37":{},"195":{},"197":{},"198":{}},"component":{}}],["stamp",{"_index":3632,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["stanbol",{"_index":1068,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["stand",{"_index":1586,"title":{},"name":{},"text":{"16":{},"17":{},"78":{},"107":{},"113":{}},"component":{}}],["standalon",{"_index":2771,"title":{"55-6":{},"55-9":{},"157-6":{},"157-9":{}},"name":{},"text":{"55":{},"157":{}},"component":{}}],["standalone.properti",{"_index":2815,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["standalone.sh",{"_index":2814,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["standard",{"_index":785,"title":{},"name":{},"text":{"9":{},"15":{},"21":{},"27":{},"43":{},"51":{},"55":{},"78":{},"82":{},"83":{},"84":{},"98":{},"101":{},"103":{},"106":{},"145":{},"146":{},"154":{},"157":{},"170":{},"179":{},"188":{},"202":{}},"component":{}}],["standardcharsets.utf_8",{"_index":4183,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["standardfirmata",{"_index":3132,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["standbi",{"_index":1615,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["stare",{"_index":4419,"title":{},"name":{},"text":{"115":{}},"component":{}}],["start",{"_index":174,"title":{"42":{},"44":{},"45":{},"46":{},"47":{},"48":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"7-1":{},"34-8":{},"36-11":{},"40-3":{},"40-4":{},"55-4":{},"55-6":{},"55-7":{},"55-9":{},"55-10":{},"91-1":{},"152-1":{},"157-4":{},"157-6":{},"157-7":{},"157-9":{},"157-10":{},"177-1":{},"195-8":{},"197-11":{}},"name":{},"text":{"3":{},"7":{},"8":{},"10":{},"12":{},"21":{},"22":{},"29":{},"32":{},"34":{},"36":{},"39":{},"40":{},"41":{},"42":{},"46":{},"50":{},"55":{},"56":{},"59":{},"63":{},"70":{},"71":{},"75":{},"77":{},"82":{},"83":{},"86":{},"88":{},"90":{},"91":{},"95":{},"102":{},"103":{},"110":{},"115":{},"116":{},"119":{},"122":{},"126":{},"133":{},"134":{},"138":{},"140":{},"145":{},"147":{},"150":{},"152":{},"157":{},"159":{},"162":{},"166":{},"173":{},"177":{},"178":{},"180":{},"182":{},"183":{},"189":{},"195":{},"197":{},"199":{},"203":{},"204":{}},"component":{}}],["start.sh",{"_index":2795,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["startup",{"_index":2818,"title":{},"name":{},"text":{"55":{},"59":{},"83":{},"145":{},"157":{},"162":{}},"component":{}}],["state",{"_index":34,"title":{},"name":{},"text":{"2":{},"5":{},"13":{},"22":{},"34":{},"36":{},"46":{},"47":{},"50":{},"55":{},"56":{},"66":{},"78":{},"83":{},"84":{},"88":{},"91":{},"103":{},"119":{},"120":{},"122":{},"129":{},"145":{},"146":{},"150":{},"152":{},"157":{},"159":{},"172":{},"174":{},"193":{},"195":{},"197":{}},"component":{}}],["state/device1.machinea.sensor1:int",{"_index":3944,"title":{},"name":{},"text":{"84":{},"146":{}},"component":{}}],["statement",{"_index":2869,"title":{},"name":{},"text":{"56":{},"82":{},"83":{},"87":{},"145":{},"148":{},"159":{}},"component":{}}],["static",{"_index":717,"title":{},"name":{},"text":{"8":{},"25":{},"83":{},"87":{},"90":{},"92":{},"101":{},"103":{},"145":{},"148":{},"151":{},"153":{},"178":{},"186":{},"202":{}},"component":{}}],["static_call(\"org.apache.plc4x.java.df1.readwrite.utils.statichelper.crccheck",{"_index":4236,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["static_call(\"org.apache.plc4x.java.df1.readwrite.utils.statichelper.datalength",{"_index":4248,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["static_call(\"org.apache.plc4x.java.df1.readwrite.utils.statichelper.datatermin",{"_index":4245,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["static_call(\"org.apache.plc4x.java.df1.readwrite.utils.statichelper.readdata",{"_index":4246,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["static_call(\"org.apache.plc4x.java.df1.readwrite.utils.statichelper.writedata",{"_index":4247,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["station",{"_index":2959,"title":{},"name":{},"text":{"61":{},"83":{},"123":{},"145":{}},"component":{}}],["statist",{"_index":1436,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["statu",{"_index":771,"title":{"83-22":{},"145-22":{}},"name":{},"text":{"9":{},"15":{},"50":{},"55":{},"78":{},"82":{},"83":{},"102":{},"106":{},"122":{},"145":{},"157":{},"179":{},"203":{}},"component":{}}],["stay",{"_index":831,"title":{},"name":{},"text":{"9":{},"90":{},"103":{},"179":{},"204":{}},"component":{}}],["stdout",{"_index":3938,"title":{},"name":{},"text":{"84":{},"146":{}},"component":{}}],["stdout/device1.machinea.sensor1:int",{"_index":3945,"title":{},"name":{},"text":{"84":{},"146":{}},"component":{}}],["step",{"_index":458,"title":{},"name":{},"text":{"5":{},"7":{},"12":{},"22":{},"30":{},"34":{},"36":{},"37":{},"39":{},"43":{},"50":{},"55":{},"78":{},"82":{},"83":{},"110":{},"122":{},"141":{},"145":{},"157":{},"173":{},"174":{},"177":{},"183":{},"195":{},"197":{},"198":{},"199":{}},"component":{}}],["step7",{"_index":3441,"title":{"82":{},"83":{},"145":{}},"name":{},"text":{"83":{},"145":{}},"component":{}}],["step7/tia/wincc",{"_index":3643,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["stick",{"_index":1606,"title":{},"name":{},"text":{"17":{},"41":{},"82":{},"83":{},"113":{},"115":{},"145":{}},"component":{}}],["still",{"_index":1435,"title":{},"name":{},"text":{"15":{},"37":{},"46":{},"56":{},"78":{},"82":{},"83":{},"87":{},"91":{},"92":{},"103":{},"106":{},"119":{},"145":{},"148":{},"152":{},"153":{},"159":{},"173":{},"198":{},"204":{}},"component":{}}],["stop",{"_index":1181,"title":{},"name":{},"text":{"13":{},"15":{},"56":{},"63":{},"71":{},"75":{},"77":{},"83":{},"84":{},"95":{},"106":{},"112":{},"126":{},"134":{},"138":{},"140":{},"145":{},"146":{},"159":{},"166":{}},"component":{}}],["storag",{"_index":1217,"title":{},"name":{},"text":{"14":{},"54":{},"87":{},"111":{},"148":{},"158":{}},"component":{}}],["store",{"_index":645,"title":{},"name":{},"text":{"8":{},"43":{},"54":{},"59":{},"63":{},"70":{},"78":{},"83":{},"103":{},"126":{},"133":{},"141":{},"145":{},"158":{},"162":{},"178":{},"204":{}},"component":{}}],["storm",{"_index":1070,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["str(i",{"_index":2653,"title":{},"name":{},"text":{"48":{}},"component":{}}],["straight",{"_index":542,"title":{},"name":{},"text":{"5":{},"21":{},"174":{},"182":{}},"component":{}}],["strang",{"_index":1674,"title":{"21-8":{},"182-8":{}},"name":{},"text":{"21":{},"182":{},"193":{}},"component":{}}],["strategi",{"_index":1916,"title":{"40":{}},"name":{},"text":{"29":{},"34":{},"36":{},"39":{},"189":{},"195":{},"197":{},"199":{}},"component":{}}],["stream",{"_index":2329,"title":{},"name":{},"text":{"40":{},"55":{},"56":{},"83":{},"145":{},"157":{},"159":{}},"component":{}}],["streamlin",{"_index":1246,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["streampip",{"_index":1179,"title":{"57":{},"161":{}},"name":{"57":{},"161":{}},"text":{"13":{},"112":{}},"component":{}}],["strength",{"_index":3345,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["stress",{"_index":4002,"title":{},"name":{},"text":{"88":{},"150":{}},"component":{}}],["stressful",{"_index":4076,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["strict",{"_index":4437,"title":{},"name":{},"text":{"173":{}},"component":{}}],["strictli",{"_index":3621,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["string",{"_index":1249,"title":{"41-2":{},"61-1":{},"62-2":{},"63-2":{},"64-1":{},"66-2":{},"67-1":{},"70-1":{},"71-1":{},"72-2":{},"73-1":{},"75-1":{},"76-1":{},"76-4":{},"77-1":{},"77-12":{},"78-1":{},"78-3":{},"79-1":{},"80-1":{},"80-3":{},"80-5":{},"81-1":{},"81-3":{},"82-3":{},"83-6":{},"84-1":{},"84-3":{},"85-1":{},"85-4":{},"115-2":{},"123-1":{},"125-2":{},"126-2":{},"127-1":{},"129-2":{},"130-1":{},"133-1":{},"134-1":{},"135-2":{},"136-1":{},"138-1":{},"139-1":{},"139-4":{},"140-1":{},"140-12":{},"141-1":{},"141-3":{},"142-1":{},"143-1":{},"143-3":{},"144-1":{},"144-3":{},"144-5":{},"145-6":{},"146-1":{},"146-3":{}},"name":{},"text":{"15":{},"21":{},"41":{},"47":{},"48":{},"50":{},"54":{},"56":{},"59":{},"62":{},"63":{},"66":{},"71":{},"72":{},"75":{},"76":{},"77":{},"78":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"87":{},"90":{},"91":{},"92":{},"101":{},"103":{},"106":{},"115":{},"120":{},"122":{},"125":{},"126":{},"129":{},"134":{},"135":{},"138":{},"139":{},"140":{},"141":{},"143":{},"144":{},"145":{},"146":{},"148":{},"152":{},"153":{},"158":{},"159":{},"162":{},"182":{},"202":{},"204":{}},"component":{}}],["string(",{"_index":3358,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["string=simulated%3a%2f%2flocalhost",{"_index":3423,"title":{},"name":{},"text":{"80":{},"144":{}},"component":{}}],["string={url",{"_index":3421,"title":{},"name":{},"text":{"80":{},"144":{}},"component":{}}],["stringbuild",{"_index":3877,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["strip",{"_index":1779,"title":{},"name":{},"text":{"21":{},"47":{},"50":{},"82":{},"120":{},"122":{},"182":{}},"component":{}}],["strive",{"_index":886,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["strljic",{"_index":1076,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["strong",{"_index":797,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["strongli",{"_index":4075,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["struct",{"_index":3238,"title":{},"name":{},"text":{"77":{}},"component":{}}],["structur",{"_index":1468,"title":{"22-1":{},"39-1":{},"39-2":{},"62-1":{},"125-1":{},"183-1":{},"199-1":{},"199-2":{}},"name":{},"text":{"15":{},"21":{},"34":{},"36":{},"41":{},"48":{},"50":{},"55":{},"62":{},"65":{},"66":{},"75":{},"82":{},"83":{},"88":{},"101":{},"103":{},"106":{},"115":{},"122":{},"125":{},"128":{},"129":{},"138":{},"145":{},"150":{},"157":{},"182":{},"183":{},"195":{},"197":{},"202":{},"204":{}},"component":{}}],["studi",{"_index":1033,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["studio",{"_index":4472,"title":{},"name":{},"text":{"193":{}},"component":{}}],["stuff",{"_index":1096,"title":{},"name":{},"text":{"10":{},"36":{},"101":{},"180":{},"197":{},"202":{}},"component":{}}],["stuttgart",{"_index":1035,"title":{},"name":{},"text":{"10":{},"12":{},"110":{},"180":{}},"component":{}}],["stx",{"_index":4207,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["style",{"_index":4134,"title":{},"name":{},"text":{"101":{},"193":{},"202":{}},"component":{}}],["sub",{"_index":689,"title":{},"name":{},"text":{"8":{},"15":{},"34":{},"66":{},"75":{},"77":{},"83":{},"90":{},"103":{},"106":{},"129":{},"138":{},"140":{},"145":{},"178":{},"182":{},"191":{},"195":{},"204":{}},"component":{}}],["sub.execute().get",{"_index":3720,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sub.tostr",{"_index":3718,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["subchapt",{"_index":1782,"title":{},"name":{},"text":{"21":{}},"component":{}}],["subindex",{"_index":3058,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["subject",{"_index":2410,"title":{},"name":{},"text":{"43":{}},"component":{}}],["sublist",{"_index":3852,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["submit",{"_index":447,"title":{},"name":{},"text":{"5":{},"6":{},"9":{},"72":{},"135":{},"174":{},"176":{},"179":{}},"component":{}}],["suboptim",{"_index":1955,"title":{},"name":{},"text":{"30":{}},"component":{}}],["subrespons",{"_index":3719,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["subresponse.getresponsecode(\"mymod",{"_index":3721,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["subscibe'subscrib",{"_index":4372,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["subscrib",{"_index":627,"title":{"46-6":{},"47-4":{},"48-4":{},"119-6":{},"120-4":{}},"name":{},"text":{"7":{},"46":{},"47":{},"48":{},"50":{},"66":{},"71":{},"72":{},"74":{},"75":{},"78":{},"80":{},"81":{},"83":{},"119":{},"120":{},"122":{},"129":{},"134":{},"135":{},"137":{},"138":{},"141":{},"143":{},"144":{},"145":{},"177":{}},"component":{}}],["subscribe(str",{"_index":4094,"title":{},"name":{},"text":{"92":{},"153":{}},"component":{}}],["subscribe({subscrib",{"_index":1572,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["subscribe@plc4x.apache.org",{"_index":630,"title":{},"name":{},"text":{"7":{},"177":{}},"component":{}}],["subscript",{"_index":1416,"title":{"83-16":{},"83-18":{},"83-19":{},"83-20":{},"83-21":{},"145-16":{},"145-18":{},"145-19":{},"145-20":{},"145-21":{}},"name":{},"text":{"15":{},"46":{},"47":{},"48":{},"50":{},"66":{},"71":{},"78":{},"81":{},"82":{},"83":{},"104":{},"105":{},"106":{},"119":{},"120":{},"122":{},"129":{},"134":{},"141":{},"143":{},"145":{},"205":{},"206":{}},"component":{}}],["subscription.addeventfield(\"mymod",{"_index":3715,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["subscription.addeventfield(\"mysi",{"_index":3776,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["subscription.addeventfield(\"myusr",{"_index":3783,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["subscription.build",{"_index":3716,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["subscriptionhandl",{"_index":2607,"title":{},"name":{},"text":{"47":{},"120":{}},"component":{}}],["subscriptionhandle.register(plcsubscriptionev",{"_index":2609,"title":{},"name":{},"text":{"47":{},"120":{}},"component":{}}],["subscriptionnam",{"_index":2604,"title":{},"name":{},"text":{"47":{},"120":{}},"component":{}}],["subscriptionrequest",{"_index":2505,"title":{},"name":{},"text":{"46":{},"47":{},"119":{},"120":{}},"component":{}}],["subscriptionrequest.execut",{"_index":2543,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["subscriptionrequest.execute().get",{"_index":2602,"title":{},"name":{},"text":{"47":{},"120":{}},"component":{}}],["subscriptionrequestresult",{"_index":2544,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["subscriptionrequestresult.err",{"_index":2545,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["subscriptionrequestresult.err.error",{"_index":2546,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["subscriptionrequestresultchanel",{"_index":2542,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["subsequ",{"_index":3697,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["subset",{"_index":4310,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["substitut",{"_index":1562,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["subtyp",{"_index":4281,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["success",{"_index":1938,"title":{"34-9":{},"36-12":{},"195-9":{},"197-12":{}},"name":{},"text":{"30":{},"31":{},"32":{},"37":{},"39":{},"43":{},"56":{},"83":{},"145":{},"159":{},"191":{},"192":{},"193":{},"198":{},"199":{}},"component":{}}],["successful",{"_index":4408,"title":{},"name":{},"text":{"105":{},"205":{}},"component":{}}],["successfulli",{"_index":2730,"title":{},"name":{},"text":{"50":{},"98":{},"122":{},"170":{}},"component":{}}],["such",{"_index":71,"title":{},"name":{},"text":{"2":{},"9":{},"10":{},"15":{},"16":{},"17":{},"21":{},"30":{},"31":{},"32":{},"39":{},"41":{},"46":{},"50":{},"65":{},"78":{},"82":{},"83":{},"85":{},"101":{},"103":{},"106":{},"107":{},"113":{},"115":{},"119":{},"122":{},"128":{},"141":{},"145":{},"172":{},"179":{},"180":{},"182":{},"199":{},"202":{}},"component":{}}],["sudo",{"_index":1814,"title":{},"name":{},"text":{"26":{},"30":{},"81":{},"143":{},"187":{},"191":{}},"component":{}}],["suffici",{"_index":251,"title":{},"name":{},"text":{"3":{},"9":{},"173":{},"179":{}},"component":{}}],["suffix",{"_index":2082,"title":{},"name":{},"text":{"34":{},"36":{},"50":{},"122":{},"195":{},"197":{}},"component":{}}],["suggest",{"_index":2064,"title":{},"name":{},"text":{"34":{},"36":{},"50":{},"91":{},"122":{},"152":{},"195":{},"197":{}},"component":{}}],["suit",{"_index":1669,"title":{},"name":{},"text":{"17":{},"21":{},"113":{},"182":{}},"component":{}}],["suitabl",{"_index":152,"title":{},"name":{},"text":{"3":{},"17":{},"92":{},"113":{},"153":{},"173":{}},"component":{}}],["sum",{"_index":3185,"title":{},"name":{},"text":{"72":{},"135":{}},"component":{}}],["summar",{"_index":769,"title":{},"name":{},"text":{"9":{},"41":{},"179":{}},"component":{}}],["summari",{"_index":955,"title":{"83-1":{},"145-1":{}},"name":{},"text":{"9":{},"34":{},"36":{},"179":{},"195":{},"197":{}},"component":{}}],["summit",{"_index":396,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["super(\"/testsuite/modbustestsuite.xml",{"_index":2313,"title":{},"name":{},"text":{"39":{},"199":{}},"component":{}}],["supersed",{"_index":3670,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["supervis",{"_index":3658,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["suppli",{"_index":3352,"title":{},"name":{},"text":{"78":{},"83":{},"141":{},"145":{}},"component":{}}],["support",{"_index":67,"title":{"14":{},"74":{},"111":{},"30-3":{},"30-4":{},"31-3":{},"31-4":{},"32-3":{},"32-4":{},"77-10":{},"83-2":{},"85-2":{},"137-1":{},"140-10":{},"145-2":{}},"name":{"14":{},"111":{}},"text":{"2":{},"3":{},"8":{},"12":{},"14":{},"15":{},"17":{},"21":{},"41":{},"46":{},"47":{},"48":{},"50":{},"56":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"90":{},"91":{},"101":{},"103":{},"105":{},"106":{},"110":{},"111":{},"113":{},"119":{},"120":{},"122":{},"123":{},"125":{},"126":{},"127":{},"128":{},"129":{},"133":{},"134":{},"135":{},"136":{},"137":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"152":{},"159":{},"172":{},"173":{},"178":{},"182":{},"202":{},"205":{}},"component":{}}],["supportedopt",{"_index":1770,"title":{},"name":{},"text":{"21":{},"101":{},"182":{},"202":{}},"component":{}}],["supportedoutputflavor",{"_index":1768,"title":{},"name":{},"text":{"21":{},"101":{},"182":{},"202":{}},"component":{}}],["suppos",{"_index":3693,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sure",{"_index":1241,"title":{},"name":{},"text":{"15":{},"26":{},"31":{},"32":{},"34":{},"36":{},"37":{},"39":{},"40":{},"46":{},"48":{},"50":{},"55":{},"56":{},"59":{},"82":{},"83":{},"88":{},"106":{},"119":{},"122":{},"150":{},"157":{},"159":{},"162":{},"187":{},"192":{},"193":{},"195":{},"197":{},"198":{},"199":{}},"component":{}}],["surpris",{"_index":2261,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["suspend",{"_index":2819,"title":{},"name":{},"text":{"55":{},"56":{},"157":{},"159":{}},"component":{}}],["suspend=i",{"_index":2908,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["suspend=n",{"_index":2907,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["svn",{"_index":2103,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["sw",{"_index":1095,"title":{},"name":{},"text":{"10":{},"85":{},"180":{}},"component":{}}],["sw1",{"_index":3963,"title":{},"name":{},"text":{"85":{}},"component":{}}],["swap",{"_index":1362,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["sweet",{"_index":2185,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["swim",{"_index":1010,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["switch",{"_index":1499,"title":{},"name":{},"text":{"15":{},"17":{},"34":{},"36":{},"59":{},"78":{},"83":{},"86":{},"103":{},"106":{},"113":{},"141":{},"145":{},"147":{},"162":{},"195":{},"197":{},"204":{}},"component":{}}],["switchtyp",{"_index":4311,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["sy",{"_index":3610,"title":{"83-19":{},"145-19":{}},"name":{},"text":{"83":{},"145":{}},"component":{}}],["symbol",{"_index":1873,"title":{},"name":{},"text":{"27":{},"62":{},"70":{},"87":{},"104":{},"125":{},"133":{},"148":{},"188":{},"206":{}},"component":{}}],["symbolic)'rec",{"_index":4349,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["symbolic)'send",{"_index":4347,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["symboltyp",{"_index":4228,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["symlink",{"_index":1947,"title":{},"name":{},"text":{"30":{}},"component":{}}],["sync",{"_index":2152,"title":{},"name":{},"text":{"34":{},"36":{},"49":{},"124":{},"195":{},"197":{}},"component":{}}],["synchron",{"_index":1134,"title":{},"name":{},"text":{"12":{},"47":{},"50":{},"83":{},"86":{},"110":{},"120":{},"122":{},"145":{},"147":{}},"component":{}}],["syntax",{"_index":540,"title":{"103-3":{},"204-3":{}},"name":{},"text":{"5":{},"15":{},"27":{},"41":{},"50":{},"66":{},"72":{},"78":{},"82":{},"83":{},"92":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"103":{},"106":{},"122":{},"129":{},"135":{},"145":{},"153":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"174":{},"188":{},"204":{}},"component":{}}],["system",{"_index":127,"title":{"36-2":{},"83-22":{},"145-22":{},"197-2":{}},"name":{},"text":{"3":{},"9":{},"10":{},"12":{},"13":{},"17":{},"21":{},"22":{},"27":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"41":{},"43":{},"46":{},"55":{},"56":{},"82":{},"83":{},"85":{},"86":{},"90":{},"110":{},"112":{},"113":{},"115":{},"119":{},"145":{},"147":{},"157":{},"159":{},"173":{},"174":{},"179":{},"180":{},"182":{},"183":{},"188":{},"189":{},"191":{},"193":{},"195":{},"197":{}},"component":{}}],["system.out.println",{"_index":3726,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(\"befor",{"_index":3855,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(\"by",{"_index":3885,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(\"chapt",{"_index":3862,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(\"current_mod",{"_index":3732,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(\"diagnost",{"_index":3780,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(\"docu",{"_index":3860,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(\"end",{"_index":3737,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(\"i",{"_index":4101,"title":{},"name":{},"text":{"92":{},"153":{}},"component":{}}],["system.out.println(\"queri",{"_index":3717,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(\"system",{"_index":3856,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(\"szl",{"_index":3883,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(\"url",{"_index":3864,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(\"wait",{"_index":3735,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(entity.getpressur",{"_index":4033,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["system.out.println(plcsubscriptionevent.getplcvalue(tagnam",{"_index":2611,"title":{},"name":{},"text":{"47":{},"120":{}},"component":{}}],["system.out.println(sb.tostr",{"_index":3880,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(x",{"_index":3729,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.setproperty(simplelogger.default_log_level_key",{"_index":3854,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["systemroot%\\system32",{"_index":4463,"title":{},"name":{},"text":{"193":{}},"component":{}}],["systemroot%\\system32\\npcap",{"_index":4456,"title":{},"name":{},"text":{"193":{}},"component":{}}],["system’",{"_index":4457,"title":{},"name":{},"text":{"193":{}},"component":{}}],["szl",{"_index":3444,"title":{"83-22":{},"83-23":{},"145-22":{},"145-23":{}},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["szl(ssl",{"_index":3642,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["szl.execute(wb",{"_index":3879,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["szl.valueof(0x0012",{"_index":3874,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["szl_id",{"_index":3843,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["szl_id/index",{"_index":3848,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["szl_id=0x0012",{"_index":3888,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["szl_id=16#0012;index=16#0000",{"_index":3868,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["szl_id=16#0091;index=16#0000",{"_index":3486,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["szlrespons",{"_index":3491,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["szlresponse.getallbytes(\"myszl",{"_index":3870,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["szlresponse.getresponsecode(\"myszl",{"_index":3494,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["t",{"_index":3515,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["t.errorf(\"error",{"_index":2472,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["t.fail",{"_index":2473,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["tab",{"_index":2684,"title":{},"name":{},"text":{"50":{},"56":{},"122":{},"159":{}},"component":{}}],["tabl",{"_index":656,"title":{},"name":{},"text":{"8":{},"9":{},"14":{},"50":{},"62":{},"66":{},"71":{},"72":{},"74":{},"78":{},"82":{},"83":{},"87":{},"104":{},"122":{},"125":{},"129":{},"134":{},"135":{},"137":{},"141":{},"145":{},"148":{},"178":{},"179":{},"206":{}},"component":{}}],["table'brows",{"_index":4358,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["table'rec",{"_index":4353,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["table'return",{"_index":4359,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["table'send",{"_index":4354,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["table'subscrib",{"_index":4355,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["tables?truefalseconfig",{"_index":4381,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["tag",{"_index":2083,"title":{"41-3":{},"41-4":{},"78-13":{},"115-3":{}},"name":{},"text":{"34":{},"36":{},"41":{},"46":{},"47":{},"48":{},"59":{},"77":{},"78":{},"81":{},"82":{},"85":{},"90":{},"101":{},"115":{},"119":{},"120":{},"143":{},"162":{},"195":{},"197":{},"202":{}},"component":{}}],["tag_nam",{"_index":2645,"title":{},"name":{},"text":{"48":{}},"component":{}}],["tagnam",{"_index":2534,"title":{},"name":{},"text":{"46":{},"47":{},"50":{},"70":{},"119":{},"120":{},"122":{},"133":{}},"component":{}}],["tagname}[{startindex}]:{numberofel",{"_index":3126,"title":{},"name":{},"text":{"70":{},"133":{}},"component":{}}],["tagname}[{startindex}]:{numberofelements}:{datatyp",{"_index":3127,"title":{},"name":{},"text":{"70":{},"133":{}},"component":{}}],["tagrec",{"_index":4402,"title":{},"name":{},"text":{"105":{},"205":{}},"component":{}}],["take",{"_index":2048,"title":{},"name":{},"text":{"32":{},"34":{},"36":{},"56":{},"78":{},"82":{},"83":{},"90":{},"91":{},"98":{},"103":{},"141":{},"145":{},"152":{},"159":{},"170":{},"193":{},"195":{},"197":{},"204":{}},"component":{}}],["taken",{"_index":937,"title":{},"name":{},"text":{"9":{},"10":{},"83":{},"145":{},"179":{},"180":{},"193":{}},"component":{}}],["takt",{"_index":1704,"title":{},"name":{},"text":{"21":{}},"component":{}}],["talk",{"_index":322,"title":{},"name":{},"text":{"4":{},"5":{},"17":{},"82":{},"83":{},"113":{},"145":{},"174":{},"175":{}},"component":{}}],["tap",{"_index":3180,"title":{},"name":{},"text":{"72":{},"86":{},"135":{},"147":{}},"component":{}}],["target",{"_index":37,"title":{},"name":{},"text":{"2":{},"3":{},"9":{},"29":{},"36":{},"46":{},"59":{},"62":{},"63":{},"72":{},"77":{},"85":{},"102":{},"119":{},"125":{},"126":{},"135":{},"140":{},"162":{},"172":{},"173":{},"179":{},"189":{},"197":{},"203":{}},"component":{}}],["target/checkout",{"_index":2097,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["target/checkout/target",{"_index":2204,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["target/plc4j",{"_index":2783,"title":{},"name":{},"text":{"55":{},"86":{},"147":{},"157":{}},"component":{}}],["target/site/protocols/wombat/index.html",{"_index":1893,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["task",{"_index":1448,"title":{},"name":{},"text":{"15":{},"83":{},"87":{},"91":{},"106":{},"145":{},"148":{},"152":{},"201":{}},"component":{}}],["tasks.max\":\"1",{"_index":2810,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["tcp",{"_index":1299,"title":{"80":{},"99":{},"144":{},"169":{},"61-2":{},"62-3":{},"63-4":{},"64-2":{},"70-2":{},"73-2":{},"76-2":{},"77-2":{},"77-3":{},"77-5":{},"77-8":{},"78-2":{},"79-2":{},"80-2":{},"82-4":{},"83-7":{},"123-2":{},"125-3":{},"126-4":{},"127-2":{},"133-2":{},"136-2":{},"139-2":{},"140-2":{},"140-3":{},"140-5":{},"140-8":{},"141-2":{},"142-2":{},"144-2":{},"145-7":{}},"name":{"99":{},"169":{}},"text":{"15":{},"41":{},"50":{},"61":{},"62":{},"63":{},"64":{},"65":{},"70":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"85":{},"94":{},"99":{},"106":{},"115":{},"122":{},"123":{},"125":{},"126":{},"127":{},"128":{},"133":{},"136":{},"139":{},"140":{},"141":{},"142":{},"144":{},"145":{},"165":{},"169":{}},"component":{}}],["tcp.default",{"_index":2964,"title":{},"name":{},"text":{"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"123":{},"125":{},"126":{},"127":{},"133":{},"136":{},"139":{},"140":{},"141":{},"142":{},"144":{},"145":{}},"component":{}}],["tcp.keep",{"_index":2960,"title":{},"name":{},"text":{"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"123":{},"125":{},"126":{},"127":{},"133":{},"136":{},"139":{},"140":{},"141":{},"142":{},"144":{},"145":{}},"component":{}}],["tcp.no",{"_index":2961,"title":{},"name":{},"text":{"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"123":{},"125":{},"126":{},"127":{},"133":{},"136":{},"139":{},"140":{},"141":{},"142":{},"144":{},"145":{}},"component":{}}],["tcp/rtu/ascii",{"_index":3190,"title":{},"name":{},"text":{"74":{},"137":{}},"component":{}}],["tcp/udp/seri",{"_index":3230,"title":{"77":{},"140":{}},"name":{},"text":{},"component":{}}],["tcp/udp/whatev",{"_index":2328,"title":{},"name":{},"text":{"40":{}},"component":{}}],["tcp://127.0.0.1:502",{"_index":2929,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["tcp://192.168.23.30?unit",{"_index":2436,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["tcp://localhost",{"_index":2698,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["tcp://localhost:1502",{"_index":2700,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["tcp:tcp://127.0.0.1:502",{"_index":3240,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["tcp:{transport}://{ip",{"_index":3239,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["tcpport",{"_index":2920,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["teach",{"_index":2383,"title":{},"name":{},"text":{"43":{}},"component":{}}],["team",{"_index":895,"title":{"10":{},"180":{}},"name":{"10":{},"180":{}},"text":{"9":{},"20":{},"26":{},"36":{},"83":{},"91":{},"114":{},"145":{},"152":{},"174":{},"179":{},"187":{},"197":{}},"component":{}}],["techcamp",{"_index":417,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["technic",{"_index":534,"title":{},"name":{},"text":{"5":{},"9":{},"41":{},"83":{},"84":{},"90":{},"115":{},"145":{},"146":{},"174":{},"179":{}},"component":{}}],["technolog",{"_index":1000,"title":{},"name":{},"text":{"10":{},"11":{},"17":{},"82":{},"83":{},"113":{},"145":{},"180":{},"181":{}},"component":{}}],["teck",{"_index":1032,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["tecnol%c3%b3gica",{"_index":3604,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["tell",{"_index":509,"title":{},"name":{},"text":{"5":{},"7":{},"17":{},"21":{},"36":{},"39":{},"41":{},"91":{},"101":{},"113":{},"115":{},"152":{},"174":{},"177":{},"182":{},"197":{},"199":{},"202":{}},"component":{}}],["temperatur",{"_index":2508,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["templat",{"_index":1677,"title":{"37-3":{},"198-3":{}},"name":{},"text":{"21":{},"34":{},"36":{},"43":{},"82":{},"83":{},"84":{},"101":{},"103":{},"145":{},"146":{},"182":{},"195":{},"197":{},"202":{},"204":{}},"component":{}}],["template.java.ftlh",{"_index":4167,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["templates/java/io",{"_index":4186,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["templates/java/pojo",{"_index":4185,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["tempor",{"_index":3531,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["temporari",{"_index":2947,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["temporaryboolarray",{"_index":2930,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["temporarydint5",{"_index":2938,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["temporaryint4",{"_index":2936,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["temporaryreal6",{"_index":2940,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["temporaryreal7",{"_index":2942,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["temporaryreal8",{"_index":2944,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["temporaryuint3",{"_index":2934,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["temporaryword2",{"_index":2932,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["term",{"_index":567,"title":{},"name":{},"text":{"6":{},"9":{},"12":{},"110":{},"176":{},"179":{}},"component":{}}],["termin",{"_index":1438,"title":{},"name":{},"text":{"15":{},"31":{},"46":{},"56":{},"71":{},"77":{},"82":{},"83":{},"87":{},"88":{},"102":{},"103":{},"106":{},"119":{},"134":{},"140":{},"145":{},"148":{},"150":{},"159":{},"192":{},"203":{},"204":{}},"component":{}}],["test",{"_index":235,"title":{"39":{},"92":{},"153":{},"199":{},"39-1":{},"92-3":{},"153-3":{},"199-1":{}},"name":{"39":{},"92":{},"153":{},"199":{}},"text":{"3":{},"8":{},"9":{},"10":{},"15":{},"16":{},"21":{},"22":{},"29":{},"34":{},"36":{},"37":{},"39":{},"40":{},"41":{},"55":{},"78":{},"81":{},"83":{},"84":{},"92":{},"98":{},"106":{},"107":{},"115":{},"141":{},"143":{},"145":{},"146":{},"153":{},"157":{},"170":{},"173":{},"178":{},"179":{},"180":{},"182":{},"183":{},"189":{},"193":{},"195":{},"197":{},"198":{},"199":{}},"component":{}}],["testcas",{"_index":2301,"title":{},"name":{},"text":{"39":{},"199":{}},"component":{}}],["testing_bool_1",{"_index":3958,"title":{},"name":{},"text":{"85":{}},"component":{}}],["testing_udt_1.start",{"_index":3961,"title":{},"name":{},"text":{"85":{}},"component":{}}],["testng",{"_index":682,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["tests/confirm",{"_index":3403,"title":{},"name":{},"text":{"78":{}},"component":{}}],["testsuit",{"_index":2283,"title":{"39-2":{},"199-2":{}},"name":{},"text":{"39":{},"183":{},"199":{}},"component":{}}],["text",{"_index":1707,"title":{},"name":{},"text":{"21":{},"34":{},"36":{},"37":{},"66":{},"83":{},"103":{},"129":{},"145":{},"195":{},"197":{},"198":{},"204":{}},"component":{}}],["th",{"_index":267,"title":{},"name":{},"text":{"3":{},"50":{},"86":{},"122":{},"147":{},"173":{}},"component":{}}],["thank",{"_index":1105,"title":{},"name":{},"text":{"11":{},"181":{}},"component":{}}],["that’",{"_index":478,"title":{},"name":{},"text":{"5":{},"26":{},"27":{},"46":{},"56":{},"119":{},"159":{},"174":{},"187":{},"188":{}},"component":{}}],["their",{"_index":2153,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["themselv",{"_index":961,"title":{},"name":{},"text":{"9":{},"36":{},"78":{},"141":{},"179":{},"197":{}},"component":{}}],["then\\n",{"_index":2007,"title":{},"name":{},"text":{"31":{},"192":{}},"component":{}}],["theoret",{"_index":3146,"title":{},"name":{},"text":{"71":{},"77":{},"91":{},"134":{},"140":{},"152":{}},"component":{}}],["therefor",{"_index":289,"title":{},"name":{},"text":{"3":{},"17":{},"26":{},"41":{},"42":{},"46":{},"47":{},"48":{},"50":{},"54":{},"82":{},"83":{},"87":{},"101":{},"103":{},"113":{},"115":{},"116":{},"119":{},"120":{},"122":{},"145":{},"148":{},"158":{},"187":{},"198":{},"202":{},"204":{}},"component":{}}],["there’",{"_index":305,"title":{},"name":{},"text":{"3":{},"36":{},"173":{},"197":{}},"component":{}}],["thing",{"_index":492,"title":{"26-3":{},"187-3":{}},"name":{},"text":{"5":{},"7":{},"9":{},"10":{},"16":{},"17":{},"21":{},"26":{},"34":{},"36":{},"37":{},"43":{},"46":{},"47":{},"48":{},"50":{},"56":{},"66":{},"83":{},"91":{},"103":{},"107":{},"113":{},"119":{},"120":{},"122":{},"129":{},"145":{},"152":{},"159":{},"174":{},"177":{},"179":{},"180":{},"182":{},"187":{},"193":{},"195":{},"197":{},"198":{},"204":{}},"component":{}}],["think",{"_index":1909,"title":{},"name":{},"text":{"29":{},"34":{},"36":{},"39":{},"56":{},"83":{},"88":{},"91":{},"145":{},"150":{},"152":{},"159":{},"189":{},"195":{},"197":{},"199":{}},"component":{}}],["thinkabl",{"_index":1687,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["third",{"_index":200,"title":{},"name":{},"text":{"3":{},"7":{},"9":{},"30":{},"31":{},"32":{},"46":{},"47":{},"65":{},"78":{},"86":{},"103":{},"119":{},"120":{},"128":{},"147":{},"173":{},"177":{},"179":{},"204":{}},"component":{}}],["thistyp",{"_index":4175,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["those",{"_index":932,"title":{},"name":{},"text":{"9":{},"27":{},"34":{},"37":{},"41":{},"83":{},"115":{},"145":{},"179":{},"188":{},"195":{},"198":{}},"component":{}}],["though",{"_index":2552,"title":{},"name":{},"text":{"47":{},"48":{},"78":{},"103":{},"120":{},"204":{}},"component":{}}],["thought",{"_index":640,"title":{},"name":{},"text":{"8":{},"36":{},"178":{},"197":{}},"component":{}}],["thousand",{"_index":2774,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["thread",{"_index":713,"title":{},"name":{},"text":{"8":{},"15":{},"34":{},"36":{},"87":{},"106":{},"148":{},"178":{},"195":{},"197":{}},"component":{}}],["thread.sleep(120000",{"_index":3736,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["thread.sleep(2000",{"_index":3884,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["three",{"_index":980,"title":{"82-6":{},"83-9":{},"145-9":{}},"name":{},"text":{"10":{},"21":{},"34":{},"36":{},"78":{},"82":{},"83":{},"101":{},"102":{},"145":{},"180":{},"195":{},"197":{},"202":{},"203":{}},"component":{}}],["thrift",{"_index":1698,"title":{},"name":{},"text":{"21":{},"173":{}},"component":{}}],["through",{"_index":1298,"title":{},"name":{},"text":{"15":{},"21":{},"66":{},"70":{},"78":{},"83":{},"106":{},"129":{},"133":{},"141":{},"145":{},"182":{}},"component":{}}],["throw",{"_index":1445,"title":{},"name":{},"text":{"15":{},"21":{},"83":{},"87":{},"101":{},"103":{},"106":{},"145":{},"148":{},"182":{},"202":{},"204":{}},"component":{}}],["throwabl",{"_index":2570,"title":{},"name":{},"text":{"47":{},"50":{},"120":{},"122":{}},"component":{}}],["thrown",{"_index":1406,"title":{},"name":{},"text":{"15":{},"50":{},"71":{},"103":{},"106":{},"122":{},"134":{},"204":{}},"component":{}}],["thru",{"_index":3262,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["thu",{"_index":1497,"title":{},"name":{},"text":{"15":{},"78":{},"83":{},"106":{},"145":{}},"component":{}}],["thüringen",{"_index":335,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["ti",{"_index":1605,"title":{},"name":{},"text":{"17":{},"83":{},"113":{},"145":{}},"component":{}}],["tia",{"_index":3499,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["ticket",{"_index":2236,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["tie",{"_index":1685,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["till",{"_index":2133,"title":{},"name":{},"text":{"34":{},"36":{},"46":{},"55":{},"56":{},"87":{},"103":{},"119":{},"148":{},"157":{},"159":{},"195":{},"197":{}},"component":{}}],["tim",{"_index":1092,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["time",{"_index":17,"title":{"2-4":{},"172-4":{}},"name":{},"text":{"3":{},"5":{},"9":{},"10":{},"12":{},"14":{},"15":{},"21":{},"27":{},"29":{},"34":{},"36":{},"41":{},"50":{},"54":{},"55":{},"56":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"85":{},"86":{},"87":{},"88":{},"90":{},"91":{},"92":{},"101":{},"103":{},"106":{},"110":{},"111":{},"122":{},"123":{},"125":{},"126":{},"127":{},"129":{},"133":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"147":{},"148":{},"150":{},"152":{},"153":{},"157":{},"158":{},"159":{},"173":{},"174":{},"179":{},"180":{},"182":{},"188":{},"189":{},"195":{},"197":{},"202":{},"204":{}},"component":{}}],["time.millisecond",{"_index":2515,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["time_differ",{"_index":3107,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["time_of_day",{"_index":1531,"title":{},"name":{},"text":{"15":{},"66":{},"82":{},"83":{},"106":{},"129":{},"145":{}},"component":{}}],["timecho",{"_index":1007,"title":{},"name":{},"text":{"10":{},"14":{},"111":{}},"component":{}}],["timeout",{"_index":2643,"title":{},"name":{},"text":{"48":{},"55":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"72":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"85":{},"87":{},"123":{},"125":{},"126":{},"127":{},"129":{},"133":{},"135":{},"136":{},"139":{},"140":{},"141":{},"142":{},"144":{},"145":{},"148":{},"157":{}},"component":{}}],["timeoutexcept",{"_index":2642,"title":{},"name":{},"text":{"48":{}},"component":{}}],["timer",{"_index":3516,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["timestamp",{"_index":2375,"title":{},"name":{},"text":{"41":{},"55":{},"78":{},"83":{},"145":{},"157":{}},"component":{}}],["timestamp\":1606047842350",{"_index":2853,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["timestamp_com",{"_index":3807,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["timestamp_go",{"_index":3806,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["timestamp_sourc",{"_index":2376,"title":{},"name":{},"text":{"41":{},"78":{}},"component":{}}],["timeunit.millisecond",{"_index":2575,"title":{},"name":{},"text":{"47":{},"120":{}},"component":{}}],["time|root.mi.d1.random_foo_integ",{"_index":2755,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["tip",{"_index":3229,"title":{"77-16":{},"78-10":{},"81-6":{},"82-11":{},"83-24":{},"84-8":{},"140-16":{},"141-10":{},"143-6":{},"145-24":{},"146-8":{}},"name":{},"text":{},"component":{}}],["titl",{"_index":327,"title":{},"name":{},"text":{"4":{},"27":{},"34":{},"36":{},"50":{},"122":{},"175":{},"188":{},"195":{},"197":{}},"component":{}}],["tl",{"_index":3350,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["tl/dr",{"_index":2161,"title":{"36-1":{},"197-1":{}},"name":{},"text":{},"component":{}}],["tlp",{"_index":1190,"title":{},"name":{},"text":{"13":{},"34":{},"36":{},"112":{},"195":{},"197":{}},"component":{}}],["tn",{"_index":4212,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["toc",{"_index":2234,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["tod",{"_index":3965,"title":{},"name":{},"text":{"85":{}},"component":{}}],["today",{"_index":1611,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["todo",{"_index":691,"title":{"83-21":{},"145-21":{}},"name":{},"text":{"8":{},"40":{},"55":{},"82":{},"83":{},"145":{},"157":{},"178":{}},"component":{}}],["togeth",{"_index":237,"title":{},"name":{},"text":{"3":{},"10":{},"15":{},"58":{},"82":{},"91":{},"106":{},"152":{},"173":{},"180":{}},"component":{}}],["toler",{"_index":3764,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["took",{"_index":1055,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["tool",{"_index":207,"title":{"11":{},"34":{},"79":{},"89":{},"142":{},"149":{},"181":{},"195":{},"37-2":{},"198-2":{}},"name":{"11":{},"34":{},"181":{},"195":{}},"text":{"3":{},"7":{},"8":{},"9":{},"10":{},"11":{},"12":{},"15":{},"16":{},"21":{},"26":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"41":{},"43":{},"50":{},"74":{},"78":{},"82":{},"83":{},"86":{},"91":{},"92":{},"106":{},"107":{},"110":{},"115":{},"122":{},"137":{},"141":{},"145":{},"147":{},"152":{},"153":{},"173":{},"177":{},"178":{},"179":{},"180":{},"181":{},"182":{},"187":{},"189":{},"193":{},"195":{},"197":{},"198":{}},"component":{}}],["tools.git",{"_index":2091,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["tools/cod",{"_index":2105,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["tools/download_staged_release.sh",{"_index":2277,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["toolset",{"_index":743,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["top",{"_index":764,"title":{},"name":{},"text":{"9":{},"15":{},"27":{},"36":{},"56":{},"66":{},"72":{},"93":{},"106":{},"129":{},"135":{},"159":{},"163":{},"179":{},"188":{},"197":{}},"component":{}}],["topic",{"_index":1245,"title":{},"name":{},"text":{"15":{},"34":{},"36":{},"55":{},"106":{},"157":{},"195":{},"197":{}},"component":{}}],["topics\":\"connect",{"_index":2812,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["topics.sh",{"_index":2799,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["topsecret",{"_index":2184,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["torqu",{"_index":3191,"title":{"79":{},"142":{}},"name":{},"text":{"74":{},"137":{}},"component":{}}],["total",{"_index":3845,"title":{},"name":{},"text":{"83":{},"101":{},"103":{},"145":{},"202":{}},"component":{}}],["touch",{"_index":2177,"title":{},"name":{},"text":{"36":{},"83":{},"145":{},"197":{}},"component":{}}],["tp",{"_index":4292,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["tpdurefer",{"_index":4267,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["tpktpacket",{"_index":1410,"title":{},"name":{},"text":{"15":{},"103":{},"106":{},"204":{}},"component":{}}],["trace",{"_index":1039,"title":{},"name":{},"text":{"10":{},"78":{},"83":{},"141":{},"145":{},"180":{}},"component":{}}],["track",{"_index":1101,"title":{},"name":{},"text":{"11":{},"30":{},"31":{},"32":{},"36":{},"83":{},"87":{},"145":{},"148":{},"181":{},"197":{}},"component":{}}],["tracker",{"_index":528,"title":{"18":{},"24":{},"185":{}},"name":{},"text":{"5":{},"9":{},"18":{},"24":{},"174":{},"179":{},"185":{}},"component":{}}],["trade",{"_index":1655,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["traffic",{"_index":2348,"title":{},"name":{},"text":{"41":{},"82":{},"83":{},"86":{},"115":{},"145":{},"147":{}},"component":{}}],["train",{"_index":187,"title":{},"name":{},"text":{"3":{},"14":{},"111":{},"173":{}},"component":{}}],["transact",{"_index":4221,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["transactioncount",{"_index":4240,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["transfer",{"_index":1701,"title":{},"name":{},"text":{"21":{},"36":{},"66":{},"82":{},"83":{},"129":{},"145":{},"197":{}},"component":{}}],["transferleft\":tru",{"_index":2849,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["transferright\":fals",{"_index":2848,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["transform",{"_index":3011,"title":{},"name":{},"text":{"65":{},"72":{},"128":{},"135":{}},"component":{}}],["transit",{"_index":884,"title":{},"name":{},"text":{"9":{},"83":{},"145":{},"179":{}},"component":{}}],["translat",{"_index":3837,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["transmiss",{"_index":3152,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["transmit_pdo_1:nodeid:type[arrays",{"_index":3061,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["transmit_pdo_2:nodeid:type[arrays",{"_index":3063,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["transmit_pdo_3:nodeid:type[arrays",{"_index":3065,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["transmit_pdo_4:nodeid:type[arrays",{"_index":3067,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["transmitt",{"_index":2979,"title":{},"name":{},"text":{"62":{},"125":{}},"component":{}}],["transpar",{"_index":163,"title":{},"name":{},"text":{"3":{},"47":{},"48":{},"50":{},"82":{},"83":{},"120":{},"122":{},"145":{},"173":{}},"component":{}}],["transport",{"_index":40,"title":{"94":{},"165":{},"93-2":{},"163-2":{}},"name":{},"text":{"2":{},"15":{},"30":{},"32":{},"41":{},"46":{},"50":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"93":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"106":{},"115":{},"119":{},"122":{},"123":{},"125":{},"126":{},"127":{},"128":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"153":{},"163":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"191":{}},"component":{}}],["transportinst",{"_index":35,"title":{},"name":{},"text":{"2":{},"172":{}},"component":{}}],["transports.registertcptransport(drivermanag",{"_index":2430,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["transports.registerudptransport(drivermanag",{"_index":2431,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["travi",{"_index":4444,"title":{},"name":{},"text":{"183":{}},"component":{}}],["treat",{"_index":871,"title":{},"name":{},"text":{"9":{},"48":{},"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"101":{},"103":{},"123":{},"125":{},"126":{},"127":{},"133":{},"136":{},"139":{},"140":{},"141":{},"142":{},"144":{},"145":{},"179":{},"202":{},"204":{}},"component":{}}],["tree",{"_index":2504,"title":{},"name":{},"text":{"46":{},"47":{},"59":{},"78":{},"119":{},"120":{},"141":{},"162":{}},"component":{}}],["tri",{"_index":57,"title":{},"name":{},"text":{"2":{},"3":{},"7":{},"9":{},"16":{},"21":{},"31":{},"46":{},"47":{},"48":{},"49":{},"50":{},"59":{},"66":{},"82":{},"83":{},"87":{},"91":{},"92":{},"101":{},"103":{},"107":{},"119":{},"120":{},"122":{},"124":{},"129":{},"145":{},"148":{},"152":{},"153":{},"162":{},"172":{},"173":{},"177":{},"179":{},"182":{},"202":{}},"component":{}}],["trick",{"_index":1791,"title":{},"name":{},"text":{"21":{},"103":{},"182":{},"193":{}},"component":{}}],["tricki",{"_index":2603,"title":{},"name":{},"text":{"47":{},"86":{},"120":{},"147":{},"193":{}},"component":{}}],["trigger",{"_index":1591,"title":{},"name":{},"text":{"16":{},"34":{},"36":{},"91":{},"107":{},"152":{},"195":{},"197":{}},"component":{}}],["triggercollector",{"_index":4066,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["triggercollector.start",{"_index":4072,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["triggercollectorimpl(plcdrivermanag",{"_index":4067,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["triggercommand",{"_index":4056,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["triggerconfig",{"_index":4081,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["triggeredscraperimpl",{"_index":4068,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["triggeredscraperimpl(scraperconfig",{"_index":4069,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["trip",{"_index":2285,"title":{},"name":{},"text":{"39":{},"199":{}},"component":{}}],["tripl",{"_index":2481,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["true",{"_index":1420,"title":{},"name":{},"text":{"15":{},"21":{},"36":{},"49":{},"56":{},"59":{},"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"86":{},"95":{},"103":{},"106":{},"122":{},"123":{},"124":{},"125":{},"126":{},"127":{},"133":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"147":{},"159":{},"162":{},"166":{},"182":{},"197":{},"204":{}},"component":{}}],["truncat",{"_index":1460,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["trust",{"_index":1158,"title":{},"name":{},"text":{"12":{},"36":{},"59":{},"78":{},"110":{},"141":{},"162":{},"197":{}},"component":{}}],["truststorefil",{"_index":4424,"title":{},"name":{},"text":{"141":{}},"component":{}}],["try(plcconnect",{"_index":4006,"title":{},"name":{},"text":{"88":{},"150":{}},"component":{}}],["tsap",{"_index":3453,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["tune",{"_index":2362,"title":{},"name":{},"text":{"41":{},"77":{},"103":{},"115":{},"204":{}},"component":{}}],["tunnel",{"_index":1297,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["turn",{"_index":3018,"title":{},"name":{},"text":{"65":{},"78":{},"88":{},"128":{},"141":{},"150":{}},"component":{}}],["turquois",{"_index":1693,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["tutori",{"_index":2253,"title":{"38":{},"200":{}},"name":{},"text":{"37":{},"43":{},"50":{},"78":{},"122":{},"198":{}},"component":{}}],["tweak",{"_index":1739,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["twice",{"_index":3977,"title":{},"name":{},"text":{"86":{},"147":{}},"component":{}}],["twin",{"_index":2911,"title":{},"name":{},"text":{"58":{}},"component":{}}],["twincat",{"_index":2967,"title":{},"name":{},"text":{"62":{},"125":{}},"component":{}}],["two",{"_index":641,"title":{"82-5":{},"83-8":{},"145-8":{}},"name":{},"text":{"8":{},"17":{},"21":{},"27":{},"34":{},"36":{},"40":{},"41":{},"50":{},"55":{},"56":{},"62":{},"66":{},"77":{},"81":{},"82":{},"83":{},"87":{},"90":{},"101":{},"102":{},"103":{},"113":{},"115":{},"122":{},"125":{},"129":{},"140":{},"143":{},"145":{},"148":{},"157":{},"159":{},"178":{},"182":{},"188":{},"195":{},"197":{},"202":{},"203":{},"204":{}},"component":{}}],["tx",{"_index":3172,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["tycho",{"_index":683,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["type",{"_index":326,"title":{"70-4":{},"76-6":{},"77-15":{},"78-8":{},"81-5":{},"82-10":{},"83-13":{},"83-20":{},"84-5":{},"84-7":{},"85-7":{},"103-1":{},"103-2":{},"103-3":{},"133-4":{},"139-6":{},"140-15":{},"141-8":{},"143-5":{},"145-13":{},"145-20":{},"146-5":{},"146-7":{},"204-1":{},"204-2":{},"204-3":{}},"name":{},"text":{"4":{},"12":{},"15":{},"16":{},"17":{},"21":{},"37":{},"39":{},"40":{},"41":{},"43":{},"46":{},"48":{},"50":{},"55":{},"56":{},"59":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"87":{},"90":{},"91":{},"101":{},"102":{},"103":{},"104":{},"106":{},"107":{},"110":{},"113":{},"115":{},"119":{},"122":{},"123":{},"125":{},"126":{},"127":{},"128":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"148":{},"152":{},"157":{},"159":{},"162":{},"175":{},"182":{},"198":{},"199":{},"202":{},"203":{},"204":{},"206":{}},"component":{}}],["type\":\"boolean\",\"optional\":true,\"field\":\"conveyorentri",{"_index":2836,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["type\":\"boolean\",\"optional\":true,\"field\":\"conveyorleft",{"_index":2829,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["type\":\"boolean\",\"optional\":true,\"field\":\"conveyorright",{"_index":2830,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["type\":\"boolean\",\"optional\":true,\"field\":\"load",{"_index":2831,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["type\":\"boolean\",\"optional\":true,\"field\":\"run",{"_index":2828,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["type\":\"boolean\",\"optional\":true,\"field\":\"transferleft",{"_index":2835,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["type\":\"boolean\",\"optional\":true,\"field\":\"transferright",{"_index":2834,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["type\":\"boolean\",\"optional\":true,\"field\":\"unload",{"_index":2833,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["type\":\"int32\",\"optional\":true,\"field\":\"numlargebox",{"_index":2832,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["type\":\"int32\",\"optional\":true,\"field\":\"numsmallbox",{"_index":2837,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["type\":\"int64\",\"optional\":false,\"field\":\"timestamp",{"_index":2839,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["type\":\"int64\",\"optional\":true,\"field\":\"expir",{"_index":2840,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["type\":\"struct\",\"field",{"_index":2827,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["type.nam",{"_index":4197,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["type.name}.java",{"_index":4190,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["type.parenttype.nam",{"_index":4198,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["type:address",{"_index":2371,"title":{},"name":{},"text":{"41":{}},"component":{}}],["type=logo",{"_index":3445,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["type=s7_400",{"_index":3482,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["type`",{"_index":4279,"title":{},"name":{},"text":{"103":{}},"component":{}}],["typecontext",{"_index":1755,"title":{},"name":{},"text":{"21":{}},"component":{}}],["typenam",{"_index":4135,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["typeswitch",{"_index":4229,"title":{"103-17":{},"204-16":{}},"name":{},"text":{"102":{},"103":{},"203":{},"204":{}},"component":{}}],["type}/{alias}:{data",{"_index":3934,"title":{},"name":{},"text":{"84":{},"146":{}},"component":{}}],["type}[{array",{"_index":3227,"title":{},"name":{},"text":{"76":{},"77":{},"82":{},"83":{},"84":{},"85":{},"139":{},"140":{},"145":{},"146":{}},"component":{}}],["typic",{"_index":217,"title":{},"name":{},"text":{"3":{},"9":{},"39":{},"50":{},"71":{},"77":{},"82":{},"83":{},"87":{},"122":{},"134":{},"140":{},"145":{},"148":{},"173":{},"179":{},"193":{},"199":{}},"component":{}}],["u",{"_index":4420,"title":{},"name":{},"text":{"119":{}},"component":{}}],["ua",{"_index":1260,"title":{"43":{},"59":{},"78":{},"141":{},"43-2":{},"78-9":{},"78-11":{},"78-12":{},"78-14":{},"78-15":{},"141-9":{},"141-11":{}},"name":{},"text":{"15":{},"16":{},"36":{},"43":{},"59":{},"74":{},"78":{},"83":{},"106":{},"107":{},"137":{},"141":{},"145":{},"162":{},"197":{}},"component":{}}],["uber",{"_index":2784,"title":{},"name":{},"text":{"55":{},"59":{},"86":{},"147":{},"157":{},"162":{}},"component":{}}],["ubuntu",{"_index":1948,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["udint",{"_index":3080,"title":{},"name":{},"text":{"66":{},"72":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"129":{},"135":{},"139":{},"140":{},"141":{},"143":{},"145":{},"146":{}},"component":{}}],["udp",{"_index":43,"title":{"100":{},"171":{},"63-3":{},"75-2":{},"126-3":{},"138-2":{}},"name":{"100":{},"171":{}},"text":{"2":{},"15":{},"41":{},"63":{},"65":{},"75":{},"94":{},"97":{},"100":{},"106":{},"115":{},"126":{},"128":{},"138":{},"165":{},"168":{},"171":{},"172":{}},"component":{}}],["udp.loc",{"_index":2986,"title":{},"name":{},"text":{"63":{},"75":{},"126":{},"138":{}},"component":{}}],["udt",{"_index":3960,"title":{},"name":{},"text":{"85":{}},"component":{}}],["ui",{"_index":634,"title":{"8-2":{},"178-2":{}},"name":{},"text":{"8":{},"50":{},"56":{},"122":{},"159":{},"178":{}},"component":{}}],["uid",{"_index":1953,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["uint",{"_index":3078,"title":{},"name":{},"text":{"66":{},"72":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"102":{},"103":{},"129":{},"135":{},"139":{},"140":{},"141":{},"143":{},"145":{},"146":{},"203":{},"204":{}},"component":{}}],["ukasz",{"_index":1044,"title":{},"name":{},"text":{"10":{},"14":{},"111":{},"180":{}},"component":{}}],["ulint",{"_index":3084,"title":{},"name":{},"text":{"66":{},"72":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"129":{},"135":{},"140":{},"141":{},"143":{},"145":{},"146":{}},"component":{}}],["uma",{"_index":3192,"title":{"85":{}},"name":{"85":{}},"text":{"74":{},"85":{}},"component":{}}],["umas:tcp://127.0.0.1:502",{"_index":3954,"title":{},"name":{},"text":{"85":{}},"component":{}}],["umas:{transport}://{ip",{"_index":3953,"title":{},"name":{},"text":{"85":{}},"component":{}}],["umbau",{"_index":389,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["unabl",{"_index":1926,"title":{},"name":{},"text":{"29":{},"189":{}},"component":{}}],["unanim",{"_index":840,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["uncomfort",{"_index":4045,"title":{},"name":{},"text":{"91":{},"152":{}},"component":{}}],["uncommit",{"_index":2202,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["unconfirm",{"_index":3458,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["unconnect",{"_index":3124,"title":{},"name":{},"text":{"70":{},"76":{},"105":{},"205":{}},"component":{}}],["und",{"_index":390,"title":{},"name":{},"text":{"4":{},"13":{},"112":{},"175":{}},"component":{}}],["under",{"_index":302,"title":{},"name":{},"text":{"3":{},"9":{},"21":{},"26":{},"34":{},"36":{},"37":{},"40":{},"65":{},"78":{},"82":{},"92":{},"101":{},"128":{},"153":{},"173":{},"179":{},"187":{},"195":{},"197":{},"198":{},"202":{}},"component":{}}],["underli",{"_index":1351,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["underlin",{"_index":3988,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["understand",{"_index":193,"title":{},"name":{},"text":{"3":{},"21":{},"41":{},"91":{},"115":{},"152":{},"173":{},"182":{}},"component":{}}],["underwhelm",{"_index":2424,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["unfortun",{"_index":741,"title":{},"name":{},"text":{"8":{},"17":{},"21":{},"32":{},"83":{},"113":{},"145":{},"173":{},"178":{}},"component":{}}],["unicod",{"_index":3112,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["unicode_str",{"_index":3108,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["unif",{"_index":3016,"title":{},"name":{},"text":{"65":{},"93":{},"128":{},"163":{}},"component":{}}],["unifi",{"_index":3015,"title":{},"name":{},"text":{"65":{},"78":{},"83":{},"93":{},"128":{},"141":{},"145":{},"163":{}},"component":{}}],["uniform",{"_index":1582,"title":{},"name":{},"text":{"16":{},"83":{},"107":{},"145":{}},"component":{}}],["uninstal",{"_index":4460,"title":{},"name":{},"text":{"193":{}},"component":{}}],["uniqu",{"_index":2925,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["unit",{"_index":245,"title":{"92-3":{},"153-3":{}},"name":{},"text":{"3":{},"10":{},"29":{},"41":{},"43":{},"77":{},"85":{},"92":{},"115":{},"140":{},"153":{},"173":{},"180":{},"189":{}},"component":{}}],["uniti",{"_index":3950,"title":{},"name":{},"text":{"85":{}},"component":{}}],["univers",{"_index":1079,"title":{},"name":{},"text":{"10":{},"12":{},"50":{},"110":{},"122":{},"180":{},"182":{}},"component":{}}],["unix",{"_index":4470,"title":{},"name":{},"text":{"193":{}},"component":{}}],["unknown",{"_index":4253,"title":{"103-18":{}},"name":{},"text":{"103":{},"204":{}},"component":{}}],["unless",{"_index":268,"title":{},"name":{},"text":{"3":{},"78":{},"90":{},"101":{},"141":{},"173":{},"202":{}},"component":{}}],["unlik",{"_index":3432,"title":{},"name":{},"text":{"81":{},"83":{},"143":{},"145":{}},"component":{}}],["unload\":tru",{"_index":2847,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["unmanag",{"_index":3203,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["unmodifi",{"_index":4131,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["unnecesari",{"_index":3509,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["unnecessari",{"_index":4001,"title":{},"name":{},"text":{"88":{},"150":{}},"component":{}}],["unnecessarili",{"_index":3657,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["uno",{"_index":3168,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["unpack",{"_index":2782,"title":{},"name":{},"text":{"55":{},"63":{},"75":{},"81":{},"126":{},"138":{},"143":{},"157":{}},"component":{}}],["unprotect",{"_index":4218,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["unreleas",{"_index":2069,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["unresolvedread",{"_index":4361,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["unresolvedsubscrib",{"_index":4370,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["unresolvedwrit",{"_index":4365,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["unsign",{"_index":1311,"title":{},"name":{},"text":{"15":{},"66":{},"77":{},"78":{},"82":{},"83":{},"103":{},"106":{},"129":{},"140":{},"141":{},"145":{},"204":{}},"component":{}}],["unsigned16",{"_index":3077,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["unsigned24",{"_index":3079,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["unsigned32",{"_index":3081,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["unsigned40",{"_index":3082,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["unsigned48",{"_index":3085,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["unsigned56",{"_index":3087,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["unsigned64",{"_index":3089,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["unsigned8",{"_index":3052,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["unsigned8[4",{"_index":3053,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["unsubscrib",{"_index":4095,"title":{},"name":{},"text":{"92":{},"104":{},"153":{},"206":{}},"component":{}}],["unsubscribe'unsubscrib",{"_index":4374,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["unsubscript",{"_index":4377,"title":{},"name":{},"text":{"104":{},"105":{},"205":{},"206":{}},"component":{}}],["unsupport",{"_index":3106,"title":{},"name":{},"text":{"66":{},"78":{},"129":{}},"component":{}}],["unsur",{"_index":3195,"title":{},"name":{},"text":{"74":{},"137":{}},"component":{}}],["unter",{"_index":1031,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["until",{"_index":1498,"title":{},"name":{},"text":{"15":{},"50":{},"87":{},"103":{},"106":{},"122":{},"148":{},"204":{}},"component":{}}],["unwant",{"_index":3000,"title":{},"name":{},"text":{"63":{},"75":{},"126":{},"138":{}},"component":{}}],["unzip",{"_index":2260,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["up",{"_index":206,"title":{"5-4":{},"34-10":{},"36-14":{},"50-1":{},"56-1":{},"122-1":{},"159-1":{},"174-4":{},"195-10":{},"197-14":{}},"name":{},"text":{"3":{},"6":{},"9":{},"10":{},"15":{},"17":{},"21":{},"27":{},"29":{},"32":{},"34":{},"36":{},"46":{},"50":{},"56":{},"66":{},"72":{},"77":{},"78":{},"82":{},"83":{},"87":{},"90":{},"91":{},"92":{},"103":{},"106":{},"113":{},"119":{},"122":{},"129":{},"135":{},"140":{},"141":{},"145":{},"148":{},"152":{},"153":{},"159":{},"173":{},"176":{},"179":{},"180":{},"182":{},"188":{},"189":{},"195":{},"197":{},"204":{}},"component":{}}],["updat",{"_index":525,"title":{"36-18":{},"36-19":{},"197-18":{},"197-19":{}},"name":{},"text":{"5":{},"14":{},"15":{},"17":{},"21":{},"22":{},"26":{},"27":{},"30":{},"31":{},"32":{},"34":{},"36":{},"40":{},"46":{},"47":{},"48":{},"66":{},"83":{},"90":{},"103":{},"104":{},"106":{},"111":{},"113":{},"119":{},"120":{},"129":{},"145":{},"174":{},"182":{},"187":{},"188":{},"191":{},"192":{},"195":{},"197":{},"204":{},"206":{}},"component":{}}],["updateallthetag",{"_index":4040,"title":{},"name":{},"text":{"90":{}},"component":{}}],["upgrad",{"_index":1135,"title":{},"name":{},"text":{"12":{},"20":{},"110":{},"114":{}},"component":{}}],["upload",{"_index":2167,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["upon",{"_index":1801,"title":{},"name":{},"text":{"22":{},"41":{},"43":{},"50":{},"59":{},"78":{},"82":{},"83":{},"91":{},"122":{},"145":{},"152":{},"162":{},"183":{}},"component":{}}],["upstream",{"_index":512,"title":{},"name":{},"text":{"5":{},"103":{},"174":{}},"component":{}}],["uri",{"_index":2411,"title":{},"name":{},"text":{"43":{},"78":{},"141":{}},"component":{}}],["url",{"_index":739,"title":{},"name":{},"text":{"8":{},"15":{},"26":{},"34":{},"36":{},"37":{},"78":{},"80":{},"82":{},"83":{},"106":{},"141":{},"144":{},"145":{},"178":{},"187":{},"195":{},"197":{},"198":{}},"component":{}}],["urn:my:plc:cli",{"_index":2412,"title":{},"name":{},"text":{"43":{}},"component":{}}],["us",{"_index":8,"title":{"8":{},"12":{},"49":{},"92":{},"110":{},"124":{},"153":{},"178":{},"2-3":{},"3-2":{},"3-3":{},"3-10":{},"8-2":{},"8-3":{},"17-1":{},"37-1":{},"43-1":{},"46-2":{},"47-1":{},"48-1":{},"56-3":{},"77-16":{},"78-10":{},"81-6":{},"82-11":{},"83-24":{},"84-8":{},"91-4":{},"91-6":{},"113-1":{},"119-2":{},"120-1":{},"140-16":{},"141-10":{},"143-6":{},"145-24":{},"146-8":{},"152-4":{},"152-6":{},"159-3":{},"172-3":{},"173-2":{},"173-3":{},"173-11":{},"178-2":{},"178-3":{},"198-1":{}},"name":{"49":{},"124":{}},"text":{"2":{},"3":{},"5":{},"6":{},"7":{},"8":{},"9":{},"12":{},"13":{},"15":{},"16":{},"17":{},"21":{},"22":{},"23":{},"25":{},"26":{},"27":{},"28":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"39":{},"40":{},"41":{},"43":{},"46":{},"47":{},"48":{},"49":{},"50":{},"52":{},"54":{},"55":{},"56":{},"59":{},"62":{},"63":{},"65":{},"66":{},"70":{},"71":{},"72":{},"75":{},"76":{},"77":{},"78":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"88":{},"90":{},"91":{},"92":{},"93":{},"98":{},"101":{},"102":{},"103":{},"106":{},"107":{},"110":{},"112":{},"113":{},"115":{},"119":{},"120":{},"122":{},"124":{},"125":{},"126":{},"128":{},"129":{},"133":{},"134":{},"135":{},"138":{},"139":{},"140":{},"141":{},"143":{},"144":{},"145":{},"146":{},"147":{},"148":{},"150":{},"151":{},"152":{},"153":{},"157":{},"158":{},"159":{},"162":{},"163":{},"170":{},"172":{},"173":{},"174":{},"176":{},"177":{},"178":{},"179":{},"182":{},"183":{},"184":{},"186":{},"187":{},"188":{},"190":{},"191":{},"192":{},"193":{},"195":{},"197":{},"198":{},"199":{},"202":{},"203":{},"204":{}},"component":{}}],["usabl",{"_index":1198,"title":{},"name":{},"text":{"14":{},"111":{}},"component":{}}],["usag",{"_index":1104,"title":{"33":{},"194":{},"43-2":{}},"name":{},"text":{"11":{},"15":{},"16":{},"17":{},"26":{},"42":{},"46":{},"54":{},"66":{},"83":{},"93":{},"106":{},"107":{},"113":{},"116":{},"119":{},"129":{},"145":{},"158":{},"163":{},"181":{},"187":{}},"component":{}}],["usecas",{"_index":4452,"title":{},"name":{},"text":{"192":{}},"component":{}}],["useconnectionmanag",{"_index":4413,"title":{},"name":{},"text":{"105":{},"205":{}},"component":{}}],["useconnectionmanagertruefalseconnectionid",{"_index":4414,"title":{},"name":{},"text":{"105":{},"205":{}},"component":{}}],["useless",{"_index":1665,"title":{},"name":{},"text":{"17":{},"21":{},"113":{},"182":{}},"component":{}}],["usemessagerout",{"_index":4412,"title":{},"name":{},"text":{"105":{},"205":{}},"component":{}}],["user",{"_index":487,"title":{"16":{},"107":{},"83-19":{},"145-19":{}},"name":{},"text":{"5":{},"9":{},"10":{},"15":{},"16":{},"21":{},"26":{},"36":{},"41":{},"47":{},"48":{},"50":{},"54":{},"55":{},"82":{},"83":{},"101":{},"106":{},"107":{},"115":{},"120":{},"122":{},"145":{},"157":{},"158":{},"174":{},"179":{},"180":{},"182":{},"187":{},"193":{},"197":{},"202":{}},"component":{}}],["usernam",{"_index":751,"title":{},"name":{},"text":{"8":{},"26":{},"59":{},"78":{},"141":{},"162":{},"174":{},"178":{},"187":{}},"component":{}}],["user’",{"_index":3773,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["usint",{"_index":3072,"title":{},"name":{},"text":{"66":{},"72":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"129":{},"135":{},"139":{},"140":{},"141":{},"143":{},"145":{},"146":{}},"component":{}}],["usr",{"_index":1979,"title":{},"name":{},"text":{"30":{},"83":{},"145":{}},"component":{}}],["usr/bin/rubi",{"_index":4450,"title":{},"name":{},"text":{"192":{}},"component":{}}],["usr/lib/jvm/java",{"_index":1950,"title":{},"name":{},"text":{"30":{}},"component":{}}],["usr/lib/jvm/jdk",{"_index":3426,"title":{},"name":{},"text":{"81":{},"143":{}},"component":{}}],["usr/share/dotnet/host/fxr",{"_index":1976,"title":{},"name":{},"text":{"30":{}},"component":{}}],["usual",{"_index":301,"title":{},"name":{},"text":{"3":{},"5":{},"12":{},"17":{},"21":{},"27":{},"29":{},"30":{},"32":{},"34":{},"36":{},"39":{},"41":{},"46":{},"47":{},"50":{},"75":{},"77":{},"78":{},"82":{},"83":{},"86":{},"87":{},"88":{},"90":{},"103":{},"110":{},"113":{},"115":{},"119":{},"120":{},"122":{},"138":{},"140":{},"141":{},"145":{},"147":{},"148":{},"150":{},"173":{},"174":{},"182":{},"188":{},"191":{},"193":{},"195":{},"197":{},"199":{},"204":{}},"component":{}}],["utf",{"_index":3104,"title":{},"name":{},"text":{"66":{},"78":{},"81":{},"103":{},"129":{},"141":{},"143":{}},"component":{}}],["util",{"_index":966,"title":{},"name":{},"text":{"9":{},"12":{},"16":{},"17":{},"21":{},"39":{},"66":{},"88":{},"101":{},"107":{},"110":{},"113":{},"129":{},"150":{},"179":{},"182":{},"199":{},"202":{}},"component":{}}],["v",{"_index":517,"title":{},"name":{},"text":{"5":{},"31":{},"174":{},"192":{}},"component":{}}],["v0.10.0",{"_index":2753,"title":{},"name":{},"text":{"54":{},"158":{}},"component":{}}],["v0.13.0",{"_index":2200,"title":{},"name":{},"text":{"36":{}},"component":{}}],["valid",{"_index":846,"title":{"35":{},"37":{},"196":{},"198":{},"78-9":{},"103-19":{},"141-9":{}},"name":{"37":{},"198":{}},"text":{"9":{},"21":{},"34":{},"36":{},"37":{},"39":{},"41":{},"43":{},"46":{},"47":{},"50":{},"51":{},"59":{},"66":{},"71":{},"77":{},"78":{},"83":{},"84":{},"87":{},"90":{},"101":{},"103":{},"115":{},"119":{},"120":{},"122":{},"129":{},"134":{},"140":{},"141":{},"145":{},"146":{},"148":{},"154":{},"162":{},"179":{},"182":{},"195":{},"197":{},"198":{},"199":{},"202":{}},"component":{}}],["valu",{"_index":281,"title":{},"name":{},"text":{"3":{},"8":{},"9":{},"10":{},"12":{},"15":{},"21":{},"40":{},"41":{},"43":{},"46":{},"47":{},"48":{},"50":{},"55":{},"56":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"90":{},"91":{},"92":{},"93":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"102":{},"103":{},"106":{},"110":{},"115":{},"119":{},"120":{},"122":{},"123":{},"125":{},"126":{},"127":{},"129":{},"133":{},"134":{},"135":{},"136":{},"137":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"151":{},"152":{},"153":{},"157":{},"159":{},"163":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"173":{},"178":{},"179":{},"180":{},"203":{},"204":{}},"component":{}}],["value1",{"_index":2485,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["value1.getfloat32",{"_index":2492,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["value2",{"_index":2487,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["value2.getfloat32",{"_index":2494,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["value=%db2:30.0:string(10",{"_index":2889,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["value=%db2:8:time;str",{"_index":2888,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["valueof(eventid.shortvalue()).getdescript",{"_index":3782,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["value}&{opt",{"_index":2366,"title":{},"name":{},"text":{"41":{},"115":{}},"component":{}}],["valv",{"_index":2512,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["vargument",{"_index":4491,"title":{},"name":{},"text":{"204":{}},"component":{}}],["vari",{"_index":2363,"title":{},"name":{},"text":{"41":{},"78":{},"83":{},"145":{}},"component":{}}],["variabl",{"_index":1561,"title":{},"name":{},"text":{"15":{},"32":{},"55":{},"66":{},"78":{},"83":{},"87":{},"103":{},"106":{},"129":{},"141":{},"145":{},"148":{},"151":{},"157":{},"204":{}},"component":{}}],["variant",{"_index":1296,"title":{},"name":{},"text":{"15":{},"21":{},"46":{},"66":{},"83":{},"103":{},"106":{},"119":{},"129":{},"145":{},"182":{}},"component":{}}],["varieti",{"_index":99,"title":{},"name":{},"text":{"3":{},"5":{},"16":{},"17":{},"36":{},"50":{},"65":{},"72":{},"107":{},"113":{},"122":{},"128":{},"135":{},"173":{},"174":{},"197":{}},"component":{}}],["variou",{"_index":861,"title":{},"name":{},"text":{"9":{},"15":{},"16":{},"41":{},"78":{},"93":{},"106":{},"107":{},"115":{},"163":{},"179":{}},"component":{}}],["vcan",{"_index":4128,"title":{},"name":{},"text":{"98":{},"170":{}},"component":{}}],["vcan0",{"_index":4125,"title":{},"name":{},"text":{"98":{},"170":{}},"component":{}}],["vendor",{"_index":97,"title":{},"name":{},"text":{"3":{},"12":{},"17":{},"21":{},"110":{},"113":{},"173":{},"182":{}},"component":{}}],["venezuela",{"_index":991,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["venv",{"_index":1933,"title":{"30-8":{},"191-6":{}},"name":{},"text":{"30":{},"191":{}},"component":{}}],["verbindung",{"_index":339,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["veri",{"_index":454,"title":{},"name":{},"text":{"5":{},"8":{},"9":{},"10":{},"12":{},"21":{},"36":{},"46":{},"47":{},"48":{},"50":{},"55":{},"66":{},"83":{},"86":{},"92":{},"93":{},"103":{},"110":{},"119":{},"120":{},"122":{},"129":{},"145":{},"147":{},"153":{},"157":{},"163":{},"174":{},"178":{},"179":{},"180":{},"182":{},"197":{},"204":{}},"component":{}}],["verif",{"_index":3306,"title":{"78-5":{},"141-5":{}},"name":{},"text":{},"component":{}}],["verifi",{"_index":1205,"title":{},"name":{},"text":{"14":{},"15":{},"29":{},"34":{},"36":{},"37":{},"49":{},"78":{},"82":{},"83":{},"103":{},"106":{},"111":{},"124":{},"141":{},"145":{},"189":{},"195":{},"197":{},"198":{},"204":{}},"component":{}}],["verify(mockdevice).read(eq(\"myadress",{"_index":4113,"title":{},"name":{},"text":{"92":{},"153":{}},"component":{}}],["versa",{"_index":3686,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["versatil",{"_index":1656,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["version",{"_index":148,"title":{"49":{},"124":{},"34-10":{},"34-12":{},"36-14":{},"36-16":{},"36-17":{},"195-10":{},"195-12":{},"197-14":{},"197-16":{},"197-17":{}},"name":{},"text":{"3":{},"5":{},"7":{},"8":{},"9":{},"10":{},"15":{},"17":{},"20":{},"21":{},"22":{},"26":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"41":{},"42":{},"46":{},"47":{},"49":{},"50":{},"55":{},"56":{},"59":{},"66":{},"71":{},"77":{},"78":{},"82":{},"83":{},"87":{},"88":{},"90":{},"91":{},"101":{},"104":{},"106":{},"113":{},"114":{},"115":{},"116":{},"119":{},"120":{},"122":{},"124":{},"129":{},"134":{},"140":{},"145":{},"148":{},"150":{},"152":{},"157":{},"159":{},"162":{},"173":{},"174":{},"177":{},"178":{},"179":{},"180":{},"182":{},"183":{},"187":{},"189":{},"191":{},"192":{},"193":{},"195":{},"197":{},"198":{},"202":{},"206":{}},"component":{}}],["version'rec",{"_index":4348,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["version'send",{"_index":4350,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["versionbrows",{"_index":4356,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["versionreset",{"_index":4345,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["versions:set",{"_index":2218,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["version}.{minor",{"_index":4439,"title":{},"name":{},"text":{"174":{}},"component":{}}],["version}/apach",{"_index":4481,"title":{},"name":{},"text":{"197":{}},"component":{}}],["version}/rc1",{"_index":2212,"title":{},"name":{},"text":{"36":{},"195":{},"197":{}},"component":{}}],["version}/rc1/apach",{"_index":4476,"title":{},"name":{},"text":{"195":{},"197":{}},"component":{}}],["version}/rc1/readm",{"_index":4474,"title":{},"name":{},"text":{"195":{},"197":{}},"component":{}}],["version}/rc1/release_not",{"_index":4475,"title":{},"name":{},"text":{"195":{},"197":{}},"component":{}}],["version}1",{"_index":4483,"title":{},"name":{},"text":{"198":{}},"component":{}}],["veto",{"_index":589,"title":{},"name":{},"text":{"6":{},"9":{},"176":{},"179":{}},"component":{}}],["via",{"_index":474,"title":{},"name":{},"text":{"5":{},"9":{},"15":{},"16":{},"17":{},"31":{},"32":{},"36":{},"39":{},"43":{},"47":{},"50":{},"55":{},"65":{},"72":{},"81":{},"82":{},"83":{},"87":{},"106":{},"107":{},"113":{},"120":{},"122":{},"128":{},"135":{},"143":{},"145":{},"148":{},"151":{},"157":{},"174":{},"179":{},"192":{},"197":{},"199":{}},"component":{}}],["vice",{"_index":3685,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["video",{"_index":188,"title":{"13":{},"112":{},"13-2":{},"112-2":{}},"name":{"13":{},"112":{}},"text":{"3":{},"173":{}},"component":{}}],["view",{"_index":756,"title":{},"name":{},"text":{"8":{},"34":{},"36":{},"41":{},"50":{},"115":{},"122":{},"178":{},"195":{},"197":{}},"component":{}}],["violat",{"_index":657,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["vipa",{"_index":3644,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["virtual",{"_index":1626,"title":{"50":{},"122":{},"50-1":{},"103-20":{},"122-1":{},"204-15":{}},"name":{"50":{},"122":{}},"text":{"17":{},"32":{},"50":{},"54":{},"92":{},"103":{},"113":{},"122":{},"153":{},"158":{},"193":{},"204":{}},"component":{}}],["visibl",{"_index":3111,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["visible_str",{"_index":3105,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["visit",{"_index":737,"title":{},"name":{},"text":{"8":{},"36":{},"178":{},"197":{}},"component":{}}],["visual",{"_index":1148,"title":{},"name":{},"text":{"12":{},"110":{},"193":{}},"component":{}}],["visualizaci%c3%b3n",{"_index":3577,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["vital",{"_index":1156,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["vlan",{"_index":2989,"title":{},"name":{},"text":{"63":{},"75":{},"81":{},"126":{},"138":{},"143":{}},"component":{}}],["vlaue",{"_index":1476,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["vm",{"_index":617,"title":{"26":{}},"name":{"26":{},"187":{}},"text":{"7":{},"26":{},"32":{},"177":{},"187":{}},"component":{}}],["vm2",{"_index":1833,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["vm2.apache.org",{"_index":1813,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["void",{"_index":1771,"title":{},"name":{},"text":{"21":{},"83":{},"87":{},"90":{},"91":{},"92":{},"101":{},"145":{},"148":{},"151":{},"152":{},"153":{},"182":{},"202":{}},"component":{}}],["volum",{"_index":3858,"title":{},"name":{},"text":{"83":{},"86":{},"145":{},"147":{}},"component":{}}],["voluntarili",{"_index":1200,"title":{},"name":{},"text":{"14":{}},"component":{}}],["voluntatili",{"_index":4416,"title":{},"name":{},"text":{"111":{}},"component":{}}],["vote",{"_index":559,"title":{"34-8":{},"34-9":{},"36-11":{},"36-12":{},"37-3":{},"195-8":{},"195-9":{},"197-11":{},"197-12":{},"198-3":{}},"name":{},"text":{"6":{},"9":{},"34":{},"36":{},"37":{},"176":{},"179":{},"195":{},"197":{},"198":{}},"component":{}}],["vstring",{"_index":4291,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["vulner",{"_index":1636,"title":{"20":{},"114":{},"20-1":{},"114-1":{}},"name":{},"text":{"17":{},"20":{},"113":{},"114":{}},"component":{}}],["v{current",{"_index":2221,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["v{releas",{"_index":2199,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["w",{"_index":167,"title":{},"name":{},"text":{"3":{},"82":{},"83":{},"145":{},"173":{}},"component":{}}],["wach",{"_index":2364,"title":{},"name":{},"text":{"41":{}},"component":{}}],["wait",{"_index":2132,"title":{},"name":{},"text":{"34":{},"36":{},"46":{},"82":{},"83":{},"87":{},"119":{},"145":{},"148":{},"195":{},"197":{}},"component":{}}],["walk",{"_index":1014,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["want",{"_index":75,"title":{},"name":{},"text":{"2":{},"3":{},"5":{},"7":{},"16":{},"21":{},"27":{},"29":{},"34":{},"36":{},"40":{},"41":{},"46":{},"47":{},"48":{},"49":{},"50":{},"55":{},"56":{},"59":{},"61":{},"70":{},"83":{},"86":{},"88":{},"90":{},"91":{},"92":{},"107":{},"115":{},"119":{},"120":{},"122":{},"123":{},"124":{},"133":{},"145":{},"147":{},"150":{},"152":{},"153":{},"157":{},"159":{},"162":{},"172":{},"173":{},"174":{},"177":{},"182":{},"188":{},"189":{},"195":{},"197":{}},"component":{}}],["warn",{"_index":660,"title":{},"name":{},"text":{"8":{},"15":{},"21":{},"34":{},"82":{},"83":{},"103":{},"106":{},"145":{},"178":{},"182":{},"195":{},"204":{}},"component":{}}],["warn_restart",{"_index":3699,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["warranti",{"_index":4194,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["warsaw",{"_index":1052,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["wasn’t",{"_index":2243,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["wast",{"_index":1887,"title":{},"name":{},"text":{"27":{},"103":{},"188":{}},"component":{}}],["watch",{"_index":1961,"title":{},"name":{},"text":{"30":{},"55":{},"157":{}},"component":{}}],["way",{"_index":271,"title":{},"name":{},"text":{"3":{},"4":{},"5":{},"9":{},"12":{},"13":{},"16":{},"17":{},"21":{},"34":{},"36":{},"37":{},"43":{},"46":{},"47":{},"48":{},"50":{},"55":{},"65":{},"66":{},"75":{},"83":{},"84":{},"86":{},"90":{},"92":{},"93":{},"98":{},"103":{},"107":{},"110":{},"112":{},"113":{},"119":{},"120":{},"122":{},"128":{},"129":{},"138":{},"145":{},"146":{},"147":{},"153":{},"157":{},"163":{},"170":{},"173":{},"174":{},"175":{},"179":{},"182":{},"195":{},"197":{},"198":{},"204":{}},"component":{}}],["way/apach",{"_index":767,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["wb",{"_index":3875,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["wchar",{"_index":3264,"title":{},"name":{},"text":{"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"140":{},"141":{},"143":{},"145":{},"146":{}},"component":{}}],["we'll",{"_index":1889,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["web",{"_index":633,"title":{"8-2":{},"178-2":{}},"name":{},"text":{"8":{},"13":{},"21":{},"26":{},"56":{},"112":{},"159":{},"178":{},"182":{},"187":{}},"component":{}}],["webadmin",{"_index":718,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["webinar",{"_index":1163,"title":{"13-2":{},"112-2":{}},"name":{},"text":{},"component":{}}],["webserv",{"_index":1902,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["websit",{"_index":80,"title":{"27":{},"188":{},"3-5":{},"27-3":{},"173-5":{},"188-3":{}},"name":{"27":{},"188":{}},"text":{"3":{},"5":{},"9":{},"15":{},"16":{},"22":{},"27":{},"28":{},"36":{},"106":{},"107":{},"173":{},"174":{},"179":{},"183":{},"188":{},"190":{},"197":{}},"component":{}}],["weed",{"_index":2015,"title":{},"name":{},"text":{"32":{}},"component":{}}],["weekend",{"_index":2136,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["welcom",{"_index":897,"title":{},"name":{},"text":{"9":{},"86":{},"147":{},"179":{}},"component":{}}],["well",{"_index":249,"title":{},"name":{},"text":{"3":{},"5":{},"7":{},"9":{},"12":{},"15":{},"16":{},"17":{},"21":{},"22":{},"26":{},"34":{},"36":{},"41":{},"50":{},"55":{},"56":{},"71":{},"78":{},"82":{},"83":{},"85":{},"91":{},"98":{},"101":{},"103":{},"106":{},"107":{},"110":{},"113":{},"122":{},"134":{},"141":{},"145":{},"152":{},"157":{},"159":{},"170":{},"173":{},"174":{},"177":{},"179":{},"182":{},"183":{},"187":{},"195":{},"197":{},"202":{},"204":{}},"component":{}}],["wenig",{"_index":422,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["went",{"_index":1316,"title":{},"name":{},"text":{"15":{},"26":{},"34":{},"36":{},"46":{},"47":{},"48":{},"50":{},"106":{},"119":{},"120":{},"122":{},"187":{},"195":{},"197":{}},"component":{}}],["we’ll",{"_index":940,"title":{},"name":{},"text":{"9":{},"29":{},"32":{},"37":{},"41":{},"46":{},"47":{},"56":{},"115":{},"119":{},"120":{},"159":{},"179":{},"189":{},"198":{}},"component":{}}],["we’r",{"_index":1960,"title":{},"name":{},"text":{"30":{},"91":{},"152":{},"179":{}},"component":{}}],["wget",{"_index":1965,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["whatev",{"_index":489,"title":{},"name":{},"text":{"5":{},"46":{},"119":{},"174":{}},"component":{}}],["what’",{"_index":287,"title":{},"name":{},"text":{"3":{},"7":{},"30":{},"31":{},"32":{},"34":{},"36":{},"173":{},"177":{},"195":{},"197":{}},"component":{}}],["when(mockdevice).read(anystring()).thenreturn(pair.of(plcresponsecode.ok",{"_index":4108,"title":{},"name":{},"text":{"92":{},"153":{}},"component":{}}],["whenev",{"_index":282,"title":{},"name":{},"text":{"3":{},"91":{},"152":{},"173":{}},"component":{}}],["wherea",{"_index":3959,"title":{},"name":{},"text":{"85":{}},"component":{}}],["wherev",{"_index":4335,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["whether",{"_index":3844,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["who`",{"_index":4259,"title":{},"name":{},"text":{"103":{}},"component":{}}],["whole",{"_index":3115,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["whose",{"_index":4097,"title":{},"name":{},"text":{"92":{},"103":{},"153":{},"204":{}},"component":{}}],["who’",{"_index":4486,"title":{},"name":{},"text":{"204":{}},"component":{}}],["wich",{"_index":4287,"title":{},"name":{},"text":{"103":{},"104":{},"206":{}},"component":{}}],["wide",{"_index":541,"title":{},"name":{},"text":{"5":{},"9":{},"17":{},"50":{},"71":{},"113":{},"122":{},"134":{},"174":{},"179":{}},"component":{}}],["widespread",{"_index":3043,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["width=100",{"_index":1910,"title":{},"name":{},"text":{"29":{}},"component":{}}],["wie",{"_index":373,"title":{},"name":{},"text":{"4":{},"13":{},"112":{},"175":{}},"component":{}}],["wiki",{"_index":1906,"title":{"28":{},"190":{}},"name":{"28":{},"190":{}},"text":{"28":{},"190":{}},"component":{}}],["wildcard",{"_index":3214,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["winbuild",{"_index":4453,"title":{"193-6":{}},"name":{},"text":{"193":{}},"component":{}}],["wincc",{"_index":3561,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["window",{"_index":140,"title":{"32":{},"193":{}},"name":{"32":{},"193":{}},"text":{"3":{},"7":{},"9":{},"29":{},"32":{},"37":{},"43":{},"50":{},"55":{},"56":{},"86":{},"97":{},"122":{},"147":{},"157":{},"159":{},"168":{},"173":{},"177":{},"179":{},"189":{},"193":{},"198":{}},"component":{}}],["wine",{"_index":3051,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["winpcap",{"_index":4459,"title":{},"name":{},"text":{"193":{}},"component":{}}],["wir",{"_index":374,"title":{},"name":{},"text":{"4":{},"13":{},"112":{},"175":{}},"component":{}}],["wireshark",{"_index":2325,"title":{},"name":{},"text":{"40":{},"41":{},"78":{},"86":{},"115":{},"141":{},"147":{}},"component":{}}],["wish",{"_index":3050,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["with",{"_index":924,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["within",{"_index":1450,"title":{"43-2":{}},"name":{},"text":{"15":{},"27":{},"43":{},"52":{},"55":{},"59":{},"70":{},"76":{},"77":{},"78":{},"83":{},"90":{},"106":{},"133":{},"139":{},"140":{},"141":{},"145":{},"157":{},"162":{},"188":{}},"component":{}}],["withmaxleasetime(duration.ofseconds(10",{"_index":3996,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["withmaxwaittime(duration.ofminutes(1",{"_index":3997,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["without",{"_index":230,"title":{"92":{},"153":{}},"name":{},"text":{"3":{},"5":{},"15":{},"16":{},"17":{},"21":{},"29":{},"41":{},"50":{},"55":{},"70":{},"76":{},"78":{},"82":{},"83":{},"84":{},"90":{},"101":{},"103":{},"106":{},"107":{},"113":{},"115":{},"122":{},"133":{},"139":{},"141":{},"145":{},"146":{},"151":{},"157":{},"173":{},"174":{},"182":{},"193":{},"202":{},"204":{}},"component":{}}],["without.html",{"_index":2247,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["wombat",{"_index":1726,"title":{},"name":{},"text":{"21":{},"27":{},"188":{}},"component":{}}],["won’t",{"_index":2157,"title":{},"name":{},"text":{"34":{},"81":{},"143":{},"195":{}},"component":{}}],["woodwork",{"_index":1085,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["word",{"_index":939,"title":{},"name":{},"text":{"9":{},"15":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"106":{},"139":{},"140":{},"141":{},"143":{},"145":{},"146":{},"179":{}},"component":{}}],["work",{"_index":194,"title":{},"name":{},"text":{"3":{},"5":{},"6":{},"7":{},"9":{},"10":{},"11":{},"12":{},"15":{},"17":{},"21":{},"26":{},"29":{},"30":{},"32":{},"34":{},"36":{},"40":{},"43":{},"46":{},"47":{},"56":{},"65":{},"74":{},"78":{},"82":{},"83":{},"86":{},"91":{},"92":{},"101":{},"103":{},"106":{},"110":{},"113":{},"119":{},"120":{},"128":{},"137":{},"145":{},"147":{},"152":{},"153":{},"159":{},"173":{},"174":{},"176":{},"177":{},"179":{},"180":{},"181":{},"182":{},"187":{},"193":{},"195":{},"197":{},"202":{}},"component":{}}],["workaround",{"_index":1696,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["worker",{"_index":1380,"title":{"55-6":{},"55-7":{},"55-9":{},"55-10":{},"157-6":{},"157-7":{},"157-9":{},"157-10":{}},"name":{},"text":{"15":{},"55":{},"106":{},"157":{}},"component":{}}],["workflow",{"_index":1892,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["workshop",{"_index":1213,"title":{},"name":{},"text":{"14":{},"111":{}},"component":{}}],["world",{"_index":1671,"title":{"36-20":{},"197-20":{}},"name":{},"text":{"17":{},"34":{},"36":{},"41":{},"113":{},"115":{},"195":{},"197":{}},"component":{}}],["worri",{"_index":1182,"title":{},"name":{},"text":{"13":{},"27":{},"112":{},"188":{}},"component":{}}],["wors",{"_index":3037,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["worth",{"_index":3987,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["wouldn’t",{"_index":1784,"title":{},"name":{},"text":{"21":{},"50":{},"122":{},"182":{}},"component":{}}],["wpcap.dll",{"_index":4462,"title":{},"name":{},"text":{"193":{}},"component":{}}],["wrap",{"_index":1472,"title":{},"name":{},"text":{"15":{},"39":{},"106":{},"199":{}},"component":{}}],["wrappedbuffer(dbyt",{"_index":3876,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["wrapper",{"_index":78,"title":{"3-2":{},"173-2":{}},"name":{},"text":{"3":{},"7":{},"36":{},"83":{},"88":{},"145":{},"150":{},"173":{},"177":{},"197":{}},"component":{}}],["wrapper.properti",{"_index":151,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["write",{"_index":820,"title":{"46-5":{},"47-3":{},"48-3":{},"50-3":{},"50-6":{},"119-5":{},"120-3":{},"122-3":{},"122-6":{}},"name":{"40":{},"201":{}},"text":{"9":{},"15":{},"17":{},"21":{},"29":{},"40":{},"41":{},"42":{},"46":{},"47":{},"48":{},"50":{},"52":{},"54":{},"55":{},"56":{},"66":{},"70":{},"71":{},"72":{},"74":{},"75":{},"77":{},"78":{},"80":{},"82":{},"83":{},"84":{},"85":{},"90":{},"92":{},"101":{},"103":{},"104":{},"105":{},"106":{},"113":{},"115":{},"116":{},"119":{},"120":{},"122":{},"129":{},"133":{},"134":{},"135":{},"137":{},"138":{},"140":{},"141":{},"144":{},"145":{},"146":{},"153":{},"157":{},"158":{},"159":{},"179":{},"182":{},"189":{},"202":{},"204":{},"205":{},"206":{}},"component":{}}],["write'subscrib",{"_index":4369,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["write'writ",{"_index":4366,"title":{},"name":{},"text":{"104":{},"206":{}},"component":{}}],["write(sdo:1:2/3:record",{"_index":3114,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["write(str",{"_index":4093,"title":{},"name":{},"text":{"92":{},"153":{}},"component":{}}],["write({writ",{"_index":1571,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["writerequest",{"_index":2728,"title":{},"name":{},"text":{"50":{},"122":{}},"component":{}}],["writerequest.execut",{"_index":2587,"title":{},"name":{},"text":{"47":{},"120":{}},"component":{}}],["writerequest.execute().get",{"_index":2589,"title":{},"name":{},"text":{"47":{},"50":{},"120":{},"122":{}},"component":{}}],["written",{"_index":536,"title":{},"name":{},"text":{"5":{},"9":{},"50":{},"72":{},"84":{},"103":{},"122":{},"135":{},"146":{},"174":{},"179":{}},"component":{}}],["wrong",{"_index":1516,"title":{"34-5":{},"36-8":{},"195-5":{},"197-8":{}},"name":{},"text":{"15":{},"21":{},"30":{},"31":{},"32":{},"34":{},"36":{},"46":{},"47":{},"48":{},"50":{},"78":{},"106":{},"119":{},"120":{},"122":{},"141":{},"182":{},"193":{},"195":{},"197":{}},"component":{}}],["wstring",{"_index":1250,"title":{},"name":{},"text":{"15":{},"78":{},"81":{},"82":{},"83":{},"106":{},"141":{},"143":{},"145":{}},"component":{}}],["ww",{"_index":3553,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["x",{"_index":2154,"title":{},"name":{},"text":{"34":{},"36":{},"55":{},"82":{},"83":{},"86":{},"145":{},"147":{},"157":{},"195":{},"197":{}},"component":{}}],["x.509",{"_index":2385,"title":{},"name":{},"text":{"43":{}},"component":{}}],["x509",{"_index":3344,"title":{},"name":{},"text":{"78":{}},"component":{}}],["x86_64",{"_index":1911,"title":{},"name":{},"text":{"29":{},"193":{}},"component":{}}],["xcode",{"_index":1993,"title":{},"name":{},"text":{"31":{}},"component":{}}],["xml",{"_index":684,"title":{},"name":{},"text":{"8":{},"21":{},"39":{},"82":{},"83":{},"145":{},"178":{},"182":{},"199":{}},"component":{}}],["xmluint",{"_index":2300,"title":{},"name":{},"text":{"39":{},"199":{}},"component":{}}],["xx",{"_index":4215,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["xxx",{"_index":3842,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["xyz",{"_index":2267,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["y",{"_index":3569,"title":{},"name":{},"text":{"82":{},"83":{},"145":{},"193":{}},"component":{}}],["yaml",{"_index":685,"title":{"91-6":{},"152-6":{}},"name":{},"text":{"8":{},"91":{},"152":{},"178":{}},"component":{}}],["ye",{"_index":599,"title":{},"name":{},"text":{"6":{},"83":{},"145":{},"176":{}},"component":{}}],["year",{"_index":1016,"title":{},"name":{},"text":{"10":{},"17":{},"36":{},"37":{},"90":{},"113":{},"151":{},"180":{},"197":{},"198":{}},"component":{}}],["yourself",{"_index":4471,"title":{},"name":{},"text":{"193":{}},"component":{}}],["you’ll",{"_index":1839,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["you’r",{"_index":493,"title":{},"name":{},"text":{"5":{},"29":{},"30":{},"34":{},"36":{},"46":{},"56":{},"119":{},"159":{},"174":{},"191":{},"195":{},"197":{}},"component":{}}],["you’v",{"_index":430,"title":{},"name":{},"text":{"4":{},"175":{}},"component":{}}],["yum",{"_index":1939,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["z",{"_index":1048,"title":{},"name":{},"text":{"10":{},"12":{},"14":{},"110":{},"111":{},"180":{}},"component":{}}],["zero",{"_index":4304,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["zheng",{"_index":1219,"title":{},"name":{},"text":{"14":{}},"component":{}}],["zip",{"_index":2078,"title":{},"name":{},"text":{"34":{},"36":{},"37":{},"193":{},"195":{},"197":{},"198":{}},"component":{}}],["zone",{"_index":929,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["zookeep",{"_index":2793,"title":{},"name":{},"text":{"55":{},"157":{}},"component":{}}],["zshrc",{"_index":2011,"title":{},"name":{},"text":{"31":{},"192":{}},"component":{}}]],"pipeline":["stemmer"]},"store":{"documents":{"1":{"id":1,"text":"","title":"Home","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/index.html","titles":[]},"2":{"id":2,"text":"In this simple case, an application asks the DriverManager to forward a connection creation to the corresponding Driver implementation, which then creates both a Connection and a MessageCodec instance. The Connection is the logical link between the connection state and the MessageCodec. A MessageCodec uses a TransportInstance to communicate with the target device. Serial transports based on RS475 and UDP Transports currently don’t allow sharing. That means only one connection instance can have access to one RS485 or one shared local UDP Port (Multiple UDP transport instances with different local ports however are possible). As soon as one connection is established and a second connection would try to access this, this would result in errors. However, multiple devices could be attached to the same RS458 port (Modbus RTU and Modbus ASCII explicitly supports this, however using different devices using different protocols over the same port is not possible) and in BACnet connecting to multiple remote BACnet devices would require one local UDP port to be used by multiple connections. Some protocols, such as BACnet require remotes to send data to a fixed udp port on a non-broadcast address. This causes problems as soon as we want to connect to multiple BACnet devices from the same host as only one instance can get access to that port.","title":"Architecture of PLC4X Connections","component":"plc4x","version":"pre-release","name":"architecture","url":"/plc4x/pre-release/developers/architecture.html","titles":[{"text":"Simple case","hash":"_simple_case","id":1},{"text":"Problems","hash":"_problems","id":2},{"text":"Protocols requiring us to use a fixed port on a non-broadcast address","hash":"_protocols_requiring_us_to_use_a_fixed_port_on_a_non_broadcast_address","id":3},{"text":"Protocols only allowing one connection at a time","hash":"_protocols_only_allowing_one_connection_at_a_time","id":4}]},"3":{"id":3,"text":"PLC4X is built with Apache Maven and we have tried to make the build as simple as possible. However PLC4X aims at providing means to communicate with PLCs of multiple vendors using a shared API but also in a variety of different languages. We have partitioned the build to allow selecting the parts that are of interest. This is done by selecting so-called Maven profiles. More about these later down in this manual. For your convenience we also have provided a Maven-Wrapper, that should allow building of PLC4X with only Java 11 or greater as requirement. The only requirements to building PLC4X should be: Java 11 JDK (or newer) Git (Even if you are building the source distribution, the Kafka plugin seems to require a git executable being available on the systems PATH) Apache Maven (3.6.0 or newer) (Optional) (See next chapter) The so-called Maven-Wrapper is used by calling the Maven-Wrapper scripts mvnw (Mac & Linux) or mvnw.cmd (Windows) instead of the default Maven commands mvn and mvn.cmd. These helpers ensure Maven is available in at least the version defined in .mvn/maven-wrapper.properties. If no suitable version can be found, it is automatically downloaded and installed alongside the project (So it doesn’t have to be downloaded every time and every project can have it’s own Maven version) After the script has ensured a suitable Maven version is available, this is used and all arguments and parameters are transparently forwarded to this. So simply adding the additional w to each of the Maven commands, there should be no difference to using a pre-installed Maven version. This document can’t provide you with all the details needed to get started with Maven itself. But there is a lot of good documentation out there. Justin McLean and Christofer Dutz even recorded a not quite 2-hour Maven training Video some time ago for another Apache project. It should handle all the details needed to get a general understanding of Maven and how it works. Recording of a Maven Training for Apache Flex from 2016 https://vimeo.com/167857327 As especially building the C++, and C# drivers requires building of some third party artifacts and increases build-time dramatically and requires setting up some additional third party tools, we have excluded these parts form the default Maven build. The following profiles are available: with-c: Builds all C related modules with-dotnet: Builds all C# and .Net related modules with-go: Builds all Go related modules with-java: Builds all Java related modules with-python: Builds all Python related modules As these profiles typically require some preparation and setup on your development machine, please read the Preparing your Computer guide for a detailed description on this. The minimum Apache PLC4X build will build only basic code-generation modules without support for any language: mvn install So if for example you want to build only the Java related modules, the following command will do that: mvn -P with-java install If you want to skip the running of tests (even if this is not encouraged) you can skip them all together. mvn -P with-java -DskipTests install All Apache PLC4X modules are built by executing the following command: mvn -P with-c,with-dotnet,with-go,with-java,with-python install This not only builds the artifacts and creates the jar files, but also runs all unit- and integration-tests. If you want to skip the running of tests (even if this is not encouraged) you can skip them all together. mvn -P with-c,with-dotnet,with-go,with-java,with-python install -DskipTests This will not skip the compilation of tests, however. The PLC4X Website is also part of the same GIT repository that contains the code and it is built by Maven as well. In order to build the website the following command should be sufficient: mvn site This is just a quick-start version of the site generation, for a fully detailed documentation please read the Website documentation page. Maven supports so-called profiles for customizing the build in special cases. We have tried to keep the number of profiles as low as possible. So far there is only one profile. This profile is automatically enabled on a release-build and it automatically creates some additional artifacts: JavaDoc artifact Sources artifact Source distribution assembly SHA512 checksum files for every artifact PGP signature files for every artifact Generally it is not required to enable ths profile unless you are interested in these Artifacts. Especially for Maven beginners, it might be difficult to understand why a module builds the way it does. Maven contains a lot of concepts to inherit and override settings. The debug-pom profile will generate the so-called effective pom in the modules target directory. This file contains 100% of the settings Maven uses to execute. All settings are inherited and overridden. All Properties are expanded to the value Maven uses. So whenever Maven doesn’t behave the way you expect it to, just enable this profile and it should help you find out, what’s going on. Some tests of the PLC4X project do require quite a bit of time to run. Therefore we decided to disable these for a normal build on developer machines. If you want to run them locally and not rely on them being run on the CI servers, enable the enable-all-checks profile. Compiling the library as explained here add the new version in the local Maven repository (i.e. usually under ~/.m2/repository on linux like systems), if you would like to use Gradle as Build Tool for your project you have just to use a local repository in your Gradle build.gradle file. Here there’s an example: repositories { mavenCentral() mavenLocal() } dependencies { implementation group: 'org.apache.plc4x', name: 'plc4j-api', version: '0.13.0-SNAPSHOT' implementation group: 'org.apache.plc4x', name: 'plc4j-driver-s7', version: '0.13.0-SNAPSHOT' implementation group: 'org.apache.plc4x', name: 'plc4j-connection-pool', version: '0.13.0-SNAPSHOT' }","title":"Building PLC4X","component":"plc4x","version":"pre-release","name":"building","url":"/plc4x/pre-release/developers/building.html","titles":[{"text":"Requirements","hash":"_requirements","id":1},{"text":"Using the Maven-Wrapper","hash":"_using_the_maven_wrapper","id":2},{"text":"Using Maven","hash":"_using_maven","id":3},{"text":"Building PLC4X with Maven","hash":"_building_plc4x_with_maven","id":4},{"text":"Building the PLC4X Website with Maven","hash":"_building_the_plc4x_website_with_maven","id":5},{"text":"Some special Maven profiles","hash":"_some_special_maven_profiles","id":6},{"text":"apache-release profile","hash":"_apache_release_profile","id":7},{"text":"debug-pom profile","hash":"_debug_pom_profile","id":8},{"text":"enable-all-checks profile","hash":"_enable_all_checks_profile","id":9},{"text":"Use the compiled library with Gradle","hash":"_use_the_compiled_library_with_gradle","id":10}]},"4":{"id":4,"text":"On this page we are listing options to attend talks and events around PLC4X. Date Location Type Event Title 18th June 2019 Erfurt (GER) Meetup IoT Thüringen Industrie & IoT: Die perfekte Verbindung mit Flexibus & Apache PLC4X 24th May 2019 Frankfurt (GER) Meetup IoT Hessen Industrial IoT goes Open Source: Apache PLC4X Talks & Party 3th April 2019 Cologne (GER) Conference Building IoT Apache PLC4X: Industry 4.0 done our way 8th March 2019 Solingen (GER) Conference Industrial IoT Day Apache PLC4X: Industry 4.0 done our way 21th February 2019 Aachen (GER) Meetup EURegJUG Maas-Rhine Episode IV - A New Hope: Industry 4.0 Done Our Way 15th February 2019 Nürtingen (GER) Meetup PLC4X Meetup Special Hackathon looking deeper into some new Protocols 15th November 2018 Düsseldorf (GER) Meetup RheinJUG Wie wir mit Apache PLC4X die Silos in der Automatisierungsindustrie aufbrechen 12th-13th November 2018 Berlin (GER) Conference 3. Fachkonferenz: Industrial Analytics & Big Data in der Industrie Kommunikation mit Industrieanlagen ohne Umbau- und Lizenzkosten 22th-24th October 2018 Edinburgh (GB) Conference Open-Source Summit Europe Revolutionizing the production industry with Apache PLC4X 24th-19th September 2018 Montreal (CAN) Conference ApacheCon NA 2018 Revolutionizing the Production Industry with Apache PLC4X (incubating) 20th September 2018 Nürtingen (GER) Meetup PLC4X Meetup First general committer meetup 13th-14th June 2018 Berlin (GER) Conference Apache EU Roadshow Revolutionizing the production industry with Apache PLC4X 4th June 2018 Cologne (GER) Conference Building IoT Industrial IoT und Edge Computing mit Apache PLC4X und Apache Edgent 5th April 2018 Hamburg (GER) Conference TechCamp Hamburg Revolutionizing Industrial IoT with Apache PLC4X 21th January 2018 Hamburg (GER) Conference Nortec Mehr für Weniger? Aber Sicher! 4th-5th May 2019 Brussels (BE) Hackathon EU FOSSA Apache Hackathon Co-creating the future of open source Looking forward to meeting you. If you’ve got or found any events or talks we might be missing, please inform us on dev@plc4x.apache.org. PLC4X Banner","title":"Conferences & Events","component":"plc4x","version":"pre-release","name":"conferences","url":"/plc4x/pre-release/developers/conferences.html","titles":[{"text":"Additional Material","hash":"_additional_material","id":1}]},"5":{"id":5,"text":"There are multiple forms in which you can become involved with the PLC4X project. These usually are, but are not limited to: Submitting Pull Requests Filing Bug-Reports Active communication on our mailing lists Promoting the project (articles, blog posts, talks at conferences) Documentation We are a very friendly bunch and don’t be afraid to step forward. We make use of conventional commits. As plc4x is a monolithic polyglot repository we usually define the scope as …(plc4[language shortcut here]/subcomponent) (e.g. a new feature in Bacnet in the Golang part would have a message of feat(plc4go/bacnet): cool new feature for…). The simplest way to submit code changes, is via a GitHub pull-request. In order to do this first create a GitHub account and sign into you account. After that’s done, please to to our GitHub site and create a so-called Fork. What happens now, is that GitHub creates a full copy of the PLC4X repo in your account. Only you can commit to this. Now ideally you check-out your cloned repository: git clone https://github.com/{your-user-id}/plc4x.git Now you have a copy of PLC4X on your computer and you can change whatever you want and as it’s your copy, you can even commit these changes without any danger of breaking things. As soon as you’re finished with your changes and want us to have a look, it’s time to create a so-called Pull-Request. You do that by going to your forked repository page on GitHub. Every forked repository has an additional button called \"New Pull Request\": If you click on this, we will receive a notification on your changes and can review them. We also can discuss your changes and have you perfect your pull request before we accept and merge it into PLC4X. As we are continuously working on PLC4X and you created a copy of our repo, this will become out-of-date pretty soon. In order get the changes we introduced in the official repo you have to tell git about that. You do this locally by adding a new so-called remote. Per default the remote you cloned from is called origin. Usually you will call the second remote upstream but in general you can call it whatever you like. Add the remote on the commandline (or your git gui of choice): git remote add upstream https://github.com/apache/plc4x.git If you list all your remotes, with the following command: git remote -v It should output something like this: origin https://github.com/{your-user-id}/plc4x.git (fetch) origin https://github.com/{your-user-id}/plc4x.git (push) upstream https://github.com/apache/plc4x.git (fetch) upstream https://github.com/apache/plc4x.git (push) If that’s so, you’re fine to continue, if not … well you could ask for assistance on our dev-list. In order to get all changes of our upstream-repository, just execute the following command: git pull upstream This will get all changed from upstream and merge them locally. In order to update your GitHub version, you have to push things back to origin. You can do this by executing the following command: git push (If no remote is provided, git will use origin per default) We use GitHub Issues as our Bug & Issue Tracker. Feel free to submit feature requests, bug reports, patches, comment on issues, … As our documentation and website are generated as a side-product of our build, contributing to this technically the same as contributing to the code. All our content is written in Asciidoctor and is located in src/site/asciidoc directories. For a reference of the Asciidoctor syntax please have a look at the Asciidoctor documentation. The PLC4X project uses the following branching model. The same model is used for a wide variety of other projects, so it should be pretty straight forward. release contains the latest released state. Development is performed on the develop branch. Features are developed in Feature-Branches with a prefix feature/ Each minor release has a corresponding release branch rel/0.13.0-SNAPSHOT A release branch is spawned from develop only Bugfix releases don’t have a dedicated release branch, they are just performed on the corresponding minor versions release branch","title":"Contributing","component":"plc4x","version":"pre-release","name":"contributing","url":"/plc4x/pre-release/developers/contributing.html","titles":[{"text":"Forms of contribution","hash":"_forms_of_contribution","id":1},{"text":"Commits","hash":"_commits","id":2},{"text":"Pull-Requests","hash":"_pull_requests","id":3},{"text":"Keeping your fork up to date","hash":"_keeping_your_fork_up_to_date","id":4},{"text":"Bug Reports","hash":"_bug_reports","id":5},{"text":"Documentation","hash":"_documentation","id":6},{"text":"Branching model","hash":"_branching_model","id":7}]},"6":{"id":6,"text":"This document describes the roles and responsibilities of the project, who may vote, how voting works, how conflicts are resolved, etc. The Apache Foundation FAQ and How-It-Works explain the operation and background of the foundation. Terms used are defined in the ASF glossary. Apache has a code of conduct that it expects its members to follow. Apache projects define a set of roles with associated rights and responsibilities. The PMC has many responsibilities including complying with ASF policies, reporting to the board, approving releases and adding new committers and PMC members. The chair ensures board reports are submitted and that the project’s roster is up to date. Different decisions require different forms of approval but community consensus is always the goal. Voting when needed should be open for at least 72 hours. Consensus Approval – Consensus approval requires 3 binding +1 votes and no -1 votes (vetoes). Majority Approval – requires at least 3 binding +1 votes more +1 votes than -1 votes. Lazy Consensus – consensus no objections (‘silence gives assent’). Action Who can vote Approval Where to vote Board approval required Code change Committer Lazy Consensus public dev or commit list Release PMC Majority Approval public dev list New committer PMC Consensus Approval private list New PMC member PMC Consensus Approval private list Yes 1) Existing committer removal PMC Consensus Approval private list Existing PMC removal PMC Consensus Approval private list Yes 2) Change chair PMC Consensus Approval private list Yes 3) Notice must be given to board. Except PMC member in question. Only the board can remove PMC members. Need to be approved by the board at the next board meeting.","title":"Decision Making","component":"plc4x","version":"pre-release","name":"decisions","url":"/plc4x/pre-release/developers/decisions.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Roles and Responsibilities","hash":"_roles_and_responsibilities","id":2},{"text":"Project Management Committee","hash":"_project_management_committee","id":3},{"text":"The Chair","hash":"_the_chair","id":4},{"text":"Decision Making","hash":"_decision_making","id":5}]},"7":{"id":7,"text":"This part of the Apache PLC4X dedicated to provide information to people wanting to build PLC4X and hopefully also start contributing to this awesome project. We have tried to make the PLC4X build experience as smooth as possible and have tried to reduce the number of required third party tools to an absolute minimum. The full PLC4X build however builds not only Java libraries, but also C++, Python and C# libraries as well as builds Docker images on Linux, Mac and Windows. As a start, you will basically need a Java VM of at least Java 11. Using the Maven-Wrapper you don’t even need a Maven installation. The build will automatically fetch the right version for you. As part of the build we have an initial build step that will do a prerequisite check. Depending on the activated modules, it will check if all preconditions are met and tell you what’s missing. For details please have a look at the Preparing your Computer page. We have a dedicated page on Building PLC4X. Please read this page on information about how to build Apache PLC4X. If you want to work on Apache PLC4X in order to fix things, add things and start contributing in general, please have a look at our Contributing page. It should contain all the information you need. The primary source for getting help definitely is our project mailing list dev@plc4x.apache.org. You can search previous content in our Mail Archive In order to post to the list you first need to subscribe. This can be done by sending an empty Email to dev-subscribe@plc4x.apache.org.","title":"Developer Section","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/developers/index.html","titles":[{"text":"Getting Started","hash":"_getting_started","id":1},{"text":"Building PLC4X","hash":"_building_plc4x","id":2},{"text":"Contributing","hash":"_contributing","id":3},{"text":"Getting Help","hash":"_getting_help","id":4}]},"8":{"id":8,"text":"In PLC4X we are using a tool called JQAssistant for enforcing quality assurance rules. JQAssistant can be thought of as a set of two components: A set of scanners that analyse a project and stores the gathered information in for of linked graphs in a Neo4j database. An engine that executes defined rules against the graph created during the scan phase of the build These rules can produce either reports and tables or they are used to enforce rules. If a pre-defined rule is violated the failed checks can be marked as warning or error that breaks the build. In contrast to using the maven-enforcer-plugin doing cross-domain checks is really simple as all information is available in one big graph. Currently the following scanners are active: CDI Common Common Test Core Analysis EJB3 GraphML JAX-RS JPA 2 JSON JUnit Java Java 9 Java EE 6 Maven 3 OSGi RDBMS TestNG Tycho XML YAML These rules that are automatically checked during the build are defined in src/jjqassistant. If defined in a reactor project, the rules apply to all modules of that (sub-)reactor. So if they are defined in the root module of the project, it applies to all modules. TODO: Finish this \"little detail\" … The scan and analysis is automatically performed during a normal Maven build. In order to do ad-hoc queries against the project or develop new rules, the Web-UI is very helpful. To start the Web-UI, all you need to do, is run the following command (after a build): mvn jqassistant:server This will start a Neo4j server with web console. [INFO] --- jqassistant-maven-plugin:1.3.0:server (default-cli) @ plclogger --- [INFO] Connecting to store at 'file:/Users/christofer.dutz/Projects/Apache/PLC4X/target/jqassistant/store/' 2018-04-05 19:11:14.369+0200 INFO [o.n.s.CommunityNeoServer] No SSL certificate found, generating a self-signed certificate.. 2018-04-05 19:11:14.683+0200 INFO [o.n.s.CommunityNeoServer] Starting HTTP on port 7474 (8 threads available) 2018-04-05 19:11:14.859+0200 INFO [o.n.s.w.Jetty9WebServer] Mounting static content at /webadmin 2018-04-05 19:11:14.892+0200 INFO [o.n.s.w.Jetty9WebServer] Mounting static content at /browser Apr 05, 2018 7:11:15 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate INFORMATION: Initiating Jersey application, version 'Jersey: 1.19 02/11/2015 03:25 AM' Apr 05, 2018 7:11:15 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate INFORMATION: Initiating Jersey application, version 'Jersey: 1.19 02/11/2015 03:25 AM' Apr 05, 2018 7:11:15 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate INFORMATION: Initiating Jersey application, version 'Jersey: 1.19 02/11/2015 03:25 AM' 2018-04-05 19:11:15.396+0200 INFO [o.n.s.CommunityNeoServer] Remote interface ready and available at http://localhost:7474/ [INFO] Running server for module org.apache.plc4x:plc4x-parent:0.0.1-SNAPSHOT [INFO] Press to finish. So when visiting the anounced url with a browser, you can use the pretty useful neo4j web console. IntelliJ comes with some interesting Neo4J support. Unfortunately this only supports Neo4j 3. Unfortunately the process of enabling this toolset is a little less comfortable than the Web-UI version. Even if JQAssistant uses Neo4j 2 per default, we can force it to use Neo4j 3 by providing an additional commandline parameter. mvn -Djqassistant.neo4jVersion=3 clean install JQAssistant uses Neo4j 3 and the resulting data directory is then in Neo4j 3 format. In this case the server has to be started with the same parameter: mvn -Djqassistant.neo4jVersion=3 jqassistant:server As soon as the server is started, we can connect from the IntelliJ plugin. Note: The connection settings also contain a username and a password. It appears that this can simply be left empty of can contain random values. After creating the connection, the Graph Neo4j view should list the new connection. You can now use this to perform queries","title":"Using JQAssistant","component":"plc4x","version":"pre-release","name":"jqassistant","url":"/plc4x/pre-release/developers/jqassistant.html","titles":[{"text":"Defining JQAssistant rules","hash":"_defining_jqassistant_rules","id":1},{"text":"Using the Web-UI","hash":"_using_the_web_ui","id":2},{"text":"Using IntelliJ Idea","hash":"_using_intellij_idea","id":3}]},"9":{"id":9,"text":"This is an assessment of the PLC4X project’s maturity, meant to help inform the decision (of the mentors, community, Incubator PMC and ASF Board of Directors) to graduate it as a top-level Apache project. It is based on the ASF project maturity model at https://community.apache.org/apache-way/apache-project-maturity-model.html Community members are encouraged to contribute to this page and comment on it, the following table summarizes project’s self-assessment against the Apache Maturity Model. ID Description Status Code CD10 The project produces Open Source software, for distribution to the public at no charge. The project source code is licensed under the Apache License, version 2.0. CD20 The project’s code is easily discoverable and publicly accessible. Our sourcecode is available at Apache GitBox and GitHub and linked to from our website CD30 The code can be built in a reproducible way using widely available standard tools. our Maven build has been tested on Linux, Mac-OS and Windows and build description is available on our website CD40 The full history of the project’s code is available via a source code control system, in a way that allows any released version to be recreated. The entire commit history is available from the beginning. CD50 The provenance of each line of code is established via the source code control system, in a reliable way based on strong authentication of the committer. When third-party contributions are committed, commit messages provide reliable information about the code provenance. The project uses the git repository, managed by Apache Infra, ensuring provenance of each line of code to a committer, each line committed before entering incubation was equally configured. Licenses and Copyright LC10 The code is released under the Apache License, version 2.0. Both the source distribution as well as the convenience binary artifacts clearly declare that they are licensed under the Apache 2.0 license LC20 Libraries that are mandatory dependencies of the project’s code do not create more restrictions than the Apache License does. The list of mandatory dependencies have been reviewed to contain approved licenses only. LC30 The libraries mentioned in LC20 are available as Open Source software. All mandatory dependencies are available as open source software. LC40 Committers are bound by an Individual Contributor Agreement (the \"Apache iCLA\") that defines which code they are allowed to commit and how they need to identify code that is not their own. The project uses a repository managed by Apache Gitbox — write access requires an Apache account, which requires an ICLA on file. LC50 The copyright ownership of everything that the project produces is clearly defined and documented. All files in the source repository have appropriate headers which is enforced by tooling included in the build. ICLAs from all initial committers have been documented. CCLAs from all companies involved have been documented. SGA is on file for the initial contribution. Releases RE10 Releases consist of source code, distributed using standard and open archive formats that are expected to stay readable in the long term. Current source releases are distributed via dist.apache.org and Older source releases are available from archive.apache.org. Both are linked from the website. RE20 Releases are approved by the project’s PMC (see CS10), in order to make them an act of the Foundation. All incubating releases have been unanimously approved by the PLC4X community and the Incubator, all with at least 3 (P)PMC votes and more +1 than -1. RE30 Releases are signed and/or distributed along with digests that can be reliably used to validate the downloaded archives. All releases are signed, and the KEYS file is provided on dist.apache.org RE40 Convenience binaries can be distributed alongside source code but they are not Apache Releases — they are just a convenience provided with no guarantee. Convenience binaries are distributed via Maven Central Repository only. Currently due to the platform-dependency of C++ libraries, these are not distributed currently. RE50 The release process is documented and repeatable to the extent that someone new to the project is able to independently generate the complete set of artifacts required for a release. We have a guide for release managers, that has been tested by multiple release managers available on our website. Quality QU10 The project is open and honest about the quality of its code. Various levels of quality and maturity for various modules are natural and acceptable as long as they are clearly communicated. All issues are documented in our GitHub Issues instance, which is our primary bug and issue tracker. QU20 The project puts a very high priority on producing secure software. even if we haven’t received any security issues targeted at PLC4X yet, we proactively monitor our dependencies and if reported would treat them with the highest priority, according to the CVE/Security Advisory procedure. QU30 The project provides a well-documented, secure and private channel to report security issues, along with a documented way of responding to them. We are using Apaches default way to submit security related information, which is described on our website QU40 The project puts a high priority on backwards compatibility and aims to document any incompatible changes and provide tools and documentation to help users transition to new features. We try to keep everything as backward compatible as possible. If we are forced to introduce incompatible changes, these is documented in a Incompatible changes section as part of our release notes. QU50 The project strives to respond to documented bug reports in a timely manner. Bug reports are treated with priority and are automatically posted to our developer mailing list dev@plc4x.apache.org\" class=\"bare\">https://lists.apache.org/list.html?dev@plc4x.apache.org so they are prominently recognised. Community CO10 The project has a well-known homepage that points to all the information required to operate according to this maturity model. The project website has a description of the project with technical details, how to contribute, team. CO20 The community welcomes contributions from anyone who acts in good faith and in a respectful manner and adds value to the project. So far we have recognized any form of contribution and every contributor with the desire to become part of the team has been invited to join. CO30 Contributions include not only source code, but also documentation, constructive bug reports, constructive discussions, marketing and generally anything that adds value to the project. It’s part of the contribution guide and the current committers are really keen to welcome contributions. CO40 The community is meritocratic and over time aims to give more rights and responsibilities to contributors who add value to the project. So far the community has elected 4 committers, all of them also being added to the PPMC. CO50 The way in which contributors can be granted more rights such as commit access or decision power is clearly documented and is the same for all contributors. The criteria is documented in the contribution guide. CO60 The community operates based on consensus of its members (see CS10) who have decision power. Dictators, benevolent or not, are not welcome in Apache projects. The project works to build consensus. All votes have been unanimous so far. CO70 The project strives to answer user questions in a timely manner. Responses to reported issues or asked questions typically are handled by the community withing a matter of a few hours (Responses being faster during typical European time-zone business-hours). Consensus Building CS10 The project maintains a public list of its contributors who have decision power — the project’s PMC (Project Management Committee) consists of those contributors. All members of the team have been added on team page. CS20 Decisions are made by consensus among PMC members 9 and are documented on the project’s main communications channel. Community opinions are taken into account but the PMC has the final word if needed. All decisions are made on one of our mailing lists. Every decision discussed off-list has been taken back to the list for final discussion and we’ll keep on doing that. CS30 Documented voting rules are used to build consensus when discussion is not sufficient. We have documented our decision-making rule on our website. CS40 In Apache projects, vetoes are only valid for code commits and are justified by a technical explanation, as per the Apache voting rules defined in CS30. This part actively contradicts the voting rules of the Apache Incubator. This project follows the voting rules of the Apache Incubator which we documented on our website. CS50 All \"important\" discussions happen asynchronously in written form on the project’s main communications channel. Offline, face-to-face or private discussions 11 that affect the project are also documented on that channel. As mentioned in CS20 it is impossible to prevent off-list discussions when meeting in person. But we have always handled things in a way that we always write up summaries of important discussions and post them to the mailing lists. Independence IN10 The project is independent of any corporate or organizational influence. The group of active committers and PPMCs consists of members of more than independent 4 companies. IN20 Contributors act as themselves as opposed to representatives of a corporation or organization. While there are several cases where committers and PPMC members utilize corporate infrastructure or these companies, no case has been found where any of these committers and PPMCs have represented corporate interests.","title":"Apache Maturity Model Assessment for PLC4X","component":"plc4x","version":"pre-release","name":"maturity","url":"/plc4x/pre-release/developers/maturity.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Maturity model assessment","hash":"_maturity_model_assessment","id":2}]},"10":{"id":10,"text":"Sorted by first name: Name Bio Ben Hutcheson Software Developer, Control Systems Engineer Isar Aerospace Altötting, Germany Experienced as an Electrical Engineer, Control Systems Engineer and Software Developer. Enjoys developing systems which overlap in all three of these fields. César García CEOS Automatización, C.A. Pto. La Cruz, Anzoátegui, Venezuela Electrical engineer, dedicated to process automation and control. Specialized in Siemens S5, S7, PCS7 architecture for the Oil&Gas industry and Braumat for the food and beverage industry. Applying open source technologies to create added value for users, such as Kannel, Apache Http Server, Apache Karaf, Apache Hop, Apache IoTDB and the meeting point of all of them Apache PLC4X where I have been able to collaborate as a PMC. Christofer Dutz IoT Consultant Timecho Europe GmbH Frankfurt Likes to swim outside the mainstream. He is really passionate about walking new paths. His first email to an Apache list on file was to the Cocoon project back in the year 2000. His direct involvement started in 2012 when he was elected to become an Apache Flex committer. Since then he became involved with a lot of Apache-internal groups and committees and was elected to become a Member of the Apache Software Foundation in 2015 and recently has taken up the role of mentoring several IoT podlings in the Apache Incubator. Julian Feinauer Founder / CEO pragmatic minds GmbH / pragmatic industries GmbH Kirchheim unter Teck Has studied mathematics in Stuttgart. Besides his interest in open source software and big data, he focuses on the analysis of time series and traces from testing or manufacturing. PLC4X was the first project where he was offered a position as (P)PMC but he is also engaged in other Apache projects like Edgent and IotDB. Łukasz Dywicki Coding CEO / Consultant ConnectorIO sp. z o.o. / Code-House (self employed) Warsaw He started working with Apache Software Foundation projects in 2007 - at the time when the first incubation version of Apache CXF was out. Since then he took active part and contributed to Apache projects related to software integration such as Apache Karaf, Apache ActiveMQ and Apache Camel. He is an Open Source and OSGi enthusiast, passionate about connecting things, physical ones too. Lukas Ott Domain Architect Pharmaceutical Industry Copenhagen He started working with Apache Software Foundation projects in 2013 - at that time in the context of Semantic Technologies with an archived project called Apache Stanbol. Since then he took an interested in several different Apache projects like Apache ActiveMQ, Apache Spark, Apache Storm, Apache Cassandra. He is an Open Source and Pythonista, passionate about connecting people, processes and machines. Main focus is community over code and linking different communities together Matthias Milan Strljic Research assistant ISW; University of Stuttgart Stuttgart Research assistant and software engineer at the Institute for control engineering of machine tools and manufacturing units (ISW) of the university of stuttgart, research in the fields of automation technology + smart services + cloud manufacturing, my favourites are woodwork + knife sharpening + cigars, member of the PMC of PLC4X Sebastian Rühl Software Developer Mapped Frankfurt Software engineer, member of the PMC of PLC4X Tim Mitsch Engineer pragmatic industries GmbH Nürtingen Electrical engineer (HW, SW and interface-stuff) from passion and very new to Apache projects. The more he is involved in open-source the more he likes it, focusing on PLC4X at first.","title":"Team","component":"plc4x","version":"pre-release","name":"team","url":"/plc4x/pre-release/developers/team.html","titles":[]},"11":{"id":11,"text":"In order to be able to work on PLC4X some tools have kindly been made available to Apache PLC4X committers. Jetbrains offers Licenses to IntelliJ to Apache Committers for free EJ-Technologies have also kindly provided us with JProfiler licenses in order to track down some concurrency and memory usage problems. Thank you to all.","title":"Tools","component":"plc4x","version":"pre-release","name":"tools","url":"/plc4x/pre-release/developers/tools.html","titles":[]},"12":{"id":12,"text":"The companies in the following list are actively using Apache PLC4X. Name Market Description codecentric AG IT Consulting We develop software that solves real problems - and PLC4X solves the problem of IoT connectivity in a highly performant and open source way ConnectorIO sp. z o.o. IoT / Software / Cloud We developed an open source gateway runtime and compatible cloud service to manage installations and collected information. We utilize PLC4X to gain access to data provided by industrial hardware. IndustryFusion IIoT / Industry 4.0 In the End-2-End Industry 4.0 solution IndustryFusion we use PLC4X for brownfield-connectivity, i.e. the connectivity to existing machines on the shop floor. ISW University of Stuttgart IIoT / Industry 4.0 / Research We use PLC4X for our research projects because of its great potential for retrofitting scenarios, the simplicity of the API, an active community for broad platform support and the open source flexibility. Lebbing automation & drives GmbH https://in2lutions.com/in2lutions/[In2Lutions] Automation / Drives / Industry 4.0 We used PLC4X to developed a solution to synchronize data between PLCs and customers systems. Our Solution is used for new products as well as for industry 4.0 upgrades to older machines. PIETRORIMOLDI&C s.r.l. IIoT / Analytics We started a project which deals with long term data analysis; the data are gathered from machines controlled in real time by PLC. Failure prediction and behavioral working condition monitoring are the main goals. PLC4x library is a fundamental part of the process. pragmatic industries GmbH (I)IoT / Industry 4.0 PLC4X is an important part of our platform Digital Cockpit which we develop in-house. pragmatic minds GmbH Big Data / Analytics We use PLC4X to collect data from different types of PLCs as preliminary step for data analytics and visualization. Record Evolution GmbH Iot / Industry 4.0 / Data Science We developed a platform for IoT development and Data Science. We are using PLC4X to enable IoT devices in our platform to extract data from PLCs of different vendors, using different protocols. The people working on Apache PLC4X, and the companies behind them have put an enormous amount of effort into creating this great tool. The problem some of them are facing, is that they are usually not allowed to mention which companies are using PLC4X. However being able to name references is most vital nowdays in gaining trust. So if you work for a company which is using Apache PLC4X, one way you can help the project is by admitting you are using it. This might be only very little active contribution on your side, but for the project this is of extremely high value. On this page we are maintaining a list of companies openly communicating that they are using Apache PLC4X. If your company is using Apache PLC4X and you would like to give back to the community, please create a Pull-Request on github or post an email to dev@plc4x.apache.org and give us the permission to list your company.","title":"Companies using Apache PLC4X","component":"plc4x","version":"pre-release","name":"adopters","url":"/plc4x/pre-release/users/adopters.html","titles":[]},"13":{"id":13,"text":"Apache Kafka, KSQL and Apache PLC4X for IIoT Data Integration and Processing Edge Computing und Industrial IoT mit Apache Edgent und Apache PLC4X Advanced: Exposing a PLC as JSON Web Services (using PLC4X) High Security Iiot Communication With Apache Plc4X, Apache Asia Con, August 2021 Apache Plc4X For Can Bus And Canopen, Apache Asia Con, August 2021 Eclipse IoT Meetup, December 2020 Librecon - Open Industry 4.0, 2020 Analyzing IIoT data with PLC4X and StreamPipes Apache PLC4X or: How I Learned to Stop Worrying and Love the Industrial IoT \"Hands on\" - Reading out Siemens S7 with Apache PLC4X \"Hands On\": Siemens S7 auslesen mit PLC4X (GERMAN) Mittelstand meets Open Source - Einführung in das Industrial IoT (IIoT) (GERMAN) Apache Kafka, KSQL and Apache PLC4X for IIoT Data Integration and Processing Episode IV - A New Hope: Industry 4.0 done our way From an idea to an Apache TLP Wie wir mit Apache PLC4X die Silos in der Automatisierungsindustrie aufbechen Apache Kafka, KSQL and Apache PLC4X for IIoT Data Integration and Processing Episode iv a new hope - Industry 4.0 done our way From the Chip to the Cloud with Apache Software Digitizing your factory the open source way From an idea to an Apache TLP Building scada systems with apache software State of the Civiet, June 2024","title":"Blogs, Videos and Slides on Apache PLC4X","component":"plc4x","version":"pre-release","name":"blogs-videos-and-slides","url":"/plc4x/pre-release/users/blogs-videos-and-slides.html","titles":[{"text":"Blog posts","hash":"_blog_posts","id":1},{"text":"Videos & Webinars","hash":"_videos_webinars","id":2},{"text":"Slides","hash":"_slides","id":3}]},"14":{"id":14,"text":"As every Apache project, so is Apache PLC4X generally available and usable by anyone free of charge. Also does the Apache PLC4X Community offer free support on the official project Mailinglist. This support is however done voluntarily by the community, so there are no service-level-agreements, guaranteed reaction times or guarantee that an issue will be addressed or solved. If you or your business has higher demands on guaranteed availability and execution of support requests, the following individuals and companies have commercial support offerings. The information provided here was provided by the entities named, and is not verified (except the Involvement Level), updated or endorsed by the Apache Software Foundation or the Apache PLC4X project. Name Description Contact Person(s) Contact Email(s) Contact Phone(s) Involvement Level Assso - Accelerated Solutions GmbH consulting, workshops, individual software development, protocol/driver development Christofer Dutz christofer.dutz@accso.de PMC Member ConnectorIO sp. z o.o. workshops, individual software development Łukasz Dywicki lukasz@connectorio.com PMC Member Timecho Europe GmbH consulting, workshops, individual software development, protocol/driver development, data-storage solutions Pengchen Zheng pengcheng.zheng@timecho.com Anyone who provides Apache PLC4X related services can be added to this list (e.g. training, consulting, custom software development, support, installation or related services). Please create a Pull-Request on GitHub as described here. The resource requiring editing can be found here When updating the table, please keep the alphabetical sort by company name. We will then check if the entry fulfills the requirements and accept the changes as soon as all of these have been addressed.","title":"Commercial support offerings for Apache PLC4X","component":"plc4x","version":"pre-release","name":"commercial-support","url":"/plc4x/pre-release/users/commercial-support.html","titles":[{"text":"Who can be added to this list?","hash":"_who_can_be_added_to_this_list","id":1},{"text":"How can I get added to this list?","hash":"_how_can_i_get_added_to_this_list","id":2}]},"15":{"id":15,"text":"Be sure to verify your downloads by these procedures using these KEYS for any Apache release. This release was mainly a release containing many bugfixes. We literally halved the number of open issues. A second major topic would have been another API streamlining in preparation to aiming for the big 1.0.0 release. The API was extended by additional features, that now allow tools to automatically provide support for tool assist when connecting to devices. Now additional information such as: - Which transports does a given driver support? - Which is the default transport for a given driver? - Which configuration-options does a driver have? - What types are these configuration options? - What are the default-values these configuration options have? - Which of these configuration options are required? - The same set of information is also available for the transports a driver is using. API: Made several bits of information available via the API allowing tools to provide more content assist when dealing with PLC4X connections. S7: The S7 driver now supports reading of STRING and WSTRING data-types without providing a maximum length. Build: Worked on making PLC4X provide reproducible builds. Added \"Ping\" functionality to: ADS, EIP, KNX, Mock, Modbus and Simulated drivers. The OPC-UA Java driver now support certificate-based authentication and encryption. Java 8 is no longer officially supported and Java 11 is the new base-line. Renamed the PlcDriverManager method listDrivers to getProtocolCodes Renamed the PlcDriverMetadata method canDiscover to isDiscoverySupported Renamed the PlcConnectionMetadata methods canRead, canWrite canSubscribe and canBrowse to isReadSupported, isWriteSupported, isSubscribeSupported and isBrowseSupported The configuration syntax for configuring transport-related config options in the connection-string was updated to be now prefixed with the transport name the option belongs to. S7: Several bugs and issues regarding supporting various duration, date and time data-types. S7: Implemented the missing 64bit (L-) types. KNX: Fixed an issue with decoding 16 bit floating point numbers. NiFi-Integration: The NiFi integration module was greatly improved. Core: Fixed several leaks of open threads. The APIs have been streamlined in a preparation for a hopefully soon 1.0.0 release. Many drivers have been re-implemented with much more features. Integration modules have been improved. Implemented a PLC4X-Server and PLC4X-Driver that allows using the server as a proxy for communicating with PLCs. The Modbus driver is now also available in the variants: \"modbus-rtu\" and \"modbus-ascii\" (Both using Serial communication, which however can be tunneled through a \"tcp\" and \"udp\" transport) The KNX driver in Java now supports reading \"knxproj\" files exported from the new ETS version 6. The name of the Modbus TCP driver was changed from \"modbus\" to \"modbus-tcp\". Removed the Apache Edgent (incubating) integration and examples related, as Edgent is abandoned and there were CVEs reported, which will not be fixed. We have replaced the BitString types with BYTE, WORD, DWORD, and LWORD which generally match their unsigned integer counterparts. So we are no longer returning lists of boolean values for any of these types. A lot of the work in this version went into refactoring and cleaning up our code generation. The code generation itself is now a lot cleaner and simpler as well as the code generated for Java. We also added a number of new field-types to allow implementing more sophisticated protocols. PLC4C now should also support all of the constructs mspec has to offer. This is a bugfix release aiming at directly fixing CVE-2021-43083 as well as updating the dependency to Log4J 2.14.0 which was affected by CVE-2021-44228 Please note that CVE-2021-43083 only affects the PLC4C part of PLC4X. CVE-2021-43083 Apache PLC4X 0.9.0 Buffer overflow in PLC4C via crafted server response This is an ordinary PLC4X release, containing changes that accumulated over time. It doesn’t have an explicit focus on a particular topic. The OPC UA driver has been replaced with a native driver. Previously Eclipse Milo was being used. Permit customized package names for code generation Added an initial draft of a Discover and Browse API to PLC4J PLC4Go now supports many more drivers PLC4Go received a huge internal refactoring and cleanup Major cleanup of PLC4C S7 Driver now supports event and alarm handling on some S7 models PLC4X-200 OPC-UA Driver not connecting if params string is not provided PLC4X-201 OPC-UA PlcList underlying type not compatible with Eclipse Milo PLC4X-202 OPC-UA Driver cannot write Unsigned Types PLC4X-276 [S7] The most of the supported types don’t work correctly PLC4X-278 Double Reading Error PLC4X-279 nioEventLoopGroup thread proliferation PLC4X-280 ADS route request swapped positions of route name and address PLC4X-291 DefaultPlcSubscriptionField cannot be cast to class OpcuaField PLC4X-298 [S7] When writing REAL values the Write operation fails with an internal error PLC4X-299 Modbus - Kafka Connect Configuration PLC4X-312 CAN NOT READ STRING FROM S7 PLC PLC4X-314 CAN NOT WRITING MANY DATA TO S7 ONE TIME This is an ordinary PLC4X release, containing changes that accumulated over time. It doesn’t have an explicit focus on a particular topic. The KNXnet/IP Driver now supports writing of values. The Modbus driver now supports more common notations of Modbus addresses using a pure-numeric notation. The ADS, KNX, Modbus, S7 and simulated drivers have been updated to support the IEC 61131-3 data-types. We are now including PLC4Go as PLC4X implementation in the programming language Go(lang) Integration with the Milo OPC UA Server is now available. Kafka Connect workers have been updated source and sink connectors are now included. The syntax of the S7 addresses changed slightly allowing to provide a string length. Without this, a STRING datatype will read 254 characters, by adding the size in round brackets to the type name will use the specified number. Examples: Read one String which is max 10 chars long: %DB2:30:STRING(10) Read an array of 3 Strings where each is max 10 chars long: %DB2:30:STRING(10)[3] The PLCValue types have been refactored to align with the types defined in IEC 61131-3 (https://en.wikipedia.org/wiki/IEC_61131-3) directly using the older Java types (PlcBoolean) is no longer possible. A lot of testing was done regarding the IEC 61131-3 data-types. This resulted in numerous bugfixes in many protocols. PLC4X-132 [S7] Communication to S7 PLC dies in some situations PLC4X-206 When writing short values exceptions are thrown while preparing the write request. PLC4X-207 No registered handler found for message TPKTPacket[], using default decode method - Communication with S7 and Modbus device hangs PLC4X-209 [S7] When writing INT and DINT values the Write operation fails with an internal error PLC4X-210 [KNX] When running a KNX Tunneling Subscription for a longer time there are packets that kill the connection PLC4X-211 PlcValues seem to always return \"true\" on the isXYZ\" checks. PLC4X-212 When writing multiple values in one request the item status is not correctly set PLC4X-213 [Modbus] The Modbus driver doesn’t handle error responses gracefully PLC4X-214 [Modbus] Holding register addresses have an offset of 1 (Not reading the correct address) PLC4X-215 Drivers using the BaseOptimizer (SingleFieldOptimizer) don’t handle error responses gracefully PLC4X-218 [Scraper] After stopping the scraper still the statistics are logged and the application doesn’t terminate PLC4X-239 Read DTL (Date and Time) PLC4X-240 Protocol error in reading string PLC4X-246 S7 driver hangs on read PLC4X-245 [Modbus] Apache NiFi processor throws java.io.IOException after a while PLC4X-255 Kafka Connector Source Task doesn’t block within poll() resulting in high CPU usage. PLC4X-261 Pooled connection manager returns a connection that isn’t connected in some situations. PLC4X-272 When splitting up large requests, too big sub-requests are generated (S7) PLC4X-256 ReadBuffer truncate last byte of even small payloads PLC4X-262 Error in reading Array PLC4X-270 Ads driver does not accept double-digit array indexes This version is the first after a major refactoring of the driver core. All previous driver versions are now considered deprecated and have been replaced by versions using the new driver structure and generated driver codebase. Drivers now support structured types using PlcValues The EIP (EtherNet/IP) driver no longer requires an external library and is implemented fully in the PLC4X project The Modbus driver no longer requires an external library and is implemented fully in the PLC4X project The new S7 Driver supports writing multiple entries in one request (The API allowed this from the beginning now not every item is wrapped in a single request. It should bring significant performance gains when writing multiple vlaues) S7 Driver now supports String datatypes. OSGi : Implementation of Drivers/Transports as OSGi services to be able to use them in an OSGi container. New Firmata protocol driver Due to the refactoring of the driver core there might be issues running drivers built against older core versions. This version doesn’t provide a Beckhoff AMS/ADS driver as this driver is still being ported to the new mspec format. All drivers connection strings now follow the same pattern: {protocol-code:(transport-code:)?//{transport-config}(?{params})? Please check the drivers documentation on our website: https://plc4x.apache.org/users/protocols/s7.html The karaf-feature modules are removed as the drivers now all provide both a feature.xml as well as a kar bundled archive PLC4X-174 UDP Transport does not accept ports containing 0 PLC4X-134 S7 is terminating the connection during handshake PLC4X-192 Support for conversion of complex connection string parameters This is the last release of PLC4X with the \"handwritten\" drivers. This Minor release will thus receive updates and fixes until most users have switched to 0.7 and above (with generated drivers). If you are using the S7 Driver you should update to this Version as the critical (memory leak) bug PLC4X-163 is fixed. PLC4X-168 A shorter S7 Field Syntax is Introduced. This release contains no further features and mostly stabilization. Moved the C++, C# and Python drivers into the sandbox Fixed Promise Chain for InternalPlcWriteRequest PLC4X-45 Add float support to Modbus Protocol PLC4X-164 Fix wrong NOT FOUND exception in OPC UA Driver PLC4X-166 Fixed Download Page PLC4X-163 Fixed Netty ByteBuf Leaks for S7 Driver PLC4X-158 Added Warning if no Pooled Driver is used for Scraper This is the first release containing our new generated drivers (AB-ETH) Implemented a new Apache Kafka Connect integration module Implemented a new Apache NiFi integration module Implemented a new Logstash integration module Implemented a driver for the AB-ETH protocol Implemented Apache Karaf features for S7 OSGI drivers PLC4X-121 Develop Code Generation to allow Generated Drivers in multiple Languages Sandbox (Beta-Features) - Implemented a new BACnet/IP passive mode driver - Implemented a new Serial DF1 driver PLC4X-104 S7 Driver Datatype TIME_OF_DAY causes ArrayOutOfBoundException PLC4X-134 S7 is terminating the connection during handshake PLC4X-139 PLC4X leaks sockets in case of connection problems PLC4X-141 String with real length of greater 127 throw an exception PLC4X-144 When requesting invalid addresses, the DefaultS7MessageProcessor produces errors This is the first release of Apache PLC4X as top-level project. The PlcConnection now supports a ping method to allow checking if an existing connection is still alive. Support of the OPC-UA protocol with the opc-ua-driver. Other Languages Support: — Added first versions of a C# .Net PLC4X API (plc4net) — Added first versions of a Python PLC4X API (plc4py) Added an Interop server which allows to relay requests from other languages to a Java Server ElasticSearch example was updated to use ElasticSearch 7.0.1, this might cause problems with older Kibana versions. No new features No incompatible changes. The S7 driver didn’t correctly handle \"fill-bytes\" in multi-item read-responses and multi-item write-requests Fixed NPE when reading odd-length array of one-byte base types Renamed flags \"F\" to Siemens Standard \"M\" (Marker) Fixed a bug in the DefaultS7MessageProcessor which didn’t correctly merge together split up items Object PLC Mapping (OPM) now has a Alias Registry to allow variable substitution at runtime and write support New module plc-scraper for applications that have to scrape a lot of sps fields with high frequency New integration apache-karaf to enable plc4j in a karaf runtime environment The 'plc4j-core' module has been merged into 'plc4j-api'. So there is no 'plc4j-core' module anymore. Just remove that dependency. The driver artifact names have changed so if you were using a plc4j-protocol-{name} you now need to change this to plc4j-driver-{name} Fixing dependency to the wrap url-handler When receiving responses with more than 512 byte, the IsoOnTcp protocol doesn’t work When the last item in a request is a DINT, the DefaultS7MessageProcessor dies Write operations seem to fail Fixed a Bug where S7 was not able to read arrays. Changed API: instead of passing request object to read({read-request}), write({write-request}) or subscribe({subscribe-request}) methods now the execute() method is called on the request itself New Connection Pool component New OPM (Object PLC Mapping) component (JPA for PLCs) Bug fixes","title":"Download","component":"plc4x","version":"pre-release","name":"download","url":"/plc4x/pre-release/users/download.html","titles":[{"text":"Current Releases","hash":"_current_releases","id":1},{"text":"0.12.0 Official source release [ SHA512 ] [ ASC ]","hash":"_0_12_0_official_source_release_sha512_asc","id":2},{"text":"New Features","hash":"_new_features","id":3},{"text":"Incompatible changes","hash":"_incompatible_changes","id":4},{"text":"Bug Fixes","hash":"_bug_fixes","id":5},{"text":"Previous Releases","hash":"_previous_releases","id":6},{"text":"0.11.0 Official source release [ SHA512 ] [ ASC ]","hash":"_0_11_0_official_source_release_sha512_asc","id":7},{"text":"New Features","hash":"_new_features_2","id":8},{"text":"Bug Fixes","hash":"_bug_fixes_2","id":9},{"text":"0.10.0 Official source release [ SHA512 ] [ ASC ]","hash":"_0_10_0_official_source_release_sha512_asc","id":10},{"text":"0.9.1 Official source release [ SHA512 ] [ ASC ]","hash":"_0_9_1_official_source_release_sha512_asc","id":11},{"text":"Bug Fixes","hash":"_bug_fixes_3","id":12},{"text":"0.9.0 Official source release [ SHA512 ] [ ASC ]","hash":"release-0_9_0","id":13},{"text":"New Features","hash":"_new_features_3","id":14},{"text":"Incompatible changes","hash":"_incompatible_changes_2","id":15},{"text":"Bug Fixes","hash":"_bug_fixes_4","id":16},{"text":"0.8.0 Official source release [ SHA512 ] [ ASC ]","hash":"release-0_8_0","id":17},{"text":"New Features","hash":"_new_features_4","id":18},{"text":"Incompatible changes","hash":"_incompatible_changes_3","id":19},{"text":"Bug Fixes","hash":"_bug_fixes_5","id":20},{"text":"0.7.0 Official source release [ SHA512 ] [ ASC ]","hash":"release-0_7_0","id":21},{"text":"New Features","hash":"_new_features_5","id":22},{"text":"Incompatible changes","hash":"_incompatible_changes_4","id":23},{"text":"Bug Fixes","hash":"_bug_fixes_6","id":24},{"text":"0.6.0 Official source release [ SHA512 ] [ ASC ]","hash":"release-0_6_0","id":25},{"text":"New Features","hash":"_new_features_6","id":26},{"text":"Incompatible changes","hash":"_incompatible_changes_5","id":27},{"text":"Bug Fixes","hash":"_bug_fixes_7","id":28},{"text":"0.5.0 Official source release [ SHA512 ] [ ASC ]","hash":"release-0_5_0","id":29},{"text":"New Features","hash":"_new_features_7","id":30},{"text":"Incompatible changes","hash":"_incompatible_changes_6","id":31},{"text":"Bug Fixes","hash":"_bug_fixes_8","id":32},{"text":"0.4.0 Official source release [ SHA512 ] [ ASC ]","hash":"release-0_4_0","id":33},{"text":"New Features","hash":"_new_features_8","id":34},{"text":"Incompatible changes","hash":"_incompatible_changes_7","id":35},{"text":"Bug Fixes","hash":"_bug_fixes_9","id":36},{"text":"Incubating Releases","hash":"_incubating_releases","id":37},{"text":"0.3.1 (incubating) Official source release [ SHA512 ] [ ASC ]","hash":"_0_3_1_incubating_official_source_release_sha512_asc","id":38},{"text":"New Features","hash":"_new_features_9","id":39},{"text":"Incompatible changes","hash":"_incompatible_changes_8","id":40},{"text":"Bug Fixes","hash":"_bug_fixes_10","id":41},{"text":"0.3.0 (incubating) Official source release [ SHA512 ] [ ASC ]","hash":"release-0_3_0","id":42},{"text":"New Features","hash":"_new_features_10","id":43},{"text":"Incompatible changes","hash":"_incompatible_changes_9","id":44},{"text":"Bug Fixes","hash":"_bug_fixes_11","id":45},{"text":"0.2.0 (incubating) Official source release [ SHA512 ] [ ASC ]","hash":"release-0_2_0","id":46},{"text":"Changes:","hash":"_changes","id":47},{"text":"0.1.0 (incubating) Official source release [ SHA512 ] [ ASC ]","hash":"release-0_1_0","id":48}]},"16":{"id":16,"text":"This part of the PLC4X website is dedicated to people wanting to use Apache PLC4X. It will provide information on the features and how to use them as well as documentation on how to use the different integration modules. Apache PLC4X allows you to communicate directly with your industrial Hardware, without having to retrofit it. This is possible, as PLC4X implements the protocols for the most common industrial communication protocols and uses these to communicate with the various types of devices. The one thing that separates PLC4X from most other, mostly commercial drivers, is that we don’t try to implement each protocol that it would be a certifiable protocol-stack, but concentrate on making a core set of operations available the identical way over all drivers. This allows users to develop software mostly independent of the actual type of hardware used. Apache PLC4X is an effort to create a set of libraries for communicating with industrial grade programmable logic controllers (PLCs) in a uniform way. We are planning on shipping libraries for usage in: Java Go C (not ready for usage) Python (not ready for usage) C# (.Net) (not ready for usage - abandoned) PLC4X also integrates with other Apache projects, such as: Apache Calcite Apache Camel Apache Kafka-Connect Apache Karaf Apache NiFi And brings stand-alone (Java) utils like: OPC-UA Server: Enables you to communicate with legacy devices using PLC4X with OPC-UA. PLC4X Server: Enables you to communicate with a central PLC4X Server which then communicates with devices via PLC4X. It also provides (Java) tools for usage inside an application: Connection Cache (Connection Cache for PLC connections) Object PLC Mapping (OPM) (Object PLC Mapping - Like JPA for PLC data) Scraper (Util for automating fetching PLC data using a variety of triggers) Testing-Utils (Want to build/test an application without having a PLC? … this is the tool for you)","title":"Users","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/users/index.html","titles":[{"text":"About Apache PLC4X","hash":"_about_apache_plc4x","id":1}]},"17":{"id":17,"text":"Since the introduction of programmable logic controllers in the production industry in the early 80s, they have been the core of almost every piece of production machinery. While first PLCs were usually stand-alone controllers. These were soon extended by the ability to talk to other controllers of the same type via proprietary protocols. After that came first computer based control systems, which were able to monitor and parametrize these controllers. Usually however in order to do this, a company needed to use the control system that was provided by the PLC vendor. This has tied companies to stick to the company they decided to use the PLCs of. Making it almost impossible to switch to another vendor. In the last 20 years in the IT industry, the concept of open source has come up and has more and more proven to be the engine of great innovation. Most of the biggest changes in how we create modern IT systems is a result of this. Unfortunately the production industry has been missing a lot of this innovation. Only a small number of companies today use open source software in their production systems. The benefit of using open source could be huge: Increased Flexibility Increased Stability Increased Extendability Improved Security Great Cost reduction If a company had decided to use PLCs and control systems of a certain vendor, it is almost impossible to change this decision. This reduces the options available when adding new machinery or replacing existing ones. Technologically speaking, also the company can only use the options and solution it’s vendor is able to provide. Current control systems are usually based on the concept of \"backup systems\". If the main control system fails, all activity is switched to the standby system. When using modern public- or private cloud systems, there is no need for a backup system, because the cluster is designed in a way that it can live with the failure of most of its hosts before loosing the ability to function. From the perspective of designing and scaling the IT infrastructure: If a control system was designed to handle the current size of plant, for cost reasons the IT infrastructure isn’t designed to handle much more than that. Now if the plant should be extended in the future, extending it’s control-systems IT infrastructure would probably result in replacing this with a bigger system. By utilizing modern virtualization frameworks, extending the existing cloud solution, would only require adding more compute resources, by adding more systems to the cluster and it should be possible to extend the existing system without problems. If the company decided to utilize a public cloud provider, it makes things even simpler, as it would only require booking more resources. This is probably one of the most concerning aspects of modern production control systems. Right now, in order to run these systems, a lot of the most popular solutions require companies to run not up to date systems. If applying all updates, the company is risking either loss of commercial support or even loss of functionality. Therefore an attacker can probably be certain to be able to exploit certain vulnerabilities just by knowing the type and version of the used control system. Well the probably biggest and most obvious cost reduction factor is definitely, that if the software you are using is free, you will not have to pay for it. Additionally, the ability to get the computing power of one insanely expensive system by using a cluster of cheap commodity systems, helps saving a lot of money. Being freed of the requirement to stick to the products of one vendor alone and to be able to choose the technology and the vendor of used systems freely will definitely also reduce costs. In general there are two options for communicating with industrial PLCs: Using a protocol converter Hardware protocol converter Software protocol converter Using a driver for direct communication Commercial drivers Open source drivers Well protocol converters are all software in the end, but while a \"hardware converter\" is usually a closed hardware box that runs some sort of software, a \"software converter\" is usually an installable service or program that runs on a host system. In both cases the configuration of the protocol converter tells the system which information to get and how to make that available in another protocol. It usually doesn’t allow full access to all information available in a PLC, but only the ones the adapter is configured to make available. Here, there is a big trade-off. If a system should be used in the most versatile way, also the most information has to be made available. Even if most of this information is never needed. Limiting the system only to the needed information, greatly reduces the systems versatility. Another disadvantage is a slightly increased latency when making information available. This is due to the fact that the protocol converter has to send a request to the PLC to get information and as soon as this information is returned to the converter this new information can only be passed on in the other protocol in the next request. The usage of a protocol converter is probably the ideal solution, if all a company wants to do, is integrate PLCs communicating in one protocol into an existing system using a different protocol. In case of integrating open source software, this usually is a protocol converter that converts into one of the well established open source protocols. The most widely used protocol here currently will probably be MQTT. The option that provides the most possibilities is directly communicating with the PLCs. Here the system can always directly access only the exact information required and can do this without any detours that would add latency. There is a wide variety of drivers available, that generally would allow writing software that directly accesses PLCs. Unfortunately most of these are commercial drivers. While there is a number of open source drivers, most of these have licenses that render them useless for commercial applications. Either they are licensed with restrictive licenses such as GPL or they are dual licensed with a restriction to non-commercial usage for the open source version and the requirement to purchase a commercial license for commercial use cases. The APIs of all drivers usually differs quite greatly from each one another. This makes it extremely difficult to create solutions that work with a variety of PLCs and protocols. This is where Apache PLC4X comes in. It is the goal of PLC4X to provide a suite of drivers for communicating with industrial PLCs using a variety of protocols, but with a shared API and a license model, that is suitable for creating commercial applications. Hereby PLC4X forms the missing link between the automation and the open source world. Making it possible to use the entire stack of open source technologies to create a new generation of open industrial control systems.","title":"Industry 4.0 with Apache","component":"plc4x","version":"pre-release","name":"industry40","url":"/plc4x/pre-release/users/industry40.html","titles":[{"text":"Benefits of using open source","hash":"_benefits_of_using_open_source","id":1},{"text":"Increased Flexibility","hash":"_increased_flexibility","id":2},{"text":"Increased Stability","hash":"_increased_stability","id":3},{"text":"Increased Extendability","hash":"_increased_extendability","id":4},{"text":"Improved Security","hash":"_improved_security","id":5},{"text":"Cost Reduction","hash":"_cost_reduction","id":6},{"text":"Options to communicating with PLCs","hash":"_options_to_communicating_with_plcs","id":7}]},"18":{"id":18,"text":"Our bug & issue tracker is Github-Issues. This service is available here: https://github.com/apache/plc4x/issues","title":"Bug & Issue Tracker","component":"plc4x","version":"pre-release","name":"issues","url":"/plc4x/pre-release/users/issues.html","titles":[]},"19":{"id":19,"text":"","title":"Preparing Issues & Bug Reports","component":"plc4x","version":"pre-release","name":"preparing-issues","url":"/plc4x/pre-release/users/preparing-issues.html","titles":[]},"20":{"id":20,"text":"Please note that binary patches are not produced for individual vulnerabilities. To obtain the binary fix for a particular vulnerability you should upgrade to an Apache PLC4X version where that vulnerability has been fixed. For more information about reporting vulnerabilities, see the Apache Security Team page. No vulnerabilities have been reported.","title":"Security Vulnerabilities","component":"plc4x","version":"pre-release","name":"security","url":"/plc4x/pre-release/users/security.html","titles":[{"text":"Known Vulnerabilities","hash":"_known_vulnerabilities","id":1}]},"21":{"id":21,"text":"As hand-writing code for a lot of drivers in multiple languages would be quite a nightmare, we have invested a very large amount of time into finding a way to automate this. So in the end we need 3 parts: Protocol definition Language template A maven plugin which generates the code This maven plugin uses a given protocol definition as well as a language template and generates code for reading/writing data in that protocol with the given language. The Types Base module provides all the structures the Protocol modules output which are then used in the Language templates to generate code. Protocol Base and Language Base hereby just provide the interfaces that reference these types and provide the API for the plc4x-maven-plugin to use. These modules are also maintained in a repository which is separate from the rest of the PLC4X code. This is generally only due to some restrictions in the Maven build system. If you are interested in understanding the reasons - please read the chapter on Problems with Maven near the end of this page. Concrete protocol spec parsers, code generators as well as templates that actually generate code are implemented in derived modules all located under the code-generation part of the main project repository. We didn’t want to tie ourselves to only one way to specify protocols and to generate code. Generally multiple types of formats for specifying drivers are thinkable and the same way, multiple ways of generating code are possible. Currently, however we only have one parser: MSpec and one generator: Freemarker. These add more layers to the hierarchy. So for example in case of generating a Siemens S7 Driver for Java this would look like this: The dark blue parts are the ones released externally, the turquoise ones are part of the main PLC4X repo. The maven plugin is built up very modular. So in general it is possible to add new forms of providing protocol definitions as well as language templates. For the formats of specifying a protocol we have tried out numerous tools and frameworks, however the results were never quite satisfying. Usually using them required a large amount of workarounds, which made the solution quite complicated. This is mainly the result, that tools like Thrift, Avro, GRPc, … all are made for transferring an object structure from A to B. They lay focus on keeping the structure of the object in takt and not offer ways to control the format for transferring them. Existing industry standards, such as ASN.1 unfortunately mostly relied on large portions of text to describe part of the parsing or serializing logic, which made it pretty much useless for a fully automated code genration. In the end only DFDL and the corresponding Apache project Apache Daffodil seemed to provide what we were looking for. With this we were able to provide first driver versions fully specified in XML. The downside was, that the PLC4X community regarded this XML format as pretty complicated and when implementing an experimental code generator we quickly noticed that generating a nice object model would not be possible, due to the lack of an ability to model inheritance of types into a DFDL schema. In the end we came up with our own format which we called MSpec and is described in the MSpec Format description. The plc4x-maven-plugin has a very limited set of configuration options. In general all you need to specify, is the protocolName and the languageName. An additional option outputFlavor allows generating multiple versions of a driver for a given language. This can come in handy if we want to be able to generate read-only or passive mode driver variants. In order to be able to refactor and improve protocol specifications without having to update all drivers for a given protocol, we recently added a protocolVersion attribute, that allows us to provide and use multiple versions of one protocol. So in case of us updating the fictional wombat-protocol, we could add a version 2 mspec for that, then use the version 2 in the java-driver and continue to use version 1 in all other languages. Once all drivers are updated we could eliminate the version again. Last, not least, we have a pretty generic options config option, which is a Map type. With options is it possible to pass generic options to the code-generation. So if a driver or language requires further customization, these options can be used. For a list of all supported options for a given language template, please refer to the corresponding language page. Currently, the Java module makes use of such an option for specifying the Java package the generated code uses. If no package option is provided, the default package org.apache.plc4x.{language-name}.{protocol-name}.{output-flavor} is used, but especially when generating custom drivers, which are not part of the Apache PLC4X project, different package names are better suited. So in these cases, the user can simply override the default package name. There is also an additional parameter: outputDir, which defaults to ${project.build.directory}/generated-sources/plc4x/ and usually shouldn’t require being changed in case of a Java project, but usually requires tweaking when generating code for other languages. Here’s an example of a driver pom for building a S7 driver for java: 4.0.0 org.apache.plc4x.plugins plc4x-code-generation 0.13.0-SNAPSHOT test-java-s7-driver org.apache.plc4x.plugins plc4x-maven-plugin test generate-sources generate-driver s7 java read-write org.apache.plc4x.plugins plc4x-code-generation-driver-base-java 0.13.0-SNAPSHOT org.apache.plc4x.plugins plc4x-code-generation-language-java 0.13.0-SNAPSHOT provided org.apache.plc4x.plugins plc4x-code-generation-protocol-s7 0.13.0-SNAPSHOT provided So the plugin configuration is pretty straight forward, all that is specified, is the protocolName, languageName and the output-flavor. The dependency: org.apache.plc4x.plugins plc4x-code-generation-driver-base-java 0.13.0-SNAPSHOT For example contains all classes the generated code relies on. The definitions of both the s7 protocol and java language are provided by the two dependencies: org.apache.plc4x.plugins plc4x-code-generation-language-java 0.13.0-SNAPSHOT provided and: org.apache.plc4x.plugins plc4x-code-generation-protocol-s7 0.13.0-SNAPSHOT provided The reason for why the dependencies are added as code-dependencies and why the scope is set the way it is, is described in the Why are the protocol and language dependencies done so strangely? section. The plugin uses the Java Serviceloader mechanism to find modules. In order to provide a new protocol module, all that is required, it so create a module containing a META-INF/services/org.apache.plc4x.plugins.codegenerator.protocol.Protocol file referencing an implementation of the org.apache.plc4x.plugins.codegenerator.protocol.Protocol interface. This interface is located in the org.apache.plc4x.plugins:plc4x-code-generation-protocol-base module and generally only defines three methods: package org.apache.plc4x.plugins.codegenerator.protocol; import org.apache.plc4x.plugins.codegenerator.types.exceptions.GenerationException; import java.util.Optional; public interface Protocol { /** * The name of the protocol what the plugin will use to select the correct protocol module. * * @return the name of the protocol. */ String getName(); /** * Returns a map of type definitions for which code has to be generated. * * @return the Map of types that need to be generated. * @throws GenerationException if anything goes wrong parsing. */ TypeContext getTypeContext() throws GenerationException; /** * @return the protocolVersion is applicable */ default Optional getVersion() { return Optional.empty(); } } The name is being used for the module to find the right language module, so the result of getName() needs to match the value provided in the maven config-option protocolName. As mentioned before, we support multiple versions of a protocol, so if getVersions() returns a non-empty version, this is used to select the version. The most important method for the actual code-generation however is the getTypeContext() method, which returns a TypeContext type which generally contains a list of all parsed types for this given protocol. Analog to the Protocol Modules the Language modules are constructed very similar. The LanguageOutput interface is very simplistic too and is located in the org.apache.plc4x.plugins:plc4x-code-generation-language-base module and generally only defines four methods: package org.apache.plc4x.plugins.codegenerator.language; import org.apache.plc4x.plugins.codegenerator.types.definitions.ComplexTypeDefinition; import org.apache.plc4x.plugins.codegenerator.types.exceptions.GenerationException; import java.io.File; import java.util.Map; public interface LanguageOutput { /** * The name of the template is what the plugin will use to select the correct language module. * * @return the name of the template. */ String getName(); List supportedOutputFlavors(); /** * An additional method which allows generator to have a hint which options are supported by it. * This method might be used to improve user experience and warn, if set options are ones generator does not support. * * @return Set containing names of options this language output can accept. */ Set supportedOptions(); void generate(File outputDir, String version, String languageName, String protocolName, String outputFlavor, Map types, Map options) throws GenerationException; } The file for registering Language modules is located at: META-INF/services/org.apache.plc4x.plugins.codegenerator.language.LanguageOutput The name being used by the plugin to find the language output module defined by the maven config option languageName. supportedOutputFlavors provides a possible list of flavors, that can be referred to by the maven config option outputFlavor. supportedOptions provides a list of options that the current language module is able to use and which can be passed in to the maven configuration using the options settings. We mentioned in the introduction, that the first 4 modules are maintained and released from outside the main PLC4X repository. This is due to some restrictions in Maven, which result from the way Maven generally works. The main problem is that when starting a build, in the validate-phase, Maven goes through the configuration, downloads the plugins and configures these. This means that Maven also tries to download the dependencies of the plugins too. In case of using a Maven plugin in a project which also builds the maven plugin itself, this is guaranteed to fail - Especially during releases. While during normal development, Maven will probably just download the latest SNAPSHOT from our Maven repository and will be happy with this and not complain even if this version will be overwritten later on in the build. It will just use the new version as soon as it has to. During releases however the release plugin changes the version to a release version and then spawns a build. In this case the build will fail because there is no Plugin with that version to download from anywhere. In this case the only option would be to manually build and deploy the plugin in the release version and to re-start the release (Which is not a nice thing for the release manager). For this reason we have stripped down the plugin and its dependencies to an absolute minimum and have released that separately from the rest, hoping due to the minimality of the dependencies that we will not have to do it very often. As soon as the tooling is released, the version is updated in the PLC4X build and the release version is used without any complications. It would certainly be a lot cleaner, if we provided the dependencies to protocol and language modules as plugin dependencies. However, as we mentioned in the previous subchapter, Maven tries to download and configure the plugins prior to running the build. So during a release the new versions of the modules wouldn’t exist, this would cause the build to fail. We could release the protocol- and the language modules separately too, but we want the language and protocol modules to be part of the project, to not over-complicate things - especially during a release. In order to keep the build and the release as simple as possible, we built the Maven plugin in a way, that it uses the modules dependencies and creates its own Classloader to contain all of these modules at runtime. This brings the benefit of being able to utilize Maven’s capability of determining the build order and dynamically creating the modules build classpath. Adding a normal dependency however would make Maven deploy the artifacts with the rest of the modules. We don’t want that as both the protocol as well as the language-modules are useless as soon as they have been used to generate the code. So we use a trick that is usually used in Web applications, for example: Here the vendor of a Servlet engine is expected to provide an implementation of the Servlet API. It is forbidden for an application to bring this along, but it is required to build the application. For this the Maven scope provided, which tells Maven to provide it during the build, but to exclude it from any applications it builds, because it will be provided by the system running the application. This is not quite true, but it does the trick.","title":"Code Generation","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/developers/code-gen/index.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Configuration","hash":"_configuration","id":2},{"text":"Custom Modules","hash":"_custom_modules","id":3},{"text":"Protocol Modules","hash":"_protocol_modules","id":4},{"text":"Language Modules","hash":"_language_modules","id":5},{"text":"Problems with Maven","hash":"_problems_with_maven","id":6},{"text":"Why are the 4 modules released separately?","hash":"_why_are_the_4_modules_released_separately","id":7},{"text":"Why are the protocol and language dependencies done so strangely?","hash":"_why_are_the_protocol_and_language_dependencies_done_so_strangely","id":8}]},"22":{"id":22,"text":"We are currently using the following CI systems. Apache’s Jenkins at: https://ci-builds.apache.org/job/PLC4X/ GitHub Actions at: https://github.com/apache/plc4x/actions The build on Jenkins is generally responsible for building and testing the state of the project on the development branch. It is currently the only service that is able to build and deploy the SNAPSHOT artifacts and is also responsible for building and updating our website. GitHub Actions on the other side responsible for doing the main part of the testing. It not only builds and runs the tests on a matrix of operating systems as well as with a number of java versions. It also is configured to run the tests on pull-requests. We are using the Jenkins multi-branch pipeline plugin to automatically setup build for branches based upon the build definition in the Jenkinsfile in the root of the project. In general, it builds the develop branch and all branches starting with the prefix feature/. However, when building the develop branch some additional steps are performed. When building develop the build not only builds the project itself and runs all tests, it also runs the sonarcloud analysis, deploys the artifacts built to the Apache Nexus as well as generates and deploys the website.","title":"Continuous Integration","component":"plc4x","version":"pre-release","name":"ci","url":"/plc4x/pre-release/developers/infrastructure/ci.html","titles":[{"text":"Structure of the Jenkins Pipeline build","hash":"_structure_of_the_jenkins_pipeline_build","id":1}]},"23":{"id":23,"text":"In this section you can find information on the services the Apache PLC4X project makes use of.","title":"Infrastructure","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/developers/infrastructure/index.html","titles":[]},"24":{"id":24,"text":"Our bug & issue tracker is Github-Issues. This service is available here: https://github.com/apache/plc4x/issues","title":"Bug & Issue Tracker","component":"plc4x","version":"pre-release","name":"issues","url":"/plc4x/pre-release/developers/infrastructure/issues.html","titles":[]},"25":{"id":25,"text":"We are using SonarCloud as the service for static code analysis. This is an externally hosted service and is available here: https://sonarcloud.io/dashboard?id=apache_plc4x","title":"Code Analysis","component":"plc4x","version":"pre-release","name":"sonar","url":"/plc4x/pre-release/developers/infrastructure/sonar.html","titles":[]},"26":{"id":26,"text":"As, especially for the raw socket functionality of PLC4X, our project had higher demands on the infrastructure as other projects. Apache Infra kindly provided us with a dedicated VM. This is included as build agent into Apache’s Jenkins with the label plc4x2 and is marked for exclusive usage by our project. The host name of this machine is: plc4x-vm2.apache.org On this machine we can even sudo to perform operations only available to root. Project members can request access to the machine. In order to be able to log in, users need to add their SSH public key to their Apache ID first. This is done under the following url: https://id.apache.org/ Here just add the content in the following format to one of the SSH Key (authorized_keys line) fields: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDd10ykYAZLxHJVTER71IrrVVpyR8OBdlJd1aVwb67Ts+ueJjzo8ofQKLASaQw9EQOSfprGZW0sfzhepeJvbX0n1IfsRexoyIGlD8WzyX/UoLiRLPHFv+eSGJVlN90x/l+zps+yo3lq6qfuIqkXQQvB4aJBYsYC/jifpMLvx06zaUBPfdWIaGiBgaWbX/59Q0QsSpX5r8tgdA+XLw/8Zg5AbKazuS2Cm/soJCfQQ7km4bd/WtF5R5xvakVbyILMT8Dk9Hs9OfVL/RFGLYqX4bjy5uCTwPBrwlWqFyq1u7JR39i870XNgn+bIeChaZU098BGyBH/cWMGt7bTJQSKxksF2SZAHjt8Ga2Pl+J6MTW6/EPzIYENgvfOBVSlVaz9SlM26nel1+SHDND9dK/4gRNbujbmzHZLfTjMk7oc4R+WPCBIw99CFeShTKHSxhJKz/3KmcmuEHhNRBdMy+xHecr/r/Pax58a9VHXQqHbwES6tvC1gvM2uFSMKoaKtNkME4V7bPLbQcEF8tKz7/gKp6vp1IL0BdDMwZPodFPmbiJzqjvC38A++B5k0GAgWKYPVsenamZviFhRNGjjum/qxBnAF1FjpIocsEA0zQBYvvOPDpKl9KPRZ32ALHztnRfCEwltgnM1Sjinn4zQjxQs5mJBz2rjMGlkSzVjLoSo7khiBQ== my@email-address.com (I just had to copy this line from my ~/.ssh/id_rsa.pub file) Note, the Email Address in the end doesn’t seem to matter, I simply added it for the sake of completeness. So if this doesn’t match your Apache email, this is not a problem. As soon as that’s done, access needs to be requested from Apache Infra. This is done using the Infra Jira at: https://issues.apache.org/jira Here make sure to select the Project Infrastructure (INFRA). As soon as that’s handled by the Infra team, you should be ready to log-in on the machine. Using SSH we should now be able to log in to the VM. ssh apacheId@plc4x-vm2.apache.org Be sure to use the username matching your Apache ID or the login will fail. If all went well you should now be able to log in to the machine using your apache user. Apache Infra is great at keeping things safe. Providing a sudo password directly would increase the danger of having this intercepted, therefore they are using a tool called opiepasswd. Instead of now entering a password, a challenge is displayed: myid@plc4x-vm2:~$ sudo apt-get update otp-md5 496 pl8230 Password: If you now enter your normal password, you’ll simply get permission denied errors. In order to execute operations as root on the machine, you firstly need to run ortpasswd to generate a new seed. ortpasswd You can then use an opie client on your local machine or online at https://selfserve.apache.org/otp-calculator.html otp-md5 496 pl8230 into OPIE client’s challenge field. In the password field you provide your Apache LDAP password. When hitting enter or clicking on Compute the tool should automatically generate a response. Now all you need to do is copy & paste that as password into your SSH client session. As with the latest version of Mac Catalina the existing clients no longer work and using a public web service is a bad idea, Apache has its own service to calculate it: https://selfserve.apache.org/otp-calculator.html More help can be found for Apache committers at https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=122916896 For being able to build the charts and graphics as part of the site generation, we need to add some additional packages: sudo apt-get install python-seqdiag sudo apt-get install python-nwdiag","title":"The PLC4X Project VM","component":"plc4x","version":"pre-release","name":"vm","url":"/plc4x/pre-release/developers/infrastructure/vm.html","titles":[{"text":"Requesting access","hash":"_requesting_access","id":1},{"text":"Login to the machine","hash":"_login_to_the_machine","id":2},{"text":"Doing things as root","hash":"_doing_things_as_root","id":3},{"text":"Required software","hash":"_required_software","id":4}]},"27":{"id":27,"text":"We are currently using the normal Maven build to not only generate the project artifacts, but also the projects website. In order to provide content, every module can have a src/site directory. This content will be generated to that modules site-part. The skin being used to generate the site is none of the default Maven skins, but a more up-to-date looking skin using: Bootstrap (For the CSS) JQuery (For the JavaScript magic) Fontawesome (For icons and symbols) But we don’t have to worry about the details, all is configured to be used automatically. The site content itself is generated from asciidoc files (ending .adoc) which is a simple yet powerful markup language. (See AsciiDoc Syntax Quick Reference or AsciiDoc cheatsheet for details) Beyond the basic goodies, the build is also configured to generate images from ASCII data using the asciidoctor-diagram plugin. This allows us to generate images like the ones on the S7 Protocol Description page Within the src/site directory there is a file site.xml which generally controls the menu and the look of the site. Most setting are inherited from the plc4x-parent module. That’s also why this is more complicated than the others. The site.xml file is optional. Even if this is not available a site will be generated however no additional content will be linked from any of the navigation menus. So if we wanted to add a new page on some (hopefully non existent) Wombat PLC Protocol, we would create a file called: index.adoc in the src/site/asciidoc/protocols/wombat directory. For example with this content: = Wombat PLC Protocol If you want to waste your money, brains and time, feel free to use a `Wombat PLC`. In order to help you waste even more of that, we'll skip documenting anything. Notice the double equals sign? This is the site Title. It seems the level One with only one equals sign is only used for ebook output. So just keep in mind: Two equals signs is the top level title, all lower levels have more equals signs. In order to generate the content you need to execute the Maven site workflow. This is for example done by executing: mvn site This will not build the artifact itself, but only it’s website. After the build, you would find a file target/site/protocols/wombat/index.html However you can link to this page from any other page, but it is not added ot the navigation menu. In order to add links to the menus, you have to create or modify the site.xml for the module you want to add content to. The simplest form would probably be something like this: This will generate a Wombat menu at the end, and this has one link named lalala. Notice that the link has to have a file ending of .html and not .adoc. If you want to insert the menu somewhere else, you will have to re-define the entire menu. The menu ref items hereby reference standard menus provided by the Maven build. The PLC4X project uses Apache gitpubsub system for maintaining the website. In general all content in a repos asf-site branch is copied to the Webservers, if that repo is registered for it. The content in this branch is generated and maintained during the Maven build as part of the site generation if the site-deploy phase is executed. The build system needs to check-in content to the asf-site branch and usually ASF Jenkins nodes don’t have the permissions to do that. In order to be able to push to the asf-site GIT branch, a dedicated build job is configured to build on nodes with the Jenkins label git-websites. Only on these machines are jobs allowed to push changes to a Git repo and here only to a branch named asf-site. See https://ci-builds.apache.org/job/PLC4X/ for details on the PLC4X Jenkins Website build job. As soon as content is updated in the asf-site the gitpubsub mechanism will make those changes available at https://plc4x.apache.org","title":"Generating the Website","component":"plc4x","version":"pre-release","name":"website","url":"/plc4x/pre-release/developers/infrastructure/website.html","titles":[{"text":"Providing new content","hash":"_providing_new_content","id":1},{"text":"Adding links to menus","hash":"_adding_links_to_menus","id":2},{"text":"Deploying the Website","hash":"_deploying_the_website","id":3}]},"28":{"id":28,"text":"We use Apache’s Confluence instance as Wiki, however most information is generally managed on this website. This service is available here: https://cwiki.apache.org/confluence/display/PLC4X","title":"WIKI","component":"plc4x","version":"pre-release","name":"wiki","url":"/plc4x/pre-release/developers/infrastructure/wiki.html","titles":[]},"29":{"id":29,"text":"Building a project like Apache PLC4X on multiple target operating-systems is quite a challenge, but I think we managed to make it as simple as possible. We usually test the PLC4X build on the following systems: width=100%] Operating System CPU Architecture Description Linux x86_64 Most computers Linux aarch64 Linux running on Macs with M processors (Paralells) Windows x86_64 Most computers Windows aarch64 Windows running on Macs with M processors (Paralells) Mac x86_64 Older Macs Mac aarch64 Newer Macs with M processors (Paralells) However, when building PLC4X there are some requirements the build is expecting you to have provided. These greatly depend on which parts you want to build. If you’re just building the Java modules, these probably have the least demanding requirements. Also, should the Go parts generally work without any additional installations as the maven build should automatically pull the required packages. In order to build all Java parts of PLC4X you are required to have at least Java 11 installed on your machine. We have tested the build with Java 11 up to Java 21 (Latest version at the time of writing this document). If a new version comes out, please give us a little time to verify and handle any related issues. We’ll probably fix them as soon as possible. However, in the past with Oracle’s new release strategy, there have been a few bumps on the road. Also will PLC4X build with any Maven version starting with Maven 3.6.0. Profile Description Requirements Builds Java API, drivers Git LibPCAP with-c Builds C API, drivers with-dotnet Builds C# and .Net API, drivers dotnet with-python Builds Python API, drivers python (min 3.7) pyenv The following pages will describe how to provide these requirements for your operating system. Linux MacOS Windows When running Java unit-tests in IntelliJ, you might run into problems where during the test execution complaints arise that JUnit is unable to load {failsafeArgLine}. In this case you need to go to Settings → Build, Execution, Deployment → Build Tools → Maven → Running Tests and deselect the option argLine.","title":"Preparing your Computer","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/developers/preparing/index.html","titles":[{"text":"Preparing your IDE","hash":"_preparing_your_ide","id":1},{"text":"IntelliJ","hash":"_intellij","id":2}]},"30":{"id":30,"text":"As tracking down issues which result from missing or outdated third party tools such as compilers are always hard do diagnose, we have extended the build of PLC4X with a prerequisiteCheck that automatically checks if required tools are installed and if a required minimum version is available. If any of the prerequisites are not met, the build fails with an error message that will help finding out what’s wrong. The number of checks is highly dependent on which profiles are enabled. So for example the availability and version of the C compiler is only checked if the with-c profile is enabled. If the check is reporting any issues, please feel free to follow the corresponding steps in this guide to install the tools. Checking: git --version If you get any successful output, you probably don’t need to do anything. Apt-based systems: sudo apt install git Yum based systems: sudo yum install git Checking: java --version If you get successful output indicating at least Java 11, you don’t need to do anything. Apt based systems: sudo apt install openjdk-21-jdk Git an Java should be all you need for building the Java part of PLC4X. Apt-based systems: sudo apt install libpcap-dev Yum based systems: sudo yum install libpcap-devel Using libpcap usually requires root privileges, however the java process can be granted permission to do so by executing the following command. sudo setcap cap_net_raw,cap_net_admin=eip /path/to/java /path/to/java however needs to be a real file and not a symlink. So on my Ubuntu 22.04 system, where I installed java as described above the command is as follows: sudo setcap cap_net_raw,cap_net_admin=eip /usr/lib/jvm/java-21-openjdk-arm64/bin/java Sometimes I had to set the uid to execute the java executable with the permissions of the owner (root) … however this is quite suboptimal solution. sudo chmod 4755 /path/to/java It seems that when running Linux on aarch64 (Apple’s Silicon Chips), that there are issues … we’re working on that. Feel free to watch https://github.com/apache/plc4x/issues/1582 on updates to this. Checking: gcc --version If you get any successful output, you probably don’t need to do anything. Apt-based systems: sudo apt install gcc Yum based systems: sudo yum install gcc Checking: dotnet --version If you get any successful output, you probably don’t need to do anything. Microsoft has documented what is needed to install .Net SDK here For Ubuntu this would be: wget -q https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb sudo apt install apt-transport-https sudo apt update sudo apt install dotnet-sdk-6.0 For other distributions, please select the distribution in the drop-down menu and follow the instructions there. If, when checking the version again after installing, you are getting an error: A fatal error occurred. The folder [/usr/share/dotnet/host/fxr] does not exist Then please have a look at this Stackoverflow post (the accepted solution) https://stackoverflow.com/questions/73753672/a-fatal-error-occurred-the-folder-usr-share-dotnet-host-fxr-does-not-exist Checking: python3 --version If you get a version of 3.7 or higher reported, you probably don’t need to do anything. Apt-based systems: sudo apt install python3 Yum based systems: yum intall python3 Checking: python3 -Im ensurepip If you are getting anything else than a: No module named ensurepip, you’re ok. It seems that this manually needs to be installed on some systems. Apt-based systems: sudo apt install python3-venv","title":"Linux","component":"plc4x","version":"pre-release","name":"linux","url":"/plc4x/pre-release/developers/preparing/linux.html","titles":[{"text":"Git","hash":"_git","id":1},{"text":"Java","hash":"_java","id":2},{"text":"Optional and other language support","hash":"_optional_and_other_language_support","id":3},{"text":"LibPCAP (For raw-ethernet support)","hash":"_libpcap_for_raw_ethernet_support","id":4},{"text":"gcc (For PLC4C)","hash":"_gcc_for_plc4c","id":5},{"text":"dotnet (For PLC4Net)","hash":"_dotnet_for_plc4net","id":6},{"text":"python (For PLC4Py)","hash":"_python_for_plc4py","id":7},{"text":"Python venv (For PLC4Py)","hash":"_python_venv_for_plc4py","id":8}]},"31":{"id":31,"text":"As tracking down issues which result from missing or outdated third party tools such as compilers are always hard do diagnose, we have extended the build of PLC4X with a prerequisiteCheck that automatically checks if required tools are installed and if a required minimum version is available. If any of the prerequisites are not met, the build fails with an error message that will help finding out what’s wrong. The number of checks is highly dependent on which profiles are enabled. So for example the availability and version of the C compiler is only checked if the with-c profile is enabled. Most libraries on Mac are installed using Homebrew. Make sure Homebrew ist installed in order to install most of these. /bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\" Checking: git --version If you get any successful output, you probably don’t need to do anything. If you are running this command on a really fresh and clean system, it might be that you are asked to finish installing the XCode commandline tools. If this happens, just follow the process and re-try after it has finished. If you get a response that indicates that git needs to be installed, please execute the following command: brew install git Checking: java --version If you get successful output indicating at least Java 11, you don’t need to do anything. Apt based systems: brew install openjdk Git an Java should be all you need for building the Java part of PLC4X. The libpcap version bundled with macOS is currently 1.9.1. This version causes exceptions. So it’s best to update to a newer version using brew: brew install libpcap Checking: gcc --version If you get any successful output, you probably don’t need to do anything. It seems macOS comes with a version of gcc which is good enough for our use cases. Checking: dotnet --version If you get any successful output, you probably don’t need to do anything. Microsoft is offering an installer for macOS which is available from here. Alternatively you can also install it via homebrew: brew install --cask dotnet-sdk Checking: python --version If you get a version of 3.0.0 or higher reported, you probably don’t need to do anything. In order to install it, please execute the following command: brew install pyenv Then use pyenv to install python: pyenv install 3.9.13 Then set this as the global python version: pyenv global 3.9.13 And add pyenv to the PATH: echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\\n eval \"$(pyenv init -)\"\\nfi' >> ~/.zshrc echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\\n eval \"$(pyenv init -)\"\\nfi' >> ~/.bash_profile After opening a new terminal, python should be configured python --version","title":"Mac OS","component":"plc4x","version":"pre-release","name":"macos","url":"/plc4x/pre-release/developers/preparing/macos.html","titles":[{"text":"Git","hash":"_git","id":1},{"text":"Java","hash":"_java","id":2},{"text":"Optional and other language support","hash":"_optional_and_other_language_support","id":3},{"text":"LibPCAP (For raw-ethernet support)","hash":"_libpcap_for_raw_ethernet_support","id":4},{"text":"gcc (For PLC4C)","hash":"_gcc_for_plc4c","id":5},{"text":"dotnet (For PLC4Net)","hash":"_dotnet_for_plc4net","id":6},{"text":"python (For PLC4Py)","hash":"_python_for_plc4py","id":7}]},"32":{"id":32,"text":"As tracking down issues which result from missing or outdated third party tools such as compilers are always hard do diagnose, we have extended the build of PLC4X with a prerequisiteCheck that automatically checks if required tools are installed and if a required minimum version is available. If any of the prerequisites are not met, the build fails with an error message that will help finding out what’s wrong. The number of checks is highly dependent on which profiles are enabled. So for example the availability and version of the C compiler is only checked if the with-c profile is enabled. As in the past keeping the documentation up to date has been quite challenging, as the projects providing and packaging some of the needed tools have been born and dying like weed, we’ll start using Chocolatey as something similar to Homebrew on Mac or Apt on Linux. So first be sure to install Chocolatey from here: https://community.chocolatey.org/ and follow the most recent instructions on that page in order to install it. Checking: git --version If you get any successful output, you probably don’t need to do anything. If above command is not successful, simply install it via Chocolatey: choco install git Checking: java --version If you get successful output, check that the version reported is at least Java 11. If you need to install or update Java, unfortunately this doesn’t seem to be available via Chocolatey, but needs to be installed directly from a distribution. For Oracles OpenJDK 21 this would be from here: https://learn.microsoft.com/de-de/java/openjdk/download If you are using a Windows VM on aarch64 (Apple M1 or M2 virtual machine), the download available from Microsoft build seem to be one of the few options you have. When installing make sure to select the option to configure the \"JAVA_HOME\" environment variable (deactivated per default). Git an Java should be all you need for building the Java part of PLC4X. In order to use the raw ethernet transport capabilities of PLC4X, we need to ensure the NPcap library is installed. In order to check if NPcap is installed, check the following directories: 64-bit versions: C:\\Windows\\System32\\packet.dll C:\\Windows\\System32\\wpcap.dll 32-bit versions: C:\\Windows\\SysWOW64\\packet.dll C:\\Windows\\SysWOW64\\wpcap.dll If none of these can be found, install it by downloading the installer from https://npcap.com/#download Checking: gcc --version If you get any successful output, you probably don’t need to do anything. If above command fails, please install MinGW from an Administrative console with the following command: choco install mingw https://repo.maven.apache.org/maven2/com/googlecode/cmake-maven-project/cmake-binaries/3.27.7-b1/ Download: https://repo.maven.apache.org/maven2/com/googlecode/cmake-maven-project/cmake-binaries/3.27.7-b1/cmake-binaries-3.27.7-b1-windows-arm_64.jar Deploy as: https://repo.maven.apache.org/maven2/com/googlecode/cmake-maven-project/cmake-binaries/3.27.7-b1/cmake-binaries-3.27.7-b1-windows-arm64.jar Checking: dotnet --version If you get any successful output, you probably don’t need to do anything. Usually this is already installed on Windows machines. Download the installer from here Checking: python --version If you get any successful output, you probably don’t need to do anything. You can get Python from here. Make sure directory containing python.exe is added to your systems PATH. Also make sure you restarted your IDE and or console window after changing the PATH settings for the changes to take effect. https://visualstudio.microsoft.com/de/visual-cpp-build-tools/ PLC4PY Build doesn’t work on Aarch64 on Windows","title":"Windows","component":"plc4x","version":"pre-release","name":"windows","url":"/plc4x/pre-release/developers/preparing/windows.html","titles":[{"text":"Git","hash":"_git","id":1},{"text":"Java","hash":"_java","id":2},{"text":"Optional and other language support","hash":"_optional_and_other_language_support","id":3},{"text":"LibPCAP (For raw-ethernet support)","hash":"_libpcap_for_raw_ethernet_support","id":4},{"text":"gcc (For PLC4C)","hash":"_gcc_for_plc4c","id":5},{"text":"dotnet (For PLC4Net)","hash":"_dotnet_for_plc4net","id":6},{"text":"python (For PLC4Py)","hash":"_python_for_plc4py","id":7}]},"33":{"id":33,"text":"Beckhoff/ ADS EIP","title":"Usage of protocols","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/developers/protocols/index.html","titles":[{"text":"Currently documented are:","hash":"_currently_documented_are","id":1}]},"34":{"id":34,"text":"In contrast to the main project, the plc4x-build-tools repository contains a loose collection of sub-projects. The main pom.xml in the root directory is mainly for allowing to import all modules into an IDE and shouldn’t be used for releases. If you want to release a part of the build-tools, please execute the following release steps in the parts sub-directory. In general the preparation steps for releasing a build-tool is equal to those of the main project. So please check here (Chapters: Preparing your system for being able to release and Preparing the codebase for a release) The rest of the steps are a lot simpler than those of the main project as there aren’t any profiles involved. According to SemVer, we have: Major, Minor and Bugfix releases. For each new Major and Minor release we create a new branch at the beginning of a code-freeze phase. So if currently the project version in develop is {0.13.0-SNAPSHOT}, we create a branch release/{code-generation-short-version}. When creating the branch is exactly the moment in which the version in develop is incremented to the next minor version. This can and should be automated by the maven-release-plugin. Per default the plugin will ask for the working copy version during the build execution. This is the version the develop branch will be changed to. mvn release:branch -DbranchName=releases/code-generation/{minor-version} Per default the plugin suggests the next bugfix version as working version, however we want it to use the next minor version. So in case of preparing the release branch for {0.13.0-SNAPSHOT} the command would be the following: mvn release:branch -DbranchName=releases/code-generation/{code-generation-short-version} The plugin will then aks for the version: What is the new working copy version for \"PLC4X Build Tools: Code Generation\"? (org.apache.plc4x.plugins:plc4x-code-generation) {code-generation-bugfix-version}-SNAPSHOT: : {code-generation-development-version}-SNAPSHOT Where the suggested default is manually overridden. This step now should perform quite quickly as no build and no tests are involved. However in the end the versions of the develop branch are updated and a new releases/code-generation/{code-generation-short-version} branch is created. Now is a good time to add a new section to the RELEASE_NOTES document for the new SNAPSHOT version. Here comes a template: ============================================================== (Unreleased) Apache PLC4X {code-generation-development-version}-SNAPSHOT ============================================================== New Features ------------ Incompatible changes -------------------- Bug Fixes --------- // Rest of the file After that please remove the (Unreleased) from the following section, as we are currently working on its release. Also be sure to do a quick full-text-search to check if the version was updated correctly everywhere. If you find anything here, you will need to pay attention during the release. Now usually comes a phase in which last tests and checks should be performed. If any problems are found they, have to be fixed in the release branch. Changes should either be re applied in develop or cherry-picked, however merging things back can cause a lot of problems, and we no longer have the same versions. Before you start preparing the release, it is important to manually make the RELEASE_NOTES reflect the version we are planning on releasing. Be sure to ensure you have switched to the release branch before continuing. So be sure to remove the (Unreleased) and SNAPSHOT from the version. As especially when switching a lot between different branches, it is recommended to do a clean checkout of the repository. Otherwise, a lot of directories can be left over, which would be included in the source-release zip. In order to prepare a release-candidate, the first step is switching to the corresponding release-branch. Again, just in case you missed the first warning: Be sure to ensure you have switched to the release branch before continuing. After that, the following command will to all preparation steps for the release: mvn release:prepare In general the plugin will now ask you 3 questions: The version we want to release as (It will suggest the version you get by omitting the -SNAPSHOT suffix, keep it as it is) The name of the tag the release commit will be tagged with in the SCM (Name it releases/code-generation/{release-version} (releases/code-generation/{0.13.0-SNAPSHOT} in our case) The next development version (The version present in the pom after the release) (leave it as it is suggested by the plugin) Usually for 1 and 3 the defaults are just fine, make sure the tag name is correct as this usually is different. However, it is important to check that nowhere else SNAPSHOT versions are referenced. What the plugin now does, is automatically to execute the following operations: Check we aren’t referencing any SNAPSHOT dependencies. Update all pom versions to the release version. Run a build with all tests Commit the changes (commit message: [maven-release-plugin] prepare release releases/code-generation/{0.13.0-SNAPSHOT}) Push the commit Tag the commit Update all poms to the next development version. Commit the changes (commit message: [maven-release-plugin] prepare for next development iteration) Push the commit However, this just prepared the git repository for the release, we have to perform the release to produce and stage the release artifacts. Please verify the git repository at: https://gitbox.apache.org/repos/asf?p=plc4x-build-tools.git is in the correct state. Please select the release branch and verify the commit log looks similar to this It is important that the commit with the message \"[maven-release-plugin] prepare release releases/code-generation/{0.13.0-SNAPSHOT}\" is tagged with the release tag (in this case releases/code-generation/{0.13.0-SNAPSHOT}) If you check the commit itself, it should mainly consist of version updates like this: The root pom has a few more changes, but in general this should be what you are seeing. After that should come a second commit: This now updates the versions again, but this time from the release version to the one we selected for the next development iteration (in this case {code-generation-bugfix-version}-SNAPSHOT) If the commit history doesn’t look like this, something went wrong. If something goes wrong, you can always execute: mvn release:rollback And it will change the versions back and commit and push things. However, it will not delete the tag in GIT (locally and remotely). So you have to do that manually or use a different tag next time. This is done by executing another goal of the maven-release-plugin: mvn release:perform This executes automatically as all information it requires is located in the release.properties file the prepare-goal prepared. The first step is that the perform-goal checks out the previously tagged revision into the root modules target/checkout directory. Here it automatically executes a maven build (You don’t have to do this, it’s just that you know what’s happening): mvn clean deploy -P apache-release As the apache-release profile is activated, this builds and tests the project as well as creates the JavaDocs, Source packages and signs each of these with your PGP key. As this time the build is building with release versions, Maven will automatically choose the release url for deploying artifacts. The way things are set up in the apache parent pom, is that release artifacts are deployed to a so-called staging repository. You can think of a staging repository as a dedicated repository created on the fly as soon as the first artifact comes in. After the build you will have a nice and clean Maven repository at https://repository.apache.org/ that contains only artifacts from the current build. After the build it is important to log in to Nexus at https://repository.apache.org/, select Staging Repositories and find the repository with the name: orgapacheplc4x-{somenumber}. Select that and click on the Close button. Now Nexus will do some checks on the artifacts and check the signatures. As soon as it’s finished, we are done on the Maven side and ready to continue with the rest of the release process. A release build also produces a so-called source-assembly zip. This contains all sources of the project and will be what’s actually the release from an Apache point of view and will be the thing we will be voting on. This file will also be signed and SHA512 hashes will be created. Each new release and release-candidate has to be staged in the Apache SVN under: https://dist.apache.org/repos/dist/dev/plc4x/ The directory structure of this directory is as follows: ./KEYS ./build-tools/code-generation/{0.13.0-SNAPSHOT} ./build-tools/code-generation/{0.13.0-SNAPSHOT}/rc1 ./build-tools/code-generation/{0.13.0-SNAPSHOT}/rc1/README ./build-tools/code-generation/{0.13.0-SNAPSHOT}/rc1/RELEASE_NOTES ./build-tools/code-generation/{0.13.0-SNAPSHOT}/rc1/apache-plc4x-code-generation-{0.13.0-SNAPSHOT}-source-release.zip ./build-tools/code-generation/{0.13.0-SNAPSHOT}/rc1/apache-plc4x-code-generation-{0.13.0-SNAPSHOT}-source-release.zip.asc ./build-tools/code-generation/{0.13.0-SNAPSHOT}/rc1/apache-plc4x-code-generation-{0.13.0-SNAPSHOT}-source-release.zip.sha512 I usually prepare exactly the same directory structure, starting with the {0.13.0-SNAPSHOT} locally and then just import everything using the following command: svn import {0.13.0-SNAPSHOT} https://dist.apache.org/repos/dist/dev/plc4x/build-tools/code-generation/{0.13.0-SNAPSHOT} -m\"Staging of rc1 of PLC4X Build-Tools (Code-Generation) {0.13.0-SNAPSHOT}\" The KEYS file contains the PGP public key which belongs to the private key used to sign the release artifacts. If this is your first release be sure to add your key to this file. For the format have a look at the file itself. It should contain all the information needed. Be sure to stage exactly the README and RELEASE_NOTES files contained in the root of your project. Ideally you just copy them there from there. The three -source-release.zip artifacts should be located in the directory: code-generation/target/checkout/code-generation/target So, after committing these files to SVN, you are ready to start the vote. After staging the release candidate in the Apache SVN, it is time to actually call out the vote. For this we usually send two emails. The following would be the one used to do our first TLP release: E-Mail Topic: [VOTE] Apache PLC4X Build-Tools Code-Generation {0.13.0-SNAPSHOT} RC1 Message: Apache PLC4X Build-Tools Code-Generation {0.13.0-SNAPSHOT} has been staged under [2] and it’s time to vote on accepting it for release. All Maven artifacts are available under [1]. Voting will be open for 72hr. A minimum of 3 binding +1 votes and more binding +1 than binding -1 are required to pass. Repository: https://gitbox.apache.org/repos/asf/plc4x-build-tools.git Release tag: releases/code-generation/{0.13.0-SNAPSHOT} Hash for the release tag: {replacethiswiththerealgitcommittag} Per [3] \"Before voting +1 PMC members are required to download the signed source code package, compile it as provided, and test the resulting executable on their own platform, along with also verifying that the package meets the requirements of the ASF policy on releases.\" You can achieve the above by following [4]. [ ] +1 accept (indicate what you validated - e.g. performed the non-RM items in [4]) [ ] -1 reject (explanation required) [1] https://repository.apache.org/content/repositories/orgapacheplc4x-{somefourdigitnumber} [2] https://dist.apache.org/repos/dist/dev/plc4x/build-tools/code-generation/{0.13.0-SNAPSHOT}/rc1/ [3] https://www.apache.org/dev/release/validation.html#approving-a-release [4] https://plc4x.apache.org/plc4x/latest/developers/release/validation.html As it is sometimes to do the vote counting, if voting and discussions are going on in the same thread, we send a second email: E-Mail Topic: [DISCUSS] Apache PLC4X Build-Tools Code-Generation {0.13.0-SNAPSHOT} RC1 Message: This is the discussion thread for the corresponding VOTE thread. Please keep discussions in this thread to simplify the counting of votes. If you have to vote -1 please mention a brief description on why and then take the details to this thread. Now we have to wait 72 hours till we can announce the result of the vote. This is an Apache policy to make it possible for anyone to participate in the vote, no matter where that person lives and not matter what weekends or public holidays might currently be. The vote passes, if at least 3 +1 votes are received and more +1 are received than -1. After the 72-our minimum wait period is over, and we have fulfilled the requirement of at least 3 +1 votes and more +1 than -1, a final reply is sent to the vote thread with a prefix of [RESULT] in the title in which the summary of the vote is presented in an aggregated form. E-Mail Topic: [RESULT] [VOTE] Apache PLC4X Build-Tools Code-Generation {0.13.0-SNAPSHOT} RC1 Message: So, the vote passes with 3 +1 votes by PMC members and one +1 vote by a non PMC member. Chris As soon as the votes are finished, and the results were in favor of a release, the staged artifacts can be released. This is done by moving them inside the Apache SVN. svn move -m \"Release Apache PLC4X {0.13.0-SNAPSHOT}\" \\ https://dist.apache.org/repos/dist/dev/plc4x/build-tools/code-generation/{0.13.0-SNAPSHOT}/rc1 \\ https://dist.apache.org/repos/dist/release/plc4x/build-tools/code-generation/{0.13.0-SNAPSHOT} This will make the release artifacts available and will trigger them being copied to mirror sites. This is also the reason why you should wait at least 24 hours before sending out the release notification emails. As a lot of mirrors are serving our releases, it is the Apache policy to clean old releases from the repo if newer versions are released. This can be done like this: svn delete https://dist.apache.org/repos/dist/release/plc4x/0.3.0/ -m\"deleted version 0.3.0\" After this, https://dist.apache.org/repos/dist/release/plc4x should only contain the latest release directory. The probably simplest part is releasing the Maven artifacts. In order to do this, the release manager logs into Nexus at https://repository.apache.org/, selects the staging repository and clicks on the Release button. This will move all artifacts into the Apache release repository and delete the staging repository after that. All release artifacts released to the Apache release repo, will automatically be synced to Maven central. The `release branch should always point to the last released version. This has to be done with git git checkout release git merge releases/code-generation/{0.13.0-SNAPSHOT} When there are conflicts it could help to use the theirs merge strategy, i.e., git merge -X theirs releases/code-generation/{0.13.0-SNAPSHOT} Possibly a manual conflict resolution has to be done afterwards. After that, changes need to be pushed. In contrast to main releases of PLC4X we won’t do any GitHub Issues version updates, updating of the download page or notifying of the world email to announce@apache.org So now you’re done. Congrats!","title":"Releasing PLC4X Build-Tools","component":"plc4x","version":"pre-release","name":"build-tools","url":"/plc4x/pre-release/developers/release/build-tools.html","titles":[{"text":"Creating a release branch (For the code-generation module)","hash":"_creating_a_release_branch_for_the_code_generation_module","id":1},{"text":"Preparing develop for the next iteration","hash":"_preparing_develop_for_the_next_iteration","id":2},{"text":"Release stabilization phase","hash":"_release_stabilization_phase","id":3},{"text":"Preparing a release","hash":"_preparing_a_release","id":4},{"text":"What if something goes wrong?","hash":"_what_if_something_goes_wrong","id":5},{"text":"Performing a release","hash":"_performing_a_release","id":6},{"text":"Staging a release","hash":"_staging_a_release","id":7},{"text":"Starting a vote on the mailing list","hash":"_starting_a_vote_on_the_mailing_list","id":8},{"text":"Releasing after a successful vote","hash":"_releasing_after_a_successful_vote","id":9},{"text":"Cleaning up older release versions","hash":"_cleaning_up_older_release_versions","id":10},{"text":"Releasing the Maven artifacts","hash":"_releasing_the_maven_artifacts","id":11},{"text":"Merge back release version to release branch","hash":"_merge_back_release_version_to_release_branch","id":12}]},"35":{"id":35,"text":"","title":"Releasing and Validating Releases","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/developers/release/index.html","titles":[]},"36":{"id":36,"text":"Please be sure to execute the release with a Java version 11 or the Karaf feature tests will not run. Update the RELEASE_NOTES Check year in NOTICE Create release branch: mvn release:branch -P with-c,with-dotnet,with-go,with-java,with-python,enable-all-checks -DbranchName=rel/{current-short-version} Add a new section to the RELEASE_NOTES on develop Prepare the release: mvn release:prepare -P with-c,with-dotnet,with-go,with-java,with-python,enable-all-checks Perform the release: mvn clean release:perform Close the staging repo on Nexus Stage the release artifacts in SVN Vote on the mailing list Move RC to the release section of SVN Remove old releases in SVN Release staging repo on Nexus Add the version to the DOAP file on develop Update Download site Update GitHub Issues Merge back release version to release branch Send announce email Be sure you are using a JDK and not a JRE, or the release will fail because the release can’t execute the javadoc executable. As part of the release process, Maven will upload maven release artifacts to a so-called staging repository. This can be thought of as an ad-hoc Maven repository that contains only the artifacts for one release. This helps reviewers to see what’s in the convenience maven package and to release that to the public repos with one click. In order to be allowed to upload artifacts, your account has to be enabled for this, and you have to tell Maven about your credentials. In order to do this, you should provide these credentials via .m2/settings.xml. So if you don’t already have one, you should create a .m2 directory in your user home and inside that create a settings.xml file with at least this content: apache.snapshots.https {user-id} {user-pass} apache.releases.https {user-id} {user-pass} This tells maven to use above credentials as soon as a repository with the id apache.snapshots.https or apache.releases.https is being used. For a release all you need is the releases repo, but it is good to have the other in place as it enables you to also deploy SNAPSHOTs from your system. There repos are defined in the apache parent pom and is identical for all Apache projects. Additionally, all artifacts are automatically signed by the release build. In order to be able to do this you need to set up GPG. The key being used to sign the artifacts will have to be linked to your Apache E-Mail ({apache-id}@apache.org) and verified by at least one fellow Apache committer (Ideally more) that have trusted keys themselves. Usually for this you have to get in touch - in real life - with any Apache committer with a trusted key. Attending an ApacheCon is usually a great way to do this as usually every ApacheCon has a Key Signing event in its schedule. He can then sign your key and hereby enable you to sign Apache release artifacts. There’s a detailed description here. However, in contrast to that documentation, upload your key to the following servers: pool.sks-keyservers.net and keyserver.ubuntu.com as these are the ones Nexus is checking. If you happen to have multiple keys, adding the following profile to your settings.xml should help: apache-release 5C60D6B9 true topsecret-password Currently, there is a Java-Version sweet-spot for being able to release all modules and that is Java 11. So be sure to set Java 11 as the java version used to do the release. Also, at least Maven 3.6 is required for CMake. Ideally use the Maven-Wrapper to ensure the Maven version fits the build. On some systems (mainly Mac) gpg signing can result in errors like: [INFO] --- maven-gpg-plugin:3.0.1:sign (sign-release-artifacts) @ plc4x-parent --- gpg: signing failed: Inappropriate ioctl for device In this case adding the following helps: export GPG_TTY=$(tty) Usually you will have to update the RELEASE_NOTES document to the new version. I would suggest doing this prior to the branch as otherwise you will definitely have to port it back to develop. So remove the SNAPSHOT and (Unreleased) markers from the file and add missing parts. Also, if you are doing the first release in a new year, it is advisable to search for the old year and check if any occurrences are ok the way they are. Usually the NOTICE file has to be adjusted. According to SemVer, we have: Major, Minor and Bugfix releases. For each new Major and Minor release we create a new branch at the beginning of a code-freeze phase. So if currently the project version in develop is 0.13.0-SNAPSHOT, we create a branch rel/{current-short-version}. When creating the branch is exactly the moment in which the version in develop is incremented to the next minor version. This can and should be automated by the maven-release-plugin. Per default the plugin will ask for the working copy version during the build execution. This is the version the develop branch will be changed to. In contrast to normal builds, it is important to enable all profiles when creating the branch as only this way will all modules versions be updated. Otherwise, the non-default modules on develop will reference the old version which will cause problems when building. mvn release:branch -P with-c,with-dotnet,with-go,with-java,with-python,enable-all-checks -DbranchName=rel/{minor-version} Per default the plugin suggests the next bugfix version as working version, however we want it to use the next minor version. So in case of preparing the release branch for 0.13.0-SNAPSHOT the command would be the following: mvn release:branch -P with-c,with-dotnet,with-go,with-java,with-python,enable-all-checks -DbranchName=rel/{current-short-version} The plugin will then aks for the version: What is the new working copy version for \"PLC4X\"? (org.apache.plc4x:plc4x-parent) {current-next-incremental-version}-SNAPSHOT: : {current-next-minor-version}-SNAPSHOT Here the suggested default has to be manually overridden. This step now should perform quite quickly as no build and no tests are involved. However, in the end the versions of the develop branch are updated and a new rel/{current-short-version} branch is created. Now is a good time to add a new section to the RELEASE_NOTES document for the new SNAPSHOT version. Here comes a template: ============================================================== (Unreleased) Apache PLC4X {current-next-minor-version}-SNAPSHOT ============================================================== New Features ------------ Incompatible changes -------------------- Bug Fixes --------- // Rest of the file Also be sure to do a quick full-text-search to check if the version was updated correctly everywhere. If you find anything here, you will need to pay attention during the release. Now usually comes a phase in which last tests and checks should be performed. If any problems are found, they have to be fixed in the release branch. Changes should either be re applied in develop or cherry-picked, however merging things back can cause a lot of problems, and we no longer have the same versions. Same as with creating the branch it is important to enable all profiles when creating the branch as only this way will all modules versions be updated. Otherwise, the non-default modules on develop will reference the old version which will cause problems when building. For people building with some additional profiles from the source release will be impossible. As especially when switching a lot between different branches, it is recommended to do a clean checkout of the repository. Otherwise, a lot of directories can be left over, which would be included in the source-release zip. In order to prepare a release-candidate, the first step is switching to the corresponding release-branch. After that, the following command will to all preparation steps for the release: mvn release:prepare -P with-c,with-dotnet,with-go,with-java,with-python,enable-all-checks (The -P with-c,with-dotnet,with-go,with-java,with-python,enable-all-checks tells maven to activate the all profiles that partition the build and makes sure the versions of all modules are updated as part of the release) In general the plugin will now ask you 3 questions: The version we want to release as (It will suggest the version you get by omitting the -SNAPSHOT suffix) The name of the tag the release commit will be tagged with in the SCM (Name it v{release-version} (v0.13.0 in our case) The next development version (The version present in the pom after the release) ({current-next-bugfix-version} in our case) Usually for 1 and 3 the defaults are just fine, make sure the tag name is correct as this usually is different. What the plugin now does, is automatically execute the following operations: Check we aren’t referencing any SNAPSHOT dependencies. Update all pom versions to the release version. Run a build with all tests Commit the changes (commit message: [maven-release-plugin] prepare release v0.13.0) Push the commit Tag the commit Update all poms to the next development version. Commit the changes (commit message: [maven-release-plugin] prepare for next development iteration) Push the commit However, this just prepared the git repository for the release, we have to perform the release to produce and stage the release artifacts. Please verify the git repository at: https://gitbox.apache.org/repos/asf?p=plc4x.git is in the correct state. Please select the release branch and verify the commit log looks similar to this It is important that the commit with the message \"[maven-release-plugin] prepare release v{release-version}\" is tagged with the release tag (in this case v0.13.0) If you check the commit itself, it should mainly consist of version updates like this: The root pom has a few more changes, but in general this should be what you are seeing. After that should come a second commit: This now updates the versions again, but this time from the release version to the one we selected for the next development iteration (in this case 0.3.1-SNAPSHOT) If the commit history doesn’t look like this, something went wrong. If something goes wrong, you can always execute: mvn release:rollback -P with-c,with-dotnet,with-go,with-java,with-python,enable-all-checks It will change the versions back and commit and push things. Also, should you check if you have any uncommitted changes (as our code-generation can make git think they are \"dirty\") However, it will not delete the tag in GIT (locally and remotely). So you have to do that manually or use a different tag next time. This is done by executing another goal of the maven-release-plugin: mvn clean release:perform The clean is only for making sure there is no artifacts in target directly, but only in target/checkout/target. This executes automatically as all information it requires is located in the release.properties file the prepare-goal prepared. The first step is that the perform-goal checks out the previously tagged revision into the root modules target/checkout directory. Here it automatically executes a maven build (You don’t have to do this, it’s just that you know what’s happening): mvn deploy -P apache-release As the apache-release profile is also activated, this builds and tests the project as well as creates the JavaDocs, Source packages and signs each of these with your PGP key. We are intentionally not adding the other profiles, as these either produce binary artifacts that usually only work on the system they were compiled on (C++, .Net) or we haven’t found a good way to distribute them via Maven yet (Python). As this time the build is building with release versions, Maven will automatically choose the release url for deploying artifacts. The way things are set up in the apache parent pom, is that release artifacts are deployed to a so-called staging repository. You can think of a staging repository as a dedicated repository created on the fly as soon as the first artifact comes in. After the build you will have a nice and clean Maven repository at https://repository.apache.org/ that contains only artifacts from the current build. After the build it is important to log in to Nexus at https://repository.apache.org/, select Staging Repositories and find the repository with the name: orgapacheplc4x-{somenumber}. Select that and click on the Close button. Now Nexus will do some checks on the artifacts and check the signatures. As soon as it’s finished, we are done on the Maven side and ready to continue with the rest of the release process. A release build also produces a so-called source-assembly zip. This contains all sources of the project and will be what’s actually the release from an Apache point of view and will be the thing we will be voting on. This file will also be signed and SHA512 hashes will be created. Each new release and release-candidate has to be staged in the Apache SVN under: https://dist.apache.org/repos/dist/dev/plc4x/ The directory structure of this directory is as follows: ./KEYS ./0.13.0/ ./0.13.0/rc1 ./0.13.0/rc1/README ./0.13.0/rc1/RELEASE_NOTES ./0.13.0/rc1/apache-plc4x-0.13.0-source-release.zip ./0.13.0/rc1/apache-plc4x-0.13.0-source-release.zip.asc ./0.13.0/rc1/apache-plc4x-0.13.0-source-release.zip.sha512 You can generally import the stuff, by preparing a directory structure like above locally and then using svn import to do the importing: cd ./{current-full-version} svn import rc1 https://dist.apache.org/repos/dist/dev/plc4x/{current-full-version}/rc1 -m\"Staging of rc1 of PLC4X {current-full-version}\" The KEYS file contains the PGP public key which belongs to the private key used to sign the release artifacts. If this is your first release be sure to add your key to this file. For the format have a look at the file itself. It should contain all the information needed. Be sure to stage exactly the README and RELEASE_NOTES files contained in the root of your project. Ideally you just copy them there from there. All three -source-relese.zip artifacts should be located in the directory: target/checkout/target After committing these files to SVN you are ready to start the vote. After staging the release candidate in the Apache SVN, it is time to actually call out the vote. For this we usually send two emails. The following would be the one used to do our first TLP release: E-Mail Topic: [VOTE] Apache PLC4X 0.13.0 RC1 Message: Apache PLC4X 0.13.0 has been staged under [2] and it’s time to vote on accepting it for release. All Maven artifacts are available under [1]. Voting will be open for 72hr. A minimum of 3 binding +1 votes and more binding +1 than binding -1 are required to pass. Release tag: v0.13.0 Hash for the release tag: {replacethiswiththerealgitcommittag} Per [3] \"Before voting +1 PMC members are required to download the signed source code package, compile it as provided, and test the resulting executable on their own platform, along with also verifying that the package meets the requirements of the ASF policy on releases.\" You can achieve the above by following [4]. [ ] +1 accept (indicate what you validated - e.g. performed the non-RM items in [4]) [ ] -1 reject (explanation required) [1] https://repository.apache.org/content/repositories/orgapacheplc4x-{somefourdigitnumber} [2] https://dist.apache.org/repos/dist/dev/plc4x/0.13.0/rc1 [3] https://www.apache.org/dev/release.html#approving-a-release [4] https://cwiki.apache.org/confluence/display/PLC4X/Validating+a+staged+Release As it is sometimes to do the vote counting, if voting and discussions are going on in the same thread, we send a second email: E-Mail Topic: [DISCUSS] Apache PLC4X 0.13.0 RC1 Message: This is the discussion thread for the corresponding VOTE thread. Please keep discussions in this thread to simplify the counting of votes. If you have to vote -1 please mention a brief description on why and then take the details to this thread. Now we have to wait 72 hours till we can announce the result of the vote. This is an Apache policy to make it possible for anyone to participate in the vote, no matter where that person lives and not matter what weekends or public holidays might currently be. The vote passes, if at least 3 +1 votes are received and more +1 are received than -1. After the 72-hour minimum wait period is over and we have fulfilled the requirement of at least 3 +1 votes and more +1 than -1, a final reply is sent to the vote thread with a prefix of [RESULT] in the title in which the summary of the vote is presented in an aggregated form. E-Mail Topic: [RESULT] [VOTE] Apache PLC4X 0.13.0 RC1 Message: So, the vote passes with {number of +1 votes} +1 votes by PMC members {number of +1 votes from non-pmc members} +1 vote by a non PMC member. As soon as the votes are finished, and the results were in favor of a release, the staged artifacts can be released. This is done by moving them inside the Apache SVN. svn move -m \"Release Apache PLC4X 0.13.0\" \\ https://dist.apache.org/repos/dist/dev/plc4x/0.13.0/rc1 \\ https://dist.apache.org/repos/dist/release/plc4x/0.13.0 This will make the release artifacts available and will trigger them being copied to mirror sites. This is also the reason why you should wait at least 24 hours before sending out the release notification emails. If however for some reason it is needed to prepare a new RC for the release. Please follow these steps: Set the versions of the release branch to the previous version by using the versions:set plugin: mvn versions:set -DprocessAllModules=true -P with-c,with-dotnet,with-go,with-java,with-python,enable-all-checks Delete the tag locally: git tag -d v{current-full-version} Delete the tag remotely: git push --delete origin v{current-full-version} Commit all changes Drop the staging repo at https://repository.apache.org Delete the previous RC in SVN svn rm https://dist.apache.org/repos/dist/dev/plc4x/0.9.0/rc1 -m\"Removed rc1 of PLC4x 0.9.0\" Reply to the VOTE and the DISCUSS announcing the vote has been cancelled and explain why and that you’re going to start a new RC soon. Ideally prefix the title of the Emails with [CANCELLED] After this you should be ready to start a new RC. As a lot of mirrors are serving our releases, it is the Apache policy to clean old releases from the repo if newer versions are released. This can be done like this: svn delete https://dist.apache.org/repos/dist/release/plc4x/{current-full-version}/ -m\"deleted version {current-full-version}\" After this https://dist.apache.org/repos/dist/release/plc4x should only contain the latest release directory. Probably the simplest part is releasing the Maven artifacts. In order to do this, the release manager logs into Nexus at https://repository.apache.org/, selects the staging repository and clicks on the Release button. This will move all artifacts into the Apache release repository and delete the staging repository after that. All release artifacts released to the Apache release repo, will automatically be synced to Maven central. Now that the release is out, in the develop branch, update the DOAP file for plc4x. This is found at: src/site/resources-filtered/plc4x-doap.rdf Please add the just released version to the top of the versions. This file is needed for Apache’s tooling to automatically keep track of project release activity, and we use this internally too to automatically update the documentation to always reference the latest released version automatically. The release branch should always point to the last released version. This has to be done with git git checkout release git merge v0.13.0 When there are conflicts it could help to use the theirs merge strategy, i.e., git merge -X theirs v0.13.0 Possibly a manual conflict resolution has to be done afterwards. After that, changes need to be pushed. Set the released version to \"released\" and set the \"release-date\" Add the next version to the versions. The URL http://plc4x.apache.org/users/download.html has to be changed, and the current release has to be listed there. This is done by changing the download.adoc under src/site/users/ (in the develop branch, as this is where the site is generated from!) Copy the last release down to Previous Releases Point the download links of the last release to archive, e.g. http://archive.apache.org/dist/plc4x/0.13.0/apache-plc4x-0.13.0-source-release.zip Add the new Release under Current Releases and change all links. Note: Please add an anchor for the toc Update the sections for the changes according to the RELEASE_NOTES from the release Note: Transfer all to ascii-doc notation to ensure correct rendering of the site Also remove the JIRA TICKET ids in Front Make sure you have given the Apache mirrors time to fetch the release files by waiting at least 24 hours after moving the release candidate to the release part of the SVN. After that it is time to announce your release to the world: From: your apache email address To: announce@apache.org CC: dev@plc4x.apache.org E-Mail Topic: [ANNOUNCE] Apache PLC4X 0.13.0 released Message: The Apache PLC4X team is pleased to announce the release of Apache PLC4X 0.13.0 PLC4X is a set of libraries for communicating with industrial programmable logic controllers (PLCs) using a variety of protocols but with a shared API. The current release contains drivers able to communicate with industrial PLCs using one of the following protocols: * AB-ETH * Beckhoff ADS * CanOpen * EtherNet/IP / EIP * Firmata * KNXNet/IP * Modbus * OPC UA * Siemens S7 (0x32) Beyond that we also provide integration modules for the following Apache projects and frameworks: * Apache Calcite * Apache Camel * Apache Edgent (Incubating / Retired) * Apache Kafka (Kafka Connect) * Apache NiFi * Logstash It also provides an `OPC UA Server` which can act as a bridge between legacy systems and OPC UA. Visit the Apache PLC4X website [1] for general information or the downloads page [2] for release notes and download information. Regards, The Apache PLC4X team [1] http://plc4x.apache.org [2] http://plc4x.apache.org/users/download.html It is important to note that you have to send this email from your apache email address, or it will be rejected. This wasn’t very simple for me to set up. A general description can be found here: https://reference.apache.org/committer/email Here’s what I did in Google Mail to allow sending of emails: https://gmail.googleblog.com/2009/07/send-mail-from-another-address-without.html Note … you will be able to select the alternate sending address if you click into the recipients line of a new email (Not very intuitive). After that email is out the door, you’re done. Congrats!","title":"Releasing PLC4X","component":"plc4x","version":"pre-release","name":"release","url":"/plc4x/pre-release/developers/release/release.html","titles":[{"text":"TL/DR","hash":"_tldr","id":1},{"text":"Preparing your system for being able to release","hash":"_preparing_your_system_for_being_able_to_release","id":2},{"text":"Preparing the codebase for a release","hash":"_preparing_the_codebase_for_a_release","id":3},{"text":"Creating a release branch","hash":"_creating_a_release_branch","id":4},{"text":"Preparing develop for the next iteration","hash":"_preparing_develop_for_the_next_iteration","id":5},{"text":"Release stabilization phase","hash":"_release_stabilization_phase","id":6},{"text":"Preparing a release","hash":"_preparing_a_release","id":7},{"text":"What if something goes wrong?","hash":"_what_if_something_goes_wrong","id":8},{"text":"Performing a release","hash":"_performing_a_release","id":9},{"text":"Staging a release","hash":"_staging_a_release","id":10},{"text":"Starting a vote on the mailing list","hash":"_starting_a_vote_on_the_mailing_list","id":11},{"text":"Releasing after a successful vote","hash":"_releasing_after_a_successful_vote","id":12},{"text":"Going back for a new release candidate","hash":"_going_back_for_a_new_release_candidate","id":13},{"text":"Cleaning up older release versions","hash":"_cleaning_up_older_release_versions","id":14},{"text":"Releasing the Maven artifacts","hash":"_releasing_the_maven_artifacts","id":15},{"text":"Add the version to the DOAP file","hash":"_add_the_version_to_the_doap_file","id":16},{"text":"Merge back release version to release branch","hash":"_merge_back_release_version_to_release_branch","id":17},{"text":"Updating GitHub Issues","hash":"_updating_github_issues","id":18},{"text":"Update the download site","hash":"_update_the_download_site","id":19},{"text":"Notifying the world","hash":"_notifying_the_world","id":20}]},"37":{"id":37,"text":"On MacOS and Linux the first 4 steps can be automated. For details please read the section about tooling after this chapter. Download all staged artifacts under the url specified in the release vote email into a directory we’ll now call download-dir. Verify the signature is correct: Additional Apache tutorial on how to verify downloads can be found here. gpg --verify apache-plc4x-{current-full-version}-source-release.zip.asc apache-plc4x-#{current-full-version}-source-release.zip Check if the check is successful. Check if the signature references an Apache email address. Verify the SHA512 hashes: Mac/Linux: shasum -a512 apache-plc4x-{current-full-version}-source-release.zip Windows (PowerShell): Get-FileHash -Algorithm SHA512 .\\apache-plc4x-code-generation-{current-full-version}-source-release.zip | Format-List Unzip the archive: unzip apache-plc4x-{current-full-version}-source-release.zip Verify the existence of LICENSE, NOTICE, README, RELEASE_NOTES files in the extracted source bundle. Verify the content of LICENSE, NOTICE, README, RELEASE_NOTES files in the extracted source bundle. (Especially pay attention to the year in the NOTICE file if this is the first release of the year) [RM] Verify the staged source README, RELEASE_NOTE files correspond to those in the extracted source bundle. [RM] Run RAT externally to ensure there are no surprises. java -jar apache-rat-0.13.jar apache-plc4x-{current-full-version}-source-release.zip > rat.log Search for SNAPSHOT references: find . -type f -name 'pom.xml' -exec grep -l \"SNAPSHOT\" {} \\; Search for Copyright references, and if they are in headers, make sure these files containing them are mentioned in the LICENSE file. Build the project according to the information in the README.md file. [RM] Build the project with all with-xyz profiles and tests enabled and an empty maven local repo: by appending -Dmaven.repo.local=../.m2 (On windows use -D\"maven.repo.local\"=\"../.m2\"). Even if we are using RAT to ensure sources have headers in place, still the project can contain exclusions that hide things from the check. The only way to avoid missing important files is by running RAT externally. If you haven’t got it, yet please download it form here. Also do I like to run RAT against the zip archive containing the source release as this way you avoid the problem of eventually scanning the binaries produced by the build (If you run RAT after building, it will complain about every jar and ever class file). java -jar apache-rat-0.13.jar apache-plc4x-0.13.0-source-release.zip > rat.log By piping the result into a text file gives you the chance to investigate the content more easily. In the tools directory we have a little script that can help with downloading and checking the hashes and signatures automatically. In order to execute this, please change directories into the projects base directory and execute the following command: tools/download_staged_release.sh 0.13.0 1 This will download all the files into a directory: downloaded-plc4x-0.13.01. After that it will calculate the SHA512 hash and compare it with the staged hash. Last not least it will validate the PGP key and print out some information on it. +1/-1 (binding) Name [] Download all staged artifacts under the url specified in the release vote email. [] Verify the signature is correct. [] Check if the signature references an Apache email address. [] Verify the SHA512 hashes. [] Unzip the archive. [] Verify the existence of LICENSE, NOTICE, README, RELEASE_NOTES files in the extracted source bundle. [] Verify the content of LICENSE, NOTICE, README, RELEASE_NOTES files in the extracted source bundle. [] [RM] Verify the staged source README, RELEASE_NOTE files correspond to those in the extracted source bundle. [] [RM] Run RAT externally to ensure there are no surprises. [] Search for SNAPSHOT references [] Search for Copyright references, and if they are in headers, make sure these files containing them are mentioned in the LICENSE file. [] Build the project according to the information in the README.md file. [] [RM] Build the project with all with-xyz profiles and tests enabled and an empty maven local repo. If everything is ok, I put \"OK\" int the square brackets. If there are minor issues, I put \"MINOR\" in there and, if it’s a short reason, I put an explanation at the end of the line. If it’s longer I put a longer section after the checklist. If there are major issues, I put \"FAIL\" in there and comment the same way as with minor issues.","title":"Validating a staged release","component":"plc4x","version":"pre-release","name":"validation","url":"/plc4x/pre-release/developers/release/validation.html","titles":[{"text":"Using RAT","hash":"_using_rat","id":1},{"text":"Release Tooling","hash":"_release_tooling","id":2},{"text":"Template for the email for voting","hash":"_template_for_the_email_for_voting","id":3}]},"38":{"id":38,"text":"","title":"Tutorials","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/developers/tutorials/index.html","titles":[]},"39":{"id":39,"text":"Currently, the build generates the serializers and parsers from a provided mspec specification. A typical full round-trip test for the model, parsers and serializers would look as follows: Starting from a byte array The parser is used to parse the byte array The parsed model instance is compared with an expected model If the expected model matched the expected one the model is serialized back to a byte array The resulting byte array is compared to the original byte array If the byte arrays are identical, the round-trip is regarded ok Doing this manually would require a lot of manual object construction and validation, so we created a framework for creating such tests. As XML, no matter what you think about it, allows simple and easy readable descriptions these tests are provided as XML files. All generated model classes allow parsing and serializing to XML via Jackson. A typical test looks like this: Read Input Registers Request 000000000006ff0408d20002 ModbusTcpADU false 0 255 2258 2 As you can see, the name provides a simple human readable name for the test which is used for reporting success and failure. The raw element contains the hex-representation of the binary input. After that the root-type specifies the base type used for parsing this data. In above example the test will use the ModbusTcpADUIO.serialize and ModbusTcpADUIO.parse methods for serializing and parsing. Some parsers require additional parameters for parsing. In above example the Modbus protocol can’t decide if something is a request or response from the data itself, so we have to pass that information in using a parser-arguments argument. The final element is the xml element, which contains the XML representation of the parsed object. Each test implements exactly the test-strategy sketched above, however for comparing the parsed and the expected model, we use XMLUint to serialize the parsed model to XML and compare that to the given XML in the test-case declaration. Multiple tests are usually wrapped into a testsuite document. In general this is just a container with a given testsuite name and a number of testcase elements. One important setting however controls the endianness of the protocol in general. This is controlled with a bigEndian attribute in the testsuite root element. An example testsuite document looks as follows: Allen-Bradley DF1 ... ... ... ... All logic is implemented in the plc4j-utils-test-utils module, so make sure to add the following test-dependency: org.apache.plc4x plc4j-utils-test-utils {project.version} test In order to run these tests as part of the build, as a last step we need to create a test-runner class. This is generally just a hand-full of boilerplate code, telling the test which document to use for testing. Following code snippet sort of looks the same for every testsuite: package org.apache.plc4x.java.modbus; import org.apache.plc4x.test.parserserializer.ParserSerializerTestsuiteRunner; public class ModbusIOTest extends ParserSerializerTestsuiteRunner { public ModbusIOTest() { super(\"/testsuite/ModbusTestsuite.xml\"); } } Here the document ModbusTestsuite.xml is located in the directory: src/test/resources/testsuite/.","title":"Testing Serializers and Parsers","component":"plc4x","version":"pre-release","name":"testing-serializers-and-parsers","url":"/plc4x/pre-release/developers/tutorials/testing-serializers-and-parsers.html","titles":[{"text":"Structure of a test","hash":"_structure_of_a_test","id":1},{"text":"Structure of a testsuite","hash":"_structure_of_a_testsuite","id":2},{"text":"The Junit runner","hash":"_the_junit_runner","id":3}]},"40":{"id":40,"text":"Please inspect other existing modules on how to implement some of this. Create a new protocol module for your protocol. Create the pom.xml file for the new module. Create a new mspec file in src/main/release/ with just one or two dummy types. Create a new Protocol class in src/main/java which implements org.apache.plc4x.plugins.codegenerator.protocol.Protocol. The value returned by getName() will be used in the maven driver code generation. Create a new file called src/main/resources/META-INF/services/org.apache.plc4x.plugins.codegenerator.protocol.Protocol and list the new protocol class. Test you can build the new protocol module. Create a new driver module under plc4j/drivers Create the pom.xml file for the new module. Be sure to add a maven dependency to your protocol module. Be sure you have the update-generated-code profile in there. Be sure to reference the protocol name used in your protocol module. Create the Driver class in src/main/java which implements org.apache.plc4x.java.api.PlcDriver. Create a file called src/main/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver and list the new driver class. Test you can build the new driver module and the code generation works. Create a capture of the communication you want to create a driver for. Open the capture in WireShark Start defining the types you see in your mspec file Create a file ParserSerializerTestsuite.xml in the protocol modules src/test/resources directory. Start adding empty test-cases for every packet in your recording, by copying the TCP/UDP/Whatever payload in Wireshark as hex-stream and pasting that in the raw element of a test-case. In the driver module, create a ParserSerializer test that extends org.apache.plc4x.test.parserserializer.ParserSerializerTestsuiteRunner in src/test/java which references the ParserSerializerTestsuite.xml file of your protocol module. Iteratively implement all the mspec types needed to process your captures: Add/update the types in the mspec file Rebuild the protocol module Rebuild the driver module (with the update-generate-code profile enabled) Run the ParserSerializer test As soon as you are able to process all captures of your observed communication, you can start implementing a driver protocol logic. TODO: Continue writing this.","title":"Strategy for creating a new Driver","component":"plc4x","version":"pre-release","name":"writing-driver","url":"/plc4x/pre-release/developers/tutorials/writing-driver.html","titles":[{"text":"Prepare a new protocol module","hash":"_prepare_a_new_protocol_module","id":1},{"text":"Prepare a new driver module","hash":"_prepare_a_new_driver_module","id":2},{"text":"Start implementing the protocol parser and serializer","hash":"_start_implementing_the_protocol_parser_and_serializer","id":3},{"text":"Start implementing the driver logic","hash":"_start_implementing_the_driver_logic","id":4}]},"41":{"id":41,"text":"On this page we’ll give a short introduction to the most important concepts that will help you understand Apache PLC4X better. The most important concepts from a user perspective are in general: Connections — protocols — transports — configuration Addresses The two parts where we have built abstractions from the real world in PLC4X API are the connection strings and the tag address strings. Both are pretty dependent on the type of device you are planning to communicate with. However, these can both be easily configured in an external configuration or passed in as arguments. If you are familiar with JDBC or ODBC, you will easily understand the concepts in PLC4X, as these were a great inspiration for the creation of Apache PLC4X. In general a connection is a physical or logical connection between two endpoints. This connection uses a technical transport mechanism and passes data following a given protocol logic. Therefore, we have modeled both of these aspects separately. Let’s start with the Transports: The following transports are currently available, but they will probably be more soon: CAN PCAP replay Raw Socket Serial Port (RS232 and RS485) TCP UDP Test While TCP, UDP are based on the normal TCP and UDP stack of the operating system, Raw sockets directly provide low-level access to Ethernet Frames. This allows them to not only be used in what we call passive-mode drivers for simply reading all network traffic, it also allows communicating with protocols that are Ethernet based, but don’t use TCP or UDP. This is usually the case with Fieldbus protocols, such as PROFINET or EtherCAT, which usually require lower latency than TCP and UDP can provide. The Serial Port transport simply reads and writes data to a given serial port. The probably most special forms of transport are currently the PCAP replay and the Test transport. The PCAP replay transport allows playing back network traffic packets that were recorded using tools like WireShark. This is really helpful for writing new drivers (especially passive mode drivers) without having to be connected to the real device. From a driver point of view there is actually no difference between a Raw Socket and a PCAP replay transport. The Test transport is generally built for being used inside the PLC4X test framework as it allows fine-grained access to the input and output of the drivers. With the test transport we can explicitly control which data is passed into and retrieved from drivers and to validate this in unit- and integration-tests. A fully qualified PLC4X connection string would look like this: {driver code}:{transport code}://{transport config}?{options} The driver code generally selects the protocol we want to use, the transport code now selects the type of transport that should be used. Depending on the selected transport mechanism the transport config tells the transport which resource it should use. For example with a TCP and UDP transport, this will be the IP address or hostname optionally followed by the Port. For a Serial transport this will be the name of the serial interface. Raw Sockets will require the device name or a MAC address and so on. For a full description of all transports and their options, please consult the Transport Documentation here. The last segment - options - can be used to fine tune some protocol or transport options to non-default values. Usually these vary quite a bit from protocol to protocol. For details on these options, please have a look at the Protocol Documentation here. Even if most transports also have common options, their defaults vary quite a bit, depending on the protocol being used. So, instead of having a look at the general Transport Documentation here, wach protocol documentation also contains a list of all supported transports as well as the transport configuration options and their defaults. The general structure of this part is always the same: ?{option-1-name}={option-1-value}&{option-2-name}={option-2-value}&{option-3-name}={option-3-value} So the options start with a ? and are then followed by name-value pairs, which are separated by ampersand characters &. A driver for a given protocol however usually has a default transport, so sometimes it is possible to omit the transport code. Also do most drivers define default values for the various configuration options, so in general you should only require to use configuration options, if you are using non-default settings. The shortest version of a fully qualified connection string would look something like this: {driver code}://{transport config} For more information on the default settings for a given protocol or transport, please check the corresponding drivers documentation. Addresses for individual tags on a PLC are extremely dependent on the used protocol. As we usually decided to stick to the address formats that are used in those particular environments, please check the Protocol Documentation on details about these address formats here. The tag syntax is fairly generic and can be summarized as type:address. Some protocols might support tag attributes which are specified as key-value pairs after primary tag address. For example coil:1{unit-id: 10}. Tag attributes are additional elements which depend on actual protocol. Starting from Apache PLC4X release 0.13 an experimental support for result set metadata is provided in plc4j. This metadata is dedicated to provide additional information which might be available at protocol (sample timestamp) or driver level (i.e. packet receive time). Consult again protocol documentation on specifics of this feature. The common metadata keys currently defined are: timestamp - timestamp for tag value provided by other communication party. timestamp_source - source of timestamp or receive_timestamp field, if any of these is provided. receive_timestamp - timestamp assumed upon receiving of packet with data.","title":"General Concepts","component":"plc4x","version":"pre-release","name":"general-concepts","url":"/plc4x/pre-release/users/getting-started/general-concepts.html","titles":[{"text":"Connections","hash":"_connections","id":1},{"text":"Connection Strings","hash":"_connection_strings","id":2},{"text":"Individual Resource Addresses (Tags)","hash":"_individual_resource_addresses_tags","id":3},{"text":"Tag metadata","hash":"_tag_metadata","id":4}]},"42":{"id":42,"text":"Depending on the programming language, the usage will differ, therefore please go to the Getting Started version of the language of choice. For guides on how to write PLC4X applications with Go, please go to the Go Getting Started For guides on how to write PLC4X applications with Java, please go to the Java Getting Started For guides on how to write PLC4X applications with Python, please go to the Python Getting Started","title":"Getting Started","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/users/getting-started/index.html","titles":[{"text":"Go/Golang","hash":"_gogolang","id":1},{"text":"Java","hash":"_java","id":2},{"text":"Python","hash":"_python","id":3}]},"43":{"id":43,"text":"Below tutorial will teach you how to create client certificate for use within production environments. This tutorial focuses on preparation of configuration. It does not dive in X.509 and PKI details nor specifics of any OPC-UA server. The Apache PLC4X client, as many other UA clients is able to create ad-hoc certificate for communication. While it softens entry bearer for many, it creates also a gap when with secured environments, which control certificate chains. There are several ways on how to organize certificates. In this little tutorial we will use open source tool called KeyStore Explorer, referred herein as KSE. This tool allows to create files which can be used as a cryptographic keystore for Java-based programs but not only. One of nice things which Java runtime introduced, was change of default keystore format from JKS (Java KeyStore) to PKCS#12. Install the tool using the way which is valid for your operating system, then open the tool. Entire process can be observed in below short screen capture: Step by step operations are. Navigate to File New or press CTRL+N to create new keystore. Pick PKCS#12 as desired store format. Navigate to Tools Generate key pair or press CTRL+G: Decide on key type (RSA, DSA, EC) and its size. RSA is a fairly common, confirm key size and click OK KSE will ask you about certificate details Go to Name field and click little phone book icon and click it. You will be able to specify common name (CN), organization unit (OU) and other fields, and confirm with OK Click Add Extensions, which is located below Name field (you will again see step 5 window), it will open next popup. Click Use Standard Template, select CA, then click OK. This will fill extensions with few rows, but do not close this window yet. Click + next to the list, and select Subject Alternative Name, then click OK. You will see again window with list, click + next to it. Select URI, and type client identifier in General Name Value field (i.e. urn:my:plc:client), and confirm via OK. Click OK to close certificate extensions prompt. Click OK to finish certificate creation. Enter key pair alias and confirm with OK. Enter private key password, confirm it in second field and click OK. Upon completion of these steps you should be presented with \"Key Pair Generation Successful\" message. Navigate to File Save or press CTRL+S to save keystore. Enter keystore password, for use within Java it must be same as private key password. Specify file location. Close KSE, your client private key and certificate is ready for use. For detailed use of options used to configure client please refer to documentation of Apache PLC4X OPC-UA driver. Please remember that keystore must be readable by your program. In case if you are not certain what is working directory of your program, specify full path to keystore.","title":"OPC UA : Client certificate creation","component":"plc4x","version":"pre-release","name":"opcua-client-certificate","url":"/plc4x/pre-release/users/getting-started/opcua-client-certificate.html","titles":[{"text":"Creating self-signed certificate using KSE","hash":"_creating_self_signed_certificate_using_kse","id":1},{"text":"Usage within OPC UA PLC4X client","hash":"_usage_within_opc_ua_plc4x_client","id":2}]},"44":{"id":44,"text":"","title":"Getting Started with C","component":"plc4x","version":"pre-release","name":"plc4c","url":"/plc4x/pre-release/users/getting-started/plc4c.html","titles":[]},"45":{"id":45,"text":"","title":"Getting Started with C#","component":"plc4x","version":"pre-release","name":"plc4cs","url":"/plc4x/pre-release/users/getting-started/plc4cs.html","titles":[]},"46":{"id":46,"text":"Just in case you want to get started with Go. In this part we’ll setup a new Go project. If you are familiar with this, you can go to the next chapter. Be sure to have installed Go on your system by downloading and installing it from https://golang.org/. Now that that’s done, create a new directory and console execute the following command: go mod init main This will effectively only create a go.mod file, which is sort of like Go’s counterpart to a Maven pom.xml. This should look like this: module main go 1.16 Now we need to create a app.go file which will be our main program. Create a file app.go with the following content: package main func main() { } By executing the command: go run app.go You will execute your first Go progran … however the output is rather underwhelming ;-) You’re now ready to continue. In order to write a valid PLC4X Go application, all you need, is to add a dependency to the plc4go module. Now all you need to do, is execute the following command: go get github.com/apache/plc4x/plc4go This will checkout the latest version of the Apache PLC4X PLC4Go module. As soon as we have released a PLC4Go version by adding the name of the release-tag will use an explicit version. This will be checked out in our home directory in ⁓/go/pkg/mod/github.com/apache/plc4/plc4go@v0.0.0-{some-commit-hash} In contrast to the PLC4J version this already contains all supported drivers. Perhaps we’ll change this in the future, but for now all comes in one bundle. Now you’re generally set to start writing your first PLC4Go program. In contrast to PLC4J, which uses the service lookup to find the transports and the drivers automatically, in PLC4Go they need to be manually registered at the driver manager. First we need to initialize the PlcDriverManager by registering the transports and drivers with it. // Create a new instance of the PlcDriverManager driverManager := plc4go.NewPlcDriverManager() // Register the Transports transports.RegisterTcpTransport(driverManager) transports.RegisterUdpTransport(driverManager) // Register the Drivers drivers.RegisterKnxDriver(driverManager) drivers.RegisterModbusDriver(driverManager) Now that the PlcDriverManager is configured, we can use it to get a new connection. // Get a connection to a remote PLC connectionRequestChanel := driverManager.GetConnection(\"modbus-tcp://192.168.23.30?unit-identifier=1\") // Wait for the driver to connect (or not) connectionResult := <-connectionRequestChanel // Check if something went wrong if connectionResult.Err != nil { fmt.Printf(\"Error connecting to PLC: %s\", connectionResult.Err.Error()) return } // If all was ok, get the connection instance connection := connectionResult.Connection // Make sure the connection is closed at the end defer connection.Close() In PLC4Go we make heavy use of Go channels, which are similar to Futures or Promisses. And please pay attention to the defer command. This adds a call to a stack of things that need to be called as soon as the program terminates. However in contrast to Java’s try-finally blocks, this isn’t executed at the end of the code-block, but really when the program terminates. So when working with many connections or when using connections in loops (if for example you are polling), then this will keep on piling up active connections, till either you are no longer able to connect cause your PLC denies connections or till you run out of memory. So if you only need the connection in a code block, be sure to explicitly close it after usage. After this code block we should be in possession of a connection instance. If we simply want to check the connectivity, we can use the Ping function on the connection object. Depending on the protocol used, it will exeute a command which only will complete if the connection is available. // Try to ping the remote device pingResultChannel := connection.Ping() // Wait for the Ping operation to finsh pingResult := <-pingResultChannel if pingResult.Err != nil { fmt.Printf(\"Couldn't ping device: %s\", pingResult.Err.Error()) return } Most probably you will want to read something from a PLC. This is done by a PlcReadRequest. First off all, it’s probably a good idea to check if this connection supports reading: if !connection.GetMetadata().CanRead() { fmt.Printf(\"This connection doesn't support read operations\") return } In order to create and run such a PlcReadRequest, please add the following code: Up to version 0.10.0 // Prepare a read-request readRequest, err := connection.ReadRequestBuilder(). AddQuery(\"field1\", \"holding-register:1:REAL\"). AddQuery(\"field2\", \"holding-register:3:REAL\"). Build() if err != nil { t.Errorf(\"error preparing read-request: %s\", connectionResult.Err.Error()) t.Fail() return } SNAPSHOT version // Prepare a read-request readRequest, err := connection.ReadRequestBuilder(). AddTagAddress(\"tag1\", \"holding-register:1:REAL\"). AddTagAddress(\"tag2\", \"holding-register:3:REAL\"). Build() if err != nil { t.Errorf(\"error preparing read-request: %s\", connectionResult.Err.Error()) t.Fail() return } If you have any errors in the addresses or whatever, you will get an err instead of a readRequest. For now, let’s assume you got all addresses correctly. // Execute a read-request readResponseChanel := readRequest.Execute() // Wait for the response to finish readRequestResult := <-readResponseChanel if readRequestResult.Err != nil { t.Errorf(\"error executing read-request: %s\", readRequestResult.Err.Error()) return } Please note that in this case we want to return a triple: PlcReadRequest, PlcReadResponse, err. As this is not supported in Go, the PlcReadRequestResult will contain all of these 3 elements. This will probably change soon. The API is still a bit in flux. Now in order to do something with the response: // Do something with the response value1 := readRequestResult.Response.GetValue(\"field1\") value2 := readRequestResult.Response.GetValue(\"field2\") fmt.Printf(\"\\n\\nResult field1: %f\\n\", value1.GetFloat32()) fmt.Printf(\"\\n\\nResult field2: %f\\n\", value2.GetFloat32()) The GetValue function returns a PlcValue instance, this had accessors for the most general Go types. Not implemented yet As the Modbus protocol, which we used in the above examples, doesn’t support subscriptions, we are using the KNX protocol for a demonstration on the subscription API. Subscribing to data can be considered similar to reading data, at least the subscription itself if very similar to reading of data. We first have to check if the connection supports this: if !connection.GetMetadata().CanSubscribe() { fmt.Printf(\"This connection doesn't support subscriptions operations\") return } Now we’ll create the subscription request. The main difference is that while reading there is only one form how you could read, with subscriptions there are different forms of subscriptions: Change of state (Event is sent as soon as a value changes) Cyclic (The Event is sent in regular cyclic intervals) Event (The Event is usually explicitly sent form the PLC as a signal) Therefore instead of using a normal AddItem, there are tree different functions as you can see in the following examples. Up to version 0.10.0 // Prepare a subscription-request subscriptionRequest, err := connection.SubscriptionRequestBuilder(). AddChangeOfStateItem(\"heating-actual-temperature\", \"*/*/10:DPT_Value_Temp\"). AddChangeOfStateItem(\"heating-target-temperature\", \"*/*/11:DPT_Value_Temp\"). AddCyclicItem(\"heating-valve-open\", \"*/*/12:DPT_OpenClose\", 500 * time.Millisecond). AddItemHandler(knxEventHandler). Build() if err != nil { fmt.Printf(\"Error preparing subscription-request: %s\", connectionResult.Err.Error()) return } SNAPSHOT version // Prepare a subscription-request subscriptionRequest, err := connection.SubscriptionRequestBuilder(). AddChangeOfStateTagAddress(\"heating-actual-temperature\", \"*/*/10:DPT_Value_Temp\"). AddChangeOfStateTagAddress(\"heating-target-temperature\", \"*/*/11:DPT_Value_Temp\"). AddCyclicTagAddress(\"heating-valve-open\", \"*/*/12:DPT_OpenClose\", 500 * time.Millisecond). AddItemHandler(knxEventHandler). Build() if err != nil { fmt.Printf(\"Error preparing subscription-request: %s\", connectionResult.Err.Error()) return } The Event hadnler for intercepting incoming events could look like this: Up to version 0.10.0 func knxEventHandler(event apiModel.PlcSubscriptionEvent) { for _, fieldName := range event.GetFieldNames() { if event.GetResponseCode(fieldName) == apiModel.PlcResponseCode_OK { groupAddress := event.GetAddress(fieldName) fmt.Printf(\"Got update for field %s with address %s. Value changed to: %s\\n\", fieldName, groupAddress, event.GetValue(fieldName).GetString()) } } } SNAPSHOT version func knxEventHandler(event apiModel.PlcSubscriptionEvent) { for _, tagName := range event.GetTagNames() { if event.GetResponseCode(tagName) == apiModel.PlcResponseCode_OK { groupAddress := event.GetTag(tagName).GetAddressString() fmt.Printf(\"Got update for tag %s with address %s. Value changed to: %s\\n\", tagName, groupAddress, event.GetValue(tagName).GetString()) } } } The AddCyclicField/AddCyclicTagAddress method requires a third parameter duration which specifies the interval, in which a given value is sent (even if it has not changed). Here the API differs slightly form the Java version, as in the request-builder itself you specify the reference to the callback handler which should be notified on incoming data. However, we will be aligning all API variants as much as possible in the near future. The request itself is executed exactly the same way the read and write operations are executed, using the Execute function. // Execute a subscription-request subscriptionRequestResultChanel := subscriptionRequest.Execute() // Wait for the response to finish subscriptionRequestResult := <-subscriptionRequestResultChanel if subscriptionRequestResult.Err != nil { fmt.Printf(\"Error executing read-request: %s\", subscriptionRequestResult.Err.Error()) return }","title":"Getting Started with Go","component":"plc4x","version":"pre-release","name":"plc4go","url":"/plc4x/pre-release/users/getting-started/plc4go.html","titles":[{"text":"Initializing a dummy project","hash":"_initializing_a_dummy_project","id":1},{"text":"Using the PLC4Go API directly","hash":"_using_the_plc4go_api_directly","id":2},{"text":"Connecting to a PLC","hash":"_connecting_to_a_plc","id":3},{"text":"Reading Data","hash":"_reading_data","id":4},{"text":"Writing Data","hash":"_writing_data","id":5},{"text":"Subscribing to Data","hash":"_subscribing_to_data","id":6}]},"47":{"id":47,"text":"In order to write a valid PLC4X Java application, all you need, is to add a dependency to the api module. When using Maven, all you need to do is add this dependency: org.apache.plc4x plc4j-api 0.13.0-SNAPSHOT This will allow you to write a valid application, that compiles fine. However, in order to actually connect to a device using a given protocol, you need to add this protocol implementation to the classpath. For example in order to communicate with an S7 device using the S7 Protocol, you would need to add the following dependency: org.apache.plc4x plc4j-driver-s7 0.13.0-SNAPSHOT runtime So as soon as your project has the API and a driver implementation available, you first need to get a PlcConnection instance. This is done via the PlcConnectionManager, which is provided to you by the PlcDriverManager by asking this to create an instance for a given PLC4X connection string. String connectionString = \"s7://10.10.64.20\"; try (PlcConnection plcConnection = PlcDriverManager.getDefault().getConnectionManager().getConnection(connectionString)) { ... do something with the connection here ... } PLC4X generally supports a very limited set of functions, which is not due to the fact, that we didn’t implement things, but that PLCs generally support a very limited set of functions. The basic functions supported by PLCs and therefore supported by PLC4X are: Discover Devices List resources in the PLC Read data Write data Subscribe for data In general, we will try to offer as many features as possible. So if a protocol doesn’t support subscription based communication it is our goal to simulate this by polling in the background, so it is transparent for the users (This simulation feature hasn’t been implemented yet though, but it’s on our roadmap). But there are some cases in which we can’t simulate or features are simply disabled intentionally: If a PLC and/or protocol don’t support writing or browsing, we simply can’t provide this functionality. Also do we plan on providing stripped down versions of drivers, that for example intentionally don’t support any writing of data. Therefore, we use metadata to check programmatically, if a given feature is available. // Check if this connection support reading of data. if (!plcConnection.getMetadata().isReadSupported()) { logger.error(\"This connection doesn't support reading.\"); return; } As soon as you have ensured that a feature is available, you are ready to build a first request. This is done by getting a PlcReadRequest.Builder: // Create a new read request: // - Give the single item requested an alias name PlcReadRequest.Builder builder = plcConnection.readRequestBuilder(); builder.addTagAddress(\"value-1\", \"%Q0.4:BOOL\"); builder.addTagAddress(\"value-2\", \"%Q0:BYTE\"); builder.addTagAddress(\"value-3\", \"%I0.2:BOOL\"); builder.addTagAddress(\"value-4\", \"%DB.DB1.4:INT\"); PlcReadRequest readRequest = builder.build(); So, as you can see, you prepare a request, by adding tag addresses to the request and in the end by calling the build method. If you are using the BrowseApi you might also have been provided with Tag objects. In that case simply use addTag and pass in the Tag object instead of the address string. The request is sent to the PLC by issuing the execute method on the request object: CompletableFuture asyncResponse = readRequest.execute(); asyncResponse.whenComplete((response, throwable) -> { try { ... process the response ... } catch (Exception e) { ... Handle any errors ... } }); In general, all requests are executed asynchronously. As soon as the request is fully processed, the callback gets called and will contain a readResponse, if everything went right or a throwable if there were problems. However, if you want to write your code in a more synchronous fashion, the following alternative will provide this: PlcReadResponse response = readRequest.execute().get(5000, TimeUnit.MILLISECONDS); Processing of the responses is identical in both cases in the synchronous approach you however need to catch any exceptions. The following example will demonstrate some of the options you have: for (String tagName : response.getTagNames()) { if(response.getResponseCode(tagName) == PlcResponseCode.OK) { int numValues = response.getNumberOfValues(tagName); // If it's just one element, output just one single line. if(numValues == 1) { logger.info(\"Value[\" + tagName + \"]: \" + response.getObject(tagName)); } // If it's more than one element, output each in a single row. else { logger.info(\"Value[\" + tagName + \"]:\"); for(int i = 0; i asyncResponse = writeRequest.execute(); asyncResponse.whenComplete((response, throwable) -> { ... process the response ... }); You could here also use the blocking option: PlcWriteResponse response = writeRequest.execute().get(); As we don’t have to process the data itself, for the write request, it’s enough to simply check the return code for each field. for (String tagName : response.getTagNames()) { if(response.getResponseCode(tagName) == PlcResponseCode.OK) { logger.info(\"Value[\" + tagName + \"]: updated\"); } // Something went wrong, to output an error message instead. else { logger.error(\"Error[\" + tagName + \"]: \" + response.getResponseCode(tagName).name()); } } Subscribing to data can be considered similar to reading data, at least the subscription itself if very similar to reading of data. First of all we first have to check if the connection supports this: // Check if this connection support subscribing to data. if (!plcConnection.getMetadata().isSubscribeSupported()) { logger.error(\"This connection doesn't support subscribing.\"); return; } Now we’ll create the subscription request. The main difference is that while reading there is only one form how you could read, with subscriptions there are different forms of subscriptions: Change of state (Event is sent as soon as a value changes) Cyclic (The Event is sent in regular cyclic intervals) Event (The Event is usually explicitly sent form the PLC as a signal) Therefore instead of using a normal addItem or addTag in newer versions, there are tree different methods as you can see in the following examples. // Create a new subscription request: // - Give the single tag requested an alias name PlcSubscriptionRequest.Builder builder = plcConnection.subscriptionRequestBuilder(); builder.addChangeOfStateTagAddress(\"value-1\", \"{some address}\"); builder.addCyclicTagAddress(\"value-2\", \"{some address}\", Duration.ofMillis(1000)); builder.addEventTagAddress(\"value-3\", \"{some alarm address}\"); PlcSubscriptionRequest subscriptionRequest = builder.build(); The addCyclicField/addCyclicTagAddress method requires a third parameter duration. The request itself is executed exactly the same way the read and write operations are executed, using the execute method, therefore just the short synchronous version here (The async version works just as good) PlcSubscriptionResponse response = subscriptionRequest.execute().get(); Now comes the little more tricky part, as subscriptions are always asynchronous, we have to register a callback for the connection to call as soon as there is news available: In general, you can’t say how many of your subscribed fields will be available in every callback. So it is double important to check or iterate over the field names. for (String subscriptionName : response.getFieldNames()) { final PlcSubscriptionHandle subscriptionHandle = response.getSubscriptionHandle(subscriptionName); subscriptionHandle.register(plcSubscriptionEvent -> { for (String tagName : plcSubscriptionEvent.getTagNames()) { System.out.println(plcSubscriptionEvent.getPlcValue(tagName)); } }); } Here there currently is a double iteration over the field names, this will probably change soon.","title":"Getting Started with Java","component":"plc4x","version":"pre-release","name":"plc4j","url":"/plc4x/pre-release/users/getting-started/plc4j.html","titles":[{"text":"Using the PLC4J API directly","hash":"_using_the_plc4j_api_directly","id":1},{"text":"Reading Data","hash":"_reading_data","id":2},{"text":"Writing Data","hash":"_writing_data","id":3},{"text":"Subscribing to Data","hash":"_subscribing_to_data","id":4}]},"48":{"id":48,"text":"Currently, you need to install PLC4Py from the GitHub repository instead of pypi. Once we have decided that PLC4Py is in a position to release we will publish to pypi. Navigate to the plc4py directory and run. This will install plc4py in your global repository. pip install . You now should be able to use PLC4Py in your application. A minimal example is shown below. import asyncio from plc4py.PlcDriverManager import PlcDriverManager connection_string = \"modbus://127.0.0.1:5020\" driver_manager = PlcDriverManager() async def communicate_with_plc(): \"\"\" Asynchronously communicates with a PLC using a PlcDriverManager. This function establishes a connection to the PLC defined by the connection_string. It builds a read request for a specific item (\"Random Tag\" in this case) using the connection's read request builder. The request is then executed asynchronously, and the response code is printed. \"\"\" print(f\"Connecting to plc: {connection_string}\") async with driver_manager.connection(connection_string) as connection: print(f\"Connected to {connection_string}\") with connection.read_request_builder() as builder: print(f\"Building read request\") builder.add_item(\"Random Tag\", \"4x00001[10]\") request = builder.build() print(f\"Request built\") print(f\"Executing request\") response = await connection.execute(request) print(f\"Request executed\") print(f\"Response code: {response.response_code}\") asyncio.run(communicate_with_plc()) PLC4X generally supports a very limited set of functions, which is not due to the fact, that we didn’t implement things, but that PLCs generally support a very limited set of functions. The basic functions supported by PLCs and therefore supported by PLC4X are: Discover Devices (Not yet available for PLC4Py) List resources in the PLC Read data Write data Subscribe for data (Not yet available for PLC4Py) In general, we will try to offer as many features as possible. So if a protocol doesn’t support subscription based communication it is our goal to simulate this by polling in the background, so it is transparent for the users (This simulation feature hasn’t been implemented yet though, but it’s on our roadmap). But there are some cases in which we can’t simulate or features are simply disabled intentionally: If a PLC and/or protocol don’t support writing or browsing, we simply can’t provide this functionality. Therefore, we use metadata to check programmatically, if a given feature is available. # Check if this connection support reading of data. if not connection.is_read_supported(): logger.error(\"This connection doesn't support reading.\") As soon as you have ensured that a feature is available, you are ready to build a first request. This is done by getting a ReadRequestBuilder: # Create a new read request: # - Give the single item requested an alias name with connection.read_request_builder() as builder: builder.add_item(\"Random Tag 1\", \"4x00001[10]\") builder.add_item(\"Random Tag 2\", \"4x00011\") request = builder.build() So, as you can see, you prepare a request, by adding tag addresses to the request and in the end by calling the build method. If you are using the BrowseApi you might also have been provided with Tag objects. In that case simply use add_tag and pass in the PlcTag object instead of the address string. The request is sent to the PLC by issuing the execute method on the request object: try: response = await connection.execute(request) except TimeOutException: # Handle timeout error except ... # Handle all your other errors In general, all requests are executed asynchronously. As soon as the request is fully processed, the callback gets called and will contain a ReadResponse, if everything went right or an excception if there were problems. The following example will demonstrate some of the options you have: for tag_name in response.tag_names: if response.tags[tag_name].response_code == PlcResponseCode.OK: num_values: int = len(response.tags[tag_name].value) # If it's just one element, output just one single line. if num_values == 1: logger.info(\"Value[\" + tag_name + \"]: \" + response.tags[tag_name].value) else: # If it's more than one element, output each in a single row. logger.info(\"Value[\" + tag_name + \"]:\") for i in response.tags[tag_name].value.get_list(): logger.info(\" - \" + str(i)) else: # Something went wrong, to output an error message instead. logger.error(\"Error[\" + tag_name + \"]: \" + response.tags[tag_name].name()) In the for-loop, we are demonstrating how the user can iterate over the tag aliases in the response. In case of an ordinary read request, this will be predefined by the items in the request, however in case of a subscription response, the response might only contain some of the items that were subscribed. Before accessing the data, it is advisable to check if an item was correctly returned. This is done by the response_code property for a given alias. If this is PlcResponseCode.OK, everything is ok, however it could be one of the following: NOT_FOUND ACCESS_DENIED INVALID_ADDRESS INVALID_DATATYPE INTERNAL_ERROR RESPONSE_PENDING Assuming the return code was OK, we can continue accessing the data. As all PlcValue items support the len property, the user can check how many items of a given type are returned by calling len(response.tags[tag_name].value) You can then treat the values in the PlcList as a list using response.tags[tag_name].value.get_list() In general the structure of code for writing data is extremely similar to that of reading data. So first it is advisable to check if this connection is even able to write data: // Check if this connection support writing of data. if not plc_connection.is_write_supported(): logger.error(\"This connection doesn't support writing.\") As soon as we are sure that we can write, we create a new PlcWriteRequest.Builder: // Create a new write request: // - Give the single item requested an alias name // - Pass in the data you want to write (for arrays, pass in a list of values) with connection.write_request_builder() as builder: builder.add_item(\"Random Tag 1\", \"4x00001[2]\", PlcList([PlcINT(1), PlcINT(2)])) builder.add_item(\"Random Tag 2\", \"4x00011\", PlcINT(1)) request = builder.build() The same way read requests are sent to the PLC by issuing the execute method on the request object: try: response = await connection.execute(request) except TimeOutException: # Handle timeout error except ... # Handle all your other errors As we don’t have to process the data itself, for the write request, it’s enough to simply check the return code for each field. for tag_name in response.tag_names: if response.tags[tag_name].response_code == PlcResponseCode.OK: logger.info(\"Value[\" + tag_name + \"]: updated\"); else: # Something went wrong, to output an error message instead. logger.error(\"Error[\" + tag_name + \"]: \" + response.tags[tag_name].name()) Coming Soon","title":"Getting Started with Python","component":"plc4x","version":"pre-release","name":"plc4py","url":"/plc4x/pre-release/users/getting-started/plc4py.html","titles":[{"text":"Using the PLC4PY API directly","hash":"_using_the_plc4py_api_directly","id":1},{"text":"Reading Data","hash":"_reading_data","id":2},{"text":"Writing Data","hash":"_writing_data","id":3},{"text":"Subscribing to Data","hash":"_subscribing_to_data","id":4}]},"49":{"id":49,"text":"Especially when it comes to trying to verify if an issue you are facing has already been fixed in the development version, you might want to or be asked to try out the absolute latest version of PLC4X. You can generally do this by adding \"-SNAPSHOT\" to the version number of PLC4X. We also provide convenience built SNAPSHOT versions, however are these not automatically synced with Maven Central. So Maven will not automatically be able to find them. Our SNAPSHOT versions are deployed on the Apache Maven repository. In order to access these, you need to add the following block to your pom.xml file: apache-snapshots https://repository.apache.org/content/repositories/snapshots false true apache-snapshots https://repository.apache.org/content/repositories/snapshots false true After adding this block, you should be able to also use SNAPSHOT versions.","title":"Using SNAPSHOT versions","component":"plc4x","version":"pre-release","name":"using-snapshots","url":"/plc4x/pre-release/users/getting-started/using-snapshots.html","titles":[]},"50":{"id":50,"text":"If you want to get started with Apache PLC4X, but don’t have any PLC at hand, this tutorial will demonstrate how you can use a virtual Modbus Slave software to simulate communication with Modbus enabled PLCs. Such a fully open-source software is ModbusPal which is available from here. All you need, is to download the file called ModbusPal.jar. In order to run the software, you just need to execute the following command in the same directory you downloaded the Jar to: java -jar ModbusPal.jar After this you will see the ModbusPal UI, which will look like this: Figure 1. ModbusPal Main UI Here be sure that the TCP port is set to 502 (Which is the default Modbus port). Next click on Add to add a new Modbus slave: Figure 2. ModbusPal Add slave UI Select a Slave ID as well as a name. After clicking on Add your new Modbus slave is ready to start. Figure 3. ModbusPal Main UI with one started slave By clicking on the Run button your slave is generally ready to communicate. However up until now this new wouldn’t have anything to share as we haven’t created any resources, so it would be an empty slave. So as last steps, we have to create some resources to access. In order do to this, click on the eye icon of your newly created slave. Figure 4. ModbusPal Main UI with one slave This will bring up an editor in which we can add some so-called Holding registers and some Coils. Let’s start with adding some Holding registers. So make sure Holding registers is selected and then click on the Add button: Figure 5. Holding register view The tool will suggest creating 65536 new registers, I usually create 10 or so. When I use ths tool some times I have to click the Add button more than once as the editor doesn’t always open the first time. Figure 6. Add Holding register dialog After this the Holding register tab should look like this: Figure 7. Add Holding register dialog Now do the same on the Coils tab, which should look like this after that: Figure 8. Add Holding register dialog As a last step, I would suggest to open the Console. You can do this by clicking on the Console button of the main UI. This will open the following window: Figure 9. Console Here ModbusPal will log every important event … especially when getting new connections from PLC4X. In general Modbus only knows two types of data: Coils and Registers. Coils are always simple bits or boolean values and Registers are always 16 bit short values. However, there are different types of these and they have different names: Discrete Inputs (Boolean values) (read-only) Coils (Boolean values) (read-write) Input Registers (16 bit short values) (read-only) Holding Registers (16 bit short values) (read-write) For Modbus there is no universally agreed upon notation for addresses, however as the addresses are extremely simple, in PLC4X we address these as follows: Table 1. Table Title Modbus Type PLC4X Address Syntax Discrete Inputs discrete-input:{start-number} or discrete-input:{start-number}[{number-of-elements}] Coils coil:{start-number} or coil:{start-number}[{number-of-elements}] Input Registers input-register:{start-number} or input-register:{start-number}[{number-of-elements}] Holding Registers holding-register:{start-number} or holding-register:{start-number}[{number-of-elements}] All addresses support a notation with and without a size. If the size is not specified, then PLC4X assumes a size of 1. A PLC4X connection-string generally has the same structure for all drivers: {driver-name}:{transport-name}://{transport-config}?{parameters} The fragments transport-name and parameters herby are usually optional, as every driver can support a default-transport, which is used if the transport is omitted. Also are most drivers implemented in a way that doesn’t require any parameters. These are only required if the connection requires some non-default settings. For Modbus the typical transports are: tcp (transport-config is the ip or host-name of the slave and can be suffixed by a port separated from the ip/host with :) serial (transport-config is the device name of the serial interface) If we have set up ModbusPal as described above and are running this on the same computer, the connection string to connect to this should be: modbus-tcp://localhost If you stated ModbusPal on a port different from Modbus' default port 502 you would have to also provide this port in the connection string. So assuming you started it on port 1502, then the connection string would look as follows: modbus-tcp://localhost:1502 In order to write a valid PLC4X Java application, all you need, is to add a dependency to the api module. When using Maven, all you need to do is add this dependency: org.apache.plc4x plc4j-api 0.13.0-SNAPSHOT This will allow you to write a valid application, that compiles fine. However, in order to actually connect to a device using a given protocol, you need to add this protocol implementation to the classpath. For example in order to communicate using the Modbus protocol, you would need to add the following dependency: org.apache.plc4x plc4j-driver-modbus 0.13.0-SNAPSHOT runtime So as soon as your project has the API and a driver implementation available, you first need to get a PlcConnection instance. This is done via the PlcDriverManager by asking this to create an instance for a given PLC4X connection string. String connectionString = \"modbus-tcp://localhost\"; try (PlcConnection plcConnection = new PlcDriverManager().getConnection(connectionString)) { ... do something with the connection here ... } PLC4X generally supports a very limited set of functions, which is not due to the fact, that we didn’t implement things, but that PLCs generally support a very limited set of functions. The basic functions supported by PLCs and therefore supported by PLC4X are: Read data Write data Subscribe for data Execute functions in the PLC List resources in the PLC In general, we will try to offer as many features as possible. So if a protocol doesn’t support subscription based communication it is our goal to simulate this by polling in the background, so it is transparent for the users. But there are some cases in which we can’t simulate or features are simply disabled intentionally: If a PLC and/or protocol don’t support executing of functions, we simply can’t provide this functionality. We will be providing stripped down versions of drivers, that for example intentionally don’t support any writing of data and executing of functions. Therefore, we use metadata to check programmatically, if a given feature is available: // Check if this connection support reading of data. if (!plcConnection.getMetadata().isReadSupported()) { logger.error(\"This connection doesn't support reading.\"); return; } As soon as you have ensured that a feature is available, you are ready to build a first request. This is done by getting a PlcRequestBuilder: // Create a new read request: // - Give the single item requested the alias name \"value\" PlcReadRequest.Builder builder = plcConnection.readRequestBuilder(); builder.addTagAddress(\"value-1\", \"coil:1\"); builder.addTagAddress(\"value-2\", \"coil:3[4]\"); builder.addTagAddress(\"value-3\", \"holding-register:1\"); builder.addTagAddress(\"value-4\", \"holding-register:3[4]\"); PlcReadRequest readRequest = builder.build(); So, as you can see, you prepare a request, by adding items to the request and in the end by calling the build method. Hereby the first string value is simply an alias you can give the the address as this is usually a more readable way. The second argument is then the address string itself. In above example we didn’t add discrete-input and input-registers as ModbusPal doesn’t seem to support these. The request is sent to the PLC by issuing the execute method on the request object: CompletableFuture asyncResponse = readRequest.execute(); asyncResponse.whenComplete((response, throwable) -> { ... process the response ... }); In general all requests are executed asynchronously. So as soon as the request is fully processed, the callback gets called and will contain a readResponse, if everything went right or a throwable if there were problems. However, if you want to write your code in a more synchronous fashion, the following alternative will provide this: PlcReadResponse response = readRequest.execute().get(); Processing of the responses is identical in both cases. The following example will demonstrate some of the options you have: for (String tagName : response.getTagNames()) { if(response.getResponseCode(tagName) == PlcResponseCode.OK) { int numValues = response.getNumberOfValues(tagName); // If it's just one element, output just one single line. if(numValues == 1) { logger.info(\"Value[\" + tagName + \"]: \" + response.getObject(tagName)); } // If it's more than one element, output each in a single row. else { logger.info(\"Value[\" + tagName + \"]:\"); for(int i = 0; i < numValues; i++) { logger.info(\" - \" + response.getObject(tagName, i)); } } } // Something went wrong, to output an error message instead. else { logger.error(\"Error[\" + tagName + \"]: \" + response.getResponseCode(tagName).name()); } } In the for loop, we are demonstrating how the user can iterate over the address aliases in the response. In case of an ordinary read request, this will be predefined by the items in the request, however in case of a subscription response, the response might only contain some of the items that were subscribed. Before accessing the data, it is advisable to check if an item was correctly returned. This is done by the getResponseCode method for a given alias. If this is PlcResponseCode.OK, everything is ok, however it could be one of the following: NOT_FOUND ACCESS_DENIED INVALID_ADDRESS INVALID_DATATYPE INTERNAL_ERROR RESPONSE_PENDING Assuming the return code was OK, we can continue accessing the data. As some addresses support reading arrays, with the method getNumberOfValues the user can check how many items of a given type are returned. For convenience the response object has single-argument methods for accessing the data, which default to returning the first element. response.getObject(fieldName) If you want to access a given element number, please use the two-argument version instead: response.getObject(fieldName, 42) PLC4X provides getters and setters for a wide variety of Java types and automatically handles the type conversion. However, when for example trying to get a long-value as a byte and the long-value exceeds the range supported by the smaller type, a RuntimeException of type PlcIncompatibleDatatypeException. In order to avoid causing this exception to be thrown, however there are isValid{TypeName} methods that you can use to check if the value is compatible. The code for writing is very similar to the code for reading, however when creating the write request, we have to pass in the data alongside the field definitions. While all 4 field types support reading from, only the coil and holding-register field types support writing to. If you attempt to write to these, this will result in errors. So again, we first check if this driver supports writing (Some drivers such as passive-mode drivers or read-only versions might generally not support writing): // Check if this connection support reading of data. if (!plcConnection.getMetadata().isWriteSupported()) { logger.error(\"This connection doesn't support writing.\"); return; } As soon as you have ensured that a feature is available, you are ready to build a first request. This is done by getting a PlcRequestBuilder: // Create a new read request: // - Give the single item requested the alias name \"value\" PlcWriteRequest.Builder builder = plcConnection.writeRequestBuilder(); builder.addTagAddress(\"value-1\", \"coil:1\", new PlcBOOL(true); builder.addTagAddress(\"value-2\", \"coil:3[4]\", new PlcBOOL(true), new PlcBOOL(false), new PlcBOOL(true), new PlcBOOL(true)); builder.addTagAddress(\"value-3\", \"holding-register:1\", new PlcINT(42); builder.addTagAddress(\"value-4\", \"holding-register:3[4]\", new PlcINT(1), new PlcINT(2), new PlcINT(3), new PlcINT(4)); PlcWriteRequest writeRequest = builder.build(); You can see that for every element that should be written, the same number of arguments have to be provided. PlcWriteResponse response = writeRequest.execute().get(); Actually executing the write operation is almost identical to the reading, with the only difference, that the result only provides status codes and no values. for (String fieldName : response.getFieldNames()) { if(response.getResponseCode(fieldName) == PlcResponseCode.OK) { logger.info(\"Value[\" + fieldName + \"]: successfully written to device.\"); } // Something went wrong, to output an error message instead. else { logger.error(\"Error[\" + fieldName + \"]: \" + response.getResponseCode(fieldName).name()); } }","title":"Virtual Modbus PLC","component":"plc4x","version":"pre-release","name":"virtual-modbus","url":"/plc4x/pre-release/users/getting-started/virtual-modbus.html","titles":[{"text":"Setting up the virtual Modbus Slave","hash":"_setting_up_the_virtual_modbus_slave","id":1},{"text":"Some Modbus basics","hash":"_some_modbus_basics","id":2},{"text":"Writing code","hash":"_writing_code","id":3},{"text":"Connecting","hash":"_connecting","id":4},{"text":"Reading Data","hash":"_reading_data","id":5},{"text":"Writing Data","hash":"_writing_data","id":6}]},"51":{"id":51,"text":"Apache Calcite Standard SQL Industry-standard SQL parser, validator and JDBC driver.","title":"Apache Calcite","component":"plc4x","version":"pre-release","name":"apache-calcite","url":"/plc4x/pre-release/users/integrations/apache-calcite.html","titles":[]},"52":{"id":52,"text":"The Camel Component for PLC4X allows you to create routes using the PLC4X API to read from a PLC device or write to it. This component is now maintained within the Apache Camel Project.","title":"Apache Camel","component":"plc4x","version":"pre-release","name":"apache-camel","url":"/plc4x/pre-release/users/integrations/apache-camel.html","titles":[]},"53":{"id":53,"text":"","title":"Apache Edgent (Retired)","component":"plc4x","version":"pre-release","name":"apache-edgent","url":"/plc4x/pre-release/users/integrations/apache-edgent.html","titles":[]},"54":{"id":54,"text":"Apache IoTDB is database for storing time serie data. Therefore, it can be a good solution for managing the data which is collected by PLC4x. Given a PLC address and some fields, we can consider the PLC as a device in IoTDB, and each field as a measurement in IoTDB. A couple of PLCs form a storage group. For example, there is a virtual storage group mi, and a PLC d1, which has one field RANDOM/foo:Integer. Then, in IoTDB, we can get a time series like root.mi.d1.foo (or root.mi.d1.RANDOM_foo_Integer, as you like). Then, we can write data into IoTDB using JDBC with SQL or native API called session API. https://github.com/apache/plc4x-extras/tree/develop/plc4j/examples/hello-integration-iotdb shows an example to collect data using PLC4x and then writing data to IoTDB. To run the java example, some arguments are needed: e.g., java -jar ….. --connection-string simulated://127.0.0.1 --field-address RANDOM/foo:Integer --polling-interval 1000 --iotdb-address 127.0.0.1:6667 --iotdb-user-name root --iotdb-user-password root --iotdb-sg mi --iotdb-device d1 --iotdb-datatype INT32 --use-jdbc false Then PLC4x will collect data from a simulated PLC device, which generate random integer per 1 second. IoTDB’s address is 127.0.0.1 and the port is 6667. The data will be stored in device root.m1.d1, and the measurement name is RANDOM_foo_Integer. If you are using IoTDB v0.10.0 with the default configuration, and do not manually create the above time series, then IoTDB will consider the data as float. So, after running the program a few secondes, you can query the data using IoTDB’s command line: select * from root.mi.d1; +-----------------------------+-----------------------------+ | Time|root.mi.d1.RANDOM_foo_Integer| +-----------------------------+-----------------------------+ |2020-07-16T20:01:39.216+08:00| -1.34242598E9| |2020-07-16T20:01:40.150+08:00| -9.4141104E7| |2020-07-16T20:01:41.154+08:00| 1.40969664E9| |2020-07-16T20:01:42.155+08:00| 9.5824531E8| |2020-07-16T20:01:43.157+08:00| -4.207406E7| +-----------------------------+-----------------------------+ The detailed usage about IoTDB can be found https://iotdb.apache.org/UserGuide/Master/Client/Programming%20-%20Native%20API.html","title":"Apache IotDB","component":"plc4x","version":"pre-release","name":"apache-iotdb","url":"/plc4x/pre-release/users/integrations/apache-iotdb.html","titles":[{"text":"Data Model (Concept)","hash":"_data_model_concept","id":1},{"text":"Example","hash":"_example","id":2}]},"55":{"id":55,"text":"Apache Kafka is an open-source distributed event streaming platform used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications. The PLC4X connectors have the ability to pass data between Kafka and devices using industrial protocols. They can be built from source from the latest plc4x extras - kafka integration and plc4x release of PLC4X or from the latest snapshot from github. A connect worker is basically a producer or consumer process with a standard api that Kafka can use to manage it. It is able to be run in two modes:- Standalone Distributed Standalone allows you to run the connector locally from the command line without having to install the jar file on your Kafka brokers. In distributed mode the connector runs on the Kafka brokers, which requires you to install the jar file on all of your brokers. It allows the worker to be distrubuted across the Kafka brokers to provide redundancy and load balancing. In order to start a Kafka Connect system the following steps have to be performed: 1) Download the latest version of Apache Kafka binaries from here: https://kafka.apache.org/downloads. 2) Unpack the archive. 3) Copy the target/plc4j-apache-kafka-0.8.0-uber-jar.jar to the Kafka libs or plugin directory specified in the config/connect-distributed.properties file. 4) Copy the files in the config to Kafka’s config directory. 5) Make sure that the host name that the OPCUA server advertises during the discovery process is able to be resolved from the Kafka Connect server. The easiest way to do this is to add the hostname to your hosts file. 1) Open 4 console windows and change directory into that directory 2) Start Zookeeper: bin/zookeeper-server-start.sh config/zookeeper.properties 3) Start Kafka: bin/kafka-server-start.sh config/server.properties 4) Create the \"test\" topic: bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test 5) Start the consumer: bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning The starting configuration for your connect worker is provided by a configuration file. However, once the worker has started the configuration can be changed using the connect REST API which is generally available on http://localhost:8083/connectors. When running in distributed mode all the configuration needs to be done via the REST API. A sample configuration file is provided in the PLC4X Kafka integration repository in the config/plc4x-source.properties directory.. This includes comments as well as meaningful properties that can be used with the worker. The configuration of the connectors via the REST interface expects the same properties as are specified within the example config/plc4x-source.properties file. These will need to be in JSON format and included with a couple of headers. An example below shows the format it expects:- curl -X POST -H \"Content-Type: application/json\" --data '{\"name\": \"plc-source-test\", \"config\": {\"connector.class\":\"org.apache.plc4x.kafka.Plc4xSourceConnector\", // TODO: Continue here ... \"tasks.max\":\"1\", \"file\":\"test.sink.txt\", \"topics\":\"connect-test\" }}' http://localhost:8083/connectors Ideal for testing. 1) Start Kafka connect: bin/connect-standalone.sh config/connect-standalone.properties config/plc4x-source.properties Now watch the console window with the \"kafka-console-consumer\". If you want to debug the connector, be sure to set some environment variables before starting Kafka-Connect: export KAFKA_DEBUG=y; export DEBUG_SUSPEND_FLAG=y; In this case the startup will suspend till an IDE is connected via a remote-debugging session. Ideal for production. In this case the state of the node is handled by Zookeeper and the configuration of the connectors are distributed via Kafka topics. bin/kafka-topics --create --zookeeper localhost:2181 --topic connect-configs --replication-factor 3 --partitions 1 --config cleanup.policy=compact bin/kafka-topics --create --zookeeper localhost:2181 --topic connect-offsets --replication-factor 3 --partitions 50 --config cleanup.policy=compact bin/kafka-topics --create --zookeeper localhost:2181 --topic connect-status --replication-factor 3 --partitions 10 --config cleanup.policy=compact Starting the worker is then as simple as this: bin /connect-distributed.sh config/connect-distributed.properties The configuration of the Connectors is then provided via REST interface: curl -X POST -H \"Content-Type: application/json\" --data '{\"name\": \"plc-source-test\", \"config\": {\"connector.class\":\"org.apache.plc4x.kafka.Plc4xSourceConnector\", // TODO: Continue here ... \"tasks.max\":\"1\", \"file\":\"test.sink.txt\", \"topics\":\"connect-test\" }}' http://localhost:8083/connectors See config/sink.properties for an example configuration. Ideal for testing. 1) Start Kafka connect: bin/connect-standalone.sh config/connect-standalone.properties config/plc4x-sink.properties Now open console window with \"kafka-console-producer\". Producing to the kafka topic using the sample packet shown below should result all the values included in the payload being sent to the PLC using the mapping defined in the sink properties. {\"schema\": {\"type\":\"struct\",\"fields\": [{\"type\":\"struct\",\"fields\": [{\"type\":\"boolean\",\"optional\":true,\"field\":\"running\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"conveyorLeft\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"conveyorRight\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"load\"}, {\"type\":\"int32\",\"optional\":true,\"field\":\"numLargeBoxes\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"unload\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"transferRight\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"transferLeft\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"conveyorEntry\"}, {\"type\":\"int32\",\"optional\":true,\"field\":\"numSmallBoxes\"}], \"optional\":false,\"name\":\"org.apache.plc4x.kafka.schema.Field\",\"field\":\"fields\"}, {\"type\":\"int64\",\"optional\":false,\"field\":\"timestamp\"}, {\"type\":\"int64\",\"optional\":true,\"field\":\"expires\"}], \"optional\":false,\"name\":\"org.apache.plc4x.kafka.schema.JobResult\", \"doc\":\"PLC Job result. This contains all of the received PLCValues as well as a recieved timestamp\"}, \"payload\": {\"fields\": {\"running\":false,\"conveyorLeft\":true, \"conveyorRight\":true,\"load\":false, \"numLargeBoxes\":1630806456, \"unload\":true, \"transferRight\":false, \"transferLeft\":true, \"conveyorEntry\":false, \"numSmallBoxes\":-1135309911}, \"timestamp\":1606047842350, \"expires\":null}} If you want to debug the connector, be sure to set some environment variables before starting Kafka-Connect: export KAFKA_DEBUG=y; export DEBUG_SUSPEND_FLAG=y; In this case the startup will suspend till an IDE is connected via a remote-debugging session. Ideal for production. In this case the state of the node is handled by Zookeeper and the configuration of the connectors are distributed via Kafka topics. bin/kafka-topics --create --zookeeper localhost:2181 --topic connect-configs --replication-factor 3 --partitions 1 --config cleanup.policy=compact bin/kafka-topics --create --zookeeper localhost:2181 --topic connect-offsets --replication-factor 3 --partitions 50 --config cleanup.policy=compact bin/kafka-topics --create --zookeeper localhost:2181 --topic connect-status --replication-factor 3 --partitions 10 --config cleanup.policy=compact Starting the worker is then as simple as this: bin /connect-distributed.sh config/connect-distributed.properties The configuration of the Connectors is then provided via REST interface: curl -X POST -H \"Content-Type: application/json\" --data '{\"name\": \"plc-sink-test\", \"config\": {\"connector.class\":\"org.apache.plc4x.kafka.Plc4xSinkConnector\", // TODO: Continue here ... \"tasks.max\":\"1\", \"file\":\"test.sink.txt\", \"topics\":\"connect-test\" }}' http://localhost:8083/connectors If an error occurs when reading or writing PLC addresses a graceful backoff has been implemented so that the PLC isn’t bombarded with requests. However as the number of connectors for each PLC should be limited to reduce the load on the PLC, the graceful backoff shouldn’t have a major impact. For the source connector the PLC4X scraper logic is able to handle randomized polling rates on failures, this is buffered within the connector, the poll rate of the connector has no affect on the PLC poll rate. For the sink connector, if a write fails it is retried a configurable number of times with a timeout between each time. A Retriable Exception is raised which provides jitter for the timing of the retries. PLC4X specifies a very basic schema and leaves the majority of the implementation to the user. It contains the following fields:- \"fields\": - This is a customized structure that is formed by the fields defined in the connector configuration. This allows the user to defined arbitary fields within here all based on the PLC4X data types. \"timestamp\": - This is the timestamp at which the PLC4X connector processed the PLC request. \"expires\": - This field is used by the sink connector. It allows it to discard the record if it is too old. A value of 0 or null indicates that the record some never be discarded no matter how old it is. As the majority of the schema is left to the user to define we expect to be able to provide backward compatiblity between the base schemas. The schemas for the sink and source connectors are the same. This allows us to producer from one PLC and send the data to a sink.","title":"Apache Kafka","component":"plc4x","version":"pre-release","name":"apache-kafka","url":"/plc4x/pre-release/users/integrations/apache-kafka.html","titles":[{"text":"PLC4X Kafka Connectors","hash":"_plc4x_kafka_connectors","id":1},{"text":"Introduction","hash":"_introduction","id":2},{"text":"Quickstart","hash":"_quickstart","id":3},{"text":"Start a Kafka Broker","hash":"_start_a_kafka_broker","id":4},{"text":"Source Connector","hash":"_source_connector","id":5},{"text":"Start a Kafka Connect Source Worker (Standalone)","hash":"_start_a_kafka_connect_source_worker_standalone","id":6},{"text":"Start Kafka Connect Source Worker (Distributed Mode)","hash":"_start_kafka_connect_source_worker_distributed_mode","id":7},{"text":"Sink Connector","hash":"_sink_connector","id":8},{"text":"Start a Kafka Connect Sink Worker (Standalone)","hash":"_start_a_kafka_connect_sink_worker_standalone","id":9},{"text":"Start Kafka Connect Sink Worker (Distributed Mode)","hash":"_start_kafka_connect_sink_worker_distributed_mode","id":10},{"text":"Graceful Backoff","hash":"_graceful_backoff","id":11},{"text":"Schema Compatability","hash":"_schema_compatability","id":12}]},"56":{"id":56,"text":"Apache NiFi allows creating systems that process data around the concept of data-streams. Apache PLC4X provides both Source as well as Sink processors for accessing data in PLCs or writing data to them. Even if the documentation of NiFi states it works with any Java version above 1.8, this is not quite true. I have found that NiFi only works with Java versions below 11. With Java 1.8 you are definitely on the safe-side. When starting with newer versions the start script just terminates after logging a statement that NiFi is now starting. Other than that, I haven’t encountered any other requirements. As soon as you have started NiFi using the nifi.sh run or run-nifi.bat the Web-UI of NiFi should be available at: http://localhost:8080/nifi/ It might take a few seconds for the Web-UI to show up … so if you’re getting errors in the browser, give it some time to start. In order to enable Apache PLC4X support in Apache NiFi all you need to do, is to copy our nar archive into the Nifi installations lib directory. You can either build the nar by building PLC4X and using the version in the plc4j/integrations/apache-nifi/nifi-plc4x-nar/target directory. Or you can download a released version from Maven central: https://search.maven.org/search?q=plc4j-nifi-plc4x-nar Add a PLC4X Source processor to the canvas, click on the Add processor button and drag it into the canvas. A popup will appear in which you are presented the list of all available processors. Enter PLC4X in the search field and select the Plc4xSourceProcessor and click Add (I think you can also double-click on the processor) If you click on a Processor, it’s a little hard to see it’s selected as the selection is not highlighted. However, you can see a processor is selected as the bottom part shows the name of the selected processor. As soon as your new processor is added to the canvas you need to configure it. Do this by double clicking on it (Or by right-clicking and selecting Configure) Here you now need to provide a PLC4X connection string and a PLC resource address String. The PLC connection String is just a normal PLC4X connection string. Please consult the documentation on using the different types of supported connections Here The PLC resource address String is a ;-separarated list of name-value-pairs, where each name is assigned a plc4x addrress. For information on how an address string looks for the type of driver you are using, please check the documentation for the driver you are using Here Example: PLC connection String: s7://192.168.23.30 PLC resource address String: time-value=%DB2:8:TIME;string-value=%DB2:30.0:STRING(10) Before you save the processor there is one further setting that needs to be set. For this please change to the Scheduling tab and set the Run Schedule to let’s say 1 or 2 seconds. If we don’t do this, NiFi will hammer the PLC with requests and in case of my S7 it will simply start denying accepting new connections. It will still say Invalid at the top, but this has nothing to do with your entries, it’s much more that this processor produces two data-streams: SUCCESS and FAILURE. These need to be connected next. After that’s done, click on Apply. But before we can do that, we need to add something we can connect them to. So we simply add another processor to the canvas: Using a LogMessage processor. This simply logs every bit of data to the NiFi log-system. As the LogMessage processor creates a stream of events every time a log message is logged, we need to configure it to auto-terminate that relationship. Do this by double-clicking on the processor and selecting the Settings tab. Here check the checkbox labeled SUCCESS in the section Automatically Terminate Relationships and then click Apply. Now we can connect both processors. Notice the arrow-icon as soon as the mouse is over the Plc4xSourceProcessor? Click on this and start dragging. You notice that you now have a connection which you simply drag onto the log processor. As soon as you release the connection there, the two processors are now connected. As soon as you release the mouse, a popup will pop up and allow you to configure the connection. You can generally select which streams you want to connect. In this case we’ll simply connect the SUCCESS and the FAILURE stream to the log processor. As soon as that’s done, you are finished configuring your flow. Last thing we now need to do, is to start the processors. Currently, they are stopped (You can see it with the red square icon) Do this by right-clicking on both processors and selecting Start. Now you should see an increasing number at the Out of the PLC4X Source and on the In of the Logging Processor. In order to be able to debug the PLC4X, please edit the bin/nifi.sh (On Mac & Linux) and comment in the line: BOOTSTRAP_DEBUG_PARAMS=\"-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000\" For Windows, you would need to manually add: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000 to the run-nifi.bat files JAVA_ARGS. If you want NiFi so suspend at the start, so you can be sure to captue the entire execution, just change suspend=n to suspend=y. This will make NiFi pause till a remote debugging session is connected.","title":"Apache NiFi","component":"plc4x","version":"pre-release","name":"apache-nifi","url":"/plc4x/pre-release/users/integrations/apache-nifi.html","titles":[{"text":"Setting Up NiFi","hash":"_setting_up_nifi","id":1},{"text":"Enabling PLC4X Processors in NiFi","hash":"_enabling_plc4x_processors_in_nifi","id":2},{"text":"Using a PLC4X Source Processor in NiFi","hash":"_using_a_plc4x_source_processor_in_nifi","id":3},{"text":"Enabling debugging","hash":"_enabling_debugging","id":4}]},"57":{"id":57,"text":"PLC4X S7 Adapter PLC4X MODBUS Adapter","title":"Apache StreamPipes","component":"plc4x","version":"pre-release","name":"apache-streampipes","url":"/plc4x/pre-release/users/integrations/apache-streampipes.html","titles":[]},"58":{"id":58,"text":"… where IoT devices and their digital twins get together https://www.eclipse.org/ditto/ Eclipse Ditto - PLC4X Example: https://github.com/eclipse/ditto-examples/tree/master/plc4x","title":"Eclipse Ditto","component":"plc4x","version":"pre-release","name":"eclipse-ditto","url":"/plc4x/pre-release/users/integrations/eclipse-ditto.html","titles":[]},"59":{"id":59,"text":"The PLC4X OPC UA server integration is based around the Eclipse Milo OPC UA server. It uses PLC4X to communicate with industrial devices effectively acting as a industrial OPC UA gateway. The OPC UA server can be built using maven as part of the PLC4X build. mvn install This creates a target directory within plc4x/plc4j/integrations/opcua-server containing a jar file which is the main java executable. The config.yml file is used to configure the server. The following root level settings should be configured. version: The version is just an internal check to confirm that the right version of the configuration file is being used. dir: This is the directory to the security directory. This is where all configuration is stored including certificates. Be sure to secure this directory with the correct permissions. name: This is the name of the OPC UA server. It can be anything but shouldn’t contain spaces. disableInsecureEndpoint: This is used to disable the remote insecure OPC UA endpoint. tcpPort: this can be used to change the opc.tcp port. httpPort: this can be used to change the http.tcp port. devices: is a list of PLC’s or devices that the server should communicate with. Each device should include a name:, connectionString:, and a list of tags:. For each device within devices the following settings should be configured. name: This is the name of the device. It can anything as long as it doesn’t contain spaces. connectionString: Can be any valid PLC4X connection string. For each tag with tags the following settings should be configured:- alias: This is the name of tag it can be anything but shouldn’t have spaces. This will be shown as the tag name within the OPC UA server tree. Be sure that this is unique within the configuration file. address: This is any valid PLC4X address that matches the connection type. An example configuration file is shown below. --- version: \"0.8\" dir: {path-to-security-dir} name: \"Plc4xOPCUAServer\" disableInsecureEndpoint: true devices: - name: \"ModbusDevice\" connectionString: \"modbus-tcp://127.0.0.1:502\" tags: - alias: \"TemporaryBOOLARRAY\" address: \"000001:BOOL[10]\" - alias: \"TemporaryWORD2\" address: \"400002:WORD\" - alias: \"TemporaryUINT3\" address: \"400003:UINT\" - alias: \"TemporaryINT4\" address: \"400004:INT\" - alias: \"TemporaryDINT5\" address: \"400005:DINT[4]\" - alias: \"TemporaryREAL6\" address: \"400006:REAL\" - alias: \"TemporaryREAL7\" address: \"400007:REAL\" - alias: \"TemporaryREAL8\" address: \"400008:REAL\" - name: \"SimulationDevice\" connectionString: \"simulated://127.0.0.1\" tags: - alias: \"Temporary\" address: \"RANDOM/Temporary:Integer\" tcpPort: 12687 httpPort: 8445 To run the java executable execute:- java -jar plc4x-opcua-server-0.8.0-uber-jar.jar -c {path-to-config-file} -i This will start the OPC UA server with the interactive switch (-i). This prompts the server to ask for usernames and passwords upon startup. However, during normal operation the -i switch should be left out. If a certificate isn’t available at {path-to-security-dir}/security/plc4x-opcuaserver.pfx then a self signed is created. This certificate is password protected with the security password given during startup. If you place another certificate here make sure it is password protected and set the password by running the server again with --set-password switch. java -jar plc4x-opcua-server-0.8.0-uber-jar.jar -c {path-to-config-file} -i -s Once the OPC UA server is running you are able to connect to it from your favorite OPC UA client using the connection string. opc.tcp://{ip.address}:12687/plc4x Replacing the {ip.address} with the servers IP address. If you want to use an encrypted connection be sure to move the client certificate created in {path-to-security-dir}/security/pki/rejected to the trusted directory. Otherwise the client will receive a security error when trying to connect.","title":"Eclipse Milo (OPC UA Server)","component":"plc4x","version":"pre-release","name":"eclipse-milo","url":"/plc4x/pre-release/users/integrations/eclipse-milo.html","titles":[{"text":"Building the server","hash":"_building_the_server","id":1},{"text":"Configuration File","hash":"_configuration_file","id":2},{"text":"Running","hash":"_running","id":3}]},"60":{"id":60,"text":"","title":"Integrations","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/users/integrations/index.html","titles":[]},"61":{"id":61,"text":"Name Type Default Value Required Description Name Allen Bradley ETH Code ab-eth Maven Dependency org.apache.plc4x plc4j-driver-ab-eth pre-release Default Transport raw Supported Transports tcp Config options: station INT Id of the station we want to connect to Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected.","title":"AB-ETH","component":"plc4x","version":"pre-release","name":"ab-eth","url":"/plc4x/pre-release/users/protocols/ab-eth.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2}]},"62":{"id":62,"text":"The ADS (automation device specification) describes a device-independent and fieldbus independent interface for communication between Beckhoff automation devices running TwinCAT and other devices implementing this interface. https://www.home-assistant.io/integrations/ads/ Source (accessed 7 August 2022) ADS device concept: https://infosys.beckhoff.com/english.php?content=../content/1033/ams_nat/4275563275.html&id= Source (accessed 7 August 2022) Specification for ADS devices: https://infosys.beckhoff.com/english.php?content=../content/1033/ams_nat/4275563275.html&id= Source (accessed 7 August 2022) ADS (Automation Device Specification) is the TwinCAT communication protocol that specifies the interaction between two ADS devices. For example, it defines what operations can be executed on another ADS device, what parameters are necessary for that and what return value is sent after execution. AMS (Automation Message Specification) specifies the exchange of the ADS data. A major component of the communication protocol is the AmsNetId. This is specified in the AMS/ADS package for the source and target device. An ADS device can be explicitly addressed using the AmsNetId. Source https://infosys.beckhoff.com/english.php?content=../content/1033/ams_nat/4275563275.html&id= (accessed 7 August 2022) Name Type Default Value Required Description Name Beckhoff TwinCat ADS Code ads Maven Dependency org.apache.plc4x plc4j-driver-ads pre-release Default Transport tcp Supported Transports tcp Config options: target-ams-net-id STRING required AMS-Net-Id of the target. An AMS-Net-Id has the regular format of an IPv4 IP-Address, however with 6 segments instead of 4. target-ams-port INT required AMS port of the target. source-ams-net-id STRING required AMS-Net-Id of the source. An AMS-Net-Id has the regular format of an IPv4 IP-Address, however with 6 segments instead of 4. source-ams-port INT required AMS port of the source. timeout-request INT 4000 Default timeout for all types of requests. load-symbol-and-data-type-tables BOOLEAN true Configures, if when connecting the data-type- and symbol-table should be read. This is an optimization that can help in cases, where the PLC program is pretty large and downloading the full tables is causing problems. When disabled, symbolic addresses will manually be resolved as soon as an address is used. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. Data array Size Description AMS/TCP Header 6 bytes contains the length of the data packet. AMS Header 32 bytes The AMS/TCP-Header contains the addresses of the transmitter and receiver. In addition, the AMS error code , the ADS command Id and some other information. ADS Data n bytes The ADS data range contains the parameter of the single ADS commands. The structure of the data array depends on the ADS command. Some ADS commands require no additional data. For details about the protocol look here: http://www.beckhoff.com/ & (German Handbook: https://download.beckhoff.com/download/Document/automation/twincat3/TwinCAT_3_ADS_INTRO_DE.pdf)","title":"ADS (Automation Device Specification)","component":"plc4x","version":"pre-release","name":"ads","url":"/plc4x/pre-release/users/protocols/ads.html","titles":[{"text":"Structure AMS/TCP Packet","hash":"_structure_amstcp_packet","id":1},{"text":"Connection String Options","hash":"_connection_string_options","id":2},{"text":"tcp","id":3},{"text":"More details on","hash":"_more_details_on","id":4}]},"63":{"id":63,"text":"Name Type Default Value Required Description Name BACnet/IP Code bacnet-ip Maven Dependency org.apache.plc4x plc4j-driver-bacnet pre-release Default Transport udp Supported Transports udp tcp pcap Config options: ede-file-path STRING Path to the location of a single EDE file, that contains the descriptor for the target device. ede-directory-path STRING Path to the directory used for storing multiple EDE files. These files contain the descriptors for the possible target devices. Transport config options: udp.local-port INT -1 Some connections require a UDP listener to listen on a fixed port. Use this configuration option in order to define the port number of the local port. tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. pcap.support-vlans BOOLEAN false Enables support for VLans pcap.replay-speed-factor FLOAT 1.0 Numeric value for changing the replay speed: - 1 = Normal speed (default) - 0 = Maximum speed - 0.5 = Half speed - 2 = Double speed pcap.loop BOOLEAN false Should the replay start at the beginning of the file as soon as the end is reached? - true = Automatically start again - false = Stop at the end (default) pcap.filter STRING Filter expression used to filter out unwanted packets from the replay. pcap.support-vlans BOOLEAN false Should VLan packets be automatically unpacked? pcap.protocol-id INT -1 When provided, filters all packets to let only packets matching this ethernet protocol-id pass. Data array Size Description BACnet - A Data Communication Protocol for Building Automation and Control Networks","title":"BACnet/IP","component":"plc4x","version":"pre-release","name":"bacnet","url":"/plc4x/pre-release/users/protocols/bacnet.html","titles":[{"text":"BACnet (Building Automation and Control Networks)","hash":"_bacnet_building_automation_and_control_networks","id":1},{"text":"Connection String Options","hash":"_connection_string_options","id":2},{"text":"udp","id":3},{"text":"tcp","id":4},{"text":"pcap","id":5},{"text":"More details on","hash":"_more_details_on","id":6}]},"64":{"id":64,"text":"Name Type Default Value Required Description Name Clipsal C-Bus Code c-bus Maven Dependency org.apache.plc4x plc4j-driver-c-bus pre-release Default Transport tcp Supported Transports tcp Config options: srchk BOOLEAN false Source check. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected.","title":"C-Bus","component":"plc4x","version":"pre-release","name":"c-bus","url":"/plc4x/pre-release/users/protocols/c-bus.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2}]},"65":{"id":65,"text":"The CAN Bus driver is a special kind of driver which does not bring any logic. Its responsibility is to combine CAN transport facade and custom application layer protocols. In this way, the protocol can use its own \"root frame\" type which is not delivered from CAN bus frame. The CANDriverAdapter is a full implementation of Apache PLC4X API. Under the hood adapter will forward all operations to delegate driver. Work which is done by the adapter is to transform data incoming via CAN transport into frame supported by driver. In this regard the CANDriverAdapter does not implement any real protocol. All it does is transformation of incoming frames into frame desired by real driver. Below diagram explains how driver adapter works with CANopen. Given that this is currently biggest CAN driver implemented in Apache PLC4X we will use it as a reference. Looking at left most side of diagram we can see a CAN transport. The transport knows how to receive and send data to the CAN bus. Transport can create its own intermediate representation of CAN data frame. In case of SocketCAN there is a dedicated type called SocketCANFrame. Most of other drivers in Apache PLC4X which rely on TCP, UDP or serial transports can unify right above transport. Yet due to variety of APIs which are possible to be used with CAN bus such early unification at API level is not possible. Place where CANDriverAdapter jumps in is once transport formed the frame structure. Then, adapter asks the transport to turn that structure into a FrameData. An instance of FrameData is then passed to an adapter delivered by CANopen Driver. This adapter can then create a CANopenFrame which is processed by desired driver logic. The return side, when desired driver wants to publish information is a bit simplified. Because FrameData does not be a real type (it is an interface) we can skip it. With a help of a CANFrameBuilder provided by CAN transport driver can easily construct a structure which is supported by it. While this makes an API asymmetric it also makes it possible to use any third party transport with CANopenDriver.","title":"CAN Bus Driver Adapter","component":"plc4x","version":"pre-release","name":"can","url":"/plc4x/pre-release/users/protocols/can.html","titles":[{"text":"More details on the driver","hash":"_more_details_on_the_driver","id":1}]},"66":{"id":66,"text":"CANopen is a specific protocol built on top of CAN bus. Name Type Default Value Required Description Name CAN open Code canopen Maven Dependency org.apache.plc4x plc4j-driver-canopen pre-release Default Transport socketcan Supported Transports socketcan Config options: node-id INT CAN node identifier. Depending on used CAN version it might be 11 or 29 bit unsigned int. heartbeat BOOLEAN Forces PLC4X to send CANopen heartbeat (NMT) messages to the bus. request-timeout INT 1000 Time after which dispatched BUS operation (ie. SDO request) will be marked as failed. Transport config options: Name Value Description Supported Operations CANopen PDO read / write PDO messages are broadcasted to the bus and have to be mapped at application layer. CANopen SDO read / write SDO are request/response conversations. Both read and write path is supported. subscribe Receiving PDO messages requires construction of valid subscription. It is possible to subscribe to CANopen NMT messages. CAN, despite (or due) to its popularity has ambiguous meaning. There are multiple articles and sources which attempts to give introduction, yet very few of them is consistent between each other. There are two dominant formats of frames - CAN 2.0A and 2.0B: CAN 2.0A uses 11 bit identifier and up to 8 bytes of data. CAN 2.0B uses 29 bit identifier and up to 8 bytes of data. To make things worse with introduction of CAN FD amount of combinations increased even more. Double check frame format as this integration supports CANopen and does not support CANopen FD nor CAN 2.0B. Further reading on CAN flavors: https://en.wikipedia.org/wiki/CAN_bus Default transport used with this protocol is socketcan. Currently, only 2.0A format (up to 8 bytes of data) is supported. Implemented driver supports currently socketcan transport. Change of transport requires code modifications and injection of new \"transport\" type which will encode CANopen payloads to specific frame format. Socketcan seems to be most widespread way to access CAN bus. It also masks different hardware variants which might come with their own drivers. The CANopen specification defines Object Dictionary (OD). This driver does honor OD structure through usage of index and sub index for addressing fields. It does not ship Electronic Data Sheet (EDS) parser leaving it for applications who wish to utilize it. CANopen specification defines several groups of addresses dedicated to certain kind of operations. Critical services and message exchanges related with them have lower identifiers making them wining eventual bus access. The array size block is necessary only if application expect same value several times. If SDO returns for example 4 values of UNSIGNED8 it can be declared as ::UNSIGNED8[4] for PDO. Equivalent for SDO is ::/:UNSIGNED8[4]. Service Format Supported operations Description SDO SDO:nodeId:index/subindex:type[arraySize] read write SDO is for request/response communication. Both expedited and segmented modes are supported. No support for block transfer. Transfer kind is automatically determined based on payload length. All numeric values - ndodeId, index, subindex can be specified using hexadecimal notation (ie. 0xA). PDO TRANSMIT_PDO_1:nodeId:type[arraySize] RECEIVE_PDO_1:nodeId:type[arraySize] TRANSMIT_PDO_2:nodeId:type[arraySize] RECEIVE_PDO_2:nodeId:type[arraySize] TRANSMIT_PDO_3:nodeId:type[arraySize] RECEIVE_PDO_3:nodeId:type[arraySize] TRANSMIT_PDO_4:nodeId:type[arraySize] RECEIVE_PDO_4:nodeId:type[arraySize] subscribe write PDO is an asynchronous operation hence receiving of it requires subscription. Check Apache PLC4X API documentation for more detailed example of how to use subscriptions API. Subscriber will be notified with value mapped to type defined in field syntax. NMT NMT NMT:nodeId subscribe NMT messages are sent using CAN node ID 0. They have the highest priority on the bus. Messages of this kind indicate operating state of an node (booted, operational). Subscriptions to this service receive structure with two fields: node (USINT) and state (USINT). If subscription sets nodeId to 0 it will receive state updates for all bus participants. HEARTBEAT HEARTBEAT HEARTBEAT:nodeId subscribe HEARTBEAT messages have the lowest priority on the bus. They have the highest priority on the bus. Messages of this kind indicate operating state of an node (booted, operational). Subscriptions to this service receive structure with two fields: node (USINT) and state (USINT). If subscription sets nodeId to 0 it will receive state updates for all bus participants. Below table contains type mapping defined in CANopen specification. CANopen Type Length (in bits) PLC4X Type BOOLEAN 1 BOOL UNSIGNED8 8 USINT UNSIGNED16 16 UINT UNSIGNED24 24 UDINT UNSIGNED32 32 UDINT UNSIGNED40 40 ULINT UNSIGNED48 48 ULINT UNSIGNED56 56 ULINT UNSIGNED64 64 ULINT INTEGER8 8 SINT INTEGER16 16 INT INTEGER24 24 DINT INTEGER32 32 DINT INTEGER40 40 LINT INTEGER48 48 LINT INTEGER56 56 LINT INTEGER64 64 LINT REAL32 32 REAL REAL64 64 LREAL RECORD 8 * size BYTE OCTET_STRING 8 * size STRING (UTF-8) VISIBLE_STRING 8 * size STRING (UTF-8) TIME_OF_DAY unsupported TIME_DIFFERENCE unsupported UNICODE_STRING 8 * size STRING (UTF-8) All string types are decoded using UTF-8 encoding regardless of their kind (octet, visible, unicode). In case if device returns text using different encoding it is recommended to use RECORD type and construct text manually above PLC4X. The size in case of variable length structures is automatically assumed to full length of SDO answer. In case of writing length of field can be ommited. For example request write(SDO:1:2/3:RECORD, payload) will try to write whole payload to specified address. Same applies to responses sent by devies as requester often might not know full length of reply payload.","title":"CANopen","component":"plc4x","version":"pre-release","name":"canopen","url":"/plc4x/pre-release/users/protocols/canopen.html","titles":[{"text":"CAN in Automation","hash":"_can_in_automation","id":1},{"text":"Connection String Options","hash":"_connection_string_options","id":2},{"text":"socketcan","id":3},{"text":"More details on the driver","hash":"_more_details_on_the_driver","id":4},{"text":"Address Format","hash":"_address_format","id":5}]},"67":{"id":67,"text":"","title":"CtlrX","component":"plc4x","version":"pre-release","name":"ctrlx","url":"/plc4x/pre-release/users/protocols/ctrlx.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1}]},"68":{"id":68,"text":"","title":"DeltaV","component":"plc4x","version":"pre-release","name":"deltav","url":"/plc4x/pre-release/users/protocols/deltav.html","titles":[]},"69":{"id":69,"text":"","title":"DF1","component":"plc4x","version":"pre-release","name":"df1","url":"/plc4x/pre-release/users/protocols/df1.html","titles":[]},"70":{"id":70,"text":"Name Type Default Value Required Description Name EthernetIP Code eip Maven Dependency org.apache.plc4x plc4j-driver-eip pre-release Default Transport tcp Supported Transports tcp Config options: backplane INT 1 Without using routing information the backplane defaults to 1. This is overridden if communicationPath is provided. slot INT 0 The slot within the backplane the CPU is located. big-endian BOOLEAN true Configure if the connection should be set to transport data in Big-Endian format, or not. force-unconnected-operation BOOLEAN false Forces the driver to use unconnected requests. Since: 0.13.0 Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. To read and write data to a PLC4X device, the EtherNet/IP driver uses symbolic segments. This is used to refer to objects through their symbolic names. This makes reading data a lot easier, as you do not need to specify the Datatype for reading. %{tagname}[{startIndex}]:{numberOfElements} %{tagname}[{startIndex}]:{numberOfElements}:{DataType} Name Description Tagname symbolic name of the Data Start Index (optional) if the data is an array, we can specify a starting index from where we want to read Number of elements (optional) if the data is an array, we can specify the number of elements we want to read. Use this in combination with the starting index to get the exact scope you want. DataType (writing) Specify the Data-type of the value you want to write (mandatory) To store Use this data type Bit BOOL Bit array DWORD (32-bit boolean array) 8-bit integer SINT 16-bit integer INT 32-bit integer DINT 64-bit integer LINT 32-bit float REAL","title":"EtherNet/IP","component":"plc4x","version":"pre-release","name":"eip","url":"/plc4x/pre-release/users/protocols/eip.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2},{"text":"Address Format","hash":"_address_format","id":3},{"text":"Data Types","hash":"_data_types","id":4}]},"71":{"id":71,"text":"The Firmata protocol is based on the MIDI protocol used for communicating with musical equipment. It is also one of the most widely used protocols for communication with Arduino devices. This driver is built to be compatible with the StandardFirmata Arduino Sketch which can be found here (Version last changed on August 17th, 2017) Name Type Default Value Required Description Name Firmata Code firmata Maven Dependency org.apache.plc4x plc4j-driver-firmata pre-release Default Transport serial Supported Transports serial Config options: Transport config options: serial.baud-rate INT 57600 Baud-rate the serial port is set to. Typical values are: - 9600 - 14400 - 19200 - 38400 - 57600 - 115200 - 128000 But can also be smaller or larger values. serial.num-data-bits INT 8 Number of data-bits used to send data. Typical values are: - 7 - 8 But can also be smaller or larger values. serial.num-stop-bits INT 1 Number of stop-bits used to terminate data. Typical values are: - 1 - 2 (The theoretical 1.5 stop-bits setting is not supported) serial.parity STRING NO_PARITY Number of bits used to calculate data parity. This is used to detect errors in transmission. Allowed values are: - NO_PARITY - ODD_PARITY - EVEN_PARITY - MARK_PARITY - SPACE_PARITY Name Value Description Supported Operations write Writing is only supported to digital addresses. subscribe Reading is supported for both digital and analog addresses. See note after this table however. When subscribing to pins, these are configured to become read pins. When writing to digital pins, these are configured to become output pins. However, writing to pins for which a subscription exists, an exception will be thrown. In order to write to previously subscribed pins, all subscriptions for this have to be cancelled first. Similar to the Modbus protocol, the Firmata protocol support Boolean and Short values. Booleans are used for the digital IO pins and short values for the analog inputs. The full format for a digital address has the following format: digital:{start-address}[{array-size}]:{special-config} The start-address and array-size are simple integer values. special-config can be used to configure the digital input pin to something else than INPUT. Currently the only supported option is PULLUP which configured the Arduino’s digital input pin to use it’s built in pullup-resistor. Both the array-size as well as the special-config parts are optional. So the following example addresses are valid: digital:4 digital:4[5] digital:4:PULLUP A normal Arduino Uno is equipped with 14 digital inputs: 0-13 However in case of using the serial port (which will always be the case when using this driver), the pins 0 and 1 are the RX and TX pins of the serial port and can’t be used. The full format for an analog address is as follows: analog:{start-address}[{array-size}] The start-address and array-size are simple integer values. Both the array-size is optional. So the following example addresses are valid: analog:1 analog:2[3] A normal Arduino Uno is equipped with 6 analog inputs: 0-5","title":"Firmata","component":"plc4x","version":"pre-release","name":"firmata","url":"/plc4x/pre-release/users/protocols/firmata.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"serial","id":2},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":3},{"text":"Binary Addresses","hash":"_binary_addresses","id":4},{"text":"Analog Addresses","hash":"_analog_addresses","id":5}]},"72":{"id":72,"text":"This driver is a generic purpose driver. It allows implementing a basic CAN bus listening or writing scenarios. CAN bus open is a specific protocol built on top of CAN bus. Name Type Default Value Required Description Name Generic CAN Code genericcan Maven Dependency org.apache.plc4x plc4j-driver-can pre-release Default Transport socketcan Supported Transports socketcan Config options: node-id INT Node id of the target device. request-timeout INT 1000 Default timeout for all types of requests. Transport config options: Name Value Description Supported Operations publish write Allows to publish a CAN frame via CAN transport. receive subscribe This operation allows listening for incoming data or requests. Given popularity of CAN in multiple market segments there is variety of protocols which can’t be published. Also, for many cases which are data acquisition oriented it is necessary to tap only parts of communications. This driver allows to model incoming and outgoing communication using plain Apache PLC4X api. The written CAN data is constructed from fields submitted via write request builder. The receiving data is transformed in similar fashion, based on subscribed fields. Service Format Supported operations Description n/a nodeId:type[arraySize] write subscribe There is only one syntax which is currently supported by this driver. Pay attention. You can use multiple fields to write and subscribe actual data. All fields must sum to up to 64 bits. If you subscribe less, then remaining data is discarded and not available via PLC4X api. The data will be sent in the same order as fields. Below table contains type mapping defined in Generic CAN driver. CANopen Type Length (in bits) PLC4X Type BOOLEAN 1 BOOL UNSIGNED8 8 USINT UNSIGNED16 16 UINT UNSIGNED24 24 UDINT UNSIGNED32 32 UDINT UNSIGNED40 40 ULINT UNSIGNED48 48 ULINT UNSIGNED56 56 ULINT UNSIGNED64 64 ULINT INTEGER8 8 SINT INTEGER16 16 INT INTEGER24 24 DINT INTEGER32 32 DINT INTEGER40 40 LINT INTEGER48 48 LINT INTEGER56 56 LINT INTEGER64 64 LINT REAL32 32 REAL REAL64 64 LREAL The type table is similar to CANopen. Main difference is lack of support for string types.","title":"Generic CAN","component":"plc4x","version":"pre-release","name":"genericcan","url":"/plc4x/pre-release/users/protocols/genericcan.html","titles":[{"text":"CAN Bus semantics","hash":"_can_bus_semantics","id":1},{"text":"Connection String Options","hash":"_connection_string_options","id":2},{"text":"socketcan","id":3},{"text":"More details on the driver","hash":"_more_details_on_the_driver","id":4},{"text":"Address format","hash":"_address_format","id":5}]},"73":{"id":73,"text":"Name Type Default Value Required Description Name IEC 60870-5-104 Code iec-60870-5-104 Maven Dependency org.apache.plc4x plc4j-driver-iec-60870 pre-release Default Transport tcp Supported Transports tcp Config options: request-timeout INT 4000 Default timeout for all types of requests. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected.","title":"IEC-60870","component":"plc4x","version":"pre-release","name":"iec-60870","url":"/plc4x/pre-release/users/protocols/iec-60870.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2}]},"74":{"id":74,"text":"Protocol C C# Go Java Python AB-Ethernet ADS /AMS BACnet/IP CBus CANopen DeltaV DF1 EtherNet/IP EtherNet/IP - Logix Firmata IEC-60870 KNXnet/IP Modbus (TCP/RTU/ASCII) OPC-UA Open-Protocol (Torque-Tools) PLC4X (Proxy-Protocol) Profinet S7 Simulated UMAS Legend: - Implemented and fully supported - Work in progress - Not implemented yet - Unsure The following table contains a list of operations and the protocols that support them: Protocol Auto-Discover Browse Read Single Address Value Read Multiple Address Values Write Single Address Value Write Multiple Address Value Subscribe to Value changes Subscribe to PLC Events/Alarms Publish Values AB-Ethernet ADS /AMS BACnet/IP CBus CANopen DeltaV DF1 EtherNet/IP EtherNet/IP - Logix Firmata IEC-60870 KNXnet/IP Modbus (TCP/RTU/ASCII) OPC-UA Open-Protocol (Torque-Tools) PLC4X (Proxy-Protocol) Profinet S7 Simulated UMAS Legend: - Implemented and fully supported - Implemented and supported by simulation - Not implemented yet - Unsure","title":"Current language support for protocols","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/users/protocols/index.html","titles":[{"text":"Features","hash":"_features","id":1}]},"75":{"id":75,"text":"Name Type Default Value Required Description Name KNXNet/IP Code knxnet-ip Maven Dependency org.apache.plc4x plc4j-driver-knxnetip pre-release Default Transport udp Supported Transports udp pcap raw Config options: knxproj-file-path STRING Path to the knxproj file. The default KNXnet/IP protocol doesn’t provide all the information needed to be able to fully decode the messages. knxproj-password STRING Optional password needed to read the knxproj file. group-address-num-levels INT 3 KNX Addresses can be encoded in multiple ways. Which encoding is used, is too not provided by the protocol itself so it has to be provided externally: - 3 Levels: {main-group (5 bit)}/{middle-group (3 bit)}/{sub-group (8 bit)} - 2 Levels: {main-group (5 bit)}/{sub-group (11 bit)} - 1 Level: {sub-group (16 bit)} The default is 3 levels. If the knxproj-file-path this information is provided by the file. connection-type STRING LINK_LAYER Type of connection used to communicate. Possible values are: - 'LINK_LAYER' (default): The client becomes a participant of the KNX bus and gets it’s own individual KNX address. - 'RAW': The client gets unmanaged access to the bus (be careful with this) - 'BUSMONITOR': The client operates as a busmonitor where he can’t actively participate on the bus. Only one 'BUSMONITOR' connection is allowed at the same time on a KNXnet/IP gateway. Transport config options: udp.local-port INT -1 Some connections require a UDP listener to listen on a fixed port. Use this configuration option in order to define the port number of the local port. pcap.replay-speed-factor FLOAT 1.0 Numeric value for changing the replay speed: - 1 = Normal speed (default) - 0 = Maximum speed - 0.5 = Half speed - 2 = Double speed pcap.loop BOOLEAN false Should the replay start at the beginning of the file as soon as the end is reached? - true = Automatically start again - false = Stop at the end (default) pcap.filter STRING Filter expression used to filter out unwanted packets from the replay. pcap.support-vlans BOOLEAN false Should VLan packets be automatically unpacked? pcap.protocol-id INT -1 When provided, filters all packets to let only packets matching this ethernet protocol-id pass. raw.resolve-mac-address BOOLEAN If set to true, the transport will automatically resolve the MAC address for a given IP address (Allows connecting to a raw-socket device using the devices host-name or ip-address). raw.support-vlans BOOLEAN false Should VLan packets be automatically unpacked? raw.protocol-id INT -1 When provided, filters all packets to let only packets matching this ethernet protocol-id pass. KNX Addresses usually have one of the following structures: 3-level Address: {main-group(0-15)}/{middle-group(0-15)}/{sub-group(0-255)} 2-level Address: {main-group(0-15)}/{sub-group(0-4095)} 1-level Address: {sub-group(0-65535)} Depending on the group-address-type configured in the connection string or defined in the knxproj-file configured by the knxproj-file-path connection string parameter, the corresponding address pattern has to be used. However, when subscribing for events, each segment allows using of the wildcard character *. If the addresses used in the KNX installation are structured, this way it is possible to, for example (depending on the scheme used): Collect all information for a given level of your building: 1// Collect all information for a given room: 2/4/* Collect all information about heating in all rooms: //50 Don’t use wildcards when explicitly reading or writing data, this is only supported when subscribing to events.","title":"KNXnet/IP","component":"plc4x","version":"pre-release","name":"knxnetip","url":"/plc4x/pre-release/users/protocols/knxnetip.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"udp","id":2},{"text":"pcap","id":3},{"text":"raw","id":4},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":5}]},"76":{"id":76,"text":"Name Type Default Value Required Description Name Logix CIP Code logix Maven Dependency org.apache.plc4x plc4j-driver-eip pre-release Default Transport tcp Supported Transports tcp Config options: communication-path STRING The communication path allows for connection routing across multiple backplanes. It uses a common format found in Logix controllers. It consists of pairs of values, each pair begins with either 1 (Backplane) or 2 (Ethernet), followed by a slot in the case of a backplane address, or if using Ethernet an ip address. e.g. [1,4,2,192.168.0.1,1,1] - Routes to the 4th slot in the first rack, which is a ethernet module, it then connects to the address 192.168.0.1, then finds the module in slot 1. backplane INT 1 Without using routing information the backplane defaults to 1. This is overridden if communicationPath is provided. slot INT 0 The slot within the backplane the CPU is located. big-endian BOOLEAN true Configure if the connection should be set to transport data in Big-Endian format, or not. force-unconnected-operation BOOLEAN false Forces the driver to use unconnected requests. Since: 0.13.0 Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. Logix has the following connection string format:- logix:tcp://{ip-address}:{port}?{options} An example connection string would look like:- logix:tcp://127.0.0.1:502?communicationPath=[1,1] Note the port and option fields are optional. In general all Logix addresses have this format: {address}:{data-type}[{array-size}] If the array-size part is omitted, the size-default of 1 is assumed. If the data-type part is omitted, the data type from the controller is used The address format matches that found in the controller. The following data types are supported BOOL (boolean) SINT (int 8) USINT (uint 8) BYTE (uint 8) INT (int 16) UINT (uint 16) WORD (uint 16) DINT (int 32) UDINT (uint 32) DWORD (uint 32) LINT (int 64) REAL (float)","title":"Logix","component":"plc4x","version":"pre-release","name":"logix","url":"/plc4x/pre-release/users/protocols/logix.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":3},{"text":"Connection String","hash":"_connection_string","id":4},{"text":"General Format","hash":"_general_format","id":5},{"text":"Data Types","hash":"_data_types","id":6}]},"77":{"id":77,"text":"Name Type Default Value Required Description Name Modbus TCP Code modbus-tcp Maven Dependency org.apache.plc4x plc4j-driver-modbus pre-release Default Transport tcp Supported Transports tcp Config options: request-timeout INT 5000 Default timeout for all types of requests. default-unit-identifier INT 1 Unit-identifier or slave-id that identifies the target PLC (On RS485 multiple Modbus Devices can be listening). Defaults to 1. ping-address STRING 4x00001:BOOL Simple address, that the driver will use to check, if the connection to a given device is active (Defaults to reading holding-register 1). default-payload-byte-order STRING BIG_ENDIAN Default encoding used for transporting register values (Defaults to BIG_ENDIAN). Allowed values are: - BIG_ENDIAN - LITTLE_ENDIAN - BIG_ENDIAN_BYTE_SWAP - LITTLE_ENDIAN_BYTE_SWAP Since: 0.13.0 max-coils-per-request INT 2000 Maximum number of coils addressable in one request (Defaults to 2000) Since: 0.13.0 max-registers-per-request INT 125 Maximum number of registers addressable in one request (Defaults to 125) Since: 0.13.0 Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. Name Type Default Value Required Description Name Modbus RTU Code modbus-rtu Maven Dependency org.apache.plc4x plc4j-driver-modbus pre-release Default Transport serial Supported Transports tcp serial Config options: request-timeout INT 5000 Default timeout for all types of requests. default-unit-identifier INT 1 Unit-identifier or slave-id that identifies the target PLC (On RS485 multiple Modbus Devices can be listening). Defaults to 1. Since: renamed from 'unit-identifier' in 0.13.0 default-payload-byte-order STRING BIG_ENDIAN Default encoding used for transporting register values (Defaults to BIG_ENDIAN). Allowed values are: - BIG_ENDIAN - LITTLE_ENDIAN - BIG_ENDIAN_BYTE_SWAP - LITTLE_ENDIAN_BYTE_SWAP Since: 0.13.0 max-coils-per-request INT 2000 Maximum number of coils addressable in one request (Defaults to 2000) Since: 0.13.0 max-registers-per-request INT 125 Maximum number of registers addressable in one request (Defaults to 125) Since: 0.13.0 Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. serial.baud-rate INT 57600 Baud-rate the serial port is set to. Typical values are: - 9600 - 14400 - 19200 - 38400 - 57600 - 115200 - 128000 But can also be smaller or larger values. serial.num-data-bits INT 8 Number of data-bits used to send data. Typical values are: - 7 - 8 But can also be smaller or larger values. serial.num-stop-bits INT 1 Number of stop-bits used to terminate data. Typical values are: - 1 - 2 (The theoretical 1.5 stop-bits setting is not supported) serial.parity STRING NO_PARITY Number of bits used to calculate data parity. This is used to detect errors in transmission. Allowed values are: - NO_PARITY - ODD_PARITY - EVEN_PARITY - MARK_PARITY - SPACE_PARITY Name Type Default Value Required Description Name Modbus ASCII Code modbus-ascii Maven Dependency org.apache.plc4x plc4j-driver-modbus pre-release Default Transport serial Supported Transports tcp serial Config options: request-timeout INT 5000 Default timeout for all types of requests. default-unit-identifier STRUCT 1 Unit-identifier or slave-id that identifies the target PLC (On RS485 multiple Modbus Devices can be listening). Defaults to 1. default-payload-byte-order STRING BIG_ENDIAN Default encoding used for transporting register values (Defaults to BIG_ENDIAN). Allowed values are: - BIG_ENDIAN - LITTLE_ENDIAN - BIG_ENDIAN_BYTE_SWAP - LITTLE_ENDIAN_BYTE_SWAP Since: 0.13.0 max-coils-per-request INT 2000 Maximum number of coils addressable in one request (Defaults to 2000) Since: 0.13.0 max-registers-per-request INT 125 Maximum number of registers addressable in one request (Defaults to 125) Since: 0.13.0 Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. serial.baud-rate INT 57600 Baud-rate the serial port is set to. Typical values are: - 9600 - 14400 - 19200 - 38400 - 57600 - 115200 - 128000 But can also be smaller or larger values. serial.num-data-bits INT 8 Number of data-bits used to send data. Typical values are: - 7 - 8 But can also be smaller or larger values. serial.num-stop-bits INT 1 Number of stop-bits used to terminate data. Typical values are: - 1 - 2 (The theoretical 1.5 stop-bits setting is not supported) serial.parity STRING NO_PARITY Number of bits used to calculate data parity. This is used to detect errors in transmission. Allowed values are: - NO_PARITY - ODD_PARITY - EVEN_PARITY - MARK_PARITY - SPACE_PARITY Name Value Description Supported Operations read write Modbus has the following connection string format:- modbus-tcp:{transport}://{ip-address}:{port}?{options} An example connection string would look like:- modbus-tcp:tcp://127.0.0.1:502 Note the transport, port and option fields are optional. In general all Modbus addresses have this format: {memory-Area}{start-address}:{data-type}[{array-size}]:{name-value-tag-options} If the array-size part is omitted, the size-default of 1 is assumed. If the data-type part is omitted, it defaults to BOOL for Coils and Discrete Inputs and INT for input, holding and extended registers. If the name-value-tag-options part is omitted, simply no configuration fine-tuning is applied. Additionally address can contain tag configuration: {unit-id: 123} Specifying this value overrides value of default-unit-id parameter specified at the connection string. {byte-order: 'LITTLE_ENDIAN'} With this, can the default byte-order be overridden on a per-tag basis. If not provided the default-byte-order from the connection string is used, or BIG_ENDIAN, if this is also not provided. There are a number of memory areas defined in the Modbus specification. Discrete Input Area Coil Area Input Register Area Holding Register Extended Register Area Name Memory Area Aliases Description Bit-Size Permissions Starting Address Discrete Input discrete-input: or 1 or 1x Boolean input value, usually representing a binary input to the PLC 1 Read Only 1 Coil coil: or 0 or 0x Boolean value, usually representing a binary output from the PLC 1 Read/Write 1 Input Register input-register: or 3 or 3x Short input value, usually representing an analog input to the PLC 16 Read Only 1 Holding Register holding-register: or 4 or 4x Short value, usually representing an analog output from the PLC 16 Read/Write 1 Extended Register extended-register: or 6 or 6x Short value, 16 Read/Write 0 Initially the Modbus format allowed up to 10000 address to be specified or the discrete inputs, coils, input registers and holding registers. Later on, this was expanded to allow up 65536 address within each memory area (except the extended register area). When using the long address format i.e. input-registers:1 the addresses between 1 and 65535 are able to be specified. When using the shorter versions there are two formats available i.e. 30001 and 300001. With the shorter format 3XXXX being limited to between 30001 and 39999, while the longer format 3XXXXX being limited to between 300001 and 365535. These memory areas all start at address 1. For the extended register area the addresses 0-99999 are able to be specified. These registers are mapped to file records with a length of 10000. Address 600000 corresponds to the first address in file record 0. Address 610000 is then the first address in the second file record and so on. It is noted that there is generally only 10 file records (600000 thru to 699999) however the spec allows for 65536 file records. Using the extended-register: format you are able to reference all of these, if the shorter format is used then it is limited to 699999. This memory area starts at address 0. The following data types are supported BOOL (boolean) SINT (int 8) USINT (uint 8) BYTE (uint 8) INT (int 16) UINT (uint 16) WORD (uint 16) DINT (int 32) UDINT (uint 32) DWORD (uint 32) LINT (int 64) ULINT (uint 64) LWORD (uint 64) REAL (float) LREAL (double) CHAR (char) WCHAR (2 byte char) Most memory areas start at address 1, except for the extended register area which starts at 0. These are both mapped to 0x0000 when it is sent in the Modbus protocol. The input, holding and extended registers consist of 16-bit registers while the discrete input and coil areas consist of bits. The following Modbus function codes are supported:- 0x01 (Read Coils) 0x02 (Read Discrete Inputs) 0x03 (Read Holding Registers) 0x04 (Read Input Registers) 0x05 (Write Single Coil) 0x06 (Write Single Register) 0x0F (Write Multiple Coils) 0x10 (Write Multiple Registers) 0x14 (Read File Record)(Extended Register Read) 0x15 (Write File Record)(Extended Register Write) To read 10 holding registers starting at address 20 and parse as Unsigned Integers the following examples are all valid. holding-register:20:UINT[10] 400020:UINT[10] 4x00020:UINT[10] 40020:UINT[10] 4x0020:UINT[10] To read 1 holding register at address 5678 the following examples are valid. holding-register:5678 405678 4x05678 45678 4x5678 To read 1 holding register of unit 10 at address 5678 the following examples are valid. holding-register:5678{unit-id: 10} 405678{unit-id: 10} 4x05678{unit-id: 10} 45678{unit-id: 10} 4x5678{unit-id: 10} To read 10 extended registers starting at address 50 the following examples are valid. extended-register:50[10] 600050[10] 6x00050[10] 60050[10] 6x0050[10] This corresponds to addresses 50-59 in file record 1. To read 10 extended registers starting at address 9995 the following examples are valid. extended-register:9995[10] 609995[10] 6x09995[10] 69995[10] 6x9995[10] This corresponds to addresses 9995-9999 in file record 1 and addresses 0-5 in file record 2. Note that this request is split into 2 sub requests in the Modbus protocol.","title":"Modbus (TCP/UDP/Serial)","component":"plc4x","version":"pre-release","name":"modbus","url":"/plc4x/pre-release/users/protocols/modbus.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"Modbus TCP","hash":"_modbus_tcp","id":2},{"text":"tcp","id":3},{"text":"Modbus RTU","hash":"_modbus_rtu","id":4},{"text":"tcp","id":5},{"text":"serial","id":6},{"text":"Modbus ASCII","hash":"_modbus_ascii","id":7},{"text":"tcp","id":8},{"text":"serial","id":9},{"text":"Supported Operations","hash":"_supported_operations","id":10},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":11},{"text":"Connection String","hash":"_connection_string","id":12},{"text":"General Format","hash":"_general_format","id":13},{"text":"Memory Areas","hash":"_memory_areas","id":14},{"text":"Data Types","hash":"_data_types","id":15},{"text":"Some useful tips","hash":"_some_useful_tips","id":16},{"text":"Examples","hash":"_examples","id":17}]},"78":{"id":78,"text":"Name Type Default Value Required Description Name Opcua Code opcua Maven Dependency org.apache.plc4x plc4j-driver-opcua pre-release Default Transport tcp Supported Transports tcp Config options: protocol-code STRING transport-code STRING transport-config STRING discovery BOOLEAN true Controls the feature of the discovery endpoint of an OPC UA server which every server will propagate over an '/discovery' endpoint. The most common issue here is that most servers are not correctly configured and propagate the wrong external IP or URL address. If that is the case you can disable the discovery by configuring it with a false value. The discovery phase is always conducted using NONE security policy. username STRING A username to authenticate to the OPCUA server with. password STRING A password to authenticate to the OPCUA server with. security-policy STRING NONE The security policy applied to communication channel between driver and OPC UA server. Default value assumes. Possible options are NONE, Basic128Rsa15, Basic256, Basic256Sha256, Aes128_Sha256_RsaOaep, Aes256_Sha256_RsaPss. message-security STRING SIGN_ENCRYPT The security policy applied to messages exchanged after handshake phase. Possible options are NONE, SIGN, SIGN_ENCRYPT. This option is effective only when securityPolicy turns encryption (anything beyond NONE). key-store-file STRING The Keystore file used to lookup client certificate and its private key. key-store-type STRING pkcs12 Keystore type used to access keystore and private key, defaults to PKCS (for Java 11+). Possible values are between others jks, pkcs11, dks, jceks. key-store-password STRING Java keystore password used to access keystore and private key. server-certificate-file STRING Filesystem location where server certificate is located, supported formats are DER and PEM. trust-store-file STRING The trust store file used to verify server certificates and its chain. trust-store-type STRING pkcs12 Keystore type used to access keystore and private key, defaults to PKCS (for Java 11+). Possible values are between others jks, pkcs11, dks, jceks. trust-store-password STRING Password used to open trust store. channel-lifetime LONG 3600000 Time for which negotiated secure channel, its keys and session remains open. Value in milliseconds, by default 60 minutes. session-timeout LONG 120000 Expiry time for opened secure session, value in milliseconds. Defaults to 2 minutes. negotiation-timeout LONG 60000 Timeout for all negotiation steps prior acceptance of application level operations - this timeout applies to open secure channel, create session and close calls. Defaults to 60 seconds. request-timeout LONG 30000 Timeout for read/write/subscribe calls. Value in milliseconds. encoding.receive-buffer-size INT 65535 Maximum size of received TCP transport message chunk value in bytes. encoding.send-buffer-size INT 65535 Maximum size of sent transport message chunk. encoding.max-message-size INT 2097152 Maximum size of complete message. encoding.max-chunk-count INT 64 Maximum number of chunks for both sent and received messages. endpoint-host STRING Endpoint host used to establish secure channel connection. Used when client made connection to server which advertises different hostname than one used for network connection. endpoint-port INT Endpoint port used to establish secure channel. Used when client made connection to server which advertises different port number than one used for network connection. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. Name Value Description Supported Operations read The read interface allows for reading the full range of supported PLC4X data types in single and bulk requests write The write interface allows for writing the full range of supported PLC4X data types in single and bulk requests subscribe Subscriptions are possible with events on event- and cyclic-basis The OPC UA drivers uses the connection string opcua:{transport}://{ip-address}:{port}?{options} An example of this connection string would be:- opcua:tcp://127.0.0.1:12686?discovery=true&username=admin&password=password Note the transport, port and options fields are optional. The secure channel implementation within Apache PLC4X project have been tested against existing open source server implementations. This includes Eclipse Milo (all modes) as well as OPC Foundation .NET server (except Basic128Rsa15). Manual tests proven that driver is able to communicate with OPC UA server launched on PLCs as well as commercial simulators. Depending on actual configuration of remote end there might be necessity to prepare client certificate. Preparation of certificate is beyond driver, however in case when no client certificate is provided, it will be auto-generated to establish a session. Please follow our tutorial on provisioning of client private key and certificate. By following it you will be able to create self-signed certificate for use with both hardware and software based OPC-UA servers. Please note that there are multiple appearances of certificates within specification. There is transport level certificate which can be provided though keystore options, but there is also a X509 Certificate which can be used for authentication (currently unsupported by PLC4X). The security modes differ between themselves by strength of applied signature and encryption algorithms. Driver is able to communicate with single security mode at the time. Additionally, to security policy it is possible to specify message-security option which indicates expected security settings after initial handshake. By default, this option is set to SIGN_ENCRYPT which imposes high security settings and full encryption of exchanged message payloads. In case when additional diagnostics is needed payloads has to be traced through TRACE level log entries. The SIGN mode gives possibility o browse packets in tools such wireshark. The OPC UA specification defines its own procedures for certificate validation. In order to simplify implementation by default server certificate validation is relaxed. Unless explicitly disabled through configuration of trust-store-file all server certificates will be accepted without validation. In case when secure communication is enabled the trust-store-file option might be used to point certificates which client should accept. The acceptance rely on regular TLS checks (expiry date, certificate path etc.), does not validate OPC UA specific parts such as application URI. Depending on settings driver might or might not attempt to discover endpoints from remote server. In case when discovery option is set to true driver will look up server certificate through connection attempt. The discovery option also enables checks of server endpoints for matching security settings. Once initial discovery is completed and driver finds endpoint matching its security settings it will launch second connection attempt which will switch to configured security mode. Each connection attempt made by driver attempt to use limits described in table above. Role of these options is declaration of values accepted and expected by client. Once server returns its limits (Acknowledge for supplied Hello call) driver picks values from these. The only one note is that driver takes minimum of local receive and remote send buffer size. It does same with local send and remote receive buffer. Usual values of encoding.send-buffer-size and encoding.receive-buffer-size PLC devices remain at 8196 bytes. Due to lack of complete implementation of negotiation and chunking logic the OPC UA driver prior Apache PLC4X 0.11 release could supply calls exceeding server limits. To read, write and subscribe to data, the OPC UA driver uses the variable declaration string of the OPC UA server it is connecting to. It includes the namespace(ns) of the hierarchy tree followed by the type of identifier string(s), numeric(i), binary(b) or guid(g) and its address. The Data Type is an optional field, if it is not included a default data type is selected based on the datatype of the returned value. For Unsigned data types it needs to be included otherwise. ns={namespace-index};[s|i|g|b]={Identifier};a=attributeId;{Data Type} The a parameter which stands for attributeId of an object is optional, and by default it is assumed to be Value 13 (0x0d). Value of this parameter can be specified using numeric value or OPC-UA attribute name (case-sensitive). The following data types are supported BOOL (boolean) SINT (int 8) USINT (uint 8) BYTE (uint 8) INT (int 16) UINT (uint 16) WORD (uint 16) DINT (int 32) UDINT (uint 32) DWORD (uint 32) LINT (int 64) ULINT (uint 64) LWORD (uint 64) REAL (float) LREAL (double) CHAR (char) WCHAR (2 byte char) STRING (utf-8) WSTRING (utf-16) The following are examples of valid addresses String address: ns=2;s=HelloWorld/ScalarTypes/Boolean ns=2;s=HelloWorld/ScalarTypes/Boolean;BOOL ns=2;s=HelloWorld/ScalarTypes/Boolean;a=Value;BOOL Numeric address ns=1;i=1337 ns=1;i=1337;DINT ns=1;i=1337;a=Value;DINT GUID address: ns=2;g=09087e75-8e5e-499b-954f-f2a8624db28a ns=2;g=09087e75-8e5e-499b-954f-f2a8624db28a;REAL ns=2;g=09087e75-8e5e-499b-954f-f2a8624db28a;a=Value;REAL Event Subscription: ns=0;i=2253;a=EventNotifier;BOOL{EventId: '', EventType: '', Severity: '', Time: '', Message: ''} Note the Identifiers s,i,b and g specify the format of the address not the data type of the returned value. The a attribute is required only for event subscriptions which additionally makes use of tag config. Tag config is a list of key-value pairs which rely on simplified JSON syntax. The namespace (e.g. ns=2) within the address is specific to the server you are connecting to. Objects appearing in namespaces can, and will vary, as namespaces are used to separate scope of objects. OPC-UA servers support subscriptions which allow to reduce amount of data exchanged between client and server. There are three primary subscription modes: Data Change Notification, Status Change Notification and Event Notification. Currently, Apache PLC4X client supports Data Change Notification and Event Notification. Under the hood subscriptions still require client to request data though PublishRequest. Data change notifications are created with list of tags, after which client need to send publish requests. Upon each publish request server will send response which will include values of all tag for which subscription was created. While OPC-UA specification permits mutation of subscription contents, PLC4X API does not allow that. By default, Cyclic and Change of State subscriptions operations defined in PLC4X client API result in data change notifications. Third mode of subscription defined by PLC4X API is Event Subscription. This kind of subscription is available since PLC4X 0.13 and have slightly different syntax, which brings more complex data. OPC-UA events can be used to receive notifications of various kinds which appear when specific situation happens. In other protocols this kind of behavior can function as alarms or alerts. In order to create OPC-UA event subscription you need to: define a=EventNotifier or a=12 specify event fields to retrieve through a tag config The tag config key must match OPC-UA event field. The tag config value is not used, thus it can not be used to specify filter criteria for field value. Fields which are supported are defined in OPC UA BaseEventType: EventId EventType SourceNode SourceName Time ReceiveTime LocalTime Message Severity Example syntax: ns=0;i=2253;a=EventNotifier;BOOL{EventId: '', EventType: '', Severity: '', Time: '', Message: ''}. Subscription event generated by client upon receiving notification will contain an object (PlcSTRUCT/Map) which will contain all requested fields. Please note that Apache PLC4X does only basic normalization of data, thus your application need to take care of actual processing of event data. This driver supports tag metadata. Beyond standard metadata fields such timestamp and timestamp_source it can provide following keys: opcua_quality opcua_server_timestamp opcua_source_timestamp Appearance of these fields is conditional, they are provided only when it can be sourced from packets exchanged between client and server. This means that depending on operation conducted by client (read/write/subscribe) metadata will vary. There are multiple OPC-UA server implementations. Each of it have its own specifics, sometimes showing up more detailed security handling or further edge case buried in specification. So far Apache PLC4X OPC-UA client have been confirmed to be working with below servers (order in chronology of passed tests/confirmed compatibility): version 0.13 node-opcua Mitsubishi Electric MX OPC Server UA version 0.12 Prosys OPC-UA Simulation Server Simatic OPC UA S7-1200 Basic OPC Foundation UA-.NET Standard Simocode OPC UA server versions prior 0.12 Eclipse Milo OPC UA The OPC Unified Architecture (UA), released in 2008, is a platform independent service-oriented architecture that integrates all the functionality of the individual OPC Classic specifications into one extensible framework. This multi-layered approach accomplishes the original design specification goals of: Functional equivalence: all COM OPC Classic specifications are mapped to UA Platform independence: from an embedded micro-controller to cloud-based infrastructure Secure: encryption, authentication, and auditing Extensible: ability to add new features without affecting existing applications Comprehensive information modeling: for defining complex information","title":"OPC UA","component":"plc4x","version":"pre-release","name":"opcua","url":"/plc4x/pre-release/users/protocols/opcua.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2},{"text":"Connection String","hash":"_connection_string","id":3},{"text":"Secure communication","hash":"_secure_communication","id":4},{"text":"Certificate verification","hash":"_certificate_verification","id":5},{"text":"Negotiation procedure","hash":"_negotiation_procedure","id":6},{"text":"Address Format","hash":"_address_format","id":7},{"text":"Data Types","hash":"_data_types","id":8},{"text":"Example of a valid OPC UA address:","hash":"_example_of_a_valid_opc_ua_address","id":9},{"text":"Some useful tips","hash":"_some_useful_tips","id":10},{"text":"OPC UA Data Change Notification","hash":"_opc_ua_data_change_notification","id":11},{"text":"OPC UA Event Notification","hash":"_opc_ua_event_notification","id":12},{"text":"Tag metadata","hash":"_tag_metadata","id":13},{"text":"Compatibility with OPC-UA Servers","hash":"_compatibility_with_opc_ua_servers","id":14},{"text":"More details on OPC UA","hash":"_more_details_on_opc_ua","id":15}]},"79":{"id":79,"text":"Name Type Default Value Required Description Name Open-Protocol Code open-protocol Maven Dependency org.apache.plc4x plc4j-driver-open-protocol pre-release Default Transport tcp Supported Transports tcp Config options: Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected.","title":"Open-Protocol (Torque-Tools)","component":"plc4x","version":"pre-release","name":"open-protocol","url":"/plc4x/pre-release/users/protocols/open-protocol.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2}]},"80":{"id":80,"text":"Name Type Default Value Required Description Name PLC4X (Proxy-Protocol) Code plc4x Maven Dependency org.apache.plc4x plc4j-driver-plc4x pre-release Default Transport tcp Supported Transports tcp Config options: remote-connection-string STRING URL-Encoded connection string to use on the proxy side to reach the given PLC. request-timeout INT 5000 Default timeout for all types of requests. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. Name Value Description Supported Operations: read write subscribe The plc4x protocol connection has the following connection string format:- plc4x:{transport}://{ip-address/hostname}:{port}?remote-connection-string={url-encoded-connection-string} An example connection string would look like:- plc4x://127.0.0.1?remote-connection-string=simulated%3A%2F%2Flocalhost Note the transport, port and option fields are optional. The remote connection string: simulated://localhost is encoded as simulated%3A%2F%2Flocalhost The address format is simply the address format of the used remote connection. So if you specify a remote connection as simulated, please follow the address format of that driver.","title":"PLC4X (Proxy) (TCP)","component":"plc4x","version":"pre-release","name":"plc4x","url":"/plc4x/pre-release/users/protocols/plc4x.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2},{"text":"Connection String Options","hash":"_connection_string_options_2","id":3},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":4},{"text":"Connection String","hash":"_connection_string","id":5},{"text":"General Format","hash":"_general_format","id":6}]},"81":{"id":81,"text":"The PROFINET driver implements a class 3 real time controller. Which is able to communicate with multiple devices on the same network segment. On linux as the Java executable won’t have permission to capture raw packets, this needs to be enabled via:- sudo setcap cap_net_raw,cap_net_admin=eip /usr/lib/jvm/jdk-19/bin/java The executable will change based on the jdk and OS you are using. Name Type Default Value Required Description Name Profinet Code profinet Maven Dependency org.apache.plc4x plc4j-driver-profinet-ng pre-release Default Transport raw Supported Transports raw Config options: gsd-directory STRING ~/.gsd required dap-id STRING ip-address STRING Transport config options: raw.resolve-mac-address BOOLEAN If set to true, the transport will automatically resolve the MAC address for a given IP address (Allows connecting to a raw-socket device using the devices host-name or ip-address). raw.support-vlans BOOLEAN false Should VLan packets be automatically unpacked? raw.protocol-id INT -1 When provided, filters all packets to let only packets matching this ethernet protocol-id pass. Name Value Description Supported Operations subscribe Only the subscription service is currently supported. The Profinet driver uses the connection string profinet:raw://{ip-address}:{port}?{options} Where the {ip-address}, unlike other PLC4X driver, uses the local IP address of the network interface you would like to bind to. This allows us to connect to multiple devices at once via the devices parameter. An example of this connection string which has two devices test-device-1 and test-device-2, connected on the localhost interface would be:- profinet:raw://127.0.0.1?gsddirectory=/Profinet/GSD&devices=[[test-device-1,MOD_1,(SUBMOD_1,,SUBMOD_1,)],[test-device-2,MOD_1,(SUBMOD_1,,SUBMOD_1,)]] Note the transport, port fields shouldn’t have to be changed The format of address will be in the format. device.slot.id.module_name.channel.bit:format An example would be device-1.1.1.DIGITAL_INPUT.0.1:BOOL Note:- The following data types are supported BOOL (boolean) SINT (int 8) USINT (uint 8) BYTE (uint 8) INT (int 16) UINT (uint 16) WORD (uint 16) DINT (int 32) UDINT (uint 32) DWORD (uint 32) LINT (int 64) ULINT (uint 64) LWORD (uint 64) REAL (float) LREAL (double) CHAR (char) WCHAR (2 byte char) STRING (utf-8) WSTRING (utf-16) Although the GSD file contains all the information needed to configure which data will be available from a device. The easiest approach is to use the browsing function of the Profinet driver to return a list of all available tags. Then only the addresses of interest can be selected.","title":"Profinet (In Development)","component":"plc4x","version":"pre-release","name":"profinet","url":"/plc4x/pre-release/users/protocols/profinet.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"raw","id":2},{"text":"Connection String","hash":"_connection_string","id":3},{"text":"Address Format","hash":"_address_format","id":4},{"text":"Data Types","hash":"_data_types","id":5},{"text":"Some useful tips","hash":"_some_useful_tips","id":6}]},"82":{"id":82,"text":"When trying to connect to a Siemens LOGO device, it is important to add one connection option, as Siemens seems to have only partially implemented the protocol, the device simply terminates the connection as soon as our driver tried to read the SZL table in order to find out which type of S7 device it is talking to. This can be disabled by passing in the type of PLC. For a Siemens LOGO device therefore please add ?controller-type=LOGO to the connection string. The S7-Light driver is a stripped-down version of the full S7 driver. It’s main goal is to simplify communication for S7 devices, that do not support subscriptions, as under heavy load, these have proven to cause issues. As soon as we have rewritten the PLC4X SPI, we will most probably merge both back together again. In PLC4X the URL philosophy is used as the data source for the connection for the specification of the driver and its connection parameters, this is almost a standard in network applications (pointing to the best practices). It is also possible to create an instance of the driver directly and assign its parameters with the typical \"set\" methods. In the following, reference will be made to the Java-based driver, which implements all the functionalities indicated in this manual. The specified URL has the structure SCHEMA: Defines the protocol to be used, in our particular case S7 DOMAINE NAME: Physical address of the PLC or CP’s. PARAMETERS: List of key/value values separated by ampersand \"&\". They define the behavior of the driver. The SCHEMA and DOMAINE NAME are almost standard for any URL and do not require further explanation. The PARAMETERS that define the behavior of the driver are defined in the following table. Name Type Default Value Required Description Name Siemens S7 (Basic) (light) Code s7-light Maven Dependency org.apache.plc4x plc4j-driver-s7 pre-release Default Transport tcp Supported Transports tcp Config options: local-rack INT 1 Rack value for the client (PLC4X device). local-slot INT 1 Slot value for the client (PLC4X device). local-device-group STRING OTHERS Local Device Group. (Defaults to 'OTHERS'). Allowed values: - PG_OR_PC - OS - OTHERS Since: 0.13.0 local-tsap INT 0 Local Transport Service Access Point. (Overrides settings made in local-rack, local-slot and local-device-group. Be sure to convert into integer representation) remote-rack INT 0 Rack value for the remote main CPU (PLC). remote-slot INT 0 Slot value for the remote main CPU (PLC). remote-device-group STRING PG_OR_PC Remote Device Group (Defaults to 'PG_OR_PC'). Allowed values: - PG_OR_PC - OS - OTHERS remote-tsap INT 0 Remote Transport Service Access Point. (Overrides settings made in remote-rack, remote-slot and remote-device-group. Be sure to convert into integer representation) pdu-size INT 1024 Maximum size of a data-packet sent to and received from the remote PLC. During the connection process both parties will negotiate a maximum size both parties can work with and is equal or smaller than the given value is used. The driver will automatically split up large requests to not exceed this value in a request or expected response. max-amq-caller INT 8 Maximum number of unconfirmed requests the PLC will accept in parallel before discarding with errors. This parameter also will be negotiated during the connection process and the maximum both parties can work with and is equal or smaller than the given value is used. The driver will automatically take care not exceeding this value while processing requests. Too many requests can cause a growing queue. max-amq-callee INT 8 Maximum number of unconfirmed responses or requests PLC4X will accept in parallel before discarding with errors. This option is available for completeness and is correctly handled out during the connection process, however it is currently not enforced on PLC4X’s side. So if a PLC would send more messages than agreed upon, these would still be processed. controller-type STRING As part of the connection process, usually the PLC4X S7 driver would try to identify the remote device. However some devices seem to have problems with this and hang up or cause other problems. In such a case, providing the controller-type will skip the identification process and hereby avoid this type of problem. Possible values are:/n- S7_300 - S7_400 - S7_1200 - S7-1500 - LOGO read-timeout INT 1000 This is the maximum waiting time for reading on the TCP channel. As there is no traffic, it must be assumed that the connection with the interlocutor was lost and it must be restarted. When the channel is closed, the \"fail over\" is carried out in case of having the secondary channel, or it is expected that it will be restored automatically, which is done every 4 seconds. enable-block-read-optimizer BOOLEAN true Enable the new experimental block-read optimizer, that groups tags in close memory proximity together and reads blocks of data instead of individual tags. This allows more data to be transferred in one request and is generally intended for cases in which a big number of tags are read. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. Name Value Description Supported Operations read Only supported with tcp transport. write Only supported with tcp transport. After defining the URL, the connection is made. Driver selection from the URL is done via PLC4X’s SPI support, so driver instantiation and mapping originating from the URL is done transparently by the Java SPI services. Any inconsistency in the URL definition will generate an exception that must be handled by the user program. . . . try { PlcConnection connection new DefaultPlcDriverManager().getConnection(\"s7://10.10.1.33?remote-rack=0&remote-slot=3&controller-type=S7_400\"); //(2.1) final PlcReadRequest.Builder subscription connection.readRequestBuilder(); //(2.2) . . . } In (2.1) the driver instance is created, you only have to ensure that the required driver is in the CLASSPATH of your Java environment. Already in (2.2) it defines the type of service required (read/write or a subscription), here a read request is indicated. No problems? Then we are ready to configure and request the data that we require from the PLC. Let’s go to step \"three\". By having the connection we can start building and executing our requests. . . . readrequest.addTagAddress(\"MySZL\", \"SZL_ID=16#0091;INDEX=16#0000\"); //(3.1) final PlcReadRequest rr readrequest.build(); //(3.2) final PlcReadResponse szlresponse rr.execute().get(); //(3.3) if (szlresponse.getResponseCode(\"MySZL\") = PlcResponseCode.OK) {//(3.4) } . . . In (3.1) the request for a PLCTag is constructed, in this particular case a list of controller system status. In step (3.2) we build the request and in (3.3) we execute the request using the futures pattern in Java. We verify in (3.4) that everything is fine and that our data was acquired. These steps are shown separately for ease of analysis, but can be simplified into one statement to avoid excessive code. A detailed explanation of the format for addressing PLCTags in the S7 driver will be given in the following sections. When programming Siemens PLCs, usually the tool used to do that is called TIA Portal. The PLC4X S7 Driver is therefore sticking to the address format defined by this tool as it simplifies exchanging address information. In general all S7 addresses have this format: . %{Memory-Area}{start-address}:{Data-Type}[{array-size}] If the array-part is omitted, the size-default of 1 is assumed. Generally there are two types of addresses: . Bit-Addresses {Memory-Area-Code}{Start-Byte-Address}.{Bit-Offset}:BOOL[{Count}] . Byte-Addresses {Memory-Area-Code}{Start-Byte-Address}:{Data-Type-Code}[{count}] Bit addresses are only used if the datatype: BOOL is used. The array notation of these can be omitted. In this case a Count of 1 is used per default. Start-Byte-Address and Bit-Offset in above list both represent unsigned integer values. In case of accessing data in the data block memory area, the syntax is quite a bit more complex: . DB{Data-Block-Number}.DB{Short-Data-Type-Code}{Start-Byte-Address}.{Bit-Offset}:BOOL[{Count}] . DB{Data-Block-Number}.DB{Short-Data-Type-Code}{Start-Byte-Address}:{Data-Type-Code}[{Count}] When reading a STRING datatype, currently 254 characters would automatically be fetched from the PLC. In order to limit the amount of data, we extended the STRING type declaration syntax to allow limiting this. With the following format less than 254 characters can be read: . DB{Data-Block-Number}.DB{Short-Data-Type-Code}{Start-Byte-Address}:STRING({string-length})[{Count}] These addresses can usually be copied directly out of TIA portal. However we also implemented a shorter version, as above version does have some unnecesary boilerplate parts (The .DB in the middle as well as the Short-Data-Type-Code) The shorter syntax looks like this: . DB{Data-Block-Number}:{Start-Byte-Address}.{Bit-Offset}:BOOL[{Count}] . DB{Data-Block-Number}:{Start-Byte-Address}:{Data-Type-Code}[{Count}] . DB{Data-Block-Number}:{Start-Byte-Address}:STRING({string-length})[{Count}] The S7 driver will handle both types of notation equally. The S7 driver currently allows access to the following memory areas. The Code column represents the code that is used in above general address syntax: Not all S7 device types support the same full set of memory areas, so the last column gives more information on which types a given memory area is supported on. Code Name Description Supported PLC Types C COUNTERS TODO: Document this TODO: Document this T TIMERS TODO: Document this TODO: Document this D DIRECT_PERIPHERAL_ACCESS TODO: Document this TODO: Document this I INPUTS Inputs (Digital and Analog … usually Analog Inputs just have a start-address offset to separate them from the digital ones) All Q OUTPUTS Outputs (Digital and Analog … usually Analog Outputs just have a start-address offset to separate them from the digital ones) All M FLAGS_MARKERS TODO: Document this TODO: Document this DB DATA_BLOCKS Memory areas containing user-defined data structures usually accessed by the integer data block number. antease note that data block addresses have a little more complex address format. All DBI INSTANCE_DATA_BLOCKS TODO: Document this TODO: Document this LD LOCAL_DATA TODO: Document this TODO: Document this Code Short-Code Name Description Size in bits Supported PLC Types Bit-Strings (Will all interpreted as sequence of boolean values in PLC4X) BOOL X Bit Single boolean value 1 All BYTE B Byte Array of 8 boolean values 1 All WORD W Word Array of 16 boolean values 2 All DWORD D Double-Word Array of 32 boolean values 4 All LWORD X Long-Word Array of 64 boolean values 8 S7_1500 Integer values SINT B Small int 8 bit integer (signed) 1 S7_1200, S7_1500 USINT B Small unsigned int 8 bit integer (unsigned) 1 S7_1200, S7_1500 INT W Integer 16 bit integer (signed) 2 All UINT W Unsigned integer 16 bit integer (unsigned) 2 S7_1200, S7_1500 DINT D Double integer 32 bit integer (signed) 4 All UDINT D Unsigned Double Integer 32 bit integer (unsigned) 4 S7_1200, S7_1500 LINT X Long integer 64 bit integer (signed) 8 S7_1500 ULINT X Unsigned long integer 64 bit integer (unsigned) 8 S7_1500 Floating point values REAL D Real 32 bit IEEE 754 full precision floating point value (signed) 4 All LREAL X Long Real 64 bit IEEE 754 double precision floating point value (signed) 8 S7_1200, S7_1500 Character values CHAR B Character 8 bit character 1 All WCHAR X Double byte character 16 bit character value 2 S7_1200, S7_1500 STRING X String String 2 + n bytes 1 All WSTRING X Double byte String String of 16 bit characters 2 + n bytes 1 S7_1200, S7_1500 Temporal values S5TIME X S5 Time S5 Time (like in duration) 2 S7_300, S7_400, S7_1500 TIME X Time Time (like in duration) (Minutes, Seconds, Milliseconds) 4 All LTIME X Long Time Long Time (like in duration) (Minutes, Seconds, Milliseconds, Microseconds, Nanoseconds) 8 S7_1500 DATE X Date Date 2 All TIME_OF_DAY X Time of day Time (like in 4:40PM) 4 All DATE_AND_TIME X Date and Time Date and time (like in 03.05.2020 4:40 PM) 8 S7_300, S7_400, S7_1500 Especially when it comes to the input- and output addresses for analog channels, the start addresses are configurable and hereby don’t always start at the same address. In order to find out what addresses these ports have, please go to the device setting of your PLC in TIA Portal Especially pay attention to this part: In above image you can see that this device has 8 digital inputs (DI 8) and 2 analog inputs (AI 2_1) as well as 6 digital outputs (DQ 6). The start addresses of the digital inputs and outputs start directly at 0. The analog inputs however start at address 64. Each digital input and output can be addresses by a single bit-address (start-address and offset) or can be read in a block by reading a full byte starting at the given start address without providing a bit offset. https://snap7.sourceforge.net/ https://support.industry.siemens.com/cs/document/13649203/simatic-net-pc-software-s7-programming-interface?dti=0&dl=en&lc=es-ES https://support.industry.siemens.com/cs/document/109797648/simatic-comparison-list-for-s7-300-s7-400-s7-1200-s7-1500?dti=0&lc=en-WW https://support.industry.siemens.com/cs/mdm/109746537?c=98956468747&lc=es-DO https://support.industry.siemens.com/cs/document/15166942/writing-user-specific-information-to-the-diagnostic-buffer-of-a-cpu-(sfc-52)?dti=0&lc=en-ES https://support.industry.siemens.com/cs/document/24013249/how-do-you-display-alarm_s-or-alarm_d-messages-with-process-values-(so-called-associated-values)-on-a-wincc-flexible-operator-panel-?dti=0&lc=en-WW https://support.industry.siemens.com/cs/document/109481157/comunicaci%C3%B3n-entre-paneles-de-operador-simatic-hmi-y-convertidores-de-frecuencia-sinamics-g120-para-el-manejo-y-la-visualizaci%C3%B3n-de-avisos-de-fallo-y-de-advertencia-(enlace-directo-sin-controlador)?dti=0&lc=es-WW https://support.industry.siemens.com/cs/document/97550333/sinamics-g-s-hmi-direct-access?dti=0&lc=en-WW https://support.industry.siemens.com/cs/document/21402122/technology-cpus-technology-template-error-messages-?dti=0&lc=en-WW https://support.industry.siemens.com/cs/document/77467239/transforming-warning-and-error-messages-of-a-sinamics-drive-with-the-aid-of-the-xml-parser-and-integrating-them-into-a-step-7-hmi-project?dti=0&lc=en-WW https://support.industry.siemens.com/cs/document/24037531/%C2%BFqu%C3%A9-pasos-de-configuraci%C3%B3n-hay-que-realizar-en-el-simotion-scout-y-el-wincc-flexible-para-que-se-muestren-los-avisos-alarm_s-y-las-alarmas-tecnol%C3%B3gicas-dentro-del-wincc-flexible-runtime-?dti=0&lc=es-ES","title":"S7-Light (Step7)","component":"plc4x","version":"pre-release","name":"s7-light","url":"/plc4x/pre-release/users/protocols/s7-light.html","titles":[{"text":"Connecting as easy as 1-2-3.","hash":"_connecting_as_easy_as_1_2_3","id":1},{"text":"ONE","hash":"_one","id":2},{"text":"Connection String Options","hash":"_connection_string_options","id":3},{"text":"tcp","id":4},{"text":"TWO","hash":"_two","id":5},{"text":"THREE","hash":"_three","id":6},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":7},{"text":"General Format","hash":"_general_format","id":8},{"text":"Memory Areas","hash":"_memory_areas","id":9},{"text":"Data Types","hash":"_data_types","id":10},{"text":"Some useful tips","hash":"_some_useful_tips","id":11},{"text":"Resources","hash":"_resources","id":12}]},"83":{"id":83,"text":"This version of the S7 driver is aimed at exploiting the advanced features of the S7-300 and S7-400 controllers, as well as basic reading and writing functions for the S7-1200 and S7-1500 devices (PUT/GET functions). We hope in a short period of time to have the S7-Plus version, which should exploit the asynchronous functions of the S7-1500. Most of the closed source solutions are based on request/response patterns, generally with a high level of optimization. Even the best open source implementations, such as “Snap7” [1], base their usage on this same pattern. Is there another way to do things?, yes!, but this should be enough for 95% of automation applications, if your system works and you are happy with it, apply the maxim of automation, “Is it working?, no touch it, production first!” If the solution you need to develop must strictly revolve around the Siemens platform, you will probably opt for a solution based on SOFTNET OPC-DA or OPC-UA which is the recommendation given by Siemens, if you want to go to a lower level, you should use the libraries SAPI-S7 [2] (generally supplied with SOFTNET), which is the lowest access layer to access the internal Siemens communications architecture, which gives access to any CP and/or any protocol (S7-TCP, MPI, DP, etc.) that is being used. The configuration of the communication links is carried out from the STEP7 environment (TIA or Simatic Manager) in a static way, so creating communication links falls within a development cycle configure/compile/transfer to each of the interlocutors. Now, what options are there for those applications that want to make use of the asynchronous nature of S7 PLCs, including alarms, events, or time-stamped data? Outside of the Siemens ecosystem, very few. In general they are tied to a specific platform, for example PCS7 (Siemens DCS), Braumat (Platform for brewing processes) or WinCC (SCADA system). This is where the open source nature of the S7 driver developed by the PLC4X team becomes a differentiating factor. The driver data structures are clearly defined in \"mspec\", the cornerstone for the development of our drivers in different languages and platforms, as well as a well-defined API, allow a lingua franca for managing the driver development cycle. Our added value is having the advanced functionalities of the Simatic S7-300/S7-400 such as: Device status management (RUN/STOP). System events (Alarms/User messages). Cyclic Subscription (CYC). SZL(SSL) diagnostics. These functionalities normally available on the Siemens platform (STEP7/TIA/WinCC) are now available for use in open IoT-type applications, which guarantees the correct handling of the \"quality\" of the data, as well as its time stamp. Although this driver is developed using Siemens Hardware, it should be functional with VIPA brand equipment, which is a version (clone) of the S7-300, with more memory and functionalities. If you have one of these devices and you are in your best disposition to carry out communication tests, we would be very grateful if you collaborate with the results in the development list and placing the model and firmware version that you have used. When trying to connect to a Siemens LOGO device, it is important to add one connection option, as Siemens seems to have only partially implemented the protocol, the device simply terminates the connection as soon as our driver tried to read the SZL table in order to find out which type of S7 device it is talking to. This can be disabled by passing in the type of PLC. For a Siemens LOGO device therefore please add ?controller-type=LOGO to the connection string. It is typical within the decision-making cycle in an automation project to know who and how much the support of the tools that will be used in the control architecture will cost. PLC4X support is on our development list (dev@plc4x.apache.org) where we will gladly answer your questions about the S7 driver. If your company requires commercial support, companies that directly or indirectly support the drivers and tools developed in PLC4X are published on our page. Rev Release Date Description of the change 0 0.10.0 2022/10/04 Stable release. In PLC4X the URL philosophy is used as the data source for the connection for the specification of the driver and its connection parameters, this is almost a standard in network applications (pointing to the best practices). It is also possible to create an instance of the driver directly and assign its parameters with the typical \"set\" methods. In the following, reference will be made to the Java-based driver, which implements all the functionalities indicated in this manual. The specified URL has the structure SCHEMA: Defines the protocol to be used, in our particular case S7 DOMAINE NAME: Physical address of the PLC or CP’s. PARAMETERS: List of key/value values separated by ampersand \"&\". They define the behavior of the driver. The SCHEMA and DOMAINE NAME are almost standard for any URL and do not require further explanation. The PARAMETERS that define the behavior of the driver are defined in the following table. Name Type Default Value Required Description Name Siemens S7 (Basic) Code s7 Maven Dependency org.apache.plc4x plc4j-driver-s7 pre-release Default Transport tcp Supported Transports tcp Config options: local-rack INT 1 Rack value for the client (PLC4X device). local-slot INT 1 Slot value for the client (PLC4X device). local-device-group STRING OTHERS Local Device Group. (Defaults to 'OTHERS'). Allowed values: - PG_OR_PC - OS - OTHERS Since: 0.13.0 local-tsap INT 0 Local Transport Service Access Point. (Overrides settings made in local-rack, local-slot and local-device-group. Be sure to convert into integer representation) remote-rack INT 0 Rack value for the remote main CPU (PLC). remote-slot INT 0 Slot value for the remote main CPU (PLC). remote-device-group STRING PG_OR_PC Remote Device Group (Defaults to 'PG_OR_PC'). Allowed values: - PG_OR_PC - OS - OTHERS Since: 0.13.0 remote-tsap INT 0 Remote Transport Service Access Point. (Overrides settings made in remote-rack, remote-slot and remote-device-group. Be sure to convert into integer representation) remote-rack2 INT 0 Rack value for the remote secondary CPU (PLC). remote-slot2 INT 0 Slot value for the remote secondary CPU (PLC). remote-device-group2 STRING PG_OR_PC Remote Device Group. (Defaults to 'PG_OR_PC'). Allowed values: - PG_OR_PC - OS - OTHERS Since: 0.13.0 pdu-size INT 1024 Maximum size of a data-packet sent to and received from the remote PLC. During the connection process both parties will negotiate a maximum size both parties can work with and is equal or smaller than the given value is used. The driver will automatically split up large requests to not exceed this value in a request or expected response. max-amq-caller INT 8 Maximum number of unconfirmed requests the PLC will accept in parallel before discarding with errors. This parameter also will be negotiated during the connection process and the maximum both parties can work with and is equal or smaller than the given value is used. The driver will automatically take care not exceeding this value while processing requests. Too many requests can cause a growing queue. max-amq-callee INT 8 Maximum number of unconfirmed responses or requests PLC4X will accept in parallel before discarding with errors. This option is available for completeness and is correctly handled out during the connection process, however it is currently not enforced on PLC4X’s side. So if a PLC would send more messages than agreed upon, these would still be processed. controller-type STRING As part of the connection process, usually the PLC4X S7 driver would try to identify the remote device. However some devices seem to have problems with this and hang up or cause other problems. In such a case, providing the controller-type will skip the identification process and hereby avoid this type of problem. Possible values are:/n- S7_300 - S7_400 - S7_1200 - S7-1500 - LOGO read-timeout INT 0 This is the maximum waiting time for reading on the TCP channel. As there is no traffic, it must be assumed that the connection with the interlocutor was lost and it must be restarted. When the channel is closed, the \"fail over\" is carried out in case of having the secondary channel, or it is expected that it will be restored automatically, which is done every 4 seconds. ping BOOLEAN false If your application requires sampling times greater than the set \"read-timeout\" time, it is important that the PING option is activated, this will prevent the TCP channel from being closed unnecessarily. ping-time INT 0 Time value in seconds at which the execution of the PING will be scheduled. Generally set by developer experience, but generally should be the same as (read-timeout / 2). retry-time INT 0 Time for supervision of TCP channels. If the channel is not active, a safe stop of the EventLoop must be performed, to ensure that no additional tasks are created. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. Name Value Description Supported Operations read Only supported with tcp transport. write Only supported with tcp transport. After defining the URL, the connection is made. Driver selection from the URL is done via PLC4X’s SPI support, so driver instantiation and mapping originating from the URL is done transparently by the Java SPI services. Any inconsistency in the URL definition will generate an exception that must be handled by the user program. . . . try { PlcConnection connection new DefaultPlcDriverManager().getConnection(\"s7://10.10.1.33?remote-rack=0&remote-slot=3&controller-type=S7_400\"); //(2.1) final PlcReadRequest.Builder subscription connection.readRequestBuilder(); //(2.2) . . . } In (2.1) the driver instance is created, you only have to ensure that the required driver is in the CLASSPATH of your Java environment. Already in (2.2) it defines the type of service required (read/write or a subscription), here a read request is indicated. No problems? Then we are ready to configure and request the data that we require from the PLC. Let’s go to step \"three\". By having the connection we can start building and executing our requests. . . . readrequest.addTagAddress(\"MySZL\", \"SZL_ID=16#0091;INDEX=16#0000\"); //(3.1) final PlcReadRequest rr readrequest.build(); //(3.2) final PlcReadResponse szlresponse rr.execute().get(); //(3.3) if (szlresponse.getResponseCode(\"MySZL\") = PlcResponseCode.OK) {//(3.4) } . . . In (3.1) the request for a PLCTag is constructed, in this particular case a list of controller system status. In step (3.2) we build the request and in (3.3) we execute the request using the futures pattern in Java. We verify in (3.4) that everything is fine and that our data was acquired. These steps are shown separately for ease of analysis, but can be simplified into one statement to avoid excessive code. A detailed explanation of the format for addressing PLCTags in the S7 driver will be given in the following sections. When programming Siemens PLCs, usually the tool used to do that is called TIA Portal. The PLC4X S7 Driver is therefore sticking to the address format defined by this tool as it simplifies exchanging address information. In general all S7 addresses have this format: . %{Memory-Area}{start-address}:{Data-Type}[{array-size}] If the array-part is omitted, the size-default of 1 is assumed. Generally there are two types of addresses: . Bit-Addresses {Memory-Area-Code}{Start-Byte-Address}.{Bit-Offset}:BOOL[{Count}] . Byte-Addresses {Memory-Area-Code}{Start-Byte-Address}:{Data-Type-Code}[{count}] Bit addresses are only used if the datatype: BOOL is used. The array notation of these can be omitted. In this case a Count of 1 is used per default. Start-Byte-Address and Bit-Offset in above list both represent unsigned integer values. In case of accessing data in the data block memory area, the syntax is quite a bit more complex: . DB{Data-Block-Number}.DB{Short-Data-Type-Code}{Start-Byte-Address}.{Bit-Offset}:BOOL[{Count}] . DB{Data-Block-Number}.DB{Short-Data-Type-Code}{Start-Byte-Address}:{Data-Type-Code}[{Count}] When reading a STRING datatype, currently 254 characters would automatically be fetched from the PLC. In order to limit the amount of data, we extended the STRING type declaration syntax to allow limiting this. With the following format less than 254 characters can be read: . DB{Data-Block-Number}.DB{Short-Data-Type-Code}{Start-Byte-Address}:STRING({string-length})[{Count}] These addresses can usually be copied directly out of TIA portal. However we also implemented a shorter version, as above version does have some unnecesary boilerplate parts (The .DB in the middle as well as the Short-Data-Type-Code) The shorter syntax looks like this: . DB{Data-Block-Number}:{Start-Byte-Address}.{Bit-Offset}:BOOL[{Count}] . DB{Data-Block-Number}:{Start-Byte-Address}:{Data-Type-Code}[{Count}] . DB{Data-Block-Number}:{Start-Byte-Address}:STRING({string-length})[{Count}] The S7 driver will handle both types of notation equally. The S7 driver currently allows access to the following memory areas. The Code column represents the code that is used in above general address syntax: Not all S7 device types support the same full set of memory areas, so the last column gives more information on which types a given memory area is supported on. Code Name Description Supported PLC Types C COUNTERS TODO: Document this TODO: Document this T TIMERS TODO: Document this TODO: Document this D DIRECT_PERIPHERAL_ACCESS TODO: Document this TODO: Document this I INPUTS Inputs (Digital and Analog … usually Analog Inputs just have a start-address offset to separate them from the digital ones) All Q OUTPUTS Outputs (Digital and Analog … usually Analog Outputs just have a start-address offset to separate them from the digital ones) All M FLAGS_MARKERS TODO: Document this TODO: Document this DB DATA_BLOCKS Memory areas containing user-defined data structures usually accessed by the integer data block number. antease note that data block addresses have a little more complex address format. All DBI INSTANCE_DATA_BLOCKS TODO: Document this TODO: Document this LD LOCAL_DATA TODO: Document this TODO: Document this Code Short-Code Name Description Size in bits Supported PLC Types Bit-Strings (Will all interpreted as sequence of boolean values in PLC4X) BOOL X Bit Single boolean value 1 All BYTE B Byte Array of 8 boolean values 1 All WORD W Word Array of 16 boolean values 2 All DWORD D Double-Word Array of 32 boolean values 4 All LWORD X Long-Word Array of 64 boolean values 8 S7_1500 Integer values SINT B Small int 8 bit integer (signed) 1 S7_1200, S7_1500 USINT B Small unsigned int 8 bit integer (unsigned) 1 S7_1200, S7_1500 INT W Integer 16 bit integer (signed) 2 All UINT W Unsigned integer 16 bit integer (unsigned) 2 S7_1200, S7_1500 DINT D Double integer 32 bit integer (signed) 4 All UDINT D Unsigned Double Integer 32 bit integer (unsigned) 4 S7_1200, S7_1500 LINT X Long integer 64 bit integer (signed) 8 S7_1500 ULINT X Unsigned long integer 64 bit integer (unsigned) 8 S7_1500 Floating point values REAL D Real 32 bit IEEE 754 full precision floating point value (signed) 4 All LREAL X Long Real 64 bit IEEE 754 double precision floating point value (signed) 8 S7_1200, S7_1500 Character values CHAR B Character 8 bit character 1 All WCHAR X Double byte character 16 bit character value 2 S7_1200, S7_1500 STRING X String String 2 + n bytes 1 All WSTRING X Double byte String String of 16 bit characters 2 + n bytes 1 S7_1200, S7_1500 Temporal values S5TIME X S5 Time S5 Time (like in duration) 2 S7_300, S7_400, S7_1500 TIME X Time Time (like in duration) (Minutes, Seconds, Milliseconds) 4 All LTIME X Long Time Long Time (like in duration) (Minutes, Seconds, Milliseconds, Microseconds, Nanoseconds) 8 S7_1500 DATE X Date Date 2 All TIME_OF_DAY X Time of day Time (like in 4:40PM) 4 All DATE_AND_TIME X Date and Time Date and time (like in 03.05.2020 4:40 PM) 8 S7_300, S7_400, S7_1500 PLC programming in general is a Pandora’s box! Here we will assume that you use standard technological functions/libraries within your development cycle, therefore, at this point it is important to point out the actors that participate in this dialogue between the driver and the PLC and how they affect the communication cycle. The different actors involved in communication are shown in image 1. PLC (AS), the controller. AS is the reference used in PCS7. App, your application. PLC4X, implementation of the S7 driver. OS, PLC operating system. PCS7, represents the technological functions used in the PLC. PCS7 are Siemens DCS libraries. S7App, your application that runs on the PLC. CP, the communications CP will depend on your architecture and requirements, for an S7-300 it will be a CP 343-1 or a CP 443-1 for an S7-400. The S7 driver allows the subscription to asynchronous events generated in the PLC. This type of event is generated by S7-300, S7-400, G120C-PN, S120-PN controllers and VIPA devices. Unfortunately for the S7-1200 and S7-1500 series this functionality has been superseded. For a complete list of compatibility between the S7-300,400 and S7-1200 & S7-1500, you can see the document in [1] provided by Siemens. These services have the following advantages: Report the status of the CPUs and other components within the control architecture that support it (CP, IM, DI, etc). Transfer of values when a change occurs. Associate values to the events sent. A better handling of the TimeStamp of the associated values. The messages are classified into two groups depending on how they are generated: SCAN: All those events generated by the system or preset in Step7 (TIA Portal). The change of state of the configured signals is carried out by the operating system at specific intervals (500 ms, 100ms or 16 ms). ALARM: These are events generated by the user application using the alarm blocks (ALARM_S, ALARM_SQ, NOTIFY, ALARM, ALARM_8). In addition to user applications, these events can be generated from technological functions such as PCS7 or Braumat. The data associated with the events is represented in a HashMap in order to facilitate its transfer to other applications based on a standard such as JMS, MQTT or other messaging technology. The handling of the TimeStamp of the SCAN type events is generated in the computer. In ALARM type messages the TimeStamps are generated in the PLC. It is extremely important that the date and time synchronization is done between both computers and PLC. The values associated with the events can have different types of representation, so their interpretation must be agreed upon during the programming of the application in the PLC and your application. For each type of event, the particular fields of type will be arranged within the Map. These will be documented for each type of event. To maximize the use of the data fields associated with the events, the use of the intra-area pointer system and the ANY type pointer is recommended in the PLC, As well as the recommendations for the management of the time stamp [2]. At the user application level App, you can use the PLC4X API to subscribe SCAN or ALARM type events by selecting any of the following fields according to the requirement: MODE: Change of operating state in the controller, change from STOP to RUN and vice versa. SYS: System events, associated with internal events of the controller or events previously parameterized for their indication. USR: Events programmed by the user and that are registered in the internal diagnostic buffer. ALM: Alarm events generated by the user program, ALARM_S, ALARM_8, NOTIFY. In the following sections we will describe in more detail the functionalities of each field. By subscribing to controller status changes or MODE events, the PLC status changes can be tracked. Depending on the CPU model, these state changes are followed in the user application (PLC program), OB100 and OB101, allowing these applications to be brought to a safe state. Now, how do these state changes affect external applications, for example HMI or custom user applications? In the use of a unified Siemens architecture, the operator panels (HMI) and WinCC (Scada) detect the status of the CPU and pass the quality of the points in the database in real time to poor quality. In the case of an application developed with PLC4X, the use of MODE events will allow your application to indicate to users the quality of the points used, and that by design the quality is not updated in the controller. From image 2, we can describe the sequence of actions that can be followed for subscription. In the first place, the subscription process occurs from the App of the user (1)(2)(3)(4), having a positive response the application is ready to receive the events asynchronously from the PLC (AS). Suppose that the manager for a reason passes the controller to STOP (06) through the front switch or from the engineering station, then OS proceeds to send a notification (07)(08) to all consoles that are registered to receive this event. Subsequently, the manager decides to switch the controller to execution mode, through the front switch or the engineering console, at this time the OS is in charge of generating the startup events, initially it indicates the hot start WARN_RESTART (09)(10)(11) and if the startup is successful, indicate that the controller is in execution mode or RUN (12)(13)(14). The information received in (08)(11)(14) is included in the attached table. Field Type Description TYPE STRING Fixed value. TIMESTAMP Instant Instant.now () value assigned when receiving the event from the PLC. MAP HashMap The HashMap with all fields. METHOD byte Value of \"method\" as defined in S7Parameter. FUNCTION byte Value of \"function\" as defined in S7Parameter. CURRENT_MODE short Status value reported in the event. Check the ModeTransitionType enum. With the sequence diagram and the data structures that will be received by the application, we can analyze the Java code for this specific function. We think this should serve as a pseudocode for the other languages. public class PLCEventModeSubscription { public static void main(String[] args) throws Exception { try (PlcConnection connection new PlcDriverManager() .getConnection(\"s7://192.168.1.51?remote-rack=0&remote-slot=3&controller-type=S7_400\")) { final PlcSubscriptionRequest.Builder subscription connection.subscriptionRequestBuilder(); (01) subscription.addEventField(\"myMODE\", \"MODE\"); final PlcSubscriptionRequest sub subscription.build(); System.out.println(\"Query: \" + sub.toString()); final PlcSubscriptionResponse subresponse sub.execute().get(); if (subresponse.getResponseCode(\"myMODE\") = PlcResponseCode.OK) { (04) PlcConsumerRegistration registerMode = subresponse .getSubscriptionHandle(\"myMODE\") (05) .register(msg -> { (08)(11)(14) System.out.println(\"******** S7ModeEvent ********\"); Map map = ((S7ModeEvent) msg).getMap(); map.forEach((x, y) -> { System.out.println(x + \" : \" + y); }); short currentmode = (short) map.get(S7ModeEvent.Fields.CURRENT_MODE.name()); System.out.println(\"CURRENT_MODE MSG: \" + ModeTransitionType.enumForValue(currentmode).name()); System.out.println(\"****************************\"); }); } System.out.println(\"Waiting for the messages.\"); Thread.sleep(120000); connection.close(); System.out.println(\"Ending the connection.\"); } } } System events allow to receive asynchronously any event that affects the operation of the controller, or any of its peripheral equipment that is capable of sending events through a PROFIBUS or Profinet fieldbus. A first example of its use is the change of state of a CP, IM or FM within the architecture of the controller. This will allow the application to indicate that there is an effect on the system that may affect the quality of the signals used, allowing preventive or corrective actions to be taken as required. In general, system and user events are part of the same group of events, but they are differentiated to facilitate their processing. From the sequence diagrams after subscribing to the required event type (01)(02)(03)(04), the consumer (05) is registered to start receiving the events either from the SYS system or from the user USR. When the event is generated, it is sent to the diagnostic buffer (06) and an image of it is sent to all consoles registered to receive this type of event (07) distributed by the OS (08). Since at the protocol level the events are not differentiated, the PLC4X driver (08) is in charge of classifying the events in SYS or USR and transferring them to the registered consumer (09). For didactic purposes, a step-by-step explanation has been carried out, but in general the App application can be subscribed to the four types of events simultaneously. The following table shows the fields available for each message. Field Type Description TYPE STRING Fixed value. TIMESTAMP Instant Instant.now () value assigned when receiving the event from the PLC. EVENT_ID short OS generated event ID. PRIORITY_CLASS byte Value of \"method\" as defined in S7Parameter. OB_NUMBER byte Value of \"function\" as defined in S7Parameter. DAT_ID short Status value reported in the event. Check the ModeTransitionType enum. INFO1 WORD System information 1 word long. INFO2 DWORD System information 2 words l ng. For SYS events, the EVENT_ID is generated automatically by the OS, and basically they are constant in the different families of controllers. For the USER or User-defined events follow the same pattern as system events. They have the particularity that the value of EVENT_ID must be between the values 0xAXXX and 0xBYYY. This programming of the user-defined events is carried out at the level of the PLC(AS) controller, so we recommend the technical note [3] of the Siemens portal. In the case of user-defined messages, it is important to take into account that these are reported to the diagnostic buffer, which has a limited capacity depending on the CPU model used. Also take into account that the diagnostic buffer works like a circular buffer, so the oldest messages will be lost. +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ |15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ \\__________/\\__________/\\____________________/ Event class IDs Event number Event Class: 1 Standard OB Events 2 Synchronous errors 3 Asynchronous errors 4 Mode transition 5 Run-time events 6 Communications events 7 Events for fail-safe and fault tolerant systems 8 Standardized diagnostic data on modules 9 Predefined user events A,B Freely definable events C,D,E Reserved F Events for modules other than CPUs (for example, CPs, FMs) IDs (Bit) 8 0:Event leaving state, 1:Event entering state 9 1:Entry in diagnostic buffer 10 1:Internal error 11 1:External error In the previous table we can see how the event classes are coded, and how they are classified. If you require detailed information on each event, the user’s App must interpret the indicated bits. In the INFO1 and INFO2 fields, specific diagnostic information associated with the event is generally attached, or some information that needs to be recorded in the case of user events. The INFO1 field contains information that can be stored in a word, namely, WORD, INT of ARRAY [0..1] OF CHAR. The INFO2 field contains information that can be stored in a double word, namely, DWORD, DINT, REAL, TIME, ARRAY [0..3] OF CHAR. Below is an example code for the subscription of events type SYS. public static void main(String[] args) throws Exception { try (PlcConnection connection new PlcDriverManager(). getConnection(\"s7://192.168.1.51?remote-rack=0&remote-slot=3&controller-type=S7_400\")) { final PlcSubscriptionRequest.Builder subscription connection.subscriptionRequestBuilder(); (01) subscription.addEventField(\"mySYS\", \"SYS\"); final PlcSubscriptionRequest sub subscription.build(); System.out.println(\"Query: \" + sub.toString()); final PlcSubscriptionResponse subresponse sub.execute().get(); PlcConsumerRegistration registerSys = subresponse .getSubscriptionHandle(\"mySYS\") (05) .register(msg -> { (09) System.out.println(\"******** S7SysEvent ********\"); Map map = ((S7SysEvent) msg).getMap(); map.forEach((x, y) -> { System.out.println(x + \" : \" + y); }); Integer eventid = (Integer) map.get(S7SysEvent.Fields.EVENT_ID.name()); System.out.println(\"DIAGNOSTIC: \" + S7DiagnosticEventId. valueOf(eventid.shortValue()).getDescription()); (10) System.out.println(\"****************************\"); }); System.out.println(\"Waiting for the messages.\"); Thread.sleep(120000); connection.close(); System.out.println(\"Ending the connection.\"); } } And below is an example code for the subscription of events type USR. public static void main(String[] args) throws Exception { try (PlcConnection connection new PlcDriverManager(). getConnection(\"s7://192.168.1.51?remote-rack=0&remote-slot=3&controller-type=S7_400\")) { final PlcSubscriptionRequest.Builder subscription connection.subscriptionRequestBuilder(); subscription.addEventField(\"myUSR\", \"USR\"); final PlcSubscriptionRequest sub subscription.build(); System.out.println(\"Query: \" + sub.toString()); final PlcSubscriptionResponse subresponse sub.execute().get(); PlcConsumerRegistration registerUsr = subresponse .getSubscriptionHandle(\"myUSR\") (05) .register(msg -> { System.out.println(\"******** S7UserEvent *******\"); Map map = ((S7UserEvent) msg).getMap(); map.forEach((x, y) -> { (09) System.out.println(x + \" : \" + y); }); System.out.println(\"****************************\"); }); System.out.println(\"Waiting for the messages.\"); Thread.sleep(120000); connection.close(); System.out.println(\"Ending the connection.\"); } } The Java code shows how to detect the type of event in an event type SYS. In the S7 driver, there is an enum object S7DiagnosticEventId(10) that allows us to identify which internal event of the PLC(AS) generated it and thus, through the interpretation of the INFO1 and INFO2 fields, determine the root cause of the event. To date, the enum object S7DiagnosticEventId contains a considerable amount of diagnostic values, it must be updated according to the new CPUs or firmware versions available. Unlike SYS events, USR events must be interpreted directly by the App application, so they are generally scheduled during the development phase of the S7App application. By having INFO1 and INFO2 in the S7App program, the user can transfer data associated with events, such as transitions between phases, events of diagnostic routines such as firts-out or the start or end of a batch process, all asynchronously. The registration sequence for subscription is the typical one carried out so far (01)(02)(03)(04)(05). From that moment on, you can start receiving alarm events asynchronously. Depending on your application, you can make a request for the currently active alarms in the alarm buffer of the PLC(AS), in this way you can prepare a reception buffer or establish the correct state of a state machine that depends on the Active events in the controller. You must take into account that when making the request (06), from a few to hundreds of alarms can be stored depending on the complexity of your application and the capacity of the PLC (AS). In this scenario, the PLC4X driver maintains the dialogue with the OS to receive sequentially (07)(08)(09)(10)(11)(12)(13)(14) the alarms stored on the controller, to later transfer them to the user application App (15). At the end of the subscription process, it will begin to receive the events generated by the system, such as high precision time signals (16)(17)(18)(19) or events generated by the user application (20)(21)(22). This simple sequence of events is used by process applications based on PCS7, for the handling of alarms, events and logging of practically all the events of the distributed control system (DCS). Another important feature of the driver is the ability to recognize the alarms generated from the PLC(AS). In (23)(24)(25) the S7App application generates an alarm/event that is required to be acknowledged by the user to continue with the execution of a specific routine. The user applications App generates the acknowledgment (27)(28) using the corresponding alarm identifier, the OS is responsible for making the confirmation (29)(30) and asynchronously generating an event for the update of the state machine in the App(31)(32). Within the cyclical execution of the application S7App waits for the confirmation of the alarm (26) to continue with some specific routine. TODO: Field description Field Type Description TYPE TIMESTAMP TIMESTAMP_GOING TIMESTAMP_COMING ASSOCIATED_VALUES MAP EVENT_ID EVENT_STATE STATE ACKSTATE_GOING ACKSTATE_COMING EVENT_GOING EVENT_COMING EVENT_LAST_CHANGE SIG SIG_[1…8] SIG_STATE SIG_[1…8]_STATE SIG_DATA SIG_[1…8]_DATA SIG_[1…8]_DATA_GOING SIG_[1…8]_DATA_CO SIG_[1..8]_DATA_STATUS SIG_[1…8]_DATA_SIZE SIG_[1…8]_DATA_LENGTH TODO: Example code The cyclical subscription allows the acquisition of data in passive mode, that is, the data is sent from the PLC in a cyclical and synchronous way. The data transfer has three time bases: B01SEC: Time base 0.1 Sec. (100 mSec.). B0SEC: Time base 1.0 Sec. B10SEC: Time base 10 Sec. The system status list gives access to the operating data of the PLC, such as memory space, operating status, status of the control switches, as well as diagnostic data of expansion cards or decentralized peripherals, PROFIBUS or PROFINET . This is fundamental data to determine the quality of the data supplied by the PLC. By initiating the connection with the PLC you can determine its operating status, which will allow you to define the quality of the data taken and what the implemented application can do or not, eventually this is the procedure carried out by the Siemens CPs. Why SZL and not SSL? Well, creative freedom. The translation of the manuals from German to Spanish use SZL and German to English use SSL. Both the source code and the documentation use this reduction to keep the text uniform. Due to the fact that the data structures are so varied, basically one per type of diagnosis, the decision was made to return these as an array of bytes, leaving the developer to implement the parser according to their requirements. For a first approach to using system state lists a byte array to JSON notation parser is available at \"org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.SZL\" . Make use of the XXX document for a detailed explanation of each SZL, since as indicated, everything will depend on the hardware you have installed. The access to the SZL of the PLC is done as a read request, where the PLCTag is formed by two fields \"SZL_ID\" and \"INDEX\". SZL_ID: Number assigned to the SZL list. There are variants of the SZL_ID depending on whether the request is total, partial or just the header. To facilitate its use, the representation will always be in hexadecimal with the format 0xxyID. +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ |15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ \\__________/\\__________/\\____________________/ Module Number of Number of the partial class the partial list list extract Number of the partial list : The number of the partial SZL list you want to read. Number of the partial list extract: Defines which part of the partial list you want to extract. It varies from list to list. Module Class: The requests for the partial list depend on the hardware that is being used, generally the IM (communication cards), FM (special functions) and CP (periphery controller) have their own diagnostic system, which can be consulted through of the SZL_ID/INDEX PlcTag. Module Class: +--------------+-----------------+ | Module class | Coding (Binary) | +--------------|-----------------+ | CPU | 0000 | +--------------|-----------------+ | IM | 0100 | +--------------|-----------------+ | FM | 1000 | +--------------|-----------------+ | CP | 1100 | +--------------|-----------------+ INDEX: Number of the required sublist. To facilitate its use, the representation will always be in hexadecimal with the format 0xhhhh. public static void main(String[] args) throws Exception { System.setProperty(SimpleLogger.DEFAULT_LOG_LEVEL_KEY, \"trace\"); System.out.println(\"******************************************************************************************\"); System.out.println(\"Before using, take a look at:\"); System.out.println(\"System Software for S7-300/400.\\r\\nSystem and Standard Functions - Volume 1/2\"); System.out.println(\"Document: A5E02789976-01\"); System.out.println(\"Chapter 34 System Status Lists (SSL).\"); System.out.println(\"URL: https://cache.industry.siemens.com/dl/files/604/44240604/att_67003/v1/s7sfc_en-EN.pdf\"); System.out.println(\"******************************************************************************************\"); try (PlcConnection connection new DefaultPlcDriverManager().getConnection(\"s7://10.10.1.33?remote-rack=0&remote-slot=3&controller-type=S7_400\")) { //(01) final PlcReadRequest.Builder readrequest connection.readRequestBuilder(); //(02) readrequest.addTagAddress(\"MySZL\", \"SZL_ID=16#0012;INDEX=16#0000\"); //(03) final PlcReadRequest rr readrequest.build(); //(04) final PlcReadResponse szlresponse rr.execute().get(); //(05) if (szlresponse.getResponseCode(\"MySZL\") = PlcResponseCode.OK){ //(06) Collection data szlresponse.getAllBytes(\"MySZL\"); //(07) byte[] dbytes ArrayUtils.toPrimitive(data.toArray(new Byte[data.size()])); //(08) SZL szl SZL.valueOf(0x0012); //(09) ByteBuf wb wrappedBuffer(dbytes); //(10) StringBuilder sb = szl.execute(wb); //(11) System.out.println(sb.toString()); //(12) } else if (szlresponse.getResponseCode(\"MySZL\") = PlcResponseCode.NOT_FOUND){ //(13) System.out.println(\"SZL is not supported.\"); } Thread.sleep(2000); System.out.println(\"Bye...\"); } } The request for the SZL lists follows the same pattern of variable readings, for each request a response, unlike the request for process variables where several can be grouped in a single request, the SZL request must correspond to one request to one petition. Like other requests, the connection URL (01) is established and the request constructor instance (02) is created. The associated PLCTag is added to the diagnostic list (one per request), in this case the SZL_ID=0x0012 and INDEX=0x0000 (03) which allows obtaining the identification and firmware of the PLC. In (04) and (05), we prepare and execute the request to the PLC. If we have a valid response (06) we can perform the processing of the data stream obtained, which as indicated is an array of bytes which is obtained in (07) and (08). As we pointed out in the support libraries, we have an \"SZL\" object (an enum), which allows us to select the appropriate parser based on the numerical index SLZ_ID (09). In (10) we make a wrapper in a ByteBuf type (from the Netty library) in order to pass it to the \"szl\" instance through the \"execute\" method (11). When processing the data buffer we must obtain in (12) a StringBuilder with the JSON representation. {\"RECORDS\":[{\"AUSBG2\":0,\"AUSBG1\":61,\"BGTYP\":130,\"INDEX\":1,\"MIFB\":\"6ES7 417-4XT05-0AB0 \"},{\"AUSBG2\":0,\"AUSBG1\":2,\"BGTYP\":130,\"INDEX\":6,\"MIFB\":\"6ES7 417-4XT05-0AB0 \"},{\"AUSBG2\":768,\"AUSBG1\":22021,\"BGTYP\":0,\"INDEX\":7,\"MIFB\":\" \"},{\"AUSBG2\":3,\"AUSBG1\":22021,\"BGTYP\":0,\"INDEX\":129,\"MIFB\":\"Boot Loader \"}],\"LENGTHDR\":28,\"SZL-ID\":17,\"INDEX\":0,\"N_DR\":4} As noted above, the parser performed on the SZL enum is not complete, so the missing information must be obtained from the returned fields. For further details you should consult []. In case of not being able to process the request, it is detected in (13) to take the necessary measures. The following diagram represents the information in JSON format. From the obtained StringBuilder, you can use the JSON processor of your choice to access the different fields. Module class SZL-ID Implemented SZL List 16#xy00 Tested with S7-400, JSON Module identification 16#xy11 Tested with S7-400, JSON CPU characteristics 16#xy12 Tested with S7-400, JSON User memory areas 16#xy13 Tested with S7-400, JSON System areas 16#xy14 Tested with S7-400, JSON Block types 16#xy15 Tested with S7-400, JSON Interrupt status 16#xy22 Tested with S7-400, JSON Assignment between process image partitions and OBs 16#xy25 Tested with S7-400, JSON Communication status data 16#xy32 Tested with S7-400, JSON H CPU group information 16#xy71 Status of the module LEDs 16#xy74 Tested with S7-400, JSON Switched DP slaves in the H-system 16#xy75 Module status information 16#xy91 Tested with S7-400, JSON Rack / station status information 16#xy92 Tested with S7-400, JSON Rack / station status information 16#xy94 Tested with S7-400, JSON Extended DP master system / PROFINET IO system information 16#xy95 Tested with S7-400, JSON Module status information, PROFINET IO and PROFIBUS DP 16#xy96 Tested with S7-400, JSON Tool changer information (PROFINET IO) 16#xy9C Tested with S7-400, JSON Diagnostic buffer of the CPU 16#xyA0 Tested with S7-400, JSON Module diagnostic information (data record 0) 16#xyB1 Tested with S7-400, JSON Module diagnostic information (data record 1), geographical address 16#xyB2 Tested with S7-400, JSON Module diagnostic information (data record 1), local address 16#xyB3 Tested with S7-400, JSON Diagnostic data of a DP slave 16#xyB4 Tested with S7-400, JSON Especially when it comes to the input- and output addresses for analog channels, the start addresses are configurable and hereby don’t always start at the same address. In order to find out what addresses these ports have, please go to the device setting of your PLC in TIA Portal Especially pay attention to this part: In above image you can see that this device has 8 digital inputs (DI 8) and 2 analog inputs (AI 2_1) as well as 6 digital outputs (DQ 6). The start addresses of the digital inputs and outputs start directly at 0. The analog inputs however start at address 64. Each digital input and output can be addresses by a single bit-address (start-address and offset) or can be read in a block by reading a full byte starting at the given start address without providing a bit offset. https://snap7.sourceforge.net/ https://support.industry.siemens.com/cs/document/13649203/simatic-net-pc-software-s7-programming-interface?dti=0&dl=en&lc=es-ES https://support.industry.siemens.com/cs/document/109797648/simatic-comparison-list-for-s7-300-s7-400-s7-1200-s7-1500?dti=0&lc=en-WW https://support.industry.siemens.com/cs/mdm/109746537?c=98956468747&lc=es-DO https://support.industry.siemens.com/cs/document/15166942/writing-user-specific-information-to-the-diagnostic-buffer-of-a-cpu-(sfc-52)?dti=0&lc=en-ES https://support.industry.siemens.com/cs/document/24013249/how-do-you-display-alarm_s-or-alarm_d-messages-with-process-values-(so-called-associated-values)-on-a-wincc-flexible-operator-panel-?dti=0&lc=en-WW https://support.industry.siemens.com/cs/document/109481157/comunicaci%C3%B3n-entre-paneles-de-operador-simatic-hmi-y-convertidores-de-frecuencia-sinamics-g120-para-el-manejo-y-la-visualizaci%C3%B3n-de-avisos-de-fallo-y-de-advertencia-(enlace-directo-sin-controlador)?dti=0&lc=es-WW https://support.industry.siemens.com/cs/document/97550333/sinamics-g-s-hmi-direct-access?dti=0&lc=en-WW https://support.industry.siemens.com/cs/document/21402122/technology-cpus-technology-template-error-messages-?dti=0&lc=en-WW https://support.industry.siemens.com/cs/document/77467239/transforming-warning-and-error-messages-of-a-sinamics-drive-with-the-aid-of-the-xml-parser-and-integrating-them-into-a-step-7-hmi-project?dti=0&lc=en-WW https://support.industry.siemens.com/cs/document/24037531/%C2%BFqu%C3%A9-pasos-de-configuraci%C3%B3n-hay-que-realizar-en-el-simotion-scout-y-el-wincc-flexible-para-que-se-muestren-los-avisos-alarm_s-y-las-alarmas-tecnol%C3%B3gicas-dentro-del-wincc-flexible-runtime-?dti=0&lc=es-ES","title":"S7 (Step7)","component":"plc4x","version":"pre-release","name":"s7","url":"/plc4x/pre-release/users/protocols/s7.html","titles":[{"text":"Executive Summary","hash":"_executive_summary","id":1},{"text":"Regarding the Support","hash":"_regarding_the_support","id":2},{"text":"Record of revisions made to the driver","hash":"_record_of_revisions_made_to_the_driver","id":3},{"text":"Connecting as easy as 1-2-3.","hash":"_connecting_as_easy_as_1_2_3","id":4},{"text":"ONE","hash":"_one","id":5},{"text":"Connection String Options","hash":"_connection_string_options","id":6},{"text":"tcp","id":7},{"text":"TWO","hash":"_two","id":8},{"text":"THREE","hash":"_three","id":9},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":10},{"text":"General Format","hash":"_general_format","id":11},{"text":"Memory Areas","hash":"_memory_areas","id":12},{"text":"Data Types","hash":"_data_types","id":13},{"text":"Actors participating in the communication process","hash":"_actors_participating_in_the_communication_process","id":14},{"text":"S7 Read/Write","hash":"_s7_readwrite","id":15},{"text":"S7 Event Subscription","hash":"_s7_event_subscription","id":16},{"text":"SCAN Events","hash":"_scan_events","id":17},{"text":"Subscription to MODE events (S7ModeEvent).","hash":"_subscription_to_mode_events_s7modeevent","id":18},{"text":"Subscription to SYS events (S7SysEvent) and USER events (S7UserEvent).","hash":"_subscription_to_sys_events_s7sysevent_and_user_events_s7userevent","id":19},{"text":"Subscription to ALM type events (S7AlarmEvent).","hash":"_subscription_to_alm_type_events_s7alarmevent","id":20},{"text":"TODO: Cyclic subscription (CYC).","hash":"_todo_cyclic_subscription_cyc","id":21},{"text":"SZL System Status List","hash":"_szl_system_status_list","id":22},{"text":"Notation for SZL request","hash":"_notation_for_szl_request","id":23},{"text":"Some useful tips","hash":"_some_useful_tips","id":24},{"text":"Resources","hash":"_resources","id":25}]},"84":{"id":84,"text":"Name Type Default Value Required Description Name Simulated PLC4X Datasource Code simulated Maven Dependency org.apache.plc4x plc4j-driver-simulated pre-release Supported Transports Config options: Name Value Description Supported Operations read Supports all standard IEC 61131 data types outlined below. write Supports all standard IEC 61131 data types outlined below. The simulated driver has the following connection string format:- simulated:{transport}://{ip-address}:{port} An example connection string would look like:- simulated://127.0.0.1 Note the transport and port fields are optional. The simulated addresses have this format: {simulation-type}/{alias}:{data-type}[{array-size}] If the array-size part is omitted, the default size of 1 is assumed. If the data-type part is omitted, it defaults to STRING. The simulation device supports 3 different simulation types STATE - This holds in memory a value for a given alias. This value can be read or written to, however this should only be used in conjunction with a persistent connection. Once the connection is closed the memory area is cleared. RANDOM - This provides a new random value for each read. When writing, a log message is recorded and the value is discarded. STDOUT - Always returns a null value when reading. When writing, a log message is recorded and the value is discarded. Aliases are used to identify the different field addresses. They should only contain alpha-numeric and the full stop (.) character. For readability and language specific technical purposes they should be less than 256 characters. The following data types are supported:- BOOL (boolean) SINT (int 8) USINT (uint 8) BYTE (uint 8) INT (int 16) UINT (uint 16) WORD (uint 16) DINT (int 32) UDINT (uint 32) DWORD (uint 32) LINT (int 64) ULINT (uint 64) LWORD (uint 64) REAL (float) LREAL (double) CHAR (char) WCHAR (2 byte char) STRING (254 bytes) The simulation driver uses a lot of the same logic templates that is used for the other drivers. It is a good way to test PLC4X functionality without having a device to connect to. All of these address formats are valid:- RANDOM/foo:INT RANDOM/foo:UDINT RANDOM/device1.machineA.sensor1:UINT RANDOM/device1.machineA.sensor1:STRING STATE/device1.machineA.sensor1:INT STDOUT/device1.machineA.sensor1:INT","title":"Simulated","component":"plc4x","version":"pre-release","name":"simulated","url":"/plc4x/pre-release/users/protocols/simulated.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":2},{"text":"Connection String","hash":"_connection_string","id":3},{"text":"General Format","hash":"_general_format","id":4},{"text":"Simulation Types","hash":"_simulation_types","id":5},{"text":"Alias","hash":"_alias","id":6},{"text":"Data Types","hash":"_data_types","id":7},{"text":"Some useful tips","hash":"_some_useful_tips","id":8},{"text":"Examples","hash":"_examples","id":9}]},"85":{"id":85,"text":"This protocol is used by Schneider Electric PLCs such as the M340, M580 and the Quantum PLCs with the Unity firmware. This driver supports reading/writing/browsing of PLC tags as well as %S/%SW addresses. The Data Dictionary needs to be enabled on the PLC. (Supported by Plc4Py Only) Name Type Default Value Required Description Name UMAS Code umas Default Transport tcp Supported Transports tcp Config options: request-timeout INT 5000 Default timeout for all types of requests. unit-identifier INT 1 Unit-identifier or slave-id that identifies the target PLC. Defaults to 1. + Name Value Description Supported Operations read write browse UMAS has the following connection string format:- umas:{transport}://{ip-address}:{port}?{options} An example connection string would look like:- umas:tcp://127.0.0.1:502 Note the transport, port and option fields are optional. In general all UMAS addresses have this format: {tag-name}.{child-name}.{child-name}:{data-type}[{array-size}] Depending on the type of tag the child-name parameters are optional. e.g. A tag with a BOOL data type could be 'TESTING_BOOL_1' whereas if it is a UDT the tag name is followed by the child 'TESTING_UDT_1.START' which in itself could be a BOOL. If the array-size part is omitted, the size-default of 1 is assumed. If the data-type part is omitted, it defaults to the data type of the tag read from the PLC. Apart from tags defined in the PLC the driver is also able to access the %S and %SW system memory areas. The specific address details of the data in these areas are outlined in the devices manual. An example of the address format of these areas is %SW1 or %S20. The following data types are supported BOOL (boolean) SINT (int 8) USINT (uint 8) BYTE (uint 8) INT (int 16) UINT (uint 16) WORD (uint 16) DINT (int 32) UDINT (uint 32) DWORD (uint 32) REAL (float) STRING (char) TIME DATE TOD (Time of Day) DATE_AND_TIME","title":"UMAS (Schneider Electric PLCs)","component":"plc4x","version":"pre-release","name":"umas","url":"/plc4x/pre-release/users/protocols/umas.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"Supported Operations","hash":"_supported_operations","id":2},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":3},{"text":"Connection String","hash":"_connection_string","id":4},{"text":"General Format","hash":"_general_format","id":5},{"text":"Memory Areas","hash":"_memory_areas","id":6},{"text":"Data Types","hash":"_data_types","id":7}]},"86":{"id":86,"text":"Sometimes the problem with industry protocols is, that the most interesting protocols live in places that are not very welcoming to IT folks. Either too hot or too cold and usually no good coffee around. The Capture Replay tool is a little helper, that can possibly help with this. Especially when it comes to developing passive mode drivers this tool can come in very handy. It allows to replay recorded network traffic and to directly intercept this traffic in any passive mode drivers. Possibly it could also work with non passive drivers, but I expect synchronization to be tricky. In order to create a capture I usually connect a device running WireShark to the network. Ideally to the replication port of a network switch so I can record all the traffic. An alternative would be to run WireShark on one of the PCs/Servers having access to the traffic I’m interested in. So if for example I wanted to work on a driver for control system X, capturing the traffic on one of the X servers is probably the simplest way to do it. If complicance rules prevent ths a third option would be to use a network tap to record the capture. Now you need to copy the pcapng file ideally to your development system. The capture can be replayed by the tool you find in plc4j/tools/capture-replay. Here simply look for the target/plc4j-capture-replay-0.13.0-SNAPSHOT-uber-jar.jar and run: java -jar target/plc4j-capture-replay-0.13.0-SNAPSHOT-uber-jar.jar --input-file {path to capture} --output-device {name of the network device} --replay-speed 1 --loop true The options input-file and output-device are mandatory, the rest is optional: input-file specifies the path to the capture file (pcapng) output-device name of the network device that will be used for output (name listed when running ifconfig on Linux and Mac or ipconfig on Windows) replay-speed Speed the replay will be played back. 1 is real time, 0 or less is as fast as possible, 0.5 is 50% slower than the original and 2 is twice as fast loop if set to true it will automatically start replaying the capture from the start as soon as the end is reached The replay-speed is ideal to see how your driver can cope with different volumes of traffic. So even if your driver is currently working fine, consider using this tool in order to find out if your system could cope with 50% more nodes or increased polling intervals etc.","title":"Capture Replay","component":"plc4x","version":"pre-release","name":"capture-replay","url":"/plc4x/pre-release/users/tools/capture-replay.html","titles":[{"text":"Getting a Capture","hash":"_getting_a_capture","id":1},{"text":"Replaying the Capture","hash":"_replaying_the_capture","id":2}]},"87":{"id":87,"text":"In some applications there might be multiple parts of the code that require access to a PLC connection. In contrast to usual microservice architectures, with PLCs we can’t simply open as many connections as we like. For example a S7-1200 typically allows 3 concurrent connections. Also can the process of establishing a connection be a pretty cost-intensive task. For example in the ADS protocol, when connecting, the driver loads the tables containing the description of all data-types defined in the PLC alongside the symbol-table which declares which variables are defined, which addresses they have, which datatype they reference and where they are located in the PLCs memory. Even if only one block of code repeatedly requires access to the PLC, simply creating a connection every time would put a too high load on the PLC and the network. When using the connection cache, many pieces of code can use it in parallel. However, only one piece of code can have access to a connection at the same time. So the first thread asking for a new connection will have the cache create a new connection and return it to the client. It can then use this just like any ordinary connection retrieved from the basic PlcConnectionManager. The main difference however is, that as soon as the client calls close() on this so-called connection-lease, the connection is not closed, but the cache puts it back into the storage, waiting for the next thread to require it. If a thread asks for a connection, which is currently leased by another thread, then the requesting thread will wait till the connection is returned and will then instantly continue using the connection till it then returns it back to the cache. If a second thread however asks for a different connection (with a different connection string), then the connection cache will create a new connection and return that instantly. When using the connection cache, connections should not use a connection-lease for a prolonged period of time. So the connection cache keeps track of the leases it hands out and terminates connection-leases that have not been returned for a long time. Here comes an example application, that uses the connection cache: public static void main(String[] args) throws Exception { PlcConnectionManager connectionManager = CachedPlcConnectionManager.getBuilder().build(); for (int i = 0; i org.apache.plc4x plc4j-connection-cache 0.13.0-SNAPSHOT In this snippet of code there are some considerations that are worth to be underlined. In recent versions of PLC4X we have refactored the PlcDriverManager to provide access to a PlcConnectionManager interface. This contains all methods that are related to creating connections. The ConnectionCache implements this same interface, therefore you can use a CachedPlcConnectionManager everywhere you can use the normal PlcConnectionManager. A new CachedPlcConnectionManager is usually created using a builder, that can be accessed via: CachedPlcConnectionManager.getBuilder(). This will be explained in more detail in the next chapter. The try-with-resources statement (i.e. try (PlcConnection connection = connectionManager.getConnection(connectionString))) ensures that a leased connection will be automatically returned to the cache after the use. As said before if the application keeps hold of the connection for too long, after a configurable amount of time will be automatically closed by the cache and the thread can no-longer use it (i.e. the maxLeaseTime parameter defaults to 4 seconds and is configurable - see the next chapter on configuring the connection cache). Before handing out a connection-lease, the connection cache will execute a ping() operation on the corresponding connection to check if it’s still valid. If this check fails, the cache will terminate this connection, establish a new one and then return a handle for that new connection. As mentioned before the CachedPlcConnectionManager is configurable. Mainly this involves configuring the timeouts. Name type Default Description maxLeaseTime java.time.Duration 4 seconds Time that a thread is allowed to keep a connection-lease till the connection-cache terminates the lease. maxWaitTime java.time.Duration 20 seconds Time that a thread asking for a connection will wait until the connection cache gives up and throws a PlcConnectionException. The configuration of a CachedPlcConnectionManager is done when creating the instance. For this the builder contains two methods to configure the timeouts. Here comes an example: public static void main(String[] args) throws Exception { PlcConnectionManager connectionManager = CachedPlcConnectionManager.getBuilder() .withMaxLeaseTime(Duration.ofSeconds(10)) .withMaxWaitTime(Duration.ofMinutes(1)) .build(); ... }","title":"The Connection Cache concept","component":"plc4x","version":"pre-release","name":"connection-cache","url":"/plc4x/pre-release/users/tools/connection-cache.html","titles":[{"text":"Configuring the CachedPlcConnectionManager","hash":"_configuring_the_cachedplcconnectionmanager","id":1}]},"88":{"id":88,"text":"The plc4j-connection-pool module has been discontinued and has been removed from PLC4X stating with version 0.11.0 There are situations where you don’t want to carry around connections in your code. For example if you have a microservice application, you might have multiple services accessing PLC data. Keeping an open connection for each of these is rather problematic as in contrast to modern computers, PLCs usually are only able to manage a small number of concurrent connections. I think a Siemens S7-1200 is limited to 7 concurrent connections and a Siemens LOGO can’t do more than 3. One alternative would be to open and close the connections all the time. This however puts an unnecessary stress on the PLCs as for protocols like the S7 or the ADS protocol a handshake of multiple requests and responses has to be executed before being able to communicate. As usually these services only require ad-hoc access to a PLC, it would be ideal to share connections between services. Another problem occurs when you open a connection and keep it open for a prolonged time period. Here it can happen quite often that a connection is terminated because the PLC has been turned off. Per default the PLC connection has no means of automatically re-connecting. The PooledPlcDriverManager can help you with both of these scenarios. The PooledPlcDriverManager is a wrapper around the normal PlcDriverManager. The main difference is that as soon as a connection is requested, it will look if one already exists and return that. If no connection exists it will create a new one and keep it in the pool. There are no API differences from using the normal PlcDriverManager so you call createConnection and close just like with the normal PLC4X API. The structure of the code is now more or less like if you would create a new connection for every request and close it afterwards. Another benefit of the PooledPlcDriverManager is that it will check a connection for any problems before returning it to the client. So if a connection was terminated, it will detect this and create a new connection. Here comes a little example program utilizing the PooledPlcDriverManager: PlcDriverManager driverManager = new PooledPlcDriverManager(); // This just simulates a scenario where a lot of connections would be created and immediately destroyed again. for(int i = 0; i < 100; i++) { try(PlcConnection connection = driverManager.getConnection(\"...\")) { ... do something ... (please refer to the PLC4J getting started for details) } } When sharing connections between multiple services, be sure to share the instance of the PooledPldDriverManager as otherwise you will result in having multiple pools.","title":"Connection Pool","component":"plc4x","version":"pre-release","name":"connection-pool","url":"/plc4x/pre-release/users/tools/connection-pool.html","titles":[{"text":"The PooledPlcDriverManager","hash":"_the_pooledplcdrivermanager","id":1},{"text":"Example","hash":"_example","id":2}]},"89":{"id":89,"text":"","title":"Tools","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/users/tools/index.html","titles":[]},"90":{"id":90,"text":"Object PLC Mapping (OPM) is heavily inspired by the Java Persistence API (JPA) [1]. One of the main goal of the PLC4X Project is to make it easy to communicate with PLC devices to enable the development of applications that interact with PLCs. As many (or even most) of the application programmers are no experts in PLC Communication and protocols it should be as easy as possible to interact with PLCs without too much domain knowledge. This is exactly the reason why JPA was initialized many years ago to allow the interaction with a Database by simply calling methods on POJOs (Plain old Java Object). This is exactly what the OPM Module is for, to enable PLC communication by simply interacting with a POJO. In order to be handled by the OPM system, you need to create classes, that are decorated with OPM annotations. There annotations are: @PlcEntity: Declared on class-level, declares the class as valid OPM entity. @PlcTag: Declared on a property-level, declares the field as a property which is automatically filled in by fetching data from a connected PLC. Example: @PlcEntity public class MyEntity { @PlcTag(\"DB01:DW01:REAL\") private double pressure; @PlcTag(value = \"DB01:DW05:BOOL\", cacheDurationMillis = 100) private boolean running; public void MyEntity() { // For OPM } public double getPressure() { return pressure; } public boolean isRunning() { return running; } } Important here, ist that the class has a no-args constructor (if there are no other constructors, the no-args constructor can be omitted. However, if there are constructors present, a no-args version is required) Also note, that there is technically no way to actually set the value of the above type, however the OPM interceptor will take care of this, but you can of course also provide setter methods. So the @PlcEntity simply marks the class as OPM entity. The @PlcTag provides the PLC address string to where the value can be read from. In the above example there are two flavors being used. For the preassure field, no second parameter is provided, so the value prefix can be omitted. This will create a property that is fetched from the PLC with every call to the fields getter method. In the second property: running, we provide a second argument: cacheDurationMillis. This will fetch a value when accessing the getter for the first time, but if more calls to the getter are received within 100ms the last read value is returned without calling the PLC. The first call received after the cache-duration will then result in a call (which then will be cached for 100ms again). If you simply have a set of fields defined in your entity, and you simply want to read all of them and then disconnect, you can use the entity managers read method. This creates a connection to the database, reads all the values and then disconnects the entity again. public static void main(String[] args) { PlcEntityManager em = new PlcEntityManager(); MyEntity entity = em.read(MyEntity.class, \"s7://...\"); System.out.println(entity.getPressure()); } Calls to the getters of this detached entity will not result in any requests being sent to the PLC. Please be aware, that in this case you are creating a dead entity. Calling read in a loop will have the OPM create new dynamic proxy classes for every call and these classes will pile up in your class-memory, which will cause OutOfMemory errors eventually. If you are planning on any repeated read operations, please use connected reads (Next example). A connected entity is the most interesting use-case for an OPM entity. In this case the entity stays alive. As mentioned in the chapter about Defining an OPM Entity, when accessing the getter for a property, which is annotated with @PlcTag will result in a call to the PLC, unless the cacheDurationMillis permits a re-use of the last value. The same applies for any possibly present setters. If the setter for a property annotated with @PlcTag is called, this will result in a write request being sent to the PLC. Here the cache duration is not used. public static void main(String[] args) { PlcEntityManager em = new PlcEntityManager(); MyEntity entity = em.connect(MyEntity.class, \"s7://...\"); System.out.println(entity.getPressure()); } As reading every property of an entity in a separate request is usually quite sub-ideal, there is also a way to force the reading of all fields in one request (if the protocol supports that). This is done by defining a method that does not start with get{field-name} or is{field-name} (in case of booleans). When calling this method the OPM system will update all properties defined in the current entity (respecting the cache time however) So when adding this method to our example entity: public void updateAllTheTags() { // Dummy ... } simply calling connectedEntity.updateAllTheTags() will force an update of all tags which have outdated values in the cache. [1] https://www.oracle.com/technetwork/java/javaee/tech/persistence-jsp-140049.html","title":"Object PLC Mapping","component":"plc4x","version":"pre-release","name":"opm","url":"/plc4x/pre-release/users/tools/opm.html","titles":[{"text":"What is Object PLC Mapping","hash":"_what_is_object_plc_mapping","id":1},{"text":"Defining an OPM Entity","hash":"_defining_an_opm_entity","id":2},{"text":"Simple Example (Detached)","hash":"_simple_example_detached","id":3},{"text":"Simple Example (Connected)","hash":"_simple_example_connected","id":4},{"text":"Hidden Secrets","hash":"_hidden_secrets","id":5},{"text":"References","hash":"_references","id":6}]},"91":{"id":91,"text":"While the Apache PLC4X API allows simple access to PLC resources, if you want to continuously monitor some values and have them retrieved in a pre-defined interval, the core PLC4X API method is a little bit uncomfortable. Especially when you have multiple batches of data you want to have refreshed in different intervals. In this case you need to take care of the scheduling of queries, need to manage the connection state (Check if the connection is still available and to apply countermeasures, if there are problems) As we have encountered exactly the same problem for about every integration module we created, the Apache PLC4X team has created a tool called the Scraper. This tool automatically handles all of the tasks mentioned above. The Scraper can be found in the Maven module: org.apache.plc4x plc4j-scraper 0.13.0-SNAPSHOT In general, you need 3 parts to work with the Scraper: 1) A Scraper Configuration 2) A Scraper Implementation 3) A Handler to handle the results of Scraper jobs In the Scraper Configuration you define the so-called jobs. Sources define connections to PLCs using PLC4X drivers. Generally you can think of a Source as a PLC4X connection string, given an alias name. A Job defines which resources (PLC Addresses) should be collected from which Sources with a given Trigger. All resources in a job will be collected as a batch. Generally multiple types of triggers could theoretically be supported, but for now only a time triggered job (Aka SCHEDULED) is actually supported. In the near future we’re hoping that we will be able to support: - External triggers - Triggering collection based upon PLC-values But, as to now, this has not been implemented yet. The core of the Scraper configuration is the ScraperConfigurationTriggeredImplBuilder class. Use this to build the configuration objects used to bootstrap the Scraper. ScraperConfigurationTriggeredImplBuilder builder = new ScraperConfigurationTriggeredImplBuilder(); As soon as you have your builder instance, you should add at least one source to it. builder.addSource({connectionName}, {plc4xConnectionString}); The connectionName will be what we use when configuring the job to reference which source it should use to collect. In order to configure a job we have to get an instance of a JobConfigurationTriggeredImplBuilder. JobConfigurationTriggeredImplBuilder jobBuilder = builder.job({jobName}, {triggerCommand}); This creates a new job with a given name which is executed based on the information in the triggerCommand. As mentioned above, we currently only support a time-scheduled collection. This generally requires just one parameter: The number of milliseconds between each collection. (SCHEDULED,1000) Above would schedule a collection every 1000ms - so once every second. Up to now this job would not be run anywhere, and it would also not collect anything. So in order to have the job actually do something, we should assign it a source to collect from. jobBuilder.source({connectionName}); Here we could theoretically collect on multiple sources, by simply calling the source() method multiple times. All sources would be collected at the same time, whenever the trigger tells it to. So the last thing we need to configure our first Scraper job, is to add a few fields for it to collect. jobBuilder.field({fieldName}, {fieldAddress}); The field method has to be called for every field we want to add to the current job configuration. It gives a PLC4X address string an easy to understand string name, just like when using the core PLC4X API. As soon as we’re done adding fields, we configure the job by calling the build method. jobBuilder.build(); This configures the finished job and attaches that to the overall Scraper configuration of the scraper configuration. As soon as we’re done configuring jobs, we need to create the Scraper configuration by calling the build method on the builder: ScraperConfigurationTriggeredImpl scraperConfig = builder.build(); In order to run the Scraper, the following boilerplate code is needed. try { PlcDriverManager plcDriverManager = new PooledPlcDriverManager(); TriggerCollector triggerCollector = new TriggerCollectorImpl(plcDriverManager); TriggeredScraperImpl scraper = new TriggeredScraperImpl(scraperConfig, (jobName, sourceName, results) -> { ... }, triggerCollector); scraper.start(); triggerCollector.start(); } catch (ScraperException e) { log.error(\"Error starting the scraper\", e); } At first a new PooledPlcDriverManager is created (It actually doesn’t have to be the pooled version, but we strongly suggest you use it as for some protocols the connection process is stressfull for the connected PLC). With this plcDriverManager we can then create a so-called TriggerCollector, which we pass in the driver manager as argument. Next comes the probably most important part: We configure the scraper, by binding a Scraper Configuration, a ResultHandler and a TriggerCollector together. After this, the scraper is ready to start, which is then done by calling start on the scraper as well as the triggerCollector. For the sake of clarity, here comes the definition of the ResultHandler interface: @FunctionalInterface public interface ResultHandler { /** * Callback handler. * @param jobName name of the job (from config) * @param connectionName alias of the connection (not connection String) * @param results Results in the form alias to result value */ void handle(String jobName, String connectionName, Map results); } As an alternative to using the Java API, the Scraper Configuration can also be read from a JSON or YAML document. Here come some examples: JSON: { \"sources\": { \"connectionName\": \"connectionString\" }, \"jobs\": [ { \"name\": \"jobName\", \"triggerConfig\": (SCHEDULED,10000) \"sources\": [ \"connectionName\" ], \"fields\": { \"a\": \"{address-a}\", \"b\": \"{address-b}\" } } ] } YAML: --- sources: connectionName: connectionString jobs: - name: jobName triggerConfig: (SCHEDULED,10000) sources: - connectionName fields: a: {address-a} b: {address-b} In both cases, you can create the ScraperConfiguration with the following code: ScraperConfiguration conf = ScraperConfiguration.fromFile(\"{path to the JSON or YAML file}\", ScraperConfigurationTriggeredImpl.class);","title":"Scraper","component":"plc4x","version":"pre-release","name":"scraper","url":"/plc4x/pre-release/users/tools/scraper.html","titles":[{"text":"Getting started with the Scraper","hash":"_getting_started_with_the_scraper","id":1},{"text":"Sources","hash":"_sources","id":2},{"text":"Jobs","hash":"_jobs","id":3},{"text":"Configuration using the Java API","hash":"_configuration_using_the_java_api","id":4},{"text":"Running the Scraper","hash":"_running_the_scraper","id":5},{"text":"Configuration using a JSON or YAML file","hash":"_configuration_using_a_json_or_yaml_file","id":6}]},"92":{"id":92,"text":"PLC4X has a Mock Driver which was initially implemented to be used for Unit Tests and this still is its main purpose. But this driver is also very suitable to play around a bit with the PLC4X API if no Hardware PLC is available. The driver can be found in the Maven module org.apache.plc4x plc4j-driver-mock 0.13.0-SNAPSHOT test The connection string Syntax for the mock driver is mock:{name-of-the-connection}. So you can use multiple Mock Devices at the same time. The Mock Driver does nothing else than forwarding all Requests to a `Virtual Device which we can provide to control all responses and also Monitor them, e.g. for unit tests. The Interface for the Mock Device is public interface MockDevice { Pair read(String fieldQuery); PlcResponseCode write(String fieldQuery, Object value); Pair subscribe(String fieldQuery); void unsubscribe(); // ... } Imagine we have some Code which we cannot control or whose functionality we want to test. This can be done with the Mock Driver in the following way. First, a new Mock Connection is established (like any other connection also would be): PlcMockConnection connection = (PlcMockConnection) PlcDriverManager.getDefault().getConnectionManager().getConnection(\"mock:my-mock-connection\"); You see, that we directly cast the Connection to a PlcMockConnection. This is done, because we need to connect a Device to this Mock Connection. This is done in the following Snippet connection.setDevice(mockDevice); Here, we pass it an instance of MockDevice which could be a simple Implementation of the interface like MockDevice mockDevice = new MockDevice() { Pair read(String fieldQuery) { System.out.println(\"I got a read to \" + fieldQuery); return Pair.of(PlcResponseCode.OK, new PlcString(\"hello\")); } PlcResponseCode write(String fieldQuery, Object value) { System.out.println(\"I got a write to \" + fieldQuery + \" with the value \" + value); return PlcResponseCode.OK; } // ... } This would just return a String Value hello for every request and print all read and write requests to the Console. To use the Mock driver in Unit Tests the easiest way is to generate the MockDriver instance as Mockito (or any other Framework) Mock. Like in the following Example MockDevice mockDevice = Mockito.mock(MockDevice.class); PlcMockConnection connection = (PlcMockConnection) PlcDriverManager.getDefault().getConnectionManager().getConnection(\"mock:my-mock-connection\"); connection.setDevice(mockDevice); // Populate the Mock to avoid a NPE when(mockDevice).read(anyString()).thenReturn(Pair.of(PlcResponseCode.OK, new PlcString(\"hello\"))); // Some Demo code that uses the same Driver Manager and either the connection from above // or at least mock:my-mock-connection as connection string // Here: send a request to the field \"MyAdress\" connection .readRequestBuilder .addItem(\"station\", \"MyAdress\") .build() .execute() .get(); // Check that the we really issued a Read request to the Field \"MyAdress\" verify(mockDevice).read(eq(\"MyAdress\")); But as the MockDriver uses a static Mock Connection registry the following Code works also MockDevice mockDevice = Mockito.mock(MockDevice.class); // Setup PlcMockConnection connection = (PlcMockConnection) PlcDriverManager.getDefault().getConnectionManager().getConnection(\"mock:my-mock-connection\"); connection.setDevice(mockDevice); // Populate the Mock to avoid a NPE when(mockDevice).read(anyString()).thenReturn(Pair.of(PlcResponseCode.OK, new PlcString(\"hello\"))); // Some Demo code that uses the same Driver Manager and either the connection from above // or at least mock:my-mock-connection as connection string // Here: send a request to the field \"MyAdress\" // and we build up a new Connection try (PlcConnection conn = PlcDriverManager.getDefault().getConnectionManager().getConnection(\"mock:my-mock-connection\")) { conn .readRequestBuilder .addItem(\"station\", \"MyAdress\") .build() .execute() .get(); } catch (Exception e) { // do nothing } // Check that the we really issued a Read request to the Field \"MyAdress\" verify(mockDevice).read(eq(\"MyAdress\")); The Snippet above shows that the part under test really has to share nothing with the test code except for the connection string. The above examples show that the MockDriver driver can not only be used to play around with the API but is also a powerful tool to do unit testing of Code which uses the PLC4X API. All that needs to be done is to either pass an instance of the Mocked Connection or just use the same Connection string (e.g. from a test configuration) that was used to Prepare a Mock Device. Some Examples of further (more Complex) use cases can be found in the PLC4X Codebases, e.g. in the following classes org.apache.plc4x.java.opm.PlcEntityManagerTest org.apache.plc4x.java.opm.PlcEntityManagerComplexTest org.apache.plc4x.java.scraper.ScraperTest and many more Test classes, especially in the OPM and the Scraper Module.","title":"Testing (or using PLC4X without a PLC)","component":"plc4x","version":"pre-release","name":"testing","url":"/plc4x/pre-release/users/tools/testing.html","titles":[{"text":"The Mock Driver","hash":"_the_mock_driver","id":1},{"text":"Simple Example","hash":"_simple_example","id":2},{"text":"Unit Testing with the Mock Driver","hash":"_unit_testing_with_the_mock_driver","id":3},{"text":"Conclusion","hash":"_conclusion","id":4}]},"93":{"id":93,"text":"A CAN transport is a special category of transport which can bring CAN frame data to various drivers. All of these transports are meant to follow basic CAN frame data semantics. Each CAN transport must provide a CANFrameBuilder interface realization. This builder can be used by drivers which implement application layer protocols on top of CAN bus. The builder allow constructing requests which should be passed to the bus operations. Note this API is available since Apache PLC4X 0.9. Name Value Description Code not available This transport ships only additional API on top of existing Apache PLC4X Transport API. Name CAN Maven Dependency org.apache.plc4x plc4j-transport-can 0.13.0-SNAPSHOT Options: none, an abstract transport Main purpose of this transport is basic unification of various CAN bus APIs. There is no unified way to access CAN (beside SocketCAN for linux) across multiple platforms. We brought this simplistic facade-alike API to serve very basic project needs. Its main purpose is to let transport implementer bridge with actual transport or another library. With as little effort as possible. Major advantage of CAN transport facade is possibility to implement application layer protocols in a fully portable way. This flexibility is not guaranteed with SocketCAN alone. The CAN transport responsibility is to bring CAN data to driver implementer. This API does not enforce, require or promote a low level bus operations. In this regard, these operations can be made by library available for specific CAN adapter in use. Usage of CAN transport APIs is recommended for portability reasons. Please have a look on CAN describe usage of CAN driver adapter with CAN transport facade. SocketCAN","title":"CAN","component":"plc4x","version":"pre-release","name":"can","url":"/plc4x/pre-release/users/transports/can.html","titles":[{"text":"Developer notes","hash":"_developer_notes","id":1},{"text":"Compatible CAN transports","hash":"_compatible_can_transports","id":2}]},"94":{"id":94,"text":"TCP UDP Raw Socket Serial Port CAN bus SocketCAN PCAP replay","title":"Transports","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/users/transports/index.html","titles":[]},"95":{"id":95,"text":"Name Value Description Code pcap Name PCAP file replay Maven Dependency org.apache.plc4x plc4j-transport-pcap-replay 0.13.0-SNAPSHOT Transport Syntax: {pcap-path} Path to the PCAP or PCAPNG file containing the network recording. Options: replay-speed-factor (1) Numeric value for changing the replay speed: 1 = Normal speed (default) 0 = Maximum speed 0.5 = Half speed 2 = Double speed loop (false) Should the replay start at the beginning of the file as soon as the end is reached? true = Automatically start again false = Stop at the end (default)","title":"PCAP Replay","component":"plc4x","version":"pre-release","name":"pcap-replay","url":"/plc4x/pre-release/users/transports/pcap-replay.html","titles":[]},"96":{"id":96,"text":"Name Value Description Code raw Name Raw Socket Communication Maven Dependency org.apache.plc4x plc4j-transport-raw-socket 0.13.0-SNAPSHOT Transport Syntax: {device-name} Name of the network device doing the capture Options: none","title":"Raw Socket","component":"plc4x","version":"pre-release","name":"raw-socket","url":"/plc4x/pre-release/users/transports/raw-socket.html","titles":[]},"97":{"id":97,"text":"Name Value Description Code serial Name UDP Socket Communication Maven Dependency org.apache.plc4x plc4j-transport-serial 0.13.0-SNAPSHOT Transport Syntax: {name of the serial port} Can differ depending on the OS: Windows: \"Com 1\" Mac & Linux: \"/dev/ttyS0\" Options: none","title":"Serial Port","component":"plc4x","version":"pre-release","name":"serial","url":"/plc4x/pre-release/users/transports/serial.html","titles":[]},"98":{"id":98,"text":"Name Value Description Code socketcan Name SocketCAN (software bridge to CAN). Maven Dependency org.apache.plc4x plc4j-transport-socketcan 0.13.0-SNAPSHOT Transport Syntax: {name of the socketcan interface} Can differ depending on the OS: can0 vcan0 Options: none SocketCAN is linux specific way to access CAN bus. It has its own representation of CAN frames, buffers and so on. This means that you have to program your application against socketcan and not raw can interfaces. Primary difference is fixed length of socketcan frames (CAN 2.0A always takes 16 bytes) and extended size of CAN identifier. Standard CAN frame uses 11 bits while socketcan uses 29 and appends flags to remaining 3 bits. Use of socketcan means that Apache PLC4X does not handle low level bus access, arbitration, coordination and so on. This is done by socketcan and layer below it. This transport have been successfully tested with vcan as well as gs_usb drivers.","title":"SocketCAN","component":"plc4x","version":"pre-release","name":"socketcan","url":"/plc4x/pre-release/users/transports/socketcan.html","titles":[]},"99":{"id":99,"text":"Name Value Description Code tcp Name TCP Socket Communication Maven Dependency org.apache.plc4x plc4j-transport-tcp 0.13.0-SNAPSHOT Transport Syntax: {IP address or hostname}:{port} The port can be omitted, if the protocol provides a default port value. Options: none","title":"TCP","component":"plc4x","version":"pre-release","name":"tcp","url":"/plc4x/pre-release/users/transports/tcp.html","titles":[]},"100":{"id":100,"text":"Name Value Description Code udp Name UDP Socket Communication Maven Dependency org.apache.plc4x plc4j-transport-udp 0.13.0-SNAPSHOT Transport Syntax: {IP address or hostname}:{port} The port can be omitted, if the protocol provides a default port value. Options: none","title":"UDP","component":"plc4x","version":"pre-release","name":"udp","url":"/plc4x/pre-release/users/transports/udp.html","titles":[]},"101":{"id":101,"text":"For the Freemarker language output we are using an unmodified version of Apache Freemarker to generate output. The boilerplate code for providing a PLC4X language module is located in the org.apache.plc4x.plugins:plc4x-code-generation-language-base-freemarker maven module, inside the FreemarkerLanguageOutput class. This class configures a Freemarker context and provides standardized attributes inside this: packageName: Java style package name which can be used to create some form of directory structure. typeName: Simple string type name type: ComplexTypeDefinition instance containing all the information for the type that code should be generated for. helper: As some times it is pretty complicated to create all the output in Freemarker, the helper allows to provide code that is used by the template that help with generating output. A Freemarker-based output module, has to provide a set of Template instances as well as provide a FreemarkerLanguageTemplateHelper instance. In general, we distinguish between these types of templates: Spec Templates (Global output generated once per driver in total) Complex Type Templates (Generates output for a complex type) Enum Templates (Generates output for enum types) DataIO Templates (Generates output for reading and writing PlcValues, which are our PLC4X form of presenting input and output data to our users) For each of these, the developer can provide a list of templates, which then can generate multiple files per type (Which is important for languages such as C where for every type we need to generate a Header file (.h) and an Implementation (.c)) What the FreemarkerLanguageOutput then does, is iterate over all types provided by the protocol module, and then iterate over all templates the current language defines. The only convention used in this utility, is that the first line of output a template generates will be treated as the path relative to the base output directory. It will automatically create all needed intermediate directories and generate the rest of the input to the file specified by the first line. If this line is empty, the output is skipped for this type. package org.apache.plc4x.language.java; import com.google.googlejavaformat.java.Formatter; import com.google.googlejavaformat.java.FormatterException; import freemarker.template.Configuration; import freemarker.template.Template; import org.apache.commons.io.FileUtils; import org.apache.plc4x.plugins.codegenerator.protocol.freemarker.FreemarkerLanguageOutput; import org.apache.plc4x.plugins.codegenerator.protocol.freemarker.FreemarkerLanguageTemplateHelper; import org.apache.plc4x.plugins.codegenerator.types.definitions.TypeDefinition; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.*; public class JavaLanguageOutput extends FreemarkerLanguageOutput { private static final Logger LOGGER = LoggerFactory.getLogger(JavaLanguageOutput.class); private final Formatter formatter = new Formatter(); @Override public String getName() { return \"Java\"; } @Override public Set supportedOptions() { return Collections.singleton(\"package\"); } @Override public List supportedOutputFlavors() { return Arrays.asList(\"read-write\", \"read-only\", \"passive\"); } @Override protected List getSpecTemplates(Configuration freemarkerConfiguration) { return Collections.emptyList(); } @Override protected List getComplexTypeTemplates(Configuration freemarkerConfiguration) throws IOException { return Arrays.asList( freemarkerConfiguration.getTemplate(\"templates/java/pojo-template.java.ftlh\"), freemarkerConfiguration.getTemplate(\"templates/java/io-template.java.ftlh\")); } @Override protected List getEnumTypeTemplates(Configuration freemarkerConfiguration) throws IOException { return Collections.singletonList( freemarkerConfiguration.getTemplate(\"templates/java/enum-template.java.ftlh\")); } @Override protected List getDataIoTemplates(Configuration freemarkerConfiguration) throws IOException { return Collections.singletonList( freemarkerConfiguration.getTemplate(\"templates/java/data-io-template.java.ftlh\")); } @Override protected FreemarkerLanguageTemplateHelper getHelper(TypeDefinition thisType, String protocolName, String flavorName, Map types, Map options) { return new JavaLanguageTemplateHelper(thisType, protocolName, flavorName, types, options); } @Override protected void postProcessTemplateOutput(File outputFile) { try { FileUtils.writeStringToFile( outputFile, formatter.formatSourceAndFixImports( FileUtils.readFileToString(outputFile, StandardCharsets.UTF_8) ), StandardCharsets.UTF_8 ); } catch (IOException | FormatterException e) { LOGGER.error(\"Error formatting {}\", outputFile, e); } } } The getName method returns Java, this is what needs to be defined in the plc4x-maven-plugin configuration in the language option in order to select this output format. supportedOptions tells the plugin which option tags this code-generation output supports. In case of the Java output, this is only the package option, which defines the package name of the generated output. With supportedOutputFlavors we tell the user, that in general we support the three options: read-write, read-only and passive as valid inputs for the outputFlavor config option of the code-generation plugin. In this case Java doesn’t require any global files being generated for java, so we simply return an empty collection. For complex types, we currently use two templates (however this will soon be reduced to one). So for every complex type in a protocol definition, the templates: templates/java/pojo-template.java.ftlh and templates/java/io-template.java.ftlh will be executed. In case of enum types, only one template is being used. Same as for data-io. The next important method is the getHelper method, which returns an object, that is passed to the templates with the name helper. As mentioned before, a lot of operations would be too complex to implement in pure Freemarker code, so with these helpers every language can provide a helper utility for handling the complex operations. Here an example for a part of a template for generating Java POJOs: ${helper.packageName(protocolName, languageName, outputFlavor)?replace(\".\", \"/\")}/${type.name}.java /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * \"License\"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package ${helper.packageName(protocolName, languageName, outputFlavor)}; ... imports ... // Code generated by code-generation. DO NOT EDIT. public abstract class ${type.name} extends ${type.parentType.name} implements Message { ... SNIP ... } So as you can see, the first line will generate the file-path of the to be generated output. As when creating more and more outputs for different languages, we have realized, that a lot of the code needed in the Helper utility repeats, we therefore introduced a so-called BaseFreemarkerLanguageTemplateHelper which contains a lot of stuff, that is important when generating new language output.","title":"Apache Freemarker","component":"plc4x","version":"pre-release","name":"freemarker","url":"/plc4x/pre-release/developers/code-gen/language/freemarker.html","titles":[{"text":"Example Java output","hash":"_example_java_output","id":1}]},"102":{"id":102,"text":"The DF1 protocol has three basic messages: a command message, acknowledge and not acknowledge. A 0x10 is used as delimiter to differentiate between the messages and parts of the command message. ACK NAK 10 06 10 15 This is what a read command message looks like in full-duplex mode using CRC as checksum: Name DLE STX DST SRC CMD STS TNS ADDR SIZE DLE ETX CRC Value 10 02 XX XX 01 00 XX XX XX XX 02 10 03 XX XX The according response with the requested byte data: Name DLE STX DST SRC CMD STS TNS DATA SIZE DLE ETX CRC Value 10 02 XX XX 41 00 XX XX XX XX 02 10 03 XX XX Every message starts with a DLE = 0x10. The second byte is used to differentiate what type of message will follow. In the case of a command message it is 0x02. DST and SRC specify the target and source of the message. CMD = 0x01 means an unprotected read is requested, the command response code is always attained with the addition of 0x40. STS is a status byte, TNS is the transaction counter that is incremented by the master and used to recognize the specific message response. ADDR is the memory address being requested, size specifies how many bytes are to be read. DLE + ETX mark the end of the message, the last two bytes are the CRC that is calculated using the previously sent bytes. Here is the MSpec to model the behaviour: [discriminatedType DF1Symbol [const uint 8 messageStart 0x10] [discriminator uint 8 symbolType] [typeSwitch 'symbolType' ['0x02' DF1SymbolMessageFrame [simple uint 8 destinationAddress] [simple uint 8 sourceAddress] [simple DF1Command command] [const uint 8 messageEnd 0x10] [const uint 8 endTransaction 0x03] [checksum uint 16 'crc' 'STATIC_CALL(\"org.apache.plc4x.java.df1.readwrite.utils.StaticHelper.crcCheck\", destinationAddress, sourceAddress, command)'] ] ['0x06' DF1SymbolMessageFrameACK ] ['0x15' DF1SymbolMessageFrameNAK ] ] ] [discriminatedType DF1Command [discriminator uint 8 commandCode] [simple uint 8 status] [simple uint 16 transactionCounter] [typeSwitch 'commandCode' ['0x01' DF1UnprotectedReadRequest [simple uint 16 address] [simple uint 8 size] ] ['0x41' DF1UnprotectedReadResponse [manualArray uint 8 'data' terminated 'STATIC_CALL(\"org.apache.plc4x.java.df1.readwrite.utils.StaticHelper.dataTerminate\", io)' 'STATIC_CALL(\"org.apache.plc4x.java.df1.readwrite.utils.StaticHelper.readData\", io)' 'STATIC_CALL(\"org.apache.plc4x.java.df1.readwrite.utils.StaticHelper.writeData\", io, element)' 'STATIC_CALL(\"org.apache.plc4x.java.df1.readwrite.utils.StaticHelper.dataLength\", data)'] ] ] ] The basic object is the DF1Symbol, where the second byte is used to distinguish between the different message types using a typeSwitch. In the case of a command message, the message frame contains the DF1Command to further differentiate between the command types. Currently only the unprotected read and its response are implemented.","title":"Example: DF1 MSpec","component":"plc4x","version":"pre-release","name":"df1","url":"/plc4x/pre-release/developers/code-gen/protocol/df1.html","titles":[]},"103":{"id":103,"text":"The MSpec format (Message Specification) was a result of a brainstorming session after evaluating a lot of other options. We simply sat down and started to write some imaginary format (imaginary was even the initial Name we used Machine-Readable SPEC = mspec). After we had an initial format that seemed to do the trick, we then stated creating parses for this and started iteratively fine-tuning both spec and parsers as part of the process of implementing new protocols and language templates. It’s a text-based format. At the root level of these specs are a set of type, discriminatedType, dataIo and enum blocks. type elements are objects who`s content and structure is independent of the input. An example would be the TPKTPacket of the S7 format: [type TPKTPacket [const uint 8 protocolId 0x03] [reserved uint 8 '0x00'] [implicit uint 16 len 'payload.lengthInBytes + 4'] [simple COTPPacket('len - 4') payload] ] A discriminatedType type, in contrast, is an object who`s content and structure is influenced by the input. Every discriminated type can contain an arbitrary number of normal fields but must contain exactly one typeSwitch element. For example part of the spec for the S7 format looks like this: [discriminatedType S7Message [const uint 8 protocolId 0x32] [discriminator uint 8 messageType] [reserved uint 16 '0x0000'] [simple uint 16 tpduReference] [implicit uint 16 parameterLength 'parameter != null ? parameter.lengthInBytes : 0'] [implicit uint 16 payloadLength 'payload != null ? payload.lengthInBytes : 0'] [typeSwitch messageType ['0x01' S7MessageRequest ] ['0x02' S7MessageResponse [simple uint 8 errorClass] [simple uint 8 errorCode] ] ['0x03' S7MessageResponseData [simple uint 8 errorClass] [simple uint 8 errorCode] ] ['0x07' S7MessageUserData ] ] [optional S7Parameter ('messageType') parameter 'parameterLength > 0'] [optional S7Payload ('messageType', 'parameter') payload 'payloadLength > 0' ] ] A type`s start is declared by an opening square bracket [ followed by the type or discriminatedType keyword, which is directly followed by a name. A Type definition is ended with a closing square bracket ]. Every type definition contains a list of so-called fields. The list of available field types are: abstract: used in the parent type declaration do declare a field that has to be defined with the identical type in all subtypes (reserved for discriminatedType). array: array of simple or complex typed objects. assert: generally similar to constant fields, however do they throw AssertionExceptions instead of hard ParseExceptions. They are used in combination with optional fields. checksum: used for calculating and verifying checksum values. const: expects a given value and causes a hard exception if the value doesn’t match. discriminator: special type of simple typed field which is used to determine the concrete type of object (reserved for discriminatedType). enum: special form of field, used if an enum types property is to be used instead of it’s primary value. implicit: a field required for parsing, but is usually defined though other data, so it’s not stored in the object, but calculated on serialization. manualArray: like an array field, however the logic for serializing, parsing, number of elements and size have to be provided manually. manual: simple field, where the logic for parsing, serializing and size have to be provided manually. optional: simple or complex typed object, that is only present if an optional condition expression evaluates to true and no AssertionException is thrown when parsing the referenced type. padding: field used to add padding data to make datastructures aligned. peek: field that tries to parse a given structure without actually consuming the bytes. reserved: expects a given value, but only warns if condition is not meet. simple: simple or complex typed object. typeSwitch: not a real field, but indicates the existence of subtypes, which are declared inline (reserved for discriminatedType). unknown: field used to declare parts of a message that still has to be defined. Generally used when reverse-engineering a protocol. Messages with unknown fields can only be parsed and not serialized. validation: this field is not actually a real field, it’s more a condition that is checked during parsing and if the check fails, it throws a validation exception, wich is handled by virtual: generates a field in the message, that is generally only used for simplification. It’s not used for parsing or serializing. The full syntax and explanations of these type follow in the following chapters. Another thing we have to explain are how types are specified. In general, we distinguish between two types of types used in field definitions: simple types complex types Simple types are usually raw data the format is: {base-type} {size} The base types available are currently: bit: Simple boolean value or bit. byte: Special value fixed to 8 bit, which defaults to either signed or unsigned depending on the programming language (Java it defaults to signed integer values and in C and Go it defaults to unsigned integers). int: The input is treated as signed integer value. uint: The input is treated as unsigned integer value. float: The input is treated as floating point number. string: The input is treated as string. Then for dataIo types we have some additional types: - time: The input is treated as a time representation - date: The input is treated as a date representation - dateTime: The input is treated as a date with time All except the bit and byte types take a size value which provides how many bits should be read. For the bit field, this obviously defaults to 1 and for the byte the bits default to 8. So reading an unsigned 8-bit integer would be: uint 8. There is currently one special type, reserved for string values, whose length is determined by an expression instead of a fixed number of bits. It is considered a variable length string: vstring: The input is treated as a variable length string and requires an expression tp provide the number of bits to read. In contrast to simple types, complex types reference other complex types (Root elements of the spec document). How the parser should interpret them is defined in the referenced types definition. In the example above, for example the S7Parameter is defined in another part of the spec. An array field is exactly what you expect. It generates an field which is not a single-value element but an array or list of elements. [array {bit|byte} {name} {count|length|terminated} '{expression}'] [array {simple-type} {size} {name} {count|length|terminated} '{expression}'] [array {complex-type} {name} {count|length|terminated} '{expression}'] Array types can be both simple and complex typed and have a name. An array field must specify the way it’s length is determined as well as an expression defining it’s length. Possible values are: - count: This means that exactly the number of elements are parsed as the expression specifies. - length: In this case a given number of bytes are being read. So if an element has been parsed and there are still bytes left, another element is parsed. - terminated: In this case the parser will continue reading elements until it encounters a termination sequence. An assert field is pretty much identical to a const field. The main difference however it how the case is handled, if the parsed value does not match the expected value. [assert {bit|byte} {name} '{assert-value}'] [assert {simple-type} {size} {name} '{assert-value}'] While a const field would abort parsing in total with an error, an assert field with abort parsing, but the error will only bubble up in the stack till the first optional field is found. In this case the parser will be rewound to the position before starting to parse the optional field and continue parsing with the next field, skipping the optional field. If there is no upstream optional field, then parsing of the message terminates with an error. See also: - validation field: Similar to an assert field, however no parsing is done, and instead simply a condition is checked. - optional field: optional fields are aware of the types of parser errors produced by assert and validation fields A checksum field can only operate on simple types. [checksum {bit|byte} {name} '{checksum-expression}'] [checksum {simple-type} {size} {name} '{checksum-expression}'] When parsing a given simple type is parsed and then the result is compared to the value the checksum-expression provides. If they don’t match an exception is thrown. When serializing, the checksum-expression is evaluated and the result is then output. Note: As quite often a checksum is calculated based on the byte data of a message read up to the checksum, an artificial variable is available in expressions called checksumRawData of type byte[] which contains an array of all the byte data read in the current message element and it’s sub types in case of a discriminated type. This field doesn’t keep any data in memory. See also: - implicit field: A checksum field is similar to an implicit field, however the checksum-expression is evaluated are parsing time and throws an exception if the values don’t match. A const field simply reads a given simple type and compares to a given reference value. [const {bit|byte} {name} {reference}] [const {simple-type} {size} {name} {reference}] When parsing it makes the parser throws an Exception if the parsed value does not match the expected one. When serializing is simply outputs the expected constant. This field doesn’t keep any data in memory. See also: - implicit field: A const field is similar to an implicit field, however it compares the parsed input to the reference value and throws an exception if the values don’t match. Discriminator fields are only used in `discriminatedType`s. [discriminator {simple-type} {size} {name}] They are used, in cases where the value of a field determines the concrete type of a discriminated type. In this case we don’t have to waste memory on storing the discriminator value and this can be statically assigned to the type. When parsing a discriminator fields result just in being a locally available variable. When serializing is accesses the discriminated types constants and uses these as output. See also: - implicit field: A discriminator field is similar to an implicit field, however doesn’t provide a serialization expression as it uses the discrimination constants of the type it is. - discriminated types Implicit types are fields that get their value implicitly from the data they contain. [implicit {bit|byte} {name} '{serialization-expression}'] [implicit {simple-type} {size} {name} '{serialization-expression}'] When parsing an implicit type is available as a local variable and can be used by other expressions. When serializing the serialization-expression is executed and the resulting value is output. This type of field is generally used for fields that handle numbers of elements or length values as these can be implicitly calculated at serialization time. This field doesn’t keep any data in memory. [manualArray {bit|byte} {name} {count|length|terminated} '{loop-expression}' '{serialization-expression}' '{deserialization-expression}' '{length-expression}'] [manualArray {simple-type} {size} {name} {count|length|terminated} '{loop-expression}' '{serialization-expression}' '{deserialization-expression}' '{length-expression}'] [manualArray {complex-type} {name} {count|length|terminated} '{loop-expression}' '{serialization-expression}' '{deserialization-expression}' '{length-expression}'] [manual {bit|byte} {name} '{serialization-expression}' '{deserialization-expression}' '{length-expression}'] [manual {simple-type} {size} {name} '{serialization-expression}' '{deserialization-expression}' '{length-expression}'] [manual {complex-type} {name} '{serialization-expression}' '{deserialization-expression}' '{length-expression}'] An optional field is a type of field that can also be null. [optional {bit|byte} {name} ('{optional-expression}')?] [optional {simple-type} {size} {name} ('{optional-expression}')?] [optional {complex-type} {name} ('{optional-expression}')?] The optional-expression attribute is optional. If it is provided the optional-expression is evaluated. If this results in`false` nothing is parsed, if it evaluates to true it is parsed. In any case, if when parsing the content of an optional field a assert or validation field fails, the parser is rewound to the position before starting to parse the optional field, the optional field is then skipped and the parser continues with the next field. When serializing, if the field is null nothing is output, if it is not null it is serialized normally. See also: - simple field: In general optional fields are identical to simple fields except the ability to be null or be skipped. - assert: Assert fields are similar to const fields, but can abort parsing of an optional filed. - validation: If a validation field in any of the subtypes fails, this aborts parsing of the optional field. A padding field allows aligning of data blocks. It outputs additional padding data, given amount of times specified by padding expression. Padding is added only when result of expression is bigger than zero. [padding {bit|byte} {name} '{pading-value}' '{times-padding}'] [padding {simple-type} {size} {name} '{pading-value}' '{times-padding}'] When parsing a padding field is being parsed, the times-padding expressions determines how often the padding-value should be read. So it doesn’t really check if the read values match the padding-value, it just ensures the same amount of bits are being read. The read values are simply discarded. When serializing, the times-padding defines how often the padding-value should be written. This field doesn’t keep any data in memory. Reserved fields are very similar to const fields, however they don’t throw exceptions, but instead log messages if the values don’t match. The reason for this is that in general reserved fields have the given value until they start being used. If the field starts to be used this shouldn’t break existing applications, but it should raise a flag as it might make sense to update the drivers. [reserved {bit|byte} {name} '{reference}'] [reserved {simple-type} {size} {name} '{reference}'] When parsing the values a reserved field is parsed and the result is compared to the reference value and then discarded. If the values don’t match, a log message is written. This field doesn’t keep any data in memory. See also: - const field Simple fields are the most common types of fields. A simple field directly mapped to a normally typed field of a message type. [simple {bit|byte} {name}] [simple {simple-type} {size} {name}] [simple {complex-type} {name}] When parsing, the given type is parsed (can’t be null) and saved in the corresponding model instance’s property field. When serializing it is serialized normally using either a simple type serializer or by delegating serialization to a complex type. These types of fields can only occur in discriminated types. A discriminatedType must contain exactly one typeSwitch field, as it defines the sub-types. [typeSwitch {field-or-attribute-1}(,{field-or-attribute-2}, ...) ['{field-1-value-1}' {subtype-1-name} ... Fields ... ] ['{field-1-value-2}', '{field-2-value-1}' {subtype-2-name} ... Fields ... ] ['{field-1-value-3}', '{field-2-value-2}' {subtype-2-name} [uint 8 'existing-attribute-1', uint 16 'existing-attribute-2'] ... Fields ... ] A type switch element must contain a list of at least one argument expression. Only the last option can stay empty, which results in a default type. Each subtype declares a comma-separated list of concrete values. It must contain at most as many elements as arguments are declared for the type switch. The matching type is found during parsing by starting with the first argument. If it matches and there are no more values, the type is found, if more values are provided, they are compared to the other argument values. If no type is found, an exception is thrown. Inside each subtype can declare fields using a subset of the types (discriminator and typeSwitch can’t be used here) The third case in above code-snippet also passes a named attribute to the subtype. The name must be identical to any argument or named field parsed before the switchType. These arguments are then available for expressions or passing on in the subtypes. See also: - discriminatedType This type of field is mainly used when working on reverse-engineering a new protocol. It allows parsing any type of information, storing and using it and serializing it back. In general, it’s something similar to a simple field, just explicitly states, that we don’t yet quite know how to handle the content. As mentioned before, a validation field is not really a field, it’s a check that is added to the type parser. If the expression provided in the validation field fails, the parser aborts parsing and goes up the stack, till it finds the first optional field. If it finds one, it rewinds the parser to the position just before starting to parse the optional field, then skips the optional fields and continues with the next field. If there is no optional field up the stack, then parsing fails. Virtual fields have no impact on the input or output. They simply result in creating artificial get-methods in the generated model classes. [virtual {bit|byte} {name} '{value-expression}'] [virtual {simple-type} {size} {name} '{value-expression}'] [virtual {complex-type} {name} '{value-expression}'] Instead of being bound to a property, the return value of a virtual property is created by evaluating the value-expression. Sometimes it is necessary to pass along additional parameters. If a complex type requires parameters, these are declared in the header of that type. [discriminatedType S7Payload(uint 8 'messageType', S7Parameter 'parameter') [typeSwitch 'parameter.discriminatorValues[0]', 'messageType' ['0xF0' S7PayloadSetupCommunication] ['0x04','0x01' S7PayloadReadVarRequest] ['0x04','0x03' S7PayloadReadVarResponse [arrayField S7VarPayloadDataItem 'items' count 'CAST(parameter, S7ParameterReadVarResponse).numItems'] ] ['0x05','0x01' S7PayloadWriteVarRequest [arrayField S7VarPayloadDataItem 'items' count 'COUNT(CAST(parameter, S7ParameterWriteVarRequest).items)'] ] ['0x05','0x03' S7PayloadWriteVarResponse [arrayField S7VarPayloadStatusItem 'items' count 'CAST(parameter, S7ParameterWriteVarResponse).numItems'] ] ['0x00','0x07' S7PayloadUserData ] ] ] Therefore, wherever a complex type is referenced an additional list of parameters can be passed to the next type. Here comes an example of this in above snippet: [field S7Payload 'payload' ['messageType', 'parameter']] Arguments influence the way the parser or serializer operates. Wherever an parser-argument is used, this should also be valid in all subtypes the parser processes. A byteOrder argument can set or change the byte-order used by the parser. We currently support two variants: BIG_ENDIAN LITTLE_ENDIAN Each simple type has a default encoding, which is ok for a very high percentage of cases. Unsigned integers for example use 2s-complement notation, floating point values are encoded in IEEE 754 single- or double precision encoding. Strings are encoded as UTF-8 per default. However, in some cases an alternate encoding needs to be used. Especially when dealing with Strings, different encodings, such as ASCII, UTF-16 and many more, can be used. But also for numeric values, different encodings might be used. For example does KNX use a 16bit floating point encoding, which is not standard or in S7 drivers a special encoding was used to encode numeric values so they represent the number in hex format. An encoding attribute can be used to select a non-default encoding.","title":"The MSpec format","component":"plc4x","version":"pre-release","name":"mspec","url":"/plc4x/pre-release/developers/code-gen/protocol/mspec.html","titles":[{"text":"Simple Types","hash":"_simple_types","id":1},{"text":"Complex Types","hash":"_complex_types","id":2},{"text":"Field Types and their Syntax","hash":"_field_types_and_their_syntax","id":3},{"text":"array Field","hash":"_array_field","id":4},{"text":"assert Field","hash":"_assert_field","id":5},{"text":"checksum Field","hash":"_checksum_field","id":6},{"text":"const Field","hash":"_const_field","id":7},{"text":"discriminator Field","hash":"_discriminator_field","id":8},{"text":"implicit Field","hash":"_implicit_field","id":9},{"text":"manualArray Field","hash":"_manualarray_field","id":10},{"text":"manual Field","hash":"_manual_field","id":11},{"text":"optional Field","hash":"_optional_field","id":12},{"text":"padding Field","hash":"_padding_field","id":13},{"text":"peek Field","hash":"_peek_field","id":14},{"text":"reserved Field","hash":"_reserved_field","id":15},{"text":"simple Field","hash":"_simple_field","id":16},{"text":"typeSwitch Field","hash":"_typeswitch_field","id":17},{"text":"unknown Field","hash":"_unknown_field","id":18},{"text":"validation Field","hash":"_validation_field","id":19},{"text":"virtual Field","hash":"_virtual_field","id":20},{"text":"Parameters","hash":"_parameters","id":21},{"text":"Serializer and Parser-Arguments","hash":"_serializer_and_parser_arguments","id":22},{"text":"byteOrder","hash":"_byteorder","id":23},{"text":"encoding","hash":"_encoding","id":24}]},"104":{"id":104,"text":"ConnectConnectedBrowseReadWriteSubscribeUnsubscribeinitializingSend 'Add Or Update AMS Routes'Send 'ADS Read Device Info'Receive 'Add Or Update AMS Routes'Receive 'ADS Read Device Info'Init Read Online and Offline VersionReset Symbol and Data-Type DataSend 'Read Online-Version (Symbolic)'Send 'Read Offline-Version'Receive 'Read Online-Version (Symbolic)'Receive 'Read Offline-Version'Send 'Read Symbol- and Data-Type-Table sizes'Receive 'Read Symbol- and Data-Type-Table sizes'Send 'Read Data-Type-Table'Receive 'Read Data-Type-Table'Send 'Read Symbol-Table'Receive 'Read Symbol-Table'Subscribe to changes to the Online- and Offline VersionBrowse: Send 'Read Symbol- and Data-Type-Table sizes'Browse: Receive 'Read Symbol- and Data-Type-Table sizes'Browse: Send 'Read Data-Type-Table'Browse: Receive 'Read Data-Type-Table'Browse: Send 'Read Symbol-Table'Browse: Receive 'Read Symbol-Table'Return API Browse ResultRead: Send 'Multi Item Address Resolution' for unresolvedRead: Receive 'Multi Item Address Resolution' for unresolvedRead: Send 'Multi Item Read'Read: Receive 'Multi Item Read'Read: Return API Read ResultRead: Send 'Single Item Address Resolution'Read: Receive 'Single Item Address Resolution'Read: Send 'Single Item Read'Read: Receive 'Single Item Read'Write: Send 'Multi Item Address Resolution' for unresolvedWrite: Receive 'Multi Item Address Resolution' for unresolvedWrite: Send 'Multi Item Write'Write: Receive 'Multi Item Write'Write: Return API Write ResultWrite: Send 'Single Item Address Resolution'Write: Receive 'Single Item Address Resolution'Write: Send 'Single Item Write'Write: Receive 'Single Item Write'Subscribe: Send 'Multi Item Address Resolution' for unresolvedSubscribe: Receive 'Multi Item Address Resolution' for unresolvedSubscribe: Send 'Single Item Address Resolution'Subscribe: Receive 'Single Item Address Resolution'Subscribe: Send 'Single Item 1 Subscibe'Subscribe: Receive 'Single Item 1 Subscibe'Subscribe: Send 'Single Item 2 Subscibe'Subscribe: Receive 'Single Item 2 Subscibe'Subscribe: Send 'Single Item n Subscibe'Subscribe: Receive 'Single Item n Subscibe'Subscribe: Return API Write ResultUnsubscribe: Send 'Single Item 1 Unsubscribe'Unsubscribe: Receive 'Single Item 1 Unsubscribe'Unsubscribe: Send 'Single Item 2 Unsubscribe'Unsubscribe: Receive 'Single Item 2 Unsubscribe'Unsubscribe: Send 'Single Item n Unsubscribe'Unsubscribe: Receive 'Single Item n Unsubscribe'Unsubscribe: Return API Unsubscribe ResultAPI Browse RequestAPI Read RequestAPI Write RequestAPI Subscription RequestAPI Unsubscription RequestUsing Authentication?truefalseConfig: Monitor PLC changes?truefalseConfig: Load Symbol- and Data-Type-Tables?truefalseConfig: Monitor PLC changes?trueUpdate the online- or offline version (Depending on wich one changed)Is symbol- and data-type-table loaded?truefalseIs single item read request?falseAre all field addresses resolved?unresolvedresolvedtrueIs the field address resolved?falsetrueIs single item write request?falseAre all field addresses resolved?unresolvedresolvedtrueIs the field address resolved?falsetrueIs single item subscription request?falseAre all field addresses resolved?unresolvedresolvedtrueIs the field address resolved?falsetrue","title":"Beckhoff ADS Protocol","component":"plc4x","version":"pre-release","name":"protocol","url":"/plc4x/pre-release/developers/protocols/ads/protocol.html","titles":[]},"105":{"id":105,"text":"ConnectConnectedBrowseReadWriteSubscribeUnsubscribeDisconnectinitializingSend ListServices requestReceive ListServices responseSend EipConnectionRequest requestReceive EipConnectionRequest responseSend GetAllAttributes requestSend OpenConnectionManager requestReceive GetAllAttributes responseReceive OpenConnectionManager responsereadWithConnectionManagerreadWithoutConnectionManagerreadWithoutMessageRouterSend SendUnitData requestReceive SendUnitData responseSend CipRRData requestReceive CipRRData responseSend unconnected CipReadRequest request for each tagReceive unconnected CipReadRequest responsewriteWithConnectionManagerwriteWithoutConnectionManagerwriteWithoutMessageRouterSend unconnected CipWriteRequest request for each tagReceive unconnected CipWriteRequest responseSend ConnectionManagerClose requestSend Disconnect requestReceive ConnectionManagerClose responseReceive Disconnect responseAPI Browse RequestAPI Read RequestAPI Write RequestAPI Subscription RequestAPI Unsubscription RequestAPI Disconnect RequestIf successfull, extract 'CIP encapsulation support' setting\"Response is an EipConnectionResponse\"?truefalseExtract setting for 'useMessageRouter' and 'useConnectionManager'. If useConnectionManagertruefalseconnectionId != 0truefalseuseMessageRouteruseConnectionManagertruefalsefalseuseMessageRouteruseConnectionManagertruefalsefalse","title":"EIP Protocol","component":"plc4x","version":"pre-release","name":"protocol","url":"/plc4x/pre-release/developers/protocols/eip/protocol.html","titles":[]},"106":{"id":106,"text":"Be sure to verify your downloads by these procedures using these KEYS for any Apache release. This release was mainly a release containing many bugfixes. We literally halved the number of open issues. A second major topic would have been another API streamlining in preparation to aiming for the big 1.0.0 release. The API was extended by additional features, that now allow tools to automatically provide support for tool assist when connecting to devices. Now additional information such as: - Which transports does a given driver support? - Which is the default transport for a given driver? - Which configuration-options does a driver have? - What types are these configuration options? - What are the default-values these configuration options have? - Which of these configuration options are required? - The same set of information is also available for the transports a driver is using. API: Made several bits of information available via the API allowing tools to provide more content assist when dealing with PLC4X connections. S7: The S7 driver now supports reading of STRING and WSTRING data-types without providing a maximum length. Build: Worked on making PLC4X provide reproducible builds. Added \"Ping\" functionality to: ADS, EIP, KNX, Mock, Modbus and Simulated drivers. The OPC-UA Java driver now support certificate-based authentication and encryption. Java 8 is no longer officially supported and Java 11 is the new base-line. Renamed the PlcDriverManager method listDrivers to getProtocolCodes Renamed the PlcDriverMetadata method canDiscover to isDiscoverySupported Renamed the PlcConnectionMetadata methods canRead, canWrite canSubscribe and canBrowse to isReadSupported, isWriteSupported, isSubscribeSupported and isBrowseSupported The configuration syntax for configuring transport-related config options in the connection-string was updated to be now prefixed with the transport name the option belongs to. S7: Several bugs and issues regarding supporting various duration, date and time data-types. S7: Implemented the missing 64bit (L-) types. KNX: Fixed an issue with decoding 16 bit floating point numbers. NiFi-Integration: The NiFi integration module was greatly improved. Core: Fixed several leaks of open threads. The APIs have been streamlined in a preparation for a hopefully soon 1.0.0 release. Many drivers have been re-implemented with much more features. Integration modules have been improved. Implemented a PLC4X-Server and PLC4X-Driver that allows using the server as a proxy for communicating with PLCs. The Modbus driver is now also available in the variants: \"modbus-rtu\" and \"modbus-ascii\" (Both using Serial communication, which however can be tunneled through a \"tcp\" and \"udp\" transport) The KNX driver in Java now supports reading \"knxproj\" files exported from the new ETS version 6. The name of the Modbus TCP driver was changed from \"modbus\" to \"modbus-tcp\". Removed the Apache Edgent (incubating) integration and examples related, as Edgent is abandoned and there were CVEs reported, which will not be fixed. We have replaced the BitString types with BYTE, WORD, DWORD, and LWORD which generally match their unsigned integer counterparts. So we are no longer returning lists of boolean values for any of these types. A lot of the work in this version went into refactoring and cleaning up our code generation. The code generation itself is now a lot cleaner and simpler as well as the code generated for Java. We also added a number of new field-types to allow implementing more sophisticated protocols. PLC4C now should also support all of the constructs mspec has to offer. This is a bugfix release aiming at directly fixing CVE-2021-43083 as well as updating the dependency to Log4J 2.14.0 which was affected by CVE-2021-44228 Please note that CVE-2021-43083 only affects the PLC4C part of PLC4X. CVE-2021-43083 Apache PLC4X 0.9.0 Buffer overflow in PLC4C via crafted server response This is an ordinary PLC4X release, containing changes that accumulated over time. It doesn’t have an explicit focus on a particular topic. The OPC UA driver has been replaced with a native driver. Previously Eclipse Milo was being used. Permit customized package names for code generation Added an initial draft of a Discover and Browse API to PLC4J PLC4Go now supports many more drivers PLC4Go received a huge internal refactoring and cleanup Major cleanup of PLC4C S7 Driver now supports event and alarm handling on some S7 models PLC4X-200 OPC-UA Driver not connecting if params string is not provided PLC4X-201 OPC-UA PlcList underlying type not compatible with Eclipse Milo PLC4X-202 OPC-UA Driver cannot write Unsigned Types PLC4X-276 [S7] The most of the supported types don’t work correctly PLC4X-278 Double Reading Error PLC4X-279 nioEventLoopGroup thread proliferation PLC4X-280 ADS route request swapped positions of route name and address PLC4X-291 DefaultPlcSubscriptionField cannot be cast to class OpcuaField PLC4X-298 [S7] When writing REAL values the Write operation fails with an internal error PLC4X-299 Modbus - Kafka Connect Configuration PLC4X-312 CAN NOT READ STRING FROM S7 PLC PLC4X-314 CAN NOT WRITING MANY DATA TO S7 ONE TIME This is an ordinary PLC4X release, containing changes that accumulated over time. It doesn’t have an explicit focus on a particular topic. The KNXnet/IP Driver now supports writing of values. The Modbus driver now supports more common notations of Modbus addresses using a pure-numeric notation. The ADS, KNX, Modbus, S7 and simulated drivers have been updated to support the IEC 61131-3 data-types. We are now including PLC4Go as PLC4X implementation in the programming language Go(lang) Integration with the Milo OPC UA Server is now available. Kafka Connect workers have been updated source and sink connectors are now included. The syntax of the S7 addresses changed slightly allowing to provide a string length. Without this, a STRING datatype will read 254 characters, by adding the size in round brackets to the type name will use the specified number. Examples: Read one String which is max 10 chars long: %DB2:30:STRING(10) Read an array of 3 Strings where each is max 10 chars long: %DB2:30:STRING(10)[3] The PLCValue types have been refactored to align with the types defined in IEC 61131-3 (https://en.wikipedia.org/wiki/IEC_61131-3) directly using the older Java types (PlcBoolean) is no longer possible. A lot of testing was done regarding the IEC 61131-3 data-types. This resulted in numerous bugfixes in many protocols. PLC4X-132 [S7] Communication to S7 PLC dies in some situations PLC4X-206 When writing short values exceptions are thrown while preparing the write request. PLC4X-207 No registered handler found for message TPKTPacket[], using default decode method - Communication with S7 and Modbus device hangs PLC4X-209 [S7] When writing INT and DINT values the Write operation fails with an internal error PLC4X-210 [KNX] When running a KNX Tunneling Subscription for a longer time there are packets that kill the connection PLC4X-211 PlcValues seem to always return \"true\" on the isXYZ\" checks. PLC4X-212 When writing multiple values in one request the item status is not correctly set PLC4X-213 [Modbus] The Modbus driver doesn’t handle error responses gracefully PLC4X-214 [Modbus] Holding register addresses have an offset of 1 (Not reading the correct address) PLC4X-215 Drivers using the BaseOptimizer (SingleFieldOptimizer) don’t handle error responses gracefully PLC4X-218 [Scraper] After stopping the scraper still the statistics are logged and the application doesn’t terminate PLC4X-239 Read DTL (Date and Time) PLC4X-240 Protocol error in reading string PLC4X-246 S7 driver hangs on read PLC4X-245 [Modbus] Apache NiFi processor throws java.io.IOException after a while PLC4X-255 Kafka Connector Source Task doesn’t block within poll() resulting in high CPU usage. PLC4X-261 Pooled connection manager returns a connection that isn’t connected in some situations. PLC4X-272 When splitting up large requests, too big sub-requests are generated (S7) PLC4X-256 ReadBuffer truncate last byte of even small payloads PLC4X-262 Error in reading Array PLC4X-270 Ads driver does not accept double-digit array indexes This version is the first after a major refactoring of the driver core. All previous driver versions are now considered deprecated and have been replaced by versions using the new driver structure and generated driver codebase. Drivers now support structured types using PlcValues The EIP (EtherNet/IP) driver no longer requires an external library and is implemented fully in the PLC4X project The Modbus driver no longer requires an external library and is implemented fully in the PLC4X project The new S7 Driver supports writing multiple entries in one request (The API allowed this from the beginning now not every item is wrapped in a single request. It should bring significant performance gains when writing multiple vlaues) S7 Driver now supports String datatypes. OSGi : Implementation of Drivers/Transports as OSGi services to be able to use them in an OSGi container. New Firmata protocol driver Due to the refactoring of the driver core there might be issues running drivers built against older core versions. This version doesn’t provide a Beckhoff AMS/ADS driver as this driver is still being ported to the new mspec format. All drivers connection strings now follow the same pattern: {protocol-code:(transport-code:)?//{transport-config}(?{params})? Please check the drivers documentation on our website: https://plc4x.apache.org/users/protocols/s7.html The karaf-feature modules are removed as the drivers now all provide both a feature.xml as well as a kar bundled archive PLC4X-174 UDP Transport does not accept ports containing 0 PLC4X-134 S7 is terminating the connection during handshake PLC4X-192 Support for conversion of complex connection string parameters This is the last release of PLC4X with the \"handwritten\" drivers. This Minor release will thus receive updates and fixes until most users have switched to 0.7 and above (with generated drivers). If you are using the S7 Driver you should update to this Version as the critical (memory leak) bug PLC4X-163 is fixed. PLC4X-168 A shorter S7 Field Syntax is Introduced. This release contains no further features and mostly stabilization. Moved the C++, C# and Python drivers into the sandbox Fixed Promise Chain for InternalPlcWriteRequest PLC4X-45 Add float support to Modbus Protocol PLC4X-164 Fix wrong NOT FOUND exception in OPC UA Driver PLC4X-166 Fixed Download Page PLC4X-163 Fixed Netty ByteBuf Leaks for S7 Driver PLC4X-158 Added Warning if no Pooled Driver is used for Scraper This is the first release containing our new generated drivers (AB-ETH) Implemented a new Apache Kafka Connect integration module Implemented a new Apache NiFi integration module Implemented a new Logstash integration module Implemented a driver for the AB-ETH protocol Implemented Apache Karaf features for S7 OSGI drivers PLC4X-121 Develop Code Generation to allow Generated Drivers in multiple Languages Sandbox (Beta-Features) - Implemented a new BACnet/IP passive mode driver - Implemented a new Serial DF1 driver PLC4X-104 S7 Driver Datatype TIME_OF_DAY causes ArrayOutOfBoundException PLC4X-134 S7 is terminating the connection during handshake PLC4X-139 PLC4X leaks sockets in case of connection problems PLC4X-141 String with real length of greater 127 throw an exception PLC4X-144 When requesting invalid addresses, the DefaultS7MessageProcessor produces errors This is the first release of Apache PLC4X as top-level project. The PlcConnection now supports a ping method to allow checking if an existing connection is still alive. Support of the OPC-UA protocol with the opc-ua-driver. Other Languages Support: — Added first versions of a C# .Net PLC4X API (plc4net) — Added first versions of a Python PLC4X API (plc4py) Added an Interop server which allows to relay requests from other languages to a Java Server ElasticSearch example was updated to use ElasticSearch 7.0.1, this might cause problems with older Kibana versions. No new features No incompatible changes. The S7 driver didn’t correctly handle \"fill-bytes\" in multi-item read-responses and multi-item write-requests Fixed NPE when reading odd-length array of one-byte base types Renamed flags \"F\" to Siemens Standard \"M\" (Marker) Fixed a bug in the DefaultS7MessageProcessor which didn’t correctly merge together split up items Object PLC Mapping (OPM) now has a Alias Registry to allow variable substitution at runtime and write support New module plc-scraper for applications that have to scrape a lot of sps fields with high frequency New integration apache-karaf to enable plc4j in a karaf runtime environment The 'plc4j-core' module has been merged into 'plc4j-api'. So there is no 'plc4j-core' module anymore. Just remove that dependency. The driver artifact names have changed so if you were using a plc4j-protocol-{name} you now need to change this to plc4j-driver-{name} Fixing dependency to the wrap url-handler When receiving responses with more than 512 byte, the IsoOnTcp protocol doesn’t work When the last item in a request is a DINT, the DefaultS7MessageProcessor dies Write operations seem to fail Fixed a Bug where S7 was not able to read arrays. Changed API: instead of passing request object to read({read-request}), write({write-request}) or subscribe({subscribe-request}) methods now the execute() method is called on the request itself New Connection Pool component New OPM (Object PLC Mapping) component (JPA for PLCs) Bug fixes","title":"Download","component":"plc4x","version":"latest","name":"download","url":"/plc4x/latest/users/download.html","titles":[{"text":"Current Releases","hash":"_current_releases","id":1},{"text":"0.12.0 Official source release [ SHA512 ] [ ASC ]","hash":"_0_12_0_official_source_release_sha512_asc","id":2},{"text":"New Features","hash":"_new_features","id":3},{"text":"Incompatible changes","hash":"_incompatible_changes","id":4},{"text":"Bug Fixes","hash":"_bug_fixes","id":5},{"text":"Previous Releases","hash":"_previous_releases","id":6},{"text":"0.11.0 Official source release [ SHA512 ] [ ASC ]","hash":"_0_11_0_official_source_release_sha512_asc","id":7},{"text":"New Features","hash":"_new_features_2","id":8},{"text":"Bug Fixes","hash":"_bug_fixes_2","id":9},{"text":"0.10.0 Official source release [ SHA512 ] [ ASC ]","hash":"_0_10_0_official_source_release_sha512_asc","id":10},{"text":"0.9.1 Official source release [ SHA512 ] [ ASC ]","hash":"_0_9_1_official_source_release_sha512_asc","id":11},{"text":"Bug Fixes","hash":"_bug_fixes_3","id":12},{"text":"0.9.0 Official source release [ SHA512 ] [ ASC ]","hash":"release-0_9_0","id":13},{"text":"New Features","hash":"_new_features_3","id":14},{"text":"Incompatible changes","hash":"_incompatible_changes_2","id":15},{"text":"Bug Fixes","hash":"_bug_fixes_4","id":16},{"text":"0.8.0 Official source release [ SHA512 ] [ ASC ]","hash":"release-0_8_0","id":17},{"text":"New Features","hash":"_new_features_4","id":18},{"text":"Incompatible changes","hash":"_incompatible_changes_3","id":19},{"text":"Bug Fixes","hash":"_bug_fixes_5","id":20},{"text":"0.7.0 Official source release [ SHA512 ] [ ASC ]","hash":"release-0_7_0","id":21},{"text":"New Features","hash":"_new_features_5","id":22},{"text":"Incompatible changes","hash":"_incompatible_changes_4","id":23},{"text":"Bug Fixes","hash":"_bug_fixes_6","id":24},{"text":"0.6.0 Official source release [ SHA512 ] [ ASC ]","hash":"release-0_6_0","id":25},{"text":"New Features","hash":"_new_features_6","id":26},{"text":"Incompatible changes","hash":"_incompatible_changes_5","id":27},{"text":"Bug Fixes","hash":"_bug_fixes_7","id":28},{"text":"0.5.0 Official source release [ SHA512 ] [ ASC ]","hash":"release-0_5_0","id":29},{"text":"New Features","hash":"_new_features_7","id":30},{"text":"Incompatible changes","hash":"_incompatible_changes_6","id":31},{"text":"Bug Fixes","hash":"_bug_fixes_8","id":32},{"text":"0.4.0 Official source release [ SHA512 ] [ ASC ]","hash":"release-0_4_0","id":33},{"text":"New Features","hash":"_new_features_8","id":34},{"text":"Incompatible changes","hash":"_incompatible_changes_7","id":35},{"text":"Bug Fixes","hash":"_bug_fixes_9","id":36},{"text":"Incubating Releases","hash":"_incubating_releases","id":37},{"text":"0.3.1 (incubating) Official source release [ SHA512 ] [ ASC ]","hash":"_0_3_1_incubating_official_source_release_sha512_asc","id":38},{"text":"New Features","hash":"_new_features_9","id":39},{"text":"Incompatible changes","hash":"_incompatible_changes_8","id":40},{"text":"Bug Fixes","hash":"_bug_fixes_10","id":41},{"text":"0.3.0 (incubating) Official source release [ SHA512 ] [ ASC ]","hash":"release-0_3_0","id":42},{"text":"New Features","hash":"_new_features_10","id":43},{"text":"Incompatible changes","hash":"_incompatible_changes_9","id":44},{"text":"Bug Fixes","hash":"_bug_fixes_11","id":45},{"text":"0.2.0 (incubating) Official source release [ SHA512 ] [ ASC ]","hash":"release-0_2_0","id":46},{"text":"Changes:","hash":"_changes","id":47},{"text":"0.1.0 (incubating) Official source release [ SHA512 ] [ ASC ]","hash":"release-0_1_0","id":48}]},"107":{"id":107,"text":"This part of the PLC4X website is dedicated to people wanting to use Apache PLC4X. It will provide information on the features and how to use them as well as documentation on how to use the different integration modules. Apache PLC4X allows you to communicate directly with your industrial Hardware, without having to retrofit it. This is possible, as PLC4X implements the protocols for the most common industrial communication protocols and uses these to communicate with the various types of devices. The one thing that separates PLC4X from most other, mostly commercial drivers, is that we don’t try to implement each protocol that it would be a certifiable protocol-stack, but concentrate on making a core set of operations available the identical way over all drivers. This allows users to develop software mostly independent of the actual type of hardware used. Apache PLC4X is an effort to create a set of libraries for communicating with industrial grade programmable logic controllers (PLCs) in a uniform way. We are planning on shipping libraries for usage in: Java Go C (not ready for usage) Python (not ready for usage) C# (.Net) (not ready for usage - abandoned) PLC4X also integrates with other Apache projects, such as: Apache Calcite Apache Camel Apache Kafka-Connect Apache Karaf Apache NiFi And brings stand-alone (Java) utils like: OPC-UA Server: Enables you to communicate with legacy devices using PLC4X with OPC-UA. PLC4X Server: Enables you to communicate with a central PLC4X Server which then communicates with devices via PLC4X. It also provides (Java) tools for usage inside an application: Connection Cache (Connection Cache for PLC connections) Object PLC Mapping (OPM) (Object PLC Mapping - Like JPA for PLC data) Scraper (Util for automating fetching PLC data using a variety of triggers) Testing-Utils (Want to build/test an application without having a PLC? … this is the tool for you)","title":"Users","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/users/index.html","titles":[{"text":"About Apache PLC4X","hash":"_about_apache_plc4x","id":1}]},"108":{"id":108,"text":"","title":"Preparing Issues & Bug Reports","component":"plc4x","version":"latest","name":"preparing-issues","url":"/plc4x/latest/users/preparing-issues.html","titles":[]},"109":{"id":109,"text":"","title":"Home","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/index.html","titles":[]},"110":{"id":110,"text":"The companies in the following list are actively using Apache PLC4X. Name Market Description codecentric AG IT Consulting We develop software that solves real problems - and PLC4X solves the problem of IoT connectivity in a highly performant and open source way ConnectorIO sp. z o.o. IoT / Software / Cloud We developed an open source gateway runtime and compatible cloud service to manage installations and collected information. We utilize PLC4X to gain access to data provided by industrial hardware. IndustryFusion IIoT / Industry 4.0 In the End-2-End Industry 4.0 solution IndustryFusion we use PLC4X for brownfield-connectivity, i.e. the connectivity to existing machines on the shop floor. ISW University of Stuttgart IIoT / Industry 4.0 / Research We use PLC4X for our research projects because of its great potential for retrofitting scenarios, the simplicity of the API, an active community for broad platform support and the open source flexibility. Lebbing automation & drives GmbH https://in2lutions.com/in2lutions/[In2Lutions] Automation / Drives / Industry 4.0 We used PLC4X to developed a solution to synchronize data between PLCs and customers systems. Our Solution is used for new products as well as for industry 4.0 upgrades to older machines. PIETRORIMOLDI&C s.r.l. IIoT / Analytics We started a project which deals with long term data analysis; the data are gathered from machines controlled in real time by PLC. Failure prediction and behavioral working condition monitoring are the main goals. PLC4x library is a fundamental part of the process. pragmatic industries GmbH (I)IoT / Industry 4.0 PLC4X is an important part of our platform Digital Cockpit which we develop in-house. pragmatic minds GmbH Big Data / Analytics We use PLC4X to collect data from different types of PLCs as preliminary step for data analytics and visualization. Record Evolution GmbH Iot / Industry 4.0 / Data Science We developed a platform for IoT development and Data Science. We are using PLC4X to enable IoT devices in our platform to extract data from PLCs of different vendors, using different protocols. The people working on Apache PLC4X, and the companies behind them have put an enormous amount of effort into creating this great tool. The problem some of them are facing, is that they are usually not allowed to mention which companies are using PLC4X. However being able to name references is most vital nowdays in gaining trust. So if you work for a company which is using Apache PLC4X, one way you can help the project is by admitting you are using it. This might be only very little active contribution on your side, but for the project this is of extremely high value. On this page we are maintaining a list of companies openly communicating that they are using Apache PLC4X. If your company is using Apache PLC4X and you would like to give back to the community, please create a Pull-Request on github or post an email to dev@plc4x.apache.org and give us the permission to list your company.","title":"Companies using Apache PLC4X","component":"plc4x","version":"latest","name":"adopters","url":"/plc4x/latest/users/adopters.html","titles":[]},"111":{"id":111,"text":"As every Apache project, so is Apache PLC4X generally available and usable by anyone free of charge. Also does the Apache PLC4X Community offer free support on the official project Mailinglist. This support is however done voluntatily by the community, so there are no service-level-agreements, guaranteed reaction times or guarantee that an issue will be addressed or solved. If you or your business has higher demands on guaranteed availability and execution of support requests, the following individuals and companies have commercial support offerings. The information provided here was provided by the entities named, and is not verified (except the Involvement Level), updated or endorsed by the Apache Software Foundation or the Apache PLC4X project. Name Description Contact Person(s) Contact Email(s) Contact Phone(s) Involvement Level ConnectorIO sp. z o.o. workshops, individual software development Łukasz Dywicki lukasz@connectorio.com PMC Member Timecho Europe GmbH consulting, workshops, individual software development, protocol/driver development, data-storage solutions Christofer Dutz christofer.dutz@timecho.com PMC Member Anyone who provides Apache PLC4X related services can be added to this list (e.g. training, consulting, custom software development, support, installation or related services). Please create a Pull-Request on GitHub as described here. The resource requiring editing can be found here We will then check if the entry fulfills the requirements and accept the changes as soon as all of these have been addressed.","title":"Commercial support offerings for Apache PLC4X","component":"plc4x","version":"latest","name":"commercial-support","url":"/plc4x/latest/users/commercial-support.html","titles":[{"text":"Who can be added to this list?","hash":"_who_can_be_added_to_this_list","id":1},{"text":"How can I get added to this list?","hash":"_how_can_i_get_added_to_this_list","id":2}]},"112":{"id":112,"text":"Apache Kafka, KSQL and Apache PLC4X for IIoT Data Integration and Processing Edge Computing und Industrial IoT mit Apache Edgent und Apache PLC4X Advanced: Exposing a PLC as JSON Web Services (using PLC4X) High Security Iiot Communication With Apache Plc4X, Apache Asia Con, August 2021 Apache Plc4X For Can Bus And Canopen, Apache Asia Con, August 2021 Eclipse IoT Meetup, December 2020 Librecon - Open Industry 4.0, 2020 Analyzing IIoT data with PLC4X and StreamPipes Apache PLC4X or: How I Learned to Stop Worrying and Love the Industrial IoT \"Hands on\" - Reading out Siemens S7 with Apache PLC4X \"Hands On\": Siemens S7 auslesen mit PLC4X (GERMAN) Mittelstand meets Open Source - Einführung in das Industrial IoT (IIoT) (GERMAN) Apache Kafka, KSQL and Apache PLC4X for IIoT Data Integration and Processing Episode IV - A New Hope: Industry 4.0 done our way From an idea to an Apache TLP Wie wir mit Apache PLC4X die Silos in der Automatisierungsindustrie aufbechen Apache Kafka, KSQL and Apache PLC4X for IIoT Data Integration and Processing Episode iv a new hope - Industry 4.0 done our way From the Chip to the Cloud with Apache Software Digitizing your factory the open source way From an idea to an Apache TLP Building scada systems with apache software","title":"Blogs, Videos and Slides on Apache PLC4X","component":"plc4x","version":"latest","name":"blogs-videos-and-slides","url":"/plc4x/latest/users/blogs-videos-and-slides.html","titles":[{"text":"Blog posts","hash":"_blog_posts","id":1},{"text":"Videos & Webinars","hash":"_videos_webinars","id":2},{"text":"Slides","hash":"_slides","id":3}]},"113":{"id":113,"text":"Since the introduction of programmable logic controllers in the production industry in the early 80s, they have been the core of almost every piece of production machinery. While first PLCs were usually stand-alone controllers. These were soon extended by the ability to talk to other controllers of the same type via proprietary protocols. After that came first computer based control systems, which were able to monitor and parametrize these controllers. Usually however in order to do this, a company needed to use the control system that was provided by the PLC vendor. This has tied companies to stick to the company they decided to use the PLCs of. Making it almost impossible to switch to another vendor. In the last 20 years in the IT industry, the concept of open source has come up and has more and more proven to be the engine of great innovation. Most of the biggest changes in how we create modern IT systems is a result of this. Unfortunately the production industry has been missing a lot of this innovation. Only a small number of companies today use open source software in their production systems. The benefit of using open source could be huge: Increased Flexibility Increased Stability Increased Extendability Improved Security Great Cost reduction If a company had decided to use PLCs and control systems of a certain vendor, it is almost impossible to change this decision. This reduces the options available when adding new machinery or replacing existing ones. Technologically speaking, also the company can only use the options and solution it’s vendor is able to provide. Current control systems are usually based on the concept of \"backup systems\". If the main control system fails, all activity is switched to the standby system. When using modern public- or private cloud systems, there is no need for a backup system, because the cluster is designed in a way that it can live with the failure of most of its hosts before loosing the ability to function. From the perspective of designing and scaling the IT infrastructure: If a control system was designed to handle the current size of plant, for cost reasons the IT infrastructure isn’t designed to handle much more than that. Now if the plant should be extended in the future, extending it’s control-systems IT infrastructure would probably result in replacing this with a bigger system. By utilizing modern virtualization frameworks, extending the existing cloud solution, would only require adding more compute resources, by adding more systems to the cluster and it should be possible to extend the existing system without problems. If the company decided to utilize a public cloud provider, it makes things even simpler, as it would only require booking more resources. This is probably one of the most concerning aspects of modern production control systems. Right now, in order to run these systems, a lot of the most popular solutions require companies to run not up to date systems. If applying all updates, the company is risking either loss of commercial support or even loss of functionality. Therefore an attacker can probably be certain to be able to exploit certain vulnerabilities just by knowing the type and version of the used control system. Well the probably biggest and most obvious cost reduction factor is definitely, that if the software you are using is free, you will not have to pay for it. Additionally, the ability to get the computing power of one insanely expensive system by using a cluster of cheap commodity systems, helps saving a lot of money. Being freed of the requirement to stick to the products of one vendor alone and to be able to choose the technology and the vendor of used systems freely will definitely also reduce costs. In general there are two options for communicating with industrial PLCs: Using a protocol converter Hardware protocol converter Software protocol converter Using a driver for direct communication Commercial drivers Open source drivers Well protocol converters are all software in the end, but while a \"hardware converter\" is usually a closed hardware box that runs some sort of software, a \"software converter\" is usually an installable service or program that runs on a host system. In both cases the configuration of the protocol converter tells the system which information to get and how to make that available in another protocol. It usually doesn’t allow full access to all information available in a PLC, but only the ones the adapter is configured to make available. Here, there is a big trade-off. If a system should be used in the most versatile way, also the most information has to be made available. Even if most of this information is never needed. Limiting the system only to the needed information, greatly reduces the systems versatility. Another disadvantage is a slightly increased latency when making information available. This is due to the fact that the protocol converter has to send a request to the PLC to get information and as soon as this information is returned to the converter this new information can only be passed on in the other protocol in the next request. The usage of a protocol converter is probably the ideal solution, if all a company wants to do, is integrate PLCs communicating in one protocol into an existing system using a different protocol. In case of integrating open source software, this usually is a protocol converter that converts into one of the well established open source protocols. The most widely used protocol here currently will probably be MQTT. The option that provides the most possibilities is directly communicating with the PLCs. Here the system can always directly access only the exact information required and can do this without any detours that would add latency. There is a wide variety of drivers available, that generally would allow writing software that directly accesses PLCs. Unfortunately most of these are commercial drivers. While there is a number of open source drivers, most of these have licenses that render them useless for commercial applications. Either they are licensed with restrictive licenses such as GPL or they are dual licensed with a restriction to non-commercial usage for the open source version and the requirement to purchase a commercial license for commercial use cases. The APIs of all drivers usually differs quite greatly from each one another. This makes it extremely difficult to create solutions that work with a variety of PLCs and protocols. This is where Apache PLC4X comes in. It is the goal of PLC4X to provide a suite of drivers for communicating with industrial PLCs using a variety of protocols, but with a shared API and a license model, that is suitable for creating commercial applications. Hereby PLC4X forms the missing link between the automation and the open source world. Making it possible to use the entire stack of open source technologies to create a new generation of open industrial control systems.","title":"Industry 4.0 with Apache","component":"plc4x","version":"latest","name":"industry40","url":"/plc4x/latest/users/industry40.html","titles":[{"text":"Benefits of using open source","hash":"_benefits_of_using_open_source","id":1},{"text":"Increased Flexibility","hash":"_increased_flexibility","id":2},{"text":"Increased Stability","hash":"_increased_stability","id":3},{"text":"Increased Extendability","hash":"_increased_extendability","id":4},{"text":"Improved Security","hash":"_improved_security","id":5},{"text":"Cost Reduction","hash":"_cost_reduction","id":6},{"text":"Options to communicating with PLCs","hash":"_options_to_communicating_with_plcs","id":7}]},"114":{"id":114,"text":"Please note that binary patches are not produced for individual vulnerabilities. To obtain the binary fix for a particular vulnerability you should upgrade to an Apache PLC4X version where that vulnerability has been fixed. For more information about reporting vulnerabilities, see the Apache Security Team page. No vulnerabilities have been reported.","title":"Security Vulnerabilities","component":"plc4x","version":"latest","name":"security","url":"/plc4x/latest/users/security.html","titles":[{"text":"Known Vulnerabilities","hash":"_known_vulnerabilities","id":1}]},"115":{"id":115,"text":"On this page we’ll give a short introduction to the most important concepts that will help you understand Apache PLC4X better. The most important concepts from a user perspective are in general: Connections — protocols — transports — configuration Addresses The two parts where we have built abstractions from the real world in PLC4X API are the connection strings and the tag address strings. Both are pretty dependent on the type of device you are planning to communicate with. However, these can both be easily configured in an external configuration or passed in as arguments. If you are familiar with JDBC or ODBC, you will easily understand the concepts in PLC4X, as these were a great inspiration for the creation of Apache PLC4X. In general a connection is a physical or logical connection between two endpoints. This connection uses a technical transport mechanism and passes data following a given protocol logic. Therefore, we have modeled both of these aspects separately. Let’s start with the Transports: The following transports are currently available, but they will probably be more soon: CAN PCAP replay Raw Socket Serial Port (RS232 and RS485) TCP UDP Test While TCP, UDP are based on the normal TCP and UDP stack of the operating system, Raw sockets directly provide low-level access to Ethernet Frames. This allows them to not only be used in what we call passive-mode drivers for simply reading all network traffic, it also allows communicating with protocols that are Ethernet based, but don’t use TCP or UDP. This is usually the case with Fieldbus protocols, such as PROFINET or EtherCAT, which usually require lower latency than TCP and UDP can provide. The Serial Port transport simply reads and writes data to a given serial port. The probably most special forms of transport are currently the PCAP replay and the Test transport. The PCAP replay transport allows playing back network traffic packets that were recorded using tools like WireShark. This is really helpful for writing new drivers (especially passive mode drivers) without having to be connected to the real device. From a driver point of view there is actually no difference between a Raw Socket and a PCAP replay transport. The Test transport is generally built for being used inside the PLC4X test framework as it allows fine-grained access to the input and output of the drivers. With the test transport we can explicitly control which data is passed into and retrieved from drivers and to validate this in unit- and integration-tests. A fully qualified PLC4X connection string would look like this: {driver code}:{transport code}://{transport config}?{options} The driver code generally selects the protocol we want to use, the transport code now selects the type of transport that should be used. Depending on the selected transport mechanism the transport config tells the transport which resource it should use. For example with a TCP and UDP transport, this will be the IP address or hostname optionally followed by the Port. For a Serial transport this will be the name of the serial interface. Raw Sockets will require the device name or a `MAC address`and so on. For a full description of all transports and their options, please consult the Transport Documentation here. The last segment - options - can be used to fine tune some protocol or transport options to non-default values. For details on these options, please have a look at the Protocol Documentation here and the Transport Documentation here. The general structure of this part is always the same: ?{option-1-name}={option-1-value}&{option-2-name}={option-2-value}&{option-3-name}={option-3-value} So in general the options are stared with a ? and then followed by name-value pairs, which are separated by ampersand characters &. A driver for a given protocol however usually has a default transport, so sometimes it is possible to omit the transport code. Also do most drivers define default values for the various configuration options, so in general you should only require to use configuration options, if you are using non-default settings. The shortest version of a fully qualified connection string would look something like this: {driver code}://{transport config} For more information on the default settings for a given protocol or transport, please check the corresponding documentation. Addresses for individual tags on a PLC are extremely dependent on the used protocol. As we usually decided to stick to the address formats that are used in those particular environments, please check the Protocol Documentation on details about these address formats here.","title":"General Concepts","component":"plc4x","version":"latest","name":"general-concepts","url":"/plc4x/latest/users/getting-started/general-concepts.html","titles":[{"text":"Connections","hash":"_connections","id":1},{"text":"Connection Strings","hash":"_connection_strings","id":2},{"text":"Individual Resource Addresses (Tags)","hash":"_individual_resource_addresses_tags","id":3}]},"116":{"id":116,"text":"Depending on the programming language, the usage will differ, therefore please go to the Getting Started version of the language of choice. For guides on how to write PLC4X applications with Go, please go to the Go Getting Started For guides on how to write PLC4X applications with Java, please go to the Java Getting Started","title":"Getting Started","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/users/getting-started/index.html","titles":[{"text":"Go/Golang","hash":"_gogolang","id":1},{"text":"Java","hash":"_java","id":2}]},"117":{"id":117,"text":"","title":"Getting Started with C","component":"plc4x","version":"latest","name":"plc4c","url":"/plc4x/latest/users/getting-started/plc4c.html","titles":[]},"118":{"id":118,"text":"","title":"Getting Started with C#","component":"plc4x","version":"latest","name":"plc4cs","url":"/plc4x/latest/users/getting-started/plc4cs.html","titles":[]},"119":{"id":119,"text":"Just in case you want to get started with Go. In this part we’ll setup a new Go project. If you are familiar with this, you can go to the next chapter. Be sure to have installed Go on your system by downloading and installing it from https://golang.org/. Now that that’s done, create a new directory and console execute the following command: go mod init main This will effectively only create a go.mod file, which is sort of like Go’s counterpart to a Maven pom.xml. This should look like this: module main go 1.16 Now we need to create a app.go file which will be our main program. Create a file app.go with the following content: package main func main() { } By executing the command: go run app.go You will execute your first Go progran … however the output is rather underwhelming ;-) You’re now ready to continue. In order to write a valid PLC4X Go application, all you need, is to add a dependency to the plc4go module. Now all you need to do, is execute the following command: go get github.com/apache/plc4x/plc4go This will checkout the latest version of the Apache PLC4X PLC4Go module. As soon as we have released a PLC4Go version by adding the name of the release-tag will use an explicit version. This will be checked out in our home directory in ⁓/go/pkg/mod/github.com/apache/plc4/plc4go@v0.0.0-{some-commit-hash} In contrast to the PLC4J version this already contains all supported drivers. Perhaps we’ll change this in the future, but for now all comes in one bundle. Now you’re generally set to start writing your first PLC4Go program. In contrast to PLC4J, which uses the service lookup to find the transports and the drivers automatically, in PLC4Go they need to be manually registered at the driver manager. First we need to initialize the PlcDriverManager by registering the transports and drivers with it. // Create a new instance of the PlcDriverManager driverManager := plc4go.NewPlcDriverManager() // Register the Transports transports.RegisterTcpTransport(driverManager) transports.RegisterUdpTransport(driverManager) // Register the Drivers drivers.RegisterKnxDriver(driverManager) drivers.RegisterModbusDriver(driverManager) Now that the PlcDriverManager is configured, we can use it to get a new connection. // Get a connection to a remote PLC connectionRequestChanel := driverManager.GetConnection(\"modbus-tcp://192.168.23.30?unit-identifier=1\") // Wait for the driver to connect (or not) connectionResult := <-connectionRequestChanel // Check if something went wrong if connectionResult.Err != nil { fmt.Printf(\"Error connecting to PLC: %s\", connectionResult.Err.Error()) return } // If all was ok, get the connection instance connection := connectionResult.Connection // Make sure the connection is closed at the end defer connection.Close() In PLC4Go we make heavy use of Go channels, which are similar to Futures or Promisses. And please pay attention to the defer command. This adds a call to a stack of things that need to be called as soon as the program terminates. However in contrast to Java’s try-finally blocks, this isn’t executed at the end of the code-block, but really when the program terminates. So when working with many connections or when using connections in loops (if for example you are polling), then this will keep on piling up active connections, till either you are no longer able to connect cause your PLC denies connections or till you run out of memory. So if you only need the connection in a code block, be sure to explicitly close it after usage. After this code block we should be in possession of a connection instance. If we simply want to check the connectivity, we can use the Ping function on the connection object. Depending on the protocol used, it will exeute a command which only will complete if the connection is available. // Try to ping the remote device pingResultChannel := connection.Ping() // Wait for the Ping operation to finsh pingResult := <-pingResultChannel if pingResult.Err != nil { fmt.Printf(\"Couldn't ping device: %s\", pingResult.Err.Error()) return } Most probably you will want to read something from a PLC. This is done by a PlcReadRequest. First off all, it’s probably a good idea to check if this connection supports reading: if !connection.GetMetadata().CanRead() { fmt.Printf(\"This connection doesn't support read operations\") return } In order to create and run such a PlcReadRequest, please add the following code: Up to version 0.10.0 // Prepare a read-request readRequest, err := connection.ReadRequestBuilder(). AddQuery(\"field1\", \"holding-register:1:REAL\"). AddQuery(\"field2\", \"holding-register:3:REAL\"). Build() if err != nil { t.Errorf(\"error preparing read-request: %s\", connectionResult.Err.Error()) t.Fail() return } SNAPSHOT version // Prepare a read-request readRequest, err := connection.ReadRequestBuilder(). AddTagAddress(\"tag1\", \"holding-register:1:REAL\"). AddTagAddress(\"tag2\", \"holding-register:3:REAL\"). Build() if err != nil { t.Errorf(\"error preparing read-request: %s\", connectionResult.Err.Error()) t.Fail() return } If you have any errors in the addresses or whatever, you will get an err instead of a readRequest. For now, let’s assume you got all addresses correctly. // Execute a read-request readResponseChanel := readRequest.Execute() // Wait for the response to finish readRequestResult := <-readResponseChanel if readRequestResult.Err != nil { t.Errorf(\"error executing read-request: %s\", readRequestResult.Err.Error()) return } Please note that in this case we want to return a triple: PlcReadRequest, PlcReadResponse, err. As this is not supported in Go, the PlcReadRequestResult will contain all of these 3 elements. This will probably change soon. The API is still a bit in flux. Now in order to do something with the response: // Do something with the response value1 := readRequestResult.Response.GetValue(\"field1\") value2 := readRequestResult.Response.GetValue(\"field2\") fmt.Printf(\"\\n\\nResult field1: %f\\n\", value1.GetFloat32()) fmt.Printf(\"\\n\\nResult field2: %f\\n\", value2.GetFloat32()) The GetValue function returns a PlcValue instance, this had accessors for the most general Go types. Not implemented yet As the Modbus protocol, which we used in the above examples, doesn’t support subscriptions, we are uing the KNX protocol for a demonstration on the subscription API. Subscribing to data can be considered similar to reading data, at least the subscription itself if very similar to reading of data. We first have to check if the connection supports this: if !connection.GetMetadata().CanSubscribe() { fmt.Printf(\"This connection doesn't support subscriptions operations\") return } Now we’ll create the subscription request. The main difference is that while reading there is only one form how you could read, with subscriptions there are different forms of subscriptions: Change of state (Event is sent as soon as a value changes) Cyclic (The Event is sent in regular cyclic intervals) Event (The Event is usually explicitly sent form the PLC as a signal) Therefore instead of using a normal AddItem, there are tree different functions as you can see in the following examples. Up to version 0.10.0 // Prepare a subscription-request subscriptionRequest, err := connection.SubscriptionRequestBuilder(). AddChangeOfStateItem(\"heating-actual-temperature\", \"*/*/10:DPT_Value_Temp\"). AddChangeOfStateItem(\"heating-target-temperature\", \"*/*/11:DPT_Value_Temp\"). AddCyclicItem(\"heating-valve-open\", \"*/*/12:DPT_OpenClose\", 500 * time.Millisecond). AddItemHandler(knxEventHandler). Build() if err != nil { fmt.Printf(\"Error preparing subscription-request: %s\", connectionResult.Err.Error()) return } SNAPSHOT version // Prepare a subscription-request subscriptionRequest, err := connection.SubscriptionRequestBuilder(). AddChangeOfStateTagAddress(\"heating-actual-temperature\", \"*/*/10:DPT_Value_Temp\"). AddChangeOfStateTagAddress(\"heating-target-temperature\", \"*/*/11:DPT_Value_Temp\"). AddCyclicTagAddress(\"heating-valve-open\", \"*/*/12:DPT_OpenClose\", 500 * time.Millisecond). AddItemHandler(knxEventHandler). Build() if err != nil { fmt.Printf(\"Error preparing subscription-request: %s\", connectionResult.Err.Error()) return } The Event hadnler for intercepting incoming events could look like this: Up to version 0.10.0 func knxEventHandler(event apiModel.PlcSubscriptionEvent) { for _, fieldName := range event.GetFieldNames() { if event.GetResponseCode(fieldName) == apiModel.PlcResponseCode_OK { groupAddress := event.GetAddress(fieldName) fmt.Printf(\"Got update for field %s with address %s. Value changed to: %s\\n\", fieldName, groupAddress, event.GetValue(fieldName).GetString()) } } } SNAPSHOT version func knxEventHandler(event apiModel.PlcSubscriptionEvent) { for _, tagName := range event.GetTagNames() { if event.GetResponseCode(tagName) == apiModel.PlcResponseCode_OK { groupAddress := event.GetTag(tagName).GetAddressString() fmt.Printf(\"Got update for tag %s with address %s. Value changed to: %s\\n\", tagName, groupAddress, event.GetValue(tagName).GetString()) } } } The AddCyclicField/AddCyclicTagAddress method requires a third parameter duration which specifies the interval, in which a given value is sent (even if it has not changed). Here the API differs slightly form the Java version, as in the request-builder itself you specify the reference to the callback handler which should be notified on incoming data. However, we will be aligning all API variants as much as possible in the near future. The request itself is executed exactly the same way the read and write operations are executed, using the Execute function. // Execute a subscription-request subscriptionRequestResultChanel := subscriptionRequest.Execute() // Wait for the response to finish subscriptionRequestResult := <-subscriptionRequestResultChanel if subscriptionRequestResult.Err != nil { fmt.Printf(\"Error executing read-request: %s\", subscriptionRequestResult.Err.Error()) return }","title":"Getting Started with Go","component":"plc4x","version":"latest","name":"plc4go","url":"/plc4x/latest/users/getting-started/plc4go.html","titles":[{"text":"Initializing a dummy project","hash":"_initializing_a_dummy_project","id":1},{"text":"Using the PLC4Go API directly","hash":"_using_the_plc4go_api_directly","id":2},{"text":"Connecting to a PLC","hash":"_connecting_to_a_plc","id":3},{"text":"Reading Data","hash":"_reading_data","id":4},{"text":"Writing Data","hash":"_writing_data","id":5},{"text":"Subscribing to Data","hash":"_subscribing_to_data","id":6}]},"120":{"id":120,"text":"In order to write a valid PLC4X Java application, all you need, is to add a dependency to the api module. When using Maven, all you need to do is add this dependency: org.apache.plc4x plc4j-api 0.12.0 This will allow you to write a valid application, that compiles fine. However, in order to actually connect to a device using a given protocol, you need to add this protocol implementation to the classpath. For example in order to communicate with an S7 device using the S7 Protocol, you would need to add the following dependency: org.apache.plc4x plc4j-driver-s7 0.12.0 runtime So as soon as your project has the API and a driver implementation available, you first need to get a PlcConnection instance. This is done via the PlcConnectionManager, which is provided to you by the PlcDriverManager by asking this to create an instance for a given PLC4X connection string. String connectionString = \"s7://10.10.64.20\"; try (PlcConnection plcConnection = PlcDriverManager.getDefault().getConnectionManager().getConnection(connectionString)) { ... do something with the connection here ... } PLC4X generally supports a very limited set of functions, which is not due to the fact, that we didn’t implement things, but that PLCs generally support a very limited set of functions. The basic functions supported by PLCs and therefore supported by PLC4X are: Discover Devices List resources in the PLC Read data Write data Subscribe for data In general, we will try to offer as many features as possible. So if a protocol doesn’t support subscription based communication it is our goal to simulate this by polling in the background, so it is transparent for the users (This simulation feature hasn’t been implemented yet though, but it’s on our roadmap). But there are some cases in which we can’t simulate or features are simply disabled intentionally: If a PLC and/or protocol don’t support writing or browsing, we simply can’t provide this functionality. Also do we plan on providing stripped down versions of drivers, that for example intentionally don’t support any writing of data. Therefore, we use metadata to check programmatically, if a given feature is available. // Check if this connection support reading of data. if (!plcConnection.getMetadata().isReadSupported()) { logger.error(\"This connection doesn't support reading.\"); return; } As soon as you have ensured that a feature is available, you are ready to build a first request. This is done by getting a PlcReadRequest.Builder: // Create a new read request: // - Give the single item requested an alias name PlcReadRequest.Builder builder = plcConnection.readRequestBuilder(); builder.addTagAddress(\"value-1\", \"%Q0.4:BOOL\"); builder.addTagAddress(\"value-2\", \"%Q0:BYTE\"); builder.addTagAddress(\"value-3\", \"%I0.2:BOOL\"); builder.addTagAddress(\"value-4\", \"%DB.DB1.4:INT\"); PlcReadRequest readRequest = builder.build(); So, as you can see, you prepare a request, by adding tag addresses to the request and in the end by calling the build method. If you are using the BrowseApi you might also have been provided with Tag objects. In that case simply use addTag and pass in the Tag object instead of the address string. The request is sent to the PLC by issuing the execute method on the request object: CompletableFuture asyncResponse = readRequest.execute(); asyncResponse.whenComplete((response, throwable) -> { try { ... process the response ... } catch (Exception e) { ... Handle any errors ... } }); In general, all requests are executed asynchronously. As soon as the request is fully processed, the callback gets called and will contain a readResponse, if everything went right or a throwable if there were problems. However, if you want to write your code in a more synchronous fashion, the following alternative will provide this: PlcReadResponse response = readRequest.execute().get(5000, TimeUnit.MILLISECONDS); Processing of the responses is identical in both cases in the synchronous approach you however need to catch any exceptions. The following example will demonstrate some of the options you have: for (String tagName : response.getTagNames()) { if(response.getResponseCode(tagName) == PlcResponseCode.OK) { int numValues = response.getNumberOfValues(tagName); // If it's just one element, output just one single line. if(numValues == 1) { logger.info(\"Value[\" + tagName + \"]: \" + response.getObject(tagName)); } // If it's more than one element, output each in a single row. else { logger.info(\"Value[\" + tagName + \"]:\"); for(int i = 0; i asyncResponse = writeRequest.execute(); asyncResponse.whenComplete((response, throwable) -> { ... process the response ... }); You could here also use the blocking option: PlcWriteResponse response = writeRequest.execute().get(); As we don’t have to process the data itself, for the write request, it’s enough to simply check the return code for each field. for (String tagName : response.getTagNames()) { if(response.getResponseCode(tagName) == PlcResponseCode.OK) { logger.info(\"Value[\" + tagName + \"]: updated\"); } // Something went wrong, to output an error message instead. else { logger.error(\"Error[\" + tagName + \"]: \" + response.getResponseCode(tagName).name()); } } Subscribing to data can be considered similar to reading data, at least the subscription itself if very similar to reading of data. First of all we first have to check if the connection supports this: // Check if this connection support subscribing to data. if (!plcConnection.getMetadata().isSubscribeSupported()) { logger.error(\"This connection doesn't support subscribing.\"); return; } Now we’ll create the subscription request. The main difference is that while reading there is only one form how you could read, with subscriptions there are different forms of subscriptions: Change of state (Event is sent as soon as a value changes) Cyclic (The Event is sent in regular cyclic intervals) Event (The Event is usually explicitly sent form the PLC as a signal) Therefore instead of using a normal addItem or addTag in newer versions, there are tree different methods as you can see in the following examples. // Create a new subscription request: // - Give the single tag requested an alias name PlcSubscriptionRequest.Builder builder = plcConnection.subscriptionRequestBuilder(); builder.addChangeOfStateTagAddress(\"value-1\", \"{some address}\"); builder.addCyclicTagAddress(\"value-2\", \"{some address}\", Duration.ofMillis(1000)); builder.addEventTagAddress(\"value-3\", \"{some alarm address}\"); PlcSubscriptionRequest subscriptionRequest = builder.build(); The addCyclicField/addCyclicTagAddress method requires a third parameter duration. The request itself is executed exactly the same way the read and write operations are executed, using the execute method, therefore just the short synchronous version here (The async version works just as good) PlcSubscriptionResponse response = subscriptionRequest.execute().get(); Now comes the little more tricky part, as subscriptions are always asynchronous, we have to register a callback for the connection to call as soon as there is news available: In general, you can’t say how many of your subscribed fields will be available in every callback. So it is double important to check or iterate over the field names. for (String subscriptionName : response.getFieldNames()) { final PlcSubscriptionHandle subscriptionHandle = response.getSubscriptionHandle(subscriptionName); subscriptionHandle.register(plcSubscriptionEvent -> { for (String tagName : plcSubscriptionEvent.getTagNames()) { System.out.println(plcSubscriptionEvent.getPlcValue(tagName)); } }); } Here there currently is a double iteration over the field names, this will probably change soon.","title":"Getting Started with Java","component":"plc4x","version":"latest","name":"plc4j","url":"/plc4x/latest/users/getting-started/plc4j.html","titles":[{"text":"Using the PLC4J API directly","hash":"_using_the_plc4j_api_directly","id":1},{"text":"Reading Data","hash":"_reading_data","id":2},{"text":"Writing Data","hash":"_writing_data","id":3},{"text":"Subscribing to Data","hash":"_subscribing_to_data","id":4}]},"121":{"id":121,"text":"","title":"Getting Started with Python","component":"plc4x","version":"latest","name":"plc4py","url":"/plc4x/latest/users/getting-started/plc4py.html","titles":[]},"122":{"id":122,"text":"If you want to get started with Apache PLC4X, but don’t have any PLC at hand, this tutorial will demonstrate how you can use a virtual Modbus Slave software to simulate communication with Modbus enabled PLCs. Such a fully open-source software is ModbusPal which is available from here. All you need, is to download the file called ModbusPal.jar. In order to run the software, you just need to execute the following command in the same directory you downloaded the Jar to: java -jar ModbusPal.jar After this you will see the ModbusPal UI, which will look like this: Figure 1. ModbusPal Main UI Here be sure that the TCP port is set to 502 (Which is the default Modbus port). Next click on Add to add a new Modbus slave: Figure 2. ModbusPal Add slave UI Select a Slave ID as well as a name. After clicking on Add your new Modbus slave is ready to start. Figure 3. ModbusPal Main UI with one started slave By clicking on the Run button your slave is generally ready to communicate. However up until now this new wouldn’t have anything to share as we haven’t created any resources, so it would be an empty slave. So as last steps, we have to create some resources to access. In order do to this, click on the eye icon of your newly created slave. Figure 4. ModbusPal Main UI with one slave This will bring up an editor in which we can add some so-called Holding registers and some Coils. Let’s start with adding some Holding registers. So make sure Holding registers is selected and then click on the Add button: Figure 5. Holding register view The tool will suggest creating 65536 new registers, I usually create 10 or so. When I use ths tool some times I have to click the Add button more than once as the editor doesn’t always open the first time. Figure 6. Add Holding register dialog After this the Holding register tab should look like this: Figure 7. Add Holding register dialog Now do the same on the Coils tab, which should look like this after that: Figure 8. Add Holding register dialog As a last step, I would suggest to open the Console. You can do this by clicking on the Console button of the main UI. This will open the following window: Figure 9. Console Here ModbusPal will log every important event … especially when getting new connections from PLC4X. In general Modbus only knows two types of data: Coils and Registers. Coils are always simple bits or boolean values and Registers are always 16 bit short values. However, there are different types of these and they have different names: Discrete Inputs (Boolean values) (read-only) Coils (Boolean values) (read-write) Input Registers (16 bit short values) (read-only) Holding Registers (16 bit short values) (read-write) For Modbus there is no universally agreed upon notation for addresses, however as the addresses are extremely simple, in PLC4X we address these as follows: Table 1. Table Title Modbus Type PLC4X Address Syntax Discrete Inputs discrete-input:{start-number} or discrete-input:{start-number}[{number-of-elements}] Coils coil:{start-number} or coil:{start-number}[{number-of-elements}] Input Registers input-register:{start-number} or input-register:{start-number}[{number-of-elements}] Holding Registers holding-register:{start-number} or holding-register:{start-number}[{number-of-elements}] All addresses support a notation with and without a size. If the size is not specified, then PLC4X assumes a size of 1. A PLC4X connection-string generally has the same structure for all drivers: {driver-name}:{transport-name}://{transport-config}?{parameters} The fragments transport-name and parameters herby are usually optional, as every driver can support a default-transport, which is used if the transport is omitted. Also are most drivers implemented in a way that doesn’t require any parameters. These are only required if the connection requires some non-default settings. For Modbus the typical transports are: tcp (transport-config is the ip or host-name of the slave and can be suffixed by a port separated from the ip/host with :) serial (transport-config is the device name of the serial interface) If we have set up ModbusPal as described above and are running this on the same computer, the connection string to connect to this should be: modbus-tcp://localhost If you stated ModbusPal on a port different from Modbus' default port 502 you would have to also provide this port in the connection string. So assuming you started it on port 1502, then the connection string would look as follows: modbus-tcp://localhost:1502 In order to write a valid PLC4X Java application, all you need, is to add a dependency to the api module. When using Maven, all you need to do is add this dependency: org.apache.plc4x plc4j-api {project-version} This will allow you to write a valid application, that compiles fine. However, in order to actually connect to a device using a given protocol, you need to add this protocol implementation to the classpath. For example in order to communicate using the Modbus protocol, you would need to add the following dependency: org.apache.plc4x plc4j-driver-modbus {project-version} runtime So as soon as your project has the API and a driver implementation available, you first need to get a PlcConnection instance. This is done via the PlcDriverManager by asking this to create an instance for a given PLC4X connection string. String connectionString = \"modbus-tcp://localhost\"; try (PlcConnection plcConnection = new PlcDriverManager().getConnection(connectionString)) { ... do something with the connection here ... } PLC4X generally supports a very limited set of functions, which is not due to the fact, that we didn’t implement things, but that PLCs generally support a very limited set of functions. The basic functions supported by PLCs and therefore supported by PLC4X are: Read data Write data Subscribe for data Execute functions in the PLC List resources in the PLC In general, we will try to offer as many features as possible. So if a protocol doesn’t support subscription based communication it is our goal to simulate this by polling in the background, so it is transparent for the users. But there are some cases in which we can’t simulate or features are simply disabled intentionally: If a PLC and/or protocol don’t support executing of functions, we simply can’t provide this functionality. We will be providing stripped down versions of drivers, that for example intentionally don’t support any writing of data and executing of functions. Therefore, we use metadata to check programmatically, if a given feature is available: // Check if this connection support reading of data. if (!plcConnection.getMetadata().isReadSupported()) { logger.error(\"This connection doesn't support reading.\"); return; } As soon as you have ensured that a feature is available, you are ready to build a first request. This is done by getting a PlcRequestBuilder: // Create a new read request: // - Give the single item requested the alias name \"value\" PlcReadRequest.Builder builder = plcConnection.readRequestBuilder(); builder.addItem(\"value-1\", \"coil:1\"); builder.addItem(\"value-2\", \"coil:3[4]\"); builder.addItem(\"value-3\", \"holding-register:1\"); builder.addItem(\"value-4\", \"holding-register:3[4]\"); PlcReadRequest readRequest = builder.build(); So, as you can see, you prepare a request, by adding items to the request and in the end by calling the build method. Hereby the first string value is simply an alias you can give the the address as this is usually a more readable way. The second argument is then the address string itself. In above example we didn’t add discrete-input and input-registers as ModbusPal doesn’t seem to support these. The request is sent to the PLC by issuing the execute method on the request object: CompletableFuture asyncResponse = readRequest.execute(); asyncResponse.whenComplete((response, throwable) -> { ... process the response ... }); In general all requests are executed asynchronously. So as soon as the request is fully processed, the callback gets called and will contain a readResponse, if everything went right or a throwable if there were problems. However, if you want to write your code in a more synchronous fashion, the following alternative will provide this: PlcReadResponse response = readRequest.execute().get(); Processing of the responses is identical in both cases. The following example will demonstrate some of the options you have: Up to version 0.10.0 for (String fieldName : response.getFieldNames()) { if(response.getResponseCode(fieldName) == PlcResponseCode.OK) { int numValues = response.getNumberOfValues(fieldName); // If it's just one element, output just one single line. if(numValues == 1) { logger.info(\"Value[\" + fieldName + \"]: \" + response.getObject(fieldName)); } // If it's more than one element, output each in a single row. else { logger.info(\"Value[\" + fieldName + \"]:\"); for(int i = 0; i < numValues; i++) { logger.info(\" - \" + response.getObject(fieldName, i)); } } } // Something went wrong, to output an error message instead. else { logger.error(\"Error[\" + fieldName + \"]: \" + response.getResponseCode(fieldName).name()); } } SNAPSHOT version for (String tagName : response.getTagNames()) { if(response.getResponseCode(tagName) == PlcResponseCode.OK) { int numValues = response.getNumberOfValues(tagName); // If it's just one element, output just one single line. if(numValues == 1) { logger.info(\"Value[\" + tagName + \"]: \" + response.getObject(tagName)); } // If it's more than one element, output each in a single row. else { logger.info(\"Value[\" + tagName + \"]:\"); for(int i = 0; i < numValues; i++) { logger.info(\" - \" + response.getObject(tagName, i)); } } } // Something went wrong, to output an error message instead. else { logger.error(\"Error[\" + tagName + \"]: \" + response.getResponseCode(tagName).name()); } } In the for loop, we are demonstrating how the user can iterate over the address aliases in the response. In case of an ordinary read request, this will be predefined by the items in the request, however in case of a subscription response, the response might only contain some of the items that were subscribed. Before accessing the data, it is advisable to check if an item was correctly returned. This is done by the getResponseCode method for a given alias. If this is PlcResponseCode.OK, everything is ok, however it could be one of the following: NOT_FOUND ACCESS_DENIED INVALID_ADDRESS INVALID_DATATYPE INTERNAL_ERROR RESPONSE_PENDING Assuming the return code was OK, we can continue accessing the data. As some addresses support reading arrays, with the method getNumberOfValues the user can check how many items of a given type are returned. For convenience the response object has single-argument methods for accessing the data, which default to returning the first element. response.getObject(fieldName) If you want to access a given element number, please use the two-argument version instead: response.getObject(fieldName, 42) PLC4X provides getters and setters for a wide variety of Java types and automatically handles the type conversion. However, when for example trying to get a long-value as a byte and the long-value exceeds the range supported by the smaller type, a RuntimeException of type PlcIncompatibleDatatypeException. In order to avoid causing this exception to be thrown, however there are isValid{TypeName} methods that you can use to check if the value is compatible. The code for writing is very similar to the code for reading, however when creating the write request, we have to pass in the data alongside the field definitions. While all 4 field types support reading from, only the coil and holding-register field types support writing to. If you attempt to write to these, this will result in errors. So again, we first check if this driver supports writing (Some drivers such as passive-mode drivers or read-only versions might generally not support writing): // Check if this connection support reading of data. if (!plcConnection.getMetadata().isWriteSupported()) { logger.error(\"This connection doesn't support writing.\"); return; } As soon as you have ensured that a feature is available, you are ready to build a first request. This is done by getting a PlcRequestBuilder: // Create a new read request: // - Give the single item requested the alias name \"value\" PlcWriteRequest.Builder builder = plcConnection.writeRequestBuilder(); builder.addItem(\"value-1\", \"coil:1\", true); builder.addItem(\"value-2\", \"coil:3[4]\", true, false, true, true); builder.addItem(\"value-3\", \"holding-register:1\", 42); builder.addItem(\"value-4\", \"holding-register:3[4]\", 1, 2, 3, 4); PlcWriteRequest writeRequest = builder.build(); You can see that for every element that should be written, the same number of arguments have to be provided. PlcWriteResponse response = writeRequest.execute().get(); Actually executing the write operation is almost identical to the reading, with the only difference, that the result only provides status codes and no values. for (String fieldName : response.getFieldNames()) { if(response.getResponseCode(fieldName) == PlcResponseCode.OK) { logger.info(\"Value[\" + fieldName + \"]: successfully written to device.\"); } // Something went wrong, to output an error message instead. else { logger.error(\"Error[\" + fieldName + \"]: \" + response.getResponseCode(fieldName).name()); } }","title":"Playing around with Apache PLC4X with a virtual Modbus PLC","component":"plc4x","version":"latest","name":"virtual-modbus","url":"/plc4x/latest/users/getting-started/virtual-modbus.html","titles":[{"text":"Setting up the virtual Modbus Slave","hash":"_setting_up_the_virtual_modbus_slave","id":1},{"text":"Some Modbus basics","hash":"_some_modbus_basics","id":2},{"text":"Writing code","hash":"_writing_code","id":3},{"text":"Connecting","hash":"_connecting","id":4},{"text":"Reading Data","hash":"_reading_data","id":5},{"text":"Writing Data","hash":"_writing_data","id":6}]},"123":{"id":123,"text":"Name Type Default Value Required Description Name Allen Bradley ETH Code ab-eth Maven Dependency org.apache.plc4x plc4j-driver-ab-eth 0.12.0 Default Transport raw Supported Transports tcp Config options: station INT Id of the station we want to connect to Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected.","title":"AB-ETH","component":"plc4x","version":"latest","name":"ab-eth","url":"/plc4x/latest/users/protocols/ab-eth.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2}]},"124":{"id":124,"text":"Especially when it comes to trying to verify if an issue you are facing has already been fixed in the development version, you might want to or be asked to try out the absolute latest version of PLC4X. You can generally do this by adding \"-SNAPSHOT\" to the version number of PLC4X. We also provide convenience built SNAPSHOT versions, however are these not automatically synced with Maven Central. So Maven will not automatically be able to find them. Our SNAPSHOT versions are deployed on the Apache Maven repository. In order to access these, you need to add the following block to your pom.xml file: apache-snapshots https://repository.apache.org/content/repositories/snapshots false true apache-snapshots https://repository.apache.org/content/repositories/snapshots false true After adding this block, you should be able to also use SNAPSHOT versions.","title":"Using SNAPSHOT versions","component":"plc4x","version":"latest","name":"using-snapshots","url":"/plc4x/latest/users/getting-started/using-snapshots.html","titles":[]},"125":{"id":125,"text":"The ADS (automation device specification) describes a device-independent and fieldbus independent interface for communication between Beckhoff automation devices running TwinCAT and other devices implementing this interface. https://www.home-assistant.io/integrations/ads/ Source (accessed 7 August 2022) ADS device concept: https://infosys.beckhoff.com/english.php?content=../content/1033/ams_nat/4275563275.html&id= Source (accessed 7 August 2022) Specification for ADS devices: https://infosys.beckhoff.com/english.php?content=../content/1033/ams_nat/4275563275.html&id= Source (accessed 7 August 2022) ADS (Automation Device Specification) is the TwinCAT communication protocol that specifies the interaction between two ADS devices. For example, it defines what operations can be executed on another ADS device, what parameters are necessary for that and what return value is sent after execution. AMS (Automation Message Specification) specifies the exchange of the ADS data. A major component of the communication protocol is the AmsNetId. This is specified in the AMS/ADS package for the source and target device. An ADS device can be explicitly addressed using the AmsNetId. Source https://infosys.beckhoff.com/english.php?content=../content/1033/ams_nat/4275563275.html&id= (accessed 7 August 2022) Name Type Default Value Required Description Name Beckhoff TwinCat ADS Code ads Maven Dependency org.apache.plc4x plc4j-driver-ads 0.12.0 Default Transport tcp Supported Transports tcp Config options: target-ams-net-id STRING required AMS-Net-Id of the target. An AMS-Net-Id has the regular format of an IPv4 IP-Address, however with 6 segments instead of 4. target-ams-port INT required AMS port of the target. source-ams-net-id STRING required AMS-Net-Id of the source. An AMS-Net-Id has the regular format of an IPv4 IP-Address, however with 6 segments instead of 4. source-ams-port INT required AMS port of the source. timeout-request INT 4000 Default timeout for all types of requests. load-symbol-and-data-type-tables BOOLEAN true Configures, if when connecting the data-type- and symbol-table should be read. This is an optimization that can help in cases, where the PLC program is pretty large and downloading the full tables is causing problems. When disabled, symbolic addresses will manually be resolved as soon as an address is used. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. Data array Size Description AMS/TCP Header 6 bytes contains the length of the data packet. AMS Header 32 bytes The AMS/TCP-Header contains the addresses of the transmitter and receiver. In addition, the AMS error code , the ADS command Id and some other information. ADS Data n bytes The ADS data range contains the parameter of the single ADS commands. The structure of the data array depends on the ADS command. Some ADS commands require no additional data. For details about the protocol look here: http://www.beckhoff.com/ & (German Handbook: https://download.beckhoff.com/download/Document/automation/twincat3/TwinCAT_3_ADS_INTRO_DE.pdf)","title":"ADS (Automation Device Specification)","component":"plc4x","version":"latest","name":"ads","url":"/plc4x/latest/users/protocols/ads.html","titles":[{"text":"Structure AMS/TCP Packet","hash":"_structure_amstcp_packet","id":1},{"text":"Connection String Options","hash":"_connection_string_options","id":2},{"text":"tcp","id":3},{"text":"More details on","hash":"_more_details_on","id":4}]},"126":{"id":126,"text":"Name Type Default Value Required Description Name BACnet/IP Code bacnet-ip Maven Dependency org.apache.plc4x plc4j-driver-bacnet 0.12.0 Default Transport udp Supported Transports udp tcp pcap Config options: ede-file-path STRING Path to the location of a single EDE file, that contains the descriptor for the target device. ede-directory-path STRING Path to the directory used for storing multiple EDE files. These files contain the descriptors for the possible target devices. Transport config options: udp.local-port INT -1 Some connections require a UDP listener to listen on a fixed port. Use this configuration option in order to define the port number of the local port. tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. pcap.support-vlans BOOLEAN false Enables support for VLans pcap.replay-speed-factor FLOAT 1.0 Numeric value for changing the replay speed: - 1 = Normal speed (default) - 0 = Maximum speed - 0.5 = Half speed - 2 = Double speed pcap.loop BOOLEAN false Should the replay start at the beginning of the file as soon as the end is reached? - true = Automatically start again - false = Stop at the end (default) pcap.filter STRING Filter expression used to filter out unwanted packets from the replay. pcap.support-vlans BOOLEAN false Should VLan packets be automatically unpacked? pcap.protocol-id INT -1 When provided, filters all packets to let only packets matching this ethernet protocol-id pass. Data array Size Description BACnet - A Data Communication Protocol for Building Automation and Control Networks","title":"BACnet/IP","component":"plc4x","version":"latest","name":"bacnet","url":"/plc4x/latest/users/protocols/bacnet.html","titles":[{"text":"BACnet (Building Automation and Control Networks)","hash":"_bacnet_building_automation_and_control_networks","id":1},{"text":"Connection String Options","hash":"_connection_string_options","id":2},{"text":"udp","id":3},{"text":"tcp","id":4},{"text":"pcap","id":5},{"text":"More details on","hash":"_more_details_on","id":6}]},"127":{"id":127,"text":"Name Type Default Value Required Description Name Clipsal C-Bus Code c-bus Maven Dependency org.apache.plc4x plc4j-driver-c-bus 0.12.0 Default Transport tcp Supported Transports tcp Config options: srchk BOOLEAN false Source check. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected.","title":"C-Bus","component":"plc4x","version":"latest","name":"c-bus","url":"/plc4x/latest/users/protocols/c-bus.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2}]},"128":{"id":128,"text":"The CAN Bus driver is a special kind of driver which does not bring any logic. Its responsibility is to combine CAN transport facade and custom application layer protocols. In this way, the protocol can use its own \"root frame\" type which is not delivered from CAN bus frame. The CANDriverAdapter is a full implementation of Apache PLC4X API. Under the hood adapter will forward all operations to delegate driver. Work which is done by the adapter is to transform data incoming via CAN transport into frame supported by driver. In this regard the CANDriverAdapter does not implement any real protocol. All it does is transformation of incoming frames into frame desired by real driver. Below diagram explains how driver adapter works with CANopen. Given that this is currently biggest CAN driver implemented in Apache PLC4X we will use it as a reference. Looking at left most side of diagram we can see a CAN transport. The transport knows how to receive and send data to the CAN bus. Transport can create its own intermediate representation of CAN data frame. In case of SocketCAN there is a dedicated type called SocketCANFrame. Most of other drivers in Apache PLC4X which rely on TCP, UDP or serial transports can unify right above transport. Yet due to variety of APIs which are possible to be used with CAN bus such early unification at API level is not possible. Place where CANDriverAdapter jumps in is once transport formed the frame structure. Then, adapter asks the transport to turn that structure into a FrameData. An instance of FrameData is then passed to an adapter delivered by CANopen Driver. This adapter can then create a CANopenFrame which is processed by desired driver logic. The return side, when desired driver wants to publish information is a bit simplified. Because FrameData does not be a real type (it is an interface) we can skip it. With a help of a CANFrameBuilder provided by CAN transport driver can easily construct a structure which is supported by it. While this makes an API asymmetric it also makes it possible to use any third party transport with CANopenDriver.","title":"CAN Bus Driver Adapter","component":"plc4x","version":"latest","name":"can","url":"/plc4x/latest/users/protocols/can.html","titles":[{"text":"More details on the driver","hash":"_more_details_on_the_driver","id":1}]},"129":{"id":129,"text":"CANopen is a specific protocol built on top of CAN bus. Name Type Default Value Required Description Name CAN open Code canopen Maven Dependency org.apache.plc4x plc4j-driver-canopen 0.12.0 Default Transport socketcan Supported Transports socketcan Config options: node-id INT CAN node identifier. Depending on used CAN version it might be 11 or 29 bit unsigned int. heartbeat BOOLEAN Forces PLC4X to send CANopen heartbeat (NMT) messages to the bus. request-timeout INT 1000 Time after which dispatched BUS operation (ie. SDO request) will be marked as failed. Transport config options: Name Value Description Supported Operations CANopen PDO read / write PDO messages are broadcasted to the bus and have to be mapped at application layer. CANopen SDO read / write SDO are request/response conversations. Both read and write path is supported. subscribe Receiving PDO messages requires construction of valid subscription. It is possible to subscribe to CANopen NMT messages. CAN, despite (or due) to its popularity has ambiguous meaning. There are multiple articles and sources which attempts to give introduction, yet very few of them is consistent between each other. There are two dominant formats of frames - CAN 2.0A and 2.0B: CAN 2.0A uses 11 bit identifier and up to 8 bytes of data. CAN 2.0B uses 29 bit identifier and up to 8 bytes of data. To make things worse with introduction of CAN FD amount of combinations increased even more. Double check frame format as this integration supports CANopen and does not support CANopen FD nor CAN 2.0B. Further reading on CAN flavors: https://en.wikipedia.org/wiki/CAN_bus Default transport used with this protocol is socketcan. Currently, only 2.0A format (up to 8 bytes of data) is supported. Implemented driver supports currently socketcan transport. Change of transport requires code modifications and injection of new \"transport\" type which will encode CANopen payloads to specific frame format. Socketcan seems to be most widespread way to access CAN bus. It also masks different hardware variants which might come with their own drivers. The CANopen specification defines Object Dictionary (OD). This driver does honor OD structure through usage of index and sub index for addressing fields. It does not ship Electronic Data Sheet (EDS) parser leaving it for applications who wish to utilize it. CANopen specification defines several groups of addresses dedicated to certain kind of operations. Critical services and message exchanges related with them have lower identifiers making them wining eventual bus access. The array size block is necessary only if application expect same value several times. If SDO returns for example 4 values of UNSIGNED8 it can be declared as ::UNSIGNED8[4] for PDO. Equivalent for SDO is ::/:UNSIGNED8[4]. Service Format Supported operations Description SDO SDO:nodeId:index/subindex:type[arraySize] read write SDO is for request/response communication. Both expedited and segmented modes are supported. No support for block transfer. Transfer kind is automatically determined based on payload length. All numeric values - ndodeId, index, subindex can be specified using hexadecimal notation (ie. 0xA). PDO TRANSMIT_PDO_1:nodeId:type[arraySize] RECEIVE_PDO_1:nodeId:type[arraySize] TRANSMIT_PDO_2:nodeId:type[arraySize] RECEIVE_PDO_2:nodeId:type[arraySize] TRANSMIT_PDO_3:nodeId:type[arraySize] RECEIVE_PDO_3:nodeId:type[arraySize] TRANSMIT_PDO_4:nodeId:type[arraySize] RECEIVE_PDO_4:nodeId:type[arraySize] subscribe write PDO is an asynchronous operation hence receiving of it requires subscription. Check Apache PLC4X API documentation for more detailed example of how to use subscriptions API. Subscriber will be notified with value mapped to type defined in field syntax. NMT NMT NMT:nodeId subscribe NMT messages are sent using CAN node ID 0. They have the highest priority on the bus. Messages of this kind indicate operating state of an node (booted, operational). Subscriptions to this service receive structure with two fields: node (USINT) and state (USINT). If subscription sets nodeId to 0 it will receive state updates for all bus participants. HEARTBEAT HEARTBEAT HEARTBEAT:nodeId subscribe HEARTBEAT messages have the lowest priority on the bus. They have the highest priority on the bus. Messages of this kind indicate operating state of an node (booted, operational). Subscriptions to this service receive structure with two fields: node (USINT) and state (USINT). If subscription sets nodeId to 0 it will receive state updates for all bus participants. Below table contains type mapping defined in CANopen specification. CANopen Type Length (in bits) PLC4X Type BOOLEAN 1 BOOL UNSIGNED8 8 USINT UNSIGNED16 16 UINT UNSIGNED24 24 UDINT UNSIGNED32 32 UDINT UNSIGNED40 40 ULINT UNSIGNED48 48 ULINT UNSIGNED56 56 ULINT UNSIGNED64 64 ULINT INTEGER8 8 SINT INTEGER16 16 INT INTEGER24 24 DINT INTEGER32 32 DINT INTEGER40 40 LINT INTEGER48 48 LINT INTEGER56 56 LINT INTEGER64 64 LINT REAL32 32 REAL REAL64 64 LREAL RECORD 8 * size BYTE OCTET_STRING 8 * size STRING (UTF-8) VISIBLE_STRING 8 * size STRING (UTF-8) TIME_OF_DAY unsupported TIME_DIFFERENCE unsupported UNICODE_STRING 8 * size STRING (UTF-8) All string types are decoded using UTF-8 encoding regardless of their kind (octet, visible, unicode). In case if device returns text using different encoding it is recommended to use RECORD type and construct text manually above PLC4X. The size in case of variable length structures is automatically assumed to full length of SDO answer. In case of writing length of field can be ommited. For example request write(SDO:1:2/3:RECORD, payload) will try to write whole payload to specified address. Same applies to responses sent by devies as requester often might not know full length of reply payload.","title":"CANopen","component":"plc4x","version":"latest","name":"canopen","url":"/plc4x/latest/users/protocols/canopen.html","titles":[{"text":"CAN in Automation","hash":"_can_in_automation","id":1},{"text":"Connection String Options","hash":"_connection_string_options","id":2},{"text":"socketcan","id":3},{"text":"More details on the driver","hash":"_more_details_on_the_driver","id":4},{"text":"Address Format","hash":"_address_format","id":5}]},"130":{"id":130,"text":"","title":"CtlrX","component":"plc4x","version":"latest","name":"ctrlx","url":"/plc4x/latest/users/protocols/ctrlx.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1}]},"131":{"id":131,"text":"","title":"DeltaV","component":"plc4x","version":"latest","name":"deltav","url":"/plc4x/latest/users/protocols/deltav.html","titles":[]},"132":{"id":132,"text":"","title":"DF1","component":"plc4x","version":"latest","name":"df1","url":"/plc4x/latest/users/protocols/df1.html","titles":[]},"133":{"id":133,"text":"Name Type Default Value Required Description Name EthernetIP Code eip Maven Dependency org.apache.plc4x plc4j-driver-eip 0.12.0 Default Transport tcp Supported Transports tcp Config options: backplane INT Without using routing information the backplane defaults to 1. This is overridden if communicationPath is provided. slot INT The slot within the backplane the CPU is located. bigEndian BOOLEAN Configure if the connection should be set to transport data in Big-Endian format, or not. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. To read and write data to a PLC4X device, the EtherNet/IP driver uses symbolic segments. This is used to refer to objects through their symbolic names. This makes reading data a lot easier, as you do not need to specify the Datatype for reading. %{tagname}[{startIndex}]:{numberOfElements} %{tagname}[{startIndex}]:{numberOfElements}:{DataType} Name Description Tagname symbolic name of the Data Start Index (optional) if the data is an array, we can specify a starting index from where we want to read Number of elements (optional) if the data is an array, we can specify the number of elements we want to read. Use this in combination with the starting index to get the exact scope you want. DataType (writing) Specify the Data-type of the value you want to write (mandatory) To store Use this data type Bit BOOL Bit array DWORD (32-bit boolean array) 8-bit integer SINT 16-bit integer INT 32-bit integer DINT 64-bit integer LINT 32-bit float REAL","title":"EtherNet/IP","component":"plc4x","version":"latest","name":"eip","url":"/plc4x/latest/users/protocols/eip.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2},{"text":"Address Format","hash":"_address_format","id":3},{"text":"Data Types","hash":"_data_types","id":4}]},"134":{"id":134,"text":"The Firmata protocol is based on the MIDI protocol used for communicating with musical equipment. It is also one of the most widely used protocols for communication with Arduino devices. This driver is built to be compatible with the StandardFirmata Arduino Sketch which can be found here (Version last changed on August 17th, 2017) Name Type Default Value Required Description Name Firmata Code firmata Maven Dependency org.apache.plc4x plc4j-driver-firmata 0.12.0 Default Transport serial Supported Transports serial Config options: Transport config options: serial.baud-rate INT 57600 Baud-rate the serial port is set to. Typical values are: - 9600 - 14400 - 19200 - 38400 - 57600 - 115200 - 128000 But can also be smaller or larger values. serial.num-data-bits INT 8 Number of data-bits used to send data. Typical values are: - 7 - 8 But can also be smaller or larger values. serial.num-stop-bits INT 1 Number of stop-bits used to terminate data. Typical values are: - 1 - 2 (The theoretical 1.5 stop-bits setting is not supported) serial.parity STRING NO_PARITY Number of bits used to calculate data parity. This is used to detect errors in transmission. Allowed values are: - NO_PARITY - ODD_PARITY - EVEN_PARITY - MARK_PARITY - SPACE_PARITY Name Value Description Supported Operations write Writing is only supported to digital addresses. subscribe Reading is supported for both digital and analog addresses. See note after this table however. When subscribing to pins, these are configured to become read pins. When writing to digital pins, these are configured to become output pins. However, writing to pins for which a subscription exists, an exception will be thrown. In order to write to previously subscribed pins, all subscriptions for this have to be cancelled first. Similar to the Modbus protocol, the Firmata protocol support Boolean and Short values. Booleans are used for the digital IO pins and short values for the analog inputs. The full format for a digital address has the following format: digital:{start-address}[{array-size}]:{special-config} The start-address and array-size are simple integer values. special-config can be used to configure the digital input pin to something else than INPUT. Currently the only supported option is PULLUP which configured the Arduino’s digital input pin to use it’s built in pullup-resistor. Both the array-size as well as the special-config parts are optional. So the following example addresses are valid: digital:4 digital:4[5] digital:4:PULLUP A normal Arduino Uno is equipped with 14 digital inputs: 0-13 However in case of using the serial port (which will always be the case when using this driver), the pins 0 and 1 are the RX and TX pins of the serial port and can’t be used. The full format for an analog address is as follows: analog:{start-address}[{array-size}] The start-address and array-size are simple integer values. Both the array-size is optional. So the following example addresses are valid: analog:1 analog:2[3] A normal Arduino Uno is equipped with 6 analog inputs: 0-5","title":"Firmata","component":"plc4x","version":"latest","name":"firmata","url":"/plc4x/latest/users/protocols/firmata.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"serial","id":2},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":3},{"text":"Binary Addresses","hash":"_binary_addresses","id":4},{"text":"Analog Addresses","hash":"_analog_addresses","id":5}]},"135":{"id":135,"text":"This driver is a generic purpose driver. It allows implementing a basic CAN bus listening or writing scenarios. CAN bus open is a specific protocol built on top of CAN bus. Name Type Default Value Required Description Name Generic CAN Code genericcan Maven Dependency org.apache.plc4x plc4j-driver-can 0.12.0 Default Transport socketcan Supported Transports socketcan Config options: node-id INT Node id of the target device. request-timeout INT 1000 Default timeout for all types of requests. Transport config options: Name Value Description Supported Operations publish write Allows to publish a CAN frame via CAN transport. receive subscribe This operation allows listening for incoming data or requests. Given popularity of CAN in multiple market segments there is variety of protocols which can’t be published. Also, for many cases which are data acquisition oriented it is necessary to tap only parts of communications. This driver allows to model incoming and outgoing communication using plain Apache PLC4X api. The written CAN data is constructed from fields submitted via write request builder. The receiving data is transformed in similar fashion, based on subscribed fields. Service Format Supported operations Description n/a nodeId:type[arraySize] write subscribe There is only one syntax which is currently supported by this driver. Pay attention. You can use multiple fields to write and subscribe actual data. All fields must sum to up to 64 bits. If you subscribe less, then remaining data is discarded and not available via PLC4X api. The data will be sent in the same order as fields. Below table contains type mapping defined in Generic CAN driver. CANopen Type Length (in bits) PLC4X Type BOOLEAN 1 BOOL UNSIGNED8 8 USINT UNSIGNED16 16 UINT UNSIGNED24 24 UDINT UNSIGNED32 32 UDINT UNSIGNED40 40 ULINT UNSIGNED48 48 ULINT UNSIGNED56 56 ULINT UNSIGNED64 64 ULINT INTEGER8 8 SINT INTEGER16 16 INT INTEGER24 24 DINT INTEGER32 32 DINT INTEGER40 40 LINT INTEGER48 48 LINT INTEGER56 56 LINT INTEGER64 64 LINT REAL32 32 REAL REAL64 64 LREAL The type table is similar to CANopen. Main difference is lack of support for string types.","title":"Generic CAN","component":"plc4x","version":"latest","name":"genericcan","url":"/plc4x/latest/users/protocols/genericcan.html","titles":[{"text":"CAN Bus semantics","hash":"_can_bus_semantics","id":1},{"text":"Connection String Options","hash":"_connection_string_options","id":2},{"text":"socketcan","id":3},{"text":"More details on the driver","hash":"_more_details_on_the_driver","id":4},{"text":"Address format","hash":"_address_format","id":5}]},"136":{"id":136,"text":"Name Type Default Value Required Description Name IEC 60870-5-104 Code iec-60870-5-104 Maven Dependency org.apache.plc4x plc4j-driver-iec-60870 0.12.0 Default Transport tcp Supported Transports tcp Config options: request-timeout INT 4000 Default timeout for all types of requests. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected.","title":"IEC-60870","component":"plc4x","version":"latest","name":"iec-60870","url":"/plc4x/latest/users/protocols/iec-60870.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2}]},"137":{"id":137,"text":"Protocol C C# Go Java Python AB-Ethernet ADS /AMS BACnet/IP CBus CANopen DeltaV DF1 EtherNet/IP EtherNet/IP - Logix Firmata IEC-60870 KNXnet/IP Modbus (TCP/RTU/ASCII) OPC-UA Open-Protocol (Torque-Tools) PLC4X (Proxy-Protocol) Profinet S7 Simulated Legend: Implemented and fully supported Work in progress Not implemented yet Unsure The following table contains a list of operations and the protocols that support them: Protocol Auto-Discover Browse Read Single Address Value Read Multiple Address Values Write Single Address Value Write Multiple Address Value Subscribe to Value changes Subscribe to PLC Events/Alarms Publish Values AB-Ethernet ADS /AMS BACnet/IP CBus CANopen DeltaV DF1 EtherNet/IP EtherNet/IP - Logix Firmata IEC-60870 KNXnet/IP Modbus (TCP/RTU/ASCII) OPC-UA Open-Protocol (Torque-Tools) PLC4X (Proxy-Protocol) Profinet S7 Simulated Legend: Implemented and fully supported Implemented and supported by simulation Not implemented yet Unsure","title":"","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/users/protocols/index.html","titles":[{"text":"Current language support for protocols","hash":"_current_language_support_for_protocols","id":1},{"text":"Features","hash":"_features","id":2}]},"138":{"id":138,"text":"Name Type Default Value Required Description Name KNXNet/IP Code knxnet-ip Maven Dependency org.apache.plc4x plc4j-driver-knxnetip 0.12.0 Default Transport udp Supported Transports udp pcap raw Config options: knxproj-file-path STRING Path to the knxproj file. The default KNXnet/IP protocol doesn’t provide all the information needed to be able to fully decode the messages. knxproj-password STRING Optional password needed to read the knxproj file. group-address-num-levels INT 3 KNX Addresses can be encoded in multiple ways. Which encoding is used, is too not provided by the protocol itself so it has to be provided externally: 3 Levels: {main-group (5 bit)}/{middle-group (3 bit)}/{sub-group (8 bit)} 2 Levels: {main-group (5 bit)}/{sub-group (11 bit)} 1 Level: {sub-group (16 bit)} The default is 3 levels. If the knxproj-file-path this information is provided by the file. connection-type STRING LINK_LAYER Type of connection used to communicate. Possible values are: 'LINK_LAYER' (default): The client becomes a participant of the KNX bus and gets it’s own individual KNX address. 'RAW': The client gets unmanaged access to the bus (be careful with this) 'BUSMONITOR': The client operates as a busmonitor where he can’t actively participate on the bus. Only one 'BUSMONITOR' connection is allowed at the same time on a KNXnet/IP gateway. Transport config options: udp.local-port INT -1 Some connections require a UDP listener to listen on a fixed port. Use this configuration option in order to define the port number of the local port. pcap.replay-speed-factor FLOAT 1.0 Numeric value for changing the replay speed: - 1 = Normal speed (default) - 0 = Maximum speed - 0.5 = Half speed - 2 = Double speed pcap.loop BOOLEAN false Should the replay start at the beginning of the file as soon as the end is reached? - true = Automatically start again - false = Stop at the end (default) pcap.filter STRING Filter expression used to filter out unwanted packets from the replay. pcap.support-vlans BOOLEAN false Should VLan packets be automatically unpacked? pcap.protocol-id INT -1 When provided, filters all packets to let only packets matching this ethernet protocol-id pass. raw.resolve-mac-address BOOLEAN If set to true, the transport will automatically resolve the MAC address for a given IP address (Allows connecting to a raw-socket device using the devices host-name or ip-address). raw.support-vlans BOOLEAN false Should VLan packets be automatically unpacked? raw.protocol-id INT -1 When provided, filters all packets to let only packets matching this ethernet protocol-id pass. KNX Addresses usually have one of the following structures: 3-level Address: {main-group(0-15)}/{middle-group(0-15)}/{sub-group(0-255)} 2-level Address: {main-group(0-15)}/{sub-group(0-4095)} 1-level Address: {sub-group(0-65535)} Depending on the group-address-type configured in the connection string or defined in the knxproj-file configured by the knxproj-file-path connection string parameter, the corresponding address pattern has to be used. However, when subscribing for events, each segment allows using of the wildcard character *. If the addresses used in the KNX installation are structured, this way it is possible to, for example (depending on the scheme used): Collect all information for a given level of your building: 1// Collect all information for a given room: 2/4/* Collect all information about heating in all rooms: //50 Don’t use wildcards when explicitly reading or writing data, this is only supported when subscribing to events.","title":"KNXnet/IP","component":"plc4x","version":"latest","name":"knxnetip","url":"/plc4x/latest/users/protocols/knxnetip.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"udp","id":2},{"text":"pcap","id":3},{"text":"raw","id":4},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":5}]},"139":{"id":139,"text":"Name Type Default Value Required Description Name Logix CIP Code logix Maven Dependency org.apache.plc4x plc4j-driver-eip 0.12.0 Default Transport tcp Supported Transports tcp Config options: communication-path STRING The communication path allows for connection routing across multiple backplanes. It uses a common format found in Logix controllers. It consists of pairs of values, each pair begins with either 1 (Backplane) or 2 (Ethernet), followed by a slot in the case of a backplane address, or if using Ethernet an ip address. e.g. [1,4,2,192.168.0.1,1,1] - Routes to the 4th slot in the first rack, which is a ethernet module, it then connects to the address 192.168.0.1, then finds the module in slot 1. backplane INT Without using routing information the backplane defaults to 1. This is overridden if communicationPath is provided. slot INT The slot within the backplane the CPU is located. bigEndian BOOLEAN Configure if the connection should be set to transport data in Big-Endian format, or not. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. Logix has the following connection string format:- logix:tcp://{ip-address}:{port}?{options} An example connection string would look like:- logix:tcp://127.0.0.1:502?communicationPath=[1,1] Note the port and option fields are optional. In general all Logix addresses have this format: {address}:{data-type}[{array-size}] If the array-size part is omitted, the size-default of 1 is assumed. If the data-type part is omitted, the data type from the controller is used The address format matches that found in the controller. The following data types are supported BOOL (boolean) SINT (int 8) USINT (uint 8) BYTE (uint 8) INT (int 16) UINT (uint 16) WORD (uint 16) DINT (int 32) UDINT (uint 32) DWORD (uint 32) LINT (int 64) REAL (float)","title":"Logix","component":"plc4x","version":"latest","name":"logix","url":"/plc4x/latest/users/protocols/logix.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":3},{"text":"Connection String","hash":"_connection_string","id":4},{"text":"General Format","hash":"_general_format","id":5},{"text":"Data Types","hash":"_data_types","id":6}]},"140":{"id":140,"text":"Name Type Default Value Required Description Name Modbus TCP Code modbus-tcp Maven Dependency org.apache.plc4x plc4j-driver-modbus 0.12.0 Default Transport tcp Supported Transports tcp Config options: request-timeout INT 5000 Default timeout for all types of requests. unit-identifier INT 1 Unit-identifier that identifies the target PLC (On RS485 multiple Modbus Devices can be listening). Defaults to 1. ping-address STRING 4x00001:BOOL Simple address, that the driver will use to check, if the connection to a given device is active (Defaults to reading holding-register 1). Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. Name Type Default Value Required Description Name Modbus RTU Code modbus-rtu Maven Dependency org.apache.plc4x plc4j-driver-modbus 0.12.0 Default Transport serial Supported Transports tcp serial Config options: request-timeout INT 5000 Default timeout for all types of requests. unit-identifier INT 1 Unit-identifier that identifies the target PLC (On RS485 multiple Modbus Devices can be listening). Defaults to 1. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. serial.baud-rate INT 57600 Baud-rate the serial port is set to. Typical values are: - 9600 - 14400 - 19200 - 38400 - 57600 - 115200 - 128000 But can also be smaller or larger values. serial.num-data-bits INT 8 Number of data-bits used to send data. Typical values are: - 7 - 8 But can also be smaller or larger values. serial.num-stop-bits INT 1 Number of stop-bits used to terminate data. Typical values are: - 1 - 2 (The theoretical 1.5 stop-bits setting is not supported) serial.parity STRING NO_PARITY Number of bits used to calculate data parity. This is used to detect errors in transmission. Allowed values are: - NO_PARITY - ODD_PARITY - EVEN_PARITY - MARK_PARITY - SPACE_PARITY Name Type Default Value Required Description Name Modbus ASCII Code modbus-ascii Maven Dependency org.apache.plc4x plc4j-driver-modbus 0.12.0 Default Transport serial Supported Transports tcp serial Config options: request-timeout INT 5000 Default timeout for all types of requests. unit-identifier INT 1 Unit-identifier that identifies the target PLC (On RS485 multiple Modbus Devices can be listening). Defaults to 1. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. serial.baud-rate INT 57600 Baud-rate the serial port is set to. Typical values are: - 9600 - 14400 - 19200 - 38400 - 57600 - 115200 - 128000 But can also be smaller or larger values. serial.num-data-bits INT 8 Number of data-bits used to send data. Typical values are: - 7 - 8 But can also be smaller or larger values. serial.num-stop-bits INT 1 Number of stop-bits used to terminate data. Typical values are: - 1 - 2 (The theoretical 1.5 stop-bits setting is not supported) serial.parity STRING NO_PARITY Number of bits used to calculate data parity. This is used to detect errors in transmission. Allowed values are: - NO_PARITY - ODD_PARITY - EVEN_PARITY - MARK_PARITY - SPACE_PARITY Name Value Description Supported Operations read write Modbus has the following connection string format:- modbus-tcp:{transport}://{ip-address}:{port}?{options} An example connection string would look like:- modbus-tcp:tcp://127.0.0.1:502 Note the transport, port and option fields are optional. In general all Modbus addresses have this format: {memory-Area}{start-address}:{data-type}[{array-size}] If the array-size part is omitted, the size-default of 1 is assumed. If the data-type part is omitted, it defaults to BOOL for Coils and Discrete Inputs and INT for input, holding and extended registers. There are a number of memory areas defined in the Modbus specification. Discrete Input Area Coil Area Input Register Area Holding Register Extended Register Area Name Memory Area Aliases Description Bit-Size Permissions Starting Address Discrete Input discrete-input: or 1 or 1x Boolean input value, usually representing a binary input to the PLC 1 Read Only 1 Coil coil: or 0 or 0x Boolean value, usually representing a binary output from the PLC 1 Read/Write 1 Input Register input-register: or 3 or 3x Short input value, usually representing an analog input to the PLC 16 Read Only 1 Holding Register holding-register: or 4 or 4x Short value, usually representing an analog output from the PLC 16 Read/Write 1 Extended Register extended-register: or 6 or 6x Short value, 16 Read/Write 0 Initially the Modbus format allowed up to 10000 address to be specified or the discrete inputs, coils, input registers and holding registers. Later on, this was expanded to allow up 65536 address within each memory area (except the extended register area). When using the long address format i.e. input-registers:1 the addresses between 1 and 65535 are able to be specified. When using the shorter versions there are two formats available i.e. 30001 and 300001. With the shorter format 3XXXX being limited to between 30001 and 39999, while the longer format 3XXXXX being limited to between 300001 and 365535. These memory areas all start at address 1. For the extended register area the addresses 0-99999 are able to be specified. These registers are mapped to file records with a length of 10000. Address 600000 corresponds to the first address in file record 0. Address 610000 is then the first address in the second file record and so on. It is noted that there is generally only 10 file records (600000 thru to 699999) however the spec allows for 65536 file records. Using the extended-register: format you are able to reference all of these, if the shorter format is used then it is limited to 699999. This memory area starts at address 0. The following data types are supported BOOL (boolean) SINT (int 8) USINT (uint 8) BYTE (uint 8) INT (int 16) UINT (uint 16) WORD (uint 16) DINT (int 32) UDINT (uint 32) DWORD (uint 32) LINT (int 64) ULINT (uint 64) LWORD (uint 64) REAL (float) LREAL (double) CHAR (char) WCHAR (2 byte char) Most memory areas start at address 1, except for the extended register area which starts at 0. These are both mapped to 0x0000 when it is sent in the Modbus protocol. The input, holding and extended registers consist of 16-bit registers while the discrete input and coil areas consist of bits. The following Modbus function codes are supported:- 0x01 (Read Coils) 0x02 (Read Discrete Inputs) 0x03 (Read Holding Registers) 0x04 (Read Input Registers) 0x05 (Write Single Coil) 0x06 (Write Single Register) 0x0F (Write Multiple Coils) 0x10 (Write Multiple Registers) 0x14 (Read File Record)(Extended Register Read) 0x15 (Write File Record)(Extended Register Write) To read 10 holding registers starting at address 20 and parse as Unsigned Integers the following examples are all valid. holding-register:20:UINT[10] 400020:UINT[10] 4x00020:UINT[10] 40020:UINT[10] 4x0020:UINT[10] To read 1 holding register at address 5678 the following examples are valid. holding-register:5678 405678 4x05678 45678 4x5678 To read 10 extended registers starting at address 50 the following examples are valid. extended-register:50[10] 600050[10] 6x00050[10] 60050[10] 6x0050[10] This corresponds to addresses 50-59 in file record 1. To read 10 extended registers starting at address 9995 the following examples are valid. extended-register:9995[10] 609995[10] 6x09995[10] 69995[10] 6x9995[10] This corresponds to addresses 9995-9999 in file record 1 and addresses 0-5 in file record 2. Note that this request is split into 2 sub requests in the Modbus protocol.","title":"Modbus (TCP/UDP/Serial)","component":"plc4x","version":"latest","name":"modbus","url":"/plc4x/latest/users/protocols/modbus.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"Modbus TCP","hash":"_modbus_tcp","id":2},{"text":"tcp","id":3},{"text":"Modbus RTU","hash":"_modbus_rtu","id":4},{"text":"tcp","id":5},{"text":"serial","id":6},{"text":"Modbus ASCII","hash":"_modbus_ascii","id":7},{"text":"tcp","id":8},{"text":"serial","id":9},{"text":"Supported Operations","hash":"_supported_operations","id":10},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":11},{"text":"Connection String","hash":"_connection_string","id":12},{"text":"General Format","hash":"_general_format","id":13},{"text":"Memory Areas","hash":"_memory_areas","id":14},{"text":"Data Types","hash":"_data_types","id":15},{"text":"Some useful tips","hash":"_some_useful_tips","id":16},{"text":"Examples","hash":"_examples","id":17}]},"141":{"id":141,"text":"Name Type Default Value Required Description Name Opcua Code opcua Maven Dependency org.apache.plc4x plc4j-driver-opcua 0.12.0 Default Transport tcp Supported Transports tcp Config options: protocol-code STRING transport-code STRING transport-config STRING discovery BOOLEAN true Controls the feature of the discovery endpoint of an OPC UA server which every server will propagate over an '/discovery' endpoint. The most common issue here is that most servers are not correctly configured and propagate the wrong external IP or URL address. If that is the case you can disable the discovery by configuring it with a false value. The discovery phase is always conducted using NONE security policy. username STRING A username to authenticate to the OPCUA server with. password STRING A password to authenticate to the OPCUA server with. security-policy STRING NONE The security policy applied to communication channel between driver and OPC UA server. Default value assumes. Possible options are NONE, Basic128Rsa15, Basic256, Basic256Sha256, Aes128_Sha256_RsaOaep, Aes256_Sha256_RsaPss. message-security STRING SIGN_ENCRYPT The security policy applied to messages exchanged after handshake phase. Possible options are NONE, SIGN, SIGN_ENCRYPT. This option is effective only when securityPolicy turns encryption (anything beyond NONE). key-store-file STRING The Keystore file used to lookup client certificate and its private key. key-store-type STRING pkcs12 Keystore type used to access keystore and private key, defaults to PKCS (for Java 11+). Possible values are between others jks, pkcs11, dks, jceks. key-store-password STRING Java keystore password used to access keystore and private key. server-certificate-file STRING Filesystem location where server certificate is located, supported formats are DER and PEM. trust-store-file STRING The trust store file used to verify server certificates and its chain. trust-store-type STRING pkcs12 Keystore type used to access keystore and private key, defaults to PKCS (for Java 11+). Possible values are between others jks, pkcs11, dks, jceks. trust-store-password STRING Password used to open trust store. channel-lifetime LONG 3600000 Time for which negotiated secure channel, its keys and session remains open. Value in milliseconds, by default 60 minutes. session-timeout LONG 120000 Expiry time for opened secure session, value in milliseconds. Defaults to 2 minutes. negotiation-timeout LONG 60000 Timeout for all negotiation steps prior acceptance of application level operations - this timeout applies to open secure channel, create session and close calls. Defaults to 60 seconds. request-timeout LONG 30000 Timeout for read/write/subscribe calls. Value in milliseconds. encoding.receive-buffer-size INT 65535 Maximum size of received TCP transport message chunk value in bytes. encoding.send-buffer-size INT 65535 Maximum size of sent transport message chunk. encoding.max-message-size INT 2097152 Maximum size of complete message. encoding.max-chunk-count INT 64 Maximum number of chunks for both sent and received messages. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. Name Value Description Supported Operations read The read interface allows for reading the full range of supported PLC4X data types in single and bulk requests write The write interface allows for writing the full range of supported PLC4X data types in single and bulk requests subscribe Subscriptions are possible with events on event- and cyclic-basis The OPC UA drivers uses the connection string opcua:{transport}://{ip-address}:{port}?{options} An example of this connection string would be:- opcua:tcp://127.0.0.1:12686?discovery=true&username=admin&password=password Note the transport, port and options fields are optional. The secure channel implementation within Apache PLC4X project have been tested against existing open source server implementations. This includes Eclipse Milo (all modes) as well as OPC Foundation .NET server (except Basic128Rsa15). Manual tests proven that driver is able to communicate with OPC UA server launched on PLCs as well as commercial simulators. Depending on actual configuration of remote end there might be necessity to prepare client certificate. Preparation of certificate is beyond driver, however in case when no client certificate is provided, it will be auto-generated to establish a session. The security modes differ between themselves by strength of applied signature and encryption algorithms. Driver is able to communicate with single security mode at the time. Additionally, to security policy it is possible to specify messageSecurity option which indicates expected security settings after initial handshake. By default, this option is set to SIGN_ENCRYPT which imposes high security settings and full encryption of exchanged message payloads. In case when additional diagnostics is needed payloads has to be traced through TRACE level log entries. The SIGN mode gives possibility o browse packets in tools such wireshark. The OPC UA specification defines its own procedures for certificate validation. In order to simplify implementation by default server certificate validation is relaxed. Unless explicitly disabled through configuration of trustStoreFile all server certificates will be accepted without validation. In case when secure communication is enabled the trustStoreFile option might be used to point certificates which client should accept. The acceptance rely on regular TLS checks (expiry date, certificate path etc.), does not validate OPC UA specific parts such as application URI. Depending on settings driver might or might not attempt to discover endpoints from remote server. In case when discovery option is set to true driver will look up server certificate through connection attempt. The discovery option also enables checks of server endpoints for matching security settings. Once initial discovery is completed and driver finds endpoint matching its security settings it will launch second connection attempt which will switch to configured security mode. Each connection attempt made by driver attempt to use limits described in table above. Role of these options is declaration of values accepted and expected by client. Once server returns its limits (Acknowledge for supplied Hello call) driver picks values from these. The only one note is that driver takes minimum of local receive and remote send buffer size. It does same with local send and remote receive buffer. Usual values of sendBufferSize and receiveBufferSize PLC devices remain at 8196 bytes. Due to lack of complete implementation of negotiation and chunking logic the OPC UA driver prior Apache PLC4X 0.11 release could supply calls exceeding server limits. To read, write and subscribe to data, the OPC UA driver uses the variable declaration string of the OPC UA server it is connecting to. It includes the namespace(ns) of the hierarchy tree followed by the type of identifier string(s), numeric(i), binary(b) or guid(g) and its address. The Data Type is an optional field, if it is not included a default data type is selected based on the datatype of the returned value. For Unsigned data types it needs to be included otherwise. ns={namespace-index};[s|i|g|b]={Identifier};{Data Type} The following data types are supported BOOL (boolean) SINT (int 8) USINT (uint 8) BYTE (uint 8) INT (int 16) UINT (uint 16) WORD (uint 16) DINT (int 32) UDINT (uint 32) DWORD (uint 32) LINT (int 64) ULINT (uint 64) LWORD (uint 64) REAL (float) LREAL (double) CHAR (char) WCHAR (2 byte char) STRING (utf-8) WSTRING (utf-16) The following are examples of valid addresses String address: ns=2;s=HelloWorld/ScalarTypes/Boolean ns=2;s=HelloWorld/ScalarTypes/Boolean;BOOL Numeric address ns=1;i=1337 ns=1;i=1337;DINT GUID address: ns=2;g=09087e75-8e5e-499b-954f-f2a8624db28a ns=2;g=09087e75-8e5e-499b-954f-f2a8624db28a;REAL Note the Identifiers s,i,b and g specify the format of the address not the data type of the returned value. The namespace (e.g. ns=2) within the address is specific to the server you are connecting to. OPC UA The OPC Unified Architecture (UA), released in 2008, is a platform independent service-oriented architecture that integrates all the functionality of the individual OPC Classic specifications into one extensible framework. This multi-layered approach accomplishes the original design specification goals of: Functional equivalence: all COM OPC Classic specifications are mapped to UA Platform independence: from an embedded micro-controller to cloud-based infrastructure Secure: encryption, authentication, and auditing Extensible: ability to add new features without affecting existing applications Comprehensive information modeling: for defining complex information","title":"OPC UA","component":"plc4x","version":"latest","name":"opcua","url":"/plc4x/latest/users/protocols/opcua.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2},{"text":"Connection String","hash":"_connection_string","id":3},{"text":"Secure communication","hash":"_secure_communication","id":4},{"text":"Certificate verification","hash":"_certificate_verification","id":5},{"text":"Negotiation procedure","hash":"_negotiation_procedure","id":6},{"text":"Address Format","hash":"_address_format","id":7},{"text":"Data Types","hash":"_data_types","id":8},{"text":"Example of a valid OPC UA address:","hash":"_example_of_a_valid_opc_ua_address","id":9},{"text":"Some useful tips","hash":"_some_useful_tips","id":10},{"text":"More details on OPC UA","hash":"_more_details_on_opc_ua","id":11}]},"142":{"id":142,"text":"Name Type Default Value Required Description Name Open-Protocol Code open-protocol Maven Dependency org.apache.plc4x plc4j-driver-open-protocol 0.12.0 Default Transport tcp Supported Transports tcp Config options: Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected.","title":"Open-Protocol (Torque-Tools)","component":"plc4x","version":"latest","name":"open-protocol","url":"/plc4x/latest/users/protocols/open-protocol.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2}]},"143":{"id":143,"text":"The PROFINET driver implements a class 3 real time controller. Which is able to communicate with multiple devices on the same network segment. On linux as the Java executable won’t have permission to capture raw packets, this needs to be enabled via:- sudo setcap cap_net_raw,cap_net_admin=eip /usr/lib/jvm/jdk-19/bin/java The executable will change based on the jdk and OS you are using. Name Type Default Value Required Description Name Profinet Code profinet Maven Dependency org.apache.plc4x plc4j-driver-profinet-ng 0.12.0 Default Transport raw Supported Transports raw Config options: gsd-directory STRING ~/.gsd required dap-id STRING ip-address STRING Transport config options: raw.resolve-mac-address BOOLEAN If set to true, the transport will automatically resolve the MAC address for a given IP address (Allows connecting to a raw-socket device using the devices host-name or ip-address). raw.support-vlans BOOLEAN false Should VLan packets be automatically unpacked? raw.protocol-id INT -1 When provided, filters all packets to let only packets matching this ethernet protocol-id pass. Name Value Description Supported Operations subscribe Only the subscription service is currently supported. The Profinet driver uses the connection string profinet:raw://{ip-address}:{port}?{options} Where the {ip-address}, unlike other PLC4X driver, uses the local IP address of the network interface you would like to bind to. This allows us to connect to multiple devices at once via the devices parameter. An example of this connection string which has two devices test-device-1 and test-device-2, connected on the localhost interface would be:- profinet:raw://127.0.0.1?gsddirectory=/Profinet/GSD&devices=[[test-device-1,MOD_1,(SUBMOD_1,,SUBMOD_1,)],[test-device-2,MOD_1,(SUBMOD_1,,SUBMOD_1,)]] Note the transport, port fields shouldn’t have to be changed The format of address will be in the format. device.slot.id.module_name.channel.bit:format An example would be device-1.1.1.DIGITAL_INPUT.0.1:BOOL Note:- The following data types are supported BOOL (boolean) SINT (int 8) USINT (uint 8) BYTE (uint 8) INT (int 16) UINT (uint 16) WORD (uint 16) DINT (int 32) UDINT (uint 32) DWORD (uint 32) LINT (int 64) ULINT (uint 64) LWORD (uint 64) REAL (float) LREAL (double) CHAR (char) WCHAR (2 byte char) STRING (utf-8) WSTRING (utf-16) Although the GSD file contains all the information needed to configure which data will be available from a device. The easiest approach is to use the browsing function of the Profinet driver to return a list of all available tags. Then only the addresses of interest can be selected.","title":"Profinet (In Development)","component":"plc4x","version":"latest","name":"profinet","url":"/plc4x/latest/users/protocols/profinet.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"raw","id":2},{"text":"Connection String","hash":"_connection_string","id":3},{"text":"Address Format","hash":"_address_format","id":4},{"text":"Data Types","hash":"_data_types","id":5},{"text":"Some useful tips","hash":"_some_useful_tips","id":6}]},"144":{"id":144,"text":"Name Type Default Value Required Description Name PLC4X (Proxy-Protocol) Code plc4x Maven Dependency org.apache.plc4x plc4j-driver-plc4x 0.12.0 Default Transport tcp Supported Transports tcp Config options: remote-connection-string STRING URL-Encoded connection string to use on the proxy side to reach the given PLC. request-timeout INT 5000 Default timeout for all types of requests. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. Name Value Description Supported Operations: read write subscribe The plc4x protocol connection has the following connection string format:- plc4x:{transport}://{ip-address/hostname}:{port}?remote-connection-string={url-encoded-connection-string} An example connection string would look like:- plc4x://127.0.0.1?remote-connection-string=simulated%3A%2F%2Flocalhost Note the transport, port and option fields are optional. The remote connection string: simulated://localhost is encoded as simulated%3A%2F%2Flocalhost The address format is simply the address format of the used remote connection. So if you specify a remote connection as simulated, please follow the address format of that driver.","title":"PLC4X (Proxy) (TCP)","component":"plc4x","version":"latest","name":"plc4x","url":"/plc4x/latest/users/protocols/plc4x.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2},{"text":"Connection String Options","hash":"_connection_string_options_2","id":3},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":4},{"text":"Connection String","hash":"_connection_string","id":5},{"text":"General Format","hash":"_general_format","id":6}]},"145":{"id":145,"text":"This version of the S7 driver is aimed at exploiting the advanced features of the S7-300 and S7-400 controllers, as well as basic reading and writing functions for the S7-1200 and S7-1500 devices (PUT/GET functions). We hope in a short period of time to have the S7-Plus version, which should exploit the asynchronous functions of the S7-1500. Most of the closed source solutions are based on request/response patterns, generally with a high level of optimization. Even the best open source implementations, such as “Snap7” [1], base their usage on this same pattern. Is there another way to do things?, yes!, but this should be enough for 95% of automation applications, if your system works and you are happy with it, apply the maxim of automation, “Is it working?, no touch it, production first!” If the solution you need to develop must strictly revolve around the Siemens platform, you will probably opt for a solution based on SOFTNET OPC-DA or OPC-UA which is the recommendation given by Siemens, if you want to go to a lower level, you should use the libraries SAPI-S7 [2] (generally supplied with SOFTNET), which is the lowest access layer to access the internal Siemens communications architecture, which gives access to any CP and/or any protocol (S7-TCP, MPI, DP, etc.) that is being used. The configuration of the communication links is carried out from the STEP7 environment (TIA or Simatic Manager) in a static way, so creating communication links falls within a development cycle configure/compile/transfer to each of the interlocutors. Now, what options are there for those applications that want to make use of the asynchronous nature of S7 PLCs, including alarms, events, or time-stamped data? Outside of the Siemens ecosystem, very few. In general they are tied to a specific platform, for example PCS7 (Siemens DCS), Braumat (Platform for brewing processes) or WinCC (SCADA system). This is where the open source nature of the S7 driver developed by the PLC4X team becomes a differentiating factor. The driver data structures are clearly defined in \"mspec\", the cornerstone for the development of our drivers in different languages and platforms, as well as a well-defined API, allow a lingua franca for managing the driver development cycle. Our added value is having the advanced functionalities of the Simatic S7-300/S7-400 such as: Device status management (RUN/STOP). System events (Alarms/User messages). Cyclic Subscription (CYC). SZL(SSL) diagnostics. These functionalities normally available on the Siemens platform (STEP7/TIA/WinCC) are now available for use in open IoT-type applications, which guarantees the correct handling of the \"quality\" of the data, as well as its time stamp. Although this driver is developed using Siemens Hardware, it should be functional with VIPA brand equipment, which is a version (clone) of the S7-300, with more memory and functionalities. If you have one of these devices and you are in your best disposition to carry out communication tests, we would be very grateful if you collaborate with the results in the development list and placing the model and firmware version that you have used. When trying to connect to a Siemens LOGO device, it is important to add one connection option, as Siemens seems to have only partially implemented the protocol, the device simply terminates the connection as soon as our driver tried to read the SZL table in order to find out which type of S7 device it is talking to. This can be disabled by passing in the type of PLC. For a Siemens LOGO device therefore please add ?controller-type=LOGO to the connection string. It is typical within the decision-making cycle in an automation project to know who and how much the support of the tools that will be used in the control architecture will cost. PLC4X support is on our development list (dev@plc4x.apache.org) where we will gladly answer your questions about the S7 driver. If your company requires commercial support, companies that directly or indirectly support the drivers and tools developed in PLC4X are published on our page. Rev Release Date Description of the change 0 0.10.0 2022/10/04 Stable release. In PLC4X the URL philosophy is used as the data source for the connection for the specification of the driver and its connection parameters, this is almost a standard in network applications (pointing to the best practices). It is also possible to create an instance of the driver directly and assign its parameters with the typical \"set\" methods. In the following, reference will be made to the Java-based driver, which implements all the functionalities indicated in this manual. The specified URL has the structure SCHEMA: Defines the protocol to be used, in our particular case S7 DOMAINE NAME: Physical address of the PLC or CP’s. PARAMETERS: List of key/value values separated by ampersand \"&\". They define the behavior of the driver. The SCHEMA and DOMAINE NAME are almost standard for any URL and do not require further explanation. The PARAMETERS that define the behavior of the driver are defined in the following table. Name Type Default Value Required Description Name Siemens S7 (Basic) Code s7 Maven Dependency org.apache.plc4x plc4j-driver-s7 0.12.0 Default Transport tcp Supported Transports tcp Config options: local-rack INT 1 Rack value for the client (PLC4X device). local-slot INT 1 Slot value for the client (PLC4X device). local-tsap INT 0 Local Transport Service Access Point. remote-rack INT 0 Rack value for the remote main CPU (PLC). remote-slot INT 0 Slot value for the remote main CPU (PLC). remote-rack2 INT 0 Rack value for the remote secondary CPU (PLC). remote-slot2 INT 0 Slot value for the remote secondary CPU (PLC). remote-tsap INT 0 Remote Transport Service Access Point. pdu-size INT 1024 Maximum size of a data-packet sent to and received from the remote PLC. During the connection process both parties will negotiate a maximum size both parties can work with and is equal or smaller than the given value is used. The driver will automatically split up large requests to not exceed this value in a request or expected response. max-amq-caller INT 8 Maximum number of unconfirmed requests the PLC will accept in parallel before discarding with errors. This parameter also will be negotiated during the connection process and the maximum both parties can work with and is equal or smaller than the given value is used. The driver will automatically take care not exceeding this value while processing requests. Too many requests can cause a growing queue. max-amq-callee INT 8 Maximum number of unconfirmed responses or requests PLC4X will accept in parallel before discarding with errors. This option is available for completeness and is correctly handled out during the connection process, however it is currently not enforced on PLC4X’s side. So if a PLC would send more messages than agreed upon, these would still be processed. controller-type STRING As part of the connection process, usually the PLC4X S7 driver would try to identify the remote device. However some devices seem to have problems with this and hang up or cause other problems. In such a case, providing the controller-type will skip the identification process and hereby avoid this type of problem. Possible values are:/n- S7_300 - S7_400 - S7_1200 - S7-1500 - LOGO read-timeout INT 0 This is the maximum waiting time for reading on the TCP channel. As there is no traffic, it must be assumed that the connection with the interlocutor was lost and it must be restarted. When the channel is closed, the \"fail over\" is carried out in case of having the secondary channel, or it is expected that it will be restored automatically, which is done every 4 seconds. ping BOOLEAN false Time for supervision of TCP channels. If the channel is not active, a safe stop of the EventLoop must be performed, to ensure that no additional tasks are created. ping-time INT 0 If your application requires sampling times greater than the set \"read-timeout\" time, it is important that the PING option is activated, this will prevent the TCP channel from being closed unnecessarily. retry-time INT 0 Time value in seconds at which the execution of the PING will be scheduled. Generally set by developer experience, but generally should be the same as (read-timeout / 2). Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. Name Value Description Supported Operations read Only supported with tcp transport. write Only supported with tcp transport. After defining the URL, the connection is made. Driver selection from the URL is done via PLC4X’s SPI support, so driver instantiation and mapping originating from the URL is done transparently by the Java SPI services. Any inconsistency in the URL definition will generate an exception that must be handled by the user program. . . . try { PlcConnection connection = new DefaultPlcDriverManager().getConnection(\"s7://10.10.1.33?remote-rack=0&remote-slot=3&controller-type=S7_400\"); //(2.1) final PlcReadRequest.Builder subscription = connection.readRequestBuilder(); //(2.2) . . . } In (2.1) the driver instance is created, you only have to ensure that the required driver is in the CLASSPATH of your Java environment. Already in (2.2) it defines the type of service required (read/write or a subscription), here a read request is indicated. No problems? Then we are ready to configure and request the data that we require from the PLC. Let’s go to step \"three\". By having the connection we can start building and executing our requests. . . . readrequest.addTagAddress(\"MySZL\", \"SZL_ID=16#0091;INDEX=16#0000\"); //(3.1) final PlcReadRequest rr = readrequest.build(); //(3.2) final PlcReadResponse szlresponse = rr.execute().get(); //(3.3) if (szlresponse.getResponseCode(\"MySZL\") == PlcResponseCode.OK) {//(3.4) } . . . In (3.1) the request for a PLCTag is constructed, in this particular case a list of controller system status. In step (3.2) we build the request and in (3.3) we execute the request using the futures pattern in Java. We verify in (3.4) that everything is fine and that our data was acquired. These steps are shown separately for ease of analysis, but can be simplified into one statement to avoid excessive code. A detailed explanation of the format for addressing PLCTags in the S7 driver will be given in the following sections. When programming Siemens PLCs, usually the tool used to do that is called TIA Portal. The PLC4X S7 Driver is therefore sticking to the address format defined by this tool as it simplifies exchanging address information. In general all S7 addresses have this format: . %{Memory-Area}{start-address}:{Data-Type}[{array-size}] If the array-part is omitted, the size-default of 1 is assumed. Generally there are two types of addresses: . Bit-Addresses {Memory-Area-Code}{Start-Byte-Address}.{Bit-Offset}:BOOL[{Count}] . Byte-Addresses {Memory-Area-Code}{Start-Byte-Address}:{Data-Type-Code}[{count}] Bit addresses are only used if the datatype: BOOL is used. The array notation of these can be omitted. In this case a Count of 1 is used per default. Start-Byte-Address and Bit-Offset in above list both represent unsigned integer values. In case of accessing data in the data block memory area, the syntax is quite a bit more complex: . DB{Data-Block-Number}.DB{Short-Data-Type-Code}{Start-Byte-Address}.{Bit-Offset}:BOOL[{Count}] . DB{Data-Block-Number}.DB{Short-Data-Type-Code}{Start-Byte-Address}:{Data-Type-Code}[{Count}] When reading a STRING datatype, currently 254 characters would automatically be fetched from the PLC. In order to limit the amount of data, we extended the STRING type declaration syntax to allow limiting this. With the following format less than 254 characters can be read: . DB{Data-Block-Number}.DB{Short-Data-Type-Code}{Start-Byte-Address}:STRING({string-length})[{Count}] These addresses can usually be copied directly out of TIA portal. However we also implemented a shorter version, as above version does have some unnecesary boilerplate parts (The .DB in the middle as well as the Short-Data-Type-Code) The shorter syntax looks like this: . DB{Data-Block-Number}:{Start-Byte-Address}.{Bit-Offset}:BOOL[{Count}] . DB{Data-Block-Number}:{Start-Byte-Address}:{Data-Type-Code}[{Count}] . DB{Data-Block-Number}:{Start-Byte-Address}:STRING({string-length})[{Count}] The S7 driver will handle both types of notation equally. The S7 driver currently allows access to the following memory areas. The Code column represents the code that is used in above general address syntax: Not all S7 device types support the same full set of memory areas, so the last column gives more information on which types a given memory area is supported on. Code Name Description Supported PLC Types C COUNTERS TODO: Document this TODO: Document this T TIMERS TODO: Document this TODO: Document this D DIRECT_PERIPHERAL_ACCESS TODO: Document this TODO: Document this I INPUTS Inputs (Digital and Analog … usually Analog Inputs just have a start-address offset to separate them from the digital ones) All Q OUTPUTS Outputs (Digital and Analog … usually Analog Outputs just have a start-address offset to separate them from the digital ones) All M FLAGS_MARKERS TODO: Document this TODO: Document this DB DATA_BLOCKS Memory areas containing user-defined data structures usually accessed by the integer data block number. antease note that data block addresses have a little more complex address format. All DBI INSTANCE_DATA_BLOCKS TODO: Document this TODO: Document this LD LOCAL_DATA TODO: Document this TODO: Document this Code Short-Code Name Description Size in bits Supported PLC Types Bit-Strings (Will all interpreted as sequence of boolean values in PLC4X) BOOL X Bit Single boolean value 1 All BYTE B Byte Array of 8 boolean values 1 All WORD W Word Array of 16 boolean values 2 All DWORD D Double-Word Array of 32 boolean values 4 All LWORD X Long-Word Array of 64 boolean values 8 S7_1500 Integer values SINT B Small int 8 bit integer (signed) 1 S7_1200, S7_1500 USINT B Small unsigned int 8 bit integer (unsigned) 1 S7_1200, S7_1500 INT W Integer 16 bit integer (signed) 2 All UINT W Unsigned integer 16 bit integer (unsigned) 2 S7_1200, S7_1500 DINT D Double integer 32 bit integer (signed) 4 All UDINT D Unsigned Double Integer 32 bit integer (unsigned) 4 S7_1200, S7_1500 LINT X Long integer 64 bit integer (signed) 8 S7_1500 ULINT X Unsigned long integer 64 bit integer (unsigned) 8 S7_1500 Floating point values REAL D Real 32 bit IEEE 754 full precision floating point value (signed) 4 All LREAL X Long Real 64 bit IEEE 754 double precision floating point value (signed) 8 S7_1200, S7_1500 Character values CHAR B Character 8 bit character 1 All WCHAR X Double byte character 16 bit character value 2 S7_1200, S7_1500 STRING X String String 2 + n bytes 1 All WSTRING X Double byte String String of 16 bit characters 2 + n bytes 1 S7_1200, S7_1500 Temporal values S5TIME X S5 Time S5 Time (like in duration) 2 S7_300, S7_400, S7_1500 TIME X Time Time (like in duration) (Minutes, Seconds, Milliseconds) 4 All LTIME X Long Time Long Time (like in duration) (Minutes, Seconds, Milliseconds, Microseconds, Nanoseconds) 8 S7_1500 DATE X Date Date 2 All TIME_OF_DAY X Time of day Time (like in 4:40PM) 4 All DATE_AND_TIME X Date and Time Date and time (like in 03.05.2020 4:40 PM) 8 S7_300, S7_400, S7_1500 PLC programming in general is a Pandora’s box! Here we will assume that you use standard technological functions/libraries within your development cycle, therefore, at this point it is important to point out the actors that participate in this dialogue between the driver and the PLC and how they affect the communication cycle. The different actors involved in communication are shown in image 1. PLC (AS), the controller. AS is the reference used in PCS7. App, your application. PLC4X, implementation of the S7 driver. OS, PLC operating system. PCS7, represents the technological functions used in the PLC. PCS7 are Siemens DCS libraries. S7App, your application that runs on the PLC. CP, the communications CP will depend on your architecture and requirements, for an S7-300 it will be a CP 343-1 or a CP 443-1 for an S7-400. The S7 driver allows the subscription to asynchronous events generated in the PLC. This type of event is generated by S7-300, S7-400, G120C-PN, S120-PN controllers and VIPA devices. Unfortunately for the S7-1200 and S7-1500 series this functionality has been superseded. For a complete list of compatibility between the S7-300,400 and S7-1200 & S7-1500, you can see the document in [1] provided by Siemens. These services have the following advantages: Report the status of the CPUs and other components within the control architecture that support it (CP, IM, DI, etc). Transfer of values when a change occurs. Associate values to the events sent. A better handling of the TimeStamp of the associated values. The messages are classified into two groups depending on how they are generated: SCAN: All those events generated by the system or preset in Step7 (TIA Portal). The change of state of the configured signals is carried out by the operating system at specific intervals (500 ms, 100ms or 16 ms). ALARM: These are events generated by the user application using the alarm blocks (ALARM_S, ALARM_SQ, NOTIFY, ALARM, ALARM_8). In addition to user applications, these events can be generated from technological functions such as PCS7 or Braumat. The data associated with the events is represented in a HashMap in order to facilitate its transfer to other applications based on a standard such as JMS, MQTT or other messaging technology. The handling of the TimeStamp of the SCAN type events is generated in the computer. In ALARM type messages the TimeStamps are generated in the PLC. It is extremely important that the date and time synchronization is done between both computers and PLC. The values associated with the events can have different types of representation, so their interpretation must be agreed upon during the programming of the application in the PLC and your application. For each type of event, the particular fields of type will be arranged within the Map. These will be documented for each type of event. To maximize the use of the data fields associated with the events, the use of the intra-area pointer system and the ANY type pointer is recommended in the PLC, As well as the recommendations for the management of the time stamp [2]. At the user application level App, you can use the PLC4X API to subscribe SCAN or ALARM type events by selecting any of the following fields according to the requirement: MODE: Change of operating state in the controller, change from STOP to RUN and vice versa. SYS: System events, associated with internal events of the controller or events previously parameterized for their indication. USR: Events programmed by the user and that are registered in the internal diagnostic buffer. ALM: Alarm events generated by the user program, ALARM_S, ALARM_8, NOTIFY. In the following sections we will describe in more detail the functionalities of each field. By subscribing to controller status changes or MODE events, the PLC status changes can be tracked. Depending on the CPU model, these state changes are followed in the user application (PLC program), OB100 and OB101, allowing these applications to be brought to a safe state. Now, how do these state changes affect external applications, for example HMI or custom user applications? In the use of a unified Siemens architecture, the operator panels (HMI) and WinCC (Scada) detect the status of the CPU and pass the quality of the points in the database in real time to poor quality. In the case of an application developed with PLC4X, the use of MODE events will allow your application to indicate to users the quality of the points used, and that by design the quality is not updated in the controller. From image 2, we can describe the sequence of actions that can be followed for subscription. In the first place, the subscription process occurs from the App of the user (1)(2)(3)(4), having a positive response the application is ready to receive the events asynchronously from the PLC (AS). Suppose that the manager for a reason passes the controller to STOP (06) through the front switch or from the engineering station, then OS proceeds to send a notification (07)(08) to all consoles that are registered to receive this event. Subsequently, the manager decides to switch the controller to execution mode, through the front switch or the engineering console, at this time the OS is in charge of generating the startup events, initially it indicates the hot start WARN_RESTART (09)(10)(11) and if the startup is successful, indicate that the controller is in execution mode or RUN (12)(13)(14). The information received in (08)(11)(14) is included in the attached table. Field Type Description TYPE STRING Fixed value. TIMESTAMP Instant Instant.now () value assigned when receiving the event from the PLC. MAP HashMap The HashMap with all fields. METHOD byte Value of \"method\" as defined in S7Parameter. FUNCTION byte Value of \"function\" as defined in S7Parameter. CURRENT_MODE short Status value reported in the event. Check the ModeTransitionType enum. With the sequence diagram and the data structures that will be received by the application, we can analyze the Java code for this specific function. We think this should serve as a pseudocode for the other languages. public class PLCEventModeSubscription { public static void main(String[] args) throws Exception { try (PlcConnection connection = new PlcDriverManager() .getConnection(\"s7://192.168.1.51?remote-rack=0&remote-slot=3&controller-type=S7_400\")) { final PlcSubscriptionRequest.Builder subscription = connection.subscriptionRequestBuilder(); (01) subscription.addEventField(\"myMODE\", \"MODE\"); final PlcSubscriptionRequest sub = subscription.build(); System.out.println(\"Query: \" + sub.toString()); final PlcSubscriptionResponse subresponse = sub.execute().get(); if (subresponse.getResponseCode(\"myMODE\") == PlcResponseCode.OK) { (04) PlcConsumerRegistration registerMode = subresponse .getSubscriptionHandle(\"myMODE\") (05) .register(msg -> { (08)(11)(14) System.out.println(\"******** S7ModeEvent ********\"); Map map = ((S7ModeEvent) msg).getMap(); map.forEach((x, y) -> { System.out.println(x + \" : \" + y); }); short currentmode = (short) map.get(S7ModeEvent.Fields.CURRENT_MODE.name()); System.out.println(\"CURRENT_MODE MSG: \" + ModeTransitionType.enumForValue(currentmode).name()); System.out.println(\"****************************\"); }); } System.out.println(\"Waiting for the messages.\"); Thread.sleep(120000); connection.close(); System.out.println(\"Ending the connection.\"); } } } System events allow to receive asynchronously any event that affects the operation of the controller, or any of its peripheral equipment that is capable of sending events through a PROFIBUS or Profinet fieldbus. A first example of its use is the change of state of a CP, IM or FM within the architecture of the controller. This will allow the application to indicate that there is an effect on the system that may affect the quality of the signals used, allowing preventive or corrective actions to be taken as required. In general, system and user events are part of the same group of events, but they are differentiated to facilitate their processing. From the sequence diagrams after subscribing to the required event type (01)(02)(03)(04), the consumer (05) is registered to start receiving the events either from the SYS system or from the user USR. When the event is generated, it is sent to the diagnostic buffer (06) and an image of it is sent to all consoles registered to receive this type of event (07) distributed by the OS (08). Since at the protocol level the events are not differentiated, the PLC4X driver (08) is in charge of classifying the events in SYS or USR and transferring them to the registered consumer (09). For didactic purposes, a step-by-step explanation has been carried out, but in general the App application can be subscribed to the four types of events simultaneously. The following table shows the fields available for each message. Field Type Description TYPE STRING Fixed value. TIMESTAMP Instant Instant.now () value assigned when receiving the event from the PLC. EVENT_ID short OS generated event ID. PRIORITY_CLASS byte Value of \"method\" as defined in S7Parameter. OB_NUMBER byte Value of \"function\" as defined in S7Parameter. DAT_ID short Status value reported in the event. Check the ModeTransitionType enum. INFO1 WORD System information 1 word long. INFO2 DWORD System information 2 words l ng. For SYS events, the EVENT_ID is generated automatically by the OS, and basically they are constant in the different families of controllers. For the USER or User-defined events follow the same pattern as system events. They have the particularity that the value of EVENT_ID must be between the values 0xAXXX and 0xBYYY. This programming of the user-defined events is carried out at the level of the PLC(AS) controller, so we recommend the technical note [3] of the Siemens portal. In the case of user-defined messages, it is important to take into account that these are reported to the diagnostic buffer, which has a limited capacity depending on the CPU model used. Also take into account that the diagnostic buffer works like a circular buffer, so the oldest messages will be lost. +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ |15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ \\__________/\\__________/\\____________________/ Event class IDs Event number Event Class: 1 Standard OB Events 2 Synchronous errors 3 Asynchronous errors 4 Mode transition 5 Run-time events 6 Communications events 7 Events for fail-safe and fault tolerant systems 8 Standardized diagnostic data on modules 9 Predefined user events A,B Freely definable events C,D,E Reserved F Events for modules other than CPUs (for example, CPs, FMs) IDs (Bit) 8 0:Event leaving state, 1:Event entering state 9 1:Entry in diagnostic buffer 10 1:Internal error 11 1:External error In the previous table we can see how the event classes are coded, and how they are classified. If you require detailed information on each event, the user’s App must interpret the indicated bits. In the INFO1 and INFO2 fields, specific diagnostic information associated with the event is generally attached, or some information that needs to be recorded in the case of user events. The INFO1 field contains information that can be stored in a word, namely, WORD, INT of ARRAY [0..1] OF CHAR. The INFO2 field contains information that can be stored in a double word, namely, DWORD, DINT, REAL, TIME, ARRAY [0..3] OF CHAR. Below is an example code for the subscription of events type SYS. public static void main(String[] args) throws Exception { try (PlcConnection connection = new PlcDriverManager(). getConnection(\"s7://192.168.1.51?remote-rack=0&remote-slot=3&controller-type=S7_400\")) { final PlcSubscriptionRequest.Builder subscription = connection.subscriptionRequestBuilder(); (01) subscription.addEventField(\"mySYS\", \"SYS\"); final PlcSubscriptionRequest sub = subscription.build(); System.out.println(\"Query: \" + sub.toString()); final PlcSubscriptionResponse subresponse = sub.execute().get(); PlcConsumerRegistration registerSys = subresponse .getSubscriptionHandle(\"mySYS\") (05) .register(msg -> { (09) System.out.println(\"******** S7SysEvent ********\"); Map map = ((S7SysEvent) msg).getMap(); map.forEach((x, y) -> { System.out.println(x + \" : \" + y); }); Integer eventid = (Integer) map.get(S7SysEvent.Fields.EVENT_ID.name()); System.out.println(\"DIAGNOSTIC: \" + S7DiagnosticEventId. valueOf(eventid.shortValue()).getDescription()); (10) System.out.println(\"****************************\"); }); System.out.println(\"Waiting for the messages.\"); Thread.sleep(120000); connection.close(); System.out.println(\"Ending the connection.\"); } } And below is an example code for the subscription of events type USR. public static void main(String[] args) throws Exception { try (PlcConnection connection = new PlcDriverManager(). getConnection(\"s7://192.168.1.51?remote-rack=0&remote-slot=3&controller-type=S7_400\")) { final PlcSubscriptionRequest.Builder subscription = connection.subscriptionRequestBuilder(); subscription.addEventField(\"myUSR\", \"USR\"); final PlcSubscriptionRequest sub = subscription.build(); System.out.println(\"Query: \" + sub.toString()); final PlcSubscriptionResponse subresponse = sub.execute().get(); PlcConsumerRegistration registerUsr = subresponse .getSubscriptionHandle(\"myUSR\") (05) .register(msg -> { System.out.println(\"******** S7UserEvent *******\"); Map map = ((S7UserEvent) msg).getMap(); map.forEach((x, y) -> { (09) System.out.println(x + \" : \" + y); }); System.out.println(\"****************************\"); }); System.out.println(\"Waiting for the messages.\"); Thread.sleep(120000); connection.close(); System.out.println(\"Ending the connection.\"); } } The Java code shows how to detect the type of event in an event type SYS. In the S7 driver, there is an enum object S7DiagnosticEventId(10) that allows us to identify which internal event of the PLC(AS) generated it and thus, through the interpretation of the INFO1 and INFO2 fields, determine the root cause of the event. To date, the enum object S7DiagnosticEventId contains a considerable amount of diagnostic values, it must be updated according to the new CPUs or firmware versions available. Unlike SYS events, USR events must be interpreted directly by the App application, so they are generally scheduled during the development phase of the S7App application. By having INFO1 and INFO2 in the S7App program, the user can transfer data associated with events, such as transitions between phases, events of diagnostic routines such as firts-out or the start or end of a batch process, all asynchronously. The registration sequence for subscription is the typical one carried out so far (01)(02)(03)(04)(05). From that moment on, you can start receiving alarm events asynchronously. Depending on your application, you can make a request for the currently active alarms in the alarm buffer of the PLC(AS), in this way you can prepare a reception buffer or establish the correct state of a state machine that depends on the Active events in the controller. You must take into account that when making the request (06), from a few to hundreds of alarms can be stored depending on the complexity of your application and the capacity of the PLC (AS). In this scenario, the PLC4X driver maintains the dialogue with the OS to receive sequentially (07)(08)(09)(10)(11)(12)(13)(14) the alarms stored on the controller, to later transfer them to the user application App (15). At the end of the subscription process, it will begin to receive the events generated by the system, such as high precision time signals (16)(17)(18)(19) or events generated by the user application (20)(21)(22). This simple sequence of events is used by process applications based on PCS7, for the handling of alarms, events and logging of practically all the events of the distributed control system (DCS). Another important feature of the driver is the ability to recognize the alarms generated from the PLC(AS). In (23)(24)(25) the S7App application generates an alarm/event that is required to be acknowledged by the user to continue with the execution of a specific routine. The user applications App generates the acknowledgment (27)(28) using the corresponding alarm identifier, the OS is responsible for making the confirmation (29)(30) and asynchronously generating an event for the update of the state machine in the App(31)(32). Within the cyclical execution of the application S7App waits for the confirmation of the alarm (26) to continue with some specific routine. TODO: Field description Field Type Description TYPE TIMESTAMP TIMESTAMP_GOING TIMESTAMP_COMING ASSOCIATED_VALUES MAP EVENT_ID EVENT_STATE STATE ACKSTATE_GOING ACKSTATE_COMING EVENT_GOING EVENT_COMING EVENT_LAST_CHANGE SIG SIG_[1…8] SIG_STATE SIG_[1…8]_STATE SIG_DATA SIG_[1…8]_DATA SIG_[1…8]_DATA_GOING SIG_[1…8]_DATA_CO SIG_[1..8]_DATA_STATUS SIG_[1…8]_DATA_SIZE SIG_[1…8]_DATA_LENGTH TODO: Example code The cyclical subscription allows the acquisition of data in passive mode, that is, the data is sent from the PLC in a cyclical and synchronous way. The data transfer has three time bases: B01SEC: Time base 0.1 Sec. (100 mSec.). B0SEC: Time base 1.0 Sec. B10SEC: Time base 10 Sec. The system status list gives access to the operating data of the PLC, such as memory space, operating status, status of the control switches, as well as diagnostic data of expansion cards or decentralized peripherals, PROFIBUS or PROFINET . This is fundamental data to determine the quality of the data supplied by the PLC. By initiating the connection with the PLC you can determine its operating status, which will allow you to define the quality of the data taken and what the implemented application can do or not, eventually this is the procedure carried out by the Siemens CPs. Why SZL and not SSL? Well, creative freedom. The translation of the manuals from German to Spanish use SZL and German to English use SSL. Both the source code and the documentation use this reduction to keep the text uniform. Due to the fact that the data structures are so varied, basically one per type of diagnosis, the decision was made to return these as an array of bytes, leaving the developer to implement the parser according to their requirements. For a first approach to using system state lists a byte array to JSON notation parser is available at \"org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.SZL\" . Make use of the XXX document for a detailed explanation of each SZL, since as indicated, everything will depend on the hardware you have installed. The access to the SZL of the PLC is done as a read request, where the PLCTag is formed by two fields \"SZL_ID\" and \"INDEX\". SZL_ID: Number assigned to the SZL list. There are variants of the SZL_ID depending on whether the request is total, partial or just the header. To facilitate its use, the representation will always be in hexadecimal with the format 0xxyID. +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ |15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ \\__________/\\__________/\\____________________/ Module Number of Number of the partial class the partial list list extract Number of the partial list : The number of the partial SZL list you want to read. Number of the partial list extract: Defines which part of the partial list you want to extract. It varies from list to list. Module Class: The requests for the partial list depend on the hardware that is being used, generally the IM (communication cards), FM (special functions) and CP (periphery controller) have their own diagnostic system, which can be consulted through of the SZL_ID/INDEX PlcTag. Module Class: +--------------+-----------------+ | Module class | Coding (Binary) | +--------------|-----------------+ | CPU | 0000 | +--------------|-----------------+ | IM | 0100 | +--------------|-----------------+ | FM | 1000 | +--------------|-----------------+ | CP | 1100 | +--------------|-----------------+ INDEX: Number of the required sublist. To facilitate its use, the representation will always be in hexadecimal with the format 0xhhhh. public static void main(String[] args) throws Exception { System.setProperty(SimpleLogger.DEFAULT_LOG_LEVEL_KEY, \"trace\"); System.out.println(\"******************************************************************************************\"); System.out.println(\"Before using, take a look at:\"); System.out.println(\"System Software for S7-300/400.\\r\\nSystem and Standard Functions - Volume 1/2\"); System.out.println(\"Document: A5E02789976-01\"); System.out.println(\"Chapter 34 System Status Lists (SSL).\"); System.out.println(\"URL: https://cache.industry.siemens.com/dl/files/604/44240604/att_67003/v1/s7sfc_en-EN.pdf\"); System.out.println(\"******************************************************************************************\"); try (PlcConnection connection = new DefaultPlcDriverManager().getConnection(\"s7://10.10.1.33?remote-rack=0&remote-slot=3&controller-type=S7_400\")) { //(01) final PlcReadRequest.Builder readrequest = connection.readRequestBuilder(); //(02) readrequest.addTagAddress(\"MySZL\", \"SZL_ID=16#0012;INDEX=16#0000\"); //(03) final PlcReadRequest rr = readrequest.build(); //(04) final PlcReadResponse szlresponse = rr.execute().get(); //(05) if (szlresponse.getResponseCode(\"MySZL\") == PlcResponseCode.OK){ //(06) Collection data = szlresponse.getAllBytes(\"MySZL\"); //(07) byte[] dbytes = ArrayUtils.toPrimitive(data.toArray(new Byte[data.size()])); //(08) SZL szl = SZL.valueOf(0x0012); //(09) ByteBuf wb = wrappedBuffer(dbytes); //(10) StringBuilder sb = szl.execute(wb); //(11) System.out.println(sb.toString()); //(12) } else if (szlresponse.getResponseCode(\"MySZL\") == PlcResponseCode.NOT_FOUND){ //(13) System.out.println(\"SZL is not supported.\"); } Thread.sleep(2000); System.out.println(\"Bye...\"); } } The request for the SZL lists follows the same pattern of variable readings, for each request a response, unlike the request for process variables where several can be grouped in a single request, the SZL request must correspond to one request to one petition. Like other requests, the connection URL (01) is established and the request constructor instance (02) is created. The associated PLCTag is added to the diagnostic list (one per request), in this case the SZL_ID=0x0012 and INDEX=0x0000 (03) which allows obtaining the identification and firmware of the PLC. In (04) and (05), we prepare and execute the request to the PLC. If we have a valid response (06) we can perform the processing of the data stream obtained, which as indicated is an array of bytes which is obtained in (07) and (08). As we pointed out in the support libraries, we have an \"SZL\" object (an enum), which allows us to select the appropriate parser based on the numerical index SLZ_ID (09). In (10) we make a wrapper in a ByteBuf type (from the Netty library) in order to pass it to the \"szl\" instance through the \"execute\" method (11). When processing the data buffer we must obtain in (12) a StringBuilder with the JSON representation. {\"RECORDS\":[{\"AUSBG2\":0,\"AUSBG1\":61,\"BGTYP\":130,\"INDEX\":1,\"MIFB\":\"6ES7 417-4XT05-0AB0 \"},{\"AUSBG2\":0,\"AUSBG1\":2,\"BGTYP\":130,\"INDEX\":6,\"MIFB\":\"6ES7 417-4XT05-0AB0 \"},{\"AUSBG2\":768,\"AUSBG1\":22021,\"BGTYP\":0,\"INDEX\":7,\"MIFB\":\" \"},{\"AUSBG2\":3,\"AUSBG1\":22021,\"BGTYP\":0,\"INDEX\":129,\"MIFB\":\"Boot Loader \"}],\"LENGTHDR\":28,\"SZL-ID\":17,\"INDEX\":0,\"N_DR\":4} As noted above, the parser performed on the SZL enum is not complete, so the missing information must be obtained from the returned fields. For further details you should consult []. In case of not being able to process the request, it is detected in (13) to take the necessary measures. The following diagram represents the information in JSON format. From the obtained StringBuilder, you can use the JSON processor of your choice to access the different fields. Module class SZL-ID Implemented SZL List 16#xy00 Tested with S7-400, JSON Module identification 16#xy11 Tested with S7-400, JSON CPU characteristics 16#xy12 Tested with S7-400, JSON User memory areas 16#xy13 Tested with S7-400, JSON System areas 16#xy14 Tested with S7-400, JSON Block types 16#xy15 Tested with S7-400, JSON Interrupt status 16#xy22 Tested with S7-400, JSON Assignment between process image partitions and OBs 16#xy25 Tested with S7-400, JSON Communication status data 16#xy32 Tested with S7-400, JSON H CPU group information 16#xy71 Status of the module LEDs 16#xy74 Tested with S7-400, JSON Switched DP slaves in the H-system 16#xy75 Module status information 16#xy91 Tested with S7-400, JSON Rack / station status information 16#xy92 Tested with S7-400, JSON Rack / station status information 16#xy94 Tested with S7-400, JSON Extended DP master system / PROFINET IO system information 16#xy95 Tested with S7-400, JSON Module status information, PROFINET IO and PROFIBUS DP 16#xy96 Tested with S7-400, JSON Tool changer information (PROFINET IO) 16#xy9C Tested with S7-400, JSON Diagnostic buffer of the CPU 16#xyA0 Tested with S7-400, JSON Module diagnostic information (data record 0) 16#xyB1 Tested with S7-400, JSON Module diagnostic information (data record 1), geographical address 16#xyB2 Tested with S7-400, JSON Module diagnostic information (data record 1), local address 16#xyB3 Tested with S7-400, JSON Diagnostic data of a DP slave 16#xyB4 Tested with S7-400, JSON Especially when it comes to the input- and output addresses for analog channels, the start addresses are configurable and hereby don’t always start at the same address. In order to find out what addresses these ports have, please go to the device setting of your PLC in TIA Portal Especially pay attention to this part: In above image you can see that this device has 8 digital inputs (DI 8) and 2 analog inputs (AI 2_1) as well as 6 digital outputs (DQ 6). The start addresses of the digital inputs and outputs start directly at 0. The analog inputs however start at address 64. Each digital input and output can be addresses by a single bit-address (start-address and offset) or can be read in a block by reading a full byte starting at the given start address without providing a bit offset. https://snap7.sourceforge.net/ https://support.industry.siemens.com/cs/document/13649203/simatic-net-pc-software-s7-programming-interface?dti=0&dl=en&lc=es-ES https://support.industry.siemens.com/cs/document/109797648/simatic-comparison-list-for-s7-300-s7-400-s7-1200-s7-1500?dti=0&lc=en-WW https://support.industry.siemens.com/cs/mdm/109746537?c=98956468747&lc=es-DO https://support.industry.siemens.com/cs/document/15166942/writing-user-specific-information-to-the-diagnostic-buffer-of-a-cpu-(sfc-52)?dti=0&lc=en-ES https://support.industry.siemens.com/cs/document/24013249/how-do-you-display-alarm_s-or-alarm_d-messages-with-process-values-(so-called-associated-values)-on-a-wincc-flexible-operator-panel-?dti=0&lc=en-WW https://support.industry.siemens.com/cs/document/109481157/comunicaci%C3%B3n-entre-paneles-de-operador-simatic-hmi-y-convertidores-de-frecuencia-sinamics-g120-para-el-manejo-y-la-visualizaci%C3%B3n-de-avisos-de-fallo-y-de-advertencia-(enlace-directo-sin-controlador)?dti=0&lc=es-WW https://support.industry.siemens.com/cs/document/97550333/sinamics-g-s-hmi-direct-access?dti=0&lc=en-WW https://support.industry.siemens.com/cs/document/21402122/technology-cpus-technology-template-error-messages-?dti=0&lc=en-WW https://support.industry.siemens.com/cs/document/77467239/transforming-warning-and-error-messages-of-a-sinamics-drive-with-the-aid-of-the-xml-parser-and-integrating-them-into-a-step-7-hmi-project?dti=0&lc=en-WW https://support.industry.siemens.com/cs/document/24037531/%C2%BFqu%C3%A9-pasos-de-configuraci%C3%B3n-hay-que-realizar-en-el-simotion-scout-y-el-wincc-flexible-para-que-se-muestren-los-avisos-alarm_s-y-las-alarmas-tecnol%C3%B3gicas-dentro-del-wincc-flexible-runtime-?dti=0&lc=es-ES","title":"S7 (Step7)","component":"plc4x","version":"latest","name":"s7","url":"/plc4x/latest/users/protocols/s7.html","titles":[{"text":"Executive Summary","hash":"_executive_summary","id":1},{"text":"Regarding the Support","hash":"_regarding_the_support","id":2},{"text":"Record of revisions made to the driver","hash":"_record_of_revisions_made_to_the_driver","id":3},{"text":"Connecting as easy as 1-2-3.","hash":"_connecting_as_easy_as_1_2_3","id":4},{"text":"ONE","hash":"_one","id":5},{"text":"Connection String Options","hash":"_connection_string_options","id":6},{"text":"tcp","id":7},{"text":"TWO","hash":"_two","id":8},{"text":"THREE","hash":"_three","id":9},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":10},{"text":"General Format","hash":"_general_format","id":11},{"text":"Memory Areas","hash":"_memory_areas","id":12},{"text":"Data Types","hash":"_data_types","id":13},{"text":"Actors participating in the communication process","hash":"_actors_participating_in_the_communication_process","id":14},{"text":"S7 Read/Write","hash":"_s7_readwrite","id":15},{"text":"S7 Event Subscription","hash":"_s7_event_subscription","id":16},{"text":"SCAN Events","hash":"_scan_events","id":17},{"text":"Subscription to MODE events (S7ModeEvent).","hash":"_subscription_to_mode_events_s7modeevent","id":18},{"text":"Subscription to SYS events (S7SysEvent) and USER events (S7UserEvent).","hash":"_subscription_to_sys_events_s7sysevent_and_user_events_s7userevent","id":19},{"text":"Subscription to ALM type events (S7AlarmEvent).","hash":"_subscription_to_alm_type_events_s7alarmevent","id":20},{"text":"TODO: Cyclic subscription (CYC).","hash":"_todo_cyclic_subscription_cyc","id":21},{"text":"SZL System Status List","hash":"_szl_system_status_list","id":22},{"text":"Notation for SZL request","hash":"_notation_for_szl_request","id":23},{"text":"Some useful tips","hash":"_some_useful_tips","id":24},{"text":"Resources","hash":"_resources","id":25}]},"146":{"id":146,"text":"Name Type Default Value Required Description Name Simulated PLC4X Datasource Code simulated Maven Dependency org.apache.plc4x plc4j-driver-simulated 0.12.0 Supported Transports Config options: Name Value Description Supported Operations read Supports all standard IEC 61131 data types outlined below. write Supports all standard IEC 61131 data types outlined below. The simulated driver has the following connection string format:- simulated:{transport}://{ip-address}:{port} An example connection string would look like:- simulated://127.0.0.1 Note the transport and port fields are optional. The simulated addresses have this format: {simulation-type}/{alias}:{data-type}[{array-size}] If the array-size part is omitted, the default size of 1 is assumed. If the data-type part is omitted, it defaults to STRING. The simulation device supports 3 different simulation types STATE - This holds in memory a value for a given alias. This value can be read or written to, however this should only be used in conjunction with a persistent connection. Once the connection is closed the memory area is cleared. RANDOM - This provides a new random value for each read. When writing, a log message is recorded and the value is discarded. STDOUT - Always returns a null value when reading. When writing, a log message is recorded and the value is discarded. Aliases are used to identify the different field addresses. They should only contain alpha-numeric and the full stop (.) character. For readability and language specific technical purposes they should be less than 256 characters. The following data types are supported:- BOOL (boolean) SINT (int 8) USINT (uint 8) BYTE (uint 8) INT (int 16) UINT (uint 16) WORD (uint 16) DINT (int 32) UDINT (uint 32) DWORD (uint 32) LINT (int 64) ULINT (uint 64) LWORD (uint 64) REAL (float) LREAL (double) CHAR (char) WCHAR (2 byte char) STRING (254 bytes) The simulation driver uses a lot of the same logic templates that is used for the other drivers. It is a good way to test PLC4X functionality without having a device to connect to. All of these address formats are valid:- RANDOM/foo:INT RANDOM/foo:UDINT RANDOM/device1.machineA.sensor1:UINT RANDOM/device1.machineA.sensor1:STRING STATE/device1.machineA.sensor1:INT STDOUT/device1.machineA.sensor1:INT","title":"Simulated","component":"plc4x","version":"latest","name":"simulated","url":"/plc4x/latest/users/protocols/simulated.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":2},{"text":"Connection String","hash":"_connection_string","id":3},{"text":"General Format","hash":"_general_format","id":4},{"text":"Simulation Types","hash":"_simulation_types","id":5},{"text":"Alias","hash":"_alias","id":6},{"text":"Data Types","hash":"_data_types","id":7},{"text":"Some useful tips","hash":"_some_useful_tips","id":8},{"text":"Examples","hash":"_examples","id":9}]},"147":{"id":147,"text":"Some times the problem with industry protocols is, that the most interesting protocols live in places that are not very welcoming to IT folks. Either too hot or too cold and usually no good coffee around. The Capture Replay tool is a little helper, that can possibly help with this. Especially when it comes to developing passive mode drivers this tool can come in very handy. It allows to replay recorded network traffic and to directly intercept this traffic in any passive mode drivers. Possibly it could also work with non passive drivers, but I expect synchronization to be tricky. In order to create a capture I usually connect a device running WireShark to the network. Ideally to the replication port of a network switch so I can record all the traffic. An alternative would be to run WireShark on one of the PCs/Servers having access to the traffic I’m interested in. So if for example I wanted to work on a driver for control system X, capturing the traffic on one of the X servers is probably the simplest way to do it. If complicance rules prevent ths a third option would be to use a network tap to record the capture. Now you need to copy the pcapng file ideally to your development system. The capture can be replayed by the tool you find in plc4j/tools/capture-replay. Here simply look for the target/plc4j-capture-replay-0.12.0-uber-jar.jar and run: java -jar target/plc4j-capture-replay-0.12.0-uber-jar.jar --input-file {path to capture} --output-device {name of the network device} --replay-speed 1 --loop true The options input-file and output-device are mandatory, the rest is optional: input-file specifies the path to the capture file (pcapng) output-device name of the network device that will be used for output (name listed when running ifconfig on Linux and Mac or ipconfig on Windows) replay-speed Speed the replay will be played back. 1 is real time, 0 or less is as fast as possible, 0.5 is 50% slower than the original and 2 is twice as fast loop if set to true it will automatically start replaying the capture from the start as soon as the end is reached The replay-speed is ideal to see how your driver can cope with different volumes of traffic. So even if your driver is currently working fine, consider using this tool in order to find out if your system could cope with 50% more nodes or increased polling intervals etc.","title":"Capture Replay","component":"plc4x","version":"latest","name":"capture-replay","url":"/plc4x/latest/users/tools/capture-replay.html","titles":[{"text":"Getting a Capture","hash":"_getting_a_capture","id":1},{"text":"Replaying the Capture","hash":"_replaying_the_capture","id":2}]},"148":{"id":148,"text":"In some applications there might be multiple parts of the code that require access to a PLC connection. In contrast to usual microservice architectures, with PLCs we can’t simply open as many connections as we like. For example a S7-1200 typically allows 3 concurrent connections. Also can the process of establishing a connection be a pretty cost-intensive task. For example in the ADS protocol, when connecting, the driver loads the tables containing the description of all data-types defined in the PLC alongside the symbol-table which declares which variables are defined, which addresses they have, which datatype they reference and where they are located in the PLCs memory. Even if only one block of code repeatedly requires access to the PLC, simply creating a connection every time would put a too high load on the PLC and the network. When using the connection cache, many pieces of code can use it in parallel. However, only one piece of code can have access to a connection at the same time. So the first thread asking for a new connection will have the cache create a new connection and return it to the client. It can then use this just like any ordinary connection retrieved from the basic PlcConnectionManager. The main difference however is, that as soon as the client calls close() on this so-called connection-lease, the connection is not closed, but the cache puts it back into the storage, waiting for the next thread to require it. If a thread asks for a connection, which is currently leased by another thread, then the requesting thread will wait till the connection is returned and will then instantly continue using the connection till it then returns it back to the cache. If a second thread however asks for a different connection (with a different connection string), then the connection cache will create a new connection and return that instantly. When using the connection cache, connections should not use a connection-lease for a prolonged period of time. So the connection cache keeps track of the leases it hands out and terminates connection-leases that have not been returned for a long time. Here comes an example application, that uses the connection cache: public static void main(String[] args) throws Exception { PlcConnectionManager connectionManager = CachedPlcConnectionManager.getBuilder().build(); for (int i = 0; i org.apache.plc4x plc4j-connection-cache 0.12.0 In this snippet of code there are some considerations that are worth to be underlined. In recent versions of PLC4X we have refactored the PlcDriverManager to provide access to a PlcConnectionManager interface. This contains all methods that are related to creating connections. The ConnectionCache implements this same interface, therefore you can use a CachedPlcConnectionManager everywhere you can use the normal PlcConnectionManager. A new CachedPlcConnectionManager is usually created using a builder, that can be accessed via: CachedPlcConnectionManager.getBuilder(). This will be explained in more detail in the next chapter. The try-with-resources statement (i.e. try (PlcConnection connection = connectionManager.getConnection(connectionString))) ensures that a leased connection will be automatically returned to the cache after the use. As said before if the application keeps hold of the connection for too long, after a configurable amount of time will be automatically closed by the cache and the thread can no-longer use it (i.e. the maxLeaseTime parameter defaults to 4 seconds and is configurable - see the next chapter on configuring the connection cache). Before handing out a connection-lease, the connection cache will execute a ping() operation on the corresponding connection to check if it’s still valid. If this check fails, the cache will terminate this connection, establish a new one and then return a handle for that new connection. As mentioned before the CachedPlcConnectionManager is configurable. Mainly this involves configuring the timeouts. Name type Default Description maxLeaseTime java.time.Duration 4 seconds Time that a thread is allowed to keep a connection-lease till the connection-cache terminates the lease. maxWaitTime java.time.Duration 20 seconds Time that a thread asking for a connection will wait until the connection cache gives up and throws a PlcConnectionException. The configuration of a CachedPlcConnectionManager is done when creating the instance. For this the builder contains two methods to configure the timeouts. Here comes an example: public static void main(String[] args) throws Exception { PlcConnectionManager connectionManager = CachedPlcConnectionManager.getBuilder() .withMaxLeaseTime(Duration.ofSeconds(10)) .withMaxWaitTime(Duration.ofMinutes(1)) .build(); ... }","title":"The Connection Cache concept","component":"plc4x","version":"latest","name":"connection-cache","url":"/plc4x/latest/users/tools/connection-cache.html","titles":[{"text":"Configuring the CachedPlcConnectionManager","hash":"_configuring_the_cachedplcconnectionmanager","id":1}]},"149":{"id":149,"text":"","title":"Tools","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/users/tools/index.html","titles":[]},"150":{"id":150,"text":"The plc4j-connection-pool module has been discontinued and has been removed from PLC4X stating with version 0.11.0 There are situations where you don’t want to carry around connections in your code. For example if you have a microservice application, you might have multiple services accessing PLC data. Keeping an open connection for each of these is rather problematic as in contrast to modern computers, PLCs usually are only able to manage a small number of concurrent connections. I think a Siemens S7-1200 is limited to 7 concurrent connections and a Siemens LOGO can’t do more than 3. One alternative would be to open and close the connections all the time. This however puts an unnecessary stress on the PLCs as for protocols like the S7 or the ADS protocol a handshake of multiple requests and responses has to be executed before being able to communicate. As usually these services only require ad-hoc access to a PLC, it would be ideal to share connections between services. Another problem occurs when you open a connection and keep it open for a prolonged time period. Here it can happen quite often that a connection is terminated because the PLC has been turned off. Per default the PLC connection has no means of automatically re-connecting. The PooledPlcDriverManager can help you with both of these scenarios. The PooledPlcDriverManager is a wrapper around the normal PlcDriverManager. The main difference is that as soon as a connection is requested, it will look if one already exists and return that. If no connection exists it will create a new one and keep it in the pool. There are no API differences from using the normal PlcDriverManager so you call createConnection and close just like with the normal PLC4X API. The structure of the code is now more or less like if you would create a new connection for every request and close it afterwards. Another benefit of the PooledPlcDriverManager is that it will check a connection for any problems before returning it to the client. So if a connection was terminated, it will detect this and create a new connection. Here comes a little example program utilizing the PooledPlcDriverManager: PlcDriverManager driverManager = new PooledPlcDriverManager(); // This just simulates a scenario where a lot of connections would be created and immediately destroyed again. for(int i = 0; i < 100; i++) { try(PlcConnection connection = driverManager.getConnection(\"...\")) { ... do something ... (please refer to the PLC4J getting started for details) } } When sharing connections between multiple services, be sure to share the instance of the PooledPldDriverManager as otherwise you will result in having multiple pools.","title":"Connection Pool","component":"plc4x","version":"latest","name":"connection-pool","url":"/plc4x/latest/users/tools/connection-pool.html","titles":[{"text":"The PooledPlcDriverManager","hash":"_the_pooledplcdrivermanager","id":1},{"text":"Example","hash":"_example","id":2}]},"151":{"id":151,"text":"Object PLC Mapping (OPM) is heavily inspired by the Java Persistence API (JPA) [1]. One of the main goal of the PLC4X Project is to make it easy to communicate with PLC devices to enable the development of applications that interact with PLCs. As many (or even most) of the application programmers are no experts in PLC Communication and protocols it should be as easy as possible to interact with PLCs without too much domain knowledge. This is exactly the reason why JPA was initialized many years ago to allow the interaction with a Database by simply calling methods on POJOs (Plain old Java Object). This is exactly what the OPM Module is for, to enable PLC communication by simply interacting with a POJO. The following short code snippet shows how to read one value from a PLC via OPM. First, a PlcEntityManager is instantiated, then a connected entity is fetched for a given PLC connection address. Connected means that all method calls of the entity are intersected and replaced by PLC calls. This is then used to print one value to the console. In the second snippet one can see how the Entity class looks. The address where to read the variable pressure from is given in the @PlcField annotation. public static void main(String[] args) { PlcEntityManager em = new PlcEntityManager(); MyEntity entity = em.connect(MyEntity.class, \"s7://...\"); System.out.println(entity.getPressure()); } The class MyEntity is given by @PlcEntity public class MyEntity { @PlcField(\"DB01:DW01:LONG\") private double pressure; public void MyEntity() { // For OPM } public double getPressure() { return pressure; } } [1] https://www.oracle.com/technetwork/java/javaee/tech/persistence-jsp-140049.html","title":"Object PLC Mapping","component":"plc4x","version":"latest","name":"opm","url":"/plc4x/latest/users/tools/opm.html","titles":[{"text":"What is Object PLC Mapping","hash":"_what_is_object_plc_mapping","id":1},{"text":"Simple Example","hash":"_simple_example","id":2},{"text":"Annotations","hash":"_annotations","id":3},{"text":"More details","hash":"_more_details","id":4},{"text":"References","hash":"_references","id":5}]},"152":{"id":152,"text":"While the Apache PLC4X API allows simple access to PLC resources, if you want to continuously monitor some values and have them retrieved in a pre-defined interval, the core PLC4X API method is a little bit uncomfortable. Especially when you have multiple batches of data you want to have refreshed in different intervals. In this case you need to take care of the scheduling of queries, need to manage the connection state (Check if the connection is still available and to apply countermeasures, if there are problems) As we have encountered exactly the same problem for about every integration module we created, the Apache PLC4X team has created a tool called the Scraper. This tool automatically handles all of the tasks mentioned above. The Scraper can be found in the Maven module: org.apache.plc4x plc4j-scraper 0.12.0 In general, you need 3 parts to work with the Scraper: 1) A Scraper Configuration 2) A Scraper Implementation 3) A Handler to handle the results of Scraper jobs In the Scraper Configuration you define the so-called jobs. Sources define connections to PLCs using PLC4X drivers. Generally you can think of a Source as a PLC4X connection string, given an alias name. A Job defines which resources (PLC Addresses) should be collected from which Sources with a given Trigger. All resources in a job will be collected as a batch. Generally multiple types of triggers could theoretically be supported, but for now only a time triggered job (Aka SCHEDULED) is actually supported. In the near future we’re hoping that we will be able to support: - External triggers - Triggering collection based upon PLC-values But, as to now, this has not been implemented yet. The core of the Scraper configuration is the ScraperConfigurationTriggeredImplBuilder class. Use this to build the configuration objects used to bootstrap the Scraper. ScraperConfigurationTriggeredImplBuilder builder = new ScraperConfigurationTriggeredImplBuilder(); As soon as you have your builder instance, you should add at least one source to it. builder.addSource({connectionName}, {plc4xConnectionString}); The connectionName will be what we use when configuring the job to reference which source it should use to collect. In order to configure a job we have to get an instance of a JobConfigurationTriggeredImplBuilder. JobConfigurationTriggeredImplBuilder jobBuilder = builder.job({jobName}, {triggerCommand}); This creates a new job with a given name which is executed based on the information in the triggerCommand. As mentioned above, we currently only support a time-scheduled collection. This generally requires just one parameter: The number of milliseconds between each collection. (SCHEDULED,1000) Above would schedule a collection every 1000ms - so once every second. Up to now this job would not be run anywhere, and it would also not collect anything. So in order to have the job actually do something, we should assign it a source to collect from. jobBuilder.source({connectionName}); Here we could theoretically collect on multiple sources, by simply calling the source() method multiple times. All sources would be collected at the same time, whenever the trigger tells it to. So the last thing we need to configure our first Scraper job, is to add a few fields for it to collect. jobBuilder.field({fieldName}, {fieldAddress}); The field method has to be called for every field we want to add to the current job configuration. It gives a PLC4X address string an easy to understand string name, just like when using the core PLC4X API. As soon as we’re done adding fields, we configure the job by calling the build method. jobBuilder.build(); This configures the finished job and attaches that to the overall Scraper configuration of the scraper configuration. As soon as we’re done configuring jobs, we need to create the Scraper configuration by calling the build method on the builder: ScraperConfigurationTriggeredImpl scraperConfig = builder.build(); In order to run the Scraper, the following boilerplate code is needed. try { PlcDriverManager plcDriverManager = new PooledPlcDriverManager(); TriggerCollector triggerCollector = new TriggerCollectorImpl(plcDriverManager); TriggeredScraperImpl scraper = new TriggeredScraperImpl(scraperConfig, (jobName, sourceName, results) -> { ... }, triggerCollector); scraper.start(); triggerCollector.start(); } catch (ScraperException e) { log.error(\"Error starting the scraper\", e); } At first a new PooledPlcDriverManager is created (It actually doesn’t have to be the pooled version, but we strongly suggest you use it as for some protocols the connection process is stressfull for the connected PLC). With this plcDriverManager we can then create a so-called TriggerCollector, which we pass in the driver manager as argument. Next comes the probably most important part: We configure the scraper, by binding a Scraper Configuration, a ResultHandler and a TriggerCollector together. After this, the scraper is ready to start, which is then done by calling start on the scraper as well as the triggerCollector. For the sake of clarity, here comes the definition of the ResultHandler interface: @FunctionalInterface public interface ResultHandler { /** * Callback handler. * @param jobName name of the job (from config) * @param connectionName alias of the connection (not connection String) * @param results Results in the form alias to result value */ void handle(String jobName, String connectionName, Map results); } As an alternative to using the Java API, the Scraper Configuration can also be read from a JSON or YAML document. Here come some examples: JSON: { \"sources\": { \"connectionName\": \"connectionString\" }, \"jobs\": [ { \"name\": \"jobName\", \"triggerConfig\": (SCHEDULED,10000) \"sources\": [ \"connectionName\" ], \"fields\": { \"a\": \"{address-a}\", \"b\": \"{address-b}\" } } ] } YAML: --- sources: connectionName: connectionString jobs: - name: jobName triggerConfig: (SCHEDULED,10000) sources: - connectionName fields: a: {address-a} b: {address-b} In both cases, you can create the ScraperConfiguration with the following code: ScraperConfiguration conf = ScraperConfiguration.fromFile(\"{path to the JSON or YAML file}\", ScraperConfigurationTriggeredImpl.class);","title":"Scraper","component":"plc4x","version":"latest","name":"scraper","url":"/plc4x/latest/users/tools/scraper.html","titles":[{"text":"Getting started with the Scraper","hash":"_getting_started_with_the_scraper","id":1},{"text":"Sources","hash":"_sources","id":2},{"text":"Jobs","hash":"_jobs","id":3},{"text":"Configuration using the Java API","hash":"_configuration_using_the_java_api","id":4},{"text":"Running the Scraper","hash":"_running_the_scraper","id":5},{"text":"Configuration using a JSON or YAML file","hash":"_configuration_using_a_json_or_yaml_file","id":6}]},"153":{"id":153,"text":"PLC4X has a Mock Driver which was initially implemented to be used for Unit Tests and this still is its main purpose. But this driver is also very suitable to play around a bit with the PLC4X API if no Hardware PLC is available. The driver can be found in the Maven module org.apache.plc4x plc4j-transport-test 0.12.0 test The connection string Syntax for the mock driver is mock:{name-of-the-connection}. So you can use multiple Mock Devices at the same time. The Mock Driver does nothing else than forwarding all Requests to a Virtual Device which we can provide to control all responses and also Monitor them, e.g. for unit tests. The Interface for the Mock Device is public interface MockDevice { Pair read(String fieldQuery); PlcResponseCode write(String fieldQuery, Object value); Pair subscribe(String fieldQuery); void unsubscribe(); // ... } Imagine we have some Code which we cannot control or whose functionality we want to test. This can be done with the Mock Driver in the following way. First, a new Mock Connection is established (like any other connection also would be): PlcDriverManager driverManager = new PlcDriverManager(); PlcMockConnection connection = (PlcMockConnection) driverManager.getConnection(\"mock:my-mock-connection\"); You see, that we directly cast the Connection to a PlcMockConnection. This is done, because we need to connect a Device to this Mock Connection. This is done in the following Snippet connection.setDevice(mockDevice); Here, we pass it an instance of MockDevice which could be a simple Implementation of the interface like MockDevice mockDevice = new MockDevice() { Pair read(String fieldQuery) { System.out.println(\"I got a read to \" + fieldQuery); return Pair.of(PlcResponseCode.OK, new PlcString(\"hello\")); } PlcResponseCode write(String fieldQuery, Object value) { System.out.println(\"I got a write to \" + fieldQuery + \" with the value \" + value); return PlcResponseCode.OK; } // ... } This would just return a String Value hello for every request and print all read and write requests to the Console. To use the Mock driver in Unit Tests the easiest way is to generate the MockDriver instance as Mockito (or any other Framework) Mock. Like in the following Example MockDevice mockDevice = Mockito.mock(MockDevice.class); PlcDriverManager driverManager = new PlcDriverManager(); PlcMockConnection connection = (PlcMockConnection) driverManager.getConnection(\"mock:my-mock-connection\"); connection.setDevice(mockDevice); // Populate the Mock to avoid a NPE when(mockDevice).read(anyString()).thenReturn(Pair.of(PlcResponseCode.OK, new PlcString(\"hello\"))); // Some Demo code that uses the same Driver Manager and either the connection from above // or at least mock:my-mock-connection as connection string // Here: send a request to the field \"MyAdress\" connection .readRequestBuilder .addItem(\"station\", \"MyAdress\") .build() .execute() .get(); // Check that the we really issued a Read request to the Field \"MyAdress\" verify(mockDevice).read(eq(\"MyAdress\")); But as the MockDriver uses a static Mock Connection registry the following Code works also MockDevice mockDevice = Mockito.mock(MockDevice.class); // Setup PlcDriverManager driverManager = new PlcDriverManager(); PlcMockConnection connection = (PlcMockConnection) driverManager.getConnection(\"mock:my-mock-connection\"); connection.setDevice(mockDevice); // Populate the Mock to avoid a NPE when(mockDevice).read(anyString()).thenReturn(Pair.of(PlcResponseCode.OK, new PlcString(\"hello\"))); // Some Demo code that uses the same Driver Manager and either the connection from above // or at least mock:my-mock-connection as connection string // Here: send a request to the field \"MyAdress\" // and we build up a new Connection try (PlcConnection conn = driverManager.getConnection(\"mock:my-mock-connection\")) { conn .readRequestBuilder .addItem(\"station\", \"MyAdress\") .build() .execute() .get(); } catch (Exception e) { // do nothing } // Check that the we really issued a Read request to the Field \"MyAdress\" verify(mockDevice).read(eq(\"MyAdress\")); The Snippet above shows that the part under test really has to share nothing with the test code except for the connection string. The above examples show that the MockDriver driver can not only be used to play around with the API but is also a powerful tool to do unit testing of Code which uses the PLC4X API. All that needs to be done is to either pass an instance of the Mocked Connection or just use the same Connection string (e.g. from a test configuration) that was used to Prepare a Mock Device. Some Examples of futher (more Complex) use cases can be found in the PLC4X Codebases, e.g. in the following classes org.apache.plc4x.java.opm.PlcEntityManagerTest org.apache.plc4x.java.opm.PlcEntityManagerComplexTest org.apache.plc4x.java.scraper.ScraperTest and many more Test classes, especially in the OPM and the Scraper Module.","title":"Testing (or using PLC4X without a PLC)","component":"plc4x","version":"latest","name":"testing","url":"/plc4x/latest/users/tools/testing.html","titles":[{"text":"The Mock Driver","hash":"_the_mock_driver","id":1},{"text":"Simple Example","hash":"_simple_example","id":2},{"text":"Unit Testing with the Mock Driver","hash":"_unit_testing_with_the_mock_driver","id":3},{"text":"Conclusion","hash":"_conclusion","id":4}]},"154":{"id":154,"text":"Apache Calcite Standard SQL Industry-standard SQL parser, validator and JDBC driver.","title":"Apache Calcite","component":"plc4x","version":"latest","name":"apache-calcite","url":"/plc4x/latest/users/integrations/apache-calcite.html","titles":[]},"155":{"id":155,"text":"","title":"Apache Camel","component":"plc4x","version":"latest","name":"apache-camel","url":"/plc4x/latest/users/integrations/apache-camel.html","titles":[]},"156":{"id":156,"text":"","title":"Apache Edgent (Retired)","component":"plc4x","version":"latest","name":"apache-edgent","url":"/plc4x/latest/users/integrations/apache-edgent.html","titles":[]},"157":{"id":157,"text":"Apache Kafka is an open-source distributed event streaming platform used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications. The PLC4X connectors have the ability to pass data between Kafka and devices using industrial protocols. They can be built from source from the latest release of PLC4X or from the latest snapshot from github. A connect worker is basically a producer or consumer process with a standard api that Kafka can use to manage it. It is able to be run in two modes:- Standalone Distributed Standalone allows you to run the connector locally from the command line without having to install the jar file on your Kafka brokers. In distributed mode the connector runs on the Kafka brokers, which requires you to install the jar file on all of your brokers. It allows the worker to be distrubuted across the Kafka brokers to provide redundancy and load balancing. In order to start a Kafka Connect system the following steps have to be performed: 1) Download the latest version of Apache Kafka binaries from here: https://kafka.apache.org/downloads. 2) Unpack the archive. 3) Copy the target/plc4j-apache-kafka-0.8.0-uber-jar.jar to the Kafka libs or plugin directory specified in the config/connect-distributed.properties file. 4) Copy the files in the config to Kafka’s config directory. 5) Make sure that the host name that the OPCUA server advertises during the discovery process is able to be resolved from the Kafka Connect server. The easiest way to do this is to add the hostname to your hosts file. 1) Open 4 console windows and change directory into that directory 2) Start Zookeeper: bin/zookeeper-server-start.sh config/zookeeper.properties 3) Start Kafka: bin/kafka-server-start.sh config/server.properties 4) Create the \"test\" topic: bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test 5) Start the consumer: bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning The starting configuration for your connect worker is provided by a configuration file. However, once the worker has started the configuration can be changed using the connect REST API which is generally available on http://localhost:8083/connectors. When running in distributed mode all the configuration needs to be done via the REST API. A sample configuration file is provided in the PLC4X Kafka integration repository in the config/plc4x-source.properties directory.. This includes comments as well as meaningful properties that can be used with the worker. The configuration of the connectors via the REST interface expects the same properties as are specified within the example config/plc4x-source.properties file. These will need to be in JSON format and included with a couple of headers. An example below shows the format it expects:- curl -X POST -H \"Content-Type: application/json\" --data '{\"name\": \"plc-source-test\", \"config\": {\"connector.class\":\"org.apache.plc4x.kafka.Plc4xSourceConnector\", // TODO: Continue here ... \"tasks.max\":\"1\", \"file\":\"test.sink.txt\", \"topics\":\"connect-test\" }}' http://localhost:8083/connectors Ideal for testing. 1) Start Kafka connect: bin/connect-standalone.sh config/connect-standalone.properties config/plc4x-source.properties Now watch the console window with the \"kafka-console-consumer\". If you want to debug the connector, be sure to set some environment variables before starting Kafka-Connect: export KAFKA_DEBUG=y; export DEBUG_SUSPEND_FLAG=y; In this case the startup will suspend till an IDE is connected via a remote-debugging session. Ideal for production. In this case the state of the node is handled by Zookeeper and the configuration of the connectors are distributed via Kafka topics. bin/kafka-topics --create --zookeeper localhost:2181 --topic connect-configs --replication-factor 3 --partitions 1 --config cleanup.policy=compact bin/kafka-topics --create --zookeeper localhost:2181 --topic connect-offsets --replication-factor 3 --partitions 50 --config cleanup.policy=compact bin/kafka-topics --create --zookeeper localhost:2181 --topic connect-status --replication-factor 3 --partitions 10 --config cleanup.policy=compact Starting the worker is then as simple as this: bin /connect-distributed.sh config/connect-distributed.properties The configuration of the Connectors is then provided via REST interface: curl -X POST -H \"Content-Type: application/json\" --data '{\"name\": \"plc-source-test\", \"config\": {\"connector.class\":\"org.apache.plc4x.kafka.Plc4xSourceConnector\", // TODO: Continue here ... \"tasks.max\":\"1\", \"file\":\"test.sink.txt\", \"topics\":\"connect-test\" }}' http://localhost:8083/connectors See config/sink.properties for an example configuration. Ideal for testing. 1) Start Kafka connect: bin/connect-standalone.sh config/connect-standalone.properties config/plc4x-sink.properties Now open console window with \"kafka-console-producer\". Producing to the kafka topic using the sample packet shown below should result all the values included in the payload being sent to the PLC using the mapping defined in the sink properties. {\"schema\": {\"type\":\"struct\",\"fields\": [{\"type\":\"struct\",\"fields\": [{\"type\":\"boolean\",\"optional\":true,\"field\":\"running\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"conveyorLeft\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"conveyorRight\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"load\"}, {\"type\":\"int32\",\"optional\":true,\"field\":\"numLargeBoxes\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"unload\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"transferRight\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"transferLeft\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"conveyorEntry\"}, {\"type\":\"int32\",\"optional\":true,\"field\":\"numSmallBoxes\"}], \"optional\":false,\"name\":\"org.apache.plc4x.kafka.schema.Field\",\"field\":\"fields\"}, {\"type\":\"int64\",\"optional\":false,\"field\":\"timestamp\"}, {\"type\":\"int64\",\"optional\":true,\"field\":\"expires\"}], \"optional\":false,\"name\":\"org.apache.plc4x.kafka.schema.JobResult\", \"doc\":\"PLC Job result. This contains all of the received PLCValues as well as a recieved timestamp\"}, \"payload\": {\"fields\": {\"running\":false,\"conveyorLeft\":true, \"conveyorRight\":true,\"load\":false, \"numLargeBoxes\":1630806456, \"unload\":true, \"transferRight\":false, \"transferLeft\":true, \"conveyorEntry\":false, \"numSmallBoxes\":-1135309911}, \"timestamp\":1606047842350, \"expires\":null}} If you want to debug the connector, be sure to set some environment variables before starting Kafka-Connect: export KAFKA_DEBUG=y; export DEBUG_SUSPEND_FLAG=y; In this case the startup will suspend till an IDE is connected via a remote-debugging session. Ideal for production. In this case the state of the node is handled by Zookeeper and the configuration of the connectors are distributed via Kafka topics. bin/kafka-topics --create --zookeeper localhost:2181 --topic connect-configs --replication-factor 3 --partitions 1 --config cleanup.policy=compact bin/kafka-topics --create --zookeeper localhost:2181 --topic connect-offsets --replication-factor 3 --partitions 50 --config cleanup.policy=compact bin/kafka-topics --create --zookeeper localhost:2181 --topic connect-status --replication-factor 3 --partitions 10 --config cleanup.policy=compact Starting the worker is then as simple as this: bin /connect-distributed.sh config/connect-distributed.properties The configuration of the Connectors is then provided via REST interface: curl -X POST -H \"Content-Type: application/json\" --data '{\"name\": \"plc-sink-test\", \"config\": {\"connector.class\":\"org.apache.plc4x.kafka.Plc4xSinkConnector\", // TODO: Continue here ... \"tasks.max\":\"1\", \"file\":\"test.sink.txt\", \"topics\":\"connect-test\" }}' http://localhost:8083/connectors If an error occurs when reading or writing PLC addresses a graceful backoff has been implemented so that the PLC isn’t bombarded with requests. However as the number of connectors for each PLC should be limited to reduce the load on the PLC, the graceful backoff shouldn’t have a major impact. For the source connector the PLC4X scraper logic is able to handle randomized polling rates on failures, this is buffered within the connector, the poll rate of the connector has no affect on the PLC poll rate. For the sink connector, if a write fails it is retried a configurable number of times with a timeout between each time. A Retriable Exception is raised which provides jitter for the timing of the retries. PLC4X specifies a very basic schema and leaves the majority of the implementation to the user. It contains the following fields:- \"fields\": - This is a customized structure that is formed by the fields defined in the connector configuration. This allows the user to defined arbitary fields within here all based on the PLC4X data types. \"timestamp\": - This is the timestamp at which the PLC4X connector processed the PLC request. \"expires\": - This field is used by the sink connector. It allows it to discard the record if it is too old. A value of 0 or null indicates that the record some never be discarded no matter how old it is. As the majority of the schema is left to the user to define we expect to be able to provide backward compatiblity between the base schemas. The schemas for the sink and source connectors are the same. This allows us to producer from one PLC and send the data to a sink.","title":"Apache Kafka","component":"plc4x","version":"latest","name":"apache-kafka","url":"/plc4x/latest/users/integrations/apache-kafka.html","titles":[{"text":"PLC4X Kafka Connectors","hash":"_plc4x_kafka_connectors","id":1},{"text":"Introduction","hash":"_introduction","id":2},{"text":"Quickstart","hash":"_quickstart","id":3},{"text":"Start a Kafka Broker","hash":"_start_a_kafka_broker","id":4},{"text":"Source Connector","hash":"_source_connector","id":5},{"text":"Start a Kafka Connect Source Worker (Standalone)","hash":"_start_a_kafka_connect_source_worker_standalone","id":6},{"text":"Start Kafka Connect Source Worker (Distributed Mode)","hash":"_start_kafka_connect_source_worker_distributed_mode","id":7},{"text":"Sink Connector","hash":"_sink_connector","id":8},{"text":"Start a Kafka Connect Sink Worker (Standalone)","hash":"_start_a_kafka_connect_sink_worker_standalone","id":9},{"text":"Start Kafka Connect Sink Worker (Distributed Mode)","hash":"_start_kafka_connect_sink_worker_distributed_mode","id":10},{"text":"Graceful Backoff","hash":"_graceful_backoff","id":11},{"text":"Schema Compatability","hash":"_schema_compatability","id":12}]},"158":{"id":158,"text":"Apache IoTDB is database for storing time serie data. Therefore, it can be a good solution for managing the data which is collected by PLC4x. Given a PLC address and some fields, we can consider the PLC as a device in IoTDB, and each field as a measurement in IoTDB. A couple of PLCs form a storage group. For example, there is a virtual storage group mi, and a PLC d1, which has one field RANDOM/foo:Integer. Then, in IoTDB, we can get a time series like root.mi.d1.foo (or root.mi.d1.RANDOM_foo_Integer, as you like). Then, we can write data into IoTDB using JDBC with SQL or native API called session API. https://github.com/apache/plc4x/tree/develop/plc4j/examples/hello-integration-iotdb shows an example to collect data using PLC4x and then writing data to IoTDB. To run the java example, some arguments are needed: e.g., java -jar ….. --connection-string simulated://127.0.0.1 --field-address RANDOM/foo:Integer --polling-interval 1000 --iotdb-address 127.0.0.1:6667 --iotdb-user-name root --iotdb-user-password root --iotdb-sg mi --iotdb-device d1 --iotdb-datatype INT32 --use-jdbc false Then PLC4x will collect data from a simulated PLC device, which generate random integer per 1 second. IoTDB’s address is 127.0.0.1 and the port is 6667. The data will be stored in device root.m1.d1, and the measurement name is RANDOM_foo_Integer. If you are using IoTDB v0.10.0 with the default configuration, and do not manually create the above time series, then IoTDB will consider the data as float. So, after running the program a few secondes, you can query the data using IoTDB’s command line: select * from root.mi.d1; +-----------------------------+-----------------------------+ | Time|root.mi.d1.RANDOM_foo_Integer| +-----------------------------+-----------------------------+ |2020-07-16T20:01:39.216+08:00| -1.34242598E9| |2020-07-16T20:01:40.150+08:00| -9.4141104E7| |2020-07-16T20:01:41.154+08:00| 1.40969664E9| |2020-07-16T20:01:42.155+08:00| 9.5824531E8| |2020-07-16T20:01:43.157+08:00| -4.207406E7| +-----------------------------+-----------------------------+ The detailed usage about IoTDB can be found https://iotdb.apache.org/UserGuide/Master/Client/Programming%20-%20Native%20API.html","title":"Apache IotDB","component":"plc4x","version":"latest","name":"apache-iotdb","url":"/plc4x/latest/users/integrations/apache-iotdb.html","titles":[{"text":"Data Model (Concept)","hash":"_data_model_concept","id":1},{"text":"Example","hash":"_example","id":2}]},"159":{"id":159,"text":"Apache NiFi allows creating systems that process data around the concept of data-streams. Apache PLC4X provides both Source as well as Sink processors for accessing data in PLCs or writing data to them. Even if the documentation of NiFi states it works with any Java version above 1.8, this is not quite true. I have found that NiFi only works with Java versions below 11. With Java 1.8 you are definitely on the safe-side. When starting with newer versions the start script just terminates after logging a statement that NiFi is now starting. Other than that, I haven’t encountered any other requirements. As soon as you have started NiFi using the nifi.sh run or run-nifi.bat the Web-UI of NiFi should be available at: http://localhost:8080/nifi/ It might take a few seconds for the Web-UI to show up … so if you’re getting errors in the browser, give it some time to start. In order to enable Apache PLC4X support in Apache NiFi all you need to do, is to copy our nar archive into the Nifi installations lib directory. You can either build the nar by building PLC4X and using the version in the plc4j/integrations/apache-nifi/nifi-plc4x-nar/target directory. Or you can download a released version from Maven central: https://search.maven.org/search?q=plc4j-nifi-plc4x-nar Add a PLC4X Source processor to the canvas, click on the Add processor button and drag it into the canvas. A popup will appear in which you are presented the list of all available processors. Enter PLC4X in the search field and select the Plc4xSourceProcessor and click Add (I think you can also double-click on the processor) If you click on a Processor, it’s a little hard to see it’s selected as the selection is not highlighted. However, you can see a processor is selected as the bottom part shows the name of the selected processor. As soon as your new processor is added to the canvas you need to configure it. Do this by double clicking on it (Or by right-clicking and selecting Configure) Here you now need to provide a PLC4X connection string and a PLC resource address String. The PLC connection String is just a normal PLC4X connection string. Please consult the documentation on using the different types of supported connections Here The PLC resource address String is a ;-separarated list of name-value-pairs, where each name is assigned a plc4x addrress. For information on how an address string looks for the type of driver you are using, please check the documentation for the driver you are using Here Example: PLC connection String: s7://192.168.23.30 PLC resource address String: time-value=%DB2:8:TIME;string-value=%DB2:30.0:STRING(10) Before you save the processor there is one further setting that needs to be set. For this please change to the Scheduling tab and set the Run Schedule to let’s say 1 or 2 seconds. If we don’t do this, NiFi will hammer the PLC with requests and in case of my S7 it will simply start denying accepting new connections. It will still say Invalid at the top, but this has nothing to do with your entries, it’s much more that this processor produces two data-streams: SUCCESS and FAILURE. These need to be connected next. After that’s done, click on Apply. But before we can do that, we need to add something we can connect them to. So we simply add another processor to the canvas: Using a LogMessage processor. This simply logs every bit of data to the NiFi log-system. As the LogMessage processor creates a stream of events every time a log message is logged, we need to configure it to auto-terminate that relationship. Do this by double-clicking on the processor and selecting the Settings tab. Here check the checkbox labeled SUCCESS in the section Automatically Terminate Relationships and then click Apply. Now we can connect both processors. Notice the arrow-icon as soon as the mouse is over the Plc4xSourceProcessor? Click on this and start dragging. You notice that you now have a connection which you simply drag onto the log processor. As soon as you release the connection there, the two processors are now connected. As soon as you release the mouse, a popup will pop up and allow you to configure the connection. You can generally select which streams you want to connect. In this case we’ll simply connect the SUCCESS and the FAILURE stream to the log processor. As soon as that’s done, you are finished configuring your flow. Last thing we now need to do, is to start the processors. Currently, they are stopped (You can see it with the red square icon) Do this by right-clicking on both processors and selecting Start. Now you should see an increasing number at the Out of the PLC4X Source and on the In of the Logging Processor. In order to be able to debug the PLC4X, please edit the bin/nifi.sh (On Mac & Linux) and comment in the line: BOOTSTRAP_DEBUG_PARAMS=\"-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000\" For Windows, you would need to manually add: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000 to the run-nifi.bat files JAVA_ARGS. If you want NiFi so suspend at the start, so you can be sure to captue the entire execution, just change suspend=n to suspend=y. This will make NiFi pause till a remote debugging session is connected.","title":"Apache NiFi","component":"plc4x","version":"latest","name":"apache-nifi","url":"/plc4x/latest/users/integrations/apache-nifi.html","titles":[{"text":"Setting Up NiFi","hash":"_setting_up_nifi","id":1},{"text":"Enabling PLC4X Processors in NiFi","hash":"_enabling_plc4x_processors_in_nifi","id":2},{"text":"Using a PLC4X Source Processor in NiFi","hash":"_using_a_plc4x_source_processor_in_nifi","id":3},{"text":"Enabling debugging","hash":"_enabling_debugging","id":4}]},"160":{"id":160,"text":"https://www.eclipse.org/ditto/ Eclipse Ditto - PLC4X Example: https://github.com/eclipse/ditto-examples/tree/master/plc4x","title":"Eclipse Ditto","component":"plc4x","version":"latest","name":"eclipse-ditto","url":"/plc4x/latest/users/integrations/eclipse-ditto.html","titles":[]},"161":{"id":161,"text":"PLC4X S7 Adapter PLC4X MODBUS Adapter","title":"Apache StreamPipes","component":"plc4x","version":"latest","name":"apache-streampipes","url":"/plc4x/latest/users/integrations/apache-streampipes.html","titles":[]},"162":{"id":162,"text":"The PLC4X OPC UA server integration is based around the Eclipse Milo OPC UA server. It uses PLC4X to communicate with industrial devices effectively acting as a industrial OPC UA gateway. The OPC UA server can be built using maven as part of the PLC4X build. mvn install This creates a target directory within plc4x/plc4j/integrations/opcua-server containing a jar file which is the main java executable. The config.yml file is used to configure the server. The following root level settings should be configured. version: The version is just an internal check to confirm that the right version of the configuration file is being used. dir: This is the directory to the security directory. This is where all configuration is stored including certificates. Be sure to secure this directory with the correct permissions. name: This is the name of the OPC UA server. It can be anything but shouldn’t contain spaces. disableInsecureEndpoint: This is used to disable the remote insecure OPC UA endpoint. tcpPort: this can be used to change the opc.tcp port. httpPort: this can be used to change the http.tcp port. devices: is a list of PLC’s or devices that the server should communicate with. Each device should include a name:, connectionString:, and a list of tags:. For each device within devices the following settings should be configured. name: This is the name of the device. It can anything as long as it doesn’t contain spaces. connectionString: Can be any valid PLC4X connection string. For each tag with tags the following settings should be configured:- alias: This is the name of tag it can be anything but shouldn’t have spaces. This will be shown as the tag name within the OPC UA server tree. Be sure that this is unique within the configuration file. address: This is any valid PLC4X address that matches the connection type. An example configuration file is shown below. --- version: \"0.8\" dir: {path-to-security-dir} name: \"Plc4xOPCUAServer\" disableInsecureEndpoint: true devices: - name: \"ModbusDevice\" connectionString: \"modbus-tcp://127.0.0.1:502\" tags: - alias: \"TemporaryBOOLARRAY\" address: \"000001:BOOL[10]\" - alias: \"TemporaryWORD2\" address: \"400002:WORD\" - alias: \"TemporaryUINT3\" address: \"400003:UINT\" - alias: \"TemporaryINT4\" address: \"400004:INT\" - alias: \"TemporaryDINT5\" address: \"400005:DINT[4]\" - alias: \"TemporaryREAL6\" address: \"400006:REAL\" - alias: \"TemporaryREAL7\" address: \"400007:REAL\" - alias: \"TemporaryREAL8\" address: \"400008:REAL\" - name: \"SimulationDevice\" connectionString: \"simulated://127.0.0.1\" tags: - alias: \"Temporary\" address: \"RANDOM/Temporary:Integer\" tcpPort: 12687 httpPort: 8445 To run the java executable execute:- java -jar plc4x-opcua-server-0.8.0-uber-jar.jar -c {path-to-config-file} -i This will start the OPC UA server with the interactive switch (-i). This prompts the server to ask for usernames and passwords upon startup. However, during normal operation the -i switch should be left out. If a certificate isn’t available at {path-to-security-dir}/security/plc4x-opcuaserver.pfx then a self signed is created. This certificate is password protected with the security password given during startup. If you place another certificate here make sure it is password protected and set the password by running the server again with --set-password switch. java -jar plc4x-opcua-server-0.8.0-uber-jar.jar -c {path-to-config-file} -i -s Once the OPC UA server is running you are able to connect to it from your favorite OPC UA client using the connection string. opc.tcp://{ip.address}:12687/plc4x Replacing the {ip.address} with the servers IP address. If you want to use an encrypted connection be sure to move the client certificate created in {path-to-security-dir}/security/pki/rejected to the trusted directory. Otherwise the client will receive a security error when trying to connect.","title":"Introduction","component":"plc4x","version":"latest","name":"eclipse-milo","url":"/plc4x/latest/users/integrations/eclipse-milo.html","titles":[{"text":"Building the server","hash":"_building_the_server","id":1},{"text":"Configuration File","hash":"_configuration_file","id":2},{"text":"Running","hash":"_running","id":3}]},"163":{"id":163,"text":"A CAN transport is a special category of transport which can bring CAN frame data to various drivers. All of these transports are meant to follow basic CAN frame data semantics. Each CAN transport must provide a CANFrameBuilder interface realization. This builder can be used by drivers which implement application layer protocols on top of CAN bus. The builder allow constructing requests which should be passed to the bus operations. Note this API is available since Apache PLC4X 0.9. Name Value Description Code not available This transport ships only additional API on top of existing Apache PLC4X Transport API. Name CAN Maven Dependency org.apache.plc4x plc4j-transport-can 0.12.0 Options: none, an abstract transport Main purpose of this transport is basic unification of various CAN bus APIs. There is no unified way to access CAN (beside SocketCAN for linux) across multiple platforms. We brought this simplistic facade-alike API to serve very basic project needs. Its main purpose is to let transport implementer bridge with actual transport or another library. With as little effort as possible. Major advantage of CAN transport facade is possibility to implement application layer protocols in a fully portable way. This flexibility is not guaranteed with SocketCAN alone. The CAN transport responsibility is to bring CAN data to driver implementer. This API does not enforce, require or promote a low level bus operations. In this regard, these operations can be made by library available for specific CAN adapter in use. Usage of CAN transport APIs is recommended for portability reasons. Please have a look on CAN describe usage of CAN driver adapter with CAN transport facade. SocketCAN","title":"CAN","component":"plc4x","version":"latest","name":"can","url":"/plc4x/latest/users/transports/can.html","titles":[{"text":"Developer notes","hash":"_developer_notes","id":1},{"text":"Compatible CAN transports","hash":"_compatible_can_transports","id":2}]},"164":{"id":164,"text":"","title":"Integrations","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/users/integrations/index.html","titles":[]},"165":{"id":165,"text":"TCP UDP Raw Socket Serial Port CAN bus SocketCAN PCAP replay","title":"Transports","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/users/transports/index.html","titles":[]},"166":{"id":166,"text":"Name Value Description Code pcap Name PCAP file replay Maven Dependency org.apache.plc4x plc4j-transport-pcap-replay 0.12.0 Transport Syntax: {pcap-path} Path to the PCAP or PCAPNG file containing the network recording. Options: replay-speed-factor (1) Numeric value for changing the replay speed: 1 = Normal speed (default) 0 = Maximum speed 0.5 = Half speed 2 = Double speed loop (false) Should the replay start at the beginning of the file as soon as the end is reached? true = Automatically start again false = Stop at the end (default)","title":"PCAP Replay","component":"plc4x","version":"latest","name":"pcap-replay","url":"/plc4x/latest/users/transports/pcap-replay.html","titles":[]},"167":{"id":167,"text":"Name Value Description Code raw Name Raw Socket Communication Maven Dependency org.apache.plc4x plc4j-transport-raw-socket 0.12.0 Transport Syntax: {device-name} Name of the network device doing the capture Options: none","title":"Raw Socket","component":"plc4x","version":"latest","name":"raw-socket","url":"/plc4x/latest/users/transports/raw-socket.html","titles":[]},"168":{"id":168,"text":"Name Value Description Code serial Name UDP Socket Communication Maven Dependency org.apache.plc4x plc4j-transport-serial 0.12.0 Transport Syntax: {name of the serial port} Can differ depending on the OS: Windows: \"Com 1\" Mac & Linux: \"/dev/ttyS0\" Options: none","title":"Serial Port","component":"plc4x","version":"latest","name":"serial","url":"/plc4x/latest/users/transports/serial.html","titles":[]},"169":{"id":169,"text":"Name Value Description Code tcp Name TCP Socket Communication Maven Dependency org.apache.plc4x plc4j-transport-tcp 0.12.0 Transport Syntax: {IP address or hostname}:{port} The port can be omitted, if the protocol provides a default port value. Options: none","title":"TCP","component":"plc4x","version":"latest","name":"tcp","url":"/plc4x/latest/users/transports/tcp.html","titles":[]},"170":{"id":170,"text":"Name Value Description Code socketcan Name SocketCAN (software bridge to CAN). Maven Dependency org.apache.plc4x plc4j-transport-socketcan 0.12.0 Transport Syntax: {name of the socketcan interface} Can differ depending on the OS: can0 vcan0 Options: none SocketCAN is linux specific way to access CAN bus. It has its own representation of CAN frames, buffers and so on. This means that you have to program your application against socketcan and not raw can interfaces. Primary difference is fixed length of socketcan frames (CAN 2.0A always takes 16 bytes) and extended size of CAN identifier. Standard CAN frame uses 11 bits while socketcan uses 29 and appends flags to remaining 3 bits. Use of socketcan means that Apache PLC4X does not handle low level bus access, arbitration, coordination and so on. This is done by socketcan and layer below it. This transport have been successfully tested with vcan as well as gs_usb drivers.","title":"SocketCAN","component":"plc4x","version":"latest","name":"socketcan","url":"/plc4x/latest/users/transports/socketcan.html","titles":[]},"171":{"id":171,"text":"Name Value Description Code udp Name UDP Socket Communication Maven Dependency org.apache.plc4x plc4j-transport-udp 0.12.0 Transport Syntax: {IP address or hostname}:{port} The port can be omitted, if the protocol provides a default port value. Options: none","title":"UDP","component":"plc4x","version":"latest","name":"udp","url":"/plc4x/latest/users/transports/udp.html","titles":[]},"172":{"id":172,"text":"In this simple case, an application asks the DriverManager to forward a connection creation to the corresponding Driver implementation, which then creates both a Connection and a MessageCodec instance. The Connection is the logical link between the connection state and the MessageCodec. A MessageCodec uses a TransportInstance to communicate with the target device. Serial transports based on RS475 and UDP Transports currently don’t allow sharing. That means only one connection instance can have access to one RS485 or one shared local UDP Port (Multiple UDP transport instances with different local ports however are possible). As soon as one connection is established and a second connection would try to access this, this would result in errors. However, multiple devices could be attached to the same RS458 port (Modbus RTU and Modbus ASCII explicitly supports this, however using different devices using different protocols over the same port is not possible) and in BACnet connecting to multiple remote BACnet devices would require one local UDP port to be used by multiple connections. Some protocols, such as BACnet require remotes to send data to a fixed udp port on a non-broadcast address. This causes problems as soon as we want to connect to multiple BACnet devices from the same host as only one instance can get access to that port.","title":"Architecture of PLC4X Connections","component":"plc4x","version":"latest","name":"architecture","url":"/plc4x/latest/developers/architecture.html","titles":[{"text":"Simple case","hash":"_simple_case","id":1},{"text":"Problems","hash":"_problems","id":2},{"text":"Protocols requiring us to use a fixed port on a non-broadcast address","hash":"_protocols_requiring_us_to_use_a_fixed_port_on_a_non_broadcast_address","id":3},{"text":"Protocols only allowing one connection at a time","hash":"_protocols_only_allowing_one_connection_at_a_time","id":4}]},"173":{"id":173,"text":"PLC4X is built with Apache Maven and we have tried to make the build as simple as possible. However PLC4X aims at providing means to communicate with PLCs of multiple vendors using a shared API but also in a variety of different languages. We have partitioned the build to allow selecting the parts that are of interest. This is done by selecting so-called Maven profiles. More about these later down in this manual. For your convenience we also have provided a Maven-Wrapper, that should allow building of PLC4X with only Java 11 or greater as requirement. The only requirements to building PLC4X should be: Java 11 JDK (or newer) Git (Even if you are building the source distribution, the Kafka plugin seems to require a git executable being available on the systems PATH) Apache Maven (3.6.0 or newer) (Optional) (See next chapter) The so-called Maven-Wrapper is used by calling the Maven-Wrapper scripts mvnw (Mac & Linux) or mvnw.cmd (Windows) instead of the default Maven commands mvn and mvn.cmd. These helpers ensure Maven is available in at least the version defined in .mvn/maven-wrapper.properties. If no suitable version can be found, it is automatically downloaded and installed alongside the project (So it doesn’t have to be downloaded every time and every project can have it’s own Maven version) After the script has ensured a suitable Maven version is available, this is used and all arguments and parameters are transparently forwarded to this. So simply adding the additional w to each of the Maven commands, there should be no difference to using a pre-installed Maven version. This document can’t provide you with all the details needed to get started with Maven itself. But there is a lot of good documentation out there. Justin McLean and Christofer Dutz even recorded a not quite 2 hour Maven training Video some time ago for another Apache project. It should handle all the details needed to get a general understanding of Maven and how it works. Recording of a Maven Training for Apache Flex from 2016 In general all modules which are not considered production-ready are located in the sandbox section of the project. They are not built per default and are enabled by enabling the with-sandbox Maven profile. As especially building the C++, and C# drivers requires building of some third party artifacts and increases build-time dramatically and requires setting up some additional third party tools, we have excluded these parts form the default Maven build. The following profiles are available (They have to be enabled additionally to the with-sandbox profile): with-c: Builds all C related modules, integrations and examples with-dotnet: Builds all C# and .Net related modules, integrations and examples with-go: Builds all Go related modules, integrations and examples with-java: Builds all Java related modules, integrations and examples with-python: Builds all Python related modules, integrations and examples (Also requires with-sandbox) with-sandbox: Builds the modules which are not yet considered stable enough to become part of the main distribution As these profiles typically require some preparation and setup on your development machine, please read the Preparing your Computer guide for a detailed description on this. Beyond that there is an additional profile with-proxies which will enable additional modules in each of the activated languages. This proxies module, uses Apache Thrift to generate modules for forwarding requests to an interop server which runs somewhere else or on the same machine. Currently when enabling the with-python module, you are required to also enable the with-proxies profile too as this is currently required there but will probably change in the near future. There are 3 more profiles that allow you to activate additional modules or functionality: with-docker : Some modules also provide the means to build Docker images. By enabling this profile these images are automatically built too with-boost : Builds a C/C` Library used by both the `Apache Thrift` build as well as the `C drivers. Unfortunately this is an extremely intense build so we have setup the PLC4X build to only require this profile to be activated once. If the resulting artifacts are installed in your Maven-Local-Repo, these will be re-used. The minimum Apache PLC4X build will build only the Java modules without any experimental modules: mvn install If you want to skip the running of tests (even if this is not encouraged) you can skip them all together. mvn install -DskipTests All Apache PLC4X modules are built by executing the following command: mvn -P with-c,with-dotnet,with-go,with-java,with-python,with-sandbox install This not only builds the artifacts and creates the jar files, but also runs all unit- and integration-tests. If you want to skip the running of tests (even if this is not encouraged) you can skip them all together. mvn -P with-c,with-dotnet,with-go,with-java,with-python,with-sandbox install -DskipTests This will not skip the compilation of tests, however. The PLC4X Website is also part of the same GIT repository that contains the code and it is built by Maven as well. In order to build the website the following command should be sufficient: mvn site This is just a quick-start version of the site generation, for a fully detailed documentation please read the Website documentation page. Maven supports so-called profiles for customizing the build in special cases. We have tried to keep the number of profiles as low as possible. So far there is only one profile. This profile is automatically enabled on a release-build and it automatically creates some additional artifacts: JavaDoc artifact Sources artifact Source distribution assembly SHA512 checksum files for every artifact PGP signature files for every artifact Generally it is not required to enable ths profile unless you are interested in these Artifacts. Especially for Maven beginners, it might be difficult to understand why a module builds the way it does. Maven contains a lot of concepts to inherit and override settings. The debug-pom profile will generate the so-called effective pom in the modules target directory. This file contains 100% of the settings Maven uses to execute. All settings are inherited and overridden. All Properties are expanded to the value Maven uses. So whenever Maven doesn’t behave the way you expect it to, just enable this profile and it should help you find out, what’s going on. This profile enables some extra strict enforcer rules. It is encouraged to activate this profile during development. In the CI Build this profile is enabled. Some times, actually only on the build-server we have encountered random failures of the prerequisite check build step. In order to still be able to build in this case, activating this profile simply disables these checks. Compiling the library as explained here add the new version in the local Maven repository (i.e. usually under ~/.m2/repository on linux like systems), if you would like to use Gradle as Build Tool for your project you have just to use a local repository in your Gradle build.gradle file. Here there’s an example: repositories { mavenCentral() mavenLocal() } dependencies { implementation group: 'org.apache.plc4x', name: 'plc4j-api', version: '0.8.0-SNAPSHOT' implementation group: 'org.apache.plc4x', name: 'plc4j-driver-s7', version: '0.8.0-SNAPSHOT' implementation group: 'org.apache.plc4x', name: 'plc4j-connection-pool', version: '0.8.0-SNAPSHOT' }","title":"Building PLC4X","component":"plc4x","version":"latest","name":"building","url":"/plc4x/latest/developers/building.html","titles":[{"text":"Requirements","hash":"_requirements","id":1},{"text":"Using the Maven-Wrapper","hash":"_using_the_maven_wrapper","id":2},{"text":"Using Maven","hash":"_using_maven","id":3},{"text":"Building PLC4X with Maven","hash":"_building_plc4x_with_maven","id":4},{"text":"Building the PLC4X Website with Maven","hash":"_building_the_plc4x_website_with_maven","id":5},{"text":"Some special Maven profiles","hash":"_some_special_maven_profiles","id":6},{"text":"apache-release profile","hash":"_apache_release_profile","id":7},{"text":"debug-pom profile","hash":"_debug_pom_profile","id":8},{"text":"development profile","hash":"_development_profile","id":9},{"text":"skip-prerequisite-check profile","hash":"_skip_prerequisite_check_profile","id":10},{"text":"Use the compiled library with Gradle","hash":"_use_the_compiled_library_with_gradle","id":11}]},"174":{"id":174,"text":"There are multiple forms in which you can become involved with the PLC4X project. These usually are, but are not limited to: Submitting Pull Requests Filing Bug-Reports Active communication on our mailing lists Promoting the project (articles, blog posts, talks at conferences) Documentation We are a very friendly bunch and don’t be afraid to step forward. We make use of conventional commits. As plc4x is a monolithic polyglot repository we usually define the scope as …(plc4[language shortcut here]/subcomponent) (e.g. a new feature in Bacnet in the Golang part would have a message of feat(plc4go/bacnet): cool new feature for…). The simplest way to submit code changes, is via a GitHub pull-request. In order to do this first create a GitHub account and sign into you account. After that’s done, please to to our GitHub site and create a so-called Fork. What happens now, is that GitHub creates a full copy of the PLC4X repo in your account. Only you can commit to this. Now ideally you check-out your cloned repository: git clone https://github.com/{your-user-id}/plc4x.git Now you have a copy of PLC4X on your computer and you can change whatever you want and as it’s your copy, you can even commit these changes without any danger of breaking things. As soon as you’re finished with your changes and want us to have a look, it’s time to create a so-called Pull-Request. You do that by going to your forked repository page on GitHub. Every forked repository has an additional button called \"New Pull Request\": If you click on this, we will receive a notification on your changes and can review them. We also can discuss your changes and have you perfect your pull request before we accept and merge it into PLC4X. As we are continuously working on PLC4X and you created a copy of our repo, this will become out-of-date pretty soon. In order get the changes we introduced in the official repo you have to tell git about that. You do this locally by adding a new so-called remote. Per default the remote you cloned from is called origin. Usually you will call the second remote upstream but in general you can call it whatever you like. Add the remote on the commandline (or your git gui of choice): git remote add upstream https://github.com/apache/plc4x.git If you list all your remotes, with the following command: git remote -v It should output something like this: origin https://github.com/{your-user-id}/plc4x.git (fetch) origin https://github.com/{your-user-id}/plc4x.git (push) upstream https://github.com/apache/plc4x.git (fetch) upstream https://github.com/apache/plc4x.git (push) If that’s so, you’re fine to continue, if not … well you could ask for assistance on our dev-list. In order to get all changes of our upstream-repository, just execute the following command: git pull upstream This will get all changed from upstream and merge them locally. In order to update your GitHub version, you have to push things back to origin. You can do this by executing the following command: git push (If no remote is provided, git will use origin per default) We use JIRA as our Bug & Issue Tracker. Feel free to submit feature requests, bug reports, patches, comment on issues, … In order to be able to do so, you need to create an account first. Currently Apache has a separate login system for JIRA and all other services, this might change in the future, but right now it’s the way things are. So if you are considering to contribute more than just a one-time-patch, please choose a username that hasn’t been used by an existing Apache committer as this will simplify things if we invite you to become part of the team. If you want to be assigned to an issue because you want to work on it, please request to be added to the JIRA groups on our developers mailing list As our documentation and website are generated as a side-product of our build, contributing to this technically the same as contributing to the code. All our content is written in Asciidoctor and is located in src/site/asciidoc directories. For a reference of the Asciidoctor syntax please have a look at the Asciidoctor documentation. The PLC4X project uses the following branching model. The same model is used for a wide variety of other projects, so it should be pretty straight forward. release contains the latest released state. Development is performed on the develop branch. Features are developed in Feature-Branches with a prefix feature/ Each minor release has a corresponding release branch rel/{major-version}.{minor-version} A release branch is spawned from develop only Bugfix releases don’t have a dedicated release branch, they are just performed on the corresponding minor versions release branch","title":"Contributing","component":"plc4x","version":"latest","name":"contributing","url":"/plc4x/latest/developers/contributing.html","titles":[{"text":"Forms of contribution","hash":"_forms_of_contribution","id":1},{"text":"Commits","hash":"_commits","id":2},{"text":"Pull-Requests","hash":"_pull_requests","id":3},{"text":"Keeping your fork up to date","hash":"_keeping_your_fork_up_to_date","id":4},{"text":"Bug Reports","hash":"_bug_reports","id":5},{"text":"Documentation","hash":"_documentation","id":6},{"text":"Branching model","hash":"_branching_model","id":7}]},"175":{"id":175,"text":"On this page we are listing options to attend talks and events around PLC4X. Date Location Type Event Title 18th June 2019 Erfurt (GER) Meetup IoT Thüringen Industrie & IoT: Die perfekte Verbindung mit Flexibus & Apache PLC4X 24th May 2019 Frankfurt (GER) Meetup IoT Hessen Industrial IoT goes Open Source: Apache PLC4X Talks & Party 3th April 2019 Cologne (GER) Conference Building IoT Apache PLC4X: Industry 4.0 done our way 8th March 2019 Solingen (GER) Conference Industrial IoT Day Apache PLC4X: Industry 4.0 done our way 21th February 2019 Aachen (GER) Meetup EURegJUG Maas-Rhine Episode IV - A New Hope: Industry 4.0 Done Our Way 15th February 2019 Nürtingen (GER) Meetup PLC4X Meetup Special Hackathon looking deeper into some new Protocols 15th November 2018 Düsseldorf (GER) Meetup RheinJUG Wie wir mit Apache PLC4X die Silos in der Automatisierungsindustrie aufbrechen 12th-13th November 2018 Berlin (GER) Conference 3. Fachkonferenz: Industrial Analytics & Big Data in der Industrie Kommunikation mit Industrieanlagen ohne Umbau- und Lizenzkosten 22th-24th October 2018 Edinburgh (GB) Conference Open-Source Summit Europe Revolutionizing the production industry with Apache PLC4X 24th-19th September 2018 Montreal (CAN) Conference ApacheCon NA 2018 Revolutionizing the Production Industry with Apache PLC4X (incubating) 20th September 2018 Nürtingen (GER) Meetup PLC4X Meetup First general committer meetup 13th-14th June 2018 Berlin (GER) Conference Apache EU Roadshow Revolutionizing the production industry with Apache PLC4X 4th June 2018 Cologne (GER) Conference Building IoT Industrial IoT und Edge Computing mit Apache PLC4X und Apache Edgent 5th April 2018 Hamburg (GER) Conference TechCamp Hamburg Revolutionizing Industrial IoT with Apache PLC4X 21th January 2018 Hamburg (GER) Conference Nortec Mehr für Weniger? Aber Sicher! 4th-5th May 2019 Brussels (BE) Hackathon EU FOSSA Apache Hackathon Co-creating the future of open source Looking forward to meeting you. If you’ve got or found any events or talks we might be missing, please inform us on dev@plc4x.apache.org. PLC4X Banner","title":"Conferences & Events","component":"plc4x","version":"latest","name":"conferences","url":"/plc4x/latest/developers/conferences.html","titles":[{"text":"Additional Material","hash":"_additional_material","id":1}]},"176":{"id":176,"text":"This document describes the roles and responsibilities of the project, who may vote, how voting works, how conflicts are resolved, etc. The Apache Foundation FAQ and How-It-Works explain the operation and background of the foundation. Terms used are defined in the ASF glossary. Apache has a code of conduct that it expects its members to follow. Apache projects define a set of roles with associated rights and responsibilities. The PMC has many responsibilities including complying with ASF policies, reporting to the board, approving releases and adding new committers and PMC members. The chair ensures board reports are submitted and that the project’s roster is up to date. Different decisions require different forms of approval but community consensus is always the goal. Voting when needed should be open for at least 72 hours. Consensus Approval – Consensus approval requires 3 binding +1 votes and no -1 votes (vetoes). Majority Approval – requires at least 3 binding +1 votes more +1 votes than -1 votes. Lazy Consensus – consensus no objections (‘silence gives assent’). Action Who can vote Approval Where to vote Board approval required Code change Committer Lazy Consensus public dev or commit list Release PMC Majority Approval public dev list New committer PMC Consensus Approval private list New PMC member PMC Consensus Approval private list Yes 1) Existing committer removal PMC Consensus Approval private list Existing PMC removal PMC Consensus Approval private list Yes 2) Change chair PMC Consensus Approval private list Yes 3) Notice must be given to board. Except PMC member in question. Only the board can remove PMC members. Need to be approved by the board at the next board meeting.","title":"Decision Making","component":"plc4x","version":"latest","name":"decisions","url":"/plc4x/latest/developers/decisions.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Roles and Responsibilities","hash":"_roles_and_responsibilities","id":2},{"text":"Project Management Committee","hash":"_project_management_committee","id":3},{"text":"The Chair","hash":"_the_chair","id":4},{"text":"Decision Making","hash":"_decision_making","id":5}]},"177":{"id":177,"text":"This part of the Apache PLC4X dedicated to provide information to people wanting to build PLC4X and hopefully also start contributing to this awesome project. We have tried to make the PLC4X build experience as smooth as possible and have tried to reduce the number of required third party tools to an absolute minimum. The full PLC4X build however builds not only Java libraries, but also C++, Python and C# libraries as well as builds Docker images on Linux, Mac and Windows. As a start, you will basically need a Java VM of at least Java 11. Using the Maven-Wrapper you don’t even need a Maven installation. The build will automatically fetch the right version for you. As part of the build we have an initial build step that will do a prerequisite check. Depending on the activated modules, it will check if all preconditions are met and tell you what’s missing. For details please have a look at the Preparing your Computer page. We have a dedicated page on Building PLC4X. Please read this page on information about how to build Apache PLC4X. If you want to work on Apache PLC4X in order to fix things, add things and start contributing in general, please have a look at our Contributing page. It should contain all the information you need. The primary source for getting help definitely is our project mailing list dev@plc4x.apache.org. You can search previous content in our Mail Archive In order to post to the list you first need to subscribe. This can be done by sending an empty Email to dev-subscribe@plc4x.apache.org.","title":"Developer Section","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/developers/index.html","titles":[{"text":"Getting Started","hash":"_getting_started","id":1},{"text":"Building PLC4X","hash":"_building_plc4x","id":2},{"text":"Contributing","hash":"_contributing","id":3},{"text":"Getting Help","hash":"_getting_help","id":4}]},"178":{"id":178,"text":"In PLC4X we are using a tool called JQAssistant for enforcing quality assurance rules. JQAssistant can be thought of as a set of two components: A set of scanners that analyse a project and stores the gathered information in for of linked graphs in a Neo4j database. An engine that executes defined rules against the graph created during the scan phase of the build These rules can produce either reports and tables or they are used to enforce rules. If a pre-defined rule is violated the failed checks can be marked as warning or error that breaks the build. In contrast to using the maven-enforcer-plugin doing cross-domain checks is really simple as all information is available in one big graph. Currently the following scanners are active: CDI Common Common Test Core Analysis EJB3 GraphML JAX-RS JPA 2 JSON JUnit Java Java 9 Java EE 6 Maven 3 OSGi RDBMS TestNG Tycho XML YAML These rules that are automatically checked during the build are defined in src/jjqassistant. If defined in a reactor project, the rules apply to all modules of that (sub-)reactor. So if they are defined in the root module of the project, it applies to all modules. TODO: Finish this \"little detail\" … The scan and analysis is automatically performed during a normal Maven build. In order to do ad-hoc queries against the project or develop new rules, the Web-UI is very helpful. To start the Web-UI, all you need to do, is run the following command (after a build): mvn jqassistant:server This will start a Neo4j server with web console. [INFO] --- jqassistant-maven-plugin:1.3.0:server (default-cli) @ plclogger --- [INFO] Connecting to store at 'file:/Users/christofer.dutz/Projects/Apache/PLC4X/target/jqassistant/store/' 2018-04-05 19:11:14.369+0200 INFO [o.n.s.CommunityNeoServer] No SSL certificate found, generating a self-signed certificate.. 2018-04-05 19:11:14.683+0200 INFO [o.n.s.CommunityNeoServer] Starting HTTP on port 7474 (8 threads available) 2018-04-05 19:11:14.859+0200 INFO [o.n.s.w.Jetty9WebServer] Mounting static content at /webadmin 2018-04-05 19:11:14.892+0200 INFO [o.n.s.w.Jetty9WebServer] Mounting static content at /browser Apr 05, 2018 7:11:15 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate INFORMATION: Initiating Jersey application, version 'Jersey: 1.19 02/11/2015 03:25 AM' Apr 05, 2018 7:11:15 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate INFORMATION: Initiating Jersey application, version 'Jersey: 1.19 02/11/2015 03:25 AM' Apr 05, 2018 7:11:15 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate INFORMATION: Initiating Jersey application, version 'Jersey: 1.19 02/11/2015 03:25 AM' 2018-04-05 19:11:15.396+0200 INFO [o.n.s.CommunityNeoServer] Remote interface ready and available at http://localhost:7474/ [INFO] Running server for module org.apache.plc4x:plc4x-parent:0.0.1-SNAPSHOT [INFO] Press to finish. So when visiting the anounced url with a browser, you can use the pretty useful neo4j web console. IntelliJ comes with some interesting Neo4J support. Unfortunately this only supports Neo4j 3. Unfortunately the process of enabling this toolset is a little less comfortable than the Web-UI version. Even if JQAssistant uses Neo4j 2 per default, we can force it to use Neo4j 3 by providing an additional commandline parameter. mvn -Djqassistant.neo4jVersion=3 clean install JQAssistant uses Neo4j 3 and the resulting data directory is then in Neo4j 3 format. In this case the server has to be started with the same parameter: mvn -Djqassistant.neo4jVersion=3 jqassistant:server As soon as the server is started, we can connect from the IntelliJ plugin. Note: The connection settings also contain a username and a password. It appears that this can simply be left empty of can contain random values. After creating the connection, the Graph Neo4j view should list the new connection. You can now use this to perform queries","title":"Using JQAssistant","component":"plc4x","version":"latest","name":"jqassistant","url":"/plc4x/latest/developers/jqassistant.html","titles":[{"text":"Defining JQAssistant rules","hash":"_defining_jqassistant_rules","id":1},{"text":"Using the Web-UI","hash":"_using_the_web_ui","id":2},{"text":"Using IntelliJ Idea","hash":"_using_intellij_idea","id":3}]},"179":{"id":179,"text":"This is an assessment of the PLC4X podling’s maturity, meant to help inform the decision (of the mentors, community, Incubator PMC and ASF Board of Directors) to graduate it as a top-level Apache project. It is based on the ASF project maturity model at https://community.apache.org/apache-way/apache-project-maturity-model.html Mentors and community members are encouraged to contribute to this page and comment on it, the following table summarizes project’s self-assessment against the Apache Maturity Model. ID Description Status Code CD10 The project produces Open Source software, for distribution to the public at no charge. The project source code is licensed under the Apache License, version 2.0. CD20 The project’s code is easily discoverable and publicly accessible. Our sourcecode is available at Apache GitBox and GitHub and linked to from our website CD30 The code can be built in a reproducible way using widely available standard tools. our Maven build has been tested on Linux, MacOS and Windows and build description is available on our website CD40 The full history of the project’s code is available via a source code control system, in a way that allows any released version to be recreated. The entire commit history is available from the beginning. CD50 The provenance of each line of code is established via the source code control system, in a reliable way based on strong authentication of the committer. When third-party contributions are committed, commit messages provide reliable information about the code provenance. The project uses the git repository, managed by Apache Infra, ensuring provenance of each line of code to a committer, each line committed before entering incubation was equally configured. Licenses and Copyright LC10 The code is released under the Apache License, version 2.0. Both the source distribution as well as the convenience binary artifacts clearly declare that they are licensed under the Apache 2.0 license LC20 Libraries that are mandatory dependencies of the project’s code do not create more restrictions than the Apache License does. The list of mandatory dependencies have been reviewed to contain approved licenses only. LC30 The libraries mentioned in LC20 are available as Open Source software. All mandatory dependencies are available as open source software. LC40 Committers are bound by an Individual Contributor Agreement (the \"Apache iCLA\") that defines which code they are allowed to commit and how they need to identify code that is not their own. The project uses a repository managed by Apache Gitbox — write access requires an Apache account, which requires an ICLA on file. LC50 The copyright ownership of everything that the project produces is clearly defined and documented. All files in the source repository have appropriate headers which is enforced by tooling included in the build. ICLAs from all initial committers have been documented. CCLAs from all companies involved have been documented. SGA is on file for the initial contribution. Releases RE10 Releases consist of source code, distributed using standard and open archive formats that are expected to stay readable in the long term. Current source releases are distributed via dist.apache.org and Older source releases are available from archive.apache.org. Both are linked from the website. RE20 Releases are approved by the project’s PMC (see CS10), in order to make them an act of the Foundation. All incubating releases have been unanimously approved by the PLC4X community and the Incubator, all with at least 3 (P)PMC votes and more +1 than -1. RE30 Releases are signed and/or distributed along with digests that can be reliably used to validate the downloaded archives. All releases are signed, and the KEYS file is provided on dist.apache.org RE40 Convenience binaries can be distributed alongside source code but they are not Apache Releases — they are just a convenience provided with no guarantee. Convenience binaries are distributed via Maven Central Repository only. Currently due to the platform-dependency of C++ libraries, these are not distributed currently. RE50 The release process is documented and repeatable to the extent that someone new to the project is able to independently generate the complete set of artifacts required for a release. We have a guide for release managers, that has been tested by multiple release managers available on our website. Quality QU10 The project is open and honest about the quality of its code. Various levels of quality and maturity for various modules are natural and acceptable as long as they are clearly communicated. All issues are documented in our JIRA instance, which is our primary bug and issue tracker. QU20 The project puts a very high priority on producing secure software. even if we haven’t received any security issues targeted at PLC4X yet, we pro-actively monitor our dependencies and if reported would treat them with the highest priority, according to the CVE/Security Advisory procedure. QU30 The project provides a well-documented, secure and private channel to report security issues, along with a documented way of responding to them. We are using Apaches default way to submit security related information, which is described on our website QU40 The project puts a high priority on backwards compatibility and aims to document any incompatible changes and provide tools and documentation to help users transition to new features. We try to keep everything as backward compatible as possible. If we are forced to introduce incompatible changes, these is documented in a Incompatible changes section as part of our release notes. QU50 The project strives to respond to documented bug reports in a timely manner. Bug reports are treated with priority and are automatically posted to our developer mailing list dev@plc4x.apache.org\" class=\"bare\">https://lists.apache.org/list.html?dev@plc4x.apache.org so they are prominently recognised. Community CO10 The project has a well-known homepage that points to all the information required to operate according to this maturity model. The project website has a description of the project with technical details, how to contribute, team. CO20 The community welcomes contributions from anyone who acts in good faith and in a respectful manner and adds value to the project. So far we have recognized any form of contribution and every contributor with the desire to become part of the team has been invited to join. CO30 Contributions include not only source code, but also documentation, constructive bug reports, constructive discussions, marketing and generally anything that adds value to the project. It’s part of the contribution guide and the current committers are really keen to welcome contributions. CO40 The community is meritocratic and over time aims to give more rights and responsibilities to contributors who add value to the project. So far the community has elected 4 committers, all of them also being added to the PPMC. CO50 The way in which contributors can be granted more rights such as commit access or decision power is clearly documented and is the same for all contributors. The criteria is documented in the contribution guide. CO60 The community operates based on consensus of its members (see CS10) who have decision power. Dictators, benevolent or not, are not welcome in Apache projects. The project works to build consensus. All votes have been unanimous so far. CO70 The project strives to answer user questions in a timely manner. Responses to reported issues or asked questions typically are handled by the community withing a matter of a few hours (Responses being faster during typical European time-zone business-hours). Consensus Building CS10 The project maintains a public list of its contributors who have decision power — the project’s PMC (Project Management Committee) consists of those contributors. We’re currently working on filling the team page. CS20 Decisions are made by consensus among PMC members 9 and are documented on the project’s main communications channel. Community opinions are taken into account but the PMC has the final word if needed. All decisions are made on one of our mailing lists. Every decision discussed off-list has been taken back to the list for final discussion and we’ll keep on doing that. CS30 Documented voting rules are used to build consensus when discussion is not sufficient. We have documented our decision making rule on our website. CS40 In Apache projects, vetoes are only valid for code commits and are justified by a technical explanation, as per the Apache voting rules defined in CS30. This part actively contradicts the voting rules of the Apache Incubator. This project follows the voting rules of the Apache Incubator which we documented on our website. CS50 All \"important\" discussions happen asynchronously in written form on the project’s main communications channel. Offline, face-to-face or private discussions 11 that affect the project are also documented on that channel. As mentioned in CS20 it is impossible to prevent off-list discussions when meeting in person. But we have always handled things in a way that we always write up summaries of important discussions and post them to the mailing lists. Independence IN10 The project is independent from any corporate or organizational influence. The group of active committers and PPMCs consists of members of more than independent 4 companies. IN20 Contributors act as themselves as opposed to representatives of a corporation or organization. While there are several cases where committers and PPMC members utilize corporate infrastructure or these companies, no case has been found where any of these committers and PPMCs have represented corporate interests.","title":"Apache Maturity Model Assessment for PLC4X","component":"plc4x","version":"latest","name":"maturity","url":"/plc4x/latest/developers/maturity.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Maturity model assessment","hash":"_maturity_model_assessment","id":2}]},"180":{"id":180,"text":"Sorted by first name: Name Bio Ben Hutcheson Software Developer, Control Systems Engineer Isar Aerospace Altötting, Germany Experienced as an Electrical Engineer, Control Systems Engineer and Software Developer. Enjoys developing systems which overlap in all three of these fields. César García CEOS Automatización, C.A. Pto. La Cruz, Anzoátegui, Venezuela Electrical engineer, dedicated to process automation and control. Specialized in Siemens S5, S7, PCS7 architecture for the Oil&Gas industry and Braumat for the food and beverage industry. Applying open source technologies to create added value for users, such as Kannel, Apache Http Server, Apache Karaf, Apache Hop, Apache IoTDB and the meeting point of all of them Apache PLC4X where I have been able to collaborate as a PMC. Christofer Dutz IoT Consultant Mapped Frankfurt Likes to swim outside the mainstream. He is really passionate about walking new paths. His first email to an Apache list on file was to the Cocoon project back in the year 2000. His direct involvement started in 2012 when he was elected to become an Apache Flex committer. Since then he became involved with a lot of Apache-internal groups and committees and was elected to become a Member of the Apache Software Foundation in 2015 and recently has taken up the role of mentoring several IoT podlings in the Apache Incubator. Julian Feinauer Founder / CEO pragmatic minds GmbH / pragmatic industries GmbH Kirchheim unter Teck Has studied mathematics in Stuttgart. Besides his interest in open source software and big data, he focuses on the analysis of time series and traces from testing or manufacturing. PLC4X was the first project where he was offered a position as (P)PMC but he is also engaged in other Apache projects like Edgent and IotDB. Łukasz Dywicki Coding CEO / Consultant ConnectorIO sp. z o.o. / Code-House (self employed) Warsaw He started working with Apache Software Foundation projects in 2007 - at the time when the first incubation version of Apache CXF was out. Since then he took active part and contributed to Apache projects related to software integration such as Apache Karaf, Apache ActiveMQ and Apache Camel. He is an Open Source and OSGi enthusiast, passionate about connecting things, physical ones too. Lukas Ott Domain Architect Pharmaceutical Industry Copenhagen He started working with Apache Software Foundation projects in 2013 - at that time in the context of Semantic Technologies with an archived project called Apache Stanbol. Since then he took an interested in several different Apache projects like Apache ActiveMQ, Apache Spark, Apache Storm, Apache Cassandra. He is an Open Source and Pythonista, passionate about connecting people, processes and machines. Main focus is community over code and linking different communities together Matthias Milan Strljic Research assistant ISW; University of Stuttgart Stuttgart Research assistant and software engineer at the Institute for control engineering of machine tools and manufacturing units (ISW) of the university of stuttgart, research in the fields of automation technology + smart services + cloud manufacturing, my favourites are woodwork + knife sharpening + cigars, member of the PMC of PLC4X Sebastian Rühl Software Developer Mapped Frankfurt Software engineer, member of the PMC of PLC4X Tim Mitsch Engineer pragmatic industries GmbH Nürtingen Electrical engineer (HW, SW and interface-stuff) from passion and very new to Apache projects. The more he is involved in open-source the more he likes it, focusing on PLC4X at first.","title":"Team","component":"plc4x","version":"latest","name":"team","url":"/plc4x/latest/developers/team.html","titles":[]},"181":{"id":181,"text":"In order to be able to work on PLC4X some tools have kindly been made available to Apache PLC4X committers. Jetbrains offers Licenses to IntelliJ to Apache Committers for free EJ-Technologies have also kindly provided us with JProfiler licenses in order to track down some concurrency and memory usage problems. Thank you to all.","title":"Tools","component":"plc4x","version":"latest","name":"tools","url":"/plc4x/latest/developers/tools.html","titles":[]},"182":{"id":182,"text":"As hand-writing code for a lot of drivers in multiple languages would be quite a nightmare, we have invested a very large amount of time into finding a way to automate this. So in the end we need 3 parts: Protocol definition Language template A maven plugin which generates the code This maven plugin uses a given protocol definition as well as a language template and generates code for reading/writing data in that protocol with the given language. The Types Base module provides all the structures the Protocol modules output which are then used in the Language templates to generate code. Protocol Base and Language Base hereby just provide the interfaces that reference these types and provide the API for the plc4x-maven-plugin to use. These modules are also maintained in a repository which is separate from the rest of the PLC4X code. This is due to some restrictions in the Maven build system. If you are interested in understanding the reasons - please read the chapter on Problems with Maven near the end of this page. Concrete protocol spec parsers and templates that actually generate code are implemented in derived modules. We didn’t want to tie ourselves to only one way to specify protocols and to generate code. Generally multiple types of formats for specifying drivers are thinkable and the same way multiple ways of generating code are possible. Currently however we only have one parser: MSpec and one generator: Freemarker. These add more layers to the hierarchy. So for example in case of generating a Siemens S7 Driver for Java this would look like this: The dark blue parts are the ones released externally, the turquoise ones are part of the main PLC4X repo. The maven plugin is built up very modular. So in general it is possible to add new forms of providing protocol definitions as well as language templates. For the formats of specifying a protocol we have tried out numerous tools and frameworks, however the results were never quite satisfying. Usually using them required a large amount of workarounds, which made the solution quite complicated. In the end only DFDL and the corresponding Apache project Apache Daffodil seemed to provide what we were looking for. With this we were able to provide first driver versions fully specified in XML. The downside was, that the PLC4X community regarded this XML format as pretty complicated and when implementing an experimental code generator we quickly noticed that generating a nice object model would not be possible, due to the lack ability to model the inheritance of types in DFDL. In the end we came up with our own solution which we called MSpec and is described in the MSpec Format description. The plc4x-maven-plugin has a very limited set of configuration options. In general all you need to specify, is the protocolName and the languageName. An additional option outputFlavor allows generating multiple versions of a driver for a given language. This can come in handy if we want to be able to generate read-only or passive mode driver variants. Last, not least, we have a pretty generic options config option, which is a Map type. With options is it possible to pass generic options to the code-generation. So if a driver or language requires further customization, these options can be used. Currently, the Java module makes use of such an option for specifying the Java package the generated code uses. If no package option is provided, the default package org.apache.plc4x.{language-name}.{protocol-name}.{output-flavor} is used, but especially when generating custom drivers, which are not part of the Apache PLC4X project, different package names are better suited. So in these cases, the user can simply override the default package name. There is also an additional parameter: outputDir, which defaults to ${project.build.directory}/generated-sources/plc4x/ and usually shouldn’t require being changed in case of a Java project, but usually requires tweaking when generating code for other languages. Here’s an example of a driver pom for building a S7 driver for java: 4.0.0 org.apache.plc4x.plugins plc4x-code-generation 0.6.0-SNAPSHOT test-java-s7-driver org.apache.plc4x.plugins plc4x-maven-plugin test generate-sources generate-driver s7 java read-write org.apache.plc4x.plugins plc4x-code-generation-driver-base-java 0.6.0-SNAPSHOT org.apache.plc4x.plugins plc4x-code-generation-language-java 0.6.0-SNAPSHOT provided org.apache.plc4x.plugins plc4x-code-generation-protocol-s7 0.6.0-SNAPSHOT provided So the plugin configuration is pretty straight forward, all that is specified, is the protocolName, languageName and the output-flavor. The dependency: org.apache.plc4x.plugins plc4x-code-generation-driver-base-java 0.6.0-SNAPSHOT For example contains all classes the generated code relies on. The definitions of both the s7 protocol and java language are provided by the two dependencies: org.apache.plc4x.plugins plc4x-code-generation-language-java 0.6.0-SNAPSHOT provided and: org.apache.plc4x.plugins plc4x-code-generation-protocol-s7 0.6.0-SNAPSHOT provided The reason for why the dependencies are added as code-dependencies and why the scope is set the way it is, is described in the Why are the protocol and language dependencies done so strangely? section. The plugin uses the Java Serviceloader mechanism to find modules. In order to provide a new protocol module, all that is required, it so create a module containing a META-INF/services/org.apache.plc4x.plugins.codegenerator.protocol.Protocol file referencing an implementation of the org.apache.plc4x.plugins.codegenerator.protocol.Protocol interface. This interface is located in the org.apache.plc4x.plugins:plc4x-code-generation-protocol-base module and generally only defines two methods: package org.apache.plc4x.plugins.codegenerator.protocol; import org.apache.plc4x.plugins.codegenerator.types.definitions.ComplexTypeDefinition; import org.apache.plc4x.plugins.codegenerator.types.exceptions.GenerationException; import java.util.Map; public interface Protocol { /** * The name of the protocol what the plugin will use to select the correct protocol module. * * @return the name of the protocol. */ String getName(); /** * Returns a map of complex type definitions for which code has to be generated. * * @return the Map of types that need to be generated. * @throws GenerationException if anything goes wrong parsing. */ Map getTypeDefinitions() throws GenerationException; } These implementations could use any form of way to generate the Map of `ComplexTypeDefinition’s. They could even be hard coded. However, we have currently implemented utilities for universally providing input: MSpec Format PLC4X proprietary format. Analog to the Protocol Modules the Language modules are constructed equally. The Language interface is very simplistic too and is located in the org.apache.plc4x.plugins:plc4x-code-generation-language-base module and generally only defines two methods: package org.apache.plc4x.plugins.codegenerator.language; import org.apache.plc4x.plugins.codegenerator.types.definitions.ComplexTypeDefinition; import org.apache.plc4x.plugins.codegenerator.types.exceptions.GenerationException; import java.io.File; import java.util.Map; public interface LanguageOutput { /** * The name of the template is what the plugin will use to select the correct language module. * * @return the name of the template. */ String getName(); List supportedOutputFlavors(); /** * An additional method which allows generator to have a hint which options are supported by it. * This method might be used to improve user experience and warn, if set options are ones generator does not support. * * @return Set containing names of options this language output can accept. */ Set supportedOptions(); void generate(File outputDir, String languageName, String protocolName, String outputFlavor, Map types, Map options) throws GenerationException; } The file for registering Language modules is located at: META-INF/services/org.apache.plc4x.plugins.codegenerator.language.LanguageOutput Same as with the protocol modules, the language modules could also be implemented in any thinkable way, however we have already implemented some helpers for using: Apache Freemarker Format Generate output using Apache Freemarker Project. We mentioned in the introduction, that the first 4 modules are maintained and released from outside the main PLC4X repository. This is due to some restrictions in Maven, which result from the way Maven generally works. The main problem is that when starting a build, in the validate-phase, Maven goes through the configuration, downloads the plugins and configures these. This means that Maven also tries to download the dependencies of the plugins too. In case of using a Maven plugin in a project which also produces the maven plugin, this is guaranteed to fail - Especially during releases. While during normal development, Maven will probably just download the latest SNAPSHOT from our Maven repository and be happy with this and not complain that this version will be overwritten later on in the build. It will just use the new version as soon as it has to. During releases however the release plugin changes the version to a release version and then spawns a build. In this case the build will fail because there is no Plugin with that version to download. In this case the only option would be to manually build and install the plugin in the release version and to re-start the release (Which is not a nice thing for the release manager). For this reason we have stripped down the plugin and its dependencies to an absolute minimum and have released (or will release) that separately from the rest, hoping due to the minimality of the dependencies that we will not have to do it very often. As soon as the tooling is released, the version is updated in the PLC4X build and the release version is used without any complications. It would certainly be a lot cleaner, if we provided the modules as plugin dependencies. However, as we mentioned in the previous sub-chapter, Maven tries to download and configure the plugins prior to running the build. So during a release the new versions of the modules wouldn’t exist, this would cause the build to fail. We could release the protocol- and the language modules separately too, but we want the language and protocol modules to be part of the project, to not over-complicate things - especially during a release. So the Maven plugin is built in a way, that it uses the modules dependencies and creates its own Classloader to contain all of these modules at runtime. This brings the benefit of being able to utilize Maven’s capability of determining the build order and dynamically creating the modules build classpath. Adding a normal dependency however would make Maven deploy the artifacts with the rest of the modules. We don’t want that as the modules are useless as soon as they have been used to generate the code. So we use a trick that is usually used in Web applications, for example: Here the vendor of a Servlet engine is expected to provide an implementation of the Servlet API. It is forbidden for an application to bring this along, but it is required to build the application. For this the Maven scope provided, which tells Maven to provide it during the build, but to exclude it from any applications it builds, because it will be provided by the system running the application. This is not quite true, but it does the trick.","title":"Code Generation","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/developers/code-gen/index.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Configuration","hash":"_configuration","id":2},{"text":"Custom Modules","hash":"_custom_modules","id":3},{"text":"Protocol Modules","hash":"_protocol_modules","id":4},{"text":"Language Modules","hash":"_language_modules","id":5},{"text":"Problems with Maven","hash":"_problems_with_maven","id":6},{"text":"Why are the 4 modules released separately?","hash":"_why_are_the_4_modules_released_separately","id":7},{"text":"Why are the protocol and language dependencies done so strangely?","hash":"_why_are_the_protocol_and_language_dependencies_done_so_strangely","id":8}]},"183":{"id":183,"text":"We are currently using Apache’s Jenkins as single CI system. Apache’s Jenkins at: https://ci-builds.apache.org/job/PLC4X/ However we might add Travis for automatically building and testing Pull-Requests in the near future. Hereby Apache Jenkins' clearly is responsible for running the full testsuite with all integration-tests. Also only jobs on Apache Jenkins are allowed to publish SNAPSHOT versions of the Maven artifacts to Apaches Nexus at: https://repository.apache.org. We are using the Jenkins multi-branch pipeline plugin to automatically setup build for branches based upon the build definition in the Jenkinsfile in the root of the project. In general it builds the develop branch and all branches starting with the prefix feature/. However when building the develop branch some additional steps are performed. When building develop the build not only builds the project itself and runs all tests, it also runs the sonarcloud analysis, deploys the artifacts built to the Apache Nexus as well as generates and deploys the website. The general structure of the build is as follows:","title":"Continuous Integration","component":"plc4x","version":"latest","name":"ci","url":"/plc4x/latest/developers/infrastructure/ci.html","titles":[{"text":"Structure of the Jenkins Pipeline build","hash":"_structure_of_the_jenkins_pipeline_build","id":1}]},"184":{"id":184,"text":"In this section you can find information on the services the Apache PLC4X project makes use of.","title":"Infrastructure","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/developers/infrastructure/index.html","titles":[]},"185":{"id":185,"text":"Our bug & issue tracker is Apache’s Jira instance. This service is available here: https://issues.apache.org/jira/projects/PLC4X","title":"Bug & Issue Tracker","component":"plc4x","version":"latest","name":"issues","url":"/plc4x/latest/developers/infrastructure/issues.html","titles":[]},"186":{"id":186,"text":"We are using SonarCloud as the service for static code analysis. This is an externally hosted service and is available here: https://sonarcloud.io/dashboard?id=apache_plc4x","title":"Code Analysis","component":"plc4x","version":"latest","name":"sonar","url":"/plc4x/latest/developers/infrastructure/sonar.html","titles":[]},"187":{"id":187,"text":"==The PLC4X Project VM As, especially for the raw socket functionality of PLC4X, our project had higher demands on the infrastructure as other projects. Apache Infra kindly provided us with a dedicated VM. This is included as build agent into Apache’s Jenkins with the label plc4x2 and is marked for exclusive usage by our project. The host name of this machine is: plc4x-vm2.apache.org On this machine we can even sudo to perform operations only available to root. Project members can request access to the machine. In order to be able to log in, users need to add their SSH public key to their Apache ID first. This is done under the following url: https://id.apache.org/ Here just add the content in the following format to one of the SSH Key (authorized_keys line) fields: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDd10ykYAZLxHJVTER71IrrVVpyR8OBdlJd1aVwb67Ts+ueJjzo8ofQKLASaQw9EQOSfprGZW0sfzhepeJvbX0n1IfsRexoyIGlD8WzyX/UoLiRLPHFv+eSGJVlN90x/l+zps+yo3lq6qfuIqkXQQvB4aJBYsYC/jifpMLvx06zaUBPfdWIaGiBgaWbX/59Q0QsSpX5r8tgdA+XLw/8Zg5AbKazuS2Cm/soJCfQQ7km4bd/WtF5R5xvakVbyILMT8Dk9Hs9OfVL/RFGLYqX4bjy5uCTwPBrwlWqFyq1u7JR39i870XNgn+bIeChaZU098BGyBH/cWMGt7bTJQSKxksF2SZAHjt8Ga2Pl+J6MTW6/EPzIYENgvfOBVSlVaz9SlM26nel1+SHDND9dK/4gRNbujbmzHZLfTjMk7oc4R+WPCBIw99CFeShTKHSxhJKz/3KmcmuEHhNRBdMy+xHecr/r/Pax58a9VHXQqHbwES6tvC1gvM2uFSMKoaKtNkME4V7bPLbQcEF8tKz7/gKp6vp1IL0BdDMwZPodFPmbiJzqjvC38A++B5k0GAgWKYPVsenamZviFhRNGjjum/qxBnAF1FjpIocsEA0zQBYvvOPDpKl9KPRZ32ALHztnRfCEwltgnM1Sjinn4zQjxQs5mJBz2rjMGlkSzVjLoSo7khiBQ== my@email-address.com (I just had to copy this line from my ~/.ssh/id_rsa.pub file) Note, the Email Address in the end doesn’t seem to matter, I simply added it for the sake of completeness. So if this doesn’t match your Apache email, this is not a problem. As soon as that’s done, access needs to be requested from Apache Infra. This is done using the Infra Jira at: https://issues.apache.org/jira Here make sure to select the Project Infrastructure (INFRA). As soon as that’s handled by the Infra team, you should be ready to log-in on the machine. Using SSH we should now be able to log in to the VM. ssh apacheId@plc4x-vm2.apache.org Be sure to use the username matching your Apache ID or the login will fail. If all went well you should now be able to log in to the machine using your apache user. Apache Infra is great at keeping things safe. Providing a sudo password directly would increase the danger of having this intercepted, therefore they are using a tool called opiepasswd. Instead of now entering a password, a challenge is displayed: myid@plc4x-vm2:~$ sudo apt-get update otp-md5 496 pl8230 Password: If you now enter your normal password, you’ll simply get permission denied errors. In order to execute operations as root on the machine, you need to use an opie client. otp-md5 496 pl8230 into OPIE client’s challenge field. In the password field you provide your Apache LDAP password. When hitting enter or clicking on Compute the tool should automatically generate a response. Now all you need to do is copy & paste that as password into your SSH client session. As with the latest version of Mac Catalina the existing clients no longer work and using a public web service is a bad idea, Apache has its own service to calculate it: https://selfserve.apache.org/otp-md5.html For being able to build the charts and graphics as part of the site generation, we need to add some additional packages: sudo apt-get install python-seqdiag sudo apt-get install python-nwdiag","title":"","component":"plc4x","version":"latest","name":"vm","url":"/plc4x/latest/developers/infrastructure/vm.html","titles":[{"text":"Requesting access","hash":"_requesting_access","id":1},{"text":"Login to the machine","hash":"_login_to_the_machine","id":2},{"text":"Doing things as root","hash":"_doing_things_as_root","id":3},{"text":"Required software","hash":"_required_software","id":4}]},"188":{"id":188,"text":"We are currently using the normal Maven build to not only generate the project artifacts, but also the projects website. In order to provide content, every module can have a src/site directory. This content will be generated to that modules site-part. The skin being used to generate the site is none of the default Maven skins, but a more up-to-date looking skin using: Bootstrap (For the CSS) JQuery (For the JavaScript magic) Fontawesome (For icons and symbols) But we don’t have to worry about the details, all is configured to be used automatically. The site content itself is generated from asciidoc files (ending .adoc) which is a simple yet powerful markup language. (See AsciiDoc Syntax Quick Reference or AsciiDoc cheatsheet for details) Beyond the basic goodies, the build is also configured to generate images from ASCII data using the asciidoctor-diagram plugin. This allows us to generate images like the ones on the S7 Protocol Description page Within the src/site directory there is a file site.xml which generally controls the menu and the look of the site. Most setting are inherited from the plc4x-parent module. That’s also why this is more complicated than the others. The site.xml file is optional. Even if this is not available a site will be generated however no additional content will be linked from any of the navigation menus. So if we wanted to add a new page on some (hopefully non existent) Wombat PLC Protocol, we would create a file called: index.adoc in the src/site/asciidoc/protocols/wombat directory. For example with this content: == Wombat PLC Protocol If you want to waste your money, brains and time, feel free to use a `Wombat PLC`. In order to help you waste even more of that, we'll skip documenting anything. Notice the double equals sign? This is the site Title. It seems the level One with only one equals sign is only used for ebook output. So just keep in mind: Two equals signs is the top level title, all lower levels have more equals signs. In order to generate the content you need to execute the Maven site workflow. This is for example done by executing: mvn site This will not build the artifact itself, but only it’s website. After the build, you would find a file target/site/protocols/wombat/index.html However you can link to this page from any other page, but it is not added ot the navigation menu. In order to add links to the menus, you have to create or modify the site.xml for the module you want to add content to. The simplest form would probably be something like this: This will generate a Wombat menu at the end, and this has one link named lalala. Notice that the link has to have a file ending of .html and not .adoc. If you want to insert the menu somewhere else, you will have to re-define the entire menu. The menu ref items hereby reference standard menus provided by the Maven build. The PLC4X project uses Apache gitpubsub system for maintaining the website. In general all content in a repos asf-site branch is copied to the Webservers, if that repo is registered for it. The content in this branch is generated and maintained during the Maven build as part of the site generation if the site-deploy phase is executed. The build system needs to check-in content to the asf-site branch and usually ASF Jenkins nodes don’t have the permissions to do that. In order to be able to push to the asf-site GIT branch, a dedicated build job is configured to build on nodes with the Jenkins label git-websites. Only on these machines are jobs allowed to push changes to a Git repo and here only to a branch named asf-site. See https://ci-builds.apache.org/job/PLC4X/ for details on the PLC4X Jenkins Website build job. As soon as content is updated in the asf-site the gitpubsub mechanism will make those changes available at https://plc4x.apache.org","title":"Generating the Website","component":"plc4x","version":"latest","name":"website","url":"/plc4x/latest/developers/infrastructure/website.html","titles":[{"text":"Providing new content","hash":"_providing_new_content","id":1},{"text":"Adding links to menus","hash":"_adding_links_to_menus","id":2},{"text":"Deploying the Website","hash":"_deploying_the_website","id":3}]},"189":{"id":189,"text":"Building a project like Apache PLC4X on multiple target operating-systems is quite a challenge, but I think we managed to make it as simple as possible. However, when building PLC4X there are some requirements the build is expecting you to have provided. However, this greatly depends on which parts you want to build. The Java modules hereby probably have the least demanding requirements. In order to build most Java parts of PLC4X you are required to have at least Java 9 installed on your machine. Some integration modules and some other languages however may add some additional constraints to this. We have tested the build with Java 11 up to Java 18 (Latest version at the time of writing this document). If a new version comes out, please give us a little time to verify and handle any related issues. We’ll probably fix them as soon as possible. However, in the past with Oracle’s new release strategy, there have been a few bumps on the road. Also will PLC4X build with any Maven version starting with Maven 3.3.0 however the with-c profile requires at least Maven 3.6 as the cmake-maven-plugin requires this. Currently, Maven 3.6 and above is required for being able to build all parts of PLC4X. Profile Description Requirements Builds Java API, drivers, integrations, examples Git LibPCAP with-c Builds C API, drivers, integrations, examples with-dotnet Builds C# and .Net API, drivers, integrations, examples dotnet with-python Builds Python API, drivers, integrations, examples python (min 3.7) pyenv The following pages will describe how to provide these requirements for your operating system. Linux MacOS Windows When running Java unit-tests in IntelliJ, you might run into problems where during the test execution complaints arise that JUnit is unable to load {failsafeArgLine}. In this case you need to go to Settings → Build, Execution, Deployment → Build Tools → Maven → Running Tests and deselect the option argLine.","title":"Preparing your Computer","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/developers/preparing/index.html","titles":[{"text":"Preparing your IDE","hash":"_preparing_your_ide","id":1},{"text":"IntelliJ","hash":"_intellij","id":2}]},"190":{"id":190,"text":"We use Apache’s Confluence instance as Wiki, however most information is generally managed on this website. This service is available here: https://cwiki.apache.org/confluence/display/PLC4X","title":"WIKI","component":"plc4x","version":"latest","name":"wiki","url":"/plc4x/latest/developers/infrastructure/wiki.html","titles":[]},"191":{"id":191,"text":"Checking: git --version If you get any successful output, you probably don’t need to do anything. Apt-based systems: sudo apt-get install git Yum based systems: sudo yum install git Apt-based systems: sudo apt-get install libpcap-dev Yum based systems: sudo yum install libpcap-devel Using libpcap usually requires root privileges, however the java process can be granted permission to do so by executing the following command. setcap cap_net_raw,cap_net_admin=eip /path/to/java Sometimes I had to set the uid to execute the java executable with the permissions of the owner (root) … however this is quite sub-optimal solution. chmod 4755 /path/to/java Checking: gcc --version If you get any successful output, you probably don’t need to do anything. Apt-based systems: sudo apt-get install gcc Yum based systems: sudo yum install gcc Checking: dotnet --version If you get any successful output, you probably don’t need to do anything. Microsoft has documented what is needed to install .Net SDK here For Ubuntu this would be: wget -q https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb sudo apt-get install apt-transport-https sudo apt-get update sudo apt-get install dotnet-sdk-6.0 For other distributions, please select the distribution in the drop-down menu and follow the instructions there. Checking: python3 --version If you get a version of 3.7 or higher reported, you probably don’t need to do anything. Apt-based systems: sudo apt-get install python3 Yum based systems: yum intall python3 Checking: python3 -Im ensurepip If you are getting anything else than a: No module named ensurepip, you’re ok. It seems that this manually needs to be installed on some systems. Apt-based systems: sudo apt-get install python3-venv","title":"Linux","component":"plc4x","version":"latest","name":"linux","url":"/plc4x/latest/developers/preparing/linux.html","titles":[{"text":"Git","hash":"_git","id":1},{"text":"LibPCAP","hash":"_libpcap","id":2},{"text":"gcc","hash":"_gcc","id":3},{"text":"dotnet","hash":"_dotnet","id":4},{"text":"python","hash":"_python","id":5},{"text":"Python venv","hash":"_python_venv","id":6}]},"192":{"id":192,"text":"Most libraries on Mac are installed using Homebrew. Make sure Homebrew ist installed in order to install most of these. /usr/bin/ruby -e \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)\" Checking: git --version If you get any successful output, you probably don’t need to do anything. In order to install it, please execute the following command: brew install git The libpcap version bundled with Mac OS is currently 1.9.1. This version causes exceptions. So it’s best to update to a newer version using brew: brew install libpcap Checking: gcc --version If you get any successful output, you probably don’t need to do anything. It seems macOS comes with a version of gcc which is good enough for our usecases. Checking: dotnet --version If you get any successful output, you probably don’t need to do anything. Microsoft is offering an installer for MacOS which is available from here. Alternatively you can also install it via homebrew: brew install --cask dotnet-sdk Checking: python --version If you get a version of 3.0.0 or higher reported, you probably don’t need to do anything. In order to install it, please execute the following command: brew install pyenv Then use pyenv to install python: pyenv install 3.9.13 Then set this as the global python version: pyenv global 3.9.13 And add pyenv to the PATH: echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\\n eval \"$(pyenv init -)\"\\nfi' >> ~/.zshrc $ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\\n eval \"$(pyenv init -)\"\\nfi' >> ~/.bash_profile After opening a new terminal, python should be configured python --version","title":"Mac OS","component":"plc4x","version":"latest","name":"macos","url":"/plc4x/latest/developers/preparing/macos.html","titles":[{"text":"Git","hash":"_git","id":1},{"text":"LibPCAP","hash":"_libpcap","id":2},{"text":"gcc","hash":"_gcc","id":3},{"text":"dotnet","hash":"_dotnet","id":4},{"text":"python","hash":"_python","id":5}]},"193":{"id":193,"text":"Checking: git --version If you get any successful output, you probably don’t need to do anything. In order to install it, please download end execute the installer from here and make sure to have it add the git executable to your systems PATH. A special version of LibPCAP is available for Windows, which is called Npcap. It is available from here. So in order to install things correctly: install the version Npcap from above location. Add %SystemRoot%\\System32\\Npcap\\ to your System’s PATH Possibly reboot After this all should be working. If not, have a look here for possible help: here If you had WinPcap installed, you need to uninstall this and make sure the files Packet.dll and wpcap.dll are deleted in the %SystemRoot%\\System32\\ directory. Otherwise pcap4j will incorrectly detect a wrong version. An alternative is to use the version that comes with nmap choco install -y nmap Checking: gcc --version If you get any successful output, you probably don’t need to do anything. On windows we will be using something called WinBuilds, which is sort of a package consisting of a typical build environment consisting of multiple build tools. So please look at the WinBuilds chapter at the end of the Windows section. Checking: dotnet --version If you get any successful output, you probably don’t need to do anything. Usually this is already installed on Windows machines. Download the installer from here (Be sure to download an installer from the second column labeled Build apps - SDK) Checking: python --version If you get any successful output, you probably don’t need to do anything. You can get Python from here. Make sure directory containing python.exe is added to your systems PATH. Also make sure you restarted your IDE and or console window after changing the PATH settings for the changes to take effect. We have tested WinBuilds with the bundle found here. Please use the installer. When using the zip distribution and manually adding that to the PATH the build will fail without a log output as some binaries can’t find some of the DLL files. When installing in virtual machines. Make sure to run the installer from a path referring to a local hard-disk C:, D: … when using Paralells the location of the Downloads or Desktop is a shared directory on your Mac. When installing in virtual machines. Please don’t install to any of Windows' Program Files directories. Strange things will happen. When running the installer, make sure to select the options: - Native Windows - x86_64 Not quite sure which elements are really needed, better just install all of them. When running the setup, be sure to leave the setting on the line ending conversions on Checkout Windows-style, commit Unix-style line endings, this will cause specially in the generated code, a lot of false-dirty files, however when selecting other options that check out the code with Unix line endings (the repo is in this state) the build will fail. Make sure it’s bin directory is added to your systems PATH, however the installer should have taken care of this. Also make sure you restarted your IDE and or console window after changing the PATH settings for the changes to take effect. It is encouraged to build them yourself, but binaries can be downloaded from sites like: this Usually I download the 64Bit installer. Be sure to add the bin directory to the systems Path. Pre-Compiled Clang executables seem to be shipped with Visual Studio Community edition. So if you have this installed, just make sure the executables are available on the path. If not, it’s a little tricky to find pre-compiled binaries for windows. Seem the versions available here to the trick. Download and install the LLVM package. Select to add the LLVM to the path (doesn’t matter if just for the current user or for all)","title":"Windows","component":"plc4x","version":"latest","name":"windows","url":"/plc4x/latest/developers/preparing/windows.html","titles":[{"text":"Git","hash":"_git","id":1},{"text":"LibPCAP","hash":"_libpcap","id":2},{"text":"gcc","hash":"_gcc","id":3},{"text":"dotnet","hash":"_dotnet","id":4},{"text":"python","hash":"_python","id":5},{"text":"WinBuilds","hash":"_winbuilds","id":6},{"text":"OpenSSL","hash":"_openssl","id":7},{"text":"Clang","hash":"_clang","id":8}]},"194":{"id":194,"text":"Beckhoff/ ADS EIP","title":"Usage of protocols","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/developers/protocols/index.html","titles":[{"text":"Currently documented are:","hash":"_currently_documented_are","id":1}]},"195":{"id":195,"text":"In contrast to the main project, the plc4x-build-tools repository contains a loose collection of sub-projects. The main pom.xml in the root directory is mainly for allowing to import all modules into an IDE and shouldn’t be used for releases. If you want to release a part of the build-tools, please execute the following release steps in the parts sub-directory. In general the preparation steps for releasing a build-tool is equal to those of the main project. So please check here (Chapters: Preparing your system for being able to release and Preparing the codebase for a release) The rest of the steps are a lot simpler than those of the main project as there aren’t any profiles involved. According to SemVer, we have: Major, Minor and Bugfix releases. For each new Major and Minor release we create a new branch at the beginning of a code-freeze phase. So if currently the project version in develop is {code-generation-full-version}-SNAPSHOT, we create a branch release/{code-generation-short-version}. When creating the branch is exactly the moment in which the version in develop is incremented to the next minor version. This can and should be automated by the maven-release-plugin. Per default the plugin will ask for the working copy version during the build execution. This is the version the develop branch will be changed to. mvn release:branch -DbranchName=releases/code-generation/{minor-version} Per default the plugin suggests the next bugfix version as working version, however we want it to use the next minor version. So in case of preparing the release branch for {code-generation-full-version} the command would be the following: mvn release:branch -DbranchName=releases/code-generation/{code-generation-short-version} The plugin will then aks for the version: What is the new working copy version for \"PLC4X Build Tools: Code Generation\"? (org.apache.plc4x.plugins:plc4x-code-generation) {code-generation-bugfix-version}-SNAPSHOT: : {code-generation-development-version}-SNAPSHOT Where the suggested default is manually overridden. This step now should perform quite quickly as no build and no tests are involved. However in the end the versions of the develop branch are updated and a new releases/code-generation/{code-generation-short-version} branch is created. Now is a good time to add a new section to the RELEASE_NOTES document for the new SNAPSHOT version. Here comes a template: ============================================================== (Unreleased) Apache PLC4X {code-generation-development-version}-SNAPSHOT ============================================================== New Features ------------ Incompatible changes -------------------- Bug Fixes --------- // Rest of the file After that please remove the (Unreleased) from the following section, as we are currently working on its release. Also be sure to do a quick full-text-search to check if the version was updated correctly everywhere. If you find anything here, you will need to pay attention during the release. Now usually comes a phase in which last tests and checks should be performed. If any problems are found they, have to be fixed in the release branch. Changes should either be re applied in develop or cherry-picked, however merging things back can cause a lot of problems, and we no longer have the same versions. Before you start preparing the release, it is important to manually make the RELEASE_NOTES reflect the version we are planning on releasing. Be sure to ensure you have switched to the release branch before continuing. So be sure to remove the (Unreleased) and SNAPSHOT from the version. As especially when switching a lot between different branches, it is recommended to do a clean checkout of the repository. Otherwise, a lot of directories can be left over, which would be included in the source-release zip. In order to prepare a release-candidate, the first step is switching to the corresponding release-branch. Again, just in case you missed the first warning: Be sure to ensure you have switched to the release branch before continuing. After that, the following command will to all preparation steps for the release: mvn release:prepare In general the plugin will now ask you 3 questions: The version we want to release as (It will suggest the version you get by omitting the -SNAPSHOT suffix, keep it as it is) The name of the tag the release commit will be tagged with in the SCM (Name it releases/code-generation/{release-version} (releases/code-generation/{code-generation-full-version} in our case) The next development version (The version present in the pom after the release) (leave it as it is suggested by the plugin) Usually for 1 and 3 the defaults are just fine, make sure the tag name is correct as this usually is different. However, it is important to check that nowhere else SNAPSHOT versions are referenced. What the plugin now does, is automatically to execute the following operations: Check we aren’t referencing any SNAPSHOT dependencies. Update all pom versions to the release version. Run a build with all tests Commit the changes (commit message: [maven-release-plugin] prepare release releases/code-generation/{code-generation-full-version}) Push the commit Tag the commit Update all poms to the next development version. Commit the changes (commit message: [maven-release-plugin] prepare for next development iteration) Push the commit However, this just prepared the git repository for the release, we have to perform the release to produce and stage the release artifacts. Please verify the git repository at: https://gitbox.apache.org/repos/asf?p=plc4x-build-tools.git is in the correct state. Please select the release branch and verify the commit log looks similar to this It is important that the commit with the message \"[maven-release-plugin] prepare release releases/code-generation/{code-generation-full-version}\" is tagged with the release tag (in this case releases/code-generation/{code-generation-full-version}) If you check the commit itself, it should mainly consist of version updates like this: The root pom has a few more changes, but in general this should be what you are seeing. After that should come a second commit: This now updates the versions again, but this time from the release version to the one we selected for the next development iteration (in this case {code-generation-bugfix-version}-SNAPSHOT) If the commit history doesn’t look like this, something went wrong. If something goes wrong, you can always execute: mvn release:rollback And it will change the versions back and commit and push things. However, it will not delete the tag in GIT (locally and remotely). So you have to do that manually or use a different tag next time. This is done by executing another goal of the maven-release-plugin: mvn release:perform This executes automatically as all information it requires is located in the release.properties file the prepare-goal prepared. The first step is that the perform-goal checks out the previously tagged revision into the root modules target/checkout directory. Here it automatically executes a maven build (You don’t have to do this, it’s just that you know what’s happening): mvn clean deploy -P apache-release As the apache-release profile is activated, this builds and tests the project as well as creates the JavaDocs, Source packages and signs each of these with your PGP key. As this time the build is building with release versions, Maven will automatically choose the release url for deploying artifacts. The way things are set up in the apache parent pom, is that release artifacts are deployed to a so-called staging repository. You can think of a staging repository as a dedicated repository created on the fly as soon as the first artifact comes in. After the build you will have a nice and clean Maven repository at https://repository.apache.org/ that contains only artifacts from the current build. After the build it is important to log in to Nexus at https://repository.apache.org/, select Staging Repositories and find the repository with the name: orgapacheplc4x-{somenumber}. Select that and click on the Close button. Now Nexus will do some checks on the artifacts and check the signatures. As soon as it’s finished, we are done on the Maven side and ready to continue with the rest of the release process. A release build also produces a so-called source-assembly zip. This contains all sources of the project and will be what’s actually the release from an Apache point of view and will be the thing we will be voting on. This file will also be signed and SHA512 hashes will be created. Each new release and release-candidate has to be staged in the Apache SVN under: https://dist.apache.org/repos/dist/dev/plc4x/ The directory structure of this directory is as follows: ./KEYS ./build-tools/code-generation/{code-generation-full-version} ./build-tools/code-generation/{code-generation-full-version}/rc1 ./build-tools/code-generation/{code-generation-full-version}/rc1/README ./build-tools/code-generation/{code-generation-full-version}/rc1/RELEASE_NOTES ./build-tools/code-generation/{code-generation-full-version}/rc1/apache-plc4x-code-generation-{code-generation-full-version}-source-release.zip ./build-tools/code-generation/{code-generation-full-version}/rc1/apache-plc4x-code-generation-{code-generation-full-version}-source-release.zip.asc ./build-tools/code-generation/{code-generation-full-version}/rc1/apache-plc4x-code-generation-{code-generation-full-version}-source-release.zip.sha512 I usually prepare exactly the same directory structure, starting with the {code-generation-full-version} locally and then just import everything using the following command: svn import {code-generation-full-version} https://dist.apache.org/repos/dist/dev/plc4x/build-tools/code-generation/{code-generation-full-version} -m\"Staging of rc1 of PLC4X Build-Tools (Code-Generation) {code-generation-full-version}\" The KEYS file contains the PGP public key which belongs to the private key used to sign the release artifacts. If this is your first release be sure to add your key to this file. For the format have a look at the file itself. It should contain all the information needed. Be sure to stage exactly the README and RELEASE_NOTES files contained in the root of your project. Ideally you just copy them there from there. The three -source-release.zip artifacts should be located in the directory: code-generation/target/checkout/code-generation/target So, after committing these files to SVN, you are ready to start the vote. After staging the release candidate in the Apache SVN, it is time to actually call out the vote. For this we usually send two emails. The following would be the one used to do our first TLP release: E-Mail Topic: [VOTE] Apache PLC4X Build-Tools Code-Generation {code-generation-full-version} RC1 Message: Apache PLC4X Build-Tools Code-Generation {code-generation-full-version} has been staged under [2] and it’s time to vote on accepting it for release. All Maven artifacts are available under [1]. Voting will be open for 72hr. A minimum of 3 binding +1 votes and more binding +1 than binding -1 are required to pass. Repository: https://gitbox.apache.org/repos/asf/plc4x-build-tools.git Release tag: releases/code-generation/{code-generation-full-version} Hash for the release tag: {replacethiswiththerealgitcommittag} Per [3] \"Before voting +1 PMC members are required to download the signed source code package, compile it as provided, and test the resulting executable on their own platform, along with also verifying that the package meets the requirements of the ASF policy on releases.\" You can achieve the above by following [4]. [ ] +1 accept (indicate what you validated - e.g. performed the non-RM items in [4]) [ ] -1 reject (explanation required) [1] https://repository.apache.org/content/repositories/orgapacheplc4x-{somefourdigitnumber} [2] https://dist.apache.org/repos/dist/dev/plc4x/build-tools/code-generation/{code-generation-full-version}/rc1/ [3] https://www.apache.org/dev/release/validation.html#approving-a-release [4] https://plc4x.apache.org/developers/release/validation.html As it is sometimes to do the vote counting, if voting and discussions are going on in the same thread, we send a second email: E-Mail Topic: [DISCUSS] Apache PLC4X Build-Tools Code-Generation {code-generation-full-version} RC1 Message: This is the discussion thread for the corresponding VOTE thread. Please keep discussions in this thread to simplify the counting of votes. If you have to vote -1 please mention a brief description on why and then take the details to this thread. Now we have to wait 72 hours till we can announce the result of the vote. This is an Apache policy to make it possible for anyone to participate in the vote, no matter where that person lives and not matter what weekends or public holidays might currently be. The vote passes, if at least 3 +1 votes are received and more +1 are received than -1. After the 72-our minimum wait period is over, and we have fulfilled the requirement of at least 3 +1 votes and more +1 than -1, a final reply is sent to the vote thread with a prefix of [RESULT] in the title in which the summary of the vote is presented in an aggregated form. E-Mail Topic: [RESULT] [VOTE] Apache PLC4X Build-Tools Code-Generation {code-generation-full-version} RC1 Message: So, the vote passes with 3 +1 votes by PMC members and one +1 vote by a non PMC member. Chris As soon as the votes are finished, and the results were in favor of a release, the staged artifacts can be released. This is done by moving them inside the Apache SVN. svn move -m \"Release Apache PLC4X {code-generation-full-version}\" \\ https://dist.apache.org/repos/dist/dev/plc4x/build-tools/code-generation/{code-generation-full-version}/rc1 \\ https://dist.apache.org/repos/dist/release/plc4x/build-tools/code-generation/{code-generation-full-version} This will make the release artifacts available and will trigger them being copied to mirror sites. This is also the reason why you should wait at least 24 hours before sending out the release notification emails. As a lot of mirrors are serving our releases, it is the Apache policy to clean old releases from the repo if newer versions are released. This can be done like this: svn delete https://dist.apache.org/repos/dist/release/plc4x/0.3.0/ -m\"deleted version 0.3.0\" After this, https://dist.apache.org/repos/dist/release/plc4x should only contain the latest release directory. The probably simplest part is releasing the Maven artifacts. In order to do this, the release manager logs into Nexus at https://repository.apache.org/, selects the staging repository and clicks on the Release button. This will move all artifacts into the Apache release repository and delete the staging repository after that. All release artifacts released to the Apache release repo, will automatically be synced to Maven central. The `release branch should always point to the last released version. This has to be done with git git checkout release git merge releases/code-generation/{code-generation-full-version} When there are conflicts it could help to use the theirs merge strategy, i.e., git merge -X theirs releases/code-generation/{code-generation-full-version} Possibly a manual conflict resolution has to be done afterwards. After that, changes need to be pushed. In contrast to main releases of PLC4X we won’t do any JIRA version updates, updating of the download page or notifying of the world email to announce@apache.org So now you’re done. Congrats!","title":"Releasing PLC4X Build-Tools","component":"plc4x","version":"latest","name":"build-tools","url":"/plc4x/latest/developers/release/build-tools.html","titles":[{"text":"Creating a release branch (For the code-generation module)","hash":"_creating_a_release_branch_for_the_code_generation_module","id":1},{"text":"Preparing develop for the next iteration","hash":"_preparing_develop_for_the_next_iteration","id":2},{"text":"Release stabilization phase","hash":"_release_stabilization_phase","id":3},{"text":"Preparing a release","hash":"_preparing_a_release","id":4},{"text":"What if something goes wrong?","hash":"_what_if_something_goes_wrong","id":5},{"text":"Performing a release","hash":"_performing_a_release","id":6},{"text":"Staging a release","hash":"_staging_a_release","id":7},{"text":"Starting a vote on the mailing list","hash":"_starting_a_vote_on_the_mailing_list","id":8},{"text":"Releasing after a successful vote","hash":"_releasing_after_a_successful_vote","id":9},{"text":"Cleaning up older release versions","hash":"_cleaning_up_older_release_versions","id":10},{"text":"Releasing the Maven artifacts","hash":"_releasing_the_maven_artifacts","id":11},{"text":"Merge back release version to release branch","hash":"_merge_back_release_version_to_release_branch","id":12}]},"196":{"id":196,"text":"","title":"Releasing and Validating Releases","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/developers/release/index.html","titles":[]},"197":{"id":197,"text":"Please be sure to execute the release with a Java version 11 or the Karaf feature tests will not run. Update the RELEASE_NOTES Check year in NOTICE Create release branch: mvn release:branch -P with-c,with-dotnet,with-go,with-java,with-python,with-sandbox,enable-all-checks -DbranchName=rel/{current-short-version} Add a new section to the RELEASE_NOTES on develop Prepare the release: mvn release:prepare -P with-c,with-dotnet,with-go,with-java,with-python,with-sandbox,enable-all-checks Perform the release: mvn clean release:perform Close the staging repo on Nexus Stage the release artifacts in SVN Vote on the mailing list Move RC to the release section of SVN Remove old releases in SVN Release staging repo on Nexus Add the version to the DOAP file on develop Update Download site Update Jira Merge back release version to release branch Send announce email Be sure you are using a JDK and not a JRE, or the release will fail because the release can’t execute the javadoc executable. As part of the release process, Maven will upload maven release artifacts to a so-called staging repository. This can be thought of as an ad-hoc Maven repository that contains only the artifacts for one release. This helps reviewers to see what’s in the convenience maven package and to release that to the public repos with one click. In order to be allowed to upload artifacts, your account has to be enabled for this, and you have to tell Maven about your credentials. In order to do this, you should provide these credentials via .m2/settings.xml. So if you don’t already have one, you should create a .m2 directory in your user home and inside that create a settings.xml file with at least this content: apache.snapshots.https {user-id} {user-pass} apache.releases.https {user-id} {user-pass} This tells maven to use above credentials as soon as a repository with the id apache.snapshots.https or apache.releases.https is being used. For a release all you need is the releases repo, but it is good to have the other in place as it enables you to also deploy SNAPSHOTs from your system. There repos are defined in the apache parent pom and is identical for all Apache projects. Additionally, all artifacts are automatically signed by the release build. In order to be able to do this you need to set up GPG. The key being used to sign the artifacts will have to be linked to your Apache E-Mail ({apache-id}@apache.org) and verified by at least one fellow Apache committer (Ideally more) that have trusted keys themselves. Usually for this you have to get in touch - in real life - with any Apache committer with a trusted key. Attending an ApacheCon is usually a great way to do this as usually every ApacheCon has a Key Signing event in its schedule. He can then sign your key and hereby enable you to sign Apache release artifacts. There’s a detailed description here. However, in contrast to that documentation, upload your key to the following servers: pool.sks-keyservers.net and keyserver.ubuntu.com as these are the ones Nexus is checking. If you happen to have multiple keys, adding the following profile to your settings.xml should help: apache-release 5C60D6B9 true topsecret-password Currently, there is a Java-Version sweet-spot for being able to release all modules and that is Java 11. So be sure to set Java 11 as the java version used to do the release. Also, at least Maven 3.6 is required for CMake. Ideally use the Maven-Wrapper to ensure the Maven version fits the build. On some systems (mainly Mac) gpg signing can result in errors like: [INFO] --- maven-gpg-plugin:3.0.1:sign (sign-release-artifacts) @ plc4x-parent --- gpg: signing failed: Inappropriate ioctl for device In this case adding the following helps: export GPG_TTY=$(tty) Usually you will have to update the RELEASE_NOTES document to the new version. I would suggest doing this prior to the branch as otherwise you will definitely have to port it back to develop. So remove the SNAPSHOT and (Unreleased) markers from the file and add missing parts. Also, if you are doing the first release in a new year, it is advisable to search for the old year and check if any occurrences are ok the way they are. Usually the NOTICE file has to be adjusted. According to SemVer, we have: Major, Minor and Bugfix releases. For each new Major and Minor release we create a new branch at the beginning of a code-freeze phase. So if currently the project version in develop is {current-full-version}-SNAPSHOT, we create a branch rel/{current-short-version}. When creating the branch is exactly the moment in which the version in develop is incremented to the next minor version. This can and should be automated by the maven-release-plugin. Per default the plugin will ask for the working copy version during the build execution. This is the version the develop branch will be changed to. In contrast to normal builds, it is important to enable all profiles when creating the branch as only this way will all modules versions be updated. Otherwise, the non-default modules on develop will reference the old version which will cause problems when building. mvn release:branch -P with-c,with-dotnet,with-go,with-java,with-python,with-sandbox,enable-all-checks -DbranchName=rel/{minor-version} Per default the plugin suggests the next bugfix version as working version, however we want it to use the next minor version. So in case of preparing the release branch for {current-full-version}-SNAPSHOT the command would be the following: mvn release:branch -P with-c,with-dotnet,with-go,with-java,with-python,with-sandbox,enable-all-checks -DbranchName=rel/{current-short-version} The plugin will then aks for the version: What is the new working copy version for \"PLC4X\"? (org.apache.plc4x:plc4x-parent) {current-next-incremental-version}-SNAPSHOT: : {current-next-minor-version}-SNAPSHOT Here the suggested default has to be manually overridden. This step now should perform quite quickly as no build and no tests are involved. However, in the end the versions of the develop branch are updated and a new rel/{current-short-version} branch is created. Now is a good time to add a new section to the RELEASE_NOTES document for the new SNAPSHOT version. Here comes a template: ============================================================== (Unreleased) Apache PLC4X {current-next-minor-version}-SNAPSHOT ============================================================== New Features ------------ Incompatible changes -------------------- Bug Fixes --------- // Rest of the file Also be sure to do a quick full-text-search to check if the version was updated correctly everywhere. If you find anything here, you will need to pay attention during the release. Now usually comes a phase in which last tests and checks should be performed. If any problems are found, they have to be fixed in the release branch. Changes should either be re applied in develop or cherry-picked, however merging things back can cause a lot of problems, and we no longer have the same versions. Same as with creating the branch it is important to enable all profiles when creating the branch as only this way will all modules versions be updated. Otherwise, the non-default modules on develop will reference the old version which will cause problems when building. For people building with some additional profiles from the source release will be impossible. As especially when switching a lot between different branches, it is recommended to do a clean checkout of the repository. Otherwise, a lot of directories can be left over, which would be included in the source-release zip. In order to prepare a release-candidate, the first step is switching to the corresponding release-branch. After that, the following command will to all preparation steps for the release: mvn release:prepare -P with-c,with-dotnet,with-go,with-java,with-python,with-sandbox,enable-all-checks (The -P with-c,with-dotnet,with-go,with-java,with-python,with-sandbox,enable-all-checks tells maven to activate the all profiles that partition the build and makes sure the versions of all modules are updated as part of the release) In general the plugin will now ask you 3 questions: The version we want to release as (It will suggest the version you get by omitting the -SNAPSHOT suffix) The name of the tag the release commit will be tagged with in the SCM (Name it v{release-version} (v{current-full-version} in our case) The next development version (The version present in the pom after the release) ({current-next-bugfix-version} in our case) Usually for 1 and 3 the defaults are just fine, make sure the tag name is correct as this usually is different. What the plugin now does, is automatically execute the following operations: Check we aren’t referencing any SNAPSHOT dependencies. Update all pom versions to the release version. Run a build with all tests Commit the changes (commit message: [maven-release-plugin] prepare release v{current-full-version}) Push the commit Tag the commit Update all poms to the next development version. Commit the changes (commit message: [maven-release-plugin] prepare for next development iteration) Push the commit However, this just prepared the git repository for the release, we have to perform the release to produce and stage the release artifacts. Please verify the git repository at: https://gitbox.apache.org/repos/asf?p=plc4x.git is in the correct state. Please select the release branch and verify the commit log looks similar to this It is important that the commit with the message \"[maven-release-plugin] prepare release v{release-version}\" is tagged with the release tag (in this case v{current-full-version}) If you check the commit itself, it should mainly consist of version updates like this: The root pom has a few more changes, but in general this should be what you are seeing. After that should come a second commit: This now updates the versions again, but this time from the release version to the one we selected for the next development iteration (in this case 0.3.1-SNAPSHOT) If the commit history doesn’t look like this, something went wrong. If something goes wrong, you can always execute: mvn release:rollback -P with-c,with-dotnet,with-go,with-java,with-python,with-sandbox,enable-all-checks It will change the versions back and commit and push things. Also, should you check if you have any uncommitted changes (as our code-generation can make git think they are \"dirty\") However, it will not delete the tag in GIT (locally and remotely). So you have to do that manually or use a different tag next time. This is done by executing another goal of the maven-release-plugin: mvn clean release:perform The clean is only for making sure there is no artifacts in target directly, but only in target/checkout/target. This executes automatically as all information it requires is located in the release.properties file the prepare-goal prepared. The first step is that the perform-goal checks out the previously tagged revision into the root modules target/checkout directory. Here it automatically executes a maven build (You don’t have to do this, it’s just that you know what’s happening): mvn deploy -P apache-release As the apache-release profile is also activated, this builds and tests the project as well as creates the JavaDocs, Source packages and signs each of these with your PGP key. We are intentionally not adding the other profiles, as these either produce binary artifacts that usually only work on the system they were compiled on (C++, .Net) or we haven’t found a good way to distribute them via Maven yet (Python) or deployment is disabled anyway (sandbox). As this time the build is building with release versions, Maven will automatically choose the release url for deploying artifacts. The way things are set up in the apache parent pom, is that release artifacts are deployed to a so-called staging repository. You can think of a staging repository as a dedicated repository created on the fly as soon as the first artifact comes in. After the build you will have a nice and clean Maven repository at https://repository.apache.org/ that contains only artifacts from the current build. After the build it is important to log in to Nexus at https://repository.apache.org/, select Staging Repositories and find the repository with the name: orgapacheplc4x-{somenumber}. Select that and click on the Close button. Now Nexus will do some checks on the artifacts and check the signatures. As soon as it’s finished, we are done on the Maven side and ready to continue with the rest of the release process. A release build also produces a so-called source-assembly zip. This contains all sources of the project and will be what’s actually the release from an Apache point of view and will be the thing we will be voting on. This file will also be signed and SHA512 hashes will be created. Each new release and release-candidate has to be staged in the Apache SVN under: https://dist.apache.org/repos/dist/dev/plc4x/ The directory structure of this directory is as follows: ./KEYS ./{current-full-version}/ ./{current-full-version}/rc1 ./{current-full-version}/rc1/README ./{current-full-version}/rc1/RELEASE_NOTES ./{current-full-version}/rc1/apache-plc4x-{current-full-version}-source-release.zip ./{current-full-version}/rc1/apache-plc4x-{current-full-version}-source-release.zip.asc ./{current-full-version}/rc1/apache-plc4x-{current-full-version}-source-release.zip.sha512 You can generally import the stuff, by preparing a directory structure like above locally and then using svn import to do the importing: cd ./{current-full-version} svn import rc1 https://dist.apache.org/repos/dist/dev/plc4x/{current-full-version}/rc1 -m\"Staging of rc1 of PLC4X {current-full-version}\" The KEYS file contains the PGP public key which belongs to the private key used to sign the release artifacts. If this is your first release be sure to add your key to this file. For the format have a look at the file itself. It should contain all the information needed. Be sure to stage exactly the README and RELEASE_NOTES files contained in the root of your project. Ideally you just copy them there from there. All three -source-relese.zip artifacts should be located in the directory: target/checkout/target After committing these files to SVN you are ready to start the vote. After staging the release candidate in the Apache SVN, it is time to actually call out the vote. For this we usually send two emails. The following would be the one used to do our first TLP release: E-Mail Topic: [VOTE] Apache PLC4X {current-full-version} RC1 Message: Apache PLC4X {current-full-version} has been staged under [2] and it’s time to vote on accepting it for release. All Maven artifacts are available under [1]. Voting will be open for 72hr. A minimum of 3 binding +1 votes and more binding +1 than binding -1 are required to pass. Release tag: v{current-full-version} Hash for the release tag: {replacethiswiththerealgitcommittag} Per [3] \"Before voting +1 PMC members are required to download the signed source code package, compile it as provided, and test the resulting executable on their own platform, along with also verifying that the package meets the requirements of the ASF policy on releases.\" You can achieve the above by following [4]. [ ] +1 accept (indicate what you validated - e.g. performed the non-RM items in [4]) [ ] -1 reject (explanation required) [1] https://repository.apache.org/content/repositories/orgapacheplc4x-{somefourdigitnumber} [2] https://dist.apache.org/repos/dist/dev/plc4x/{current-full-version}/rc1 [3] https://www.apache.org/dev/release.html#approving-a-release [4] https://cwiki.apache.org/confluence/display/PLC4X/Validating+a+staged+Release As it is sometimes to do the vote counting, if voting and discussions are going on in the same thread, we send a second email: E-Mail Topic: [DISCUSS] Apache PLC4X {current-full-version} RC1 Message: This is the discussion thread for the corresponding VOTE thread. Please keep discussions in this thread to simplify the counting of votes. If you have to vote -1 please mention a brief description on why and then take the details to this thread. Now we have to wait 72 hours till we can announce the result of the vote. This is an Apache policy to make it possible for anyone to participate in the vote, no matter where that person lives and not matter what weekends or public holidays might currently be. The vote passes, if at least 3 +1 votes are received and more +1 are received than -1. After the 72-hour minimum wait period is over and we have fulfilled the requirement of at least 3 +1 votes and more +1 than -1, a final reply is sent to the vote thread with a prefix of [RESULT] in the title in which the summary of the vote is presented in an aggregated form. E-Mail Topic: [RESULT] [VOTE] Apache PLC4X {current-full-version} RC1 Message: So, the vote passes with {number of +1 votes} +1 votes by PMC members {number of +1 votes from non-pmc members} +1 vote by a non PMC member. As soon as the votes are finished, and the results were in favor of a release, the staged artifacts can be released. This is done by moving them inside the Apache SVN. svn move -m \"Release Apache PLC4X {current-full-version}\" \\ https://dist.apache.org/repos/dist/dev/plc4x/{current-full-version}/rc1 \\ https://dist.apache.org/repos/dist/release/plc4x/{current-full-version} This will make the release artifacts available and will trigger them being copied to mirror sites. This is also the reason why you should wait at least 24 hours before sending out the release notification emails. If however for some reason it is needed to prepare a new RC for the release. Please follow these steps: Set the versions of the release branch to the previous version by using the versions:set plugin: mvn versions:set -DprocessAllModules=true -P with-c,with-dotnet,with-go,with-java,with-python,with-sandbox,enable-all-checks Delete the tag locally: git tag -d v{current-full-version} Delete the tag remotely: git push --delete origin v{current-full-version} Commit all changes Drop the staging repo at https://repository.apache.org Delete the previous RC in SVN svn rm https://dist.apache.org/repos/dist/dev/plc4x/0.9.0/rc1 -m\"Removed rc1 of PLC4x 0.9.0\" Reply to the VOTE and the DISCUSS announcing the vote has been cancelled and explain why and that you’re going to start a new RC soon. Ideally prefix the title of the Emails with [CANCELLED] After this you should be ready to start a new RC. As a lot of mirrors are serving our releases, it is the Apache policy to clean old releases from the repo if newer versions are released. This can be done like this: svn delete https://dist.apache.org/repos/dist/release/plc4x/{current-full-version}/ -m\"deleted version {current-full-version}\" After this https://dist.apache.org/repos/dist/release/plc4x should only contain the latest release directory. Probably the simplest part is releasing the Maven artifacts. In order to do this, the release manager logs into Nexus at https://repository.apache.org/, selects the staging repository and clicks on the Release button. This will move all artifacts into the Apache release repository and delete the staging repository after that. All release artifacts released to the Apache release repo, will automatically be synced to Maven central. Now that the release is out, in the develop branch, update the DOAP file for plc4x. This is found at: src/site/resources-filtered/plc4x-doap.rdf Please add the just released version to the top of the versions. This file is needed for Apache’s tooling to automatically keep track of project release activity, and we use this internally too to automatically update the documentation to always reference the latest released version automatically. The release branch should always point to the last released version. This has to be done with git git checkout release git merge v{current-full-version} When there are conflicts it could help to use the theirs merge strategy, i.e., git merge -X theirs v{current-full-version} Possibly a manual conflict resolution has to be done afterwards. After that, changes need to be pushed. Set the released version to \"released\" and set the \"release-date\" Add the next version to the versions. The URL http://plc4x.apache.org/users/download.html has to be changed, and the current release has to be listed there. This is done by changing the download.adoc under src/site/users/ (in the develop branch, as this is where the site is generated from!) Copy the last release down to Previous Releases Point the download links of the last release to archive, e.g. http://archive.apache.org/dist/plc4x/{current-full-version}/apache-plc4x-{current-full-version}-source-release.zip Add the new Release under Current Releases and change all links. Note: Please add an anchor for the toc Update the sections for the changes according to the RELEASE_NOTES from the release Note: Transfer all to ascii-doc notation to ensure correct rendering of the site Also remove the JIRA TICKET ids in Front Make sure you have given the Apache mirrors time to fetch the release files by waiting at least 24 hours after moving the release candidate to the release part of the SVN. After that it is time to announce your release to the world: From: your apache email address To: announce@apache.org CC: dev@plc4x.apache.org E-Mail Topic: [ANNOUNCE] Apache PLC4X {current-full-version} released Message: The Apache PLC4X team is pleased to announce the release of Apache PLC4X {current-full-version} PLC4X is a set of libraries for communicating with industrial programmable logic controllers (PLCs) using a variety of protocols but with a shared API. The current release contains drivers able to communicate with industrial PLCs using one of the following protocols: * AB-ETH * Beckhoff ADS * CanOpen * EtherNet/IP / EIP * Firmata * KNXNet/IP * Modbus * OPC UA * Siemens S7 (0x32) Beyond that we also provide integration modules for the following Apache projects and frameworks: * Apache Calcite * Apache Camel * Apache Edgent (Incubating / Retired) * Apache Kafka (Kafka Connect) * Apache NiFi * Logstash It also provides an `OPC UA Server` which can act as a bridge between legacy systems and OPC UA. Visit the Apache PLC4X website [1] for general information or the downloads page [2] for release notes and download information. Regards, The Apache PLC4X team [1] http://plc4x.apache.org [2] http://plc4x.apache.org/users/download.html It is important to note that you have to send this email from your apache email address, or it will be rejected. This wasn’t very simple for me to set up. A general description can be found here: https://reference.apache.org/committer/email Here’s what I did in Google Mail to allow sending of emails: https://gmail.googleblog.com/2009/07/send-mail-from-another-address-without.html Note … you will be able to select the alternate sending address if you click into the recipients line of a new email (Not very intuitive). After that email is out the door, you’re done. Congrats!","title":"Releasing PLC4X","component":"plc4x","version":"latest","name":"release","url":"/plc4x/latest/developers/release/release.html","titles":[{"text":"TL/DR","hash":"_tldr","id":1},{"text":"Preparing your system for being able to release","hash":"_preparing_your_system_for_being_able_to_release","id":2},{"text":"Preparing the codebase for a release","hash":"_preparing_the_codebase_for_a_release","id":3},{"text":"Creating a release branch","hash":"_creating_a_release_branch","id":4},{"text":"Preparing develop for the next iteration","hash":"_preparing_develop_for_the_next_iteration","id":5},{"text":"Release stabilization phase","hash":"_release_stabilization_phase","id":6},{"text":"Preparing a release","hash":"_preparing_a_release","id":7},{"text":"What if something goes wrong?","hash":"_what_if_something_goes_wrong","id":8},{"text":"Performing a release","hash":"_performing_a_release","id":9},{"text":"Staging a release","hash":"_staging_a_release","id":10},{"text":"Starting a vote on the mailing list","hash":"_starting_a_vote_on_the_mailing_list","id":11},{"text":"Releasing after a successful vote","hash":"_releasing_after_a_successful_vote","id":12},{"text":"Going back for a new release candidate","hash":"_going_back_for_a_new_release_candidate","id":13},{"text":"Cleaning up older release versions","hash":"_cleaning_up_older_release_versions","id":14},{"text":"Releasing the Maven artifacts","hash":"_releasing_the_maven_artifacts","id":15},{"text":"Add the version to the DOAP file","hash":"_add_the_version_to_the_doap_file","id":16},{"text":"Merge back release version to release branch","hash":"_merge_back_release_version_to_release_branch","id":17},{"text":"Updating Jira","hash":"_updating_jira","id":18},{"text":"Update the download site","hash":"_update_the_download_site","id":19},{"text":"Notifying the world","hash":"_notifying_the_world","id":20}]},"198":{"id":198,"text":"On MacOS and Linux the first 4 steps can be automated. For details please read the section about tooling after this chapter. Download all staged artifacts under the url specified in the release vote email into a directory we’ll now call download-dir. Verify the signature is correct: Additional Apache tutorial on how to verify downloads can be found here. gpg --verify apache-plc4x-{current-full-version}-source-release.zip.asc apache-plc4x-#{current-full-version}-source-release.zip Check if the check is successful. Check if the signature references an Apache email address. Verify the SHA512 hashes: Mac/Linux: shasum -a512 apache-plc4x-{current-full-version}-source-release.zip Windows (PowerShell): Get-FileHash -Algorithm SHA512 .\\apache-plc4x-code-generation-{current-full-version}-source-release.zip | Format-List Unzip the archive: unzip apache-plc4x-{current-full-version}-source-release.zip Verify the existence of LICENSE, NOTICE, README, RELEASE_NOTES files in the extracted source bundle. Verify the content of LICENSE, NOTICE, README, RELEASE_NOTES files in the extracted source bundle. (Especially pay attention to the year in the NOTICE file if this is the first release of the year) [RM] Verify the staged source README, RELEASE_NOTE files correspond to those in the extracted source bundle. [RM] Run RAT externally to ensure there are no surprises. java -jar apache-rat-0.13.jar apache-plc4x-{current-full-version}-source-release.zip > rat.log Search for SNAPSHOT references: find . -type f -name 'pom.xml' -exec grep -l \"SNAPSHOT\" {} \\; Especially in the sandbox there may be parts that are not formally released, SNAPSHOT versions in the sandbox therefore should not result in a -1 vote … in the other parts however they should. Search for Copyright references, and if they are in headers, make sure these files containing them are mentioned in the LICENSE file. Build the project according to the information in the README.md file. [RM] Build the project with all with-xyz profiles and tests enabled and an empty maven local repo: by appending -Dmaven.repo.local=../.m2 (On windows use -D\"maven.repo.local\"=\"../.m2\"). Even if we are using RAT to ensure sources have headers in place, still the project can contain exclusions that hide things from the check. The only way to avoid missing important files is by running RAT externally. If you haven’t got it, yet please download it form here. Also do I like to run RAT against the zip archive containing the source release as this way you avoid the problem of eventually scanning the binaries produced by the build (If you run RAT after building, it will complain about every jar and ever class file). java -jar apache-rat-0.13.jar apache-plc4x-{current-full-version}-source-release.zip > rat.log By piping the result into a text file gives you the chance to investigate the content more easily. In the tools directory we have a little script that can help with downloading and checking the hashes and signatures automatically. In order to execute this, please change directories into the projects base directory and execute the following command: tools/download_staged_release.sh {current-full-version} 1 This will download all the files into a directory: downloaded-plc4x-{current-full-version}1. After that it will calculate the SHA512 hash and compare it with the staged hash. Last not least it will validate the PGP key and print out some information on it. +1/-1 (binding) Name [] Download all staged artifacts under the url specified in the release vote email. [] Verify the signature is correct. [] Check if the signature references an Apache email address. [] Verify the SHA512 hashes. [] Unzip the archive. [] Verify the existence of LICENSE, NOTICE, README, RELEASE_NOTES files in the extracted source bundle. [] Verify the content of LICENSE, NOTICE, README, RELEASE_NOTES files in the extracted source bundle. [] [RM] Verify the staged source README, RELEASE_NOTE files correspond to those in the extracted source bundle. [] [RM] Run RAT externally to ensure there are no surprises. [] Search for SNAPSHOT references [] Search for Copyright references, and if they are in headers, make sure these files containing them are mentioned in the LICENSE file. [] Build the project according to the information in the README.md file. [] [RM] Build the project with all with-xyz profiles and tests enabled and an empty maven local repo. If everything is ok, I put \"OK\" int the square brackets. If there are minor issues, I put \"MINOR\" in there and, if it’s a short reason, I put an explanation at the end of the line. If it’s longer I put a longer section after the checklist. If there are major issues, I put \"FAIL\" in there and comment the same way as with minor issues.","title":"Validating a staged release","component":"plc4x","version":"latest","name":"validation","url":"/plc4x/latest/developers/release/validation.html","titles":[{"text":"Using RAT","hash":"_using_rat","id":1},{"text":"Release Tooling","hash":"_release_tooling","id":2},{"text":"Template for the email for voting","hash":"_template_for_the_email_for_voting","id":3}]},"199":{"id":199,"text":"Currently the build generates the serializers and parsers from a provided mspec specification. A typical full round-trip test for the model, parsers and serializers would look as follows: Starting from a byte array The parser is used to parse the byte array The parsed model instance is compared with an expected model If the expected model matched the expected one the model is serialized back to a byte array The resulting byte array is compared to the original byte array If the byte arrays are identical, the round-trip is regarded ok Doing this manually would require a lot of manual object construction and validation, so we created a framework for creating such tests. As XML, no matter what you think about it, allows simple and easy readable descriptions these tests are provided as XML files. All generated model classes allow parsing and serializing to XML via Jackson. A typical test looks like this: Read Input Registers Request 000000000006ff0408d20002 ModbusTcpADU false 0 255 2258 2 As you can see, the name provides a simple human readable name for the test which is used for reporting success and failure. The raw element contains the hex-representation of the binary input. After that the root-type specifies the base type used for parsing this data. In above example the test will use the ModbusTcpADUIO.serialize and ModbusTcpADUIO.parse methods for serializing and parsing. Some parsers require additional parameters for parsing. In above example the Modbus protocol can’t decide if something is a request or response from the data itself, so we have to pass that information in using a parser-arguments argument. The final element is the xml element, which contains the XML representation of the parsed object. Each test implements exactly the test-strategy sketched above, however for comparing the parsed and the expected model, we use XMLUint to serialize the parsed model to XML and compare that to the given XML in the test-case declaration. Multiple tests are usually wrapped into a testsuite document. In general this is just a container with a given testsuite name and a number of testcase elements. One important setting however controls the endianness of the protocol in general. This is controlled with a bigEndian attribute in the testsuite root element. An example testsuite document looks as follows: Allen-Bradley DF1 ... ... ... ... All logic is implemented in the plc4j-utils-test-utils module, so make sure to add the following test-dependency: org.apache.plc4x plc4j-utils-test-utils {project.version} test In order to run these tests as part of the build, as a last step we need to create a test-runner class. This is generally just a hand-full of boilerplate code, telling the test which document to use for testing. Following code snippet sort of looks the same for every testsuite: package org.apache.plc4x.java.modbus; import org.apache.plc4x.test.parserserializer.ParserSerializerTestsuiteRunner; public class ModbusIOTest extends ParserSerializerTestsuiteRunner { public ModbusIOTest() { super(\"/testsuite/ModbusTestsuite.xml\"); } } Here the document ModbusTestsuite.xml is located in the directory: src/test/resources/testsuite/.","title":"Testing Serializers and Parsers","component":"plc4x","version":"latest","name":"testing-serializers-and-parsers","url":"/plc4x/latest/developers/tutorials/testing-serializers-and-parsers.html","titles":[{"text":"Structure of a test","hash":"_structure_of_a_test","id":1},{"text":"Structure of a testsuite","hash":"_structure_of_a_testsuite","id":2},{"text":"The Junit runner","hash":"_the_junit_runner","id":3}]},"200":{"id":200,"text":"","title":"Tutorials","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/developers/tutorials/index.html","titles":[]},"201":{"id":201,"text":"The general pipeline for a Protocol looks like the following: A driver has the task to assemble the pipeline for the protocol(s).","title":"Basic Building Blocs of a Driver / Protocol","component":"plc4x","version":"latest","name":"writing-driver","url":"/plc4x/latest/developers/tutorials/writing-driver.html","titles":[]},"202":{"id":202,"text":"For the Freemarker language output we are using an unmodified version of Apache Freemarker to generate output. The boilerplate code for providing a PLC4X language module is located in the org.apache.plc4x.plugins:plc4x-code-generation-language-base-freemarker maven module, inside the FreemarkerLanguageOutput class. This class configures a Freemarker context and provides standardized attributes inside this: packageName: Java style package name which can be used to create some form of directory structure. typeName: Simple string type name type: ComplexTypeDefinition instance containing all the information for the type that code should be generated for. helper: As some times it is pretty complicated to create all the output in Freemarker, the helper allows to provide code that is used by the template that help with generating output. A Freemarker-based output module, has to provide a set of Template instances as well as provide a FreemarkerLanguageTemplateHelper instance. In general, we distinguish between these types of templates: Spec Templates (Global output generated once per driver in total) Complex Type Templates (Generates output for a complex type) Enum Templates (Generates output for enum types) DataIO Templates (Generates output for reading and writing PlcValues, which are our PLC4X form of presenting input and output data to our users) For each of these, the developer can provide a list of templates, which then can generate multiple files per type (Which is important for languages such as C where for every type we need to generate a Header file (.h) and an Implementation (.c)) What the FreemarkerLanguageOutput then does, is iterate over all types provided by the protocol module, and then iterate over all templates the current language defines. The only convention used in this utility, is that the first line of output a template generates will be treated as the path relative to the base output directory. It will automatically create all needed intermediate directories and generate the rest of the input to the file specified by the first line. If this line is empty, the output is skipped for this type. package org.apache.plc4x.language.java; import com.google.googlejavaformat.java.Formatter; import com.google.googlejavaformat.java.FormatterException; import freemarker.template.Configuration; import freemarker.template.Template; import org.apache.commons.io.FileUtils; import org.apache.plc4x.plugins.codegenerator.protocol.freemarker.FreemarkerLanguageOutput; import org.apache.plc4x.plugins.codegenerator.protocol.freemarker.FreemarkerLanguageTemplateHelper; import org.apache.plc4x.plugins.codegenerator.types.definitions.TypeDefinition; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.*; public class JavaLanguageOutput extends FreemarkerLanguageOutput { private static final Logger LOGGER = LoggerFactory.getLogger(JavaLanguageOutput.class); private final Formatter formatter = new Formatter(); @Override public String getName() { return \"Java\"; } @Override public Set supportedOptions() { return Collections.singleton(\"package\"); } @Override public List supportedOutputFlavors() { return Arrays.asList(\"read-write\", \"read-only\", \"passive\"); } @Override protected List getSpecTemplates(Configuration freemarkerConfiguration) { return Collections.emptyList(); } @Override protected List getComplexTypeTemplates(Configuration freemarkerConfiguration) throws IOException { return Arrays.asList( freemarkerConfiguration.getTemplate(\"templates/java/pojo-template.java.ftlh\"), freemarkerConfiguration.getTemplate(\"templates/java/io-template.java.ftlh\")); } @Override protected List getEnumTypeTemplates(Configuration freemarkerConfiguration) throws IOException { return Collections.singletonList( freemarkerConfiguration.getTemplate(\"templates/java/enum-template.java.ftlh\")); } @Override protected List getDataIoTemplates(Configuration freemarkerConfiguration) throws IOException { return Collections.singletonList( freemarkerConfiguration.getTemplate(\"templates/java/data-io-template.java.ftlh\")); } @Override protected FreemarkerLanguageTemplateHelper getHelper(TypeDefinition thisType, String protocolName, String flavorName, Map types, Map options) { return new JavaLanguageTemplateHelper(thisType, protocolName, flavorName, types, options); } @Override protected void postProcessTemplateOutput(File outputFile) { try { FileUtils.writeStringToFile( outputFile, formatter.formatSourceAndFixImports( FileUtils.readFileToString(outputFile, StandardCharsets.UTF_8) ), StandardCharsets.UTF_8 ); } catch (IOException | FormatterException e) { LOGGER.error(\"Error formatting {}\", outputFile, e); } } } The getName method returns Java, this is what needs to be defined in the plc4x-maven-plugin configuration in the language option in order to select this output format. supportedOptions tells the plugin which option tags this code-generation output supports. In case of the Java output, this is only the package option, which defines the package name of the generated output. With supportedOutputFlavors we tell the user, that in general we support the three options: read-write, read-only and passive as valid inputs for the outputFlavor config option of the code-generation plugin. In this case Java doesn’t require any global files being generated for java, so we simply return an empty collection. For complex types, we currently use two templates (however this will soon be reduced to one). So for every complex type in a protocol definition, the templates: templates/java/pojo-template.java.ftlh and templates/java/io-template.java.ftlh will be executed. In case of enum types, only one template is being used. Same as for data-io. The next important method is the getHelper method, which returns an object, that is passed to the templates with the name helper. As mentioned before, a lot of operations would be too complex to implement in pure Freemarker code, so with these helpers every language can provide a helper utility for handling the complex operations. Here an example for a part of a template for generating Java POJOs: ${helper.packageName(protocolName, languageName, outputFlavor)?replace(\".\", \"/\")}/${type.name}.java /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * \"License\"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package ${helper.packageName(protocolName, languageName, outputFlavor)}; ... imports ... // Code generated by code-generation. DO NOT EDIT. public abstract class ${type.name} extends ${type.parentType.name} implements Message { ... SNIP ... } So as you can see, the first line will generate the file-path of the to be generated output. As when creating more and more outputs for different languages, we have realized, that a lot of the code needed in the Helper utility repeats, we therefore introduced a so-called BaseFreemarkerLanguageTemplateHelper which contains a lot of stuff, that is important when generating new language output.","title":"Apache Freemarker","component":"plc4x","version":"latest","name":"freemarker","url":"/plc4x/latest/developers/code-gen/language/freemarker.html","titles":[{"text":"Example Java output","hash":"_example_java_output","id":1}]},"203":{"id":203,"text":"The DF1 protocol has three basic messages: a command message, acknowledge and not acknowledge. A 0x10 is used as delimiter to differentiate between the messages and parts of the command message. ACK NAK 10 06 10 15 This is what a read command message looks like in full-duplex mode using CRC as checksum: Name DLE STX DST SRC CMD STS TNS ADDR SIZE DLE ETX CRC Value 10 02 XX XX 01 00 XX XX XX XX 02 10 03 XX XX The according response with the requested byte data: Name DLE STX DST SRC CMD STS TNS DATA SIZE DLE ETX CRC Value 10 02 XX XX 41 00 XX XX XX XX 02 10 03 XX XX Every message starts with a DLE = 0x10. The second byte is used to differentiate what type of message will follow. In the case of a command message it is 0x02. DST and SRC specify the target and source of the message. CMD = 0x01 means an unprotected read is requested, the command response code is always attained with the addition of 0x40. STS is a status byte, TNS is the transaction counter that is incremented by the master and used to recognize the specific message response. ADDR is the memory address being requested, size specifies how many bytes are to be read. DLE + ETX mark the end of the message, the last two bytes are the CRC that is calculated using the previously sent bytes. Here is the MSpec to model the behaviour: [discriminatedType DF1Symbol [const uint 8 messageStart 0x10] [discriminator uint 8 symbolType] [typeSwitch 'symbolType' ['0x02' DF1SymbolMessageFrame [simple uint 8 destinationAddress] [simple uint 8 sourceAddress] [simple DF1Command command] [const uint 8 messageEnd 0x10] [const uint 8 endTransaction 0x03] [checksum uint 16 'crc' 'STATIC_CALL(\"org.apache.plc4x.java.df1.readwrite.utils.StaticHelper.crcCheck\", destinationAddress, sourceAddress, command)'] ] ['0x06' DF1SymbolMessageFrameACK ] ['0x15' DF1SymbolMessageFrameNAK ] ] ] [discriminatedType DF1Command [discriminator uint 8 commandCode] [simple uint 8 status] [simple uint 16 transactionCounter] [typeSwitch 'commandCode' ['0x01' DF1UnprotectedReadRequest [simple uint 16 address] [simple uint 8 size] ] ['0x41' DF1UnprotectedReadResponse [manualArray uint 8 'data' terminated 'STATIC_CALL(\"org.apache.plc4x.java.df1.readwrite.utils.StaticHelper.dataTerminate\", io)' 'STATIC_CALL(\"org.apache.plc4x.java.df1.readwrite.utils.StaticHelper.readData\", io)' 'STATIC_CALL(\"org.apache.plc4x.java.df1.readwrite.utils.StaticHelper.writeData\", io, element)' 'STATIC_CALL(\"org.apache.plc4x.java.df1.readwrite.utils.StaticHelper.dataLength\", data)'] ] ] ] The basic object is the DF1Symbol, where the second byte is used to distinguish between the different message types using a typeSwitch. In the case of a command message, the message frame contains the DF1Command to further differentiate between the command types. Currently only the unprotected read and its response are implemented.","title":"Example: DF1 MSpec","component":"plc4x","version":"latest","name":"df1","url":"/plc4x/latest/developers/code-gen/protocol/df1.html","titles":[]},"204":{"id":204,"text":"The MSpec format (Message Specification) was a result of a brainstorming session after evaluating a lot of other options. We simply sat down and started to write some imaginary format (imaginary was even the initial Name we used) and created parses for this afterwards and fine-tuned spec and parsers as part of the process of implementing first protocols and language templates. It’s a text-based format. At the root level of these specs are a set of type, discriminatedType, dataIo and enum blocks. type elements are objects who’s content is independent of the input. An example would be the TPKTPacket of the S7 format: [type TPKTPacket [const uint 8 protocolId 0x03] [reserved uint 8 '0x00'] [implicit uint 16 len 'payload.lengthInBytes + 4'] [field COTPPacket 'payload'] ] A discriminatedType type, in contrast, is an object who’s content and structure is influenced by the input. Every discriminated type can contain an arbitrary number of discriminator fields and exactly one typeSwitch element. For example part of the spec for the S7 format looks like this: [discriminatedType S7Message [const uint 8 protocolId 0x32] [discriminator uint 8 messageType] [reserved uint 16 '0x0000'] [simple uint 16 tpduReference] [implicit uint 16 parameterLength 'parameter.lengthInBytes'] [implicit uint 16 payloadLength 'payload.lengthInBytes'] [typeSwitch 'messageType' ['0x01' S7MessageRequest ] ['0x03' S7MessageResponse [simple uint 8 errorClass] [simple uint 8 errorCode ] ] ['0x07' S7MessageUserData ] ] [simple S7Parameter('messageType') parameter] [simple S7Payload('messageType', 'parameter') payload ] ] A types start is declared by an opening square bracket [ and ended with a closing one ]. Also, to both provide a name as first argument. Every type definition contains a list of fields that can have different types. The list of available types are: abstract: used in the parent type declaration do declare a field that has to be defined with the identical type in all sub-types (reserved for discriminatedType). array: array of simple or complex typed objects. checksum: used for calculating and verifying checksum values. const: expects a given value and causes a hard exception if the value doesn’t match. discriminator: special type of simple typed field which is used to determine the concrete type of object (reserved for discriminatedType). enum: special form of field, used if an enum types property is to be used instead of it’s primary value. implicit: a field required for parsing, but is usually defined though other data, so it’s not stored in the object, but calculated on serialization. assert: generally similar to constant fields, however do they throw AssertionExceptions instead of hard ParseExceptions. They are used in combination with optional fields. manualArray: like an array field, however the logic for serializing, parsing, number of elements and size have to be provided manually. manual: simple field, where the logic for parsing, serializing and size have to be provided manually. optional: simple or complex typed object, that is only present if an optional condition expression evaluates to true and no AssertionException is thrown when parsing the referenced type. padding: field used to add padding data to make datastructures aligned. reserved: expects a given value, but only warns if condition is not meet. simple: simple or complex typed object. typeSwitch: not a real field, but indicates the existence of sub-types, which are declared inline (reserved for discriminatedType). unknown: field used to declare parts of a message that still has to be defined. Generally used when reverse-engineering a protocol. Messages with unknown fields can only be parsed and not serialized. virtual: generates a field in the message, that is generally only used for simplification. It’s not used for parsing or serializing. The full syntax and explanations of these type follow in the following chapters. Another thing we have to explain are how types are specified. In general, we distinguish between two types of types used in field definitions: simple types complex types Simple types are usually raw data the format is: {base-type} {size} The base types available are currently: bit: Simple boolean value or bit. byte: Special value fixed to 8 bit, which defaults to either signed or unsigned depending on the programming language (Java it defaults to signed integer values and in C and Go it defaults to unsigned integers). uint: The input is treated as unsigned integer value. int: The input is treated as signed integer value. float: The input is treated as floating point number. string: The input is treated as string. All above types take a size value which provides how many bits should be read. All except the bit type, which is fixed to one single bit. So reading an unsigned byte would be: uint 8. There is currently one special type, reserved for string values, whose length is determined by an expression instead of a fixed number of bits. It is considered a variable length string: vstring: The input is treated as a variable length string and requires an expression tp provide the number of bits to read. In contrast to simple types, complex type reference other complex types (Root elements of the spec document). How the parser should interpret them is defined in the referenced types definition. In the example above, for example the S7Parameter is defined in another part of the spec. An array field is exactly what you expect. It generates an field which is not a single-value element but an array or list of elements. [array {simple-type} {size} '{name}' {'count', 'length', 'terminated'} '{expression}'] [array {complex-type} '{name}' {'count', 'length', 'terminated'} '{expression}'] Array types can be both simple and complex typed and have a name. An array field must specify the way it’s length is determined as well as an expression defining it’s length. Possible values are: - count: This means that exactly the number of elements are parsed as the expression specifies. - length: In this case a given number of bytes are being read. So if an element has been parsed and there are still bytes left, another element is parsed. - terminated: In this case the parser will continue reading elements until it encounters a termination sequence. A checksum field can only operate on simple types. [checksum {simple-type} {size} '{name}' '{checksum-expression}'] When parsing a given simple type is parsed and then the result is compared to the value the checksum-expression provides. If they don’t match an exception is thrown. When serializing, the checksum-expression is evaluated and the result is then output. Note: As quite often a checksum is calculated based on the byte data of a message read up to the checksum, an artificial variable is available in expressions called checksumRawData of type byte[] which contains an array of all the byte data read in the current message element and it’s sub types in case of a discriminated type. This field doesn’t keep any data in memory. See also: - implicit field: A checksum field is similar to an implicit field, however the checksum-expression is evaluated are parsing time and throws an exception if the values don’t match. A const field simply reads a given simple type and compares to a given reference value. [const {simple-type} {size} '{name}' {reference}] When parsing it makes the parser throw an Exception if the parsed value does not match. When serializing is simply outputs the expected constant. This field doesn’t keep any data in memory. See also: - implicit field: A const field is similar to an implicit field, however it compares the parsed input to the reference value and throws an exception if the values don’t match. Discriminator fields are only used in `discriminatedType`s. [discriminator {simple-type} {size} '{name}'] When parsing a discriminator fields result just in being a locally available variable. When serializing is accesses the discriminated types constants and uses these as output. See also: - implicit field: A discriminator field is similar to an implicit field, however doesn’t provide a serialization expression as it uses the discrimination constants of the type it is. - discriminated types Implicit types are fields that get their value implicitly from the data they contain. [implicit {simple-type} {size} '{name}' '{serialization-expression}'] When parsing an implicit type is available as a local variable and can be used by other expressions. When serializing the serialization-expression is executed and the resulting value is output. This type of field is generally used for fields that handle numbers of elements or length values as these can be implicitly calculated at serialization time. This field doesn’t keep any data in memory. [manualArray {simple-type} {size} '{name}' {'count', 'length', 'terminated'} '{loop-expression}' '{serialization-expression}' '{deserialization-expression}' '{length-expression}'] [manualArray {complex-type} '{name}' {'count', 'length', 'terminated'} '{loop-expression}' '{serialization-expression}' '{deserialization-expression}' '{length-expression}'] [manual {simple-type} {size} '{name}' '{serialization-expression}' '{deserialization-expression}' '{length-expression}'] [manual {complex-type} '{name}' '{serialization-expression}' '{deserialization-expression}' '{length-expression}'] An optional field is a type of field that can also be null. [optional {simple-type} {size} '{name}' '{optional-expression}'] [optional {complex-type} '{name}' '{optional-expression}'] When parsing the optional-expression is evaluated. If this results in`false` nothing is output, if it evaluates to true it is serialized as a simple field. When serializing, if the field is null nothing is output, if it is not null it is serialized normally. See also: - simple field: In general optional fields are identical to simple fields except the ability to be null or be skipped. A padding field allows aligning of data blocks. It outputs additional padding data, given amount of times specified by padding expression. Padding is added only when result of expression is bigger than zero. [padding {simple-type} {size} '{pading-value}' '{padding-expression}'] When parsing a padding field is just consumed without being made available as property or local variable if the padding-expression evaluates to value greater than zero. If it doesn’t, it is just skipped. This field doesn’t keep any data in memory. Reserved fields are very similar to const fields, however they don’t throw exceptions, but instead log messages if the values don’t match. The reason for this is that in general reserved fields have the given value until they start to be used. If the field starts to be used this shouldn’t break existing applications, but it should raise a flag as it might make sense to update the drivers. [reserved {simple-type} {size} '{name}' '{reference}'] When parsing the values is parsed and the result is compared to the reference value. If the values don’t match, a log message is sent. This field doesn’t keep any data in memory. See also: - const field Simple fields are the most common types of fields. A simple field directly mapped to a normally typed field. [simple {simple-type} {size} '{name}'] [simple {complex-type} '{name}'] When parsing, the given type is parsed (can’t be null) and saved in the corresponding model instance’s property field. When serializing it is serialized normally. Virtual fields have no impact on the input or output. They simply result in creating artificial get-methods in the generated model classes. [virtual {simple-type} {size} '{name}' '{value-expression}'] [virtual {complex-type} '{name}' '{value-expression}'] Instead of being bound to a property, the return value of a virtual property is created by evaluating the value-expression. These types of fields can only occur in discriminated types. A discriminatedType must contain exactly one typeSwitch field, as it defines the sub-types. [typeSwitch '{arument-1}', '{arument-2}', ... ['{argument-1-value-1}' {subtype-1-name} ... Fields ... ] ['{vargument-1-value-2}', '{argument-2-value-1}' {subtype-2-name} ... Fields ... ] ['{vargument-1-value-3}', '{argument-2-value-2}' {subtype-2-name} [uint 8 'existing-attribute-1', uint 16 'existing-attribute-2'] ... Fields ... ] A type switch element must contain a list of at least one argument expression. Only the last option can stay empty, which results in a default type. Each sub-type declares a comma-separated list of concrete values. It must contain at most as many elements as arguments are declared for the type switch. The matching type is found during parsing by starting with the first argument. If it matches and there are no more values, the type is found, if more values are provided, they are compared to the other argument values. If no type is found, an exception is thrown. Inside each sub-type can declare fields using a subset of the types (discriminator and typeSwitch can’t be used here) The third case in above code-snippet also passes a named attribute to the sub-type. The name must be identical to any argument or named field parsed before the switchType. These arguments are then available for expressions or passing on in the subtypes. See also: - discriminatedType Some times it is necessary to pass along additional parameters. If a complex type requires parameters, these are declared in the header of that type. [discriminatedType S7Payload(uint 8 'messageType', S7Parameter 'parameter') [typeSwitch 'parameter.discriminatorValues[0]', 'messageType' ['0xF0' S7PayloadSetupCommunication] ['0x04','0x01' S7PayloadReadVarRequest] ['0x04','0x03' S7PayloadReadVarResponse [arrayField S7VarPayloadDataItem 'items' count 'CAST(parameter, S7ParameterReadVarResponse).numItems'] ] ['0x05','0x01' S7PayloadWriteVarRequest [arrayField S7VarPayloadDataItem 'items' count 'COUNT(CAST(parameter, S7ParameterWriteVarRequest).items)'] ] ['0x05','0x03' S7PayloadWriteVarResponse [arrayField S7VarPayloadStatusItem 'items' count 'CAST(parameter, S7ParameterWriteVarResponse).numItems'] ] ['0x00','0x07' S7PayloadUserData ] ] ] Therefore wherever a complex type is referenced an additional list of parameters can be passed to the next type. Here comes an example of this in above snippet: [field S7Payload 'payload' ['messageType', 'parameter']]","title":"The MSpec format","component":"plc4x","version":"latest","name":"mspec","url":"/plc4x/latest/developers/code-gen/protocol/mspec.html","titles":[{"text":"Simple Types","hash":"_simple_types","id":1},{"text":"Complex Types","hash":"_complex_types","id":2},{"text":"Field Types and their Syntax","hash":"_field_types_and_their_syntax","id":3},{"text":"array Field","hash":"_array_field","id":4},{"text":"checksum Field","hash":"_checksum_field","id":5},{"text":"const Field","hash":"_const_field","id":6},{"text":"discriminator Field","hash":"_discriminator_field","id":7},{"text":"implicit Field","hash":"_implicit_field","id":8},{"text":"manualArray Field","hash":"_manualarray_field","id":9},{"text":"manual Field","hash":"_manual_field","id":10},{"text":"optional Field","hash":"_optional_field","id":11},{"text":"padding Field","hash":"_padding_field","id":12},{"text":"reserved Field","hash":"_reserved_field","id":13},{"text":"simple Field","hash":"_simple_field","id":14},{"text":"virtual Field","hash":"_virtual_field","id":15},{"text":"typeSwitch Field","hash":"_typeswitch_field","id":16},{"text":"Parameters","hash":"_parameters","id":17}]},"205":{"id":205,"text":"ConnectConnectedBrowseReadWriteSubscribeUnsubscribeDisconnectinitializingSend ListServices requestReceive ListServices responseSend EipConnectionRequest requestReceive EipConnectionRequest responseSend GetAllAttributes requestSend OpenConnectionManager requestReceive GetAllAttributes responseReceive OpenConnectionManager responsereadWithConnectionManagerreadWithoutConnectionManagerreadWithoutMessageRouterSend SendUnitData requestReceive SendUnitData responseSend CipRRData requestReceive CipRRData responseSend unconnected CipReadRequest request for each tagReceive unconnected CipReadRequest responsewriteWithConnectionManagerwriteWithoutConnectionManagerwriteWithoutMessageRouterSend unconnected CipWriteRequest request for each tagReceive unconnected CipWriteRequest responseSend ConnectionManagerClose requestSend Disconnect requestReceive ConnectionManagerClose responseReceive Disconnect responseAPI Browse RequestAPI Read RequestAPI Write RequestAPI Subscription RequestAPI Unsubscription RequestAPI Disconnect RequestIf successfull, extract 'CIP encapsulation support' setting\"Response is an EipConnectionResponse\"?truefalseExtract setting for 'useMessageRouter' and 'useConnectionManager'. If useConnectionManagertruefalseconnectionId != 0truefalseuseMessageRouteruseConnectionManagertruefalsefalseuseMessageRouteruseConnectionManagertruefalsefalse","title":"EIP Protocol","component":"plc4x","version":"latest","name":"protocol","url":"/plc4x/latest/developers/protocols/eip/protocol.html","titles":[]},"206":{"id":206,"text":"ConnectConnectedBrowseReadWriteSubscribeUnsubscribeinitializingSend 'Add Or Update AMS Routes'Send 'ADS Read Device Info'Receive 'Add Or Update AMS Routes'Receive 'ADS Read Device Info'Init Read Online and Offline VersionReset Symbol and Data-Type DataSend 'Read Online-Version (Symbolic)'Send 'Read Offline-Version'Receive 'Read Online-Version (Symbolic)'Receive 'Read Offline-Version'Send 'Read Symbol- and Data-Type-Table sizes'Receive 'Read Symbol- and Data-Type-Table sizes'Send 'Read Data-Type-Table'Receive 'Read Data-Type-Table'Send 'Read Symbol-Table'Receive 'Read Symbol-Table'Subscribe to changes to the Online- and Offline VersionBrowse: Send 'Read Symbol- and Data-Type-Table sizes'Browse: Receive 'Read Symbol- and Data-Type-Table sizes'Browse: Send 'Read Data-Type-Table'Browse: Receive 'Read Data-Type-Table'Browse: Send 'Read Symbol-Table'Browse: Receive 'Read Symbol-Table'Return API Browse ResultRead: Send 'Multi Item Address Resolution' for unresolvedRead: Receive 'Multi Item Address Resolution' for unresolvedRead: Send 'Multi Item Read'Read: Receive 'Multi Item Read'Read: Return API Read ResultRead: Send 'Single Item Address Resolution'Read: Receive 'Single Item Address Resolution'Read: Send 'Single Item Read'Read: Receive 'Single Item Read'Write: Send 'Multi Item Address Resolution' for unresolvedWrite: Receive 'Multi Item Address Resolution' for unresolvedWrite: Send 'Multi Item Write'Write: Receive 'Multi Item Write'Write: Return API Write ResultWrite: Send 'Single Item Address Resolution'Write: Receive 'Single Item Address Resolution'Write: Send 'Single Item Write'Write: Receive 'Single Item Write'Subscribe: Send 'Multi Item Address Resolution' for unresolvedSubscribe: Receive 'Multi Item Address Resolution' for unresolvedSubscribe: Send 'Single Item Address Resolution'Subscribe: Receive 'Single Item Address Resolution'Subscribe: Send 'Single Item 1 Subscibe'Subscribe: Receive 'Single Item 1 Subscibe'Subscribe: Send 'Single Item 2 Subscibe'Subscribe: Receive 'Single Item 2 Subscibe'Subscribe: Send 'Single Item n Subscibe'Subscribe: Receive 'Single Item n Subscibe'Subscribe: Return API Write ResultUnsubscribe: Send 'Single Item 1 Unsubscribe'Unsubscribe: Receive 'Single Item 1 Unsubscribe'Unsubscribe: Send 'Single Item 2 Unsubscribe'Unsubscribe: Receive 'Single Item 2 Unsubscribe'Unsubscribe: Send 'Single Item n Unsubscribe'Unsubscribe: Receive 'Single Item n Unsubscribe'Unsubscribe: Return API Unsubscribe ResultAPI Browse RequestAPI Read RequestAPI Write RequestAPI Subscription RequestAPI Unsubscription RequestUsing Authentication?truefalseConfig: Monitor PLC changes?truefalseConfig: Load Symbol- and Data-Type-Tables?truefalseConfig: Monitor PLC changes?trueUpdate the online- or offline version (Depending on wich one changed)Is symbol- and data-type-table loaded?truefalseIs single item read request?falseAre all field addresses resolved?unresolvedresolvedtrueIs the field address resolved?falsetrueIs single item write request?falseAre all field addresses resolved?unresolvedresolvedtrueIs the field address resolved?falsetrueIs single item subscription request?falseAre all field addresses resolved?unresolvedresolvedtrueIs the field address resolved?falsetrue","title":"Beckhoff ADS Protocol","component":"plc4x","version":"latest","name":"protocol","url":"/plc4x/latest/developers/protocols/ads/protocol.html","titles":[]}},"components":{},"componentVersions":{"plc4x/latest":{"displayVersion":"latest","title":"PLC4X","version":"latest","name":"plc4x","prerelease":true,"asciidoc":{"attributes":{"env":"site","env-site":"","site-gen":"antora","site-gen-antora":"","attribute-missing":"warn","data-uri":null,"icons":"font","sectanchors":"","source-highlighter":"highlight.js","site-title":"PLC4X","allow-uri-read":"true","current-last-released-version":"0.12.0"},"sourcemap":false,"extensions":[{}]},"url":"/plc4x/latest/users/index.html","navigation":[{"items":[{"content":"Users","url":"/plc4x/latest/users/index.html","urlType":"internal","items":[{"content":"Download","url":"/plc4x/latest/users/download.html","urlType":"internal"},{"content":"Adopters","url":"/plc4x/latest/users/adopters.html","urlType":"internal"},{"content":"Commercial Support","url":"/plc4x/latest/users/commercial-support.html","urlType":"internal"},{"content":"Getting Started","url":"/plc4x/latest/users/getting-started/index.html","urlType":"internal","items":[{"content":"Getting Started with C","url":"/plc4x/latest/users/getting-started/plc4c.html","urlType":"internal"},{"content":"Getting Started with C#","url":"/plc4x/latest/users/getting-started/plc4cs.html","urlType":"internal"},{"content":"Getting Started with Go","url":"/plc4x/latest/users/getting-started/plc4go.html","urlType":"internal"},{"content":"Getting Started with Java","url":"/plc4x/latest/users/getting-started/plc4j.html","urlType":"internal"},{"content":"Getting Started with Python","url":"/plc4x/latest/users/getting-started/plc4py.html","urlType":"internal"},{"content":"Using SNAPSHOT versions","url":"/plc4x/latest/users/getting-started/using-snapshots.html","urlType":"internal"},{"content":"General Concepts","url":"/plc4x/latest/users/getting-started/general-concepts.html","urlType":"internal"},{"content":"Virtual Modbus","url":"/plc4x/latest/users/getting-started/virtual-modbus.html","urlType":"internal"}]},{"content":"Blogs, Videos and Slides on Apache PLC4X","url":"/plc4x/latest/users/blogs-videos-and-slides.html","urlType":"internal"},{"content":"Protocols","url":"/plc4x/latest/users/protocols/index.html","urlType":"internal","items":[{"content":"AB-ETH","url":"/plc4x/latest/users/protocols/ab-eth.html","urlType":"internal"},{"content":"ADS (Automation Device Specification)","url":"/plc4x/latest/users/protocols/ads.html","urlType":"internal"},{"content":"BACnet/IP","url":"/plc4x/latest/users/protocols/bacnet.html","urlType":"internal"},{"content":"C-Bus","url":"/plc4x/latest/users/protocols/c-bus.html","urlType":"internal"},{"content":"CANopen","url":"/plc4x/latest/users/protocols/canopen.html","urlType":"internal"},{"content":"CtlrX","url":"/plc4x/latest/users/protocols/ctrlx.html","urlType":"internal"},{"content":"DeltaV","url":"/plc4x/latest/users/protocols/deltav.html","urlType":"internal"},{"content":"DF1","url":"/plc4x/latest/users/protocols/df1.html","urlType":"internal"},{"content":"EtherNet/IP","url":"/plc4x/latest/users/protocols/eip.html","urlType":"internal"},{"content":"Firmata","url":"/plc4x/latest/users/protocols/firmata.html","urlType":"internal"},{"content":"Generic CAN","url":"/plc4x/latest/users/protocols/genericcan.html","urlType":"internal"},{"content":"IEC-60870","url":"/plc4x/latest/users/protocols/iec-60870.html","urlType":"internal"},{"content":"KNXnet/IP","url":"/plc4x/latest/users/protocols/knxnetip.html","urlType":"internal"},{"content":"Logix","url":"/plc4x/latest/users/protocols/logix.html","urlType":"internal"},{"content":"Modbus (TCP/UDP/Serial)","url":"/plc4x/latest/users/protocols/modbus.html","urlType":"internal"},{"content":"OPC UA","url":"/plc4x/latest/users/protocols/opcua.html","urlType":"internal"},{"content":"Open-Protocol (Torque-Tools)","url":"/plc4x/latest/users/protocols/open-protocol.html","urlType":"internal"},{"content":"PLC4X (Proxy) (TCP)","url":"/plc4x/latest/users/protocols/plc4x.html","urlType":"internal"},{"content":"Profinet (In Development)","url":"/plc4x/latest/users/protocols/profinet.html","urlType":"internal"},{"content":"S7 (Step7)","url":"/plc4x/latest/users/protocols/s7.html","urlType":"internal"},{"content":"Simulated","url":"/plc4x/latest/users/protocols/simulated.html","urlType":"internal"}]},{"content":"Transports","url":"/plc4x/latest/users/transports/index.html","urlType":"internal","items":[{"content":"TCP","url":"/plc4x/latest/users/transports/tcp.html","urlType":"internal"},{"content":"UDP","url":"/plc4x/latest/users/transports/udp.html","urlType":"internal"},{"content":"Serial Port","url":"/plc4x/latest/users/transports/serial.html","urlType":"internal"},{"content":"SocketCAN","url":"/plc4x/latest/users/transports/socketcan.html","urlType":"internal"},{"content":"Raw Socket","url":"/plc4x/latest/users/transports/raw-socket.html","urlType":"internal"},{"content":"PCAP Replay","url":"/plc4x/latest/users/transports/pcap-replay.html","urlType":"internal"}]},{"content":"Integrations","url":"/plc4x/latest/users/integrations/index.html","urlType":"internal","items":[{"content":"Apache Calcite","url":"/plc4x/latest/users/integrations/apache-calcite.html","urlType":"internal"},{"content":"Apache Camel","url":"/plc4x/latest/users/integrations/apache-camel.html","urlType":"internal"},{"content":"Apache IotDB","url":"/plc4x/latest/users/integrations/apache-iotdb.html","urlType":"internal"},{"content":"<a href=\"https://kafka.apache.org/\">Apache Kafka","url":"/plc4x/latest/users/integrations/apache-kafka.html","urlType":"internal"},{"content":"Apache NiFi","url":"/plc4x/latest/users/integrations/apache-nifi.html","urlType":"internal"},{"content":"Apache StreamPipes","url":"/plc4x/latest/users/integrations/apache-streampipes.html","urlType":"internal"},{"content":"Eclipse Ditto","url":"/plc4x/latest/users/integrations/eclipse-ditto.html","urlType":"internal"},{"content":"Introduction","url":"/plc4x/latest/users/integrations/eclipse-milo.html","urlType":"internal"}]},{"content":"Tools","url":"/plc4x/latest/users/tools/index.html","urlType":"internal","items":[{"content":"Capture Replay","url":"/plc4x/latest/users/tools/capture-replay.html","urlType":"internal"},{"content":"The Connection Cache concept","url":"/plc4x/latest/users/tools/connection-cache.html","urlType":"internal"},{"content":"Object PLC Mapping","url":"/plc4x/latest/users/tools/opm.html","urlType":"internal"},{"content":"Scraper","url":"/plc4x/latest/users/tools/scraper.html","urlType":"internal"},{"content":"Testing (or using PLC4X without a PLC)","url":"/plc4x/latest/users/tools/testing.html","urlType":"internal"}]},{"content":"Industry 4.0 with Apache","url":"/plc4x/latest/users/industry40.html","urlType":"internal"},{"content":"Security Vulnerabilities","url":"/plc4x/latest/users/security.html","urlType":"internal"}]}],"root":true,"order":1},{"items":[{"content":"Developers","url":"/plc4x/latest/developers/index.html","urlType":"internal","items":[{"content":"Preparing your Computer","url":"/plc4x/latest/developers/preparing/index.html","urlType":"internal","items":[{"content":"Linux","url":"/plc4x/latest/developers/preparing/linux.html","urlType":"internal"},{"content":"Mac OS","url":"/plc4x/latest/developers/preparing/macos.html","urlType":"internal"},{"content":"Windows","url":"/plc4x/latest/developers/preparing/windows.html","urlType":"internal"}]},{"content":"Building PLC4X","url":"/plc4x/latest/developers/building.html","urlType":"internal"},{"content":"Contributing","url":"/plc4x/latest/developers/contributing.html","urlType":"internal"},{"content":"Tutorials","url":"/plc4x/latest/developers/tutorials/index.html","urlType":"internal","items":[{"content":"Basic Building Blocs of a Driver / Protocol","url":"/plc4x/latest/developers/tutorials/writing-driver.html","urlType":"internal"},{"content":"Testing Serializers and Parsers","url":"/plc4x/latest/developers/tutorials/testing-serializers-and-parsers.html","urlType":"internal"}]},{"content":"Code Generation","url":"/plc4x/latest/developers/code-gen/index.html","urlType":"internal","items":[{"content":"The MSpec format","url":"/plc4x/latest/developers/code-gen/protocol/mspec.html","urlType":"internal"},{"content":"Apache Freemarker","url":"/plc4x/latest/developers/code-gen/language/freemarker.html","urlType":"internal"},{"content":"Example: DF1 MSpec","url":"/plc4x/latest/developers/code-gen/protocol/df1.html","urlType":"internal"}]},{"content":"Usage of protocols","url":"/plc4x/latest/developers/protocols/index.html","urlType":"internal","items":[{"content":"Beckhoff ADS Protocol","url":"/plc4x/latest/developers/protocols/ads/protocol.html","urlType":"internal"},{"content":"EIP Protocol","url":"/plc4x/latest/developers/protocols/eip/protocol.html","urlType":"internal"}]},{"content":"Infrastructure","url":"/plc4x/latest/developers/infrastructure/index.html","urlType":"internal","items":[{"content":"Continuous Integration","url":"/plc4x/latest/developers/infrastructure/ci.html","urlType":"internal"},{"content":"Bug & Issue Tracker","url":"/plc4x/latest/developers/infrastructure/issues.html","urlType":"internal"},{"content":"Code Analysis","url":"/plc4x/latest/developers/infrastructure/sonar.html","urlType":"internal"},{"content":"WIKI","url":"/plc4x/latest/developers/infrastructure/wiki.html","urlType":"internal"},{"content":"infrastructure/vm.adoc","url":"/plc4x/latest/developers/infrastructure/vm.html","urlType":"internal"},{"content":"Generating the Website","url":"/plc4x/latest/developers/infrastructure/website.html","urlType":"internal"}]},{"content":"Releasing and Validating Releases","url":"/plc4x/latest/developers/release/index.html","urlType":"internal","items":[{"content":"Releasing PLC4X","url":"/plc4x/latest/developers/release/release.html","urlType":"internal"},{"content":"Validating a staged release","url":"/plc4x/latest/developers/release/validation.html","urlType":"internal"},{"content":"Releasing PLC4X Build-Tools","url":"/plc4x/latest/developers/release/build-tools.html","urlType":"internal"}]},{"content":"Tools","url":"/plc4x/latest/developers/tools.html","urlType":"internal"},{"content":"Team","url":"/plc4x/latest/developers/team.html","urlType":"internal"},{"content":"Decision Making","url":"/plc4x/latest/developers/decisions.html","urlType":"internal"},{"content":"Apache Maturity Model Assessment for PLC4X","url":"/plc4x/latest/developers/maturity.html","urlType":"internal"}]}],"root":true,"order":2}]},"plc4x/pre-release":{"displayVersion":"pre-release","title":"PLC4X","version":"pre-release","name":"plc4x","prerelease":true,"asciidoc":{"attributes":{"env":"site","env-site":"","site-gen":"antora","site-gen-antora":"","attribute-missing":"warn","data-uri":null,"icons":"font","sectanchors":"","source-highlighter":"highlight.js","site-title":"PLC4X","allow-uri-read":"true","current-last-released-version":"0.13.0-SNAPSHOT","current-full-version":"0.13.0"},"sourcemap":false,"extensions":[{}]},"url":"/plc4x/pre-release/users/index.html","navigation":[{"items":[{"content":"Users","url":"/plc4x/pre-release/users/index.html","urlType":"internal","items":[{"content":"Download","url":"/plc4x/pre-release/users/download.html","urlType":"internal"},{"content":"Adopters","url":"/plc4x/pre-release/users/adopters.html","urlType":"internal"},{"content":"Bug & Issue Tracker","url":"/plc4x/pre-release/users/issues.html","urlType":"internal"},{"content":"Commercial Support","url":"/plc4x/pre-release/users/commercial-support.html","urlType":"internal"},{"content":"Getting Started","url":"/plc4x/pre-release/users/getting-started/index.html","urlType":"internal","items":[{"content":"Getting Started with C","url":"/plc4x/pre-release/users/getting-started/plc4c.html","urlType":"internal"},{"content":"Getting Started with C#","url":"/plc4x/pre-release/users/getting-started/plc4cs.html","urlType":"internal"},{"content":"Getting Started with Go","url":"/plc4x/pre-release/users/getting-started/plc4go.html","urlType":"internal"},{"content":"Getting Started with Java","url":"/plc4x/pre-release/users/getting-started/plc4j.html","urlType":"internal"},{"content":"Getting Started with Python","url":"/plc4x/pre-release/users/getting-started/plc4py.html","urlType":"internal"},{"content":"Using SNAPSHOT versions","url":"/plc4x/pre-release/users/getting-started/using-snapshots.html","urlType":"internal"},{"content":"General Concepts","url":"/plc4x/pre-release/users/getting-started/general-concepts.html","urlType":"internal"},{"content":"Virtual Modbus","url":"/plc4x/pre-release/users/getting-started/virtual-modbus.html","urlType":"internal"},{"content":"OPC UA : Client certificate creation","url":"/plc4x/pre-release/users/getting-started/opcua-client-certificate.html","urlType":"internal"}]},{"content":"Blogs, Videos and Slides on Apache PLC4X","url":"/plc4x/pre-release/users/blogs-videos-and-slides.html","urlType":"internal"},{"content":"Protocols","url":"/plc4x/pre-release/users/protocols/index.html","urlType":"internal","items":[{"content":"AB-ETH","url":"/plc4x/pre-release/users/protocols/ab-eth.html","urlType":"internal"},{"content":"ADS (Automation Device Specification)","url":"/plc4x/pre-release/users/protocols/ads.html","urlType":"internal"},{"content":"BACnet/IP","url":"/plc4x/pre-release/users/protocols/bacnet.html","urlType":"internal"},{"content":"C-Bus","url":"/plc4x/pre-release/users/protocols/c-bus.html","urlType":"internal"},{"content":"CANopen","url":"/plc4x/pre-release/users/protocols/canopen.html","urlType":"internal"},{"content":"CtlrX","url":"/plc4x/pre-release/users/protocols/ctrlx.html","urlType":"internal"},{"content":"DeltaV","url":"/plc4x/pre-release/users/protocols/deltav.html","urlType":"internal"},{"content":"DF1","url":"/plc4x/pre-release/users/protocols/df1.html","urlType":"internal"},{"content":"EtherNet/IP","url":"/plc4x/pre-release/users/protocols/eip.html","urlType":"internal"},{"content":"Firmata","url":"/plc4x/pre-release/users/protocols/firmata.html","urlType":"internal"},{"content":"Generic CAN","url":"/plc4x/pre-release/users/protocols/genericcan.html","urlType":"internal"},{"content":"IEC-60870","url":"/plc4x/pre-release/users/protocols/iec-60870.html","urlType":"internal"},{"content":"KNXnet/IP","url":"/plc4x/pre-release/users/protocols/knxnetip.html","urlType":"internal"},{"content":"Logix","url":"/plc4x/pre-release/users/protocols/logix.html","urlType":"internal"},{"content":"Modbus (TCP/UDP/Serial)","url":"/plc4x/pre-release/users/protocols/modbus.html","urlType":"internal"},{"content":"OPC UA","url":"/plc4x/pre-release/users/protocols/opcua.html","urlType":"internal"},{"content":"Open-Protocol (Torque-Tools)","url":"/plc4x/pre-release/users/protocols/open-protocol.html","urlType":"internal"},{"content":"PLC4X (Proxy) (TCP)","url":"/plc4x/pre-release/users/protocols/plc4x.html","urlType":"internal"},{"content":"Profinet (In Development)","url":"/plc4x/pre-release/users/protocols/profinet.html","urlType":"internal"},{"content":"S7 (Step7)","url":"/plc4x/pre-release/users/protocols/s7.html","urlType":"internal"},{"content":"S7-Light (Step7)","url":"/plc4x/pre-release/users/protocols/s7-light.html","urlType":"internal"},{"content":"Simulated","url":"/plc4x/pre-release/users/protocols/simulated.html","urlType":"internal"},{"content":"UMAS (Schneider Electric PLCs)","url":"/plc4x/pre-release/users/protocols/umas.html","urlType":"internal"}]},{"content":"Transports","url":"/plc4x/pre-release/users/transports/index.html","urlType":"internal","items":[{"content":"TCP","url":"/plc4x/pre-release/users/transports/tcp.html","urlType":"internal"},{"content":"UDP","url":"/plc4x/pre-release/users/transports/udp.html","urlType":"internal"},{"content":"Serial Port","url":"/plc4x/pre-release/users/transports/serial.html","urlType":"internal"},{"content":"SocketCAN","url":"/plc4x/pre-release/users/transports/socketcan.html","urlType":"internal"},{"content":"Raw Socket","url":"/plc4x/pre-release/users/transports/raw-socket.html","urlType":"internal"},{"content":"PCAP Replay","url":"/plc4x/pre-release/users/transports/pcap-replay.html","urlType":"internal"}]},{"content":"Integrations","url":"/plc4x/pre-release/users/integrations/index.html","urlType":"internal","items":[{"content":"Apache Calcite","url":"/plc4x/pre-release/users/integrations/apache-calcite.html","urlType":"internal"},{"content":"Apache Camel","url":"/plc4x/pre-release/users/integrations/apache-camel.html","urlType":"internal"},{"content":"Apache IotDB","url":"/plc4x/pre-release/users/integrations/apache-iotdb.html","urlType":"internal"},{"content":"Apache Kafka","url":"/plc4x/pre-release/users/integrations/apache-kafka.html","urlType":"internal"},{"content":"Apache NiFi","url":"/plc4x/pre-release/users/integrations/apache-nifi.html","urlType":"internal"},{"content":"Apache StreamPipes","url":"/plc4x/pre-release/users/integrations/apache-streampipes.html","urlType":"internal"},{"content":"Eclipse Ditto","url":"/plc4x/pre-release/users/integrations/eclipse-ditto.html","urlType":"internal"},{"content":"Eclipse Milo (OPC UA Server)","url":"/plc4x/pre-release/users/integrations/eclipse-milo.html","urlType":"internal"}]},{"content":"Tools","url":"/plc4x/pre-release/users/tools/index.html","urlType":"internal","items":[{"content":"Capture Replay","url":"/plc4x/pre-release/users/tools/capture-replay.html","urlType":"internal"},{"content":"The Connection Cache concept","url":"/plc4x/pre-release/users/tools/connection-cache.html","urlType":"internal"},{"content":"Object PLC Mapping","url":"/plc4x/pre-release/users/tools/opm.html","urlType":"internal"},{"content":"Scraper","url":"/plc4x/pre-release/users/tools/scraper.html","urlType":"internal"},{"content":"Testing (or using PLC4X without a PLC)","url":"/plc4x/pre-release/users/tools/testing.html","urlType":"internal"}]},{"content":"Industry 4.0 with Apache","url":"/plc4x/pre-release/users/industry40.html","urlType":"internal"},{"content":"Security Vulnerabilities","url":"/plc4x/pre-release/users/security.html","urlType":"internal"}]}],"root":true,"order":1},{"items":[{"content":"Developers","url":"/plc4x/pre-release/developers/index.html","urlType":"internal","items":[{"content":"Preparing your Computer","url":"/plc4x/pre-release/developers/preparing/index.html","urlType":"internal","items":[{"content":"Linux","url":"/plc4x/pre-release/developers/preparing/linux.html","urlType":"internal"},{"content":"Mac OS","url":"/plc4x/pre-release/developers/preparing/macos.html","urlType":"internal"},{"content":"Windows","url":"/plc4x/pre-release/developers/preparing/windows.html","urlType":"internal"}]},{"content":"Building PLC4X","url":"/plc4x/pre-release/developers/building.html","urlType":"internal"},{"content":"Contributing","url":"/plc4x/pre-release/developers/contributing.html","urlType":"internal"},{"content":"Tutorials","url":"/plc4x/pre-release/developers/tutorials/index.html","urlType":"internal","items":[{"content":"Strategy for creating a new Driver","url":"/plc4x/pre-release/developers/tutorials/writing-driver.html","urlType":"internal"},{"content":"Testing Serializers and Parsers","url":"/plc4x/pre-release/developers/tutorials/testing-serializers-and-parsers.html","urlType":"internal"}]},{"content":"Code Generation","url":"/plc4x/pre-release/developers/code-gen/index.html","urlType":"internal","items":[{"content":"The MSpec format","url":"/plc4x/pre-release/developers/code-gen/protocol/mspec.html","urlType":"internal"},{"content":"Apache Freemarker","url":"/plc4x/pre-release/developers/code-gen/language/freemarker.html","urlType":"internal"},{"content":"Example: DF1 MSpec","url":"/plc4x/pre-release/developers/code-gen/protocol/df1.html","urlType":"internal"}]},{"content":"Usage of protocols","url":"/plc4x/pre-release/developers/protocols/index.html","urlType":"internal","items":[{"content":"Beckhoff ADS Protocol","url":"/plc4x/pre-release/developers/protocols/ads/protocol.html","urlType":"internal"},{"content":"EIP Protocol","url":"/plc4x/pre-release/developers/protocols/eip/protocol.html","urlType":"internal"}]},{"content":"Infrastructure","url":"/plc4x/pre-release/developers/infrastructure/index.html","urlType":"internal","items":[{"content":"Continuous Integration","url":"/plc4x/pre-release/developers/infrastructure/ci.html","urlType":"internal"},{"content":"Bug & Issue Tracker","url":"/plc4x/pre-release/developers/infrastructure/issues.html","urlType":"internal"},{"content":"Code Analysis","url":"/plc4x/pre-release/developers/infrastructure/sonar.html","urlType":"internal"},{"content":"WIKI","url":"/plc4x/pre-release/developers/infrastructure/wiki.html","urlType":"internal"},{"content":"The PLC4X Project VM","url":"/plc4x/pre-release/developers/infrastructure/vm.html","urlType":"internal"},{"content":"Generating the Website","url":"/plc4x/pre-release/developers/infrastructure/website.html","urlType":"internal"}]},{"content":"Releasing and Validating Releases","url":"/plc4x/pre-release/developers/release/index.html","urlType":"internal","items":[{"content":"Releasing PLC4X","url":"/plc4x/pre-release/developers/release/release.html","urlType":"internal"},{"content":"Validating a staged release","url":"/plc4x/pre-release/developers/release/validation.html","urlType":"internal"},{"content":"Releasing PLC4X Build-Tools","url":"/plc4x/pre-release/developers/release/build-tools.html","urlType":"internal"}]},{"content":"Tools","url":"/plc4x/pre-release/developers/tools.html","urlType":"internal"},{"content":"Team","url":"/plc4x/pre-release/developers/team.html","urlType":"internal"},{"content":"Decision Making","url":"/plc4x/pre-release/developers/decisions.html","urlType":"internal"},{"content":"Apache Maturity Model Assessment for PLC4X","url":"/plc4x/pre-release/developers/maturity.html","urlType":"internal"}]}],"root":true,"order":2}]}}}})
\ No newline at end of file
+antoraSearch.initSearch(lunr, {"index":{"version":"2.3.9","fields":["title","name","text","component"],"fieldVectors":[["title/1",[0,67.357]],["name/1",[1,1.532]],["text/1",[]],["component/1",[2,0.4]],["title/2-1",[3,33.925,4,29.665]],["name/2-1",[]],["text/2-1",[]],["component/2-1",[]],["title/2-2",[5,42.326]],["name/2-2",[]],["text/2-2",[]],["component/2-2",[]],["title/2-3",[6,11.806,7,12.464,8,9.361,9,16.101,10,15.692,11,20.935,12,27.094,13,12.15]],["name/2-3",[]],["text/2-3",[]],["component/2-3",[]],["title/2-4",[6,15.872,14,19.241,15,18.285,16,13.133,17,18.108]],["name/2-4",[]],["text/2-4",[]],["component/2-4",[]],["title/2",[2,9.757,16,17.047,18,40.443]],["name/2",[18,1.99]],["text/2",[3,2.295,4,2.007,5,2.362,6,2.448,7,2.584,8,2.579,9,2.234,10,5.031,11,2.904,12,3.759,13,1.686,14,1.986,15,4.207,16,3.352,19,2.295,20,2.772,21,3.652,22,3.162,23,3.759,24,2.742,25,1.672,26,2.163,27,1.925,28,2.475,29,7.999,30,5.18,31,2.742,32,2.981,33,2.517,34,2.539,35,4.47,36,1.896,37,2.742,38,4.336,39,2.416,40,3.516,41,2.234,42,4.47,43,5.767,44,2.007,45,2.362,46,4.582,47,2.981,48,4.051,49,3.759,50,4.713,51,4.811,52,3.757,53,3.274,54,3.194,55,3.112,56,2.539,57,2.436,58,2.455,59,2.455,60,3.759,61,3.735,62,4.47,63,3.584,64,3.559,65,3.215,66,3.112,67,1.775,68,2.609,69,6.755,70,4.098,71,2.475,72,2.634,73,1.505,74,2.742,75,2.191,76,2.981]],["component/2",[2,0.4]],["title/3-1",[7,30.986]],["name/3-1",[]],["text/3-1",[]],["component/3-1",[]],["title/3-2",[8,16.335,77,20.941,78,41.163]],["name/3-2",[]],["text/3-2",[]],["component/3-2",[]],["title/3-3",[8,19.195,77,24.608]],["name/3-3",[]],["text/3-3",[]],["component/3-3",[]],["title/3-4",[2,9.757,77,20.941,79,23.28]],["name/3-4",[]],["text/3-4",[]],["component/3-4",[]],["title/3-5",[2,8.492,77,18.225,79,20.261,80,29.705]],["name/3-5",[]],["text/3-5",[]],["component/3-5",[]],["title/3-6",[77,20.941,81,36.088,82,35.256]],["name/3-6",[]],["text/3-6",[]],["component/3-6",[]],["title/3-7",[82,35.256,83,19.505,84,18.456]],["name/3-7",[]],["text/3-7",[]],["component/3-7",[]],["title/3-8",[82,35.256,85,42.794,86,42.794]],["name/3-8",[]],["text/3-8",[]],["component/3-8",[]],["title/3-9",[82,35.256,87,30.883,88,26.407]],["name/3-9",[]],["text/3-9",[]],["component/3-9",[]],["title/3-10",[8,14.216,89,33.563,90,30.683,91,44.145]],["name/3-10",[]],["text/3-10",[]],["component/3-10",[]],["title/3",[2,11.466,79,27.357]],["name/3",[79,1.146]],["text/3",[2,1.187,3,0.803,4,0.702,7,2.647,8,1.988,14,1.242,15,0.66,16,0.474,17,1.929,22,1.106,25,1.046,26,1.836,27,1.204,36,0.663,37,0.959,46,1.072,47,1.042,50,2.235,51,0.792,52,1.313,53,1.37,57,1.523,61,0.73,67,1.11,75,2.262,77,3.792,78,2.776,79,4.176,80,2.302,81,1.003,82,4.94,83,2.045,84,0.513,85,1.19,86,2.128,87,2.914,88,0.734,89,1.918,90,0.98,91,2.522,92,2.326,93,0.722,94,1.245,95,1.548,96,0.691,97,1.245,98,1.353,99,1.072,100,1.663,101,1.245,102,1.588,103,1.658,104,1.947,105,0.771,106,2.568,107,0.706,108,1.245,109,1.029,110,0.888,111,1.19,112,2.874,113,1.68,114,1.277,115,1.277,116,2.011,117,2.302,118,2.476,119,1.534,120,1.817,121,0.93,122,1.029,123,0.969,124,1.792,125,1.477,126,2.061,127,1.397,128,0.939,129,1.476,130,0.532,131,0.808,132,0.912,133,1.072,134,2.351,135,1.563,136,0.93,137,1.742,138,1.663,139,1.563,140,0.939,141,1.029,142,1.204,143,3.126,144,4.686,145,1.563,146,1.277,147,1.734,148,3.063,149,0.761,150,1.563,151,1.563,152,2.351,153,0.873,154,1.802,155,1.602,156,3.516,157,1.245,158,2.478,159,1.617,160,0.873,161,1.072,162,0.859,163,1.19,164,0.852,165,0.687,166,2.019,167,1.358,168,0.743,169,0.949,170,2.421,171,0.969,172,2.353,173,1.216,174,1.096,175,0.959,176,1.68,177,1.016,178,1.488,179,1.563,180,1.563,181,1.314,182,1.314,183,1.753,184,1.68,185,0.743,186,1.19,187,2.522,188,1.245,189,1.41,190,0.949,191,0.88,192,2.026,193,2.226,194,0.747,195,1.41,196,1.563,197,1.696,198,1.663,199,2.868,200,1.817,201,1.89,202,4.34,203,1.042,204,1.563,205,1.977,206,0.738,207,1.269,208,1.41,209,0.826,210,1.911,211,4.043,212,3.577,213,1.072,214,1.029,215,2.256,216,2.645,217,1.042,218,1.435,219,1.216,220,1.426,221,1.84,222,1.353,223,1.222,224,0.98,225,1.216,226,0.673,227,1.088,228,0.939,229,1.033,230,0.845,231,1.126,232,3.881,233,3.753,234,2.889,235,2.552,236,2.429,237,2.128,238,2.796,239,2.522,240,2.522,241,2.522,242,2.522,243,1.106,244,2.422,245,1.072,246,0.859,247,3.12,248,1.731,249,0.786,250,0.702,251,1.41,252,1.947,253,1.245,254,1.029,255,0.904,256,1.042,257,0.781,258,0.808,259,1.245,260,1.277,261,1.314,262,1.277,263,0.866,264,1.245,265,1.245,266,1.19,267,1.314,268,1.277,269,1.563,270,1.41,271,1.353,272,1.042,273,2.351,274,1.216,275,1.144,276,0.859,277,1.277,278,1.166,279,1.245,280,1.41,281,0.624,282,1.41,283,1.563,284,0.959,285,0.845,286,0.896,287,1.166,288,0.866,289,0.93,290,1.166,291,1.057,292,0.852,293,1.277,294,1.314,295,0.959,296,1.144,297,1.222,298,0.752,299,0.61,300,1.106,301,0.786,302,0.991,303,1.563,304,1.563,305,1.41,306,1.563,307,1.563,308,0.629,309,2.601,310,1.731,311,1.401,312,1.633,313,2.378,314,2.05,315,0.814,316,1.144]],["component/3",[2,0.4]],["title/4-1",[166,35.176,317,66.069]],["name/4-1",[]],["text/4-1",[]],["component/4-1",[]],["title/4",[137,18.456,318,44.772,319,31.395]],["name/4",[318,2.204]],["text/4",[2,1.805,6,1.011,22,1.952,27,1.188,73,0.929,79,1.89,81,1.771,83,3.55,105,2.881,119,2.362,130,0.939,137,2.228,153,1.541,192,1.054,201,1.866,222,1.336,224,1.73,255,1.596,271,2.827,299,1.782,318,7.407,319,3.261,320,1.281,321,2.489,322,4.542,323,1.921,324,1.711,325,1.658,326,1.019,327,2.1,328,2.759,329,5.513,330,8.575,331,2.759,332,10.234,333,8.391,334,6.939,335,2.759,336,6.278,337,4.119,338,2.759,339,2.759,340,6.123,341,2.759,342,5.84,343,2.489,344,2.759,345,1.985,346,2.844,347,2.759,348,4.566,349,4.566,350,4.65,351,2.759,352,2.759,353,2.759,354,2.321,355,4.566,356,4.566,357,2.759,358,2.759,359,2.759,360,2.759,361,2.489,362,2.489,363,2.1,364,4.566,365,4.119,366,5.84,367,2.196,368,2.759,369,4.566,370,8.647,371,2.759,372,2.759,373,2.489,374,2.489,375,2.489,376,3.84,377,2.489,378,2.759,379,2.759,380,4.566,381,4.566,382,1.379,383,2.759,384,2.321,385,1.866,386,2.759,387,2.759,388,2.759,389,2.759,390,5.269,391,2.759,392,2.759,393,2.759,394,2.759,395,2.759,396,2.759,397,2.397,398,6.787,399,4.131,400,2.759,401,4.566,402,2.759,403,2.489,404,2.759,405,1.793,406,2.759,407,1.379,408,1.952,409,2.759,410,4.566,411,2.759,412,4.119,413,2.397,414,1.952,415,4.566,416,5.84,417,2.759,418,2.759,419,2.759,420,2.759,421,2.759,422,2.759,423,2.759,424,2.759,425,2.759,426,2.759,427,2.759,428,1.952,429,1.893,430,2.759,431,1.816,432,1.311,433,2.02,434,2.759]],["component/4",[2,0.4]],["title/5-1",[209,34.914,435,44.06]],["name/5-1",[]],["text/5-1",[]],["component/5-1",[]],["title/5-2",[436,55.772]],["name/5-2",[]],["text/5-2",[]],["component/5-2",[]],["title/5-3",[437,49.288,438,29.827]],["name/5-3",[]],["text/5-3",[]],["component/5-3",[]],["title/5-4",[206,23.118,257,24.453,324,30.344,439,44.145]],["name/5-4",[]],["text/5-4",[]],["component/5-4",[]],["title/5-5",[440,34.914,441,40.531]],["name/5-5",[]],["text/5-5",[]],["component/5-5",[]],["title/5-6",[170,42.016]],["name/5-6",[]],["text/5-6",[]],["component/5-6",[]],["title/5-7",[442,42.931,443,37.864]],["name/5-7",[]],["text/5-7",[]],["component/5-7",[]],["title/5",[435,53.413]],["name/5",[435,1.845]],["text/5",[2,1.343,8,1.928,17,0.927,20,1.376,22,2.688,24,2.331,27,2.858,34,1.26,36,0.941,45,2.008,50,2.239,51,1.124,54,1.817,56,1.26,61,1.774,69,1.689,70,5.006,75,1.862,79,0.919,80,1.347,84,2.679,88,1.042,93,1.024,95,0.906,99,1.522,103,0.97,105,1.094,106,3.745,117,4.954,118,1.19,124,1.795,137,1.636,142,1.636,143,2.936,148,1.537,149,1.081,158,2.756,160,2.122,165,0.975,166,1.181,168,1.054,170,2.614,178,2.023,192,1.451,194,1.061,209,1.172,210,2.444,215,1.32,220,3.01,222,1.839,224,1.391,229,1.404,230,1.199,244,1.013,247,4.487,248,1.013,249,1.116,250,2.65,252,1.545,255,1.283,271,1.074,276,1.219,298,1.828,299,2.303,301,2.507,314,1.199,318,1.767,320,2.313,322,1.726,324,1.376,325,1.333,367,1.828,399,1.569,407,1.109,435,2.534,436,3.47,437,5.399,438,3.267,439,4.496,440,2.633,441,2.331,442,5.028,443,2.177,444,2.733,445,1.522,446,1.376,447,3.968,448,1.333,449,1.569,450,2.002,451,2.002,452,1.767,453,1.596,454,1.239,455,2.219,456,2.219,457,2.219,458,1.32,459,2.002,460,2.219,461,2.219,462,1.813,463,2.219,464,2.219,465,2.219,466,1.5,467,3.716,468,2.219,469,1.19,470,2.219,471,2.219,472,1.689,473,3.652,474,1.229,475,5.232,476,3.968,477,1.407,478,2.892,479,1.596,480,2.715,481,1.199,482,3.744,483,3.525,484,1.545,485,4.496,486,4.983,487,2.737,488,4.983,489,3.428,490,2.002,491,1.866,492,1.993,493,2.733,494,1.522,495,1.689,496,1.596,497,1.283,498,1.655,499,1.866,500,1.767,501,2.219,502,1.307,503,1.407,504,2.733,505,2.331,506,2.646,507,1.726,508,1.249,509,1.48,510,2.382,511,4.774,512,7.304,513,1.927,514,2.219,515,1.866,516,4.983,517,2.002,518,1.229,519,1.249,520,2.733,521,4.7,522,1.442,523,1.866,524,1.767,525,1.164,526,1.32,527,2.614,528,1.689,529,1.927,530,1.655,531,2.002,532,1.689,533,1.48,534,1.655,535,1.361,536,1.655,537,4.496,538,2.219,539,1.229,540,1.239,541,1.689,542,2.002,543,1.48,544,2.356,545,1.655,546,2.892,547,2.407,548,2.002,549,1.767,550,1.424]],["component/5",[2,0.4]],["title/6-1",[551,55.772]],["name/6-1",[]],["text/6-1",[]],["component/6-1",[]],["title/6-2",[552,52.612,553,36.001]],["name/6-2",[]],["text/6-2",[]],["component/6-2",[]],["title/6-3",[158,26.253,554,31.938,555,47.282]],["name/6-3",[]],["text/6-3",[]],["component/6-3",[]],["title/6-4",[556,72.259]],["name/6-4",[]],["text/6-4",[]],["component/6-4",[]],["title/6-5",[93,30.499,557,46.739]],["name/6-5",[]],["text/6-5",[]],["component/6-5",[]],["title/6",[93,30.499,557,46.739]],["name/6",[557,1.958]],["text/6",[7,3.026,8,1.021,36,1.491,52,2.608,83,2.388,84,1.823,107,1.587,132,2.051,137,2.26,147,2.18,149,2.705,158,2.593,165,1.545,170,1.844,173,2.416,185,1.67,186,2.675,194,2.655,205,1.506,206,1.661,209,1.857,210,1.455,229,2.051,284,2.156,296,2.573,299,2.686,320,4.401,324,2.18,346,1.712,382,3.44,408,5.532,429,2.411,436,2.447,441,3.407,447,2.799,473,2.379,524,4.422,552,4.422,553,3.751,556,5.01,557,2.486,558,2.256,559,6.731,560,2.956,561,2.675,562,2.799,563,4.065,564,3.515,565,1.561,566,2.872,567,2.956,568,4.065,569,3.515,570,3.171,571,6.024,572,3.053,573,2.256,574,7.867,575,2.112,576,2.284,577,3.515,578,2.799,579,8.552,580,9.961,581,3.171,582,3.515,583,9.533,584,1.979,585,2.284,586,2.956,587,4.065,588,4.087,589,3.171,590,3.809,591,5.553,592,1.886,593,3.515,594,1.756,595,3.515,596,3.053,597,3.304,598,5.758,599,6.21,600,3.272,601,5.239,602,2.486,603,1.817,604,2.014,605,2.675]],["component/6",[2,0.4]],["title/7-1",[174,25.897,606,36.29]],["name/7-1",[]],["text/7-1",[]],["component/7-1",[]],["title/7-2",[2,11.466,79,27.357]],["name/7-2",[]],["text/7-2",[]],["component/7-2",[]],["title/7-3",[435,53.413]],["name/7-3",[]],["text/7-3",[]],["component/7-3",[]],["title/7-4",[285,35.719,606,36.29]],["name/7-4",[]],["text/7-4",[]],["component/7-4",[]],["title/7",[220,33.691,607,42.408]],["name/7",[1,1.532]],["text/7",[2,1.758,7,1.632,8,1.226,9,2.108,45,2.23,53,2.068,57,3.485,72,2.486,75,3.135,77,2.382,78,3.089,79,4.511,83,2.68,88,3.004,90,4.011,93,1.948,95,1.722,103,2.797,105,2.081,112,3.469,113,2.535,118,2.263,119,1.707,136,2.51,138,2.51,140,2.535,148,1.707,154,2.005,156,2.317,158,2.987,172,2.151,173,3.75,174,3.028,192,1.611,194,2.017,199,3.458,200,2.741,201,2.853,207,1.915,212,1.993,216,2.418,218,2.166,222,3.739,223,1.845,224,2.646,227,2.938,228,2.535,248,1.926,249,2.122,250,2.872,255,4.986,258,2.182,285,2.281,287,3.147,298,2.03,308,1.699,320,2.97,367,3.077,407,2.108,431,2.777,432,3.672,433,3.089,435,5.152,448,2.535,449,4.525,453,3.035,458,2.51,481,2.281,492,3.355,509,2.814,520,3.035,524,3.36,535,2.588,550,4.106,573,2.708,606,2.317,608,3.211,609,3.548,610,4.219,611,3.548,612,4.219,613,3.282,614,3.548,615,3.983,616,3.36,617,3.36,618,2.616,619,3.448,620,4.219,621,3.665,622,3.211,623,2.646,624,3.211,625,3.089,626,2.894,627,2.418,628,2.985,629,2.894,630,4.219]],["component/7",[2,0.4]],["title/8-1",[149,27.384,631,44.772,632,43.731]],["name/8-1",[]],["text/8-1",[]],["component/8-1",[]],["title/8-2",[8,16.335,633,41.163,634,44.772]],["name/8-2",[]],["text/8-2",[]],["component/8-2",[]],["title/8-3",[8,16.335,635,42.794,636,44.772]],["name/8-3",[]],["text/8-3",[]],["component/8-3",[]],["title/8",[8,19.195,631,52.612]],["name/8",[631,2.204]],["text/8",[2,0.372,3,1.1,4,0.962,8,2.439,10,1.043,15,0.904,16,1.97,19,2.492,27,1.587,32,1.428,44,0.962,54,1.024,58,1.176,59,1.176,61,1,67,1.464,70,1.314,73,0.721,77,2.147,79,2.691,87,1.176,88,2.279,95,0.874,104,1.491,106,1.037,112,2.179,118,1.149,122,2.426,124,1.012,126,2.167,137,1.21,142,1.587,143,1.262,144,3.553,148,2.332,149,3.165,153,1.196,154,1.752,156,1.176,158,2.692,162,2.025,164,1.167,165,0.941,166,1.14,169,1.3,172,1.092,173,0.932,174,2.547,185,1.752,192,0.818,205,2.079,207,0.972,210,1.526,212,2.724,220,1.092,234,1.807,235,1.03,248,1.683,250,0.962,276,1.176,281,0.855,285,1.158,292,1.167,295,3.537,299,1.439,314,1.158,320,0.994,370,7.243,382,3.247,385,1.448,432,3.088,441,1.314,448,1.287,454,1.196,477,1.359,480,1.167,491,1.801,494,2.529,506,1.491,510,1.343,513,1.861,535,2.261,544,2.286,618,3.009,628,1.515,631,5.174,632,6.245,633,4.757,634,3.864,635,2.806,637,3.694,638,1.801,639,2.142,640,1.932,641,1.115,642,1.666,643,3.686,644,2.142,645,2.492,646,1.932,647,5.765,648,8.713,649,1.706,650,1.568,651,2.699,652,2.946,653,2.936,654,1.428,655,1.392,656,1.3,657,2.142,658,1.274,659,1.666,660,1.541,661,1.515,662,1.541,663,2.142,664,1.666,665,1.491,666,2.142,667,2.608,668,1.63,669,2.567,670,2.142,671,2.142,672,2.142,673,2.142,674,1.706,675,1.541,676,1.801,677,1.666,678,2.142,679,1.491,680,1.801,681,2.142,682,2.142,683,2.142,684,1.666,685,1.801,686,2.142,687,3.686,688,2.338,689,1.41,690,1.3,691,1.63,692,2.261,693,1.75,694,3.1,695,3.686,696,2.567,697,7.573,698,2.142,699,2.142,700,2.142,701,2.142,702,5.862,703,7.243,704,2.142,705,4.853,706,1.932,707,2.608,708,1.63,709,2.142,710,1.801,711,2.142,712,1.206,713,1.63,714,2.142,715,3.686,716,3.686,717,2.567,718,2.142,719,2.142,720,3.326,721,4.853,722,4.853,723,4.216,724,4.853,725,4.853,726,7.099,727,4.853,728,4.853,729,4.853,730,2.142,731,1.25,732,1.328,733,2.142,734,1.932,735,2.142,736,2.022,737,1.932,738,2.142,739,1.41,740,1.176,741,2.867,742,1.132,743,2.142,744,1.541,745,2.142,746,1.666,747,3.686,748,1.541,749,0.858,750,1.158,751,1.666,752,1.491,753,1.861,754,1.515,755,1.63,756,1.63]],["component/8",[2,0.4]],["title/9-1",[757,80.094]],["name/9-1",[]],["text/9-1",[]],["component/9-1",[]],["title/9-2",[443,32.222,758,44.772,759,47.282]],["name/9-2",[]],["text/9-2",[]],["component/9-2",[]],["title/9",[2,7.517,83,15.026,443,24.823,758,34.492,759,36.426]],["name/9",[758,2.204]],["text/9",[2,0.469,4,0.869,7,1.306,8,1.44,14,0.86,15,0.441,17,1.411,20,0.647,27,0.45,28,1.072,30,0.609,32,1.29,36,2.956,37,0.64,41,1.352,44,1.516,48,1.37,51,0.529,53,0.512,55,0.727,57,0.569,61,0.487,68,0.609,71,0.578,77,0.721,79,1.859,80,3.265,83,2.783,84,2.51,90,1.696,92,0.64,93,0.893,94,1.541,95,1.619,103,1.476,104,0.727,107,1.791,111,2.569,113,0.627,117,0.634,118,0.56,119,2.818,120,3.495,125,1.023,126,2.571,127,0.967,131,1.001,136,0.621,137,0.888,138,0.621,140,0.627,142,0.45,147,0.647,148,1.094,149,1.317,153,0.583,154,0.496,155,0.598,157,0.831,158,4.402,160,0.583,165,0.851,168,1.285,170,4.297,172,0.532,173,0.842,177,0.678,186,1.473,191,1.09,192,0.739,194,0.499,199,0.564,200,0.678,201,0.706,202,1.227,205,0.447,206,0.493,207,1.228,209,1.023,210,0.801,211,0.716,212,0.493,217,1.29,220,0.532,225,2.104,226,1.165,229,3.026,235,0.931,236,0.907,244,1.541,247,2.282,248,0.476,249,1.361,250,0.469,251,0.942,255,1.119,257,0.967,260,2.21,271,2.4,281,1.079,284,0.64,285,1.046,298,1.301,299,0.755,302,1.715,308,1.597,309,0.716,320,2.497,346,1.932,382,0.522,405,2.918,408,4.073,429,0.716,432,1.604,433,0.764,435,4.069,436,3.452,440,1.784,441,2.755,443,1.55,444,0.751,445,0.716,447,0.831,448,1.163,449,1.913,453,1.392,454,0.583,467,0.536,469,0.56,473,1.159,474,1.869,475,1.308,476,1.541,477,1.227,479,0.751,481,0.564,487,1.063,492,0.548,497,0.604,499,0.878,500,4.283,502,0.615,503,0.662,507,0.812,510,0.655,526,0.621,527,2.356,528,0.795,532,0.795,534,1.443,536,0.779,541,0.795,553,1.474,554,2.253,555,0.878,557,3.805,558,0.67,559,2.918,563,0.764,565,0.86,567,0.878,568,1.417,571,3.177,573,1.242,574,2.904,576,1.257,579,0.942,580,2.44,581,5.194,583,3.578,584,1.09,588,0.874,589,0.942,594,0.522,597,1.151,598,1.308,605,1.473,607,0.67,618,1.2,622,0.795,626,1.327,632,3.085,637,0.795,638,2.274,651,0.764,652,0.634,655,1.757,656,0.634,662,0.751,665,0.727,677,0.812,708,0.795,742,0.552,746,0.812,749,0.418,750,0.564,758,3.576,759,1.627,760,0.942,761,0.942,762,1.044,763,1.044,764,0.716,765,1.163,766,1.044,767,1.044,768,1.044,769,0.985,770,0.583,771,0.716,772,1.044,773,2.049,774,0.878,775,4.093,776,2.44,777,1.044,778,0.831,779,1.044,780,1.044,781,1.044,782,1.935,783,1.044,784,0.942,785,1.213,786,0.583,787,1.044,788,1.627,789,1.063,790,1.044,791,0.812,792,0.678,793,1.044,794,2.21,795,1.677,796,2.704,797,1.044,798,0.878,799,0.942,800,0.812,801,0.795,802,0.476,803,1.627,804,1.044,805,1.757,806,2.933,807,0.716,808,1.935,809,2.274,810,0.878,811,1.044,812,1.257,813,1.044,814,0.942,815,0.604,816,4.852,817,0.878,818,2.704,819,0.706,820,0.837,821,1.044,822,0.942,823,1.369,824,0.942,825,0.738,826,1.044,827,1.913,828,1.044,829,1.044,830,1.945,831,0.907,832,0.795,833,1.273,834,1.935,835,0.779,836,1.044,837,1.044,838,2.704,839,2.274,840,1.935,841,0.942,842,1.044,843,0.812,844,1.473,845,1.044,846,0.954,847,0.716,848,1.044,849,0.795,850,0.764,851,0.67,852,0.716,853,1.044,854,0.907,855,1.044,856,1.044,857,2.569,858,0.764,859,1.044,860,1.044,861,1.443,862,0.942,863,1.044,864,1.473,865,1.308,866,3.046,867,2.546,868,0.795,869,1.133,870,0.764,871,1.109,872,0.942,873,1.417,874,1.044,875,1.044,876,0.795,877,1.044,878,2.626,879,1.935,880,1.044,881,1.746,882,1.29,883,1.642,884,0.942,885,1.044,886,1.935,887,2.704,888,1.044,889,1.044,890,1.044,891,1.044,892,0.942,893,1.044,894,0.687,895,2.282,896,1.044,897,2.44,898,0.831,899,1.044,900,0.985,901,0.878,902,0.907,903,0.985,904,1.044,905,1.044,906,1.273,907,0.878,908,0.647,909,1.044,910,1.044,911,1.044,912,0.942,913,1.119,914,3.376,915,1.044,916,0.942,917,2.154,918,0.985,919,1.044,920,1.044,921,1.044,922,1.044,923,0.878,924,1.044,925,0.751,926,0.678,927,1.044,928,1.044,929,1.044,930,0.942,931,0.779,932,0.764,933,1.935,934,1.257,935,1.038,936,1.044,937,1.581,938,1.308,939,0.696,940,0.727,941,1.935,942,1.044,943,1.044,944,0.751,945,1.044,946,1.044,947,1.14,948,0.779,949,0.942,950,1.627,951,0.795,952,0.878,953,0.878,954,0.878,955,0.831,956,1.044,957,3.376,958,1.044,959,0.942,960,1.044,961,0.878,962,1.044,963,1.541,964,0.985,965,0.764,966,0.696,967,0.795]],["component/9",[2,0.4]],["title/10",[895,54.154]],["name/10",[895,1.871]],["text/10",[2,1.145,15,0.927,16,1.142,17,2.067,18,1.579,27,0.945,32,1.464,36,1.597,52,1.769,68,1.281,71,2.085,73,0.739,81,1.409,83,3.819,103,0.96,104,2.622,106,1.063,107,1.7,119,2.668,127,2.471,128,1.319,137,2.666,148,0.888,158,3.962,165,0.965,174,1.938,176,1.319,178,1.169,181,1.846,182,1.846,194,1.8,195,1.981,206,1.037,207,0.997,211,1.506,220,2.989,221,2.478,229,1.826,235,1.056,237,1.671,244,1.002,245,1.506,246,1.206,281,0.876,295,1.347,299,1.469,309,1.506,311,1.391,315,1.143,320,1.019,334,2.809,336,4.046,343,3.397,346,3.212,365,1.981,385,1.484,397,1.907,405,2.447,407,3.296,408,1.553,414,1.553,429,1.506,435,1.464,444,2.709,445,3.391,448,1.319,454,1.226,487,1.206,492,1.152,523,3.167,526,1.306,550,1.409,552,1.748,555,1.846,563,3.62,571,3.498,574,3.62,608,1.671,626,1.506,629,1.506,650,6.212,664,1.708,665,1.529,669,1.529,680,1.846,688,1.393,708,1.671,710,1.846,731,1.281,742,1.99,761,1.981,773,5.342,789,3.219,841,1.981,894,1.445,912,3.397,935,1.178,937,1.794,965,2.757,968,1.671,969,2.195,970,2.195,971,2.195,972,2.195,973,2.195,974,2.195,975,2.195,976,2.195,977,4.295,978,2.195,979,2.195,980,1.464,981,1.582,982,2.195,983,2.195,984,4.944,985,2.195,986,2.195,987,2.195,988,1.907,989,2.195,990,2.195,991,2.195,992,2.24,993,1.529,994,1.907,995,1.981,996,2.195,997,1.981,998,2.195,999,2.195,1000,3.845,1001,2.195,1002,2.999,1003,2.195,1004,2.999,1005,1.981,1006,2.757,1007,2.072,1008,4.929,1009,3.765,1010,2.195,1011,1.846,1012,2.195,1013,5.861,1014,2.195,1015,2.195,1016,1.671,1017,2.072,1018,1.794,1019,2.195,1020,2.195,1021,1.671,1022,2.195,1023,1.846,1024,2.195,1025,2.195,1026,2.195,1027,2.195,1028,4.46,1029,1.846,1030,2.195,1031,2.195,1032,2.195,1033,2.195,1034,2.195,1035,5.288,1036,1.981,1037,3.555,1038,1.846,1039,1.846,1040,4.944,1041,1.464,1042,1.748,1043,2.195,1044,1.981,1045,1.981,1046,1.846,1047,1.748,1048,1.846,1049,1.846,1050,1.981,1051,2.195,1052,2.195,1053,2.195,1054,2.195,1055,3.765,1056,3.765,1057,1.638,1058,2.195,1059,1.794,1060,2.195,1061,2.195,1062,2.195,1063,2.195,1064,2.195,1065,2.195,1066,1.981,1067,1.846,1068,2.195,1069,2.195,1070,2.195,1071,2.195,1072,2.195,1073,1.907,1074,2.195,1075,2.195,1076,2.195,1077,4.46,1078,3.397,1079,3.077,1080,2.195,1081,2.195,1082,1.178,1083,1.671,1084,2.195,1085,2.195,1086,2.195,1087,2.195,1088,2.195,1089,2.195,1090,2.195,1091,1.247,1092,2.195,1093,2.195,1094,2.195,1095,2.072,1096,1.846]],["component/10",[2,0.4]],["title/11",[207,36.358]],["name/11",[207,1.256]],["text/11",[2,1.706,5,4.135,83,3.41,95,3.195,109,5.15,126,3.495,194,3.742,207,3.552,250,4.414,408,6.954,530,5.838,635,5.956,775,7.483,934,5.085,1000,6.086,1041,5.218,1097,8.869,1098,7.825,1099,7.825,1100,7.825,1101,5.838,1102,6.581,1103,4.702,1104,4.8,1105,7.825]],["component/11",[2,0.4]],["title/12",[2,8.492,8,14.216,83,16.975,827,34.616]],["name/12",[1106,2.767]],["text/12",[2,1.793,5,2.914,6,0.933,8,2.904,14,1.131,15,1.075,16,1.672,17,1.064,27,1.838,33,1.434,36,2.339,38,1.162,48,1.289,52,2.59,67,1.011,73,3.136,83,2.494,87,1.398,90,1.596,95,1.039,96,2.852,97,2.027,98,1.232,103,1.867,119,2.23,125,1.345,127,1.272,137,3.281,156,1.398,158,3.014,174,0.998,183,1.596,185,1.21,194,2.636,207,1.156,210,1.054,220,3.968,221,3.629,222,1.232,226,1.096,249,1.281,255,1.472,256,1.698,271,2.067,281,1.016,285,1.376,299,0.994,300,1.801,301,1.281,311,1.577,320,2.56,326,0.94,334,5.364,336,5.532,346,2.685,350,6.583,384,4.637,385,1.721,399,1.801,432,1.21,433,1.864,435,1.698,437,1.899,438,1.149,448,3.313,453,1.831,454,1.422,458,1.515,475,1.721,526,1.515,533,1.698,539,1.41,544,1.579,554,1.446,567,2.141,585,1.654,594,2.134,600,1.5,608,1.938,629,1.746,646,2.297,669,1.773,692,1.562,742,1.345,773,2.592,789,1.398,812,1.654,827,5.848,833,1.675,835,1.899,852,4.427,864,1.938,865,1.721,870,1.864,882,1.698,907,2.141,931,1.899,935,1.366,947,1.5,950,2.141,966,1.698,992,2.54,1006,1.864,1008,5.428,1028,3.852,1029,2.141,1035,2.297,1046,2.141,1047,2.027,1048,2.141,1049,2.141,1050,2.297,1077,3.852,1078,2.297,1079,2.08,1082,1.366,1083,3.25,1107,2.546,1108,2.546,1109,3.852,1110,2.384,1111,2.212,1112,2.141,1113,1.801,1114,3.02,1115,3.852,1116,1.831,1117,4.269,1118,4.974,1119,2.29,1120,3.9,1121,2.546,1122,2.546,1123,2.546,1124,3.25,1125,2.546,1126,2.297,1127,2.027,1128,2.546,1129,2.546,1130,1.899,1131,2.546,1132,3.709,1133,2.546,1134,1.938,1135,2.297,1136,2.546,1137,2.546,1138,2.212,1139,1.899,1140,2.546,1141,2.141,1142,2.08,1143,2.297,1144,2.546,1145,1.864,1146,2.546,1147,2.546,1148,2.403,1149,2.546,1150,4.269,1151,2.027,1152,2.546,1153,2.546,1154,1.801,1155,2.141,1156,2.546,1157,2.546,1158,2.027,1159,2.546,1160,1.864,1161,2.546,1162,1.746]],["component/12",[2,0.4]],["title/13-1",[452,52.612,453,47.525]],["name/13-1",[]],["text/13-1",[]],["component/13-1",[]],["title/13-2",[137,18.456,188,44.772,1163,56.223]],["name/13-2",[]],["text/13-2",[]],["component/13-2",[]],["title/13-3",[1164,67.357]],["name/13-3",[]],["text/13-3",[]],["component/13-3",[]],["title/13",[2,7.517,83,15.026,188,34.492,452,34.492,1164,36.426]],["name/13",[188,0.897,452,0.897,1164,0.948]],["text/13",[2,1.919,8,1.148,34,2.244,36,1.676,73,2.805,79,1.636,83,4.082,96,1.745,105,3,119,2.46,121,4.413,127,1.974,178,2.103,223,1.727,224,2.477,246,4.074,271,3.59,299,2.374,315,3.168,329,3.729,333,3.563,334,6.215,336,5.829,337,3.563,340,6.691,346,3.612,350,5.906,361,5.487,362,5.487,363,4.629,373,3.563,374,3.563,375,3.563,376,3.322,377,3.563,390,5.487,413,3.432,414,2.794,429,2.709,633,2.892,636,4.843,675,2.841,742,3.919,773,3.692,865,2.671,867,2.535,993,4.235,1082,2.119,1083,3.006,1118,8.573,1145,2.892,1165,7.417,1166,3.563,1167,3.95,1168,6.082,1169,6.082,1170,5.115,1171,5.487,1172,2.398,1173,2.709,1174,2.671,1175,3.95,1176,5.487,1177,3.95,1178,3.563,1179,3.322,1180,3.95,1181,2.567,1182,3.563,1183,3.95,1184,4.629,1185,3.95,1186,5.115,1187,3.95,1188,3.95,1189,3.563,1190,5.115,1191,3.95,1192,3.729,1193,3.95,1194,3.563,1195,4.286,1196,4.286]],["component/13",[2,0.4]],["title/14-1",[165,29.041,320,30.673]],["name/14-1",[]],["text/14-1",[]],["component/14-1",[]],["title/14-2",[165,29.041,320,30.673]],["name/14-2",[]],["text/14-2",[]],["component/14-2",[]],["title/14",[2,7.517,67,17.205,83,15.026,1041,28.885,1197,30.642]],["name/14",[67,0.636,1197,1.133]],["text/14",[2,1.437,7,2.333,13,2.274,17,1.633,27,1.682,36,2.558,54,1.868,67,3.555,73,1.315,83,3.282,88,1.835,95,3.007,105,1.927,124,1.845,126,2.693,153,2.181,156,2.145,158,3.439,165,1.717,181,3.285,182,3.285,187,3.524,192,1.492,210,1.617,211,4.136,220,4.824,222,2.919,226,1.682,256,2.605,257,1.952,297,3.221,311,2.721,320,1.813,397,3.393,432,1.856,437,2.914,438,2.722,445,4.136,466,2.641,473,1.674,475,2.641,503,2.478,508,2.2,525,3.163,527,2.049,530,4.498,558,2.507,563,2.86,571,4.266,574,4.415,604,2.238,656,2.371,765,4.426,773,5.434,774,3.285,815,4.789,817,3.285,827,4.266,849,5.606,898,4.802,930,3.524,968,2.973,1006,5.392,1007,3.687,1008,5.071,1041,4.021,1044,3.524,1045,3.524,1046,3.285,1047,3.11,1048,3.285,1049,3.285,1082,3.951,1109,3.524,1120,4.266,1197,2.763,1198,3.906,1199,3.906,1200,4.238,1201,3.906,1202,3.11,1203,3.285,1204,3.393,1205,2.507,1206,3.906,1207,7.365,1208,3.906,1209,3.906,1210,3.906,1211,4.238,1212,4.238,1213,7.365,1214,6.03,1215,4.238,1216,3.906,1217,3.285,1218,4.238,1219,4.238,1220,4.238,1221,2.128,1222,3.192,1223,4.238,1224,3.038,1225,3.285]],["component/14",[2,0.4]],["title/15-1",[44,29.665,84,21.688]],["name/15-1",[]],["text/15-1",[]],["component/15-1",[]],["title/15-2",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1226,15.771,1227,16.372]],["name/15-2",[]],["text/15-2",[]],["component/15-2",[]],["title/15-3",[299,25.783,467,33.925]],["name/15-3",[]],["text/15-3",[]],["component/15-3",[]],["title/15-4",[473,28.308,883,40.108]],["name/15-4",[]],["text/15-4",[]],["component/15-4",[]],["title/15-5",[9,33.018,440,34.914]],["name/15-5",[]],["text/15-5",[]],["component/15-5",[]],["title/15-6",[84,21.688,625,48.371]],["name/15-6",[]],["text/15-6",[]],["component/15-6",[]],["title/15-7",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1228,24.826]],["name/15-7",[]],["text/15-7",[]],["component/15-7",[]],["title/15-8",[299,25.783,467,33.925]],["name/15-8",[]],["text/15-8",[]],["component/15-8",[]],["title/15-9",[9,33.018,440,34.914]],["name/15-9",[]],["text/15-9",[]],["component/15-9",[]],["title/15-10",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1229,22.487]],["name/15-10",[]],["text/15-10",[]],["component/15-10",[]],["title/15-11",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1230,27.518]],["name/15-11",[]],["text/15-11",[]],["component/15-11",[]],["title/15-12",[9,33.018,440,34.914]],["name/15-12",[]],["text/15-12",[]],["component/15-12",[]],["title/15-13",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1231,23.142]],["name/15-13",[]],["text/15-13",[]],["component/15-13",[]],["title/15-14",[299,25.783,467,33.925]],["name/15-14",[]],["text/15-14",[]],["component/15-14",[]],["title/15-15",[473,28.308,883,40.108]],["name/15-15",[]],["text/15-15",[]],["component/15-15",[]],["title/15-16",[9,33.018,440,34.914]],["name/15-16",[]],["text/15-16",[]],["component/15-16",[]],["title/15-17",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1232,22.487]],["name/15-17",[]],["text/15-17",[]],["component/15-17",[]],["title/15-18",[299,25.783,467,33.925]],["name/15-18",[]],["text/15-18",[]],["component/15-18",[]],["title/15-19",[473,28.308,883,40.108]],["name/15-19",[]],["text/15-19",[]],["component/15-19",[]],["title/15-20",[9,33.018,440,34.914]],["name/15-20",[]],["text/15-20",[]],["component/15-20",[]],["title/15-21",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1233,27.518]],["name/15-21",[]],["text/15-21",[]],["component/15-21",[]],["title/15-22",[299,25.783,467,33.925]],["name/15-22",[]],["text/15-22",[]],["component/15-22",[]],["title/15-23",[473,28.308,883,40.108]],["name/15-23",[]],["text/15-23",[]],["component/15-23",[]],["title/15-24",[9,33.018,440,34.914]],["name/15-24",[]],["text/15-24",[]],["component/15-24",[]],["title/15-25",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1234,25.977]],["name/15-25",[]],["text/15-25",[]],["component/15-25",[]],["title/15-26",[299,25.783,467,33.925]],["name/15-26",[]],["text/15-26",[]],["component/15-26",[]],["title/15-27",[473,28.308,883,40.108]],["name/15-27",[]],["text/15-27",[]],["component/15-27",[]],["title/15-28",[9,33.018,440,34.914]],["name/15-28",[]],["text/15-28",[]],["component/15-28",[]],["title/15-29",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1235,27.518]],["name/15-29",[]],["text/15-29",[]],["component/15-29",[]],["title/15-30",[299,25.783,467,33.925]],["name/15-30",[]],["text/15-30",[]],["component/15-30",[]],["title/15-31",[473,28.308,883,40.108]],["name/15-31",[]],["text/15-31",[]],["component/15-31",[]],["title/15-32",[9,33.018,440,34.914]],["name/15-32",[]],["text/15-32",[]],["component/15-32",[]],["title/15-33",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1236,27.518]],["name/15-33",[]],["text/15-33",[]],["component/15-33",[]],["title/15-34",[299,25.783,467,33.925]],["name/15-34",[]],["text/15-34",[]],["component/15-34",[]],["title/15-35",[473,28.308,883,40.108]],["name/15-35",[]],["text/15-35",[]],["component/15-35",[]],["title/15-36",[9,33.018,440,34.914]],["name/15-36",[]],["text/15-36",[]],["component/15-36",[]],["title/15-37",[84,21.688,405,42.931]],["name/15-37",[]],["text/15-37",[]],["component/15-37",[]],["title/15-38",[84,8.419,119,10.375,137,21.286,263,14.203,405,16.666,508,14.444,1227,15.259,1237,23.139]],["name/15-38",[]],["text/15-38",[]],["component/15-38",[]],["title/15-39",[299,25.783,467,33.925]],["name/15-39",[]],["text/15-39",[]],["component/15-39",[]],["title/15-40",[473,28.308,883,40.108]],["name/15-40",[]],["text/15-40",[]],["component/15-40",[]],["title/15-41",[9,33.018,440,34.914]],["name/15-41",[]],["text/15-41",[]],["component/15-41",[]],["title/15-42",[84,8.419,119,10.375,137,21.286,263,14.203,405,16.666,508,14.444,1227,15.259,1238,23.139]],["name/15-42",[]],["text/15-42",[]],["component/15-42",[]],["title/15-43",[299,25.783,467,33.925]],["name/15-43",[]],["text/15-43",[]],["component/15-43",[]],["title/15-44",[473,28.308,883,40.108]],["name/15-44",[]],["text/15-44",[]],["component/15-44",[]],["title/15-45",[9,33.018,440,34.914]],["name/15-45",[]],["text/15-45",[]],["component/15-45",[]],["title/15-46",[84,8.419,119,10.375,137,21.286,263,14.203,405,16.666,508,14.444,1227,15.259,1239,25.648]],["name/15-46",[]],["text/15-46",[]],["component/15-46",[]],["title/15-47",[473,34.317]],["name/15-47",[]],["text/15-47",[]],["component/15-47",[]],["title/15-48",[84,8.419,119,10.375,137,21.286,263,14.203,405,16.666,508,14.444,1227,15.259,1240,25.648]],["name/15-48",[]],["text/15-48",[]],["component/15-48",[]],["title/15",[155,45.902]],["name/15",[155,1.586]],["text/15",[1,0.366,2,1.775,4,0.297,5,0.665,6,1.67,7,0.697,8,1.813,9,2.914,10,0.613,13,1.196,14,2.024,15,1.162,16,1.949,17,1.326,19,0.646,25,3.754,26,2.822,28,0.697,36,0.975,38,0.574,39,0.68,40,1.564,41,0.9,43,0.764,45,0.665,51,1.164,53,0.324,54,0.316,56,0.375,58,0.691,59,2.151,61,0.588,63,3.449,64,0.526,65,0.475,67,2.875,68,0.735,71,0.366,73,0.927,74,0.772,79,0.521,80,0.401,83,1.474,84,1.762,87,0.363,88,0.846,90,0.789,92,0.405,93,0.305,94,1.002,95,1.599,96,1.572,98,2.345,100,1.367,103,0.289,105,0.326,106,0.32,107,1.432,112,1.597,113,0.397,114,0.54,118,0.354,119,0.509,121,1.367,123,0.78,124,0.312,125,0.665,126,1.026,130,1.08,137,0.754,141,0.435,142,0.776,148,1.96,149,0.322,153,0.703,154,0.314,155,0.721,158,0.841,159,2.057,162,0.363,165,2.249,166,0.67,168,0.314,170,0.347,173,0.287,175,0.772,176,1.381,190,0.401,191,1.294,192,1.851,194,1.099,199,0.974,202,0.419,205,0.539,206,0.851,207,0.818,210,0.274,211,0.863,212,2.007,214,0.435,216,0.721,218,0.925,220,0.337,222,0.609,223,2.549,229,1.017,230,0.68,231,0.726,234,0.617,235,0.318,237,0.503,244,0.302,246,2.333,248,1.624,249,0.906,254,0.828,255,0.382,256,0.441,258,1.188,281,1.42,288,0.697,295,1.946,298,0.318,299,2.509,308,0.726,311,1.446,312,1.532,315,4.158,316,1.319,319,0.369,320,0.307,324,0.78,326,2.375,346,0.613,382,1.376,385,0.851,405,0.429,407,1.376,414,0.89,431,0.435,432,0.856,438,2.727,440,1.455,441,0.405,443,0.379,467,1.827,469,0.354,473,1.678,474,0.697,480,4.161,487,0.363,497,1.042,503,0.798,504,0.905,507,0.514,508,0.372,523,1.058,525,1.866,527,1.206,535,0.405,540,1.006,544,0.41,545,0.493,546,0.503,549,1.435,553,1.5,554,0.375,565,0.8,575,1.654,576,0.818,584,0.372,588,0.298,590,1.236,592,0.967,600,0.389,601,1.371,603,0.651,604,1.033,609,0.556,618,0.41,625,0.484,626,0.453,642,0.979,651,0.484,652,0.764,655,0.429,658,1.072,660,0.475,667,0.467,668,2.414,674,0.526,679,0.46,680,1.933,689,0.435,707,0.467,712,0.372,713,0.958,739,0.435,748,0.475,749,0.265,750,0.357,764,0.453,765,0.397,771,0.453,784,0.596,785,0.414,792,0.429,795,0.41,798,0.556,802,1.624,820,2.523,833,0.828,835,1.344,847,0.453,851,0.424,861,0.493,865,0.851,876,0.503,882,0.441,883,0.401,894,0.435,906,0.435,934,0.429,939,0.441,951,0.958,965,1.319,981,0.757,993,0.46,1002,1.83,1021,1.371,1041,0.441,1042,0.526,1047,0.526,1073,1.093,1082,0.354,1091,0.715,1103,0.397,1104,0.405,1110,0.703,1113,0.89,1115,0.596,1138,0.574,1145,0.484,1171,2.073,1174,0.851,1181,0.429,1205,0.424,1224,0.514,1231,0.556,1241,0.379,1242,0.503,1243,0.661,1244,0.661,1245,1.435,1246,1.258,1247,1.258,1248,0.424,1249,1.959,1250,0.514,1251,0.467,1252,1.626,1253,0.958,1254,0.397,1255,0.89,1256,2.592,1257,0.526,1258,0.772,1259,2.552,1260,2.552,1261,0.556,1262,2.175,1263,2.169,1264,0.441,1265,2.16,1266,0.661,1267,0.661,1268,0.661,1269,0.661,1270,0.661,1271,0.661,1272,0.661,1273,0.661,1274,0.661,1275,0.661,1276,0.661,1277,0.661,1278,0.661,1279,0.661,1280,0.322,1281,0.556,1282,0.863,1283,0.503,1284,0.624,1285,0.556,1286,1.058,1287,0.379,1288,0.764,1289,1.533,1290,0.556,1291,1.002,1292,2.298,1293,0.46,1294,0.467,1295,0.503,1296,0.493,1297,1.258,1298,0.484,1299,0.78,1300,0.596,1301,0.556,1302,0.661,1303,0.596,1304,2.753,1305,1.472,1306,0.661,1307,1.607,1308,0.441,1309,0.475,1310,0.424,1311,0.905,1312,0.46,1313,0.596,1314,0.952,1315,0.342,1316,0.46,1317,2.392,1318,0.596,1319,0.556,1320,0.661,1321,1.787,1322,0.828,1323,0.756,1324,1.802,1325,0.661,1326,0.661,1327,0.661,1328,0.493,1329,0.661,1330,0.661,1331,1.028,1332,1.258,1333,1.135,1334,0.979,1335,0.574,1336,0.484,1337,1.402,1338,0.596,1339,0.414,1340,0.661,1341,0.514,1342,0.453,1343,1.435,1344,0.596,1345,1.258,1346,0.54,1347,0.661,1348,0.596,1349,0.661,1350,0.624,1351,0.661,1352,0.661,1353,0.661,1354,1.554,1355,0.661,1356,0.735,1357,0.661,1358,0.661,1359,0.661,1360,0.661,1361,1.028,1362,0.661,1363,0.661,1364,0.661,1365,0.596,1366,0.414,1367,0.661,1368,0.661,1369,0.661,1370,0.661,1371,0.661,1372,0.503,1373,0.89,1374,0.596,1375,0.828,1376,1.319,1377,1.626,1378,0.414,1379,0.661,1380,0.484,1381,0.484,1382,0.958,1383,0.54,1384,1.296,1385,0.54,1386,0.493,1387,0.375,1388,0.596,1389,0.556,1390,0.357,1391,1.058,1392,0.905,1393,0.89,1394,0.661,1395,1.592,1396,0.661,1397,1.402,1398,0.556,1399,0.661,1400,0.661,1401,0.661,1402,1.093,1403,1.093,1404,0.661,1405,0.414,1406,0.526,1407,0.661,1408,0.839,1409,1.058,1410,0.596,1411,1.093,1412,0.661,1413,0.328,1414,0.798,1415,0.661,1416,0.372,1417,0.36,1418,0.661,1419,0.661,1420,0.335,1421,0.661,1422,0.661,1423,2.144,1424,0.661,1425,1.258,1426,0.661,1427,0.484,1428,0.54,1429,0.467,1430,0.661,1431,0.661,1432,0.661,1433,0.661,1434,1.533,1435,1.157,1436,0.661,1437,0.424,1438,1.13,1439,0.661,1440,0.661,1441,0.661,1442,0.661,1443,0.661,1444,0.493,1445,0.921,1446,0.596,1447,0.556,1448,0.514,1449,0.447,1450,0.419,1451,0.46,1452,0.503,1453,0.661,1454,0.503,1455,0.661,1456,1.028,1457,0.514,1458,0.596,1459,0.661,1460,0.661,1461,1.033,1462,0.514,1463,0.484,1464,0.661,1465,0.661,1466,0.467,1467,0.661,1468,0.67,1469,0.526,1470,0.503,1471,0.839,1472,1.135,1473,0.405,1474,0.475,1475,0.661,1476,0.661,1477,0.661,1478,0.484,1479,0.503,1480,0.596,1481,0.54,1482,0.661,1483,0.661,1484,0.661,1485,0.661,1486,0.661,1487,0.661,1488,0.514,1489,0.661,1490,0.372,1491,1.258,1492,1.058,1493,0.661,1494,0.54,1495,0.453,1496,0.661,1497,0.574,1498,0.526,1499,0.441,1500,0.661,1501,0.366,1502,0.556,1503,1.258,1504,0.661,1505,0.54,1506,0.46,1507,0.574,1508,0.503,1509,0.526,1510,1.093,1511,0.661,1512,0.574,1513,0.661,1514,0.661,1515,0.661,1516,0.405,1517,0.661,1518,0.596,1519,0.596,1520,0.661,1521,0.921,1522,0.958,1523,0.596,1524,0.661,1525,0.661,1526,0.526,1527,0.467,1528,0.401,1529,0.453,1530,0.596,1531,0.54,1532,0.661,1533,0.661,1534,0.41,1535,0.661,1536,0.661,1537,0.661,1538,0.596,1539,1.802,1540,0.475,1541,0.393,1542,0.574,1543,0.484,1544,0.624,1545,0.661,1546,1.258,1547,0.661,1548,0.661,1549,0.979,1550,0.574,1551,1.002,1552,0.596,1553,0.661,1554,0.556,1555,0.556,1556,0.503,1557,0.596,1558,0.939,1559,0.453,1560,0.596,1561,0.453,1562,0.661,1563,0.661,1564,0.661,1565,0.484,1566,0.661,1567,0.661,1568,0.661,1569,0.347,1570,0.661,1571,0.661,1572,0.661]],["component/15",[2,0.4]],["title/16-1",[2,11.466,83,22.92]],["name/16-1",[]],["text/16-1",[]],["component/16-1",[]],["title/16",[487,43.994]],["name/16",[1,1.532]],["text/16",[2,1.839,6,2.882,8,2.765,14,2.486,15,1.499,16,2.384,19,2.874,25,2.093,26,2.709,27,1.529,31,2.178,36,4.037,38,3.163,45,1.876,52,1.667,53,1.74,57,1.935,68,2.072,71,1.966,73,1.885,75,2.743,80,2.155,83,3.52,87,3.074,90,3.51,93,1.639,95,2.285,96,4.205,99,2.435,103,1.552,112,3.111,121,2.112,126,1.586,137,1.165,158,1.658,168,1.687,170,1.862,199,3.026,205,2.398,207,2.541,212,1.677,214,2.336,215,2.112,216,2.035,220,1.81,230,3.026,235,1.708,246,3.074,249,1.786,271,2.709,295,4.251,326,2.068,336,4.251,432,1.687,467,1.823,474,1.966,487,1.95,492,1.862,520,2.554,550,2.279,565,1.577,592,3.003,608,2.702,667,2.512,668,2.702,674,2.827,732,4.297,773,2.155,789,1.95,850,2.599,857,2.702,861,2.649,966,4.621,992,2.112,1002,2.827,1057,2.649,1091,3.18,1104,5.25,1116,4.026,1126,3.203,1155,2.986,1197,2.512,1259,3.363,1260,3.363,1289,2.368,1303,3.203,1323,2.133,1434,2.368,1474,2.554,1507,4.863,1558,2.649,1573,3.733,1574,2.368,1575,3.55,1576,2.761,1577,3.55,1578,2.599,1579,2.133,1580,3.55,1581,2.827,1582,3.203,1583,2.761,1584,2.901,1585,2.702,1586,3.084,1587,2.986,1588,3.203,1589,2.599,1590,4.354,1591,2.827,1592,3.55]],["component/16",[2,0.4]],["title/17-1",[8,14.216,119,19.793,346,23.833,1593,38.965]],["name/17-1",[]],["text/17-1",[]],["component/17-1",[]],["title/17-2",[203,44.06,1130,49.288]],["name/17-2",[]],["text/17-2",[]],["component/17-2",[]],["title/17-3",[203,44.06,1508,50.288]],["name/17-3",[]],["text/17-3",[]],["component/17-3",[]],["title/17-4",[203,44.06,1248,42.408]],["name/17-4",[]],["text/17-4",[]],["component/17-4",[]],["title/17-5",[867,42.408,1291,52.612]],["name/17-5",[]],["text/17-5",[]],["component/17-5",[]],["title/17-6",[1594,52.612,1595,55.562]],["name/17-6",[]],["text/17-6",[]],["component/17-6",[]],["title/17-7",[36,23.851,96,24.844,130,19.142]],["name/17-7",[]],["text/17-7",[]],["component/17-7",[]],["title/17",[83,19.505,336,34.491,350,44.772]],["name/17",[1596,2.767]],["text/17",[2,0.619,4,1.601,5,0.766,6,3.278,7,2.173,8,2.69,11,0.942,14,1.16,15,2.769,19,1.341,25,2.453,27,1.878,28,0.802,31,0.889,32,0.966,33,0.816,36,2.137,41,1.305,44,1.601,46,0.994,48,1.806,52,1.227,53,1.748,54,1.249,55,1.009,58,1.435,61,0.677,67,0.576,71,0.802,72,0.854,76,1.742,83,0.503,93,2.825,95,2.056,96,3.483,97,4.472,98,1.264,99,2.446,107,2.535,118,1.913,119,2.95,125,0.766,126,2.733,127,5.234,130,1.485,132,0.846,148,1.056,152,1.219,156,0.796,159,0.838,160,1.458,165,1.567,168,0.689,173,1.897,176,2.142,184,0.871,190,2.648,191,1.471,192,1.362,194,0.693,203,2.909,206,1.234,209,0.766,224,2.236,230,1.412,234,2.138,246,1.435,249,1.794,250,1.173,258,1.351,270,1.307,271,1.264,272,1.742,285,0.783,289,0.862,290,2.66,297,1.559,298,0.697,299,1.391,301,3.3,322,1.127,324,0.899,326,0.965,336,3.445,346,3.704,385,0.98,399,3.973,407,1.305,428,1.025,431,1.719,432,3.467,438,1.179,443,0.83,446,0.899,448,0.871,473,1.119,474,0.802,480,1.423,481,0.783,484,1.009,492,0.76,502,0.854,509,0.966,525,0.76,530,1.081,541,1.988,551,1.009,557,1.025,573,0.93,584,0.816,585,0.942,597,1.554,598,0.98,600,2.57,613,2.773,623,1.638,641,0.755,650,1.061,658,0.862,668,1.103,688,0.919,740,1.435,741,2.031,773,3.982,775,4.275,789,4.595,791,1.127,794,1.184,802,1.192,810,2.196,820,0.627,827,5.16,851,0.93,867,0.93,870,1.061,917,1.154,934,0.942,935,0.777,952,2.196,966,1.742,967,2.714,968,1.103,992,0.862,1000,2.773,1016,1.103,1018,1.184,1082,0.777,1083,2.714,1104,1.602,1116,2.565,1119,0.777,1120,3.563,1124,1.988,1130,1.081,1139,1.081,1160,1.061,1197,4.64,1221,1.423,1248,3.605,1254,1.569,1290,2.196,1291,1.154,1294,1.025,1305,2.134,1314,0.766,1319,1.219,1323,2.142,1344,1.307,1378,0.909,1383,1.184,1387,0.823,1454,1.103,1461,0.83,1462,1.127,1499,1.742,1508,1.103,1569,0.76,1576,1.127,1581,1.154,1586,1.259,1587,2.196,1593,1.154,1594,3.473,1595,2.196,1597,1.307,1598,1.449,1599,1.307,1600,2.612,1601,2.61,1602,1.368,1603,1.307,1604,1.449,1605,1.307,1606,2.134,1607,1.219,1608,2.612,1609,2.356,1610,3.935,1611,1.449,1612,3.098,1613,1.449,1614,2.612,1615,1.449,1616,3.565,1617,3.668,1618,1.154,1619,1.307,1620,1.307,1621,1.449,1622,2.612,1623,0.966,1624,3.219,1625,1.307,1626,0.942,1627,1.025,1628,1.368,1629,1.449,1630,1.307,1631,1.219,1632,1.449,1633,2.612,1634,1.449,1635,1.307,1636,1.154,1637,1.009,1638,1.449,1639,1.061,1640,1.009,1641,1.154,1642,1.449,1643,1.449,1644,1.449,1645,1.449,1646,1.184,1647,1.307,1648,1.449,1649,1.184,1650,1.307,1651,7.112,1652,0.919,1653,1.307,1654,1.103,1655,1.449,1656,2.612,1657,1.219,1658,1.449,1659,2.356,1660,1.127,1661,1.307,1662,1.307,1663,1.449,1664,1.307,1665,1.307,1666,1.449,1667,1.449,1668,1.449,1669,1.307,1670,1.009,1671,1.103]],["component/17",[2,0.4]],["title/18",[137,16.062,440,25.858,527,25.669,528,37.244]],["name/18",[527,1.452]],["text/18",[126,4.141,137,3.044,297,4.055,440,4.9,475,6.269,527,5.718,528,7.058,1082,4.974,1672,9.272]],["component/18",[2,0.4]],["title/19",[137,14.218,218,22.241,440,22.889,441,26.572,527,22.722]],["name/19",[218,0.822,527,0.84]],["text/19",[]],["component/19",[2,0.4]],["title/20-1",[892,59.605,1636,52.612]],["name/20-1",[]],["text/20-1",[]],["component/20-1",[]],["title/20",[867,42.408,1636,52.612]],["name/20",[867,1.776]],["text/20",[2,1.378,9,4.959,83,3.443,107,3.586,131,4.107,148,3.213,222,3.845,255,4.594,432,3.775,441,6.088,531,7.166,655,5.161,750,4.294,805,6.448,815,4.594,867,5.098,895,5.371,1135,7.166,1334,6.178,1636,9.292,1673,6.68]],["component/20",[2,0.4]],["title/21-1",[551,55.772]],["name/21-1",[]],["text/21-1",[]],["component/21-1",[]],["title/21-2",[802,36.56]],["name/21-2",[]],["text/21-2",[]],["component/21-2",[]],["title/21-3",[212,31.214,256,44.06]],["name/21-3",[]],["text/21-3",[]],["component/21-3",[]],["title/21-4",[6,24.21,212,31.214]],["name/21-4",[]],["text/21-4",[]],["component/21-4",[]],["title/21-5",[100,39.308,212,31.214]],["name/21-5",[]],["text/21-5",[]],["component/21-5",[]],["title/21-6",[5,34.914,77,24.608]],["name/21-6",[]],["text/21-6",[]],["component/21-6",[]],["title/21-7",[84,16.062,212,23.118,913,28.297,1574,32.632]],["name/21-7",[]],["text/21-7",[]],["component/21-7",[]],["title/21-8",[6,15.872,100,25.77,105,21.366,308,17.441,1674,37.63]],["name/21-8",[]],["text/21-8",[]],["component/21-8",[]],["title/21",[192,25.234,229,24.407]],["name/21",[1,1.532]],["text/21",[2,1.172,3,0.416,4,1.862,5,0.807,6,3.207,7,1.439,8,2.45,11,0.526,14,0.962,15,1.75,17,0.339,19,1.91,22,0.573,24,0.937,25,2.601,26,1.325,27,0.932,28,0.845,31,0.497,36,0.344,39,0.438,41,2.072,44,0.972,45,0.428,47,0.54,51,1.884,52,0.38,53,1.824,54,1.035,57,1.18,58,1.504,61,0.378,67,1.087,68,0.473,71,0.845,73,0.273,74,0.497,75,1.342,77,3.053,79,2.879,83,0.751,84,2.217,86,0.617,92,0.937,93,0.705,95,3.182,97,0.645,98,0.739,100,5.146,102,1.23,103,1.813,104,0.564,105,0.4,106,0.392,107,0.366,108,0.645,109,0.533,110,0.46,112,2.834,118,0.435,119,0.328,122,5.129,123,0.502,125,1.446,127,0.763,130,2.602,133,0.556,137,2.935,142,1.179,148,3.028,149,1.054,155,1.864,158,1.737,162,0.445,164,0.441,165,0.952,166,1.153,173,1.191,174,0.598,175,0.497,176,0.917,178,0.431,184,1.645,185,0.726,192,3.787,193,0.645,194,0.387,198,1.288,202,0.514,205,1.594,206,0.721,207,0.983,208,0.731,209,0.428,212,4.087,220,0.413,222,0.739,223,0.947,226,0.349,227,0.564,229,3.195,230,0.825,231,1.102,234,0.748,235,0.734,244,0.697,247,1.851,248,1.485,249,1.377,250,1.229,254,1.005,255,0.883,256,1.018,257,0.763,271,2.195,273,0.681,274,0.63,281,0.323,284,0.497,286,1.569,292,0.832,293,1.248,297,0.354,298,1.042,299,1.068,301,1.377,302,0.514,308,2.338,311,1.807,313,2.6,314,2.452,315,2.159,320,1.51,325,1.645,326,1.929,336,0.497,345,1.098,363,0.617,367,0.734,382,0.405,407,0.763,443,0.875,446,0.502,454,2.078,462,1.248,473,0.654,483,0.573,487,0.839,492,0.801,502,0.477,503,0.514,505,0.497,506,1.906,509,0.54,518,1.516,525,1.436,539,1.199,542,0.731,543,0.54,548,0.731,551,0.564,554,0.46,558,1.39,573,0.52,588,0.366,592,1.161,597,0.908,600,0.9,602,0.573,603,1.924,607,0.52,611,0.681,614,0.681,623,2.04,625,0.593,628,0.573,633,0.593,641,0.422,650,0.593,652,2.259,654,0.54,658,1.288,660,0.583,684,1.187,731,2.172,740,0.445,741,0.63,749,1.491,785,0.508,789,0.445,802,1.698,810,1.284,812,1.407,820,0.661,844,0.617,846,0.4,849,0.617,851,1.757,906,0.533,908,0.502,913,0.468,931,1.139,934,1.407,935,1.468,947,2.443,966,0.54,980,0.54,992,0.908,993,0.564,1011,0.681,1023,0.681,1041,0.54,1073,0.704,1091,1.848,1113,0.573,1119,1.468,1120,0.573,1154,1.08,1184,0.617,1242,0.617,1249,1.358,1265,2.259,1280,1.333,1282,0.556,1291,1.216,1293,0.564,1294,0.573,1296,0.604,1298,0.593,1310,0.52,1314,2.585,1317,0.704,1318,0.731,1322,1.801,1339,2.6,1366,0.508,1375,0.533,1390,2.242,1408,0.54,1420,0.41,1429,1.08,1445,1.585,1457,1.684,1461,0.464,1468,1.153,1471,0.54,1474,1.098,1506,0.564,1507,0.704,1516,0.497,1527,0.573,1528,0.492,1549,0.63,1569,0.801,1573,0.54,1574,1.444,1579,0.917,1593,0.645,1601,0.593,1603,0.731,1623,1.444,1624,0.464,1627,0.573,1657,0.681,1665,1.377,1669,0.731,1670,0.564,1674,0.704,1675,0.81,1676,0.81,1677,3.025,1678,0.81,1679,1.585,1680,0.645,1681,0.731,1682,0.645,1683,1.005,1684,0.81,1685,0.81,1686,0.81,1687,0.81,1688,0.645,1689,0.573,1690,0.731,1691,0.81,1692,0.81,1693,0.81,1694,0.81,1695,0.81,1696,0.81,1697,2.18,1698,0.81,1699,0.879,1700,0.879,1701,1.216,1702,0.681,1703,0.879,1704,0.879,1705,0.879,1706,0.879,1707,0.583,1708,1.724,1709,0.879,1710,1.527,1711,0.81,1712,0.81,1713,0.704,1714,0.681,1715,1.248,1716,0.681,1717,0.645,1718,2.469,1719,2.469,1720,1.953,1721,0.731,1722,0.456,1723,1.656,1724,0.63,1725,0.879,1726,0.765,1727,0.52,1728,0.879,1729,0.514,1730,0.81,1731,0.81,1732,0.81,1733,1.881,1734,0.662,1735,1.527,1736,0.81,1737,0.81,1738,0.593,1739,0.81,1740,0.731,1741,0.81,1742,4.535,1743,0.81,1744,0.681,1745,1.527,1746,0.765,1747,0.645,1748,0.765,1749,1.284,1750,0.81,1751,1.527,1752,0.879,1753,1.881,1754,2.165,1755,1.656,1756,1.656,1757,1.656,1758,0.879,1759,0.604,1760,0.533,1761,1.527,1762,0.731,1763,0.765,1764,0.81,1765,0.81,1766,0.731,1767,0.81,1768,1.377,1769,0.81,1770,1.377,1771,0.573,1772,0.81,1773,0.81,1774,0.731,1775,0.731,1776,0.81,1777,0.765,1778,1.032,1779,0.662,1780,0.765,1781,0.81,1782,0.879,1783,0.681,1784,0.731,1785,0.81,1786,0.81,1787,0.704,1788,0.645,1789,0.765,1790,0.63,1791,1.377,1792,1.527,1793,0.81]],["component/21",[2,0.4]],["title/22-1",[79,20.261,1468,26.052,1794,38.965,1795,39.985]],["name/22-1",[]],["text/22-1",[]],["component/22-1",[]],["title/22",[246,36.29,505,40.531]],["name/22",[294,2.327]],["text/22",[8,2.115,34,2.854,41,2.511,44,3.269,79,4.818,80,4.42,83,1.743,92,3.082,103,2.197,112,2.256,122,3.307,127,3.639,148,2.032,154,2.388,158,3.999,166,2.675,174,1.969,175,3.082,192,3.271,202,4.618,210,2.08,219,3.908,220,4.788,234,4.602,235,4.795,249,3.663,258,2.598,294,4.225,314,2.716,437,3.748,438,2.268,442,6.754,458,2.989,467,2.58,475,4.923,525,2.636,533,3.351,544,3.116,545,3.748,553,4.666,565,2.232,596,6.326,623,3.151,662,3.614,669,3.499,690,3.05,802,2.293,935,2.695,1082,2.695,1551,4.001,1778,5.79,1794,6.819,1795,4.106,1796,3.908,1797,4.533,1798,4.533,1799,5.451,1800,5.451,1801,3.554,1802,5.024,1803,4.533,1804,4.225]],["component/22",[2,0.4]],["title/23",[967,60.964]],["name/23",[1,1.532]],["text/23",[2,1.623,8,2.718,83,3.245,93,4.318,158,4.368,286,5.361,432,4.446,607,6.005,1082,5.019]],["component/23",[2,0.4]],["title/24",[137,16.062,440,25.858,527,25.669,528,37.244]],["name/24",[527,1.452]],["text/24",[126,4.141,137,3.044,297,4.055,440,4.9,475,6.269,527,5.718,528,7.058,1082,4.974,1672,9.272]],["component/24",[2,0.4]],["title/25",[229,24.407,669,46.006]],["name/25",[1805,2.767]],["text/25",[8,2.647,76,6.077,126,4.069,229,3.366,297,3.984,669,6.345,717,6.345,1082,5.787,1471,6.077,1803,8.22,1806,9.112]],["component/25",[2,0.4]],["title/26-1",[48,33.462,438,29.827]],["name/26-1",[]],["text/26-1",[]],["component/26-1",[]],["title/26-2",[221,43.481,1807,57.399]],["name/26-2",[]],["text/26-2",[]],["component/26-2",[]],["title/26-3",[492,29.494,662,40.443,690,34.131]],["name/26-3",[]],["text/26-3",[]],["component/26-3",[]],["title/26-4",[7,25.56,773,40.108]],["name/26-4",[]],["text/26-4",[]],["component/26-4",[]],["title/26",[2,9.757,158,26.253,617,44.772]],["name/26",[617,2.204]],["text/26",[2,0.772,5,1.414,8,2.457,13,1.009,15,1.129,48,2.254,50,1.576,54,2.128,59,1.469,76,1.784,79,1.843,83,3.289,93,1.235,95,2.332,102,1.52,103,1.17,105,2.818,106,1.295,107,1.208,118,1.435,123,1.659,124,1.264,125,1.414,126,1.195,136,1.592,137,0.878,141,1.761,148,1.082,153,1.494,154,1.271,156,2.444,158,3.452,159,2.573,164,2.425,165,1.176,166,1.424,173,3.216,191,1.507,192,2.182,194,1.279,198,1.592,203,1.784,207,2.02,210,1.843,216,2.55,221,5.566,224,1.678,234,1.311,244,1.221,249,1.346,250,1.998,252,1.863,257,1.337,285,1.446,289,1.592,292,1.458,297,1.946,298,2.748,299,1.044,302,1.697,311,0.988,407,1.337,408,1.893,438,2.009,478,3.387,480,4.028,482,2.823,487,2.444,490,2.413,492,1.403,496,1.924,525,1.403,535,1.641,543,1.784,544,1.659,550,1.717,553,1.458,565,1.977,571,1.893,576,1.738,597,2.647,600,1.576,617,3.543,629,3.052,633,1.959,636,2.13,658,1.592,659,2.081,690,2.701,732,1.659,739,1.761,749,1.072,750,1.446,751,2.081,752,5.889,770,2.485,795,2.759,799,7.198,800,4.444,847,3.052,858,1.959,895,1.809,925,1.924,967,3.387,981,2.4,1082,2.387,1097,2.413,1104,1.641,1119,1.435,1124,2.036,1162,1.835,1202,2.13,1203,2.25,1241,2.55,1254,1.608,1262,1.835,1310,2.856,1316,1.863,1323,1.608,1339,1.678,1437,4.274,1534,1.659,1573,1.784,1794,2.13,1796,2.081,1807,2.324,1808,1.52,1809,2.675,1810,2.186,1811,2.675,1812,2.413,1813,4.45,1814,6.216,1815,7.978,1816,2.675,1817,2.675,1818,2.525,1819,2.675,1820,2.675,1821,2.675,1822,2.675,1823,2.413,1824,2.081,1825,2.675,1826,2.675,1827,2.25,1828,2.25,1829,2.675,1830,3.866,1831,2.324,1832,2.675,1833,2.675,1834,4.805,1835,4.45,1836,4.45,1837,4.45,1838,4.45,1839,2.675,1840,2.25,1841,2.903,1842,4.828,1843,2.903,1844,4.45,1845,3.76,1846,2.525,1847,4.45,1848,4.828,1849,2.675,1850,2.675,1851,2.675,1852,2.25,1853,1.959,1854,2.675,1855,2.675,1856,1.959,1857,2.903,1858,2.675,1859,2.675,1860,2.675,1861,2.675]],["component/26",[2,0.4]],["title/27-1",[95,22.954,299,21.941,535,34.491]],["name/27-1",[]],["text/27-1",[]],["component/27-1",[]],["title/27-2",[32,37.494,165,24.714,1862,47.282]],["name/27-2",[]],["text/27-2",[]],["component/27-2",[]],["title/27-3",[80,40.108,1778,44.671]],["name/27-3",[]],["text/27-3",[]],["component/27-3",[]],["title/27",[80,40.108,192,25.234]],["name/27",[80,1.68]],["text/27",[2,0.877,3,1.161,6,1.852,8,2.392,11,1.469,14,1.716,15,2.523,17,0.945,27,1.663,32,4.477,44,1.015,45,2.041,54,1.081,65,1.627,73,0.761,75,2.93,77,2.5,79,3.687,80,4.075,83,0.785,88,1.062,93,1.044,95,1.577,96,2.234,100,1.345,103,1.689,105,1.116,106,1.095,107,2.699,117,3.069,118,2.072,122,1.488,123,1.402,124,2.388,125,1.195,126,1.725,127,1.93,130,0.77,131,1.997,137,0.742,142,0.974,144,1.656,149,1.101,154,1.075,158,2.36,160,1.263,165,0.994,166,1.204,170,1.186,172,2.578,173,1.68,175,2.369,192,3.678,202,2.45,205,0.969,206,1.068,209,1.195,212,2.824,221,1.488,226,0.974,228,1.359,231,1.555,233,1.6,244,3.338,250,3.014,252,6.957,253,1.801,255,3.457,257,1.13,273,1.902,276,2.776,285,1.223,286,1.296,292,1.232,297,0.989,298,2.432,299,0.883,301,1.138,311,1.427,315,1.178,324,1.402,327,2.94,367,1.858,442,4.362,472,1.721,473,1.655,477,3.792,478,1.721,482,1.434,483,3.576,518,1.252,519,1.274,521,3.075,525,1.186,529,1.965,530,1.687,535,5.629,537,2.04,539,2.139,540,1.263,550,1.452,568,5.354,600,1.332,602,2.732,609,1.902,616,3.075,641,1.178,652,1.373,654,1.508,764,1.551,765,3.037,785,1.418,789,1.242,791,1.759,801,4.55,802,2.307,908,1.402,917,1.801,931,2.881,932,1.656,1029,1.902,1119,2.712,1162,1.551,1182,2.04,1293,1.575,1356,1.32,1408,1.508,1423,1.529,1450,1.434,1624,1.296,1647,2.04,1670,1.575,1697,1.801,1726,5.643,1744,1.902,1778,1.529,1794,4.025,1797,2.04,1798,2.04,1810,1.848,1862,7.226,1863,3.862,1864,5.055,1865,1.529,1866,1.902,1867,2.261,1868,2.261,1869,2.261,1870,2.261,1871,2.261,1872,1.848,1873,1.721,1874,5.055,1875,3.862,1876,2.261,1877,2.261,1878,1.848,1879,2.261,1880,1.902,1881,5.055,1882,1.801,1883,1.902,1884,3.484,1885,2.261,1886,2.261,1887,3.646,1888,2.261,1889,2.261,1890,2.261,1891,1.801,1892,2.261,1893,2.261,1894,2.261,1895,2.261,1896,2.261,1897,2.261,1898,2.261,1899,2.135,1900,2.261,1901,3.862,1902,2.261,1903,2.881,1904,3.932,1905,2.261]],["component/27",[2,0.4]],["title/28",[1906,67.357]],["name/28",[1906,2.327]],["text/28",[8,2.625,30,5.273,80,5.484,126,4.034,192,3.45,297,3.95,432,4.293,554,5.132,1082,4.846,1796,7.026,1906,7.597,1907,9.034,1908,9.034]],["component/28",[2,0.4]],["title/29-1",[218,33.925,770,36.893]],["name/29-1",[]],["text/29-1",[]],["component/29-1",[]],["title/29-2",[635,60.964]],["name/29-2",[]],["text/29-2",[]],["component/29-2",[]],["title/29",[218,33.925,224,41.429]],["name/29",[1,1.532]],["text/29",[2,1.423,3,1.671,4,1.461,5,1.72,7,3.386,9,1.626,17,2.183,18,2.341,25,2.8,37,1.996,51,1.648,53,2.56,54,1.556,75,1.595,77,2.789,79,4.594,82,2.04,83,1.129,84,1.068,93,1.502,95,2.132,98,3.624,103,2.86,112,4.129,113,3.138,116,2.341,117,1.975,124,2.467,127,3.742,129,3.072,130,1.108,136,5.207,137,2.458,138,4.454,140,4.499,148,2.646,154,1.547,156,2.869,158,1.519,166,1.732,170,1.707,173,1.416,174,1.275,178,1.732,184,1.955,191,1.833,192,1.243,194,1.556,199,3.536,205,1.394,206,1.537,207,1.477,210,2.162,211,2.232,212,1.537,213,3.582,214,2.142,215,3.107,216,3.749,221,2.142,222,1.575,224,3.275,226,2.249,230,1.759,234,4.018,235,3.944,245,2.232,250,1.461,255,1.882,284,1.996,299,2.038,301,1.637,308,1.31,437,2.428,493,2.341,527,1.707,543,2.17,554,1.848,558,2.089,565,2.906,594,1.626,635,2.477,652,1.975,676,2.736,692,1.996,740,1.787,820,1.408,835,2.428,926,2.114,940,2.266,1203,2.736,1205,2.089,1290,2.736,1339,2.04,1444,4.88,1452,2.477,1556,4.979,1624,2.993,1778,2.2,1830,2.827,1852,2.736,1909,2.232,1910,3.531,1911,6.541,1912,6.175,1913,6.541,1914,3.072,1915,3.254,1916,2.531,1917,3.254,1918,3.254,1919,2.341,1920,3.254,1921,2.936,1922,2.936,1923,2.531,1924,3.254,1925,3.254,1926,3.254,1927,2.428,1928,3.254,1929,3.254,1930,3.254]],["component/29",[2,0.4]],["title/30-1",[117,48.623]],["name/30-1",[]],["text/30-1",[]],["component/30-1",[]],["title/30-2",[112,35.963]],["name/30-2",[]],["text/30-2",[]],["component/30-2",[]],["title/30-3",[67,22.333,100,33.451,130,19.142]],["name/30-3",[]],["text/30-3",[]],["component/30-3",[]],["title/30-4",[67,19.437,1808,27.796,1919,35.198,1931,33.563]],["name/30-4",[]],["text/30-4",[]],["component/30-4",[]],["title/30-5",[1321,51.389,1932,48.371]],["name/30-5",[]],["text/30-5",[]],["component/30-5",[]],["title/30-6",[213,45.318,1542,57.399]],["name/30-6",[]],["text/30-6",[]],["component/30-6",[]],["title/30-7",[216,37.864,1543,48.371]],["name/30-7",[]],["text/30-7",[]],["component/30-7",[]],["title/30-8",[216,32.222,1543,41.163,1933,50.723]],["name/30-8",[]],["text/30-8",[]],["component/30-8",[]],["title/30",[138,47.653]],["name/30",[138,1.646]],["text/30",[2,0.681,7,1.984,8,0.67,24,1.415,40,1.014,41,4.484,45,3.589,46,1.582,58,1.267,59,3.326,71,1.277,76,1.538,79,2.124,82,2.462,87,2.157,88,4.341,89,2.694,102,1.31,103,1.008,109,2.584,110,1.31,112,3.541,113,1.386,115,1.884,117,3.676,120,2.552,123,2.435,124,2.423,126,1.754,127,4.738,137,1.289,138,1.372,143,2.314,148,3.504,154,1.096,156,5.68,170,1.21,173,3.769,178,1.228,184,1.386,194,1.103,199,2.123,200,1.498,201,1.559,205,0.988,207,2.328,210,2.507,212,1.089,213,3.518,214,1.518,222,2.482,225,1.794,227,1.606,231,0.929,234,1.13,244,1.053,258,1.192,285,1.247,286,1.322,287,1.72,297,1.008,301,1.16,308,0.929,311,0.852,367,1.109,431,1.518,441,2.409,453,1.659,458,1.372,469,1.237,493,1.659,503,1.463,518,3.353,524,1.836,525,2.06,527,2.69,529,3.412,530,2.93,558,1.48,584,1.299,600,2.314,606,2.157,619,1.884,621,2.003,658,1.372,690,2.384,710,1.939,742,1.219,908,4.583,916,2.08,1101,1.72,1110,1.288,1111,2.003,1120,2.778,1162,2.694,1192,2.177,1202,1.836,1248,1.48,1339,1.446,1501,1.277,1516,1.415,1624,3.47,1729,1.463,1814,8.579,1834,8.579,1862,1.939,1912,2.177,1914,3.707,1919,3.689,1921,2.08,1932,3.755,1933,2.08,1934,2.08,1935,1.794,1936,2.177,1937,2.177,1938,3.985,1939,8.306,1940,1.559,1941,3.707,1942,2.306,1943,2.306,1944,3.543,1945,3.543,1946,5.129,1947,2.502,1948,3.927,1949,2.502,1950,2.502,1951,2.502,1952,1.72,1953,2.306,1954,2.306,1955,2.502,1956,2.306,1957,2.306,1958,2.502,1959,2.502,1960,2.08,1961,2.177,1962,2.502,1963,4.456,1964,3.412,1965,2.306,1966,2.003,1967,2.306,1968,3.927,1969,2.306,1970,2.306,1971,2.08,1972,2.177,1973,4.261,1974,3.054,1975,4.261,1976,2.502,1977,2.502,1978,2.502,1979,2.177,1980,2.502,1981,6.791,1982,2.306,1983,2.08,1984,3.927,1985,1.606]],["component/30",[2,0.4]],["title/31-1",[117,48.623]],["name/31-1",[]],["text/31-1",[]],["component/31-1",[]],["title/31-2",[112,35.963]],["name/31-2",[]],["text/31-2",[]],["component/31-2",[]],["title/31-3",[67,22.333,100,33.451,130,19.142]],["name/31-3",[]],["text/31-3",[]],["component/31-3",[]],["title/31-4",[67,19.437,1808,27.796,1919,35.198,1931,33.563]],["name/31-4",[]],["text/31-4",[]],["component/31-4",[]],["title/31-5",[1321,51.389,1932,48.371]],["name/31-5",[]],["text/31-5",[]],["component/31-5",[]],["title/31-6",[213,45.318,1542,57.399]],["name/31-6",[]],["text/31-6",[]],["component/31-6",[]],["title/31-7",[216,37.864,1543,48.371]],["name/31-7",[]],["text/31-7",[]],["component/31-7",[]],["title/31",[136,39.308,786,36.893]],["name/31",[1923,2.152]],["text/31",[2,0.813,4,1.279,7,1.813,8,2.011,20,1.767,41,1.424,44,1.279,45,4.043,57,1.552,58,1.565,59,1.565,71,1.578,74,1.748,79,2.473,82,2.939,87,2.575,88,4.267,89,3.215,90,1.786,93,1.315,103,1.246,109,1.875,112,3.107,113,1.712,116,2.049,117,4.201,123,1.767,124,2.215,126,2.667,127,2.343,128,1.712,136,1.695,137,1.539,143,4.507,148,4.244,154,1.354,156,5.915,160,1.591,173,3.783,177,1.851,178,1.517,199,3.229,200,1.851,201,1.926,205,1.221,207,2.711,210,2.473,213,3.215,216,4.384,222,2.269,227,1.984,231,1.147,234,1.396,250,2.105,258,1.473,285,1.54,286,1.633,287,2.125,297,1.246,298,1.371,299,1.112,308,1.147,346,1.388,431,1.875,441,1.748,469,1.528,474,1.578,479,2.049,494,3.215,513,2.475,517,4.229,518,3.833,525,1.494,527,1.494,553,1.552,584,1.604,604,1.633,619,2.328,621,2.475,658,1.695,665,1.984,740,1.565,742,1.506,748,2.049,802,1.3,908,4.744,1041,1.9,1101,2.125,1111,2.475,1202,2.269,1241,1.633,1248,1.829,1293,1.984,1438,1.786,1488,2.216,1516,1.748,1624,3.966,1834,2.396,1919,3.372,1922,8.491,1923,4.645,1932,3.432,1934,2.57,1935,2.216,1936,2.689,1937,2.689,1938,4.555,1940,3.169,1941,2.689,1963,2.475,1964,2.475,1986,5.638,1987,2.689,1988,3.091,1989,2.57,1990,2.849,1991,3.091,1992,3.091,1993,3.091,1994,7.423,1995,2.849,1996,2.475,1997,2.269,1998,1.926,1999,2.849,2000,2.849,2001,4.688,2002,4.072,2003,4.688,2004,3.316,2005,4.688,2006,4.688,2007,4.688,2008,4.688,2009,4.229,2010,4.688,2011,2.849,2012,2.849]],["component/31",[2,0.4]],["title/32-1",[117,48.623]],["name/32-1",[]],["text/32-1",[]],["component/32-1",[]],["title/32-2",[112,35.963]],["name/32-2",[]],["text/32-2",[]],["component/32-2",[]],["title/32-3",[67,22.333,100,33.451,130,19.142]],["name/32-3",[]],["text/32-3",[]],["component/32-3",[]],["title/32-4",[67,19.437,1808,27.796,1919,35.198,1931,33.563]],["name/32-4",[]],["text/32-4",[]],["component/32-4",[]],["title/32-5",[1321,51.389,1932,48.371]],["name/32-5",[]],["text/32-5",[]],["component/32-5",[]],["title/32-6",[213,45.318,1542,57.399]],["name/32-6",[]],["text/32-6",[]],["component/32-6",[]],["title/32-7",[216,37.864,1543,48.371]],["name/32-7",[]],["text/32-7",[]],["component/32-7",[]],["title/32",[140,48.129]],["name/32",[140,1.663]],["text/32",[2,0.945,7,1.629,8,1.583,15,1.057,40,1.1,45,3.374,58,1.375,59,1.375,71,1.386,77,2.029,79,3.195,82,2.64,87,2.312,88,4.469,89,2.887,90,1.57,93,2.514,95,1.022,102,1.422,103,1.095,109,1.648,112,3.198,113,1.504,117,3.307,120,1.627,123,2.61,126,2.852,127,1.251,128,2.53,130,1.433,136,1.489,138,1.489,140,4.636,142,1.078,143,3.21,147,1.552,148,3.744,153,1.398,154,1.19,155,3.66,156,5.728,158,1.169,159,2.434,164,1.364,165,1.1,170,1.313,173,3.897,174,0.981,178,1.333,184,1.504,194,1.197,199,2.276,200,1.627,201,1.693,205,1.073,206,1.183,207,2.899,210,2.255,213,1.717,216,2.413,221,2.77,222,1.212,227,1.743,231,1.008,248,1.143,250,2.446,255,1.448,257,1.251,258,1.295,275,1.833,276,2.312,285,1.353,286,1.435,287,1.868,288,2.331,297,2.792,301,1.259,308,1.008,324,1.552,407,1.251,431,1.648,441,1.536,469,1.343,473,1.804,474,2.331,510,1.57,518,3.944,519,1.41,525,1.313,527,1.313,584,1.41,617,1.994,619,2.046,621,2.175,658,2.505,696,2.931,741,1.947,770,1.398,802,1.143,805,2.735,908,3.96,926,1.627,940,1.743,1023,2.105,1101,1.868,1111,2.175,1241,3.66,1248,1.607,1323,1.504,1339,1.57,1501,2.331,1516,1.536,1543,1.833,1561,1.717,1565,1.833,1624,3.66,1626,1.627,1760,1.648,1778,1.693,1787,2.175,1808,1.422,1830,2.175,1834,2.105,1852,2.105,1865,1.693,1912,3.974,1914,2.363,1931,1.717,1932,1.833,1934,2.259,1935,1.947,1936,2.363,1937,2.363,1938,5.077,1941,2.363,1963,2.175,1972,2.363,1986,2.363,2013,2.716,2014,2.716,2015,2.716,2016,6.929,2017,2.716,2018,4.21,2019,2.716,2020,2.716,2021,2.716,2022,2.716,2023,2.716,2024,2.363,2025,2.716,2026,2.716,2027,4.21,2028,1.627,2029,2.716,2030,2.716,2031,1.57,2032,2.716,2033,2.716,2034,2.716,2035,4.568,2036,2.716,2037,5.91,2038,5.91,2039,5.91,2040,5.91,2041,4.568,2042,4.568,2043,2.716,2044,2.716,2045,1.771,2046,2.503,2047,2.175,2048,1.627,2049,2.716,2050,2.716]],["component/32",[2,0.4]],["title/33-1",[44,29.665,170,34.658]],["name/33-1",[]],["text/33-1",[]],["component/33-1",[]],["title/33",[6,24.21,1104,40.531]],["name/33",[1,1.532]],["text/33",[165,4.344,1255,6.991,1479,7.521]],["component/33",[2,0.4]],["title/34-1",[27,16.731,84,12.754,192,14.839,212,18.356,229,14.353,442,25.247]],["name/34-1",[]],["text/34-1",[]],["component/34-1",[]],["title/34-2",[132,28.56,218,25.126,220,24.952,2051,33.084]],["name/34-2",[]],["text/34-2",[]],["component/34-2",[]],["title/34-3",[84,18.456,654,37.494,1508,42.794]],["name/34-3",[]],["text/34-3",[]],["component/34-3",[]],["title/34-4",[84,21.688,218,33.925]],["name/34-4",[]],["text/34-4",[]],["component/34-4",[]],["title/34-5",[345,40.443,519,31.663,1516,34.491]],["name/34-5",[]],["text/34-5",[]],["component/34-5",[]],["title/34-6",[84,21.688,544,40.971]],["name/34-6",[]],["text/34-6",[]],["component/34-6",[]],["title/34-7",[84,21.688,2052,48.371]],["name/34-7",[]],["text/34-7",[]],["component/34-7",[]],["title/34-8",[174,19.18,320,22.717,449,34.616,559,31.796]],["name/34-8",[]],["text/34-8",[]],["component/34-8",[]],["title/34-9",[84,18.456,559,36.534,1938,37.002]],["name/34-9",[]],["text/34-9",[]],["component/34-9",[]],["title/34-10",[84,14.218,148,17.521,206,20.464,748,31.157,835,32.313]],["name/34-10",[]],["text/34-10",[]],["component/34-10",[]],["title/34-11",[77,20.941,84,18.456,202,35.663]],["name/34-11",[]],["text/34-11",[]],["component/34-11",[]],["title/34-12",[84,19.714,148,15.716,442,25.247,504,27.948,526,23.116]],["name/34-12",[]],["text/34-12",[]],["component/34-12",[]],["title/34",[2,8.492,79,20.261,84,16.062,207,22.212]],["name/34",[79,0.663,207,0.727]],["text/34",[2,0.983,4,1.328,5,0.722,7,1.314,8,1.104,9,0.683,11,0.888,14,0.32,15,0.823,17,1.42,20,0.847,24,0.838,27,1.636,33,0.406,34,0.409,44,1.112,45,0.381,50,0.805,52,0.915,53,0.67,54,0.932,56,0.776,58,1.624,61,0.91,68,0.797,70,0.442,72,1.148,74,0.442,75,0.955,77,2.013,79,3.424,82,0.857,83,2.269,84,3.533,86,2.251,88,2.12,89,0.494,93,1.143,95,0.294,102,1.68,103,0.852,105,1.874,106,0.943,107,1.118,110,1.407,116,0.518,117,2.307,119,1.826,122,3.375,124,1.971,125,0.722,126,0.61,127,0.36,131,0.372,132,2.435,133,0.494,137,1.586,142,1.066,143,1.148,144,2.487,147,0.847,148,3.784,153,0.402,154,1.405,155,0.783,158,1.948,159,0.417,160,1.088,168,0.926,170,0.378,172,0.367,173,0.848,174,0.764,175,0.838,176,1.777,177,0.468,178,1.037,184,0.433,185,0.649,186,1.04,190,0.437,192,2.703,194,1.184,198,0.429,202,3.744,205,0.309,206,0.34,207,2.049,209,0.381,210,1.869,212,0.645,215,0.429,218,3.031,220,2.615,222,1.839,226,0.31,227,0.951,229,2.417,232,0.606,234,0.353,235,1.423,244,1.904,247,3.991,248,1.734,249,0.362,250,0.613,252,0.502,253,0.574,255,0.417,257,0.683,261,0.606,262,0.589,263,0.399,265,1.088,266,0.548,271,0.349,276,2.48,278,0.537,285,0.389,286,0.783,287,1.019,297,1.083,298,0.657,299,1.628,300,0.51,301,1.488,302,1.236,308,0.29,311,0.915,313,3.55,314,4.634,325,0.821,327,0.548,345,0.518,346,0.351,367,0.937,382,2.085,407,1.697,429,0.494,431,0.474,432,0.649,436,4.268,440,0.381,442,3.836,445,0.937,448,0.433,449,1.379,458,2.261,466,0.487,467,0.37,469,1.822,472,0.548,473,1.787,475,0.487,477,1.571,479,0.518,480,2.46,481,0.389,482,1.571,483,0.966,484,0.502,492,1.299,493,0.518,494,0.937,495,1.04,496,0.983,497,0.79,498,0.537,500,1.972,502,1.742,503,0.867,504,1.781,505,1.195,510,1.222,519,0.769,521,1.972,522,0.468,525,2.188,526,0.813,527,0.378,533,0.48,543,0.48,544,1.834,545,0.537,546,1.885,549,1.972,550,0.462,554,0.409,559,5.07,560,1.149,565,0.32,568,0.527,571,1.379,574,1.427,576,0.468,578,1.552,584,0.769,585,1.266,586,1.149,587,1.427,588,3.039,590,0.937,597,0.813,598,0.487,601,1.04,605,0.548,607,0.877,624,0.548,629,1.699,641,0.375,652,0.829,654,0.911,655,0.888,660,0.518,661,0.966,688,0.457,689,0.899,690,1.503,713,2.585,732,0.847,739,0.474,740,1.36,742,0.381,748,1.781,749,0.289,754,0.51,756,0.548,770,0.402,788,0.606,792,0.468,801,0.548,812,0.468,823,0.51,830,0.518,844,0.548,846,0.355,847,2.33,850,0.527,852,0.494,873,0.527,883,0.437,894,0.899,898,0.574,908,0.447,913,1.127,925,0.983,926,0.468,932,1,935,1.586,938,0.487,944,0.518,947,2.239,954,0.606,955,0.574,980,0.48,992,0.429,1114,0.51,1119,0.386,1190,0.606,1205,1.251,1225,0.606,1238,0.65,1241,2.178,1242,1.04,1245,1.552,1262,0.494,1281,0.606,1293,0.502,1316,0.502,1319,0.606,1336,0.527,1339,1.222,1354,0.487,1405,1.222,1423,0.487,1429,0.966,1437,1.251,1461,0.783,1468,0.727,1469,0.574,1499,1.652,1501,0.399,1509,1.552,1516,0.838,1556,0.548,1569,1.022,1579,0.821,1583,0.56,1589,0.527,1591,0.574,1618,0.574,1619,0.65,1623,0.48,1624,0.413,1637,0.502,1640,0.502,1649,0.589,1652,0.457,1671,0.548,1677,0.48,1679,1.427,1707,0.518,1714,0.606,1715,0.589,1729,0.867,1738,0.527,1747,1.088,1749,0.606,1760,0.474,1778,1.318,1804,1.639,1882,0.574,1909,0.494,1916,0.56,1940,0.487,1952,0.537,2004,1.379,2048,0.468,2051,0.924,2052,3.755,2053,0.56,2054,1.233,2055,0.65,2056,0.65,2057,0.72,2058,1.337,2059,0.606,2060,0.606,2061,1.233,2062,1.366,2063,0.72,2064,1.972,2065,1.366,2066,0.65,2067,4.515,2068,1.639,2069,1.758,2070,0.606,2071,0.518,2072,0.65,2073,0.589,2074,0.72,2075,0.548,2076,1.116,2077,0.537,2078,1.116,2079,1.639,2080,0.65,2081,0.452,2082,0.606,2083,3.114,2084,0.65,2085,0.72,2086,7.303,2087,1,2088,0.56,2089,0.72,2090,0.72,2091,1.366,2092,0.65,2093,1.693,2094,0.65,2095,0.65,2096,0.606,2097,0.65,2098,0.65,2099,1.693,2100,0.65,2101,0.65,2102,1.088,2103,3.428,2104,0.65,2105,5.129,2106,2.114,2107,0.782,2108,0.782,2109,2.114,2110,1.149,2111,0.606,2112,0.65,2113,1.949,2114,0.65,2115,2.234,2116,0.606,2117,0.72,2118,0.72,2119,0.65,2120,0.72,2121,0.65,2122,0.65,2123,0.606,2124,0.65,2125,0.65,2126,0.65,2127,0.72,2128,0.782,2129,1.019,2130,0.527,2131,0.65,2132,1.454,2133,0.518,2134,0.65,2135,0.527,2136,0.65,2137,0.65,2138,0.548,2139,0.606,2140,0.37,2141,0.424,2142,0.72,2143,0.65,2144,0.72,2145,1.233,2146,0.574,2147,0.574,2148,0.574,2149,0.72,2150,0.65,2151,0.65,2152,0.606,2153,1.233,2154,0.537,2155,0.606,2156,0.589,2157,0.65,2158,0.548,2159,0.65,2160,0.65]],["component/34",[2,0.4]],["title/35",[84,25.897,846,27.734]],["name/35",[1,1.532]],["text/35",[]],["component/35",[2,0.4]],["title/36-1",[2161,80.094]],["name/36-1",[]],["text/36-1",[]],["component/36-1",[]],["title/36-2",[84,16.062,125,25.858,127,24.453,218,25.126]],["name/36-2",[]],["text/36-2",[]],["component/36-2",[]],["title/36-3",[84,18.456,218,28.87,1469,44.772]],["name/36-3",[]],["text/36-3",[]],["component/36-3",[]],["title/36-4",[27,24.211,84,18.456,442,36.534]],["name/36-4",[]],["text/36-4",[]],["component/36-4",[]],["title/36-5",[132,28.56,218,25.126,220,24.952,2051,33.084]],["name/36-5",[]],["text/36-5",[]],["component/36-5",[]],["title/36-6",[84,18.456,654,37.494,1508,42.794]],["name/36-6",[]],["text/36-6",[]],["component/36-6",[]],["title/36-7",[84,21.688,218,33.925]],["name/36-7",[]],["text/36-7",[]],["component/36-7",[]],["title/36-8",[345,40.443,519,31.663,1516,34.491]],["name/36-8",[]],["text/36-8",[]],["component/36-8",[]],["title/36-9",[84,21.688,544,40.971]],["name/36-9",[]],["text/36-9",[]],["component/36-9",[]],["title/36-10",[84,21.688,2052,48.371]],["name/36-10",[]],["text/36-10",[]],["component/36-10",[]],["title/36-11",[174,19.18,320,22.717,449,34.616,559,31.796]],["name/36-11",[]],["text/36-11",[]],["component/36-11",[]],["title/36-12",[84,18.456,559,36.534,1938,37.002]],["name/36-12",[]],["text/36-12",[]],["component/36-12",[]],["title/36-13",[84,14.218,215,25.77,299,16.903,526,25.77,2079,36.426]],["name/36-13",[]],["text/36-13",[]],["component/36-13",[]],["title/36-14",[84,14.218,148,17.521,206,20.464,748,31.157,835,32.313]],["name/36-14",[]],["text/36-14",[]],["component/36-14",[]],["title/36-15",[77,20.941,84,18.456,202,35.663]],["name/36-15",[]],["text/36-15",[]],["component/36-15",[]],["title/36-16",[148,19.793,244,22.335,298,23.539,2162,44.145]],["name/36-16",[]],["text/36-16",[]],["component/36-16",[]],["title/36-17",[84,19.714,148,15.716,442,25.247,504,27.948,526,23.116]],["name/36-17",[]],["text/36-17",[]],["component/36-17",[]],["title/36-18",[475,38.014,525,29.494,527,29.494]],["name/36-18",[]],["text/36-18",[]],["component/36-18",[]],["title/36-19",[155,32.222,252,39.15,525,29.494]],["name/36-19",[]],["text/36-19",[]],["component/36-19",[]],["title/36-20",[1671,50.288,2158,50.288]],["name/36-20",[]],["text/36-20",[]],["component/36-20",[]],["title/36",[2,11.466,84,21.688]],["name/36",[84,0.908]],["text/36",[0,0.406,2,1.017,3,0.248,4,1.101,5,0.921,6,0.342,7,1.073,8,1.451,9,0.466,10,0.235,11,1.37,13,0.657,14,0.414,15,1.299,16,0.147,17,1.287,20,0.578,24,0.572,25,0.181,27,1.88,31,0.296,32,0.901,33,0.525,34,0.275,36,0.396,37,0.296,38,0.221,44,2.059,45,0.493,46,0.331,50,0.796,51,0.245,52,0.635,53,0.457,54,1.008,56,0.53,58,1.347,59,0.265,61,0.631,63,0.259,65,0.348,68,0.544,70,0.572,72,1.635,74,0.829,75,0.457,77,2.347,78,0.354,79,2.221,80,0.293,82,1.74,83,2.737,84,3.53,86,1.866,87,1.158,88,2.601,89,0.64,90,0.303,93,1.281,95,0.711,96,0.412,98,0.234,99,0.331,101,0.385,102,1.393,103,0.922,105,1.518,106,0.843,107,0.952,109,0.318,110,0.767,111,0.368,112,0.947,113,0.812,115,0.395,116,0.348,117,2.207,119,1.575,120,0.314,121,0.555,122,2.562,124,1.718,125,0.921,126,0.416,127,0.871,131,0.482,132,2.549,136,0.288,137,2.273,142,1.056,143,0.549,144,2.662,147,0.578,148,3.821,149,0.235,153,0.973,154,1.599,155,1.208,158,1.295,159,0.279,160,0.754,165,0.927,166,0.257,168,0.642,170,0.914,171,0.3,172,0.475,173,1.207,174,0.53,175,0.572,176,1.047,177,0.878,178,1.122,184,0.29,185,0.828,186,1.326,190,0.566,192,1.06,194,0.833,198,0.288,199,0.261,202,3.996,205,1.319,206,0.638,207,0.219,209,0.255,210,1.713,212,1.454,214,0.318,215,0.555,216,0.277,218,2.124,220,2.546,222,1.629,226,0.582,227,0.649,229,0.499,232,2.83,234,0.457,235,1.179,239,2.777,240,2.777,241,2.777,242,2.777,244,2.189,246,0.265,247,3.242,248,1.405,249,0.243,250,0.947,252,1.213,253,0.385,255,0.279,257,0.466,258,0.482,261,0.784,262,0.395,263,0.268,265,0.743,266,0.368,271,1.187,276,1.691,278,0.361,285,0.942,286,0.534,287,1.008,292,0.263,295,0.572,296,0.354,297,1.072,298,1.619,299,1.949,300,0.342,301,1.829,302,1.337,305,0.436,308,0.195,311,0.644,313,2.876,314,2.105,315,0.252,319,0.27,320,0.433,321,0.436,324,0.3,325,0.56,327,0.71,336,0.572,345,0.348,346,0.235,367,0.65,382,1.386,403,0.841,405,0.314,407,1.225,408,0.66,414,0.342,429,0.331,431,0.318,432,0.828,433,0.354,436,3.477,440,0.255,442,3.809,445,0.331,448,0.812,449,2.178,454,0.521,458,1.254,466,0.63,467,0.479,469,1.488,472,0.368,473,1.965,474,0.516,475,0.327,476,0.385,477,2.623,479,0.671,480,1.834,481,1.664,482,1.337,483,2.178,484,1.213,487,1.158,492,0.914,493,0.671,494,0.64,495,0.71,496,1.253,497,0.539,498,0.361,499,0.406,500,1.679,502,0.549,503,0.591,504,1.516,505,0.296,509,0.901,510,0.847,511,0.348,519,0.525,520,0.348,521,1.679,522,0.314,525,2.62,526,1.036,527,0.254,533,0.322,535,0.296,539,0.748,543,0.622,544,1.52,545,0.696,546,1.866,549,1.076,550,0.31,554,0.275,559,4.573,560,0.784,565,0.215,568,0.354,571,1.232,574,1.275,576,0.314,578,1.076,584,0.761,585,0.878,586,0.784,587,0.989,588,2.715,590,0.64,597,0.804,598,0.327,601,1.028,602,0.66,603,0.25,605,0.368,607,1.118,608,0.368,623,0.303,624,0.71,625,0.989,626,0.331,629,2.67,640,0.436,641,0.252,652,0.566,654,0.622,655,0.878,658,0.555,661,0.66,662,0.671,688,0.307,690,0.82,693,0.395,697,0.436,713,1.866,732,0.838,734,0.436,737,0.436,739,0.614,740,0.957,742,0.493,748,1.763,749,0.194,750,1.14,752,0.337,754,0.342,756,0.368,764,0.331,770,0.973,788,0.406,789,0.265,792,0.314,795,0.3,805,0.314,812,0.314,830,0.348,839,0.406,844,0.368,846,0.238,847,2.995,850,0.354,852,0.331,868,0.368,873,0.683,883,0.293,894,0.889,895,0.63,898,0.385,908,0.3,913,0.781,925,0.671,926,0.314,938,0.327,944,0.348,947,1.983,952,0.406,954,0.406,955,0.385,961,0.406,980,0.322,992,0.288,993,0.337,1002,0.385,1016,1.028,1021,0.368,1057,0.361,1096,0.406,1101,0.361,1110,0.27,1119,0.259,1124,0.368,1158,0.743,1173,0.331,1190,0.406,1205,1.118,1225,0.406,1231,0.406,1237,0.436,1241,2.084,1242,0.71,1245,1.387,1255,0.342,1259,0.812,1260,0.812,1262,0.331,1281,0.406,1282,0.331,1289,0.322,1293,0.337,1301,0.406,1316,0.337,1323,0.29,1336,0.354,1339,1.092,1354,0.327,1372,0.368,1373,0.342,1405,1.092,1420,0.245,1423,0.327,1429,0.956,1437,0.867,1461,0.998,1468,0.496,1470,0.368,1478,0.354,1479,0.368,1499,0.622,1501,0.748,1509,1.679,1516,0.572,1521,0.354,1522,0.368,1523,0.436,1556,0.368,1557,0.436,1569,1.106,1578,0.354,1579,0.56,1581,0.385,1585,0.368,1588,0.436,1589,0.683,1591,0.385,1618,0.385,1623,0.622,1624,0.277,1627,0.342,1637,0.337,1640,0.337,1641,0.385,1649,0.395,1652,0.591,1664,0.436,1670,0.337,1671,0.368,1677,0.322,1679,0.683,1701,0.385,1707,0.348,1714,0.406,1715,0.395,1729,0.307,1740,0.436,1747,0.385,1760,0.318,1778,1.178,1783,0.406,1796,0.376,1804,2.062,1824,0.376,1878,0.395,1882,1.387,1909,0.64,1916,0.376,1940,0.327,1952,0.361,1971,0.436,1985,0.337,1998,0.327,2004,1.491,2024,0.456,2045,0.342,2048,0.314,2051,0.63,2052,3.656,2054,0.436,2055,0.436,2056,0.436,2058,0.64,2059,0.406,2060,0.784,2061,1.219,2064,1.387,2066,0.436,2068,2.062,2069,0.841,2070,0.406,2071,0.348,2072,0.436,2073,0.395,2075,0.368,2076,0.762,2077,1.3,2078,0.762,2079,1.465,2080,0.841,2081,0.303,2082,0.406,2083,2.784,2084,0.436,2087,0.683,2092,0.436,2093,2.41,2094,0.841,2095,0.436,2096,0.406,2097,0.436,2098,0.436,2099,1.513,2100,0.436,2101,0.436,2102,0.743,2103,4.137,2104,0.436,2110,0.784,2111,0.406,2112,0.436,2114,0.436,2115,2.212,2116,0.406,2119,0.436,2121,0.436,2122,0.436,2123,0.784,2124,0.841,2125,0.436,2126,0.436,2129,0.696,2130,0.354,2131,0.436,2132,1.3,2133,0.348,2134,2.212,2135,0.354,2136,0.436,2137,0.436,2138,0.368,2139,0.784,2140,0.248,2141,0.285,2143,0.436,2145,1.219,2146,0.743,2147,0.385,2148,1.679,2150,0.436,2151,0.436,2152,0.406,2153,0.841,2154,0.361,2155,0.406,2156,0.395,2159,0.436,2160,0.436,2162,0.841,2163,3.34,2164,0.932,2165,2.108,2166,0.483,2167,1.351,2168,1.351,2169,0.483,2170,0.932,2171,0.932,2172,0.932,2173,0.354,2174,1.572,2175,0.483,2176,0.483,2177,0.436,2178,0.483,2179,0.385,2180,0.483,2181,0.483,2182,0.483,2183,0.483,2184,0.483,2185,0.483,2186,0.483,2187,0.456,2188,0.456,2189,0.483,2190,0.483,2191,0.483,2192,0.483,2193,0.483,2194,0.42,2195,0.483,2196,0.483,2197,0.932,2198,0.483,2199,0.932,2200,2.66,2201,0.483,2202,0.483,2203,0.456,2204,0.932,2205,0.395,2206,0.524,2207,0.524,2208,0.524,2209,1.466,2210,0.483,2211,0.483,2212,0.456,2213,0.483,2214,1.012,2215,0.483,2216,0.483,2217,0.524,2218,0.932,2219,0.483,2220,0.406,2221,0.932,2222,0.483,2223,0.483,2224,0.841,2225,0.483,2226,0.483,2227,0.483,2228,0.483,2229,0.932,2230,0.483,2231,0.483,2232,0.524,2233,0.483,2234,0.483,2235,0.483,2236,0.483,2237,0.436,2238,0.483,2239,0.436,2240,0.436,2241,0.406,2242,0.483,2243,0.483,2244,0.483,2245,0.483,2246,0.483,2247,0.483,2248,0.483,2249,0.483,2250,0.483]],["component/36",[2,0.4]],["title/37-1",[8,19.195,2251,59.605]],["name/37-1",[]],["text/37-1",[]],["component/37-1",[]],["title/37-2",[84,21.688,207,29.991]],["name/37-2",[]],["text/37-2",[]],["component/37-2",[]],["title/37-3",[559,36.534,629,38.565,1677,37.494]],["name/37-3",[]],["text/37-3",[]],["component/37-3",[]],["title/37",[84,18.456,846,27.734,2052,41.163]],["name/37",[846,1.365]],["text/37",[2,1.295,5,0.973,8,0.939,13,1.219,24,1.984,41,0.921,44,2.925,50,1.905,58,1.012,61,0.86,77,1.204,79,2.697,82,2.028,83,3.027,84,1.706,87,1.776,88,3.059,93,1.493,106,0.892,107,0.832,112,1.452,118,0.988,119,3.922,124,1.528,133,1.263,134,1.549,137,3.275,138,1.096,140,1.943,143,1.085,147,2.68,148,2.635,153,1.029,154,0.875,155,4.275,158,3.042,160,1.806,166,0.981,172,0.939,178,0.981,192,0.704,198,1.096,202,2.051,207,1.468,209,0.973,210,0.763,222,2.092,223,0.805,229,0.68,234,2.899,235,1.555,243,3.057,244,4.426,248,2.372,250,0.827,263,2.877,265,1.467,266,4.501,271,2.092,276,3.248,285,0.996,286,1.056,297,1.414,302,2.051,311,1.195,313,2.028,314,2.336,320,0.855,326,0.68,407,1.616,431,1.212,432,2.054,458,1.096,473,0.789,480,1.004,481,3.522,483,2.287,492,0.966,527,2.267,532,1.402,535,2.651,539,3.607,546,3.289,559,2.101,587,1.349,588,1.951,590,1.263,594,0.921,600,1.905,602,4.184,607,2.075,624,3.955,626,2.964,628,2.287,629,3.564,651,1.349,653,1.467,655,1.197,658,1.096,692,1.13,739,2.128,749,0.738,775,4.958,778,1.467,795,1.142,803,2.719,805,1.197,812,2.101,823,1.303,825,3.057,846,0.909,847,1.263,864,4.501,868,1.402,873,2.367,913,1.065,932,2.367,940,1.283,944,1.325,947,1.085,992,1.096,1016,2.461,1119,0.988,1151,5.187,1205,5.602,1241,1.853,1262,2.218,1285,1.549,1366,1.155,1389,1.549,1390,1.748,1405,1.155,1413,0.915,1429,2.287,1435,1.182,1461,1.056,1471,2.882,1488,5.066,1555,1.549,1623,1.228,1640,1.283,1707,1.325,1775,1.662,1812,1.662,1856,1.349,1923,1.433,1938,1.212,1985,2.252,2052,4.33,2053,1.433,2068,5.478,2071,1.325,2078,1.505,2102,4.709,2110,5.478,2111,1.549,2116,5.478,2123,5.478,2173,1.349,2174,1.662,2251,6.73,2252,1.662,2253,1.467,2254,1.842,2255,1.842,2256,1.842,2257,1.842,2258,1.842,2259,1.662,2260,4.322,2261,3.233,2262,3.233,2263,3.233,2264,1.842,2265,1.842,2266,3.233,2267,3.233,2268,1.662,2269,1.842,2270,1.842,2271,1.842,2272,2.515,2273,1.505,2274,1.842,2275,1.842,2276,1.842,2277,1.842,2278,1.999,2279,1.549,2280,1.549,2281,1.549,2282,1.842]],["component/37",[2,0.4]],["title/38",[2253,63.781]],["name/38",[1,1.532]],["text/38",[]],["component/38",[2,0.4]],["title/39-1",[235,31.783,1468,35.176]],["name/39-1",[]],["text/39-1",[]],["component/39-1",[]],["title/39-2",[1468,35.176,2283,57.399]],["name/39-2",[]],["text/39-2",[]],["component/39-2",[]],["title/39-3",[676,55.562,2284,59.605]],["name/39-3",[]],["text/39-3",[]],["component/39-3",[]],["title/39",[39,30.396,235,27.047,1683,37.002]],["name/39",[39,0.609,235,0.542,1683,0.742]],["text/39",[3,2.215,4,1.157,6,1.58,7,1.669,8,2.415,14,1.916,15,1.821,26,2.088,27,2.395,30,1.504,31,1.581,39,4.233,41,1.288,44,1.157,51,1.305,58,1.415,61,1.203,63,1.382,71,1.427,73,1.452,79,1.786,93,1.19,95,2.271,103,1.127,110,2.45,131,1.333,137,2.862,161,2.958,162,1.415,166,1.372,168,1.225,170,3.412,171,1.598,173,1.121,174,1.01,175,1.581,176,1.549,185,1.225,192,2.765,205,1.104,210,2.693,212,1.217,217,2.876,223,1.127,226,1.11,229,1.593,231,2.24,234,1.263,235,5.172,244,1.176,248,2.539,250,1.157,258,1.333,276,1.415,284,3.99,290,1.922,297,1.127,298,1.24,301,1.296,308,1.038,310,1.176,311,2.055,312,1.857,325,1.549,326,1.593,367,3.129,432,1.225,438,1.947,441,1.581,443,4.996,458,1.533,474,1.427,481,2.332,509,1.719,511,1.854,519,1.451,526,1.533,553,1.404,592,2.314,597,2.566,603,2.23,662,1.854,684,6.467,690,2.618,789,2.369,805,1.675,807,1.768,832,3.283,846,1.271,906,1.696,925,1.854,938,1.742,947,2.541,966,4.337,968,1.961,1139,1.922,1184,1.961,1241,1.477,1248,1.654,1265,1.564,1282,1.768,1307,4.57,1310,1.654,1322,1.696,1339,1.616,1366,3.488,1388,3.891,1390,1.393,1395,4.528,1408,1.719,1447,2.167,1461,1.477,1472,2.325,1490,1.451,1501,3.08,1529,1.768,1569,1.352,1578,1.887,1627,1.823,1683,4.764,1708,7.215,1722,1.451,1724,2.004,1808,1.464,1909,1.768,1916,2.004,1938,1.696,1985,1.794,2058,1.768,2279,5.47,2283,6.289,2284,2.325,2285,4.313,2286,2.004,2287,2.577,2288,2.803,2289,2.577,2290,2.577,2291,1.393,2292,2.577,2293,2.577,2294,4.828,2295,2.325,2296,3.283,2297,2.577,2298,2.577,2299,2.325,2300,2.577,2301,2.577,2302,2.167,2303,2.325,2304,2.325,2305,2.325,2306,2.577,2307,2.004,2308,2.004,2309,2.577,2310,2.433,2311,4.313,2312,2.577,2313,2.577,2314,2.577,2315,2.577]],["component/39",[2,0.4]],["title/40-1",[6,17.93,212,23.118,218,25.126,299,19.096]],["name/40-1",[]],["text/40-1",[]],["component/40-1",[]],["title/40-2",[25,18.301,212,23.118,218,25.126,299,19.096]],["name/40-2",[]],["text/40-2",[]],["component/40-2",[]],["title/40-3",[6,15.872,26,20.966,39,23.417,174,16.978,1683,28.506]],["name/40-3",[]],["text/40-3",[]],["component/40-3",[]],["title/40-4",[25,18.301,26,23.685,31,30.018,174,19.18]],["name/40-4",[]],["text/40-4",[]],["component/40-4",[]],["title/40",[25,18.301,27,21.071,299,19.096,1916,38.059]],["name/40",[25,0.599,820,0.693]],["text/40",[4,2.487,6,3.934,8,1.609,15,1.479,25,3.779,26,4.115,27,4.691,31,2.149,36,2.349,54,1.675,75,1.717,77,2.063,79,2.293,82,3.473,87,1.924,106,2.681,131,1.811,149,1.706,165,1.54,173,1.524,174,2.692,183,2.197,192,2.981,194,1.675,212,5.212,222,1.696,229,2.884,234,1.717,235,4.349,244,4.612,276,1.924,281,1.398,298,1.685,299,4.12,302,2.222,308,1.41,311,1.294,320,2.571,326,2.884,346,1.706,482,2.222,505,2.149,525,2.905,539,3.067,600,2.064,628,2.478,641,1.824,691,2.666,742,2.927,820,1.516,1241,3.936,1248,2.248,1314,1.851,1322,5.137,1366,4.895,1417,1.909,1463,2.565,1746,3.307,1748,3.307,1753,3.043,1808,1.99,1852,2.946,2051,2.368,2053,4.308,2294,2.336,2295,3.16,2310,3.307,2316,3.801,2317,3.801,2318,3.16,2319,6.009,2320,6.009,2321,3.801,2322,3.801,2323,3.801,2324,5.354,2325,4.526,2326,6.009,2327,3.801,2328,3.801,2329,2.862,2330,6.009,2331,3.801,2332,3.801,2333,6.009,2334,3.503]],["component/40",[2,0.4]],["title/41-1",[16,24.284]],["name/41-1",[]],["text/41-1",[]],["component/41-1",[]],["title/41-2",[16,20.032,1249,24.113]],["name/41-2",[]],["text/41-2",[]],["component/41-2",[]],["title/41-3",[13,18.453,815,28.297,1221,26.663,2083,29.705]],["name/41-3",[]],["text/41-3",[]],["component/41-3",[]],["title/41-4",[2083,40.108,2335,51.389]],["name/41-4",[]],["text/41-4",[]],["component/41-4",[]],["title/41",[192,25.234,272,44.06]],["name/41",[192,0.612,272,1.068]],["text/41",[2,1.123,4,0.716,6,3.5,7,1.49,8,2.525,10,2.28,11,1.848,13,2.608,14,2.08,16,2.096,17,0.666,23,1.34,24,0.978,25,3.167,28,2.133,31,1.745,33,1.602,36,1.634,38,1.759,39,2.907,40,4.61,41,1.422,43,3.622,44,1.73,45,0.842,48,1.441,49,1.34,52,0.749,53,0.781,54,0.762,58,0.875,61,0.744,66,1.11,67,1.53,71,0.883,73,1.576,75,0.781,81,1.023,83,1.336,84,0.523,88,1.336,92,1.745,95,2.436,96,0.704,98,0.771,102,2.188,103,1.244,106,0.771,107,1.284,118,0.855,119,0.645,125,1.503,126,1.27,127,0.797,130,2.706,136,0.948,137,1.765,141,1.049,142,2.788,148,0.645,149,1.386,161,1.093,164,1.55,166,1.515,170,3.396,172,1.451,174,1.51,183,0.999,184,1.709,185,1.352,192,2.641,193,2.265,198,0.948,201,1.078,205,1.651,207,0.724,209,0.842,210,1.939,222,2.266,223,1.244,226,0.686,229,1.423,230,0.862,231,1.145,235,2.87,245,1.093,246,0.875,248,0.728,249,0.802,254,1.872,255,0.922,259,1.269,272,2.569,281,2.381,285,1.538,288,1.575,289,0.948,290,1.189,292,0.868,297,2.047,299,0.622,300,1.128,301,2.705,308,2.165,311,1.423,312,0.686,320,0.74,326,1.051,367,2.252,382,1.422,432,1.352,443,0.913,467,0.818,480,0.868,481,0.862,487,0.875,497,1.645,506,1.11,509,1.063,518,0.883,519,0.898,522,1.848,526,0.948,534,1.189,540,0.89,550,1.023,551,1.11,565,0.708,584,0.898,588,1.284,594,0.797,603,2.421,622,1.213,641,1.482,665,1.11,667,2.012,731,0.93,749,1.14,756,1.213,765,1.709,769,1.505,770,0.89,778,2.265,789,0.875,802,2.723,815,0.922,820,1.231,846,0.786,847,1.951,861,1.189,894,1.049,932,1.167,940,1.11,947,1.676,981,0.67,1006,2.083,1059,1.302,1110,1.588,1124,1.213,1160,1.167,1221,0.868,1249,1.709,1280,1.386,1299,2.582,1323,0.958,1334,1.24,1386,1.189,1390,0.862,1392,1.146,1405,0.999,1417,2.099,1461,0.913,1468,0.849,1471,1.063,1527,2.012,1528,1.727,1534,2.903,1565,1.167,1569,2.021,1573,1.897,1574,1.897,1576,1.24,1579,1.709,1583,1.24,1589,1.167,1606,1.302,1620,1.438,1624,1.63,1627,1.128,1630,1.438,1659,1.438,1671,1.213,1713,1.385,1722,0.898,1724,2.213,1729,1.011,1734,1.302,1744,2.392,1801,1.128,1808,2.66,1891,1.269,1931,1.951,1952,1.189,2081,0.999,2083,3.93,2288,1.036,2294,1.063,2325,1.302,2335,2.996,2336,1.269,2337,1.438,2338,1.34,2339,1.594,2340,1.438,2341,1.34,2342,1.189,2343,3.122,2344,2.97,2345,1.594,2346,1.128,2347,1.848,2348,2.325,2349,1.34,2350,1.167,2351,1.594,2352,1.302,2353,1.594,2354,1.302,2355,2.845,2356,1.594,2357,2.845,2358,1.594,2359,1.011,2360,1.385,2361,1.128,2362,1.385,2363,2.566,2364,1.729,2365,3.852,2366,2.845,2367,2.165,2368,1.385,2369,1.594,2370,1.594,2371,1.729,2372,1.729,2373,1.594,2374,1.385,2375,4.521,2376,1.594,2377,3.087,2378,1.036]],["component/41",[2,0.4]],["title/42-1",[2379,80.094]],["name/42-1",[]],["text/42-1",[]],["component/42-1",[]],["title/42-2",[112,35.963]],["name/42-2",[]],["text/42-2",[]],["component/42-2",[]],["title/42-3",[216,45.902]],["name/42-3",[]],["text/42-3",[]],["component/42-3",[]],["title/42",[174,25.897,606,36.29]],["name/42",[1,1.532]],["text/42",[2,1.792,19,5.303,52,3.374,100,5.539,112,4.18,148,2.906,174,4.282,215,6.899,216,5.335,222,5.288,225,8.033,289,4.274,308,2.893,515,6.042,606,6.001,820,4.47,1104,4.407,1378,4.505]],["component/42",[2,0.4]],["title/43-1",[8,11.288,27,16.731,477,24.645,707,27.486,708,29.574,2380,38.854]],["name/43-1",[]],["text/43-1",[]],["component/43-1",[]],["title/43-2",[2,6.743,1104,23.836,1259,23.347,1260,23.347,1450,24.645,1845,25.57]],["name/43-2",[]],["text/43-2",[]],["component/43-2",[]],["title/43",[23,32.675,137,12.754,707,27.486,1259,23.347,1260,23.347,1845,25.57]],["name/43",[707,0.797,1845,0.742,2381,0.876]],["text/43",[2,0.738,4,1.138,8,2.615,14,1.125,15,1.07,20,1.571,23,2.131,25,0.948,27,3.088,36,1.075,41,1.266,56,1.439,61,1.183,83,1.475,102,3.121,106,1.226,112,2.889,119,1.025,127,1.266,128,1.522,130,0.863,131,2.199,132,3.207,137,1.396,140,3.302,142,1.091,156,1.392,165,1.114,170,1.329,172,2.802,192,2.098,194,1.211,207,3.255,215,1.507,218,1.301,222,2.058,244,2.937,245,1.738,271,2.058,276,1.392,281,1.011,290,1.89,295,1.554,298,1.219,299,1.659,300,1.792,311,2.649,320,1.974,325,2.555,326,1.571,346,2.676,399,1.792,458,3.828,469,1.359,473,1.086,474,1.403,481,1.37,492,1.329,494,1.738,496,7.036,507,1.971,539,2.355,565,1.889,575,2.555,598,3.715,645,1.713,667,3.008,692,2.609,693,2.07,707,6.123,732,1.571,736,5.187,742,1.339,749,1.704,752,3.826,785,1.589,789,1.392,791,1.971,800,4.274,802,1.941,819,1.713,832,1.928,846,1.25,847,5.937,858,1.855,867,1.626,902,2.201,926,1.646,964,4.014,965,1.855,981,3.012,1037,2.392,1113,1.792,1224,1.971,1259,2.555,1260,3.302,1378,3.445,1387,2.415,1390,2.97,1405,1.589,1450,2.697,1512,2.201,1550,2.201,1559,1.738,1565,3.113,1612,2.201,1628,2.392,1646,3.475,1652,3.485,1677,1.69,1715,2.07,1722,1.427,1729,2.697,1801,1.792,1818,4.014,1845,5.109,1872,2.07,1884,4.957,1938,1.667,1985,6.267,1998,1.713,2073,2.07,2087,1.855,2253,4.375,2324,1.738,2334,2.534,2367,4.182,2370,2.534,2380,5.494,2382,3.527,2383,2.749,2384,2.749,2385,2.749,2386,2.749,2387,2.749,2388,2.749,2389,2.749,2390,8.497,2391,2.749,2392,2.749,2393,2.749,2394,2.392,2395,4.614,2396,2.749,2397,2.749,2398,2.749,2399,2.749,2400,2.749,2401,6.03,2402,2.749,2403,2.749,2404,2.749,2405,5.187,2406,1.764,2407,2.392,2408,2.749,2409,2.131,2410,2.749,2411,2.392,2412,2.749,2413,2.392,2414,2.749,2415,2.749]],["component/43",[2,0.4]],["title/44",[174,22.038,199,30.396,606,30.883]],["name/44",[1321,2.152]],["text/44",[]],["component/44",[2,0.4]],["title/45",[174,22.038,199,30.396,606,30.883]],["name/45",[1321,2.152]],["text/45",[]],["component/45",[2,0.4]],["title/46-1",[158,26.253,618,34.866,2318,50.723]],["name/46-1",[]],["text/46-1",[]],["component/46-1",[]],["title/46-2",[8,14.216,98,23.685,1323,29.403,1343,38.965]],["name/46-2",[]],["text/46-2",[]],["component/46-2",[]],["title/46-3",[16,20.032,96,29.194]],["name/46-3",[]],["text/46-3",[]],["component/46-3",[]],["title/46-4",[73,22.246,223,28.891]],["name/46-4",[]],["text/46-4",[]],["component/46-4",[]],["title/46-5",[73,22.246,820,28.595]],["name/46-5",[]],["text/46-5",[]],["component/46-5",[]],["title/46-6",[73,22.246,627,37.864]],["name/46-6",[]],["text/46-6",[]],["component/46-6",[]],["title/46",[174,22.038,215,33.451,606,30.883]],["name/46",[1343,2.204]],["text/46",[0,0.91,2,0.347,4,0.899,6,1.023,7,0.419,8,1.902,13,1.311,15,0.845,16,2.613,19,0.556,21,0.885,25,1.723,26,0.524,27,2.188,30,2.029,34,0.615,37,1.228,38,0.913,40,1.227,52,1.633,53,0.531,54,1.662,57,1.09,59,0.595,61,0.505,63,0.581,66,1.393,67,2.018,70,1.228,71,0.599,73,1.17,74,0.664,75,1.704,77,0.403,79,1.439,83,0.376,84,0.657,88,1.915,93,0.924,96,1.802,98,1.683,103,0.473,105,0.987,106,0.969,110,0.615,112,0.486,118,0.581,124,3.229,126,0.483,127,0.541,131,0.56,132,0.632,133,0.743,137,3.868,141,1.317,143,2.402,148,2.648,154,0.514,155,0.62,156,1.099,158,0.505,159,0.626,160,0.604,162,0.595,164,0.59,165,0.476,173,2.21,174,0.784,175,1.712,177,0.703,178,1.065,192,0.764,194,0.518,200,0.703,205,0.464,206,1.642,209,1.837,210,1.688,212,1.318,215,4.223,218,2.826,219,0.842,222,1.351,223,3.308,229,1.284,231,1.124,234,1.368,244,1.274,248,0.913,250,1.253,257,0.541,271,0.524,275,0.793,276,1.099,281,1.387,286,0.62,288,0.599,289,0.644,292,0.59,297,0.473,298,1.342,299,1.357,301,0.545,308,0.806,311,0.4,312,0.862,314,1.509,319,2.573,326,0.4,346,0.975,367,0.963,382,0.541,407,2.037,428,1.974,436,0.754,438,3.415,448,0.65,454,0.604,473,2.177,478,0.824,480,3.396,489,0.977,492,0.568,493,1.439,494,1.373,505,0.664,518,0.599,519,1.958,525,1.05,535,0.664,539,0.599,543,0.722,553,1.894,554,0.615,565,1.544,575,0.65,592,0.581,603,0.56,618,0.671,627,0.62,636,0.862,661,1.974,665,0.754,696,0.754,732,0.671,740,0.595,750,0.585,802,0.494,820,1.208,846,0.534,858,0.793,878,0.842,935,2.472,938,0.732,940,1.943,968,0.824,981,0.455,1082,0.581,1103,0.65,1104,0.664,1119,1.074,1229,2.28,1241,1.599,1253,2.646,1254,2.089,1256,0.885,1262,0.743,1264,1.861,1265,0.657,1283,0.824,1294,0.766,1296,0.808,1313,0.977,1314,3.611,1316,0.754,1333,0.977,1339,0.679,1343,3.67,1354,0.732,1378,2.18,1383,0.885,1390,1.082,1397,0.842,1398,0.91,1408,2.318,1409,0.91,1416,3.849,1427,2.545,1435,0.695,1438,1.255,1449,2.35,1451,0.754,1454,0.824,1466,0.766,1488,0.842,1501,0.599,1516,0.664,1576,0.842,1579,1.203,1624,1.599,1640,0.754,1652,1.269,1680,0.862,1760,1.836,1828,0.91,1840,0.91,1985,0.754,2009,0.977,2045,0.766,2053,0.842,2058,0.743,2071,0.779,2076,0.885,2083,1.215,2102,0.862,2132,2.593,2133,1.439,2140,1.785,2158,0.824,2294,0.722,2337,0.977,2342,0.808,2378,0.703,2416,1.083,2417,1.083,2418,1.083,2419,1.083,2420,1.083,2421,2.791,2422,2.791,2423,1.083,2424,1.083,2425,1.083,2426,1.083,2427,1.083,2428,0.977,2429,1.083,2430,1.083,2431,1.083,2432,1.083,2433,1.083,2434,2.001,2435,1.083,2436,1.083,2437,1.083,2438,1.083,2439,1.083,2440,5.505,2441,3.476,2442,5.442,2443,4.077,2444,1.083,2445,2.001,2446,0.977,2447,1.022,2448,1.083,2449,1.083,2450,0.793,2451,1.022,2452,1.083,2453,1.083,2454,2.001,2455,1.083,2456,1.083,2457,1.083,2458,1.083,2459,1.083,2460,1.083,2461,2.17,2462,1.083,2463,2.001,2464,1.635,2465,2.222,2466,6.232,2467,1.739,2468,1.083,2469,2.001,2470,1.083,2471,2.001,2472,2.791,2473,2.001,2474,1.083,2475,1.083,2476,2.001,2477,0.91,2478,1.083,2479,1.083,2480,1.083,2481,1.083,2482,0.842,2483,1.083,2484,1.083,2485,1.083,2486,1.083,2487,1.083,2488,1.083,2489,2.001,2490,1.083,2491,2.001,2492,1.083,2493,1.083,2494,1.083,2495,1.083,2496,1.083,2497,0.885,2498,1.083,2499,1.523,2500,0.862,2501,1.465,2502,0.91,2503,0.977,2504,0.862,2505,1.805,2506,1.805,2507,2.001,2508,3.476,2509,2.001,2510,2.001,2511,1.083,2512,2.001,2513,2.001,2514,1.805,2515,2.001,2516,2.001,2517,2.001,2518,1.083,2519,1.083,2520,1.683,2521,2.001,2522,2.001,2523,2.001,2524,1.805,2525,1.594,2526,1.083,2527,1.083,2528,2.001,2529,3.476,2530,1.083,2531,2.001,2532,2.001,2533,1.083,2534,1.594,2535,1.083,2536,1.083,2537,1.083,2538,1.083,2539,0.977,2540,0.754,2541,0.842,2542,2.001,2543,1.083,2544,1.083,2545,1.083,2546,1.083]],["component/46",[2,0.4]],["title/47-1",[8,14.216,98,23.685,312,21.071,1323,29.403]],["name/47-1",[]],["text/47-1",[]],["component/47-1",[]],["title/47-2",[73,22.246,223,28.891]],["name/47-2",[]],["text/47-2",[]],["component/47-2",[]],["title/47-3",[73,22.246,820,28.595]],["name/47-3",[]],["text/47-3",[]],["component/47-3",[]],["title/47-4",[73,22.246,627,37.864]],["name/47-4",[]],["text/47-4",[]],["component/47-4",[]],["title/47",[112,25.245,174,22.038,606,30.883]],["name/47",[312,1.192]],["text/47",[2,0.71,4,1.493,5,0.704,6,1.739,7,0.515,8,1.928,13,1.79,14,0.592,15,1.727,16,2.012,19,1.242,20,0.826,25,1.244,26,1.98,27,1.762,28,0.737,30,1.412,34,0.757,36,1.026,38,1.518,41,0.666,44,0.598,45,1.757,52,1.562,53,0.653,54,2.541,57,1.812,59,1.329,61,0.622,66,0.927,67,3.011,68,1.412,73,2.352,75,0.653,77,0.496,79,1.002,88,2.496,89,0.913,95,1.938,96,2.348,98,1.61,103,0.582,105,1.194,106,1.61,107,1.501,109,0.876,112,0.598,116,0.958,124,2.242,126,2.12,130,0.824,131,1.251,137,3.94,141,2.188,147,0.826,148,1.655,158,0.622,159,0.77,160,1.351,162,0.732,163,1.014,164,2.229,165,0.585,168,1.15,171,2.062,173,2.312,175,2.04,177,0.865,185,1.15,191,0.75,192,1.813,194,0.637,200,0.865,205,1.037,209,1.757,210,1.694,212,0.629,218,0.684,223,2.902,228,0.8,229,0.894,231,1.647,248,0.608,250,1.493,254,0.876,271,0.645,281,0.531,289,2.434,291,0.9,292,0.726,297,1.789,298,1.968,299,1.298,301,0.67,308,1.339,310,1.104,311,1.511,312,1.042,313,1.517,314,1.308,315,1.732,319,2.284,320,0.618,382,1.209,407,2.044,438,3.644,446,1.501,454,1.857,467,2.437,469,0.714,473,1.425,474,0.737,480,1.319,487,0.732,492,0.699,518,1.841,519,1.363,522,0.865,525,0.699,527,0.699,553,2.895,565,0.592,566,1.088,573,0.855,575,1.454,584,0.75,585,0.865,588,1.501,592,1.784,594,1.209,603,1.719,604,1.387,606,1.329,627,2.72,692,0.817,732,0.826,740,0.732,742,2.508,795,0.826,820,2.704,823,0.942,843,1.036,846,1.194,851,0.855,913,0.77,935,0.714,938,0.9,940,0.927,947,0.785,948,1.805,981,1.718,1041,0.888,1113,0.942,1119,0.714,1134,2.531,1221,0.726,1249,2.12,1254,2.458,1258,2.04,1264,0.888,1265,2.881,1283,1.014,1314,1.757,1316,1.685,1341,1.036,1342,0.913,1346,1.088,1356,1.412,1405,0.835,1408,0.888,1413,0.661,1416,3.272,1423,0.9,1449,0.9,1451,0.927,1466,0.942,1473,2.509,1490,0.75,1516,0.817,1540,2.392,1549,1.036,1559,1.66,1569,0.699,1578,0.975,1579,0.8,1583,1.036,1624,0.763,1660,1.036,1760,1.592,1779,1.088,1790,1.036,1997,1.06,1998,0.9,2004,0.942,2051,1.636,2058,0.913,2083,2.483,2140,2.1,2205,1.977,2294,1.614,2335,1.036,2409,1.12,2461,1.036,2464,1.977,2465,1.06,2477,1.12,2482,1.036,2497,1.088,2499,1.842,2500,1.06,2501,0.975,2502,1.12,2503,1.201,2504,1.06,2505,1.201,2534,4.627,2539,1.201,2540,1.685,2541,2.586,2547,1.201,2548,1.06,2549,1.332,2550,1.332,2551,1.201,2552,1.12,2553,1.257,2554,1.157,2555,1.201,2556,2.102,2557,1.977,2558,1.201,2559,3.862,2560,1.332,2561,1.332,2562,1.332,2563,1.332,2564,1.977,2565,1.257,2566,2.42,2567,1.201,2568,2.183,2569,2.183,2570,3,2571,1.927,2572,1.157,2573,1.12,2574,1.332,2575,1.332,2576,1.06,2577,2.183,2578,2.183,2579,1.842,2580,1.201,2581,1.201,2582,2.102,2583,1.201,2584,2.889,2585,1.201,2586,1.12,2587,1.332,2588,1.201,2589,1.201,2590,1.088,2591,1.201,2592,1.332,2593,1.201,2594,1.332,2595,1.332,2596,1.332,2597,1.332,2598,1.332,2599,1.201,2600,1.257,2601,1.201,2602,1.332,2603,1.157,2604,1.332,2605,1.201,2606,1.332,2607,1.332,2608,1.332,2609,1.332,2610,1.332,2611,1.332]],["component/47",[2,0.4]],["title/48-1",[8,14.216,98,23.685,1323,29.403,1543,35.824]],["name/48-1",[]],["text/48-1",[]],["component/48-1",[]],["title/48-2",[73,22.246,223,28.891]],["name/48-2",[]],["text/48-2",[]],["component/48-2",[]],["title/48-3",[73,22.246,820,28.595]],["name/48-3",[]],["text/48-3",[]],["component/48-3",[]],["title/48-4",[73,22.246,627,37.864]],["name/48-4",[]],["text/48-4",[]],["component/48-4",[]],["title/48",[174,22.038,216,32.222,606,30.883]],["name/48",[1543,2.026]],["text/48",[2,0.465,4,2.308,5,0.789,6,0.983,8,1.809,13,1.011,15,1.882,16,1.888,19,0.766,26,1.298,27,1.573,36,1.138,38,0.681,41,0.746,44,0.67,45,1.417,48,1.358,53,0.731,54,2.132,55,1.039,57,1.99,59,3.143,61,0.697,67,3.063,68,0.871,73,2.689,75,0.731,79,1.512,84,0.49,88,2.925,92,0.915,95,1.095,96,3.118,105,1.323,106,1.768,107,0.674,118,0.801,124,2.428,126,1.991,130,0.508,131,0.772,137,3.797,141,2.934,147,0.925,149,0.727,156,2.006,159,0.863,160,1.497,163,1.136,164,2.43,165,0.656,168,1.275,171,1.663,173,0.649,175,0.915,185,1.275,191,2.511,192,1.963,205,1.149,210,1.11,218,0.766,223,3.237,228,0.897,229,1.899,231,1.08,234,0.731,247,1.813,248,1.224,254,0.982,271,0.722,276,0.82,279,2.135,281,1.07,289,1.595,290,1.113,291,1.009,299,1.425,311,0.991,320,1.695,326,0.551,407,1.34,438,4.495,446,1.663,454,1.497,467,2.639,469,1.439,475,1.009,480,0.813,487,2.006,492,0.783,502,0.879,505,0.915,518,2.469,519,1.51,525,0.783,527,1.407,553,3.393,566,1.219,573,0.958,575,1.611,585,0.97,588,1.649,592,2.392,594,1.34,603,1.888,604,2.555,606,1.473,627,1.537,732,0.925,740,0.82,742,1.417,755,1.136,795,0.925,820,3.204,823,1.897,843,1.161,851,0.958,871,0.855,947,1.58,948,2.724,981,0.627,1041,0.995,1042,1.188,1119,0.801,1160,1.092,1221,0.813,1241,0.855,1249,0.545,1254,3.089,1258,2.24,1264,2.435,1265,2.217,1314,2.356,1316,2.543,1331,1.219,1341,1.161,1342,1.024,1350,1.409,1354,1.009,1395,0.863,1397,1.161,1413,0.741,1416,1.51,1423,4.509,1451,1.039,1468,0.794,1473,2.735,1516,1.645,1543,4.559,1549,1.161,1559,2.505,1569,1.916,1660,1.161,1722,0.84,1727,0.958,1760,0.982,1780,1.409,1884,1.346,1985,1.867,1997,1.188,2002,1.296,2051,1.009,2083,4.284,2140,1.377,2194,2.33,2205,1.219,2280,1.255,2294,1.788,2335,1.161,2378,0.97,2382,0.958,2409,1.255,2450,1.092,2464,2.191,2497,2.191,2540,3.105,2541,1.161,2551,1.346,2552,1.255,2553,1.409,2554,1.296,2556,2.33,2564,2.984,2565,1.409,2572,1.296,2579,2.78,2582,2.33,2584,3.173,2590,2.191,2600,2.531,2612,2.91,2613,1.113,2614,1.619,2615,1.188,2616,1.619,2617,1.619,2618,4.838,2619,1.619,2620,1.619,2621,1.619,2622,1.619,2623,1.619,2624,2.91,2625,1.619,2626,2.91,2627,1.619,2628,5.577,2629,2.91,2630,2.91,2631,1.619,2632,3.963,2633,3.963,2634,1.619,2635,1.619,2636,1.619,2637,1.619,2638,1.409,2639,2.91,2640,1.619,2641,1.296,2642,2.91,2643,1.497,2644,1.619,2645,6.757,2646,2.91,2647,2.91,2648,2.91,2649,2.91,2650,1.619,2651,2.91,2652,1.409,2653,1.619,2654,2.91,2655,1.219,2656,1.296,2657,1.619,2658,1.409,2659,1.409,2660,1.409,2661,1.409,2662,1.409,2663,1.409,2664,1.409,2665,1.619,2666,1.409,2667,1.619,2668,1.619,2669,1.619,2670,1.492,2671,1.492]],["component/48",[2,0.4]],["title/49",[8,16.335,148,22.742,314,30.396]],["name/49",[8,0.465,314,0.866]],["text/49",[2,1.466,8,1.804,9,3.103,20,3.851,48,3.145,57,4.604,75,3.044,77,3.577,83,3.332,92,3.809,95,2.535,111,4.727,137,2.038,148,4.5,154,4.016,165,3.714,173,2.701,178,3.306,192,2.372,198,3.695,210,2.571,220,3.167,244,2.834,247,4.199,250,2.788,258,3.211,286,3.559,298,2.987,314,6.015,527,3.257,543,4.141,614,5.222,740,3.411,850,4.546,950,5.222,1205,3.986,1420,4.28,1449,5.713,1778,4.199,2045,4.393,2053,4.83,2152,5.222,2291,4.568,2672,8.45]],["component/49",[2,0.4]],["title/50-1",[63,23.237,205,18.558,206,20.464,1626,28.145,2673,34.492]],["name/50-1",[]],["text/50-1",[]],["component/50-1",[]],["title/50-2",[63,35.444,228,39.701]],["name/50-2",[]],["text/50-2",[]],["component/50-2",[]],["title/50-3",[229,24.407,820,28.595]],["name/50-3",[]],["text/50-3",[]],["component/50-3",[]],["title/50-4",[16,24.284]],["name/50-4",[]],["text/50-4",[]],["component/50-4",[]],["title/50-5",[73,22.246,223,28.891]],["name/50-5",[]],["text/50-5",[]],["component/50-5",[]],["title/50-6",[73,22.246,820,28.595]],["name/50-6",[]],["text/50-6",[]],["component/50-6",[]],["title/50",[63,30.162,96,24.844,1626,36.534]],["name/50",[63,0.859,1626,1.041]],["text/50",[2,0.959,3,0.784,4,1.23,5,0.428,6,1.193,7,0.838,8,1.422,10,2.021,11,0.527,13,1.846,14,0.36,15,1.572,16,1.915,17,0.639,19,0.784,20,0.503,25,1.954,26,1.326,27,2.108,28,0.449,30,0.892,34,0.461,36,1.162,38,0.989,39,0.826,40,1.636,41,0.405,45,1.145,46,0.556,48,1.649,52,1.286,53,0.397,54,1.31,56,0.461,57,1.181,58,0.839,59,1.19,61,1.52,63,3.51,67,2.975,68,0.473,71,0.846,73,1.861,74,0.497,75,1.062,76,0.541,77,0.302,79,0.897,83,0.281,87,0.445,88,1.948,89,0.556,93,0.374,95,1.694,96,2.005,98,1.049,99,0.556,102,0.868,105,1.351,106,1.326,107,1.237,109,0.534,111,0.617,112,0.973,119,0.328,123,0.503,124,1.96,126,1.454,130,0.52,131,1.12,132,0.473,137,3.664,140,0.487,141,1.426,142,1.402,143,0.478,147,0.947,148,0.876,154,0.385,155,0.876,157,0.646,158,0.379,159,1.584,161,1.879,162,0.839,163,0.617,164,1.181,165,0.672,168,0.385,171,0.947,173,1.805,174,1.276,175,0.497,185,1.03,191,0.457,192,1.733,198,0.482,205,1.395,206,1.024,207,0.694,210,1.879,212,0.383,217,0.541,218,0.416,222,0.392,223,2.954,224,0.508,228,0.487,229,1.203,230,0.438,231,1.311,234,1.062,243,1.081,244,0.37,248,0.697,249,0.408,250,1.672,254,1.005,258,1.925,267,0.682,271,0.74,276,0.445,281,2.422,288,1.517,289,0.909,291,0.548,297,1.198,298,3.148,299,2.788,301,1.09,308,0.872,310,0.697,311,1.533,312,0.658,313,0.958,314,0.826,319,0.453,320,0.376,326,1.93,327,0.617,346,1.334,367,1.318,382,1.083,407,2.073,438,2.954,446,0.947,454,1.21,458,0.909,467,1.671,469,0.82,474,0.449,480,0.833,487,1.19,492,0.425,495,2.085,496,2.984,502,0.478,505,0.497,518,1.517,519,1.22,522,0.527,527,0.425,536,1.14,540,0.453,541,0.617,553,2.473,558,0.52,565,0.36,566,0.663,573,0.52,575,0.918,584,1.22,585,0.527,588,1.681,592,0.82,594,1.083,603,1.925,604,0.465,606,1.504,623,0.508,627,0.876,628,0.574,634,2.965,641,0.796,656,0.927,677,0.631,679,0.565,696,1.509,712,0.457,731,0.473,732,1.699,742,1.145,756,0.617,770,0.453,771,0.556,773,1.315,795,0.503,820,2.832,823,1.081,832,0.617,833,1.005,843,0.631,846,0.754,851,0.52,868,0.617,882,0.541,908,0.503,913,1.584,935,1.469,947,0.478,948,0.605,981,0.91,1041,0.541,1079,0.663,1113,0.574,1119,0.435,1134,0.617,1160,0.594,1184,0.617,1221,1.181,1241,0.876,1249,1.907,1254,2.493,1258,1.329,1264,0.541,1265,2.26,1280,0.744,1287,1.242,1299,0.661,1307,0.473,1314,1.967,1315,1.12,1316,1.509,1331,0.663,1354,0.548,1373,1.081,1387,1.231,1390,0.438,1392,0.583,1395,0.469,1405,1.359,1406,0.646,1408,4.639,1413,0.403,1416,0.86,1423,2.805,1427,5.093,1437,0.52,1451,0.565,1461,0.876,1468,0.432,1473,1.997,1474,0.583,1490,0.457,1494,0.663,1498,0.646,1501,0.846,1516,0.937,1527,0.574,1528,0.492,1540,1.558,1549,1.188,1559,1.879,1569,0.425,1574,0.541,1578,1.119,1579,0.918,1626,0.527,1637,0.565,1660,0.631,1670,0.565,1727,0.52,1729,0.514,1760,0.534,1779,0.663,1784,0.731,1790,0.631,1801,0.574,1872,0.663,1985,1.064,1998,0.548,2051,0.548,2064,1.217,2081,0.508,2082,0.682,2140,0.416,2194,0.704,2205,1.248,2253,0.646,2272,0.631,2288,2.949,2294,3.264,2335,0.631,2342,0.605,2359,0.514,2378,1.408,2406,0.565,2409,0.682,2450,0.594,2461,0.631,2464,1.248,2465,0.646,2477,0.682,2482,0.631,2497,1.77,2524,1.955,2525,0.646,2534,2.181,2540,1.064,2541,0.631,2548,0.646,2554,0.704,2555,0.731,2556,1.327,2557,0.663,2558,0.731,2559,4.284,2564,1.248,2567,0.731,2568,0.731,2569,0.731,2570,1.378,2572,0.704,2573,0.682,2577,0.731,2578,0.731,2579,1.649,2580,1.378,2581,0.731,2582,1.327,2583,0.731,2584,1.882,2585,1.378,2586,0.682,2588,0.731,2589,0.731,2590,1.248,2591,0.731,2605,0.731,2652,0.765,2655,0.663,2656,0.704,2658,0.765,2659,0.765,2660,0.765,2661,0.765,2662,0.765,2663,0.765,2666,0.765,2670,0.811,2671,0.811,2673,4.402,2674,5.224,2675,1.528,2676,4.895,2677,1.528,2678,0.811,2679,0.811,2680,1.528,2681,3.743,2682,0.731,2683,2.166,2684,1.378,2685,0.583,2686,2.937,2687,0.663,2688,1.528,2689,2.739,2690,1.528,2691,2.739,2692,0.811,2693,0.811,2694,0.811,2695,0.811,2696,0.811,2697,0.811,2698,1.528,2699,0.811,2700,0.811,2701,0.811,2702,1.528,2703,1.528,2704,1.528,2705,1.528,2706,1.528,2707,0.811,2708,0.811,2709,0.811,2710,1.528,2711,0.811,2712,0.765,2713,0.765,2714,0.704,2715,0.631,2716,0.811,2717,0.811,2718,0.811,2719,0.682,2720,0.811,2721,0.811,2722,2.972,2723,0.88,2724,0.88,2725,0.88,2726,0.88,2727,0.811,2728,0.811,2729,0.811,2730,0.731,2731,0.811]],["component/50",[2,0.4]],["title/51",[83,22.92,1585,50.288]],["name/51",[83,0.556,1585,1.219]],["text/51",[25,3.438,83,3.189,336,5.639,785,6.799,846,4.534,1585,6.996,1683,6.049,2338,7.73,2732,9.782]],["component/51",[2,0.4]],["title/52",[83,22.92,1057,49.288]],["name/52",[83,0.556,1057,1.195]],["text/52",[2,1.798,8,2.476,14,3.786,27,3.67,38,3.89,83,2.956,96,3.766,98,4.125,158,3.979,223,3.726,480,4.644,642,8.06,820,3.688,931,6.357,1057,7.731,1361,6.964,1450,5.405]],["component/52",[2,0.4]],["title/53",[83,19.505,414,39.774,2240,50.723]],["name/53",[83,0.556,414,1.133]],["text/53",[]],["component/53",[2,0.4]],["title/54-1",[73,18.931,272,37.494,443,32.222]],["name/54-1",[]],["text/54-1",[]],["component/54-1",[]],["title/54-2",[231,32.25]],["name/54-2",[]],["text/54-2",[]],["component/54-2",[]],["title/54",[83,22.92,1004,52.612]],["name/54",[83,0.556,1004,1.275]],["text/54",[2,1.187,8,2.462,10,1.695,13,2.933,15,1.469,16,1.055,17,2.859,27,1.499,38,3.55,56,3.13,73,3.395,83,1.207,96,3.745,98,2.667,102,1.977,106,1.684,110,1.977,112,2.474,137,3.519,142,1.499,143,2.05,153,1.943,161,2.387,168,1.654,172,1.775,173,1.514,177,2.261,192,1.329,209,1.839,231,2.754,234,2.7,243,2.462,246,1.911,289,2.07,309,3.779,311,2.035,466,2.353,487,3.026,510,2.182,554,1.977,588,1.571,603,1.799,645,3.725,649,2.771,690,3.345,694,2.926,752,2.423,755,2.649,795,2.158,802,1.588,820,2.385,926,2.261,981,3.267,1004,8.959,1038,5.751,1104,2.135,1114,4.838,1120,2.462,1176,7.646,1217,4.633,1249,1.27,1258,2.135,1288,2.113,1312,2.423,1335,3.023,1378,2.182,1384,2.503,1451,2.423,1466,3.897,1501,1.927,1626,2.261,1853,2.548,2291,1.881,2338,4.633,2501,2.548,2732,3.139,2733,4.97,2734,3.139,2735,5.509,2736,5.509,2737,5.509,2738,3.48,2739,3.48,2740,3.776,2741,3.776,2742,2.548,2743,2.926,2744,2.012,2745,3.48,2746,3.48,2747,3.48,2748,5.509,2749,3.48,2750,3.48,2751,3.48,2752,3.48,2753,3.48,2754,3.48,2755,3.48,2756,7.646,2757,3.48,2758,3.48,2759,3.48,2760,3.48,2761,3.48,2762,3.48,2763,3.48,2764,3.48,2765,3.48,2766,3.48,2767,3.48,2768,3.48]],["component/54",[2,0.4]],["title/55-1",[2,9.757,121,33.451,1382,42.794]],["name/55-1",[]],["text/55-1",[]],["component/55-1",[]],["title/55-2",[551,55.772]],["name/55-2",[]],["text/55-2",[]],["component/55-2",[]],["title/55-3",[2769,80.094]],["name/55-3",[]],["text/55-3",[]],["component/55-3",[]],["title/55-4",[121,33.451,174,22.038,2770,50.723]],["name/55-4",[]],["text/55-4",[]],["component/55-4",[]],["title/55-5",[119,26.725,1382,50.288]],["name/55-5",[]],["text/55-5",[]],["component/55-5",[]],["title/55-6",[16,11.78,119,15.716,121,23.116,174,15.229,1380,28.446,2771,32.675]],["name/55-6",[]],["text/55-6",[]],["component/55-6",[]],["title/55-7",[16,10.68,119,14.249,120,22.89,121,20.958,174,13.808,1380,25.79,1528,21.385]],["name/55-7",[]],["text/55-7",[]],["component/55-7",[]],["title/55-8",[1381,48.371,1382,50.288]],["name/55-8",[]],["text/55-8",[]],["component/55-8",[]],["title/55-9",[16,11.78,121,23.116,174,15.229,1380,28.446,1381,28.446,2771,32.675]],["name/55-9",[]],["text/55-9",[]],["component/55-9",[]],["title/55-10",[16,10.68,120,22.89,121,20.958,174,13.808,1380,25.79,1381,25.79,1528,21.385]],["name/55-10",[]],["text/55-10",[]],["component/55-10",[]],["title/55-11",[2772,59.605,2773,59.605]],["name/55-11",[]],["text/55-11",[]],["component/55-11",[]],["title/55-12",[882,44.06,1717,52.612]],["name/55-12",[]],["text/55-12",[]],["component/55-12",[]],["title/55",[83,22.92,121,39.308]],["name/55",[83,0.556,121,0.953]],["text/55",[2,1.069,3,1.103,4,1.659,6,0.428,7,0.452,8,1.678,13,0.441,14,1.918,15,0.494,16,2.598,17,1.246,19,0.6,26,1.04,27,2.487,31,0.717,33,1.678,34,1.22,38,0.534,41,1.074,50,0.689,58,1.18,59,0.642,61,1.003,70,1.318,72,0.689,73,1.945,75,1.053,76,1.433,83,1.034,84,0.384,85,2.813,92,0.717,93,0.54,95,2.183,96,3.015,98,1.442,101,4.257,105,0.577,119,1.967,120,3.16,121,5.431,122,0.769,125,0.618,126,0.522,127,0.584,131,0.605,137,2.023,140,1.791,143,0.689,148,0.473,149,1.8,155,0.67,156,1.18,168,1.021,173,0.935,174,2.787,183,1.347,185,1.021,191,1.678,192,0.447,205,0.92,209,0.618,210,0.889,223,0.511,228,1.291,230,0.632,231,1.2,234,1.811,235,3.283,243,1.52,244,2.637,246,1.637,247,0.79,248,0.981,249,1.081,250,0.525,256,0.78,258,1.111,271,0.566,276,2.372,279,2.373,281,0.857,284,1.828,295,2.984,297,1.888,298,0.562,311,1.365,314,0.632,319,0.653,326,1.365,336,0.717,346,1.451,382,2.887,384,0.983,399,1.52,438,0.97,446,0.725,453,2.144,454,0.653,458,0.696,473,0.92,474,3.199,475,0.79,480,1.171,482,1.363,484,2.573,487,1.637,497,0.676,502,1.266,505,1.828,532,0.89,535,1.828,543,1.987,544,1.332,554,0.664,561,0.89,576,1.936,588,2.608,590,2.044,604,0.67,613,0.909,626,0.802,641,0.609,652,0.71,655,2.401,658,0.696,675,0.841,691,2.268,696,3.387,731,1.739,742,1.575,749,0.861,754,0.827,755,0.89,770,1.2,771,1.473,785,0.733,792,0.76,795,0.725,802,3.365,805,0.76,820,0.93,825,0.827,827,0.827,852,0.802,865,0.79,881,1.055,913,1.723,925,0.841,951,0.89,981,2.043,1091,0.664,1139,0.872,1232,0.955,1241,1.708,1245,6.693,1280,3.591,1301,3.108,1328,0.872,1380,3.914,1381,3.561,1382,6.523,1390,1.611,1392,1.545,1397,0.909,1417,0.637,1428,1.755,1434,0.78,1450,1.89,1451,2.075,1454,0.89,1463,1.573,1468,0.622,1490,0.658,1502,0.983,1528,1.809,1561,1.473,1565,1.573,1569,0.613,1573,0.78,1601,0.856,1639,3.914,1657,0.983,1679,3.161,1717,3.438,1727,0.75,1738,0.856,1795,0.955,1853,1.573,1866,1.807,1903,1.603,1904,0.909,1927,1.603,1940,0.79,1961,1.104,1974,0.909,1989,2.689,2088,0.909,2133,1.545,2140,0.6,2148,1.711,2154,2.223,2329,1.755,2360,1.016,2374,1.866,2375,2.506,2381,0.909,2382,1.379,2406,1.496,2615,0.931,2643,0.653,2734,1.055,2742,0.856,2770,3.334,2771,1.807,2772,1.938,2773,1.938,2774,1.169,2775,1.169,2776,1.169,2777,2.506,2778,1.169,2779,1.169,2780,1.169,2781,1.169,2782,0.931,2783,1.055,2784,0.983,2785,0.983,2786,1.055,2787,4.318,2788,2.98,2789,1.169,2790,1.104,2791,1.055,2792,0.983,2793,6.162,2794,1.169,2795,2.148,2796,1.169,2797,6.162,2798,1.169,2799,1.169,2800,2.148,2801,4.823,2802,1.169,2803,3.696,2804,3.696,2805,2.98,2806,1.169,2807,2.506,2808,2.98,2809,2.148,2810,2.98,2811,2.98,2812,2.98,2813,2.148,2814,2.148,2815,2.148,2816,2.148,2817,2.148,2818,1.807,2819,1.938,2820,4.864,2821,4.864,2822,1.711,2823,2.028,2824,2.148,2825,1.169,2826,1.169,2827,2.148,2828,1.169,2829,1.169,2830,1.169,2831,1.169,2832,1.169,2833,1.169,2834,1.169,2835,1.169,2836,1.169,2837,1.169,2838,1.169,2839,1.169,2840,1.169,2841,1.169,2842,1.169,2843,1.169,2844,1.169,2845,1.169,2846,1.169,2847,1.169,2848,1.169,2849,1.169,2850,1.169,2851,1.169,2852,1.169,2853,1.169,2854,1.169,2855,1.169,2856,1.169,2857,1.055,2858,2.506,2859,1.938,2860,1.169,2861,1.055,2862,1.169,2863,1.169,2864,1.169,2865,1.635,2866,0.983,2867,1.169]],["component/55",[2,0.4]],["title/56-1",[205,24.09,206,26.563,1289,37.494]],["name/56-1",[]],["text/56-1",[]],["component/56-1",[]],["title/56-2",[2,8.492,87,26.877,1289,32.632,1444,36.504]],["name/56-2",[]],["text/56-2",[]],["component/56-2",[]],["title/56-3",[2,7.517,8,12.584,119,17.521,1289,28.885,1444,32.313]],["name/56-3",[]],["text/56-3",[]],["component/56-3",[]],["title/56-4",[85,50.288,87,36.29]],["name/56-4",[]],["text/56-4",[]],["component/56-4",[]],["title/56",[83,22.92,1289,44.06]],["name/56",[83,0.556,1289,1.068]],["text/56",[2,1.499,4,1.419,7,0.694,8,1.864,13,1.924,14,1.404,15,0.758,16,2.867,17,1.77,25,1.182,27,1.361,28,2.345,34,1.02,44,0.806,45,0.949,48,0.909,52,0.843,54,3.067,56,1.795,59,0.986,67,1.255,68,1.048,70,1.101,73,2.16,75,1.549,77,0.669,79,1.309,83,1.77,84,1.39,85,2.406,87,0.986,88,1.484,93,0.829,95,1.29,96,3.059,102,4.398,103,0.785,105,1.559,107,0.81,110,1.02,112,1.901,113,1.079,116,1.291,118,0.963,119,1.713,124,0.848,126,1.412,127,1.58,131,2.638,132,1.048,134,1.509,136,1.068,137,1.39,138,1.068,140,1.079,148,2.352,153,1.002,154,0.853,155,1.029,156,0.986,160,2.365,164,3.169,165,0.789,168,0.853,170,2.221,173,3.368,174,3.166,178,0.956,184,1.079,185,0.853,190,1.09,192,0.686,194,1.511,203,1.197,205,2.186,206,1.493,222,2.469,231,0.723,234,2.5,244,0.819,249,0.903,250,1.419,258,0.928,272,1.197,276,1.736,281,0.716,288,0.994,292,0.978,297,2.231,298,3.086,299,1.233,311,1.564,315,0.935,319,1.002,320,1.467,323,1.25,326,1.168,367,0.863,432,0.853,438,0.81,469,0.963,473,1.354,478,2.406,480,3.773,482,1.139,492,0.942,493,1.291,494,1.231,495,1.366,496,6.023,502,1.862,503,1.139,519,1.011,532,1.366,533,1.197,573,2.029,588,0.81,594,0.897,602,2.236,606,0.986,607,1.152,623,1.126,624,1.366,626,1.231,633,2.314,634,2.517,641,1.646,655,1.166,688,2.005,692,1.101,720,1.619,742,0.949,753,1.559,764,1.231,791,1.396,795,1.113,800,1.396,802,2.655,820,0.777,850,1.314,868,1.366,926,1.166,940,1.25,981,0.754,1006,1.314,1139,2.358,1181,1.166,1221,2.308,1222,1.467,1224,1.396,1241,1.029,1249,2.687,1289,5.918,1294,1.27,1356,2.472,1381,1.314,1420,0.909,1435,1.152,1437,4.725,1438,2.655,1444,7.648,1461,1.029,1501,0.994,1506,1.25,1538,1.619,1646,1.467,1810,1.467,1827,1.509,1840,1.509,1853,1.314,1872,2.583,1909,1.231,1935,1.396,1938,2.787,2048,1.166,2087,1.314,2133,1.291,2179,2.517,2281,1.509,2329,4.752,2342,1.339,2367,1.366,2382,1.152,2407,2.984,2684,2.851,2742,2.314,2786,1.619,2819,1.619,2868,3.161,2869,1.467,2870,1.467,2871,1.795,2872,3.161,2873,1.795,2874,4.235,2875,1.795,2876,1.795,2877,1.795,2878,1.795,2879,5.101,2880,4.235,2881,3.161,2882,1.795,2883,1.795,2884,1.795,2885,1.396,2886,1.795,2887,1.795,2888,1.795,2889,1.795,2890,1.795,2891,1.509,2892,3.161,2893,1.509,2894,3.161,2895,1.795,2896,1.795,2897,3.161,2898,1.795,2899,1.795,2900,1.795,2901,1.795,2902,1.795,2903,1.795,2904,3.161,2905,1.795,2906,1.795,2907,1.795,2908,1.795,2909,1.795]],["component/56",[2,0.4]],["title/57",[83,22.92,1179,55.562]],["name/57",[83,0.556,1179,1.347]],["text/57",[2,1.931,63,5.156,315,5.005,1654,8.471]],["component/57",[2,0.4]],["title/58",[1174,44.671,2910,55.562]],["name/58",[1174,1.083,2910,1.347]],["text/58",[2,1.568,38,4.124,137,2.965,231,3.637,237,6.876,334,6.739,1145,6.614,1174,6.108,2910,7.597,2911,9.802,2912,9.034,2913,9.034,2914,9.034]],["component/58",[2,0.4]],["title/59-1",[79,27.357,295,40.531]],["name/59-1",[]],["text/59-1",[]],["component/59-1",[]],["title/59-2",[244,30.158,802,30.158]],["name/59-2",[]],["text/59-2",[]],["component/59-2",[]],["title/59-3",[234,39.258]],["name/59-3",[]],["text/59-3",[]],["component/59-3",[]],["title/59",[295,26.572,1174,29.286,1259,26.028,1260,26.028,1337,33.69]],["name/59",[1174,1.083,1337,1.246]],["text/59",[2,1.356,8,2.496,10,1.881,13,3.551,16,2.217,20,1.402,27,2.177,36,1.638,37,1.387,38,3.758,41,1.13,57,1.232,59,1.242,63,1.213,70,1.387,75,1.108,77,0.842,79,0.936,88,1.062,92,1.387,93,1.044,103,0.989,112,2.684,124,2.388,125,1.195,126,1.01,128,4.034,137,0.742,144,1.656,148,2.418,156,1.242,159,1.308,168,2.402,174,0.886,178,1.204,190,1.373,199,2.088,205,2.876,210,2.093,231,0.911,234,2.478,243,3.576,244,3.566,246,1.242,248,2.307,275,1.656,276,3.687,291,1.529,292,1.232,295,6.129,297,0.989,311,3.289,320,1.793,323,1.575,326,0.835,336,2.369,473,1.655,477,1.434,497,1.308,565,1.005,573,1.452,576,2.51,603,1.169,645,1.529,652,2.345,690,1.373,707,4.749,708,1.721,751,1.759,752,5.092,754,1.6,765,1.359,802,3.758,833,1.488,839,1.902,846,1.905,867,5.014,908,3.135,935,1.213,1021,1.721,1112,1.902,1158,1.801,1162,1.551,1174,1.529,1232,3.156,1241,3.426,1249,1.41,1259,5.351,1260,5.351,1261,1.902,1280,1.881,1305,1.848,1310,1.452,1337,1.759,1420,1.145,1429,1.6,1450,3.792,1454,1.721,1499,3.371,1509,1.801,1559,6.108,1727,1.452,1729,1.434,1738,2.828,1801,1.6,1845,3.327,2077,1.687,2083,4.742,2173,1.656,2252,4.56,2341,1.902,2359,1.434,2381,3.004,2382,1.452,2401,1.902,2413,2.135,2442,1.801,2504,1.801,2548,4.76,2615,3.075,2743,1.902,2784,3.248,2785,3.248,2818,3.248,2915,2.261,2916,2.261,2917,4.56,2918,3.862,2919,2.261,2920,3.862,2921,2.261,2922,3.862,2923,2.261,2924,2.261,2925,2.261,2926,2.261,2927,2.261,2928,2.261,2929,2.261,2930,2.261,2931,2.261,2932,2.261,2933,2.261,2934,2.261,2935,2.261,2936,2.261,2937,2.261,2938,2.261,2939,2.261,2940,2.261,2941,2.261,2942,2.261,2943,2.261,2944,2.261,2945,2.261,2946,2.261,2947,2.261,2948,2.261,2949,2.261,2950,2.261,2951,1.902,2952,2.261,2953,2.261,2954,3.484,2955,2.261,2956,2.261,2957,2.261,2958,2.261]],["component/59",[2,0.4]],["title/60",[246,43.994]],["name/60",[1,1.532]],["text/60",[]],["component/60",[2,0.4]],["title/61-1",[16,17.047,130,19.142,1249,20.519]],["name/61-1",[]],["text/61-1",[]],["component/61-1",[]],["title/61-2",[1299,34.666]],["name/61-2",[]],["text/61-2",[]],["component/61-2",[]],["title/61",[1521,48.371,1522,50.288]],["name/61",[1521,1.173,1522,1.219]],["text/61",[7,2.388,16,2.552,17,2.581,25,2.309,40,4.209,67,2.452,73,2.079,75,3.026,77,2.299,84,2.026,130,2.865,142,3.624,169,3.748,226,2.658,229,2.281,257,3.085,281,2.463,308,2.486,310,2.818,311,3.109,312,2.658,326,2.281,594,3.085,770,3.447,786,3.447,871,3.538,1280,4.099,1299,2.672,1315,4.352,1413,4.178,1417,4.586,1420,3.127,1521,6.162,1522,7.289,1541,5.007,1808,3.507,2140,4.321,2141,3.637,2291,3.337,2304,5.569,2305,5.569,2643,4.7,2744,3.57,2959,7.593,2960,3.787,2961,3.787,2962,3.787,2963,3.71,2964,3.787,2965,3.673]],["component/61",[2,0.4]],["title/62-1",[1417,30.636,1468,29.934,2966,50.723]],["name/62-1",[]],["text/62-1",[]],["component/62-1",[]],["title/62-2",[16,17.047,130,19.142,1249,20.519]],["name/62-2",[]],["text/62-2",[]],["component/62-2",[]],["title/62-3",[1299,34.666]],["name/62-3",[]],["text/62-3",[]],["component/62-3",[]],["title/62-4",[107,29.827,172,33.691]],["name/62-4",[]],["text/62-4",[]],["component/62-4",[]],["title/62",[38,22.335,165,21.508,992,29.112,1722,27.556]],["name/62",[165,1.216]],["text/62",[4,1.101,5,1.295,6,1.965,7,2.952,8,1.201,10,3.068,13,2.878,16,1.254,17,1.025,25,0.917,26,1.186,33,2.329,36,2.275,37,4.317,38,4.312,40,2.358,48,3.191,54,1.172,59,1.346,66,1.707,67,0.974,73,3.092,74,1.504,77,0.913,84,0.805,96,1.083,110,1.392,119,3.593,124,1.954,130,1.408,137,1.357,141,2.721,142,2.31,143,3.712,149,1.194,155,1.405,162,2.271,165,4.617,166,2.202,169,1.488,172,1.25,190,1.488,214,5.022,223,1.072,226,1.781,229,1.528,231,0.987,234,1.201,248,2.448,257,1.225,272,1.635,281,1.65,285,1.325,291,1.657,297,1.072,308,1.665,310,1.119,311,1.528,312,1.055,326,2.327,367,1.179,432,1.165,438,1.867,469,1.315,481,1.325,497,1.417,506,1.707,558,1.573,561,1.866,565,1.089,590,1.681,594,1.225,641,1.276,642,1.906,656,3.256,679,3.735,731,2.414,749,1.657,770,4.535,786,1.369,802,1.119,825,3.795,857,3.148,871,1.405,913,2.391,992,3.748,1170,5.298,1186,2.061,1249,1.509,1252,1.734,1280,2.014,1299,1.79,1307,3.131,1314,1.295,1315,2.774,1339,1.537,1378,1.537,1387,1.392,1390,2.9,1395,2.391,1413,3.128,1417,2.923,1420,2.094,1457,1.906,1468,1.305,1473,1.504,1479,3.148,1480,2.211,1541,2.46,1722,3.548,1873,4.083,1927,1.828,2031,1.537,2140,2.754,2141,1.444,2291,1.325,2349,2.061,2359,2.623,2361,2.925,2500,3.293,2525,1.952,2643,3.518,2685,4.531,2744,1.417,2951,2.061,2960,1.504,2961,1.504,2962,1.504,2963,1.473,2964,1.504,2965,1.458,2966,3.731,2967,5.364,2968,2.451,2969,2.451,2970,6.3,2971,5.364,2972,1.866,2973,8.309,2974,1.906,2975,4.135,2976,4.135,2977,2.211,2978,2.061,2979,2.451,2980,2.003,2981,2.451,2982,2.451,2983,2.451]],["component/62",[2,0.4]],["title/63-1",[69,32.969,79,17.935,789,23.792,992,25.77,2347,28.145]],["name/63-1",[]],["text/63-1",[]],["component/63-1",[]],["title/63-2",[16,17.047,130,19.142,1249,20.519]],["name/63-2",[]],["text/63-2",[]],["component/63-2",[]],["title/63-3",[43,48.623]],["name/63-3",[]],["text/63-3",[]],["component/63-3",[]],["title/63-4",[1299,34.666]],["name/63-4",[]],["text/63-4",[]],["component/63-4",[]],["title/63-5",[2343,53.413]],["name/63-5",[]],["text/63-5",[]],["component/63-5",[]],["title/63-6",[107,29.827,172,33.691]],["name/63-6",[]],["text/63-6",[]],["component/63-6",[]],["title/63",[1526,63.781]],["name/63",[69,2.106]],["text/63",[6,1.977,7,2.088,8,1.953,9,1.694,10,3.733,16,1.636,17,1.417,25,1.268,36,1.438,37,3.311,38,2.463,40,2.955,43,4.081,50,1.998,51,1.717,53,1.662,54,1.621,67,2.144,69,5.117,73,2.263,77,1.263,79,1.404,84,1.113,87,1.862,95,1.384,128,4.605,130,2.289,137,2.926,142,3.3,149,1.651,154,2.565,169,2.058,174,2.115,178,1.805,185,1.611,226,2.324,229,1.252,244,3.819,248,2.463,250,1.522,257,1.694,258,1.753,276,2.964,281,2.153,292,1.847,308,1.365,310,1.547,311,1.994,312,1.46,325,2.037,326,1.252,473,1.453,588,3.035,594,1.694,645,2.292,770,3.013,786,1.893,789,1.862,792,2.203,802,1.547,871,1.943,992,2.017,1119,2.895,1181,2.203,1249,2.453,1251,2.398,1280,2.628,1288,2.058,1299,1.467,1310,2.176,1315,4.327,1356,1.979,1375,2.231,1387,1.926,1395,1.961,1413,3.338,1417,4.856,1420,2.733,1473,2.08,1490,1.909,1526,2.7,1541,3.211,1569,1.778,1639,2.482,1729,2.15,1931,2.325,2140,2.771,2141,1.998,2291,4.524,2343,2.261,2344,4.264,2347,2.203,2359,2.15,2643,3.013,2744,1.961,2782,2.7,2960,2.08,2961,2.08,2962,2.08,2963,2.037,2964,2.08,2965,2.017,2984,6.914,2985,5.396,2986,3.059,2987,4.297,2988,4.868,2989,6.445,2990,3.059,2991,7.097,2992,2.851,2993,2.7,2994,2.851,2995,3.059,2996,2.58,2997,3.059,2998,5.493,2999,2.7,3000,3.059,3001,3.059]],["component/63",[2,0.4]],["title/64-1",[16,17.047,130,19.142,1249,20.519]],["name/64-1",[]],["text/64-1",[]],["component/64-1",[]],["title/64-2",[1299,34.666]],["name/64-2",[]],["text/64-2",[]],["component/64-2",[]],["title/64",[199,35.719,1172,40.108]],["name/64",[199,0.866,1172,0.972]],["text/64",[7,2.402,16,1.883,17,2.596,25,2.322,40,4.222,67,2.467,73,2.091,77,2.313,84,2.038,88,2.917,119,2.512,130,2.877,142,3.639,169,3.77,199,5.193,226,2.674,229,2.294,257,3.103,281,2.478,308,2.5,310,2.834,311,3.122,312,2.674,326,2.294,594,3.103,786,3.468,871,3.559,1172,5.831,1280,4.116,1299,3.657,1315,4.967,1413,3.083,1417,4.604,1420,3.145,1541,5.027,2140,4.339,2141,3.659,2291,4.568,2643,4.718,2744,3.591,2960,3.809,2961,3.809,2962,3.809,2963,3.731,2964,3.809,2965,3.695,3002,6.21,3003,6.21]],["component/64",[2,0.4]],["title/65-1",[25,21.028,107,25.382,172,28.671]],["name/65-1",[]],["text/65-1",[]],["component/65-1",[]],["title/65",[25,21.028,1172,34.131,1654,42.794]],["name/65",[]],["text/65",[2,1.227,4,1.644,6,2.59,8,2.324,19,1.88,20,2.271,22,2.59,25,4.06,26,3.421,27,2.469,30,2.137,31,3.518,39,1.979,40,4.696,43,2.223,44,1.644,53,3.465,67,2.278,71,2.028,72,2.157,73,2.38,81,2.35,83,2.452,93,2.647,95,1.495,98,3.872,99,2.511,105,1.806,106,1.772,131,1.893,194,2.742,200,2.379,201,2.476,209,1.935,233,2.59,256,2.442,271,1.772,285,1.979,288,2.028,293,2.992,296,2.681,302,2.322,326,2.611,367,1.761,432,1.74,474,2.028,481,1.979,497,2.117,533,3.824,539,2.028,550,2.35,553,1.995,565,1.626,573,2.35,603,1.893,690,2.223,731,2.137,742,1.935,754,2.59,765,2.2,778,2.916,851,2.35,902,6.141,906,2.41,1110,3.947,1172,4.856,1173,3.933,1282,2.511,1299,1.585,1314,1.935,1468,3.763,1474,2.634,1501,2.028,1569,1.921,1597,3.303,1609,3.303,1637,2.55,1654,7.011,1689,2.59,1727,2.35,1880,4.822,2130,2.681,2173,2.681,2296,2.787,2346,6.811,2382,2.35,2520,4.822,2613,2.731,3004,2.992,3005,2.916,3006,3.303,3007,5.734,3008,7.068,3009,3.456,3010,3.456,3011,5.173,3012,3.303,3013,2.379,3014,3.661,3015,2.916,3016,3.303,3017,3.661,3018,3.079,3019,7.068,3020,3.661,3021,3.303,3022,3.661,3023,3.661]],["component/65",[2,0.4]],["title/66-1",[992,47.653]],["name/66-1",[]],["text/66-1",[]],["component/66-1",[]],["title/66-2",[16,17.047,130,19.142,1249,20.519]],["name/66-2",[]],["text/66-2",[]],["component/66-2",[]],["title/66-3",[3013,52.045]],["name/66-3",[]],["text/66-3",[]],["component/66-3",[]],["title/66-4",[25,21.028,107,25.382,172,28.671]],["name/66-4",[]],["text/66-4",[]],["component/66-4",[]],["title/66-5",[13,24.916,749,26.482]],["name/66-5",[]],["text/66-5",[]],["component/66-5",[]],["title/66",[1173,54.939]],["name/66",[1173,1.898]],["text/66",[1,1.988,2,0.762,4,1.612,6,0.964,7,1.698,8,2.128,12,1.229,13,1.354,17,1.1,19,1.843,25,1.642,26,0.707,28,1.457,33,0.823,34,3.207,36,0.62,38,0.667,40,2.703,41,0.73,44,1.182,47,0.974,48,1.333,51,0.74,52,1.236,53,0.716,57,0.796,61,1.229,67,2.909,72,0.861,73,1.478,77,0.544,83,0.507,84,0.48,88,1.236,92,0.896,93,1.215,98,1.274,107,1.188,110,0.83,113,1.581,118,0.784,119,0.591,123,0.906,128,0.878,130,0.896,137,1.853,142,1.546,148,0.591,149,2.138,154,1.251,168,0.694,169,0.887,170,0.766,172,0.745,183,1.65,203,0.974,205,1.127,206,1.696,211,1.002,223,2.215,226,1.546,229,0.972,231,1.445,246,0.803,248,0.667,271,0.707,281,2.253,284,0.896,288,2.431,299,0.57,308,1.06,309,1.002,310,0.667,311,1.326,312,0.629,326,2.434,346,0.712,438,1.981,451,1.318,454,0.816,469,3.744,473,0.626,481,1.423,492,0.766,497,3.265,525,1.38,540,0.816,550,0.938,551,1.832,553,0.796,565,3.1,588,0.66,592,0.784,594,0.73,627,3.236,641,1.87,656,0.887,658,0.869,659,1.136,688,0.927,689,0.962,712,4.598,740,0.803,746,1.136,749,2.03,764,1.002,770,1.469,807,1.002,819,2.968,820,2.662,830,1.051,846,0.721,851,0.938,866,3.239,872,2.374,906,1.732,913,0.845,923,1.229,926,0.949,948,1.09,965,1.927,966,0.974,981,2.128,1082,2.355,1091,2.039,1104,0.896,1110,0.816,1116,1.051,1154,1.034,1172,4.634,1173,5.758,1249,1.602,1252,3.994,1280,1.282,1286,1.229,1287,1.508,1296,1.09,1298,1.07,1307,2.562,1311,1.051,1314,1.391,1315,1.361,1356,0.853,1373,1.034,1375,0.962,1387,3.207,1390,1.423,1395,0.845,1413,2.179,1414,1.669,1416,3.463,1449,1.779,1463,3.709,1468,2.337,1490,2.022,1494,1.194,1501,0.809,1502,1.229,1506,1.017,1528,0.887,1531,1.194,1561,1.002,1584,1.194,1612,1.269,1631,1.229,1637,1.017,1683,0.962,1689,1.034,1701,2.095,1707,1.893,1722,2.853,1733,1.269,1788,1.164,1891,1.164,1903,4.588,1940,1.779,2028,2.333,2031,2.251,2075,1.112,2088,1.136,2135,1.927,2139,1.229,2140,1.351,2146,2.095,2158,1.112,2273,1.194,2346,2.539,2361,1.034,2378,0.949,2382,0.938,2643,0.816,2719,1.229,2744,0.845,2972,1.112,2974,1.136,2984,1.318,3004,4.139,3005,1.164,3013,3.292,3024,2.374,3025,5.066,3026,5.066,3027,1.461,3028,2.631,3029,6.59,3030,5.646,3031,2.374,3032,1.461,3033,1.461,3034,1.461,3035,3.239,3036,3.59,3037,1.461,3038,2.631,3039,1.461,3040,1.461,3041,1.461,3042,2.792,3043,1.461,3044,1.461,3045,1.379,3046,2.631,3047,1.461,3048,1.461,3049,1.461,3050,1.461,3051,1.461,3052,2.374,3053,2.631,3054,1.318,3055,1.461,3056,1.461,3057,1.461,3058,1.461,3059,1.318,3060,1.461,3061,1.461,3062,1.461,3063,1.461,3064,1.461,3065,1.461,3066,1.461,3067,1.461,3068,1.461,3069,1.461,3070,1.461,3071,2.631,3072,3.378,3073,2.631,3074,1.461,3075,1.318,3076,0.949,3077,1.318,3078,0.927,3079,1.318,3080,1.755,3081,1.318,3082,1.318,3083,2.374,3084,3.056,3085,1.318,3086,2.374,3087,1.318,3088,2.374,3089,1.318,3090,1.318,3091,0.949,3092,1.318,3093,1.318,3094,1.318,3095,1.318,3096,2.889,3097,1.318,3098,1.318,3099,1.318,3100,1.318,3101,1.318,3102,1.017,3103,1.461,3104,3.586,3105,1.461,3106,2.484,3107,1.461,3108,1.461,3109,1.461,3110,1.461,3111,1.461,3112,1.461,3113,1.461,3114,1.461,3115,1.461,3116,1.461]],["component/66",[2,0.4]],["title/67-1",[16,17.047,130,19.142,1249,20.519]],["name/67-1",[]],["text/67-1",[]],["component/67-1",[]],["title/67",[3117,80.094]],["name/67",[3118,2.767]],["text/67",[]],["component/67",[2,0.4]],["title/68",[3119,67.357]],["name/68",[3119,2.327]],["text/68",[]],["component/68",[2,0.4]],["title/69",[1529,54.939]],["name/69",[1529,1.898]],["text/69",[]],["component/69",[2,0.4]],["title/70-1",[16,17.047,130,19.142,1249,20.519]],["name/70-1",[]],["text/70-1",[]],["component/70-1",[]],["title/70-2",[1299,34.666]],["name/70-2",[]],["text/70-2",[]],["component/70-2",[]],["title/70-3",[13,24.916,749,26.482]],["name/70-3",[]],["text/70-3",[]],["component/70-3",[]],["title/70-4",[73,22.246,326,24.407]],["name/70-4",[]],["text/70-4",[]],["component/70-4",[]],["title/70",[1470,60.964]],["name/70",[1255,1.958]],["text/70",[1,3.755,2,0.596,7,1.329,8,2.604,16,1.653,17,1.436,25,2.536,38,1.568,40,3.393,67,1.364,73,3.381,75,3.784,77,1.279,84,1.127,93,1.585,95,1.402,130,2.628,142,2.92,169,2.085,173,1.494,174,2.658,176,2.064,205,1.472,223,3.682,226,2.348,229,1.269,230,1.857,257,1.716,258,2.819,278,2.562,281,2.176,288,5.398,308,1.383,310,1.568,311,3.111,312,1.479,313,2.154,325,2.064,326,2.505,385,3.686,432,1.632,438,1.55,462,2.806,539,1.902,565,1.526,588,2.461,592,1.842,594,1.716,645,2.322,712,1.934,746,4.241,749,1.377,786,1.918,802,1.568,809,2.888,820,2.934,871,1.968,1110,1.918,1255,3.857,1280,2.656,1287,1.968,1288,2.085,1298,2.514,1299,2.36,1308,2.29,1312,5.376,1315,4.354,1361,2.806,1384,3.922,1390,4.174,1395,4.465,1413,3.833,1414,2.178,1417,2.971,1420,2.761,1450,2.178,1452,2.614,1470,2.614,1490,1.934,1541,3.244,1662,3.098,1873,5.161,2028,2.232,2031,4.252,2140,2.8,2141,2.024,2291,2.948,2294,3.636,2302,4.585,2361,2.43,2534,2.735,2643,3.045,2744,1.986,2960,2.107,2961,2.107,2962,2.107,2963,2.064,2964,2.107,2965,2.043,3005,2.735,3076,2.232,3091,2.232,3096,2.26,3120,3.434,3121,6.117,3122,3.098,3123,4.455,3124,4.919,3125,3.434,3126,3.434,3127,3.434]],["component/70",[2,0.4]],["title/71-1",[16,17.047,130,19.142,1249,20.519]],["name/71-1",[]],["text/71-1",[]],["component/71-1",[]],["title/71-2",[39,43.302]],["name/71-2",[]],["text/71-2",[]],["component/71-2",[]],["title/71-3",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/71-3",[]],["text/71-3",[]],["component/71-3",[]],["title/71-4",[13,24.916,805,42.931]],["name/71-4",[]],["text/71-4",[]],["component/71-4",[]],["title/71-5",[13,24.916,1759,49.288]],["name/71-5",[]],["text/71-5",[]],["component/71-5",[]],["title/71",[1478,58.64]],["name/71",[1478,2.026]],["text/71",[3,2.149,4,1.879,6,2.599,7,0.962,8,2.824,10,2.639,13,3.238,14,1.104,15,1.049,25,2.027,28,3.001,36,1.775,38,1.135,39,3.835,40,2.382,41,1.242,44,1.116,59,1.365,63,1.334,67,3.248,72,1.465,73,2.388,77,0.926,81,2.686,84,0.816,92,2.567,103,1.087,130,2.415,131,1.285,142,1.802,148,1.005,153,1.388,160,1.388,169,1.509,171,1.541,174,1.64,185,1.181,205,1.793,210,2.632,217,3.614,223,1.83,226,1.802,229,0.918,231,1.685,249,1.25,250,1.116,258,2.802,281,3.879,288,4.257,292,2.28,297,1.087,308,1.001,310,1.135,311,2.002,312,1.07,326,0.918,407,1.242,444,3.01,473,1.065,481,2.262,518,1.377,519,1.4,541,1.892,565,1.104,584,1.4,588,2.446,600,1.465,604,1.425,627,3.106,656,1.509,679,1.731,712,2.357,749,2.172,750,1.344,802,2.902,820,3.07,846,2.064,882,1.658,1145,6.285,1170,2.09,1181,3.521,1249,0.907,1280,3.455,1312,2.914,1315,2.164,1336,1.82,1387,4.029,1395,3.676,1405,2.624,1406,1.979,1413,2.69,1416,2.357,1438,1.559,1461,1.425,1478,5.193,1490,3.052,1759,4.742,1760,1.636,1856,1.82,2224,2.243,2288,4.995,2299,2.243,2406,1.731,2685,1.788,2715,3.255,2858,3.519,3128,2.486,3129,2.486,3130,4.889,3131,6.357,3132,2.486,3133,2.486,3134,2.486,3135,2.243,3136,3.775,3137,2.243,3138,2.243,3139,2.243,3140,2.243,3141,2.243,3142,2.243,3143,2.243,3144,3.775,3145,3.775,3146,2.09,3147,2.243,3148,2.243,3149,3.775,3150,2.243,3151,1.933,3152,2.243,3153,2.243,3154,2.243,3155,2.243,3156,2.243,3157,9.492,3158,1.979,3159,2.486,3160,4.185,3161,2.486,3162,4.185,3163,2.486,3164,2.486,3165,2.486,3166,2.486,3167,2.486,3168,4.185,3169,2.486,3170,2.16,3171,2.486,3172,2.486,3173,2.486,3174,2.486,3175,2.486]],["component/71",[2,0.4]],["title/72-1",[1067,55.562,1172,40.108]],["name/72-1",[]],["text/72-1",[]],["component/72-1",[]],["title/72-2",[16,17.047,130,19.142,1249,20.519]],["name/72-2",[]],["text/72-2",[]],["component/72-2",[]],["title/72-3",[3013,52.045]],["name/72-3",[]],["text/72-3",[]],["component/72-3",[]],["title/72-4",[25,21.028,107,25.382,172,28.671]],["name/72-4",[]],["text/72-4",[]],["component/72-4",[]],["title/72-5",[13,24.916,749,26.482]],["name/72-5",[]],["text/72-5",[]],["component/72-5",[]],["title/72",[192,30.59]],["name/72",[3176,2.496]],["text/72",[2,1.069,4,1.337,6,1.781,7,1.152,8,1.412,14,3.157,15,1.257,25,3.143,26,1.441,36,2.062,37,1.827,38,1.359,40,3.124,41,1.488,44,1.337,51,2.462,52,1.399,61,1.391,67,3.111,73,2.985,77,1.109,83,1.033,84,0.978,92,1.827,98,2.353,99,2.043,103,1.302,126,1.33,130,1.655,142,2.652,149,1.45,169,1.808,171,1.847,192,2.352,206,1.407,226,2.652,228,1.789,229,1.1,248,1.359,250,1.337,281,1.939,288,2.692,308,1.199,310,1.359,311,2.275,312,1.282,326,3.274,346,1.45,438,3.209,443,1.707,447,2.371,474,3.411,497,2.811,536,2.222,540,1.663,565,2.736,575,1.789,588,1.344,603,1.54,627,4.488,656,2.951,712,2.737,744,2.142,749,1.194,764,2.043,770,2.714,820,3.39,906,1.96,907,2.504,935,1.598,981,3.29,1082,1.598,1091,1.692,1110,1.663,1127,2.371,1172,3.739,1173,3.334,1249,1.087,1252,2.107,1280,2.367,1287,2.786,1315,1.54,1413,3.058,1414,3.083,1579,1.789,1631,2.504,1640,2.074,1716,2.504,1722,1.677,1760,3.199,1903,3.626,2028,4.619,2031,3.862,2071,2.142,2140,1.529,2146,3.871,2346,2.107,2361,2.107,2382,1.911,2520,4.088,2540,2.074,2573,2.504,2613,4.594,2643,2.714,2744,1.722,2865,2.267,2972,2.267,2987,3.871,3011,2.687,3013,3.158,3052,2.687,3072,1.986,3076,1.935,3077,2.687,3078,1.889,3079,2.687,3080,3.242,3081,2.687,3082,2.687,3083,4.385,3084,4.949,3085,2.687,3086,4.385,3087,2.687,3088,4.385,3089,2.687,3090,2.687,3091,1.935,3092,2.687,3093,2.687,3094,2.687,3095,2.687,3096,4.678,3097,2.687,3098,2.687,3099,2.687,3100,2.687,3101,2.687,3102,2.074,3176,2.687,3177,2.267,3178,2.687,3179,2.687,3180,2.687,3181,2.978,3182,2.687,3183,2.978,3184,2.978,3185,2.978,3186,2.504]],["component/72",[2,0.4]],["title/73-1",[16,17.047,130,19.142,1249,20.519]],["name/73-1",[]],["text/73-1",[]],["component/73-1",[]],["title/73-2",[1299,34.666]],["name/73-2",[]],["text/73-2",[]],["component/73-2",[]],["title/73",[1376,48.371,3187,52.612]],["name/73",[1376,1.173,3187,1.275]],["text/73",[7,2.32,16,1.818,17,2.507,25,2.243,40,4.146,67,2.382,73,2.019,77,2.234,84,1.969,130,2.809,142,4.062,169,3.641,226,2.583,229,2.216,257,2.997,281,2.393,308,2.415,310,2.738,311,3.048,312,2.583,326,3.048,438,3.725,594,2.997,786,3.349,871,3.437,1280,4.019,1299,3.571,1315,4.267,1376,6.906,1413,4.097,1417,4.496,1420,3.038,1530,7.444,1541,4.909,2140,4.237,2141,3.534,2291,3.242,2406,5.746,2643,5.673,2744,3.468,2960,3.679,2961,3.679,2962,3.679,2963,3.604,2964,3.679,2965,3.568,2977,5.411,3187,7.511]],["component/73",[2,0.4]],["title/74-1",[467,41.127]],["name/74-1",[]],["text/74-1",[]],["component/74-1",[]],["title/74",[6,17.93,44,21.971,67,19.437,100,29.112]],["name/74",[1,1.532]],["text/74",[2,1.205,6,3.85,13,3.434,26,4.7,51,3.517,63,3.726,67,3.617,96,2.081,112,2.115,165,3.053,194,2.252,199,3.755,207,3.153,210,1.95,215,2.802,216,2.699,223,3.037,248,2.15,254,4.571,281,4.054,315,3.617,320,2.187,346,3.383,473,2.018,565,2.092,627,3.98,656,2.859,820,3.006,1173,4.764,1258,5.061,1259,4.173,1260,4.173,1295,5.286,1341,3.663,1342,3.23,1372,5.286,1376,5.085,1470,6.931,1473,4.26,1478,5.085,1521,5.085,1526,5.53,1529,4.764,1931,4.764,2350,5.085,2613,3.513,2893,3.961,2973,5.84,3119,5.84,3187,5.53,3188,6.945,3189,5.53,3190,6.945,3191,6.265,3192,6.265,3193,6.945,3194,4.71,3195,6.945,3196,4.71]],["component/74",[2,0.4]],["title/75-1",[16,17.047,130,19.142,1249,20.519]],["name/75-1",[]],["text/75-1",[]],["component/75-1",[]],["title/75-2",[43,48.623]],["name/75-2",[]],["text/75-2",[]],["component/75-2",[]],["title/75-3",[2343,53.413]],["name/75-3",[]],["text/75-3",[]],["component/75-3",[]],["title/75-4",[1808,45.498]],["name/75-4",[]],["text/75-4",[]],["component/75-4",[]],["title/75-5",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/75-5",[]],["text/75-5",[]],["component/75-5",[]],["title/75",[1372,60.964]],["name/75",[3197,2.496]],["text/75",[6,2.084,7,1.402,8,2.511,9,1.049,10,2.77,13,3.617,14,2.123,15,1.529,16,2.281,17,0.878,24,1.288,25,0.785,36,0.89,38,1.654,40,2.5,43,2.901,45,1.109,48,1.063,50,1.237,51,1.063,53,1.776,54,1.004,61,0.98,66,1.462,67,1.439,73,0.707,76,1.4,77,0.782,79,0.869,84,0.689,95,2.866,113,1.261,128,3.417,130,1.936,136,2.155,137,2.47,142,3.24,149,1.765,154,2.703,156,1.153,159,1.214,160,1.172,162,1.153,168,0.998,169,1.274,171,1.302,173,1.576,174,1.42,175,1.288,178,1.118,185,2.272,205,0.899,210,0.869,223,1.584,226,0.904,229,0.775,231,0.845,244,3.63,250,0.943,254,1.381,258,1.085,271,1.754,281,1.907,288,2.647,292,1.144,301,1.056,308,1.924,309,5.455,310,0.958,311,1.766,312,0.904,319,2.023,326,2.101,382,3.208,432,3.051,444,1.51,448,1.261,469,1.126,473,0.899,561,1.598,565,0.932,588,3.397,603,2.471,606,1.99,627,2.076,689,2.384,712,1.182,752,2.523,765,5,770,3.176,792,1.364,802,2.182,815,1.214,820,0.909,935,3.051,1112,1.765,1114,3.381,1119,1.944,1172,2.901,1181,1.364,1249,2.562,1251,1.485,1256,5.245,1280,1.765,1286,1.765,1287,1.203,1288,1.274,1300,6.788,1310,2.325,1315,2.941,1356,1.225,1372,3.638,1375,1.381,1386,1.566,1413,2.824,1417,4.1,1420,1.835,1447,1.765,1468,1.929,1471,1.4,1481,1.715,1490,1.182,1534,1.302,1569,1.901,1639,1.537,1729,1.331,1808,2.715,1845,3.145,1931,2.485,2135,2.652,2291,3.075,2343,1.4,2344,3.032,2359,3.032,2361,1.485,2406,2.523,2782,2.885,2822,1.672,2986,1.894,2987,2.885,2988,1.894,2989,4.783,2990,1.894,2991,5.59,2992,1.765,2993,1.672,2994,1.765,2995,1.894,2996,1.598,2997,1.894,2998,4.647,2999,1.672,3000,1.894,3001,1.894,3042,2.818,3197,1.894,3198,2.099,3199,2.099,3200,2.099,3201,3.623,3202,3.623,3203,2.099,3204,1.598,3205,4.779,3206,1.894,3207,1.894,3208,1.894,3209,7.02,3210,2.099,3211,3.623,3212,2.099,3213,1.765,3214,3.623,3215,2.099,3216,3.623,3217,2.099,3218,2.099]],["component/75",[2,0.4]],["title/76-1",[16,17.047,130,19.142,1249,20.519]],["name/76-1",[]],["text/76-1",[]],["component/76-1",[]],["title/76-2",[1299,34.666]],["name/76-2",[]],["text/76-2",[]],["component/76-2",[]],["title/76-3",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/76-3",[]],["text/76-3",[]],["component/76-3",[]],["title/76-4",[16,20.032,1249,24.113]],["name/76-4",[]],["text/76-4",[]],["component/76-4",[]],["title/76-5",[192,25.234,749,26.482]],["name/76-5",[]],["text/76-5",[]],["component/76-5",[]],["title/76-6",[73,22.246,326,24.407]],["name/76-6",[]],["text/76-6",[]],["component/76-6",[]],["title/76",[3189,63.781]],["name/76",[3189,2.204]],["text/76",[4,1.392,7,1.2,8,2.324,10,1.51,13,3.016,14,1.377,16,2.596,17,1.296,25,1.879,36,2.131,40,3.2,51,1.57,67,1.995,73,2.693,77,1.155,84,1.018,95,1.266,103,2.196,128,3.018,130,2.478,142,3.135,153,2.805,168,1.474,169,1.882,185,1.474,192,1.184,205,1.329,210,2.622,212,2.373,226,1.335,229,1.145,230,1.676,231,1.248,257,1.55,278,2.313,281,2.004,286,1.777,308,1.248,310,1.415,311,1.856,312,1.335,313,1.944,325,1.863,326,2.689,367,1.492,385,3.396,407,1.55,412,2.797,432,1.474,438,1.4,466,2.096,565,1.377,588,3.611,594,1.55,667,2.193,712,3.566,746,3.907,749,3.206,750,1.676,786,1.731,789,3.478,792,2.015,802,1.415,830,2.23,871,1.777,939,2.068,981,1.303,1110,1.731,1249,2.311,1255,2.193,1280,2.447,1287,3.629,1288,1.882,1299,2.174,1307,1.81,1308,2.068,1310,1.99,1315,4.136,1361,5.174,1387,3.597,1395,1.793,1413,4.661,1414,1.967,1417,2.737,1420,2.544,1450,1.967,1452,2.36,1490,1.746,1541,2.988,1931,4.343,2028,2.015,2031,3.97,2081,3.15,2140,2.579,2141,1.827,2291,2.716,2302,4.224,2359,1.967,2367,3.823,2378,2.015,2643,2.805,2744,1.793,2960,1.902,2961,1.902,2962,1.902,2963,1.863,2964,1.902,2965,1.845,3072,2.068,3076,2.015,3078,5.719,3080,2.068,3091,2.015,3096,2.041,3121,7.724,3122,2.797,3123,6.536,3124,4.532,3189,6.369,3219,2.797,3220,3.101,3221,2.694,3222,3.101,3223,3.101,3224,2.412,3225,3.101,3226,2.534,3227,2.36]],["component/76",[2,0.4]],["title/77-1",[16,17.047,130,19.142,1249,20.519]],["name/77-1",[]],["text/77-1",[]],["component/77-1",[]],["title/77-2",[63,35.444,1299,28.595]],["name/77-2",[]],["text/77-2",[]],["component/77-2",[]],["title/77-3",[1299,34.666]],["name/77-3",[]],["text/77-3",[]],["component/77-3",[]],["title/77-4",[63,35.444,64,52.612]],["name/77-4",[]],["text/77-4",[]],["component/77-4",[]],["title/77-5",[1299,34.666]],["name/77-5",[]],["text/77-5",[]],["component/77-5",[]],["title/77-6",[39,43.302]],["name/77-6",[]],["text/77-6",[]],["component/77-6",[]],["title/77-7",[63,35.444,65,47.525]],["name/77-7",[]],["text/77-7",[]],["component/77-7",[]],["title/77-8",[1299,34.666]],["name/77-8",[]],["text/77-8",[]],["component/77-8",[]],["title/77-9",[39,43.302]],["name/77-9",[]],["text/77-9",[]],["component/77-9",[]],["title/77-10",[67,26.244,565,29.349]],["name/77-10",[]],["text/77-10",[]],["component/77-10",[]],["title/77-11",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/77-11",[]],["text/77-11",[]],["component/77-11",[]],["title/77-12",[16,20.032,1249,24.113]],["name/77-12",[]],["text/77-12",[]],["component/77-12",[]],["title/77-13",[192,25.234,749,26.482]],["name/77-13",[]],["text/77-13",[]],["component/77-13",[]],["title/77-14",[1103,39.701,3228,46.739]],["name/77-14",[]],["text/77-14",[]],["component/77-14",[]],["title/77-15",[73,22.246,326,24.407]],["name/77-15",[]],["text/77-15",[]],["component/77-15",[]],["title/77-16",[8,19.195,3229,49.288]],["name/77-16",[]],["text/77-16",[]],["component/77-16",[]],["title/77-17",[231,32.25]],["name/77-17",[]],["text/77-17",[]],["component/77-17",[]],["title/77",[63,35.444,3230,66.069]],["name/77",[63,1.485]],["text/77",[3,0.419,6,0.563,7,0.842,8,2.027,10,1.06,13,3.344,14,2.023,15,1.578,16,1.381,17,0.91,24,1.335,25,1.029,28,0.451,33,1.226,37,1.335,38,1.256,39,2.021,40,2.677,49,1.831,51,1.656,56,0.463,59,0.843,63,4.112,64,1.223,65,1.105,67,1.809,72,0.905,73,2.209,77,0.811,84,0.715,88,0.383,95,0.627,96,1.84,103,0.952,108,0.649,125,0.811,126,0.364,130,1.785,142,4.001,148,0.33,149,0.397,162,0.448,164,0.444,168,0.387,169,1.322,174,1.785,183,2.856,185,1.554,192,0.586,205,1.179,206,0.725,210,1.886,217,2.493,223,2.869,226,1.408,229,1.016,231,1.505,244,2.393,245,3.596,248,0.372,250,1.678,257,1.088,258,3.149,274,0.634,278,0.608,280,0.735,281,3.538,288,3.634,300,1.086,301,1.384,308,0.877,310,0.994,311,1.815,312,0.937,313,3.287,326,1.683,367,0.392,382,0.407,407,0.767,438,3.389,446,1.35,448,0.49,510,2.612,518,0.85,522,0.53,539,0.451,565,0.362,588,3.764,594,1.088,603,0.422,604,0.88,618,0.505,641,0.425,679,0.568,688,0.517,689,0.536,712,2.346,749,1.969,750,1.177,770,2.927,786,1.216,802,0.701,805,0.998,819,3.544,820,1.803,830,1.105,833,0.536,846,1.613,871,1.248,913,0.471,939,0.544,963,2.191,981,0.342,1017,3.529,1091,0.872,1103,2.503,1110,0.455,1162,0.559,1181,2.429,1248,3.909,1249,1.913,1251,2.645,1252,0.577,1253,0.62,1254,0.49,1262,0.559,1263,0.769,1280,1.821,1287,2.387,1288,0.495,1299,1.618,1307,2.659,1308,0.544,1309,0.586,1311,0.586,1312,0.568,1315,2.54,1356,0.476,1387,1.237,1390,1.767,1391,3.144,1392,3.771,1393,1.54,1395,0.471,1405,1.365,1408,6.386,1413,4.14,1414,0.517,1417,2.037,1420,1.103,1427,4.637,1438,0.963,1450,0.517,1456,0.666,1463,1.594,1473,0.942,1490,2.346,1505,1.779,1541,2.224,1607,0.686,1641,0.649,1682,0.649,1708,0.649,1722,0.459,1759,1.146,1856,1.124,2028,1.415,2031,1.365,2081,1.365,2083,1.67,2140,2.139,2141,1.283,2288,4.77,2291,1.177,2362,0.708,2378,0.53,2406,0.568,2643,3.255,2655,0.666,2673,1.734,2681,5.92,2682,1.385,2685,1.105,2686,3.758,2715,2.14,2744,1.259,2822,1.223,2858,2.314,2960,1.335,2961,1.335,2962,1.335,2963,1.308,2964,1.335,2965,1.295,2987,1.734,3042,1.693,3072,0.544,3076,0.998,3078,3.116,3080,0.544,3084,0.568,3091,0.53,3096,0.536,3102,0.568,3135,1.385,3136,2.482,3137,1.385,3138,1.385,3139,1.385,3140,1.385,3141,1.385,3142,1.385,3143,1.385,3144,2.482,3145,2.482,3146,1.291,3147,1.385,3148,1.385,3149,2.482,3150,1.385,3151,1.194,3152,1.385,3153,1.385,3154,1.385,3155,1.385,3156,1.385,3213,0.686,3224,0.634,3226,0.666,3227,0.62,3228,4.481,3231,1.891,3232,0.815,3233,5.242,3234,2.752,3235,2.362,3236,2.362,3237,4.056,3238,0.884,3239,0.815,3240,0.815,3241,0.708,3242,0.884,3243,0.884,3244,0.708,3245,0.815,3246,0.815,3247,1.779,3248,0.815,3249,0.815,3250,0.815,3251,1.536,3252,0.815,3253,1.536,3254,1.536,3255,0.815,3256,0.815,3257,0.815,3258,0.815,3259,0.815,3260,1.536,3261,0.815,3262,0.815,3263,1.536,3264,0.608,3265,0.735,3266,0.686,3267,0.708,3268,0.686,3269,0.815,3270,0.815,3271,0.735,3272,0.815,3273,0.735,3274,0.815,3275,1.536,3276,0.735,3277,0.815,3278,0.815,3279,0.815,3280,0.815,3281,0.815,3282,1.536,3283,0.815,3284,0.815,3285,0.815,3286,0.815,3287,0.815,3288,0.884,3289,0.884,3290,0.884,3291,0.884,3292,0.884,3293,0.815,3294,0.815,3295,0.815,3296,0.815,3297,0.815,3298,0.815,3299,1.536,3300,0.815,3301,0.815,3302,0.815,3303,0.815,3304,0.815,3305,0.815]],["component/77",[2,0.4]],["title/78-1",[16,17.047,130,19.142,1249,20.519]],["name/78-1",[]],["text/78-1",[]],["component/78-1",[]],["title/78-2",[1299,34.666]],["name/78-2",[]],["text/78-2",[]],["component/78-2",[]],["title/78-3",[16,20.032,1249,24.113]],["name/78-3",[]],["text/78-3",[]],["component/78-3",[]],["title/78-4",[36,28.028,867,42.408]],["name/78-4",[]],["text/78-4",[]],["component/78-4",[]],["title/78-5",[707,46.739,3306,66.069]],["name/78-5",[]],["text/78-5",[]],["component/78-5",[]],["title/78-6",[876,50.288,3307,53.988]],["name/78-6",[]],["text/78-6",[]],["component/78-6",[]],["title/78-7",[13,24.916,749,26.482]],["name/78-7",[]],["text/78-7",[]],["component/78-7",[]],["title/78-8",[73,22.246,326,24.407]],["name/78-8",[]],["text/78-8",[]],["component/78-8",[]],["title/78-9",[13,16.335,231,17.441,846,21.366,1259,26.028,1260,26.028]],["name/78-9",[]],["text/78-9",[]],["component/78-9",[]],["title/78-10",[8,19.195,3229,49.288]],["name/78-10",[]],["text/78-10",[]],["component/78-10",[]],["title/78-11",[73,14.584,473,18.558,498,32.313,1259,26.028,1260,26.028]],["name/78-11",[]],["text/78-11",[]],["component/78-11",[]],["title/78-12",[319,27.324,498,36.504,1259,29.403,1260,29.403]],["name/78-12",[]],["text/78-12",[]],["component/78-12",[]],["title/78-13",[2083,40.108,2335,51.389]],["name/78-13",[]],["text/78-13",[]],["component/78-13",[]],["title/78-14",[295,30.018,882,32.632,1259,29.403,1260,29.403]],["name/78-14",[]],["text/78-14",[]],["component/78-14",[]],["title/78-15",[107,22.09,172,24.952,1259,29.403,1260,29.403]],["name/78-15",[]],["text/78-15",[]],["component/78-15",[]],["title/78",[1259,39.701,1260,39.701]],["name/78",[2381,2.152]],["text/78",[2,0.903,4,1.63,6,0.473,7,0.714,8,2.207,10,1.145,13,1.505,14,1.044,15,0.992,16,1.654,17,1.517,18,0.928,19,1.207,25,2.214,26,1.362,27,1.211,28,0.714,31,0.416,33,1.824,34,0.385,36,0.997,38,0.31,40,1.902,41,0.922,44,0.579,47,0.452,48,0.934,50,0.76,51,0.653,52,1.104,53,1.779,55,1.285,56,0.733,58,0.372,61,0.317,66,0.472,67,1.843,68,0.396,70,1.442,71,1.022,72,1.385,73,2.195,76,0.86,77,0.253,83,0.976,84,0.606,87,0.709,88,0.606,93,0.313,95,0.96,96,0.57,98,0.893,102,0.385,103,0.297,106,1.138,107,0.582,110,0.385,112,0.828,113,0.775,119,0.522,126,0.303,128,0.407,130,2.088,137,1.523,142,2.35,148,0.746,149,1.577,158,0.317,162,0.709,166,0.361,168,0.877,169,0.412,172,0.346,173,1.224,185,0.613,191,0.382,192,0.493,194,0.324,200,0.441,205,1.555,206,0.609,207,0.308,210,1.341,214,0.849,218,0.662,222,0.893,223,1.028,225,0.527,226,0.556,227,0.472,228,0.775,229,0.682,230,0.697,231,0.743,235,0.621,244,1.657,246,0.372,248,0.589,249,0.649,250,0.828,257,0.339,258,0.667,260,0.554,266,0.516,268,0.554,275,0.496,281,2.866,284,0.791,286,0.389,291,0.872,292,0.37,293,1.054,295,5.197,297,0.297,298,0.326,299,0.265,301,0.341,302,0.43,308,0.947,310,0.31,311,0.868,312,0.292,315,0.353,319,3.047,320,0.599,324,0.421,325,0.775,326,2.104,346,1.37,367,0.326,376,0.57,413,0.589,432,0.613,438,1.639,443,0.389,446,1.144,458,0.403,462,0.554,466,0.458,467,0.662,469,2.791,473,1.387,477,1.17,479,0.488,481,0.997,497,1.873,498,3.228,503,1.784,511,0.488,527,0.356,535,0.416,540,1.03,552,0.54,553,0.37,558,0.435,562,0.54,563,0.944,565,1.044,570,1.164,576,1.828,578,2.24,584,0.382,585,0.441,592,1.261,594,0.645,598,1.902,600,0.76,604,0.389,613,0.527,618,0.8,622,0.516,627,0.739,645,3.137,651,0.496,654,0.86,656,0.412,667,0.48,675,0.488,688,1.491,707,4.612,708,0.516,712,1.324,731,0.753,739,0.446,742,0.358,749,0.517,750,1.521,751,1.003,752,2.255,753,2.042,765,1.109,771,0.465,773,0.412,785,0.809,786,0.379,789,0.709,794,0.554,798,1.977,802,1.284,807,0.885,815,0.392,819,0.872,820,1.017,833,1.547,846,1.388,847,3.568,851,0.435,852,0.885,857,0.982,858,1.351,861,0.506,865,0.458,867,4.703,871,0.389,876,0.516,878,2.823,882,0.452,894,0.446,908,0.421,918,0.64,934,1.199,939,0.452,951,0.516,961,0.57,965,1.351,967,0.516,977,0.589,980,0.452,981,1.818,1039,1.085,1082,0.364,1083,0.516,1091,0.385,1110,0.379,1116,0.488,1119,0.364,1141,0.57,1142,0.554,1154,0.48,1158,2.89,1174,0.872,1197,0.48,1205,0.435,1224,0.527,1249,2.507,1250,0.527,1251,1.663,1254,1.109,1258,0.791,1259,4.85,1260,4.714,1261,1.977,1280,1.944,1287,1.347,1288,0.412,1298,1.721,1299,0.799,1307,1.372,1308,0.452,1309,0.488,1310,1.184,1311,0.488,1314,0.975,1315,1.216,1328,2.416,1337,1.003,1338,0.612,1341,0.527,1342,0.465,1346,0.554,1354,0.458,1356,0.396,1375,0.849,1383,0.554,1384,0.488,1387,2.458,1390,1.521,1393,1.305,1403,0.589,1413,2.448,1414,0.43,1416,3.207,1417,1.281,1420,0.934,1435,0.435,1437,0.435,1450,1.17,1463,0.944,1471,0.452,1473,1.132,1474,0.488,1492,1.085,1495,0.885,1497,1.121,1499,0.452,1501,0.376,1506,0.472,1512,0.589,1516,0.416,1528,2.203,1541,0.768,1551,0.54,1561,0.465,1569,0.356,1574,0.452,1579,0.775,1586,0.589,1601,0.496,1617,0.57,1627,0.48,1641,1.027,1652,0.43,1689,0.48,1690,0.612,1716,0.57,1722,2.776,1724,1.003,1727,0.828,1783,1.552,1801,0.913,1845,4.167,1853,2.06,1865,1.902,1878,1.508,1883,1.085,1903,0.506,1940,0.458,1952,0.506,2028,1.527,2031,1.157,2048,0.838,2073,0.554,2077,0.506,2083,2.423,2129,0.506,2130,0.944,2140,1.207,2141,0.4,2253,0.54,2259,0.612,2291,0.697,2325,0.554,2335,1.435,2341,3.639,2347,0.838,2354,0.554,2359,0.43,2360,0.589,2363,1.164,2367,0.516,2373,1.29,2375,0.57,2376,0.678,2378,0.838,2381,2.519,2382,0.435,2390,3.768,2394,1.218,2401,0.57,2405,1.218,2411,0.64,2428,0.612,2499,0.982,2500,0.54,2504,0.54,2525,1.027,2552,1.085,2576,0.54,2613,0.962,2643,2.229,2719,2.366,2742,0.496,2744,0.392,2790,1.218,2791,3.601,2893,0.57,2960,0.416,2961,0.416,2962,0.416,2963,0.407,2964,0.416,2965,0.403,2974,1.828,2998,0.554,3004,1.508,3009,0.64,3015,0.54,3018,0.57,3054,0.612,3072,0.452,3076,0.441,3078,2.745,3080,0.452,3084,0.472,3091,0.441,3096,0.446,3102,0.472,3104,1.054,3106,0.64,3170,0.589,3179,0.612,3186,1.085,3204,0.516,3213,1.085,3224,0.527,3244,0.589,3264,0.506,3307,1.921,3308,1.29,3309,1.29,3310,0.678,3311,0.678,3312,0.678,3313,0.678,3314,1.845,3315,0.678,3316,1.29,3317,1.29,3318,1.29,3319,1.29,3320,1.29,3321,0.678,3322,0.678,3323,0.678,3324,0.678,3325,1.508,3326,1.29,3327,1.121,3328,0.678,3329,1.29,3330,0.678,3331,0.678,3332,1.29,3333,1.29,3334,2.813,3335,1.29,3336,1.29,3337,0.678,3338,1.29,3339,0.678,3340,0.678,3341,1.29,3342,0.678,3343,0.736,3344,0.736,3345,0.678,3346,0.678,3347,0.589,3348,0.678,3349,0.678,3350,0.678,3351,0.57,3352,1.164,3353,0.612,3354,0.678,3355,0.678,3356,0.589,3357,0.678,3358,0.678,3359,0.678,3360,0.678,3361,0.678,3362,0.678,3363,0.736,3364,0.736,3365,0.736,3366,0.736,3367,0.678,3368,0.678,3369,0.736,3370,0.678,3371,0.678,3372,0.736,3373,1.845,3374,1.845,3375,1.845,3376,1.845,3377,0.678,3378,0.678,3379,0.736,3380,1.4,3381,2.002,3382,0.678,3383,0.589,3384,1.845,3385,0.678,3386,0.736,3387,0.736,3388,0.736,3389,0.736,3390,0.736,3391,0.736,3392,0.64,3393,0.736,3394,0.64,3395,0.736,3396,0.736,3397,0.736,3398,0.736,3399,0.736,3400,0.736,3401,0.736,3402,0.736,3403,0.736,3404,0.736,3405,0.736,3406,1.4,3407,0.736,3408,0.612,3409,0.54,3410,0.736,3411,0.678,3412,1.29,3413,0.678,3414,0.612,3415,0.678,3416,0.678,3417,0.678,3418,0.678]],["component/78",[2,0.4]],["title/79-1",[16,17.047,130,19.142,1249,20.519]],["name/79-1",[]],["text/79-1",[]],["component/79-1",[]],["title/79-2",[1299,34.666]],["name/79-2",[]],["text/79-2",[]],["component/79-2",[]],["title/79",[6,17.93,207,22.212,346,23.833,3191,44.145]],["name/79",[6,0.587,346,0.78]],["text/79",[6,3.585,7,2.49,16,1.952,17,2.691,25,2.408,40,4.3,67,2.557,73,2.168,77,2.398,84,2.113,130,2.948,142,3.728,169,3.908,226,2.772,229,2.378,257,3.217,281,2.569,308,2.592,310,2.938,311,3.199,312,2.772,326,2.378,346,4.765,594,3.217,786,3.595,871,3.689,1280,4.217,1299,3.747,1315,4.477,1413,3.196,1417,4.718,1420,3.26,1541,5.151,2140,4.446,2141,3.793,2291,3.48,2643,4.835,2744,3.723,2960,3.949,2961,3.949,2962,3.949,2963,3.868,2964,3.949,2965,3.83]],["component/79",[2,0.4]],["title/80-1",[16,17.047,130,19.142,1249,20.519]],["name/80-1",[]],["text/80-1",[]],["component/80-1",[]],["title/80-2",[1299,34.666]],["name/80-2",[]],["text/80-2",[]],["component/80-2",[]],["title/80-3",[16,17.047,130,19.142,1249,20.519]],["name/80-3",[]],["text/80-3",[]],["component/80-3",[]],["title/80-4",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/80-4",[]],["text/80-4",[]],["component/80-4",[]],["title/80-5",[16,20.032,1249,24.113]],["name/80-5",[]],["text/80-5",[]],["component/80-5",[]],["title/80-6",[192,25.234,749,26.482]],["name/80-6",[]],["text/80-6",[]],["component/80-6",[]],["title/80",[2,9.757,1295,42.794,1299,24.334]],["name/80",[2,0.48]],["text/80",[2,1.518,6,2.395,7,1.679,8,1.899,10,2.114,13,2.964,16,3.424,17,1.815,25,2.444,40,3.845,67,2.596,70,5.366,73,1.462,77,1.617,84,1.425,96,1.918,130,2.978,142,3.385,164,2.365,169,2.635,210,2.706,222,2.101,223,1.898,226,2.814,229,1.604,231,1.748,257,2.169,281,2.608,308,1.748,310,1.981,311,2.904,312,1.869,326,2.414,367,2.088,438,2.95,533,2.895,565,1.928,594,2.169,603,2.245,627,2.488,739,2.857,749,3.506,750,2.347,786,2.424,820,1.879,871,2.488,981,1.823,1249,3.733,1258,2.663,1280,3.183,1295,4.974,1299,2.829,1315,3.379,1390,2.347,1413,3.245,1417,3.561,1420,2.198,1541,3.888,2140,3.356,2141,2.558,2291,2.347,2643,4.884,2744,2.51,2960,2.663,2961,2.663,2962,2.663,2963,2.608,2964,2.663,2965,2.583,2996,3.304,3042,6.114,3231,3.771,3419,4.341,3420,4.341,3421,4.341,3422,4.341,3423,4.341,3424,4.341,3425,4.341]],["component/80",[2,0.4]],["title/81-1",[16,17.047,130,19.142,1249,20.519]],["name/81-1",[]],["text/81-1",[]],["component/81-1",[]],["title/81-2",[1808,45.498]],["name/81-2",[]],["text/81-2",[]],["component/81-2",[]],["title/81-3",[16,20.032,1249,24.113]],["name/81-3",[]],["text/81-3",[]],["component/81-3",[]],["title/81-4",[13,24.916,749,26.482]],["name/81-4",[]],["text/81-4",[]],["component/81-4",[]],["title/81-5",[73,22.246,326,24.407]],["name/81-5",[]],["text/81-5",[]],["component/81-5",[]],["title/81-6",[8,19.195,3229,49.288]],["name/81-6",[]],["text/81-6",[]],["component/81-6",[]],["title/81",[220,33.691,2350,48.371]],["name/81",[2350,2.026]],["text/81",[2,0.483,6,1.019,7,1.778,8,2.194,10,1.355,13,3.518,14,2.041,16,2.289,17,1.163,25,2.824,26,1.346,36,1.18,38,4.596,40,3.319,41,1.39,44,1.249,50,1.639,51,2.327,61,1.299,67,2.709,73,1.547,76,1.855,77,1.036,84,0.913,87,1.528,95,1.135,102,1.58,104,1.937,112,1.249,115,2.273,124,2.171,126,2.052,130,1.565,136,2.734,138,1.655,142,1.979,154,2.184,162,1.528,169,1.688,173,1.999,185,2.184,205,1.192,210,1.152,226,1.979,229,1.027,231,1.85,235,2.211,244,1.27,248,1.27,276,1.528,281,1.834,308,1.12,310,1.27,311,2.519,312,1.198,320,1.291,326,1.698,382,1.39,432,1.322,473,1.969,474,2.545,561,2.117,565,1.235,587,2.036,588,2.075,603,1.438,627,1.594,641,1.448,712,3.841,731,2.682,749,1.842,750,2.484,770,3.279,786,1.553,789,1.528,802,1.27,939,1.855,981,1.168,1082,1.492,1110,2.566,1162,1.908,1249,2.968,1250,2.163,1254,1.671,1280,2.238,1287,3.909,1288,1.688,1307,2.682,1308,1.855,1309,2.001,1310,1.785,1314,1.47,1315,3.037,1342,1.908,1356,1.623,1366,1.744,1393,4.154,1413,4.037,1414,1.764,1416,1.566,1417,3.716,1420,1.409,1534,1.725,1569,1.459,1727,1.785,1738,2.036,1808,3.874,1814,2.339,1931,1.908,1944,2.509,1945,2.509,2028,3.816,2031,3.682,2083,1.688,2157,2.509,2291,1.504,2324,1.908,2347,2.986,2350,5.954,2359,4.79,2361,1.967,2576,2.215,2782,2.215,2792,2.339,2989,3.865,2998,2.273,3072,1.855,3076,1.807,3078,5.917,3080,1.855,3084,1.937,3091,1.807,3096,1.83,3102,1.937,3104,3.755,3206,2.509,3207,2.509,3208,2.509,3224,2.163,3264,2.075,3426,2.781,3427,2.781,3428,2.509,3429,5.872,3430,2.781,3431,2.781,3432,2.509,3433,2.781,3434,2.781,3435,2.781,3436,2.781,3437,2.781,3438,2.781,3439,2.509]],["component/81",[2,0.4]],["title/82-1",[16,13.133,185,20.586,382,21.646,588,19.554,2286,33.69]],["name/82-1",[]],["text/82-1",[]],["component/82-1",[]],["title/82-2",[15,33.811]],["name/82-2",[]],["text/82-2",[]],["component/82-2",[]],["title/82-3",[16,17.047,130,19.142,1249,20.519]],["name/82-3",[]],["text/82-3",[]],["component/82-3",[]],["title/82-4",[1299,34.666]],["name/82-4",[]],["text/82-4",[]],["component/82-4",[]],["title/82-5",[641,41.713]],["name/82-5",[]],["text/82-5",[]],["component/82-5",[]],["title/82-6",[980,53.413]],["name/82-6",[]],["text/82-6",[]],["component/82-6",[]],["title/82-7",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/82-7",[]],["text/82-7",[]],["component/82-7",[]],["title/82-8",[192,25.234,749,26.482]],["name/82-8",[]],["text/82-8",[]],["component/82-8",[]],["title/82-9",[1103,39.701,3228,46.739]],["name/82-9",[]],["text/82-9",[]],["component/82-9",[]],["title/82-10",[73,22.246,326,24.407]],["name/82-10",[]],["text/82-10",[]],["component/82-10",[]],["title/82-11",[8,19.195,3229,49.288]],["name/82-11",[]],["text/82-11",[]],["component/82-11",[]],["title/82-12",[1221,43.644]],["name/82-12",[]],["text/82-12",[]],["component/82-12",[]],["title/82",[315,29.281,3440,53.075,3441,48.845]],["name/82",[315,0.834,3440,1.512]],["text/82",[2,0.646,4,1.517,5,1.146,6,0.433,7,1.007,8,1.264,10,0.301,13,2.794,14,1.156,15,1.099,16,1.699,17,2.152,19,0.317,25,2.448,26,0.821,27,0.508,28,1.664,30,0.689,36,0.262,38,2.829,40,1.485,41,0.309,44,0.761,45,0.327,48,1.318,50,2.385,53,0.579,54,0.565,56,0.963,57,1.181,59,1.191,61,0.551,67,1.728,68,0.361,70,3.157,71,0.342,72,0.364,73,2.024,74,1.04,77,0.23,79,0.489,84,0.203,87,0.649,95,0.482,96,2.274,102,0.351,103,0.948,105,0.836,106,0.572,107,1.175,109,0.407,110,0.351,112,0.973,119,0.25,123,0.732,124,0.558,126,0.276,127,0.309,130,0.738,131,0.32,137,2.583,141,0.407,142,1.294,147,0.383,148,0.686,149,1.814,154,1.03,160,0.345,162,1.43,163,0.47,164,0.337,167,1.473,168,0.294,169,0.375,170,2.569,172,0.315,174,1.92,178,1.386,184,0.371,185,1.924,191,0.955,192,0.994,194,0.565,198,0.703,199,0.334,201,1.146,205,1.115,206,0.558,207,0.536,210,1.078,214,0.407,215,0.703,217,0.412,222,0.572,223,2.251,226,0.934,228,0.371,229,1.376,230,0.334,233,0.437,237,0.899,246,0.339,248,0.282,249,0.594,250,0.761,257,0.309,258,1.121,274,0.918,281,3.14,284,0.724,286,0.677,288,3.799,289,0.703,291,0.418,297,0.27,298,0.568,299,0.461,301,1.512,302,0.392,308,0.249,309,2.317,310,0.282,311,1.248,312,0.266,313,0.388,315,3.493,320,1.006,322,0.481,324,1.614,326,2.478,354,0.52,367,0.297,385,0.418,428,0.437,432,0.806,438,2.323,446,0.732,458,1.29,469,1.163,474,0.342,477,1.906,481,1.172,482,0.392,487,0.931,497,0.357,502,0.696,503,0.749,504,0.445,510,0.388,511,0.445,518,1.871,520,0.445,522,0.402,526,0.368,527,0.324,533,0.412,539,0.342,540,1.211,553,0.643,565,0.525,572,0.537,575,0.371,584,0.348,585,0.402,588,2.091,594,0.59,603,1.346,604,0.354,607,0.397,616,0.492,623,0.388,637,0.47,641,0.322,652,1.029,656,0.717,658,0.368,660,0.445,664,0.918,669,0.43,679,0.822,684,0.481,691,3.728,692,0.379,712,3.031,723,0.537,732,0.383,739,2.223,740,0.339,742,1.968,744,0.445,749,1.043,750,0.334,771,0.424,773,0.375,785,0.74,786,0.947,789,1.191,794,0.505,801,1.291,802,0.539,807,0.424,815,0.357,819,0.418,820,0.267,823,0.437,833,1.978,858,0.452,871,0.354,878,1.686,894,1.978,906,0.407,913,1.954,934,1.409,935,0.91,938,1.146,939,1.446,944,0.849,947,0.364,963,0.94,980,0.412,988,1.026,993,1.813,994,1.026,1000,0.481,1018,0.505,1059,0.505,1082,1.163,1091,0.351,1103,2.432,1110,0.947,1113,0.437,1130,1.265,1132,0.537,1141,0.993,1145,2.727,1154,0.437,1205,0.397,1241,0.677,1248,0.397,1249,1.787,1250,0.481,1251,2.126,1254,0.371,1265,0.375,1280,0.575,1283,1.291,1287,1.492,1288,1.029,1299,1.127,1307,3.508,1308,0.412,1309,0.445,1311,2.912,1312,4.44,1315,2.093,1323,1.019,1328,0.461,1334,0.918,1354,0.418,1356,1.754,1373,0.835,1378,1.063,1384,0.849,1385,0.965,1386,2.779,1387,1.707,1390,0.334,1391,0.993,1393,0.437,1395,1.738,1402,0.537,1405,0.74,1411,0.537,1413,2.672,1414,0.392,1416,0.955,1417,0.924,1420,0.598,1428,2.127,1435,0.397,1438,0.388,1449,3.48,1452,1.65,1456,0.505,1457,0.481,1461,0.354,1462,0.918,1468,0.629,1473,0.724,1481,0.505,1490,1.466,1495,0.81,1501,1.201,1505,0.965,1506,0.43,1531,0.505,1540,0.445,1541,0.703,1556,0.47,1565,0.452,1569,0.324,1573,0.787,1574,1.446,1606,0.505,1624,0.354,1640,0.43,1651,1.065,1652,0.749,1670,0.822,1677,0.412,1683,0.407,1701,0.492,1702,1.823,1713,0.537,1717,0.94,1722,0.665,1729,0.392,1759,2.52,1779,0.505,1790,0.481,1801,0.437,1831,0.537,1845,0.777,1883,1.823,1927,0.461,1940,0.798,1966,0.537,1996,0.537,2028,1.692,2031,1.359,2045,0.437,2047,0.537,2048,0.402,2071,0.445,2081,0.74,2083,1.029,2129,0.461,2130,1.241,2132,0.461,2140,0.871,2141,0.364,2154,4.015,2220,2.189,2272,0.918,2288,2.63,2291,0.334,2296,0.899,2307,0.481,2342,0.461,2347,0.402,2348,0.505,2368,0.537,2378,0.767,2442,0.492,2447,0.583,2461,0.481,2467,0.537,2482,0.481,2557,0.505,2579,0.47,2615,0.492,2641,1.026,2643,0.947,2685,0.445,2687,0.505,2714,0.537,2715,0.918,2744,0.683,2865,0.899,2869,0.505,2885,0.481,2960,0.379,2961,0.379,2962,0.379,2963,0.371,2964,0.379,2965,0.368,2974,0.481,2978,0.993,2980,0.965,3072,0.412,3076,0.767,3078,0.392,3080,0.412,3084,0.43,3091,0.402,3096,0.407,3102,0.43,3123,2.456,3204,0.47,3221,2.611,3226,1.772,3227,0.47,3228,2.39,3241,0.537,3247,0.505,3264,0.461,3307,0.965,3325,0.965,3327,1.026,3347,0.537,3356,0.537,3383,0.537,3408,0.558,3409,0.492,3440,1.601,3442,1.473,3443,0.583,3444,0.505,3445,0.583,3446,0.671,3447,1.601,3448,0.583,3449,0.583,3450,0.583,3451,0.583,3452,2.168,3453,1.115,3454,0.583,3455,0.583,3456,1.115,3457,0.583,3458,1.115,3459,1.026,3460,0.583,3461,0.583,3462,0.583,3463,1.115,3464,0.583,3465,0.583,3466,1.601,3467,1.601,3468,3.516,3469,0.583,3470,0.583,3471,0.583,3472,0.537,3473,0.583,3474,0.583,3475,0.671,3476,0.671,3477,0.558,3478,0.583,3479,0.583,3480,0.583,3481,0.583,3482,0.583,3483,1.115,3484,1.115,3485,0.583,3486,0.583,3487,1.115,3488,0.583,3489,0.583,3490,1.115,3491,0.583,3492,0.583,3493,1.115,3494,0.583,3495,1.115,3496,0.583,3497,0.583,3498,0.583,3499,1.601,3500,1.601,3501,2.457,3502,1.601,3503,1.601,3504,1.601,3505,2.837,3506,1.601,3507,1.115,3508,1.115,3509,0.583,3510,1.115,3511,0.583,3512,1.601,3513,1.065,3514,0.537,3515,0.583,3516,0.583,3517,0.583,3518,0.583,3519,0.583,3520,0.583,3521,0.583,3522,0.583,3523,0.583,3524,0.583,3525,0.537,3526,0.537,3527,4.858,3528,1.065,3529,1.065,3530,1.065,3531,0.583,3532,0.583,3533,0.583,3534,0.583,3535,0.583,3536,0.583,3537,0.558,3538,0.583,3539,0.583,3540,0.583,3541,0.583,3542,0.583,3543,0.583,3544,0.583,3545,0.583,3546,0.583,3547,1.601,3548,0.583,3549,0.583,3550,0.583,3551,0.583,3552,0.583,3553,2.837,3554,0.583,3555,0.583,3556,0.583,3557,0.583,3558,0.583,3559,1.115,3560,0.583,3561,1.601,3562,1.115,3563,1.115,3564,0.583,3565,0.583,3566,2.837,3567,0.583,3568,1.601,3569,2.349,3570,0.583,3571,0.583,3572,1.115,3573,0.583,3574,1.115,3575,1.601,3576,0.583,3577,0.583,3578,1.115,3579,0.583,3580,0.583,3581,0.583,3582,0.583,3583,0.583,3584,0.583,3585,0.583,3586,0.583,3587,0.583,3588,0.583,3589,0.583,3590,0.583,3591,0.583,3592,0.583,3593,0.583,3594,0.583,3595,1.115,3596,0.583,3597,0.583,3598,0.583,3599,0.583,3600,0.583,3601,0.583,3602,0.583,3603,0.583,3604,0.583,3605,0.583,3606,0.583,3607,0.583]],["component/82",[2,0.4]],["title/83-1",[124,31.214,955,52.612]],["name/83-1",[]],["text/83-1",[]],["component/83-1",[]],["title/83-2",[67,26.244,1282,45.318]],["name/83-2",[]],["text/83-2",[]],["component/83-2",[]],["title/83-3",[25,18.301,183,30.683,934,31.796,2096,41.15]],["name/83-3",[]],["text/83-3",[]],["component/83-3",[]],["title/83-4",[16,13.133,185,20.586,382,21.646,588,19.554,2286,33.69]],["name/83-4",[]],["text/83-4",[]],["component/83-4",[]],["title/83-5",[15,33.811]],["name/83-5",[]],["text/83-5",[]],["component/83-5",[]],["title/83-6",[16,17.047,130,19.142,1249,20.519]],["name/83-6",[]],["text/83-6",[]],["component/83-6",[]],["title/83-7",[1299,34.666]],["name/83-7",[]],["text/83-7",[]],["component/83-7",[]],["title/83-8",[641,41.713]],["name/83-8",[]],["text/83-8",[]],["component/83-8",[]],["title/83-9",[980,53.413]],["name/83-9",[]],["text/83-9",[]],["component/83-9",[]],["title/83-10",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/83-10",[]],["text/83-10",[]],["component/83-10",[]],["title/83-11",[192,25.234,749,26.482]],["name/83-11",[]],["text/83-11",[]],["component/83-11",[]],["title/83-12",[1103,39.701,3228,46.739]],["name/83-12",[]],["text/83-12",[]],["component/83-12",[]],["title/83-13",[73,22.246,326,24.407]],["name/83-13",[]],["text/83-13",[]],["component/83-13",[]],["title/83-14",[36,20.758,742,25.858,2135,35.824,3608,44.145]],["name/83-14",[]],["text/83-14",[]],["component/83-14",[]],["title/83-15",[315,34.408,3247,53.988]],["name/83-15",[]],["text/83-15",[]],["component/83-15",[]],["title/83-16",[315,29.281,319,31.395,1416,31.663]],["name/83-16",[]],["text/83-16",[]],["component/83-16",[]],["title/83-17",[319,36.893,653,52.612]],["name/83-17",[]],["text/83-17",[]],["component/83-17",[]],["title/83-18",[319,27.324,1416,27.556,1528,29.705,3609,44.145]],["name/83-18",[]],["text/83-18",[]],["component/83-18",[]],["title/83-19",[319,31.063,487,19.349,1416,19.838,3610,31.78,3611,31.78,3612,31.78]],["name/83-19",[]],["text/83-19",[]],["component/83-19",[]],["title/83-20",[319,24.187,326,16.001,1416,24.393,3613,39.077,3614,43.314]],["name/83-20",[]],["text/83-20",[]],["component/83-20",[]],["title/83-21",[691,37.244,1416,27.556,2499,37.244,3615,44.145]],["name/83-21",[]],["text/83-21",[]],["component/83-21",[]],["title/83-22",[127,24.453,320,22.717,771,33.563,3444,39.985]],["name/83-22",[]],["text/83-22",[]],["component/83-22",[]],["title/83-23",[438,25.382,1373,39.774,3444,45.943]],["name/83-23",[]],["text/83-23",[]],["component/83-23",[]],["title/83-24",[8,19.195,3229,49.288]],["name/83-24",[]],["text/83-24",[]],["component/83-24",[]],["title/83-25",[1221,43.644]],["name/83-25",[]],["text/83-25",[]],["component/83-25",[]],["title/83",[315,34.408,3441,57.399]],["name/83",[315,1.441]],["text/83",[1,0.378,2,0.491,3,0.121,4,0.988,5,0.473,6,0.328,7,1.094,8,1.661,9,0.231,10,0.115,13,1.68,14,1.384,15,0.857,16,1.216,17,2.07,18,0.934,19,2.59,24,0.284,25,1.852,26,0.811,27,0.474,28,0.825,30,0.522,32,0.309,33,0.731,34,1.433,36,0.861,38,1.777,40,0.655,41,1.099,44,0.402,45,0.125,48,1.114,50,1.196,52,0.516,53,0.227,54,0.113,55,0.322,56,0.508,57,0.913,58,0.129,59,0.92,60,0.389,61,0.696,67,1.182,68,0.138,70,2.079,71,1.028,72,0.402,73,1.872,74,0.419,75,0.438,77,0.088,78,0.172,79,0.192,81,0.151,84,0.224,88,0.217,90,0.561,93,0.688,94,0.188,95,0.279,96,2.457,98,0.224,100,0.275,101,0.188,102,0.388,103,0.568,105,0.542,106,0.224,107,0.586,108,0.188,110,0.263,112,0.583,113,0.41,114,0.193,118,0.126,119,0.445,120,0.301,123,0.287,124,0.877,125,0.473,126,0.58,127,2.172,130,0.442,131,0.353,137,3.464,142,0.642,147,0.287,148,0.603,149,1.714,154,0.523,156,0.129,158,0.11,162,0.604,163,0.179,164,0.128,165,0.203,166,0.246,167,0.593,168,0.882,169,0.143,170,1.56,172,0.561,173,0.201,174,1.166,178,1.506,183,0.561,184,0.142,185,1.481,190,0.281,191,0.839,192,1.961,194,0.526,198,0.275,199,0.127,201,0.461,205,0.638,206,0.219,207,0.499,209,0.125,210,1.109,212,1.265,214,0.155,215,0.406,217,0.455,218,0.238,220,1.366,221,0.305,222,0.224,223,1.237,224,0.29,226,0.799,228,0.538,229,1.099,230,0.127,231,0.6,233,0.167,234,0.438,235,1.814,246,0.129,248,0.408,249,0.934,250,0.494,255,0.136,256,0.157,257,0.231,258,1.137,260,0.193,271,0.433,274,0.36,275,0.172,277,0.193,281,2.561,284,0.284,286,0.265,288,2.221,289,0.406,290,0.176,291,0.159,292,0.128,297,0.202,298,0.223,299,0.507,301,0.653,308,0.886,309,1.509,310,0.108,311,0.686,312,0.101,313,0.428,315,3.752,319,4.325,320,1.807,322,0.183,323,0.164,324,1.039,326,2.248,334,0.176,346,0.332,354,0.198,363,0.179,367,0.223,382,0.447,399,0.167,407,0.447,428,0.167,431,0.155,432,1.85,433,0.172,438,2.011,441,0.549,443,0.391,444,0.169,445,0.162,446,0.423,448,0.538,454,0.259,458,0.772,467,0.238,469,1.437,473,0.87,474,0.13,476,0.543,477,0.823,480,0.372,481,0.369,482,0.149,485,0.213,487,2.328,492,0.124,497,1.459,498,0.176,502,0.273,503,0.294,505,0.284,510,0.428,511,0.169,515,0.198,518,0.825,520,0.169,522,0.153,525,0.358,533,0.157,534,0.176,539,0.256,540,0.5,544,0.423,553,0.707,554,0.737,557,0.328,558,0.297,562,0.369,565,0.902,572,1.764,575,0.142,576,0.301,584,0.384,588,1.703,592,0.366,594,0.447,596,0.402,597,0.654,599,0.213,603,0.671,604,0.63,605,0.179,607,0.297,611,0.198,616,0.876,618,0.287,623,0.148,625,0.172,627,0.513,637,0.179,638,1.409,641,0.355,642,0.183,645,0.605,649,0.188,650,0.339,652,0.668,653,0.543,654,0.309,656,0.668,658,0.275,660,0.169,664,0.36,669,0.164,675,2.967,677,0.696,679,0.766,684,0.183,688,0.149,689,0.449,690,0.143,691,2.038,692,0.145,696,0.475,702,0.616,703,1.171,706,0.616,712,1.833,717,0.766,723,0.205,732,0.287,739,1.103,740,0.129,741,0.183,742,1.791,744,0.169,749,0.672,750,0.369,765,0.661,770,0.5,771,2.414,773,0.281,774,0.389,785,0.934,786,1.32,789,2.266,792,0.153,800,0.183,801,0.519,802,0.408,805,0.153,806,0.205,807,0.162,819,0.461,820,0.2,823,0.328,824,0.213,825,0.167,827,0.328,833,0.981,843,0.183,846,0.116,849,0.179,851,0.151,852,0.754,858,0.5,862,0.418,865,0.313,871,0.135,873,0.5,876,0.179,878,1.159,882,0.157,884,0.418,894,1.448,895,0.159,901,0.198,906,0.155,913,1.174,923,0.198,926,0.301,931,0.176,932,0.339,934,0.715,935,0.248,937,0.378,938,1.912,939,1.354,944,0.643,947,0.765,948,1.384,951,0.681,953,0.389,963,0.876,965,0.172,980,0.309,981,1.309,988,0.402,992,0.406,993,2.17,994,0.402,995,1.171,997,0.418,1000,0.855,1005,0.213,1006,0.339,1011,0.198,1018,0.193,1021,0.681,1038,0.198,1039,0.198,1042,0.188,1059,0.193,1082,0.59,1091,1.153,1101,0.176,1103,1.322,1104,0.145,1110,0.614,1113,0.167,1114,0.167,1116,0.491,1119,0.248,1120,0.483,1127,0.188,1130,0.509,1132,0.205,1134,0.519,1141,0.389,1143,0.213,1145,1.227,1151,0.543,1154,0.328,1160,0.172,1166,0.418,1178,0.213,1181,0.443,1186,0.389,1189,0.213,1194,0.418,1197,0.167,1205,0.151,1229,0.193,1241,0.265,1248,0.297,1249,1.032,1250,0.183,1251,0.918,1253,0.681,1254,1.956,1259,0.278,1260,0.142,1264,0.455,1265,0.668,1280,0.225,1283,0.519,1285,0.198,1287,0.744,1288,0.414,1294,0.167,1296,0.176,1298,0.95,1299,0.725,1307,2.408,1308,0.455,1309,0.169,1311,1.335,1312,2.54,1314,0.245,1315,0.96,1322,0.155,1323,0.661,1328,1.641,1334,0.696,1336,0.172,1346,2.431,1354,0.159,1356,0.87,1366,1.164,1373,0.483,1375,0.155,1378,1.273,1384,0.333,1385,0.378,1386,1.25,1387,0.737,1390,0.127,1391,0.389,1392,0.791,1393,0.483,1395,1.272,1402,0.402,1405,1.051,1408,0.733,1411,0.205,1413,1.683,1414,0.294,1416,1.508,1417,0.372,1420,0.119,1428,0.899,1429,0.483,1435,0.151,1437,0.151,1438,0.148,1444,0.176,1445,0.655,1448,0.183,1449,1.598,1450,0.945,1452,2.264,1456,0.193,1457,0.183,1461,0.135,1462,0.36,1468,0.585,1471,0.157,1473,0.419,1481,0.899,1490,1.331,1495,0.468,1497,0.205,1499,0.733,1501,0.609,1505,0.378,1506,0.322,1518,0.213,1519,0.418,1527,0.167,1528,1.017,1531,0.193,1540,0.791,1541,0.275,1555,0.198,1556,0.179,1561,0.318,1565,0.339,1569,0.469,1573,0.733,1574,0.597,1582,0.213,1594,0.188,1595,0.198,1601,0.172,1605,0.213,1606,0.193,1617,0.198,1623,0.157,1624,0.135,1635,0.418,1637,0.164,1639,0.172,1640,0.164,1650,0.213,1651,0.418,1652,0.433,1653,0.213,1660,0.183,1661,0.213,1670,0.322,1673,1.092,1677,0.157,1683,0.724,1689,0.167,1701,1.034,1702,0.752,1707,0.169,1717,0.369,1722,0.944,1734,0.193,1759,1.111,1763,0.222,1771,0.633,1774,0.213,1787,0.205,1788,0.543,1790,0.183,1801,0.328,1827,0.574,1831,0.205,1845,0.305,1880,0.574,1883,0.925,1891,0.188,1909,0.162,1938,0.155,1940,1.373,1966,0.205,1974,0.36,1979,1.225,1983,0.807,1994,0.213,1996,0.593,1997,0.188,2028,0.715,2031,0.561,2045,0.167,2047,0.205,2048,0.843,2059,0.198,2071,0.169,2075,0.681,2081,0.29,2088,0.36,2129,0.176,2130,0.339,2132,0.345,2135,0.172,2138,0.179,2140,0.765,2141,0.139,2147,0.188,2154,1.998,2158,0.352,2173,0.339,2177,0.213,2179,0.369,2220,0.925,2237,0.418,2272,0.36,2273,0.193,2288,1.206,2291,0.25,2296,0.988,2307,0.183,2329,0.193,2342,0.176,2347,0.153,2348,0.193,2349,0.198,2350,0.805,2363,0.418,2368,0.205,2374,0.205,2375,1.092,2378,0.443,2382,0.297,2401,0.389,2406,0.475,2442,0.188,2446,0.616,2461,0.36,2465,0.188,2467,0.402,2482,0.36,2499,0.681,2501,0.172,2502,0.574,2506,0.616,2514,0.213,2557,0.378,2576,0.188,2579,0.519,2593,0.616,2599,0.616,2601,0.616,2613,0.176,2615,0.369,2641,0.955,2643,0.614,2656,0.205,2673,0.369,2685,0.643,2687,0.378,2714,0.205,2715,0.36,2733,0.213,2742,0.339,2744,0.268,2756,0.616,2777,0.389,2807,0.389,2818,0.389,2859,0.213,2865,0.352,2869,0.193,2885,0.855,2917,0.213,2959,0.616,2960,0.145,2961,0.145,2962,0.145,2963,0.142,2964,0.145,2965,0.14,2972,0.179,2974,0.183,2978,0.198,2980,0.378,2992,0.198,3015,0.188,3031,0.213,3059,0.418,3072,0.157,3075,0.213,3076,0.301,3078,0.149,3080,0.157,3084,0.164,3091,0.153,3096,0.155,3102,0.164,3123,1.217,3130,0.418,3151,0.531,3158,0.543,3170,0.402,3177,0.179,3178,0.213,3204,0.179,3221,1.612,3226,0.731,3227,0.179,3228,1.436,3241,0.205,3247,0.193,3264,0.176,3307,0.378,3325,0.378,3327,0.402,3347,2.944,3351,0.389,3352,0.418,3356,0.205,3383,0.205,3392,0.222,3408,0.616,3409,0.712,3428,0.213,3432,0.418,3439,0.213,3441,0.402,3442,0.593,3443,1.752,3444,2.431,3445,0.222,3447,0.437,3448,0.222,3449,0.437,3450,0.222,3451,0.222,3452,1.49,3453,0.437,3454,0.222,3455,0.222,3456,0.437,3457,0.222,3458,0.437,3459,0.402,3460,0.222,3461,0.222,3462,0.222,3463,0.437,3464,0.644,3465,0.222,3466,0.644,3467,0.644,3468,1.582,3469,1.038,3470,0.437,3471,0.437,3472,1.456,3473,0.644,3474,0.222,3477,0.213,3478,0.222,3479,0.437,3480,1.038,3481,1.038,3482,1.038,3483,0.437,3484,0.437,3485,0.437,3486,0.222,3487,0.437,3488,0.437,3489,0.437,3490,0.437,3491,0.437,3492,0.437,3493,0.437,3494,0.644,3495,0.437,3496,0.222,3497,0.222,3498,0.222,3499,1.038,3500,1.038,3501,1.038,3502,0.644,3503,0.644,3504,0.644,3505,1.225,3506,0.644,3507,0.437,3508,0.437,3509,0.222,3510,0.437,3511,0.222,3512,0.644,3513,0.418,3514,0.205,3515,0.222,3516,0.222,3517,0.222,3518,0.222,3519,0.222,3520,0.222,3521,0.222,3522,0.222,3523,0.222,3524,0.222,3525,0.955,3526,1.128,3527,2.382,3528,0.418,3529,0.418,3530,0.616,3531,0.222,3532,0.222,3533,0.222,3534,0.222,3535,0.222,3536,0.222,3537,0.213,3538,0.222,3539,0.222,3540,0.222,3541,0.222,3542,0.222,3543,0.222,3544,0.222,3545,0.222,3546,0.222,3547,0.644,3548,0.222,3549,0.222,3550,1.038,3551,4,3552,0.222,3553,1.225,3554,0.222,3555,0.222,3556,0.222,3557,0.222,3558,0.222,3559,0.844,3560,0.222,3561,1.038,3562,0.644,3563,0.437,3564,0.222,3565,0.222,3566,1.225,3567,0.222,3568,1.038,3569,1.984,3570,0.222,3571,0.222,3572,0.437,3573,0.222,3574,0.437,3575,0.644,3576,0.222,3577,0.222,3578,0.437,3579,0.222,3580,0.222,3581,0.222,3582,0.222,3583,0.222,3584,0.222,3585,0.222,3586,0.222,3587,0.222,3588,0.222,3589,0.222,3590,0.222,3591,0.222,3592,0.222,3593,0.222,3594,0.222,3595,0.437,3596,0.222,3597,0.222,3598,0.222,3599,0.222,3600,0.222,3601,0.222,3602,0.222,3603,0.222,3604,0.222,3605,0.222,3606,0.222,3607,0.222,3608,0.418,3609,0.418,3610,1.512,3611,0.418,3612,0.418,3613,0.213,3615,0.213,3616,0.236,3617,0.236,3618,0.236,3619,0.236,3620,0.463,3621,0.236,3622,0.236,3623,0.236,3624,0.463,3625,0.236,3626,2.2,3627,0.236,3628,1.1,3629,0.236,3630,1.1,3631,0.236,3632,0.682,3633,0.236,3634,0.682,3635,0.616,3636,0.236,3637,0.236,3638,0.236,3639,0.236,3640,0.236,3641,0.236,3642,0.236,3643,0.236,3644,0.463,3645,0.236,3646,0.236,3647,0.236,3648,0.644,3649,0.236,3650,0.236,3651,0.236,3652,0.236,3653,0.222,3654,0.236,3655,0.236,3656,0.256,3657,0.236,3658,0.236,3659,0.236,3660,0.236,3661,0.236,3662,0.463,3663,1.582,3664,1.1,3665,0.236,3666,0.236,3667,0.236,3668,0.463,3669,0.236,3670,0.236,3671,0.236,3672,0.213,3673,0.682,3674,0.236,3675,0.463,3676,0.222,3677,0.236,3678,0.463,3679,0.682,3680,0.895,3681,0.236,3682,0.236,3683,0.236,3684,0.463,3685,0.236,3686,0.236,3687,0.236,3688,0.236,3689,0.236,3690,0.213,3691,0.236,3692,0.236,3693,0.236,3694,0.992,3695,0.236,3696,0.236,3697,0.236,3698,0.213,3699,0.236,3700,0.236,3701,0.236,3702,0.463,3703,0.463,3704,0.463,3705,0.807,3706,0.236,3707,0.463,3708,1.092,3709,0.236,3710,0.236,3711,0.752,3712,0.752,3713,0.682,3714,0.992,3715,0.236,3716,0.682,3717,0.682,3718,0.682,3719,1.298,3720,0.682,3721,0.236,3722,0.682,3723,0.236,3724,0.236,3725,0.682,3726,1.676,3727,0.682,3728,0.682,3729,0.682,3730,0.236,3731,0.236,3732,0.236,3733,0.236,3734,0.236,3735,0.682,3736,0.682,3737,0.682,3738,0.463,3739,0.682,3740,0.895,3741,0.236,3742,0.895,3743,1.1,3744,0.236,3745,0.236,3746,0.895,3747,0.236,3748,0.236,3749,0.236,3750,1.1,3751,1.1,3752,0.213,3753,0.236,3754,0.236,3755,0.236,3756,0.895,3757,0.463,3758,0.236,3759,0.236,3760,0.463,3761,0.463,3762,0.463,3763,0.236,3764,0.236,3765,0.236,3766,0.236,3767,0.198,3768,0.236,3769,0.236,3770,0.236,3771,0.236,3772,0.236,3773,0.236,3774,0.236,3775,0.236,3776,0.236,3777,0.236,3778,0.236,3779,0.236,3780,0.236,3781,0.463,3782,0.236,3783,0.236,3784,0.236,3785,0.236,3786,0.236,3787,0.213,3788,0.682,3789,0.236,3790,0.213,3791,0.236,3792,0.236,3793,0.236,3794,0.236,3795,0.236,3796,0.236,3797,0.213,3798,0.236,3799,0.236,3800,0.236,3801,0.236,3802,0.236,3803,0.236,3804,0.236,3805,0.236,3806,0.236,3807,0.236,3808,0.236,3809,0.236,3810,0.236,3811,0.236,3812,0.236,3813,0.236,3814,0.236,3815,0.236,3816,0.236,3817,0.236,3818,0.236,3819,0.236,3820,0.236,3821,0.236,3822,0.236,3823,0.236,3824,0.236,3825,0.236,3826,0.236,3827,0.236,3828,0.682,3829,0.236,3830,0.236,3831,0.236,3832,0.236,3833,0.463,3834,0.236,3835,0.236,3836,0.236,3837,0.236,3838,0.236,3839,0.236,3840,0.236,3841,0.236,3842,0.236,3843,0.682,3844,0.236,3845,0.205,3846,0.236,3847,0.236,3848,0.236,3849,0.236,3850,0.236,3851,0.236,3852,0.236,3853,0.236,3854,0.236,3855,0.236,3856,0.236,3857,0.236,3858,0.213,3859,0.236,3860,0.236,3861,0.236,3862,0.236,3863,0.236,3864,0.236,3865,0.236,3866,0.236,3867,0.418,3868,0.236,3869,0.418,3870,0.236,3871,0.236,3872,0.236,3873,0.236,3874,0.236,3875,0.236,3876,0.236,3877,0.682,3878,0.236,3879,0.236,3880,0.236,3881,0.463,3882,0.236,3883,0.236,3884,0.236,3885,0.236,3886,0.236,3887,0.222,3888,0.236,3889,0.236,3890,0.236,3891,0.236,3892,0.463,3893,0.463,3894,0.463,3895,0.236,3896,0.236,3897,0.236,3898,0.236,3899,0.236,3900,0.236,3901,0.236,3902,0.236,3903,0.236,3904,0.236,3905,0.236,3906,0.236,3907,0.236,3908,0.236,3909,0.236,3910,0.236,3911,0.236,3912,0.236,3913,0.236,3914,0.236,3915,0.236,3916,0.236,3917,0.236,3918,0.236,3919,0.213,3920,0.236,3921,0.236,3922,0.236,3923,0.236,3924,0.236,3925,0.236,3926,0.236,3927,0.236,3928,0.236,3929,0.236]],["component/83",[2,0.4]],["title/84-1",[16,17.047,130,19.142,1249,20.519]],["name/84-1",[]],["text/84-1",[]],["component/84-1",[]],["title/84-2",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/84-2",[]],["text/84-2",[]],["component/84-2",[]],["title/84-3",[16,20.032,1249,24.113]],["name/84-3",[]],["text/84-3",[]],["component/84-3",[]],["title/84-4",[192,25.234,749,26.482]],["name/84-4",[]],["text/84-4",[]],["component/84-4",[]],["title/84-5",[326,24.407,1258,40.531]],["name/84-5",[]],["text/84-5",[]],["component/84-5",[]],["title/84-6",[1559,54.939]],["name/84-6",[]],["text/84-6",[]],["component/84-6",[]],["title/84-7",[73,22.246,326,24.407]],["name/84-7",[]],["text/84-7",[]],["component/84-7",[]],["title/84-8",[8,19.195,3229,49.288]],["name/84-8",[]],["text/84-8",[]],["component/84-8",[]],["title/84-9",[231,32.25]],["name/84-9",[]],["text/84-9",[]],["component/84-9",[]],["title/84",[1258,49.136]],["name/84",[1258,1.698]],["text/84",[2,0.863,7,1.186,8,2.101,10,1.493,13,2.369,16,2.41,25,2.704,31,1.88,34,1.741,38,2.271,40,2.187,52,2.337,61,1.431,67,3.383,73,2.434,77,1.141,84,1.006,95,1.251,100,1.823,103,2.176,130,1.694,137,1.006,142,2.705,168,1.456,169,1.86,176,1.841,177,1.991,183,3.12,185,1.456,210,2.06,223,3.161,226,2.143,229,1.132,230,1.657,231,1.234,235,1.474,248,1.399,271,1.483,281,3.73,299,1.196,308,1.234,310,1.399,311,2.32,312,1.32,326,3.146,367,1.474,382,1.531,469,2.669,481,1.657,534,2.286,536,2.286,565,1.361,584,1.726,588,1.384,603,1.585,712,3.537,744,2.204,749,2.518,750,1.657,755,3.787,785,3.12,819,2.072,820,2.719,832,2.333,846,1.512,939,2.044,981,2.09,1103,2.99,1110,1.711,1181,1.991,1249,2.639,1254,1.841,1258,5.927,1280,1.493,1287,3.6,1288,1.86,1307,3.666,1308,2.044,1309,2.204,1314,1.619,1315,1.585,1356,1.789,1375,2.017,1376,3.643,1377,4.489,1385,2.504,1386,3.712,1387,3.568,1393,4.443,1395,1.772,1413,3.947,1414,1.944,1427,2.244,1437,3.194,1458,2.765,1559,2.102,1573,2.044,1652,1.944,1677,2.044,1722,1.726,1727,1.967,2028,4.081,2031,3.939,2081,3.12,2378,1.991,2382,3.194,2655,2.504,2743,2.577,2865,3.787,2866,2.577,3072,2.044,3076,1.991,3078,6.128,3080,2.044,3084,2.134,3091,1.991,3096,2.017,3102,2.134,3177,2.333,3227,2.333,3228,2.168,3264,2.286,3930,3.065,3931,4.697,3932,3.065,3933,3.065,3934,3.065,3935,3.065,3936,2.765,3937,3.065,3938,3.065,3939,3.065,3940,3.065,3941,3.065,3942,3.065,3943,3.065,3944,3.065,3945,3.065]],["component/84",[2,0.4]],["title/85-1",[16,17.047,130,19.142,1249,20.519]],["name/85-1",[]],["text/85-1",[]],["component/85-1",[]],["title/85-2",[67,26.244,565,29.349]],["name/85-2",[]],["text/85-2",[]],["component/85-2",[]],["title/85-3",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/85-3",[]],["text/85-3",[]],["component/85-3",[]],["title/85-4",[16,20.032,1249,24.113]],["name/85-4",[]],["text/85-4",[]],["component/85-4",[]],["title/85-5",[192,25.234,749,26.482]],["name/85-5",[]],["text/85-5",[]],["component/85-5",[]],["title/85-6",[1103,39.701,3228,46.739]],["name/85-6",[]],["text/85-6",[]],["component/85-6",[]],["title/85-7",[73,22.246,326,24.407]],["name/85-7",[]],["text/85-7",[]],["component/85-7",[]],["title/85",[96,21.622,977,42.511,3192,44.145,3946,48.932]],["name/85",[3192,2.496]],["text/85",[6,1.226,7,1.295,8,0.972,10,1.63,13,2.869,16,1.62,17,2.233,25,1.998,37,2.053,38,1.528,40,2.93,48,1.695,67,3.303,71,1.854,73,2.984,87,1.838,96,4.109,103,2.336,110,1.901,127,1.673,130,2.59,137,1.099,142,3.816,149,1.63,162,1.838,172,1.707,173,1.456,175,2.053,192,1.278,210,2.76,223,2.336,226,2.3,229,1.236,231,2.151,245,3.664,249,1.684,281,2.131,308,1.348,311,3.071,324,2.076,326,3.436,354,2.815,367,1.61,438,2.411,466,2.263,565,1.487,588,3.009,712,3.754,749,2.672,750,1.81,770,1.869,819,4.507,820,1.449,939,2.232,977,2.908,981,1.406,1095,3.16,1103,2.011,1110,1.869,1249,2.433,1280,1.63,1287,3.82,1288,2.032,1299,2.312,1307,1.954,1308,2.232,1315,1.731,1342,2.296,1387,3.786,1393,2.368,1395,1.936,1413,4.4,1414,2.123,1543,2.451,1722,1.885,2031,4.18,2081,3.35,2083,5.646,2378,2.175,2442,2.665,2643,2.983,2673,2.665,3045,3.16,3072,2.232,3076,4.331,3078,5.899,3080,2.232,3091,2.175,3192,6.864,3224,2.603,3227,2.548,3228,4.715,3231,2.908,3537,3.02,3648,3.16,3931,3.16,3946,3.347,3947,3.632,3948,3.632,3949,3.632,3950,3.632,3951,3.632,3952,3.632,3953,3.632,3954,3.632,3955,5.796,3956,3.632,3957,5.796,3958,3.632,3959,3.632,3960,3.632,3961,3.632,3962,3.632,3963,3.632,3964,3.632,3965,3.632]],["component/85",[2,0.4]],["title/86-1",[606,36.29,2324,45.318]],["name/86-1",[]],["text/86-1",[]],["component/86-1",[]],["title/86-2",[2324,45.318,2344,41.908]],["name/86-2",[]],["text/86-2",[]],["component/86-2",[]],["title/86",[2324,45.318,2344,41.908]],["name/86",[2324,1.099,2344,1.016]],["text/86",[5,1.605,6,1.81,8,1.814,10,1.48,11,1.974,14,1.35,15,2.086,16,0.921,17,1.27,25,3.172,27,1.308,38,3.871,44,1.364,48,1.539,52,1.427,53,3.06,54,1.453,75,1.489,104,3.44,107,1.372,112,1.364,118,1.63,127,3.12,128,2.969,130,2.126,131,1.571,136,1.807,138,1.807,140,1.826,146,2.483,154,1.444,164,1.655,173,1.322,174,1.937,177,1.974,178,1.617,183,3.915,185,1.444,194,2.985,198,1.807,200,1.974,203,2.026,205,1.302,207,3.265,220,2.519,231,1.223,234,3.525,243,2.149,244,3.613,250,2.218,267,2.555,271,1.471,284,1.864,285,1.642,286,2.831,295,1.864,297,1.328,301,2.485,311,2.307,313,3.098,314,2.671,320,1.41,323,2.115,336,1.864,367,1.461,454,2.759,472,2.312,480,1.655,482,1.927,484,4.348,511,2.185,518,3.983,522,1.974,526,1.807,562,2.419,588,2.23,632,2.363,692,1.864,740,2.714,744,2.185,789,1.669,809,2.555,897,2.741,953,2.555,1110,1.696,1119,1.63,1134,2.312,1323,1.826,1390,1.642,1420,2.502,1451,2.115,1466,2.149,1490,1.711,1499,2.026,1527,4.417,1528,2.999,1573,2.026,1618,2.419,1624,1.741,1679,2.224,1697,2.419,1721,2.741,1828,2.555,1903,2.266,1952,2.266,1998,2.054,2154,3.686,2173,2.224,2288,4.057,2324,6.791,2325,4.037,2344,6.427,2347,5.511,2348,6.931,2352,2.483,2450,3.617,2501,2.224,2603,2.639,2783,4.457,2784,4.155,2785,4.155,2801,2.741,2822,3.934,2991,5.728,2993,2.419,2996,2.312,3180,2.741,3698,2.741,3858,2.741,3966,3.038,3967,3.038,3968,3.038,3969,3.038,3970,3.038,3971,4.457,3972,3.038,3973,3.038,3974,3.038,3975,4.941,3976,3.038,3977,3.038,3978,4.941]],["component/86",[2,0.4]],["title/87-1",[802,30.158,3979,59.605]],["name/87-1",[]],["text/87-1",[]],["component/87-1",[]],["title/87",[16,17.047,272,37.494,1590,43.731]],["name/87",[16,0.486,1590,1.246]],["text/87",[2,0.361,6,0.762,7,1.835,8,2.655,13,0.784,14,1.596,15,2.002,16,3.544,17,3.13,18,1.495,19,2.436,20,3.503,24,1.275,25,0.777,26,1.006,27,3.006,30,1.213,44,0.933,48,3.231,51,1.053,52,2.228,54,0.994,55,2.501,56,3.209,57,1.957,61,1.677,73,0.7,79,0.861,88,1.687,95,0.849,96,3.085,103,0.909,105,1.025,106,1.739,107,0.938,118,1.115,124,0.982,131,1.075,132,2.769,133,2.464,137,2.598,142,1.547,147,1.289,148,0.841,149,1.75,154,1.707,157,1.655,160,1.161,162,1.142,164,1.957,165,0.914,171,1.289,172,1.06,178,1.912,190,1.262,191,1.17,206,0.982,211,1.426,217,1.386,226,1.547,228,1.249,229,2.357,231,2.275,248,2.165,257,2.371,289,1.237,292,1.133,296,1.522,297,1.571,299,2.725,300,2.541,301,1.807,310,0.949,311,0.768,312,0.895,313,1.303,314,1.124,315,1.082,325,1.249,326,1.327,346,1.012,382,1.039,407,1.039,438,0.938,445,1.426,474,1.151,502,2.795,505,1.275,506,1.447,526,2.137,539,1.151,565,0.923,575,2.158,594,1.039,597,2.137,604,2.059,641,1.082,656,2.181,658,1.237,661,1.47,713,6.306,717,2.501,731,2.097,740,1.973,742,1.098,802,3.417,807,1.426,812,1.351,833,2.364,846,1.025,864,2.734,865,1.405,913,2.077,935,1.115,1023,1.748,1101,1.551,1102,1.748,1103,1.249,1154,1.47,1184,2.734,1217,1.748,1221,1.133,1242,1.582,1249,0.759,1253,1.582,1262,1.426,1264,1.386,1265,2.181,1314,3.956,1317,1.806,1331,1.698,1384,1.495,1413,1.032,1427,1.522,1435,1.334,1438,2.974,1445,3.473,1448,1.617,1449,1.405,1490,1.17,1498,1.655,1540,1.495,1561,1.426,1590,7.701,1594,1.655,1599,3.241,1607,1.748,1652,3.009,1771,2.541,1845,2.364,1873,1.582,1927,2.68,2070,1.748,2132,3.539,2133,3.412,2138,1.582,2308,1.617,2347,1.351,2354,1.698,2540,2.501,2547,5.755,2643,2.006,2869,1.698,2963,2.158,3409,1.655,3459,1.806,3711,3.021,3712,3.021,3787,1.875,3979,5.096,3980,1.875,3981,1.962,3982,2.078,3983,8.285,3984,1.875,3985,3.592,3986,2.078,3987,2.078,3988,2.078,3989,2.078,3990,3.592,3991,2.078,3992,3.592,3993,3.592,3994,2.078,3995,2.078,3996,2.078,3997,2.078]],["component/87",[2,0.4]],["title/88-1",[3998,67.357]],["name/88-1",[]],["text/88-1",[]],["component/88-1",[]],["title/88-2",[231,32.25]],["name/88-2",[]],["text/88-2",[]],["component/88-2",[]],["title/88",[16,20.032,316,48.371]],["name/88",[16,0.486,316,1.173]],["text/88",[2,0.88,5,2.68,6,1.858,7,1.214,8,0.912,15,2.694,16,3.453,17,2.12,19,1.611,21,2.564,27,3.157,28,1.738,30,1.831,33,2.856,34,1.782,36,1.331,45,1.658,46,4.378,47,2.092,48,2.569,51,3.713,52,2.382,54,1.5,58,1.723,73,1.056,75,1.538,78,2.297,88,1.474,96,3.804,98,2.455,106,1.519,107,2.29,124,1.482,125,1.658,137,3.358,142,1.351,148,1.269,154,1.491,165,2.229,168,1.491,171,1.946,172,1.6,174,1.23,176,1.885,184,1.885,190,3.079,212,1.482,222,1.519,224,1.967,229,1.873,231,2.042,257,3.19,258,1.622,277,2.564,285,1.696,292,3.478,297,2.218,299,2.861,301,2.551,312,2.184,315,2.641,316,4.673,323,3.531,346,3.57,367,1.509,382,1.568,438,2.882,446,1.946,479,2.257,480,1.71,484,2.185,502,2.988,510,1.967,519,1.767,539,1.738,553,1.71,554,1.782,600,2.988,601,2.388,606,1.723,661,2.22,692,1.925,693,2.564,740,1.723,744,2.257,864,2.388,935,1.683,966,2.092,993,3.531,1082,3.933,1102,4.265,1127,4.038,1228,2.831,1241,1.798,1258,1.925,1264,4.257,1293,2.185,1314,2.68,1378,1.967,1403,2.726,1438,3.18,1462,2.44,1468,1.671,1490,1.767,1492,2.639,1573,2.092,1593,2.499,1610,2.831,1652,4.049,1729,1.99,1845,2.065,1909,2.152,1974,2.44,1998,2.121,2045,2.22,2077,2.341,2138,2.388,2156,2.564,2586,2.639,2685,2.257,3018,2.639,3151,2.44,3409,2.499,3442,2.726,3472,2.726,3980,2.831,3984,2.831,3998,6.768,3999,3.138,4000,3.138,4001,3.138,4002,3.138,4003,3.138,4004,3.138,4005,3.138,4006,3.138,4007,3.138,4008,3.138]],["component/88",[2,0.4]],["title/89",[207,36.358]],["name/89",[1,1.532]],["text/89",[]],["component/89",[2,0.4]],["title/90-1",[96,24.844,592,30.162,1091,31.938]],["name/90-1",[]],["text/90-1",[]],["component/90-1",[]],["title/90-2",[149,27.384,1204,48.845,1558,41.943]],["name/90-2",[]],["text/90-2",[]],["component/90-2",[]],["title/90-3",[3,28.87,231,22.638,4009,56.223]],["name/90-3",[]],["text/90-3",[]],["component/90-3",[]],["title/90-4",[3,28.87,16,17.047,231,22.638]],["name/90-4",[]],["text/90-4",[]],["component/90-4",[]],["title/90-5",[4010,71.686,4011,71.686]],["name/90-5",[]],["text/90-5",[]],["component/90-5",[]],["title/90-6",[539,44.355]],["name/90-6",[]],["text/90-6",[]],["component/90-6",[]],["title/90",[96,24.844,592,30.162,1091,31.938]],["name/90",[1558,2.064]],["text/90",[2,0.323,4,2.35,6,1.196,7,0.72,8,1.904,13,0.702,14,0.827,15,1.378,16,1.587,17,1.364,19,1.676,27,2.564,36,1.848,38,0.85,44,0.836,48,1.653,53,1.6,56,2.475,58,2.875,59,1.023,61,0.869,67,0.739,73,0.627,74,1.142,75,0.912,87,1.793,93,0.859,95,2.137,96,3.975,98,0.901,104,1.296,105,0.918,106,4.355,107,0.84,112,1.465,118,0.999,125,2.303,127,1.631,132,1.087,133,1.277,137,3.429,148,0.753,149,2.55,154,0.885,158,0.869,161,1.277,162,1.023,164,3.571,165,0.818,173,0.81,174,0.73,184,1.119,189,1.679,191,1.048,205,1.398,206,0.88,212,0.88,220,0.949,222,1.58,223,3.59,230,1.764,231,2.108,234,2.136,250,0.836,268,1.521,271,1.58,277,1.521,279,5.972,281,2.992,297,1.427,299,1.7,301,0.937,311,1.206,315,1.7,326,0.688,407,1.631,438,2.363,484,1.296,497,1.887,520,3.134,525,1.712,534,1.389,545,1.389,554,1.057,565,0.827,575,1.961,585,1.21,588,1.473,592,1.751,597,4.202,598,2.207,618,1.154,641,0.97,649,2.599,659,1.448,664,1.448,674,2.599,688,1.181,689,1.225,717,2.272,746,2.538,750,1.006,765,1.961,807,3.591,812,1.21,820,0.806,831,1.617,846,0.918,854,1.617,900,1.757,935,0.999,947,1.097,981,2.501,1016,1.417,1091,1.057,1103,1.119,1204,8.314,1249,0.679,1265,4.288,1283,2.484,1293,1.296,1294,1.317,1295,1.417,1314,2.303,1315,2.253,1338,1.679,1356,1.905,1366,4.94,1450,1.181,1461,1.87,1501,1.807,1541,1.108,1550,1.617,1558,6.537,1574,1.241,1579,1.119,1581,1.482,1583,1.448,1590,4.631,1623,1.241,1729,2.07,1733,1.617,1771,3.703,1789,1.757,1934,1.679,1987,1.757,2048,1.21,2058,2.239,2081,2.046,2083,1.13,2087,2.389,2140,1.676,2148,1.482,2273,1.521,2286,2.538,2318,1.679,2340,1.679,2450,1.363,2451,1.757,2641,4.548,2712,5.62,2713,4.113,2951,4.402,2965,1.942,3182,1.679,3204,1.417,3676,3.081,3711,2.745,3712,5.007,3887,4.942,3936,1.679,4009,1.862,4012,1.862,4013,1.862,4014,1.862,4015,2.944,4016,2.02,4017,4.942,4018,4.357,4019,5.235,4020,2.02,4021,3.264,4022,2.02,4023,2.02,4024,4.728,4025,1.862,4026,2.02,4027,2.02,4028,2.02,4029,2.02,4030,5.235,4031,3.264,4032,2.02,4033,3.264,4034,1.862,4035,2.02,4036,2.02,4037,1.862,4038,2.02,4039,2.02,4040,2.02,4041,2.02,4042,1.862,4043,1.862,4044,1.862]],["component/90",[2,0.4]],["title/91-1",[174,22.038,606,30.883,1434,37.494]],["name/91-1",[]],["text/91-1",[]],["component/91-1",[]],["title/91-2",[119,32.398]],["name/91-2",[]],["text/91-2",[]],["component/91-2",[]],["title/91-3",[1904,62.298]],["name/91-3",[]],["text/91-3",[]],["component/91-3",[]],["title/91-4",[8,14.216,98,23.685,112,21.971,802,22.335]],["name/91-4",[]],["text/91-4",[]],["component/91-4",[]],["title/91-5",[234,32.383,1434,44.06]],["name/91-5",[]],["text/91-5",[]],["component/91-5",[]],["title/91-6",[8,12.584,244,19.771,675,31.157,685,36.426,802,19.771]],["name/91-6",[]],["text/91-6",[]],["component/91-6",[]],["title/91",[1434,53.413]],["name/91",[1434,1.845]],["text/91",[2,1.135,3,0.834,4,1.298,5,1.528,6,0.595,7,0.628,8,2.029,13,2.276,14,0.721,15,1.221,16,2.117,17,1.984,25,1.081,26,1.4,27,2.817,28,0.899,30,1.688,33,0.914,34,0.922,41,1.445,44,1.298,48,0.822,51,2.403,52,0.762,54,1.869,56,0.922,57,0.885,58,3.315,60,1.365,61,1.35,67,1.885,73,0.547,75,1.916,77,0.605,79,1.619,83,1.003,88,0.762,96,2.405,98,2.297,103,1.264,105,1.929,106,3.38,112,0.729,119,3.451,124,0.767,126,0.725,132,0.947,137,3.604,148,0.657,149,2.311,153,0.906,154,0.772,159,0.939,161,1.113,162,0.892,164,0.885,165,0.714,168,0.772,169,0.985,170,0.852,173,2.625,174,1.532,185,0.772,191,1.628,192,1.812,193,1.293,194,0.776,198,0.966,206,0.767,207,1.313,209,0.858,210,1.197,212,1.366,223,0.71,229,1.068,231,0.654,234,1.417,237,1.236,244,0.741,246,0.892,249,0.817,250,1.755,258,0.839,281,1.56,282,1.465,288,0.899,297,1.71,298,1.881,299,2.355,310,0.741,311,2.229,312,0.699,313,1.018,314,0.878,316,1.188,326,0.6,363,1.236,382,1.445,407,1.445,428,1.148,432,0.772,480,2.13,492,0.852,494,1.113,505,0.996,509,1.083,519,0.914,539,0.899,554,1.643,587,1.188,588,0.733,592,0.871,594,0.811,597,0.966,603,2.022,623,1.018,668,2.976,675,2.812,685,3.288,688,1.03,692,0.996,694,1.365,731,1.688,732,1.007,740,2.148,742,0.858,802,4.249,812,1.879,870,1.188,895,1.098,908,1.007,926,1.055,947,0.956,981,2.535,1091,0.922,1114,5.862,1221,2.13,1249,1.986,1264,2.607,1265,3.304,1280,0.791,1348,3.527,1366,1.018,1409,2.432,1434,6.655,1435,1.042,1448,1.263,1461,0.93,1471,1.083,1501,2.165,1559,2.682,1569,0.852,1579,2.349,1591,4.805,1624,0.93,1680,1.293,1702,3.99,1727,1.042,1771,1.148,1777,1.532,1801,1.148,1823,1.465,1866,1.365,1904,7.361,1909,1.113,1960,3.527,1998,1.098,2004,2.046,2048,1.055,2058,1.113,2064,1.293,2179,3.779,2286,1.263,2307,1.263,2354,1.327,2501,2.117,2540,2.722,2541,1.263,2548,2.303,2564,1.327,2571,1.293,2870,1.327,2885,1.263,3146,2.432,3204,1.236,3325,1.327,3394,1.532,3790,2.609,3998,2.432,4045,1.623,4046,1.623,4047,1.623,4048,1.623,4049,3.91,4050,1.623,4051,1.623,4052,6.542,4053,2.892,4054,1.623,4055,1.623,4056,2.892,4057,1.623,4058,1.623,4059,1.623,4060,1.623,4061,1.623,4062,1.623,4063,1.623,4064,1.623,4065,1.623,4066,6.035,4067,1.623,4068,1.623,4069,1.623,4070,5.443,4071,1.623,4072,1.623,4073,1.623,4074,1.623,4075,1.623,4076,1.623,4077,3.91,4078,1.623,4079,1.623,4080,1.623,4081,2.892,4082,2.892,4083,2.892,4084,1.623,4085,1.623,4086,1.623]],["component/91",[2,0.4]],["title/92-1",[25,24.71,1257,52.612]],["name/92-1",[]],["text/92-1",[]],["component/92-1",[]],["title/92-2",[3,33.925,231,26.603]],["name/92-2",[]],["text/92-2",[]],["component/92-2",[]],["title/92-3",[25,18.301,235,23.539,245,33.563,1257,38.965]],["name/92-3",[]],["text/92-3",[]],["component/92-3",[]],["title/92-4",[4087,80.094]],["name/92-4",[]],["text/92-4",[]],["component/92-4",[]],["title/92",[2,7.517,8,12.584,96,19.139,230,23.417,235,20.837]],["name/92",[235,1.331]],["text/92",[2,0.967,3,1.047,4,0.915,8,2.563,16,3.31,17,0.852,22,1.442,25,3.299,26,1.709,30,2.728,38,2.877,46,1.398,51,1.032,55,1.419,57,1.111,61,2.603,72,2.081,75,0.999,77,0.759,79,1.935,88,1.659,95,0.832,96,0.901,98,2.262,103,0.891,105,2.75,107,1.594,124,1.669,126,0.91,131,1.054,137,3.858,152,1.714,153,1.972,173,1.536,192,0.778,194,0.975,198,1.213,206,0.963,207,0.925,210,2.61,212,1.669,218,1.047,219,1.585,223,2.437,229,2.551,231,1.882,235,4.106,245,3.823,271,1.709,281,2.515,288,1.129,297,2.044,299,2.695,302,1.293,310,0.93,312,0.878,313,1.278,314,1.102,323,2.459,407,1.019,438,3.346,454,1.138,466,3.16,527,1.853,540,1.138,553,1.111,554,2.006,575,1.225,592,1.895,597,1.213,604,2.024,618,1.264,665,3.254,696,1.419,717,1.419,731,2.728,789,1.94,802,0.93,820,1.529,870,1.492,917,1.623,935,1.093,981,2.342,1116,1.466,1249,2.52,1254,1.225,1257,8.425,1314,2.47,1323,1.225,1365,1.839,1366,2.215,1434,1.359,1435,1.308,1469,1.623,1495,1.398,1501,3.087,1506,1.419,1540,1.466,1552,3.186,1558,1.52,1560,1.839,1569,1.853,1626,1.324,1627,1.442,1771,1.442,2004,1.442,2272,2.747,2280,1.714,2308,2.747,2352,2.886,2367,3.557,2571,1.623,2579,1.551,2638,3.334,2742,2.586,2792,1.714,2891,3.93,3177,1.551,3353,1.839,4088,2.038,4089,8.213,4090,3.532,4091,7.411,4092,3.532,4093,3.532,4094,2.038,4095,1.839,4096,2.038,4097,1.839,4098,7.411,4099,6.048,4100,4.673,4101,3.532,4102,2.038,4103,4.673,4104,4.673,4105,2.038,4106,3.532,4107,3.532,4108,3.532,4109,3.532,4110,3.532,4111,6.905,4112,3.532,4113,3.532,4114,3.532,4115,2.038,4116,2.038,4117,2.038]],["component/92",[2,0.4]],["title/93-1",[220,33.691,750,35.719]],["name/93-1",[]],["text/93-1",[]],["component/93-1",[]],["title/93-2",[40,29.041,882,44.06]],["name/93-2",[]],["text/93-2",[]],["component/93-2",[]],["title/93",[]],["name/93",[]],["text/93",[2,1.059,6,2.235,7,1.534,8,1.772,14,1.761,19,3.132,25,3.122,26,4.04,40,5.028,48,2.008,51,2.008,53,2.99,73,2.503,77,1.477,81,2.545,83,2.116,90,3.825,95,1.619,98,4.798,126,3.32,130,1.35,138,2.359,158,1.851,166,2.111,168,1.884,173,1.725,190,2.407,210,1.642,222,1.919,226,1.707,228,4.467,229,1.465,254,2.609,259,3.157,271,2.953,281,1.582,308,1.596,310,1.81,311,2.253,312,1.707,313,2.486,314,2.143,367,1.907,438,1.79,450,3.577,454,2.214,553,2.16,558,2.545,565,3.302,590,2.719,600,2.336,637,3.018,692,2.432,731,2.314,750,2.143,760,3.577,764,4.184,765,2.382,849,3.018,852,2.719,861,4.551,906,2.609,934,2.576,935,3.272,1036,3.577,1067,3.334,1104,3.742,1130,2.958,1155,3.334,1172,5.068,1282,2.719,1474,4.388,1569,2.08,1579,2.382,1584,3.24,1587,3.334,1623,2.644,1654,4.643,1689,4.315,1722,2.233,1762,3.577,1865,2.681,2075,3.018,2147,3.157,2241,3.334,2336,3.157,2346,4.315,2540,4.248,3006,6.707,3013,4.831,3015,3.157,3016,3.577,3021,3.577,3177,4.643,3672,3.577,3690,3.577,4118,3.965,4119,3.577,4120,3.965,4121,3.965,4122,6.1]],["component/93",[2,0.4]],["title/94",[40,35.206]],["name/94",[1,1.532]],["text/94",[10,4.516,39,5.013,43,5.629,1172,5.629,1299,4.013,1534,5.75,1808,5.267,2343,6.184,2344,5.882,3013,6.025]],["component/94",[2,0.4]],["title/95",[2343,44.06,2344,41.908]],["name/95",[2343,1.068,2344,1.016]],["text/95",[40,3.585,54,2.819,77,2.196,128,4.901,130,2.008,137,3.595,142,3.512,154,2.803,174,3.197,183,3.698,185,2.803,226,2.539,229,2.178,244,4.267,248,2.692,281,3.254,292,3.213,308,2.374,310,2.692,311,3.013,312,2.539,313,3.698,314,3.188,473,2.526,540,3.293,588,3.682,792,3.832,1119,4.375,1181,3.832,1251,4.171,1356,3.442,1375,3.881,1420,2.986,1490,3.321,1639,4.317,1729,3.74,2291,4.409,2343,7.061,2344,6.716,2347,3.832,2450,4.317,2991,8.721,2993,4.696,2994,4.959,2996,4.488,3971,5.32]],["component/95",[2,0.4]],["title/96",[1534,40.971,1808,37.531]],["name/96",[1534,0.993,1808,0.91]],["text/96",[36,3.37,38,4.53,40,4.362,77,2.959,130,2.704,226,3.421,229,2.934,281,3.169,308,3.198,310,3.626,311,4.188,312,3.421,313,4.981,314,4.294,540,4.436,662,5.714,1534,6.154,1808,6.148,1865,5.371,2324,5.448,2347,5.161]],["component/96",[2,0.4]],["title/97",[10,32.179,39,35.719]],["name/97",[39,1.496]],["text/97",[10,3.728,36,3.247,39,5.752,40,4.261,43,4.647,52,3.595,77,2.851,130,2.606,136,4.554,137,2.513,138,4.554,140,4.6,226,3.296,229,2.828,281,3.054,308,3.904,310,3.494,311,3.931,312,3.296,313,4.8,314,4.138,540,4.274,588,3.456,786,4.274,1534,4.747,1865,5.175,3414,6.906,4123,7.654]],["component/97",[2,0.4]],["title/98",[3013,52.045]],["name/98",[3013,1.798]],["text/98",[2,0.92,8,2.564,9,2.65,19,2.723,25,1.983,40,3.88,47,5.048,48,3.833,52,3.555,77,1.975,83,1.84,105,2.616,113,3.186,130,1.805,138,3.155,191,2.986,226,2.283,229,1.959,235,2.551,249,2.668,259,4.223,271,2.567,281,2.116,288,4.192,308,3.048,310,2.42,311,3.261,312,2.283,313,3.325,314,2.867,382,2.65,540,2.961,584,2.986,622,4.036,651,3.882,731,4.418,765,3.186,773,3.219,785,3.325,786,2.961,819,3.585,1172,4.595,1248,3.404,1252,3.751,1287,3.039,1307,3.095,1328,3.956,1378,3.325,1387,3.012,1554,4.459,1689,3.751,1722,2.986,1808,3.012,1865,3.585,2048,3.446,2241,4.459,2268,4.784,2296,4.036,2346,6.244,2382,3.404,2730,4.784,3013,7.474,3024,4.784,3035,4.784,3186,4.459,4124,5.303,4125,5.303,4126,5.303,4127,5.303,4128,5.303,4129,5.303]],["component/98",[2,0.4]],["title/99",[1299,34.666]],["name/99",[1299,1.198]],["text/99",[6,2.867,10,4.788,13,2.951,36,3.32,40,4.321,77,2.915,95,3.195,130,2.664,142,3.37,226,3.37,229,2.891,281,3.923,308,3.151,310,3.572,311,3.632,312,3.37,313,4.907,314,4.231,540,4.37,1299,4.652,1534,4.853,1865,5.291,2081,4.907,2359,4.963,4130,7.06]],["component/99",[2,0.4]],["title/100",[43,48.623]],["name/100",[43,1.68]],["text/100",[6,2.867,10,4.788,13,2.951,36,3.32,40,4.321,43,6.525,77,2.915,95,3.195,130,2.664,142,3.37,226,3.37,229,2.891,281,3.923,308,3.151,310,3.572,311,3.632,312,3.37,313,4.907,314,4.231,540,4.37,1534,4.853,1865,5.291,2081,4.907,2359,4.963,4130,7.06]],["component/100",[2,0.4]],["title/101-1",[112,25.245,231,22.638,518,31.135]],["name/101-1",[]],["text/101-1",[]],["component/101-1",[]],["title/101",[83,22.92,1688,52.612]],["name/101",[1688,2.204]],["text/101",[2,0.598,3,0.714,4,1.547,6,0.922,7,0.973,8,1.733,14,0.617,15,1.454,17,0.581,19,0.714,25,0.52,26,1.667,27,1.82,30,2.011,33,0.783,41,1.722,44,1.129,51,0.704,52,0.653,54,0.664,57,0.757,61,0.649,67,0.999,68,1.468,71,0.77,73,0.847,77,0.937,83,1.195,95,2.615,100,4.248,102,0.789,103,0.608,106,0.673,107,1.555,112,2.678,120,2.238,122,2.267,124,0.657,125,1.329,128,1.511,130,2.031,131,1.781,132,0.811,137,3.758,146,4.466,148,1.017,149,1.678,154,0.661,159,0.804,164,0.757,166,0.74,168,0.661,173,1.838,176,2.07,191,0.783,192,3.727,194,0.664,199,1.36,205,1.078,209,1.329,212,1.997,220,0.709,223,1.848,229,2.638,230,0.751,231,0.56,233,0.983,244,2.923,248,1.148,249,0.699,250,0.624,268,1.136,274,5.284,276,1.892,285,0.751,289,0.827,297,0.608,299,1.344,302,2.681,311,1.561,320,2.537,325,0.835,326,3.188,407,1.722,432,1.195,446,0.862,459,1.254,469,0.746,482,0.882,487,1.381,502,0.819,506,0.968,507,1.081,509,1.677,510,1.577,518,5.135,563,1.017,565,1.117,568,1.841,592,0.746,597,2.91,598,1.701,602,0.983,604,0.796,613,1.081,623,0.871,628,1.779,641,0.724,717,0.968,749,1.008,773,1.527,775,5.435,776,2.269,785,0.871,795,2.621,802,1.148,803,1.169,812,0.903,816,1.254,817,1.169,820,1.829,822,1.254,825,0.983,846,0.686,854,1.207,871,0.796,938,1.701,947,5.288,966,2.297,980,0.927,1066,1.254,1091,1.429,1096,1.169,1114,0.983,1142,1.136,1162,0.953,1222,1.136,1248,1.614,1249,1.542,1265,2.091,1280,0.677,1282,0.953,1314,3.938,1339,3.067,1366,2.65,1374,1.254,1390,0.751,1397,1.081,1445,2.522,1446,1.254,1468,0.74,1495,3.749,1527,1.779,1569,0.729,1589,1.841,1673,1.169,1677,5.624,1679,1.017,1682,1.107,1688,4.75,1697,1.107,1718,2.269,1719,2.269,1720,2.269,1722,0.783,1724,1.081,1727,0.892,1749,1.169,1753,2.185,1766,1.254,1768,2.269,1770,2.269,1771,0.983,2002,2.185,2004,1.779,2051,1.701,2083,0.844,2087,1.017,2288,2.238,2307,1.081,2336,1.107,2571,1.107,2590,1.136,2687,1.136,2807,1.169,2954,4.931,2999,1.107,3004,1.136,3012,1.254,3158,2.003,3244,1.207,3708,2.897,3845,1.207,4015,1.254,4119,1.254,4131,1.39,4132,3.445,4133,1.39,4134,1.312,4135,1.39,4136,1.39,4137,2.515,4138,1.169,4139,1.254,4140,1.39,4141,1.39,4142,1.39,4143,1.39,4144,1.39,4145,1.39,4146,1.39,4147,1.39,4148,1.39,4149,1.39,4150,1.39,4151,1.39,4152,1.39,4153,1.39,4154,1.39,4155,2.515,4156,1.39,4157,3.445,4158,1.39,4159,1.39,4160,1.39,4161,4.226,4162,1.39,4163,1.39,4164,4.226,4165,1.39,4166,1.39,4167,5.465,4168,1.39,4169,1.39,4170,2.515,4171,1.39,4172,1.39,4173,1.39,4174,1.39,4175,1.39,4176,2.515,4177,1.39,4178,1.39,4179,3.445,4180,1.39,4181,1.39,4182,1.39,4183,2.515,4184,1.39,4185,1.39,4186,1.39,4187,1.39,4188,2.515,4189,1.39,4190,1.39,4191,1.39,4192,1.39,4193,1.39,4194,1.39,4195,1.39,4196,1.39,4197,1.39,4198,1.39,4199,1.39,4200,1.39]],["component/101",[2,0.4]],["title/102",[231,22.638,1322,37.002,1529,38.565]],["name/102",[1529,1.898]],["text/102",[3,4.274,4,1.941,6,0.947,8,2.418,13,1.63,26,1.25,33,3.138,37,1.585,44,1.16,47,1.723,52,1.213,56,2.455,73,2.193,103,1.13,119,1.045,125,1.365,137,3.231,143,5.344,166,1.375,174,1.013,210,1.07,223,2.848,228,2.597,229,0.954,248,1.179,264,3.442,281,1.725,297,1.13,311,1.597,326,2.058,367,1.243,438,2.515,443,1.48,469,5.48,481,1.397,553,3.55,575,1.552,584,1.455,592,1.386,641,1.345,659,2.009,712,5.273,771,2.965,873,1.891,901,2.172,980,1.723,1103,1.552,1119,1.386,1287,3.193,1307,4.858,1322,1.7,1336,1.891,1387,3.7,1390,2.337,1392,5.639,1438,1.62,1461,1.48,1506,1.799,1528,1.568,1529,1.772,1722,1.455,1856,1.891,2060,2.172,2140,1.326,2294,1.723,2346,1.827,3078,6.368,3158,4.437,3266,3.635,3267,3.755,3268,2.172,3271,2.331,3273,5.877,3276,2.331,3351,3.635,3514,2.244,3635,5.027,3694,2.331,3714,2.331,3797,2.331,3867,5.877,3869,3.899,3919,2.331,4138,2.172,4201,2.583,4202,2.583,4203,2.583,4204,2.583,4205,7.249,4206,7.839,4207,4.322,4208,5.572,4209,5.572,4210,5.572,4211,5.572,4212,5.572,4213,4.322,4214,5.572,4215,10.513,4216,4.322,4217,2.583,4218,4.322,4219,2.583,4220,2.583,4221,2.583,4222,2.583,4223,3.899,4224,4.322,4225,4.686,4226,2.583,4227,3.635,4228,4.322,4229,4.686,4230,2.583,4231,4.322,4232,4.322,4233,5.572,4234,2.583,4235,2.583,4236,2.583,4237,2.583,4238,2.583,4239,4.322,4240,2.583,4241,2.583,4242,2.583,4243,2.583,4244,2.172,4245,2.583,4246,2.583,4247,2.583,4248,2.583]],["component/102",[2,0.4]],["title/103-1",[3,33.925,326,24.407]],["name/103-1",[]],["text/103-1",[]],["component/103-1",[]],["title/103-2",[326,24.407,1495,45.318]],["name/103-2",[]],["text/103-2",[]],["component/103-2",[]],["title/103-3",[326,20.77,540,31.395,981,23.619]],["name/103-3",[]],["text/103-3",[]],["component/103-3",[]],["title/103-4",[981,27.755,1395,38.208]],["name/103-4",[]],["text/103-4",[]],["component/103-4",[]],["title/103-5",[981,27.755,4249,62.369]],["name/103-5",[]],["text/103-5",[]],["component/103-5",[]],["title/103-6",[264,52.612,981,27.755]],["name/103-6",[]],["text/103-6",[]],["component/103-6",[]],["title/103-7",[981,27.755,4225,55.562]],["name/103-7",[]],["text/103-7",[]],["component/103-7",[]],["title/103-8",[981,27.755,4227,55.562]],["name/103-8",[]],["text/103-8",[]],["component/103-8",[]],["title/103-9",[981,27.755,4250,59.605]],["name/103-9",[]],["text/103-9",[]],["component/103-9",[]],["title/103-10",[981,27.755,4244,55.562]],["name/103-10",[]],["text/103-10",[]],["component/103-10",[]],["title/103-11",[110,37.531,981,27.755]],["name/103-11",[]],["text/103-11",[]],["component/103-11",[]],["title/103-12",[130,22.494,981,27.755]],["name/103-12",[]],["text/103-12",[]],["component/103-12",[]],["title/103-13",[981,27.755,4251,59.605]],["name/103-13",[]],["text/103-13",[]],["component/103-13",[]],["title/103-14",[981,27.755,4252,66.069]],["name/103-14",[]],["text/103-14",[]],["component/103-14",[]],["title/103-15",[981,27.755,3767,55.562]],["name/103-15",[]],["text/103-15",[]],["component/103-15",[]],["title/103-16",[3,33.925,981,27.755]],["name/103-16",[]],["text/103-16",[]],["component/103-16",[]],["title/103-17",[981,27.755,4229,55.562]],["name/103-17",[]],["text/103-17",[]],["component/103-17",[]],["title/103-18",[981,27.755,4253,62.369]],["name/103-18",[]],["text/103-18",[]],["component/103-18",[]],["title/103-19",[846,32.591,981,27.755]],["name/103-19",[]],["text/103-19",[]],["component/103-19",[]],["title/103-20",[981,27.755,1626,42.931]],["name/103-20",[]],["text/103-20",[]],["component/103-20",[]],["title/103-21",[162,43.994]],["name/103-21",[]],["text/103-21",[]],["component/103-21",[]],["title/103-22",[39,30.396,161,38.565,1683,37.002]],["name/103-22",[]],["text/103-22",[]],["component/103-22",[]],["title/103-23",[4254,80.094]],["name/103-23",[]],["text/103-23",[]],["component/103-23",[]],["title/103-24",[3042,62.298]],["name/103-24",[]],["text/103-24",[]],["component/103-24",[]],["title/103",[749,26.482,1322,43.481]],["name/103",[1322,1.821]],["text/103",[3,4.317,4,1.834,6,0.526,7,0.556,8,2.255,9,0.497,11,0.335,14,0.441,15,1.094,17,1.597,19,0.265,24,0.317,25,0.372,26,0.25,27,0.619,28,0.55,31,0.61,33,0.291,34,0.564,39,3.866,41,0.924,44,0.83,45,1.714,47,0.344,48,0.261,50,0.585,52,0.675,53,0.253,57,0.281,58,2.098,59,1.015,61,0.241,65,0.371,66,0.359,67,0.205,71,0.286,73,1.539,74,0.317,81,1.433,88,1.048,93,0.663,95,1.445,100,0.591,102,0.293,103,0.808,105,0.255,106,0.481,107,0.834,109,0.34,110,1.472,112,0.232,118,0.277,123,0.32,124,0.244,125,1.369,126,1.157,130,2.578,131,1.514,132,1.079,133,0.354,137,2.577,141,1.705,142,1.524,147,0.32,149,1.58,153,1.032,159,1.875,160,2.133,161,2.428,162,1.781,164,1.412,165,0.437,166,0.984,168,0.683,170,0.271,171,0.616,173,0.225,174,1.388,176,0.31,184,0.597,185,1.541,190,0.872,191,1.041,192,1.56,194,0.247,198,0.307,199,0.279,200,0.335,205,0.426,206,0.873,209,0.273,210,0.765,215,0.307,221,0.34,223,1.895,229,0.191,230,0.279,231,1.179,233,1.307,244,0.236,248,1.48,249,0.26,250,0.232,257,1.116,258,1.83,264,3.639,271,0.481,279,1.472,281,3.703,284,1.59,286,0.569,288,2.261,289,0.307,292,1.007,296,0.378,297,0.434,298,0.248,299,0.388,301,0.5,308,0.208,311,3.023,315,0.748,320,1.203,324,0.891,326,3.903,345,0.371,346,0.251,367,0.248,382,0.258,407,0.718,429,0.354,432,0.245,443,0.569,454,0.555,469,2.049,473,0.221,477,0.911,481,0.279,491,0.434,492,0.271,502,1.315,505,1.134,506,0.359,510,0.324,512,0.487,518,1.621,519,0.291,522,0.335,525,0.271,526,0.307,535,1.134,536,0.741,539,1.796,540,0.288,565,0.441,575,0.863,588,1.464,592,1.57,600,1.089,603,1.975,604,2.189,618,0.616,622,0.393,623,1.159,628,0.365,641,0.517,645,0.971,650,0.727,652,0.603,655,0.335,658,1.328,660,0.371,661,0.703,665,0.692,667,0.365,689,0.654,690,0.603,712,2.819,717,0.359,740,0.284,742,0.525,749,1.3,750,0.279,754,0.365,765,0.31,785,0.324,807,2.428,812,0.335,814,0.466,820,0.223,825,0.365,831,0.448,832,0.393,844,0.393,846,1.884,857,0.393,865,0.349,871,1.859,894,0.945,913,0.575,935,0.277,944,0.371,959,0.896,963,0.411,981,4.56,1042,1.144,1091,0.293,1103,1.557,1110,0.555,1119,0.277,1138,0.448,1142,1.51,1154,0.703,1205,0.331,1242,0.393,1249,1.068,1252,3.232,1256,0.422,1265,0.313,1287,1.678,1288,1.122,1294,0.365,1296,0.385,1307,2.229,1310,2.621,1311,1.606,1312,1.804,1314,0.273,1315,0.267,1322,0.654,1323,0.597,1356,0.301,1366,0.324,1373,0.365,1375,0.654,1378,0.324,1387,3.068,1389,0.836,1390,0.999,1395,2.361,1398,0.836,1406,1.144,1410,0.896,1413,0.256,1420,0.503,1423,0.971,1435,0.638,1437,0.638,1438,0.901,1445,1.897,1449,0.672,1461,0.296,1463,1.353,1466,0.365,1468,0.765,1473,0.61,1490,1.041,1495,3.572,1498,0.791,1499,0.663,1501,0.795,1554,0.434,1561,1.531,1569,0.97,1574,0.344,1576,1.117,1578,1.353,1579,0.597,1589,0.378,1601,0.378,1623,0.344,1625,0.466,1626,1.684,1637,0.359,1646,0.422,1652,0.327,1677,0.344,1681,1.296,1682,2.063,1683,3.295,1707,0.371,1708,6.805,1722,0.291,1724,2.277,1738,0.378,1747,1.144,1760,2.134,1788,1.778,1791,0.466,1808,0.293,1853,0.378,1856,1.353,1882,0.411,1887,0.487,1935,0.773,1940,0.349,1952,0.385,1974,0.401,1985,0.359,1998,0.349,2048,0.335,2051,0.349,2058,1.268,2087,0.378,2129,1.379,2133,0.715,2239,0.466,2279,1.877,2281,0.836,2288,2.816,2294,3.197,2295,0.466,2296,0.756,2308,0.773,2336,0.411,2362,0.448,2450,1.052,2552,0.434,2664,0.487,2777,0.434,2857,0.466,2861,0.466,2865,0.756,2866,2.462,2870,0.422,2885,0.401,2891,0.836,2972,0.393,2999,7.272,3005,0.411,3010,0.487,3042,3.37,3078,3.426,3104,0.812,3233,0.516,3234,0.516,3265,0.466,3266,0.434,3267,0.448,3268,0.836,3525,0.448,3526,0.448,3528,0.466,3529,0.466,3530,0.466,3705,1.296,3708,1.208,3752,1.667,3767,3.644,3845,0.448,4034,0.516,4097,0.466,4138,0.434,4139,0.896,4223,3.446,4225,3.644,4227,4.21,4229,2.462,4244,1.554,4249,4.09,4250,4.324,4251,4.699,4252,0.516,4253,0.938,4254,0.516,4255,0.516,4256,2.927,4257,0.516,4258,0.994,4259,1.078,4260,0.994,4261,0.516,4262,0.994,4263,0.56,4264,0.516,4265,0.516,4266,2.927,4267,0.516,4268,0.994,4269,0.516,4270,0.994,4271,0.516,4272,0.516,4273,0.994,4274,0.994,4275,0.56,4276,0.516,4277,0.516,4278,0.994,4279,0.56,4280,0.56,4281,4.083,4282,0.994,4283,0.516,4284,0.516,4285,0.516,4286,0.994,4287,0.487,4288,0.516,4289,0.56,4290,0.56,4291,0.516,4292,0.516,4293,4.701,4294,2.812,4295,2.422,4296,0.56,4297,1.078,4298,0.994,4299,0.516,4300,0.516,4301,0.994,4302,2.591,4303,0.516,4304,0.516,4305,0.994,4306,0.516,4307,0.516,4308,0.56,4309,0.516,4310,0.516,4311,0.516,4312,0.56,4313,0.516,4314,0.516,4315,0.516,4316,0.516,4317,0.516,4318,0.516,4319,0.516,4320,0.516,4321,1.436,4322,0.994,4323,0.994,4324,0.516,4325,0.516,4326,0.516,4327,0.516,4328,0.516,4329,0.516,4330,0.516,4331,0.516,4332,0.516,4333,0.516,4334,0.516,4335,0.994,4336,0.56,4337,0.56,4338,0.56,4339,0.56]],["component/103",[2,0.4]],["title/104",[6,20.602,165,24.714,1479,42.794]],["name/104",[6,1.014]],["text/104",[13,3.971,15,0.998,38,1.83,72,6.272,73,3.14,96,1.772,98,3.334,148,2.112,165,1.762,185,2.924,223,4.782,298,1.929,308,0.951,326,3.445,473,1.012,497,6.156,525,2.103,588,2.778,656,4.182,820,2.663,870,2.935,949,6.215,981,3.145,1314,3.251,1342,2.75,1416,2.258,1423,7.9,1473,6.85,1551,7.213,1846,6.503,1873,7.097,1927,1.763,2155,6.296,2973,3.372,2980,5.027,4095,2.132,4287,2.231,4340,2.363,4341,2.363,4342,2.363,4343,2.363,4344,2.363,4345,2.363,4346,2.363,4347,2.363,4348,2.363,4349,2.363,4350,2.363,4351,2.363,4352,2.363,4353,4.009,4354,2.363,4355,2.363,4356,2.363,4357,4.009,4358,5.222,4359,2.363,4360,4.009,4361,4.009,4362,5.222,4363,4.009,4364,2.363,4365,4.009,4366,5.222,4367,2.363,4368,4.009,4369,2.363,4370,4.009,4371,4.009,4372,7.486,4373,2.363,4374,7.486,4375,2.363,4376,5.55,4377,2.132,4378,2.363,4379,2.363,4380,2.363,4381,2.363,4382,2.363,4383,2.363,4384,2.363,4385,5.222,4386,5.222,4387,4.009,4388,2.363]],["component/104",[2,0.4]],["title/105",[6,24.21,1255,46.739]],["name/105",[6,1.014]],["text/105",[67,2.355,137,1.947,168,3.891,205,2.541,223,2.593,438,3.696,820,2.567,1151,4.722,1342,4.067,1416,3.339,2965,5.579,3124,9.122,3219,5.35,4376,9.572,4377,5.35,4389,5.93,4390,8.187,4391,10.971,4392,10.61,4393,8.187,4394,8.187,4395,8.187,4396,8.187,4397,8.187,4398,5.93,4399,8.187,4400,8.187,4401,8.187,4402,8.187,4403,5.93,4404,8.187,4405,8.187,4406,5.93,4407,5.93,4408,5.93,4409,5.93,4410,5.93,4411,5.93,4412,5.93,4413,5.93,4414,5.93,4415,5.93]],["component/105",[2,0.4]],["title/106-1",[44,29.665,84,21.688]],["name/106-1",[]],["text/106-1",[]],["component/106-1",[]],["title/106-2",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1226,15.771,1227,16.372]],["name/106-2",[]],["text/106-2",[]],["component/106-2",[]],["title/106-3",[299,25.783,467,33.925]],["name/106-3",[]],["text/106-3",[]],["component/106-3",[]],["title/106-4",[473,28.308,883,40.108]],["name/106-4",[]],["text/106-4",[]],["component/106-4",[]],["title/106-5",[9,33.018,440,34.914]],["name/106-5",[]],["text/106-5",[]],["component/106-5",[]],["title/106-6",[84,21.688,625,48.371]],["name/106-6",[]],["text/106-6",[]],["component/106-6",[]],["title/106-7",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1228,24.826]],["name/106-7",[]],["text/106-7",[]],["component/106-7",[]],["title/106-8",[299,25.783,467,33.925]],["name/106-8",[]],["text/106-8",[]],["component/106-8",[]],["title/106-9",[9,33.018,440,34.914]],["name/106-9",[]],["text/106-9",[]],["component/106-9",[]],["title/106-10",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1229,22.487]],["name/106-10",[]],["text/106-10",[]],["component/106-10",[]],["title/106-11",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1230,27.518]],["name/106-11",[]],["text/106-11",[]],["component/106-11",[]],["title/106-12",[9,33.018,440,34.914]],["name/106-12",[]],["text/106-12",[]],["component/106-12",[]],["title/106-13",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1231,23.142]],["name/106-13",[]],["text/106-13",[]],["component/106-13",[]],["title/106-14",[299,25.783,467,33.925]],["name/106-14",[]],["text/106-14",[]],["component/106-14",[]],["title/106-15",[473,28.308,883,40.108]],["name/106-15",[]],["text/106-15",[]],["component/106-15",[]],["title/106-16",[9,33.018,440,34.914]],["name/106-16",[]],["text/106-16",[]],["component/106-16",[]],["title/106-17",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1232,22.487]],["name/106-17",[]],["text/106-17",[]],["component/106-17",[]],["title/106-18",[299,25.783,467,33.925]],["name/106-18",[]],["text/106-18",[]],["component/106-18",[]],["title/106-19",[473,28.308,883,40.108]],["name/106-19",[]],["text/106-19",[]],["component/106-19",[]],["title/106-20",[9,33.018,440,34.914]],["name/106-20",[]],["text/106-20",[]],["component/106-20",[]],["title/106-21",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1233,27.518]],["name/106-21",[]],["text/106-21",[]],["component/106-21",[]],["title/106-22",[299,25.783,467,33.925]],["name/106-22",[]],["text/106-22",[]],["component/106-22",[]],["title/106-23",[473,28.308,883,40.108]],["name/106-23",[]],["text/106-23",[]],["component/106-23",[]],["title/106-24",[9,33.018,440,34.914]],["name/106-24",[]],["text/106-24",[]],["component/106-24",[]],["title/106-25",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1234,25.977]],["name/106-25",[]],["text/106-25",[]],["component/106-25",[]],["title/106-26",[299,25.783,467,33.925]],["name/106-26",[]],["text/106-26",[]],["component/106-26",[]],["title/106-27",[473,28.308,883,40.108]],["name/106-27",[]],["text/106-27",[]],["component/106-27",[]],["title/106-28",[9,33.018,440,34.914]],["name/106-28",[]],["text/106-28",[]],["component/106-28",[]],["title/106-29",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1235,27.518]],["name/106-29",[]],["text/106-29",[]],["component/106-29",[]],["title/106-30",[299,25.783,467,33.925]],["name/106-30",[]],["text/106-30",[]],["component/106-30",[]],["title/106-31",[473,28.308,883,40.108]],["name/106-31",[]],["text/106-31",[]],["component/106-31",[]],["title/106-32",[9,33.018,440,34.914]],["name/106-32",[]],["text/106-32",[]],["component/106-32",[]],["title/106-33",[84,9.033,119,11.131,137,22.242,263,15.239,508,15.497,1227,16.372,1236,27.518]],["name/106-33",[]],["text/106-33",[]],["component/106-33",[]],["title/106-34",[299,25.783,467,33.925]],["name/106-34",[]],["text/106-34",[]],["component/106-34",[]],["title/106-35",[473,28.308,883,40.108]],["name/106-35",[]],["text/106-35",[]],["component/106-35",[]],["title/106-36",[9,33.018,440,34.914]],["name/106-36",[]],["text/106-36",[]],["component/106-36",[]],["title/106-37",[84,21.688,405,42.931]],["name/106-37",[]],["text/106-37",[]],["component/106-37",[]],["title/106-38",[84,8.419,119,10.375,137,21.286,263,14.203,405,16.666,508,14.444,1227,15.259,1237,23.139]],["name/106-38",[]],["text/106-38",[]],["component/106-38",[]],["title/106-39",[299,25.783,467,33.925]],["name/106-39",[]],["text/106-39",[]],["component/106-39",[]],["title/106-40",[473,28.308,883,40.108]],["name/106-40",[]],["text/106-40",[]],["component/106-40",[]],["title/106-41",[9,33.018,440,34.914]],["name/106-41",[]],["text/106-41",[]],["component/106-41",[]],["title/106-42",[84,8.419,119,10.375,137,21.286,263,14.203,405,16.666,508,14.444,1227,15.259,1238,23.139]],["name/106-42",[]],["text/106-42",[]],["component/106-42",[]],["title/106-43",[299,25.783,467,33.925]],["name/106-43",[]],["text/106-43",[]],["component/106-43",[]],["title/106-44",[473,28.308,883,40.108]],["name/106-44",[]],["text/106-44",[]],["component/106-44",[]],["title/106-45",[9,33.018,440,34.914]],["name/106-45",[]],["text/106-45",[]],["component/106-45",[]],["title/106-46",[84,8.419,119,10.375,137,21.286,263,14.203,405,16.666,508,14.444,1227,15.259,1239,25.648]],["name/106-46",[]],["text/106-46",[]],["component/106-46",[]],["title/106-47",[473,34.317]],["name/106-47",[]],["text/106-47",[]],["component/106-47",[]],["title/106-48",[84,8.419,119,10.375,137,21.286,263,14.203,405,16.666,508,14.444,1227,15.259,1240,25.648]],["name/106-48",[]],["text/106-48",[]],["component/106-48",[]],["title/106",[155,45.902]],["name/106",[155,1.586]],["text/106",[1,0.366,2,1.775,4,0.297,5,0.665,6,1.67,7,0.697,8,1.813,9,2.914,10,0.613,13,1.196,14,2.024,15,1.162,16,1.949,17,1.326,19,0.646,25,3.754,26,2.822,28,0.697,36,0.975,38,0.574,39,0.68,40,1.564,41,0.9,43,0.764,45,0.665,51,1.164,53,0.324,54,0.316,56,0.375,58,0.691,59,2.151,61,0.588,63,3.449,64,0.526,65,0.475,67,2.875,68,0.735,71,0.366,73,0.927,74,0.772,79,0.521,80,0.401,83,1.474,84,1.762,87,0.363,88,0.846,90,0.789,92,0.405,93,0.305,94,1.002,95,1.599,96,1.572,98,2.345,100,1.367,103,0.289,105,0.326,106,0.32,107,1.432,112,1.597,113,0.397,114,0.54,118,0.354,119,0.509,121,1.367,123,0.78,124,0.312,125,0.665,126,1.026,130,1.08,137,0.754,141,0.435,142,0.776,148,1.96,149,0.322,153,0.703,154,0.314,155,0.721,158,0.841,159,2.057,162,0.363,165,2.249,166,0.67,168,0.314,170,0.347,173,0.287,175,0.772,176,1.381,190,0.401,191,1.294,192,1.851,194,1.099,199,0.974,202,0.419,205,0.539,206,0.851,207,0.818,210,0.274,211,0.863,212,2.007,214,0.435,216,0.721,218,0.925,220,0.337,222,0.609,223,2.549,229,1.017,230,0.68,231,0.726,234,0.617,235,0.318,237,0.503,244,0.302,246,2.333,248,1.624,249,0.906,254,0.828,255,0.382,256,0.441,258,1.188,281,1.42,288,0.697,295,1.946,298,0.318,299,2.509,308,0.726,311,1.446,312,1.532,315,4.158,316,1.319,319,0.369,320,0.307,324,0.78,326,2.375,346,0.613,382,1.376,385,0.851,405,0.429,407,1.376,414,0.89,431,0.435,432,0.856,438,2.727,440,1.455,441,0.405,443,0.379,467,1.827,469,0.354,473,1.678,474,0.697,480,4.161,487,0.363,497,1.042,503,0.798,504,0.905,507,0.514,508,0.372,523,1.058,525,1.866,527,1.206,535,0.405,540,1.006,544,0.41,545,0.493,546,0.503,549,1.435,553,1.5,554,0.375,565,0.8,575,1.654,576,0.818,584,0.372,588,0.298,590,1.236,592,0.967,600,0.389,601,1.371,603,0.651,604,1.033,609,0.556,618,0.41,625,0.484,626,0.453,642,0.979,651,0.484,652,0.764,655,0.429,658,1.072,660,0.475,667,0.467,668,2.414,674,0.526,679,0.46,680,1.933,689,0.435,707,0.467,712,0.372,713,0.958,739,0.435,748,0.475,749,0.265,750,0.357,764,0.453,765,0.397,771,0.453,784,0.596,785,0.414,792,0.429,795,0.41,798,0.556,802,1.624,820,2.523,833,0.828,835,1.344,847,0.453,851,0.424,861,0.493,865,0.851,876,0.503,882,0.441,883,0.401,894,0.435,906,0.435,934,0.429,939,0.441,951,0.958,965,1.319,981,0.757,993,0.46,1002,1.83,1021,1.371,1041,0.441,1042,0.526,1047,0.526,1073,1.093,1082,0.354,1091,0.715,1103,0.397,1104,0.405,1110,0.703,1113,0.89,1115,0.596,1138,0.574,1145,0.484,1171,2.073,1174,0.851,1181,0.429,1205,0.424,1224,0.514,1231,0.556,1241,0.379,1242,0.503,1243,0.661,1244,0.661,1245,1.435,1246,1.258,1247,1.258,1248,0.424,1249,1.959,1250,0.514,1251,0.467,1252,1.626,1253,0.958,1254,0.397,1255,0.89,1256,2.592,1257,0.526,1258,0.772,1259,2.552,1260,2.552,1261,0.556,1262,2.175,1263,2.169,1264,0.441,1265,2.16,1266,0.661,1267,0.661,1268,0.661,1269,0.661,1270,0.661,1271,0.661,1272,0.661,1273,0.661,1274,0.661,1275,0.661,1276,0.661,1277,0.661,1278,0.661,1279,0.661,1280,0.322,1281,0.556,1282,0.863,1283,0.503,1284,0.624,1285,0.556,1286,1.058,1287,0.379,1288,0.764,1289,1.533,1290,0.556,1291,1.002,1292,2.298,1293,0.46,1294,0.467,1295,0.503,1296,0.493,1297,1.258,1298,0.484,1299,0.78,1300,0.596,1301,0.556,1302,0.661,1303,0.596,1304,2.753,1305,1.472,1306,0.661,1307,1.607,1308,0.441,1309,0.475,1310,0.424,1311,0.905,1312,0.46,1313,0.596,1314,0.952,1315,0.342,1316,0.46,1317,2.392,1318,0.596,1319,0.556,1320,0.661,1321,1.787,1322,0.828,1323,0.756,1324,1.802,1325,0.661,1326,0.661,1327,0.661,1328,0.493,1329,0.661,1330,0.661,1331,1.028,1332,1.258,1333,1.135,1334,0.979,1335,0.574,1336,0.484,1337,1.402,1338,0.596,1339,0.414,1340,0.661,1341,0.514,1342,0.453,1343,1.435,1344,0.596,1345,1.258,1346,0.54,1347,0.661,1348,0.596,1349,0.661,1350,0.624,1351,0.661,1352,0.661,1353,0.661,1354,1.554,1355,0.661,1356,0.735,1357,0.661,1358,0.661,1359,0.661,1360,0.661,1361,1.028,1362,0.661,1363,0.661,1364,0.661,1365,0.596,1366,0.414,1367,0.661,1368,0.661,1369,0.661,1370,0.661,1371,0.661,1372,0.503,1373,0.89,1374,0.596,1375,0.828,1376,1.319,1377,1.626,1378,0.414,1379,0.661,1380,0.484,1381,0.484,1382,0.958,1383,0.54,1384,1.296,1385,0.54,1386,0.493,1387,0.375,1388,0.596,1389,0.556,1390,0.357,1391,1.058,1392,0.905,1393,0.89,1394,0.661,1395,1.592,1396,0.661,1397,1.402,1398,0.556,1399,0.661,1400,0.661,1401,0.661,1402,1.093,1403,1.093,1404,0.661,1405,0.414,1406,0.526,1407,0.661,1408,0.839,1409,1.058,1410,0.596,1411,1.093,1412,0.661,1413,0.328,1414,0.798,1415,0.661,1416,0.372,1417,0.36,1418,0.661,1419,0.661,1420,0.335,1421,0.661,1422,0.661,1423,2.144,1424,0.661,1425,1.258,1426,0.661,1427,0.484,1428,0.54,1429,0.467,1430,0.661,1431,0.661,1432,0.661,1433,0.661,1434,1.533,1435,1.157,1436,0.661,1437,0.424,1438,1.13,1439,0.661,1440,0.661,1441,0.661,1442,0.661,1443,0.661,1444,0.493,1445,0.921,1446,0.596,1447,0.556,1448,0.514,1449,0.447,1450,0.419,1451,0.46,1452,0.503,1453,0.661,1454,0.503,1455,0.661,1456,1.028,1457,0.514,1458,0.596,1459,0.661,1460,0.661,1461,1.033,1462,0.514,1463,0.484,1464,0.661,1465,0.661,1466,0.467,1467,0.661,1468,0.67,1469,0.526,1470,0.503,1471,0.839,1472,1.135,1473,0.405,1474,0.475,1475,0.661,1476,0.661,1477,0.661,1478,0.484,1479,0.503,1480,0.596,1481,0.54,1482,0.661,1483,0.661,1484,0.661,1485,0.661,1486,0.661,1487,0.661,1488,0.514,1489,0.661,1490,0.372,1491,1.258,1492,1.058,1493,0.661,1494,0.54,1495,0.453,1496,0.661,1497,0.574,1498,0.526,1499,0.441,1500,0.661,1501,0.366,1502,0.556,1503,1.258,1504,0.661,1505,0.54,1506,0.46,1507,0.574,1508,0.503,1509,0.526,1510,1.093,1511,0.661,1512,0.574,1513,0.661,1514,0.661,1515,0.661,1516,0.405,1517,0.661,1518,0.596,1519,0.596,1520,0.661,1521,0.921,1522,0.958,1523,0.596,1524,0.661,1525,0.661,1526,0.526,1527,0.467,1528,0.401,1529,0.453,1530,0.596,1531,0.54,1532,0.661,1533,0.661,1534,0.41,1535,0.661,1536,0.661,1537,0.661,1538,0.596,1539,1.802,1540,0.475,1541,0.393,1542,0.574,1543,0.484,1544,0.624,1545,0.661,1546,1.258,1547,0.661,1548,0.661,1549,0.979,1550,0.574,1551,1.002,1552,0.596,1553,0.661,1554,0.556,1555,0.556,1556,0.503,1557,0.596,1558,0.939,1559,0.453,1560,0.596,1561,0.453,1562,0.661,1563,0.661,1564,0.661,1565,0.484,1566,0.661,1567,0.661,1568,0.661,1569,0.347,1570,0.661,1571,0.661,1572,0.661]],["component/106",[2,0.4]],["title/107-1",[2,11.466,83,22.92]],["name/107-1",[]],["text/107-1",[]],["component/107-1",[]],["title/107",[487,43.994]],["name/107",[1,1.532]],["text/107",[2,1.839,6,2.882,8,2.765,14,2.486,15,1.499,16,2.384,19,2.874,25,2.093,26,2.709,27,1.529,31,2.178,36,4.037,38,3.163,45,1.876,52,1.667,53,1.74,57,1.935,68,2.072,71,1.966,73,1.885,75,2.743,80,2.155,83,3.52,87,3.074,90,3.51,93,1.639,95,2.285,96,4.205,99,2.435,103,1.552,112,3.111,121,2.112,126,1.586,137,1.165,158,1.658,168,1.687,170,1.862,199,3.026,205,2.398,207,2.541,212,1.677,214,2.336,215,2.112,216,2.035,220,1.81,230,3.026,235,1.708,246,3.074,249,1.786,271,2.709,295,4.251,326,2.068,336,4.251,432,1.687,467,1.823,474,1.966,487,1.95,492,1.862,520,2.554,550,2.279,565,1.577,592,3.003,608,2.702,667,2.512,668,2.702,674,2.827,732,4.297,773,2.155,789,1.95,850,2.599,857,2.702,861,2.649,966,4.621,992,2.112,1002,2.827,1057,2.649,1091,3.18,1104,5.25,1116,4.026,1126,3.203,1155,2.986,1197,2.512,1259,3.363,1260,3.363,1289,2.368,1303,3.203,1323,2.133,1434,2.368,1474,2.554,1507,4.863,1558,2.649,1573,3.733,1574,2.368,1575,3.55,1576,2.761,1577,3.55,1578,2.599,1579,2.133,1580,3.55,1581,2.827,1582,3.203,1583,2.761,1584,2.901,1585,2.702,1586,3.084,1587,2.986,1588,3.203,1589,2.599,1590,4.354,1591,2.827,1592,3.55]],["component/107",[2,0.4]],["title/108",[137,14.218,218,22.241,440,22.889,441,26.572,527,22.722]],["name/108",[218,0.822,527,0.84]],["text/108",[]],["component/108",[2,0.4]],["title/109",[0,67.357]],["name/109",[1,1.532]],["text/109",[]],["component/109",[2,0.4]],["title/110",[2,8.492,8,14.216,83,16.975,827,34.616]],["name/110",[1106,2.767]],["text/110",[2,1.793,5,2.914,6,0.933,8,2.904,14,1.131,15,1.075,16,1.672,17,1.064,27,1.838,33,1.434,36,2.339,38,1.162,48,1.289,52,2.59,67,1.011,73,3.136,83,2.494,87,1.398,90,1.596,95,1.039,96,2.852,97,2.027,98,1.232,103,1.867,119,2.23,125,1.345,127,1.272,137,3.281,156,1.398,158,3.014,174,0.998,183,1.596,185,1.21,194,2.636,207,1.156,210,1.054,220,3.968,221,3.629,222,1.232,226,1.096,249,1.281,255,1.472,256,1.698,271,2.067,281,1.016,285,1.376,299,0.994,300,1.801,301,1.281,311,1.577,320,2.56,326,0.94,334,5.364,336,5.532,346,2.685,350,6.583,384,4.637,385,1.721,399,1.801,432,1.21,433,1.864,435,1.698,437,1.899,438,1.149,448,3.313,453,1.831,454,1.422,458,1.515,475,1.721,526,1.515,533,1.698,539,1.41,544,1.579,554,1.446,567,2.141,585,1.654,594,2.134,600,1.5,608,1.938,629,1.746,646,2.297,669,1.773,692,1.562,742,1.345,773,2.592,789,1.398,812,1.654,827,5.848,833,1.675,835,1.899,852,4.427,864,1.938,865,1.721,870,1.864,882,1.698,907,2.141,931,1.899,935,1.366,947,1.5,950,2.141,966,1.698,992,2.54,1006,1.864,1008,5.428,1028,3.852,1029,2.141,1035,2.297,1046,2.141,1047,2.027,1048,2.141,1049,2.141,1050,2.297,1077,3.852,1078,2.297,1079,2.08,1082,1.366,1083,3.25,1107,2.546,1108,2.546,1109,3.852,1110,2.384,1111,2.212,1112,2.141,1113,1.801,1114,3.02,1115,3.852,1116,1.831,1117,4.269,1118,4.974,1119,2.29,1120,3.9,1121,2.546,1122,2.546,1123,2.546,1124,3.25,1125,2.546,1126,2.297,1127,2.027,1128,2.546,1129,2.546,1130,1.899,1131,2.546,1132,3.709,1133,2.546,1134,1.938,1135,2.297,1136,2.546,1137,2.546,1138,2.212,1139,1.899,1140,2.546,1141,2.141,1142,2.08,1143,2.297,1144,2.546,1145,1.864,1146,2.546,1147,2.546,1148,2.403,1149,2.546,1150,4.269,1151,2.027,1152,2.546,1153,2.546,1154,1.801,1155,2.141,1156,2.546,1157,2.546,1158,2.027,1159,2.546,1160,1.864,1161,2.546,1162,1.746]],["component/110",[2,0.4]],["title/111-1",[165,29.041,320,30.673]],["name/111-1",[]],["text/111-1",[]],["component/111-1",[]],["title/111-2",[165,29.041,320,30.673]],["name/111-2",[]],["text/111-2",[]],["component/111-2",[]],["title/111",[2,7.517,67,17.205,83,15.026,1041,28.885,1197,30.642]],["name/111",[67,0.636,1197,1.133]],["text/111",[2,1.502,7,2.49,13,2.427,17,1.778,27,1.831,36,2.73,54,2.034,67,3.693,73,1.432,83,3.393,88,1.998,95,3.169,105,2.098,124,2.009,126,2.874,153,2.375,156,2.336,158,3.625,165,1.869,181,3.577,182,3.577,187,3.837,192,1.624,210,1.761,211,4.414,220,4.414,222,2.059,226,1.831,256,2.836,297,3.395,311,2.377,320,1.975,397,3.695,432,2.021,437,3.173,438,2.905,445,4.414,466,2.876,473,1.822,475,2.876,503,2.698,508,2.395,525,2.231,527,2.231,530,4.801,558,2.73,563,3.114,571,4.553,574,4.712,604,2.437,765,4.665,773,5.255,774,3.577,815,4.49,817,3.577,827,3.009,849,5.909,898,5.125,930,3.837,1006,4.712,1007,4.015,1008,3.577,1041,4.292,1044,3.837,1045,3.837,1046,3.577,1047,3.387,1048,3.577,1049,3.577,1082,4.165,1109,3.837,1120,3.009,1197,3.009,1198,4.253,1199,4.253,1201,4.253,1202,3.387,1203,3.577,1204,3.695,1205,2.73,1206,4.253,1207,7.763,1208,4.253,1209,4.253,1210,4.253,1213,6.435,1214,4.253,1216,4.253,1217,3.577,1221,2.317,1222,3.475,1224,3.308,1225,3.577,4416,4.615,4417,4.615]],["component/111",[2,0.4]],["title/112-1",[452,52.612,453,47.525]],["name/112-1",[]],["text/112-1",[]],["component/112-1",[]],["title/112-2",[137,18.456,188,44.772,1163,56.223]],["name/112-2",[]],["text/112-2",[]],["component/112-2",[]],["title/112-3",[1164,67.357]],["name/112-3",[]],["text/112-3",[]],["component/112-3",[]],["title/112",[2,7.517,83,15.026,188,34.492,452,34.492,1164,36.426]],["name/112",[188,0.897,452,0.897,1164,0.948]],["text/112",[2,1.925,8,1.165,36,1.701,73,2.827,79,1.66,83,4.091,96,1.772,105,3.035,119,2.489,121,4.455,127,2.004,178,2.135,223,1.754,224,2.515,246,4.113,271,3.624,299,2.401,315,3.205,333,3.618,334,6.265,336,5.865,337,3.618,340,6.755,346,3.647,350,5.962,361,5.551,362,5.551,363,4.684,373,3.618,374,3.618,375,3.618,376,3.372,377,3.618,390,5.551,413,3.484,414,2.837,429,2.751,633,2.936,636,4.9,675,2.885,742,3.957,773,3.735,865,2.711,867,2.574,993,4.285,1082,2.151,1083,3.052,1118,8.624,1145,2.936,1165,7.487,1166,3.618,1167,4.01,1168,6.153,1169,6.153,1170,5.175,1171,5.551,1172,2.434,1173,2.751,1174,2.711,1175,4.01,1176,5.551,1177,4.01,1178,3.618,1179,3.372,1180,4.01,1181,2.606,1182,3.618,1183,4.01,1184,4.684,1185,4.01,1186,5.175,1187,4.01,1188,4.01,1189,3.618,1190,5.175,1191,4.01,1192,3.785,1193,4.01,1194,3.618]],["component/112",[2,0.4]],["title/113-1",[8,14.216,119,19.793,346,23.833,1593,38.965]],["name/113-1",[]],["text/113-1",[]],["component/113-1",[]],["title/113-2",[203,44.06,1130,49.288]],["name/113-2",[]],["text/113-2",[]],["component/113-2",[]],["title/113-3",[203,44.06,1508,50.288]],["name/113-3",[]],["text/113-3",[]],["component/113-3",[]],["title/113-4",[203,44.06,1248,42.408]],["name/113-4",[]],["text/113-4",[]],["component/113-4",[]],["title/113-5",[867,42.408,1291,52.612]],["name/113-5",[]],["text/113-5",[]],["component/113-5",[]],["title/113-6",[1594,52.612,1595,55.562]],["name/113-6",[]],["text/113-6",[]],["component/113-6",[]],["title/113-7",[36,23.851,96,24.844,130,19.142]],["name/113-7",[]],["text/113-7",[]],["component/113-7",[]],["title/113",[83,19.505,336,34.491,350,44.772]],["name/113",[1596,2.767]],["text/113",[2,0.619,4,1.601,5,0.766,6,3.278,7,2.173,8,2.69,11,0.942,14,1.16,15,2.769,19,1.341,25,2.453,27,1.878,28,0.802,31,0.889,32,0.966,33,0.816,36,2.137,41,1.305,44,1.601,46,0.994,48,1.806,52,1.227,53,1.748,54,1.249,55,1.009,58,1.435,61,0.677,67,0.576,71,0.802,72,0.854,76,1.742,83,0.503,93,2.825,95,2.056,96,3.483,97,4.472,98,1.264,99,2.446,107,2.535,118,1.913,119,2.95,125,0.766,126,2.733,127,5.234,130,1.485,132,0.846,148,1.056,152,1.219,156,0.796,159,0.838,160,1.458,165,1.567,168,0.689,173,1.897,176,2.142,184,0.871,190,2.648,191,1.471,192,1.362,194,0.693,203,2.909,206,1.234,209,0.766,224,2.236,230,1.412,234,2.138,246,1.435,249,1.794,250,1.173,258,1.351,270,1.307,271,1.264,272,1.742,285,0.783,289,0.862,290,2.66,297,1.559,298,0.697,299,1.391,301,3.3,322,1.127,324,0.899,326,0.965,336,3.445,346,3.704,385,0.98,399,3.973,407,1.305,428,1.025,431,1.719,432,3.467,438,1.179,443,0.83,446,0.899,448,0.871,473,1.119,474,0.802,480,1.423,481,0.783,484,1.009,492,0.76,502,0.854,509,0.966,525,0.76,530,1.081,541,1.988,551,1.009,557,1.025,573,0.93,584,0.816,585,0.942,597,1.554,598,0.98,600,2.57,613,2.773,623,1.638,641,0.755,650,1.061,658,0.862,668,1.103,688,0.919,740,1.435,741,2.031,773,3.982,775,4.275,789,4.595,791,1.127,794,1.184,802,1.192,810,2.196,820,0.627,827,5.16,851,0.93,867,0.93,870,1.061,917,1.154,934,0.942,935,0.777,952,2.196,966,1.742,967,2.714,968,1.103,992,0.862,1000,2.773,1016,1.103,1018,1.184,1082,0.777,1083,2.714,1104,1.602,1116,2.565,1119,0.777,1120,3.563,1124,1.988,1130,1.081,1139,1.081,1160,1.061,1197,4.64,1221,1.423,1248,3.605,1254,1.569,1290,2.196,1291,1.154,1294,1.025,1305,2.134,1314,0.766,1319,1.219,1323,2.142,1344,1.307,1378,0.909,1383,1.184,1387,0.823,1454,1.103,1461,0.83,1462,1.127,1499,1.742,1508,1.103,1569,0.76,1576,1.127,1581,1.154,1586,1.259,1587,2.196,1593,1.154,1594,3.473,1595,2.196,1597,1.307,1598,1.449,1599,1.307,1600,2.612,1601,2.61,1602,1.368,1603,1.307,1604,1.449,1605,1.307,1606,2.134,1607,1.219,1608,2.612,1609,2.356,1610,3.935,1611,1.449,1612,3.098,1613,1.449,1614,2.612,1615,1.449,1616,3.565,1617,3.668,1618,1.154,1619,1.307,1620,1.307,1621,1.449,1622,2.612,1623,0.966,1624,3.219,1625,1.307,1626,0.942,1627,1.025,1628,1.368,1629,1.449,1630,1.307,1631,1.219,1632,1.449,1633,2.612,1634,1.449,1635,1.307,1636,1.154,1637,1.009,1638,1.449,1639,1.061,1640,1.009,1641,1.154,1642,1.449,1643,1.449,1644,1.449,1645,1.449,1646,1.184,1647,1.307,1648,1.449,1649,1.184,1650,1.307,1651,7.112,1652,0.919,1653,1.307,1654,1.103,1655,1.449,1656,2.612,1657,1.219,1658,1.449,1659,2.356,1660,1.127,1661,1.307,1662,1.307,1663,1.449,1664,1.307,1665,1.307,1666,1.449,1667,1.449,1668,1.449,1669,1.307,1670,1.009,1671,1.103]],["component/113",[2,0.4]],["title/114-1",[892,59.605,1636,52.612]],["name/114-1",[]],["text/114-1",[]],["component/114-1",[]],["title/114",[867,42.408,1636,52.612]],["name/114",[867,1.776]],["text/114",[2,1.378,9,4.959,83,3.443,107,3.586,131,4.107,148,3.213,222,3.845,255,4.594,432,3.775,441,6.088,531,7.166,655,5.161,750,4.294,805,6.448,815,4.594,867,5.098,895,5.371,1135,7.166,1334,6.178,1636,9.292,1673,6.68]],["component/114",[2,0.4]],["title/115-1",[16,24.284]],["name/115-1",[]],["text/115-1",[]],["component/115-1",[]],["title/115-2",[16,20.032,1249,24.113]],["name/115-2",[]],["text/115-2",[]],["component/115-2",[]],["title/115-3",[13,18.453,815,28.297,1221,26.663,2083,29.705]],["name/115-3",[]],["text/115-3",[]],["component/115-3",[]],["title/115",[192,25.234,272,44.06]],["name/115",[192,0.612,272,1.068]],["text/115",[2,1.168,4,0.875,6,3.174,7,1.746,8,2.657,10,2.631,11,2.206,13,2.538,14,2.4,16,2.326,23,1.638,24,1.195,25,3.239,28,2.499,31,2.083,33,1.912,36,1.44,38,2.06,39,3.313,40,4.718,41,1.697,43,4.085,44,1.524,45,1.029,48,1.72,49,1.638,52,0.915,53,0.955,54,0.931,61,0.909,66,1.356,71,1.079,73,1.52,75,0.955,81,1.25,83,1.178,88,1.595,92,2.083,95,1.386,96,0.861,98,0.943,102,2.564,103,1.485,106,0.943,107,1.533,125,1.029,126,0.87,127,0.973,130,2.739,136,1.159,137,2.011,142,2.638,148,0.788,149,0.949,161,1.336,164,1.85,170,3.214,172,1.731,174,0.763,183,1.221,185,1.614,192,2.764,193,2.704,198,1.159,205,1.455,207,0.884,209,1.029,210,2.237,222,2.615,223,1.485,226,0.839,229,1.667,230,1.053,231,0.784,235,3.237,245,1.336,246,1.07,254,2.234,255,1.126,259,1.551,272,3.01,281,2.156,285,1.836,289,1.159,290,1.453,292,1.061,297,2.362,299,0.76,301,2.718,308,1.817,311,1.667,326,1.254,367,2.171,382,1.697,432,0.926,443,1.116,480,1.061,481,1.053,487,1.07,506,1.356,509,1.299,518,1.079,519,1.097,522,2.206,526,1.159,534,1.453,551,1.356,565,0.865,584,1.097,588,1.533,594,0.973,603,2.794,641,1.768,665,1.356,731,1.137,749,1.361,756,1.482,765,1.17,778,2.704,789,1.07,802,2.797,815,1.126,820,1.469,846,0.961,861,1.453,894,1.282,932,1.426,940,1.356,947,2,1006,1.426,1059,1.592,1110,1.896,1124,1.482,1160,1.426,1221,1.061,1249,1.972,1280,1.654,1299,2.912,1323,1.17,1334,1.515,1386,1.453,1405,1.221,1417,1.061,1461,1.116,1468,1.037,1471,1.299,1527,2.402,1528,2.061,1534,3.35,1565,1.426,1569,2.367,1573,1.299,1574,2.264,1576,1.515,1579,1.17,1583,1.515,1589,1.426,1606,1.592,1620,1.757,1624,1.946,1627,1.378,1630,1.757,1659,1.757,1671,1.482,1734,1.592,1744,2.855,1808,3.069,1891,1.551,1931,2.329,1952,1.453,2081,1.221,2083,2.061,2288,1.266,2325,1.592,2336,1.551,2337,1.757,2338,1.638,2339,1.948,2340,1.757,2341,1.638,2342,1.453,2343,3.603,2344,3.427,2345,1.948,2346,1.378,2347,2.206,2348,2.774,2349,1.638,2350,1.426,2351,1.948,2352,1.592,2353,1.948,2354,1.592,2355,3.395,2356,1.948,2357,3.395,2358,1.948,2359,1.235,2360,1.692,2361,1.378,2362,1.692,2365,4.513,2366,3.395,2367,1.482,2368,1.692,2369,1.948,4418,2.113,4419,2.113]],["component/115",[2,0.4]],["title/116-1",[2379,80.094]],["name/116-1",[]],["text/116-1",[]],["component/116-1",[]],["title/116-2",[112,35.963]],["name/116-2",[]],["text/116-2",[]],["component/116-2",[]],["title/116",[174,25.897,606,36.29]],["name/116",[1,1.532]],["text/116",[2,1.69,19,5.001,52,3.621,100,5.795,112,4.373,148,3.119,174,4.185,215,6.881,222,5.168,225,7.576,289,4.587,308,3.105,515,6.484,606,5.864,820,4.215,1104,4.73,1378,4.835]],["component/116",[2,0.4]],["title/117",[174,22.038,199,30.396,606,30.883]],["name/117",[1321,2.152]],["text/117",[]],["component/117",[2,0.4]],["title/118",[174,22.038,199,30.396,606,30.883]],["name/118",[1321,2.152]],["text/118",[]],["component/118",[2,0.4]],["title/119-1",[158,26.253,618,34.866,2318,50.723]],["name/119-1",[]],["text/119-1",[]],["component/119-1",[]],["title/119-2",[8,14.216,98,23.685,1323,29.403,1343,38.965]],["name/119-2",[]],["text/119-2",[]],["component/119-2",[]],["title/119-3",[16,20.032,96,29.194]],["name/119-3",[]],["text/119-3",[]],["component/119-3",[]],["title/119-4",[73,22.246,223,28.891]],["name/119-4",[]],["text/119-4",[]],["component/119-4",[]],["title/119-5",[73,22.246,820,28.595]],["name/119-5",[]],["text/119-5",[]],["component/119-5",[]],["title/119-6",[73,22.246,627,37.864]],["name/119-6",[]],["text/119-6",[]],["component/119-6",[]],["title/119",[174,22.038,215,33.451,606,30.883]],["name/119",[1343,2.204]],["text/119",[0,0.91,2,0.347,4,0.899,6,1.023,7,0.419,8,1.811,13,1.311,15,0.845,16,2.613,19,0.556,21,0.885,25,1.723,26,0.524,27,2.188,30,2.029,34,0.615,37,1.228,38,0.913,40,1.227,52,1.633,53,0.531,54,1.662,57,1.09,59,0.595,61,0.505,63,0.581,66,1.393,67,2.018,70,1.228,71,0.599,73,1.17,74,0.664,75,1.704,77,0.403,79,1.439,83,0.376,84,0.657,88,1.915,93,0.924,96,1.802,98,1.683,103,0.473,105,0.987,106,0.969,110,0.615,112,0.486,118,0.581,124,3.229,126,0.483,127,0.541,131,0.56,132,0.632,133,0.743,137,3.868,141,1.317,143,2.402,148,2.648,154,0.514,155,0.62,156,1.099,158,0.505,159,0.626,160,0.604,162,0.595,164,0.59,165,0.476,173,2.21,174,0.784,175,1.712,177,0.703,178,1.065,192,0.764,194,0.518,200,0.703,205,0.464,206,1.642,209,1.837,210,1.688,212,1.318,215,4.223,218,2.826,219,0.842,222,1.351,223,3.308,229,1.284,231,1.124,234,1.368,244,1.274,248,0.913,250,1.253,257,0.541,271,0.524,275,0.793,276,1.099,281,1.387,286,0.62,288,0.599,289,0.644,292,0.59,297,0.473,298,1.342,299,1.357,301,0.545,308,0.806,311,0.4,312,0.862,314,1.509,319,2.573,326,0.4,346,0.975,367,0.963,382,0.541,407,2.037,428,1.974,436,0.754,438,3.415,448,0.65,454,0.604,473,2.177,478,0.824,480,3.396,489,0.977,492,0.568,493,1.439,494,1.373,505,0.664,518,0.599,519,1.958,525,1.05,535,0.664,539,0.599,543,0.722,553,1.894,554,0.615,565,1.544,575,0.65,592,0.581,603,0.56,618,0.671,627,0.62,636,0.862,661,1.974,665,0.754,696,0.754,732,0.671,740,0.595,750,0.585,802,0.494,820,1.208,846,0.534,858,0.793,878,0.842,935,2.472,938,0.732,940,1.943,968,0.824,981,0.455,1082,0.581,1103,0.65,1104,0.664,1119,1.074,1229,2.28,1241,1.599,1253,2.646,1254,2.089,1256,0.885,1262,0.743,1264,1.861,1265,0.657,1283,0.824,1294,0.766,1296,0.808,1313,0.977,1314,3.611,1316,0.754,1333,0.977,1339,0.679,1343,3.67,1354,0.732,1378,2.18,1383,0.885,1390,1.082,1397,0.842,1398,0.91,1408,2.318,1409,0.91,1416,3.849,1427,2.545,1435,0.695,1438,1.255,1449,2.35,1451,0.754,1454,0.824,1466,0.766,1488,0.842,1501,0.599,1516,0.664,1576,0.842,1579,1.203,1624,1.599,1640,0.754,1652,1.269,1680,0.862,1760,1.836,1828,0.91,1840,0.91,1985,0.754,2009,0.977,2045,0.766,2053,0.842,2058,0.743,2071,0.779,2076,0.885,2083,1.215,2102,0.862,2132,2.593,2133,1.439,2140,1.785,2158,0.824,2294,0.722,2337,0.977,2342,0.808,2378,0.703,2416,1.083,2417,1.083,2418,1.083,2419,1.083,2420,1.083,2421,2.791,2422,2.791,2423,1.083,2424,1.083,2425,1.083,2426,1.083,2427,1.083,2428,0.977,2429,1.083,2430,1.083,2431,1.083,2432,1.083,2433,1.083,2434,2.001,2435,1.083,2436,1.083,2437,1.083,2438,1.083,2439,1.083,2440,5.505,2441,3.476,2442,5.442,2443,4.077,2444,1.083,2445,2.001,2446,0.977,2447,1.022,2448,1.083,2449,1.083,2450,0.793,2451,1.022,2452,1.083,2453,1.083,2454,2.001,2455,1.083,2456,1.083,2457,1.083,2458,1.083,2459,1.083,2460,1.083,2461,2.17,2462,1.083,2463,2.001,2464,1.635,2465,2.222,2466,6.232,2467,1.739,2468,1.083,2469,2.001,2470,1.083,2471,2.001,2472,2.791,2473,2.001,2474,1.083,2475,1.083,2476,2.001,2477,0.91,2478,1.083,2479,1.083,2480,1.083,2481,1.083,2482,0.842,2483,1.083,2484,1.083,2485,1.083,2486,1.083,2487,1.083,2488,1.083,2489,2.001,2490,1.083,2491,2.001,2492,1.083,2493,1.083,2494,1.083,2495,1.083,2496,1.083,2497,0.885,2498,1.083,2499,1.523,2500,0.862,2501,1.465,2502,0.91,2503,0.977,2504,0.862,2505,1.805,2506,1.805,2507,2.001,2508,3.476,2509,2.001,2510,2.001,2511,1.083,2512,2.001,2513,2.001,2514,1.805,2515,2.001,2516,2.001,2517,2.001,2518,1.083,2519,1.083,2520,1.683,2521,2.001,2522,2.001,2523,2.001,2524,1.805,2525,1.594,2526,1.083,2527,1.083,2528,2.001,2529,3.476,2530,1.083,2531,2.001,2532,2.001,2533,1.083,2534,1.594,2535,1.083,2536,1.083,2537,1.083,2538,1.083,2539,0.977,2540,0.754,2541,0.842,2542,2.001,2543,1.083,2544,1.083,2545,1.083,2546,1.083,4420,1.175]],["component/119",[2,0.4]],["title/120",[174,22.038,216,32.222,606,30.883]],["name/120",[1543,2.026]],["text/120",[]],["component/120",[2,0.4]],["title/121-1",[8,14.216,98,23.685,312,21.071,1323,29.403]],["name/121-1",[]],["text/121-1",[]],["component/121-1",[]],["title/121-2",[73,22.246,223,28.891]],["name/121-2",[]],["text/121-2",[]],["component/121-2",[]],["title/121-3",[73,22.246,820,28.595]],["name/121-3",[]],["text/121-3",[]],["component/121-3",[]],["title/121-4",[73,22.246,627,37.864]],["name/121-4",[]],["text/121-4",[]],["component/121-4",[]],["title/121",[112,25.245,174,22.038,606,30.883]],["name/121",[312,1.192]],["text/121",[2,0.711,4,1.496,5,0.706,6,1.742,7,0.517,8,1.931,13,1.793,14,0.593,15,1.73,16,2.015,19,1.245,20,0.828,25,1.246,26,1.984,27,1.765,28,0.739,30,1.416,34,0.758,36,1.029,38,1.521,41,0.667,44,0.599,45,1.761,52,1.565,53,0.654,54,2.545,57,1.816,59,1.332,61,0.623,66,0.93,67,3.015,68,1.416,73,2.355,75,0.654,77,0.497,79,1.004,88,2.5,89,0.916,95,1.941,96,2.352,98,1.613,103,0.584,105,1.196,106,1.613,107,1.504,109,0.879,112,0.599,116,0.96,124,2.246,126,2.123,130,0.826,131,1.254,137,3.941,141,2.193,147,0.828,148,1.658,158,0.623,159,0.772,160,1.354,162,0.733,163,1.016,164,2.233,165,0.587,168,1.153,171,2.066,173,2.316,175,2.044,177,0.868,185,1.153,191,0.752,192,1.816,194,0.638,200,0.868,205,1.039,209,1.761,210,1.697,212,0.631,218,0.686,223,2.906,228,0.802,229,0.896,231,1.65,248,0.609,250,1.496,254,0.879,271,0.646,281,0.533,289,2.438,291,0.903,292,0.728,297,1.792,298,1.972,299,1.3,301,0.672,308,1.342,310,1.107,311,1.514,312,1.044,315,1.735,319,2.289,320,0.62,382,1.212,407,2.048,438,3.648,446,1.504,454,1.861,467,2.441,469,0.716,473,1.428,474,0.739,480,1.322,487,0.733,492,0.7,518,1.845,519,1.366,522,0.868,525,0.7,527,0.7,553,2.9,565,0.593,566,1.091,573,0.857,575,1.457,584,0.752,585,0.868,588,1.504,592,1.788,594,1.212,603,1.723,604,1.39,606,1.332,627,2.725,692,0.819,732,0.828,740,0.733,742,2.513,795,0.828,820,2.708,823,0.945,843,1.038,846,1.196,851,0.857,913,0.772,935,0.716,938,0.903,940,0.93,947,0.787,948,1.809,981,1.722,1041,0.89,1113,0.945,1119,0.716,1134,2.536,1221,0.728,1226,1.39,1249,2.124,1254,2.463,1258,2.044,1264,0.89,1265,2.886,1283,1.016,1314,1.761,1316,1.689,1341,1.038,1342,0.916,1346,1.091,1356,1.416,1405,0.837,1408,0.89,1413,0.663,1416,3.277,1423,0.903,1449,0.903,1451,0.93,1466,0.945,1473,2.514,1490,0.752,1516,0.819,1540,2.397,1549,1.038,1559,1.664,1569,0.7,1578,0.977,1579,0.802,1583,1.038,1624,0.765,1660,1.038,1760,1.596,1779,1.091,1790,1.038,1997,1.063,1998,0.903,2004,0.945,2051,1.64,2058,0.916,2083,2.488,2140,2.105,2205,1.982,2294,1.617,2335,1.038,2409,1.123,2461,1.038,2464,1.982,2465,1.063,2477,1.123,2482,1.038,2497,1.091,2499,1.846,2500,1.063,2501,0.977,2502,1.123,2503,1.205,2504,1.063,2505,1.205,2534,4.634,2539,1.205,2540,1.689,2541,2.592,2547,1.205,2548,1.063,2549,1.335,2550,1.335,2551,1.205,2552,1.123,2553,1.26,2554,1.16,2555,1.205,2556,2.107,2557,1.982,2558,1.205,2559,3.869,2560,1.335,2561,1.335,2562,1.335,2563,1.335,2564,1.982,2565,1.26,2566,2.425,2567,1.205,2568,2.188,2569,2.188,2570,3.006,2571,1.931,2572,1.16,2573,1.123,2574,1.335,2575,1.335,2576,1.063,2577,2.188,2578,2.188,2579,1.846,2580,1.205,2581,1.205,2582,2.107,2583,1.205,2584,2.895,2585,1.205,2586,1.123,2587,1.335,2588,1.205,2589,1.205,2590,1.091,2591,1.205,2592,1.335,2593,1.205,2594,1.335,2595,1.335,2596,1.335,2597,1.335,2598,1.335,2599,1.205,2600,1.26,2601,1.205,2602,1.335,2603,1.16,2604,1.335,2605,1.205,2606,1.335,2607,1.335,2608,1.335,2609,1.335,2610,1.335,2611,1.335]],["component/121",[2,0.4]],["title/122",[8,16.335,148,22.742,314,30.396]],["name/122",[8,0.465,314,0.866]],["text/122",[2,1.466,8,1.804,9,3.103,20,3.851,48,3.145,57,4.604,75,3.044,77,3.577,83,3.332,92,3.809,95,2.535,111,4.727,137,2.038,148,4.5,154,4.016,165,3.714,173,2.701,178,3.306,192,2.372,198,3.695,210,2.571,220,3.167,244,2.834,247,4.199,250,2.788,258,3.211,286,3.559,298,2.987,314,6.015,527,3.257,543,4.141,614,5.222,740,3.411,850,4.546,950,5.222,1205,3.986,1420,4.28,1449,5.713,1778,4.199,2045,4.393,2053,4.83,2152,5.222,2291,4.568,2672,8.45]],["component/122",[2,0.4]],["title/123-1",[63,23.237,205,18.558,206,20.464,1626,28.145,2673,34.492]],["name/123-1",[]],["text/123-1",[]],["component/123-1",[]],["title/123-2",[63,35.444,228,39.701]],["name/123-2",[]],["text/123-2",[]],["component/123-2",[]],["title/123-3",[229,24.407,820,28.595]],["name/123-3",[]],["text/123-3",[]],["component/123-3",[]],["title/123-4",[16,24.284]],["name/123-4",[]],["text/123-4",[]],["component/123-4",[]],["title/123-5",[73,22.246,223,28.891]],["name/123-5",[]],["text/123-5",[]],["component/123-5",[]],["title/123-6",[73,22.246,820,28.595]],["name/123-6",[]],["text/123-6",[]],["component/123-6",[]],["title/123",[2,6.113,63,18.898,83,12.22,96,15.565,323,24.529,1626,22.89,2352,28.785]],["name/123",[63,0.859,1626,1.041]],["text/123",[2,0.926,3,0.743,4,1.172,5,0.405,6,1.139,7,0.797,8,1.368,10,1.938,11,0.498,13,1.776,14,0.34,15,1.988,16,1.854,17,0.605,19,0.743,20,0.475,25,1.883,26,1.263,27,2.028,28,0.424,30,0.845,34,0.435,36,1.107,38,0.94,39,0.783,40,1.566,41,0.383,45,1.088,46,0.525,48,1.575,52,1.226,53,0.375,54,1.248,56,0.435,57,1.122,58,0.795,59,1.434,61,1.452,63,3.403,67,2.896,68,0.447,71,0.802,73,1.796,74,0.47,75,1.009,76,0.511,77,0.285,79,0.853,83,0.266,87,0.421,88,1.869,89,0.525,93,0.354,95,1.624,96,1.926,98,0.997,99,0.525,102,0.823,105,1.287,106,1.263,107,1.404,109,0.504,111,0.583,112,0.925,119,0.31,123,0.475,124,1.88,126,1.388,130,0.493,131,1.065,132,0.447,137,3.818,140,0.46,141,1.718,142,1.339,143,0.451,147,0.898,148,1.609,154,0.364,155,0.83,157,0.61,158,0.962,159,1.509,161,1.79,162,0.795,163,0.583,164,1.122,165,0.636,168,0.688,171,0.898,173,1.731,174,1.219,175,0.47,185,1.24,191,0.431,192,1.665,198,0.456,205,1.332,206,1.233,207,0.657,210,1.805,212,0.362,217,0.511,218,0.393,222,0.371,223,2.867,224,0.48,228,0.46,229,1.149,230,0.414,231,1.252,234,1.009,243,1.024,244,0.35,248,0.661,249,0.385,250,1.6,254,0.953,258,1.843,267,0.644,271,0.701,276,0.421,281,2.343,288,1.445,289,0.861,291,0.518,297,1.141,298,3.051,299,1.701,301,1.036,308,0.829,310,0.661,311,1.47,312,0.624,314,0.414,319,0.428,320,0.356,326,1.86,327,0.583,346,1.271,367,1.256,382,1.304,407,1.988,438,2.864,446,0.898,454,1.15,458,0.861,467,1.596,469,1.105,474,0.424,480,0.789,487,1.131,492,0.402,495,1.987,496,2.862,502,0.451,505,0.47,518,2.203,519,1.47,522,0.498,527,0.402,536,1.08,540,0.428,541,0.583,553,2.375,558,0.492,565,0.34,566,0.626,573,0.492,575,0.87,584,1.16,585,0.498,588,1.968,592,0.777,594,1.029,603,1.843,604,0.439,606,1.434,623,0.48,627,0.83,628,0.542,634,2.837,641,0.754,656,0.879,677,0.596,679,0.533,696,1.434,712,0.431,731,0.447,732,1.619,742,1.088,756,0.583,770,0.428,771,0.525,773,1.25,795,0.898,820,2.745,823,1.024,832,0.583,833,0.953,843,0.596,846,0.714,851,0.492,868,0.583,882,0.511,908,0.475,913,1.798,935,1.4,947,0.451,948,0.571,981,0.865,1041,0.511,1079,0.626,1113,0.542,1119,0.411,1134,0.583,1160,0.561,1184,0.583,1221,1.122,1229,0.626,1241,0.83,1249,1.947,1254,2.391,1258,1.263,1264,0.511,1265,2.163,1280,0.705,1287,1.18,1299,0.627,1307,0.447,1314,1.883,1315,1.065,1316,1.817,1331,0.626,1354,0.518,1373,1.024,1387,1.17,1390,0.414,1392,0.551,1395,0.443,1405,1.291,1406,0.61,1408,4.506,1413,0.719,1416,0.815,1420,1.322,1423,2.69,1427,4.947,1437,0.492,1451,0.533,1461,0.83,1468,0.408,1473,2.441,1474,0.551,1490,0.815,1494,0.626,1498,0.61,1501,0.802,1516,1.263,1527,0.542,1528,0.465,1540,1.481,1549,1.126,1559,1.79,1569,0.402,1574,0.511,1578,1.06,1579,0.87,1626,0.498,1637,0.533,1660,0.596,1670,0.533,1727,0.492,1729,0.486,1760,0.504,1779,0.626,1784,0.691,1790,0.596,1801,0.542,1872,0.626,1985,1.008,1998,0.518,2051,0.518,2064,1.153,2081,0.48,2082,0.644,2140,0.393,2194,0.665,2205,1.183,2253,0.61,2272,0.596,2288,2.833,2291,0.414,2294,3.557,2335,0.596,2342,0.571,2359,0.486,2378,1.338,2406,0.533,2409,1.218,2450,0.561,2461,0.596,2464,1.183,2465,0.61,2477,0.644,2482,0.596,2497,1.683,2524,3.589,2525,0.61,2534,2.078,2540,1.008,2541,0.596,2548,0.61,2554,0.665,2555,0.691,2556,1.258,2557,0.626,2558,0.691,2564,1.183,2567,0.691,2568,0.691,2569,0.691,2570,1.306,2572,0.665,2573,0.644,2577,0.691,2578,0.691,2579,1.987,2580,2.355,2581,0.691,2582,2.267,2583,1.306,2584,2.701,2585,1.306,2586,1.218,2588,0.691,2589,0.691,2590,1.683,2591,0.691,2605,1.306,2652,1.367,2655,0.626,2656,0.665,2658,0.723,2659,0.723,2660,0.723,2661,0.723,2662,0.723,2663,0.723,2666,0.723,2673,4.248,2674,5.034,2675,1.448,2676,4.71,2677,1.448,2678,0.766,2679,0.766,2680,1.448,2681,3.589,2682,0.691,2683,2.059,2684,1.306,2685,0.551,2686,2.805,2687,0.626,2688,1.448,2689,2.61,2690,1.448,2691,2.61,2692,0.766,2693,0.766,2694,0.766,2695,0.766,2696,0.766,2697,0.766,2698,1.448,2699,0.766,2700,0.766,2701,0.766,2702,1.448,2703,1.448,2704,1.448,2705,1.448,2706,1.448,2707,0.766,2708,0.766,2709,0.766,2710,2.61,2711,1.448,2712,0.723,2713,0.723,2714,0.665,2715,0.596,2716,0.766,2717,0.766,2718,0.766,2719,0.644,2720,0.766,2721,0.766,2727,0.766,2728,0.766,2729,1.448,2730,0.691,2731,1.448,4421,4.73,4422,0.831]],["component/123",[2,0.4]],["title/124-1",[16,17.047,130,19.142,1249,20.519]],["name/124-1",[]],["text/124-1",[]],["component/124-1",[]],["title/124-2",[1299,34.666]],["name/124-2",[]],["text/124-2",[]],["component/124-2",[]],["title/124",[1521,48.371,1522,50.288]],["name/124",[1521,1.173,1522,1.219]],["text/124",[7,2.402,16,2.562,17,2.596,25,2.322,40,4.222,67,2.467,73,2.091,75,3.044,77,2.313,130,2.877,142,3.639,226,2.674,229,2.294,257,3.103,281,2.478,308,2.5,310,2.834,311,3.122,312,2.674,326,2.294,594,3.103,770,3.468,786,3.468,871,3.559,1226,3.559,1280,4.116,1299,2.688,1315,4.369,1413,4.195,1417,4.604,1420,3.145,1521,6.186,1522,7.311,1541,5.027,1808,3.527,2140,4.339,2141,3.659,2291,3.357,2304,5.602,2305,5.602,2643,4.718,2744,3.591,2959,7.623,2960,3.809,2961,3.809,2962,3.809,2963,3.731,2964,3.809,2965,3.695]],["component/124",[2,0.4]],["title/125-1",[1417,30.636,1468,29.934,2966,50.723]],["name/125-1",[]],["text/125-1",[]],["component/125-1",[]],["title/125-2",[16,17.047,130,19.142,1249,20.519]],["name/125-2",[]],["text/125-2",[]],["component/125-2",[]],["title/125-3",[1299,34.666]],["name/125-3",[]],["text/125-3",[]],["component/125-3",[]],["title/125-4",[107,29.827,172,33.691]],["name/125-4",[]],["text/125-4",[]],["component/125-4",[]],["title/125",[38,22.335,165,21.508,992,29.112,1722,27.556]],["name/125",[165,1.216]],["text/125",[4,1.103,5,1.298,6,1.969,7,2.956,8,1.204,10,3.073,13,2.881,16,1.256,17,1.027,25,0.919,26,1.189,33,2.333,36,2.279,37,4.322,38,4.315,40,2.362,48,3.195,54,1.175,59,1.349,66,1.711,67,0.976,73,3.095,74,1.507,77,0.915,96,1.086,110,1.396,119,3.596,124,1.958,130,1.411,137,1.36,141,2.727,142,2.314,143,3.717,149,1.197,155,1.408,162,2.276,165,4.62,166,2.206,172,1.253,190,1.491,214,5.028,223,1.074,226,1.784,229,1.531,231,0.989,234,1.204,248,2.453,257,1.228,272,1.638,281,1.653,285,1.328,291,1.661,297,1.074,308,1.668,310,1.121,311,1.531,312,1.058,326,2.331,367,1.182,432,1.168,438,1.871,469,1.318,481,1.328,497,1.421,506,1.711,558,1.577,561,1.87,565,1.091,590,1.685,594,1.228,641,1.279,642,1.911,656,3.262,679,3.741,731,2.418,749,1.661,770,4.54,786,1.372,802,1.121,825,3.801,857,3.154,871,1.408,913,2.396,992,3.754,1170,5.306,1186,2.066,1226,1.408,1249,1.512,1252,1.738,1280,2.018,1299,1.793,1307,3.136,1314,1.298,1315,2.778,1339,1.541,1378,1.541,1387,1.396,1390,2.905,1395,2.396,1413,3.132,1417,2.928,1420,2.098,1457,1.911,1468,1.308,1473,1.507,1479,3.154,1480,2.216,1541,2.465,1722,3.553,1873,4.09,1927,1.833,2031,1.541,2140,2.759,2141,1.448,2291,1.328,2349,2.066,2359,2.628,2361,2.931,2500,3.299,2525,1.956,2643,3.523,2685,4.538,2744,1.421,2951,2.066,2960,1.507,2961,1.507,2962,1.507,2963,1.476,2964,1.507,2965,1.462,2966,3.738,2967,5.373,2968,2.457,2969,2.457,2970,6.309,2971,5.373,2972,1.87,2973,8.315,2974,1.911,2975,4.143,2976,4.143,2977,2.216,2978,2.066,2979,2.457,2980,2.007,2981,2.457,2982,2.457,2983,2.457]],["component/125",[2,0.4]],["title/126-1",[69,32.969,79,17.935,789,23.792,992,25.77,2347,28.145]],["name/126-1",[]],["text/126-1",[]],["component/126-1",[]],["title/126-2",[16,17.047,130,19.142,1249,20.519]],["name/126-2",[]],["text/126-2",[]],["component/126-2",[]],["title/126-3",[43,48.623]],["name/126-3",[]],["text/126-3",[]],["component/126-3",[]],["title/126-4",[1299,34.666]],["name/126-4",[]],["text/126-4",[]],["component/126-4",[]],["title/126-5",[2343,53.413]],["name/126-5",[]],["text/126-5",[]],["component/126-5",[]],["title/126-6",[107,29.827,172,33.691]],["name/126-6",[]],["text/126-6",[]],["component/126-6",[]],["title/126",[1526,63.781]],["name/126",[69,2.106]],["text/126",[6,1.982,7,2.093,8,1.957,9,1.7,10,3.74,16,1.64,17,1.422,25,1.272,36,1.443,37,3.319,38,2.47,40,2.961,43,4.09,50,2.004,51,1.723,53,1.667,54,1.626,67,2.149,69,5.128,73,2.268,77,1.267,79,1.408,87,1.868,95,1.389,128,4.614,130,2.294,137,2.93,142,3.306,149,1.657,154,2.571,174,2.121,178,1.811,185,1.616,226,2.33,229,1.256,244,3.825,248,2.47,250,1.527,257,1.7,258,1.759,276,2.972,281,2.159,292,1.853,308,1.369,310,1.552,311,1.999,312,1.465,325,2.044,326,1.256,473,1.457,588,3.041,594,1.7,645,2.3,770,3.021,786,1.899,789,1.868,792,2.21,802,1.552,871,1.949,992,2.024,1119,2.902,1181,2.21,1226,1.949,1249,2.459,1251,2.406,1280,2.635,1288,2.065,1299,1.472,1310,2.183,1315,4.334,1356,1.985,1375,2.238,1387,1.932,1395,1.967,1413,3.345,1417,4.863,1420,2.74,1473,2.087,1490,1.915,1526,2.708,1541,3.219,1569,1.784,1639,2.49,1729,2.157,1931,2.333,2140,2.778,2141,2.004,2291,4.531,2343,2.268,2344,4.273,2347,2.21,2359,2.157,2643,3.021,2744,1.967,2782,2.708,2960,2.087,2961,2.087,2962,2.087,2963,2.044,2964,2.087,2965,2.024,2984,6.927,2985,5.41,2986,3.068,2987,4.308,2988,4.881,2989,6.457,2990,3.068,2991,7.107,2992,2.86,2993,2.708,2994,2.86,2995,3.068,2996,2.589,2997,3.068,2998,5.505,2999,2.708,3000,3.068,3001,3.068]],["component/126",[2,0.4]],["title/127-1",[25,21.028,107,25.382,172,28.671]],["name/127-1",[]],["text/127-1",[]],["component/127-1",[]],["title/127",[25,21.028,1172,34.131,1654,42.794]],["name/127",[]],["text/127",[2,1.227,4,1.644,6,2.59,8,2.324,19,1.88,20,2.271,22,2.59,25,4.06,26,3.421,27,2.469,30,2.137,31,3.518,39,1.979,40,4.696,43,2.223,44,1.644,53,3.465,67,2.278,71,2.028,72,2.157,73,2.38,81,2.35,83,2.452,93,2.647,95,1.495,98,3.872,99,2.511,105,1.806,106,1.772,131,1.893,194,2.742,200,2.379,201,2.476,209,1.935,233,2.59,256,2.442,271,1.772,285,1.979,288,2.028,293,2.992,296,2.681,302,2.322,326,2.611,367,1.761,432,1.74,474,2.028,481,1.979,497,2.117,533,3.824,539,2.028,550,2.35,553,1.995,565,1.626,573,2.35,603,1.893,690,2.223,731,2.137,742,1.935,754,2.59,765,2.2,778,2.916,851,2.35,902,6.141,906,2.41,1110,3.947,1172,4.856,1173,3.933,1282,2.511,1299,1.585,1314,1.935,1468,3.763,1474,2.634,1501,2.028,1569,1.921,1597,3.303,1609,3.303,1637,2.55,1654,7.011,1689,2.59,1727,2.35,1880,4.822,2130,2.681,2173,2.681,2296,2.787,2346,6.811,2382,2.35,2520,4.822,2613,2.731,3004,2.992,3005,2.916,3006,3.303,3007,5.734,3008,7.068,3009,3.456,3010,3.456,3011,5.173,3012,3.303,3013,2.379,3014,3.661,3015,2.916,3016,3.303,3017,3.661,3018,3.079,3019,7.068,3020,3.661,3021,3.303,3022,3.661,3023,3.661]],["component/127",[2,0.4]],["title/128-1",[16,17.047,130,19.142,1249,20.519]],["name/128-1",[]],["text/128-1",[]],["component/128-1",[]],["title/128-2",[1299,34.666]],["name/128-2",[]],["text/128-2",[]],["component/128-2",[]],["title/128",[199,35.719,1172,40.108]],["name/128",[199,0.866,1172,0.972]],["text/128",[7,2.417,16,1.894,17,2.611,25,2.336,40,4.235,67,2.481,73,2.103,77,2.327,88,2.934,119,2.527,130,2.888,142,3.653,199,5.209,226,2.69,229,2.308,257,3.122,281,2.492,308,2.515,310,2.851,311,3.134,312,2.69,326,2.308,594,3.122,786,3.488,871,3.58,1172,5.849,1226,3.58,1280,4.132,1299,3.672,1315,4.982,1413,3.101,1417,4.623,1420,3.164,1541,5.048,2140,4.356,2141,3.681,2291,4.587,2643,4.737,2744,3.612,2960,3.832,2961,3.832,2962,3.832,2963,3.754,2964,3.832,2965,3.716,3002,6.247,3003,6.247]],["component/128",[2,0.4]],["title/129-1",[992,47.653]],["name/129-1",[]],["text/129-1",[]],["component/129-1",[]],["title/129-2",[16,17.047,130,19.142,1249,20.519]],["name/129-2",[]],["text/129-2",[]],["component/129-2",[]],["title/129-3",[3013,52.045]],["name/129-3",[]],["text/129-3",[]],["component/129-3",[]],["title/129-4",[25,21.028,107,25.382,172,28.671]],["name/129-4",[]],["text/129-4",[]],["component/129-4",[]],["title/129-5",[13,24.916,749,26.482]],["name/129-5",[]],["text/129-5",[]],["component/129-5",[]],["title/129",[1173,54.939]],["name/129",[1173,1.898]],["text/129",[1,1.99,2,0.762,4,1.614,6,0.965,7,1.7,8,2.13,12,1.23,13,1.355,17,1.101,19,1.845,25,1.643,26,0.708,28,1.459,33,0.824,34,3.21,36,0.621,38,0.668,40,2.705,41,0.731,44,1.183,47,0.976,48,1.334,51,0.741,52,1.237,53,0.717,57,0.797,61,1.23,67,2.911,72,0.862,73,1.479,77,0.545,83,0.508,88,1.237,92,0.898,93,1.216,98,1.275,107,1.189,110,0.831,113,1.583,118,0.785,119,0.592,123,0.907,128,0.879,130,0.897,137,1.855,142,1.548,148,0.592,149,2.14,154,1.252,168,0.695,170,0.768,172,0.746,183,1.652,203,0.976,205,1.129,206,1.698,211,1.004,223,2.217,226,1.548,229,0.973,231,1.447,246,0.804,248,0.668,271,0.708,281,2.255,284,0.898,288,2.433,299,0.571,308,1.061,309,1.004,310,0.668,311,1.328,312,0.63,326,2.436,346,0.713,438,1.984,451,1.32,454,0.817,469,3.747,473,0.627,481,1.424,492,0.768,497,3.268,525,1.382,540,0.817,550,0.939,551,1.835,553,0.797,565,3.102,588,0.661,592,0.785,594,0.731,627,3.239,641,1.872,656,0.888,658,0.871,659,1.138,688,0.928,689,0.963,712,4.601,740,0.804,746,1.138,749,2.032,764,1.004,770,1.471,807,1.004,819,2.971,820,2.664,830,1.052,846,0.722,851,0.939,866,3.242,872,2.377,906,1.734,913,0.846,923,1.23,926,0.951,948,1.092,965,1.929,966,0.976,981,2.13,1082,2.357,1091,2.042,1104,0.898,1110,0.817,1116,1.052,1154,1.035,1172,4.637,1173,5.761,1226,0.839,1249,1.603,1252,3.998,1280,1.283,1286,1.23,1287,1.51,1296,1.092,1298,1.071,1307,2.564,1311,1.052,1314,1.392,1315,1.362,1356,0.854,1373,1.035,1375,0.963,1387,3.21,1390,1.424,1395,0.846,1413,2.181,1414,1.671,1416,3.466,1449,1.781,1463,3.712,1468,2.339,1490,2.024,1494,1.196,1501,0.81,1502,1.23,1506,1.019,1528,0.888,1531,1.196,1561,1.004,1584,1.196,1612,1.271,1631,1.23,1637,1.019,1683,0.963,1689,1.035,1701,2.098,1707,1.895,1722,2.856,1733,1.271,1788,1.165,1891,1.165,1903,4.591,1940,1.781,2028,2.335,2031,2.254,2075,1.114,2088,1.138,2135,1.929,2139,1.23,2140,1.353,2146,2.098,2158,1.114,2273,1.196,2346,2.542,2361,1.035,2378,0.951,2382,0.939,2643,0.817,2719,1.23,2744,0.846,2972,1.114,2974,1.138,2984,1.32,3004,4.143,3005,1.165,3013,3.295,3024,2.377,3025,5.071,3026,5.071,3027,1.463,3028,2.635,3029,6.595,3030,5.651,3031,2.377,3032,1.463,3033,1.463,3034,1.463,3035,3.242,3036,3.594,3037,1.463,3038,2.635,3039,1.463,3040,1.463,3041,1.463,3042,2.795,3043,1.463,3044,1.463,3045,1.381,3046,2.635,3047,1.463,3048,1.463,3049,1.463,3050,1.463,3051,1.463,3052,2.377,3053,2.635,3054,1.32,3055,1.463,3056,1.463,3057,1.463,3058,1.463,3059,1.32,3060,1.463,3061,1.463,3062,1.463,3063,1.463,3064,1.463,3065,1.463,3066,1.463,3067,1.463,3068,1.463,3069,1.463,3070,1.463,3071,2.635,3072,3.382,3073,2.635,3074,1.463,3075,1.32,3076,0.951,3077,1.32,3078,0.928,3079,1.32,3080,1.757,3081,1.32,3082,1.32,3083,2.377,3084,3.059,3085,1.32,3086,2.377,3087,1.32,3088,2.377,3089,1.32,3090,1.32,3091,0.951,3092,1.32,3093,1.32,3094,1.32,3095,1.32,3096,2.892,3097,1.32,3098,1.32,3099,1.32,3100,1.32,3101,1.32,3102,1.019,3103,1.463,3104,3.59,3105,1.463,3106,2.487,3107,1.463,3108,1.463,3109,1.463,3110,1.463,3111,1.463,3112,1.463,3113,1.463,3114,1.463,3115,1.463,3116,1.463]],["component/129",[2,0.4]],["title/130-1",[16,17.047,130,19.142,1249,20.519]],["name/130-1",[]],["text/130-1",[]],["component/130-1",[]],["title/130",[3117,80.094]],["name/130",[3118,2.767]],["text/130",[]],["component/130",[2,0.4]],["title/131",[3119,67.357]],["name/131",[3119,2.327]],["text/131",[]],["component/131",[2,0.4]],["title/132",[1529,54.939]],["name/132",[1529,1.898]],["text/132",[]],["component/132",[2,0.4]],["title/133-1",[16,17.047,130,19.142,1249,20.519]],["name/133-1",[]],["text/133-1",[]],["component/133-1",[]],["title/133-2",[1299,34.666]],["name/133-2",[]],["text/133-2",[]],["component/133-2",[]],["title/133-3",[13,24.916,749,26.482]],["name/133-3",[]],["text/133-3",[]],["component/133-3",[]],["title/133-4",[73,22.246,326,24.407]],["name/133-4",[]],["text/133-4",[]],["component/133-4",[]],["title/133",[1470,60.964]],["name/133",[1255,1.958]],["text/133",[1,3.888,2,0.629,7,1.402,8,2.511,16,1.725,17,1.515,25,2.127,38,1.654,40,3.496,67,1.439,73,3.439,75,3.898,77,1.35,93,1.673,95,1.479,130,2.708,142,3.023,173,1.576,174,2.752,176,2.177,205,1.553,223,3.779,226,2.449,229,1.339,230,1.959,257,1.811,258,2.941,278,2.703,281,2.27,288,5.5,308,1.459,310,1.654,311,3.192,312,1.56,325,2.177,326,2.594,385,2.45,432,1.722,462,2.961,539,2.007,588,1.636,592,1.944,594,1.811,645,2.45,712,2.041,749,1.452,786,2.023,802,1.654,809,3.047,820,3.039,871,2.077,1110,2.023,1226,2.077,1255,4.024,1280,2.77,1287,2.077,1288,2.2,1298,2.653,1299,2.462,1308,2.416,1312,5.538,1315,4.113,1361,2.961,1384,4.091,1390,4.3,1395,4.599,1413,3.949,1414,2.298,1417,3.099,1420,1.835,1450,2.298,1452,2.758,1470,2.758,1541,3.384,1662,3.269,1873,5.344,2028,2.355,2031,4.403,2140,2.921,2141,2.135,2291,1.959,2294,3.793,2302,3.047,2303,3.269,2361,2.563,2534,2.886,2643,3.176,2744,2.096,2960,2.223,2961,2.223,2962,2.223,2963,2.177,2964,2.223,2965,2.156,3005,2.886,3076,2.355,3091,2.355,3096,2.385,3120,3.624,3121,6.334,3122,3.269,3123,4.648,3125,3.624,3126,3.624,3127,3.624]],["component/133",[2,0.4]],["title/134-1",[16,17.047,130,19.142,1249,20.519]],["name/134-1",[]],["text/134-1",[]],["component/134-1",[]],["title/134-2",[39,43.302]],["name/134-2",[]],["text/134-2",[]],["component/134-2",[]],["title/134-3",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/134-3",[]],["text/134-3",[]],["component/134-3",[]],["title/134-4",[13,24.916,805,42.931]],["name/134-4",[]],["text/134-4",[]],["component/134-4",[]],["title/134-5",[13,24.916,1759,49.288]],["name/134-5",[]],["text/134-5",[]],["component/134-5",[]],["title/134",[1478,58.64]],["name/134",[1478,2.026]],["text/134",[3,2.153,4,1.883,6,2.603,7,0.964,8,2.826,10,2.644,13,3.241,14,1.107,15,1.052,25,2.03,28,3.006,36,1.779,38,1.137,39,3.84,40,2.386,41,1.245,44,1.119,59,1.369,63,1.337,67,3.251,72,1.468,73,2.392,77,0.928,81,2.691,92,2.572,103,1.09,130,2.418,131,1.288,142,1.806,148,1.008,153,1.391,160,1.391,171,1.545,174,1.643,185,1.184,205,1.796,210,2.636,217,3.62,223,1.833,226,1.806,229,0.92,231,1.688,249,1.253,250,1.119,258,2.807,281,3.882,288,4.262,292,2.285,297,1.09,308,1.003,310,1.137,311,2.005,312,1.073,326,0.92,407,1.245,444,3.016,473,1.068,481,2.267,518,1.38,519,1.403,541,1.896,565,1.107,584,1.403,588,2.451,600,1.468,604,1.428,627,3.111,656,1.513,679,1.735,712,2.361,749,2.176,750,1.347,802,2.906,820,3.074,846,2.068,882,1.662,1145,6.292,1170,2.095,1181,3.527,1226,1.428,1249,0.909,1280,3.459,1312,2.92,1315,2.168,1336,1.824,1387,4.035,1395,3.682,1405,2.629,1406,1.984,1413,2.695,1416,2.361,1438,1.562,1461,1.428,1478,5.2,1490,3.057,1759,4.749,1760,1.64,1856,1.824,2224,2.248,2288,5.001,2299,2.248,2406,1.735,2685,1.792,2715,3.261,2858,3.526,3128,2.492,3129,2.492,3130,4.897,3131,6.366,3132,2.492,3133,2.492,3134,2.492,3135,2.248,3136,3.783,3137,2.248,3138,2.248,3139,2.248,3140,2.248,3141,2.248,3142,2.248,3143,2.248,3144,3.783,3145,3.783,3146,2.095,3147,2.248,3148,2.248,3149,3.783,3150,2.248,3151,1.938,3152,2.248,3153,2.248,3154,2.248,3155,2.248,3156,2.248,3157,9.5,3158,1.984,3159,2.492,3160,4.193,3161,2.492,3162,4.193,3163,2.492,3164,2.492,3165,2.492,3166,2.492,3167,2.492,3168,4.193,3169,2.492,3170,2.165,3171,2.492,3172,2.492,3173,2.492,3174,2.492,3175,2.492]],["component/134",[2,0.4]],["title/135-1",[1067,55.562,1172,40.108]],["name/135-1",[]],["text/135-1",[]],["component/135-1",[]],["title/135-2",[16,17.047,130,19.142,1249,20.519]],["name/135-2",[]],["text/135-2",[]],["component/135-2",[]],["title/135-3",[3013,52.045]],["name/135-3",[]],["text/135-3",[]],["component/135-3",[]],["title/135-4",[25,21.028,107,25.382,172,28.671]],["name/135-4",[]],["text/135-4",[]],["component/135-4",[]],["title/135-5",[13,24.916,749,26.482]],["name/135-5",[]],["text/135-5",[]],["component/135-5",[]],["title/135",[192,30.59]],["name/135",[3176,2.496]],["text/135",[2,1.071,4,1.341,6,1.785,7,1.155,8,1.415,14,3.163,15,1.261,25,3.147,26,1.445,36,2.067,37,1.832,38,1.363,40,3.13,41,1.492,44,1.341,51,2.468,52,1.403,61,1.394,67,3.116,73,2.988,77,1.112,83,1.036,92,1.832,98,2.358,99,2.048,103,1.306,126,1.334,130,1.659,142,2.657,149,1.455,171,1.852,192,2.357,206,1.411,226,2.657,228,1.794,229,1.103,248,1.363,250,1.341,281,1.944,288,2.698,308,1.202,310,1.363,311,2.28,312,1.286,326,3.278,346,1.455,438,3.214,443,1.711,447,2.378,474,3.417,497,2.817,536,2.228,540,1.668,565,2.741,575,1.794,588,1.348,603,1.544,627,4.495,656,2.958,712,2.744,744,2.148,749,1.197,764,2.048,770,2.721,820,3.395,906,1.965,907,2.511,935,1.602,981,3.295,1082,1.602,1091,1.696,1110,1.668,1127,2.378,1172,3.746,1173,3.342,1226,1.711,1249,1.09,1252,2.113,1280,2.373,1287,2.792,1315,1.544,1413,3.064,1414,3.09,1579,1.794,1631,2.511,1640,2.079,1716,2.511,1722,1.682,1760,3.206,1903,3.635,2028,4.626,2031,3.869,2071,2.148,2140,1.533,2146,3.88,2346,2.113,2361,2.113,2382,1.917,2520,4.097,2540,2.079,2573,2.511,2613,4.603,2643,2.721,2744,1.727,2865,2.273,2972,2.273,2987,3.88,3011,2.694,3013,3.166,3052,2.694,3072,1.992,3076,1.94,3077,2.694,3078,1.894,3079,2.694,3080,3.249,3081,2.694,3082,2.694,3083,4.395,3084,4.958,3085,2.694,3086,4.395,3087,2.694,3088,4.395,3089,2.694,3090,2.694,3091,1.94,3092,2.694,3093,2.694,3094,2.694,3095,2.694,3096,4.686,3097,2.694,3098,2.694,3099,2.694,3100,2.694,3101,2.694,3102,2.079,3176,2.694,3177,2.273,3178,2.694,3179,2.694,3180,2.694,3181,2.986,3182,2.694,3183,2.986,3184,2.986,3185,2.986,3186,2.511]],["component/135",[2,0.4]],["title/136-1",[16,17.047,130,19.142,1249,20.519]],["name/136-1",[]],["text/136-1",[]],["component/136-1",[]],["title/136-2",[1299,34.666]],["name/136-2",[]],["text/136-2",[]],["component/136-2",[]],["title/136",[1376,48.371,3187,52.612]],["name/136",[1376,1.173,3187,1.275]],["text/136",[7,2.334,16,1.829,17,2.522,25,2.256,40,4.159,67,2.396,73,2.031,77,2.247,130,2.82,142,4.074,226,2.597,229,2.228,257,3.014,281,2.407,308,2.429,310,2.753,311,3.06,312,2.597,326,3.06,438,3.74,594,3.014,786,3.368,871,3.457,1226,3.457,1280,4.035,1299,3.585,1315,4.283,1376,6.927,1413,4.113,1417,4.514,1420,3.055,1530,7.473,1541,4.928,2140,4.253,2141,3.554,2291,3.261,2406,5.768,2643,5.687,2744,3.488,2960,3.7,2961,3.7,2962,3.7,2963,3.625,2964,3.7,2965,3.589,2977,5.442,3187,7.534]],["component/136",[2,0.4]],["title/137-1",[6,17.93,44,21.971,67,19.437,100,29.112]],["name/137-1",[]],["text/137-1",[]],["component/137-1",[]],["title/137-2",[467,41.127]],["name/137-2",[]],["text/137-2",[]],["component/137-2",[]],["title/137",[]],["name/137",[1,1.532]],["text/137",[2,1.213,6,3.861,13,3.449,26,4.717,51,3.541,63,3.75,67,3.633,96,2.1,112,2.134,165,3.073,194,2.272,199,3.78,207,3.173,210,1.968,215,2.827,216,2.723,223,3.057,248,2.169,254,4.601,281,4.067,315,3.641,320,2.206,346,3.405,473,2.036,565,2.111,627,4.007,656,2.885,820,3.026,1173,4.795,1258,5.088,1259,4.201,1260,4.201,1295,5.321,1341,3.696,1342,3.26,1372,5.321,1376,5.118,1470,6.961,1473,4.289,1478,5.118,1521,5.118,1526,5.567,1529,4.795,1931,4.795,2350,5.118,2613,3.545,2893,3.996,2973,5.879,3119,5.879,3187,5.567,3188,6.991,3189,5.567,3190,6.991,3191,6.307,3193,6.991,3194,4.752,3195,6.991,3196,4.752]],["component/137",[2,0.4]],["title/138-1",[16,17.047,130,19.142,1249,20.519]],["name/138-1",[]],["text/138-1",[]],["component/138-1",[]],["title/138-2",[43,48.623]],["name/138-2",[]],["text/138-2",[]],["component/138-2",[]],["title/138-3",[2343,53.413]],["name/138-3",[]],["text/138-3",[]],["component/138-3",[]],["title/138-4",[1808,45.498]],["name/138-4",[]],["text/138-4",[]],["component/138-4",[]],["title/138-5",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/138-5",[]],["text/138-5",[]],["component/138-5",[]],["title/138",[1372,60.964]],["name/138",[3197,2.496]],["text/138",[6,2.087,7,1.404,8,2.513,9,1.051,10,2.774,13,3.619,14,2.126,15,1.532,16,2.284,17,0.879,24,1.29,25,0.787,36,0.892,38,1.657,40,2.503,43,2.906,45,1.112,48,1.065,50,1.239,51,1.065,53,1.779,54,1.006,61,0.982,66,1.465,67,1.442,73,0.708,76,1.403,77,0.783,79,0.871,95,2.869,113,1.264,128,3.422,130,1.939,136,2.159,137,2.473,142,3.243,149,1.768,154,2.707,156,1.155,159,1.216,160,1.175,162,1.155,168,1,171,1.304,173,1.579,174,1.423,175,1.29,178,1.12,185,2.275,205,0.901,210,0.871,223,1.587,226,0.906,229,0.777,231,0.847,244,3.633,250,0.944,254,1.384,258,1.088,271,1.757,281,1.91,288,2.651,292,1.146,301,1.058,308,1.927,309,5.46,310,0.96,311,1.768,312,0.906,319,2.027,326,2.104,382,3.212,432,3.054,444,1.513,448,1.264,469,1.128,473,0.901,561,1.601,565,0.934,588,3.4,603,2.475,606,1.993,627,2.08,689,2.388,712,1.185,752,2.527,765,5.004,770,3.18,792,1.367,802,2.185,815,1.216,820,0.91,935,3.055,1112,1.769,1114,3.386,1119,1.947,1172,2.906,1181,1.367,1226,1.205,1249,2.565,1251,1.488,1256,5.251,1280,1.768,1286,1.769,1287,1.205,1288,1.277,1300,6.795,1310,2.329,1315,2.945,1356,1.228,1372,3.643,1375,1.384,1386,1.569,1413,2.827,1417,4.104,1420,1.838,1447,1.769,1468,1.932,1471,1.403,1481,1.719,1490,1.185,1534,1.304,1569,1.904,1639,1.54,1729,1.334,1808,2.719,1845,3.15,1931,2.489,2135,2.657,2291,3.079,2343,1.403,2344,3.036,2359,3.036,2361,1.488,2406,2.527,2782,2.89,2822,1.675,2986,1.898,2987,2.89,2988,1.898,2989,4.789,2990,1.898,2991,5.597,2992,1.769,2993,1.675,2994,1.769,2995,1.898,2996,1.601,2997,1.898,2998,4.653,2999,1.675,3000,1.898,3001,1.898,3042,2.823,3197,1.898,3198,2.103,3199,2.103,3200,2.103,3201,3.629,3202,3.629,3203,2.103,3204,1.601,3205,4.787,3206,1.898,3207,1.898,3208,1.898,3209,7.028,3210,2.103,3211,3.629,3212,2.103,3213,1.769,3214,3.629,3215,2.103,3216,3.629,3217,2.103,3218,2.103]],["component/138",[2,0.4]],["title/139-1",[16,17.047,130,19.142,1249,20.519]],["name/139-1",[]],["text/139-1",[]],["component/139-1",[]],["title/139-2",[1299,34.666]],["name/139-2",[]],["text/139-2",[]],["component/139-2",[]],["title/139-3",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/139-3",[]],["text/139-3",[]],["component/139-3",[]],["title/139-4",[16,20.032,1249,24.113]],["name/139-4",[]],["text/139-4",[]],["component/139-4",[]],["title/139-5",[192,25.234,749,26.482]],["name/139-5",[]],["text/139-5",[]],["component/139-5",[]],["title/139-6",[73,22.246,326,24.407]],["name/139-6",[]],["text/139-6",[]],["component/139-6",[]],["title/139",[3189,63.781]],["name/139",[3189,2.204]],["text/139",[4,1.461,7,1.259,8,2.175,10,1.585,13,3.092,14,1.445,16,2.653,17,1.36,25,1.217,36,2.215,40,3.291,51,1.648,67,2.074,73,2.76,77,1.212,95,1.328,103,2.284,128,3.138,130,2.549,142,3.224,153,2.916,168,1.547,185,1.547,192,1.243,205,1.394,210,2.709,212,2.467,226,1.401,229,1.202,230,1.759,231,1.31,257,1.626,278,2.428,281,2.084,286,1.865,308,1.31,310,1.485,311,1.929,312,1.401,325,1.955,326,2.766,367,1.565,385,2.2,407,1.626,412,2.936,432,1.547,466,2.2,588,3.38,594,1.626,667,2.302,712,3.684,749,3.286,750,1.759,786,1.817,789,3.593,792,2.114,802,1.485,830,2.341,871,1.865,939,2.17,981,1.367,1110,1.817,1226,1.865,1249,2.387,1255,2.302,1280,2.544,1287,3.749,1288,1.975,1299,2.26,1307,1.899,1308,2.17,1310,2.089,1315,3.871,1361,5.345,1387,3.716,1395,1.882,1413,4.746,1414,2.064,1417,2.846,1420,1.648,1450,2.064,1452,2.477,1541,3.107,1931,4.487,2028,2.114,2031,4.102,2081,3.275,2140,2.682,2141,1.917,2291,1.759,2302,2.736,2303,2.936,2359,2.064,2367,3.975,2378,2.114,2643,2.916,2744,1.882,2960,1.996,2961,1.996,2962,1.996,2963,1.955,2964,1.996,2965,1.936,3072,2.17,3076,2.114,3078,5.833,3080,2.17,3091,2.114,3096,2.142,3121,7.896,3122,2.936,3123,6.699,3189,6.528,3219,2.936,3220,3.254,3221,2.827,3222,3.254,3223,3.254,3224,2.531,3225,3.254,3226,2.659,3227,2.477]],["component/139",[2,0.4]],["title/140-1",[16,17.047,130,19.142,1249,20.519]],["name/140-1",[]],["text/140-1",[]],["component/140-1",[]],["title/140-2",[63,35.444,1299,28.595]],["name/140-2",[]],["text/140-2",[]],["component/140-2",[]],["title/140-3",[1299,34.666]],["name/140-3",[]],["text/140-3",[]],["component/140-3",[]],["title/140-4",[63,35.444,64,52.612]],["name/140-4",[]],["text/140-4",[]],["component/140-4",[]],["title/140-5",[1299,34.666]],["name/140-5",[]],["text/140-5",[]],["component/140-5",[]],["title/140-6",[39,43.302]],["name/140-6",[]],["text/140-6",[]],["component/140-6",[]],["title/140-7",[63,35.444,65,47.525]],["name/140-7",[]],["text/140-7",[]],["component/140-7",[]],["title/140-8",[1299,34.666]],["name/140-8",[]],["text/140-8",[]],["component/140-8",[]],["title/140-9",[39,43.302]],["name/140-9",[]],["text/140-9",[]],["component/140-9",[]],["title/140-10",[67,26.244,565,29.349]],["name/140-10",[]],["text/140-10",[]],["component/140-10",[]],["title/140-11",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/140-11",[]],["text/140-11",[]],["component/140-11",[]],["title/140-12",[16,20.032,1249,24.113]],["name/140-12",[]],["text/140-12",[]],["component/140-12",[]],["title/140-13",[192,25.234,749,26.482]],["name/140-13",[]],["text/140-13",[]],["component/140-13",[]],["title/140-14",[1103,39.701,3228,46.739]],["name/140-14",[]],["text/140-14",[]],["component/140-14",[]],["title/140-15",[73,22.246,326,24.407]],["name/140-15",[]],["text/140-15",[]],["component/140-15",[]],["title/140-16",[8,19.195,3229,49.288]],["name/140-16",[]],["text/140-16",[]],["component/140-16",[]],["title/140-17",[231,32.25]],["name/140-17",[]],["text/140-17",[]],["component/140-17",[]],["title/140",[63,35.444,3230,66.069]],["name/140",[63,1.485]],["text/140",[3,0.518,6,0.687,7,1.016,8,1.989,10,1.279,13,3.266,14,1.717,16,1.328,17,1.098,24,1.611,25,1.228,28,0.559,33,1.479,37,1.611,38,1.499,39,2.369,40,2.629,49,2.208,51,1.957,56,0.573,59,1.03,63,4.499,64,1.493,65,1.348,67,2.09,72,1.105,73,2.463,77,0.978,88,0.474,96,2.14,103,0.82,108,0.803,125,0.991,126,0.451,130,1.791,142,3.15,148,0.408,149,0.491,168,0.479,174,2.062,183,3.299,185,1.837,192,0.716,205,1.407,206,0.886,210,2.006,217,2.922,223,3.1,226,1.664,229,1.213,231,1.556,244,2.73,245,3.005,257,1.312,258,2.505,280,0.91,281,3.346,288,4.051,300,1.326,301,1.652,308,1.057,310,1.199,311,1.943,312,1.131,326,1.943,367,0.485,382,0.504,407,0.937,438,2.375,446,1.628,448,0.606,518,1.038,539,0.559,565,0.448,588,4.021,594,1.312,603,0.522,604,1.074,618,0.626,641,0.525,679,0.703,689,0.664,712,2.728,749,2.26,750,1.42,786,1.466,805,1.218,819,3.812,820,2.096,830,1.348,833,0.664,846,1.62,871,1.505,913,0.583,939,0.673,963,2.615,981,0.424,1091,1.065,1103,2.911,1110,0.563,1162,0.692,1181,2.847,1226,1.505,1248,4.394,1249,1.41,1252,0.714,1253,0.768,1254,0.606,1262,0.692,1280,2.134,1287,2.776,1288,0.612,1299,1.896,1307,1.094,1308,0.673,1309,0.726,1311,0.726,1312,0.703,1315,2.915,1356,0.589,1387,1.865,1390,1.42,1392,2.362,1393,1.858,1395,0.583,1405,1.647,1408,6.281,1413,4.163,1414,0.64,1417,2.387,1420,1.33,1427,4.818,1438,1.176,1450,0.64,1456,0.824,1473,1.15,1490,2.728,1505,2.146,1541,2.607,1607,0.848,1682,0.803,1708,0.803,1722,0.568,1759,1.399,1856,1.372,2028,1.706,2031,1.647,2081,1.176,2140,2.487,2141,1.547,2288,5.247,2291,1.42,2378,0.656,2406,0.703,2643,3.675,2655,0.824,2681,5.086,2682,1.691,2685,1.348,2686,4.37,2715,2.554,2744,1.518,2822,1.493,2858,2.761,2960,1.611,2961,1.611,2962,1.611,2963,1.578,2964,1.611,2965,1.562,2987,2.091,3072,0.673,3076,1.218,3078,3.576,3080,0.673,3084,0.703,3091,0.656,3096,0.664,3102,0.703,3135,1.691,3136,2.962,3137,1.691,3138,1.691,3139,1.691,3140,1.691,3141,1.691,3142,1.691,3143,1.691,3144,2.962,3145,2.962,3146,1.577,3147,1.691,3148,1.691,3149,2.962,3150,1.691,3151,1.458,3152,1.691,3153,1.691,3154,1.691,3155,1.691,3156,1.691,3213,0.848,3224,0.785,3226,0.824,3227,0.768,3228,5.015,3231,2.281,3232,1.009,3239,1.009,3240,1.009,3241,0.876,3245,1.009,3246,1.009,3247,2.146,3248,1.009,3249,1.009,3250,1.009,3251,1.875,3252,1.009,3253,1.875,3254,1.875,3255,1.009,3256,1.009,3257,1.009,3258,1.009,3259,1.009,3260,1.875,3261,1.009,3262,1.009,3263,1.875,3264,0.753,3265,0.91,3266,0.848,3267,0.876,3268,0.848,3269,1.009,3270,1.009,3271,0.91,3272,1.009,3273,0.91,3274,1.009,3275,1.875,3276,0.91,3277,1.009,3278,1.009,3279,1.009,3280,1.009,3281,1.009,3282,1.009,3283,1.009,3284,1.009,3285,1.009,3286,1.009,3287,1.009,3293,1.009,3294,1.009,3295,1.009,3296,1.009,3297,1.009,3298,1.009,3299,1.875,3300,1.009,3301,1.009,3302,1.009,3303,1.009,3304,1.009,3305,1.009]],["component/140",[2,0.4]],["title/141-1",[16,17.047,130,19.142,1249,20.519]],["name/141-1",[]],["text/141-1",[]],["component/141-1",[]],["title/141-2",[1299,34.666]],["name/141-2",[]],["text/141-2",[]],["component/141-2",[]],["title/141-3",[16,20.032,1249,24.113]],["name/141-3",[]],["text/141-3",[]],["component/141-3",[]],["title/141-4",[36,28.028,867,42.408]],["name/141-4",[]],["text/141-4",[]],["component/141-4",[]],["title/141-5",[707,46.739,3306,66.069]],["name/141-5",[]],["text/141-5",[]],["component/141-5",[]],["title/141-6",[876,50.288,3307,53.988]],["name/141-6",[]],["text/141-6",[]],["component/141-6",[]],["title/141-7",[13,24.916,749,26.482]],["name/141-7",[]],["text/141-7",[]],["component/141-7",[]],["title/141-8",[73,22.246,326,24.407]],["name/141-8",[]],["text/141-8",[]],["component/141-8",[]],["title/141-9",[13,16.335,231,17.441,846,21.366,1259,26.028,1260,26.028]],["name/141-9",[]],["text/141-9",[]],["component/141-9",[]],["title/141-10",[8,19.195,3229,49.288]],["name/141-10",[]],["text/141-10",[]],["component/141-10",[]],["title/141-11",[107,22.09,172,24.952,1259,29.403,1260,29.403]],["name/141-11",[]],["text/141-11",[]],["component/141-11",[]],["title/141",[1259,39.701,1260,39.701]],["name/141",[2381,2.152]],["text/141",[2,0.563,4,1.715,6,0.364,7,0.384,8,1.813,10,0.484,13,1.964,14,0.821,15,0.78,16,1.579,17,1.356,18,1.33,19,1.331,25,2.631,26,1.57,27,0.428,28,0.55,31,0.61,33,1.826,36,1.376,38,0.454,40,2.289,41,0.924,48,1.312,50,1.089,52,0.467,53,2.349,55,0.692,56,1.05,61,0.464,66,0.692,67,1.721,68,0.58,70,1.99,71,1.024,72,1.089,73,1.88,77,0.37,83,0.641,84,0.607,87,1.015,88,0.868,95,0.406,96,0.817,102,0.564,103,0.434,106,1.57,110,0.564,112,1.164,113,1.111,119,0.402,128,0.597,130,2.395,142,2.687,149,0.9,158,0.464,166,0.529,168,0.472,173,0.804,185,0.878,192,0.379,205,2.054,206,0.469,207,0.451,210,1.073,214,0.654,218,0.949,223,1.418,225,0.773,226,0.796,227,0.692,229,0.957,230,0.999,231,0.744,235,0.889,244,1.744,246,0.546,249,0.93,250,0.446,257,0.497,258,0.514,266,0.756,268,0.812,275,0.727,281,2.898,284,1.134,286,0.569,291,1.25,293,0.812,295,5.113,297,0.434,298,0.478,299,0.388,301,0.5,308,1.043,310,0.454,311,0.957,312,0.428,319,1.032,324,0.616,325,1.111,326,2.599,346,1.86,367,0.478,376,0.836,432,0.878,438,1.17,443,0.569,446,1.607,458,0.591,466,0.672,467,0.949,469,2.794,477,1.172,481,1.401,497,1.876,503,2.423,511,0.715,527,0.521,552,0.791,558,0.638,562,0.791,563,0.727,565,0.821,570,0.896,576,2.107,578,3.042,584,0.56,585,0.646,594,0.924,598,2.193,600,1.089,604,0.569,618,1.146,627,1.059,645,3.522,651,0.727,654,1.233,656,0.603,667,0.703,688,2.057,707,4.804,712,1.826,731,1.079,739,0.654,749,0.741,750,1.401,751,1.438,752,3.017,765,1.111,786,0.555,789,1.015,794,0.812,798,2.179,802,1.744,807,1.268,815,0.575,819,1.25,820,1.404,833,2.134,846,1.884,847,3.573,851,0.638,852,1.268,857,1.407,858,1.897,865,0.672,867,5.15,871,0.569,876,0.756,878,2.971,894,0.654,908,0.616,934,0.646,939,0.663,951,0.756,961,0.836,967,0.756,981,0.776,1039,1.554,1082,0.533,1083,0.756,1091,0.564,1110,0.555,1119,0.533,1158,3.042,1174,0.672,1197,0.703,1205,0.638,1224,0.773,1226,0.569,1249,2.928,1250,0.773,1251,2.294,1254,1.111,1258,0.61,1259,4.228,1260,3.922,1261,2.727,1280,1.262,1287,1.859,1288,0.603,1298,1.897,1299,1.122,1307,1.893,1308,0.663,1309,0.715,1310,1.186,1311,0.715,1314,1.369,1315,1.677,1328,2.419,1337,0.773,1341,0.773,1342,0.682,1354,0.672,1356,0.58,1375,0.654,1384,0.715,1387,2.723,1390,0.999,1393,1.833,1413,2.943,1414,0.63,1416,0.56,1417,1.412,1420,1.312,1437,0.638,1450,1.172,1463,1.353,1471,0.663,1473,1.59,1492,1.554,1495,0.682,1499,0.663,1501,0.55,1512,0.863,1516,0.61,1528,2.319,1541,1.1,1551,0.791,1561,0.682,1579,0.597,1601,0.727,1617,0.836,1627,0.703,1641,0.791,1652,0.63,1689,0.703,1690,0.896,1716,0.836,1722,2.44,1727,1.186,1783,1.554,1845,2.514,1853,2.796,1865,2.583,1878,1.51,1883,1.554,1940,0.672,2028,2.107,2031,1.625,2048,0.646,2073,0.812,2077,0.741,2129,0.741,2130,0.727,2140,1.665,2141,0.585,2259,0.896,2291,0.999,2325,0.812,2341,3.212,2359,0.63,2378,0.646,2381,2.971,2390,4.525,2394,1.745,2405,1.745,2411,0.938,2428,0.896,2499,0.756,2500,0.791,2504,0.791,2525,1.472,2576,0.791,2643,2.908,2719,3.212,2744,0.575,2791,4.699,2893,0.836,2960,0.61,2961,0.61,2962,0.61,2963,0.597,2964,0.61,2965,0.591,2974,1.438,3015,0.791,3018,0.836,3054,0.896,3072,0.663,3076,0.646,3078,3.542,3080,0.663,3084,0.692,3091,0.646,3096,0.654,3102,0.692,3104,1.51,3179,0.896,3186,1.554,3213,1.554,3224,0.773,3244,0.863,3264,0.741,3307,2.65,3308,1.848,3309,1.848,3310,0.994,3311,0.994,3312,0.994,3313,0.994,3314,2.591,3315,0.994,3316,1.848,3317,1.848,3318,1.848,3319,1.848,3320,1.848,3321,0.994,3322,0.994,3323,0.994,3324,0.994,3325,2.117,3326,1.848,3327,1.606,3328,0.994,3329,1.848,3330,0.994,3331,0.994,3332,0.994,3333,0.994,3334,3.82,3335,0.994,3336,1.848,3337,0.994,3338,1.848,3339,0.994,3340,0.994,3341,1.848,3342,0.994,3345,0.994,3346,0.994,3347,0.863,3348,0.994,3349,0.994,3350,0.994,3351,0.836,3352,1.668,3353,0.896,3354,0.994,3355,0.994,3356,0.863,3357,0.994,3358,0.994,3359,0.994,3360,0.994,3361,0.994,3362,0.994,3367,0.994,3368,0.994,3370,0.994,3371,0.994,3373,1.848,3374,1.848,3375,1.848,3376,1.848,3377,0.994,3378,0.994,3382,0.994,3383,0.863,3384,0.994,3385,0.994,3411,0.994,3412,1.848,3413,0.994,3414,0.896,3415,0.994,3416,0.994,3417,0.994,3418,0.994,4423,1.078,4424,2.005,4425,1.078,4426,1.078,4427,1.078]],["component/141",[2,0.4]],["title/142-1",[16,17.047,130,19.142,1249,20.519]],["name/142-1",[]],["text/142-1",[]],["component/142-1",[]],["title/142-2",[1299,34.666]],["name/142-2",[]],["text/142-2",[]],["component/142-2",[]],["title/142",[6,17.93,207,22.212,346,23.833,3191,44.145]],["name/142",[6,0.587,346,0.78]],["text/142",[6,3.596,7,2.506,16,1.964,17,2.708,25,2.422,40,4.314,67,2.573,73,2.181,77,2.412,130,2.96,142,3.744,226,2.789,229,2.393,257,3.237,281,2.584,308,2.608,310,2.957,311,3.212,312,2.789,326,2.393,346,4.78,594,3.237,786,3.617,871,3.712,1226,3.712,1280,4.235,1299,3.763,1315,4.496,1413,3.216,1417,4.737,1420,3.28,1541,5.173,2140,4.464,2141,3.816,2291,3.502,2643,4.855,2744,3.746,2960,3.974,2961,3.974,2962,3.974,2963,3.892,2964,3.974,2965,3.854]],["component/142",[2,0.4]],["title/143-1",[16,17.047,130,19.142,1249,20.519]],["name/143-1",[]],["text/143-1",[]],["component/143-1",[]],["title/143-2",[1299,34.666]],["name/143-2",[]],["text/143-2",[]],["component/143-2",[]],["title/143-3",[16,17.047,130,19.142,1249,20.519]],["name/143-3",[]],["text/143-3",[]],["component/143-3",[]],["title/143-4",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/143-4",[]],["text/143-4",[]],["component/143-4",[]],["title/143-5",[16,20.032,1249,24.113]],["name/143-5",[]],["text/143-5",[]],["component/143-5",[]],["title/143-6",[192,25.234,749,26.482]],["name/143-6",[]],["text/143-6",[]],["component/143-6",[]],["title/143",[2,9.757,1295,42.794,1299,24.334]],["name/143",[2,0.48]],["text/143",[2,1.521,6,2.402,7,1.686,8,1.905,10,2.123,13,2.972,16,3.427,17,1.822,25,2.452,40,3.853,67,2.604,70,5.377,73,1.468,77,1.623,96,1.926,130,2.984,142,3.393,164,2.375,210,2.714,222,2.11,223,1.906,226,2.823,229,1.61,231,1.755,257,2.178,281,2.616,308,1.755,310,1.99,311,2.911,312,1.877,326,2.422,367,2.097,438,2.96,533,2.907,565,1.936,594,2.178,603,2.254,627,2.498,739,2.869,749,3.513,750,2.356,786,2.434,820,1.886,871,2.498,981,1.831,1226,2.498,1249,3.739,1258,2.674,1280,3.193,1295,4.99,1299,2.837,1315,3.39,1390,2.356,1413,3.255,1417,3.572,1420,2.208,1541,3.9,2140,3.366,2141,2.568,2291,2.356,2643,4.894,2744,2.521,2960,2.674,2961,2.674,2962,2.674,2963,2.619,2964,2.674,2965,2.593,2996,3.318,3042,6.129,3231,3.787,3419,4.359,3420,4.359,3421,4.359,3422,4.359,3423,4.359,3424,4.359,3425,4.359]],["component/143",[2,0.4]],["title/144-1",[16,17.047,130,19.142,1249,20.519]],["name/144-1",[]],["text/144-1",[]],["component/144-1",[]],["title/144-2",[1808,45.498]],["name/144-2",[]],["text/144-2",[]],["component/144-2",[]],["title/144-3",[16,20.032,1249,24.113]],["name/144-3",[]],["text/144-3",[]],["component/144-3",[]],["title/144-4",[13,24.916,749,26.482]],["name/144-4",[]],["text/144-4",[]],["component/144-4",[]],["title/144-5",[73,22.246,326,24.407]],["name/144-5",[]],["text/144-5",[]],["component/144-5",[]],["title/144-6",[8,19.195,3229,49.288]],["name/144-6",[]],["text/144-6",[]],["component/144-6",[]],["title/144",[220,33.691,2350,48.371]],["name/144",[2350,2.026]],["text/144",[2,0.484,6,1.022,7,1.782,8,2.197,10,1.358,13,3.522,14,2.046,16,2.293,17,1.166,25,2.828,26,1.35,36,1.183,38,4.6,40,3.324,41,1.394,44,1.252,50,1.643,51,2.333,61,1.302,67,2.713,73,1.551,76,1.86,77,1.039,87,1.532,95,1.138,102,1.584,104,1.942,112,1.252,115,2.279,124,2.176,126,2.057,130,1.568,136,2.74,138,1.659,142,1.983,154,2.189,162,1.532,173,2.004,185,2.189,205,1.195,210,1.155,226,1.983,229,1.03,231,1.854,235,2.216,244,1.273,248,1.273,276,1.532,281,1.838,308,1.123,310,1.273,311,2.524,312,1.201,320,1.295,326,1.701,382,1.394,432,1.325,473,1.973,474,2.55,561,2.123,565,1.239,587,2.042,588,2.079,603,1.442,627,1.598,641,1.452,712,3.847,731,2.688,749,1.846,750,2.49,770,3.285,786,1.557,789,1.532,802,1.273,939,1.86,981,1.171,1082,1.496,1110,2.572,1162,1.913,1226,1.598,1249,2.972,1250,2.169,1254,1.676,1280,2.243,1287,3.915,1288,1.693,1307,2.688,1308,1.86,1309,2.006,1310,1.79,1314,1.474,1315,3.042,1342,1.913,1356,1.628,1366,1.749,1393,4.162,1413,4.043,1414,1.769,1416,1.57,1417,3.722,1420,1.412,1534,1.729,1569,1.463,1727,1.79,1738,2.042,1808,3.88,1814,2.345,1931,1.913,1944,2.516,1945,2.516,2028,3.823,2031,3.689,2083,1.693,2157,2.516,2291,1.508,2324,1.913,2347,2.993,2350,5.961,2359,4.796,2361,1.973,2576,2.221,2782,2.221,2792,2.345,2989,3.873,2998,2.279,3072,1.86,3076,1.812,3078,5.923,3080,1.86,3084,1.942,3091,1.812,3096,1.835,3102,1.942,3104,3.763,3206,2.516,3207,2.516,3208,2.516,3224,2.169,3264,2.08,3426,2.789,3427,2.789,3428,2.516,3429,5.883,3430,2.789,3431,2.789,3432,2.516,3433,2.789,3434,2.789,3435,2.789,3436,2.789,3437,2.789,3438,2.789,3439,2.516]],["component/144",[2,0.4]],["title/145-1",[124,31.214,955,52.612]],["name/145-1",[]],["text/145-1",[]],["component/145-1",[]],["title/145-2",[67,26.244,1282,45.318]],["name/145-2",[]],["text/145-2",[]],["component/145-2",[]],["title/145-3",[25,18.301,183,30.683,934,31.796,2096,41.15]],["name/145-3",[]],["text/145-3",[]],["component/145-3",[]],["title/145-4",[16,13.133,185,20.586,382,21.646,588,19.554,2286,33.69]],["name/145-4",[]],["text/145-4",[]],["component/145-4",[]],["title/145-5",[15,33.811]],["name/145-5",[]],["text/145-5",[]],["component/145-5",[]],["title/145-6",[16,17.047,130,19.142,1249,20.519]],["name/145-6",[]],["text/145-6",[]],["component/145-6",[]],["title/145-7",[1299,34.666]],["name/145-7",[]],["text/145-7",[]],["component/145-7",[]],["title/145-8",[641,41.713]],["name/145-8",[]],["text/145-8",[]],["component/145-8",[]],["title/145-9",[980,53.413]],["name/145-9",[]],["text/145-9",[]],["component/145-9",[]],["title/145-10",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/145-10",[]],["text/145-10",[]],["component/145-10",[]],["title/145-11",[192,25.234,749,26.482]],["name/145-11",[]],["text/145-11",[]],["component/145-11",[]],["title/145-12",[1103,39.701,3228,46.739]],["name/145-12",[]],["text/145-12",[]],["component/145-12",[]],["title/145-13",[73,22.246,326,24.407]],["name/145-13",[]],["text/145-13",[]],["component/145-13",[]],["title/145-14",[36,20.758,742,25.858,2135,35.824,3608,44.145]],["name/145-14",[]],["text/145-14",[]],["component/145-14",[]],["title/145-15",[315,34.408,3247,53.988]],["name/145-15",[]],["text/145-15",[]],["component/145-15",[]],["title/145-16",[315,29.281,319,31.395,1416,31.663]],["name/145-16",[]],["text/145-16",[]],["component/145-16",[]],["title/145-17",[319,36.893,653,52.612]],["name/145-17",[]],["text/145-17",[]],["component/145-17",[]],["title/145-18",[319,27.324,1416,27.556,1528,29.705,3609,44.145]],["name/145-18",[]],["text/145-18",[]],["component/145-18",[]],["title/145-19",[319,31.063,487,19.349,1416,19.838,3610,31.78,3611,31.78,3612,31.78]],["name/145-19",[]],["text/145-19",[]],["component/145-19",[]],["title/145-20",[319,24.187,326,16.001,1416,24.393,3613,39.077,3614,43.314]],["name/145-20",[]],["text/145-20",[]],["component/145-20",[]],["title/145-21",[691,37.244,1416,27.556,2499,37.244,3615,44.145]],["name/145-21",[]],["text/145-21",[]],["component/145-21",[]],["title/145-22",[127,24.453,320,22.717,771,33.563,3444,39.985]],["name/145-22",[]],["text/145-22",[]],["component/145-22",[]],["title/145-23",[438,25.382,1373,39.774,3444,45.943]],["name/145-23",[]],["text/145-23",[]],["component/145-23",[]],["title/145-24",[8,19.195,3229,49.288]],["name/145-24",[]],["text/145-24",[]],["component/145-24",[]],["title/145-25",[1221,43.644]],["name/145-25",[]],["text/145-25",[]],["component/145-25",[]],["title/145",[315,34.408,3441,57.399]],["name/145",[315,1.441]],["text/145",[1,0.382,2,0.496,3,0.122,4,0.998,5,0.478,6,0.332,7,1.105,8,1.673,9,0.234,10,0.116,13,1.693,14,1.201,15,0.866,16,1.226,17,2.086,18,0.944,19,2.609,24,0.287,25,1.866,26,0.82,27,0.479,28,0.834,30,0.528,32,0.312,33,0.739,34,1.447,36,0.87,38,1.303,40,0.662,41,1.11,44,0.406,45,0.126,48,1.125,50,0.655,52,0.522,53,0.23,54,0.114,55,0.326,56,0.514,57,0.923,58,0.131,59,0.93,60,0.394,61,0.703,67,1.193,68,0.139,70,1.465,71,1.038,72,0.407,73,1.885,74,0.424,75,0.443,77,0.089,78,0.175,79,0.194,81,0.153,84,0.154,88,0.22,90,0.567,93,0.695,94,0.19,95,0.282,96,2.474,98,0.227,100,0.279,101,0.19,102,0.392,103,0.574,105,0.548,106,0.227,107,0.592,108,0.19,110,0.266,112,0.589,113,0.415,114,0.195,118,0.128,119,0.45,120,0.304,123,0.29,124,0.886,125,0.478,126,0.586,127,2.19,130,0.447,131,0.357,137,3.542,142,0.39,147,0.29,148,0.609,149,1.73,154,0.528,156,0.131,158,0.111,162,0.611,163,0.181,164,0.13,165,0.206,166,0.249,167,0.6,168,0.891,170,1.575,172,0.567,173,0.204,174,1.177,178,1.52,183,0.567,184,0.143,185,1.495,190,0.284,191,0.848,192,1.976,194,0.532,198,0.279,199,0.129,201,0.467,205,0.476,206,0.221,207,0.505,209,0.126,210,1.12,212,1.277,214,0.157,215,0.411,217,0.46,218,0.241,220,1.379,221,0.308,222,0.227,223,1.249,224,0.294,226,0.808,228,0.544,229,1.109,230,0.129,231,0.606,233,0.169,234,0.443,235,1.83,246,0.131,248,0.413,249,0.943,250,0.499,255,0.138,256,0.159,257,0.234,258,1.149,260,0.195,271,0.438,275,0.175,277,0.195,281,2.498,284,0.287,286,0.268,288,2.24,289,0.411,290,0.178,291,0.161,292,0.13,297,0.205,298,0.225,299,0.512,301,0.66,308,0.895,309,0.621,310,0.109,311,0.693,312,0.103,315,3.772,319,4.347,320,1.823,322,0.185,323,0.166,324,1.05,326,2.263,334,0.178,346,0.336,354,0.201,363,0.181,367,0.225,382,0.452,399,0.169,407,0.452,428,0.169,431,0.157,432,1.866,433,0.175,438,2.027,441,0.555,443,0.396,444,0.172,445,0.164,446,0.428,448,0.544,454,0.262,458,0.781,467,0.241,469,1.451,473,0.879,474,0.132,476,0.55,477,0.832,480,0.376,481,0.373,482,0.151,485,0.215,487,2.347,492,0.125,497,1.474,498,0.178,502,0.276,503,0.297,505,0.287,510,0.433,511,0.172,515,0.201,518,0.834,520,0.172,522,0.155,525,0.362,533,0.159,534,0.178,539,0.259,540,0.505,544,0.428,553,0.715,554,0.745,557,0.331,558,0.301,562,0.373,565,0.911,572,1.782,575,0.143,576,0.304,584,0.389,588,1.718,592,0.37,594,0.452,596,0.407,597,0.662,599,0.215,603,0.679,604,0.637,605,0.181,607,0.301,611,0.201,616,0.885,618,0.29,623,0.15,625,0.175,627,0.519,637,0.181,638,1.424,641,0.36,642,0.185,645,0.612,649,0.19,650,0.343,652,0.675,653,0.55,654,0.312,656,0.675,658,0.279,660,0.172,664,0.364,669,0.166,675,2.992,677,0.704,679,0.774,684,0.185,688,0.151,689,0.454,690,0.145,691,2.058,692,0.146,696,0.481,702,0.623,703,1.184,706,0.623,712,1.85,717,0.774,723,0.207,732,0.29,739,1.115,740,0.131,741,0.185,742,1.807,744,0.172,749,0.679,750,0.373,765,0.668,770,0.505,771,2.436,773,0.284,774,0.394,785,0.944,786,1.047,789,2.285,792,0.155,800,0.185,801,0.525,802,0.413,805,0.155,806,0.207,807,0.164,819,0.467,820,0.203,823,0.331,824,0.215,825,0.169,827,0.331,833,0.991,843,0.185,846,0.118,849,0.181,851,0.153,852,0.763,858,0.505,862,0.423,865,0.317,871,0.137,873,0.505,876,0.181,878,1.171,882,0.159,884,0.423,894,1.462,895,0.161,901,0.201,906,0.157,913,1.186,923,0.201,926,0.304,931,0.178,932,0.343,934,0.449,935,0.251,937,0.383,938,1.931,939,1.368,944,0.651,947,0.773,948,1.399,951,0.689,953,0.394,963,0.885,965,0.175,980,0.312,981,1.321,988,0.407,992,0.411,993,2.19,994,0.407,995,1.184,997,0.423,1000,0.865,1005,0.215,1006,0.343,1011,0.201,1018,0.195,1021,0.689,1038,0.201,1039,0.201,1042,0.19,1059,0.195,1082,0.597,1091,1.165,1101,0.178,1103,1.335,1104,0.146,1110,0.621,1113,0.169,1114,0.169,1116,0.497,1119,0.251,1120,0.488,1127,0.19,1130,0.515,1132,0.207,1134,0.525,1141,0.394,1143,0.215,1145,1.24,1151,0.55,1154,0.331,1160,0.175,1166,0.423,1178,0.215,1181,0.449,1186,0.394,1189,0.215,1194,0.423,1197,0.169,1205,0.153,1226,0.137,1229,0.195,1248,0.301,1249,0.871,1250,0.185,1251,0.928,1253,0.689,1254,1.974,1259,0.281,1260,0.143,1264,0.46,1265,0.675,1280,0.228,1283,0.525,1285,0.201,1287,0.752,1288,0.419,1294,0.169,1296,0.178,1298,0.961,1299,0.733,1307,2.428,1308,0.46,1309,0.172,1311,1.349,1312,2.381,1314,0.248,1315,0.97,1322,0.157,1323,0.668,1328,1.658,1334,0.704,1336,0.175,1346,2.453,1354,0.161,1356,0.879,1366,1.176,1373,0.488,1375,0.157,1378,1.286,1384,0.337,1385,0.383,1386,1.263,1387,0.745,1390,0.129,1391,0.394,1392,0.8,1393,0.488,1395,1.285,1402,0.407,1405,1.062,1408,0.742,1411,0.207,1413,1.698,1414,0.297,1416,1.523,1417,0.376,1420,0.121,1428,0.909,1429,0.488,1435,0.153,1437,0.153,1438,0.15,1444,0.178,1445,0.662,1448,0.185,1449,1.614,1450,0.955,1452,2.285,1456,0.195,1457,0.185,1461,0.137,1462,0.364,1468,0.592,1471,0.159,1473,0.424,1481,0.909,1490,1.345,1495,0.474,1497,0.207,1499,0.742,1501,0.616,1505,0.383,1506,0.326,1518,0.215,1519,0.423,1527,0.169,1528,1.028,1531,0.195,1540,0.8,1541,0.279,1555,0.201,1556,0.181,1561,0.321,1565,0.343,1569,0.475,1573,0.742,1574,0.603,1582,0.215,1594,0.19,1595,0.201,1601,0.175,1605,0.215,1606,0.195,1617,0.201,1623,0.159,1624,0.137,1635,0.423,1637,0.166,1639,0.175,1640,0.166,1650,0.215,1652,0.438,1653,0.215,1660,0.185,1661,0.215,1670,0.326,1673,1.104,1677,0.159,1683,0.732,1689,0.169,1701,1.045,1702,0.761,1707,0.172,1717,0.373,1722,0.954,1734,0.195,1759,1.124,1763,0.225,1771,0.64,1774,0.215,1787,0.207,1788,0.55,1790,0.185,1801,0.331,1827,0.581,1831,0.207,1845,0.308,1880,0.581,1891,0.19,1909,0.164,1938,0.157,1940,1.387,1966,0.207,1974,0.364,1979,1.239,1983,0.816,1994,0.215,1996,0.6,1997,0.19,2028,0.723,2031,0.567,2045,0.169,2047,0.207,2048,0.853,2059,0.201,2071,0.172,2075,0.689,2081,0.294,2088,0.364,2129,0.178,2130,0.343,2132,0.349,2135,0.175,2138,0.181,2140,0.773,2141,0.14,2147,0.19,2154,2.017,2158,0.357,2173,0.343,2177,0.215,2179,0.373,2220,0.935,2237,0.423,2272,0.364,2273,0.195,2288,1.219,2291,0.253,2296,0.689,2307,0.185,2329,0.195,2342,0.178,2347,0.155,2348,0.195,2349,0.201,2350,0.814,2363,0.423,2368,0.207,2374,0.207,2375,1.104,2378,0.449,2382,0.301,2401,0.394,2406,0.481,2442,0.19,2446,0.623,2461,0.364,2465,0.19,2467,0.407,2482,0.364,2499,0.689,2501,0.175,2502,0.581,2506,0.623,2514,0.215,2557,0.383,2576,0.19,2579,0.525,2593,0.623,2599,0.623,2601,0.623,2613,0.178,2615,0.373,2641,0.966,2643,0.621,2656,0.207,2673,0.373,2685,0.651,2687,0.383,2714,0.207,2715,0.364,2733,0.215,2742,0.343,2744,0.271,2756,0.623,2777,0.394,2807,0.394,2818,0.394,2859,0.215,2865,0.357,2869,0.195,2885,0.865,2917,0.215,2959,0.623,2960,0.146,2961,0.146,2962,0.146,2963,0.143,2964,0.146,2965,0.142,2972,0.181,2974,0.185,2978,0.201,2980,0.383,2992,0.201,3015,0.19,3031,0.215,3059,0.423,3072,0.159,3075,0.215,3076,0.304,3078,0.151,3080,0.159,3084,0.166,3091,0.155,3096,0.157,3102,0.166,3123,0.909,3130,0.423,3151,0.537,3158,0.55,3170,0.407,3177,0.181,3178,0.215,3204,0.181,3221,1.308,3226,0.739,3227,0.181,3228,1.451,3241,0.207,3247,0.195,3264,0.178,3307,0.383,3325,0.383,3327,0.407,3347,2.971,3351,0.394,3352,0.423,3356,0.207,3383,0.207,3392,0.225,3408,0.623,3409,0.72,3428,0.215,3432,0.423,3439,0.215,3441,0.407,3442,0.6,3443,1.77,3444,2.453,3445,0.225,3447,0.442,3448,0.225,3449,0.442,3450,0.225,3451,0.225,3453,0.442,3454,0.225,3455,0.225,3456,0.442,3457,0.225,3458,0.442,3459,0.407,3460,0.225,3461,0.225,3462,0.225,3463,0.442,3464,0.652,3465,0.225,3466,0.652,3467,0.652,3468,1.599,3469,1.05,3470,0.442,3471,0.442,3472,1.471,3473,0.652,3474,0.225,3477,0.215,3478,0.225,3479,0.442,3480,1.05,3481,1.05,3482,1.05,3483,0.442,3484,0.442,3485,0.442,3486,0.225,3487,0.442,3488,0.442,3489,0.442,3490,0.442,3491,0.442,3492,0.442,3493,0.442,3494,0.652,3495,0.442,3496,0.225,3497,0.225,3498,0.225,3499,1.05,3500,1.05,3501,1.05,3502,0.652,3503,0.652,3504,0.652,3505,1.239,3506,0.652,3507,0.442,3508,0.442,3509,0.225,3510,0.442,3511,0.225,3512,0.652,3513,0.423,3514,0.207,3515,0.225,3516,0.225,3517,0.225,3518,0.225,3519,0.225,3520,0.225,3521,0.225,3522,0.225,3523,0.225,3524,0.225,3525,0.966,3526,1.14,3527,2.405,3528,0.423,3529,0.423,3530,0.623,3531,0.225,3532,0.225,3533,0.225,3534,0.225,3535,0.225,3536,0.225,3537,0.215,3538,0.225,3539,0.225,3540,0.225,3541,0.225,3542,0.225,3543,0.225,3544,0.225,3545,0.225,3546,0.225,3547,0.652,3548,0.225,3549,0.225,3550,1.05,3551,4.033,3552,0.225,3553,1.239,3554,0.225,3555,0.225,3556,0.225,3557,0.225,3558,0.225,3559,0.854,3560,0.225,3561,1.05,3562,0.652,3563,0.442,3564,0.225,3565,0.225,3566,1.239,3567,0.225,3568,1.05,3569,2.005,3570,0.225,3571,0.225,3572,0.442,3573,0.225,3574,0.442,3575,0.652,3576,0.225,3577,0.225,3578,0.442,3579,0.225,3580,0.225,3581,0.225,3582,0.225,3583,0.225,3584,0.225,3585,0.225,3586,0.225,3587,0.225,3588,0.225,3589,0.225,3590,0.225,3591,0.225,3592,0.225,3593,0.225,3594,0.225,3595,0.442,3596,0.225,3597,0.225,3598,0.225,3599,0.225,3600,0.225,3601,0.225,3602,0.225,3603,0.225,3604,0.225,3605,0.225,3606,0.225,3607,0.225,3608,0.423,3609,0.423,3610,1.528,3611,0.423,3612,0.423,3613,0.215,3615,0.215,3616,0.238,3617,0.238,3618,0.238,3619,0.238,3620,0.468,3621,0.238,3622,0.238,3623,0.238,3624,0.468,3625,0.238,3626,2.222,3627,0.238,3628,1.112,3629,0.238,3630,1.112,3631,0.238,3632,0.69,3633,0.238,3634,0.69,3635,0.623,3636,0.238,3637,0.238,3638,0.238,3639,0.238,3640,0.238,3641,0.238,3642,0.238,3643,0.238,3644,0.468,3645,0.238,3646,0.238,3647,0.238,3648,0.652,3649,0.238,3650,0.238,3651,0.238,3652,0.238,3653,0.225,3654,0.238,3655,0.238,3657,0.238,3658,0.238,3659,0.238,3660,0.238,3661,0.238,3662,0.468,3663,1.599,3664,1.112,3665,0.238,3666,0.238,3667,0.238,3668,0.468,3669,0.238,3670,0.238,3671,0.238,3672,0.215,3673,0.69,3674,0.238,3675,0.468,3676,0.225,3677,0.238,3678,0.468,3679,0.69,3680,0.905,3681,0.238,3682,0.238,3683,0.238,3684,0.468,3685,0.238,3686,0.238,3687,0.238,3688,0.238,3689,0.238,3690,0.215,3691,0.238,3692,0.238,3693,0.238,3694,1.003,3695,0.238,3696,0.238,3697,0.238,3698,0.215,3699,0.238,3700,0.238,3701,0.238,3702,0.468,3703,0.468,3704,0.468,3705,0.816,3706,0.238,3707,0.468,3708,1.104,3709,0.238,3710,0.238,3711,0.761,3712,0.761,3713,0.69,3714,1.003,3715,0.238,3716,0.69,3717,0.69,3718,0.69,3719,1.312,3720,0.69,3721,0.238,3722,0.69,3723,0.238,3724,0.238,3725,0.69,3726,1.694,3727,0.69,3728,0.69,3729,0.69,3730,0.238,3731,0.238,3732,0.238,3733,0.238,3734,0.238,3735,0.69,3736,0.69,3737,0.69,3738,0.468,3739,0.69,3740,0.905,3741,0.238,3742,0.905,3743,1.112,3744,0.238,3745,0.238,3746,0.905,3747,0.238,3748,0.238,3749,0.238,3750,1.112,3751,1.112,3752,0.215,3753,0.238,3754,0.238,3755,0.238,3756,0.905,3757,0.468,3758,0.238,3759,0.238,3760,0.468,3761,0.468,3762,0.468,3763,0.238,3764,0.238,3765,0.238,3766,0.238,3767,0.201,3768,0.238,3769,0.238,3770,0.238,3771,0.238,3772,0.238,3773,0.238,3774,0.238,3775,0.238,3776,0.238,3777,0.238,3778,0.238,3779,0.238,3780,0.238,3781,0.468,3782,0.238,3783,0.238,3784,0.238,3785,0.238,3786,0.238,3787,0.215,3788,0.69,3789,0.238,3790,0.215,3791,0.238,3792,0.238,3793,0.238,3794,0.238,3795,0.238,3796,0.238,3797,0.215,3798,0.238,3799,0.238,3800,0.238,3801,0.238,3802,0.238,3803,0.238,3804,0.238,3805,0.238,3806,0.238,3807,0.238,3808,0.238,3809,0.238,3810,0.238,3811,0.238,3812,0.238,3813,0.238,3814,0.238,3815,0.238,3816,0.238,3817,0.238,3818,0.238,3819,0.238,3820,0.238,3821,0.238,3822,0.238,3823,0.238,3824,0.238,3825,0.238,3826,0.238,3827,0.238,3828,0.69,3829,0.238,3830,0.238,3831,0.238,3832,0.238,3833,0.468,3834,0.238,3835,0.238,3836,0.238,3837,0.238,3838,0.238,3839,0.238,3840,0.238,3841,0.238,3842,0.238,3843,0.69,3844,0.238,3845,0.207,3846,0.238,3847,0.238,3848,0.238,3849,0.238,3850,0.238,3851,0.238,3852,0.238,3853,0.238,3854,0.238,3855,0.238,3856,0.238,3857,0.238,3858,0.215,3859,0.238,3860,0.238,3861,0.238,3862,0.238,3863,0.238,3864,0.238,3865,0.238,3866,0.238,3867,0.423,3868,0.238,3869,0.423,3870,0.238,3871,0.238,3872,0.238,3873,0.238,3874,0.238,3875,0.238,3876,0.238,3877,0.69,3878,0.238,3879,0.238,3880,0.238,3881,0.468,3882,0.238,3883,0.238,3884,0.238,3885,0.238,3886,0.238,3887,0.225,3888,0.238,3889,0.238,3890,0.238,3891,0.238,3892,0.468,3893,0.468,3894,0.468,3895,0.238,3896,0.238,3897,0.238,3898,0.238,3899,0.238,3900,0.238,3901,0.238,3902,0.238,3903,0.238,3904,0.238,3905,0.238,3906,0.238,3907,0.238,3908,0.238,3909,0.238,3910,0.238,3911,0.238,3912,0.238,3913,0.238,3914,0.238,3915,0.238,3916,0.238,3917,0.238,3918,0.238,3919,0.215,3920,0.238,3921,0.238,3922,0.238,3923,0.238,3924,0.238,3925,0.238,3926,0.238,3927,0.238,3928,0.238,3929,0.238]],["component/145",[2,0.4]],["title/146-1",[606,36.29,2324,45.318]],["name/146-1",[]],["text/146-1",[]],["component/146-1",[]],["title/146-2",[2324,45.318,2344,41.908]],["name/146-2",[]],["text/146-2",[]],["component/146-2",[]],["title/146",[2324,45.318,2344,41.908]],["name/146",[2324,1.099,2344,1.016]],["text/146",[5,1.615,6,1.819,8,1.821,10,1.488,11,1.986,14,1.357,15,2.095,16,0.926,17,2.075,25,3.181,27,1.316,38,3.882,44,1.372,48,1.548,52,1.435,53,3.073,54,1.461,75,1.498,104,3.456,107,1.379,112,1.372,118,1.639,127,3.133,128,2.983,130,2.134,131,1.58,136,1.818,138,1.818,140,1.836,146,2.497,154,1.452,164,1.665,173,1.329,174,1.946,177,1.986,178,1.627,183,3.931,185,1.452,194,2.997,198,1.818,200,1.986,203,2.038,205,1.309,207,3.276,220,2.531,231,1.23,234,3.538,243,2.162,244,3.623,250,2.229,267,2.57,271,1.479,284,1.875,285,1.652,286,2.845,295,1.875,297,1.336,301,2.497,311,2.316,320,1.419,323,2.128,336,1.875,367,1.47,454,2.772,472,2.326,480,1.665,482,1.938,484,4.365,511,2.198,518,3.997,522,1.986,526,1.818,562,2.433,588,2.241,632,2.377,692,1.875,740,2.727,744,2.198,789,1.678,809,2.57,897,2.757,953,2.57,1110,1.706,1119,1.639,1134,2.326,1226,2.845,1323,1.836,1390,1.652,1420,2.514,1451,2.128,1466,2.162,1490,1.721,1499,2.038,1527,4.435,1528,3.013,1573,2.038,1618,2.433,1624,1.751,1679,2.237,1697,2.433,1721,2.757,1828,2.57,1903,2.28,1998,2.066,2154,3.703,2173,2.237,2288,4.073,2324,6.804,2325,4.056,2344,6.438,2347,5.526,2348,6.949,2352,2.497,2450,3.634,2501,2.237,2603,2.655,2783,4.478,2784,4.174,2785,4.174,2801,2.757,2822,3.953,2991,5.747,2993,2.433,2996,2.326,3180,2.757,3698,2.757,3858,2.757,3966,3.056,3967,3.056,3968,3.056,3969,3.056,3970,3.056,3971,4.478,3972,3.056,3973,3.056,3974,3.056,3975,4.964,3976,3.056,3977,3.056,3978,4.964]],["component/146",[2,0.4]],["title/147-1",[16,17.047,130,19.142,1249,20.519]],["name/147-1",[]],["text/147-1",[]],["component/147-1",[]],["title/147-2",[13,18.453,749,19.613,815,28.297,1221,26.663]],["name/147-2",[]],["text/147-2",[]],["component/147-2",[]],["title/147-3",[16,20.032,1249,24.113]],["name/147-3",[]],["text/147-3",[]],["component/147-3",[]],["title/147-4",[192,25.234,749,26.482]],["name/147-4",[]],["text/147-4",[]],["component/147-4",[]],["title/147-5",[326,24.407,1258,40.531]],["name/147-5",[]],["text/147-5",[]],["component/147-5",[]],["title/147-6",[1559,54.939]],["name/147-6",[]],["text/147-6",[]],["component/147-6",[]],["title/147-7",[73,22.246,326,24.407]],["name/147-7",[]],["text/147-7",[]],["component/147-7",[]],["title/147-8",[8,19.195,3229,49.288]],["name/147-8",[]],["text/147-8",[]],["component/147-8",[]],["title/147-9",[231,32.25]],["name/147-9",[]],["text/147-9",[]],["component/147-9",[]],["title/147",[1258,49.136]],["name/147",[1258,1.698]],["text/147",[2,0.866,7,1.189,8,2.104,10,1.497,13,2.374,16,2.414,25,2.709,31,1.885,34,1.746,38,2.277,40,2.192,52,2.342,61,1.435,67,3.387,73,2.438,77,1.145,95,1.255,100,1.829,103,2.181,130,1.698,137,1.009,142,2.71,168,1.461,176,1.847,177,1.997,183,3.127,185,1.461,210,2.065,223,3.167,226,2.148,229,1.135,230,1.662,231,1.238,235,1.479,248,1.403,271,1.488,281,3.734,299,1.199,308,1.238,310,1.403,311,2.325,312,1.324,326,3.15,367,1.479,382,1.536,469,2.676,481,1.662,534,2.293,536,2.293,565,1.365,584,1.731,588,1.388,603,1.589,712,3.544,744,2.211,749,2.523,750,1.662,755,3.796,785,3.127,819,2.078,820,2.724,832,2.339,846,1.516,939,2.05,981,2.095,1103,2.997,1110,1.716,1181,1.997,1226,1.761,1249,2.643,1254,1.847,1258,5.933,1280,1.497,1287,3.607,1288,1.866,1307,3.673,1308,2.05,1309,2.211,1314,1.624,1315,1.589,1356,1.794,1375,2.023,1376,3.651,1377,4.499,1385,2.512,1386,3.721,1387,3.575,1393,4.452,1395,1.777,1413,3.953,1414,1.95,1427,2.25,1437,3.201,1458,2.773,1559,2.108,1573,2.05,1652,1.95,1677,2.05,1722,1.731,1727,1.973,2028,4.09,2031,3.947,2081,3.127,2378,1.997,2382,3.201,2655,2.512,2743,2.585,2865,3.796,2866,2.585,3072,2.05,3076,1.997,3078,6.135,3080,2.05,3084,2.14,3091,1.997,3096,2.023,3102,2.14,3177,2.339,3227,2.339,3228,2.174,3264,2.293,3930,3.073,3931,4.708,3932,3.073,3933,3.073,3934,3.073,3935,3.073,3936,2.773,3937,3.073,3938,3.073,3939,3.073,3940,3.073,3941,3.073,3942,3.073,3943,3.073,3944,3.073,3945,3.073]],["component/147",[2,0.4]],["title/148-1",[802,30.158,3979,59.605]],["name/148-1",[]],["text/148-1",[]],["component/148-1",[]],["title/148",[16,17.047,272,37.494,1590,43.731]],["name/148",[16,0.486,1590,1.246]],["text/148",[2,0.361,6,0.763,7,1.838,8,2.657,13,0.785,14,1.598,15,2.005,16,3.545,17,3.133,18,1.498,19,2.439,20,3.508,24,1.278,25,0.779,26,1.008,27,3.01,30,1.216,44,0.935,48,3.235,51,1.055,52,2.231,54,0.996,55,2.505,56,3.213,57,1.961,61,1.68,73,0.701,79,0.862,88,1.69,95,0.85,96,3.088,103,0.911,105,1.027,106,1.742,107,0.94,118,1.117,124,0.984,131,1.077,132,2.773,133,2.468,137,2.601,142,1.549,147,1.291,148,0.842,149,1.753,154,1.71,157,1.658,160,1.163,162,1.144,164,1.961,165,0.915,171,1.291,172,1.062,178,1.916,190,1.264,191,1.173,206,0.984,211,1.428,217,1.389,226,1.549,228,1.251,229,2.36,231,2.278,248,2.168,257,2.374,289,1.239,292,1.135,296,1.525,297,1.573,299,2.728,300,2.545,301,1.81,310,0.951,311,0.769,312,0.897,315,1.085,325,1.251,326,1.329,346,1.014,382,1.041,407,1.041,438,0.94,445,1.428,474,1.153,502,2.799,505,1.278,506,1.45,526,2.141,539,1.153,565,0.925,575,2.162,594,1.041,597,2.141,604,2.062,641,1.085,656,2.184,658,1.239,661,1.473,713,6.311,717,2.505,731,2.1,740,1.976,742,1.101,802,3.421,807,1.428,812,1.353,833,2.368,846,1.027,864,2.739,865,1.408,913,2.081,935,1.117,1023,1.751,1101,1.554,1102,1.751,1103,1.251,1154,1.473,1184,2.739,1217,1.751,1221,1.135,1226,1.193,1242,1.585,1249,0.76,1253,1.585,1262,1.428,1264,1.389,1265,2.184,1314,3.96,1317,1.809,1331,1.702,1384,1.498,1413,1.034,1427,1.525,1435,1.337,1438,2.979,1445,3.478,1448,1.62,1449,1.408,1490,1.173,1498,1.658,1540,1.498,1561,1.428,1590,7.706,1594,1.658,1599,3.246,1607,1.751,1652,3.013,1771,2.545,1845,2.368,1873,1.585,1927,2.684,2070,1.751,2132,3.544,2133,3.417,2138,1.585,2308,1.62,2347,1.353,2354,1.702,2540,2.505,2547,5.762,2643,2.009,2869,1.702,2963,2.162,3409,1.658,3459,1.809,3711,3.026,3712,3.026,3787,1.879,3979,5.103,3980,1.879,3981,1.966,3982,2.083,3983,8.292,3984,1.879,3985,3.598,3986,2.083,3987,2.083,3988,2.083,3989,2.083,3990,3.598,3991,2.083,3992,3.598,3993,3.598,3994,2.083,3995,2.083,3996,2.083,3997,2.083]],["component/148",[2,0.4]],["title/149-1",[3998,67.357]],["name/149-1",[]],["text/149-1",[]],["component/149-1",[]],["title/149-2",[231,32.25]],["name/149-2",[]],["text/149-2",[]],["component/149-2",[]],["title/149",[16,20.032,316,48.371]],["name/149",[16,0.486,316,1.173]],["text/149",[2,0.88,5,2.68,6,1.858,7,1.214,8,0.912,15,2.694,16,3.453,17,2.12,19,1.611,21,2.564,27,3.157,28,1.738,30,1.831,33,2.856,34,1.782,36,1.331,45,1.658,46,4.378,47,2.092,48,2.569,51,3.713,52,2.382,54,1.5,58,1.723,73,1.056,75,1.538,78,2.297,88,1.474,96,3.804,98,2.455,106,1.519,107,2.29,124,1.482,125,1.658,137,3.358,142,1.351,148,1.269,154,1.491,165,2.229,168,1.491,171,1.946,172,1.6,174,1.23,176,1.885,184,1.885,190,3.079,212,1.482,222,1.519,224,1.967,229,1.873,231,2.042,257,3.19,258,1.622,277,2.564,285,1.696,292,3.478,297,2.218,299,2.861,301,2.551,312,2.184,315,2.641,316,4.673,323,3.531,346,3.57,367,1.509,382,1.568,438,2.882,446,1.946,479,2.257,480,1.71,484,2.185,502,2.988,510,1.967,519,1.767,539,1.738,553,1.71,554,1.782,600,2.988,601,2.388,606,1.723,661,2.22,692,1.925,693,2.564,740,1.723,744,2.257,864,2.388,935,1.683,966,2.092,993,3.531,1082,3.933,1102,4.265,1127,4.038,1228,2.831,1241,1.798,1258,1.925,1264,4.257,1293,2.185,1314,2.68,1378,1.967,1403,2.726,1438,3.18,1462,2.44,1468,1.671,1490,1.767,1492,2.639,1573,2.092,1593,2.499,1610,2.831,1652,4.049,1729,1.99,1845,2.065,1909,2.152,1974,2.44,1998,2.121,2045,2.22,2077,2.341,2138,2.388,2156,2.564,2586,2.639,2685,2.257,3018,2.639,3151,2.44,3409,2.499,3442,2.726,3472,2.726,3980,2.831,3984,2.831,3998,6.768,3999,3.138,4000,3.138,4001,3.138,4002,3.138,4003,3.138,4004,3.138,4005,3.138,4006,3.138,4007,3.138,4008,3.138]],["component/149",[2,0.4]],["title/150",[207,36.358]],["name/150",[1,1.532]],["text/150",[]],["component/150",[2,0.4]],["title/151-1",[96,24.844,592,30.162,1091,31.938]],["name/151-1",[]],["text/151-1",[]],["component/151-1",[]],["title/151-2",[3,33.925,231,26.603]],["name/151-2",[]],["text/151-2",[]],["component/151-2",[]],["title/151-3",[4017,75.609]],["name/151-3",[]],["text/151-3",[]],["component/151-3",[]],["title/151-4",[107,29.827,172,33.691]],["name/151-4",[]],["text/151-4",[]],["component/151-4",[]],["title/151-5",[539,44.355]],["name/151-5",[]],["text/151-5",[]],["component/151-5",[]],["title/151",[96,24.844,592,30.162,1091,31.938]],["name/151",[1558,2.064]],["text/151",[2,0.675,6,1.426,8,1.131,13,2.268,14,1.729,15,3.489,16,2.228,19,3.087,36,3.117,38,1.776,47,2.595,53,1.907,56,2.211,87,3.303,93,1.796,96,4.612,98,1.884,106,3.557,112,2.7,118,2.088,131,2.012,137,3.563,158,1.817,164,3.276,189,3.511,210,1.611,212,1.839,220,1.984,223,2.629,229,1.438,230,2.104,281,2.399,299,1.519,315,2.027,367,1.872,407,1.945,474,2.155,520,2.799,575,3.613,585,2.529,588,2.714,592,3.226,597,4.918,598,2.631,603,3.8,618,2.413,649,3.099,664,3.027,674,4.788,696,2.71,717,2.71,935,2.088,1016,2.962,1091,2.211,1204,7.181,1265,3.65,1294,2.753,1305,3.18,1314,2.056,1356,3.509,1366,4.608,1405,2.44,1558,6.166,1561,2.669,1581,3.099,1623,2.595,1771,4.254,2058,4.124,2148,3.099,2280,3.273,2286,4.677,2308,4.677,2340,3.511,2742,2.849,2951,6.951,3182,3.511,3477,3.511,3711,3.273,3712,3.273,3936,3.511,4012,3.891,4013,3.891,4014,3.891,4015,5.425,4017,3.674,4018,3.891,4019,8.266,4021,7.348,4025,3.891,4030,7.348,4031,3.891,4033,3.891,4037,3.891,4042,3.891,4043,3.891,4044,3.891,4428,4.222,4429,4.222,4430,4.222]],["component/151",[2,0.4]],["title/152-1",[25,24.71,1257,52.612]],["name/152-1",[]],["text/152-1",[]],["component/152-1",[]],["title/152-2",[3,33.925,231,26.603]],["name/152-2",[]],["text/152-2",[]],["component/152-2",[]],["title/152-3",[25,18.301,235,23.539,245,33.563,1257,38.965]],["name/152-3",[]],["text/152-3",[]],["component/152-3",[]],["title/152-4",[4087,80.094]],["name/152-4",[]],["text/152-4",[]],["component/152-4",[]],["title/152",[2,7.517,8,12.584,96,19.139,230,23.417,235,20.837]],["name/152",[235,1.331]],["text/152",[2,0.95,3,1.019,4,0.891,8,2.536,16,3.291,17,0.83,21,3.741,22,1.404,25,3.157,26,1.67,30,2.672,38,2.83,40,0.872,46,1.361,51,1.005,55,1.382,57,1.081,61,2.555,72,2.033,75,0.973,77,0.739,79,1.896,88,1.621,95,0.81,96,0.877,98,2.216,103,0.868,105,2.7,107,1.558,124,1.63,126,0.886,131,1.026,137,3.873,152,1.669,153,1.927,173,1.501,192,0.758,194,0.949,198,1.181,206,0.938,207,0.901,210,2.567,212,1.63,218,1.019,219,1.543,223,2.393,229,2.512,231,1.844,235,4.198,245,3.754,271,1.67,281,2.474,288,1.099,297,2.002,299,3.167,302,1.259,310,0.906,312,0.855,323,2.403,407,0.992,438,3.299,454,1.108,466,3.096,527,1.81,540,1.108,553,1.081,554,1.96,575,1.192,592,1.851,597,1.181,604,1.978,618,1.231,665,3.188,696,1.382,717,1.382,731,2.672,789,1.895,802,0.906,820,1.494,870,1.453,917,1.58,935,1.065,981,2.299,1116,1.427,1226,1.137,1249,2.482,1254,1.192,1257,8.291,1264,4.536,1314,2.42,1323,1.192,1365,1.79,1366,2.164,1434,1.323,1435,1.274,1469,1.58,1495,1.361,1501,3.031,1540,1.427,1552,3.113,1558,1.48,1560,1.79,1569,1.81,1626,1.289,1627,1.404,1771,1.404,2004,1.404,2272,2.684,2280,1.669,2308,2.684,2352,2.82,2367,3.485,2571,1.58,2579,1.51,2638,3.257,2742,2.526,2792,1.669,2891,3.85,3177,1.51,3353,1.79,4088,1.984,4089,8.114,4090,3.451,4091,7.308,4092,3.451,4093,3.451,4094,1.984,4095,1.79,4096,1.984,4097,1.79,4098,7.308,4100,4.578,4101,3.451,4102,1.984,4103,4.578,4104,4.578,4105,1.984,4106,3.451,4107,3.451,4108,3.451,4109,3.451,4110,3.451,4111,6.801,4112,3.451,4113,3.451,4114,3.451,4115,1.984,4116,1.984,4117,1.984,4431,5.938,4432,2.153]],["component/152",[2,0.4]],["title/153-1",[174,22.038,606,30.883,1434,37.494]],["name/153-1",[]],["text/153-1",[]],["component/153-1",[]],["title/153-2",[119,32.398]],["name/153-2",[]],["text/153-2",[]],["component/153-2",[]],["title/153-3",[1904,62.298]],["name/153-3",[]],["text/153-3",[]],["component/153-3",[]],["title/153-4",[8,14.216,98,23.685,112,21.971,802,22.335]],["name/153-4",[]],["text/153-4",[]],["component/153-4",[]],["title/153-5",[234,32.383,1434,44.06]],["name/153-5",[]],["text/153-5",[]],["component/153-5",[]],["title/153-6",[8,12.584,244,19.771,675,31.157,685,36.426,802,19.771]],["name/153-6",[]],["text/153-6",[]],["component/153-6",[]],["title/153",[1434,53.413]],["name/153",[1434,1.845]],["text/153",[2,1.136,3,0.835,4,1.3,5,1.53,6,0.596,7,0.629,8,2.031,13,2.278,14,0.722,15,1.222,16,2.119,17,1.986,25,1.083,26,1.402,27,2.82,28,0.9,30,1.69,33,0.916,34,0.924,41,1.447,44,1.3,48,0.823,51,2.406,52,0.764,54,1.872,56,0.924,57,0.886,58,3.318,60,1.367,61,1.352,67,1.887,73,0.547,75,1.919,77,0.606,79,1.621,83,1.004,88,0.764,96,2.408,98,2.299,103,1.266,105,1.931,106,3.383,112,0.73,119,3.453,124,0.768,126,0.726,132,0.949,137,3.605,148,0.658,149,2.314,153,0.908,154,0.773,159,0.94,161,1.115,162,0.893,164,0.886,165,0.715,168,0.773,169,0.987,170,0.853,173,2.628,174,1.534,185,0.773,191,1.631,192,1.814,193,1.295,194,0.777,198,0.967,206,0.768,207,1.314,209,0.859,210,1.199,212,1.368,223,0.711,229,1.07,231,0.655,234,1.419,237,1.238,244,0.742,246,0.893,249,0.818,250,1.758,258,0.841,281,1.562,282,1.467,288,0.9,297,1.712,298,1.883,299,2.357,310,0.742,311,2.231,312,0.7,316,1.19,326,0.601,363,1.238,382,1.447,407,1.447,428,1.15,432,0.773,480,2.133,492,0.853,494,1.115,505,0.997,509,1.084,519,0.916,539,0.9,554,1.645,587,1.19,588,0.734,592,0.872,594,0.813,597,0.967,603,2.024,623,1.02,668,2.98,675,2.816,685,3.292,688,1.031,692,0.997,694,1.367,731,1.69,732,1.008,740,2.15,742,0.859,802,4.251,812,1.882,870,1.19,895,1.099,908,1.008,926,1.056,947,0.958,981,2.537,1091,0.924,1114,5.866,1221,2.133,1226,0.932,1249,1.989,1264,2.611,1265,3.308,1280,0.792,1348,3.532,1366,1.02,1409,2.435,1434,6.657,1435,1.044,1448,1.265,1461,0.932,1471,1.084,1501,2.168,1559,2.685,1569,0.853,1579,2.352,1591,4.81,1624,0.932,1680,1.295,1702,3.995,1727,1.044,1771,1.15,1777,1.535,1801,1.15,1823,1.467,1866,1.367,1904,7.364,1909,1.115,1960,3.532,1998,1.099,2004,2.048,2048,1.056,2058,1.115,2064,1.295,2179,3.783,2286,1.265,2307,1.265,2354,1.329,2501,2.12,2540,2.726,2541,1.265,2548,2.306,2564,1.329,2571,1.295,2870,1.329,2885,1.265,3146,2.435,3204,1.238,3325,1.329,3394,1.535,3790,2.612,3998,2.435,4045,1.626,4046,1.626,4047,1.626,4048,1.626,4049,3.915,4050,1.626,4051,1.626,4052,6.548,4053,2.896,4054,1.626,4055,1.626,4056,2.896,4057,1.626,4058,1.626,4059,1.626,4060,1.626,4061,1.626,4062,1.626,4063,1.626,4064,1.626,4065,1.626,4066,6.04,4067,1.626,4068,1.626,4069,1.626,4070,5.449,4071,1.626,4072,1.626,4073,1.626,4074,1.626,4075,1.626,4076,1.626,4077,3.915,4078,1.626,4079,1.626,4080,1.626,4081,2.896,4082,2.896,4083,2.896,4084,1.626,4085,1.626,4086,1.626]],["component/153",[2,0.4]],["title/154",[83,22.92,1585,50.288]],["name/154",[83,0.556,1585,1.219]],["text/154",[25,3.438,83,3.189,336,5.639,785,6.799,846,4.534,1585,6.996,1683,6.049,2338,7.73,2732,9.782]],["component/154",[2,0.4]],["title/155",[83,22.92,1057,49.288]],["name/155",[83,0.556,1057,1.195]],["text/155",[]],["component/155",[2,0.4]],["title/156",[83,19.505,414,39.774,2240,50.723]],["name/156",[83,0.556,414,1.133]],["text/156",[]],["component/156",[2,0.4]],["title/157-1",[73,18.931,272,37.494,443,32.222]],["name/157-1",[]],["text/157-1",[]],["component/157-1",[]],["title/157-2",[231,32.25]],["name/157-2",[]],["text/157-2",[]],["component/157-2",[]],["title/157",[83,22.92,1004,52.612]],["name/157",[83,0.556,1004,1.275]],["text/157",[2,1.189,8,2.466,10,1.701,13,2.938,15,1.474,16,1.059,17,2.865,27,1.503,38,3.557,56,3.138,73,3.399,83,1.211,96,3.751,98,2.674,102,1.983,106,1.69,110,1.983,112,2.48,137,3.522,142,1.503,143,2.057,153,1.95,161,2.395,168,1.659,172,1.78,173,1.519,177,2.269,192,1.333,209,1.845,231,2.76,234,2.707,243,2.47,246,1.918,289,2.077,309,3.789,311,2.041,466,2.361,487,3.034,510,2.189,554,1.983,588,1.576,603,1.805,645,3.735,649,2.78,690,3.353,694,2.936,752,2.431,755,2.657,795,2.165,802,1.594,820,2.391,926,2.269,981,3.273,1004,8.965,1038,5.764,1104,2.142,1114,4.848,1120,2.47,1176,7.658,1217,4.645,1249,1.274,1258,2.142,1288,2.12,1312,2.431,1335,3.033,1378,2.189,1384,2.511,1451,2.431,1466,3.908,1501,1.933,1626,2.269,1853,2.556,2291,1.888,2338,4.645,2501,2.556,2732,3.15,2733,4.983,2734,3.15,2735,5.524,2736,5.524,2737,5.524,2738,3.491,2739,3.491,2742,2.556,2743,2.936,2744,2.019,2745,3.491,2746,3.491,2747,3.491,2748,5.524,2749,3.491,2750,3.491,2751,3.491,2752,3.491,2753,3.491,2754,3.491,2755,3.491,2756,7.658,2757,3.491,2758,3.491,2759,3.491,2760,3.491,2761,3.491,2762,3.491,2763,3.491,2764,3.491,2765,3.491,2766,3.491,2767,3.491,2768,3.491,4433,3.788]],["component/157",[2,0.4]],["title/158-1",[2,9.757,121,33.451,1382,42.794]],["name/158-1",[]],["text/158-1",[]],["component/158-1",[]],["title/158-2",[551,55.772]],["name/158-2",[]],["text/158-2",[]],["component/158-2",[]],["title/158-3",[2769,80.094]],["name/158-3",[]],["text/158-3",[]],["component/158-3",[]],["title/158-4",[121,33.451,174,22.038,2770,50.723]],["name/158-4",[]],["text/158-4",[]],["component/158-4",[]],["title/158-5",[119,26.725,1382,50.288]],["name/158-5",[]],["text/158-5",[]],["component/158-5",[]],["title/158-6",[16,11.78,119,15.716,121,23.116,174,15.229,1380,28.446,2771,32.675]],["name/158-6",[]],["text/158-6",[]],["component/158-6",[]],["title/158-7",[16,10.68,119,14.249,120,22.89,121,20.958,174,13.808,1380,25.79,1528,21.385]],["name/158-7",[]],["text/158-7",[]],["component/158-7",[]],["title/158-8",[1381,48.371,1382,50.288]],["name/158-8",[]],["text/158-8",[]],["component/158-8",[]],["title/158-9",[16,11.78,121,23.116,174,15.229,1380,28.446,1381,28.446,2771,32.675]],["name/158-9",[]],["text/158-9",[]],["component/158-9",[]],["title/158-10",[16,10.68,120,22.89,121,20.958,174,13.808,1380,25.79,1381,25.79,1528,21.385]],["name/158-10",[]],["text/158-10",[]],["component/158-10",[]],["title/158-11",[2772,59.605,2773,59.605]],["name/158-11",[]],["text/158-11",[]],["component/158-11",[]],["title/158-12",[882,44.06,1717,52.612]],["name/158-12",[]],["text/158-12",[]],["component/158-12",[]],["title/158",[83,22.92,121,39.308]],["name/158",[83,0.556,121,0.953]],["text/158",[2,0.931,3,1.109,4,1.667,6,0.431,7,0.455,8,1.684,13,0.443,14,1.926,15,0.496,16,2.604,17,1.252,19,0.604,26,1.045,27,2.496,31,0.721,33,1.686,34,1.227,38,0.537,41,1.079,50,0.693,58,1.186,59,0.646,61,1.008,70,1.325,72,0.693,73,1.952,75,1.058,76,1.44,83,1.039,84,0.386,85,2.825,92,0.721,93,0.543,95,2.191,96,3.024,98,1.449,101,4.273,105,0.58,119,1.975,120,3.173,121,5.366,122,0.774,125,0.621,126,0.525,127,0.588,131,0.608,137,2.029,140,1.799,143,0.693,148,0.476,149,1.808,155,0.674,156,1.186,168,1.026,173,0.939,174,2.795,183,1.354,185,1.026,191,1.686,192,0.449,205,0.925,209,0.621,210,0.894,223,0.514,228,1.297,230,0.636,231,1.206,234,1.819,235,3.293,243,1.527,244,2.646,246,1.186,247,0.795,248,0.986,249,1.086,250,0.528,256,0.784,258,1.117,271,0.569,276,2.381,279,2.384,281,0.862,284,1.837,295,2.995,297,1.896,298,0.566,311,1.371,314,0.636,319,0.656,326,1.371,336,0.721,346,1.458,382,2.897,384,0.989,399,1.527,438,0.975,446,0.729,453,2.154,454,0.656,458,0.699,473,0.925,474,3.21,475,0.795,480,1.177,482,1.37,484,2.585,487,1.645,497,0.68,502,1.272,505,1.837,532,0.895,535,1.837,543,1.997,544,1.339,554,0.668,561,0.895,576,1.946,588,2.617,590,2.054,604,0.674,613,0.914,626,0.806,641,0.612,652,0.714,655,2.412,658,0.699,675,0.846,691,2.279,696,3.4,731,1.748,742,1.582,749,0.865,754,0.832,755,0.895,770,1.206,771,1.481,785,0.737,792,0.764,795,0.729,802,3.375,805,0.764,820,0.935,825,0.832,827,0.832,852,0.806,865,0.795,881,1.061,913,1.732,925,0.846,951,0.895,981,2.051,1091,0.668,1139,0.877,1232,0.961,1241,1.716,1245,6.708,1280,3.601,1301,3.122,1328,0.877,1380,3.929,1381,3.575,1382,6.537,1390,1.619,1392,1.553,1397,0.914,1417,0.641,1428,1.764,1434,0.784,1450,1.899,1451,2.085,1454,0.895,1463,1.581,1468,0.626,1490,0.662,1502,0.989,1528,1.818,1561,1.481,1565,1.581,1569,0.617,1573,0.784,1601,0.861,1639,3.929,1657,0.989,1679,3.174,1717,3.453,1727,0.755,1738,0.861,1795,0.961,1853,1.581,1866,1.816,1903,1.611,1904,0.914,1927,1.611,1940,0.795,1961,1.11,1974,0.914,1989,2.701,2088,0.914,2133,1.553,2140,0.604,2148,1.719,2154,2.234,2329,1.764,2360,1.021,2374,1.876,2375,2.518,2381,0.914,2382,1.386,2406,1.503,2615,0.936,2643,0.656,2734,1.061,2742,0.861,2770,3.349,2771,1.816,2772,1.948,2773,1.948,2774,1.176,2775,1.176,2777,2.518,2778,1.176,2779,1.176,2780,1.176,2781,1.176,2782,0.936,2783,1.061,2784,0.989,2785,0.989,2786,1.061,2787,4.336,2788,2.994,2789,1.176,2790,1.11,2791,1.061,2792,0.989,2793,6.182,2794,1.176,2795,2.159,2796,1.176,2797,6.182,2798,1.176,2799,1.176,2800,2.159,2801,4.841,2802,1.176,2803,3.712,2804,3.712,2805,2.994,2806,1.176,2807,2.518,2808,2.994,2809,2.159,2810,2.994,2811,2.994,2812,2.994,2813,2.159,2814,2.159,2815,2.159,2816,2.159,2817,2.159,2818,1.816,2819,1.948,2820,4.882,2821,4.882,2822,1.719,2823,2.038,2824,2.159,2825,1.176,2826,1.176,2827,2.159,2828,1.176,2829,1.176,2830,1.176,2831,1.176,2832,1.176,2833,1.176,2834,1.176,2835,1.176,2836,1.176,2837,1.176,2838,1.176,2839,1.176,2840,1.176,2841,1.176,2842,1.176,2843,1.176,2844,1.176,2845,1.176,2846,1.176,2847,1.176,2848,1.176,2849,1.176,2850,1.176,2851,1.176,2852,1.176,2853,1.176,2854,1.176,2855,1.176,2856,1.176,2857,1.061,2858,2.518,2859,1.948,2860,1.176,2861,1.061,2862,1.176,2863,1.176,2864,1.176,2865,1.643,2866,0.989,2867,1.176]],["component/158",[2,0.4]],["title/159-1",[205,24.09,206,26.563,1289,37.494]],["name/159-1",[]],["text/159-1",[]],["component/159-1",[]],["title/159-2",[2,8.492,87,26.877,1289,32.632,1444,36.504]],["name/159-2",[]],["text/159-2",[]],["component/159-2",[]],["title/159-3",[2,7.517,8,12.584,119,17.521,1289,28.885,1444,32.313]],["name/159-3",[]],["text/159-3",[]],["component/159-3",[]],["title/159-4",[85,50.288,87,36.29]],["name/159-4",[]],["text/159-4",[]],["component/159-4",[]],["title/159",[83,22.92,1289,44.06]],["name/159",[83,0.556,1289,1.068]],["text/159",[2,1.499,4,1.419,7,0.694,8,1.864,13,1.924,14,1.404,15,0.758,16,2.867,17,1.77,25,1.182,27,1.361,28,2.345,34,1.02,44,0.806,45,0.949,48,0.909,52,0.843,54,3.067,56,1.795,59,0.986,67,1.255,68,1.048,70,1.101,73,2.16,75,1.549,77,0.669,79,1.309,83,1.77,84,1.39,85,2.406,87,0.986,88,1.484,93,0.829,95,1.29,96,3.059,102,4.398,103,0.785,105,1.559,107,0.81,110,1.02,112,1.901,113,1.079,116,1.291,118,0.963,119,1.713,124,0.848,126,1.412,127,1.58,131,2.638,132,1.048,134,1.509,136,1.068,137,1.39,138,1.068,140,1.079,148,2.352,153,1.002,154,0.853,155,1.029,156,0.986,160,2.365,164,3.169,165,0.789,168,0.853,170,2.221,173,3.368,174,3.166,178,0.956,184,1.079,185,0.853,190,1.09,192,0.686,194,1.511,203,1.197,205,2.186,206,1.493,222,2.469,231,0.723,234,2.5,244,0.819,249,0.903,250,1.419,258,0.928,272,1.197,276,1.736,281,0.716,288,0.994,292,0.978,297,2.231,298,3.086,299,1.233,311,1.564,315,0.935,319,1.002,320,1.467,323,1.25,326,1.168,367,0.863,432,0.853,438,0.81,469,0.963,473,1.354,478,2.406,480,3.773,482,1.139,492,0.942,493,1.291,494,1.231,495,1.366,496,6.023,502,1.862,503,1.139,519,1.011,532,1.366,533,1.197,573,2.029,588,0.81,594,0.897,602,2.236,606,0.986,607,1.152,623,1.126,624,1.366,626,1.231,633,2.314,634,2.517,641,1.646,655,1.166,688,2.005,692,1.101,720,1.619,742,0.949,753,1.559,764,1.231,791,1.396,795,1.113,800,1.396,802,2.655,820,0.777,850,1.314,868,1.366,926,1.166,940,1.25,981,0.754,1006,1.314,1139,2.358,1181,1.166,1221,2.308,1222,1.467,1224,1.396,1241,1.029,1249,2.687,1289,5.918,1294,1.27,1356,2.472,1381,1.314,1420,0.909,1435,1.152,1437,4.725,1438,2.655,1444,7.648,1461,1.029,1501,0.994,1506,1.25,1538,1.619,1646,1.467,1810,1.467,1827,1.509,1840,1.509,1853,1.314,1872,2.583,1909,1.231,1935,1.396,1938,2.787,2048,1.166,2087,1.314,2133,1.291,2179,2.517,2281,1.509,2329,4.752,2342,1.339,2367,1.366,2382,1.152,2407,2.984,2684,2.851,2742,2.314,2786,1.619,2819,1.619,2868,3.161,2869,1.467,2870,1.467,2871,1.795,2872,3.161,2873,1.795,2874,4.235,2875,1.795,2876,1.795,2877,1.795,2878,1.795,2879,5.101,2880,4.235,2881,3.161,2882,1.795,2883,1.795,2884,1.795,2885,1.396,2886,1.795,2887,1.795,2888,1.795,2889,1.795,2890,1.795,2891,1.509,2892,3.161,2893,1.509,2894,3.161,2895,1.795,2896,1.795,2897,3.161,2898,1.795,2899,1.795,2900,1.795,2901,1.795,2902,1.795,2903,1.795,2904,3.161,2905,1.795,2906,1.795,2907,1.795,2908,1.795,2909,1.795]],["component/159",[2,0.4]],["title/160",[83,22.92,1179,55.562]],["name/160",[83,0.556,1179,1.347]],["text/160",[2,1.931,63,5.156,315,5.005,1654,8.471]],["component/160",[2,0.4]],["title/161",[1174,44.671,2910,55.562]],["name/161",[1174,1.083,2910,1.347]],["text/161",[2,1.653,231,3.835,1174,6.44,2910,8.009,2912,9.524,2913,9.524,2914,9.524]],["component/161",[2,0.4]],["title/162-1",[79,27.357,295,40.531]],["name/162-1",[]],["text/162-1",[]],["component/162-1",[]],["title/162-2",[244,30.158,802,30.158]],["name/162-2",[]],["text/162-2",[]],["component/162-2",[]],["title/162-3",[234,39.258]],["name/162-3",[]],["text/162-3",[]],["component/162-3",[]],["title/162",[551,55.772]],["name/162",[1174,1.083,1337,1.246]],["text/162",[2,1.356,8,2.496,10,1.881,13,3.551,16,2.217,20,1.402,27,2.177,36,1.638,37,1.387,38,3.758,41,1.13,57,1.232,59,1.242,63,1.213,70,1.387,75,1.108,77,0.842,79,0.936,88,1.062,92,1.387,93,1.044,103,0.989,112,2.684,124,2.388,125,1.195,126,1.01,128,4.034,137,0.742,144,1.656,148,2.418,156,1.242,159,1.308,168,2.402,174,0.886,178,1.204,190,1.373,199,2.088,205,2.876,210,2.093,231,0.911,234,2.478,243,3.576,244,3.566,246,1.242,248,2.307,275,1.656,276,3.687,291,1.529,292,1.232,295,6.129,297,0.989,311,3.289,320,1.793,323,1.575,326,0.835,336,2.369,473,1.655,477,1.434,497,1.308,565,1.005,573,1.452,576,2.51,603,1.169,645,1.529,652,2.345,690,1.373,707,4.749,708,1.721,751,1.759,752,5.092,754,1.6,765,1.359,802,3.758,833,1.488,839,1.902,846,1.905,867,5.014,908,3.135,935,1.213,1021,1.721,1112,1.902,1158,1.801,1162,1.551,1174,1.529,1232,3.156,1241,3.426,1249,1.41,1259,5.351,1260,5.351,1261,1.902,1280,1.881,1305,1.848,1310,1.452,1337,1.759,1420,1.145,1429,1.6,1450,3.792,1454,1.721,1499,3.371,1509,1.801,1559,6.108,1727,1.452,1729,1.434,1738,2.828,1801,1.6,1845,3.327,2077,1.687,2083,4.742,2173,1.656,2252,4.56,2341,1.902,2359,1.434,2381,3.004,2382,1.452,2401,1.902,2413,2.135,2442,1.801,2504,1.801,2548,4.76,2615,3.075,2743,1.902,2784,3.248,2785,3.248,2818,3.248,2915,2.261,2916,2.261,2917,4.56,2918,3.862,2919,2.261,2920,3.862,2921,2.261,2922,3.862,2923,2.261,2924,2.261,2925,2.261,2926,2.261,2927,2.261,2928,2.261,2929,2.261,2930,2.261,2931,2.261,2932,2.261,2933,2.261,2934,2.261,2935,2.261,2936,2.261,2937,2.261,2938,2.261,2939,2.261,2940,2.261,2941,2.261,2942,2.261,2943,2.261,2944,2.261,2945,2.261,2946,2.261,2947,2.261,2948,2.261,2949,2.261,2950,2.261,2951,1.902,2952,2.261,2953,2.261,2954,3.484,2955,2.261,2956,2.261,2957,2.261,2958,2.261]],["component/162",[2,0.4]],["title/163",[246,43.994]],["name/163",[1,1.532]],["text/163",[]],["component/163",[2,0.4]],["title/164",[40,35.206]],["name/164",[1,1.532]],["text/164",[10,4.516,39,5.013,43,5.629,1172,5.629,1299,4.013,1534,5.75,1808,5.267,2343,6.184,2344,5.882,3013,6.025]],["component/164",[2,0.4]],["title/165-1",[220,33.691,750,35.719]],["name/165-1",[]],["text/165-1",[]],["component/165-1",[]],["title/165-2",[40,29.041,882,44.06]],["name/165-2",[]],["text/165-2",[]],["component/165-2",[]],["title/165",[]],["name/165",[]],["text/165",[2,1.062,6,2.242,7,1.54,8,1.777,14,1.768,19,3.141,25,3.128,26,4.049,40,5.032,48,2.016,51,2.016,53,2.998,73,2.509,77,1.482,81,2.554,83,2.122,90,3.836,95,1.625,98,4.805,126,3.328,130,1.355,138,2.368,158,1.858,166,2.119,168,1.891,173,1.731,190,2.416,210,1.648,222,1.926,226,1.714,228,4.478,229,1.47,254,2.619,259,3.169,271,2.961,281,1.588,308,1.602,310,1.817,311,2.26,312,1.714,367,1.914,438,1.797,450,3.59,454,2.222,553,2.169,558,2.554,565,3.31,590,2.73,600,2.345,637,3.029,692,2.441,731,2.323,750,2.152,760,3.59,764,4.196,765,2.391,849,3.029,852,2.73,861,4.564,906,2.619,934,2.586,935,3.282,1036,3.59,1067,3.347,1104,3.753,1130,2.969,1155,3.347,1172,5.078,1226,2.281,1282,2.73,1474,4.401,1569,2.088,1579,2.391,1584,3.252,1587,3.347,1623,2.654,1654,4.656,1689,4.328,1722,2.241,1762,3.59,1865,2.691,2075,3.029,2147,3.169,2241,3.347,2336,3.169,2346,4.328,2540,4.26,3006,6.723,3013,4.842,3015,3.169,3016,3.59,3021,3.59,3177,4.656,3672,3.59,3690,3.59,4118,3.98,4119,3.59,4120,3.98,4121,3.98,4122,6.118]],["component/165",[2,0.4]],["title/166",[2343,44.06,2344,41.908]],["name/166",[2343,1.068,2344,1.016]],["text/166",[40,3.599,54,2.835,77,2.209,128,4.92,130,2.019,137,3.601,142,3.526,154,2.818,174,3.209,183,3.718,185,2.818,226,2.554,229,2.191,244,4.28,248,2.707,281,3.267,292,3.231,308,2.388,310,2.707,311,3.024,312,2.554,473,2.541,540,3.311,588,3.696,792,3.853,1119,4.392,1181,3.853,1226,3.398,1251,4.195,1356,3.461,1375,3.903,1420,3.003,1490,3.339,1639,4.341,1729,3.761,2291,4.426,2343,7.076,2344,6.73,2347,3.853,2450,4.341,2991,8.736,2993,4.722,2994,4.987,2996,4.514,3971,5.35]],["component/166",[2,0.4]],["title/167",[10,32.179,39,35.719]],["name/167",[39,1.496]],["text/167",[10,3.755,36,3.271,39,5.772,40,4.281,43,4.681,52,3.621,77,2.872,130,2.625,136,4.587,137,2.531,138,4.587,140,4.633,226,3.32,229,2.848,281,3.077,308,3.922,310,3.52,311,3.944,312,3.32,540,4.306,588,3.481,786,4.306,1226,4.419,1534,4.782,1865,5.213,3414,6.956,4123,7.71]],["component/167",[2,0.4]],["title/168",[1534,40.971,1808,37.531]],["name/168",[1534,0.993,1808,0.91]],["text/168",[36,3.395,38,4.551,40,4.383,77,2.981,130,2.725,226,3.447,229,2.957,281,3.194,308,3.223,310,3.653,311,4.199,312,3.447,540,4.469,662,5.757,1226,4.587,1534,6.183,1808,6.169,1865,5.411,2324,5.49,2347,5.201]],["component/168",[2,0.4]],["title/169",[3013,52.045]],["name/169",[3013,1.798]],["text/169",[2,0.925,8,2.572,9,2.663,19,2.737,25,1.993,40,3.891,47,5.066,48,3.847,52,3.568,77,1.985,83,1.849,105,2.629,113,3.203,130,1.814,138,3.171,191,3.001,226,2.295,229,1.969,235,2.564,249,2.681,259,4.244,271,2.58,281,2.127,288,4.207,308,3.059,310,2.433,311,3.27,312,2.295,382,2.663,540,2.976,584,3.001,622,4.057,651,3.902,731,4.434,765,3.203,773,3.235,785,3.342,786,2.976,819,3.603,1172,4.611,1226,3.054,1248,3.421,1252,3.77,1287,3.054,1307,3.111,1328,3.976,1378,3.342,1387,3.027,1554,4.482,1689,3.77,1722,3.001,1808,3.027,1865,3.603,2048,3.463,2241,4.482,2268,4.808,2296,4.057,2346,6.262,2382,3.421,2730,4.808,3013,7.482,3024,4.808,3035,4.808,3186,4.482,4124,5.33,4125,5.33,4126,5.33,4127,5.33,4128,5.33,4129,5.33]],["component/169",[2,0.4]],["title/170",[1299,34.666]],["name/170",[1299,1.198]],["text/170",[6,2.889,10,4.811,13,2.973,36,3.344,40,4.341,77,2.936,95,3.219,130,2.684,142,3.395,226,3.395,229,2.912,281,3.941,308,3.174,310,3.599,311,3.649,312,3.395,540,4.402,1226,4.518,1299,4.668,1534,4.889,1865,5.33,2081,4.944,2359,5.001,4130,7.112]],["component/170",[2,0.4]],["title/171",[43,48.623]],["name/171",[43,1.68]],["text/171",[6,2.889,10,4.811,13,2.973,36,3.344,40,4.341,43,6.548,77,2.936,95,3.219,130,2.684,142,3.395,226,3.395,229,2.912,281,3.941,308,3.174,310,3.599,311,3.649,312,3.395,540,4.402,1226,4.518,1534,4.889,1865,5.33,2081,4.944,2359,5.001,4130,7.112]],["component/171",[2,0.4]],["title/172-1",[3,33.925,4,29.665]],["name/172-1",[]],["text/172-1",[]],["component/172-1",[]],["title/172-2",[5,42.326]],["name/172-2",[]],["text/172-2",[]],["component/172-2",[]],["title/172-3",[6,11.806,7,12.464,8,9.361,9,16.101,10,15.692,11,20.935,12,27.094,13,12.15]],["name/172-3",[]],["text/172-3",[]],["component/172-3",[]],["title/172-4",[6,15.872,14,19.241,15,18.285,16,13.133,17,18.108]],["name/172-4",[]],["text/172-4",[]],["component/172-4",[]],["title/172",[2,9.757,16,17.047,18,40.443]],["name/172",[18,1.99]],["text/172",[3,2.295,4,2.007,5,2.362,6,2.448,7,2.584,8,2.579,9,2.234,10,5.031,11,2.904,12,3.759,13,1.686,14,1.986,15,4.207,16,3.352,19,2.295,20,2.772,21,3.652,22,3.162,23,3.759,24,2.742,25,1.672,26,2.163,27,1.925,28,2.475,29,7.999,30,5.18,31,2.742,32,2.981,33,2.517,34,2.539,35,4.47,36,1.896,37,2.742,38,4.336,39,2.416,40,3.516,41,2.234,42,4.47,43,5.767,44,2.007,45,2.362,46,4.582,47,2.981,48,4.051,49,3.759,50,4.713,51,4.811,52,3.757,53,3.274,54,3.194,55,3.112,56,2.539,57,2.436,58,2.455,59,2.455,60,3.759,61,3.735,62,4.47,63,3.584,64,3.559,65,3.215,66,3.112,67,1.775,68,2.609,69,6.755,70,4.098,71,2.475,72,2.634,73,1.505,74,2.742,75,2.191,76,2.981]],["component/172",[2,0.4]],["title/173-1",[7,30.986]],["name/173-1",[]],["text/173-1",[]],["component/173-1",[]],["title/173-2",[8,16.335,77,20.941,78,41.163]],["name/173-2",[]],["text/173-2",[]],["component/173-2",[]],["title/173-3",[8,19.195,77,24.608]],["name/173-3",[]],["text/173-3",[]],["component/173-3",[]],["title/173-4",[2,9.757,77,20.941,79,23.28]],["name/173-4",[]],["text/173-4",[]],["component/173-4",[]],["title/173-5",[2,8.492,77,18.225,79,20.261,80,29.705]],["name/173-5",[]],["text/173-5",[]],["component/173-5",[]],["title/173-6",[77,20.941,81,36.088,82,35.256]],["name/173-6",[]],["text/173-6",[]],["component/173-6",[]],["title/173-7",[82,35.256,83,19.505,84,18.456]],["name/173-7",[]],["text/173-7",[]],["component/173-7",[]],["title/173-8",[82,35.256,85,42.794,86,42.794]],["name/173-8",[]],["text/173-8",[]],["component/173-8",[]],["title/173-9",[82,41.429,220,33.691]],["name/173-9",[]],["text/173-9",[]],["component/173-9",[]],["title/173-10",[82,30.683,88,22.982,233,34.616,619,39.985]],["name/173-10",[]],["text/173-10",[]],["component/173-10",[]],["title/173-11",[8,14.216,89,33.563,90,30.683,91,44.145]],["name/173-11",[]],["text/173-11",[]],["component/173-11",[]],["title/173",[2,11.466,79,27.357]],["name/173",[79,1.146]],["text/173",[2,1.075,3,0.674,4,1.073,7,2.804,8,2.106,14,1.46,15,0.554,16,0.398,17,1.692,22,1.69,25,1.229,26,1.591,27,1.029,28,0.727,36,0.557,37,0.806,44,1.073,46,0.901,47,1.594,50,1.937,51,0.665,52,1.122,53,1.171,57,1.302,58,0.721,61,1.116,67,0.522,75,1.171,77,3.686,78,2.407,79,4.265,80,1.996,81,0.843,82,5.79,83,2.15,84,0.431,85,1,86,1.819,87,4.136,88,1.122,89,1.639,90,1.498,91,2.156,92,2.883,93,0.606,94,1.046,95,1.652,96,0.58,97,1.046,98,1.157,99,0.901,100,1.422,101,1.046,102,1.357,103,1.77,104,1.664,105,0.648,106,2.275,107,1.079,108,1.046,109,0.864,110,0.746,111,1,112,2.11,113,1.436,114,1.073,115,1.073,116,1.719,117,1.996,118,2.171,119,1.33,120,2.136,121,0.781,122,0.864,123,0.815,124,1.553,125,0.694,126,1.808,127,1.194,128,0.789,129,1.24,130,0.447,131,0.679,132,0.767,133,0.901,134,2.009,135,1.313,136,0.781,137,1.891,138,1.422,139,1.313,140,0.789,141,0.864,142,1.416,143,2.385,144,3.855,145,1.313,146,1.073,147,1.482,148,2.805,149,0.64,150,1.313,151,1.313,152,2.009,153,0.733,154,1.924,155,1.369,156,3.164,157,1.046,158,2.194,159,1.382,160,0.733,161,0.901,162,0.721,163,1,164,1.302,165,0.577,166,2.803,167,1.141,168,1.136,169,0.797,170,2.123,171,0.815,172,2.064,173,1.04,174,0.937,175,0.806,176,1.436,177,0.853,178,1.272,179,1.313,180,1.313,181,1.105,182,1.105,183,1.498,184,0.789,185,0.624,186,1,187,2.156,188,1.046,189,1.185,190,0.797,191,0.74,192,2.011,193,1.903,194,0.628,195,1.185,196,1.313,198,1.422,199,2.846,200,1.553,201,1.616,202,4.177,203,0.876,204,1.313,205,1.734,206,0.621,207,1.085,208,1.185,209,0.694,210,1.361,211,3.223,212,4.154,213,0.901,214,0.864,215,1.956,216,1.884,217,0.876,218,1.227,219,1.859,220,1.218,221,1.573,222,1.157,223,1.045,224,0.824,225,1.022,226,0.566,227,0.915,229,0.485,230,0.71,231,2.12,232,2.009,233,3.325,234,1.984,235,1.947,236,2.856,237,1.819,238,2.389,239,2.156,240,2.156,241,2.156,242,2.156,243,0.929,244,2.145,245,0.901,246,2.892,247,2.737,248,1.5,249,1.202,250,1.073,251,1.185,252,1.664,253,1.046,254,0.864,255,0.76,256,0.876,257,0.656,258,0.679,259,1.046,260,1.073,261,1.105,262,1.073,263,0.727,264,1.046,265,1.046,266,1,267,1.105,268,1.073,269,1.313,270,1.185,271,1.157,272,0.876,273,2.009,274,1.022,275,0.962,276,0.721,277,1.073,278,0.98,279,1.046,280,1.185,281,0.524,282,1.185,283,1.313,284,0.806,285,0.71,286,0.753,287,0.98,291,0.888,294,1.105,295,1.466,296,0.962,297,1.045,298,0.632,299,0.513,300,0.929,301,0.661,302,0.833,303,1.313,304,1.313,305,1.185,306,1.313,307,1.313,308,0.529,309,2.255,310,1.5,311,1.214,312,1.416,314,1.777,315,0.684,316,0.962,325,0.789,382,0.656,399,0.929,428,0.929,438,0.593,444,0.945,448,2.824,458,0.781,473,0.563,483,0.929,510,0.824,607,0.843,615,2.256,616,1.903,619,1.073,632,1.022,637,1,652,0.797,732,0.815,741,1.022,755,1,935,0.705,1139,0.98,1160,0.962,1232,2.686,1254,0.789,1293,0.915,1295,2.502,1435,0.843,1466,1.69,1510,5.004,1544,1.24,1579,0.789,1624,0.753,1641,1.046,1680,1.046,1698,2.389,1713,1.141,1727,0.843,1878,1.073,1899,1.24,1997,1.046,2776,1.313,2870,1.073,3653,1.24,3981,1.24,4434,1.425,4435,1.425,4436,2.389,4437,1.425]],["component/173",[2,0.4]],["title/174-1",[166,35.176,317,66.069]],["name/174-1",[]],["text/174-1",[]],["component/174-1",[]],["title/174",[137,18.456,318,44.772,319,31.395]],["name/174",[318,2.204]],["text/174",[2,1.805,6,1.011,22,1.952,27,1.188,73,0.929,79,1.89,81,1.771,83,3.55,105,2.881,119,2.362,130,0.939,137,2.228,153,1.541,192,1.054,201,1.866,222,1.336,224,1.73,255,1.596,271,2.827,299,1.782,318,7.407,319,3.261,320,1.281,321,2.489,322,4.542,323,1.921,324,1.711,325,1.658,326,1.019,327,2.1,328,2.759,329,5.513,330,8.575,331,2.759,332,10.234,333,8.391,334,6.939,335,2.759,336,6.278,337,4.119,338,2.759,339,2.759,340,6.123,341,2.759,342,5.84,343,2.489,344,2.759,345,1.985,346,2.844,347,2.759,348,4.566,349,4.566,350,4.65,351,2.759,352,2.759,353,2.759,354,2.321,355,4.566,356,4.566,357,2.759,358,2.759,359,2.759,360,2.759,361,2.489,362,2.489,363,2.1,364,4.566,365,4.119,366,5.84,367,2.196,368,2.759,369,4.566,370,8.647,371,2.759,372,2.759,373,2.489,374,2.489,375,2.489,376,3.84,377,2.489,378,2.759,379,2.759,380,4.566,381,4.566,382,1.379,383,2.759,384,2.321,385,1.866,386,2.759,387,2.759,388,2.759,389,2.759,390,5.269,391,2.759,392,2.759,393,2.759,394,2.759,395,2.759,396,2.759,397,2.397,398,6.787,399,4.131,400,2.759,401,4.566,402,2.759,403,2.489,404,2.759,405,1.793,406,2.759,407,1.379,408,1.952,409,2.759,410,4.566,411,2.759,412,4.119,413,2.397,414,1.952,415,4.566,416,5.84,417,2.759,418,2.759,419,2.759,420,2.759,421,2.759,422,2.759,423,2.759,424,2.759,425,2.759,426,2.759,427,2.759,428,1.952,429,1.893,430,2.759,431,1.816,432,1.311,433,2.02,434,2.759]],["component/174",[2,0.4]],["title/175-1",[209,34.914,435,44.06]],["name/175-1",[]],["text/175-1",[]],["component/175-1",[]],["title/175-2",[436,55.772]],["name/175-2",[]],["text/175-2",[]],["component/175-2",[]],["title/175-3",[437,49.288,438,29.827]],["name/175-3",[]],["text/175-3",[]],["component/175-3",[]],["title/175-4",[206,23.118,257,24.453,324,30.344,439,44.145]],["name/175-4",[]],["text/175-4",[]],["component/175-4",[]],["title/175-5",[440,34.914,441,40.531]],["name/175-5",[]],["text/175-5",[]],["component/175-5",[]],["title/175-6",[170,42.016]],["name/175-6",[]],["text/175-6",[]],["component/175-6",[]],["title/175-7",[442,42.931,443,37.864]],["name/175-7",[]],["text/175-7",[]],["component/175-7",[]],["title/175",[435,53.413]],["name/175",[435,1.845]],["text/175",[2,1.273,8,1.985,15,0.844,17,1.452,20,1.24,22,2.457,24,2.131,27,2.941,34,1.136,36,0.848,44,0.898,45,1.836,50,2.047,51,1.013,54,1.661,56,1.136,61,1.622,69,1.522,70,4.766,75,2.696,79,0.828,80,1.214,83,1.205,84,2.55,88,0.939,93,0.923,95,0.816,99,1.371,103,1.519,105,0.986,106,3.551,107,0.903,117,4.716,118,1.073,124,1.641,127,0.999,137,1.512,142,1.496,143,2.713,148,1.863,149,0.974,158,2.569,160,2.572,165,1.527,166,1.065,168,0.95,170,2.416,173,0.87,178,1.849,192,1.327,194,1.661,209,1.057,210,2.278,215,1.19,220,3.176,222,2.663,224,1.254,229,1.283,230,1.081,244,0.913,247,4.211,248,0.913,249,1.006,250,2.797,252,1.392,255,1.156,271,1.681,276,1.098,298,1.671,299,2.147,301,2.317,309,1.371,318,1.592,320,2.554,322,1.555,324,1.24,325,1.201,367,1.671,399,1.414,407,1.736,408,1.414,428,1.414,435,3.071,436,3.207,437,5.096,438,3.312,439,4.155,440,2.434,441,2.131,442,4.768,443,1.991,444,3.313,445,1.371,446,1.24,447,3.667,448,1.201,449,2.457,450,1.804,451,1.804,452,1.592,453,1.438,454,1.117,455,1.999,456,1.999,457,1.999,458,1.19,459,1.804,460,1.999,461,1.999,462,1.634,463,1.999,464,1.999,465,1.999,466,1.352,467,3.507,468,1.999,469,1.073,470,1.999,471,1.999,472,1.522,473,3.628,474,1.107,475,4.618,476,4.381,477,1.268,478,2.644,479,1.438,480,2.998,481,1.081,482,3.49,483,3.258,484,1.392,485,4.155,486,4.605,487,2.53,488,4.605,489,3.134,490,1.804,491,1.681,492,2.886,493,2.499,494,1.371,495,1.522,496,1.438,497,1.156,498,1.492,499,1.681,500,1.592,501,1.999,502,1.178,503,1.268,504,2.499,505,2.131,506,2.419,507,1.555,508,1.126,509,1.333,510,2.178,511,4.48,512,6.926,513,1.737,514,1.999,515,1.681,516,4.605,517,1.804,518,1.107,519,1.126,520,2.499,521,4.381,522,1.299,523,1.681,524,1.592,525,1.049,526,1.19,527,2.416,528,1.522,529,1.737,530,1.492,531,3.134,532,1.522,533,1.333,534,1.492,535,1.227,536,1.492,537,4.155,538,1.999,539,1.107,540,1.117,541,1.522,542,1.804,543,1.333,544,2.154,545,1.492,546,2.644,548,1.804,549,1.592,550,1.283,573,1.283,600,1.178,751,1.555,895,1.352,903,1.887,1082,1.073,1466,1.414,1574,1.333,1649,1.634,1807,1.737,1824,3.582,2130,1.464,2551,1.804,2885,1.555,4438,2.169,4439,2.169]],["component/175",[2,0.4]],["title/176-1",[551,55.772]],["name/176-1",[]],["text/176-1",[]],["component/176-1",[]],["title/176-2",[552,52.612,553,36.001]],["name/176-2",[]],["text/176-2",[]],["component/176-2",[]],["title/176-3",[158,26.253,554,31.938,555,47.282]],["name/176-3",[]],["text/176-3",[]],["component/176-3",[]],["title/176-4",[556,72.259]],["name/176-4",[]],["text/176-4",[]],["component/176-4",[]],["title/176-5",[93,30.499,557,46.739]],["name/176-5",[]],["text/176-5",[]],["component/176-5",[]],["title/176",[93,30.499,557,46.739]],["name/176",[557,1.958]],["text/176",[7,3.026,8,1.021,36,1.491,52,2.608,83,2.388,84,1.823,107,1.587,132,2.051,137,2.26,147,2.18,149,2.705,158,2.593,165,1.545,170,1.844,173,2.416,185,1.67,186,2.675,194,2.655,205,1.506,206,1.661,209,1.857,210,1.455,229,2.051,284,2.156,296,2.573,299,2.686,320,4.401,324,2.18,346,1.712,382,3.44,408,5.532,429,2.411,436,2.447,441,3.407,447,2.799,473,2.379,524,4.422,552,4.422,553,3.751,556,5.01,557,2.486,558,2.256,559,6.731,560,2.956,561,2.675,562,2.799,563,4.065,564,3.515,565,1.561,566,2.872,567,2.956,568,4.065,569,3.515,570,3.171,571,6.024,572,3.053,573,2.256,574,7.867,575,2.112,576,2.284,577,3.515,578,2.799,579,8.552,580,9.961,581,3.171,582,3.515,583,9.533,584,1.979,585,2.284,586,2.956,587,4.065,588,4.087,589,3.171,590,3.809,591,5.553,592,1.886,593,3.515,594,1.756,595,3.515,596,3.053,597,3.304,598,5.758,599,6.21,600,3.272,601,5.239,602,2.486,603,1.817,604,2.014,605,2.675]],["component/176",[2,0.4]],["title/177-1",[174,25.897,606,36.29]],["name/177-1",[]],["text/177-1",[]],["component/177-1",[]],["title/177-2",[2,11.466,79,27.357]],["name/177-2",[]],["text/177-2",[]],["component/177-2",[]],["title/177-3",[435,53.413]],["name/177-3",[]],["text/177-3",[]],["component/177-3",[]],["title/177-4",[285,35.719,606,36.29]],["name/177-4",[]],["text/177-4",[]],["component/177-4",[]],["title/177",[220,33.691,607,42.408]],["name/177",[1,1.532]],["text/177",[2,1.758,7,1.632,8,1.226,9,2.108,45,2.23,53,2.068,57,3.485,72,2.486,75,3.135,77,2.382,78,3.089,79,4.511,83,2.68,88,3.004,90,4.011,93,1.948,95,1.722,103,2.797,105,2.081,112,3.469,113,2.535,118,2.263,119,1.707,136,2.51,138,2.51,140,2.535,148,1.707,154,2.005,156,2.317,158,2.987,172,2.151,173,3.75,174,3.028,192,1.611,194,2.017,199,3.458,200,2.741,201,2.853,207,1.915,212,1.993,216,2.418,218,2.166,222,3.739,223,1.845,224,2.646,227,2.938,228,2.535,248,1.926,249,2.122,250,2.872,255,4.986,258,2.182,285,2.281,287,3.147,298,2.03,308,1.699,320,2.97,367,3.077,407,2.108,431,2.777,432,3.672,433,3.089,435,5.152,448,2.535,449,4.525,453,3.035,458,2.51,481,2.281,492,3.355,509,2.814,520,3.035,524,3.36,535,2.588,550,4.106,573,2.708,606,2.317,608,3.211,609,3.548,610,4.219,611,3.548,612,4.219,613,3.282,614,3.548,615,3.983,616,3.36,617,3.36,618,2.616,619,3.448,620,4.219,621,3.665,622,3.211,623,2.646,624,3.211,625,3.089,626,2.894,627,2.418,628,2.985,629,2.894,630,4.219]],["component/177",[2,0.4]],["title/178-1",[149,27.384,631,44.772,632,43.731]],["name/178-1",[]],["text/178-1",[]],["component/178-1",[]],["title/178-2",[8,16.335,633,41.163,634,44.772]],["name/178-2",[]],["text/178-2",[]],["component/178-2",[]],["title/178-3",[8,16.335,635,42.794,636,44.772]],["name/178-3",[]],["text/178-3",[]],["component/178-3",[]],["title/178",[8,19.195,631,52.612]],["name/178",[631,2.204]],["text/178",[2,0.372,3,1.1,4,0.962,8,2.439,10,1.043,15,0.904,16,1.97,19,2.492,27,1.587,32,1.428,44,0.962,54,1.024,58,1.176,59,1.176,61,1,67,1.464,70,1.314,73,0.721,77,2.147,79,2.691,87,1.176,88,2.279,95,0.874,104,1.491,106,1.037,112,2.179,118,1.149,122,2.426,124,1.012,126,2.167,137,1.21,142,1.587,143,1.262,144,3.553,148,2.332,149,3.165,153,1.196,154,1.752,156,1.176,158,2.692,162,2.025,164,1.167,165,0.941,166,1.14,169,1.3,172,1.092,173,0.932,174,2.547,185,1.752,192,0.818,205,2.079,207,0.972,210,1.526,212,2.724,220,1.092,234,1.807,235,1.03,248,1.683,250,0.962,276,1.176,281,0.855,285,1.158,292,1.167,295,3.537,299,1.439,314,1.158,320,0.994,370,7.243,382,3.247,385,1.448,432,3.088,441,1.314,448,1.287,454,1.196,477,1.359,480,1.167,491,1.801,494,2.529,506,1.491,510,1.343,513,1.861,535,2.261,544,2.286,618,3.009,628,1.515,631,5.174,632,6.245,633,4.757,634,3.864,635,2.806,637,3.694,638,1.801,639,2.142,640,1.932,641,1.115,642,1.666,643,3.686,644,2.142,645,2.492,646,1.932,647,5.765,648,8.713,649,1.706,650,1.568,651,2.699,652,2.946,653,2.936,654,1.428,655,1.392,656,1.3,657,2.142,658,1.274,659,1.666,660,1.541,661,1.515,662,1.541,663,2.142,664,1.666,665,1.491,666,2.142,667,2.608,668,1.63,669,2.567,670,2.142,671,2.142,672,2.142,673,2.142,674,1.706,675,1.541,676,1.801,677,1.666,678,2.142,679,1.491,680,1.801,681,2.142,682,2.142,683,2.142,684,1.666,685,1.801,686,2.142,687,3.686,688,2.338,689,1.41,690,1.3,691,1.63,692,2.261,693,1.75,694,3.1,695,3.686,696,2.567,697,7.573,698,2.142,699,2.142,700,2.142,701,2.142,702,5.862,703,7.243,704,2.142,705,4.853,706,1.932,707,2.608,708,1.63,709,2.142,710,1.801,711,2.142,712,1.206,713,1.63,714,2.142,715,3.686,716,3.686,717,2.567,718,2.142,719,2.142,720,3.326,721,4.853,722,4.853,723,4.216,724,4.853,725,4.853,726,7.099,727,4.853,728,4.853,729,4.853,730,2.142,731,1.25,732,1.328,733,2.142,734,1.932,735,2.142,736,2.022,737,1.932,738,2.142,739,1.41,740,1.176,741,2.867,742,1.132,743,2.142,744,1.541,745,2.142,746,1.666,747,3.686,748,1.541,749,0.858,750,1.158,751,1.666,752,1.491,753,1.861,754,1.515,755,1.63,756,1.63]],["component/178",[2,0.4]],["title/179-1",[757,80.094]],["name/179-1",[]],["text/179-1",[]],["component/179-1",[]],["title/179-2",[443,32.222,758,44.772,759,47.282]],["name/179-2",[]],["text/179-2",[]],["component/179-2",[]],["title/179",[2,7.517,83,15.026,443,24.823,758,34.492,759,36.426]],["name/179",[758,2.204]],["text/179",[2,0.469,4,0.868,7,1.305,8,1.439,14,0.859,15,0.44,17,1.41,20,0.647,27,0.449,28,1.071,30,0.609,32,1.289,36,2.954,37,0.64,41,1.35,44,1.78,48,1.369,51,0.528,53,0.511,55,0.726,57,0.568,61,0.487,68,0.609,71,0.578,77,0.72,79,1.858,80,3.263,83,2.781,84,2.509,90,1.694,92,0.64,93,0.892,94,1.539,95,1.618,103,1.475,104,0.726,107,1.789,111,2.567,113,0.627,117,0.633,118,0.559,119,2.817,120,3.492,125,1.022,126,2.57,127,0.966,131,1,137,0.887,138,0.62,140,0.627,142,0.449,147,0.647,148,1.093,149,1.316,153,0.582,154,0.496,155,0.598,157,0.83,158,4.401,160,0.582,165,0.458,168,1.284,170,4.295,172,0.532,173,0.841,177,0.678,186,1.471,191,1.089,192,0.738,194,0.924,199,0.564,200,0.678,201,0.705,202,1.226,205,0.447,206,0.493,207,1.227,209,1.022,210,0.8,211,0.715,212,0.493,217,1.289,220,0.532,225,2.102,226,1.164,229,3.025,235,0.93,236,0.906,244,1.54,247,2.281,248,0.476,249,1.359,250,0.468,251,0.941,255,1.118,257,0.966,260,2.208,271,2.398,281,1.078,284,0.64,285,1.045,298,1.3,299,0.754,302,1.714,308,1.596,309,0.715,320,2.495,346,1.93,382,0.521,405,2.916,408,4.071,429,0.715,432,1.603,433,0.764,435,4.067,436,3.45,440,1.782,441,2.753,443,1.549,444,0.75,445,0.715,447,0.83,448,1.624,449,1.912,453,1.391,454,0.582,467,0.535,469,0.559,473,1.158,474,1.868,475,0.705,476,1.539,477,1.226,479,0.75,481,0.564,487,1.062,492,0.547,497,0.603,499,0.877,500,4.28,502,0.614,503,0.661,507,0.811,510,0.654,526,0.62,527,2.079,528,0.794,532,0.794,534,1.442,536,0.778,541,0.794,553,1.472,554,2.251,555,0.877,557,3.802,558,0.669,559,2.916,563,0.764,565,0.859,567,0.877,568,1.415,571,2.804,573,1.241,574,2.902,576,1.256,579,0.941,580,2.438,581,4.849,583,3.576,584,1.089,588,0.873,589,0.941,594,0.521,597,1.15,598,1.307,605,1.471,607,0.669,618,1.199,622,0.794,626,1.326,632,3.083,637,0.794,638,2.272,651,0.764,652,0.633,655,1.756,656,0.633,662,0.75,665,0.726,677,0.811,708,0.794,742,0.551,746,0.811,749,0.418,750,0.564,758,3.573,759,1.626,760,0.941,761,1.744,762,1.043,763,1.043,764,0.715,765,1.162,766,1.043,767,1.043,768,1.043,769,0.984,770,0.582,771,0.715,772,1.043,773,2.048,774,0.877,775,4.091,776,2.438,777,1.043,778,0.83,779,1.043,780,1.043,781,1.043,782,1.933,783,1.043,784,0.941,785,1.212,787,1.043,788,1.626,789,1.062,790,1.043,791,0.811,792,0.678,793,1.043,794,2.208,795,1.676,796,2.702,797,1.043,798,0.877,799,0.941,800,0.811,801,0.794,802,0.476,803,1.626,804,1.043,805,1.756,806,2.93,807,0.715,808,1.933,809,2.272,810,0.877,811,1.043,812,1.256,813,1.043,814,0.941,815,0.603,816,4.849,817,0.877,818,2.702,819,0.705,820,0.837,821,1.043,822,0.941,823,1.368,824,0.941,825,0.738,826,1.043,827,1.912,828,1.043,829,1.043,830,1.944,831,0.906,832,0.794,833,1.272,834,1.933,835,0.778,836,1.043,837,1.043,838,2.702,839,2.272,840,1.933,841,0.941,842,1.043,843,0.811,844,1.471,845,1.043,846,0.954,847,0.715,848,1.043,849,0.794,850,0.764,851,0.669,852,0.715,853,1.043,854,0.906,855,1.043,856,1.043,857,2.567,858,0.764,859,1.043,860,1.043,861,1.442,862,0.941,863,1.043,864,1.471,865,1.307,866,3.043,867,2.544,868,0.794,870,0.764,871,1.108,872,0.941,873,1.415,874,1.043,875,1.043,876,0.794,877,1.043,878,2.624,879,1.933,880,1.043,881,1.744,882,1.289,883,1.64,884,0.941,885,1.043,886,1.933,887,2.702,888,1.043,889,1.043,890,1.043,891,1.043,892,0.941,893,1.043,894,0.686,895,1.827,896,1.043,897,2.438,898,0.83,899,1.043,900,0.984,901,0.877,902,0.906,903,0.984,904,1.043,905,1.043,906,1.272,907,0.877,908,0.647,909,1.043,910,1.043,911,1.043,912,0.941,913,1.118,914,3.373,915,1.043,916,0.941,917,2.152,918,0.984,919,1.043,920,1.043,921,1.043,922,1.043,923,0.877,924,1.043,925,0.75,926,0.678,927,1.043,928,1.043,929,1.043,930,0.941,931,0.778,932,0.764,933,1.933,934,1.256,935,1.037,936,1.043,937,1.58,938,1.307,939,0.695,940,0.726,941,1.933,942,1.043,943,1.043,944,0.75,945,1.043,946,1.043,947,1.139,948,0.778,949,0.941,950,1.626,951,0.794,952,0.877,953,0.877,954,0.877,955,0.83,956,1.043,957,3.373,958,1.043,959,0.941,960,1.043,961,0.877,962,1.043,963,1.539,964,0.984,965,0.764,966,0.695,967,0.794,1550,0.906,1824,0.811,1923,0.811,1960,0.941,4440,1.132,4441,1.132]],["component/179",[2,0.4]],["title/180",[895,54.154]],["name/180",[895,1.871]],["text/180",[2,1.147,15,0.931,16,1.146,17,2.073,18,1.586,27,0.949,32,1.47,36,1.603,52,1.775,68,1.287,71,2.093,73,0.742,81,1.415,83,3.822,103,0.964,104,2.631,106,1.067,107,1.706,119,2.675,127,2.478,128,1.325,137,2.671,148,0.892,158,3.969,165,0.969,174,1.944,176,1.325,178,1.174,181,1.854,182,1.854,194,1.807,195,1.989,206,1.042,207,1.001,211,1.512,220,2.997,221,2.487,229,1.832,235,1.061,237,1.678,244,1.006,245,1.512,246,1.211,281,0.88,295,1.352,299,1.475,309,1.512,311,1.396,315,1.148,320,1.024,334,2.819,336,4.056,343,3.409,346,3.22,365,1.989,385,1.491,405,2.456,407,3.304,408,1.56,414,1.56,429,1.512,435,1.47,444,2.718,445,3.402,448,1.325,454,1.231,487,1.211,492,1.157,523,3.178,526,1.312,550,1.415,552,1.756,555,1.854,563,3.631,571,3.509,574,3.631,608,1.678,626,1.512,629,1.512,650,6.223,664,1.715,665,1.535,669,1.535,680,1.854,688,1.398,708,1.678,710,1.854,731,1.287,742,1.997,761,1.989,773,5.351,789,3.228,841,1.989,894,1.451,912,3.409,935,1.183,937,1.802,965,2.767,968,1.678,969,2.205,970,2.205,971,2.205,972,2.205,973,2.205,974,2.205,975,2.205,976,2.205,977,4.309,978,2.205,979,2.205,980,1.47,981,1.587,982,2.205,983,2.205,984,4.96,985,2.205,986,2.205,987,2.205,988,1.915,989,2.205,990,2.205,991,2.205,992,2.248,993,1.535,994,1.915,995,1.989,996,2.205,997,1.989,998,2.205,999,2.205,1000,3.858,1001,2.205,1002,3.009,1003,2.205,1004,3.009,1005,1.989,1006,2.767,1008,4.171,1009,3.779,1010,2.205,1011,1.854,1012,2.205,1013,5.878,1014,2.205,1015,2.205,1016,1.678,1017,2.081,1018,1.802,1019,2.205,1020,2.205,1021,1.678,1022,2.205,1023,1.854,1024,2.205,1025,2.205,1026,2.205,1027,2.205,1028,4.474,1029,1.854,1030,2.205,1031,2.205,1032,2.205,1033,2.205,1034,2.205,1035,5.303,1036,1.989,1037,3.567,1038,1.854,1039,1.854,1040,4.96,1041,1.47,1042,1.756,1043,2.205,1044,1.989,1045,1.989,1046,1.854,1047,1.756,1048,1.854,1049,1.854,1050,1.989,1051,2.205,1052,2.205,1053,2.205,1054,2.205,1055,3.779,1056,3.779,1057,1.645,1058,2.205,1059,1.802,1060,2.205,1061,2.205,1062,2.205,1063,2.205,1064,2.205,1065,2.205,1066,1.989,1067,1.854,1068,2.205,1069,2.205,1070,2.205,1071,2.205,1072,2.205,1073,1.915,1074,2.205,1075,2.205,1076,2.205,1077,4.474,1078,3.409,1079,3.088,1080,2.205,1081,2.205,1082,1.183,1083,1.678,1084,2.205,1085,2.205,1086,2.205,1087,2.205,1088,2.205,1089,2.205,1090,2.205,1091,2.147,1092,2.205,1093,2.205,1094,2.205,1095,2.081,1096,1.854]],["component/180",[2,0.4]],["title/181",[207,36.358]],["name/181",[207,1.256]],["text/181",[2,1.706,5,4.135,83,3.41,95,3.195,109,5.15,126,3.495,194,3.742,207,3.552,250,4.414,408,6.954,530,5.838,635,5.956,775,7.483,934,5.085,1000,6.086,1041,5.218,1097,8.869,1098,7.825,1099,7.825,1100,7.825,1101,5.838,1102,6.581,1103,4.702,1104,4.8,1105,7.825]],["component/181",[2,0.4]],["title/182-1",[551,55.772]],["name/182-1",[]],["text/182-1",[]],["component/182-1",[]],["title/182-2",[802,36.56]],["name/182-2",[]],["text/182-2",[]],["component/182-2",[]],["title/182-3",[212,31.214,256,44.06]],["name/182-3",[]],["text/182-3",[]],["component/182-3",[]],["title/182-4",[6,24.21,212,31.214]],["name/182-4",[]],["text/182-4",[]],["component/182-4",[]],["title/182-5",[100,39.308,212,31.214]],["name/182-5",[]],["text/182-5",[]],["component/182-5",[]],["title/182-6",[5,34.914,77,24.608]],["name/182-6",[]],["text/182-6",[]],["component/182-6",[]],["title/182-7",[84,16.062,212,23.118,913,28.297,1574,32.632]],["name/182-7",[]],["text/182-7",[]],["component/182-7",[]],["title/182-8",[6,15.872,100,25.77,105,21.366,308,17.441,1674,37.63]],["name/182-8",[]],["text/182-8",[]],["component/182-8",[]],["title/182",[192,25.234,229,24.407]],["name/182",[1,1.532]],["text/182",[2,1.302,4,1.88,5,0.935,6,3.099,7,1.62,8,2.418,14,0.786,15,1.767,17,0.396,19,1.891,22,0.671,24,0.582,25,2.569,26,2.444,27,1.071,28,0.525,36,0.402,41,2.319,44,1.117,45,0.501,47,0.632,51,1.58,52,0.445,53,1.53,54,1.189,57,1.355,58,0.972,61,0.826,67,0.703,68,0.553,71,0.525,73,0.319,74,0.582,75,1.53,77,3.046,79,2.938,83,1.278,84,2.399,86,0.722,92,1.085,93,0.817,95,3.21,97,0.755,98,0.856,100,5.032,102,1.005,103,1.611,104,0.66,105,0.468,106,0.459,107,0.428,108,0.755,109,0.624,110,0.539,112,2.974,118,0.509,119,0.383,122,5.382,123,0.588,125,0.935,127,0.884,130,2.338,133,1.213,137,2.897,142,1.071,146,0.775,148,2.456,149,0.862,155,2.111,156,0.521,158,1.955,162,0.521,164,0.517,165,0.778,166,1.324,173,1.082,174,0.693,176,1.063,178,0.505,184,1.875,192,3.88,193,0.755,194,0.453,198,1.48,202,0.601,205,1.578,206,0.836,207,0.803,208,0.855,209,0.935,212,4.221,220,0.483,222,0.459,223,1.088,226,0.408,227,0.66,229,3.26,230,0.513,231,1.257,234,0.867,235,0.851,244,0.808,247,1.682,248,1.424,249,0.89,250,0.794,254,0.624,255,0.548,256,1.18,271,2.624,273,0.797,274,0.737,284,0.582,286,1.014,292,0.964,293,0.775,297,0.415,298,0.851,299,1.218,301,1.57,308,2.445,311,1.714,314,2.73,315,2.416,320,0.44,325,1.495,326,1.865,345,1.273,363,0.722,367,0.851,382,0.474,407,0.884,443,1.014,446,0.588,454,2.057,462,1.446,473,0.758,483,0.671,487,0.972,492,0.928,503,0.601,506,1.732,509,0.632,518,1.728,525,0.497,539,0.525,542,0.855,543,0.632,548,0.855,551,0.66,554,0.539,558,1.136,592,0.509,597,1.053,600,0.559,602,0.671,603,1.286,607,0.608,611,0.797,614,0.797,623,2.31,625,0.694,633,0.694,641,1.295,650,0.694,652,2.542,654,0.632,655,0.616,658,1.48,660,0.682,684,1.376,689,0.624,731,2.444,740,0.521,749,1.86,801,0.722,802,1.681,810,1.488,812,1.15,820,0.766,844,0.722,846,0.468,849,0.722,851,2.003,906,0.624,908,0.588,913,0.548,931,1.32,934,0.616,935,1.334,947,2.734,966,1.18,992,0.564,993,0.66,1011,0.797,1079,0.775,1091,2.636,1113,0.671,1119,1.674,1120,1.252,1154,1.252,1184,0.722,1234,4.38,1249,1.344,1265,1.894,1280,0.462,1282,0.65,1291,0.755,1293,0.66,1296,0.707,1298,0.694,1314,1.946,1318,0.855,1322,2.054,1339,2.909,1366,0.594,1375,0.624,1390,2.508,1408,0.632,1420,0.48,1429,1.252,1445,1.821,1457,1.376,1461,0.543,1468,0.505,1471,0.632,1474,1.273,1495,0.65,1506,0.66,1516,0.582,1527,0.671,1528,0.576,1549,0.737,1569,0.497,1574,1.659,1579,0.57,1593,0.755,1601,0.694,1602,0.895,1603,0.855,1623,1.659,1624,0.543,1627,0.671,1657,0.797,1665,0.855,1669,0.855,1670,0.66,1674,0.824,1675,0.948,1676,0.948,1677,3.094,1678,0.948,1679,1.821,1680,0.755,1681,0.855,1682,0.755,1683,1.164,1684,0.948,1685,0.948,1686,0.948,1687,1.769,1688,1.981,1689,0.671,1690,0.855,1691,0.948,1692,0.948,1693,0.948,1694,0.948,1695,0.948,1696,0.948,1697,2.485,1708,0.755,1710,1.769,1711,0.948,1712,0.948,1713,0.824,1714,0.797,1715,1.446,1716,0.797,1718,2.244,1719,2.244,1720,1.596,1721,0.855,1730,0.948,1731,0.948,1732,0.948,1733,1.537,1734,0.775,1735,1.769,1736,0.948,1737,0.948,1738,0.694,1739,0.948,1740,0.855,1741,0.948,1742,5.049,1743,0.948,1744,0.797,1745,1.769,1746,0.895,1747,0.755,1748,0.895,1749,1.488,1750,0.948,1751,1.769,1753,1.537,1754,2.487,1759,0.707,1761,0.948,1762,0.855,1764,0.948,1765,1.769,1766,0.855,1767,1.769,1768,0.855,1769,0.948,1770,0.855,1771,0.671,1772,0.948,1773,0.948,1774,0.855,1775,0.855,1776,0.948,1778,0.641,1779,0.775,1780,0.895,1781,0.948,1783,0.797,1784,0.855,1785,0.948,1786,0.948,1787,0.824,1788,0.755,1789,0.895,1790,0.737,1791,1.596,1792,1.769,1793,0.948,1935,0.737,2045,0.671,2288,0.616,4442,1.029,4443,1.029]],["component/182",[2,0.4]],["title/183-1",[79,20.261,1468,26.052,1794,38.965,1795,39.985]],["name/183-1",[]],["text/183-1",[]],["component/183-1",[]],["title/183",[246,36.29,505,40.531]],["name/183",[294,2.327]],["text/183",[8,2.183,14,2.332,41,2.624,44,2.357,77,1.955,79,4.683,80,3.187,83,3.324,92,3.221,122,3.455,127,2.624,148,2.124,154,3.572,158,3.509,166,2.795,174,2.058,175,3.221,192,3.352,202,4.767,210,2.174,219,4.083,220,4.476,234,4.302,235,4.222,246,2.884,249,2.641,294,4.415,298,2.525,314,2.838,428,3.714,437,3.916,438,2.37,442,6.589,458,3.123,467,2.696,481,2.838,544,3.256,545,3.916,553,2.861,623,3.292,669,3.656,690,3.187,806,4.561,1468,2.795,1473,3.221,1551,4.181,1670,3.656,1680,4.181,1778,5.081,1794,8.075,1795,4.29,1796,5.845,1797,4.736,1798,4.736,1801,3.714,1802,5.25,1803,4.736,1804,6.32,1904,4.083,2099,4.561,2283,4.561,2613,3.916,4444,5.696]],["component/183",[2,0.4]],["title/184",[967,60.964]],["name/184",[1,1.532]],["text/184",[2,1.623,8,2.718,83,3.245,93,4.318,158,4.368,286,5.361,432,4.446,607,6.005,1082,5.019]],["component/184",[2,0.4]],["title/185",[137,16.062,440,25.858,527,25.669,528,37.244]],["name/185",[527,1.452]],["text/185",[30,5.365,126,4.105,137,3.017,297,4.019,440,4.857,527,4.822,528,6.996,1082,4.931,1796,7.149,1824,7.149,4445,9.973]],["component/185",[2,0.4]],["title/186",[229,24.407,669,46.006]],["name/186",[1805,2.767]],["text/186",[8,2.647,76,6.077,126,4.069,229,3.366,297,3.984,669,6.345,717,6.345,1082,5.787,1471,6.077,1803,8.22,1806,9.112]],["component/186",[2,0.4]],["title/187-1",[48,33.462,438,29.827]],["name/187-1",[]],["text/187-1",[]],["component/187-1",[]],["title/187-2",[221,43.481,1807,57.399]],["name/187-2",[]],["text/187-2",[]],["component/187-2",[]],["title/187-3",[492,29.494,662,40.443,690,34.131]],["name/187-3",[]],["text/187-3",[]],["component/187-3",[]],["title/187-4",[7,25.56,773,40.108]],["name/187-4",[]],["text/187-4",[]],["component/187-4",[]],["title/187",[]],["name/187",[617,2.204]],["text/187",[2,1.019,5,1.47,8,2.5,13,1.049,15,1.174,48,2.327,54,2.197,59,1.528,76,1.855,79,1.903,83,3.236,93,1.284,95,2.397,102,1.58,103,1.216,105,2.897,106,1.346,118,1.492,123,1.725,124,1.314,125,1.47,126,1.242,136,1.655,137,0.913,141,1.83,148,1.125,154,1.322,156,2.524,158,3.797,159,2.658,164,2.504,165,1.223,166,1.481,173,3.285,191,1.566,192,1.755,194,1.33,198,1.655,203,1.855,207,2.086,210,1.903,216,2.634,221,5.352,224,1.744,244,1.27,249,1.399,250,2.063,252,1.937,257,1.39,289,1.655,292,1.515,297,2.01,298,2.825,302,1.764,311,1.027,407,1.39,438,2.075,478,3.498,480,4.115,482,2.915,487,2.524,490,2.509,492,1.459,496,2.001,525,1.459,535,1.706,543,1.855,544,1.725,550,1.785,553,1.515,565,2.041,571,1.967,576,1.807,597,2.734,600,1.639,617,4.676,629,3.152,633,2.036,636,2.215,658,1.655,659,2.163,690,2.79,732,1.725,739,1.83,749,1.115,750,1.504,751,2.163,752,5.992,770,2.566,795,2.85,799,7.337,800,4.568,847,3.152,858,2.036,895,1.88,925,2.001,967,3.498,981,2.467,1082,2.465,1097,2.509,1104,1.706,1119,1.492,1124,2.117,1162,1.908,1202,2.215,1203,2.339,1241,2.634,1254,1.671,1262,1.908,1310,2.95,1316,1.937,1323,1.671,1339,1.744,1437,4.378,1534,1.725,1573,1.855,1794,2.215,1796,2.163,1807,2.416,1808,1.58,1809,2.781,1810,2.273,1811,2.781,1812,2.509,1813,4.595,1814,6.35,1815,8.132,1816,2.781,1817,2.781,1818,2.625,1819,2.781,1820,2.781,1821,2.781,1822,2.781,1823,2.509,1824,2.163,1825,2.781,1826,2.781,1827,2.339,1828,2.339,1829,2.781,1830,3.992,1831,2.416,1832,2.781,1833,2.781,1834,4.939,1835,4.595,1836,4.595,1837,4.595,1838,4.595,1839,2.781,1840,2.339,1844,4.595,1845,3.865,1847,2.781,1849,2.781,1850,2.781,1851,2.781,1852,2.339,1853,2.036,1854,2.781,1855,2.781,1856,2.036,1858,2.781,1859,2.781,1860,2.781,1861,2.781,4446,3.018]],["component/187",[2,0.4]],["title/188-1",[95,22.954,299,21.941,535,34.491]],["name/188-1",[]],["text/188-1",[]],["component/188-1",[]],["title/188-2",[32,37.494,165,24.714,1862,47.282]],["name/188-2",[]],["text/188-2",[]],["component/188-2",[]],["title/188-3",[80,40.108,1778,44.671]],["name/188-3",[]],["text/188-3",[]],["component/188-3",[]],["title/188",[80,40.108,192,25.234]],["name/188",[80,1.68]],["text/188",[2,0.877,3,1.161,6,1.852,8,2.392,11,1.469,14,1.716,15,2.523,17,0.945,27,1.663,32,4.477,44,1.015,45,2.041,54,1.081,65,1.627,73,0.761,75,2.93,77,2.5,79,3.687,80,4.075,83,0.785,88,1.062,93,1.044,95,1.577,96,2.234,100,1.345,103,1.689,105,1.116,106,1.095,107,2.699,117,3.069,118,2.072,122,1.488,123,1.402,124,2.388,125,1.195,126,1.725,127,1.93,130,0.77,131,1.997,137,0.742,142,0.974,144,1.656,149,1.101,154,1.075,158,2.36,160,1.263,165,0.994,166,1.204,170,1.186,172,2.578,173,1.68,175,2.369,192,3.678,202,2.45,205,0.969,206,1.068,209,1.195,212,2.824,221,1.488,226,0.974,228,1.359,231,1.555,233,1.6,244,3.338,250,3.014,252,6.957,253,1.801,255,3.457,257,1.13,273,1.902,276,2.776,285,1.223,286,1.296,292,1.232,297,0.989,298,2.432,299,0.883,301,1.138,311,1.427,315,1.178,324,1.402,327,2.94,367,1.858,442,4.362,472,1.721,473,1.655,477,3.792,478,1.721,482,1.434,483,3.576,518,1.252,519,1.274,521,3.075,525,1.186,529,1.965,530,1.687,535,5.629,537,2.04,539,2.139,540,1.263,550,1.452,568,5.354,600,1.332,602,2.732,609,1.902,616,3.075,641,1.178,652,1.373,654,1.508,764,1.551,765,3.037,785,1.418,789,1.242,791,1.759,801,4.55,802,2.307,908,1.402,917,1.801,931,2.881,932,1.656,1029,1.902,1119,2.712,1162,1.551,1182,2.04,1293,1.575,1356,1.32,1408,1.508,1423,1.529,1450,1.434,1624,1.296,1647,2.04,1670,1.575,1697,1.801,1726,5.643,1744,1.902,1778,1.529,1794,4.025,1797,2.04,1798,2.04,1810,1.848,1862,7.226,1863,3.862,1864,5.055,1865,1.529,1866,1.902,1867,2.261,1868,2.261,1869,2.261,1870,2.261,1871,2.261,1872,1.848,1873,1.721,1874,5.055,1875,3.862,1876,2.261,1877,2.261,1878,1.848,1879,2.261,1880,1.902,1881,5.055,1882,1.801,1883,1.902,1884,3.484,1885,2.261,1886,2.261,1887,3.646,1888,2.261,1889,2.261,1890,2.261,1891,1.801,1892,2.261,1893,2.261,1894,2.261,1895,2.261,1896,2.261,1897,2.261,1898,2.261,1899,2.135,1900,2.261,1901,3.862,1902,2.261,1903,2.881,1904,3.932,1905,2.261]],["component/188",[2,0.4]],["title/189",[1906,67.357]],["name/189",[1906,2.327]],["text/189",[8,2.625,30,5.273,80,5.484,126,4.034,192,3.45,297,3.95,432,4.293,554,5.132,1082,4.846,1796,7.026,1906,7.597,1907,9.034,1908,9.034]],["component/189",[2,0.4]],["title/190-1",[218,33.925,770,36.893]],["name/190-1",[]],["text/190-1",[]],["component/190-1",[]],["title/190-2",[635,60.964]],["name/190-2",[]],["text/190-2",[]],["component/190-2",[]],["title/190",[218,33.925,224,41.429]],["name/190",[1,1.532]],["text/190",[2,1.485,3,1.823,4,1.594,5,1.876,7,3.815,9,1.774,17,2.34,25,2.941,37,2.178,44,1.594,51,1.798,53,2.743,54,1.698,75,1.74,77,3.386,79,4.582,82,3.51,83,1.232,84,1.165,93,1.639,95,2.285,98,3.807,100,2.112,103,3.03,112,4.273,113,2.133,117,2.155,122,2.336,124,2.644,125,1.876,127,2.797,130,1.209,137,2.582,138,2.112,140,2.133,148,2.803,156,1.95,158,1.658,166,1.89,170,1.862,173,1.544,174,1.392,178,1.89,184,2.133,191,1.999,199,4.252,205,1.521,206,1.677,207,1.612,210,1.47,211,2.435,212,2.644,213,3.839,214,2.336,215,2.112,216,3.971,221,2.336,222,1.718,226,1.529,231,3.167,234,3.396,235,3.783,245,2.435,246,4.701,250,1.594,255,2.053,284,2.178,298,1.708,299,2.184,308,1.43,527,1.862,543,2.368,554,2.017,558,2.279,565,2.486,594,1.774,635,2.702,652,2.155,676,2.986,677,2.761,692,2.178,740,1.95,820,1.537,926,2.307,940,2.472,1203,2.986,1205,2.279,1290,2.986,1501,1.966,1624,3.208,1670,2.472,1778,2.4,1830,3.084,1852,2.986,1909,2.435,1915,3.55,1916,2.761,1917,3.55,1918,3.55,1919,2.554,1920,3.55,1921,3.203,1922,3.203,1923,2.761,1924,3.55,1925,3.55,1926,3.55,1927,2.649,1928,3.55,1929,3.55,1930,3.55,2187,5.284,2188,3.351,4447,3.852,4448,3.852,4449,3.852]],["component/190",[2,0.4]],["title/191-1",[117,48.623]],["name/191-1",[]],["text/191-1",[]],["component/191-1",[]],["title/191-2",[1919,57.614]],["name/191-2",[]],["text/191-2",[]],["component/191-2",[]],["title/191-3",[1932,58.64]],["name/191-3",[]],["text/191-3",[]],["component/191-3",[]],["title/191-4",[213,54.939]],["name/191-4",[]],["text/191-4",[]],["component/191-4",[]],["title/191-5",[216,45.902]],["name/191-5",[]],["text/191-5",[]],["component/191-5",[]],["title/191-6",[216,37.864,1933,59.605]],["name/191-6",[]],["text/191-6",[]],["component/191-6",[]],["title/191",[138,47.653]],["name/191",[138,1.646]],["text/191",[7,1.369,8,1.028,40,1.555,41,5.066,45,4.148,88,4.013,102,2.01,109,2.329,110,2.01,112,2.507,117,4.197,120,3.627,123,2.194,124,3.266,127,5.187,137,1.162,143,2.085,148,3.456,156,5.913,170,1.856,173,3.95,184,2.126,205,1.516,210,2.311,212,1.672,213,3.829,214,2.329,222,1.713,297,1.547,301,1.78,311,1.307,441,2.171,493,2.545,518,3.829,524,2.818,525,1.856,606,1.944,689,2.329,690,3.389,710,2.976,742,1.87,908,5.298,916,3.192,1120,2.503,1162,3.829,1202,2.818,1339,2.219,1624,4.499,1814,9.052,1834,9.299,1862,2.976,1919,4.973,1921,3.192,1932,5.062,1933,3.192,1938,4.55,1939,9.85,1942,3.538,1943,3.538,1944,3.192,1945,3.192,1946,5.582,1948,3.538,1952,2.64,1953,3.538,1954,3.538,1956,3.538,1957,3.538,1963,6.006,1964,4.85,1965,3.538,1966,3.074,1967,3.538,1968,5.582,1969,3.538,1970,3.538,1971,3.192,1972,3.34,1981,8.544,1982,3.538,1983,3.192,1984,5.582,1985,2.464,2978,2.976]],["component/191",[2,0.4]],["title/192-1",[117,48.623]],["name/192-1",[]],["text/192-1",[]],["component/192-1",[]],["title/192-2",[1919,57.614]],["name/192-2",[]],["text/192-2",[]],["component/192-2",[]],["title/192-3",[1932,58.64]],["name/192-3",[]],["text/192-3",[]],["component/192-3",[]],["title/192-4",[213,54.939]],["name/192-4",[]],["text/192-4",[]],["component/192-4",[]],["title/192-5",[216,45.902]],["name/192-5",[]],["text/192-5",[]],["component/192-5",[]],["title/192",[136,39.308,786,36.893]],["name/192",[1923,2.152]],["text/192",[8,2.125,44,1.734,45,4.351,74,2.37,88,3.867,90,2.422,93,1.783,116,2.779,117,3.629,123,2.395,124,2.825,126,1.725,128,2.321,136,3.557,137,2.401,143,4.851,148,4.382,156,6.12,160,2.157,173,3.582,177,2.51,205,1.655,210,2.476,213,4.101,216,5.103,222,2.894,250,3.284,297,1.689,298,1.858,299,1.508,346,1.881,441,2.37,474,2.139,517,5.394,518,4.05,525,2.026,604,2.214,740,2.122,786,2.157,802,1.763,908,5.106,1041,2.576,1202,3.076,1241,2.214,1438,2.422,1488,3.005,1624,4.719,1919,4.301,1922,9.397,1923,4.65,1932,4.377,1938,4.813,1963,3.356,1964,3.356,1986,6.904,1987,3.647,1989,3.485,1990,3.863,1994,8.034,1995,3.863,1996,3.356,1997,3.076,1998,2.612,1999,3.863,2000,3.863,2001,5.979,2002,5.194,2003,5.979,2004,5.174,2005,5.979,2006,5.979,2007,5.979,2008,5.979,2009,5.394,2010,5.979,2011,3.863,2012,3.863,4450,4.191,4451,4.191,4452,4.191]],["component/192",[2,0.4]],["title/193-1",[117,48.623]],["name/193-1",[]],["text/193-1",[]],["component/193-1",[]],["title/193-2",[1919,57.614]],["name/193-2",[]],["text/193-2",[]],["component/193-2",[]],["title/193-3",[1932,58.64]],["name/193-3",[]],["text/193-3",[]],["component/193-3",[]],["title/193-4",[213,54.939]],["name/193-4",[]],["text/193-4",[]],["component/193-4",[]],["title/193-5",[216,45.902]],["name/193-5",[]],["text/193-5",[]],["component/193-5",[]],["title/193-6",[4453,80.094]],["name/193-6",[]],["text/193-6",[]],["component/193-6",[]],["title/193-7",[4454,86.904]],["name/193-7",[]],["text/193-7",[]],["component/193-7",[]],["title/193-8",[4455,80.094]],["name/193-8",[]],["text/193-8",[]],["component/193-8",[]],["title/193",[140,48.129]],["name/193",[140,1.663]],["text/193",[8,1.953,34,1.287,36,0.961,44,1.018,45,3.552,46,1.555,50,1.335,51,1.148,53,1.896,56,1.287,74,1.39,79,3.032,81,2.484,88,3.157,89,2.654,93,3.97,102,2.876,106,1.873,110,1.287,117,2.349,120,1.473,123,2.399,124,2.828,126,2.673,127,2.992,128,5.519,130,1.317,133,1.555,136,1.348,137,0.744,140,5.355,148,3.479,153,1.266,155,4.482,156,5.848,159,1.311,160,2.161,165,2.225,169,2.349,171,1.405,173,3.185,176,1.362,178,1.207,184,1.362,192,0.866,194,1.084,199,1.225,205,2.169,207,1.029,213,1.555,216,2.217,217,1.511,219,1.763,221,3.332,222,2.898,229,1.429,230,1.225,234,2.482,235,1.09,236,1.969,244,2.732,248,1.034,250,1.737,252,1.578,275,2.833,276,4.022,285,1.225,286,2.217,297,3.603,298,2.88,301,1.947,325,2.325,367,1.861,436,1.578,473,2.565,479,1.63,483,1.603,487,1.245,492,2.03,518,3.722,519,1.276,539,1.255,607,1.455,658,2.302,665,1.578,692,1.39,696,2.694,740,1.245,770,2.161,795,3.14,805,3.29,830,2.783,908,3.712,925,1.63,937,1.852,968,1.725,1119,3.606,1148,2.139,1222,1.852,1241,5.523,1284,2.139,1335,1.969,1339,2.426,1354,1.532,1378,1.421,1437,1.455,1488,1.763,1494,1.852,1501,1.255,1516,1.39,1565,1.659,1584,1.852,1624,3.431,1626,2.514,1674,1.969,1734,1.852,1791,2.045,1810,1.852,1911,2.266,1913,2.266,1919,1.63,1932,1.659,1935,1.763,1938,3.94,1964,1.969,1998,1.532,2018,2.266,2027,3.869,2045,1.603,2046,2.266,2047,3.361,2048,2.514,2076,1.852,2077,1.691,2078,1.852,2088,1.763,2093,1.969,2203,2.139,2220,1.906,2291,1.225,2294,1.511,2603,1.969,2823,3.653,3151,1.763,3204,1.725,3513,2.045,3569,2.045,3663,2.139,4134,3.653,4453,5.063,4455,2.266,4456,2.459,4457,2.459,4458,2.459,4459,2.459,4460,2.459,4461,2.459,4462,2.459,4463,2.459,4464,2.459,4465,2.459,4466,4.198,4467,2.459,4468,2.459,4469,2.459,4470,4.198,4471,2.459,4472,2.459,4473,4.198]],["component/193",[2,0.4]],["title/194-1",[44,29.665,170,34.658]],["name/194-1",[]],["text/194-1",[]],["component/194-1",[]],["title/194",[6,24.21,1104,40.531]],["name/194",[1,1.532]],["text/194",[165,4.344,1255,6.991,1479,7.521]],["component/194",[2,0.4]],["title/195-1",[27,16.731,84,12.754,192,14.839,212,18.356,229,14.353,442,25.247]],["name/195-1",[]],["text/195-1",[]],["component/195-1",[]],["title/195-2",[132,28.56,218,25.126,220,24.952,2051,33.084]],["name/195-2",[]],["text/195-2",[]],["component/195-2",[]],["title/195-3",[84,18.456,654,37.494,1508,42.794]],["name/195-3",[]],["text/195-3",[]],["component/195-3",[]],["title/195-4",[84,21.688,218,33.925]],["name/195-4",[]],["text/195-4",[]],["component/195-4",[]],["title/195-5",[345,40.443,519,31.663,1516,34.491]],["name/195-5",[]],["text/195-5",[]],["component/195-5",[]],["title/195-6",[84,21.688,544,40.971]],["name/195-6",[]],["text/195-6",[]],["component/195-6",[]],["title/195-7",[84,21.688,2052,48.371]],["name/195-7",[]],["text/195-7",[]],["component/195-7",[]],["title/195-8",[174,19.18,320,22.717,449,34.616,559,31.796]],["name/195-8",[]],["text/195-8",[]],["component/195-8",[]],["title/195-9",[84,18.456,559,36.534,1938,37.002]],["name/195-9",[]],["text/195-9",[]],["component/195-9",[]],["title/195-10",[84,14.218,148,17.521,206,20.464,748,31.157,835,32.313]],["name/195-10",[]],["text/195-10",[]],["component/195-10",[]],["title/195-11",[77,20.941,84,18.456,202,35.663]],["name/195-11",[]],["text/195-11",[]],["component/195-11",[]],["title/195-12",[84,19.714,148,15.716,442,25.247,504,27.948,526,23.116]],["name/195-12",[]],["text/195-12",[]],["component/195-12",[]],["title/195",[2,8.492,79,20.261,84,16.062,207,22.212]],["name/195",[79,0.663,207,0.727]],["text/195",[2,0.958,4,1.283,5,0.694,7,1.272,8,1.07,9,0.656,11,0.853,14,0.307,15,0.792,17,1.374,20,0.814,24,0.806,27,1.586,33,0.389,34,0.393,44,1.073,45,0.365,50,0.774,52,0.882,53,0.644,54,0.897,56,0.746,58,1.57,61,0.876,68,0.767,70,0.424,72,1.106,74,0.424,75,0.92,77,1.961,79,3.368,82,0.824,83,2.219,84,3.503,86,2.175,88,2.06,89,0.474,93,1.103,95,0.282,102,1.623,103,0.821,105,1.816,106,0.908,107,1.079,110,1.357,116,0.497,117,2.235,119,1.774,122,3.285,124,1.912,125,0.694,126,0.587,127,0.345,131,0.357,132,2.362,133,0.474,137,1.543,142,1.029,143,1.106,144,2.406,147,0.814,148,4.181,153,0.386,154,1.358,155,0.753,158,1.89,159,0.4,160,1.048,168,0.892,170,0.362,172,0.352,173,0.816,174,0.736,175,0.806,176,1.717,177,0.449,178,0.999,184,0.415,185,0.624,186,1,190,0.419,192,3.725,194,1.142,198,0.411,202,3.653,205,0.296,206,0.326,207,1.991,209,0.365,210,1.816,212,0.621,215,0.411,218,2.958,220,2.545,222,1.782,226,0.298,227,0.915,229,3.044,232,0.581,234,0.339,235,1.375,244,1.847,247,3.894,248,1.681,249,0.348,250,0.59,252,0.481,253,0.55,255,0.4,257,0.656,261,0.581,262,0.565,263,0.383,265,1.046,266,0.526,271,0.334,276,2.409,278,0.516,285,0.374,286,0.753,287,0.98,297,1.045,298,0.632,299,1.579,300,0.489,301,1.438,302,1.19,308,0.278,311,0.883,314,2.541,325,0.789,327,0.526,345,0.497,346,0.337,367,0.903,382,2.023,407,1.643,429,0.474,431,0.455,432,0.624,436,4.168,440,0.365,442,3.743,445,0.901,448,0.415,449,1.328,458,2.191,466,0.467,467,0.355,469,1.763,472,0.526,473,1.734,477,1.516,479,0.497,480,2.39,481,4.562,482,1.516,483,0.929,484,0.481,492,1.253,493,0.497,494,0.901,495,1,496,0.945,497,0.76,498,0.516,500,1.903,502,1.684,503,0.833,504,1.719,505,1.151,510,1.177,519,0.74,521,1.903,522,0.449,525,2.123,526,0.781,533,0.461,543,0.461,544,1.772,545,0.516,546,1.819,549,1.903,550,0.444,554,0.393,559,4.979,560,1.105,565,0.307,568,0.506,571,1.328,574,1.374,576,0.449,578,1.495,584,0.74,585,1.22,586,1.105,587,1.374,588,2.973,590,0.901,597,0.781,598,0.467,601,1,605,0.526,607,0.843,624,0.526,629,1.639,641,0.36,652,0.797,654,0.876,655,0.853,660,0.497,661,0.929,688,0.438,689,0.864,690,1.451,713,2.502,732,0.814,739,0.455,740,1.312,742,0.365,748,1.719,749,0.277,754,0.489,756,0.526,770,0.386,788,0.581,792,0.449,801,0.526,812,0.449,823,0.489,830,0.497,844,0.526,846,0.341,847,2.255,850,0.506,852,0.474,873,0.506,883,0.419,894,0.864,898,0.55,908,0.429,913,1.085,925,0.945,926,0.449,932,0.962,935,1.533,938,0.467,944,0.497,947,2.17,954,0.581,955,0.55,980,0.461,992,0.411,1114,0.489,1119,0.371,1190,0.581,1205,1.205,1225,0.581,1238,0.623,1241,2.11,1242,1,1245,1.495,1262,0.474,1281,0.581,1293,0.481,1316,0.481,1319,0.581,1336,0.506,1339,1.177,1354,0.467,1405,1.177,1423,0.467,1429,0.929,1437,1.205,1461,0.753,1468,0.699,1469,0.55,1499,1.593,1501,0.383,1509,1.495,1516,0.806,1556,0.526,1569,0.985,1579,0.789,1583,0.537,1589,0.506,1591,0.55,1618,0.55,1619,0.623,1623,0.461,1624,0.396,1637,0.481,1640,0.481,1649,0.565,1652,0.438,1671,0.526,1677,0.461,1679,1.374,1707,0.497,1714,0.581,1715,0.565,1729,0.833,1738,0.506,1747,1.046,1749,0.581,1760,0.455,1778,1.269,1804,1.578,1824,0.537,1882,0.55,1909,0.474,1916,0.537,1940,0.467,1952,0.516,2004,1.328,2048,0.449,2051,0.888,2052,3.655,2053,0.537,2054,1.185,2055,0.623,2056,0.623,2057,0.691,2058,1.287,2059,0.581,2060,0.581,2061,1.185,2062,1.313,2063,0.691,2064,1.903,2065,6.934,2066,0.623,2067,4.385,2068,1.578,2069,1.693,2070,0.581,2071,0.497,2072,0.623,2073,0.565,2074,0.691,2075,0.526,2076,1.073,2077,0.516,2078,1.073,2079,1.578,2080,0.623,2081,0.433,2082,0.581,2083,3.03,2084,0.623,2085,0.691,2087,0.962,2088,0.537,2089,0.691,2090,0.691,2091,1.313,2092,0.623,2093,1.631,2094,0.623,2095,0.623,2096,0.581,2097,0.623,2098,0.623,2099,1.631,2100,0.623,2101,0.623,2102,1.046,2103,3.322,2104,0.623,2105,4.992,2110,1.105,2111,0.581,2112,0.623,2113,1.877,2114,0.623,2115,2.156,2116,0.581,2117,0.691,2118,0.691,2119,0.623,2120,0.691,2121,0.623,2122,0.623,2123,0.581,2124,0.623,2125,0.623,2126,0.623,2127,0.691,2129,0.98,2130,0.506,2131,0.623,2132,1.4,2133,0.497,2134,0.623,2135,0.506,2136,0.623,2137,0.623,2138,0.526,2139,0.581,2140,0.355,2141,0.407,2142,0.691,2143,0.623,2144,0.691,2145,1.185,2146,0.55,2147,0.55,2148,0.55,2149,0.691,2150,0.623,2151,0.623,2152,0.581,2153,1.185,2154,0.516,2155,0.581,2156,0.565,2157,0.623,2158,0.526,2159,0.623,2160,0.623,2212,1.772,4474,0.691,4475,0.691,4476,1.877,4477,0.75]],["component/195",[2,0.4]],["title/196",[84,25.897,846,27.734]],["name/196",[1,1.532]],["text/196",[]],["component/196",[2,0.4]],["title/197-1",[2161,80.094]],["name/197-1",[]],["text/197-1",[]],["component/197-1",[]],["title/197-2",[84,16.062,125,25.858,127,24.453,218,25.126]],["name/197-2",[]],["text/197-2",[]],["component/197-2",[]],["title/197-3",[84,18.456,218,28.87,1469,44.772]],["name/197-3",[]],["text/197-3",[]],["component/197-3",[]],["title/197-4",[27,24.211,84,18.456,442,36.534]],["name/197-4",[]],["text/197-4",[]],["component/197-4",[]],["title/197-5",[132,28.56,218,25.126,220,24.952,2051,33.084]],["name/197-5",[]],["text/197-5",[]],["component/197-5",[]],["title/197-6",[84,18.456,654,37.494,1508,42.794]],["name/197-6",[]],["text/197-6",[]],["component/197-6",[]],["title/197-7",[84,21.688,218,33.925]],["name/197-7",[]],["text/197-7",[]],["component/197-7",[]],["title/197-8",[345,40.443,519,31.663,1516,34.491]],["name/197-8",[]],["text/197-8",[]],["component/197-8",[]],["title/197-9",[84,21.688,544,40.971]],["name/197-9",[]],["text/197-9",[]],["component/197-9",[]],["title/197-10",[84,21.688,2052,48.371]],["name/197-10",[]],["text/197-10",[]],["component/197-10",[]],["title/197-11",[174,19.18,320,22.717,449,34.616,559,31.796]],["name/197-11",[]],["text/197-11",[]],["component/197-11",[]],["title/197-12",[84,18.456,559,36.534,1938,37.002]],["name/197-12",[]],["text/197-12",[]],["component/197-12",[]],["title/197-13",[84,14.218,215,25.77,299,16.903,526,25.77,2079,36.426]],["name/197-13",[]],["text/197-13",[]],["component/197-13",[]],["title/197-14",[84,14.218,148,17.521,206,20.464,748,31.157,835,32.313]],["name/197-14",[]],["text/197-14",[]],["component/197-14",[]],["title/197-15",[77,20.941,84,18.456,202,35.663]],["name/197-15",[]],["text/197-15",[]],["component/197-15",[]],["title/197-16",[148,19.793,244,22.335,298,23.539,2162,44.145]],["name/197-16",[]],["text/197-16",[]],["component/197-16",[]],["title/197-17",[84,19.714,148,15.716,442,25.247,504,27.948,526,23.116]],["name/197-17",[]],["text/197-17",[]],["component/197-17",[]],["title/197-18",[525,34.658,1824,51.389]],["name/197-18",[]],["text/197-18",[]],["component/197-18",[]],["title/197-19",[155,32.222,252,39.15,525,29.494]],["name/197-19",[]],["text/197-19",[]],["component/197-19",[]],["title/197-20",[1671,50.288,2158,50.288]],["name/197-20",[]],["text/197-20",[]],["component/197-20",[]],["title/197",[2,11.466,84,21.688]],["name/197",[84,0.908]],["text/197",[0,0.394,2,0.999,3,0.24,4,1.071,5,0.894,6,0.331,7,1.045,8,1.421,9,0.452,10,0.228,11,1.332,13,0.638,14,0.402,15,1.267,16,0.142,17,1.254,20,0.561,24,0.555,25,0.175,27,1.839,31,0.287,32,0.874,33,0.509,34,0.266,36,0.383,37,0.287,38,0.214,44,3.295,45,0.478,46,0.321,50,0.773,51,0.237,52,0.616,53,0.443,54,0.98,56,0.514,58,1.31,59,0.257,61,0.612,63,0.251,65,0.337,68,0.528,70,0.555,72,1.592,74,0.804,75,0.443,77,2.306,78,0.343,79,2.178,80,0.284,82,1.694,83,2.7,84,3.508,86,1.816,87,1.126,88,2.551,89,0.62,90,0.293,93,1.247,95,0.691,96,0.399,98,0.227,99,0.321,101,0.373,102,1.355,103,0.896,105,1.48,106,0.819,107,0.925,109,0.308,110,0.745,111,0.356,112,0.92,113,0.788,115,0.382,116,0.337,117,2.155,119,1.538,120,0.304,121,0.538,122,2.502,124,1.677,125,0.894,126,0.404,127,0.846,131,0.467,132,2.492,136,0.278,137,2.237,142,1.027,143,0.533,144,2.598,147,0.561,148,4.072,149,0.228,153,0.945,154,1.56,155,1.175,158,1.262,159,0.271,160,0.732,165,0.901,166,0.249,168,0.623,170,0.888,171,0.29,172,0.461,173,1.175,174,0.514,175,0.555,176,1.017,177,0.852,178,1.091,184,0.281,185,0.804,186,1.288,190,0.549,192,1.032,194,0.809,198,0.278,199,0.253,202,3.927,205,1.286,206,0.619,207,0.212,209,0.247,210,1.674,212,1.418,214,0.308,215,0.538,216,0.268,218,2.075,220,2.494,222,1.589,226,0.565,227,0.629,229,0.484,232,2.76,234,0.443,235,1.148,239,2.707,240,2.707,241,2.707,242,2.707,244,2.142,246,0.257,247,3.173,248,1.37,249,0.235,250,0.92,252,1.178,253,0.373,255,0.271,257,0.452,258,0.467,261,0.76,262,0.382,263,0.259,265,0.72,266,0.356,271,1.155,276,1.648,278,0.349,285,0.915,286,0.518,287,0.978,291,0.316,292,0.255,295,0.555,296,0.343,297,1.043,298,1.579,299,1.909,300,0.331,301,1.785,302,1.3,305,0.422,308,0.188,311,0.625,314,2.055,315,0.244,319,0.261,320,0.42,321,0.422,324,0.29,325,0.543,327,0.688,336,0.555,345,0.337,346,0.228,367,0.631,382,1.35,403,0.816,405,0.304,407,1.192,408,0.64,414,0.331,429,0.321,431,0.308,432,0.804,433,0.343,436,3.406,440,0.247,442,3.739,445,0.321,448,0.788,449,2.123,454,0.505,458,1.22,466,0.611,467,0.464,469,1.45,472,0.356,473,1.922,474,0.501,476,0.373,477,2.564,479,0.65,480,1.789,481,4.162,482,1.3,483,2.123,484,1.178,487,1.126,492,0.888,493,0.65,494,0.62,495,0.688,496,1.217,497,0.523,498,0.349,499,0.394,500,1.632,502,0.533,503,0.573,504,1.474,505,0.287,509,0.874,510,0.822,511,0.337,519,0.509,520,0.337,521,1.632,522,0.304,525,2.566,526,1.007,533,0.312,535,0.287,539,0.726,543,0.603,544,1.479,545,0.674,546,1.816,549,1.044,550,0.3,554,0.266,559,4.501,560,0.76,565,0.208,568,0.343,571,1.197,574,1.239,576,0.304,578,1.044,584,0.738,585,0.852,586,0.76,587,0.96,588,2.666,590,0.62,597,0.78,598,0.316,601,0.998,602,0.64,603,0.242,605,0.356,607,1.086,608,0.356,623,0.293,624,0.688,625,0.96,626,0.321,629,2.608,640,0.422,641,0.244,652,0.549,654,0.603,655,0.852,658,0.538,661,0.64,662,0.65,688,0.297,690,0.796,693,0.382,697,0.422,713,1.816,732,0.813,734,0.422,737,0.422,739,0.595,740,0.93,742,0.478,748,1.716,749,0.188,750,1.108,752,0.326,754,0.331,756,0.356,764,0.321,770,0.945,788,0.394,789,0.257,792,0.304,795,0.29,805,0.304,812,0.304,830,0.337,839,0.394,844,0.356,846,0.231,847,2.929,850,0.343,852,0.321,868,0.356,873,0.662,883,0.284,894,0.863,895,0.611,898,0.373,908,0.29,913,0.758,925,0.65,926,0.304,938,0.316,944,0.337,947,1.934,952,0.394,954,0.394,955,0.373,961,0.394,980,0.312,992,0.278,993,0.326,1002,0.373,1016,0.998,1021,0.356,1057,0.349,1096,0.394,1101,0.349,1110,0.261,1119,0.251,1124,0.356,1158,0.72,1173,0.321,1190,0.394,1205,1.086,1225,0.394,1231,0.394,1237,0.422,1241,2.034,1242,0.688,1245,1.348,1255,0.331,1259,0.788,1260,0.788,1262,0.321,1281,0.394,1282,0.321,1289,0.312,1293,0.326,1301,0.394,1316,0.326,1323,0.281,1336,0.343,1339,1.061,1354,0.316,1372,0.356,1373,0.331,1405,1.061,1420,0.237,1423,0.316,1429,0.928,1437,0.842,1461,0.97,1468,0.481,1470,0.356,1478,0.343,1479,0.356,1499,0.603,1501,0.726,1509,1.632,1510,0.407,1516,0.555,1521,0.343,1522,0.356,1523,0.422,1556,0.356,1557,0.422,1569,1.075,1578,0.343,1579,0.543,1581,0.373,1585,0.356,1588,0.422,1589,0.662,1591,0.373,1618,0.373,1623,0.603,1624,0.268,1627,0.331,1637,0.326,1640,0.326,1641,0.373,1649,0.382,1652,0.573,1664,0.422,1670,0.326,1671,0.356,1677,0.312,1679,0.662,1701,0.373,1707,0.337,1714,0.394,1715,0.382,1729,0.297,1740,0.422,1747,0.373,1760,0.308,1778,1.386,1783,0.394,1796,0.364,1804,2.006,1824,0.703,1878,0.382,1882,1.348,1909,0.62,1916,0.364,1940,0.316,1952,0.349,1971,0.422,1985,0.326,1998,0.316,2004,1.45,2024,0.442,2045,0.331,2048,0.304,2051,0.611,2052,3.581,2054,0.422,2055,0.422,2056,0.422,2058,0.62,2059,0.394,2060,0.76,2061,1.183,2064,1.348,2066,0.422,2068,2.006,2069,0.816,2070,0.394,2071,0.337,2072,0.422,2073,0.382,2075,0.356,2076,0.739,2077,1.262,2078,0.739,2079,1.423,2080,0.816,2081,0.293,2082,0.394,2083,2.724,2084,0.422,2087,0.662,2092,0.422,2093,2.347,2094,0.816,2095,0.422,2096,0.394,2097,0.422,2098,0.422,2099,1.47,2100,0.422,2101,0.422,2102,0.72,2103,4.048,2104,0.422,2110,0.76,2111,0.394,2112,0.422,2114,0.422,2115,2.152,2116,0.394,2119,0.422,2121,0.422,2122,0.422,2123,0.76,2124,0.816,2125,0.422,2126,0.422,2129,0.674,2130,0.343,2131,0.422,2132,1.262,2133,0.337,2134,2.152,2135,0.343,2136,0.422,2137,0.422,2138,0.356,2139,0.76,2140,0.24,2141,0.276,2143,0.422,2145,1.183,2146,0.72,2147,0.373,2148,1.632,2150,0.422,2151,0.422,2152,0.394,2153,0.816,2154,0.349,2155,0.394,2156,0.382,2159,0.422,2160,0.422,2162,0.816,2164,0.904,2165,2.05,2166,0.468,2167,1.311,2168,1.311,2169,0.468,2170,0.904,2171,0.904,2172,0.904,2173,0.343,2174,1.527,2175,0.468,2176,0.468,2177,0.422,2178,0.468,2179,0.373,2180,0.468,2181,0.468,2182,0.468,2183,0.468,2184,0.468,2185,0.468,2186,0.468,2187,0.442,2188,0.442,2189,0.468,2190,0.468,2191,0.468,2192,0.468,2193,0.468,2194,0.407,2195,0.468,2196,0.468,2197,0.904,2198,0.468,2199,0.904,2201,0.468,2202,0.468,2203,0.442,2204,0.904,2205,0.382,2210,0.468,2211,1.311,2212,1.598,2213,0.468,2215,0.468,2216,0.468,2218,0.904,2219,0.468,2220,0.394,2221,3,2222,0.468,2223,0.468,2224,0.816,2225,0.904,2226,0.468,2227,0.468,2228,0.468,2229,0.904,2230,0.468,2231,0.468,2233,0.468,2234,0.468,2235,0.468,2236,0.468,2237,0.422,2238,0.468,2239,0.422,2240,0.422,2241,0.394,2242,0.468,2243,0.468,2244,0.468,2245,0.468,2246,0.468,2247,0.468,2248,0.468,2249,0.468,2250,0.468,4436,3,4474,0.468,4475,0.468,4476,1.311,4478,3.256,4479,0.508,4480,0.508,4481,0.508]],["component/197",[2,0.4]],["title/198-1",[8,19.195,2251,59.605]],["name/198-1",[]],["text/198-1",[]],["component/198-1",[]],["title/198-2",[84,21.688,207,29.991]],["name/198-2",[]],["text/198-2",[]],["component/198-2",[]],["title/198-3",[559,36.534,629,38.565,1677,37.494]],["name/198-3",[]],["text/198-3",[]],["component/198-3",[]],["title/198",[84,18.456,846,27.734,2052,41.163]],["name/198",[846,1.365]],["text/198",[2,1.272,5,0.941,8,0.911,13,1.183,24,1.925,41,0.889,44,3.462,50,1.848,58,1.723,61,0.831,77,1.168,79,2.643,82,1.967,83,2.986,84,1.899,87,1.723,88,2.997,93,1.448,103,1.372,106,0.861,107,0.803,112,1.409,118,0.955,119,3.88,124,1.482,133,1.221,134,1.497,137,3.284,138,1.059,140,1.885,143,1.049,147,2.609,148,3.119,153,0.994,154,0.846,155,4.201,158,2.98,160,1.752,166,0.948,172,0.908,178,0.948,192,0.68,198,1.866,202,1.99,207,1.424,209,0.941,210,0.737,222,2.036,223,0.778,229,0.657,234,2.835,235,1.509,243,2.976,244,4.378,248,2.315,250,0.799,263,2.808,265,1.417,266,4.402,271,2.036,276,3.177,285,0.962,286,1.02,289,1.059,297,1.372,302,1.99,311,1.159,314,2.741,320,0.826,326,0.657,407,1.568,431,1.171,432,1.999,458,1.059,473,0.763,480,0.97,481,4.169,483,2.219,492,0.934,527,2.207,532,1.355,535,2.581,539,3.534,546,3.202,559,2.733,587,1.303,588,2.289,590,1.221,594,0.889,600,1.848,602,4.092,607,2.014,624,3.86,626,2.885,628,2.219,629,3.478,651,1.303,653,1.417,655,1.156,658,1.059,692,1.092,739,2.065,749,0.713,775,4.858,778,1.417,795,1.104,803,2.638,805,1.156,812,2.038,823,1.259,825,2.976,846,0.878,847,1.221,864,4.402,868,1.355,873,2.297,913,1.029,932,2.297,940,1.239,944,1.28,947,1.049,992,1.059,1016,2.388,1119,0.955,1151,5.082,1205,5.525,1241,1.798,1262,2.152,1285,1.497,1366,1.116,1389,1.497,1390,1.696,1405,1.116,1413,0.884,1429,2.219,1435,1.142,1461,1.02,1471,2.805,1488,4.964,1510,2.725,1555,1.497,1623,1.187,1640,1.239,1707,1.28,1775,1.606,1812,1.606,1856,1.303,1923,1.384,1938,1.171,1985,2.184,2052,4.234,2053,1.384,2068,5.367,2071,1.28,2078,1.454,2102,4.606,2110,5.367,2111,1.497,2116,5.367,2123,5.367,2173,1.303,2174,1.606,2251,6.613,2252,1.606,2253,1.417,2254,1.78,2255,1.78,2256,1.78,2257,1.78,2258,1.78,2259,1.606,2260,4.207,2261,3.137,2262,3.137,2263,3.137,2264,1.78,2265,1.78,2266,3.137,2267,3.137,2268,1.606,2269,1.78,2270,1.78,2271,1.78,2272,2.44,2273,1.454,2274,1.78,2275,1.78,2276,1.78,2277,1.78,2279,1.497,2280,1.497,2281,1.497,2282,1.78,4482,1.931,4483,1.931]],["component/198",[2,0.4]],["title/199",[2253,63.781]],["name/199",[1,1.532]],["text/199",[]],["component/199",[2,0.4]],["title/200-1",[235,31.783,1468,35.176]],["name/200-1",[]],["text/200-1",[]],["component/200-1",[]],["title/200-2",[1468,35.176,2283,57.399]],["name/200-2",[]],["text/200-2",[]],["component/200-2",[]],["title/200-3",[676,55.562,2284,59.605]],["name/200-3",[]],["text/200-3",[]],["component/200-3",[]],["title/200",[39,30.396,235,27.047,1683,37.002]],["name/200",[39,0.609,235,0.542,1683,0.742]],["text/200",[3,2.215,4,1.157,6,1.58,7,1.669,8,2.415,14,1.916,15,1.821,26,2.088,27,2.395,30,1.504,31,1.581,39,4.233,41,1.288,44,1.157,51,1.305,58,1.415,61,1.203,63,1.382,71,1.427,73,1.452,79,1.786,93,1.19,95,2.271,103,1.127,110,2.45,131,1.333,137,2.862,161,2.958,162,1.415,166,1.372,168,1.225,170,3.412,171,1.598,173,1.121,174,1.01,175,1.581,176,1.549,185,1.225,192,2.765,205,1.104,210,2.693,212,1.217,217,2.876,223,1.127,226,1.11,229,1.593,231,2.24,234,1.263,235,5.172,244,1.176,248,2.539,250,1.157,258,1.333,276,1.415,284,3.99,290,1.922,297,1.127,298,1.24,301,1.296,308,1.038,310,1.176,311,2.055,312,1.857,325,1.549,326,1.593,367,3.129,432,1.225,438,1.947,441,1.581,443,4.996,458,1.533,474,1.427,481,2.332,509,1.719,511,1.854,519,1.451,526,1.533,553,1.404,592,2.314,597,2.566,603,2.23,662,1.854,684,6.467,690,2.618,789,2.369,805,1.675,807,1.768,832,3.283,846,1.271,906,1.696,925,1.854,938,1.742,947,2.541,966,4.337,968,1.961,1139,1.922,1184,1.961,1241,1.477,1248,1.654,1265,1.564,1282,1.768,1307,4.57,1310,1.654,1322,1.696,1339,1.616,1366,3.488,1388,3.891,1390,1.393,1395,4.528,1408,1.719,1447,2.167,1461,1.477,1472,2.325,1490,1.451,1501,3.08,1529,1.768,1569,1.352,1578,1.887,1627,1.823,1683,4.764,1708,7.215,1722,1.451,1724,2.004,1808,1.464,1909,1.768,1916,2.004,1938,1.696,1985,1.794,2058,1.768,2279,5.47,2283,6.289,2284,2.325,2285,4.313,2286,2.004,2287,2.577,2288,2.803,2289,2.577,2290,2.577,2291,1.393,2292,2.577,2293,2.577,2294,4.828,2295,2.325,2296,3.283,2297,2.577,2298,2.577,2299,2.325,2300,2.577,2301,2.577,2302,2.167,2303,2.325,2304,2.325,2305,2.325,2306,2.577,2307,2.004,2308,2.004,2309,2.577,2310,2.433,2311,4.313,2312,2.577,2313,2.577,2314,2.577,2315,2.577]],["component/200",[2,0.4]],["title/201",[6,14.237,25,14.531,79,16.088,137,12.754,228,23.347,4484,42.157]],["name/201",[25,0.599,820,0.693]],["text/201",[6,3.398,25,3.468,192,3.541,210,3.839,262,7.577,367,4.461,1448,7.212,1795,8.906,4485,10.061]],["component/201",[2,0.4]],["title/202-1",[112,25.245,231,22.638,518,31.135]],["name/202-1",[]],["text/202-1",[]],["component/202-1",[]],["title/202",[83,22.92,1688,52.612]],["name/202",[1688,2.204]],["text/202",[2,0.598,3,0.714,4,1.547,6,0.922,7,0.973,8,1.733,14,0.617,15,1.454,17,0.581,19,0.714,25,0.52,26,1.667,27,1.82,30,2.011,33,0.783,41,1.722,44,1.129,51,0.704,52,0.653,54,0.664,57,0.757,61,0.649,67,0.999,68,1.468,71,0.77,73,0.847,77,0.937,83,1.195,95,2.615,100,4.248,102,0.789,103,0.608,106,0.673,107,1.555,112,2.678,120,2.238,122,2.267,124,0.657,125,1.329,128,1.511,130,2.031,131,1.781,132,0.811,137,3.758,146,4.466,148,1.017,149,1.678,154,0.661,159,0.804,164,0.757,166,0.74,168,0.661,173,1.838,176,2.07,191,0.783,192,3.727,194,0.664,199,1.36,205,1.078,209,1.329,212,1.997,220,0.709,223,1.848,229,2.638,230,0.751,231,0.56,233,0.983,244,2.923,248,1.148,249,0.699,250,0.624,268,1.136,274,5.284,276,1.892,285,0.751,289,0.827,297,0.608,299,1.344,302,2.681,311,1.561,320,2.537,325,0.835,326,3.188,407,1.722,432,1.195,446,0.862,459,1.254,469,0.746,482,0.882,487,1.381,502,0.819,506,0.968,507,1.081,509,1.677,510,1.577,518,5.135,563,1.017,565,1.117,568,1.841,592,0.746,597,2.91,598,1.701,602,0.983,604,0.796,613,1.081,623,0.871,628,1.779,641,0.724,717,0.968,749,1.008,773,1.527,775,5.435,776,2.269,785,0.871,795,2.621,802,1.148,803,1.169,812,0.903,816,1.254,817,1.169,820,1.829,822,1.254,825,0.983,846,0.686,854,1.207,871,0.796,938,1.701,947,5.288,966,2.297,980,0.927,1066,1.254,1091,1.429,1096,1.169,1114,0.983,1142,1.136,1162,0.953,1222,1.136,1248,1.614,1249,1.542,1265,2.091,1280,0.677,1282,0.953,1314,3.938,1339,3.067,1366,2.65,1374,1.254,1390,0.751,1397,1.081,1445,2.522,1446,1.254,1468,0.74,1495,3.749,1527,1.779,1569,0.729,1589,1.841,1673,1.169,1677,5.624,1679,1.017,1682,1.107,1688,4.75,1697,1.107,1718,2.269,1719,2.269,1720,2.269,1722,0.783,1724,1.081,1727,0.892,1749,1.169,1753,2.185,1766,1.254,1768,2.269,1770,2.269,1771,0.983,2002,2.185,2004,1.779,2051,1.701,2083,0.844,2087,1.017,2288,2.238,2307,1.081,2336,1.107,2571,1.107,2590,1.136,2687,1.136,2807,1.169,2954,4.931,2999,1.107,3004,1.136,3012,1.254,3158,2.003,3244,1.207,3708,2.897,3845,1.207,4015,1.254,4119,1.254,4131,1.39,4132,3.445,4133,1.39,4134,1.312,4135,1.39,4136,1.39,4137,2.515,4138,1.169,4139,1.254,4140,1.39,4141,1.39,4142,1.39,4143,1.39,4144,1.39,4145,1.39,4146,1.39,4147,1.39,4148,1.39,4149,1.39,4150,1.39,4151,1.39,4152,1.39,4153,1.39,4154,1.39,4155,2.515,4156,1.39,4157,3.445,4158,1.39,4159,1.39,4160,1.39,4161,4.226,4162,1.39,4163,1.39,4164,4.226,4165,1.39,4166,1.39,4167,5.465,4168,1.39,4169,1.39,4170,2.515,4171,1.39,4172,1.39,4173,1.39,4174,1.39,4175,1.39,4176,2.515,4177,1.39,4178,1.39,4179,3.445,4180,1.39,4181,1.39,4182,1.39,4183,2.515,4184,1.39,4185,1.39,4186,1.39,4187,1.39,4188,2.515,4189,1.39,4190,1.39,4191,1.39,4192,1.39,4193,1.39,4194,1.39,4195,1.39,4196,1.39,4197,1.39,4198,1.39,4199,1.39,4200,1.39]],["component/202",[2,0.4]],["title/203",[231,22.638,1322,37.002,1529,38.565]],["name/203",[1529,1.898]],["text/203",[3,4.274,4,1.941,6,0.947,8,2.418,13,1.63,26,1.25,33,3.138,37,1.585,44,1.16,47,1.723,52,1.213,56,2.455,73,2.193,103,1.13,119,1.045,125,1.365,137,3.231,143,5.344,166,1.375,174,1.013,210,1.07,223,2.848,228,2.597,229,0.954,248,1.179,264,3.442,281,1.725,297,1.13,311,1.597,326,2.058,367,1.243,438,2.515,443,1.48,469,5.48,481,1.397,553,3.55,575,1.552,584,1.455,592,1.386,641,1.345,659,2.009,712,5.273,771,2.965,873,1.891,901,2.172,980,1.723,1103,1.552,1119,1.386,1287,3.193,1307,4.858,1322,1.7,1336,1.891,1387,3.7,1390,2.337,1392,5.639,1438,1.62,1461,1.48,1506,1.799,1528,1.568,1529,1.772,1722,1.455,1856,1.891,2060,2.172,2140,1.326,2294,1.723,2346,1.827,3078,6.368,3158,4.437,3266,3.635,3267,3.755,3268,2.172,3271,2.331,3273,5.877,3276,2.331,3351,3.635,3514,2.244,3635,5.027,3694,2.331,3714,2.331,3797,2.331,3867,5.877,3869,3.899,3919,2.331,4138,2.172,4201,2.583,4202,2.583,4203,2.583,4204,2.583,4205,7.249,4206,7.839,4207,4.322,4208,5.572,4209,5.572,4210,5.572,4211,5.572,4212,5.572,4213,4.322,4214,5.572,4215,10.513,4216,4.322,4217,2.583,4218,4.322,4219,2.583,4220,2.583,4221,2.583,4222,2.583,4223,3.899,4224,4.322,4225,4.686,4226,2.583,4227,3.635,4228,4.322,4229,4.686,4230,2.583,4231,4.322,4232,4.322,4233,5.572,4234,2.583,4235,2.583,4236,2.583,4237,2.583,4238,2.583,4239,4.322,4240,2.583,4241,2.583,4242,2.583,4243,2.583,4244,2.172,4245,2.583,4246,2.583,4247,2.583,4248,2.583]],["component/203",[2,0.4]],["title/204-1",[3,33.925,326,24.407]],["name/204-1",[]],["text/204-1",[]],["component/204-1",[]],["title/204-2",[326,24.407,1495,45.318]],["name/204-2",[]],["text/204-2",[]],["component/204-2",[]],["title/204-3",[326,20.77,540,31.395,981,23.619]],["name/204-3",[]],["text/204-3",[]],["component/204-3",[]],["title/204-4",[981,27.755,1395,38.208]],["name/204-4",[]],["text/204-4",[]],["component/204-4",[]],["title/204-5",[264,52.612,981,27.755]],["name/204-5",[]],["text/204-5",[]],["component/204-5",[]],["title/204-6",[981,27.755,4225,55.562]],["name/204-6",[]],["text/204-6",[]],["component/204-6",[]],["title/204-7",[981,27.755,4227,55.562]],["name/204-7",[]],["text/204-7",[]],["component/204-7",[]],["title/204-8",[981,27.755,4250,59.605]],["name/204-8",[]],["text/204-8",[]],["component/204-8",[]],["title/204-9",[981,27.755,4244,55.562]],["name/204-9",[]],["text/204-9",[]],["component/204-9",[]],["title/204-10",[110,37.531,981,27.755]],["name/204-10",[]],["text/204-10",[]],["component/204-10",[]],["title/204-11",[130,22.494,981,27.755]],["name/204-11",[]],["text/204-11",[]],["component/204-11",[]],["title/204-12",[981,27.755,4251,59.605]],["name/204-12",[]],["text/204-12",[]],["component/204-12",[]],["title/204-13",[981,27.755,3767,55.562]],["name/204-13",[]],["text/204-13",[]],["component/204-13",[]],["title/204-14",[3,33.925,981,27.755]],["name/204-14",[]],["text/204-14",[]],["component/204-14",[]],["title/204-15",[981,27.755,1626,42.931]],["name/204-15",[]],["text/204-15",[]],["component/204-15",[]],["title/204-16",[981,27.755,4229,55.562]],["name/204-16",[]],["text/204-16",[]],["component/204-16",[]],["title/204-17",[162,43.994]],["name/204-17",[]],["text/204-17",[]],["component/204-17",[]],["title/204",[749,26.482,1322,43.481]],["name/204",[1322,1.821]],["text/204",[3,4.617,4,1.086,6,0.488,7,0.735,8,2.119,9,0.95,14,0.311,15,1.403,17,1.011,19,0.36,24,0.43,25,0.262,26,0.339,27,0.818,28,0.737,31,0.816,33,0.395,39,3.944,41,1.208,44,0.853,45,1.756,47,0.467,48,0.355,50,1.12,52,0.329,53,0.343,58,2.606,73,1.875,74,0.43,81,1.552,93,0.877,95,1.669,100,0.792,103,1.057,106,0.339,107,0.601,109,0.461,110,1.642,112,0.315,114,0.573,118,0.376,124,0.331,125,1.278,126,1.662,130,1.808,131,1.718,132,0.409,133,0.481,137,2.611,141,1.902,142,1.041,149,1.812,153,1.061,159,2.364,160,2.078,161,3.254,162,2.044,164,1.318,165,0.308,166,1.012,168,0.632,170,0.368,171,0.825,174,1.133,176,0.421,184,0.421,185,1.943,190,1.154,191,0.395,192,1.812,199,0.379,200,0.455,205,0.3,206,0.331,209,0.37,210,0.551,215,0.417,223,1.788,229,0.259,230,0.379,231,1.164,233,0.941,248,1.699,249,0.352,257,1.445,258,2.114,264,4.011,271,0.339,279,2.302,281,3.726,284,1.483,288,2.264,289,0.417,292,1.036,296,0.513,297,0.582,298,0.337,301,0.669,308,0.282,311,2.894,315,0.693,320,1.543,326,4.074,346,0.341,367,0.337,382,0.35,407,0.95,429,0.481,443,0.763,454,0.391,469,2.193,477,1.206,481,0.379,491,0.589,492,0.368,502,0.413,505,0.43,518,2.264,522,0.455,525,0.368,535,0.816,539,1.84,540,0.391,565,0.311,575,0.8,588,1.846,592,1.996,600,1.425,603,2.29,604,2.538,618,0.435,622,0.533,623,1.192,628,0.496,641,0.365,645,0.474,650,0.513,652,0.425,660,0.504,661,0.941,667,0.496,689,2.449,690,0.808,712,2.671,740,0.385,742,0.37,749,1.332,750,0.379,754,0.496,765,0.421,807,3.037,814,0.632,820,0.303,825,0.496,831,0.609,844,0.533,857,0.533,871,1.657,894,0.461,913,0.405,934,0.455,944,0.504,959,0.632,981,4.411,1091,0.398,1103,1.737,1110,0.391,1119,0.376,1142,1.087,1154,0.496,1205,0.45,1249,1.055,1252,4.268,1265,0.425,1287,1.905,1288,0.808,1307,2.172,1310,2.842,1311,1.739,1312,1.684,1314,0.37,1315,0.362,1322,0.461,1323,0.421,1366,0.439,1378,0.439,1387,3.548,1389,0.589,1390,1.307,1395,2.743,1398,1.119,1406,1.513,1410,1.201,1413,0.348,1420,0.674,1423,1.285,1435,0.854,1437,0.854,1438,2.084,1445,2.116,1449,0.9,1461,0.402,1463,1.391,1466,0.496,1468,0.373,1473,0.816,1495,4.138,1498,1.06,1499,0.887,1501,1.339,1554,0.589,1561,2.28,1569,1.269,1574,0.467,1578,1.391,1589,0.513,1601,0.513,1623,0.467,1625,0.632,1626,1.878,1646,0.573,1652,0.444,1677,0.467,1681,1.201,1682,2.302,1683,1.591,1707,0.504,1708,6.239,1722,0.395,1724,1.478,1738,0.513,1747,1.513,1760,1.902,1788,1.513,1808,0.398,1853,0.513,1856,1.77,1882,0.558,1935,1.035,1940,0.474,1974,0.545,2048,0.455,2058,1.659,2087,0.513,2129,3.05,2140,0.36,2156,0.573,2239,0.632,2279,2.431,2281,0.589,2288,2.877,2294,3.873,2308,1.035,2336,0.558,2362,0.609,2450,0.974,2552,0.589,2664,0.661,2777,0.589,2857,0.632,2861,0.632,2866,2.431,2870,0.573,2891,1.119,2972,0.533,2999,7.385,3005,0.558,3078,3.827,3265,0.632,3266,0.589,3268,1.119,3525,0.609,3526,0.609,3705,1.201,3708,1.598,3752,2.182,3767,3.989,4097,0.632,4138,0.589,4139,0.632,4223,3.995,4225,3.438,4227,4.884,4229,3.129,4244,1.598,4249,0.661,4250,5.023,4251,4.28,4253,1.256,4255,0.701,4256,4.088,4257,0.701,4258,1.331,4260,1.331,4261,0.701,4262,1.331,4264,0.701,4265,0.701,4266,2.891,4267,0.701,4268,0.701,4269,0.701,4270,0.701,4271,0.701,4272,0.701,4273,0.701,4274,0.701,4276,0.701,4277,0.701,4278,0.701,4281,2.418,4282,1.331,4283,0.701,4284,0.701,4285,0.701,4286,0.701,4288,0.701,4291,0.701,4292,0.701,4298,1.331,4299,0.701,4300,0.701,4301,1.331,4302,2.418,4303,0.701,4304,1.331,4305,0.701,4306,0.701,4307,0.701,4309,0.701,4310,0.701,4311,0.701,4313,0.701,4314,0.701,4315,0.701,4316,0.701,4317,0.701,4318,0.701,4319,0.701,4320,0.701,4321,1.901,4322,1.331,4323,1.331,4324,0.701,4325,0.701,4326,0.701,4327,0.701,4328,0.701,4329,0.701,4330,0.701,4331,0.701,4332,0.701,4333,0.701,4334,0.701,4335,0.701,4486,1.444,4487,0.76,4488,0.76,4489,0.76,4490,1.444,4491,1.444]],["component/204",[2,0.4]],["title/205",[6,20.602,165,24.714,1479,42.794]],["name/205",[6,1.014]],["text/205",[13,3.971,15,0.998,38,1.83,72,6.272,73,3.14,96,1.772,98,3.334,148,2.112,165,1.762,185,2.924,223,4.782,298,1.929,308,0.951,326,3.445,473,1.012,497,6.156,525,2.103,588,2.778,656,4.182,820,2.663,870,2.935,949,6.215,981,3.145,1314,3.251,1342,2.75,1416,2.258,1423,7.9,1473,6.85,1551,7.213,1846,6.503,1873,7.097,1927,1.763,2155,6.296,2973,3.372,2980,5.027,4095,2.132,4287,2.231,4340,2.363,4341,2.363,4342,2.363,4343,2.363,4344,2.363,4345,2.363,4346,2.363,4347,2.363,4348,2.363,4349,2.363,4350,2.363,4351,2.363,4352,2.363,4353,4.009,4354,2.363,4355,2.363,4356,2.363,4357,4.009,4358,5.222,4359,2.363,4360,4.009,4361,4.009,4362,5.222,4363,4.009,4364,2.363,4365,4.009,4366,5.222,4367,2.363,4368,4.009,4369,2.363,4370,4.009,4371,4.009,4372,7.486,4373,2.363,4374,7.486,4375,2.363,4376,5.55,4377,2.132,4378,2.363,4379,2.363,4380,2.363,4381,2.363,4382,2.363,4383,2.363,4384,2.363,4385,5.222,4386,5.222,4387,4.009,4388,2.363]],["component/205",[2,0.4]],["title/206",[6,24.21,1255,46.739]],["name/206",[6,1.014]],["text/206",[67,2.355,137,1.947,168,3.891,205,2.541,223,2.593,438,3.696,820,2.567,1151,4.722,1342,4.067,1416,3.339,2965,5.579,3124,9.122,3219,5.35,4376,9.572,4377,5.35,4389,5.93,4390,8.187,4391,10.971,4392,10.61,4393,8.187,4394,8.187,4395,8.187,4396,8.187,4397,8.187,4398,5.93,4399,8.187,4400,8.187,4401,8.187,4402,8.187,4403,5.93,4404,8.187,4405,8.187,4406,5.93,4407,5.93,4408,5.93,4409,5.93,4410,5.93,4411,5.93,4412,5.93,4413,5.93,4414,5.93,4415,5.93]],["component/206",[2,0.4]]],"invertedIndex":[["",{"_index":137,"title":{"4":{},"18":{},"19":{},"24":{},"43":{},"108":{},"174":{},"185":{},"201":{},"13-2":{},"15-2":{},"15-7":{},"15-10":{},"15-11":{},"15-13":{},"15-17":{},"15-21":{},"15-25":{},"15-29":{},"15-33":{},"15-38":{},"15-42":{},"15-46":{},"15-48":{},"106-2":{},"106-7":{},"106-10":{},"106-11":{},"106-13":{},"106-17":{},"106-21":{},"106-25":{},"106-29":{},"106-33":{},"106-38":{},"106-42":{},"106-46":{},"106-48":{},"112-2":{}},"name":{},"text":{"3":{},"4":{},"5":{},"6":{},"8":{},"9":{},"10":{},"12":{},"15":{},"16":{},"18":{},"21":{},"24":{},"26":{},"27":{},"29":{},"30":{},"31":{},"34":{},"36":{},"37":{},"39":{},"41":{},"43":{},"46":{},"47":{},"48":{},"49":{},"50":{},"54":{},"55":{},"56":{},"58":{},"59":{},"62":{},"63":{},"66":{},"75":{},"78":{},"82":{},"83":{},"84":{},"85":{},"87":{},"88":{},"90":{},"91":{},"92":{},"95":{},"97":{},"101":{},"102":{},"103":{},"105":{},"106":{},"107":{},"110":{},"115":{},"119":{},"121":{},"122":{},"123":{},"125":{},"126":{},"129":{},"138":{},"145":{},"147":{},"148":{},"149":{},"151":{},"152":{},"153":{},"157":{},"158":{},"159":{},"162":{},"166":{},"167":{},"173":{},"174":{},"175":{},"176":{},"178":{},"179":{},"180":{},"182":{},"185":{},"187":{},"188":{},"190":{},"191":{},"192":{},"193":{},"195":{},"197":{},"198":{},"200":{},"202":{},"203":{},"204":{},"206":{}},"component":{}}],["0",{"_index":1490,"title":{},"name":{},"text":{"15":{},"39":{},"47":{},"50":{},"55":{},"63":{},"66":{},"70":{},"71":{},"75":{},"76":{},"77":{},"82":{},"83":{},"86":{},"87":{},"88":{},"95":{},"103":{},"106":{},"121":{},"123":{},"126":{},"129":{},"134":{},"138":{},"140":{},"145":{},"146":{},"148":{},"149":{},"158":{},"166":{},"200":{}},"component":{}}],["0..1",{"_index":3774,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["0..3",{"_index":3775,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["0.1",{"_index":3827,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["0.1.0",{"_index":1240,"title":{"15-48":{},"106-48":{}},"name":{},"text":{},"component":{}}],["0.10.0",{"_index":1229,"title":{"15-10":{},"106-10":{}},"name":{},"text":{"46":{},"83":{},"119":{},"123":{},"145":{}},"component":{}}],["0.11",{"_index":3355,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["0.11.0",{"_index":1228,"title":{"15-7":{},"106-7":{}},"name":{},"text":{"88":{},"149":{}},"component":{}}],["0.12",{"_index":3406,"title":{},"name":{},"text":{"78":{}},"component":{}}],["0.12.0",{"_index":1226,"title":{"15-2":{},"106-2":{}},"name":{},"text":{"121":{},"124":{},"125":{},"126":{},"128":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"147":{},"148":{},"152":{},"153":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{}},"component":{}}],["0.13",{"_index":2373,"title":{},"name":{},"text":{"41":{},"78":{}},"component":{}}],["0.13.0",{"_index":313,"title":{},"name":{},"text":{"3":{},"21":{},"34":{},"36":{},"37":{},"47":{},"50":{},"70":{},"76":{},"77":{},"82":{},"83":{},"86":{},"87":{},"91":{},"92":{},"93":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{}},"component":{}}],["0.13.0/rc1",{"_index":2206,"title":{},"name":{},"text":{"36":{}},"component":{}}],["0.13.0/rc1/apach",{"_index":2209,"title":{},"name":{},"text":{"36":{}},"component":{}}],["0.13.0/rc1/readm",{"_index":2207,"title":{},"name":{},"text":{"36":{}},"component":{}}],["0.13.0/rc1/release_not",{"_index":2208,"title":{},"name":{},"text":{"36":{}},"component":{}}],["0.13.01",{"_index":2278,"title":{},"name":{},"text":{"37":{}},"component":{}}],["0.13.jar",{"_index":2262,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["0.2.0",{"_index":1239,"title":{"15-46":{},"106-46":{}},"name":{},"text":{},"component":{}}],["0.3.0",{"_index":1238,"title":{"15-42":{},"106-42":{}},"name":{},"text":{"34":{},"195":{}},"component":{}}],["0.3.1",{"_index":1237,"title":{"15-38":{},"106-38":{}},"name":{},"text":{"36":{},"197":{}},"component":{}}],["0.4.0",{"_index":1236,"title":{"15-33":{},"106-33":{}},"name":{},"text":{},"component":{}}],["0.5",{"_index":2993,"title":{},"name":{},"text":{"63":{},"75":{},"86":{},"95":{},"126":{},"138":{},"146":{},"166":{}},"component":{}}],["0.5.0",{"_index":1235,"title":{"15-29":{},"106-29":{}},"name":{},"text":{},"component":{}}],["0.6.0",{"_index":1234,"title":{"15-25":{},"106-25":{}},"name":{},"text":{"182":{}},"component":{}}],["0.7",{"_index":1500,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["0.7.0",{"_index":1233,"title":{"15-21":{},"106-21":{}},"name":{},"text":{},"component":{}}],["0.8",{"_index":2926,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["0.8.0",{"_index":1232,"title":{"15-17":{},"106-17":{}},"name":{},"text":{"55":{},"59":{},"158":{},"162":{},"173":{}},"component":{}}],["0.9",{"_index":4120,"title":{},"name":{},"text":{"93":{},"165":{}},"component":{}}],["0.9.0",{"_index":1231,"title":{"15-13":{},"106-13":{}},"name":{},"text":{"15":{},"36":{},"106":{},"197":{}},"component":{}}],["0.9.1",{"_index":1230,"title":{"15-11":{},"106-11":{}},"name":{},"text":{},"component":{}}],["00",{"_index":4216,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["0000",{"_index":3849,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["000000000006ff0408d20002",{"_index":2289,"title":{},"name":{},"text":{"39":{},"200":{}},"component":{}}],["000001:bool[10",{"_index":2931,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["01",{"_index":3714,"title":{},"name":{},"text":{"83":{},"102":{},"145":{},"203":{}},"component":{}}],["01)(02)(03)(04",{"_index":3741,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["01)(02)(03)(04)(05",{"_index":3792,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["0100",{"_index":3850,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["02",{"_index":3867,"title":{},"name":{},"text":{"83":{},"102":{},"145":{},"203":{}},"component":{}}],["02/11/2015",{"_index":728,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["03",{"_index":3869,"title":{},"name":{},"text":{"83":{},"102":{},"145":{},"203":{}},"component":{}}],["03.05.2020",{"_index":3538,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["03:25",{"_index":729,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["04",{"_index":702,"title":{},"name":{},"text":{"8":{},"83":{},"145":{},"178":{}},"component":{}}],["05",{"_index":703,"title":{},"name":{},"text":{"8":{},"83":{},"145":{},"178":{}},"component":{}}],["06",{"_index":3694,"title":{},"name":{},"text":{"83":{},"102":{},"145":{},"203":{}},"component":{}}],["07",{"_index":2756,"title":{},"name":{},"text":{"54":{},"83":{},"145":{},"157":{}},"component":{}}],["07)(08",{"_index":3696,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["07)(08)(09)(10)(11)(12)(13)(14",{"_index":3796,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["08",{"_index":3742,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["08)(11)(14",{"_index":3702,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["09",{"_index":3743,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["09)(10)(11",{"_index":3700,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["0:event",{"_index":3768,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["0ab0",{"_index":3894,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["0truefalseusemessagerouteruseconnectionmanagertruefalsefalseusemessagerouteruseconnectionmanagertruefalsefals",{"_index":4415,"title":{},"name":{},"text":{"105":{},"206":{}},"component":{}}],["0x",{"_index":3246,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["0x00",{"_index":4261,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["0x00','0x07",{"_index":4333,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["0x0000",{"_index":3265,"title":{},"name":{},"text":{"77":{},"103":{},"140":{},"204":{}},"component":{}}],["0x01",{"_index":3266,"title":{},"name":{},"text":{"77":{},"102":{},"103":{},"140":{},"203":{},"204":{}},"component":{}}],["0x02",{"_index":3267,"title":{},"name":{},"text":{"77":{},"102":{},"103":{},"140":{},"203":{}},"component":{}}],["0x03",{"_index":3268,"title":{},"name":{},"text":{"77":{},"102":{},"103":{},"140":{},"203":{},"204":{}},"component":{}}],["0x04",{"_index":3269,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["0x04','0x01",{"_index":4317,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["0x04','0x03",{"_index":4319,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["0x05",{"_index":3270,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["0x05','0x01",{"_index":4325,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["0x05','0x03",{"_index":4329,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["0x06",{"_index":3271,"title":{},"name":{},"text":{"77":{},"102":{},"140":{},"203":{}},"component":{}}],["0x07",{"_index":4276,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["0x0d",{"_index":3365,"title":{},"name":{},"text":{"78":{}},"component":{}}],["0x0f",{"_index":3272,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["0x10",{"_index":3273,"title":{},"name":{},"text":{"77":{},"102":{},"140":{},"203":{}},"component":{}}],["0x14",{"_index":3274,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["0x15",{"_index":3276,"title":{},"name":{},"text":{"77":{},"102":{},"140":{},"203":{}},"component":{}}],["0x32",{"_index":2239,"title":{},"name":{},"text":{"36":{},"103":{},"197":{},"204":{}},"component":{}}],["0x40",{"_index":4220,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["0x41",{"_index":4242,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["0xa",{"_index":3060,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["0xaxxx",{"_index":3754,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["0xbyyi",{"_index":3755,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["0xf0",{"_index":4315,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["0xhhhh",{"_index":3853,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["0xxyid",{"_index":3846,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["1",{"_index":588,"title":{"82-1":{},"83-4":{},"145-4":{}},"name":{},"text":{"6":{},"9":{},"15":{},"21":{},"34":{},"36":{},"37":{},"41":{},"47":{},"48":{},"50":{},"54":{},"55":{},"56":{},"63":{},"66":{},"70":{},"71":{},"72":{},"75":{},"76":{},"77":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"90":{},"91":{},"95":{},"97":{},"103":{},"104":{},"106":{},"115":{},"121":{},"123":{},"126":{},"129":{},"133":{},"134":{},"135":{},"138":{},"139":{},"140":{},"144":{},"145":{},"146":{},"147":{},"151":{},"153":{},"157":{},"158":{},"159":{},"166":{},"167":{},"176":{},"179":{},"195":{},"197":{},"198":{},"204":{},"205":{}},"component":{}}],["1)(2)(3)(4",{"_index":3692,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["1,4,2,192.168.0.1,1,1",{"_index":3220,"title":{},"name":{},"text":{"76":{},"139":{}},"component":{}}],["1,mod_1,(submod_1,,submod_1,)],[test",{"_index":3435,"title":{},"name":{},"text":{"81":{},"144":{}},"component":{}}],["1.0",{"_index":2992,"title":{},"name":{},"text":{"63":{},"75":{},"83":{},"126":{},"138":{},"145":{}},"component":{}}],["1.0.0",{"_index":1247,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["1.1.1.digital_input.0.1:bool",{"_index":3438,"title":{},"name":{},"text":{"81":{},"144":{}},"component":{}}],["1.16",{"_index":2420,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["1.19",{"_index":727,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["1.34242598e9",{"_index":2758,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["1.40969664e9",{"_index":2762,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["1.5",{"_index":3147,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["1.8",{"_index":2868,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["1.9.1",{"_index":1995,"title":{},"name":{},"text":{"31":{},"192":{}},"component":{}}],["1/2",{"_index":3859,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["10",{"_index":1392,"title":{},"name":{},"text":{"15":{},"41":{},"50":{},"55":{},"77":{},"83":{},"102":{},"106":{},"123":{},"140":{},"145":{},"158":{},"203":{}},"component":{}}],["100",{"_index":277,"title":{},"name":{},"text":{"3":{},"83":{},"88":{},"90":{},"145":{},"149":{},"173":{}},"component":{}}],["1000",{"_index":2744,"title":{},"name":{},"text":{"54":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"72":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"124":{},"125":{},"126":{},"128":{},"129":{},"133":{},"135":{},"136":{},"139":{},"140":{},"141":{},"142":{},"143":{},"145":{},"157":{}},"component":{}}],["10000",{"_index":3251,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["1000m",{"_index":4058,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["100m",{"_index":3676,"title":{},"name":{},"text":{"83":{},"90":{},"145":{}},"component":{}}],["1024",{"_index":3455,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["104",{"_index":1530,"title":{},"name":{},"text":{"15":{},"73":{},"106":{},"136":{}},"component":{}}],["10:dpt_value_temp",{"_index":2509,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["11",{"_index":113,"title":{},"name":{},"text":{"3":{},"7":{},"9":{},"15":{},"29":{},"30":{},"31":{},"32":{},"36":{},"56":{},"66":{},"75":{},"78":{},"83":{},"98":{},"106":{},"129":{},"138":{},"141":{},"145":{},"159":{},"169":{},"173":{},"177":{},"179":{},"190":{},"197":{}},"component":{}}],["1100",{"_index":3851,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["1135309911",{"_index":2852,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["115200",{"_index":3142,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["11:dpt_value_temp",{"_index":2510,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["12",{"_index":3881,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["12)(13)(14",{"_index":3701,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["1200",{"_index":3409,"title":{},"name":{},"text":{"78":{},"82":{},"83":{},"87":{},"88":{},"145":{},"148":{},"149":{}},"component":{}}],["120000",{"_index":3328,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["121",{"_index":1524,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["123",{"_index":3243,"title":{},"name":{},"text":{"77":{}},"component":{}}],["125",{"_index":3237,"title":{},"name":{},"text":{"77":{}},"component":{}}],["12687",{"_index":2949,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["127",{"_index":1536,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["127.0.0.1",{"_index":2749,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["127.0.0.1:6667",{"_index":2745,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["128000",{"_index":3143,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["12:dpt_openclos",{"_index":2513,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["12th",{"_index":379,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["13",{"_index":3170,"title":{},"name":{},"text":{"71":{},"78":{},"83":{},"134":{},"145":{}},"component":{}}],["132",{"_index":1401,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["134",{"_index":1491,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["139",{"_index":1533,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["13th",{"_index":380,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["14",{"_index":3169,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["140049.html",{"_index":4044,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["141",{"_index":1535,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["144",{"_index":1537,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["14400",{"_index":3139,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["14th",{"_index":409,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["15",{"_index":3797,"title":{},"name":{},"text":{"83":{},"102":{},"145":{},"203":{}},"component":{}}],["15)}/{middl",{"_index":3210,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["15)}/{sub",{"_index":3211,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["1500",{"_index":3469,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["1500?dti=0&lc=en",{"_index":3552,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["1502",{"_index":2699,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["158",{"_index":1520,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["15th",{"_index":364,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["15|14|13|12|11|10",{"_index":3760,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16",{"_index":1287,"title":{},"name":{},"text":{"15":{},"50":{},"66":{},"70":{},"72":{},"75":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"98":{},"102":{},"103":{},"106":{},"123":{},"129":{},"133":{},"135":{},"138":{},"139":{},"140":{},"141":{},"144":{},"145":{},"147":{},"169":{},"203":{},"204":{}},"component":{}}],["16#xy00",{"_index":3901,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy11",{"_index":3902,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy12",{"_index":3904,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy13",{"_index":3905,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy14",{"_index":3906,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy15",{"_index":3907,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy22",{"_index":3909,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy25",{"_index":3910,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy32",{"_index":3911,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy71",{"_index":3912,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy74",{"_index":3914,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy75",{"_index":3915,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy91",{"_index":3916,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy92",{"_index":3917,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy94",{"_index":3918,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy95",{"_index":3920,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy96",{"_index":3921,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xy9c",{"_index":3923,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xya0",{"_index":3924,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xyb1",{"_index":3925,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xyb2",{"_index":3927,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xyb3",{"_index":3928,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16#xyb4",{"_index":3929,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["16)(17)(18)(19",{"_index":3798,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["163",{"_index":1503,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["164",{"_index":1515,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["166",{"_index":1517,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["168",{"_index":1504,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["16bit",{"_index":4339,"title":{},"name":{},"text":{"103":{}},"component":{}}],["16t20:01:39.216+08:00",{"_index":2757,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["16t20:01:40.150+08:00",{"_index":2759,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["16t20:01:41.154+08:00",{"_index":2761,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["16t20:01:42.155+08:00",{"_index":2763,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["16t20:01:43.157+08:00",{"_index":2765,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["174",{"_index":1489,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["17th",{"_index":3133,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["18",{"_index":4448,"title":{},"name":{},"text":{"190":{}},"component":{}}],["18th",{"_index":328,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["19/bin/java",{"_index":3427,"title":{},"name":{},"text":{"81":{},"144":{}},"component":{}}],["192",{"_index":1493,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["192.168.0.1",{"_index":3222,"title":{},"name":{},"text":{"76":{},"139":{}},"component":{}}],["19200",{"_index":3140,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["19:11:14.369+0200",{"_index":704,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["19:11:14.683+0200",{"_index":709,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["19:11:14.859+0200",{"_index":714,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["19:11:14.892+0200",{"_index":719,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["19:11:15.396+0200",{"_index":730,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["19th",{"_index":400,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["1:entri",{"_index":3770,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["1:event",{"_index":3769,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["1:extern",{"_index":3772,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["1:intern",{"_index":3771,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["1>/dev/nul",{"_index":2005,"title":{},"name":{},"text":{"31":{},"192":{}},"component":{}}],["1x",{"_index":3245,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["1}(,{field",{"_index":4308,"title":{},"name":{},"text":{"103":{}},"component":{}}],["2",{"_index":185,"title":{"82-1":{},"83-4":{},"145-4":{}},"name":{},"text":{"3":{},"6":{},"8":{},"12":{},"21":{},"34":{},"36":{},"39":{},"41":{},"47":{},"48":{},"50":{},"55":{},"56":{},"63":{},"71":{},"75":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"86":{},"91":{},"95":{},"103":{},"104":{},"110":{},"115":{},"121":{},"123":{},"126":{},"134":{},"138":{},"139":{},"140":{},"141":{},"144":{},"145":{},"146":{},"147":{},"153":{},"158":{},"159":{},"166":{},"173":{},"176":{},"178":{},"195":{},"197":{},"200":{},"204":{},"205":{}},"component":{}}],["2,mod_1,(submod_1,,submod_1",{"_index":3436,"title":{},"name":{},"text":{"81":{},"144":{}},"component":{}}],["2.0",{"_index":776,"title":{},"name":{},"text":{"9":{},"101":{},"179":{},"202":{}},"component":{}}],["2.0a",{"_index":3035,"title":{},"name":{},"text":{"66":{},"98":{},"129":{},"169":{}},"component":{}}],["2.0b",{"_index":3036,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["2.1",{"_index":3483,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["2.14.0",{"_index":1326,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["2.2",{"_index":3484,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["2/4",{"_index":3217,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["20",{"_index":1607,"title":{},"name":{},"text":{"17":{},"77":{},"87":{},"113":{},"140":{},"148":{}},"component":{}}],["20)(21)(22",{"_index":3799,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["200",{"_index":1347,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["2000",{"_index":1017,"title":{},"name":{},"text":{"10":{},"77":{},"180":{}},"component":{}}],["2007",{"_index":1053,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["2008",{"_index":3411,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["201",{"_index":1349,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["2012",{"_index":1019,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["2013",{"_index":1065,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["2015",{"_index":1022,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["2016",{"_index":196,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["2017",{"_index":3134,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["2018",{"_index":370,"title":{},"name":{},"text":{"4":{},"8":{},"174":{},"178":{}},"component":{}}],["2019",{"_index":330,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["202",{"_index":1352,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["2020",{"_index":1176,"title":{},"name":{},"text":{"13":{},"54":{},"112":{},"157":{}},"component":{}}],["2021",{"_index":1171,"title":{},"name":{},"text":{"13":{},"15":{},"106":{},"112":{}},"component":{}}],["2022",{"_index":2970,"title":{},"name":{},"text":{"62":{},"125":{}},"component":{}}],["2022/10/04",{"_index":3652,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["2024",{"_index":1196,"title":{},"name":{},"text":{"13":{}},"component":{}}],["206",{"_index":1404,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["207",{"_index":1407,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["209",{"_index":1412,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["2097152",{"_index":3337,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["20native%20api.html",{"_index":2768,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["20th",{"_index":406,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["21",{"_index":1914,"title":{},"name":{},"text":{"29":{},"30":{},"32":{}},"component":{}}],["210",{"_index":1415,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["211",{"_index":1419,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["212",{"_index":1422,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["213",{"_index":1424,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["214",{"_index":1426,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["215",{"_index":1430,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["218",{"_index":1433,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["21th",{"_index":355,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["22.04",{"_index":1949,"title":{},"name":{},"text":{"30":{}},"component":{}}],["2258",{"_index":2292,"title":{},"name":{},"text":{"39":{},"200":{}},"component":{}}],["22th",{"_index":392,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["23)(24)(25",{"_index":3800,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["239",{"_index":1439,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["24",{"_index":2146,"title":{},"name":{},"text":{"34":{},"36":{},"66":{},"72":{},"129":{},"135":{},"195":{},"197":{}},"component":{}}],["240",{"_index":1441,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["245",{"_index":1443,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["246",{"_index":1442,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["24th",{"_index":342,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["254",{"_index":1385,"title":{},"name":{},"text":{"15":{},"82":{},"83":{},"84":{},"106":{},"145":{},"147":{}},"component":{}}],["255",{"_index":1447,"title":{},"name":{},"text":{"15":{},"39":{},"75":{},"106":{},"138":{},"200":{}},"component":{}}],["256",{"_index":1458,"title":{},"name":{},"text":{"15":{},"84":{},"106":{},"147":{}},"component":{}}],["26",{"_index":3805,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["261",{"_index":1453,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["262",{"_index":1464,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["27)(28",{"_index":3802,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["270",{"_index":1465,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["272",{"_index":1455,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["276",{"_index":1353,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["278",{"_index":1355,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["279",{"_index":1357,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["280",{"_index":1360,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["29",{"_index":3024,"title":{},"name":{},"text":{"66":{},"98":{},"129":{},"169":{}},"component":{}}],["29)(30",{"_index":3803,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["291",{"_index":1363,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["298",{"_index":1368,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["299",{"_index":1369,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["2>&1",{"_index":2006,"title":{},"name":{},"text":{"31":{},"192":{}},"component":{}}],["2_1",{"_index":3541,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["2s",{"_index":4337,"title":{},"name":{},"text":{"103":{}},"component":{}}],["3",{"_index":382,"title":{"82-1":{},"83-4":{},"145-4":{}},"name":{},"text":{"4":{},"6":{},"8":{},"9":{},"15":{},"21":{},"34":{},"36":{},"41":{},"46":{},"47":{},"50":{},"55":{},"75":{},"77":{},"81":{},"83":{},"84":{},"87":{},"88":{},"91":{},"98":{},"103":{},"106":{},"115":{},"119":{},"121":{},"123":{},"138":{},"140":{},"144":{},"145":{},"147":{},"148":{},"149":{},"153":{},"158":{},"169":{},"173":{},"174":{},"176":{},"178":{},"179":{},"182":{},"195":{},"197":{},"204":{}},"component":{}}],["3.0.0",{"_index":2000,"title":{},"name":{},"text":{"31":{},"192":{}},"component":{}}],["3.1",{"_index":3487,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["3.2",{"_index":3490,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["3.27.7",{"_index":2042,"title":{},"name":{},"text":{"32":{}},"component":{}}],["3.3",{"_index":3493,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["3.3.0",{"_index":4449,"title":{},"name":{},"text":{"190":{}},"component":{}}],["3.4",{"_index":3495,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["3.6",{"_index":2187,"title":{},"name":{},"text":{"36":{},"190":{},"197":{}},"component":{}}],["3.6.0",{"_index":129,"title":{},"name":{},"text":{"3":{},"29":{},"173":{}},"component":{}}],["3.7",{"_index":1921,"title":{},"name":{},"text":{"29":{},"30":{},"190":{},"191":{}},"component":{}}],["3.9.13",{"_index":2001,"title":{},"name":{},"text":{"31":{},"192":{}},"component":{}}],["300",{"_index":3550,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["300,400",{"_index":3671,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["300/400.\\r\\nsystem",{"_index":3857,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["300/s7",{"_index":3639,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["30000",{"_index":3331,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["300001",{"_index":3254,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["30001",{"_index":3253,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["312",{"_index":1370,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["314",{"_index":1371,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["32",{"_index":2031,"title":{},"name":{},"text":{"32":{},"62":{},"66":{},"70":{},"72":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"125":{},"129":{},"133":{},"135":{},"139":{},"140":{},"141":{},"144":{},"145":{},"147":{}},"component":{}}],["34",{"_index":3863,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["343",{"_index":3665,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["3600000",{"_index":3324,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["365535",{"_index":3258,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["38400",{"_index":3141,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["39999",{"_index":3256,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["3th",{"_index":347,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["3x",{"_index":3248,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["3xxxx",{"_index":3255,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["3xxxxx",{"_index":3257,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["4",{"_index":913,"title":{"21-7":{},"182-7":{}},"name":{},"text":{"9":{},"21":{},"34":{},"36":{},"37":{},"47":{},"50":{},"55":{},"62":{},"66":{},"77":{},"82":{},"83":{},"87":{},"103":{},"121":{},"123":{},"125":{},"129":{},"140":{},"145":{},"148":{},"158":{},"179":{},"182":{},"195":{},"197":{},"198":{},"204":{}},"component":{}}],["4.0",{"_index":350,"title":{"17":{},"113":{}},"name":{},"text":{"4":{},"12":{},"13":{},"110":{},"112":{},"174":{}},"component":{}}],["4.0.0",{"_index":1741,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["4.207406e7",{"_index":2766,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["40",{"_index":3083,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["400",{"_index":3551,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["4000",{"_index":2977,"title":{},"name":{},"text":{"62":{},"73":{},"125":{},"136":{}},"component":{}}],["400002:word",{"_index":2933,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["400003:uint",{"_index":2935,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["400004:int",{"_index":2937,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["400005:dint[4",{"_index":2939,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["400006:real",{"_index":2941,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["400007:real",{"_index":2943,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["400008:real",{"_index":2945,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["400020:uint[10",{"_index":3278,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["40020:uint[10",{"_index":3280,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["405678",{"_index":3284,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["405678{unit",{"_index":3289,"title":{},"name":{},"text":{"77":{}},"component":{}}],["4095",{"_index":3212,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["41",{"_index":4217,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["417",{"_index":3892,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["42",{"_index":2711,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["43083",{"_index":1324,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["44228",{"_index":1327,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["443",{"_index":3666,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["45",{"_index":1514,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["45678",{"_index":3286,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["45678{unit",{"_index":3291,"title":{},"name":{},"text":{"77":{}},"component":{}}],["4755",{"_index":1957,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["48",{"_index":3086,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["496",{"_index":1837,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["499b",{"_index":3375,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["4:40",{"_index":3539,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["4:40pm",{"_index":3536,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["4th",{"_index":412,"title":{},"name":{},"text":{"4":{},"76":{},"139":{},"174":{}},"component":{}}],["4x",{"_index":3249,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["4x00001:bool",{"_index":3232,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["4x00001[10",{"_index":2629,"title":{},"name":{},"text":{"48":{}},"component":{}}],["4x00001[2",{"_index":2668,"title":{},"name":{},"text":{"48":{}},"component":{}}],["4x00011",{"_index":2639,"title":{},"name":{},"text":{"48":{}},"component":{}}],["4x00020:uint[10",{"_index":3279,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["4x0020:uint[10",{"_index":3281,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["4x05678",{"_index":3285,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["4x05678{unit",{"_index":3290,"title":{},"name":{},"text":{"77":{}},"component":{}}],["4x5678",{"_index":3287,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["4x5678{unit",{"_index":3292,"title":{},"name":{},"text":{"77":{}},"component":{}}],["4xt05",{"_index":3893,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["5",{"_index":2406,"title":{},"name":{},"text":{"43":{},"50":{},"55":{},"71":{},"73":{},"75":{},"77":{},"83":{},"123":{},"134":{},"136":{},"138":{},"140":{},"145":{},"158":{}},"component":{}}],["50",{"_index":2822,"title":{},"name":{},"text":{"55":{},"75":{},"77":{},"86":{},"138":{},"140":{},"146":{},"158":{}},"component":{}}],["500",{"_index":2514,"title":{},"name":{},"text":{"46":{},"83":{},"119":{},"145":{}},"component":{}}],["5000",{"_index":3231,"title":{},"name":{},"text":{"77":{},"80":{},"85":{},"140":{},"143":{}},"component":{}}],["502",{"_index":2677,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["512",{"_index":1567,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["52)?dti=0&lc=en",{"_index":3557,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["56",{"_index":3088,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["5678",{"_index":3282,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["57600",{"_index":3136,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["59",{"_index":3298,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["5c60d6b9",{"_index":2183,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["5th",{"_index":415,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["6",{"_index":679,"title":{},"name":{},"text":{"8":{},"15":{},"50":{},"62":{},"71":{},"77":{},"82":{},"83":{},"106":{},"123":{},"125":{},"134":{},"140":{},"145":{},"178":{}},"component":{}}],["6.0",{"_index":1970,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["60",{"_index":3326,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["60000",{"_index":3330,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["600000",{"_index":3260,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["600050[10",{"_index":3294,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["60050[10",{"_index":3296,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["60870",{"_index":3187,"title":{"73":{},"136":{}},"name":{"73":{},"136":{}},"text":{"73":{},"74":{},"136":{},"137":{}},"component":{}}],["609995[10",{"_index":3301,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["610000",{"_index":3261,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["61131",{"_index":1377,"title":{},"name":{},"text":{"15":{},"84":{},"106":{},"147":{}},"component":{}}],["64",{"_index":2028,"title":{},"name":{},"text":{"32":{},"66":{},"70":{},"72":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"129":{},"133":{},"135":{},"139":{},"140":{},"141":{},"144":{},"145":{},"147":{}},"component":{}}],["64bit",{"_index":1284,"title":{},"name":{},"text":{"15":{},"106":{},"193":{}},"component":{}}],["65535",{"_index":3213,"title":{},"name":{},"text":{"75":{},"77":{},"78":{},"138":{},"140":{},"141":{}},"component":{}}],["65536",{"_index":2682,"title":{},"name":{},"text":{"50":{},"77":{},"123":{},"140":{}},"component":{}}],["6667",{"_index":2750,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["69995[10",{"_index":3303,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["699999",{"_index":3263,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["6x",{"_index":3250,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["6x00050[10",{"_index":3295,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["6x0050[10",{"_index":3297,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["6x09995[10",{"_index":3302,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["6x9995[10",{"_index":3304,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["7",{"_index":2685,"title":{},"name":{},"text":{"50":{},"62":{},"71":{},"77":{},"82":{},"83":{},"88":{},"123":{},"125":{},"134":{},"140":{},"145":{},"149":{}},"component":{}}],["7.0.1",{"_index":1547,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["72",{"_index":586,"title":{},"name":{},"text":{"6":{},"34":{},"36":{},"176":{},"195":{},"197":{}},"component":{}}],["72hr",{"_index":2119,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["7474",{"_index":711,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["754",{"_index":3529,"title":{},"name":{},"text":{"82":{},"83":{},"103":{},"145":{}},"component":{}}],["7:11:15",{"_index":722,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["8",{"_index":712,"title":{},"name":{},"text":{"8":{},"15":{},"50":{},"66":{},"70":{},"71":{},"72":{},"75":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"102":{},"103":{},"106":{},"123":{},"129":{},"133":{},"134":{},"135":{},"138":{},"139":{},"140":{},"141":{},"144":{},"145":{},"147":{},"178":{},"203":{},"204":{}},"component":{}}],["80",{"_index":1598,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["8196",{"_index":3354,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["8445",{"_index":2950,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["8e5e",{"_index":3374,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["8th",{"_index":351,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["9",{"_index":677,"title":{},"name":{},"text":{"8":{},"9":{},"50":{},"83":{},"123":{},"145":{},"178":{},"179":{},"190":{}},"component":{}}],["9.4141104e7",{"_index":2760,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["9.5824531e8",{"_index":2764,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["95",{"_index":3619,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["954f",{"_index":3376,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["9600",{"_index":3138,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["9995",{"_index":3299,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["9999",{"_index":3305,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["99999",{"_index":3259,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["_",{"_index":2523,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["__________/\\__________/\\____________________",{"_index":3761,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["_initi",{"_index":725,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["a,b",{"_index":3765,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["a512",{"_index":2256,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["a5e02789976",{"_index":3861,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["a=12",{"_index":3390,"title":{},"name":{},"text":{"78":{}},"component":{}}],["a=eventnotifi",{"_index":3389,"title":{},"name":{},"text":{"78":{}},"component":{}}],["aaaab3nzac1yc2eaaaadaqabaaacaqdd10ykyazlxhjvter71irrvvpyr8obdljd1avwb67ts+uejjzo8ofqklasaqw9eqosfprgzw0sfzhepejvbx0n1ifsrexoyigld8wzyx/uolirlphfv+esgjvln90x/l+zps+yo3lq6qfuiqkxqqvb4ajbysyc/jifpmlvx06zaubpfdwiagibgawbx/59q0qsspx5r8tgda+xlw/8zg5abkazus2cm/sojcfqq7km4bd/wtf5r5xvakvbyilmt8dk9hs9ofvl/rfglyqx4bjy5uctwpbrwlwqfyq1u7jr39i870xngn+biechazu098bgybh/cwmgt7btjqskxksf2szahjt8ga2pl+j6mtw6/epziyengvfobvslvaz9slm26nel1+shdnd9dk/4grnbujbmzhzlftjmk7oc4r+wpcbiw99cfeshtkhsxhjkz/3kmcmuehhnrbdmy+xhecr/r/pax58a9vhxqqhbwes6tvc1gvm2ufsmkoaktnkme4v7bplbqcef8tkz7/gkp6vp1il0bddmwzpodfpmbijzqjvc38a++b5k0gagwkypvsenamzvifhrngjjum/qxbnaf1fjpiocsea0zqbyvvopdpkl9kprz32alhztnrfcewltgnm1sjinn4zqjxqs5mjbz2rjmglkszvjloso7khibq",{"_index":1819,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["aachen",{"_index":357,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["aarch64",{"_index":1912,"title":{},"name":{},"text":{"29":{},"30":{},"32":{}},"component":{}}],["ab",{"_index":1521,"title":{"61":{},"124":{}},"name":{"61":{},"124":{}},"text":{"15":{},"36":{},"61":{},"74":{},"106":{},"124":{},"137":{},"197":{}},"component":{}}],["abandon",{"_index":1303,"title":{},"name":{},"text":{"15":{},"16":{},"106":{},"107":{}},"component":{}}],["aber",{"_index":423,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["abil",{"_index":1601,"title":{},"name":{},"text":{"17":{},"21":{},"55":{},"78":{},"83":{},"103":{},"113":{},"141":{},"145":{},"158":{},"182":{},"204":{}},"component":{}}],["abort",{"_index":4295,"title":{},"name":{},"text":{"103":{}},"component":{}}],["abov",{"_index":1501,"title":{},"name":{},"text":{"15":{},"30":{},"32":{},"34":{},"36":{},"39":{},"46":{},"50":{},"54":{},"56":{},"65":{},"66":{},"78":{},"82":{},"83":{},"90":{},"91":{},"92":{},"103":{},"106":{},"119":{},"123":{},"127":{},"129":{},"141":{},"145":{},"152":{},"153":{},"157":{},"159":{},"190":{},"193":{},"195":{},"197":{},"200":{},"204":{}},"component":{}}],["absolut",{"_index":614,"title":{},"name":{},"text":{"7":{},"21":{},"49":{},"122":{},"177":{},"182":{}},"component":{}}],["abstract",{"_index":2336,"title":{},"name":{},"text":{"41":{},"93":{},"101":{},"103":{},"115":{},"165":{},"202":{},"204":{}},"component":{}}],["acceler",{"_index":1212,"title":{},"name":{},"text":{"14":{}},"component":{}}],["accept",{"_index":503,"title":{},"name":{},"text":{"5":{},"9":{},"14":{},"15":{},"21":{},"30":{},"34":{},"36":{},"56":{},"78":{},"82":{},"83":{},"106":{},"111":{},"141":{},"145":{},"159":{},"175":{},"179":{},"182":{},"195":{},"197":{}},"component":{}}],["access",{"_index":48,"title":{"26-1":{},"187-1":{}},"name":{},"text":{"2":{},"9":{},"12":{},"17":{},"26":{},"41":{},"48":{},"49":{},"50":{},"56":{},"62":{},"66":{},"75":{},"78":{},"82":{},"83":{},"85":{},"86":{},"87":{},"88":{},"90":{},"91":{},"93":{},"98":{},"103":{},"110":{},"113":{},"115":{},"122":{},"123":{},"125":{},"129":{},"138":{},"141":{},"145":{},"146":{},"148":{},"149":{},"153":{},"159":{},"165":{},"169":{},"172":{},"179":{},"187":{},"204":{}},"component":{}}],["access?dti=0&lc=en",{"_index":3586,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["access_deni",{"_index":2659,"title":{},"name":{},"text":{"48":{},"50":{},"123":{}},"component":{}}],["accessor",{"_index":2496,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["accomplish",{"_index":3413,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["accord",{"_index":873,"title":{},"name":{},"text":{"9":{},"34":{},"36":{},"37":{},"83":{},"102":{},"145":{},"179":{},"195":{},"197":{},"198":{},"203":{}},"component":{}}],["account",{"_index":476,"title":{},"name":{},"text":{"5":{},"9":{},"36":{},"83":{},"145":{},"175":{},"179":{},"197":{}},"component":{}}],["accumul",{"_index":1332,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["achiev",{"_index":2122,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["ack",{"_index":4202,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["acknowledg",{"_index":3351,"title":{},"name":{},"text":{"78":{},"83":{},"102":{},"141":{},"145":{},"203":{}},"component":{}}],["ackstate_com",{"_index":3811,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["ackstate_go",{"_index":3810,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["acquir",{"_index":3496,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["acquisit",{"_index":3178,"title":{},"name":{},"text":{"72":{},"83":{},"135":{},"145":{}},"component":{}}],["act",{"_index":839,"title":{},"name":{},"text":{"9":{},"36":{},"59":{},"162":{},"179":{},"197":{}},"component":{}}],["action",{"_index":596,"title":{},"name":{},"text":{"6":{},"22":{},"83":{},"145":{},"176":{}},"component":{}}],["activ",{"_index":448,"title":{},"name":{},"text":{"5":{},"7":{},"8":{},"9":{},"10":{},"12":{},"17":{},"34":{},"36":{},"46":{},"75":{},"77":{},"83":{},"110":{},"113":{},"119":{},"138":{},"140":{},"145":{},"173":{},"175":{},"177":{},"178":{},"179":{},"180":{},"195":{},"197":{}},"component":{}}],["activemq",{"_index":1056,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["actor",{"_index":3608,"title":{"83-14":{},"145-14":{}},"name":{},"text":{"83":{},"145":{}},"component":{}}],["actual",{"_index":1579,"title":{},"name":{},"text":{"16":{},"21":{},"34":{},"36":{},"41":{},"46":{},"47":{},"50":{},"72":{},"78":{},"90":{},"91":{},"93":{},"103":{},"107":{},"115":{},"119":{},"121":{},"123":{},"135":{},"141":{},"153":{},"165":{},"173":{},"182":{},"195":{},"197":{}},"component":{}}],["ad",{"_index":165,"title":{"62":{},"104":{},"125":{},"205":{},"14-1":{},"14-2":{},"27-2":{},"111-1":{},"111-2":{},"188-2":{}},"name":{"62":{},"125":{}},"text":{"3":{},"5":{},"6":{},"8":{},"9":{},"10":{},"14":{},"15":{},"17":{},"21":{},"26":{},"27":{},"32":{},"33":{},"36":{},"40":{},"43":{},"46":{},"47":{},"48":{},"49":{},"50":{},"56":{},"62":{},"74":{},"83":{},"87":{},"88":{},"90":{},"91":{},"103":{},"104":{},"106":{},"111":{},"113":{},"119":{},"121":{},"122":{},"123":{},"125":{},"137":{},"145":{},"148":{},"149":{},"153":{},"159":{},"173":{},"175":{},"176":{},"178":{},"179":{},"180":{},"182":{},"187":{},"188":{},"193":{},"194":{},"197":{},"204":{},"205":{}},"component":{}}],["adapt",{"_index":1654,"title":{"65":{},"127":{}},"name":{},"text":{"17":{},"57":{},"65":{},"93":{},"113":{},"127":{},"160":{},"165":{}},"component":{}}],["add",{"_index":298,"title":{"36-16":{},"197-16":{}},"name":{},"text":{"3":{},"5":{},"7":{},"9":{},"15":{},"17":{},"21":{},"26":{},"27":{},"31":{},"34":{},"36":{},"39":{},"40":{},"43":{},"46":{},"47":{},"49":{},"50":{},"55":{},"56":{},"78":{},"82":{},"83":{},"91":{},"103":{},"104":{},"106":{},"113":{},"119":{},"121":{},"122":{},"123":{},"141":{},"145":{},"153":{},"158":{},"159":{},"173":{},"175":{},"177":{},"179":{},"182":{},"183":{},"187":{},"188":{},"190":{},"192":{},"193":{},"195":{},"197":{},"200":{},"204":{},"205":{}},"component":{}}],["add/upd",{"_index":2332,"title":{},"name":{},"text":{"40":{}},"component":{}}],["add_tag",{"_index":2640,"title":{},"name":{},"text":{"48":{}},"component":{}}],["addchangeofstateitem(\"h",{"_index":2507,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["addchangeofstatetagaddress(\"h",{"_index":2517,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["addcyclicfield/addcyclictagaddress",{"_index":2539,"title":{},"name":{},"text":{"46":{},"47":{},"119":{},"121":{}},"component":{}}],["addcyclicitem(\"h",{"_index":2511,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["addcyclictagaddress(\"h",{"_index":2518,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["addit",{"_index":166,"title":{"4-1":{},"174-1":{}},"name":{},"text":{"3":{},"5":{},"8":{},"15":{},"21":{},"22":{},"26":{},"27":{},"29":{},"36":{},"37":{},"39":{},"41":{},"62":{},"78":{},"83":{},"93":{},"101":{},"102":{},"103":{},"106":{},"125":{},"141":{},"145":{},"165":{},"173":{},"175":{},"178":{},"182":{},"183":{},"187":{},"188":{},"190":{},"197":{},"198":{},"200":{},"202":{},"203":{},"204":{}},"component":{}}],["additem",{"_index":2503,"title":{},"name":{},"text":{"46":{},"47":{},"119":{},"121":{}},"component":{}}],["additem(\"st",{"_index":4112,"title":{},"name":{},"text":{"92":{},"152":{}},"component":{}}],["additemhandler(knxeventhandl",{"_index":2516,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["addition",{"_index":1641,"title":{},"name":{},"text":{"17":{},"36":{},"77":{},"78":{},"113":{},"141":{},"173":{},"197":{}},"component":{}}],["addquery(\"field1",{"_index":2468,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["addquery(\"field2",{"_index":2470,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["addr",{"_index":4213,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["address",{"_index":13,"title":{"2-3":{},"41-3":{},"66-5":{},"70-3":{},"71-3":{},"71-4":{},"71-5":{},"72-5":{},"75-5":{},"76-3":{},"77-11":{},"78-7":{},"78-9":{},"80-4":{},"81-4":{},"82-7":{},"83-10":{},"84-2":{},"85-3":{},"115-3":{},"129-5":{},"133-3":{},"134-3":{},"134-4":{},"134-5":{},"135-5":{},"138-5":{},"139-3":{},"140-11":{},"141-7":{},"141-9":{},"143-4":{},"144-4":{},"145-10":{},"147-2":{},"172-3":{}},"name":{},"text":{"2":{},"14":{},"15":{},"26":{},"36":{},"37":{},"41":{},"46":{},"47":{},"48":{},"50":{},"54":{},"55":{},"56":{},"59":{},"62":{},"66":{},"71":{},"74":{},"75":{},"76":{},"77":{},"78":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"87":{},"90":{},"91":{},"99":{},"100":{},"102":{},"104":{},"106":{},"111":{},"115":{},"119":{},"121":{},"123":{},"125":{},"129":{},"134":{},"137":{},"138":{},"139":{},"140":{},"141":{},"143":{},"144":{},"145":{},"147":{},"148":{},"151":{},"153":{},"157":{},"158":{},"159":{},"162":{},"170":{},"171":{},"172":{},"187":{},"197":{},"198":{},"203":{},"205":{}},"component":{}}],["address.com",{"_index":1821,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["address/hostname}:{port}?remot",{"_index":3420,"title":{},"name":{},"text":{"80":{},"143":{}},"component":{}}],["address`and",{"_index":4418,"title":{},"name":{},"text":{"115":{}},"component":{}}],["address}.{bit",{"_index":3502,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["address}:string({str",{"_index":3507,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["address}:{data",{"_index":3226,"title":{},"name":{},"text":{"76":{},"77":{},"82":{},"83":{},"139":{},"140":{},"145":{}},"component":{}}],["address}:{port",{"_index":3933,"title":{},"name":{},"text":{"84":{},"147":{}},"component":{}}],["address}:{port}?{opt",{"_index":3224,"title":{},"name":{},"text":{"76":{},"77":{},"78":{},"81":{},"85":{},"139":{},"140":{},"141":{},"144":{}},"component":{}}],["address}[{array",{"_index":3160,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["addrress",{"_index":2886,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["addtag",{"_index":2566,"title":{},"name":{},"text":{"47":{},"121":{}},"component":{}}],["addtagaddress(\"tag1",{"_index":2474,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["addtagaddress(\"tag2",{"_index":2475,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["adjust",{"_index":2196,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["administr",{"_index":2036,"title":{},"name":{},"text":{"32":{}},"component":{}}],["admit",{"_index":1159,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["adoc",{"_index":1875,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["adopt",{"_index":1106,"title":{},"name":{"12":{},"110":{}},"text":{},"component":{}}],["advanc",{"_index":1166,"title":{},"name":{},"text":{"13":{},"83":{},"112":{},"145":{}},"component":{}}],["advantag",{"_index":3672,"title":{},"name":{},"text":{"83":{},"93":{},"145":{},"165":{}},"component":{}}],["advertencia",{"_index":3580,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["advertis",{"_index":2790,"title":{},"name":{},"text":{"55":{},"78":{},"158":{}},"component":{}}],["advis",{"_index":2194,"title":{},"name":{},"text":{"36":{},"48":{},"50":{},"123":{},"197":{}},"component":{}}],["advisori",{"_index":875,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["aerospac",{"_index":973,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["aes128_sha256_rsaoaep",{"_index":3312,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["aes256_sha256_rsapss",{"_index":3313,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["affect",{"_index":951,"title":{},"name":{},"text":{"9":{},"15":{},"55":{},"78":{},"83":{},"106":{},"141":{},"145":{},"158":{},"179":{}},"component":{}}],["afraid",{"_index":457,"title":{},"name":{},"text":{"5":{},"175":{}},"component":{}}],["afterward",{"_index":2156,"title":{},"name":{},"text":{"34":{},"36":{},"88":{},"149":{},"195":{},"197":{},"204":{}},"component":{}}],["ag",{"_index":1108,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["again",{"_index":1729,"title":{},"name":{},"text":{"21":{},"30":{},"34":{},"36":{},"41":{},"43":{},"50":{},"59":{},"63":{},"75":{},"82":{},"88":{},"90":{},"95":{},"123":{},"126":{},"138":{},"149":{},"162":{},"166":{},"195":{},"197":{}},"component":{}}],["against",{"_index":651,"title":{},"name":{},"text":{"8":{},"9":{},"15":{},"37":{},"78":{},"98":{},"106":{},"141":{},"169":{},"178":{},"179":{},"198":{}},"component":{}}],["agent",{"_index":1809,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000",{"_index":2904,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["aggreg",{"_index":2141,"title":{},"name":{},"text":{"34":{},"36":{},"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"124":{},"125":{},"126":{},"128":{},"133":{},"136":{},"139":{},"140":{},"141":{},"142":{},"143":{},"145":{},"195":{},"197":{}},"component":{}}],["ago",{"_index":189,"title":{},"name":{},"text":{"3":{},"90":{},"151":{},"173":{}},"component":{}}],["agre",{"_index":2687,"title":{},"name":{},"text":{"50":{},"82":{},"83":{},"101":{},"123":{},"145":{},"202":{}},"component":{}}],["agreement",{"_index":817,"title":{},"name":{},"text":{"9":{},"14":{},"101":{},"111":{},"179":{},"202":{}},"component":{}}],["ai",{"_index":3540,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["aid",{"_index":3589,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["aim",{"_index":94,"title":{},"name":{},"text":{"3":{},"9":{},"15":{},"83":{},"106":{},"145":{},"173":{},"179":{}},"component":{}}],["ak",{"_index":2066,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["aka",{"_index":4048,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["alarm",{"_index":1346,"title":{},"name":{},"text":{"15":{},"47":{},"78":{},"83":{},"106":{},"121":{},"145":{}},"component":{}}],["alarm/ev",{"_index":3801,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["alarm_",{"_index":3559,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["alarm_8",{"_index":3678,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["alarm_d",{"_index":3560,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["alarm_sq",{"_index":3677,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["alarma",{"_index":3603,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["alarms/us",{"_index":3641,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["alert",{"_index":3388,"title":{},"name":{},"text":{"78":{}},"component":{}}],["algorithm",{"_index":2259,"title":{},"name":{},"text":{"37":{},"78":{},"141":{},"198":{}},"component":{}}],["alia",{"_index":1559,"title":{"84-6":{},"147-6":{}},"name":{},"text":{"15":{},"43":{},"47":{},"48":{},"50":{},"59":{},"84":{},"91":{},"106":{},"121":{},"123":{},"147":{},"153":{},"162":{}},"component":{}}],["alias",{"_index":2655,"title":{},"name":{},"text":{"48":{},"50":{},"77":{},"84":{},"123":{},"140":{},"147":{}},"component":{}}],["align",{"_index":1398,"title":{},"name":{},"text":{"15":{},"46":{},"103":{},"106":{},"119":{},"204":{}},"component":{}}],["alik",{"_index":4121,"title":{},"name":{},"text":{"93":{},"165":{}},"component":{}}],["aliv",{"_index":1541,"title":{},"name":{},"text":{"15":{},"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"90":{},"106":{},"124":{},"125":{},"126":{},"128":{},"133":{},"136":{},"139":{},"140":{},"141":{},"142":{},"143":{},"145":{}},"component":{}}],["allen",{"_index":2304,"title":{},"name":{},"text":{"39":{},"61":{},"124":{},"200":{}},"component":{}}],["allow",{"_index":14,"title":{"2-4":{},"172-4":{}},"name":{},"text":{"2":{},"3":{},"9":{},"12":{},"15":{},"16":{},"17":{},"21":{},"27":{},"34":{},"36":{},"39":{},"41":{},"43":{},"47":{},"50":{},"52":{},"55":{},"56":{},"71":{},"72":{},"75":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"86":{},"87":{},"90":{},"91":{},"93":{},"101":{},"103":{},"106":{},"107":{},"110":{},"113":{},"115":{},"121":{},"123":{},"134":{},"135":{},"138":{},"139":{},"140":{},"141":{},"144":{},"145":{},"146":{},"148":{},"151":{},"153":{},"158":{},"159":{},"165":{},"172":{},"173":{},"179":{},"182":{},"183":{},"188":{},"195":{},"197":{},"200":{},"202":{},"204":{}},"component":{}}],["alm",{"_index":3613,"title":{"83-20":{},"145-20":{}},"name":{},"text":{"83":{},"145":{}},"component":{}}],["alon",{"_index":1587,"title":{},"name":{},"text":{"16":{},"17":{},"93":{},"107":{},"113":{},"165":{}},"component":{}}],["along",{"_index":844,"title":{},"name":{},"text":{"9":{},"21":{},"34":{},"36":{},"103":{},"179":{},"182":{},"195":{},"197":{},"204":{}},"component":{}}],["alongsid",{"_index":157,"title":{},"name":{},"text":{"3":{},"9":{},"50":{},"87":{},"123":{},"148":{},"173":{},"179":{}},"component":{}}],["alpha",{"_index":3939,"title":{},"name":{},"text":{"84":{},"147":{}},"component":{}}],["alphabet",{"_index":1223,"title":{},"name":{},"text":{"14":{}},"component":{}}],["alreadi",{"_index":2045,"title":{},"name":{},"text":{"32":{},"36":{},"46":{},"49":{},"82":{},"83":{},"88":{},"119":{},"122":{},"145":{},"149":{},"182":{},"193":{},"197":{}},"component":{}}],["altern",{"_index":1998,"title":{},"name":{},"text":{"31":{},"36":{},"43":{},"47":{},"50":{},"86":{},"88":{},"91":{},"103":{},"121":{},"123":{},"146":{},"149":{},"153":{},"192":{},"193":{},"197":{}},"component":{}}],["although",{"_index":3439,"title":{},"name":{},"text":{"81":{},"83":{},"144":{},"145":{}},"component":{}}],["altöt",{"_index":974,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["alway",{"_index":584,"title":{},"name":{},"text":{"6":{},"9":{},"15":{},"17":{},"30":{},"31":{},"32":{},"34":{},"36":{},"41":{},"47":{},"50":{},"71":{},"78":{},"82":{},"83":{},"84":{},"98":{},"102":{},"106":{},"113":{},"115":{},"121":{},"123":{},"134":{},"141":{},"145":{},"147":{},"169":{},"176":{},"179":{},"195":{},"197":{},"203":{}},"component":{}}],["am",{"_index":2973,"title":{},"name":{},"text":{"62":{},"74":{},"104":{},"125":{},"137":{},"205":{}},"component":{}}],["ambigu",{"_index":3033,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["amount",{"_index":1154,"title":{},"name":{},"text":{"12":{},"21":{},"66":{},"78":{},"82":{},"83":{},"87":{},"103":{},"110":{},"129":{},"145":{},"148":{},"182":{},"204":{}},"component":{}}],["ampersand",{"_index":2368,"title":{},"name":{},"text":{"41":{},"82":{},"83":{},"115":{},"145":{}},"component":{}}],["amq",{"_index":3456,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["ams/ad",{"_index":1480,"title":{},"name":{},"text":{"15":{},"62":{},"106":{},"125":{}},"component":{}}],["ams/tcp",{"_index":2966,"title":{"62-1":{},"125-1":{}},"name":{},"text":{"62":{},"125":{}},"component":{}}],["amsnetid",{"_index":2975,"title":{},"name":{},"text":{"62":{},"125":{}},"component":{}}],["analog",{"_index":1759,"title":{"71-5":{},"134-5":{}},"name":{},"text":{"21":{},"71":{},"77":{},"82":{},"83":{},"134":{},"140":{},"145":{},"182":{}},"component":{}}],["analog:1",{"_index":3174,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["analog:2[3",{"_index":3175,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["analog:{start",{"_index":3173,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["analys",{"_index":644,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["analysi",{"_index":669,"title":{"25":{},"186":{}},"name":{},"text":{"8":{},"10":{},"12":{},"22":{},"25":{},"82":{},"83":{},"110":{},"145":{},"178":{},"180":{},"183":{},"186":{}},"component":{}}],["analyt",{"_index":384,"title":{},"name":{},"text":{"4":{},"12":{},"55":{},"110":{},"158":{},"174":{}},"component":{}}],["analyz",{"_index":1178,"title":{},"name":{},"text":{"13":{},"83":{},"112":{},"145":{}},"component":{}}],["anchor",{"_index":2233,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["and/or",{"_index":843,"title":{},"name":{},"text":{"9":{},"47":{},"48":{},"50":{},"83":{},"121":{},"123":{},"145":{},"179":{}},"component":{}}],["annot",{"_index":4017,"title":{"151-3":{}},"name":{},"text":{"90":{},"151":{}},"component":{}}],["announc",{"_index":2134,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["announce@apache.org",{"_index":2159,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["anoth",{"_index":190,"title":{},"name":{},"text":{"3":{},"15":{},"17":{},"34":{},"36":{},"56":{},"59":{},"62":{},"83":{},"87":{},"88":{},"93":{},"103":{},"106":{},"113":{},"125":{},"145":{},"148":{},"149":{},"159":{},"162":{},"165":{},"173":{},"195":{},"197":{},"204":{}},"component":{}}],["anounc",{"_index":738,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["answer",{"_index":923,"title":{},"name":{},"text":{"9":{},"66":{},"83":{},"129":{},"145":{},"179":{}},"component":{}}],["anteas",{"_index":3520,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["anymor",{"_index":1566,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["anyon",{"_index":898,"title":{},"name":{},"text":{"9":{},"14":{},"34":{},"36":{},"111":{},"179":{},"195":{},"197":{}},"component":{}}],["anyth",{"_index":908,"title":{},"name":{},"text":{"9":{},"21":{},"27":{},"30":{},"31":{},"32":{},"34":{},"36":{},"50":{},"59":{},"78":{},"91":{},"123":{},"141":{},"153":{},"162":{},"179":{},"182":{},"188":{},"191":{},"192":{},"193":{},"195":{},"197":{}},"component":{}}],["anyway",{"_index":4479,"title":{},"name":{},"text":{"197":{}},"component":{}}],["anywher",{"_index":1777,"title":{},"name":{},"text":{"21":{},"91":{},"153":{}},"component":{}}],["anzoátegui",{"_index":990,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["apach",{"_index":83,"title":{"9":{},"12":{},"13":{},"14":{},"17":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"101":{},"110":{},"111":{},"112":{},"113":{},"123":{},"154":{},"155":{},"156":{},"157":{},"158":{},"159":{},"160":{},"179":{},"202":{},"3-7":{},"16-1":{},"107-1":{},"173-7":{}},"name":{"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"154":{},"155":{},"156":{},"157":{},"158":{},"159":{},"160":{}},"text":{"3":{},"4":{},"6":{},"7":{},"9":{},"10":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"20":{},"21":{},"22":{},"23":{},"26":{},"27":{},"29":{},"34":{},"36":{},"37":{},"41":{},"43":{},"46":{},"49":{},"50":{},"51":{},"52":{},"54":{},"55":{},"56":{},"65":{},"66":{},"72":{},"78":{},"91":{},"93":{},"98":{},"101":{},"106":{},"107":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"119":{},"122":{},"123":{},"127":{},"129":{},"135":{},"141":{},"153":{},"154":{},"157":{},"158":{},"159":{},"165":{},"169":{},"173":{},"174":{},"175":{},"176":{},"177":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"187":{},"188":{},"190":{},"195":{},"197":{},"198":{},"202":{}},"component":{}}],["apache.releases.http",{"_index":2172,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["apache.snapshots.http",{"_index":2171,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["apachecon",{"_index":403,"title":{},"name":{},"text":{"4":{},"36":{},"174":{},"197":{}},"component":{}}],["apacheid@plc4x",{"_index":1826,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["apache’",{"_index":1796,"title":{},"name":{},"text":{"22":{},"26":{},"28":{},"36":{},"183":{},"185":{},"187":{},"189":{},"197":{}},"component":{}}],["apart",{"_index":3962,"title":{},"name":{},"text":{"85":{}},"component":{}}],["api",{"_index":98,"title":{"46-2":{},"47-1":{},"48-1":{},"91-4":{},"119-2":{},"121-1":{},"153-4":{}},"name":{},"text":{"3":{},"12":{},"15":{},"17":{},"21":{},"29":{},"36":{},"41":{},"46":{},"47":{},"50":{},"52":{},"54":{},"55":{},"65":{},"66":{},"72":{},"78":{},"83":{},"88":{},"90":{},"91":{},"92":{},"93":{},"104":{},"106":{},"110":{},"113":{},"115":{},"119":{},"121":{},"123":{},"127":{},"129":{},"135":{},"145":{},"149":{},"151":{},"152":{},"153":{},"157":{},"158":{},"165":{},"173":{},"182":{},"190":{},"197":{},"205":{}},"component":{}}],["apimodel.plcresponsecode_ok",{"_index":2528,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["apimodel.plcsubscriptionev",{"_index":2522,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["app",{"_index":3663,"title":{},"name":{},"text":{"83":{},"145":{},"193":{}},"component":{}}],["app(31)(32",{"_index":3804,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["app.go",{"_index":2421,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["appear",{"_index":753,"title":{},"name":{},"text":{"8":{},"56":{},"78":{},"159":{},"178":{}},"component":{}}],["append",{"_index":2268,"title":{},"name":{},"text":{"37":{},"98":{},"169":{},"198":{}},"component":{}}],["appl",{"_index":2022,"title":{},"name":{},"text":{"32":{}},"component":{}}],["apple’",{"_index":1958,"title":{},"name":{},"text":{"30":{}},"component":{}}],["appli",{"_index":688,"title":{},"name":{},"text":{"8":{},"10":{},"17":{},"34":{},"36":{},"56":{},"66":{},"77":{},"78":{},"83":{},"90":{},"91":{},"113":{},"129":{},"141":{},"145":{},"153":{},"159":{},"178":{},"180":{},"195":{},"197":{}},"component":{}}],["applic",{"_index":19,"title":{},"name":{},"text":{"2":{},"8":{},"15":{},"16":{},"17":{},"21":{},"42":{},"46":{},"47":{},"48":{},"50":{},"55":{},"65":{},"66":{},"78":{},"82":{},"83":{},"87":{},"88":{},"90":{},"93":{},"98":{},"101":{},"103":{},"106":{},"107":{},"113":{},"116":{},"119":{},"121":{},"123":{},"127":{},"129":{},"141":{},"145":{},"148":{},"149":{},"151":{},"158":{},"165":{},"169":{},"172":{},"178":{},"182":{},"202":{},"204":{}},"component":{}}],["application/json",{"_index":2808,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["approach",{"_index":2576,"title":{},"name":{},"text":{"47":{},"78":{},"81":{},"83":{},"121":{},"141":{},"144":{},"145":{}},"component":{}}],["appropri",{"_index":824,"title":{},"name":{},"text":{"9":{},"83":{},"145":{},"179":{}},"component":{}}],["approv",{"_index":580,"title":{},"name":{},"text":{"6":{},"9":{},"176":{},"179":{}},"component":{}}],["apr",{"_index":721,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["april",{"_index":348,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["apt",{"_index":1834,"title":{},"name":{},"text":{"26":{},"30":{},"31":{},"32":{},"187":{},"191":{}},"component":{}}],["arbitari",{"_index":2863,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["arbitr",{"_index":4126,"title":{},"name":{},"text":{"98":{},"169":{}},"component":{}}],["arbitrari",{"_index":4264,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["architect",{"_index":1062,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["architectur",{"_index":18,"title":{"2":{},"172":{}},"name":{"2":{},"172":{}},"text":{"10":{},"29":{},"78":{},"83":{},"87":{},"141":{},"145":{},"148":{},"180":{}},"component":{}}],["archiv",{"_index":626,"title":{},"name":{},"text":{"7":{},"9":{},"10":{},"15":{},"36":{},"37":{},"55":{},"56":{},"106":{},"158":{},"159":{},"177":{},"179":{},"180":{},"197":{},"198":{}},"component":{}}],["archive.apache.org",{"_index":836,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["arduino",{"_index":3131,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["arduino’",{"_index":3163,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["are:/n",{"_index":3465,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["area",{"_index":3228,"title":{"77-14":{},"82-9":{},"83-12":{},"85-6":{},"140-14":{},"145-12":{}},"name":{},"text":{"77":{},"82":{},"83":{},"84":{},"85":{},"140":{},"145":{},"147":{}},"component":{}}],["area}{start",{"_index":3241,"title":{},"name":{},"text":{"77":{},"82":{},"83":{},"140":{},"145":{}},"component":{}}],["aren’t",{"_index":2054,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["arg",{"_index":3712,"title":{},"name":{},"text":{"83":{},"87":{},"90":{},"145":{},"148":{},"151":{}},"component":{}}],["arglin",{"_index":1930,"title":{},"name":{},"text":{"29":{},"190":{}},"component":{}}],["argument",{"_index":161,"title":{"103-22":{}},"name":{},"text":{"3":{},"39":{},"41":{},"50":{},"54":{},"90":{},"91":{},"103":{},"115":{},"123":{},"153":{},"157":{},"173":{},"200":{},"204":{}},"component":{}}],["aris",{"_index":1925,"title":{},"name":{},"text":{"29":{},"190":{}},"component":{}}],["arm64.jar",{"_index":2044,"title":{},"name":{},"text":{"32":{}},"component":{}}],["arm64/bin/java",{"_index":1951,"title":{},"name":{},"text":{"30":{}},"component":{}}],["arm_64.jar",{"_index":2043,"title":{},"name":{},"text":{"32":{}},"component":{}}],["around",{"_index":323,"title":{"123":{}},"name":{},"text":{"4":{},"56":{},"59":{},"83":{},"86":{},"88":{},"92":{},"145":{},"146":{},"149":{},"152":{},"159":{},"162":{},"174":{}},"component":{}}],["arrang",{"_index":3682,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["array",{"_index":1395,"title":{"103-4":{},"204-4":{}},"name":{},"text":{"15":{},"39":{},"48":{},"50":{},"62":{},"63":{},"66":{},"70":{},"71":{},"76":{},"77":{},"82":{},"83":{},"84":{},"85":{},"103":{},"106":{},"123":{},"125":{},"126":{},"129":{},"133":{},"134":{},"139":{},"140":{},"145":{},"147":{},"200":{},"204":{}},"component":{}}],["arrayfield",{"_index":4321,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["arrayoutofboundexcept",{"_index":1532,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["arrays.aslist",{"_index":4165,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["arrays.aslist(\"read",{"_index":4159,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["arrayutils.toprimitive(data.toarray(new",{"_index":3872,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["arrow",{"_index":2896,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["articl",{"_index":451,"title":{},"name":{},"text":{"5":{},"66":{},"129":{},"175":{}},"component":{}}],["artifact",{"_index":202,"title":{"34-11":{},"36-15":{},"195-11":{},"197-15":{}},"name":{},"text":{"3":{},"9":{},"15":{},"21":{},"22":{},"27":{},"34":{},"36":{},"37":{},"106":{},"173":{},"179":{},"182":{},"183":{},"188":{},"195":{},"197":{},"198":{}},"component":{}}],["artifici",{"_index":4298,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["arument",{"_index":4490,"title":{},"name":{},"text":{"204":{}},"component":{}}],["asc",{"_index":1227,"title":{"15-2":{},"15-7":{},"15-10":{},"15-11":{},"15-13":{},"15-17":{},"15-21":{},"15-25":{},"15-29":{},"15-33":{},"15-38":{},"15-42":{},"15-46":{},"15-48":{},"106-2":{},"106-7":{},"106-10":{},"106-11":{},"106-13":{},"106-17":{},"106-21":{},"106-25":{},"106-29":{},"106-33":{},"106-38":{},"106-42":{},"106-46":{},"106-48":{}},"name":{},"text":{},"component":{}}],["ascii",{"_index":65,"title":{"77-7":{},"140-7":{}},"name":{},"text":{"2":{},"15":{},"27":{},"36":{},"77":{},"103":{},"106":{},"140":{},"172":{},"188":{},"197":{}},"component":{}}],["asciidoc",{"_index":1874,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["asciidoctor",{"_index":537,"title":{},"name":{},"text":{"5":{},"27":{},"175":{},"188":{}},"component":{}}],["asf",{"_index":568,"title":{},"name":{},"text":{"6":{},"9":{},"27":{},"34":{},"36":{},"101":{},"176":{},"179":{},"188":{},"195":{},"197":{},"202":{}},"component":{}}],["asia",{"_index":1168,"title":{},"name":{},"text":{"13":{},"112":{}},"component":{}}],["ask",{"_index":20,"title":{},"name":{},"text":{"2":{},"5":{},"9":{},"31":{},"34":{},"36":{},"43":{},"47":{},"49":{},"50":{},"59":{},"65":{},"87":{},"121":{},"122":{},"123":{},"127":{},"148":{},"162":{},"172":{},"175":{},"179":{},"195":{},"197":{}},"component":{}}],["asn.1",{"_index":1705,"title":{},"name":{},"text":{"21":{}},"component":{}}],["aspect",{"_index":1630,"title":{},"name":{},"text":{"17":{},"41":{},"113":{},"115":{}},"component":{}}],["assembl",{"_index":262,"title":{},"name":{},"text":{"3":{},"34":{},"36":{},"173":{},"195":{},"197":{},"201":{}},"component":{}}],["assent",{"_index":595,"title":{},"name":{},"text":{"6":{},"176":{}},"component":{}}],["assert",{"_index":4249,"title":{"103-5":{}},"name":{},"text":{"103":{},"204":{}},"component":{}}],["assertionexcept",{"_index":4282,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["assess",{"_index":759,"title":{"9":{},"179":{},"9-2":{},"179-2":{}},"name":{},"text":{"9":{},"179":{}},"component":{}}],["assign",{"_index":2885,"title":{},"name":{},"text":{"56":{},"82":{},"83":{},"91":{},"103":{},"145":{},"153":{},"159":{},"175":{}},"component":{}}],["assist",{"_index":523,"title":{},"name":{},"text":{"5":{},"10":{},"15":{},"106":{},"175":{},"180":{}},"component":{}}],["assistant.io/integrations/ad",{"_index":2969,"title":{},"name":{},"text":{"62":{},"125":{}},"component":{}}],["associ",{"_index":572,"title":{},"name":{},"text":{"6":{},"82":{},"83":{},"145":{},"176":{}},"component":{}}],["associated_valu",{"_index":3808,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["assso",{"_index":1211,"title":{},"name":{},"text":{"14":{}},"component":{}}],["assum",{"_index":2378,"title":{},"name":{},"text":{"41":{},"46":{},"48":{},"50":{},"66":{},"76":{},"77":{},"78":{},"82":{},"83":{},"84":{},"85":{},"119":{},"123":{},"129":{},"139":{},"140":{},"141":{},"145":{},"147":{}},"component":{}}],["assur",{"_index":639,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["asymmetr",{"_index":3022,"title":{},"name":{},"text":{"65":{},"127":{}},"component":{}}],["async",{"_index":2600,"title":{},"name":{},"text":{"47":{},"48":{},"121":{}},"component":{}}],["asynchron",{"_index":948,"title":{},"name":{},"text":{"9":{},"47":{},"48":{},"50":{},"66":{},"83":{},"121":{},"123":{},"129":{},"145":{},"179":{}},"component":{}}],["asyncio",{"_index":2616,"title":{},"name":{},"text":{"48":{}},"component":{}}],["asyncio.run(communicate_with_plc",{"_index":2636,"title":{},"name":{},"text":{"48":{}},"component":{}}],["asyncrespons",{"_index":2568,"title":{},"name":{},"text":{"47":{},"50":{},"121":{},"123":{}},"component":{}}],["asyncresponse.whencomplete((respons",{"_index":2569,"title":{},"name":{},"text":{"47":{},"50":{},"121":{},"123":{}},"component":{}}],["attach",{"_index":60,"title":{},"name":{},"text":{"2":{},"83":{},"91":{},"145":{},"153":{},"172":{}},"component":{}}],["attack",{"_index":1634,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["attain",{"_index":4219,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["attempt",{"_index":2719,"title":{},"name":{},"text":{"50":{},"66":{},"78":{},"123":{},"129":{},"141":{}},"component":{}}],["attend",{"_index":321,"title":{},"name":{},"text":{"4":{},"36":{},"174":{},"197":{}},"component":{}}],["attent",{"_index":2071,"title":{},"name":{},"text":{"34":{},"36":{},"37":{},"46":{},"72":{},"82":{},"83":{},"119":{},"135":{},"145":{},"195":{},"197":{},"198":{}},"component":{}}],["attribut",{"_index":1724,"title":{},"name":{},"text":{"21":{},"39":{},"41":{},"78":{},"101":{},"103":{},"200":{},"202":{},"204":{}},"component":{}}],["attributeid",{"_index":3364,"title":{},"name":{},"text":{"78":{}},"component":{}}],["audit",{"_index":3417,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["aufbechen",{"_index":1191,"title":{},"name":{},"text":{"13":{},"112":{}},"component":{}}],["aufbrechen",{"_index":378,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["august",{"_index":1170,"title":{},"name":{},"text":{"13":{},"62":{},"71":{},"112":{},"125":{},"134":{}},"component":{}}],["ausbg2\":0,\"ausbg1\":2,\"bgtyp\":130,\"index\":6,\"mifb\":\"6es7",{"_index":3895,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["ausbg2\":3,\"ausbg1\":22021,\"bgtyp\":0,\"index\":129,\"mifb\":\"boot",{"_index":3897,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["ausbg2\":768,\"ausbg1\":22021,\"bgtyp\":0,\"index\":7,\"mifb",{"_index":3896,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["auslesen",{"_index":1185,"title":{},"name":{},"text":{"13":{},"112":{}},"component":{}}],["authent",{"_index":798,"title":{},"name":{},"text":{"9":{},"15":{},"78":{},"106":{},"141":{},"179":{}},"component":{}}],["authentication?truefalseconfig",{"_index":4379,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["authorized_key",{"_index":1817,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["auto",{"_index":2893,"title":{},"name":{},"text":{"56":{},"74":{},"78":{},"137":{},"141":{},"159":{}},"component":{}}],["autom",{"_index":992,"title":{"62":{},"125":{},"63-1":{},"66-1":{},"126-1":{},"129-1":{}},"name":{},"text":{"10":{},"12":{},"16":{},"17":{},"21":{},"34":{},"36":{},"37":{},"62":{},"63":{},"83":{},"107":{},"110":{},"113":{},"125":{},"126":{},"145":{},"180":{},"182":{},"195":{},"197":{},"198":{}},"component":{}}],["automat",{"_index":154,"title":{},"name":{},"text":{"3":{},"7":{},"8":{},"9":{},"15":{},"22":{},"26":{},"27":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"46":{},"49":{},"50":{},"56":{},"63":{},"66":{},"75":{},"81":{},"82":{},"83":{},"86":{},"87":{},"88":{},"90":{},"91":{},"95":{},"101":{},"106":{},"119":{},"122":{},"123":{},"126":{},"129":{},"138":{},"144":{},"145":{},"146":{},"148":{},"149":{},"153":{},"159":{},"166":{},"173":{},"177":{},"178":{},"179":{},"183":{},"187":{},"188":{},"195":{},"197":{},"198":{},"202":{}},"component":{}}],["automatisierungsindustri",{"_index":377,"title":{},"name":{},"text":{"4":{},"13":{},"112":{},"174":{}},"component":{}}],["automatización",{"_index":985,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["avail",{"_index":126,"title":{},"name":{},"text":{"3":{},"8":{},"9":{},"11":{},"14":{},"15":{},"16":{},"17":{},"18":{},"24":{},"25":{},"26":{},"27":{},"28":{},"30":{},"31":{},"32":{},"34":{},"36":{},"41":{},"46":{},"47":{},"48":{},"50":{},"55":{},"56":{},"59":{},"72":{},"77":{},"78":{},"81":{},"82":{},"83":{},"91":{},"92":{},"93":{},"103":{},"106":{},"107":{},"111":{},"113":{},"115":{},"119":{},"121":{},"123":{},"135":{},"140":{},"144":{},"145":{},"152":{},"153":{},"158":{},"159":{},"162":{},"165":{},"173":{},"178":{},"179":{},"181":{},"185":{},"186":{},"187":{},"188":{},"189":{},"192":{},"193":{},"195":{},"197":{},"204":{}},"component":{}}],["aviso",{"_index":3578,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["avoid",{"_index":2272,"title":{},"name":{},"text":{"37":{},"50":{},"82":{},"83":{},"92":{},"123":{},"145":{},"152":{},"198":{}},"component":{}}],["avro",{"_index":1699,"title":{},"name":{},"text":{"21":{}},"component":{}}],["await",{"_index":2632,"title":{},"name":{},"text":{"48":{}},"component":{}}],["awar",{"_index":4034,"title":{},"name":{},"text":{"90":{},"103":{}},"component":{}}],["awesom",{"_index":610,"title":{},"name":{},"text":{"7":{},"177":{}},"component":{}}],["b",{"_index":1702,"title":{},"name":{},"text":{"21":{},"82":{},"83":{},"91":{},"145":{},"153":{}},"component":{}}],["b01sec",{"_index":3826,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["b0sec",{"_index":3830,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["b1",{"_index":2040,"title":{},"name":{},"text":{"32":{}},"component":{}}],["b1/cmake",{"_index":2041,"title":{},"name":{},"text":{"32":{}},"component":{}}],["b10sec",{"_index":3831,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["back",{"_index":526,"title":{"34-12":{},"36-13":{},"36-17":{},"195-12":{},"197-13":{},"197-17":{}},"name":{},"text":{"5":{},"9":{},"10":{},"12":{},"34":{},"36":{},"39":{},"41":{},"82":{},"86":{},"87":{},"103":{},"110":{},"115":{},"146":{},"148":{},"175":{},"179":{},"180":{},"195":{},"197":{},"200":{}},"component":{}}],["background",{"_index":566,"title":{},"name":{},"text":{"6":{},"47":{},"48":{},"50":{},"121":{},"123":{},"176":{}},"component":{}}],["backoff",{"_index":2773,"title":{"55-11":{},"158-11":{}},"name":{},"text":{"55":{},"158":{}},"component":{}}],["backplan",{"_index":3121,"title":{},"name":{},"text":{"70":{},"76":{},"133":{},"139":{}},"component":{}}],["backup",{"_index":1614,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["backward",{"_index":881,"title":{},"name":{},"text":{"9":{},"55":{},"158":{},"179":{}},"component":{}}],["bacnet",{"_index":69,"title":{"63-1":{},"126-1":{}},"name":{"63":{},"126":{}},"text":{"2":{},"5":{},"63":{},"126":{},"172":{},"175":{}},"component":{}}],["bacnet/ip",{"_index":1526,"title":{"63":{},"126":{}},"name":{},"text":{"15":{},"63":{},"74":{},"106":{},"126":{},"137":{}},"component":{}}],["bad",{"_index":1855,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["balanc",{"_index":2780,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["banner",{"_index":434,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["base",{"_index":41,"title":{},"name":{},"text":{"2":{},"9":{},"15":{},"17":{},"21":{},"22":{},"30":{},"31":{},"37":{},"39":{},"41":{},"43":{},"47":{},"48":{},"50":{},"55":{},"59":{},"66":{},"71":{},"72":{},"78":{},"81":{},"82":{},"83":{},"91":{},"101":{},"103":{},"106":{},"113":{},"115":{},"121":{},"123":{},"129":{},"134":{},"135":{},"141":{},"144":{},"145":{},"153":{},"158":{},"162":{},"172":{},"179":{},"182":{},"183":{},"191":{},"198":{},"200":{},"202":{},"204":{}},"component":{}}],["baseeventtyp",{"_index":3391,"title":{},"name":{},"text":{"78":{}},"component":{}}],["basefreemarkerlanguagetemplatehelp",{"_index":4200,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["baseoptim",{"_index":1431,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["bash_profil",{"_index":2012,"title":{},"name":{},"text":{"31":{},"192":{}},"component":{}}],["basi",{"_index":3244,"title":{},"name":{},"text":{"77":{},"78":{},"101":{},"141":{},"202":{}},"component":{}}],["basic",{"_index":228,"title":{"201":{},"50-2":{},"123-2":{}},"name":{},"text":{"3":{},"7":{},"27":{},"47":{},"48":{},"50":{},"55":{},"72":{},"78":{},"82":{},"83":{},"87":{},"93":{},"102":{},"121":{},"123":{},"135":{},"145":{},"148":{},"158":{},"165":{},"177":{},"188":{},"203":{}},"component":{}}],["basic128rsa15",{"_index":3309,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["basic256",{"_index":3310,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["basic256sha256",{"_index":3311,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["batch",{"_index":3790,"title":{},"name":{},"text":{"83":{},"91":{},"145":{},"153":{}},"component":{}}],["baud",{"_index":3137,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["be",{"_index":125,"title":{"36-2":{},"197-2":{}},"name":{},"text":{"3":{},"9":{},"12":{},"15":{},"17":{},"21":{},"26":{},"27":{},"34":{},"36":{},"41":{},"55":{},"59":{},"77":{},"83":{},"88":{},"90":{},"101":{},"102":{},"103":{},"106":{},"110":{},"113":{},"115":{},"140":{},"145":{},"149":{},"158":{},"162":{},"173":{},"179":{},"182":{},"187":{},"188":{},"190":{},"195":{},"197":{},"202":{},"203":{},"204":{}},"component":{}}],["bearer",{"_index":2388,"title":{},"name":{},"text":{"43":{}},"component":{}}],["becam",{"_index":1020,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["beckhoff",{"_index":1479,"title":{"104":{},"205":{}},"name":{},"text":{"15":{},"33":{},"36":{},"62":{},"106":{},"125":{},"194":{},"197":{}},"component":{}}],["becom",{"_index":444,"title":{},"name":{},"text":{"5":{},"9":{},"10":{},"71":{},"75":{},"83":{},"134":{},"138":{},"145":{},"173":{},"175":{},"179":{},"180":{}},"component":{}}],["befor",{"_index":502,"title":{},"name":{},"text":{"5":{},"9":{},"17":{},"21":{},"34":{},"36":{},"48":{},"50":{},"55":{},"56":{},"82":{},"83":{},"87":{},"88":{},"101":{},"103":{},"113":{},"123":{},"145":{},"148":{},"149":{},"158":{},"159":{},"175":{},"179":{},"195":{},"197":{},"202":{},"204":{}},"component":{}}],["begin",{"_index":792,"title":{},"name":{},"text":{"9":{},"15":{},"34":{},"36":{},"55":{},"63":{},"75":{},"76":{},"83":{},"95":{},"106":{},"126":{},"138":{},"139":{},"145":{},"158":{},"166":{},"179":{},"195":{},"197":{}},"component":{}}],["beginn",{"_index":269,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["behav",{"_index":283,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["behavior",{"_index":1141,"title":{},"name":{},"text":{"12":{},"78":{},"82":{},"83":{},"110":{},"145":{}},"component":{}}],["behaviour",{"_index":4222,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["behind",{"_index":1152,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["belong",{"_index":1281,"title":{},"name":{},"text":{"15":{},"34":{},"36":{},"106":{},"195":{},"197":{}},"component":{}}],["below",{"_index":2382,"title":{},"name":{},"text":{"43":{},"48":{},"55":{},"56":{},"59":{},"65":{},"66":{},"72":{},"78":{},"83":{},"84":{},"98":{},"127":{},"129":{},"135":{},"145":{},"147":{},"158":{},"159":{},"162":{},"169":{}},"component":{}}],["ben",{"_index":970,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["benefit",{"_index":1593,"title":{"17-1":{},"113-1":{}},"name":{},"text":{"17":{},"21":{},"88":{},"113":{},"149":{},"182":{}},"component":{}}],["benevol",{"_index":921,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["berlin",{"_index":381,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["besid",{"_index":1036,"title":{},"name":{},"text":{"10":{},"93":{},"165":{},"180":{}},"component":{}}],["best",{"_index":1996,"title":{},"name":{},"text":{"31":{},"82":{},"83":{},"145":{},"192":{}},"component":{}}],["beta",{"_index":1525,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["better",{"_index":1734,"title":{},"name":{},"text":{"21":{},"41":{},"83":{},"115":{},"145":{},"182":{},"193":{}},"component":{}}],["between",{"_index":33,"title":{},"name":{},"text":{"2":{},"12":{},"17":{},"34":{},"36":{},"41":{},"55":{},"62":{},"66":{},"77":{},"78":{},"83":{},"88":{},"91":{},"101":{},"102":{},"103":{},"110":{},"113":{},"115":{},"125":{},"129":{},"140":{},"141":{},"145":{},"149":{},"153":{},"158":{},"172":{},"195":{},"197":{},"202":{},"203":{},"204":{}},"component":{}}],["beverag",{"_index":999,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["beyond",{"_index":1878,"title":{},"name":{},"text":{"27":{},"36":{},"78":{},"141":{},"173":{},"188":{},"197":{}},"component":{}}],["big",{"_index":385,"title":{},"name":{},"text":{"4":{},"8":{},"10":{},"12":{},"15":{},"17":{},"70":{},"76":{},"82":{},"106":{},"110":{},"113":{},"133":{},"139":{},"174":{},"178":{},"180":{}},"component":{}}],["big_endian",{"_index":3233,"title":{},"name":{},"text":{"77":{},"103":{}},"component":{}}],["big_endian_byte_swap",{"_index":3235,"title":{},"name":{},"text":{"77":{}},"component":{}}],["bigendian",{"_index":2303,"title":{},"name":{},"text":{"39":{},"133":{},"139":{},"200":{}},"component":{}}],["bigger",{"_index":1625,"title":{},"name":{},"text":{"17":{},"103":{},"113":{},"204":{}},"component":{}}],["biggest",{"_index":1609,"title":{},"name":{},"text":{"17":{},"65":{},"113":{},"127":{}},"component":{}}],["bin",{"_index":2823,"title":{},"name":{},"text":{"55":{},"158":{},"193":{}},"component":{}}],["bin/bash",{"_index":1988,"title":{},"name":{},"text":{"31":{}},"component":{}}],["bin/connect",{"_index":2813,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["bin/kafka",{"_index":2797,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["bin/nifi.sh",{"_index":2902,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["bin/zookeep",{"_index":2794,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["binari",{"_index":805,"title":{"71-4":{},"134-4":{}},"name":{},"text":{"9":{},"20":{},"32":{},"36":{},"37":{},"39":{},"55":{},"77":{},"83":{},"114":{},"140":{},"145":{},"158":{},"179":{},"193":{},"197":{},"198":{},"200":{}},"component":{}}],["binaries/3.27.7",{"_index":2039,"title":{},"name":{},"text":{"32":{}},"component":{}}],["binary(b",{"_index":3360,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["bind",{"_index":587,"title":{},"name":{},"text":{"6":{},"34":{},"36":{},"37":{},"81":{},"91":{},"144":{},"153":{},"176":{},"195":{},"197":{},"198":{}},"component":{}}],["bio",{"_index":969,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["bit",{"_index":288,"title":{},"name":{},"text":{"3":{},"15":{},"32":{},"41":{},"46":{},"50":{},"56":{},"65":{},"66":{},"70":{},"71":{},"72":{},"75":{},"77":{},"82":{},"83":{},"91":{},"92":{},"98":{},"103":{},"106":{},"119":{},"123":{},"127":{},"129":{},"133":{},"134":{},"135":{},"138":{},"140":{},"145":{},"152":{},"153":{},"159":{},"169":{},"204":{}},"component":{}}],["bit)}/{middl",{"_index":3200,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["bit)}/{sub",{"_index":3201,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["bitstr",{"_index":1306,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["bit|byt",{"_index":4293,"title":{},"name":{},"text":{"103":{}},"component":{}}],["bloc",{"_index":4484,"title":{"201":{}},"name":{},"text":{},"component":{}}],["block",{"_index":1449,"title":{},"name":{},"text":{"15":{},"46":{},"47":{},"49":{},"66":{},"82":{},"83":{},"87":{},"103":{},"106":{},"119":{},"121":{},"122":{},"129":{},"145":{},"148":{},"204":{}},"component":{}}],["blog",{"_index":452,"title":{"13":{},"112":{},"13-1":{},"112-1":{}},"name":{"13":{},"112":{}},"text":{"5":{},"175":{}},"component":{}}],["blue",{"_index":1692,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["board",{"_index":579,"title":{},"name":{},"text":{"6":{},"9":{},"176":{},"179":{}},"component":{}}],["boilerpl",{"_index":2307,"title":{},"name":{},"text":{"39":{},"82":{},"83":{},"91":{},"101":{},"145":{},"153":{},"200":{},"202":{}},"component":{}}],["bombard",{"_index":2856,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["book",{"_index":1628,"title":{},"name":{},"text":{"17":{},"43":{},"113":{}},"component":{}}],["bool",{"_index":3076,"title":{},"name":{},"text":{"66":{},"70":{},"72":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"129":{},"133":{},"135":{},"139":{},"140":{},"141":{},"144":{},"145":{},"147":{}},"component":{}}],["boolean",{"_index":1315,"title":{},"name":{},"text":{"15":{},"50":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"90":{},"103":{},"106":{},"123":{},"124":{},"125":{},"126":{},"128":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"147":{},"204":{}},"component":{}}],["boost",{"_index":4434,"title":{},"name":{},"text":{"173":{}},"component":{}}],["boot",{"_index":3071,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["bootstrap",{"_index":1866,"title":{},"name":{},"text":{"27":{},"55":{},"91":{},"153":{},"158":{},"188":{}},"component":{}}],["bootstrap_debug_param",{"_index":2903,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["born",{"_index":2013,"title":{},"name":{},"text":{"32":{}},"component":{}}],["both",{"_index":28,"title":{},"name":{},"text":{"2":{},"9":{},"15":{},"17":{},"21":{},"41":{},"47":{},"50":{},"56":{},"66":{},"71":{},"77":{},"78":{},"82":{},"83":{},"88":{},"91":{},"103":{},"106":{},"113":{},"115":{},"121":{},"123":{},"129":{},"134":{},"140":{},"141":{},"145":{},"149":{},"153":{},"159":{},"172":{},"173":{},"179":{},"182":{},"204":{}},"component":{}}],["bottom",{"_index":2883,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["bound",{"_index":814,"title":{},"name":{},"text":{"9":{},"103":{},"179":{},"204":{}},"component":{}}],["box",{"_index":1653,"title":{},"name":{},"text":{"17":{},"83":{},"113":{},"145":{}},"component":{}}],["bracket",{"_index":1389,"title":{},"name":{},"text":{"15":{},"37":{},"103":{},"106":{},"198":{},"204":{}},"component":{}}],["bradley",{"_index":2305,"title":{},"name":{},"text":{"39":{},"61":{},"124":{},"200":{}},"component":{}}],["brain",{"_index":1888,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["brainstorm",{"_index":4255,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["branch",{"_index":442,"title":{"5-7":{},"34-1":{},"34-12":{},"36-4":{},"36-17":{},"175-7":{},"195-1":{},"195-12":{},"197-4":{},"197-17":{}},"name":{},"text":{"5":{},"22":{},"27":{},"34":{},"36":{},"175":{},"183":{},"188":{},"195":{},"197":{}},"component":{}}],["brand",{"_index":3645,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["braumat",{"_index":997,"title":{},"name":{},"text":{"10":{},"83":{},"145":{},"180":{}},"component":{}}],["break",{"_index":491,"title":{},"name":{},"text":{"5":{},"8":{},"103":{},"175":{},"178":{},"204":{}},"component":{}}],["brew",{"_index":1994,"title":{},"name":{},"text":{"31":{},"83":{},"145":{},"192":{}},"component":{}}],["bridg",{"_index":2241,"title":{},"name":{},"text":{"36":{},"93":{},"98":{},"165":{},"169":{},"197":{}},"component":{}}],["brief",{"_index":2131,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["bring",{"_index":1474,"title":{},"name":{},"text":{"15":{},"16":{},"21":{},"50":{},"65":{},"78":{},"93":{},"106":{},"107":{},"123":{},"127":{},"165":{},"182":{}},"component":{}}],["broad",{"_index":1129,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["broadcast",{"_index":12,"title":{"2-3":{},"172-3":{}},"name":{},"text":{"2":{},"66":{},"129":{},"172":{}},"component":{}}],["broker",{"_index":2770,"title":{"55-4":{},"158-4":{}},"name":{},"text":{"55":{},"158":{}},"component":{}}],["brought",{"_index":3690,"title":{},"name":{},"text":{"83":{},"93":{},"145":{},"165":{}},"component":{}}],["brownfield",{"_index":1121,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["brows",{"_index":1342,"title":{},"name":{},"text":{"15":{},"47":{},"48":{},"74":{},"78":{},"81":{},"85":{},"104":{},"105":{},"106":{},"121":{},"137":{},"141":{},"144":{},"205":{},"206":{}},"component":{}}],["browseapi",{"_index":2565,"title":{},"name":{},"text":{"47":{},"48":{},"121":{}},"component":{}}],["browser",{"_index":720,"title":{},"name":{},"text":{"8":{},"56":{},"159":{},"178":{}},"component":{}}],["brussel",{"_index":425,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["bu",{"_index":1172,"title":{"64":{},"65":{},"127":{},"128":{},"72-1":{},"135-1":{}},"name":{"64":{},"128":{}},"text":{"13":{},"64":{},"65":{},"66":{},"72":{},"75":{},"93":{},"94":{},"98":{},"112":{},"127":{},"128":{},"129":{},"135":{},"138":{},"164":{},"165":{},"169":{}},"component":{}}],["bubbl",{"_index":4296,"title":{},"name":{},"text":{"103":{}},"component":{}}],["buffer",{"_index":1328,"title":{},"name":{},"text":{"15":{},"55":{},"78":{},"82":{},"83":{},"98":{},"106":{},"141":{},"145":{},"158":{},"169":{}},"component":{}}],["bug",{"_index":440,"title":{"18":{},"19":{},"24":{},"108":{},"185":{},"5-5":{},"15-5":{},"15-9":{},"15-12":{},"15-16":{},"15-20":{},"15-24":{},"15-28":{},"15-32":{},"15-36":{},"15-41":{},"15-45":{},"106-5":{},"106-9":{},"106-12":{},"106-16":{},"106-20":{},"106-24":{},"106-28":{},"106-32":{},"106-36":{},"106-41":{},"106-45":{},"175-5":{}},"name":{},"text":{"5":{},"9":{},"15":{},"18":{},"24":{},"34":{},"36":{},"106":{},"175":{},"179":{},"185":{},"195":{},"197":{}},"component":{}}],["bugfix",{"_index":549,"title":{},"name":{},"text":{"5":{},"15":{},"34":{},"36":{},"106":{},"175":{},"195":{},"197":{}},"component":{}}],["build",{"_index":79,"title":{"3":{},"34":{},"173":{},"195":{},"201":{},"3-4":{},"3-5":{},"7-2":{},"22-1":{},"59-1":{},"63-1":{},"126-1":{},"162-1":{},"173-4":{},"173-5":{},"177-2":{},"183-1":{}},"name":{"3":{},"34":{},"173":{},"195":{}},"text":{"3":{},"4":{},"5":{},"7":{},"8":{},"9":{},"13":{},"15":{},"21":{},"22":{},"26":{},"27":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"39":{},"40":{},"46":{},"47":{},"48":{},"50":{},"56":{},"59":{},"63":{},"75":{},"82":{},"83":{},"87":{},"91":{},"92":{},"106":{},"112":{},"119":{},"121":{},"123":{},"126":{},"138":{},"145":{},"148":{},"152":{},"153":{},"159":{},"162":{},"173":{},"174":{},"175":{},"177":{},"178":{},"179":{},"182":{},"183":{},"187":{},"188":{},"190":{},"193":{},"195":{},"197":{},"198":{},"200":{}},"component":{}}],["build.gradl",{"_index":304,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["build/test",{"_index":1592,"title":{},"name":{},"text":{"16":{},"107":{}},"component":{}}],["builder",{"_index":2540,"title":{},"name":{},"text":{"46":{},"47":{},"48":{},"50":{},"72":{},"87":{},"91":{},"93":{},"119":{},"121":{},"123":{},"135":{},"148":{},"153":{},"165":{}},"component":{}}],["builder.add_item(\"random",{"_index":2628,"title":{},"name":{},"text":{"48":{}},"component":{}}],["builder.addchangeofstatetagaddress(\"valu",{"_index":2595,"title":{},"name":{},"text":{"47":{},"121":{}},"component":{}}],["builder.addcyclictagaddress(\"valu",{"_index":2596,"title":{},"name":{},"text":{"47":{},"121":{}},"component":{}}],["builder.addeventtagaddress(\"valu",{"_index":2598,"title":{},"name":{},"text":{"47":{},"121":{}},"component":{}}],["builder.additem(\"valu",{"_index":4421,"title":{},"name":{},"text":{"123":{}},"component":{}}],["builder.addsource({connectionnam",{"_index":4050,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["builder.addtagaddress(\"valu",{"_index":2559,"title":{},"name":{},"text":{"47":{},"50":{},"121":{}},"component":{}}],["builder.build",{"_index":2564,"title":{},"name":{},"text":{"47":{},"48":{},"50":{},"91":{},"121":{},"123":{},"153":{}},"component":{}}],["builder.job({jobnam",{"_index":4055,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["builds.apache.org/job/plc4x",{"_index":1798,"title":{},"name":{},"text":{"22":{},"27":{},"183":{},"188":{}},"component":{}}],["built",{"_index":92,"title":{},"name":{},"text":{"3":{},"9":{},"15":{},"21":{},"22":{},"41":{},"48":{},"49":{},"55":{},"59":{},"66":{},"71":{},"72":{},"106":{},"115":{},"122":{},"129":{},"134":{},"135":{},"158":{},"162":{},"173":{},"179":{},"182":{},"183":{}},"component":{}}],["bulk",{"_index":3338,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["bump",{"_index":1917,"title":{},"name":{},"text":{"29":{},"190":{}},"component":{}}],["bunch",{"_index":456,"title":{},"name":{},"text":{"5":{},"175":{}},"component":{}}],["bundl",{"_index":1488,"title":{},"name":{},"text":{"15":{},"31":{},"37":{},"46":{},"106":{},"119":{},"192":{},"193":{},"198":{}},"component":{}}],["buri",{"_index":3401,"title":{},"name":{},"text":{"78":{}},"component":{}}],["busi",{"_index":930,"title":{},"name":{},"text":{"9":{},"14":{},"111":{},"179":{}},"component":{}}],["busmonitor",{"_index":3205,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["button",{"_index":495,"title":{},"name":{},"text":{"5":{},"34":{},"36":{},"50":{},"56":{},"123":{},"159":{},"175":{},"195":{},"197":{}},"component":{}}],["byte",{"_index":1307,"title":{},"name":{},"text":{"15":{},"39":{},"50":{},"62":{},"66":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"98":{},"102":{},"103":{},"106":{},"123":{},"125":{},"129":{},"139":{},"140":{},"141":{},"144":{},"145":{},"147":{},"169":{},"200":{},"203":{},"204":{}},"component":{}}],["byte[data.s",{"_index":3873,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["bytebuf",{"_index":1519,"title":{},"name":{},"text":{"15":{},"83":{},"106":{},"145":{}},"component":{}}],["byteord",{"_index":4254,"title":{"103-23":{}},"name":{},"text":{"103":{}},"component":{}}],["c",{"_index":199,"title":{"44":{},"45":{},"64":{},"117":{},"118":{},"128":{}},"name":{"64":{},"128":{}},"text":{"3":{},"7":{},"9":{},"15":{},"16":{},"29":{},"30":{},"31":{},"32":{},"36":{},"59":{},"64":{},"74":{},"82":{},"83":{},"101":{},"103":{},"106":{},"107":{},"128":{},"137":{},"145":{},"162":{},"173":{},"177":{},"179":{},"190":{},"193":{},"197":{},"202":{},"204":{}},"component":{}}],["c,d,e",{"_index":3766,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["c,with",{"_index":239,"title":{},"name":{},"text":{"3":{},"36":{},"173":{},"197":{}},"component":{}}],["c.a",{"_index":986,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["c/c",{"_index":4435,"title":{},"name":{},"text":{"173":{}},"component":{}}],["c:\\windows\\system32\\packet.dl",{"_index":2029,"title":{},"name":{},"text":{"32":{}},"component":{}}],["c:\\windows\\system32\\wpcap.dl",{"_index":2030,"title":{},"name":{},"text":{"32":{}},"component":{}}],["c:\\windows\\syswow64\\packet.dl",{"_index":2032,"title":{},"name":{},"text":{"32":{}},"component":{}}],["c:\\windows\\syswow64\\wpcap.dl",{"_index":2033,"title":{},"name":{},"text":{"32":{}},"component":{}}],["ca",{"_index":2408,"title":{},"name":{},"text":{"43":{}},"component":{}}],["cach",{"_index":1590,"title":{"87":{},"148":{}},"name":{"87":{},"148":{}},"text":{"16":{},"87":{},"90":{},"107":{},"148":{}},"component":{}}],["cachedplcconnectionmanag",{"_index":3979,"title":{"87-1":{},"148-1":{}},"name":{},"text":{"87":{},"148":{}},"component":{}}],["cachedplcconnectionmanager.getbuild",{"_index":3990,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["cachedplcconnectionmanager.getbuilder().build",{"_index":3986,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["cachedurationmilli",{"_index":4024,"title":{},"name":{},"text":{"90":{}},"component":{}}],["calcit",{"_index":1585,"title":{"51":{},"154":{}},"name":{"51":{},"154":{}},"text":{"16":{},"36":{},"51":{},"107":{},"154":{},"197":{}},"component":{}}],["calcul",{"_index":1856,"title":{},"name":{},"text":{"26":{},"37":{},"71":{},"77":{},"102":{},"103":{},"134":{},"140":{},"187":{},"198":{},"203":{},"204":{}},"component":{}}],["calculator.html",{"_index":1848,"title":{},"name":{},"text":{"26":{}},"component":{}}],["call",{"_index":106,"title":{},"name":{},"text":{"3":{},"5":{},"8":{},"10":{},"15":{},"21":{},"26":{},"27":{},"34":{},"36":{},"37":{},"40":{},"41":{},"43":{},"46":{},"47":{},"48":{},"50":{},"54":{},"65":{},"78":{},"82":{},"83":{},"87":{},"88":{},"90":{},"91":{},"101":{},"103":{},"106":{},"115":{},"119":{},"121":{},"123":{},"127":{},"141":{},"145":{},"148":{},"149":{},"151":{},"153":{},"157":{},"173":{},"175":{},"178":{},"180":{},"182":{},"187":{},"188":{},"193":{},"195":{},"197":{},"198":{},"202":{},"204":{}},"component":{}}],["callback",{"_index":2541,"title":{},"name":{},"text":{"46":{},"47":{},"48":{},"50":{},"91":{},"119":{},"121":{},"123":{},"153":{}},"component":{}}],["calle",{"_index":3462,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["caller",{"_index":3457,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["came",{"_index":1603,"title":{},"name":{},"text":{"17":{},"21":{},"113":{},"182":{}},"component":{}}],["camel",{"_index":1057,"title":{"52":{},"155":{}},"name":{"52":{},"155":{}},"text":{"10":{},"16":{},"36":{},"52":{},"107":{},"180":{},"197":{}},"component":{}}],["can0",{"_index":4124,"title":{},"name":{},"text":{"98":{},"169":{}},"component":{}}],["canbrows",{"_index":1275,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["cancel",{"_index":2224,"title":{},"name":{},"text":{"36":{},"71":{},"134":{},"197":{}},"component":{}}],["candid",{"_index":2079,"title":{"36-13":{},"197-13":{}},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["candiscov",{"_index":1269,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["candriveradapt",{"_index":3008,"title":{},"name":{},"text":{"65":{},"127":{}},"component":{}}],["canframebuild",{"_index":3021,"title":{},"name":{},"text":{"65":{},"93":{},"127":{},"165":{}},"component":{}}],["canopen",{"_index":1173,"title":{"66":{},"129":{}},"name":{"66":{},"129":{}},"text":{"13":{},"36":{},"65":{},"66":{},"72":{},"74":{},"112":{},"127":{},"129":{},"135":{},"137":{},"197":{}},"component":{}}],["canopendriv",{"_index":3023,"title":{},"name":{},"text":{"65":{},"127":{}},"component":{}}],["canopenfram",{"_index":3020,"title":{},"name":{},"text":{"65":{},"127":{}},"component":{}}],["canread",{"_index":1272,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["cansubscrib",{"_index":1274,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["canva",{"_index":2879,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["canwrit",{"_index":1273,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["can’t",{"_index":171,"title":{},"name":{},"text":{"3":{},"36":{},"39":{},"47":{},"48":{},"50":{},"71":{},"72":{},"75":{},"87":{},"88":{},"103":{},"121":{},"123":{},"134":{},"135":{},"138":{},"148":{},"149":{},"173":{},"193":{},"197":{},"200":{},"204":{}},"component":{}}],["cap_net_raw,cap_net_admin=eip",{"_index":1945,"title":{},"name":{},"text":{"30":{},"81":{},"144":{},"191":{}},"component":{}}],["capabl",{"_index":1787,"title":{},"name":{},"text":{"21":{},"32":{},"83":{},"145":{},"182":{}},"component":{}}],["capac",{"_index":3757,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["captu",{"_index":2906,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["captur",{"_index":2324,"title":{"86":{},"146":{},"86-1":{},"86-2":{},"146-1":{},"146-2":{}},"name":{"86":{},"146":{}},"text":{"40":{},"43":{},"81":{},"86":{},"96":{},"144":{},"146":{},"168":{}},"component":{}}],["card",{"_index":3833,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["care",{"_index":3204,"title":{},"name":{},"text":{"75":{},"78":{},"82":{},"83":{},"90":{},"91":{},"138":{},"145":{},"153":{},"193":{}},"component":{}}],["carri",{"_index":3472,"title":{},"name":{},"text":{"82":{},"83":{},"88":{},"145":{},"149":{}},"component":{}}],["case",{"_index":4,"title":{"2-1":{},"172-1":{}},"name":{},"text":{"2":{},"3":{},"8":{},"9":{},"15":{},"17":{},"21":{},"29":{},"31":{},"34":{},"36":{},"39":{},"40":{},"41":{},"43":{},"46":{},"47":{},"48":{},"50":{},"55":{},"56":{},"62":{},"65":{},"66":{},"71":{},"72":{},"76":{},"78":{},"82":{},"83":{},"90":{},"91":{},"92":{},"101":{},"102":{},"103":{},"106":{},"113":{},"115":{},"119":{},"121":{},"123":{},"125":{},"127":{},"129":{},"134":{},"135":{},"139":{},"141":{},"145":{},"152":{},"153":{},"158":{},"159":{},"172":{},"173":{},"178":{},"179":{},"182":{},"190":{},"195":{},"197":{},"200":{},"202":{},"203":{},"204":{}},"component":{}}],["cask",{"_index":1999,"title":{},"name":{},"text":{"31":{},"192":{}},"component":{}}],["cassandra",{"_index":1071,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["cast",{"_index":1365,"title":{},"name":{},"text":{"15":{},"92":{},"106":{},"152":{}},"component":{}}],["cast(paramet",{"_index":4323,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["catalina",{"_index":1854,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["catch",{"_index":2571,"title":{},"name":{},"text":{"47":{},"91":{},"92":{},"101":{},"121":{},"152":{},"153":{},"202":{}},"component":{}}],["categori",{"_index":4118,"title":{},"name":{},"text":{"93":{},"165":{}},"component":{}}],["caus",{"_index":74,"title":{},"name":{},"text":{"2":{},"15":{},"21":{},"31":{},"34":{},"36":{},"46":{},"50":{},"62":{},"82":{},"83":{},"90":{},"103":{},"106":{},"119":{},"123":{},"125":{},"145":{},"172":{},"182":{},"192":{},"193":{},"195":{},"197":{},"204":{}},"component":{}}],["cbu",{"_index":3188,"title":{},"name":{},"text":{"74":{},"137":{}},"component":{}}],["cc",{"_index":2238,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["ccla",{"_index":826,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["cd",{"_index":2210,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["cd10",{"_index":772,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["cd20",{"_index":777,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["cd30",{"_index":783,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["cd40",{"_index":787,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["cd50",{"_index":793,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["cdi",{"_index":666,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["central",{"_index":850,"title":{},"name":{},"text":{"9":{},"16":{},"34":{},"36":{},"49":{},"56":{},"107":{},"122":{},"159":{},"179":{},"195":{},"197":{}},"component":{}}],["ceo",{"_index":984,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["certain",{"_index":1612,"title":{},"name":{},"text":{"17":{},"43":{},"66":{},"113":{},"129":{}},"component":{}}],["certainli",{"_index":1781,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["certif",{"_index":707,"title":{"43":{},"43-1":{},"78-5":{},"141-5":{}},"name":{"43":{}},"text":{"8":{},"15":{},"43":{},"59":{},"78":{},"106":{},"141":{},"162":{},"178":{}},"component":{}}],["certifi",{"_index":1575,"title":{},"name":{},"text":{"16":{},"107":{}},"component":{}}],["chain",{"_index":1512,"title":{},"name":{},"text":{"15":{},"43":{},"78":{},"106":{},"141":{}},"component":{}}],["chair",{"_index":556,"title":{"6-4":{},"176-4":{}},"name":{},"text":{"6":{},"176":{}},"component":{}}],["challeng",{"_index":1830,"title":{},"name":{},"text":{"26":{},"29":{},"32":{},"187":{},"190":{}},"component":{}}],["chanc",{"_index":2275,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["chang",{"_index":473,"title":{"15-4":{},"15-15":{},"15-19":{},"15-23":{},"15-27":{},"15-31":{},"15-35":{},"15-40":{},"15-44":{},"15-47":{},"78-11":{},"106-4":{},"106-15":{},"106-19":{},"106-23":{},"106-27":{},"106-31":{},"106-35":{},"106-40":{},"106-44":{},"106-47":{}},"name":{},"text":{"5":{},"6":{},"9":{},"14":{},"15":{},"17":{},"21":{},"27":{},"32":{},"34":{},"36":{},"37":{},"43":{},"46":{},"47":{},"55":{},"56":{},"59":{},"63":{},"66":{},"71":{},"74":{},"75":{},"78":{},"81":{},"83":{},"95":{},"103":{},"104":{},"106":{},"111":{},"113":{},"119":{},"121":{},"126":{},"129":{},"134":{},"137":{},"138":{},"144":{},"145":{},"158":{},"159":{},"162":{},"166":{},"173":{},"175":{},"176":{},"179":{},"182":{},"188":{},"193":{},"195":{},"197":{},"198":{},"205":{}},"component":{}}],["changed)i",{"_index":4383,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["changer",{"_index":3922,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["changes?truefalseconfig",{"_index":4380,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["changes?trueupd",{"_index":4382,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["channel",{"_index":878,"title":{},"name":{},"text":{"9":{},"46":{},"78":{},"82":{},"83":{},"119":{},"141":{},"145":{},"179":{}},"component":{}}],["chapter",{"_index":133,"title":{},"name":{},"text":{"3":{},"21":{},"34":{},"37":{},"46":{},"87":{},"90":{},"103":{},"119":{},"148":{},"173":{},"182":{},"193":{},"195":{},"198":{},"204":{}},"component":{}}],["char",{"_index":1393,"title":{},"name":{},"text":{"15":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"106":{},"140":{},"141":{},"144":{},"145":{},"147":{}},"component":{}}],["charact",{"_index":1386,"title":{},"name":{},"text":{"15":{},"41":{},"75":{},"82":{},"83":{},"84":{},"106":{},"115":{},"138":{},"145":{},"147":{}},"component":{}}],["characterist",{"_index":3903,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["charg",{"_index":774,"title":{},"name":{},"text":{"9":{},"14":{},"83":{},"111":{},"145":{},"179":{}},"component":{}}],["chart",{"_index":1858,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["cheap",{"_index":1644,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["cheatsheet",{"_index":1877,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["check",{"_index":88,"title":{"3-9":{},"173-10":{}},"name":{},"text":{"3":{},"5":{},"7":{},"8":{},"14":{},"15":{},"27":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"41":{},"46":{},"47":{},"48":{},"50":{},"56":{},"59":{},"64":{},"66":{},"77":{},"78":{},"83":{},"87":{},"88":{},"91":{},"92":{},"103":{},"106":{},"111":{},"115":{},"119":{},"121":{},"123":{},"128":{},"129":{},"140":{},"141":{},"145":{},"148":{},"149":{},"152":{},"153":{},"159":{},"162":{},"173":{},"175":{},"177":{},"178":{},"188":{},"191":{},"192":{},"193":{},"195":{},"197":{},"198":{}},"component":{}}],["checkbox",{"_index":2895,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["checklist",{"_index":2282,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["checkout",{"_index":2076,"title":{},"name":{},"text":{"34":{},"36":{},"46":{},"119":{},"193":{},"195":{},"197":{}},"component":{}}],["checksum",{"_index":264,"title":{"103-6":{},"204-5":{}},"name":{},"text":{"3":{},"102":{},"103":{},"173":{},"203":{},"204":{}},"component":{}}],["checksumrawdata",{"_index":4299,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["cherri",{"_index":2072,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["child",{"_index":3957,"title":{},"name":{},"text":{"85":{}},"component":{}}],["chip",{"_index":1192,"title":{},"name":{},"text":{"13":{},"30":{},"112":{}},"component":{}}],["chmod",{"_index":1956,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["choco",{"_index":2018,"title":{},"name":{},"text":{"32":{},"193":{}},"component":{}}],["chocolatey",{"_index":2016,"title":{},"name":{},"text":{"32":{}},"component":{}}],["choic",{"_index":515,"title":{},"name":{},"text":{"5":{},"42":{},"83":{},"116":{},"145":{},"175":{}},"component":{}}],["choos",{"_index":1649,"title":{},"name":{},"text":{"17":{},"34":{},"36":{},"113":{},"175":{},"195":{},"197":{}},"component":{}}],["chri",{"_index":2142,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["christof",{"_index":181,"title":{},"name":{},"text":{"3":{},"10":{},"14":{},"111":{},"173":{},"180":{}},"component":{}}],["christofer.dutz@accso.d",{"_index":1215,"title":{},"name":{},"text":{"14":{}},"component":{}}],["christofer.dutz@timecho.com",{"_index":4417,"title":{},"name":{},"text":{"111":{}},"component":{}}],["chronolog",{"_index":3402,"title":{},"name":{},"text":{"78":{}},"component":{}}],["chunk",{"_index":3334,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["ci",{"_index":294,"title":{},"name":{"22":{},"183":{}},"text":{"3":{},"22":{},"173":{},"183":{}},"component":{}}],["cigar",{"_index":1088,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["cip",{"_index":3219,"title":{},"name":{},"text":{"76":{},"105":{},"139":{},"206":{}},"component":{}}],["cipreadrequest",{"_index":4401,"title":{},"name":{},"text":{"105":{},"206":{}},"component":{}}],["ciprrdata",{"_index":4400,"title":{},"name":{},"text":{"105":{},"206":{}},"component":{}}],["cipwriterequest",{"_index":4404,"title":{},"name":{},"text":{"105":{},"206":{}},"component":{}}],["circular",{"_index":3758,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["civiet",{"_index":1195,"title":{},"name":{},"text":{"13":{}},"component":{}}],["clang",{"_index":4455,"title":{"193-8":{}},"name":{},"text":{"193":{}},"component":{}}],["clariti",{"_index":4078,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["class",{"_index":1366,"title":{},"name":{},"text":{"15":{},"21":{},"37":{},"39":{},"40":{},"81":{},"83":{},"90":{},"91":{},"92":{},"101":{},"103":{},"106":{},"144":{},"145":{},"151":{},"152":{},"153":{},"182":{},"198":{},"200":{},"202":{},"204":{}},"component":{}}],["class=\"bare\">https://lists.apache.org/list.html?dev@plc4x.apache.org",{"_index":888,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["classic",{"_index":3412,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["classifi",{"_index":3673,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["classload",{"_index":1785,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["classpath",{"_index":1790,"title":{},"name":{},"text":{"21":{},"47":{},"50":{},"82":{},"83":{},"121":{},"123":{},"145":{},"182":{}},"component":{}}],["clean",{"_index":748,"title":{"34-10":{},"36-14":{},"195-10":{},"197-14":{}},"name":{},"text":{"8":{},"15":{},"31":{},"34":{},"36":{},"106":{},"178":{},"195":{},"197":{}},"component":{}}],["cleaner",{"_index":1318,"title":{},"name":{},"text":{"15":{},"21":{},"106":{},"182":{}},"component":{}}],["cleanup",{"_index":1345,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["cleanup.policy=compact",{"_index":2821,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["clear",{"_index":3937,"title":{},"name":{},"text":{"84":{},"147":{}},"component":{}}],["clearli",{"_index":806,"title":{},"name":{},"text":{"9":{},"83":{},"145":{},"179":{},"183":{}},"component":{}}],["cli",{"_index":699,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["click",{"_index":496,"title":{},"name":{},"text":{"5":{},"26":{},"34":{},"36":{},"43":{},"50":{},"56":{},"123":{},"159":{},"175":{},"187":{},"195":{},"197":{}},"component":{}}],["client",{"_index":1845,"title":{"43":{},"43-2":{}},"name":{"43":{}},"text":{"26":{},"43":{},"59":{},"75":{},"78":{},"82":{},"83":{},"87":{},"88":{},"138":{},"141":{},"145":{},"148":{},"149":{},"162":{},"187":{}},"component":{}}],["client’",{"_index":1849,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["clipsal",{"_index":3002,"title":{},"name":{},"text":{"64":{},"128":{}},"component":{}}],["clone",{"_index":485,"title":{},"name":{},"text":{"5":{},"83":{},"145":{},"175":{}},"component":{}}],["close",{"_index":1652,"title":{},"name":{},"text":{"17":{},"34":{},"36":{},"43":{},"46":{},"78":{},"82":{},"83":{},"84":{},"87":{},"88":{},"103":{},"113":{},"119":{},"141":{},"145":{},"147":{},"148":{},"149":{},"195":{},"197":{},"204":{}},"component":{}}],["cloud",{"_index":1083,"title":{},"name":{},"text":{"10":{},"12":{},"13":{},"17":{},"78":{},"110":{},"112":{},"113":{},"141":{},"180":{}},"component":{}}],["cluster",{"_index":1616,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["cmake",{"_index":2188,"title":{},"name":{},"text":{"36":{},"190":{},"197":{}},"component":{}}],["cmd",{"_index":4210,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["cn",{"_index":2403,"title":{},"name":{},"text":{"43":{}},"component":{}}],["co",{"_index":427,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["co10",{"_index":891,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["co20",{"_index":896,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["co30",{"_index":905,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["co40",{"_index":910,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["co50",{"_index":915,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["co60",{"_index":919,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["co70",{"_index":922,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["cockpit",{"_index":1146,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["cocoon",{"_index":1015,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["code",{"_index":229,"title":{"21":{},"25":{},"182":{},"186":{},"34-1":{},"50-3":{},"123-3":{},"195-1":{}},"name":{},"text":{"3":{},"5":{},"6":{},"9":{},"10":{},"15":{},"21":{},"25":{},"34":{},"36":{},"37":{},"39":{},"40":{},"41":{},"46":{},"47":{},"48":{},"50":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"87":{},"88":{},"91":{},"92":{},"93":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"106":{},"115":{},"119":{},"121":{},"123":{},"124":{},"125":{},"126":{},"128":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"147":{},"148":{},"149":{},"151":{},"152":{},"153":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"173":{},"175":{},"176":{},"179":{},"180":{},"182":{},"186":{},"193":{},"195":{},"197":{},"198":{},"200":{},"202":{},"203":{},"204":{}},"component":{}}],["code:(transport",{"_index":1482,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["code:)?//{transport",{"_index":1483,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["codebas",{"_index":1469,"title":{"36-3":{},"197-3":{}},"name":{},"text":{"15":{},"34":{},"92":{},"106":{},"152":{},"195":{}},"component":{}}],["codecentr",{"_index":1107,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["code}://{transport",{"_index":2357,"title":{},"name":{},"text":{"41":{},"115":{}},"component":{}}],["code}:{transport",{"_index":2356,"title":{},"name":{},"text":{"41":{},"115":{}},"component":{}}],["code}[{count",{"_index":3504,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["code}{start",{"_index":3501,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["coffe",{"_index":3968,"title":{},"name":{},"text":{"86":{},"146":{}},"component":{}}],["coil",{"_index":2681,"title":{},"name":{},"text":{"50":{},"77":{},"123":{},"140":{}},"component":{}}],["coil:1",{"_index":2703,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["coil:1{unit",{"_index":2372,"title":{},"name":{},"text":{"41":{}},"component":{}}],["coil:3[4",{"_index":2704,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["coil:{start",{"_index":2690,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["cold",{"_index":3967,"title":{},"name":{},"text":{"86":{},"146":{}},"component":{}}],["collabor",{"_index":1005,"title":{},"name":{},"text":{"10":{},"83":{},"145":{},"180":{}},"component":{}}],["collect",{"_index":1114,"title":{},"name":{},"text":{"12":{},"34":{},"54":{},"75":{},"83":{},"91":{},"101":{},"110":{},"138":{},"145":{},"153":{},"157":{},"195":{},"202":{}},"component":{}}],["collections.emptylist",{"_index":4162,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["collections.singleton(\"packag",{"_index":4158,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["collections.singletonlist",{"_index":4170,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["cologn",{"_index":349,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["column",{"_index":3513,"title":{},"name":{},"text":{"82":{},"83":{},"145":{},"193":{}},"component":{}}],["com",{"_index":3414,"title":{},"name":{},"text":{"78":{},"97":{},"141":{},"167":{}},"component":{}}],["com.google.googlejavaformat.java.formatt",{"_index":4142,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["com.google.googlejavaformat.java.formatterexcept",{"_index":4143,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["com.sun.jersey.server.impl.application.webapplicationimpl",{"_index":724,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["combin",{"_index":3005,"title":{},"name":{},"text":{"65":{},"66":{},"70":{},"103":{},"127":{},"129":{},"133":{},"204":{}},"component":{}}],["come",{"_index":740,"title":{},"name":{},"text":{"8":{},"17":{},"21":{},"29":{},"31":{},"34":{},"36":{},"46":{},"47":{},"48":{},"49":{},"66":{},"82":{},"83":{},"86":{},"87":{},"88":{},"91":{},"103":{},"113":{},"119":{},"121":{},"122":{},"129":{},"145":{},"146":{},"148":{},"149":{},"153":{},"178":{},"182":{},"190":{},"192":{},"193":{},"195":{},"197":{},"204":{}},"component":{}}],["comfort",{"_index":745,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["comma",{"_index":4309,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["command",{"_index":143,"title":{},"name":{},"text":{"3":{},"5":{},"8":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"46":{},"50":{},"54":{},"55":{},"62":{},"102":{},"119":{},"123":{},"125":{},"157":{},"158":{},"173":{},"175":{},"178":{},"191":{},"192":{},"195":{},"197":{},"198":{},"203":{}},"component":{}}],["commandcod",{"_index":4239,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["commandlin",{"_index":513,"title":{},"name":{},"text":{"5":{},"8":{},"31":{},"175":{},"178":{}},"component":{}}],["comment",{"_index":532,"title":{},"name":{},"text":{"5":{},"9":{},"37":{},"55":{},"56":{},"158":{},"159":{},"175":{},"179":{},"198":{}},"component":{}}],["commerci",{"_index":1197,"title":{"14":{},"111":{}},"name":{"14":{},"111":{}},"text":{"14":{},"16":{},"17":{},"78":{},"83":{},"107":{},"111":{},"113":{},"141":{},"145":{}},"component":{}}],["commit",{"_index":436,"title":{"5-2":{},"175-2":{}},"name":{},"text":{"5":{},"6":{},"9":{},"34":{},"36":{},"46":{},"119":{},"175":{},"176":{},"179":{},"193":{},"195":{},"197":{}},"component":{}}],["committ",{"_index":408,"title":{},"name":{},"text":{"4":{},"6":{},"9":{},"10":{},"11":{},"26":{},"36":{},"174":{},"175":{},"176":{},"179":{},"180":{},"181":{},"197":{}},"component":{}}],["committe",{"_index":555,"title":{"6-3":{},"176-3":{}},"name":{},"text":{"9":{},"10":{},"179":{},"180":{}},"component":{}}],["commod",{"_index":1645,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["common",{"_index":667,"title":{},"name":{},"text":{"8":{},"15":{},"16":{},"41":{},"43":{},"76":{},"78":{},"103":{},"106":{},"107":{},"139":{},"141":{},"178":{},"204":{}},"component":{}}],["commun",{"_index":36,"title":{"17-7":{},"78-4":{},"83-14":{},"113-7":{},"141-4":{},"145-14":{}},"name":{},"text":{"2":{},"3":{},"5":{},"6":{},"9":{},"10":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"21":{},"36":{},"40":{},"41":{},"43":{},"47":{},"48":{},"50":{},"59":{},"62":{},"63":{},"66":{},"71":{},"72":{},"75":{},"76":{},"78":{},"81":{},"82":{},"83":{},"88":{},"90":{},"96":{},"97":{},"99":{},"100":{},"106":{},"107":{},"110":{},"111":{},"112":{},"113":{},"115":{},"121":{},"123":{},"125":{},"126":{},"129":{},"134":{},"135":{},"138":{},"139":{},"141":{},"144":{},"145":{},"149":{},"151":{},"162":{},"167":{},"168":{},"170":{},"171":{},"172":{},"173":{},"175":{},"176":{},"179":{},"180":{},"182":{},"193":{},"197":{}},"component":{}}],["communicate_with_plc",{"_index":2622,"title":{},"name":{},"text":{"48":{}},"component":{}}],["communicationpath",{"_index":3122,"title":{},"name":{},"text":{"70":{},"76":{},"133":{},"139":{}},"component":{}}],["compani",{"_index":827,"title":{"12":{},"110":{}},"name":{},"text":{"9":{},"12":{},"14":{},"17":{},"55":{},"83":{},"110":{},"111":{},"113":{},"145":{},"158":{},"179":{}},"component":{}}],["compar",{"_index":2279,"title":{},"name":{},"text":{"37":{},"39":{},"103":{},"198":{},"200":{},"204":{}},"component":{}}],["comparison",{"_index":3549,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["compat",{"_index":882,"title":{"55-12":{},"78-14":{},"93-2":{},"158-12":{},"165-2":{}},"name":{},"text":{"9":{},"12":{},"15":{},"50":{},"71":{},"78":{},"83":{},"106":{},"110":{},"123":{},"134":{},"145":{},"179":{}},"component":{}}],["compatibl",{"_index":2867,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["compil",{"_index":89,"title":{"3-10":{},"173-11":{}},"name":{},"text":{"3":{},"30":{},"31":{},"32":{},"34":{},"36":{},"47":{},"50":{},"121":{},"123":{},"173":{},"193":{},"195":{},"197":{}},"component":{}}],["complain",{"_index":1775,"title":{},"name":{},"text":{"21":{},"37":{},"182":{},"198":{}},"component":{}}],["complaint",{"_index":1924,"title":{},"name":{},"text":{"29":{},"190":{}},"component":{}}],["complement",{"_index":4338,"title":{},"name":{},"text":{"103":{}},"component":{}}],["complet",{"_index":858,"title":{},"name":{},"text":{"9":{},"26":{},"43":{},"46":{},"78":{},"82":{},"83":{},"119":{},"141":{},"145":{},"179":{},"187":{}},"component":{}}],["completablefutur",{"_index":2567,"title":{},"name":{},"text":{"47":{},"50":{},"121":{},"123":{}},"component":{}}],["complex",{"_index":1495,"title":{"103-2":{},"204-2":{}},"name":{},"text":{"15":{},"78":{},"82":{},"83":{},"92":{},"101":{},"103":{},"106":{},"141":{},"145":{},"152":{},"182":{},"202":{},"204":{}},"component":{}}],["complextypedefinit",{"_index":4136,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["complextypedefinition’",{"_index":4443,"title":{},"name":{},"text":{"182":{}},"component":{}}],["compli",{"_index":577,"title":{},"name":{},"text":{"6":{},"176":{}},"component":{}}],["complianc",{"_index":4191,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["complic",{"_index":1697,"title":{},"name":{},"text":{"21":{},"27":{},"86":{},"101":{},"146":{},"182":{},"188":{},"202":{}},"component":{}}],["compon",{"_index":642,"title":{},"name":{},"text":{"8":{},"15":{},"52":{},"62":{},"83":{},"106":{},"125":{},"145":{},"178":{}},"component":{}}],["comprehens",{"_index":3418,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["comput",{"_index":224,"title":{"29":{},"190":{}},"name":{},"text":{"3":{},"4":{},"5":{},"7":{},"13":{},"17":{},"26":{},"29":{},"50":{},"83":{},"88":{},"112":{},"113":{},"123":{},"145":{},"149":{},"173":{},"174":{},"175":{},"177":{},"187":{}},"component":{}}],["con",{"_index":1169,"title":{},"name":{},"text":{"13":{},"112":{}},"component":{}}],["concentr",{"_index":1577,"title":{},"name":{},"text":{"16":{},"107":{}},"component":{}}],["concept",{"_index":272,"title":{"41":{},"87":{},"115":{},"148":{},"54-1":{},"157-1":{}},"name":{"41":{},"115":{}},"text":{"3":{},"17":{},"41":{},"56":{},"62":{},"113":{},"115":{},"125":{},"159":{},"173":{}},"component":{}}],["concern",{"_index":1629,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["conclus",{"_index":4087,"title":{"92-4":{},"152-4":{}},"name":{},"text":{},"component":{}}],["concret",{"_index":1681,"title":{},"name":{},"text":{"21":{},"103":{},"182":{},"204":{}},"component":{}}],["concurr",{"_index":1102,"title":{},"name":{},"text":{"11":{},"87":{},"88":{},"148":{},"149":{},"181":{}},"component":{}}],["condit",{"_index":1142,"title":{},"name":{},"text":{"12":{},"78":{},"101":{},"103":{},"110":{},"202":{},"204":{}},"component":{}}],["conduct",{"_index":570,"title":{},"name":{},"text":{"6":{},"78":{},"141":{},"176":{}},"component":{}}],["conf",{"_index":4084,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["confer",{"_index":318,"title":{"4":{},"174":{}},"name":{"4":{},"174":{}},"text":{"4":{},"5":{},"174":{},"175":{}},"component":{}}],["config",{"_index":1280,"title":{},"name":{},"text":{"15":{},"21":{},"41":{},"50":{},"55":{},"59":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"91":{},"101":{},"106":{},"115":{},"123":{},"124":{},"125":{},"126":{},"128":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"147":{},"153":{},"158":{},"162":{},"182":{},"202":{}},"component":{}}],["config.yml",{"_index":2916,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["config/connect",{"_index":2787,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["config/plc4x",{"_index":2804,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["config/server.properti",{"_index":2798,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["config/sink.properti",{"_index":2825,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["config/zookeeper.properti",{"_index":2796,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["configur",{"_index":802,"title":{"21-2":{},"59-2":{},"87-1":{},"91-4":{},"91-6":{},"148-1":{},"153-4":{},"153-6":{},"162-2":{},"182-2":{}},"name":{},"text":{"9":{},"15":{},"17":{},"21":{},"22":{},"27":{},"31":{},"32":{},"41":{},"43":{},"46":{},"54":{},"55":{},"56":{},"59":{},"62":{},"63":{},"70":{},"71":{},"75":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"87":{},"91":{},"92":{},"101":{},"106":{},"113":{},"115":{},"119":{},"125":{},"126":{},"133":{},"134":{},"138":{},"139":{},"141":{},"144":{},"145":{},"148":{},"152":{},"153":{},"157":{},"158":{},"159":{},"162":{},"179":{},"182":{},"188":{},"192":{},"202":{}},"component":{}}],["configuraci%c3%b3n",{"_index":3593,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["configure/compile/transf",{"_index":3631,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["config}(?{param",{"_index":1484,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["config}?{opt",{"_index":2358,"title":{},"name":{},"text":{"41":{},"115":{}},"component":{}}],["config}?{paramet",{"_index":2694,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["confirm",{"_index":2401,"title":{},"name":{},"text":{"43":{},"59":{},"78":{},"83":{},"145":{},"162":{}},"component":{}}],["conflict",{"_index":560,"title":{},"name":{},"text":{"6":{},"34":{},"36":{},"176":{},"195":{},"197":{}},"component":{}}],["confluenc",{"_index":1907,"title":{},"name":{},"text":{"28":{},"189":{}},"component":{}}],["congrat",{"_index":2160,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["conjunct",{"_index":3935,"title":{},"name":{},"text":{"84":{},"147":{}},"component":{}}],["conn",{"_index":4114,"title":{},"name":{},"text":{"92":{},"152":{}},"component":{}}],["connect",{"_index":16,"title":{"2":{},"87":{},"88":{},"148":{},"149":{},"172":{},"2-4":{},"41-1":{},"41-2":{},"46-3":{},"50-4":{},"55-6":{},"55-7":{},"55-9":{},"55-10":{},"61-1":{},"62-2":{},"63-2":{},"64-1":{},"66-2":{},"67-1":{},"70-1":{},"71-1":{},"72-2":{},"73-1":{},"75-1":{},"76-1":{},"76-4":{},"77-1":{},"77-12":{},"78-1":{},"78-3":{},"79-1":{},"80-1":{},"80-3":{},"80-5":{},"81-1":{},"81-3":{},"82-1":{},"82-3":{},"83-4":{},"83-6":{},"84-1":{},"84-3":{},"85-1":{},"85-4":{},"90-4":{},"115-1":{},"115-2":{},"119-3":{},"123-4":{},"124-1":{},"125-2":{},"126-2":{},"128-1":{},"129-2":{},"130-1":{},"133-1":{},"134-1":{},"135-2":{},"136-1":{},"138-1":{},"139-1":{},"139-4":{},"140-1":{},"140-12":{},"141-1":{},"141-3":{},"142-1":{},"143-1":{},"143-3":{},"143-5":{},"144-1":{},"144-3":{},"145-4":{},"145-6":{},"147-1":{},"147-3":{},"158-6":{},"158-7":{},"158-9":{},"158-10":{},"172-4":{}},"name":{"87":{},"88":{},"148":{},"149":{}},"text":{"2":{},"3":{},"8":{},"10":{},"12":{},"15":{},"16":{},"36":{},"41":{},"46":{},"47":{},"48":{},"50":{},"54":{},"55":{},"56":{},"59":{},"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"88":{},"90":{},"91":{},"92":{},"106":{},"107":{},"110":{},"115":{},"119":{},"121":{},"123":{},"124":{},"125":{},"126":{},"128":{},"133":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"147":{},"148":{},"149":{},"151":{},"152":{},"153":{},"157":{},"158":{},"159":{},"162":{},"172":{},"173":{},"178":{},"180":{},"197":{}},"component":{}}],["connectconnectedbrowsereadwritesubscribeunsubscribedisconnectinitializingsend",{"_index":4389,"title":{},"name":{},"text":{"105":{},"206":{}},"component":{}}],["connectconnectedbrowsereadwritesubscribeunsubscribeinitializingsend",{"_index":4340,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["connectedentity.updateallthetag",{"_index":4041,"title":{},"name":{},"text":{"90":{}},"component":{}}],["connection'",{"_index":2623,"title":{},"name":{},"text":{"48":{}},"component":{}}],["connection.clos",{"_index":2446,"title":{},"name":{},"text":{"46":{},"83":{},"119":{},"145":{}},"component":{}}],["connection.execute(request",{"_index":2633,"title":{},"name":{},"text":{"48":{}},"component":{}}],["connection.getmetadata().canread",{"_index":2462,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["connection.getmetadata().cansubscrib",{"_index":2498,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["connection.is_read_support",{"_index":2637,"title":{},"name":{},"text":{"48":{}},"component":{}}],["connection.p",{"_index":2455,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["connection.read_request_build",{"_index":2626,"title":{},"name":{},"text":{"48":{}},"component":{}}],["connection.readrequestbuild",{"_index":2467,"title":{},"name":{},"text":{"46":{},"82":{},"83":{},"119":{},"145":{}},"component":{}}],["connection.setdevice(mockdevic",{"_index":4100,"title":{},"name":{},"text":{"92":{},"152":{}},"component":{}}],["connection.subscriptionrequestbuild",{"_index":2506,"title":{},"name":{},"text":{"46":{},"83":{},"119":{},"145":{}},"component":{}}],["connection.write_request_build",{"_index":2667,"title":{},"name":{},"text":{"48":{}},"component":{}}],["connection_str",{"_index":2618,"title":{},"name":{},"text":{"48":{}},"component":{}}],["connectioncach",{"_index":3989,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["connectionmanag",{"_index":3985,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["connectionmanager.getconnection(connectionstr",{"_index":3991,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["connectionmanagerclos",{"_index":4405,"title":{},"name":{},"text":{"105":{},"206":{}},"component":{}}],["connectionnam",{"_index":4052,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["connectionrequestchanel",{"_index":2434,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["connectionresult",{"_index":2438,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["connectionresult.connect",{"_index":2444,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["connectionresult.err",{"_index":2439,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["connectionresult.err.error",{"_index":2443,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["connectionstr",{"_index":2548,"title":{},"name":{},"text":{"47":{},"50":{},"59":{},"91":{},"121":{},"123":{},"153":{},"162":{}},"component":{}}],["connector",{"_index":1382,"title":{"55-1":{},"55-5":{},"55-8":{},"158-1":{},"158-5":{},"158-8":{}},"name":{},"text":{"15":{},"55":{},"106":{},"158":{}},"component":{}}],["connector.class\":\"org.apache.plc4x.kafka.plc4xsinkconnector",{"_index":2855,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["connector.class\":\"org.apache.plc4x.kafka.plc4xsourceconnector",{"_index":2809,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["connectorio",{"_index":1046,"title":{},"name":{},"text":{"10":{},"12":{},"14":{},"110":{},"111":{},"180":{}},"component":{}}],["consensu",{"_index":583,"title":{},"name":{},"text":{"6":{},"9":{},"176":{},"179":{}},"component":{}}],["consid",{"_index":1466,"title":{},"name":{},"text":{"15":{},"46":{},"47":{},"54":{},"86":{},"103":{},"106":{},"119":{},"121":{},"146":{},"157":{},"173":{},"175":{},"204":{}},"component":{}}],["consider",{"_index":3787,"title":{},"name":{},"text":{"83":{},"87":{},"145":{},"148":{}},"component":{}}],["consist",{"_index":830,"title":{},"name":{},"text":{"9":{},"34":{},"36":{},"66":{},"76":{},"77":{},"129":{},"139":{},"140":{},"179":{},"193":{},"195":{},"197":{}},"component":{}}],["consol",{"_index":696,"title":{},"name":{},"text":{"8":{},"32":{},"46":{},"50":{},"55":{},"83":{},"92":{},"119":{},"123":{},"145":{},"151":{},"152":{},"158":{},"178":{},"193":{}},"component":{}}],["const",{"_index":4225,"title":{"103-7":{},"204-6":{}},"name":{},"text":{"102":{},"103":{},"203":{},"204":{}},"component":{}}],["constant",{"_index":3752,"title":{},"name":{},"text":{"83":{},"103":{},"145":{},"204":{}},"component":{}}],["constraint",{"_index":4447,"title":{},"name":{},"text":{"190":{}},"component":{}}],["construct",{"_index":906,"title":{},"name":{},"text":{"9":{},"15":{},"21":{},"39":{},"65":{},"66":{},"72":{},"82":{},"83":{},"93":{},"106":{},"127":{},"129":{},"135":{},"145":{},"165":{},"179":{},"182":{},"200":{}},"component":{}}],["constructor",{"_index":3887,"title":{},"name":{},"text":{"83":{},"90":{},"145":{}},"component":{}}],["consult",{"_index":1006,"title":{},"name":{},"text":{"10":{},"12":{},"14":{},"41":{},"56":{},"83":{},"110":{},"111":{},"115":{},"145":{},"159":{},"180":{}},"component":{}}],["consum",{"_index":2777,"title":{},"name":{},"text":{"55":{},"83":{},"103":{},"145":{},"158":{},"204":{}},"component":{}}],["consumer.sh",{"_index":2802,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["contact",{"_index":1207,"title":{},"name":{},"text":{"14":{},"111":{}},"component":{}}],["contain",{"_index":248,"title":{},"name":{},"text":{"3":{},"5":{},"7":{},"8":{},"9":{},"15":{},"21":{},"32":{},"34":{},"36":{},"37":{},"39":{},"41":{},"46":{},"47":{},"48":{},"50":{},"55":{},"59":{},"62":{},"63":{},"66":{},"72":{},"74":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"87":{},"95":{},"101":{},"102":{},"103":{},"106":{},"119":{},"121":{},"123":{},"125":{},"126":{},"129":{},"135":{},"137":{},"144":{},"145":{},"147":{},"148":{},"158":{},"162":{},"166":{},"173":{},"175":{},"177":{},"178":{},"179":{},"182":{},"193":{},"195":{},"197":{},"198":{},"200":{},"202":{},"203":{},"204":{}},"component":{}}],["content",{"_index":535,"title":{"27-1":{},"188-1":{}},"name":{},"text":{"5":{},"7":{},"8":{},"15":{},"26":{},"27":{},"36":{},"37":{},"46":{},"55":{},"78":{},"103":{},"106":{},"119":{},"158":{},"175":{},"177":{},"178":{},"187":{},"188":{},"197":{},"198":{},"204":{}},"component":{}}],["context",{"_index":1066,"title":{},"name":{},"text":{"10":{},"101":{},"180":{},"202":{}},"component":{}}],["continu",{"_index":505,"title":{"22":{},"183":{}},"name":{},"text":{"5":{},"21":{},"34":{},"36":{},"40":{},"46":{},"48":{},"50":{},"55":{},"83":{},"87":{},"91":{},"103":{},"119":{},"123":{},"145":{},"148":{},"153":{},"158":{},"175":{},"195":{},"197":{},"204":{}},"component":{}}],["contradict",{"_index":945,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["contrast",{"_index":661,"title":{},"name":{},"text":{"8":{},"34":{},"36":{},"46":{},"87":{},"88":{},"103":{},"119":{},"148":{},"149":{},"178":{},"195":{},"197":{},"204":{}},"component":{}}],["contribut",{"_index":435,"title":{"5":{},"175":{},"5-1":{},"7-3":{},"175-1":{},"177-3":{}},"name":{"5":{},"175":{}},"text":{"5":{},"7":{},"9":{},"10":{},"12":{},"110":{},"175":{},"177":{},"179":{},"180":{}},"component":{}}],["contributor",{"_index":816,"title":{},"name":{},"text":{"9":{},"101":{},"179":{},"202":{}},"component":{}}],["control",{"_index":789,"title":{"63-1":{},"126-1":{}},"name":{},"text":{"9":{},"10":{},"12":{},"16":{},"17":{},"21":{},"27":{},"36":{},"39":{},"41":{},"43":{},"63":{},"76":{},"78":{},"81":{},"82":{},"83":{},"86":{},"92":{},"107":{},"110":{},"113":{},"115":{},"126":{},"139":{},"141":{},"144":{},"145":{},"146":{},"152":{},"179":{},"180":{},"188":{},"197":{},"200":{}},"component":{}}],["controlador)?dti=0&lc=",{"_index":3584,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["conveni",{"_index":111,"title":{},"name":{},"text":{"3":{},"9":{},"36":{},"49":{},"50":{},"122":{},"123":{},"173":{},"179":{},"197":{}},"component":{}}],["convent",{"_index":459,"title":{},"name":{},"text":{"5":{},"101":{},"175":{},"202":{}},"component":{}}],["convers",{"_index":1494,"title":{},"name":{},"text":{"15":{},"50":{},"66":{},"106":{},"123":{},"129":{},"193":{}},"component":{}}],["convert",{"_index":1651,"title":{},"name":{},"text":{"17":{},"82":{},"83":{},"113":{}},"component":{}}],["convertidor",{"_index":3570,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["conveyorentry\":fals",{"_index":2850,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["conveyorright\":true,\"load\":fals",{"_index":2845,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["cool",{"_index":471,"title":{},"name":{},"text":{"5":{},"175":{}},"component":{}}],["coordin",{"_index":4127,"title":{},"name":{},"text":{"98":{},"169":{}},"component":{}}],["cope",{"_index":3978,"title":{},"name":{},"text":{"86":{},"146":{}},"component":{}}],["copenhagen",{"_index":1064,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["copi",{"_index":482,"title":{},"name":{},"text":{"5":{},"26":{},"27":{},"34":{},"36":{},"40":{},"55":{},"56":{},"82":{},"83":{},"86":{},"101":{},"145":{},"146":{},"158":{},"159":{},"175":{},"187":{},"188":{},"195":{},"197":{},"202":{}},"component":{}}],["copyright",{"_index":803,"title":{},"name":{},"text":{"9":{},"37":{},"101":{},"179":{},"198":{},"202":{}},"component":{}}],["core",{"_index":668,"title":{},"name":{},"text":{"8":{},"15":{},"16":{},"17":{},"91":{},"106":{},"107":{},"113":{},"153":{},"178":{}},"component":{}}],["cornerston",{"_index":3636,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["corpor",{"_index":957,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["correct",{"_index":1429,"title":{},"name":{},"text":{"15":{},"21":{},"34":{},"36":{},"37":{},"59":{},"83":{},"106":{},"145":{},"162":{},"182":{},"195":{},"197":{},"198":{}},"component":{}}],["correctli",{"_index":1354,"title":{},"name":{},"text":{"15":{},"34":{},"36":{},"46":{},"48":{},"50":{},"78":{},"82":{},"83":{},"106":{},"119":{},"123":{},"141":{},"145":{},"193":{},"195":{},"197":{}},"component":{}}],["correspond",{"_index":24,"title":{},"name":{},"text":{"2":{},"5":{},"21":{},"30":{},"34":{},"36":{},"37":{},"41":{},"75":{},"77":{},"83":{},"87":{},"103":{},"115":{},"138":{},"140":{},"145":{},"148":{},"172":{},"175":{},"182":{},"195":{},"197":{},"198":{},"204":{}},"component":{}}],["cost",{"_index":1594,"title":{"17-6":{},"113-6":{}},"name":{},"text":{"17":{},"83":{},"87":{},"113":{},"145":{},"148":{}},"component":{}}],["cotppacket",{"_index":4487,"title":{},"name":{},"text":{"204":{}},"component":{}}],["cotppacket('len",{"_index":4263,"title":{},"name":{},"text":{"103":{}},"component":{}}],["count",{"_index":2129,"title":{},"name":{},"text":{"34":{},"36":{},"78":{},"82":{},"83":{},"103":{},"141":{},"145":{},"195":{},"197":{},"204":{}},"component":{}}],["count(cast(paramet",{"_index":4327,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["counter",{"_index":3514,"title":{},"name":{},"text":{"82":{},"83":{},"102":{},"145":{},"203":{}},"component":{}}],["countermeasur",{"_index":4047,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["counterpart",{"_index":1313,"title":{},"name":{},"text":{"15":{},"46":{},"106":{},"119":{}},"component":{}}],["count|length|termin",{"_index":4294,"title":{},"name":{},"text":{"103":{}},"component":{}}],["coupl",{"_index":2734,"title":{},"name":{},"text":{"54":{},"55":{},"157":{},"158":{}},"component":{}}],["cours",{"_index":4028,"title":{},"name":{},"text":{"90":{}},"component":{}}],["cp",{"_index":3626,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["cpp",{"_index":2050,"title":{},"name":{},"text":{"32":{}},"component":{}}],["cpu",{"_index":1452,"title":{},"name":{},"text":{"15":{},"29":{},"70":{},"76":{},"82":{},"83":{},"106":{},"133":{},"139":{},"145":{}},"component":{}}],["cp’",{"_index":3450,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["craft",{"_index":1330,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["crc",{"_index":4205,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["creat",{"_index":27,"title":{"40":{},"34-1":{},"36-4":{},"43-1":{},"195-1":{},"197-4":{}},"name":{},"text":{"2":{},"3":{},"4":{},"5":{},"8":{},"9":{},"10":{},"12":{},"14":{},"16":{},"17":{},"21":{},"27":{},"34":{},"36":{},"39":{},"40":{},"43":{},"46":{},"47":{},"48":{},"50":{},"52":{},"54":{},"55":{},"56":{},"59":{},"65":{},"78":{},"82":{},"83":{},"86":{},"87":{},"88":{},"90":{},"91":{},"101":{},"103":{},"107":{},"110":{},"111":{},"113":{},"119":{},"121":{},"123":{},"127":{},"141":{},"145":{},"146":{},"148":{},"149":{},"153":{},"157":{},"158":{},"159":{},"162":{},"172":{},"173":{},"174":{},"175":{},"178":{},"179":{},"180":{},"182":{},"188":{},"195":{},"197":{},"200":{},"202":{},"204":{}},"component":{}}],["createconnect",{"_index":4003,"title":{},"name":{},"text":{"88":{},"149":{}},"component":{}}],["creation",{"_index":23,"title":{"43":{}},"name":{},"text":{"2":{},"41":{},"43":{},"115":{},"172":{}},"component":{}}],["creativ",{"_index":3835,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["credenti",{"_index":2168,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["criteria",{"_index":918,"title":{},"name":{},"text":{"9":{},"78":{},"179":{}},"component":{}}],["critic",{"_index":1502,"title":{},"name":{},"text":{"15":{},"55":{},"66":{},"106":{},"129":{},"158":{}},"component":{}}],["cross",{"_index":663,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["cruz",{"_index":989,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["cryptograph",{"_index":2393,"title":{},"name":{},"text":{"43":{}},"component":{}}],["cs10",{"_index":838,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["cs20",{"_index":933,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["cs30",{"_index":941,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["cs40",{"_index":942,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["cs50",{"_index":946,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["css",{"_index":1867,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["ctlrx",{"_index":3117,"title":{"67":{},"130":{}},"name":{},"text":{},"component":{}}],["ctrl+",{"_index":2414,"title":{},"name":{},"text":{"43":{}},"component":{}}],["ctrl+g",{"_index":2398,"title":{},"name":{},"text":{"43":{}},"component":{}}],["ctrl+n",{"_index":2397,"title":{},"name":{},"text":{"43":{}},"component":{}}],["ctrlx",{"_index":3118,"title":{},"name":{"67":{},"130":{}},"text":{},"component":{}}],["curl",{"_index":1989,"title":{},"name":{},"text":{"31":{},"55":{},"158":{},"192":{}},"component":{}}],["current",{"_index":44,"title":{"74":{},"15-1":{},"33-1":{},"106-1":{},"137-1":{},"194-1":{}},"name":{},"text":{"2":{},"8":{},"9":{},"17":{},"21":{},"22":{},"27":{},"31":{},"34":{},"36":{},"37":{},"39":{},"41":{},"47":{},"48":{},"56":{},"65":{},"66":{},"71":{},"72":{},"78":{},"81":{},"82":{},"83":{},"86":{},"87":{},"90":{},"91":{},"101":{},"102":{},"103":{},"113":{},"115":{},"121":{},"127":{},"129":{},"134":{},"135":{},"144":{},"145":{},"146":{},"148":{},"153":{},"159":{},"172":{},"173":{},"175":{},"178":{},"179":{},"182":{},"183":{},"188":{},"190":{},"192":{},"193":{},"195":{},"197":{},"198":{},"200":{},"202":{},"203":{},"204":{}},"component":{}}],["current_mod",{"_index":3706,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["currentmod",{"_index":3730,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["custom",{"_index":256,"title":{"21-3":{},"182-3":{}},"name":{},"text":{"3":{},"12":{},"14":{},"15":{},"21":{},"55":{},"65":{},"83":{},"106":{},"110":{},"111":{},"127":{},"145":{},"158":{},"173":{},"182":{}},"component":{}}],["cve",{"_index":1304,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["cve/secur",{"_index":874,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["cxf",{"_index":1054,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["cyc",{"_index":3615,"title":{"83-21":{},"145-21":{}},"name":{},"text":{"83":{},"145":{}},"component":{}}],["cycl",{"_index":3630,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["cyclic",{"_index":2499,"title":{"83-21":{},"145-21":{}},"name":{},"text":{"46":{},"47":{},"78":{},"83":{},"119":{},"121":{},"141":{},"145":{}},"component":{}}],["césar",{"_index":982,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["d",{"_index":2220,"title":{},"name":{},"text":{"36":{},"82":{},"83":{},"145":{},"193":{},"197":{}},"component":{}}],["d\"maven.repo.local\"=\"../.m2",{"_index":2270,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["d1",{"_index":2736,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["da",{"_index":1189,"title":{},"name":{},"text":{"13":{},"83":{},"112":{},"145":{}},"component":{}}],["daffodil",{"_index":1711,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["danger",{"_index":490,"title":{},"name":{},"text":{"5":{},"26":{},"175":{},"187":{}},"component":{}}],["dap",{"_index":3430,"title":{},"name":{},"text":{"81":{},"144":{}},"component":{}}],["dark",{"_index":1691,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["dat_id",{"_index":3749,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["data",{"_index":73,"title":{"46-4":{},"46-5":{},"46-6":{},"47-2":{},"47-3":{},"47-4":{},"48-2":{},"48-3":{},"48-4":{},"50-5":{},"50-6":{},"54-1":{},"70-4":{},"76-6":{},"77-15":{},"78-8":{},"78-11":{},"81-5":{},"82-10":{},"83-13":{},"84-7":{},"85-7":{},"119-4":{},"119-5":{},"119-6":{},"121-2":{},"121-3":{},"121-4":{},"123-5":{},"123-6":{},"133-4":{},"139-6":{},"140-15":{},"141-8":{},"144-5":{},"145-13":{},"147-7":{},"157-1":{}},"name":{},"text":{"2":{},"4":{},"8":{},"10":{},"12":{},"13":{},"14":{},"15":{},"16":{},"21":{},"27":{},"39":{},"41":{},"46":{},"47":{},"48":{},"50":{},"54":{},"55":{},"56":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"87":{},"88":{},"90":{},"91":{},"93":{},"101":{},"102":{},"103":{},"104":{},"106":{},"107":{},"110":{},"111":{},"112":{},"115":{},"119":{},"121":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"147":{},"148":{},"149":{},"153":{},"157":{},"158":{},"159":{},"165":{},"172":{},"174":{},"178":{},"180":{},"182":{},"188":{},"200":{},"202":{},"203":{},"204":{},"205":{}},"component":{}}],["data_block",{"_index":3519,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["databas",{"_index":649,"title":{},"name":{},"text":{"8":{},"54":{},"83":{},"90":{},"145":{},"151":{},"157":{},"178":{}},"component":{}}],["dataio",{"_index":4139,"title":{},"name":{},"text":{"101":{},"103":{},"202":{},"204":{}},"component":{}}],["datasend",{"_index":4346,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["datasourc",{"_index":3930,"title":{},"name":{},"text":{"84":{},"147":{}},"component":{}}],["datastructur",{"_index":4284,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["datatyp",{"_index":1384,"title":{},"name":{},"text":{"15":{},"54":{},"70":{},"78":{},"82":{},"83":{},"87":{},"106":{},"133":{},"141":{},"145":{},"148":{},"157":{}},"component":{}}],["date",{"_index":324,"title":{"5-4":{},"175-4":{}},"name":{},"text":{"4":{},"5":{},"6":{},"15":{},"17":{},"27":{},"32":{},"36":{},"78":{},"82":{},"83":{},"85":{},"103":{},"106":{},"113":{},"141":{},"145":{},"174":{},"175":{},"176":{},"188":{},"197":{}},"component":{}}],["date_and_tim",{"_index":3537,"title":{},"name":{},"text":{"82":{},"83":{},"85":{},"145":{}},"component":{}}],["datetim",{"_index":4289,"title":{},"name":{},"text":{"103":{}},"component":{}}],["day",{"_index":354,"title":{},"name":{},"text":{"4":{},"82":{},"83":{},"85":{},"145":{},"174":{}},"component":{}}],["db",{"_index":3510,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["db.db1.4:int",{"_index":2563,"title":{},"name":{},"text":{"47":{},"121":{}},"component":{}}],["db01:dw05:bool",{"_index":4023,"title":{},"name":{},"text":{"90":{}},"component":{}}],["db2:30:string(10",{"_index":1394,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["db2:30:string(10)[3",{"_index":1396,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["dbi",{"_index":3521,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["dbranchname=rel/{curr",{"_index":2164,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["dbranchname=rel/{minor",{"_index":2198,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["dbranchname=releases/cod",{"_index":2062,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["dbyte",{"_index":3871,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["db{data",{"_index":3505,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["dc",{"_index":3634,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["de",{"_index":3566,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["de/java/openjdk/download",{"_index":2021,"title":{},"name":{},"text":{"32":{}},"component":{}}],["deactiv",{"_index":2026,"title":{},"name":{},"text":{"32":{}},"component":{}}],["dead",{"_index":4035,"title":{},"name":{},"text":{"90":{}},"component":{}}],["deal",{"_index":1138,"title":{},"name":{},"text":{"12":{},"15":{},"103":{},"106":{},"110":{}},"component":{}}],["debug",{"_index":85,"title":{"3-8":{},"56-4":{},"159-4":{},"173-8":{}},"name":{},"text":{"3":{},"55":{},"56":{},"158":{},"159":{},"173":{}},"component":{}}],["debug_suspend_flag=i",{"_index":2817,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["decemb",{"_index":1175,"title":{},"name":{},"text":{"13":{},"112":{}},"component":{}}],["decentr",{"_index":3834,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["decid",{"_index":290,"title":{},"name":{},"text":{"3":{},"17":{},"39":{},"41":{},"43":{},"48":{},"83":{},"113":{},"115":{},"145":{},"200":{}},"component":{}}],["decis",{"_index":557,"title":{"6":{},"176":{},"6-5":{},"176-5":{}},"name":{"6":{},"176":{}},"text":{"6":{},"9":{},"17":{},"83":{},"113":{},"145":{},"176":{},"179":{}},"component":{}}],["declar",{"_index":807,"title":{},"name":{},"text":{"9":{},"39":{},"66":{},"78":{},"82":{},"83":{},"87":{},"90":{},"103":{},"129":{},"141":{},"145":{},"148":{},"179":{},"200":{},"204":{}},"component":{}}],["decod",{"_index":1286,"title":{},"name":{},"text":{"15":{},"66":{},"75":{},"106":{},"129":{},"138":{}},"component":{}}],["decor",{"_index":4016,"title":{},"name":{},"text":{"90":{}},"component":{}}],["dedic",{"_index":550,"title":{},"name":{},"text":{"5":{},"7":{},"10":{},"16":{},"26":{},"27":{},"34":{},"36":{},"41":{},"65":{},"66":{},"107":{},"127":{},"129":{},"175":{},"177":{},"180":{},"187":{},"188":{},"195":{},"197":{}},"component":{}}],["deeper",{"_index":368,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["def",{"_index":2621,"title":{},"name":{},"text":{"48":{}},"component":{}}],["default",{"_index":142,"title":{},"name":{},"text":{"3":{},"5":{},"8":{},"9":{},"15":{},"21":{},"27":{},"32":{},"34":{},"36":{},"41":{},"43":{},"50":{},"54":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"87":{},"88":{},"95":{},"99":{},"100":{},"103":{},"106":{},"115":{},"123":{},"124":{},"125":{},"126":{},"128":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"147":{},"148":{},"149":{},"157":{},"166":{},"170":{},"171":{},"173":{},"175":{},"178":{},"179":{},"182":{},"188":{},"195":{},"197":{},"204":{}},"component":{}}],["defaultplcdrivermanager().getconnection(\"s7://10.10.1.33?remot",{"_index":3479,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["defaultplcsubscriptionfield",{"_index":1364,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["defaults7messageprocessor",{"_index":1539,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["defer",{"_index":2445,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["defin",{"_index":149,"title":{"8-1":{},"90-2":{},"178-1":{}},"name":{},"text":{"3":{},"5":{},"6":{},"8":{},"9":{},"15":{},"21":{},"27":{},"36":{},"40":{},"41":{},"48":{},"55":{},"62":{},"63":{},"66":{},"72":{},"75":{},"77":{},"78":{},"82":{},"83":{},"85":{},"87":{},"90":{},"91":{},"101":{},"103":{},"106":{},"115":{},"125":{},"126":{},"129":{},"135":{},"138":{},"140":{},"141":{},"145":{},"148":{},"153":{},"158":{},"173":{},"175":{},"176":{},"178":{},"179":{},"182":{},"188":{},"197":{},"202":{},"204":{}},"component":{}}],["definit",{"_index":623,"title":{},"name":{},"text":{"7":{},"17":{},"21":{},"22":{},"36":{},"50":{},"56":{},"82":{},"83":{},"91":{},"101":{},"103":{},"113":{},"123":{},"145":{},"153":{},"159":{},"177":{},"182":{},"183":{},"197":{},"202":{},"204":{}},"component":{}}],["del",{"_index":3606,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["delay",{"_index":2962,"title":{},"name":{},"text":{"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"124":{},"125":{},"126":{},"128":{},"133":{},"136":{},"139":{},"140":{},"141":{},"142":{},"143":{},"145":{}},"component":{}}],["deleg",{"_index":3010,"title":{},"name":{},"text":{"65":{},"103":{},"127":{}},"component":{}}],["delet",{"_index":2093,"title":{},"name":{},"text":{"34":{},"36":{},"193":{},"195":{},"197":{}},"component":{}}],["delimit",{"_index":4201,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["deliv",{"_index":3007,"title":{},"name":{},"text":{"65":{},"127":{}},"component":{}}],["deltav",{"_index":3119,"title":{"68":{},"131":{}},"name":{"68":{},"131":{}},"text":{"74":{},"137":{}},"component":{}}],["demand",{"_index":1203,"title":{},"name":{},"text":{"14":{},"26":{},"29":{},"111":{},"187":{},"190":{}},"component":{}}],["demo",{"_index":4109,"title":{},"name":{},"text":{"92":{},"152":{}},"component":{}}],["demonstr",{"_index":2497,"title":{},"name":{},"text":{"46":{},"47":{},"48":{},"50":{},"119":{},"121":{},"123":{}},"component":{}}],["deni",{"_index":1840,"title":{},"name":{},"text":{"26":{},"46":{},"56":{},"119":{},"159":{},"187":{}},"component":{}}],["dentro",{"_index":3605,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["depend",{"_index":308,"title":{"21-8":{},"182-8":{}},"name":{},"text":{"3":{},"7":{},"9":{},"15":{},"21":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"39":{},"40":{},"41":{},"42":{},"46":{},"47":{},"50":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"93":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"103":{},"104":{},"106":{},"115":{},"116":{},"119":{},"121":{},"123":{},"124":{},"125":{},"126":{},"128":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"147":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"173":{},"177":{},"179":{},"182":{},"190":{},"195":{},"197":{},"200":{},"204":{},"205":{}},"component":{}}],["deploy",{"_index":1778,"title":{"27-3":{},"188-3":{}},"name":{},"text":{"21":{},"22":{},"27":{},"29":{},"32":{},"34":{},"36":{},"49":{},"122":{},"182":{},"183":{},"188":{},"190":{},"195":{},"197":{}},"component":{}}],["deprec",{"_index":1467,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["der",{"_index":376,"title":{},"name":{},"text":{"4":{},"13":{},"78":{},"112":{},"141":{},"174":{}},"component":{}}],["deriv",{"_index":1684,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["describ",{"_index":558,"title":{},"name":{},"text":{"6":{},"9":{},"14":{},"21":{},"29":{},"30":{},"50":{},"62":{},"78":{},"83":{},"93":{},"111":{},"123":{},"125":{},"141":{},"145":{},"165":{},"176":{},"179":{},"182":{},"190":{}},"component":{}}],["descript",{"_index":226,"title":{},"name":{},"text":{"3":{},"9":{},"12":{},"14":{},"21":{},"27":{},"29":{},"34":{},"36":{},"39":{},"41":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"87":{},"93":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"110":{},"111":{},"115":{},"124":{},"125":{},"126":{},"128":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"147":{},"148":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"173":{},"179":{},"182":{},"188":{},"190":{},"195":{},"197":{},"200":{}},"component":{}}],["descriptor",{"_index":2985,"title":{},"name":{},"text":{"63":{},"126":{}},"component":{}}],["deselect",{"_index":1929,"title":{},"name":{},"text":{"29":{},"190":{}},"component":{}}],["deseri",{"_index":4302,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["design",{"_index":1617,"title":{},"name":{},"text":{"17":{},"78":{},"83":{},"113":{},"141":{},"145":{}},"component":{}}],["desir",{"_index":902,"title":{},"name":{},"text":{"9":{},"43":{},"65":{},"127":{},"179":{}},"component":{}}],["desktop",{"_index":4469,"title":{},"name":{},"text":{"193":{}},"component":{}}],["despit",{"_index":3032,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["destinationaddress",{"_index":4231,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["destroy",{"_index":4005,"title":{},"name":{},"text":{"88":{},"149":{}},"component":{}}],["detach",{"_index":4009,"title":{"90-3":{}},"name":{},"text":{"90":{}},"component":{}}],["detail",{"_index":172,"title":{"62-4":{},"63-6":{},"65-1":{},"66-4":{},"72-4":{},"78-15":{},"125-4":{},"126-6":{},"127-1":{},"129-4":{},"135-4":{},"141-11":{},"151-4":{}},"name":{},"text":{"3":{},"7":{},"8":{},"9":{},"27":{},"34":{},"36":{},"37":{},"41":{},"43":{},"54":{},"62":{},"66":{},"78":{},"82":{},"83":{},"85":{},"87":{},"88":{},"115":{},"125":{},"129":{},"145":{},"148":{},"149":{},"157":{},"173":{},"177":{},"178":{},"179":{},"188":{},"195":{},"197":{},"198":{}},"component":{}}],["detect",{"_index":3151,"title":{},"name":{},"text":{"71":{},"77":{},"83":{},"88":{},"134":{},"140":{},"145":{},"149":{},"193":{}},"component":{}}],["determin",{"_index":1788,"title":{},"name":{},"text":{"21":{},"66":{},"83":{},"103":{},"129":{},"145":{},"182":{},"204":{}},"component":{}}],["detour",{"_index":1663,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["dev",{"_index":524,"title":{},"name":{},"text":{"5":{},"6":{},"7":{},"30":{},"175":{},"176":{},"177":{},"191":{}},"component":{}}],["dev/ttys0",{"_index":4123,"title":{},"name":{},"text":{"97":{},"167":{}},"component":{}}],["dev@plc4x.apache.org",{"_index":433,"title":{},"name":{},"text":{"4":{},"7":{},"9":{},"12":{},"36":{},"83":{},"110":{},"145":{},"174":{},"177":{},"179":{},"197":{}},"component":{}}],["devel",{"_index":1942,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["develop",{"_index":220,"title":{"7":{},"81":{},"144":{},"177":{},"34-2":{},"36-5":{},"93-1":{},"165-1":{},"173-9":{},"195-2":{},"197-5":{}},"name":{},"text":{"3":{},"5":{},"8":{},"9":{},"10":{},"12":{},"14":{},"15":{},"16":{},"21":{},"22":{},"34":{},"36":{},"49":{},"83":{},"86":{},"90":{},"101":{},"106":{},"107":{},"110":{},"111":{},"122":{},"145":{},"146":{},"151":{},"173":{},"175":{},"178":{},"179":{},"180":{},"182":{},"183":{},"195":{},"197":{},"202":{}},"component":{}}],["devi",{"_index":3116,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["devic",{"_index":38,"title":{"62":{},"125":{}},"name":{},"text":{"2":{},"12":{},"15":{},"16":{},"36":{},"41":{},"46":{},"47":{},"48":{},"50":{},"52":{},"54":{},"55":{},"58":{},"59":{},"62":{},"63":{},"66":{},"70":{},"71":{},"72":{},"75":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"90":{},"92":{},"96":{},"104":{},"106":{},"107":{},"110":{},"115":{},"119":{},"121":{},"123":{},"125":{},"126":{},"129":{},"133":{},"134":{},"135":{},"138":{},"140":{},"141":{},"144":{},"145":{},"146":{},"147":{},"151":{},"152":{},"157":{},"158":{},"162":{},"168":{},"172":{},"197":{},"205":{}},"component":{}}],["device.slot.id.module_name.channel.bit:format",{"_index":3437,"title":{},"name":{},"text":{"81":{},"144":{}},"component":{}}],["df1",{"_index":1529,"title":{"69":{},"102":{},"132":{},"203":{}},"name":{"69":{},"102":{},"132":{},"203":{}},"text":{"15":{},"39":{},"74":{},"102":{},"106":{},"137":{},"200":{},"203":{}},"component":{}}],["df1command",{"_index":4233,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["df1symbol",{"_index":4224,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["df1symbolmessagefram",{"_index":4230,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["df1symbolmessageframeack",{"_index":4237,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["df1symbolmessageframenak",{"_index":4238,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["df1unprotectedreadrequest",{"_index":4241,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["df1unprotectedreadrespons",{"_index":4243,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["dfdl",{"_index":1710,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["di",{"_index":1402,"title":{},"name":{},"text":{"15":{},"82":{},"83":{},"106":{},"145":{}},"component":{}}],["diagnos",{"_index":1936,"title":{},"name":{},"text":{"30":{},"31":{},"32":{}},"component":{}}],["diagnosi",{"_index":3840,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["diagnost",{"_index":3347,"title":{},"name":{},"text":{"78":{},"82":{},"83":{},"141":{},"145":{}},"component":{}}],["diagram",{"_index":1880,"title":{},"name":{},"text":{"27":{},"65":{},"83":{},"127":{},"145":{},"188":{}},"component":{}}],["dialog",{"_index":2683,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["dialogu",{"_index":3662,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["dictat",{"_index":920,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["dictionari",{"_index":3045,"title":{},"name":{},"text":{"66":{},"85":{},"129":{}},"component":{}}],["didact",{"_index":3744,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["didn’t",{"_index":1549,"title":{},"name":{},"text":{"15":{},"21":{},"47":{},"48":{},"50":{},"106":{},"121":{},"123":{},"182":{}},"component":{}}],["die",{"_index":337,"title":{},"name":{},"text":{"4":{},"13":{},"112":{},"174":{}},"component":{}}],["differ",{"_index":52,"title":{},"name":{},"text":{"2":{},"3":{},"6":{},"10":{},"12":{},"16":{},"17":{},"21":{},"34":{},"36":{},"41":{},"42":{},"46":{},"47":{},"50":{},"56":{},"66":{},"72":{},"78":{},"83":{},"84":{},"86":{},"87":{},"88":{},"91":{},"97":{},"98":{},"101":{},"102":{},"103":{},"107":{},"110":{},"113":{},"115":{},"116":{},"119":{},"121":{},"123":{},"129":{},"135":{},"141":{},"145":{},"146":{},"147":{},"148":{},"149":{},"153":{},"159":{},"167":{},"169":{},"172":{},"173":{},"176":{},"180":{},"182":{},"195":{},"197":{},"202":{},"203":{},"204":{}},"component":{}}],["differenti",{"_index":3635,"title":{},"name":{},"text":{"83":{},"102":{},"145":{},"203":{}},"component":{}}],["difficult",{"_index":270,"title":{},"name":{},"text":{"3":{},"17":{},"113":{},"173":{}},"component":{}}],["digest",{"_index":845,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["digit",{"_index":1145,"title":{},"name":{},"text":{"12":{},"13":{},"15":{},"58":{},"71":{},"82":{},"83":{},"106":{},"110":{},"112":{},"134":{},"145":{}},"component":{}}],["digital:4",{"_index":3165,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["digital:4:pullup",{"_index":3167,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["digital:4[5",{"_index":3166,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["digital:{start",{"_index":3159,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["dint",{"_index":1414,"title":{},"name":{},"text":{"15":{},"66":{},"70":{},"72":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"106":{},"129":{},"133":{},"135":{},"139":{},"140":{},"141":{},"144":{},"145":{},"147":{}},"component":{}}],["dir",{"_index":2252,"title":{},"name":{},"text":{"37":{},"59":{},"162":{},"198":{}},"component":{}}],["direct",{"_index":1018,"title":{},"name":{},"text":{"10":{},"17":{},"82":{},"83":{},"113":{},"145":{},"180":{}},"component":{}}],["direct_peripheral_access",{"_index":3517,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["directli",{"_index":1323,"title":{"46-2":{},"47-1":{},"48-1":{},"119-2":{},"121-1":{}},"name":{},"text":{"15":{},"16":{},"17":{},"26":{},"32":{},"36":{},"41":{},"82":{},"83":{},"86":{},"92":{},"103":{},"106":{},"107":{},"113":{},"115":{},"145":{},"146":{},"152":{},"187":{},"197":{},"204":{}},"component":{}}],["directo",{"_index":3582,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["director",{"_index":762,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["directori",{"_index":276,"title":{},"name":{},"text":{"3":{},"5":{},"8":{},"27":{},"32":{},"34":{},"36":{},"37":{},"39":{},"40":{},"43":{},"46":{},"48":{},"50":{},"55":{},"56":{},"59":{},"63":{},"81":{},"101":{},"119":{},"123":{},"126":{},"144":{},"158":{},"159":{},"162":{},"173":{},"175":{},"178":{},"188":{},"193":{},"195":{},"197":{},"198":{},"200":{},"202":{}},"component":{}}],["dirti",{"_index":2203,"title":{},"name":{},"text":{"36":{},"193":{},"197":{}},"component":{}}],["dir}/security/pki/reject",{"_index":2958,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["dir}/security/plc4x",{"_index":2952,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["disabl",{"_index":291,"title":{},"name":{},"text":{"3":{},"47":{},"48":{},"50":{},"59":{},"62":{},"78":{},"82":{},"83":{},"121":{},"123":{},"125":{},"141":{},"145":{},"162":{},"173":{},"197":{}},"component":{}}],["disableinsecureendpoint",{"_index":2918,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["disadvantag",{"_index":1658,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["discard",{"_index":2865,"title":{},"name":{},"text":{"55":{},"72":{},"82":{},"83":{},"84":{},"103":{},"135":{},"145":{},"147":{},"158":{}},"component":{}}],["disconnect",{"_index":2965,"title":{},"name":{},"text":{"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"90":{},"105":{},"124":{},"125":{},"126":{},"128":{},"133":{},"136":{},"139":{},"140":{},"141":{},"142":{},"143":{},"145":{},"206":{}},"component":{}}],["discontinu",{"_index":3999,"title":{},"name":{},"text":{"88":{},"149":{}},"component":{}}],["discov",{"_index":1341,"title":{},"name":{},"text":{"15":{},"47":{},"48":{},"74":{},"78":{},"106":{},"121":{},"137":{},"141":{}},"component":{}}],["discover",{"_index":779,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["discoveri",{"_index":2791,"title":{},"name":{},"text":{"55":{},"78":{},"141":{},"158":{}},"component":{}}],["discret",{"_index":2686,"title":{},"name":{},"text":{"50":{},"77":{},"123":{},"140":{}},"component":{}}],["discrimin",{"_index":4227,"title":{"103-8":{},"204-7":{}},"name":{},"text":{"102":{},"103":{},"203":{},"204":{}},"component":{}}],["discriminatedtyp",{"_index":4223,"title":{},"name":{},"text":{"102":{},"103":{},"203":{},"204":{}},"component":{}}],["discriminatedtype`",{"_index":4300,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["discuss",{"_index":500,"title":{},"name":{},"text":{"5":{},"9":{},"34":{},"36":{},"175":{},"179":{},"195":{},"197":{}},"component":{}}],["disk",{"_index":4468,"title":{},"name":{},"text":{"193":{}},"component":{}}],["dispatch",{"_index":3027,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["display",{"_index":1831,"title":{},"name":{},"text":{"26":{},"82":{},"83":{},"145":{},"187":{}},"component":{}}],["disposit",{"_index":3646,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["dist.apache.org",{"_index":834,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["distinguish",{"_index":4138,"title":{},"name":{},"text":{"101":{},"102":{},"103":{},"202":{},"203":{},"204":{}},"component":{}}],["distribut",{"_index":120,"title":{"55-7":{},"55-10":{},"158-7":{},"158-10":{}},"name":{},"text":{"3":{},"9":{},"30":{},"32":{},"36":{},"55":{},"83":{},"101":{},"145":{},"158":{},"173":{},"179":{},"191":{},"193":{},"197":{},"202":{}},"component":{}}],["distributed.properti",{"_index":2788,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["distributed.sh",{"_index":2824,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["distrubut",{"_index":2778,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["ditto",{"_index":2910,"title":{"58":{},"161":{}},"name":{"58":{},"161":{}},"text":{"58":{},"161":{}},"component":{}}],["dive",{"_index":2384,"title":{},"name":{},"text":{"43":{}},"component":{}}],["djqassistant.neo4jversion=3",{"_index":747,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["dk",{"_index":3319,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["dle",{"_index":4206,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["dll",{"_index":4467,"title":{},"name":{},"text":{"193":{}},"component":{}}],["dmaven.repo.local=../.m2",{"_index":2269,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["do",{"_index":662,"title":{"26-3":{},"187-3":{}},"name":{},"text":{"8":{},"9":{},"22":{},"36":{},"39":{},"96":{},"168":{},"178":{},"179":{},"197":{},"200":{}},"component":{}}],["doap",{"_index":2162,"title":{"36-16":{},"197-16":{}},"name":{},"text":{"36":{},"197":{}},"component":{}}],["doap.rdf",{"_index":2228,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["doc",{"_index":2235,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["doc\":\"plc",{"_index":2842,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["docker",{"_index":615,"title":{},"name":{},"text":{"7":{},"173":{},"177":{}},"component":{}}],["document",{"_index":170,"title":{"5-6":{},"33-1":{},"175-6":{},"194-1":{}},"name":{},"text":{"3":{},"5":{},"6":{},"9":{},"15":{},"16":{},"27":{},"29":{},"30":{},"32":{},"34":{},"36":{},"39":{},"41":{},"43":{},"56":{},"66":{},"82":{},"83":{},"91":{},"103":{},"106":{},"107":{},"115":{},"129":{},"145":{},"153":{},"159":{},"173":{},"175":{},"176":{},"179":{},"188":{},"190":{},"191":{},"195":{},"197":{},"200":{},"204":{}},"component":{}}],["doesn't",{"_index":2464,"title":{},"name":{},"text":{"46":{},"47":{},"48":{},"50":{},"119":{},"121":{},"123":{}},"component":{}}],["doesn’t",{"_index":159,"title":{},"name":{},"text":{"3":{},"15":{},"17":{},"26":{},"32":{},"34":{},"36":{},"46":{},"47":{},"48":{},"50":{},"59":{},"75":{},"91":{},"101":{},"103":{},"106":{},"113":{},"119":{},"121":{},"123":{},"138":{},"153":{},"162":{},"173":{},"187":{},"193":{},"195":{},"197":{},"202":{},"204":{}},"component":{}}],["domain",{"_index":664,"title":{},"name":{},"text":{"8":{},"10":{},"82":{},"83":{},"90":{},"145":{},"151":{},"178":{},"180":{}},"component":{}}],["domin",{"_index":3034,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["done",{"_index":105,"title":{"21-8":{},"182-8":{}},"name":{},"text":{"3":{},"4":{},"5":{},"7":{},"13":{},"14":{},"15":{},"21":{},"26":{},"27":{},"34":{},"36":{},"46":{},"47":{},"48":{},"50":{},"55":{},"56":{},"65":{},"82":{},"83":{},"87":{},"90":{},"91":{},"92":{},"98":{},"103":{},"106":{},"111":{},"112":{},"119":{},"121":{},"123":{},"127":{},"145":{},"148":{},"152":{},"153":{},"158":{},"159":{},"169":{},"173":{},"174":{},"175":{},"177":{},"182":{},"187":{},"188":{},"195":{},"197":{}},"component":{}}],["don’t",{"_index":45,"title":{},"name":{},"text":{"2":{},"5":{},"7":{},"15":{},"16":{},"21":{},"27":{},"30":{},"31":{},"32":{},"34":{},"36":{},"41":{},"47":{},"48":{},"50":{},"56":{},"75":{},"82":{},"83":{},"88":{},"103":{},"106":{},"107":{},"115":{},"121":{},"123":{},"138":{},"145":{},"149":{},"159":{},"172":{},"175":{},"177":{},"182":{},"188":{},"191":{},"192":{},"193":{},"195":{},"197":{},"204":{}},"component":{}}],["door",{"_index":2250,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["dotnet",{"_index":213,"title":{"30-6":{},"31-6":{},"32-6":{},"191-4":{},"192-4":{},"193-4":{}},"name":{},"text":{"3":{},"29":{},"30":{},"31":{},"32":{},"173":{},"190":{},"191":{},"192":{},"193":{}},"component":{}}],["dotnet,with",{"_index":240,"title":{},"name":{},"text":{"3":{},"36":{},"173":{},"197":{}},"component":{}}],["doubl",{"_index":1356,"title":{},"name":{},"text":{"15":{},"27":{},"47":{},"56":{},"63":{},"66":{},"75":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"90":{},"95":{},"103":{},"106":{},"121":{},"126":{},"129":{},"138":{},"140":{},"141":{},"144":{},"145":{},"147":{},"151":{},"159":{},"166":{},"188":{}},"component":{}}],["down",{"_index":109,"title":{},"name":{},"text":{"3":{},"11":{},"21":{},"30":{},"31":{},"32":{},"36":{},"47":{},"50":{},"82":{},"103":{},"121":{},"123":{},"173":{},"181":{},"182":{},"191":{},"197":{},"204":{}},"component":{}}],["download",{"_index":155,"title":{"15":{},"106":{},"36-19":{},"197-19":{}},"name":{"15":{},"106":{}},"text":{"3":{},"9":{},"15":{},"21":{},"32":{},"34":{},"36":{},"37":{},"46":{},"50":{},"55":{},"56":{},"62":{},"106":{},"119":{},"123":{},"125":{},"158":{},"159":{},"173":{},"179":{},"182":{},"193":{},"195":{},"197":{},"198":{}},"component":{}}],["download.adoc",{"_index":2230,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["downsid",{"_index":1712,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["dp",{"_index":3628,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["dpkg",{"_index":1969,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["dprocessallmodules=tru",{"_index":2219,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["dq",{"_index":3542,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["draft",{"_index":1340,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["drag",{"_index":2880,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["dramat",{"_index":204,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["drive",{"_index":1132,"title":{},"name":{},"text":{"12":{},"82":{},"83":{},"110":{},"145":{}},"component":{}}],["driver",{"_index":25,"title":{"40":{},"65":{},"127":{},"201":{},"40-2":{},"40-4":{},"65-1":{},"66-4":{},"72-4":{},"83-3":{},"92-1":{},"92-3":{},"127-1":{},"129-4":{},"135-4":{},"145-3":{},"152-1":{},"152-3":{}},"name":{"40":{},"201":{}},"text":{"2":{},"3":{},"15":{},"16":{},"17":{},"21":{},"29":{},"36":{},"40":{},"41":{},"43":{},"46":{},"47":{},"50":{},"51":{},"56":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"91":{},"92":{},"93":{},"98":{},"101":{},"103":{},"106":{},"107":{},"113":{},"115":{},"119":{},"121":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"147":{},"148":{},"152":{},"153":{},"154":{},"159":{},"165":{},"169":{},"172":{},"173":{},"182":{},"190":{},"197":{},"201":{},"202":{},"204":{}},"component":{}}],["driver_manag",{"_index":2620,"title":{},"name":{},"text":{"48":{}},"component":{}}],["driver_manager.connection(connection_str",{"_index":2625,"title":{},"name":{},"text":{"48":{}},"component":{}}],["drivermanag",{"_index":21,"title":{},"name":{},"text":{"2":{},"46":{},"88":{},"119":{},"149":{},"152":{},"172":{}},"component":{}}],["drivermanager.getconnect",{"_index":4007,"title":{},"name":{},"text":{"88":{},"149":{}},"component":{}}],["drivermanager.getconnection(\"mock:mi",{"_index":4431,"title":{},"name":{},"text":{"152":{}},"component":{}}],["drivermanager.getconnection(\"modbu",{"_index":2435,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["drivers.registerknxdriver(drivermanag",{"_index":2432,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["drivers.registermodbusdriver(drivermanag",{"_index":2433,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["drivers/transport",{"_index":1477,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["drop",{"_index":1971,"title":{},"name":{},"text":{"30":{},"36":{},"191":{},"197":{}},"component":{}}],["dsa",{"_index":2399,"title":{},"name":{},"text":{"43":{}},"component":{}}],["dskiptest",{"_index":238,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["dst",{"_index":4208,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["dti=0&lc=",{"_index":3607,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["dti=0&lc=en",{"_index":3563,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["dtl",{"_index":1440,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["dual",{"_index":1667,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["due",{"_index":851,"title":{},"name":{},"text":{"9":{},"15":{},"17":{},"21":{},"47":{},"48":{},"50":{},"65":{},"66":{},"78":{},"83":{},"106":{},"113":{},"121":{},"123":{},"127":{},"129":{},"141":{},"145":{},"179":{},"182":{}},"component":{}}],["dummi",{"_index":2318,"title":{"46-1":{},"119-1":{}},"name":{},"text":{"40":{},"90":{}},"component":{}}],["duplex",{"_index":4204,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["durat",{"_index":1283,"title":{},"name":{},"text":{"15":{},"46":{},"47":{},"82":{},"83":{},"90":{},"106":{},"119":{},"121":{},"145":{}},"component":{}}],["duration.ofmillis(1000",{"_index":2597,"title":{},"name":{},"text":{"47":{},"121":{}},"component":{}}],["dure",{"_index":652,"title":{},"name":{},"text":{"8":{},"9":{},"15":{},"21":{},"27":{},"29":{},"34":{},"36":{},"55":{},"59":{},"82":{},"83":{},"103":{},"106":{},"145":{},"158":{},"162":{},"173":{},"178":{},"179":{},"182":{},"188":{},"190":{},"195":{},"197":{},"204":{}},"component":{}}],["dutz",{"_index":182,"title":{},"name":{},"text":{"3":{},"10":{},"14":{},"111":{},"173":{},"180":{}},"component":{}}],["dword",{"_index":1308,"title":{},"name":{},"text":{"15":{},"70":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"106":{},"133":{},"139":{},"140":{},"141":{},"144":{},"145":{},"147":{}},"component":{}}],["dy",{"_index":2014,"title":{},"name":{},"text":{"32":{}},"component":{}}],["dynam",{"_index":1789,"title":{},"name":{},"text":{"21":{},"90":{},"182":{}},"component":{}}],["dywicki",{"_index":1045,"title":{},"name":{},"text":{"10":{},"14":{},"111":{},"180":{}},"component":{}}],["düsseldorf",{"_index":371,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["e",{"_index":2004,"title":{},"name":{},"text":{"31":{},"34":{},"36":{},"47":{},"91":{},"92":{},"101":{},"121":{},"152":{},"153":{},"192":{},"195":{},"197":{},"202":{}},"component":{}}],["e.g",{"_index":466,"title":{},"name":{},"text":{"5":{},"14":{},"34":{},"36":{},"54":{},"76":{},"78":{},"85":{},"92":{},"111":{},"139":{},"141":{},"152":{},"157":{},"175":{},"195":{},"197":{}},"component":{}}],["each",{"_index":168,"title":{},"name":{},"text":{"3":{},"5":{},"9":{},"15":{},"16":{},"17":{},"34":{},"36":{},"39":{},"47":{},"48":{},"50":{},"54":{},"55":{},"56":{},"59":{},"66":{},"75":{},"76":{},"77":{},"78":{},"82":{},"83":{},"84":{},"88":{},"91":{},"93":{},"101":{},"103":{},"105":{},"106":{},"107":{},"113":{},"121":{},"123":{},"129":{},"138":{},"139":{},"140":{},"141":{},"145":{},"147":{},"149":{},"153":{},"157":{},"158":{},"159":{},"162":{},"165":{},"173":{},"175":{},"179":{},"195":{},"197":{},"200":{},"202":{},"204":{},"206":{}},"component":{}}],["earli",{"_index":1597,"title":{},"name":{},"text":{"17":{},"65":{},"113":{},"127":{}},"component":{}}],["eas",{"_index":3497,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["easi",{"_index":2286,"title":{"82-1":{},"83-4":{},"145-4":{}},"name":{},"text":{"39":{},"90":{},"91":{},"151":{},"153":{},"200":{}},"component":{}}],["easier",{"_index":3125,"title":{},"name":{},"text":{"70":{},"133":{}},"component":{}}],["easiest",{"_index":2792,"title":{},"name":{},"text":{"55":{},"81":{},"92":{},"144":{},"152":{},"158":{}},"component":{}}],["easili",{"_index":778,"title":{},"name":{},"text":{"9":{},"37":{},"41":{},"65":{},"115":{},"127":{},"179":{},"198":{}},"component":{}}],["ebook",{"_index":1890,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["ec",{"_index":2400,"title":{},"name":{},"text":{"43":{}},"component":{}}],["echo",{"_index":2003,"title":{},"name":{},"text":{"31":{},"192":{}},"component":{}}],["eclips",{"_index":1174,"title":{"58":{},"59":{},"161":{}},"name":{"58":{},"59":{},"161":{},"162":{}},"text":{"13":{},"15":{},"58":{},"59":{},"78":{},"106":{},"112":{},"141":{},"161":{},"162":{}},"component":{}}],["ecosystem",{"_index":3633,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["ed",{"_index":2984,"title":{},"name":{},"text":{"63":{},"66":{},"126":{},"129":{}},"component":{}}],["edg",{"_index":413,"title":{},"name":{},"text":{"4":{},"13":{},"78":{},"112":{},"174":{}},"component":{}}],["edgent",{"_index":414,"title":{"53":{},"156":{}},"name":{"53":{},"156":{}},"text":{"4":{},"10":{},"13":{},"15":{},"36":{},"106":{},"112":{},"174":{},"180":{},"197":{}},"component":{}}],["edinburgh",{"_index":394,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["edit",{"_index":1222,"title":{},"name":{},"text":{"14":{},"56":{},"101":{},"111":{},"159":{},"193":{},"202":{}},"component":{}}],["editor",{"_index":2680,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["ee",{"_index":678,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["effect",{"_index":275,"title":{},"name":{},"text":{"3":{},"32":{},"46":{},"59":{},"78":{},"83":{},"119":{},"141":{},"145":{},"162":{},"173":{},"193":{}},"component":{}}],["effort",{"_index":1155,"title":{},"name":{},"text":{"12":{},"16":{},"93":{},"107":{},"110":{},"165":{}},"component":{}}],["einführung",{"_index":1188,"title":{},"name":{},"text":{"13":{},"112":{}},"component":{}}],["eip",{"_index":1255,"title":{"105":{},"206":{}},"name":{"70":{},"133":{}},"text":{"15":{},"33":{},"36":{},"70":{},"76":{},"106":{},"133":{},"139":{},"194":{},"197":{}},"component":{}}],["eipconnectionrequest",{"_index":4393,"title":{},"name":{},"text":{"105":{},"206":{}},"component":{}}],["eipconnectionresponse\"?truefalseextract",{"_index":4411,"title":{},"name":{},"text":{"105":{},"206":{}},"component":{}}],["ej",{"_index":1099,"title":{},"name":{},"text":{"11":{},"181":{}},"component":{}}],["ejb3",{"_index":670,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["el",{"_index":3575,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["elasticsearch",{"_index":1546,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["elect",{"_index":912,"title":{},"name":{},"text":{"9":{},"10":{},"179":{},"180":{}},"component":{}}],["electr",{"_index":977,"title":{"85":{}},"name":{},"text":{"10":{},"78":{},"85":{},"180":{}},"component":{}}],["electron",{"_index":3048,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["element",{"_index":2294,"title":{},"name":{},"text":{"39":{},"40":{},"41":{},"46":{},"47":{},"48":{},"50":{},"70":{},"102":{},"103":{},"119":{},"121":{},"123":{},"133":{},"193":{},"200":{},"203":{},"204":{}},"component":{}}],["elimin",{"_index":1728,"title":{},"name":{},"text":{"21":{}},"component":{}}],["em",{"_index":4031,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["em.connect(myentity.class",{"_index":4037,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["em.read(myentity.class",{"_index":4032,"title":{},"name":{},"text":{"90":{}},"component":{}}],["email",{"_index":629,"title":{"37-3":{},"198-3":{}},"name":{},"text":{"7":{},"10":{},"12":{},"26":{},"34":{},"36":{},"37":{},"110":{},"177":{},"180":{},"187":{},"195":{},"197":{},"198":{}},"component":{}}],["email(",{"_index":1209,"title":{},"name":{},"text":{"14":{},"111":{}},"component":{}}],["embed",{"_index":3415,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["employ",{"_index":1051,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["empti",{"_index":628,"title":{},"name":{},"text":{"7":{},"8":{},"21":{},"37":{},"40":{},"50":{},"101":{},"103":{},"123":{},"177":{},"178":{},"198":{},"202":{},"204":{}},"component":{}}],["en",{"_index":3597,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["en.pdf",{"_index":3866,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["enabl",{"_index":87,"title":{"3-9":{},"56-2":{},"56-4":{},"159-2":{},"159-4":{}},"name":{},"text":{"3":{},"8":{},"12":{},"15":{},"16":{},"30":{},"31":{},"32":{},"36":{},"37":{},"40":{},"50":{},"56":{},"63":{},"78":{},"81":{},"82":{},"85":{},"90":{},"106":{},"107":{},"110":{},"123":{},"126":{},"141":{},"144":{},"151":{},"159":{},"173":{},"178":{},"197":{},"198":{}},"component":{}}],["encapsul",{"_index":4409,"title":{},"name":{},"text":{"105":{},"206":{}},"component":{}}],["encod",{"_index":3042,"title":{"103-24":{}},"name":{},"text":{"66":{},"75":{},"77":{},"80":{},"103":{},"129":{},"138":{},"143":{}},"component":{}}],["encoding.max",{"_index":3336,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["encoding.rec",{"_index":3333,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["encoding.send",{"_index":3335,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["encount",{"_index":2870,"title":{},"name":{},"text":{"56":{},"91":{},"103":{},"153":{},"159":{},"173":{},"204":{}},"component":{}}],["encourag",{"_index":236,"title":{},"name":{},"text":{"3":{},"9":{},"173":{},"179":{},"193":{}},"component":{}}],["encrypt",{"_index":1261,"title":{},"name":{},"text":{"15":{},"59":{},"78":{},"106":{},"141":{},"162":{}},"component":{}}],["end",{"_index":1119,"title":{},"name":{},"text":{"12":{},"17":{},"21":{},"26":{},"27":{},"34":{},"36":{},"37":{},"46":{},"47":{},"48":{},"50":{},"63":{},"75":{},"78":{},"83":{},"86":{},"95":{},"102":{},"103":{},"110":{},"113":{},"119":{},"121":{},"123":{},"126":{},"138":{},"141":{},"145":{},"146":{},"166":{},"182":{},"187":{},"188":{},"193":{},"195":{},"197":{},"198":{},"203":{},"204":{}},"component":{}}],["endian",{"_index":2302,"title":{},"name":{},"text":{"39":{},"70":{},"76":{},"133":{},"139":{},"200":{}},"component":{}}],["endors",{"_index":1206,"title":{},"name":{},"text":{"14":{},"111":{}},"component":{}}],["endpoint",{"_index":2341,"title":{},"name":{},"text":{"41":{},"59":{},"78":{},"115":{},"141":{},"162":{}},"component":{}}],["endtransact",{"_index":4235,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["enforc",{"_index":637,"title":{},"name":{},"text":{"8":{},"9":{},"82":{},"83":{},"93":{},"145":{},"165":{},"173":{},"178":{},"179":{}},"component":{}}],["engag",{"_index":1043,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["engin",{"_index":650,"title":{},"name":{},"text":{"8":{},"10":{},"17":{},"21":{},"83":{},"103":{},"113":{},"145":{},"178":{},"180":{},"182":{},"204":{}},"component":{}}],["english",{"_index":3839,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["enjoy",{"_index":978,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["enlac",{"_index":3581,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["enorm",{"_index":1153,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["enough",{"_index":1997,"title":{},"name":{},"text":{"31":{},"47":{},"48":{},"83":{},"121":{},"145":{},"173":{},"192":{}},"component":{}}],["ensur",{"_index":147,"title":{},"name":{},"text":{"3":{},"6":{},"9":{},"32":{},"34":{},"36":{},"37":{},"47":{},"48":{},"50":{},"82":{},"83":{},"87":{},"103":{},"121":{},"123":{},"145":{},"148":{},"173":{},"176":{},"179":{},"195":{},"197":{},"198":{}},"component":{}}],["ensurepip",{"_index":1984,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["enter",{"_index":800,"title":{},"name":{},"text":{"9":{},"26":{},"43":{},"56":{},"83":{},"145":{},"159":{},"179":{},"187":{}},"component":{}}],["enthusiast",{"_index":1058,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["entir",{"_index":791,"title":{},"name":{},"text":{"9":{},"17":{},"27":{},"43":{},"56":{},"113":{},"159":{},"179":{},"188":{}},"component":{}}],["entiti",{"_index":1204,"title":{"90-2":{}},"name":{},"text":{"14":{},"90":{},"111":{},"151":{}},"component":{}}],["entr",{"_index":3565,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["entri",{"_index":1224,"title":{},"name":{},"text":{"14":{},"15":{},"43":{},"56":{},"78":{},"106":{},"111":{},"141":{},"159":{}},"component":{}}],["enum",{"_index":3708,"title":{},"name":{},"text":{"83":{},"101":{},"103":{},"145":{},"202":{},"204":{}},"component":{}}],["environ",{"_index":1565,"title":{},"name":{},"text":{"15":{},"32":{},"41":{},"43":{},"55":{},"82":{},"83":{},"106":{},"115":{},"145":{},"158":{},"193":{}},"component":{}}],["episod",{"_index":361,"title":{},"name":{},"text":{"4":{},"13":{},"112":{},"174":{}},"component":{}}],["equal",{"_index":801,"title":{},"name":{},"text":{"9":{},"27":{},"34":{},"82":{},"83":{},"145":{},"179":{},"182":{},"188":{},"195":{}},"component":{}}],["equip",{"_index":3130,"title":{},"name":{},"text":{"71":{},"83":{},"134":{},"145":{}},"component":{}}],["equival",{"_index":3054,"title":{},"name":{},"text":{"66":{},"78":{},"129":{},"141":{}},"component":{}}],["erfurt",{"_index":331,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["err",{"_index":2466,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["error",{"_index":59,"title":{},"name":{},"text":{"2":{},"8":{},"15":{},"26":{},"30":{},"31":{},"32":{},"36":{},"46":{},"47":{},"48":{},"50":{},"55":{},"56":{},"59":{},"62":{},"71":{},"77":{},"82":{},"83":{},"90":{},"103":{},"106":{},"119":{},"121":{},"123":{},"125":{},"134":{},"140":{},"145":{},"158":{},"159":{},"162":{},"172":{},"178":{},"187":{},"197":{}},"component":{}}],["errorclass",{"_index":4273,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["errorcod",{"_index":4274,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["es",{"_index":3547,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["especi",{"_index":198,"title":{},"name":{},"text":{"3":{},"21":{},"26":{},"34":{},"36":{},"37":{},"41":{},"49":{},"50":{},"82":{},"83":{},"86":{},"91":{},"92":{},"103":{},"115":{},"122":{},"123":{},"145":{},"146":{},"152":{},"153":{},"173":{},"182":{},"187":{},"195":{},"197":{},"198":{}},"component":{}}],["establish",{"_index":55,"title":{},"name":{},"text":{"2":{},"9":{},"17":{},"48":{},"78":{},"83":{},"87":{},"92":{},"113":{},"141":{},"145":{},"148":{},"152":{},"172":{},"179":{}},"component":{}}],["et",{"_index":1302,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["etc",{"_index":562,"title":{},"name":{},"text":{"6":{},"78":{},"83":{},"86":{},"141":{},"145":{},"146":{},"176":{}},"component":{}}],["eth",{"_index":1522,"title":{"61":{},"124":{}},"name":{"61":{},"124":{}},"text":{"15":{},"36":{},"61":{},"106":{},"124":{},"197":{}},"component":{}}],["ethercat",{"_index":2351,"title":{},"name":{},"text":{"41":{},"115":{}},"component":{}}],["ethernet",{"_index":1931,"title":{"30-4":{},"31-4":{},"32-4":{}},"name":{},"text":{"32":{},"41":{},"63":{},"74":{},"75":{},"76":{},"81":{},"115":{},"126":{},"137":{},"138":{},"139":{},"144":{}},"component":{}}],["ethernet/ip",{"_index":1470,"title":{"70":{},"133":{}},"name":{},"text":{"15":{},"36":{},"70":{},"74":{},"106":{},"133":{},"137":{},"197":{}},"component":{}}],["ethernetip",{"_index":3120,"title":{},"name":{},"text":{"70":{},"133":{}},"component":{}}],["etx",{"_index":4214,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["eu",{"_index":410,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["euregjug",{"_index":358,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["europ",{"_index":397,"title":{},"name":{},"text":{"4":{},"10":{},"14":{},"111":{},"174":{}},"component":{}}],["european",{"_index":928,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["eval",{"_index":2008,"title":{},"name":{},"text":{"31":{},"192":{}},"component":{}}],["evalu",{"_index":4256,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["even",{"_index":118,"title":{},"name":{},"text":{"3":{},"5":{},"7":{},"8":{},"9":{},"15":{},"17":{},"21":{},"26":{},"27":{},"37":{},"41":{},"46":{},"48":{},"56":{},"66":{},"83":{},"86":{},"87":{},"90":{},"103":{},"106":{},"113":{},"119":{},"129":{},"145":{},"146":{},"148":{},"151":{},"159":{},"173":{},"175":{},"177":{},"178":{},"179":{},"182":{},"187":{},"188":{},"198":{},"204":{}},"component":{}}],["even_par",{"_index":3154,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["event",{"_index":319,"title":{"4":{},"174":{},"78-12":{},"83-16":{},"83-17":{},"83-18":{},"83-19":{},"83-20":{},"145-16":{},"145-17":{},"145-18":{},"145-19":{},"145-20":{}},"name":{},"text":{"4":{},"15":{},"36":{},"46":{},"47":{},"50":{},"55":{},"56":{},"75":{},"78":{},"83":{},"106":{},"119":{},"121":{},"123":{},"138":{},"141":{},"145":{},"158":{},"159":{},"174":{},"197":{}},"component":{}}],["event.getaddress(fieldnam",{"_index":2530,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["event.getfieldnam",{"_index":2526,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["event.getresponsecode(fieldnam",{"_index":2527,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["event.getresponsecode(tagnam",{"_index":2536,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["event.gettag(tagname).getaddressstr",{"_index":2537,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["event.gettagnam",{"_index":2535,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["event.getvalue(fieldname).getstr",{"_index":2533,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["event.getvalue(tagname).getstr",{"_index":2538,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["event_com",{"_index":3813,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["event_go",{"_index":3812,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["event_id",{"_index":3746,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["event_last_chang",{"_index":3814,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["event_st",{"_index":3809,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["eventid",{"_index":3392,"title":{},"name":{},"text":{"78":{},"83":{},"145":{}},"component":{}}],["eventloop",{"_index":3659,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["events/alarm",{"_index":3196,"title":{},"name":{},"text":{"74":{},"137":{}},"component":{}}],["eventtyp",{"_index":3381,"title":{},"name":{},"text":{"78":{}},"component":{}}],["eventu",{"_index":2273,"title":{},"name":{},"text":{"37":{},"66":{},"83":{},"90":{},"129":{},"145":{},"198":{}},"component":{}}],["everyth",{"_index":823,"title":{},"name":{},"text":{"9":{},"34":{},"37":{},"47":{},"48":{},"50":{},"82":{},"83":{},"121":{},"123":{},"145":{},"179":{},"195":{},"198":{}},"component":{}}],["everywher",{"_index":2070,"title":{},"name":{},"text":{"34":{},"36":{},"87":{},"148":{},"195":{},"197":{}},"component":{}}],["evolut",{"_index":1149,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["exact",{"_index":1662,"title":{},"name":{},"text":{"17":{},"70":{},"113":{},"133":{}},"component":{}}],["exactli",{"_index":2058,"title":{},"name":{},"text":{"34":{},"36":{},"39":{},"46":{},"47":{},"90":{},"91":{},"103":{},"119":{},"121":{},"151":{},"153":{},"195":{},"197":{},"200":{},"204":{}},"component":{}}],["exampl",{"_index":231,"title":{"102":{},"203":{},"54-2":{},"77-17":{},"78-9":{},"84-9":{},"88-2":{},"90-3":{},"90-4":{},"92-2":{},"101-1":{},"140-17":{},"141-9":{},"147-9":{},"149-2":{},"151-2":{},"152-2":{},"157-2":{},"202-1":{}},"name":{},"text":{"3":{},"15":{},"21":{},"27":{},"30":{},"31":{},"32":{},"39":{},"41":{},"46":{},"47":{},"48":{},"50":{},"54":{},"55":{},"56":{},"58":{},"59":{},"62":{},"66":{},"71":{},"75":{},"76":{},"77":{},"78":{},"80":{},"81":{},"83":{},"84":{},"85":{},"86":{},"87":{},"88":{},"90":{},"91":{},"92":{},"101":{},"103":{},"106":{},"115":{},"119":{},"121":{},"123":{},"125":{},"129":{},"134":{},"138":{},"139":{},"140":{},"141":{},"143":{},"144":{},"145":{},"146":{},"147":{},"148":{},"149":{},"152":{},"153":{},"157":{},"158":{},"159":{},"161":{},"162":{},"173":{},"182":{},"188":{},"190":{},"200":{},"202":{},"204":{}},"component":{}}],["examples/tree/master/plc4x",{"_index":2914,"title":{},"name":{},"text":{"58":{},"161":{}},"component":{}}],["exccept",{"_index":2644,"title":{},"name":{},"text":{"48":{}},"component":{}}],["exce",{"_index":2714,"title":{},"name":{},"text":{"50":{},"82":{},"83":{},"123":{},"145":{}},"component":{}}],["exceed",{"_index":3356,"title":{},"name":{},"text":{"78":{},"82":{},"83":{},"141":{},"145":{}},"component":{}}],["except",{"_index":604,"title":{},"name":{},"text":{"6":{},"14":{},"15":{},"31":{},"47":{},"48":{},"50":{},"55":{},"71":{},"77":{},"78":{},"82":{},"83":{},"87":{},"92":{},"101":{},"103":{},"106":{},"111":{},"121":{},"123":{},"134":{},"140":{},"141":{},"145":{},"148":{},"152":{},"158":{},"176":{},"192":{},"202":{},"204":{}},"component":{}}],["excess",{"_index":3498,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["exchang",{"_index":2974,"title":{},"name":{},"text":{"62":{},"66":{},"78":{},"82":{},"83":{},"125":{},"129":{},"141":{},"145":{}},"component":{}}],["exclud",{"_index":208,"title":{},"name":{},"text":{"3":{},"21":{},"173":{},"182":{}},"component":{}}],["exclus",{"_index":1812,"title":{},"name":{},"text":{"26":{},"37":{},"187":{},"198":{}},"component":{}}],["exec",{"_index":2264,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["execut",{"_index":124,"title":{"83-1":{},"145-1":{}},"name":{},"text":{"3":{},"5":{},"8":{},"14":{},"15":{},"26":{},"27":{},"29":{},"30":{},"31":{},"34":{},"36":{},"37":{},"46":{},"47":{},"48":{},"50":{},"56":{},"59":{},"62":{},"81":{},"82":{},"83":{},"87":{},"88":{},"91":{},"92":{},"101":{},"103":{},"106":{},"111":{},"119":{},"121":{},"123":{},"125":{},"144":{},"145":{},"148":{},"149":{},"152":{},"153":{},"159":{},"162":{},"173":{},"175":{},"178":{},"187":{},"188":{},"190":{},"191":{},"192":{},"193":{},"195":{},"197":{},"198":{},"202":{},"204":{}},"component":{}}],["exeut",{"_index":2453,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["exist",{"_index":600,"title":{},"name":{},"text":{"6":{},"12":{},"15":{},"17":{},"21":{},"26":{},"27":{},"30":{},"37":{},"40":{},"71":{},"78":{},"88":{},"93":{},"103":{},"106":{},"110":{},"113":{},"134":{},"141":{},"149":{},"165":{},"175":{},"176":{},"182":{},"187":{},"188":{},"198":{},"204":{}},"component":{}}],["expand",{"_index":280,"title":{},"name":{},"text":{"3":{},"77":{},"140":{},"173":{}},"component":{}}],["expans",{"_index":3832,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["expect",{"_index":284,"title":{},"name":{},"text":{"3":{},"6":{},"9":{},"21":{},"29":{},"39":{},"55":{},"66":{},"78":{},"82":{},"83":{},"86":{},"103":{},"129":{},"141":{},"145":{},"146":{},"158":{},"173":{},"176":{},"179":{},"182":{},"190":{},"200":{},"204":{}},"component":{}}],["expedit",{"_index":3056,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["expens",{"_index":1643,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["experi",{"_index":611,"title":{},"name":{},"text":{"7":{},"21":{},"83":{},"145":{},"177":{},"182":{}},"component":{}}],["experienc",{"_index":976,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["experiment",{"_index":1713,"title":{},"name":{},"text":{"21":{},"41":{},"82":{},"173":{},"182":{}},"component":{}}],["expert",{"_index":4013,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["expir",{"_index":2864,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["expires\":nul",{"_index":2854,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["expiri",{"_index":3329,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["explain",{"_index":296,"title":{},"name":{},"text":{"3":{},"6":{},"36":{},"65":{},"87":{},"103":{},"127":{},"148":{},"173":{},"176":{},"197":{},"204":{}},"component":{}}],["explan",{"_index":944,"title":{},"name":{},"text":{"9":{},"34":{},"36":{},"37":{},"82":{},"83":{},"103":{},"145":{},"179":{},"195":{},"197":{},"198":{},"204":{}},"component":{}}],["explicit",{"_index":1333,"title":{},"name":{},"text":{"15":{},"46":{},"106":{},"119":{}},"component":{}}],["explicitli",{"_index":66,"title":{},"name":{},"text":{"2":{},"41":{},"46":{},"47":{},"62":{},"75":{},"78":{},"103":{},"115":{},"119":{},"121":{},"125":{},"138":{},"141":{},"172":{}},"component":{}}],["exploit",{"_index":1635,"title":{},"name":{},"text":{"17":{},"83":{},"113":{},"145":{}},"component":{}}],["explor",{"_index":2391,"title":{},"name":{},"text":{"43":{}},"component":{}}],["export",{"_index":1301,"title":{},"name":{},"text":{"15":{},"36":{},"55":{},"106":{},"158":{},"197":{}},"component":{}}],["expos",{"_index":1167,"title":{},"name":{},"text":{"13":{},"112":{}},"component":{}}],["express",{"_index":2999,"title":{},"name":{},"text":{"63":{},"75":{},"101":{},"103":{},"126":{},"138":{},"202":{},"204":{}},"component":{}}],["extend",{"_index":1248,"title":{"17-4":{},"113-4":{}},"name":{},"text":{"15":{},"17":{},"30":{},"31":{},"32":{},"39":{},"40":{},"77":{},"82":{},"83":{},"98":{},"101":{},"106":{},"113":{},"140":{},"145":{},"169":{},"200":{},"202":{}},"component":{}}],["extens",{"_index":2405,"title":{},"name":{},"text":{"43":{},"78":{},"141":{}},"component":{}}],["extent",{"_index":855,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["extern",{"_index":1471,"title":{},"name":{},"text":{"15":{},"21":{},"25":{},"37":{},"41":{},"75":{},"78":{},"83":{},"91":{},"106":{},"115":{},"138":{},"141":{},"145":{},"153":{},"182":{},"186":{},"198":{}},"component":{}}],["extra",{"_index":2776,"title":{},"name":{},"text":{"55":{},"173":{}},"component":{}}],["extract",{"_index":1151,"title":{},"name":{},"text":{"12":{},"37":{},"83":{},"105":{},"110":{},"145":{},"198":{},"206":{}},"component":{}}],["extras/tree/develop/plc4j/examples/hello",{"_index":2741,"title":{},"name":{},"text":{"54":{}},"component":{}}],["extrem",{"_index":1160,"title":{},"name":{},"text":{"12":{},"17":{},"41":{},"48":{},"50":{},"83":{},"110":{},"113":{},"115":{},"123":{},"145":{},"173":{}},"component":{}}],["ey",{"_index":2678,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["f",{"_index":1555,"title":{},"name":{},"text":{"15":{},"37":{},"83":{},"106":{},"145":{},"198":{}},"component":{}}],["f2a8624db28a",{"_index":3377,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["f2a8624db28a;a=value;r",{"_index":3379,"title":{},"name":{},"text":{"78":{}},"component":{}}],["f2a8624db28a;r",{"_index":3378,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["f\\n",{"_index":2491,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["facad",{"_index":3006,"title":{},"name":{},"text":{"65":{},"93":{},"127":{},"165":{}},"component":{}}],["face",{"_index":950,"title":{},"name":{},"text":{"9":{},"12":{},"49":{},"110":{},"122":{},"179":{}},"component":{}}],["fachkonferenz",{"_index":383,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["facilit",{"_index":3680,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["fact",{"_index":1660,"title":{},"name":{},"text":{"17":{},"47":{},"48":{},"50":{},"83":{},"113":{},"121":{},"123":{},"145":{}},"component":{}}],["factor",{"_index":1639,"title":{},"name":{},"text":{"17":{},"55":{},"63":{},"75":{},"83":{},"95":{},"113":{},"126":{},"138":{},"145":{},"158":{},"166":{}},"component":{}}],["factori",{"_index":1193,"title":{},"name":{},"text":{"13":{},"112":{}},"component":{}}],["fail",{"_index":658,"title":{},"name":{},"text":{"8":{},"15":{},"17":{},"21":{},"26":{},"30":{},"31":{},"32":{},"36":{},"37":{},"55":{},"66":{},"82":{},"83":{},"87":{},"103":{},"106":{},"113":{},"129":{},"145":{},"148":{},"158":{},"178":{},"182":{},"187":{},"193":{},"197":{},"198":{}},"component":{}}],["failsafearglin",{"_index":1928,"title":{},"name":{},"text":{"29":{},"190":{}},"component":{}}],["failur",{"_index":1139,"title":{},"name":{},"text":{"12":{},"17":{},"39":{},"55":{},"56":{},"110":{},"113":{},"158":{},"159":{},"173":{},"200":{}},"component":{}}],["fairli",{"_index":2370,"title":{},"name":{},"text":{"41":{},"43":{}},"component":{}}],["faith",{"_index":899,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["fall",{"_index":3629,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["fallo",{"_index":3579,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["fals",{"_index":2291,"title":{},"name":{},"text":{"39":{},"49":{},"54":{},"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"95":{},"122":{},"123":{},"124":{},"125":{},"126":{},"128":{},"133":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"157":{},"166":{},"193":{},"200":{}},"component":{}}],["famili",{"_index":3753,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["familiar",{"_index":2337,"title":{},"name":{},"text":{"41":{},"46":{},"115":{},"119":{}},"component":{}}],["faq",{"_index":564,"title":{},"name":{},"text":{"6":{},"176":{}},"component":{}}],["far",{"_index":260,"title":{},"name":{},"text":{"3":{},"9":{},"78":{},"83":{},"145":{},"173":{},"179":{}},"component":{}}],["fashion",{"_index":2573,"title":{},"name":{},"text":{"47":{},"50":{},"72":{},"121":{},"123":{},"135":{}},"component":{}}],["fast",{"_index":3975,"title":{},"name":{},"text":{"86":{},"146":{}},"component":{}}],["faster",{"_index":927,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["fatal",{"_index":1973,"title":{},"name":{},"text":{"30":{}},"component":{}}],["fault",{"_index":3763,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["favor",{"_index":2143,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["favorit",{"_index":2955,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["favourit",{"_index":1084,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["fd",{"_index":3038,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["feat(plc4go/bacnet",{"_index":470,"title":{},"name":{},"text":{"5":{},"175":{}},"component":{}}],["featur",{"_index":467,"title":{"15-3":{},"15-8":{},"15-14":{},"15-18":{},"15-22":{},"15-26":{},"15-30":{},"15-34":{},"15-39":{},"15-43":{},"74-1":{},"106-3":{},"106-8":{},"106-14":{},"106-18":{},"106-22":{},"106-26":{},"106-30":{},"106-34":{},"106-39":{},"106-43":{},"137-2":{}},"name":{},"text":{"5":{},"9":{},"15":{},"16":{},"22":{},"34":{},"36":{},"41":{},"47":{},"48":{},"50":{},"78":{},"83":{},"106":{},"107":{},"121":{},"123":{},"141":{},"145":{},"175":{},"179":{},"183":{},"195":{},"197":{}},"component":{}}],["feature.xml",{"_index":1486,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["februari",{"_index":356,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["feel",{"_index":529,"title":{},"name":{},"text":{"5":{},"27":{},"30":{},"175":{},"188":{}},"component":{}}],["feinauer",{"_index":1026,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["fellow",{"_index":2176,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["fetch",{"_index":520,"title":{},"name":{},"text":{"5":{},"7":{},"16":{},"36":{},"82":{},"83":{},"90":{},"107":{},"145":{},"151":{},"175":{},"177":{},"197":{}},"component":{}}],["few",{"_index":926,"title":{},"name":{},"text":{"9":{},"29":{},"32":{},"34":{},"36":{},"43":{},"54":{},"56":{},"66":{},"83":{},"91":{},"129":{},"145":{},"153":{},"157":{},"159":{},"179":{},"190":{},"195":{},"197":{}},"component":{}}],["fiction",{"_index":1725,"title":{},"name":{},"text":{"21":{}},"component":{}}],["field",{"_index":981,"title":{"103-3":{},"103-4":{},"103-5":{},"103-6":{},"103-7":{},"103-8":{},"103-9":{},"103-10":{},"103-11":{},"103-12":{},"103-13":{},"103-14":{},"103-15":{},"103-16":{},"103-17":{},"103-18":{},"103-19":{},"103-20":{},"204-3":{},"204-4":{},"204-5":{},"204-6":{},"204-7":{},"204-8":{},"204-9":{},"204-10":{},"204-11":{},"204-12":{},"204-13":{},"204-14":{},"204-15":{},"204-16":{}},"name":{},"text":{"10":{},"15":{},"26":{},"41":{},"43":{},"46":{},"47":{},"48":{},"50":{},"54":{},"55":{},"56":{},"66":{},"72":{},"76":{},"77":{},"78":{},"80":{},"81":{},"83":{},"84":{},"85":{},"90":{},"91":{},"92":{},"103":{},"104":{},"106":{},"119":{},"121":{},"123":{},"129":{},"135":{},"139":{},"140":{},"141":{},"143":{},"144":{},"145":{},"147":{},"152":{},"153":{},"157":{},"158":{},"159":{},"180":{},"187":{},"204":{},"205":{}},"component":{}}],["field1",{"_index":2490,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["field2",{"_index":2493,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["fieldaddress",{"_index":4061,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["fieldbu",{"_index":2349,"title":{},"name":{},"text":{"41":{},"62":{},"83":{},"115":{},"125":{},"145":{}},"component":{}}],["fieldnam",{"_index":2524,"title":{},"name":{},"text":{"46":{},"50":{},"119":{},"123":{}},"component":{}}],["fieldqueri",{"_index":4091,"title":{},"name":{},"text":{"92":{},"152":{}},"component":{}}],["figur",{"_index":2676,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["file",{"_index":244,"title":{"36-16":{},"59-2":{},"91-6":{},"153-6":{},"162-2":{},"197-16":{}},"name":{},"text":{"3":{},"5":{},"9":{},"10":{},"15":{},"21":{},"26":{},"27":{},"30":{},"34":{},"36":{},"37":{},"39":{},"40":{},"43":{},"46":{},"49":{},"50":{},"55":{},"56":{},"59":{},"63":{},"75":{},"77":{},"78":{},"81":{},"86":{},"91":{},"95":{},"101":{},"103":{},"106":{},"119":{},"122":{},"123":{},"126":{},"138":{},"140":{},"141":{},"144":{},"146":{},"153":{},"158":{},"159":{},"162":{},"166":{},"173":{},"175":{},"179":{},"180":{},"182":{},"187":{},"188":{},"193":{},"195":{},"197":{},"198":{},"200":{},"202":{}},"component":{}}],["file\":\"test.sink.txt",{"_index":2811,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["file:/users/christofer.dutz/projects/apache/plc4x/target/jqassistant/stor",{"_index":701,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["filehash",{"_index":2258,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["filesystem",{"_index":3321,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["fileutils.readfiletostring(outputfil",{"_index":4182,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["fileutils.writestringtofil",{"_index":4180,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["fill",{"_index":1550,"title":{},"name":{},"text":{"15":{},"43":{},"90":{},"106":{},"179":{}},"component":{}}],["filter",{"_index":2998,"title":{},"name":{},"text":{"63":{},"75":{},"78":{},"81":{},"126":{},"138":{},"144":{}},"component":{}}],["filtered/plc4x",{"_index":2227,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["final",{"_index":938,"title":{},"name":{},"text":{"9":{},"34":{},"36":{},"39":{},"46":{},"47":{},"82":{},"83":{},"101":{},"119":{},"121":{},"145":{},"179":{},"195":{},"197":{},"200":{},"202":{}},"component":{}}],["find",{"_index":286,"title":{},"name":{},"text":{"3":{},"21":{},"23":{},"27":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"46":{},"49":{},"76":{},"78":{},"82":{},"83":{},"86":{},"103":{},"119":{},"122":{},"139":{},"141":{},"145":{},"146":{},"173":{},"182":{},"184":{},"188":{},"193":{},"195":{},"197":{},"198":{}},"component":{}}],["fine",{"_index":522,"title":{},"name":{},"text":{"5":{},"34":{},"36":{},"41":{},"47":{},"50":{},"77":{},"82":{},"83":{},"86":{},"103":{},"115":{},"121":{},"123":{},"145":{},"146":{},"175":{},"195":{},"197":{},"204":{}},"component":{}}],["finish",{"_index":494,"title":{},"name":{},"text":{"5":{},"8":{},"31":{},"34":{},"36":{},"43":{},"46":{},"56":{},"91":{},"119":{},"153":{},"159":{},"175":{},"178":{},"195":{},"197":{}},"component":{}}],["finsh",{"_index":2456,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["firmata",{"_index":1478,"title":{"71":{},"134":{}},"name":{"71":{},"134":{}},"text":{"15":{},"36":{},"71":{},"74":{},"106":{},"134":{},"137":{},"197":{}},"component":{}}],["firmwar",{"_index":3648,"title":{},"name":{},"text":{"83":{},"85":{},"145":{}},"component":{}}],["first",{"_index":407,"title":{},"name":{},"text":{"4":{},"5":{},"7":{},"10":{},"15":{},"17":{},"21":{},"26":{},"32":{},"34":{},"36":{},"37":{},"46":{},"47":{},"48":{},"50":{},"71":{},"76":{},"77":{},"83":{},"87":{},"90":{},"91":{},"92":{},"101":{},"103":{},"106":{},"113":{},"119":{},"121":{},"123":{},"134":{},"139":{},"140":{},"145":{},"148":{},"151":{},"152":{},"153":{},"174":{},"175":{},"177":{},"180":{},"182":{},"187":{},"195":{},"197":{},"198":{},"202":{},"204":{}},"component":{}}],["firstli",{"_index":1841,"title":{},"name":{},"text":{"26":{}},"component":{}}],["firt",{"_index":3789,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["fit",{"_index":2189,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["fix",{"_index":9,"title":{"2-3":{},"15-5":{},"15-9":{},"15-12":{},"15-16":{},"15-20":{},"15-24":{},"15-28":{},"15-32":{},"15-36":{},"15-41":{},"15-45":{},"106-5":{},"106-9":{},"106-12":{},"106-16":{},"106-20":{},"106-24":{},"106-28":{},"106-32":{},"106-36":{},"106-41":{},"106-45":{},"172-3":{}},"name":{},"text":{"2":{},"7":{},"15":{},"20":{},"29":{},"34":{},"36":{},"49":{},"63":{},"75":{},"83":{},"98":{},"103":{},"106":{},"114":{},"122":{},"126":{},"138":{},"145":{},"169":{},"172":{},"177":{},"190":{},"195":{},"197":{},"204":{}},"component":{}}],["flag",{"_index":1554,"title":{},"name":{},"text":{"15":{},"98":{},"103":{},"106":{},"169":{},"204":{}},"component":{}}],["flags_mark",{"_index":3518,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["flavor",{"_index":1733,"title":{},"name":{},"text":{"21":{},"66":{},"90":{},"129":{},"182":{}},"component":{}}],["flavornam",{"_index":4176,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["flex",{"_index":195,"title":{},"name":{},"text":{"3":{},"10":{},"173":{},"180":{}},"component":{}}],["flexibl",{"_index":1130,"title":{"17-2":{},"113-2":{}},"name":{},"text":{"12":{},"17":{},"82":{},"83":{},"93":{},"110":{},"113":{},"145":{},"165":{}},"component":{}}],["flexibu",{"_index":341,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["fli",{"_index":2098,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["float",{"_index":1288,"title":{},"name":{},"text":{"15":{},"54":{},"63":{},"70":{},"75":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"103":{},"106":{},"126":{},"133":{},"138":{},"139":{},"140":{},"141":{},"144":{},"145":{},"147":{},"157":{},"204":{}},"component":{}}],["floor",{"_index":1123,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["flow",{"_index":2900,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["flux",{"_index":2484,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["fm",{"_index":3740,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["fmt.printf(\"\\n\\nresult",{"_index":2489,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["fmt.printf(\"couldn't",{"_index":2459,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["fmt.printf(\"error",{"_index":2441,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["fmt.printf(\"got",{"_index":2531,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["fmt.printf(\"thi",{"_index":2463,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["focu",{"_index":1073,"title":{},"name":{},"text":{"10":{},"15":{},"21":{},"106":{},"180":{}},"component":{}}],["focus",{"_index":1037,"title":{},"name":{},"text":{"10":{},"43":{},"180":{}},"component":{}}],["folder",{"_index":1975,"title":{},"name":{},"text":{"30":{}},"component":{}}],["folk",{"_index":3966,"title":{},"name":{},"text":{"86":{},"146":{}},"component":{}}],["follow",{"_index":210,"title":{},"name":{},"text":{"3":{},"5":{},"6":{},"8":{},"9":{},"12":{},"14":{},"15":{},"22":{},"26":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"39":{},"41":{},"46":{},"47":{},"48":{},"49":{},"50":{},"55":{},"59":{},"71":{},"74":{},"75":{},"76":{},"77":{},"78":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"91":{},"92":{},"93":{},"102":{},"103":{},"106":{},"110":{},"111":{},"115":{},"119":{},"121":{},"122":{},"123":{},"134":{},"137":{},"138":{},"139":{},"140":{},"141":{},"143":{},"144":{},"145":{},"147":{},"151":{},"152":{},"153":{},"158":{},"162":{},"165":{},"173":{},"175":{},"176":{},"178":{},"179":{},"183":{},"187":{},"190":{},"191":{},"192":{},"195":{},"197":{},"198":{},"200":{},"201":{},"203":{},"204":{}},"component":{}}],["fontawesom",{"_index":1871,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["food",{"_index":998,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["for(int",{"_index":2586,"title":{},"name":{},"text":{"47":{},"50":{},"88":{},"121":{},"123":{},"149":{}},"component":{}}],["forbidden",{"_index":1793,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["forc",{"_index":746,"title":{},"name":{},"text":{"8":{},"9":{},"66":{},"70":{},"76":{},"90":{},"129":{},"178":{},"179":{}},"component":{}}],["fork",{"_index":439,"title":{"5-4":{},"175-4":{}},"name":{},"text":{"5":{},"175":{}},"component":{}}],["form",{"_index":209,"title":{"5-1":{},"175-1":{}},"name":{},"text":{"3":{},"5":{},"6":{},"9":{},"17":{},"21":{},"27":{},"34":{},"36":{},"37":{},"41":{},"46":{},"47":{},"54":{},"55":{},"65":{},"83":{},"91":{},"101":{},"103":{},"113":{},"115":{},"119":{},"121":{},"127":{},"145":{},"153":{},"157":{},"158":{},"173":{},"175":{},"176":{},"179":{},"182":{},"188":{},"195":{},"197":{},"198":{},"202":{},"204":{}},"component":{}}],["formal",{"_index":4482,"title":{},"name":{},"text":{"198":{}},"component":{}}],["format",{"_index":749,"title":{"103":{},"204":{},"66-5":{},"70-3":{},"71-3":{},"72-5":{},"75-5":{},"76-3":{},"76-5":{},"77-11":{},"77-13":{},"78-7":{},"80-4":{},"80-6":{},"81-4":{},"82-7":{},"82-8":{},"83-10":{},"83-11":{},"84-2":{},"84-4":{},"85-3":{},"85-5":{},"129-5":{},"133-3":{},"134-3":{},"135-5":{},"138-5":{},"139-3":{},"139-5":{},"140-11":{},"140-13":{},"141-7":{},"143-4":{},"143-6":{},"144-4":{},"145-10":{},"145-11":{},"147-2":{},"147-4":{}},"name":{},"text":{"8":{},"9":{},"15":{},"21":{},"26":{},"34":{},"36":{},"37":{},"41":{},"43":{},"55":{},"62":{},"66":{},"70":{},"71":{},"72":{},"76":{},"77":{},"78":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"101":{},"103":{},"106":{},"115":{},"125":{},"129":{},"133":{},"134":{},"135":{},"139":{},"140":{},"141":{},"143":{},"144":{},"145":{},"147":{},"158":{},"178":{},"179":{},"182":{},"187":{},"195":{},"197":{},"198":{},"202":{},"204":{}},"component":{}}],["formatt",{"_index":4157,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["formatter.formatsourceandfiximport",{"_index":4181,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["formatterexcept",{"_index":4184,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["forward",{"_index":22,"title":{},"name":{},"text":{"2":{},"3":{},"4":{},"5":{},"21":{},"65":{},"92":{},"127":{},"152":{},"172":{},"173":{},"174":{},"175":{},"182":{}},"component":{}}],["fossa",{"_index":426,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["found",{"_index":153,"title":{},"name":{},"text":{"3":{},"4":{},"8":{},"9":{},"14":{},"15":{},"26":{},"32":{},"34":{},"36":{},"37":{},"54":{},"56":{},"71":{},"76":{},"91":{},"92":{},"103":{},"106":{},"111":{},"134":{},"139":{},"152":{},"153":{},"157":{},"159":{},"173":{},"174":{},"178":{},"179":{},"193":{},"195":{},"197":{},"198":{},"204":{}},"component":{}}],["foundat",{"_index":563,"title":{},"name":{},"text":{"6":{},"9":{},"10":{},"14":{},"78":{},"101":{},"111":{},"141":{},"176":{},"179":{},"180":{},"202":{}},"component":{}}],["founder",{"_index":1027,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["four",{"_index":1763,"title":{},"name":{},"text":{"21":{},"83":{},"145":{}},"component":{}}],["fragment",{"_index":2695,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["frame",{"_index":2346,"title":{},"name":{},"text":{"41":{},"65":{},"66":{},"72":{},"93":{},"98":{},"102":{},"115":{},"127":{},"129":{},"135":{},"165":{},"169":{},"203":{}},"component":{}}],["framedata",{"_index":3019,"title":{},"name":{},"text":{"65":{},"127":{}},"component":{}}],["framework",{"_index":1627,"title":{},"name":{},"text":{"17":{},"21":{},"36":{},"39":{},"41":{},"78":{},"92":{},"113":{},"115":{},"141":{},"152":{},"182":{},"197":{},"200":{}},"component":{}}],["franca",{"_index":3638,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["frankfurt",{"_index":343,"title":{},"name":{},"text":{"4":{},"10":{},"174":{},"180":{}},"component":{}}],["frecuencia",{"_index":3571,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["free",{"_index":530,"title":{},"name":{},"text":{"5":{},"11":{},"14":{},"17":{},"27":{},"30":{},"111":{},"113":{},"175":{},"181":{},"188":{}},"component":{}}],["freed",{"_index":1648,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["freedom",{"_index":3836,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["freeli",{"_index":1650,"title":{},"name":{},"text":{"17":{},"83":{},"113":{},"145":{}},"component":{}}],["freemark",{"_index":1688,"title":{"101":{},"202":{}},"name":{"101":{},"202":{}},"text":{"21":{},"101":{},"182":{},"202":{}},"component":{}}],["freemarker.template.configur",{"_index":4144,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["freemarker.template.templ",{"_index":4145,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["freemarkerconfigur",{"_index":4161,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["freemarkerconfiguration.gettemplate(\"templates/java/data",{"_index":4173,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["freemarkerconfiguration.gettemplate(\"templates/java/enum",{"_index":4171,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["freemarkerconfiguration.gettemplate(\"templates/java/io",{"_index":4168,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["freemarkerconfiguration.gettemplate(\"templates/java/pojo",{"_index":4166,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["freemarkerlanguageoutput",{"_index":4132,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["freemarkerlanguagetemplatehelp",{"_index":4137,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["freez",{"_index":2056,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["frequenc",{"_index":1564,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["fresh",{"_index":1992,"title":{},"name":{},"text":{"31":{}},"component":{}}],["friendli",{"_index":455,"title":{},"name":{},"text":{"5":{},"175":{}},"component":{}}],["front",{"_index":2237,"title":{},"name":{},"text":{"36":{},"83":{},"145":{},"197":{}},"component":{}}],["fssl",{"_index":1990,"title":{},"name":{},"text":{"31":{},"192":{}},"component":{}}],["fulfil",{"_index":1225,"title":{},"name":{},"text":{"14":{},"34":{},"36":{},"111":{},"195":{},"197":{}},"component":{}}],["full",{"_index":481,"title":{},"name":{},"text":{"5":{},"7":{},"9":{},"17":{},"34":{},"36":{},"37":{},"39":{},"41":{},"43":{},"62":{},"65":{},"66":{},"71":{},"78":{},"82":{},"83":{},"84":{},"102":{},"103":{},"113":{},"115":{},"125":{},"127":{},"129":{},"134":{},"141":{},"145":{},"147":{},"175":{},"177":{},"179":{},"183":{},"195":{},"197":{},"198":{},"200":{},"203":{},"204":{}},"component":{}}],["fulli",{"_index":254,"title":{},"name":{},"text":{"3":{},"15":{},"21":{},"41":{},"47":{},"48":{},"50":{},"74":{},"75":{},"93":{},"106":{},"115":{},"121":{},"123":{},"137":{},"138":{},"165":{},"173":{},"182":{}},"component":{}}],["func",{"_index":2422,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["function",{"_index":1254,"title":{},"name":{},"text":{"15":{},"17":{},"26":{},"46":{},"47":{},"48":{},"50":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"92":{},"106":{},"113":{},"119":{},"121":{},"123":{},"140":{},"141":{},"144":{},"145":{},"147":{},"152":{},"173":{},"187":{}},"component":{}}],["functionalinterfac",{"_index":4079,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["functions/librari",{"_index":3661,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["fundament",{"_index":1143,"title":{},"name":{},"text":{"12":{},"83":{},"110":{},"145":{}},"component":{}}],["further",{"_index":1506,"title":{},"name":{},"text":{"15":{},"21":{},"56":{},"66":{},"78":{},"82":{},"83":{},"92":{},"102":{},"106":{},"129":{},"145":{},"159":{},"182":{},"203":{}},"component":{}}],["futher",{"_index":4432,"title":{},"name":{},"text":{"152":{}},"component":{}}],["futur",{"_index":428,"title":{},"name":{},"text":{"4":{},"17":{},"46":{},"82":{},"83":{},"91":{},"113":{},"119":{},"145":{},"153":{},"173":{},"174":{},"175":{},"183":{}},"component":{}}],["fxr",{"_index":1980,"title":{},"name":{},"text":{"30":{}},"component":{}}],["für",{"_index":421,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["g",{"_index":3383,"title":{},"name":{},"text":{"78":{},"82":{},"83":{},"141":{},"145":{}},"component":{}}],["g120",{"_index":3573,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["g120c",{"_index":3667,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["gain",{"_index":1115,"title":{},"name":{},"text":{"12":{},"15":{},"106":{},"110":{}},"component":{}}],["gap",{"_index":2389,"title":{},"name":{},"text":{"43":{}},"component":{}}],["garcía",{"_index":983,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["gateway",{"_index":1112,"title":{},"name":{},"text":{"12":{},"59":{},"75":{},"110":{},"138":{},"162":{}},"component":{}}],["gather",{"_index":646,"title":{},"name":{},"text":{"8":{},"12":{},"110":{},"178":{}},"component":{}}],["gb",{"_index":395,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["gcc",{"_index":1932,"title":{"30-5":{},"31-5":{},"32-5":{},"191-3":{},"192-3":{},"193-3":{}},"name":{},"text":{"30":{},"31":{},"32":{},"191":{},"192":{},"193":{}},"component":{}}],["gener",{"_index":192,"title":{"21":{},"27":{},"41":{},"72":{},"115":{},"135":{},"182":{},"188":{},"34-1":{},"76-5":{},"77-13":{},"80-6":{},"82-8":{},"83-11":{},"84-4":{},"85-5":{},"139-5":{},"140-13":{},"143-6":{},"145-11":{},"147-4":{},"195-1":{}},"name":{"41":{},"115":{}},"text":{"3":{},"4":{},"5":{},"7":{},"8":{},"9":{},"14":{},"15":{},"17":{},"21":{},"22":{},"26":{},"27":{},"28":{},"29":{},"34":{},"36":{},"37":{},"39":{},"40":{},"41":{},"43":{},"46":{},"47":{},"48":{},"49":{},"50":{},"54":{},"55":{},"56":{},"72":{},"76":{},"77":{},"78":{},"82":{},"83":{},"85":{},"91":{},"92":{},"101":{},"103":{},"106":{},"111":{},"113":{},"115":{},"119":{},"121":{},"122":{},"123":{},"135":{},"139":{},"140":{},"141":{},"145":{},"152":{},"153":{},"157":{},"158":{},"159":{},"173":{},"174":{},"175":{},"177":{},"178":{},"179":{},"182":{},"183":{},"187":{},"188":{},"189":{},"193":{},"195":{},"197":{},"198":{},"200":{},"201":{},"202":{},"204":{}},"component":{}}],["generate(fil",{"_index":1772,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["generation/target",{"_index":2118,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["generation/target/checkout/cod",{"_index":2117,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["generation/{0.13.0",{"_index":2086,"title":{},"name":{},"text":{"34":{}},"component":{}}],["generation/{cod",{"_index":2065,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["generation/{minor",{"_index":2063,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["generation/{releas",{"_index":2085,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["generationexcept",{"_index":1754,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["genericcan",{"_index":3176,"title":{},"name":{"72":{},"135":{}},"text":{"72":{},"135":{}},"component":{}}],["genrat",{"_index":1709,"title":{},"name":{},"text":{"21":{}},"component":{}}],["geograph",{"_index":3926,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["ger",{"_index":332,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["german",{"_index":1186,"title":{},"name":{},"text":{"13":{},"62":{},"83":{},"112":{},"125":{},"145":{}},"component":{}}],["germani",{"_index":975,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["get",{"_index":606,"title":{"42":{},"44":{},"45":{},"46":{},"47":{},"48":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"7-1":{},"7-4":{},"86-1":{},"91-1":{},"146-1":{},"153-1":{},"177-1":{},"177-4":{}},"name":{},"text":{"7":{},"30":{},"42":{},"47":{},"48":{},"50":{},"56":{},"75":{},"88":{},"116":{},"121":{},"123":{},"138":{},"149":{},"159":{},"177":{},"191":{}},"component":{}}],["getallattribut",{"_index":4394,"title":{},"name":{},"text":{"105":{},"206":{}},"component":{}}],["getcomplextypetemplates(configur",{"_index":4163,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["getconnection(\"s7://192.168.1.51?remot",{"_index":3713,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["getdataiotemplates(configur",{"_index":4172,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["getenumtypetemplates(configur",{"_index":4169,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["gethelp",{"_index":4187,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["gethelper(typedefinit",{"_index":4174,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["getnam",{"_index":1753,"title":{},"name":{},"text":{"21":{},"40":{},"101":{},"182":{},"202":{}},"component":{}}],["getnumberofvalu",{"_index":2709,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["getpressur",{"_index":4025,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["getprotocolcod",{"_index":1267,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["getresponsecod",{"_index":2708,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["getspectemplates(configur",{"_index":4160,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["getsubscriptionhandle(\"mymod",{"_index":3724,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["getsubscriptionhandle(\"mysi",{"_index":3778,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["getsubscriptionhandle(\"myusr",{"_index":3785,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["getter",{"_index":2712,"title":{},"name":{},"text":{"50":{},"90":{},"123":{}},"component":{}}],["gettypecontext",{"_index":1756,"title":{},"name":{},"text":{"21":{}},"component":{}}],["gettypedefinit",{"_index":4442,"title":{},"name":{},"text":{"182":{}},"component":{}}],["getvalu",{"_index":2495,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["getvers",{"_index":1757,"title":{},"name":{},"text":{"21":{}},"component":{}}],["get{field",{"_index":4038,"title":{},"name":{},"text":{"90":{}},"component":{}}],["git",{"_index":117,"title":{"30-1":{},"31-1":{},"32-1":{},"191-1":{},"192-1":{},"193-1":{}},"name":{},"text":{"3":{},"5":{},"9":{},"27":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"173":{},"175":{},"179":{},"188":{},"190":{},"191":{},"192":{},"193":{},"195":{},"197":{}},"component":{}}],["gitbox",{"_index":782,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["github",{"_index":475,"title":{"36-18":{}},"name":{},"text":{"5":{},"9":{},"12":{},"14":{},"18":{},"22":{},"24":{},"34":{},"36":{},"48":{},"55":{},"110":{},"111":{},"158":{},"175":{},"179":{}},"component":{}}],["github.com/apache/plc4x/plc4go",{"_index":2425,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["gitpubsub",{"_index":1901,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["give",{"_index":594,"title":{},"name":{},"text":{"6":{},"9":{},"12":{},"29":{},"37":{},"41":{},"47":{},"48":{},"50":{},"56":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"87":{},"91":{},"110":{},"115":{},"121":{},"123":{},"124":{},"125":{},"126":{},"128":{},"129":{},"133":{},"136":{},"139":{},"140":{},"141":{},"142":{},"143":{},"145":{},"148":{},"153":{},"159":{},"176":{},"179":{},"190":{},"198":{}},"component":{}}],["given",{"_index":603,"title":{},"name":{},"text":{"6":{},"15":{},"21":{},"36":{},"39":{},"41":{},"46":{},"47":{},"48":{},"50":{},"54":{},"59":{},"65":{},"72":{},"75":{},"77":{},"80":{},"81":{},"82":{},"83":{},"84":{},"91":{},"103":{},"106":{},"115":{},"119":{},"121":{},"123":{},"127":{},"135":{},"138":{},"140":{},"143":{},"144":{},"145":{},"147":{},"151":{},"153":{},"157":{},"162":{},"176":{},"182":{},"197":{},"200":{},"204":{}},"component":{}}],["gladli",{"_index":3649,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["global",{"_index":2002,"title":{},"name":{},"text":{"31":{},"48":{},"101":{},"192":{},"202":{}},"component":{}}],["glossari",{"_index":569,"title":{},"name":{},"text":{"6":{},"176":{}},"component":{}}],["gmbh",{"_index":1008,"title":{},"name":{},"text":{"10":{},"12":{},"14":{},"110":{},"111":{},"180":{}},"component":{}}],["go",{"_index":215,"title":{"46":{},"119":{},"36-13":{},"197-13":{}},"name":{},"text":{"3":{},"5":{},"16":{},"29":{},"34":{},"36":{},"42":{},"43":{},"46":{},"74":{},"82":{},"83":{},"103":{},"107":{},"116":{},"119":{},"137":{},"145":{},"173":{},"175":{},"190":{},"195":{},"197":{},"204":{}},"component":{}}],["go(lang",{"_index":1379,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["go,with",{"_index":241,"title":{},"name":{},"text":{"3":{},"36":{},"173":{},"197":{}},"component":{}}],["go.mod",{"_index":2418,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["go/golang",{"_index":2379,"title":{"42-1":{},"116-1":{}},"name":{},"text":{},"component":{}}],["go/pkg/mod/github.com/apache/plc4/plc4go@v0.0.0",{"_index":2426,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["goal",{"_index":585,"title":{},"name":{},"text":{"6":{},"12":{},"17":{},"34":{},"36":{},"47":{},"48":{},"50":{},"78":{},"82":{},"90":{},"110":{},"113":{},"121":{},"123":{},"141":{},"151":{},"176":{},"195":{},"197":{}},"component":{}}],["goe",{"_index":345,"title":{"34-5":{},"36-8":{},"195-5":{},"197-8":{}},"name":{},"text":{"4":{},"21":{},"34":{},"36":{},"103":{},"174":{},"182":{},"195":{},"197":{}},"component":{}}],["golang",{"_index":468,"title":{},"name":{},"text":{"5":{},"175":{}},"component":{}}],["good",{"_index":177,"title":{},"name":{},"text":{"3":{},"9":{},"31":{},"34":{},"36":{},"46":{},"47":{},"54":{},"84":{},"86":{},"119":{},"121":{},"146":{},"147":{},"157":{},"173":{},"179":{},"192":{},"195":{},"197":{}},"component":{}}],["goodi",{"_index":1879,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["googl",{"_index":2245,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["govern",{"_index":4196,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["go’",{"_index":2419,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["gpg",{"_index":2174,"title":{},"name":{},"text":{"36":{},"37":{},"197":{},"198":{}},"component":{}}],["gpg_tty=$(tti",{"_index":2193,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["gpl",{"_index":1666,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["grace",{"_index":2772,"title":{"55-11":{},"158-11":{}},"name":{},"text":{"55":{},"158":{}},"component":{}}],["gracefulli",{"_index":1425,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["grade",{"_index":1580,"title":{},"name":{},"text":{"16":{},"107":{}},"component":{}}],["gradl",{"_index":91,"title":{"3-10":{},"173-11":{}},"name":{},"text":{"3":{},"173":{}},"component":{}}],["graduat",{"_index":763,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["grain",{"_index":2353,"title":{},"name":{},"text":{"41":{},"115":{}},"component":{}}],["grant",{"_index":916,"title":{},"name":{},"text":{"9":{},"30":{},"179":{},"191":{}},"component":{}}],["graph",{"_index":647,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["graphic",{"_index":1859,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["graphml",{"_index":671,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["grate",{"_index":3647,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["great",{"_index":1124,"title":{},"name":{},"text":{"12":{},"17":{},"26":{},"36":{},"41":{},"110":{},"113":{},"115":{},"187":{},"197":{}},"component":{}}],["greater",{"_index":114,"title":{},"name":{},"text":{"3":{},"15":{},"83":{},"106":{},"145":{},"173":{},"204":{}},"component":{}}],["greatli",{"_index":1290,"title":{},"name":{},"text":{"15":{},"17":{},"29":{},"106":{},"113":{},"190":{}},"component":{}}],["grep",{"_index":2265,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["group",{"_index":309,"title":{},"name":{},"text":{"3":{},"9":{},"10":{},"54":{},"66":{},"75":{},"82":{},"83":{},"129":{},"138":{},"145":{},"157":{},"173":{},"175":{},"179":{},"180":{}},"component":{}}],["group(0",{"_index":3209,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["group2",{"_index":3656,"title":{},"name":{},"text":{"83":{}},"component":{}}],["groupaddress",{"_index":2529,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["grow",{"_index":3460,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["grpc",{"_index":1700,"title":{},"name":{},"text":{"21":{}},"component":{}}],["gs_usb",{"_index":4129,"title":{},"name":{},"text":{"98":{},"169":{}},"component":{}}],["gsd",{"_index":3429,"title":{},"name":{},"text":{"81":{},"144":{}},"component":{}}],["guarante",{"_index":849,"title":{},"name":{},"text":{"9":{},"14":{},"21":{},"83":{},"93":{},"111":{},"145":{},"165":{},"179":{},"182":{}},"component":{}}],["gui",{"_index":514,"title":{},"name":{},"text":{"5":{},"175":{}},"component":{}}],["guid",{"_index":225,"title":{},"name":{},"text":{"3":{},"9":{},"30":{},"42":{},"78":{},"116":{},"141":{},"173":{},"179":{}},"component":{}}],["guid(g",{"_index":3361,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["h",{"_index":2807,"title":{},"name":{},"text":{"55":{},"83":{},"101":{},"145":{},"158":{},"202":{}},"component":{}}],["hackathon",{"_index":366,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["hadnler",{"_index":2519,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["half",{"_index":2994,"title":{},"name":{},"text":{"63":{},"75":{},"95":{},"126":{},"138":{},"166":{}},"component":{}}],["halv",{"_index":1244,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["hamburg",{"_index":416,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["hammer",{"_index":2890,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["hand",{"_index":1184,"title":{},"name":{},"text":{"13":{},"21":{},"39":{},"50":{},"87":{},"112":{},"123":{},"148":{},"182":{},"200":{}},"component":{}}],["handbook",{"_index":2982,"title":{},"name":{},"text":{"62":{},"125":{}},"component":{}}],["handi",{"_index":1721,"title":{},"name":{},"text":{"21":{},"86":{},"146":{},"182":{}},"component":{}}],["handl",{"_index":191,"title":{},"name":{},"text":{"3":{},"9":{},"15":{},"17":{},"26":{},"29":{},"47":{},"48":{},"50":{},"55":{},"78":{},"82":{},"83":{},"87":{},"90":{},"91":{},"98":{},"101":{},"103":{},"106":{},"113":{},"121":{},"123":{},"145":{},"148":{},"153":{},"158":{},"169":{},"173":{},"179":{},"187":{},"190":{},"202":{},"204":{}},"component":{}}],["handle(str",{"_index":4080,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["handler",{"_index":1409,"title":{},"name":{},"text":{"15":{},"46":{},"91":{},"106":{},"119":{},"153":{}},"component":{}}],["handshak",{"_index":1492,"title":{},"name":{},"text":{"15":{},"78":{},"88":{},"106":{},"141":{},"149":{}},"component":{}}],["handwritten",{"_index":1496,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["hang",{"_index":1411,"title":{},"name":{},"text":{"15":{},"82":{},"83":{},"106":{},"145":{}},"component":{}}],["happen",{"_index":479,"title":{},"name":{},"text":{"5":{},"9":{},"31":{},"34":{},"36":{},"78":{},"88":{},"149":{},"175":{},"179":{},"193":{},"195":{},"197":{}},"component":{}}],["happi",{"_index":1774,"title":{},"name":{},"text":{"21":{},"83":{},"145":{},"182":{}},"component":{}}],["hard",{"_index":1935,"title":{},"name":{},"text":{"30":{},"31":{},"32":{},"56":{},"103":{},"159":{},"182":{},"193":{},"204":{}},"component":{}}],["hardwar",{"_index":1116,"title":{},"name":{},"text":{"12":{},"16":{},"17":{},"66":{},"78":{},"83":{},"92":{},"107":{},"110":{},"113":{},"129":{},"145":{},"152":{}},"component":{}}],["hash",{"_index":2102,"title":{},"name":{},"text":{"34":{},"36":{},"37":{},"46":{},"119":{},"195":{},"197":{},"198":{}},"component":{}}],["hashmap",{"_index":3679,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["hasn’t",{"_index":2551,"title":{},"name":{},"text":{"47":{},"48":{},"121":{},"175":{}},"component":{}}],["have",{"_index":1573,"title":{},"name":{},"text":{"16":{},"21":{},"26":{},"41":{},"55":{},"82":{},"83":{},"84":{},"86":{},"88":{},"107":{},"115":{},"145":{},"146":{},"147":{},"149":{},"158":{},"187":{}},"component":{}}],["haven’t",{"_index":868,"title":{},"name":{},"text":{"9":{},"36":{},"37":{},"50":{},"56":{},"123":{},"159":{},"179":{},"197":{},"198":{}},"component":{}}],["hay",{"_index":3594,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["header",{"_index":825,"title":{},"name":{},"text":{"9":{},"37":{},"55":{},"62":{},"83":{},"101":{},"103":{},"125":{},"145":{},"158":{},"179":{},"198":{},"202":{},"204":{}},"component":{}}],["heartbeat",{"_index":3025,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["heartbeat:nodeid",{"_index":3074,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["heat",{"_index":3218,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["heavi",{"_index":2447,"title":{},"name":{},"text":{"46":{},"82":{},"119":{}},"component":{}}],["heavili",{"_index":4012,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["hello",{"_index":3353,"title":{},"name":{},"text":{"78":{},"92":{},"141":{},"152":{}},"component":{}}],["help",{"_index":285,"title":{"7-4":{},"177-4":{}},"name":{},"text":{"3":{},"7":{},"8":{},"9":{},"12":{},"17":{},"26":{},"27":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"41":{},"62":{},"65":{},"86":{},"88":{},"101":{},"110":{},"113":{},"115":{},"125":{},"127":{},"146":{},"149":{},"173":{},"177":{},"178":{},"179":{},"188":{},"193":{},"195":{},"197":{},"198":{},"202":{}},"component":{}}],["helper",{"_index":146,"title":{},"name":{},"text":{"3":{},"86":{},"101":{},"146":{},"173":{},"182":{},"202":{}},"component":{}}],["helper.packagename(protocolnam",{"_index":4188,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["henc",{"_index":3069,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["herbi",{"_index":2696,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["here",{"_index":297,"title":{},"name":{},"text":{"3":{},"14":{},"17":{},"18":{},"21":{},"24":{},"25":{},"26":{},"27":{},"28":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"39":{},"41":{},"46":{},"47":{},"50":{},"55":{},"56":{},"59":{},"62":{},"71":{},"78":{},"82":{},"83":{},"86":{},"87":{},"88":{},"90":{},"91":{},"92":{},"101":{},"102":{},"103":{},"111":{},"113":{},"115":{},"119":{},"121":{},"123":{},"125":{},"134":{},"141":{},"145":{},"146":{},"148":{},"149":{},"152":{},"153":{},"158":{},"159":{},"162":{},"173":{},"182":{},"185":{},"186":{},"187":{},"188":{},"189":{},"191":{},"192":{},"193":{},"195":{},"197":{},"198":{},"200":{},"202":{},"203":{},"204":{}},"component":{}}],["here]/subcompon",{"_index":465,"title":{},"name":{},"text":{"5":{},"175":{}},"component":{}}],["herebi",{"_index":1670,"title":{},"name":{},"text":{"17":{},"21":{},"27":{},"36":{},"50":{},"82":{},"83":{},"113":{},"123":{},"145":{},"182":{},"183":{},"188":{},"190":{},"197":{}},"component":{}}],["herein",{"_index":2392,"title":{},"name":{},"text":{"43":{}},"component":{}}],["here’",{"_index":1740,"title":{},"name":{},"text":{"21":{},"36":{},"182":{},"197":{}},"component":{}}],["hessen",{"_index":344,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["hex",{"_index":2295,"title":{},"name":{},"text":{"39":{},"40":{},"103":{},"200":{}},"component":{}}],["hexadecim",{"_index":3059,"title":{},"name":{},"text":{"66":{},"83":{},"129":{},"145":{}},"component":{}}],["hidden",{"_index":4010,"title":{"90-5":{}},"name":{},"text":{},"component":{}}],["hide",{"_index":2271,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["hierarchi",{"_index":1690,"title":{},"name":{},"text":{"21":{},"78":{},"141":{},"182":{}},"component":{}}],["high",{"_index":865,"title":{},"name":{},"text":{"9":{},"12":{},"13":{},"15":{},"55":{},"78":{},"83":{},"87":{},"103":{},"106":{},"110":{},"112":{},"141":{},"145":{},"148":{},"158":{},"179":{}},"component":{}}],["higher",{"_index":1202,"title":{},"name":{},"text":{"14":{},"26":{},"30":{},"31":{},"111":{},"187":{},"191":{},"192":{}},"component":{}}],["highest",{"_index":872,"title":{},"name":{},"text":{"9":{},"66":{},"129":{},"179":{}},"component":{}}],["highli",{"_index":1111,"title":{},"name":{},"text":{"12":{},"30":{},"31":{},"32":{},"110":{}},"component":{}}],["highlight",{"_index":2882,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["hint",{"_index":1769,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["histori",{"_index":788,"title":{},"name":{},"text":{"9":{},"34":{},"36":{},"179":{},"195":{},"197":{}},"component":{}}],["hit",{"_index":1851,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["hmi",{"_index":3568,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["hoc",{"_index":693,"title":{},"name":{},"text":{"8":{},"36":{},"43":{},"88":{},"149":{},"178":{},"197":{}},"component":{}}],["hold",{"_index":1427,"title":{},"name":{},"text":{"15":{},"46":{},"50":{},"77":{},"84":{},"87":{},"106":{},"119":{},"123":{},"140":{},"147":{},"148":{}},"component":{}}],["holiday",{"_index":2137,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["home",{"_index":0,"title":{"1":{},"109":{}},"name":{},"text":{"36":{},"46":{},"119":{},"197":{}},"component":{}}],["homebrew",{"_index":1986,"title":{},"name":{},"text":{"31":{},"32":{},"192":{}},"component":{}}],["homepag",{"_index":893,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["honest",{"_index":860,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["honor",{"_index":3047,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["hood",{"_index":3009,"title":{},"name":{},"text":{"65":{},"78":{},"127":{}},"component":{}}],["hop",{"_index":1003,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["hope",{"_index":363,"title":{},"name":{},"text":{"4":{},"13":{},"21":{},"83":{},"91":{},"112":{},"145":{},"153":{},"174":{},"182":{}},"component":{}}],["hopefulli",{"_index":609,"title":{},"name":{},"text":{"7":{},"15":{},"27":{},"106":{},"177":{},"188":{}},"component":{}}],["host",{"_index":76,"title":{},"name":{},"text":{"2":{},"17":{},"25":{},"26":{},"30":{},"50":{},"55":{},"75":{},"78":{},"81":{},"113":{},"123":{},"138":{},"144":{},"158":{},"172":{},"186":{},"187":{}},"component":{}}],["hostnam",{"_index":2360,"title":{},"name":{},"text":{"41":{},"55":{},"78":{},"115":{},"158":{}},"component":{}}],["hostname}:{port",{"_index":4130,"title":{},"name":{},"text":{"99":{},"100":{},"170":{},"171":{}},"component":{}}],["hot",{"_index":3698,"title":{},"name":{},"text":{"83":{},"86":{},"145":{},"146":{}},"component":{}}],["hour",{"_index":186,"title":{},"name":{},"text":{"3":{},"6":{},"9":{},"34":{},"36":{},"173":{},"176":{},"179":{},"195":{},"197":{}},"component":{}}],["hous",{"_index":1050,"title":{},"name":{},"text":{"10":{},"12":{},"110":{},"180":{}},"component":{}}],["html",{"_index":1897,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["http",{"_index":710,"title":{},"name":{},"text":{"8":{},"10":{},"30":{},"178":{},"180":{},"191":{}},"component":{}}],["http.tcp",{"_index":2923,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["http://archive.apache.org/dist/plc4x/0.13.0/apach",{"_index":2232,"title":{},"name":{},"text":{"36":{}},"component":{}}],["http://archive.apache.org/dist/plc4x/{curr",{"_index":4480,"title":{},"name":{},"text":{"197":{}},"component":{}}],["http://localhost:7474",{"_index":733,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["http://localhost:8080/nifi",{"_index":2873,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["http://localhost:8083/connector",{"_index":2803,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["http://plc4x.apache.org",{"_index":2242,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["http://plc4x.apache.org/users/download.html",{"_index":2229,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["http://www.beckhoff.com",{"_index":2981,"title":{},"name":{},"text":{"62":{},"125":{}},"component":{}}],["httpport",{"_index":2922,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["https://cache.industry.siemens.com/dl/files/604/44240604/att_67003/v1/s7sfc_en",{"_index":3865,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["https://ci",{"_index":1797,"title":{},"name":{},"text":{"22":{},"27":{},"183":{},"188":{}},"component":{}}],["https://community.apache.org/apach",{"_index":766,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["https://community.chocolatey.org",{"_index":2017,"title":{},"name":{},"text":{"32":{}},"component":{}}],["https://cwiki.apache.org/confluence/display/plc4x",{"_index":1908,"title":{},"name":{},"text":{"28":{},"189":{}},"component":{}}],["https://cwiki.apache.org/confluence/display/plc4x/validating+a+staged+releas",{"_index":2216,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["https://cwiki.apache.org/confluence/pages/viewpage.action?pageid=122916896",{"_index":1857,"title":{},"name":{},"text":{"26":{}},"component":{}}],["https://dist.apache.org/repos/dist/dev/plc4x",{"_index":2104,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["https://dist.apache.org/repos/dist/dev/plc4x/0.13.0/rc1",{"_index":2214,"title":{},"name":{},"text":{"36":{}},"component":{}}],["https://dist.apache.org/repos/dist/dev/plc4x/0.9.0/rc1",{"_index":2222,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["https://dist.apache.org/repos/dist/dev/plc4x/build",{"_index":2113,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["https://dist.apache.org/repos/dist/dev/plc4x/{curr",{"_index":2211,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["https://dist.apache.org/repos/dist/release/plc4x",{"_index":2151,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["https://dist.apache.org/repos/dist/release/plc4x/0.13.0",{"_index":2217,"title":{},"name":{},"text":{"36":{}},"component":{}}],["https://dist.apache.org/repos/dist/release/plc4x/0.3.0",{"_index":2149,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["https://dist.apache.org/repos/dist/release/plc4x/build",{"_index":2144,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["https://dist.apache.org/repos/dist/release/plc4x/{curr",{"_index":2225,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["https://download.beckhoff.com/download/document/automation/twincat3/twincat_3_ads_intro_de.pdf",{"_index":2983,"title":{},"name":{},"text":{"62":{},"125":{}},"component":{}}],["https://en.wikipedia.org/wiki/can_bu",{"_index":3039,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["https://en.wikipedia.org/wiki/iec_61131",{"_index":1399,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["https://gitbox.apache.org/repos/asf/plc4x",{"_index":2120,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["https://gitbox.apache.org/repos/asf?p=plc4x",{"_index":2090,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["https://gitbox.apache.org/repos/asf?p=plc4x.git",{"_index":2201,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["https://github.com/apache/plc4x",{"_index":2740,"title":{},"name":{},"text":{"54":{}},"component":{}}],["https://github.com/apache/plc4x.git",{"_index":516,"title":{},"name":{},"text":{"5":{},"175":{}},"component":{}}],["https://github.com/apache/plc4x/act",{"_index":1799,"title":{},"name":{},"text":{"22":{}},"component":{}}],["https://github.com/apache/plc4x/issu",{"_index":1672,"title":{},"name":{},"text":{"18":{},"24":{}},"component":{}}],["https://github.com/apache/plc4x/issues/1582",{"_index":1962,"title":{},"name":{},"text":{"30":{}},"component":{}}],["https://github.com/apache/plc4x/tree/develop/plc4j/examples/hello",{"_index":4433,"title":{},"name":{},"text":{"157":{}},"component":{}}],["https://github.com/eclipse/ditto",{"_index":2913,"title":{},"name":{},"text":{"58":{},"161":{}},"component":{}}],["https://github.com/{your",{"_index":486,"title":{},"name":{},"text":{"5":{},"175":{}},"component":{}}],["https://gmail.googleblog.com/2009/07/send",{"_index":2246,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["https://golang.org",{"_index":2416,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["https://id.apache.org",{"_index":1816,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["https://in2lutions.com/in2lutions/[in2lut",{"_index":1133,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["https://infosys.beckhoff.com/english.php?content=../content/1033/ams_nat/4275563275.html&id",{"_index":2971,"title":{},"name":{},"text":{"62":{},"125":{}},"component":{}}],["https://iotdb.apache.org/userguide/master/client/programming%20",{"_index":2767,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["https://issues.apache.org/jira",{"_index":1825,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["https://issues.apache.org/jira/projects/plc4x",{"_index":4445,"title":{},"name":{},"text":{"185":{}},"component":{}}],["https://kafka.apache.org/download",{"_index":2781,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["https://learn.microsoft.com/d",{"_index":2020,"title":{},"name":{},"text":{"32":{}},"component":{}}],["https://npcap.com/#download",{"_index":2034,"title":{},"name":{},"text":{"32":{}},"component":{}}],["https://packages.microsoft.com/config/ubuntu/22.04/packag",{"_index":1967,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["https://plc4x.apache.org",{"_index":1905,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["https://plc4x.apache.org/developers/release/validation.html",{"_index":4477,"title":{},"name":{},"text":{"195":{}},"component":{}}],["https://plc4x.apache.org/plc4x/latest/developers/release/validation.html",{"_index":2128,"title":{},"name":{},"text":{"34":{}},"component":{}}],["https://plc4x.apache.org/users/protocols/s7.html",{"_index":1485,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["https://raw.githubusercontent.com/homebrew/install/head/install.sh",{"_index":1991,"title":{},"name":{},"text":{"31":{}},"component":{}}],["https://raw.githubusercontent.com/homebrew/install/master/instal",{"_index":4451,"title":{},"name":{},"text":{"192":{}},"component":{}}],["https://reference.apache.org/committer/email",{"_index":2244,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["https://repo.maven.apache.org/maven2/com/googlecode/cmak",{"_index":2037,"title":{},"name":{},"text":{"32":{}},"component":{}}],["https://repository.apache.org",{"_index":2099,"title":{},"name":{},"text":{"34":{},"36":{},"183":{},"195":{},"197":{}},"component":{}}],["https://repository.apache.org/content/repositories/orgapacheplc4x",{"_index":2125,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["https://repository.apache.org/content/repositories/snapshot",{"_index":2672,"title":{},"name":{},"text":{"49":{},"122":{}},"component":{}}],["https://search.maven.org/search?q=plc4j",{"_index":2878,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["https://selfserve.apache.org/otp",{"_index":1847,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["https://snap7.sourceforge.net",{"_index":3543,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["https://sonarcloud.io/dashboard?id=apache_plc4x",{"_index":1806,"title":{},"name":{},"text":{"25":{},"186":{}},"component":{}}],["https://stackoverflow.com/questions/73753672/a",{"_index":1978,"title":{},"name":{},"text":{"30":{}},"component":{}}],["https://support.industry.siemens.com/cs/document/109481157/comunicaci%c3%b3n",{"_index":3564,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["https://support.industry.siemens.com/cs/document/109797648/simat",{"_index":3548,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["https://support.industry.siemens.com/cs/document/13649203/simat",{"_index":3544,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["https://support.industry.siemens.com/cs/document/15166942/writ",{"_index":3555,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["https://support.industry.siemens.com/cs/document/21402122/technolog",{"_index":3587,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["https://support.industry.siemens.com/cs/document/24013249/how",{"_index":3558,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["https://support.industry.siemens.com/cs/document/24037531/%c2%bfqu%c3%a9",{"_index":3591,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["https://support.industry.siemens.com/cs/document/77467239/transform",{"_index":3588,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["https://support.industry.siemens.com/cs/document/97550333/sinam",{"_index":3585,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["https://support.industry.siemens.com/cs/mdm/109746537?c=98956468747&lc=",{"_index":3554,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["https://vimeo.com/167857327",{"_index":197,"title":{},"name":{},"text":{"3":{}},"component":{}}],["https://visualstudio.microsoft.com/de/visu",{"_index":2049,"title":{},"name":{},"text":{"32":{}},"component":{}}],["https://www.apache.org/dev/release.html#approv",{"_index":2215,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["https://www.apache.org/dev/release/validation.html#approv",{"_index":2127,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["https://www.apache.org/licenses/licens",{"_index":4192,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["https://www.eclipse.org/ditto",{"_index":2912,"title":{},"name":{},"text":{"58":{},"161":{}},"component":{}}],["https://www.home",{"_index":2968,"title":{},"name":{},"text":{"62":{},"125":{}},"component":{}}],["https://www.oracle.com/technetwork/java/javaee/tech/persist",{"_index":4042,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["huge",{"_index":1344,"title":{},"name":{},"text":{"15":{},"17":{},"106":{},"113":{}},"component":{}}],["human",{"_index":2293,"title":{},"name":{},"text":{"39":{},"200":{}},"component":{}}],["hundr",{"_index":3794,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["hutcheson",{"_index":971,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["hw",{"_index":1094,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["i)iot",{"_index":1144,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["i.",{"_index":300,"title":{},"name":{},"text":{"3":{},"12":{},"34":{},"36":{},"41":{},"43":{},"77":{},"87":{},"110":{},"140":{},"148":{},"173":{},"195":{},"197":{}},"component":{}}],["i0.2:bool",{"_index":2562,"title":{},"name":{},"text":{"47":{},"121":{}},"component":{}}],["icla",{"_index":818,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["icon",{"_index":1872,"title":{},"name":{},"text":{"27":{},"43":{},"50":{},"56":{},"123":{},"159":{},"188":{}},"component":{}}],["id",{"_index":770,"title":{"29-1":{},"190-1":{}},"name":{},"text":{"9":{},"26":{},"32":{},"34":{},"36":{},"41":{},"50":{},"55":{},"61":{},"62":{},"63":{},"66":{},"72":{},"75":{},"77":{},"81":{},"83":{},"85":{},"123":{},"124":{},"125":{},"126":{},"129":{},"135":{},"138":{},"144":{},"145":{},"158":{},"179":{},"187":{},"193":{},"195":{},"197":{}},"component":{}}],["id\":17,\"index\":0,\"n_dr\":4",{"_index":3900,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["idea",{"_index":636,"title":{"8-3":{},"178-3":{}},"name":{},"text":{"13":{},"26":{},"46":{},"112":{},"119":{},"187":{}},"component":{}}],["ideal",{"_index":484,"title":{},"name":{},"text":{"5":{},"17":{},"34":{},"36":{},"55":{},"86":{},"88":{},"90":{},"113":{},"146":{},"149":{},"158":{},"175":{},"195":{},"197":{}},"component":{}}],["ident",{"_index":1578,"title":{},"name":{},"text":{"16":{},"36":{},"39":{},"47":{},"50":{},"103":{},"107":{},"121":{},"123":{},"197":{},"200":{},"204":{}},"component":{}}],["identif",{"_index":3464,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["identifi",{"_index":819,"title":{},"name":{},"text":{"9":{},"43":{},"66":{},"77":{},"78":{},"82":{},"83":{},"84":{},"85":{},"98":{},"129":{},"140":{},"141":{},"145":{},"147":{},"169":{},"179":{}},"component":{}}],["identifier=1",{"_index":2437,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["id}/plc4x.git",{"_index":488,"title":{},"name":{},"text":{"5":{},"175":{}},"component":{}}],["id}@apache.org",{"_index":2175,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["ie",{"_index":3028,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["iec",{"_index":1376,"title":{"73":{},"136":{}},"name":{"73":{},"136":{}},"text":{"15":{},"73":{},"74":{},"84":{},"106":{},"136":{},"137":{},"147":{}},"component":{}}],["ieee",{"_index":3528,"title":{},"name":{},"text":{"82":{},"83":{},"103":{},"145":{}},"component":{}}],["if(numvalu",{"_index":2583,"title":{},"name":{},"text":{"47":{},"50":{},"121":{},"123":{}},"component":{}}],["if(response.getresponsecode(fieldnam",{"_index":2729,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["if(response.getresponsecode(tagnam",{"_index":2578,"title":{},"name":{},"text":{"47":{},"50":{},"121":{},"123":{}},"component":{}}],["ifconfig",{"_index":3973,"title":{},"name":{},"text":{"86":{},"146":{}},"component":{}}],["iiot",{"_index":1118,"title":{},"name":{},"text":{"12":{},"13":{},"110":{},"112":{}},"component":{}}],["im",{"_index":1983,"title":{},"name":{},"text":{"30":{},"83":{},"145":{},"191":{}},"component":{}}],["imag",{"_index":616,"title":{},"name":{},"text":{"7":{},"27":{},"82":{},"83":{},"145":{},"173":{},"177":{},"188":{}},"component":{}}],["imagin",{"_index":4096,"title":{},"name":{},"text":{"92":{},"152":{}},"component":{}}],["imaginari",{"_index":4258,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["immedi",{"_index":4004,"title":{},"name":{},"text":{"88":{},"149":{}},"component":{}}],["impact",{"_index":2857,"title":{},"name":{},"text":{"55":{},"103":{},"158":{},"204":{}},"component":{}}],["implement",{"_index":26,"title":{"40-3":{},"40-4":{}},"name":{},"text":{"2":{},"3":{},"15":{},"16":{},"21":{},"39":{},"40":{},"46":{},"47":{},"48":{},"50":{},"55":{},"62":{},"65":{},"66":{},"72":{},"74":{},"78":{},"81":{},"82":{},"83":{},"87":{},"91":{},"92":{},"93":{},"101":{},"102":{},"103":{},"106":{},"107":{},"119":{},"121":{},"123":{},"125":{},"127":{},"129":{},"135":{},"137":{},"141":{},"144":{},"145":{},"148":{},"152":{},"153":{},"158":{},"165":{},"172":{},"173":{},"182":{},"200":{},"202":{},"203":{},"204":{}},"component":{}}],["impli",{"_index":4195,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["implicit",{"_index":4250,"title":{"103-9":{},"204-8":{}},"name":{},"text":{"103":{},"204":{}},"component":{}}],["implicitli",{"_index":4301,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["import",{"_index":947,"title":{},"name":{},"text":{"9":{},"12":{},"21":{},"34":{},"36":{},"37":{},"39":{},"41":{},"47":{},"48":{},"50":{},"82":{},"83":{},"90":{},"91":{},"101":{},"110":{},"115":{},"121":{},"123":{},"145":{},"153":{},"179":{},"182":{},"195":{},"197":{},"198":{},"200":{},"202":{}},"component":{}}],["impos",{"_index":3346,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["imposs",{"_index":952,"title":{},"name":{},"text":{"9":{},"17":{},"36":{},"113":{},"179":{},"197":{}},"component":{}}],["improv",{"_index":1291,"title":{"17-5":{},"113-5":{}},"name":{},"text":{"15":{},"17":{},"21":{},"106":{},"113":{},"182":{}},"component":{}}],["in10",{"_index":956,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["in20",{"_index":960,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["in`fals",{"_index":4303,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["inappropri",{"_index":2191,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["includ",{"_index":576,"title":{},"name":{},"text":{"6":{},"9":{},"15":{},"26":{},"34":{},"36":{},"55":{},"59":{},"78":{},"83":{},"106":{},"141":{},"145":{},"158":{},"162":{},"176":{},"179":{},"187":{},"195":{},"197":{}},"component":{}}],["incom",{"_index":2520,"title":{},"name":{},"text":{"46":{},"65":{},"72":{},"119":{},"127":{},"135":{}},"component":{}}],["incompat",{"_index":883,"title":{"15-4":{},"15-15":{},"15-19":{},"15-23":{},"15-27":{},"15-31":{},"15-35":{},"15-40":{},"15-44":{},"106-4":{},"106-15":{},"106-19":{},"106-23":{},"106-27":{},"106-31":{},"106-35":{},"106-40":{},"106-44":{}},"name":{},"text":{"9":{},"15":{},"34":{},"36":{},"106":{},"179":{},"195":{},"197":{}},"component":{}}],["inconsist",{"_index":3478,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["incorrectli",{"_index":4465,"title":{},"name":{},"text":{"193":{}},"component":{}}],["increas",{"_index":203,"title":{"17-2":{},"17-3":{},"17-4":{},"113-2":{},"113-3":{},"113-4":{}},"name":{},"text":{"3":{},"17":{},"26":{},"56":{},"66":{},"86":{},"113":{},"129":{},"146":{},"159":{},"173":{},"187":{}},"component":{}}],["increment",{"_index":2060,"title":{},"name":{},"text":{"34":{},"36":{},"102":{},"195":{},"197":{},"203":{}},"component":{}}],["incub",{"_index":405,"title":{"15-37":{},"15-38":{},"15-42":{},"15-46":{},"15-48":{},"106-37":{},"106-38":{},"106-42":{},"106-46":{},"106-48":{}},"name":{},"text":{"4":{},"9":{},"10":{},"15":{},"36":{},"106":{},"174":{},"179":{},"180":{},"197":{}},"component":{}}],["independ",{"_index":857,"title":{},"name":{},"text":{"9":{},"16":{},"62":{},"78":{},"103":{},"107":{},"125":{},"141":{},"179":{},"204":{}},"component":{}}],["index",{"_index":1,"title":{},"name":{"1":{},"7":{},"16":{},"21":{},"23":{},"29":{},"33":{},"35":{},"38":{},"42":{},"60":{},"74":{},"89":{},"94":{},"107":{},"109":{},"116":{},"137":{},"150":{},"163":{},"164":{},"177":{},"182":{},"184":{},"190":{},"194":{},"196":{},"199":{}},"text":{"15":{},"66":{},"70":{},"83":{},"106":{},"129":{},"133":{},"145":{}},"component":{}}],["index.adoc",{"_index":1885,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["index=0x0000",{"_index":3889,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["index};[s|i|g|b]={identifier};a=attributeid;{data",{"_index":3363,"title":{},"name":{},"text":{"78":{}},"component":{}}],["index};[s|i|g|b]={identifier};{data",{"_index":4427,"title":{},"name":{},"text":{"141":{}},"component":{}}],["indic",{"_index":1940,"title":{},"name":{},"text":{"30":{},"31":{},"34":{},"36":{},"55":{},"66":{},"78":{},"82":{},"83":{},"103":{},"129":{},"141":{},"145":{},"158":{},"195":{},"197":{},"204":{}},"component":{}}],["indirectli",{"_index":3650,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["individu",{"_index":815,"title":{"41-3":{},"71-3":{},"75-5":{},"76-3":{},"77-11":{},"80-4":{},"82-7":{},"83-10":{},"84-2":{},"85-3":{},"115-3":{},"134-3":{},"138-5":{},"139-3":{},"140-11":{},"143-4":{},"145-10":{},"147-2":{}},"name":{},"text":{"9":{},"14":{},"20":{},"41":{},"75":{},"78":{},"82":{},"111":{},"114":{},"115":{},"138":{},"141":{},"179":{}},"component":{}}],["industri",{"_index":336,"title":{"17":{},"113":{}},"name":{},"text":{"4":{},"10":{},"12":{},"13":{},"16":{},"17":{},"21":{},"36":{},"51":{},"55":{},"59":{},"86":{},"107":{},"110":{},"112":{},"113":{},"146":{},"154":{},"158":{},"162":{},"174":{},"180":{},"197":{}},"component":{}}],["industrieanlagen",{"_index":387,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["industry40",{"_index":1596,"title":{},"name":{"17":{},"113":{}},"text":{},"component":{}}],["industryfus",{"_index":1117,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["inf/services/org.apache.plc4x.java.api.plcdriv",{"_index":2323,"title":{},"name":{},"text":{"40":{}},"component":{}}],["inf/services/org.apache.plc4x.plugins.codegenerator.language.languageoutput",{"_index":1773,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["inf/services/org.apache.plc4x.plugins.codegenerator.protocol.protocol",{"_index":1746,"title":{},"name":{},"text":{"21":{},"40":{},"182":{}},"component":{}}],["influenc",{"_index":959,"title":{},"name":{},"text":{"9":{},"103":{},"179":{},"204":{}},"component":{}}],["info",{"_index":697,"title":{},"name":{},"text":{"8":{},"36":{},"178":{},"197":{}},"component":{}}],["info'init",{"_index":4344,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["info'rec",{"_index":4342,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["info1",{"_index":3750,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["info2",{"_index":3751,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["inform",{"_index":432,"title":{},"name":{},"text":{"4":{},"7":{},"8":{},"9":{},"12":{},"14":{},"15":{},"16":{},"17":{},"20":{},"23":{},"28":{},"34":{},"36":{},"37":{},"39":{},"41":{},"56":{},"62":{},"65":{},"70":{},"75":{},"76":{},"78":{},"81":{},"82":{},"83":{},"91":{},"101":{},"103":{},"106":{},"107":{},"110":{},"111":{},"113":{},"114":{},"115":{},"125":{},"127":{},"133":{},"138":{},"139":{},"141":{},"144":{},"145":{},"153":{},"159":{},"174":{},"177":{},"178":{},"179":{},"184":{},"189":{},"195":{},"197":{},"198":{},"200":{},"202":{}},"component":{}}],["infra",{"_index":799,"title":{},"name":{},"text":{"9":{},"26":{},"179":{},"187":{}},"component":{}}],["infrastructur",{"_index":967,"title":{"23":{},"184":{}},"name":{},"text":{"9":{},"17":{},"26":{},"78":{},"113":{},"141":{},"179":{},"187":{}},"component":{}}],["inherit",{"_index":273,"title":{},"name":{},"text":{"3":{},"21":{},"27":{},"173":{},"182":{},"188":{}},"component":{}}],["init",{"_index":2009,"title":{},"name":{},"text":{"31":{},"46":{},"119":{},"192":{}},"component":{}}],["initi",{"_index":618,"title":{"46-1":{},"119-1":{}},"name":{},"text":{"7":{},"8":{},"9":{},"15":{},"46":{},"77":{},"78":{},"83":{},"90":{},"92":{},"103":{},"106":{},"119":{},"140":{},"141":{},"145":{},"151":{},"152":{},"177":{},"178":{},"179":{},"204":{}},"component":{}}],["inject",{"_index":3041,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["inlin",{"_index":4285,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["innov",{"_index":1608,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["input",{"_index":2288,"title":{},"name":{},"text":{"39":{},"41":{},"50":{},"71":{},"77":{},"82":{},"83":{},"86":{},"101":{},"103":{},"115":{},"123":{},"134":{},"140":{},"145":{},"146":{},"182":{},"200":{},"202":{},"204":{}},"component":{}}],["input:{start",{"_index":2688,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["insan",{"_index":1642,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["insecur",{"_index":2919,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["insert",{"_index":1898,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["insid",{"_index":1589,"title":{},"name":{},"text":{"16":{},"34":{},"36":{},"41":{},"101":{},"103":{},"107":{},"115":{},"195":{},"197":{},"202":{},"204":{}},"component":{}}],["inspect",{"_index":2316,"title":{},"name":{},"text":{"40":{}},"component":{}}],["inspir",{"_index":2340,"title":{},"name":{},"text":{"41":{},"90":{},"115":{},"151":{}},"component":{}}],["instal",{"_index":156,"title":{},"name":{},"text":{"3":{},"7":{},"8":{},"12":{},"14":{},"17":{},"26":{},"29":{},"30":{},"31":{},"32":{},"43":{},"46":{},"48":{},"55":{},"56":{},"59":{},"75":{},"83":{},"110":{},"111":{},"113":{},"119":{},"138":{},"145":{},"158":{},"159":{},"162":{},"173":{},"177":{},"178":{},"182":{},"187":{},"190":{},"191":{},"192":{},"193":{}},"component":{}}],["instanc",{"_index":30,"title":{},"name":{},"text":{"2":{},"9":{},"28":{},"39":{},"46":{},"47":{},"50":{},"65":{},"82":{},"83":{},"87":{},"88":{},"91":{},"92":{},"101":{},"119":{},"121":{},"123":{},"127":{},"145":{},"148":{},"149":{},"152":{},"153":{},"172":{},"179":{},"185":{},"189":{},"200":{},"202":{}},"component":{}}],["instance_data_block",{"_index":3522,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["instance’",{"_index":4307,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["instant",{"_index":3703,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["instant.now",{"_index":3704,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["instanti",{"_index":3477,"title":{},"name":{},"text":{"82":{},"83":{},"145":{},"151":{}},"component":{}}],["instantli",{"_index":2963,"title":{},"name":{},"text":{"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"87":{},"124":{},"125":{},"126":{},"128":{},"133":{},"136":{},"139":{},"140":{},"141":{},"142":{},"143":{},"145":{},"148":{}},"component":{}}],["instead",{"_index":141,"title":{},"name":{},"text":{"3":{},"15":{},"26":{},"41":{},"46":{},"47":{},"48":{},"50":{},"62":{},"82":{},"103":{},"106":{},"119":{},"121":{},"123":{},"125":{},"173":{},"187":{},"204":{}},"component":{}}],["institut",{"_index":1080,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["instruct",{"_index":1972,"title":{},"name":{},"text":{"30":{},"32":{},"191":{}},"component":{}}],["int",{"_index":1413,"title":{},"name":{},"text":{"15":{},"37":{},"47":{},"48":{},"50":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"87":{},"103":{},"106":{},"121":{},"123":{},"124":{},"125":{},"126":{},"128":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"147":{},"148":{},"198":{},"204":{}},"component":{}}],["int32",{"_index":2747,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["intal",{"_index":1982,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["integ",{"_index":1312,"title":{},"name":{},"text":{"15":{},"54":{},"70":{},"71":{},"77":{},"82":{},"83":{},"103":{},"106":{},"133":{},"134":{},"140":{},"145":{},"157":{},"204":{}},"component":{}}],["integer16",{"_index":3092,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["integer24",{"_index":3093,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["integer32",{"_index":3094,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["integer40",{"_index":3095,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["integer48",{"_index":3097,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["integer56",{"_index":3098,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["integer64",{"_index":3099,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["integer8",{"_index":3090,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["integr",{"_index":246,"title":{"22":{},"60":{},"163":{},"183":{}},"name":{},"text":{"3":{},"10":{},"13":{},"15":{},"16":{},"17":{},"36":{},"41":{},"54":{},"55":{},"59":{},"66":{},"78":{},"82":{},"83":{},"91":{},"106":{},"107":{},"112":{},"113":{},"115":{},"129":{},"141":{},"145":{},"153":{},"157":{},"158":{},"162":{},"173":{},"180":{},"183":{},"190":{},"197":{}},"component":{}}],["intellij",{"_index":635,"title":{"8-3":{},"29-2":{},"178-3":{},"190-2":{}},"name":{},"text":{"8":{},"11":{},"29":{},"178":{},"181":{},"190":{}},"component":{}}],["intend",{"_index":3476,"title":{},"name":{},"text":{"82":{}},"component":{}}],["intens",{"_index":3981,"title":{},"name":{},"text":{"87":{},"148":{},"173":{}},"component":{}}],["intention",{"_index":2205,"title":{},"name":{},"text":{"36":{},"47":{},"48":{},"50":{},"121":{},"123":{},"197":{}},"component":{}}],["interact",{"_index":2951,"title":{},"name":{},"text":{"59":{},"62":{},"90":{},"125":{},"151":{},"162":{}},"component":{}}],["intercept",{"_index":1828,"title":{},"name":{},"text":{"26":{},"46":{},"86":{},"119":{},"146":{},"187":{}},"component":{}}],["interceptor",{"_index":4027,"title":{},"name":{},"text":{"90":{}},"component":{}}],["interest",{"_index":104,"title":{},"name":{},"text":{"3":{},"8":{},"9":{},"10":{},"21":{},"81":{},"86":{},"90":{},"144":{},"146":{},"173":{},"178":{},"179":{},"180":{},"182":{}},"component":{}}],["interfac",{"_index":731,"title":{},"name":{},"text":{"8":{},"10":{},"21":{},"41":{},"50":{},"55":{},"62":{},"65":{},"78":{},"81":{},"87":{},"91":{},"92":{},"93":{},"98":{},"115":{},"123":{},"125":{},"127":{},"141":{},"144":{},"148":{},"152":{},"153":{},"158":{},"165":{},"169":{},"178":{},"180":{},"182":{}},"component":{}}],["interface?dti=0&dl=en&lc=",{"_index":3546,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["interlocutor",{"_index":3470,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["intermedi",{"_index":3012,"title":{},"name":{},"text":{"65":{},"101":{},"127":{},"202":{}},"component":{}}],["intern",{"_index":1021,"title":{},"name":{},"text":{"10":{},"15":{},"36":{},"59":{},"83":{},"106":{},"145":{},"162":{},"180":{},"197":{}},"component":{}}],["internal_error",{"_index":2662,"title":{},"name":{},"text":{"48":{},"50":{},"123":{}},"component":{}}],["internalplcwriterequest",{"_index":1513,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["interop",{"_index":1544,"title":{},"name":{},"text":{"15":{},"106":{},"173":{}},"component":{}}],["interpret",{"_index":3525,"title":{},"name":{},"text":{"82":{},"83":{},"103":{},"145":{},"204":{}},"component":{}}],["interrupt",{"_index":3908,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["intersect",{"_index":4428,"title":{},"name":{},"text":{"151":{}},"component":{}}],["interv",{"_index":2501,"title":{},"name":{},"text":{"46":{},"47":{},"54":{},"83":{},"86":{},"91":{},"119":{},"121":{},"145":{},"146":{},"153":{},"157":{}},"component":{}}],["intra",{"_index":3683,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["introduc",{"_index":507,"title":{},"name":{},"text":{"5":{},"9":{},"15":{},"43":{},"101":{},"106":{},"175":{},"179":{},"202":{}},"component":{}}],["introduct",{"_index":551,"title":{"162":{},"6-1":{},"21-1":{},"55-2":{},"158-2":{},"176-1":{},"182-1":{}},"name":{},"text":{"17":{},"21":{},"41":{},"66":{},"113":{},"115":{},"129":{},"182":{}},"component":{}}],["intuit",{"_index":2249,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["invalid",{"_index":1538,"title":{},"name":{},"text":{"15":{},"56":{},"106":{},"159":{}},"component":{}}],["invalid_address",{"_index":2660,"title":{},"name":{},"text":{"48":{},"50":{},"123":{}},"component":{}}],["invalid_datatyp",{"_index":2661,"title":{},"name":{},"text":{"48":{},"50":{},"123":{}},"component":{}}],["invest",{"_index":1676,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["investig",{"_index":2276,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["invit",{"_index":903,"title":{},"name":{},"text":{"9":{},"175":{},"179":{}},"component":{}}],["involv",{"_index":445,"title":{},"name":{},"text":{"5":{},"9":{},"10":{},"14":{},"34":{},"36":{},"83":{},"87":{},"111":{},"145":{},"148":{},"175":{},"179":{},"180":{},"195":{},"197":{}},"component":{}}],["io",{"_index":3158,"title":{},"name":{},"text":{"71":{},"83":{},"101":{},"102":{},"134":{},"145":{},"202":{},"203":{}},"component":{}}],["ioctl",{"_index":2192,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["ioexcept",{"_index":4164,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["iot",{"_index":334,"title":{},"name":{},"text":{"4":{},"10":{},"12":{},"13":{},"58":{},"83":{},"110":{},"112":{},"145":{},"174":{},"180":{}},"component":{}}],["iotdb",{"_index":1004,"title":{"54":{},"157":{}},"name":{"54":{},"157":{}},"text":{"10":{},"54":{},"157":{},"180":{}},"component":{}}],["iotdb’",{"_index":2748,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["ip",{"_index":2359,"title":{},"name":{},"text":{"41":{},"50":{},"59":{},"62":{},"63":{},"75":{},"76":{},"78":{},"81":{},"99":{},"100":{},"115":{},"123":{},"125":{},"126":{},"138":{},"139":{},"141":{},"144":{},"162":{},"170":{},"171":{}},"component":{}}],["ip.address",{"_index":2957,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["ip/host",{"_index":2697,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["ipconfig",{"_index":3974,"title":{},"name":{},"text":{"86":{},"146":{}},"component":{}}],["ipv4",{"_index":2976,"title":{},"name":{},"text":{"62":{},"125":{}},"component":{}}],["isar",{"_index":972,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["isbrowsesupport",{"_index":1279,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["isdiscoverysupport",{"_index":1270,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["isn’t",{"_index":1454,"title":{},"name":{},"text":{"15":{},"17":{},"46":{},"55":{},"59":{},"106":{},"113":{},"119":{},"158":{},"162":{}},"component":{}}],["isoontcp",{"_index":1568,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["isreadsupport",{"_index":1276,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["isrun",{"_index":4026,"title":{},"name":{},"text":{"90":{}},"component":{}}],["issu",{"_index":527,"title":{"18":{},"19":{},"24":{},"108":{},"185":{},"36-18":{}},"name":{"18":{},"19":{},"24":{},"108":{},"185":{}},"text":{"5":{},"9":{},"14":{},"15":{},"18":{},"24":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"47":{},"48":{},"49":{},"50":{},"78":{},"82":{},"92":{},"106":{},"111":{},"121":{},"122":{},"123":{},"141":{},"152":{},"175":{},"179":{},"185":{},"190":{},"198":{}},"component":{}}],["issubscribesupport",{"_index":1278,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["ist",{"_index":1987,"title":{},"name":{},"text":{"31":{},"90":{},"192":{}},"component":{}}],["isvalid{typenam",{"_index":2718,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["isw",{"_index":1078,"title":{},"name":{},"text":{"10":{},"12":{},"110":{},"180":{}},"component":{}}],["iswritesupport",{"_index":1277,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["isxyz",{"_index":1421,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["is{field",{"_index":4039,"title":{},"name":{},"text":{"90":{}},"component":{}}],["it'",{"_index":2582,"title":{},"name":{},"text":{"47":{},"48":{},"50":{},"121":{},"123":{}},"component":{}}],["item",{"_index":1423,"title":{},"name":{},"text":{"15":{},"27":{},"34":{},"36":{},"47":{},"48":{},"50":{},"103":{},"104":{},"106":{},"121":{},"123":{},"188":{},"195":{},"197":{},"204":{},"205":{}},"component":{}}],["iter",{"_index":2051,"title":{"34-2":{},"36-5":{},"195-2":{},"197-5":{}},"name":{},"text":{"34":{},"36":{},"40":{},"47":{},"48":{},"50":{},"101":{},"103":{},"121":{},"123":{},"195":{},"197":{},"202":{}},"component":{}}],["itself",{"_index":175,"title":{},"name":{},"text":{"3":{},"15":{},"21":{},"22":{},"27":{},"34":{},"36":{},"39":{},"46":{},"47":{},"48":{},"50":{},"75":{},"85":{},"106":{},"119":{},"121":{},"123":{},"138":{},"173":{},"183":{},"188":{},"195":{},"197":{},"200":{}},"component":{}}],["it’",{"_index":160,"title":{},"name":{},"text":{"3":{},"5":{},"9":{},"17":{},"27":{},"31":{},"34":{},"36":{},"37":{},"46":{},"47":{},"48":{},"56":{},"71":{},"75":{},"82":{},"87":{},"103":{},"113":{},"119":{},"121":{},"134":{},"138":{},"148":{},"159":{},"173":{},"175":{},"179":{},"188":{},"192":{},"193":{},"195":{},"197":{},"198":{},"204":{}},"component":{}}],["iv",{"_index":362,"title":{},"name":{},"text":{"4":{},"13":{},"112":{},"174":{}},"component":{}}],["i’m",{"_index":3970,"title":{},"name":{},"text":{"86":{},"146":{}},"component":{}}],["jackson",{"_index":2287,"title":{},"name":{},"text":{"39":{},"200":{}},"component":{}}],["januari",{"_index":418,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["jar",{"_index":243,"title":{},"name":{},"text":{"3":{},"37":{},"50":{},"54":{},"55":{},"59":{},"86":{},"123":{},"146":{},"157":{},"158":{},"162":{},"173":{},"198":{}},"component":{}}],["jar.jar",{"_index":2785,"title":{},"name":{},"text":{"55":{},"59":{},"86":{},"146":{},"158":{},"162":{}},"component":{}}],["java",{"_index":112,"title":{"47":{},"121":{},"30-2":{},"31-2":{},"32-2":{},"42-2":{},"91-4":{},"101-1":{},"116-2":{},"153-4":{},"202-1":{}},"name":{},"text":{"3":{},"7":{},"8":{},"15":{},"16":{},"21":{},"22":{},"29":{},"30":{},"31":{},"32":{},"36":{},"37":{},"42":{},"43":{},"46":{},"47":{},"50":{},"54":{},"56":{},"59":{},"74":{},"78":{},"81":{},"82":{},"83":{},"86":{},"90":{},"91":{},"101":{},"103":{},"106":{},"107":{},"116":{},"119":{},"121":{},"123":{},"137":{},"141":{},"144":{},"145":{},"146":{},"151":{},"153":{},"157":{},"159":{},"162":{},"173":{},"177":{},"178":{},"182":{},"190":{},"191":{},"197":{},"198":{},"202":{},"204":{}},"component":{}}],["java,with",{"_index":242,"title":{},"name":{},"text":{"3":{},"36":{},"173":{},"197":{}},"component":{}}],["java.io.fil",{"_index":1766,"title":{},"name":{},"text":{"21":{},"101":{},"182":{},"202":{}},"component":{}}],["java.io.ioexcept",{"_index":1446,"title":{},"name":{},"text":{"15":{},"101":{},"106":{},"202":{}},"component":{}}],["java.nio.charset.standardcharset",{"_index":4152,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["java.time.dur",{"_index":3993,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["java.util",{"_index":4153,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["java.util.map",{"_index":1767,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["java.util.opt",{"_index":1752,"title":{},"name":{},"text":{"21":{}},"component":{}}],["java_arg",{"_index":2905,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["java_hom",{"_index":2025,"title":{},"name":{},"text":{"32":{}},"component":{}}],["javadoc",{"_index":261,"title":{},"name":{},"text":{"3":{},"34":{},"36":{},"173":{},"195":{},"197":{}},"component":{}}],["javalanguageoutput",{"_index":4154,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["javalanguagetemplatehelper(thistyp",{"_index":4177,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["javascript",{"_index":1869,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["java’",{"_index":2449,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["jax",{"_index":672,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["jcek",{"_index":3320,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["jdbc",{"_index":2338,"title":{},"name":{},"text":{"41":{},"51":{},"54":{},"115":{},"154":{},"157":{}},"component":{}}],["jdk",{"_index":115,"title":{},"name":{},"text":{"3":{},"30":{},"36":{},"81":{},"144":{},"173":{},"197":{}},"component":{}}],["jenkin",{"_index":1794,"title":{"22-1":{},"183-1":{}},"name":{},"text":{"22":{},"26":{},"27":{},"183":{},"187":{},"188":{}},"component":{}}],["jenkinsfil",{"_index":1802,"title":{},"name":{},"text":{"22":{},"183":{}},"component":{}}],["jersey",{"_index":726,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["jetbrain",{"_index":1098,"title":{},"name":{},"text":{"11":{},"181":{}},"component":{}}],["jira",{"_index":1824,"title":{"197-18":{}},"name":{},"text":{"26":{},"36":{},"175":{},"179":{},"185":{},"187":{},"195":{},"197":{}},"component":{}}],["jitter",{"_index":2862,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["jk",{"_index":2394,"title":{},"name":{},"text":{"43":{},"78":{},"141":{}},"component":{}}],["jm",{"_index":3681,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["job",{"_index":1904,"title":{"91-3":{},"153-3":{}},"name":{},"text":{"27":{},"55":{},"91":{},"153":{},"158":{},"183":{},"188":{}},"component":{}}],["jobbuild",{"_index":4054,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["jobbuilder.build",{"_index":4062,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["jobbuilder.field({fieldnam",{"_index":4060,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["jobbuilder.source({connectionnam",{"_index":4059,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["jobconfigurationtriggeredimplbuild",{"_index":4053,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["jobnam",{"_index":4070,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["join",{"_index":904,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["jpa",{"_index":674,"title":{},"name":{},"text":{"8":{},"15":{},"16":{},"90":{},"106":{},"107":{},"151":{},"178":{}},"component":{}}],["jprofil",{"_index":1100,"title":{},"name":{},"text":{"11":{},"181":{}},"component":{}}],["jqassist",{"_index":631,"title":{"8":{},"178":{},"8-1":{},"178-1":{}},"name":{"8":{},"178":{}},"text":{"8":{},"178":{}},"component":{}}],["jqassistant:serv",{"_index":695,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["jqueri",{"_index":1868,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["jre",{"_index":2166,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["json",{"_index":675,"title":{"91-6":{},"153-6":{}},"name":{},"text":{"8":{},"13":{},"55":{},"78":{},"83":{},"91":{},"112":{},"145":{},"153":{},"158":{},"178":{}},"component":{}}],["jsp",{"_index":4043,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["julian",{"_index":1025,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["jump",{"_index":3017,"title":{},"name":{},"text":{"65":{},"127":{}},"component":{}}],["june",{"_index":329,"title":{},"name":{},"text":{"4":{},"13":{},"174":{}},"component":{}}],["junit",{"_index":676,"title":{"39-3":{},"200-3":{}},"name":{},"text":{"8":{},"29":{},"178":{},"190":{}},"component":{}}],["justifi",{"_index":943,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["justin",{"_index":179,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["kafka",{"_index":121,"title":{"55":{},"158":{},"55-1":{},"55-4":{},"55-6":{},"55-7":{},"55-9":{},"55-10":{},"158-1":{},"158-4":{},"158-6":{},"158-7":{},"158-9":{},"158-10":{}},"name":{"55":{},"158":{}},"text":{"3":{},"13":{},"15":{},"16":{},"36":{},"55":{},"106":{},"107":{},"112":{},"158":{},"173":{},"197":{}},"component":{}}],["kafka_debug=i",{"_index":2816,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["kafka’",{"_index":2789,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["kannel",{"_index":1001,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["kar",{"_index":1487,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["karaf",{"_index":1002,"title":{},"name":{},"text":{"10":{},"15":{},"16":{},"36":{},"106":{},"107":{},"180":{},"197":{}},"component":{}}],["keen",{"_index":909,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["keep",{"_index":257,"title":{"5-4":{},"175-4":{}},"name":{},"text":{"3":{},"9":{},"14":{},"21":{},"26":{},"27":{},"32":{},"34":{},"36":{},"46":{},"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"87":{},"88":{},"103":{},"119":{},"124":{},"125":{},"126":{},"128":{},"133":{},"136":{},"139":{},"140":{},"141":{},"142":{},"143":{},"145":{},"148":{},"149":{},"173":{},"179":{},"187":{},"188":{},"195":{},"197":{},"204":{}},"component":{}}],["key",{"_index":847,"title":{},"name":{},"text":{"9":{},"15":{},"26":{},"34":{},"36":{},"37":{},"41":{},"43":{},"78":{},"106":{},"141":{},"179":{},"187":{},"195":{},"197":{},"198":{}},"component":{}}],["key/valu",{"_index":3451,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["keyserver.ubuntu.com",{"_index":2182,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["keyservers.net",{"_index":2181,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["keystor",{"_index":2390,"title":{},"name":{},"text":{"43":{},"78":{},"141":{}},"component":{}}],["keyword",{"_index":4280,"title":{},"name":{},"text":{"103":{}},"component":{}}],["kibana",{"_index":1548,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["kill",{"_index":1418,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["kind",{"_index":3004,"title":{},"name":{},"text":{"65":{},"66":{},"78":{},"101":{},"127":{},"129":{},"202":{}},"component":{}}],["kindli",{"_index":1097,"title":{},"name":{},"text":{"11":{},"26":{},"181":{},"187":{}},"component":{}}],["kirchheim",{"_index":1030,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["knife",{"_index":1086,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["know",{"_index":1637,"title":{},"name":{},"text":{"17":{},"34":{},"36":{},"50":{},"65":{},"66":{},"83":{},"103":{},"113":{},"123":{},"127":{},"129":{},"145":{},"195":{},"197":{}},"component":{}}],["knowledg",{"_index":4014,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["known",{"_index":892,"title":{"20-1":{},"114-1":{}},"name":{},"text":{"9":{},"179":{}},"component":{}}],["knx",{"_index":1256,"title":{},"name":{},"text":{"15":{},"46":{},"75":{},"103":{},"106":{},"119":{},"138":{}},"component":{}}],["knxeventhandler(ev",{"_index":2521,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["knxnet",{"_index":3198,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["knxnet/ip",{"_index":1372,"title":{"75":{},"138":{}},"name":{},"text":{"15":{},"36":{},"74":{},"75":{},"106":{},"137":{},"138":{},"197":{}},"component":{}}],["knxnetip",{"_index":3197,"title":{},"name":{"75":{},"138":{}},"text":{"75":{},"138":{}},"component":{}}],["knxproj",{"_index":1300,"title":{},"name":{},"text":{"15":{},"75":{},"106":{},"138":{}},"component":{}}],["kommunik",{"_index":386,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["kse",{"_index":2380,"title":{"43-1":{}},"name":{},"text":{"43":{}},"component":{}}],["ksql",{"_index":1165,"title":{},"name":{},"text":{"13":{},"112":{}},"component":{}}],["l",{"_index":1285,"title":{},"name":{},"text":{"15":{},"37":{},"83":{},"106":{},"145":{},"198":{}},"component":{}}],["la",{"_index":988,"title":{},"name":{},"text":{"10":{},"82":{},"83":{},"145":{},"180":{}},"component":{}}],["label",{"_index":1810,"title":{},"name":{},"text":{"26":{},"27":{},"56":{},"159":{},"187":{},"188":{},"193":{}},"component":{}}],["lack",{"_index":1716,"title":{},"name":{},"text":{"21":{},"72":{},"78":{},"135":{},"141":{},"182":{}},"component":{}}],["lalala",{"_index":1896,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["languag",{"_index":100,"title":{"74":{},"21-5":{},"21-8":{},"30-3":{},"31-3":{},"32-3":{},"137-1":{},"182-5":{},"182-8":{}},"name":{},"text":{"3":{},"15":{},"21":{},"27":{},"42":{},"83":{},"84":{},"101":{},"103":{},"106":{},"116":{},"145":{},"147":{},"173":{},"182":{},"188":{},"190":{},"202":{},"204":{}},"component":{}}],["languagenam",{"_index":1719,"title":{},"name":{},"text":{"21":{},"101":{},"182":{},"202":{}},"component":{}}],["languageoutput",{"_index":1761,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["larg",{"_index":1457,"title":{},"name":{},"text":{"15":{},"21":{},"62":{},"82":{},"83":{},"106":{},"125":{},"145":{},"182":{}},"component":{}}],["larger",{"_index":3144,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["last",{"_index":1461,"title":{},"name":{},"text":{"15":{},"17":{},"21":{},"34":{},"36":{},"37":{},"39":{},"41":{},"50":{},"56":{},"71":{},"82":{},"83":{},"90":{},"91":{},"102":{},"103":{},"106":{},"113":{},"115":{},"123":{},"134":{},"145":{},"153":{},"159":{},"182":{},"195":{},"197":{},"198":{},"200":{},"203":{},"204":{}},"component":{}}],["latenc",{"_index":1659,"title":{},"name":{},"text":{"17":{},"41":{},"113":{},"115":{}},"component":{}}],["later",{"_index":108,"title":{},"name":{},"text":{"3":{},"21":{},"77":{},"83":{},"140":{},"145":{},"173":{},"182":{}},"component":{}}],["latest",{"_index":543,"title":{},"name":{},"text":{"5":{},"21":{},"26":{},"29":{},"34":{},"36":{},"46":{},"49":{},"55":{},"119":{},"122":{},"158":{},"175":{},"182":{},"187":{},"190":{},"195":{},"197":{}},"component":{}}],["launch",{"_index":3341,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["law",{"_index":4193,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["lay",{"_index":1703,"title":{},"name":{},"text":{"21":{}},"component":{}}],["layer",{"_index":1689,"title":{},"name":{},"text":{"21":{},"65":{},"66":{},"78":{},"83":{},"93":{},"98":{},"127":{},"129":{},"141":{},"145":{},"165":{},"169":{},"182":{}},"component":{}}],["lazi",{"_index":591,"title":{},"name":{},"text":{"6":{},"176":{}},"component":{}}],["lc10",{"_index":804,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["lc20",{"_index":808,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["lc30",{"_index":811,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["lc40",{"_index":813,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["lc50",{"_index":821,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["ld",{"_index":3523,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["ldap",{"_index":1850,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["leak",{"_index":1292,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["learn",{"_index":1180,"title":{},"name":{},"text":{"13":{},"112":{}},"component":{}}],["leas",{"_index":3983,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["leav",{"_index":2088,"title":{},"name":{},"text":{"34":{},"55":{},"66":{},"83":{},"129":{},"145":{},"158":{},"193":{},"195":{}},"component":{}}],["leb",{"_index":1131,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["led",{"_index":3913,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["left",{"_index":754,"title":{},"name":{},"text":{"8":{},"34":{},"36":{},"55":{},"59":{},"65":{},"103":{},"127":{},"158":{},"162":{},"178":{},"195":{},"197":{},"204":{}},"component":{}}],["legaci",{"_index":1588,"title":{},"name":{},"text":{"16":{},"36":{},"107":{},"197":{}},"component":{}}],["legend",{"_index":3193,"title":{},"name":{},"text":{"74":{},"137":{}},"component":{}}],["len",{"_index":2664,"title":{},"name":{},"text":{"48":{},"103":{},"204":{}},"component":{}}],["len(response.tags[tag_name].valu",{"_index":2649,"title":{},"name":{},"text":{"48":{}},"component":{}}],["length",{"_index":1252,"title":{},"name":{},"text":{"15":{},"62":{},"66":{},"72":{},"77":{},"98":{},"103":{},"106":{},"125":{},"129":{},"135":{},"140":{},"169":{},"204":{}},"component":{}}],["lengthdr\":28,\"szl",{"_index":3899,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["length})[{count",{"_index":3508,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["less",{"_index":744,"title":{},"name":{},"text":{"8":{},"72":{},"82":{},"83":{},"84":{},"86":{},"88":{},"135":{},"145":{},"146":{},"147":{},"149":{},"178":{}},"component":{}}],["let’",{"_index":2342,"title":{},"name":{},"text":{"41":{},"46":{},"50":{},"56":{},"82":{},"83":{},"115":{},"119":{},"123":{},"145":{},"159":{}},"component":{}}],["level",{"_index":765,"title":{},"name":{},"text":{"9":{},"14":{},"15":{},"27":{},"41":{},"59":{},"65":{},"75":{},"78":{},"83":{},"90":{},"93":{},"98":{},"103":{},"106":{},"111":{},"115":{},"127":{},"138":{},"141":{},"145":{},"162":{},"165":{},"169":{},"179":{},"188":{},"204":{}},"component":{}}],["lib",{"_index":2786,"title":{},"name":{},"text":{"55":{},"56":{},"158":{},"159":{}},"component":{}}],["libpcap",{"_index":1919,"title":{"30-4":{},"31-4":{},"32-4":{},"191-2":{},"192-2":{},"193-2":{}},"name":{},"text":{"29":{},"30":{},"31":{},"190":{},"191":{},"192":{},"193":{}},"component":{}}],["librari",{"_index":90,"title":{"3-10":{},"173-11":{}},"name":{},"text":{"3":{},"7":{},"9":{},"12":{},"15":{},"16":{},"31":{},"32":{},"36":{},"83":{},"93":{},"106":{},"107":{},"110":{},"145":{},"165":{},"173":{},"177":{},"179":{},"192":{},"197":{}},"component":{}}],["librecon",{"_index":1177,"title":{},"name":{},"text":{"13":{},"112":{}},"component":{}}],["licens",{"_index":775,"title":{},"name":{},"text":{"9":{},"11":{},"17":{},"37":{},"101":{},"113":{},"179":{},"181":{},"198":{},"202":{}},"component":{}}],["life",{"_index":2178,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["lifetim",{"_index":3323,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["light",{"_index":3440,"title":{"82":{}},"name":{"82":{}},"text":{"82":{}},"component":{}}],["like",{"_index":1009,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["limit",{"_index":446,"title":{},"name":{},"text":{"5":{},"17":{},"21":{},"47":{},"48":{},"50":{},"55":{},"77":{},"78":{},"82":{},"83":{},"88":{},"101":{},"113":{},"121":{},"123":{},"140":{},"141":{},"145":{},"149":{},"158":{},"175":{},"182":{},"202":{}},"component":{}}],["line",{"_index":795,"title":{},"name":{},"text":{"9":{},"15":{},"26":{},"36":{},"37":{},"47":{},"48":{},"50":{},"54":{},"55":{},"56":{},"101":{},"106":{},"121":{},"123":{},"157":{},"158":{},"159":{},"179":{},"187":{},"193":{},"197":{},"198":{},"202":{}},"component":{}}],["lingua",{"_index":3637,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["link",{"_index":32,"title":{"27-2":{},"188-2":{}},"name":{},"text":{"2":{},"8":{},"9":{},"10":{},"17":{},"27":{},"36":{},"83":{},"113":{},"145":{},"172":{},"178":{},"179":{},"180":{},"188":{},"197":{}},"component":{}}],["link_lay",{"_index":3202,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["lint",{"_index":3096,"title":{},"name":{},"text":{"66":{},"70":{},"72":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"129":{},"133":{},"135":{},"139":{},"140":{},"141":{},"144":{},"145":{},"147":{}},"component":{}}],["linux",{"_index":138,"title":{"30":{},"191":{}},"name":{"30":{},"191":{}},"text":{"3":{},"7":{},"9":{},"29":{},"30":{},"32":{},"37":{},"56":{},"81":{},"86":{},"93":{},"97":{},"98":{},"144":{},"146":{},"159":{},"165":{},"167":{},"169":{},"173":{},"177":{},"179":{},"190":{},"198":{}},"component":{}}],["list",{"_index":320,"title":{"14-1":{},"14-2":{},"34-8":{},"36-11":{},"83-22":{},"111-1":{},"111-2":{},"145-22":{},"195-8":{},"197-11":{}},"name":{},"text":{"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"12":{},"14":{},"15":{},"21":{},"36":{},"37":{},"40":{},"41":{},"43":{},"47":{},"48":{},"50":{},"56":{},"59":{},"74":{},"78":{},"81":{},"82":{},"83":{},"86":{},"101":{},"103":{},"106":{},"110":{},"111":{},"121":{},"123":{},"137":{},"144":{},"145":{},"146":{},"159":{},"162":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"182":{},"197":{},"198":{},"202":{},"204":{}},"component":{}}],["listdriv",{"_index":1266,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["listen",{"_index":2987,"title":{},"name":{},"text":{"63":{},"72":{},"75":{},"77":{},"126":{},"135":{},"138":{},"140":{}},"component":{}}],["listservic",{"_index":4390,"title":{},"name":{},"text":{"105":{},"206":{}},"component":{}}],["liter",{"_index":1243,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["littl",{"_index":692,"title":{},"name":{},"text":{"8":{},"12":{},"29":{},"37":{},"43":{},"47":{},"56":{},"82":{},"83":{},"86":{},"88":{},"91":{},"93":{},"110":{},"121":{},"145":{},"146":{},"149":{},"153":{},"159":{},"165":{},"178":{},"190":{},"193":{},"198":{}},"component":{}}],["little_endian",{"_index":3234,"title":{},"name":{},"text":{"77":{},"103":{}},"component":{}}],["little_endian_byte_swap",{"_index":3236,"title":{},"name":{},"text":{"77":{}},"component":{}}],["live",{"_index":1618,"title":{},"name":{},"text":{"17":{},"34":{},"36":{},"86":{},"113":{},"146":{},"195":{},"197":{}},"component":{}}],["lizenzkosten",{"_index":391,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["llvm",{"_index":4473,"title":{},"name":{},"text":{"193":{}},"component":{}}],["lo",{"_index":3602,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["load",{"_index":1927,"title":{},"name":{},"text":{"29":{},"55":{},"62":{},"82":{},"87":{},"104":{},"125":{},"148":{},"158":{},"190":{},"205":{}},"component":{}}],["loaded?truefalsei",{"_index":4384,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["loader",{"_index":3898,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["local",{"_index":50,"title":{},"name":{},"text":{"2":{},"3":{},"5":{},"26":{},"34":{},"36":{},"37":{},"55":{},"63":{},"75":{},"78":{},"81":{},"82":{},"83":{},"103":{},"126":{},"138":{},"141":{},"144":{},"145":{},"158":{},"172":{},"173":{},"175":{},"193":{},"195":{},"197":{},"198":{},"204":{}},"component":{}}],["local_data",{"_index":3524,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["localhost",{"_index":3433,"title":{},"name":{},"text":{"81":{},"144":{}},"component":{}}],["localhost:2181",{"_index":2820,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["localhost:9092",{"_index":2800,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["localtim",{"_index":3396,"title":{},"name":{},"text":{"78":{}},"component":{}}],["locat",{"_index":325,"title":{},"name":{},"text":{"4":{},"5":{},"21":{},"34":{},"36":{},"39":{},"43":{},"63":{},"70":{},"76":{},"78":{},"87":{},"101":{},"126":{},"133":{},"139":{},"141":{},"148":{},"173":{},"174":{},"175":{},"182":{},"193":{},"195":{},"197":{},"200":{},"202":{}},"component":{}}],["log",{"_index":1437,"title":{},"name":{},"text":{"15":{},"26":{},"34":{},"36":{},"50":{},"56":{},"78":{},"83":{},"84":{},"103":{},"106":{},"123":{},"141":{},"145":{},"147":{},"159":{},"187":{},"193":{},"195":{},"197":{},"204":{}},"component":{}}],["log.error(\"error",{"_index":4074,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["log4j",{"_index":1325,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["logger",{"_index":4155,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["logger.error(\"error",{"_index":2590,"title":{},"name":{},"text":{"47":{},"48":{},"50":{},"101":{},"121":{},"123":{},"202":{}},"component":{}}],["logger.error(\"thi",{"_index":2556,"title":{},"name":{},"text":{"47":{},"48":{},"50":{},"121":{},"123":{}},"component":{}}],["logger.info",{"_index":2652,"title":{},"name":{},"text":{"48":{},"50":{},"123":{}},"component":{}}],["logger.info(\"valu",{"_index":2584,"title":{},"name":{},"text":{"47":{},"48":{},"50":{},"121":{},"123":{}},"component":{}}],["loggerfactory.getlogger(javalanguageoutput.class",{"_index":4156,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["logic",{"_index":31,"title":{"40-4":{}},"name":{},"text":{"2":{},"16":{},"17":{},"21":{},"36":{},"39":{},"40":{},"41":{},"55":{},"65":{},"78":{},"84":{},"103":{},"107":{},"113":{},"115":{},"127":{},"141":{},"147":{},"158":{},"172":{},"197":{},"200":{},"204":{}},"component":{}}],["login",{"_index":1807,"title":{"26-2":{},"187-2":{}},"name":{},"text":{"26":{},"175":{},"187":{}},"component":{}}],["logix",{"_index":3189,"title":{"76":{},"139":{}},"name":{"76":{},"139":{}},"text":{"74":{},"76":{},"137":{},"139":{}},"component":{}}],["logix:tcp://127.0.0.1:502?communicationpath=[1,1",{"_index":3225,"title":{},"name":{},"text":{"76":{},"139":{}},"component":{}}],["logix:tcp://{ip",{"_index":3223,"title":{},"name":{},"text":{"76":{},"139":{}},"component":{}}],["logmessag",{"_index":2892,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["logo",{"_index":3442,"title":{},"name":{},"text":{"82":{},"83":{},"88":{},"145":{},"149":{}},"component":{}}],["logstash",{"_index":1523,"title":{},"name":{},"text":{"15":{},"36":{},"106":{},"197":{}},"component":{}}],["long",{"_index":833,"title":{},"name":{},"text":{"9":{},"12":{},"15":{},"50":{},"59":{},"77":{},"78":{},"82":{},"83":{},"87":{},"106":{},"110":{},"123":{},"140":{},"141":{},"145":{},"148":{},"162":{},"179":{}},"component":{}}],["longer",{"_index":1262,"title":{},"name":{},"text":{"15":{},"26":{},"34":{},"36":{},"37":{},"46":{},"77":{},"87":{},"106":{},"119":{},"140":{},"148":{},"187":{},"195":{},"197":{},"198":{}},"component":{}}],["look",{"_index":367,"title":{},"name":{},"text":{"4":{},"5":{},"7":{},"21":{},"27":{},"30":{},"34":{},"36":{},"39":{},"41":{},"46":{},"50":{},"56":{},"62":{},"65":{},"76":{},"77":{},"78":{},"80":{},"82":{},"83":{},"84":{},"85":{},"86":{},"88":{},"93":{},"102":{},"103":{},"115":{},"119":{},"123":{},"125":{},"127":{},"139":{},"140":{},"141":{},"143":{},"145":{},"146":{},"147":{},"149":{},"151":{},"159":{},"165":{},"174":{},"175":{},"177":{},"182":{},"188":{},"193":{},"195":{},"197":{},"200":{},"201":{},"203":{},"204":{}},"component":{}}],["lookup",{"_index":2428,"title":{},"name":{},"text":{"46":{},"78":{},"119":{},"141":{}},"component":{}}],["loop",{"_index":2450,"title":{},"name":{},"text":{"46":{},"48":{},"50":{},"86":{},"90":{},"95":{},"103":{},"119":{},"123":{},"146":{},"166":{},"204":{}},"component":{}}],["loos",{"_index":1619,"title":{},"name":{},"text":{"17":{},"34":{},"113":{},"195":{}},"component":{}}],["loss",{"_index":1633,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["lost",{"_index":3471,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["lot",{"_index":176,"title":{},"name":{},"text":{"3":{},"10":{},"15":{},"17":{},"21":{},"34":{},"36":{},"39":{},"70":{},"84":{},"88":{},"101":{},"103":{},"106":{},"113":{},"133":{},"147":{},"149":{},"173":{},"180":{},"182":{},"193":{},"195":{},"197":{},"200":{},"202":{},"204":{}},"component":{}}],["love",{"_index":1183,"title":{},"name":{},"text":{"13":{},"112":{}},"component":{}}],["low",{"_index":259,"title":{},"name":{},"text":{"3":{},"41":{},"93":{},"98":{},"115":{},"165":{},"169":{},"173":{}},"component":{}}],["lower",{"_index":1891,"title":{},"name":{},"text":{"27":{},"41":{},"66":{},"83":{},"115":{},"129":{},"145":{},"188":{}},"component":{}}],["lowest",{"_index":3075,"title":{},"name":{},"text":{"66":{},"83":{},"129":{},"145":{}},"component":{}}],["lreal",{"_index":3102,"title":{},"name":{},"text":{"66":{},"72":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"129":{},"135":{},"140":{},"141":{},"144":{},"145":{},"147":{}},"component":{}}],["ltime",{"_index":3533,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["luka",{"_index":1060,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["lukasz@connectorio.com",{"_index":1216,"title":{},"name":{},"text":{"14":{},"111":{}},"component":{}}],["lword",{"_index":1309,"title":{},"name":{},"text":{"15":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"106":{},"140":{},"141":{},"144":{},"145":{},"147":{}},"component":{}}],["m",{"_index":1556,"title":{},"name":{},"text":{"15":{},"29":{},"34":{},"36":{},"82":{},"83":{},"106":{},"145":{},"195":{},"197":{}},"component":{}}],["m\"delet",{"_index":2150,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["m\"remov",{"_index":2223,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["m\"stage",{"_index":2114,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["m1",{"_index":2023,"title":{},"name":{},"text":{"32":{}},"component":{}}],["m2",{"_index":2024,"title":{},"name":{},"text":{"32":{},"36":{},"197":{}},"component":{}}],["m2/repositori",{"_index":303,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["m2/settings.xml",{"_index":2169,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["m340",{"_index":3947,"title":{},"name":{},"text":{"85":{}},"component":{}}],["m580",{"_index":3948,"title":{},"name":{},"text":{"85":{}},"component":{}}],["maa",{"_index":359,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["mac",{"_index":136,"title":{"31":{},"192":{}},"name":{},"text":{"3":{},"7":{},"9":{},"26":{},"29":{},"31":{},"32":{},"36":{},"41":{},"56":{},"75":{},"81":{},"86":{},"97":{},"115":{},"138":{},"144":{},"146":{},"159":{},"167":{},"173":{},"177":{},"187":{},"192":{},"193":{},"197":{}},"component":{}}],["mac/linux",{"_index":2254,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["machin",{"_index":221,"title":{"26-2":{},"187-2":{}},"name":{},"text":{"3":{},"10":{},"12":{},"26":{},"27":{},"29":{},"32":{},"83":{},"103":{},"110":{},"145":{},"173":{},"180":{},"187":{},"188":{},"190":{},"193":{}},"component":{}}],["machineri",{"_index":1600,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["maco",{"_index":1923,"title":{},"name":{"31":{},"192":{}},"text":{"29":{},"31":{},"37":{},"179":{},"190":{},"192":{},"198":{}},"component":{}}],["made",{"_index":934,"title":{"83-3":{},"145-3":{}},"name":{},"text":{"9":{},"11":{},"15":{},"17":{},"21":{},"78":{},"82":{},"83":{},"93":{},"106":{},"113":{},"141":{},"145":{},"165":{},"179":{},"181":{},"182":{},"204":{}},"component":{}}],["magic",{"_index":1870,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["mail",{"_index":449,"title":{"34-8":{},"36-11":{},"195-8":{},"197-11":{}},"name":{},"text":{"5":{},"7":{},"9":{},"34":{},"36":{},"175":{},"177":{},"179":{},"195":{},"197":{}},"component":{}}],["mailinglist",{"_index":1199,"title":{},"name":{},"text":{"14":{},"111":{}},"component":{}}],["main",{"_index":935,"title":{},"name":{},"text":{"9":{},"10":{},"12":{},"17":{},"21":{},"22":{},"34":{},"46":{},"47":{},"50":{},"59":{},"72":{},"75":{},"82":{},"83":{},"87":{},"88":{},"90":{},"92":{},"93":{},"103":{},"110":{},"113":{},"119":{},"121":{},"123":{},"135":{},"138":{},"145":{},"148":{},"149":{},"151":{},"152":{},"162":{},"165":{},"173":{},"179":{},"180":{},"182":{},"195":{}},"component":{}}],["main(str",{"_index":3711,"title":{},"name":{},"text":{"83":{},"87":{},"90":{},"145":{},"148":{},"151":{}},"component":{}}],["mainli",{"_index":1242,"title":{},"name":{},"text":{"15":{},"21":{},"34":{},"36":{},"87":{},"103":{},"106":{},"148":{},"195":{},"197":{}},"component":{}}],["mainstream",{"_index":1012,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["maintain",{"_index":931,"title":{},"name":{},"text":{"9":{},"12":{},"21":{},"27":{},"52":{},"83":{},"110":{},"145":{},"179":{},"182":{},"188":{}},"component":{}}],["major",{"_index":590,"title":{},"name":{},"text":{"6":{},"15":{},"34":{},"36":{},"37":{},"55":{},"62":{},"93":{},"106":{},"125":{},"158":{},"165":{},"176":{},"195":{},"197":{},"198":{}},"component":{}}],["make",{"_index":93,"title":{"6":{},"176":{},"6-5":{},"176-5":{}},"name":{},"text":{"3":{},"5":{},"7":{},"9":{},"15":{},"16":{},"17":{},"21":{},"23":{},"26":{},"27":{},"29":{},"31":{},"32":{},"34":{},"36":{},"37":{},"39":{},"46":{},"50":{},"55":{},"56":{},"59":{},"65":{},"66":{},"70":{},"78":{},"83":{},"90":{},"103":{},"106":{},"107":{},"113":{},"119":{},"123":{},"127":{},"129":{},"133":{},"145":{},"151":{},"158":{},"159":{},"162":{},"173":{},"175":{},"177":{},"179":{},"182":{},"184":{},"187":{},"188":{},"190":{},"192":{},"193":{},"195":{},"197":{},"198":{},"200":{},"204":{}},"component":{}}],["manag",{"_index":554,"title":{"6-3":{},"176-3":{}},"name":{},"text":{"9":{},"12":{},"15":{},"21":{},"28":{},"29":{},"34":{},"36":{},"46":{},"54":{},"55":{},"83":{},"88":{},"90":{},"91":{},"92":{},"106":{},"110":{},"119":{},"145":{},"149":{},"152":{},"153":{},"157":{},"158":{},"179":{},"182":{},"189":{},"190":{},"195":{},"197":{}},"component":{}}],["mandatori",{"_index":809,"title":{},"name":{},"text":{"9":{},"70":{},"86":{},"133":{},"146":{},"179":{}},"component":{}}],["manejo",{"_index":3576,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["mani",{"_index":575,"title":{},"name":{},"text":{"6":{},"15":{},"43":{},"46":{},"47":{},"48":{},"50":{},"72":{},"82":{},"83":{},"87":{},"90":{},"92":{},"102":{},"103":{},"106":{},"119":{},"121":{},"123":{},"135":{},"145":{},"148":{},"151":{},"152":{},"176":{},"203":{},"204":{}},"component":{}}],["manner",{"_index":887,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["manual",{"_index":110,"title":{"103-11":{},"204-10":{}},"name":{},"text":{"3":{},"21":{},"30":{},"34":{},"36":{},"39":{},"46":{},"54":{},"56":{},"62":{},"66":{},"78":{},"82":{},"83":{},"85":{},"103":{},"119":{},"125":{},"129":{},"141":{},"145":{},"157":{},"159":{},"173":{},"182":{},"191":{},"193":{},"195":{},"197":{},"200":{},"204":{}},"component":{}}],["manualarray",{"_index":4244,"title":{"103-10":{},"204-9":{}},"name":{},"text":{"102":{},"103":{},"203":{},"204":{}},"component":{}}],["manufactur",{"_index":1040,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["map",{"_index":1091,"title":{"90":{},"151":{},"90-1":{},"151-1":{}},"name":{},"text":{"10":{},"15":{},"16":{},"21":{},"55":{},"66":{},"72":{},"77":{},"78":{},"82":{},"83":{},"90":{},"91":{},"101":{},"103":{},"106":{},"107":{},"129":{},"135":{},"140":{},"141":{},"145":{},"151":{},"153":{},"158":{},"180":{},"182":{},"202":{},"204":{}},"component":{}}],["map.foreach((x",{"_index":3728,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["map.get(s7modeevent.fields.current_mode.nam",{"_index":3731,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["map.get(s7sysevent.fields.event_id.nam",{"_index":3779,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["march",{"_index":352,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["mark",{"_index":659,"title":{},"name":{},"text":{"8":{},"26":{},"66":{},"90":{},"102":{},"129":{},"178":{},"187":{},"203":{}},"component":{}}],["mark_par",{"_index":3155,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["marker",{"_index":1557,"title":{},"name":{},"text":{"15":{},"36":{},"106":{},"197":{}},"component":{}}],["market",{"_index":907,"title":{},"name":{},"text":{"9":{},"12":{},"72":{},"110":{},"135":{},"179":{}},"component":{}}],["markup",{"_index":1876,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["mask",{"_index":3044,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["master",{"_index":3919,"title":{},"name":{},"text":{"83":{},"102":{},"145":{},"203":{}},"component":{}}],["match",{"_index":1310,"title":{},"name":{},"text":{"15":{},"21":{},"26":{},"39":{},"59":{},"63":{},"75":{},"76":{},"78":{},"81":{},"103":{},"106":{},"126":{},"138":{},"139":{},"141":{},"144":{},"162":{},"187":{},"200":{},"204":{}},"component":{}}],["materi",{"_index":317,"title":{"4-1":{},"174-1":{}},"name":{},"text":{},"component":{}}],["mathemat",{"_index":1034,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["matrix",{"_index":1800,"title":{},"name":{},"text":{"22":{}},"component":{}}],["matter",{"_index":925,"title":{},"name":{},"text":{"9":{},"26":{},"34":{},"36":{},"39":{},"55":{},"158":{},"179":{},"187":{},"193":{},"195":{},"197":{},"200":{}},"component":{}}],["matthia",{"_index":1074,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["matur",{"_index":758,"title":{"9":{},"179":{},"9-2":{},"179-2":{}},"name":{"9":{},"179":{}},"text":{"9":{},"179":{}},"component":{}}],["maven",{"_index":77,"title":{"3-2":{},"3-3":{},"3-4":{},"3-5":{},"3-6":{},"21-6":{},"34-11":{},"36-15":{},"173-2":{},"173-3":{},"173-4":{},"173-5":{},"173-6":{},"182-6":{},"195-11":{},"197-15":{}},"name":{},"text":{"3":{},"7":{},"8":{},"9":{},"21":{},"27":{},"29":{},"32":{},"34":{},"36":{},"37":{},"40":{},"46":{},"47":{},"49":{},"50":{},"56":{},"59":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"91":{},"92":{},"93":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"119":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"128":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"147":{},"152":{},"153":{},"159":{},"162":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"173":{},"177":{},"178":{},"179":{},"182":{},"183":{},"188":{},"190":{},"195":{},"197":{},"198":{},"202":{}},"component":{}}],["mavencentr",{"_index":306,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["mavenloc",{"_index":307,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["maven’",{"_index":1786,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["max",{"_index":1391,"title":{},"name":{},"text":{"15":{},"77":{},"82":{},"83":{},"106":{},"145":{}},"component":{}}],["maxim",{"_index":3620,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["maximum",{"_index":1251,"title":{},"name":{},"text":{"15":{},"63":{},"75":{},"77":{},"78":{},"82":{},"83":{},"95":{},"106":{},"126":{},"138":{},"141":{},"145":{},"166":{}},"component":{}}],["maxleasetim",{"_index":3992,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["maxwaittim",{"_index":3994,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["mclean",{"_index":180,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["md5",{"_index":1836,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["md5.html",{"_index":4446,"title":{},"name":{},"text":{"187":{}},"component":{}}],["mean",{"_index":47,"title":{},"name":{},"text":{"2":{},"3":{},"21":{},"66":{},"78":{},"88":{},"98":{},"102":{},"103":{},"129":{},"149":{},"151":{},"169":{},"172":{},"173":{},"182":{},"203":{},"204":{}},"component":{}}],["meaning",{"_index":2806,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["meant",{"_index":760,"title":{},"name":{},"text":{"9":{},"93":{},"165":{},"179":{}},"component":{}}],["measur",{"_index":2733,"title":{},"name":{},"text":{"54":{},"83":{},"145":{},"157":{}},"component":{}}],["mechan",{"_index":1744,"title":{},"name":{},"text":{"21":{},"27":{},"41":{},"115":{},"182":{},"188":{}},"component":{}}],["meet",{"_index":429,"title":{},"name":{},"text":{"4":{},"6":{},"9":{},"10":{},"13":{},"34":{},"36":{},"103":{},"112":{},"174":{},"176":{},"179":{},"180":{},"195":{},"197":{},"204":{}},"component":{}}],["meetup",{"_index":333,"title":{},"name":{},"text":{"4":{},"13":{},"112":{},"174":{}},"component":{}}],["mehr",{"_index":420,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["member",{"_index":571,"title":{},"name":{},"text":{"6":{},"9":{},"10":{},"14":{},"26":{},"34":{},"36":{},"111":{},"176":{},"179":{},"180":{},"187":{},"195":{},"197":{}},"component":{}}],["memori",{"_index":1103,"title":{"77-14":{},"82-9":{},"83-12":{},"85-6":{},"140-14":{},"145-12":{}},"name":{},"text":{"11":{},"15":{},"46":{},"77":{},"82":{},"83":{},"84":{},"85":{},"87":{},"90":{},"102":{},"103":{},"106":{},"119":{},"140":{},"145":{},"147":{},"148":{},"181":{},"203":{},"204":{}},"component":{}}],["mention",{"_index":812,"title":{},"name":{},"text":{"9":{},"12":{},"21":{},"34":{},"36":{},"37":{},"87":{},"90":{},"91":{},"101":{},"103":{},"110":{},"148":{},"153":{},"179":{},"182":{},"195":{},"197":{},"198":{},"202":{}},"component":{}}],["mentor",{"_index":761,"title":{},"name":{},"text":{"9":{},"10":{},"179":{},"180":{}},"component":{}}],["menu",{"_index":1862,"title":{"27-2":{},"188-2":{}},"name":{},"text":{"27":{},"30":{},"188":{},"191":{}},"component":{}}],["merg",{"_index":504,"title":{"34-12":{},"36-17":{},"195-12":{},"197-17":{}},"name":{},"text":{"5":{},"15":{},"34":{},"36":{},"82":{},"106":{},"175":{},"195":{},"197":{}},"component":{}}],["meritocrat",{"_index":911,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["messag",{"_index":469,"title":{},"name":{},"text":{"5":{},"9":{},"15":{},"30":{},"31":{},"32":{},"34":{},"36":{},"43":{},"47":{},"48":{},"50":{},"56":{},"62":{},"66":{},"75":{},"78":{},"82":{},"83":{},"84":{},"101":{},"102":{},"103":{},"106":{},"121":{},"123":{},"125":{},"129":{},"138":{},"141":{},"145":{},"147":{},"159":{},"175":{},"179":{},"195":{},"197":{},"202":{},"203":{},"204":{}},"component":{}}],["messagecodec",{"_index":29,"title":{},"name":{},"text":{"2":{},"172":{}},"component":{}}],["messageend",{"_index":4234,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["messagesecur",{"_index":4423,"title":{},"name":{},"text":{"141":{}},"component":{}}],["messagestart",{"_index":4226,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["messagetyp",{"_index":4266,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["met",{"_index":621,"title":{},"name":{},"text":{"7":{},"30":{},"31":{},"32":{},"177":{}},"component":{}}],["meta",{"_index":1745,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["metadata",{"_index":2335,"title":{"41-4":{},"78-13":{}},"name":{},"text":{"41":{},"47":{},"48":{},"50":{},"78":{},"121":{},"123":{}},"component":{}}],["method",{"_index":1265,"title":{},"name":{},"text":{"15":{},"21":{},"39":{},"46":{},"47":{},"48":{},"50":{},"82":{},"83":{},"87":{},"90":{},"91":{},"101":{},"103":{},"106":{},"119":{},"121":{},"123":{},"145":{},"148":{},"151":{},"153":{},"182":{},"200":{},"202":{},"204":{}},"component":{}}],["mi",{"_index":2735,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["micro",{"_index":3416,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["microsecond",{"_index":3534,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["microservic",{"_index":3980,"title":{},"name":{},"text":{"87":{},"88":{},"148":{},"149":{}},"component":{}}],["microsoft",{"_index":1963,"title":{},"name":{},"text":{"30":{},"31":{},"32":{},"191":{},"192":{}},"component":{}}],["middl",{"_index":3511,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["midi",{"_index":3128,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["milan",{"_index":1075,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["millisecond",{"_index":3325,"title":{},"name":{},"text":{"78":{},"82":{},"83":{},"91":{},"141":{},"145":{},"153":{}},"component":{}}],["milo",{"_index":1337,"title":{"59":{}},"name":{"59":{},"162":{}},"text":{"15":{},"59":{},"78":{},"106":{},"141":{},"162":{}},"component":{}}],["min",{"_index":1920,"title":{},"name":{},"text":{"29":{},"190":{}},"component":{}}],["mind",{"_index":1029,"title":{},"name":{},"text":{"10":{},"12":{},"27":{},"110":{},"180":{},"188":{}},"component":{}}],["mingw",{"_index":2035,"title":{},"name":{},"text":{"32":{}},"component":{}}],["minim",{"_index":1780,"title":{},"name":{},"text":{"21":{},"48":{},"182":{}},"component":{}}],["minimum",{"_index":227,"title":{},"name":{},"text":{"3":{},"7":{},"21":{},"30":{},"31":{},"32":{},"34":{},"36":{},"78":{},"141":{},"173":{},"177":{},"182":{},"195":{},"197":{}},"component":{}}],["minor",{"_index":546,"title":{},"name":{},"text":{"5":{},"15":{},"34":{},"36":{},"37":{},"106":{},"175":{},"195":{},"197":{},"198":{}},"component":{}}],["minut",{"_index":3327,"title":{},"name":{},"text":{"78":{},"82":{},"83":{},"141":{},"145":{}},"component":{}}],["mirror",{"_index":2145,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["miss",{"_index":431,"title":{},"name":{},"text":{"4":{},"7":{},"15":{},"17":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"83":{},"106":{},"113":{},"145":{},"174":{},"177":{},"195":{},"197":{},"198":{}},"component":{}}],["mission",{"_index":2775,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["mit",{"_index":340,"title":{},"name":{},"text":{"4":{},"13":{},"112":{},"174":{}},"component":{}}],["mitsch",{"_index":1093,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["mitsubishi",{"_index":3404,"title":{},"name":{},"text":{"78":{}},"component":{}}],["mittelstand",{"_index":1187,"title":{},"name":{},"text":{"13":{},"112":{}},"component":{}}],["mock",{"_index":1257,"title":{"92-1":{},"92-3":{},"152-1":{},"152-3":{}},"name":{},"text":{"15":{},"92":{},"106":{},"152":{}},"component":{}}],["mock:mi",{"_index":4110,"title":{},"name":{},"text":{"92":{},"152":{}},"component":{}}],["mock:{nam",{"_index":4088,"title":{},"name":{},"text":{"92":{},"152":{}},"component":{}}],["mockdevic",{"_index":4089,"title":{},"name":{},"text":{"92":{},"152":{}},"component":{}}],["mockdriv",{"_index":4104,"title":{},"name":{},"text":{"92":{},"152":{}},"component":{}}],["mockito",{"_index":4105,"title":{},"name":{},"text":{"92":{},"152":{}},"component":{}}],["mockito.mock(mockdevice.class",{"_index":4106,"title":{},"name":{},"text":{"92":{},"152":{}},"component":{}}],["mod",{"_index":2417,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["modbu",{"_index":63,"title":{"50":{},"77":{},"123":{},"140":{},"50-1":{},"50-2":{},"77-2":{},"77-4":{},"77-7":{},"123-1":{},"123-2":{},"140-2":{},"140-4":{},"140-7":{}},"name":{"50":{},"77":{},"123":{},"140":{}},"text":{"2":{},"15":{},"36":{},"39":{},"46":{},"50":{},"57":{},"59":{},"71":{},"74":{},"77":{},"106":{},"119":{},"123":{},"134":{},"137":{},"140":{},"160":{},"162":{},"172":{},"197":{},"200":{}},"component":{}}],["modbus://127.0.0.1:5020",{"_index":2619,"title":{},"name":{},"text":{"48":{}},"component":{}}],["modbusdevic",{"_index":2928,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["modbusiotest",{"_index":2311,"title":{},"name":{},"text":{"39":{},"200":{}},"component":{}}],["modbusp",{"_index":2674,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["modbuspal.jar",{"_index":2675,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["modbustcpadu",{"_index":2290,"title":{},"name":{},"text":{"39":{},"200":{}},"component":{}}],["modbustcpaduio.pars",{"_index":2298,"title":{},"name":{},"text":{"39":{},"200":{}},"component":{}}],["modbustcpaduio.seri",{"_index":2297,"title":{},"name":{},"text":{"39":{},"200":{}},"component":{}}],["modbustestsuite.xml",{"_index":2314,"title":{},"name":{},"text":{"39":{},"200":{}},"component":{}}],["mode",{"_index":1528,"title":{"55-7":{},"55-10":{},"83-18":{},"145-18":{},"158-7":{},"158-10":{}},"name":{},"text":{"15":{},"21":{},"41":{},"50":{},"55":{},"66":{},"78":{},"83":{},"86":{},"102":{},"106":{},"115":{},"123":{},"129":{},"141":{},"145":{},"146":{},"158":{},"182":{},"203":{}},"component":{}}],["model",{"_index":443,"title":{"9":{},"179":{},"5-7":{},"9-2":{},"54-1":{},"157-1":{},"175-7":{},"179-2":{}},"name":{},"text":{"5":{},"9":{},"15":{},"17":{},"21":{},"39":{},"41":{},"72":{},"78":{},"83":{},"102":{},"103":{},"106":{},"113":{},"115":{},"135":{},"141":{},"145":{},"175":{},"179":{},"182":{},"200":{},"203":{},"204":{}},"component":{}}],["model.html",{"_index":768,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["modern",{"_index":1610,"title":{},"name":{},"text":{"17":{},"88":{},"113":{},"149":{}},"component":{}}],["modetransitiontyp",{"_index":3707,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["modetransitiontype.enumforvalue(currentmode).nam",{"_index":3734,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["modif",{"_index":3040,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["modifi",{"_index":1895,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["modul",{"_index":212,"title":{"21-3":{},"21-4":{},"21-5":{},"21-7":{},"34-1":{},"40-1":{},"40-2":{},"182-3":{},"182-4":{},"182-5":{},"182-7":{},"195-1":{}},"name":{},"text":{"3":{},"7":{},"8":{},"9":{},"15":{},"16":{},"21":{},"27":{},"29":{},"30":{},"34":{},"36":{},"39":{},"40":{},"46":{},"47":{},"50":{},"76":{},"83":{},"88":{},"90":{},"91":{},"92":{},"101":{},"106":{},"107":{},"119":{},"121":{},"123":{},"139":{},"145":{},"149":{},"151":{},"152":{},"153":{},"173":{},"177":{},"178":{},"179":{},"182":{},"188":{},"190":{},"191":{},"195":{},"197":{},"200":{},"202":{}},"component":{}}],["modular",{"_index":1694,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["moment",{"_index":2059,"title":{},"name":{},"text":{"34":{},"36":{},"83":{},"145":{},"195":{},"197":{}},"component":{}}],["money",{"_index":1647,"title":{},"name":{},"text":{"17":{},"27":{},"113":{},"188":{}},"component":{}}],["monitor",{"_index":870,"title":{},"name":{},"text":{"9":{},"12":{},"17":{},"91":{},"92":{},"104":{},"110":{},"113":{},"152":{},"153":{},"179":{},"205":{}},"component":{}}],["monolith",{"_index":460,"title":{},"name":{},"text":{"5":{},"175":{}},"component":{}}],["montreal",{"_index":402,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["more",{"_index":107,"title":{"62-4":{},"63-6":{},"65-1":{},"66-4":{},"72-4":{},"78-15":{},"125-4":{},"126-6":{},"127-1":{},"129-4":{},"135-4":{},"141-11":{},"151-4":{}},"name":{},"text":{"3":{},"6":{},"9":{},"10":{},"15":{},"17":{},"20":{},"21":{},"26":{},"27":{},"34":{},"36":{},"37":{},"41":{},"47":{},"48":{},"50":{},"56":{},"66":{},"78":{},"82":{},"83":{},"86":{},"87":{},"88":{},"90":{},"92":{},"101":{},"103":{},"106":{},"113":{},"114":{},"115":{},"121":{},"123":{},"129":{},"145":{},"146":{},"148":{},"149":{},"152":{},"159":{},"173":{},"175":{},"176":{},"179":{},"180":{},"182":{},"188":{},"195":{},"197":{},"198":{},"202":{},"204":{}},"component":{}}],["mostli",{"_index":1507,"title":{},"name":{},"text":{"15":{},"16":{},"21":{},"106":{},"107":{}},"component":{}}],["mount",{"_index":716,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["mous",{"_index":2897,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["move",{"_index":1509,"title":{},"name":{},"text":{"15":{},"34":{},"36":{},"59":{},"106":{},"162":{},"195":{},"197":{}},"component":{}}],["mpi",{"_index":3627,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["mqtt",{"_index":1661,"title":{},"name":{},"text":{"17":{},"83":{},"113":{},"145":{}},"component":{}}],["ms",{"_index":3675,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["msec",{"_index":3829,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["msg",{"_index":3733,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["msg).getmap",{"_index":3727,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["mspec",{"_index":1322,"title":{"102":{},"103":{},"203":{},"204":{}},"name":{"103":{},"204":{}},"text":{"15":{},"21":{},"39":{},"40":{},"83":{},"102":{},"103":{},"106":{},"145":{},"182":{},"200":{},"203":{},"204":{}},"component":{}}],["much",{"_index":1294,"title":{},"name":{},"text":{"15":{},"17":{},"21":{},"46":{},"56":{},"83":{},"90":{},"103":{},"106":{},"113":{},"119":{},"145":{},"151":{},"159":{}},"component":{}}],["muestren",{"_index":3601,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["multi",{"_index":1551,"title":{},"name":{},"text":{"15":{},"22":{},"78":{},"104":{},"106":{},"141":{},"183":{},"205":{}},"component":{}}],["multipl",{"_index":51,"title":{},"name":{},"text":{"2":{},"3":{},"5":{},"9":{},"15":{},"21":{},"29":{},"36":{},"39":{},"63":{},"66":{},"72":{},"74":{},"75":{},"76":{},"77":{},"78":{},"81":{},"87":{},"88":{},"91":{},"92":{},"93":{},"101":{},"106":{},"126":{},"129":{},"135":{},"137":{},"138":{},"139":{},"140":{},"144":{},"148":{},"149":{},"152":{},"153":{},"165":{},"172":{},"173":{},"175":{},"179":{},"182":{},"190":{},"193":{},"197":{},"200":{},"202":{}},"component":{}}],["music",{"_index":3129,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["mutat",{"_index":3387,"title":{},"name":{},"text":{"78":{}},"component":{}}],["mvn",{"_index":144,"title":{},"name":{},"text":{"3":{},"8":{},"27":{},"34":{},"36":{},"59":{},"162":{},"173":{},"178":{},"188":{},"195":{},"197":{}},"component":{}}],["mvn.cmd",{"_index":145,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["mvn/maven",{"_index":150,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["mvnw",{"_index":135,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["mvnw.cmd",{"_index":139,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["mx",{"_index":3405,"title":{},"name":{},"text":{"78":{}},"component":{}}],["my@email",{"_index":1820,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["myadress",{"_index":4111,"title":{},"name":{},"text":{"92":{},"152":{}},"component":{}}],["myentiti",{"_index":4019,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["myid@plc4x",{"_index":1832,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["n",{"_index":2980,"title":{},"name":{},"text":{"62":{},"82":{},"83":{},"104":{},"125":{},"145":{},"205":{}},"component":{}}],["n/a",{"_index":3183,"title":{},"name":{},"text":{"72":{},"135":{}},"component":{}}],["na",{"_index":404,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["nak",{"_index":4203,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["name",{"_index":311,"title":{},"name":{},"text":{"3":{},"10":{},"12":{},"14":{},"15":{},"21":{},"26":{},"27":{},"30":{},"34":{},"36":{},"37":{},"39":{},"40":{},"41":{},"43":{},"46":{},"47":{},"48":{},"50":{},"54":{},"55":{},"56":{},"59":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"90":{},"91":{},"93":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"106":{},"110":{},"111":{},"115":{},"119":{},"121":{},"123":{},"124":{},"125":{},"126":{},"128":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"147":{},"148":{},"153":{},"157":{},"158":{},"159":{},"162":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"173":{},"180":{},"182":{},"187":{},"188":{},"191":{},"195":{},"197":{},"198":{},"200":{},"202":{},"203":{},"204":{}},"component":{}}],["namespac",{"_index":3384,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["namespace(n",{"_index":3357,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["name}.{child",{"_index":3955,"title":{},"name":{},"text":{"85":{}},"component":{}}],["name}.{output",{"_index":1732,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["name}.{protocol",{"_index":1731,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["name}://{transport",{"_index":2693,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["name}:{data",{"_index":3956,"title":{},"name":{},"text":{"85":{}},"component":{}}],["name}:{transport",{"_index":2692,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["name}={opt",{"_index":2365,"title":{},"name":{},"text":{"41":{},"115":{}},"component":{}}],["nanosecond",{"_index":3535,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["nar",{"_index":2874,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["nar/target",{"_index":2877,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["nativ",{"_index":1335,"title":{},"name":{},"text":{"15":{},"54":{},"106":{},"157":{},"193":{}},"component":{}}],["natur",{"_index":862,"title":{},"name":{},"text":{"9":{},"83":{},"145":{},"179":{}},"component":{}}],["navig",{"_index":1884,"title":{},"name":{},"text":{"27":{},"43":{},"48":{},"188":{}},"component":{}}],["ndodeid",{"_index":3057,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["near",{"_index":1680,"title":{},"name":{},"text":{"21":{},"46":{},"91":{},"119":{},"153":{},"173":{},"182":{},"183":{}},"component":{}}],["necess",{"_index":3342,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["necessari",{"_index":2972,"title":{},"name":{},"text":{"62":{},"66":{},"72":{},"83":{},"103":{},"125":{},"129":{},"135":{},"145":{},"204":{}},"component":{}}],["need",{"_index":173,"title":{},"name":{},"text":{"3":{},"6":{},"7":{},"8":{},"9":{},"15":{},"17":{},"21":{},"26":{},"27":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"39":{},"40":{},"46":{},"47":{},"48":{},"49":{},"50":{},"54":{},"55":{},"56":{},"70":{},"75":{},"78":{},"81":{},"83":{},"85":{},"86":{},"90":{},"91":{},"92":{},"93":{},"101":{},"103":{},"106":{},"113":{},"119":{},"121":{},"122":{},"123":{},"133":{},"138":{},"141":{},"144":{},"145":{},"146":{},"152":{},"153":{},"157":{},"158":{},"159":{},"165":{},"173":{},"175":{},"176":{},"177":{},"178":{},"179":{},"182":{},"187":{},"188":{},"190":{},"191":{},"192":{},"193":{},"195":{},"197":{},"200":{},"202":{}},"component":{}}],["negoti",{"_index":3307,"title":{"78-6":{},"141-6":{}},"name":{},"text":{"78":{},"82":{},"83":{},"141":{},"145":{}},"component":{}}],["neo4j",{"_index":648,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["net",{"_index":214,"title":{},"name":{},"text":{"3":{},"15":{},"16":{},"29":{},"30":{},"36":{},"62":{},"78":{},"82":{},"83":{},"106":{},"107":{},"125":{},"141":{},"145":{},"173":{},"190":{},"191":{},"197":{}},"component":{}}],["netti",{"_index":1518,"title":{},"name":{},"text":{"15":{},"83":{},"106":{},"145":{}},"component":{}}],["network",{"_index":2347,"title":{"63-1":{},"126-1":{}},"name":{},"text":{"41":{},"63":{},"78":{},"81":{},"82":{},"83":{},"86":{},"87":{},"95":{},"96":{},"115":{},"126":{},"144":{},"145":{},"146":{},"148":{},"166":{},"168":{}},"component":{}}],["never",{"_index":1657,"title":{},"name":{},"text":{"17":{},"21":{},"55":{},"113":{},"158":{},"182":{}},"component":{}}],["new",{"_index":299,"title":{"40":{},"15-3":{},"15-8":{},"15-14":{},"15-18":{},"15-22":{},"15-26":{},"15-30":{},"15-34":{},"15-39":{},"15-43":{},"27-1":{},"36-13":{},"40-1":{},"40-2":{},"106-3":{},"106-8":{},"106-14":{},"106-18":{},"106-22":{},"106-26":{},"106-30":{},"106-34":{},"106-39":{},"106-43":{},"188-1":{},"197-13":{}},"name":{},"text":{"3":{},"4":{},"5":{},"6":{},"8":{},"9":{},"10":{},"12":{},"13":{},"15":{},"17":{},"21":{},"26":{},"27":{},"29":{},"31":{},"34":{},"36":{},"40":{},"41":{},"43":{},"46":{},"47":{},"48":{},"50":{},"56":{},"66":{},"78":{},"82":{},"83":{},"84":{},"87":{},"88":{},"90":{},"91":{},"92":{},"101":{},"103":{},"106":{},"110":{},"112":{},"113":{},"115":{},"119":{},"121":{},"123":{},"129":{},"141":{},"145":{},"147":{},"148":{},"149":{},"151":{},"152":{},"153":{},"159":{},"173":{},"174":{},"175":{},"176":{},"178":{},"179":{},"180":{},"182":{},"188":{},"190":{},"192":{},"195":{},"197":{},"202":{}},"component":{}}],["newer",{"_index":116,"title":{},"name":{},"text":{"3":{},"29":{},"31":{},"34":{},"36":{},"47":{},"56":{},"121":{},"159":{},"173":{},"192":{},"195":{},"197":{}},"component":{}}],["newli",{"_index":2679,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["next",{"_index":132,"title":{"34-2":{},"36-5":{},"195-2":{},"197-5":{}},"name":{},"text":{"3":{},"6":{},"17":{},"34":{},"36":{},"43":{},"46":{},"50":{},"56":{},"87":{},"90":{},"91":{},"101":{},"103":{},"113":{},"119":{},"123":{},"148":{},"153":{},"159":{},"173":{},"176":{},"195":{},"197":{},"202":{},"204":{}},"component":{}}],["nexu",{"_index":1804,"title":{},"name":{},"text":{"22":{},"34":{},"36":{},"183":{},"195":{},"197":{}},"component":{}}],["nfi",{"_index":2010,"title":{},"name":{},"text":{"31":{},"192":{}},"component":{}}],["ng",{"_index":3428,"title":{},"name":{},"text":{"81":{},"83":{},"144":{},"145":{}},"component":{}}],["nice",{"_index":1715,"title":{},"name":{},"text":{"21":{},"34":{},"36":{},"43":{},"182":{},"195":{},"197":{}},"component":{}}],["nifi",{"_index":1289,"title":{"56":{},"159":{},"56-1":{},"56-2":{},"56-3":{},"159-1":{},"159-2":{},"159-3":{}},"name":{"56":{},"159":{}},"text":{"15":{},"16":{},"36":{},"56":{},"106":{},"107":{},"159":{},"197":{}},"component":{}}],["nifi.bat",{"_index":2872,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["nifi.sh",{"_index":2871,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["nifi/nifi",{"_index":2876,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["nightmar",{"_index":1675,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["nil",{"_index":2440,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["nioeventloopgroup",{"_index":1358,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["nmap",{"_index":4466,"title":{},"name":{},"text":{"193":{}},"component":{}}],["nmt",{"_index":3026,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["nmt:nodeid",{"_index":3070,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["no_par",{"_index":3149,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["node",{"_index":1903,"title":{},"name":{},"text":{"27":{},"55":{},"66":{},"72":{},"78":{},"86":{},"129":{},"135":{},"146":{},"158":{},"188":{}},"component":{}}],["nodeid",{"_index":3073,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["nodeid:type[arrays",{"_index":3184,"title":{},"name":{},"text":{"72":{},"135":{}},"component":{}}],["non",{"_index":11,"title":{"2-3":{},"172-3":{}},"name":{},"text":{"2":{},"17":{},"21":{},"27":{},"34":{},"36":{},"41":{},"50":{},"86":{},"103":{},"113":{},"115":{},"123":{},"146":{},"172":{},"188":{},"195":{},"197":{}},"component":{}}],["none",{"_index":1865,"title":{},"name":{},"text":{"27":{},"32":{},"78":{},"93":{},"96":{},"97":{},"98":{},"99":{},"100":{},"141":{},"165":{},"167":{},"168":{},"169":{},"170":{},"171":{},"188":{}},"component":{}}],["normal",{"_index":292,"title":{},"name":{},"text":{"3":{},"8":{},"21":{},"26":{},"27":{},"36":{},"41":{},"46":{},"47":{},"56":{},"59":{},"63":{},"71":{},"75":{},"78":{},"83":{},"87":{},"88":{},"95":{},"103":{},"115":{},"119":{},"121":{},"126":{},"134":{},"138":{},"145":{},"148":{},"149":{},"159":{},"162":{},"166":{},"178":{},"182":{},"187":{},"188":{},"197":{},"204":{}},"component":{}}],["nortec",{"_index":419,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["not_found",{"_index":2658,"title":{},"name":{},"text":{"48":{},"50":{},"123":{}},"component":{}}],["notat",{"_index":1373,"title":{"83-23":{},"145-23":{}},"name":{},"text":{"15":{},"36":{},"50":{},"66":{},"82":{},"83":{},"103":{},"106":{},"123":{},"129":{},"145":{},"197":{}},"component":{}}],["note",{"_index":750,"title":{"93-1":{},"165-1":{}},"name":{},"text":{"8":{},"9":{},"15":{},"20":{},"26":{},"36":{},"46":{},"71":{},"76":{},"77":{},"78":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"90":{},"93":{},"103":{},"106":{},"114":{},"119":{},"134":{},"139":{},"140":{},"141":{},"143":{},"144":{},"145":{},"147":{},"165":{},"178":{},"179":{},"187":{},"197":{},"204":{}},"component":{}}],["noth",{"_index":2891,"title":{},"name":{},"text":{"56":{},"92":{},"103":{},"152":{},"159":{},"204":{}},"component":{}}],["notic",{"_index":602,"title":{},"name":{},"text":{"6":{},"21":{},"27":{},"36":{},"37":{},"56":{},"101":{},"159":{},"176":{},"182":{},"188":{},"197":{},"198":{},"202":{}},"component":{}}],["notif",{"_index":498,"title":{"78-11":{},"78-12":{}},"name":{},"text":{"5":{},"34":{},"36":{},"78":{},"83":{},"145":{},"175":{},"195":{},"197":{}},"component":{}}],["notifi",{"_index":2158,"title":{"36-20":{},"197-20":{}},"name":{},"text":{"34":{},"46":{},"66":{},"83":{},"119":{},"129":{},"145":{},"195":{}},"component":{}}],["novemb",{"_index":369,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["now",{"_index":480,"title":{},"name":{},"text":{"5":{},"8":{},"15":{},"17":{},"26":{},"34":{},"36":{},"37":{},"41":{},"46":{},"47":{},"48":{},"50":{},"52":{},"55":{},"56":{},"83":{},"86":{},"88":{},"91":{},"106":{},"113":{},"115":{},"119":{},"121":{},"123":{},"145":{},"146":{},"149":{},"153":{},"158":{},"159":{},"175":{},"178":{},"187":{},"195":{},"197":{},"198":{}},"component":{}}],["nowday",{"_index":1157,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["nowher",{"_index":2089,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["npcap",{"_index":2027,"title":{},"name":{},"text":{"32":{},"193":{}},"component":{}}],["npe",{"_index":1552,"title":{},"name":{},"text":{"15":{},"92":{},"106":{},"152":{}},"component":{}}],["ns=0;i=2253;a=eventnotifier;bool{eventid",{"_index":3380,"title":{},"name":{},"text":{"78":{}},"component":{}}],["ns=1;i=1337",{"_index":3370,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["ns=1;i=1337;a=value;dint",{"_index":3372,"title":{},"name":{},"text":{"78":{}},"component":{}}],["ns=1;i=1337;dint",{"_index":3371,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["ns=2",{"_index":3385,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["ns=2;g=09087e75",{"_index":3373,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["ns=2;s=helloworld/scalartypes/boolean",{"_index":3367,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["ns=2;s=helloworld/scalartypes/boolean;a=value;bool",{"_index":3369,"title":{},"name":{},"text":{"78":{}},"component":{}}],["ns=2;s=helloworld/scalartypes/boolean;bool",{"_index":3368,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["ns={namespac",{"_index":3362,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["null",{"_index":2866,"title":{},"name":{},"text":{"55":{},"84":{},"103":{},"147":{},"158":{},"204":{}},"component":{}}],["num",{"_index":3199,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["num_valu",{"_index":2648,"title":{},"name":{},"text":{"48":{}},"component":{}}],["number",{"_index":258,"title":{},"name":{},"text":{"3":{},"7":{},"15":{},"17":{},"22":{},"30":{},"31":{},"32":{},"36":{},"39":{},"49":{},"50":{},"55":{},"56":{},"63":{},"70":{},"71":{},"75":{},"77":{},"78":{},"82":{},"83":{},"88":{},"91":{},"103":{},"106":{},"113":{},"122":{},"123":{},"126":{},"133":{},"134":{},"138":{},"140":{},"141":{},"145":{},"149":{},"153":{},"158":{},"159":{},"173":{},"177":{},"197":{},"200":{},"204":{}},"component":{}}],["number}.db{short",{"_index":3506,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["number}:{start",{"_index":3512,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["number}[{numb",{"_index":2689,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["numer",{"_index":1375,"title":{},"name":{},"text":{"15":{},"21":{},"63":{},"66":{},"75":{},"78":{},"83":{},"84":{},"95":{},"103":{},"106":{},"126":{},"129":{},"138":{},"141":{},"145":{},"147":{},"166":{},"182":{}},"component":{}}],["numeric(i",{"_index":3359,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["numlargeboxes\":1630806456",{"_index":2846,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["numsmallbox",{"_index":2851,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["numvalu",{"_index":2580,"title":{},"name":{},"text":{"47":{},"50":{},"121":{},"123":{}},"component":{}}],["nwdiag",{"_index":1861,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["nürtingen",{"_index":365,"title":{},"name":{},"text":{"4":{},"10":{},"174":{},"180":{}},"component":{}}],["o",{"_index":3348,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["o.n.s.communityneoserv",{"_index":705,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["o.n.s.w.jetty9webserv",{"_index":715,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["o.o",{"_index":1049,"title":{},"name":{},"text":{"10":{},"12":{},"14":{},"110":{},"111":{},"180":{}},"component":{}}],["ob",{"_index":3762,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["ob100",{"_index":3688,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["ob101",{"_index":3689,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["ob_numb",{"_index":3748,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["object",{"_index":592,"title":{"90":{},"151":{},"90-1":{},"151-1":{}},"name":{},"text":{"6":{},"15":{},"16":{},"21":{},"39":{},"46":{},"47":{},"48":{},"50":{},"66":{},"70":{},"78":{},"83":{},"90":{},"91":{},"92":{},"101":{},"102":{},"103":{},"106":{},"107":{},"119":{},"121":{},"123":{},"129":{},"133":{},"145":{},"151":{},"152":{},"153":{},"176":{},"182":{},"200":{},"202":{},"203":{},"204":{}},"component":{}}],["observ",{"_index":2334,"title":{},"name":{},"text":{"40":{},"43":{}},"component":{}}],["obtain",{"_index":1673,"title":{},"name":{},"text":{"20":{},"83":{},"101":{},"114":{},"145":{},"202":{}},"component":{}}],["obviou",{"_index":1638,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["obvious",{"_index":4290,"title":{},"name":{},"text":{"103":{}},"component":{}}],["occur",{"_index":1974,"title":{},"name":{},"text":{"30":{},"55":{},"83":{},"88":{},"103":{},"145":{},"149":{},"158":{},"204":{}},"component":{}}],["occurr",{"_index":2195,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["octet",{"_index":3110,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["octet_str",{"_index":3103,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["octob",{"_index":393,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["od",{"_index":3046,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["odbc",{"_index":2339,"title":{},"name":{},"text":{"41":{},"115":{}},"component":{}}],["odd",{"_index":1553,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["odd_par",{"_index":3153,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["offer",{"_index":1041,"title":{"14":{},"111":{}},"name":{},"text":{"10":{},"11":{},"14":{},"15":{},"21":{},"31":{},"47":{},"48":{},"50":{},"106":{},"111":{},"121":{},"123":{},"180":{},"181":{},"192":{}},"component":{}}],["offici",{"_index":508,"title":{"15-2":{},"15-7":{},"15-10":{},"15-11":{},"15-13":{},"15-17":{},"15-21":{},"15-25":{},"15-29":{},"15-33":{},"15-38":{},"15-42":{},"15-46":{},"15-48":{},"106-2":{},"106-7":{},"106-10":{},"106-11":{},"106-13":{},"106-17":{},"106-21":{},"106-25":{},"106-29":{},"106-33":{},"106-38":{},"106-42":{},"106-46":{},"106-48":{}},"name":{},"text":{"5":{},"14":{},"15":{},"106":{},"111":{},"175":{}},"component":{}}],["offlin",{"_index":949,"title":{},"name":{},"text":{"9":{},"104":{},"179":{},"205":{}},"component":{}}],["offset",{"_index":1428,"title":{},"name":{},"text":{"15":{},"55":{},"82":{},"83":{},"106":{},"145":{},"158":{}},"component":{}}],["offset}:bool[{count",{"_index":3503,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["ohn",{"_index":388,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["oil&ga",{"_index":996,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["ok",{"_index":1985,"title":{},"name":{},"text":{"30":{},"36":{},"37":{},"39":{},"43":{},"46":{},"48":{},"50":{},"103":{},"119":{},"123":{},"191":{},"197":{},"198":{},"200":{}},"component":{}}],["old",{"_index":2148,"title":{},"name":{},"text":{"34":{},"36":{},"55":{},"90":{},"151":{},"158":{},"195":{},"197":{}},"component":{}}],["older",{"_index":835,"title":{"34-10":{},"36-14":{},"195-10":{},"197-14":{}},"name":{},"text":{"9":{},"12":{},"15":{},"29":{},"106":{},"110":{},"179":{}},"component":{}}],["oldest",{"_index":3759,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["omit",{"_index":2081,"title":{},"name":{},"text":{"34":{},"36":{},"41":{},"50":{},"76":{},"77":{},"82":{},"83":{},"84":{},"85":{},"90":{},"99":{},"100":{},"115":{},"123":{},"139":{},"140":{},"145":{},"147":{},"170":{},"171":{},"195":{},"197":{}},"component":{}}],["ommit",{"_index":3113,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["on",{"_index":15,"title":{"2-4":{},"82-2":{},"83-5":{},"145-5":{},"172-4":{}},"name":{},"text":{"2":{},"3":{},"8":{},"9":{},"10":{},"12":{},"15":{},"16":{},"17":{},"21":{},"26":{},"27":{},"32":{},"34":{},"36":{},"39":{},"40":{},"43":{},"46":{},"47":{},"48":{},"50":{},"54":{},"55":{},"56":{},"71":{},"72":{},"75":{},"77":{},"78":{},"82":{},"83":{},"86":{},"87":{},"88":{},"90":{},"91":{},"101":{},"103":{},"104":{},"106":{},"107":{},"110":{},"113":{},"119":{},"121":{},"123":{},"134":{},"135":{},"138":{},"141":{},"145":{},"146":{},"148":{},"149":{},"151":{},"153":{},"157":{},"158":{},"159":{},"172":{},"173":{},"175":{},"178":{},"179":{},"180":{},"182":{},"187":{},"188":{},"195":{},"197":{},"200":{},"202":{},"204":{},"205":{}},"component":{}}],["onc",{"_index":1727,"title":{},"name":{},"text":{"21":{},"48":{},"50":{},"55":{},"59":{},"65":{},"78":{},"81":{},"84":{},"91":{},"101":{},"123":{},"127":{},"141":{},"144":{},"147":{},"153":{},"158":{},"162":{},"173":{},"202":{}},"component":{}}],["onlin",{"_index":1846,"title":{},"name":{},"text":{"26":{},"104":{},"205":{}},"component":{}}],["onto",{"_index":2898,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["opc",{"_index":1259,"title":{"43":{},"59":{},"78":{},"141":{},"43-2":{},"78-9":{},"78-11":{},"78-12":{},"78-14":{},"78-15":{},"141-9":{},"141-11":{}},"name":{},"text":{"15":{},"16":{},"36":{},"43":{},"59":{},"74":{},"78":{},"83":{},"106":{},"107":{},"137":{},"141":{},"145":{},"162":{},"197":{}},"component":{}}],["opc.tcp",{"_index":2921,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["opc.tcp://{ip.address}:12687/plc4x",{"_index":2956,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["opcua",{"_index":2381,"title":{},"name":{"43":{},"78":{},"141":{}},"text":{"55":{},"59":{},"78":{},"141":{},"158":{},"162":{}},"component":{}}],["opcua:tcp://127.0.0.1:12686?discovery=true&username=admin&password=password",{"_index":3340,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["opcua:{transport}://{ip",{"_index":3339,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["opcua_qu",{"_index":3398,"title":{},"name":{},"text":{"78":{}},"component":{}}],["opcua_server_timestamp",{"_index":3399,"title":{},"name":{},"text":{"78":{}},"component":{}}],["opcua_source_timestamp",{"_index":3400,"title":{},"name":{},"text":{"78":{}},"component":{}}],["opcuafield",{"_index":1367,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["opcuaserver.pfx",{"_index":2953,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["open",{"_index":346,"title":{"79":{},"142":{},"17-1":{},"113-1":{}},"name":{"79":{},"142":{}},"text":{"4":{},"6":{},"9":{},"10":{},"12":{},"13":{},"15":{},"17":{},"31":{},"34":{},"36":{},"40":{},"43":{},"46":{},"50":{},"55":{},"66":{},"72":{},"74":{},"78":{},"79":{},"83":{},"87":{},"88":{},"103":{},"106":{},"110":{},"112":{},"113":{},"119":{},"123":{},"129":{},"135":{},"137":{},"141":{},"142":{},"145":{},"148":{},"149":{},"158":{},"174":{},"176":{},"179":{},"180":{},"192":{},"195":{},"197":{},"204":{}},"component":{}}],["openconnectionmanag",{"_index":4396,"title":{},"name":{},"text":{"105":{},"206":{}},"component":{}}],["openjdk",{"_index":1941,"title":{},"name":{},"text":{"30":{},"31":{},"32":{}},"component":{}}],["openli",{"_index":1161,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["openssl",{"_index":4454,"title":{"193-7":{}},"name":{},"text":{},"component":{}}],["oper",{"_index":565,"title":{"77-10":{},"85-2":{},"140-10":{}},"name":{},"text":{"6":{},"9":{},"15":{},"16":{},"22":{},"26":{},"29":{},"34":{},"36":{},"41":{},"43":{},"46":{},"47":{},"50":{},"59":{},"62":{},"65":{},"66":{},"70":{},"71":{},"72":{},"74":{},"75":{},"76":{},"77":{},"78":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"87":{},"90":{},"93":{},"101":{},"103":{},"106":{},"107":{},"115":{},"119":{},"121":{},"123":{},"125":{},"127":{},"129":{},"134":{},"135":{},"137":{},"138":{},"140":{},"141":{},"143":{},"144":{},"145":{},"147":{},"148":{},"162":{},"165":{},"176":{},"179":{},"187":{},"190":{},"195":{},"197":{},"202":{},"204":{}},"component":{}}],["operador",{"_index":3567,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["opi",{"_index":1844,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["opiepasswd",{"_index":1829,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["opinion",{"_index":936,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["opm",{"_index":1558,"title":{"90-2":{}},"name":{"90":{},"151":{}},"text":{"15":{},"16":{},"90":{},"92":{},"106":{},"107":{},"151":{},"152":{}},"component":{}}],["oppos",{"_index":962,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["opt",{"_index":3623,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["optim",{"_index":2978,"title":{},"name":{},"text":{"62":{},"82":{},"83":{},"125":{},"145":{},"191":{}},"component":{}}],["option",{"_index":130,"title":{"17-7":{},"30-3":{},"31-3":{},"32-3":{},"61-1":{},"62-2":{},"63-2":{},"64-1":{},"66-2":{},"67-1":{},"70-1":{},"71-1":{},"72-2":{},"73-1":{},"75-1":{},"76-1":{},"77-1":{},"78-1":{},"79-1":{},"80-1":{},"80-3":{},"81-1":{},"82-3":{},"83-6":{},"84-1":{},"85-1":{},"103-12":{},"113-7":{},"124-1":{},"125-2":{},"126-2":{},"128-1":{},"129-2":{},"130-1":{},"133-1":{},"134-1":{},"135-2":{},"136-1":{},"138-1":{},"139-1":{},"140-1":{},"141-1":{},"142-1":{},"143-1":{},"143-3":{},"144-1":{},"145-6":{},"147-1":{},"204-11":{}},"name":{},"text":{"3":{},"4":{},"15":{},"17":{},"21":{},"27":{},"29":{},"32":{},"41":{},"43":{},"47":{},"48":{},"50":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"93":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"103":{},"106":{},"113":{},"115":{},"121":{},"123":{},"124":{},"125":{},"126":{},"128":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"147":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"173":{},"174":{},"182":{},"188":{},"190":{},"193":{},"202":{},"204":{}},"component":{}}],["optional\":false,\"name\":\"org.apache.plc4x.kafka.schema.field\",\"field\":\"field",{"_index":2838,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["optional\":false,\"name\":\"org.apache.plc4x.kafka.schema.jobresult",{"_index":2841,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["optional.empti",{"_index":1758,"title":{},"name":{},"text":{"21":{}},"component":{}}],["oracl",{"_index":2019,"title":{},"name":{},"text":{"32":{}},"component":{}}],["oracle’",{"_index":1915,"title":{},"name":{},"text":{"29":{},"190":{}},"component":{}}],["order",{"_index":250,"title":{},"name":{},"text":{"3":{},"5":{},"7":{},"8":{},"9":{},"11":{},"17":{},"21":{},"26":{},"27":{},"29":{},"31":{},"32":{},"34":{},"36":{},"37":{},"39":{},"46":{},"47":{},"49":{},"50":{},"55":{},"56":{},"63":{},"71":{},"72":{},"75":{},"77":{},"78":{},"82":{},"83":{},"86":{},"90":{},"91":{},"101":{},"103":{},"113":{},"119":{},"121":{},"122":{},"123":{},"126":{},"134":{},"135":{},"138":{},"141":{},"145":{},"146":{},"153":{},"158":{},"159":{},"173":{},"175":{},"177":{},"178":{},"179":{},"181":{},"182":{},"187":{},"188":{},"190":{},"192":{},"193":{},"195":{},"197":{},"198":{},"200":{},"202":{}},"component":{}}],["ordinari",{"_index":1331,"title":{},"name":{},"text":{"15":{},"48":{},"50":{},"87":{},"106":{},"123":{},"148":{}},"component":{}}],["org.apache.commons.io.fileutil",{"_index":4146,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["org.apache.plc4x",{"_index":310,"title":{},"name":{},"text":{"3":{},"39":{},"47":{},"50":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"87":{},"91":{},"92":{},"93":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"121":{},"123":{},"124":{},"125":{},"126":{},"128":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"147":{},"148":{},"152":{},"153":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"173":{},"200":{}},"component":{}}],["org.apache.plc4x.java.api.plcdriv",{"_index":2322,"title":{},"name":{},"text":{"40":{}},"component":{}}],["org.apache.plc4x.java.modbu",{"_index":2309,"title":{},"name":{},"text":{"39":{},"200":{}},"component":{}}],["org.apache.plc4x.java.opm.plcentitymanagercomplextest",{"_index":4116,"title":{},"name":{},"text":{"92":{},"152":{}},"component":{}}],["org.apache.plc4x.java.opm.plcentitymanagertest",{"_index":4115,"title":{},"name":{},"text":{"92":{},"152":{}},"component":{}}],["org.apache.plc4x.java.s7.readwrite.utils.statichelper.szl",{"_index":3841,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["org.apache.plc4x.java.scraper.scrapertest",{"_index":4117,"title":{},"name":{},"text":{"92":{},"152":{}},"component":{}}],["org.apache.plc4x.language.java",{"_index":4141,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["org.apache.plc4x.plugin",{"_index":1742,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["org.apache.plc4x.plugins.codegenerator.languag",{"_index":1764,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["org.apache.plc4x.plugins.codegenerator.protocol",{"_index":1750,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["org.apache.plc4x.plugins.codegenerator.protocol.freemarker.freemarkerlanguageoutput",{"_index":4147,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["org.apache.plc4x.plugins.codegenerator.protocol.freemarker.freemarkerlanguagetemplatehelp",{"_index":4148,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["org.apache.plc4x.plugins.codegenerator.protocol.protocol",{"_index":1748,"title":{},"name":{},"text":{"21":{},"40":{},"182":{}},"component":{}}],["org.apache.plc4x.plugins.codegenerator.types.definitions.complextypedefinit",{"_index":1765,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["org.apache.plc4x.plugins.codegenerator.types.definitions.typedefinit",{"_index":4149,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["org.apache.plc4x.plugins.codegenerator.types.exceptions.generationexcept",{"_index":1751,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["org.apache.plc4x.plugins:plc4x",{"_index":1749,"title":{},"name":{},"text":{"21":{},"34":{},"101":{},"182":{},"195":{},"202":{}},"component":{}}],["org.apache.plc4x.test.parserserializer.parserserializertestsuiterunn",{"_index":2310,"title":{},"name":{},"text":{"39":{},"40":{},"200":{}},"component":{}}],["org.apache.plc4x.{languag",{"_index":1730,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["org.apache.plc4x:plc4x",{"_index":734,"title":{},"name":{},"text":{"8":{},"36":{},"178":{},"197":{}},"component":{}}],["org.slf4j.logg",{"_index":4150,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["org.slf4j.loggerfactori",{"_index":4151,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["organ",{"_index":964,"title":{},"name":{},"text":{"9":{},"43":{},"179":{}},"component":{}}],["organiz",{"_index":958,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["orgapacheplc4x",{"_index":2100,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["orient",{"_index":3179,"title":{},"name":{},"text":{"72":{},"78":{},"135":{},"141":{}},"component":{}}],["origin",{"_index":511,"title":{},"name":{},"text":{"5":{},"36":{},"39":{},"78":{},"82":{},"83":{},"86":{},"141":{},"145":{},"146":{},"175":{},"197":{},"200":{}},"component":{}}],["ortpasswd",{"_index":1842,"title":{},"name":{},"text":{"26":{}},"component":{}}],["os",{"_index":786,"title":{"31":{},"192":{}},"name":{},"text":{"9":{},"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"97":{},"98":{},"124":{},"125":{},"126":{},"128":{},"133":{},"136":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"167":{},"169":{},"192":{}},"component":{}}],["osgi",{"_index":680,"title":{},"name":{},"text":{"8":{},"10":{},"15":{},"106":{},"178":{},"180":{}},"component":{}}],["ot",{"_index":1894,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["other",{"_index":1883,"title":{},"name":{},"text":{"27":{},"78":{},"82":{},"83":{},"141":{},"188":{}},"component":{}}],["otherwis",{"_index":2077,"title":{},"name":{},"text":{"34":{},"36":{},"59":{},"78":{},"88":{},"141":{},"149":{},"162":{},"193":{},"195":{},"197":{}},"component":{}}],["otp",{"_index":1835,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["ott",{"_index":1061,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["ou",{"_index":2404,"title":{},"name":{},"text":{"43":{}},"component":{}}],["ourselv",{"_index":1686,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["out",{"_index":178,"title":{},"name":{},"text":{"3":{},"5":{},"10":{},"13":{},"21":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"46":{},"49":{},"56":{},"59":{},"63":{},"75":{},"82":{},"83":{},"86":{},"87":{},"112":{},"119":{},"122":{},"126":{},"138":{},"145":{},"146":{},"148":{},"159":{},"162":{},"173":{},"175":{},"180":{},"182":{},"190":{},"193":{},"195":{},"197":{},"198":{}},"component":{}}],["outdat",{"_index":1934,"title":{},"name":{},"text":{"30":{},"31":{},"32":{},"90":{}},"component":{}}],["outgo",{"_index":3181,"title":{},"name":{},"text":{"72":{},"135":{}},"component":{}}],["outlin",{"_index":3931,"title":{},"name":{},"text":{"84":{},"85":{},"147":{}},"component":{}}],["outofmemori",{"_index":4036,"title":{},"name":{},"text":{"90":{}},"component":{}}],["output",{"_index":518,"title":{"101-1":{},"202-1":{}},"name":{},"text":{"5":{},"21":{},"27":{},"30":{},"31":{},"32":{},"41":{},"46":{},"47":{},"48":{},"50":{},"71":{},"77":{},"82":{},"83":{},"86":{},"101":{},"103":{},"115":{},"119":{},"121":{},"123":{},"134":{},"140":{},"145":{},"146":{},"175":{},"182":{},"188":{},"191":{},"192":{},"193":{},"202":{},"204":{}},"component":{}}],["outputdir",{"_index":1735,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["outputfil",{"_index":4179,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["outputflavor",{"_index":1720,"title":{},"name":{},"text":{"21":{},"101":{},"182":{},"202":{}},"component":{}}],["outputflavor)?replac",{"_index":4189,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["outsid",{"_index":1011,"title":{},"name":{},"text":{"10":{},"21":{},"83":{},"145":{},"180":{},"182":{}},"component":{}}],["over",{"_index":68,"title":{},"name":{},"text":{"2":{},"9":{},"10":{},"15":{},"16":{},"21":{},"34":{},"36":{},"47":{},"48":{},"50":{},"56":{},"78":{},"82":{},"83":{},"101":{},"106":{},"107":{},"121":{},"123":{},"141":{},"145":{},"159":{},"172":{},"179":{},"180":{},"182":{},"195":{},"197":{},"202":{}},"component":{}}],["overal",{"_index":4063,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["overflow",{"_index":1329,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["overlap",{"_index":979,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["overrid",{"_index":274,"title":{},"name":{},"text":{"3":{},"21":{},"77":{},"82":{},"83":{},"101":{},"173":{},"182":{},"202":{}},"component":{}}],["overridden",{"_index":278,"title":{},"name":{},"text":{"3":{},"34":{},"36":{},"70":{},"76":{},"77":{},"133":{},"139":{},"173":{},"195":{},"197":{}},"component":{}}],["overview",{"_index":757,"title":{"9-1":{},"179-1":{}},"name":{},"text":{},"component":{}}],["overwritten",{"_index":1776,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["owner",{"_index":1954,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["ownership",{"_index":822,"title":{},"name":{},"text":{"9":{},"101":{},"179":{},"202":{}},"component":{}}],["p",{"_index":232,"title":{},"name":{},"text":{"3":{},"34":{},"36":{},"173":{},"195":{},"197":{}},"component":{}}],["p)pmc",{"_index":841,"title":{},"name":{},"text":{"9":{},"10":{},"179":{},"180":{}},"component":{}}],["packag",{"_index":1339,"title":{},"name":{},"text":{"15":{},"21":{},"26":{},"29":{},"30":{},"32":{},"34":{},"36":{},"39":{},"46":{},"62":{},"101":{},"106":{},"119":{},"125":{},"182":{},"187":{},"191":{},"193":{},"195":{},"197":{},"200":{},"202":{}},"component":{}}],["packagenam",{"_index":4133,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["packet",{"_index":1417,"title":{"62-1":{},"125-1":{}},"name":{},"text":{"15":{},"40":{},"41":{},"55":{},"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"106":{},"115":{},"124":{},"125":{},"126":{},"128":{},"133":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"158":{}},"component":{}}],["packet.dl",{"_index":4461,"title":{},"name":{},"text":{"193":{}},"component":{}}],["pad",{"_index":4251,"title":{"103-13":{},"204-12":{}},"name":{},"text":{"103":{},"204":{}},"component":{}}],["pade",{"_index":4305,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["page",{"_index":255,"title":{},"name":{},"text":{"3":{},"4":{},"5":{},"7":{},"9":{},"12":{},"15":{},"20":{},"21":{},"27":{},"29":{},"32":{},"34":{},"36":{},"41":{},"83":{},"106":{},"110":{},"114":{},"115":{},"145":{},"173":{},"174":{},"175":{},"177":{},"179":{},"182":{},"188":{},"190":{},"195":{},"197":{}},"component":{}}],["pair",{"_index":2367,"title":{},"name":{},"text":{"41":{},"43":{},"56":{},"76":{},"78":{},"92":{},"115":{},"139":{},"152":{},"159":{}},"component":{}}],["pair.of(plcresponsecode.ok",{"_index":4102,"title":{},"name":{},"text":{"92":{},"152":{}},"component":{}}],["pandora’",{"_index":3660,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["panel",{"_index":3562,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["para",{"_index":3574,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["paralel",{"_index":1913,"title":{},"name":{},"text":{"29":{},"193":{}},"component":{}}],["parallel",{"_index":3459,"title":{},"name":{},"text":{"82":{},"83":{},"87":{},"145":{},"148":{}},"component":{}}],["param",{"_index":1348,"title":{},"name":{},"text":{"15":{},"91":{},"106":{},"153":{}},"component":{}}],["paramet",{"_index":162,"title":{"103-21":{},"204-17":{}},"name":{},"text":{"3":{},"8":{},"15":{},"21":{},"39":{},"46":{},"47":{},"50":{},"62":{},"75":{},"77":{},"78":{},"81":{},"82":{},"83":{},"85":{},"87":{},"90":{},"91":{},"103":{},"106":{},"119":{},"121":{},"123":{},"125":{},"138":{},"144":{},"145":{},"148":{},"153":{},"173":{},"178":{},"182":{},"200":{},"204":{}},"component":{}}],["parameter",{"_index":3687,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["parameter.discriminatorvalues[0",{"_index":4314,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["parameter.lengthinbyt",{"_index":4269,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["parameterlength",{"_index":4268,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["parametr",{"_index":1604,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["parent",{"_index":1882,"title":{},"name":{},"text":{"27":{},"34":{},"36":{},"103":{},"188":{},"195":{},"197":{},"204":{}},"component":{}}],["parent:0.0.1",{"_index":735,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["pariti",{"_index":3150,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["pars",{"_index":1708,"title":{},"name":{},"text":{"21":{},"39":{},"77":{},"103":{},"140":{},"182":{},"200":{},"204":{}},"component":{}}],["parseexcept",{"_index":4283,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["parser",{"_index":1683,"title":{"39":{},"200":{},"40-3":{},"103-22":{}},"name":{"39":{},"200":{}},"text":{"21":{},"39":{},"51":{},"66":{},"82":{},"83":{},"103":{},"129":{},"145":{},"154":{},"182":{},"200":{},"204":{}},"component":{}}],["parserseri",{"_index":2330,"title":{},"name":{},"text":{"40":{}},"component":{}}],["parserserializertestsuite.xml",{"_index":2326,"title":{},"name":{},"text":{"40":{}},"component":{}}],["parserserializertestsuiterunn",{"_index":2312,"title":{},"name":{},"text":{"39":{},"200":{}},"component":{}}],["part",{"_index":103,"title":{},"name":{},"text":{"3":{},"5":{},"7":{},"9":{},"10":{},"12":{},"15":{},"16":{},"21":{},"22":{},"26":{},"27":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"39":{},"41":{},"46":{},"47":{},"56":{},"59":{},"71":{},"72":{},"76":{},"77":{},"78":{},"82":{},"83":{},"84":{},"85":{},"87":{},"91":{},"92":{},"101":{},"102":{},"103":{},"106":{},"107":{},"110":{},"115":{},"119":{},"121":{},"134":{},"135":{},"139":{},"140":{},"141":{},"145":{},"147":{},"148":{},"152":{},"153":{},"159":{},"162":{},"173":{},"175":{},"177":{},"179":{},"180":{},"182":{},"187":{},"188":{},"190":{},"195":{},"197":{},"198":{},"200":{},"202":{},"203":{},"204":{}},"component":{}}],["parti",{"_index":201,"title":{},"name":{},"text":{"3":{},"4":{},"7":{},"9":{},"30":{},"31":{},"32":{},"41":{},"65":{},"82":{},"83":{},"127":{},"145":{},"173":{},"174":{},"177":{},"179":{}},"component":{}}],["partial",{"_index":3443,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["particip",{"_index":2135,"title":{"83-14":{},"145-14":{}},"name":{},"text":{"34":{},"36":{},"66":{},"75":{},"83":{},"129":{},"138":{},"145":{},"195":{},"197":{}},"component":{}}],["particular",{"_index":1334,"title":{},"name":{},"text":{"15":{},"20":{},"41":{},"82":{},"83":{},"106":{},"114":{},"115":{},"145":{}},"component":{}}],["partit",{"_index":101,"title":{},"name":{},"text":{"3":{},"36":{},"55":{},"83":{},"145":{},"158":{},"173":{},"197":{}},"component":{}}],["paso",{"_index":3592,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["pass",{"_index":1569,"title":{},"name":{},"text":{"15":{},"17":{},"21":{},"34":{},"36":{},"39":{},"41":{},"47":{},"48":{},"50":{},"55":{},"63":{},"65":{},"75":{},"78":{},"81":{},"82":{},"83":{},"91":{},"92":{},"93":{},"101":{},"103":{},"106":{},"113":{},"115":{},"121":{},"123":{},"126":{},"127":{},"138":{},"144":{},"145":{},"152":{},"153":{},"158":{},"165":{},"182":{},"195":{},"197":{},"200":{},"202":{},"204":{}},"component":{}}],["passion",{"_index":1013,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["passiv",{"_index":1527,"title":{},"name":{},"text":{"15":{},"21":{},"41":{},"50":{},"83":{},"86":{},"101":{},"106":{},"115":{},"123":{},"145":{},"146":{},"182":{},"202":{}},"component":{}}],["password",{"_index":752,"title":{},"name":{},"text":{"8":{},"26":{},"36":{},"43":{},"54":{},"59":{},"75":{},"78":{},"138":{},"141":{},"157":{},"162":{},"178":{},"187":{},"197":{}},"component":{}}],["past",{"_index":1852,"title":{},"name":{},"text":{"26":{},"29":{},"32":{},"40":{},"187":{},"190":{}},"component":{}}],["patch",{"_index":531,"title":{},"name":{},"text":{"5":{},"20":{},"114":{},"175":{}},"component":{}}],["path",{"_index":128,"title":{},"name":{},"text":{"3":{},"10":{},"31":{},"32":{},"43":{},"59":{},"63":{},"66":{},"75":{},"76":{},"78":{},"86":{},"95":{},"101":{},"126":{},"129":{},"138":{},"139":{},"141":{},"146":{},"162":{},"166":{},"173":{},"180":{},"192":{},"193":{},"202":{}},"component":{}}],["path/to/java",{"_index":1946,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["pattern",{"_index":1481,"title":{},"name":{},"text":{"15":{},"75":{},"82":{},"83":{},"106":{},"138":{},"145":{}},"component":{}}],["paus",{"_index":2909,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["pay",{"_index":1640,"title":{},"name":{},"text":{"17":{},"34":{},"36":{},"37":{},"46":{},"72":{},"82":{},"83":{},"113":{},"119":{},"135":{},"145":{},"195":{},"197":{},"198":{}},"component":{}}],["payload",{"_index":1463,"title":{},"name":{},"text":{"15":{},"40":{},"55":{},"66":{},"77":{},"78":{},"103":{},"106":{},"129":{},"141":{},"158":{},"204":{}},"component":{}}],["payload.lengthinbyt",{"_index":4262,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["payloadlength",{"_index":4270,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["pc",{"_index":3545,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["pcap",{"_index":2343,"title":{"95":{},"166":{},"63-5":{},"75-3":{},"126-5":{},"138-3":{}},"name":{"95":{},"166":{}},"text":{"41":{},"63":{},"75":{},"94":{},"95":{},"115":{},"126":{},"138":{},"164":{},"166":{}},"component":{}}],["pcap.filt",{"_index":2997,"title":{},"name":{},"text":{"63":{},"75":{},"126":{},"138":{}},"component":{}}],["pcap.loop",{"_index":2995,"title":{},"name":{},"text":{"63":{},"75":{},"126":{},"138":{}},"component":{}}],["pcap.protocol",{"_index":3001,"title":{},"name":{},"text":{"63":{},"75":{},"126":{},"138":{}},"component":{}}],["pcap.replay",{"_index":2990,"title":{},"name":{},"text":{"63":{},"75":{},"126":{},"138":{}},"component":{}}],["pcap.support",{"_index":2988,"title":{},"name":{},"text":{"63":{},"75":{},"126":{},"138":{}},"component":{}}],["pcap4j",{"_index":4464,"title":{},"name":{},"text":{"193":{}},"component":{}}],["pcapng",{"_index":3971,"title":{},"name":{},"text":{"86":{},"95":{},"146":{},"166":{}},"component":{}}],["pcs/server",{"_index":3969,"title":{},"name":{},"text":{"86":{},"146":{}},"component":{}}],["pcs7",{"_index":995,"title":{},"name":{},"text":{"10":{},"83":{},"145":{},"180":{}},"component":{}}],["pdo",{"_index":3030,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["pdu",{"_index":3454,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["peek",{"_index":4252,"title":{"103-14":{}},"name":{},"text":{"103":{}},"component":{}}],["pem",{"_index":3322,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["pengchen",{"_index":1218,"title":{},"name":{},"text":{"14":{}},"component":{}}],["pengcheng.zheng@timecho.com",{"_index":1220,"title":{},"name":{},"text":{"14":{}},"component":{}}],["peopl",{"_index":608,"title":{},"name":{},"text":{"7":{},"10":{},"12":{},"16":{},"36":{},"107":{},"110":{},"177":{},"180":{},"197":{}},"component":{}}],["per",{"_index":510,"title":{},"name":{},"text":{"5":{},"8":{},"9":{},"32":{},"34":{},"36":{},"54":{},"77":{},"82":{},"83":{},"88":{},"101":{},"103":{},"145":{},"149":{},"157":{},"173":{},"175":{},"178":{},"179":{},"195":{},"197":{},"202":{}},"component":{}}],["percentag",{"_index":4336,"title":{},"name":{},"text":{"103":{}},"component":{}}],["perfect",{"_index":501,"title":{},"name":{},"text":{"5":{},"175":{}},"component":{}}],["perfekt",{"_index":338,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["perform",{"_index":544,"title":{"34-6":{},"36-9":{},"195-6":{},"197-9":{}},"name":{},"text":{"5":{},"8":{},"12":{},"15":{},"22":{},"26":{},"34":{},"36":{},"55":{},"83":{},"106":{},"110":{},"145":{},"158":{},"175":{},"178":{},"183":{},"187":{},"195":{},"197":{}},"component":{}}],["perhap",{"_index":2427,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["period",{"_index":2138,"title":{},"name":{},"text":{"34":{},"36":{},"83":{},"87":{},"88":{},"145":{},"148":{},"149":{},"195":{},"197":{}},"component":{}}],["peripher",{"_index":3738,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["peripheri",{"_index":3847,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["permiss",{"_index":1162,"title":{},"name":{},"text":{"12":{},"26":{},"27":{},"30":{},"59":{},"77":{},"81":{},"101":{},"110":{},"140":{},"144":{},"162":{},"187":{},"188":{},"191":{},"202":{}},"component":{}}],["permit",{"_index":1338,"title":{},"name":{},"text":{"15":{},"78":{},"90":{},"106":{}},"component":{}}],["persist",{"_index":3936,"title":{},"name":{},"text":{"84":{},"90":{},"147":{},"151":{}},"component":{}}],["person",{"_index":954,"title":{},"name":{},"text":{"9":{},"34":{},"36":{},"179":{},"195":{},"197":{}},"component":{}}],["person(",{"_index":1208,"title":{},"name":{},"text":{"14":{},"111":{}},"component":{}}],["perspect",{"_index":1620,"title":{},"name":{},"text":{"17":{},"41":{},"113":{},"115":{}},"component":{}}],["petit",{"_index":3886,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["pg_or_pc",{"_index":3452,"title":{},"name":{},"text":{"82":{},"83":{}},"component":{}}],["pgp",{"_index":265,"title":{},"name":{},"text":{"3":{},"34":{},"36":{},"37":{},"173":{},"195":{},"197":{},"198":{}},"component":{}}],["pharmaceut",{"_index":1063,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["phase",{"_index":654,"title":{"34-3":{},"36-6":{},"195-3":{},"197-6":{}},"name":{},"text":{"8":{},"21":{},"27":{},"34":{},"36":{},"78":{},"83":{},"141":{},"145":{},"178":{},"182":{},"188":{},"195":{},"197":{}},"component":{}}],["philosophi",{"_index":3448,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["phone",{"_index":2402,"title":{},"name":{},"text":{"43":{}},"component":{}}],["phone(",{"_index":1210,"title":{},"name":{},"text":{"14":{},"111":{}},"component":{}}],["physic",{"_index":1059,"title":{},"name":{},"text":{"10":{},"41":{},"82":{},"83":{},"115":{},"145":{},"180":{}},"component":{}}],["pick",{"_index":2073,"title":{},"name":{},"text":{"34":{},"36":{},"43":{},"78":{},"141":{},"195":{},"197":{}},"component":{}}],["piec",{"_index":1599,"title":{},"name":{},"text":{"17":{},"87":{},"113":{},"148":{}},"component":{}}],["pietrorimoldi&c",{"_index":1136,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["pile",{"_index":2451,"title":{},"name":{},"text":{"46":{},"90":{},"119":{}},"component":{}}],["pin",{"_index":3157,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["ping",{"_index":1253,"title":{},"name":{},"text":{"15":{},"46":{},"77":{},"83":{},"87":{},"106":{},"119":{},"140":{},"145":{},"148":{}},"component":{}}],["pingresult",{"_index":2457,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["pingresult.err",{"_index":2458,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["pingresult.err.error",{"_index":2460,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["pingresultchannel",{"_index":2454,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["pip",{"_index":2614,"title":{},"name":{},"text":{"48":{}},"component":{}}],["pipe",{"_index":2274,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["pipelin",{"_index":1795,"title":{"22-1":{},"183-1":{}},"name":{},"text":{"22":{},"55":{},"158":{},"183":{},"201":{}},"component":{}}],["pkc",{"_index":3317,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["pkcs#12",{"_index":2395,"title":{},"name":{},"text":{"43":{}},"component":{}}],["pkcs11",{"_index":3318,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["pkcs12",{"_index":3316,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["pki",{"_index":2386,"title":{},"name":{},"text":{"43":{}},"component":{}}],["pl8230",{"_index":1838,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["place",{"_index":2173,"title":{},"name":{},"text":{"36":{},"37":{},"59":{},"65":{},"83":{},"86":{},"127":{},"145":{},"146":{},"162":{},"197":{},"198":{}},"component":{}}],["plain",{"_index":3182,"title":{},"name":{},"text":{"72":{},"90":{},"135":{},"151":{}},"component":{}}],["plan",{"_index":1583,"title":{},"name":{},"text":{"16":{},"34":{},"41":{},"47":{},"90":{},"107":{},"115":{},"121":{},"195":{}},"component":{}}],["plant",{"_index":1622,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["platform",{"_index":852,"title":{},"name":{},"text":{"9":{},"12":{},"34":{},"36":{},"55":{},"78":{},"83":{},"93":{},"110":{},"141":{},"145":{},"158":{},"165":{},"179":{},"195":{},"197":{}},"component":{}}],["play",{"_index":2352,"title":{"123":{}},"name":{},"text":{"41":{},"86":{},"92":{},"115":{},"146":{},"152":{}},"component":{}}],["plc",{"_index":96,"title":{"50":{},"85":{},"90":{},"92":{},"123":{},"151":{},"152":{},"17-7":{},"46-3":{},"90-1":{},"113-7":{},"119-3":{},"151-1":{}},"name":{},"text":{"3":{},"12":{},"13":{},"15":{},"16":{},"17":{},"27":{},"36":{},"41":{},"46":{},"47":{},"48":{},"50":{},"52":{},"54":{},"55":{},"56":{},"62":{},"74":{},"77":{},"78":{},"80":{},"82":{},"83":{},"85":{},"87":{},"88":{},"90":{},"91":{},"92":{},"104":{},"106":{},"107":{},"110":{},"112":{},"113":{},"115":{},"119":{},"121":{},"123":{},"125":{},"137":{},"140":{},"141":{},"143":{},"145":{},"148":{},"149":{},"151":{},"152":{},"153":{},"157":{},"158":{},"159":{},"173":{},"188":{},"197":{},"205":{}},"component":{}}],["plc(a",{"_index":3756,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["plc4[languag",{"_index":463,"title":{},"name":{},"text":{"5":{},"175":{}},"component":{}}],["plc4c",{"_index":1321,"title":{"30-5":{},"31-5":{},"32-5":{}},"name":{"44":{},"45":{},"117":{},"118":{}},"text":{"15":{},"106":{}},"component":{}}],["plc4go",{"_index":1343,"title":{"46-2":{},"119-2":{}},"name":{"46":{},"119":{}},"text":{"15":{},"46":{},"106":{},"119":{}},"component":{}}],["plc4go.newplcdrivermanag",{"_index":2429,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["plc4j",{"_index":312,"title":{"47-1":{},"121-1":{}},"name":{"47":{},"121":{}},"text":{"3":{},"15":{},"39":{},"41":{},"46":{},"47":{},"50":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"87":{},"88":{},"91":{},"92":{},"93":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"106":{},"119":{},"121":{},"123":{},"124":{},"125":{},"126":{},"128":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"147":{},"148":{},"149":{},"152":{},"153":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"173":{},"200":{}},"component":{}}],["plc4j/driver",{"_index":2321,"title":{},"name":{},"text":{"40":{}},"component":{}}],["plc4j/integrations/apach",{"_index":2875,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["plc4j/tools/captur",{"_index":3972,"title":{},"name":{},"text":{"86":{},"146":{}},"component":{}}],["plc4net",{"_index":1542,"title":{"30-6":{},"31-6":{},"32-6":{}},"name":{},"text":{"15":{},"106":{}},"component":{}}],["plc4pi",{"_index":1543,"title":{"30-7":{},"30-8":{},"31-7":{},"32-7":{},"48-1":{}},"name":{"48":{},"120":{}},"text":{"15":{},"32":{},"48":{},"85":{},"106":{}},"component":{}}],["plc4py.plcdrivermanag",{"_index":2617,"title":{},"name":{},"text":{"48":{}},"component":{}}],["plc4x",{"_index":2,"title":{"2":{},"3":{},"9":{},"12":{},"13":{},"14":{},"26":{},"34":{},"36":{},"80":{},"92":{},"110":{},"111":{},"112":{},"123":{},"143":{},"152":{},"172":{},"173":{},"179":{},"195":{},"197":{},"3-4":{},"3-5":{},"7-2":{},"16-1":{},"43-2":{},"55-1":{},"56-2":{},"56-3":{},"107-1":{},"158-1":{},"159-2":{},"159-3":{},"173-4":{},"173-5":{},"177-2":{}},"name":{"80":{},"143":{}},"text":{"3":{},"4":{},"5":{},"7":{},"8":{},"9":{},"10":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"20":{},"21":{},"23":{},"26":{},"27":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"41":{},"42":{},"43":{},"46":{},"47":{},"48":{},"49":{},"50":{},"52":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"65":{},"66":{},"70":{},"72":{},"74":{},"78":{},"80":{},"81":{},"82":{},"83":{},"84":{},"87":{},"88":{},"90":{},"91":{},"92":{},"93":{},"98":{},"101":{},"106":{},"107":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"119":{},"121":{},"122":{},"123":{},"127":{},"129":{},"133":{},"135":{},"137":{},"141":{},"143":{},"144":{},"145":{},"147":{},"148":{},"149":{},"151":{},"152":{},"153":{},"157":{},"158":{},"159":{},"160":{},"161":{},"162":{},"165":{},"169":{},"173":{},"174":{},"175":{},"177":{},"178":{},"179":{},"180":{},"181":{},"182":{},"184":{},"187":{},"188":{},"190":{},"195":{},"197":{},"198":{},"202":{}},"component":{"1":{},"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"18":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"88":{},"89":{},"90":{},"91":{},"92":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"134":{},"135":{},"136":{},"137":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"147":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{},"189":{},"190":{},"191":{},"192":{},"193":{},"194":{},"195":{},"196":{},"197":{},"198":{},"199":{},"200":{},"201":{},"202":{},"203":{},"204":{},"205":{},"206":{}}}],["plc4x/plc4j/integrations/opcua",{"_index":2915,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["plc4x2",{"_index":1811,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["plc4x://127.0.0.1?remot",{"_index":3422,"title":{},"name":{},"text":{"80":{},"143":{}},"component":{}}],["plc4x:{transport}://{ip",{"_index":3419,"title":{},"name":{},"text":{"80":{},"143":{}},"component":{}}],["plc4xconnectionstr",{"_index":4051,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["plc4xopcuaserv",{"_index":2927,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["plc4xsourceprocessor",{"_index":2881,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["plc4x’",{"_index":3463,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["plc_connection.is_write_support",{"_index":2665,"title":{},"name":{},"text":{"48":{}},"component":{}}],["plcbool(fals",{"_index":2723,"title":{},"name":{},"text":{"50":{}},"component":{}}],["plcbool(tru",{"_index":2722,"title":{},"name":{},"text":{"50":{}},"component":{}}],["plcboolean",{"_index":1400,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["plcconnect",{"_index":1540,"title":{},"name":{},"text":{"15":{},"47":{},"50":{},"82":{},"83":{},"87":{},"92":{},"106":{},"121":{},"123":{},"145":{},"148":{},"152":{}},"component":{}}],["plcconnection.getmetadata().isreadsupport",{"_index":2555,"title":{},"name":{},"text":{"47":{},"50":{},"121":{},"123":{}},"component":{}}],["plcconnection.getmetadata().issubscribesupport",{"_index":2592,"title":{},"name":{},"text":{"47":{},"121":{}},"component":{}}],["plcconnection.getmetadata().iswritesupport",{"_index":2720,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["plcconnection.readrequestbuild",{"_index":2558,"title":{},"name":{},"text":{"47":{},"50":{},"121":{},"123":{}},"component":{}}],["plcconnection.subscriptionrequestbuild",{"_index":2594,"title":{},"name":{},"text":{"47":{},"121":{}},"component":{}}],["plcconnection.writerequestbuild",{"_index":2721,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["plcconnectionexcept",{"_index":3995,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["plcconnectionmanag",{"_index":2547,"title":{},"name":{},"text":{"47":{},"87":{},"121":{},"148":{}},"component":{}}],["plcconnectionmetadata",{"_index":1271,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["plcconsumerregistr",{"_index":3722,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["plcdrivermanag",{"_index":1264,"title":{},"name":{},"text":{"15":{},"46":{},"47":{},"48":{},"50":{},"83":{},"87":{},"88":{},"91":{},"106":{},"119":{},"121":{},"123":{},"145":{},"148":{},"149":{},"152":{},"153":{}},"component":{}}],["plcdrivermanager().getconnection(connectionstr",{"_index":2701,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["plcdrivermanager.getdefault().getconnectionmanager().getconnection(\"mock:mi",{"_index":4099,"title":{},"name":{},"text":{"92":{}},"component":{}}],["plcdrivermanager.getdefault().getconnectionmanager().getconnection(connectionstr",{"_index":2550,"title":{},"name":{},"text":{"47":{},"121":{}},"component":{}}],["plcdrivermetadata",{"_index":1268,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["plcentiti",{"_index":4018,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["plcentitymanag",{"_index":4030,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["plceventmodesubscript",{"_index":3710,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["plcfield",{"_index":4429,"title":{},"name":{},"text":{"151":{}},"component":{}}],["plcfield(\"db01:dw01:long",{"_index":4430,"title":{},"name":{},"text":{"151":{}},"component":{}}],["plcincompatibledatatypeexcept",{"_index":2717,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["plcint(1",{"_index":2671,"title":{},"name":{},"text":{"48":{},"50":{}},"component":{}}],["plcint(2",{"_index":2670,"title":{},"name":{},"text":{"48":{},"50":{}},"component":{}}],["plcint(3",{"_index":2725,"title":{},"name":{},"text":{"50":{}},"component":{}}],["plcint(4",{"_index":2726,"title":{},"name":{},"text":{"50":{}},"component":{}}],["plcint(42",{"_index":2724,"title":{},"name":{},"text":{"50":{}},"component":{}}],["plclist",{"_index":1350,"title":{},"name":{},"text":{"15":{},"48":{},"106":{}},"component":{}}],["plclist([plcint(1",{"_index":2669,"title":{},"name":{},"text":{"48":{}},"component":{}}],["plclogger",{"_index":700,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["plcmockconnect",{"_index":4098,"title":{},"name":{},"text":{"92":{},"152":{}},"component":{}}],["plcreadrequest",{"_index":2461,"title":{},"name":{},"text":{"46":{},"47":{},"50":{},"82":{},"83":{},"119":{},"121":{},"123":{},"145":{}},"component":{}}],["plcreadrequest.build",{"_index":2557,"title":{},"name":{},"text":{"47":{},"50":{},"82":{},"83":{},"121":{},"123":{},"145":{}},"component":{}}],["plcreadrequestresult",{"_index":2483,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["plcreadrespons",{"_index":2482,"title":{},"name":{},"text":{"46":{},"47":{},"50":{},"82":{},"83":{},"119":{},"121":{},"123":{},"145":{}},"component":{}}],["plcrequestbuild",{"_index":2702,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["plcresponsecod",{"_index":4092,"title":{},"name":{},"text":{"92":{},"152":{}},"component":{}}],["plcresponsecode.not_found",{"_index":3882,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["plcresponsecode.ok",{"_index":2579,"title":{},"name":{},"text":{"47":{},"48":{},"50":{},"82":{},"83":{},"92":{},"121":{},"123":{},"145":{},"152":{}},"component":{}}],["plcstring(\"hello",{"_index":4103,"title":{},"name":{},"text":{"92":{},"152":{}},"component":{}}],["plcstruct/map",{"_index":3397,"title":{},"name":{},"text":{"78":{}},"component":{}}],["plcsubscriptionevent.gettagnam",{"_index":2610,"title":{},"name":{},"text":{"47":{},"121":{}},"component":{}}],["plcsubscriptionhandl",{"_index":2606,"title":{},"name":{},"text":{"47":{},"121":{}},"component":{}}],["plcsubscriptionrequest",{"_index":2599,"title":{},"name":{},"text":{"47":{},"83":{},"121":{},"145":{}},"component":{}}],["plcsubscriptionrequest.build",{"_index":2593,"title":{},"name":{},"text":{"47":{},"83":{},"121":{},"145":{}},"component":{}}],["plcsubscriptionrespons",{"_index":2601,"title":{},"name":{},"text":{"47":{},"83":{},"121":{},"145":{}},"component":{}}],["plctag",{"_index":2641,"title":{},"name":{},"text":{"48":{},"82":{},"83":{},"90":{},"145":{}},"component":{}}],["plctag(\"db01:dw01:real",{"_index":4020,"title":{},"name":{},"text":{"90":{}},"component":{}}],["plctag(valu",{"_index":4022,"title":{},"name":{},"text":{"90":{}},"component":{}}],["plcvalu",{"_index":1397,"title":{},"name":{},"text":{"15":{},"46":{},"48":{},"55":{},"101":{},"106":{},"119":{},"158":{},"202":{}},"component":{}}],["plcwriterequest",{"_index":2727,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["plcwriterequest.build",{"_index":2666,"title":{},"name":{},"text":{"48":{},"50":{},"123":{}},"component":{}}],["plcwriterespons",{"_index":2588,"title":{},"name":{},"text":{"47":{},"50":{},"121":{},"123":{}},"component":{}}],["plc’",{"_index":2924,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["pleas",{"_index":222,"title":{},"name":{},"text":{"3":{},"4":{},"5":{},"7":{},"12":{},"14":{},"15":{},"20":{},"21":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"40":{},"41":{},"42":{},"43":{},"46":{},"50":{},"56":{},"78":{},"80":{},"82":{},"83":{},"88":{},"90":{},"93":{},"106":{},"110":{},"111":{},"114":{},"115":{},"116":{},"119":{},"123":{},"143":{},"145":{},"149":{},"159":{},"165":{},"173":{},"174":{},"175":{},"177":{},"182":{},"190":{},"191":{},"192":{},"193":{},"195":{},"197":{},"198":{}},"component":{}}],["plu",{"_index":3617,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["plugin",{"_index":122,"title":{},"name":{},"text":{"3":{},"8":{},"21":{},"22":{},"27":{},"34":{},"36":{},"55":{},"101":{},"158":{},"173":{},"178":{},"182":{},"183":{},"188":{},"190":{},"195":{},"197":{},"202":{}},"component":{}}],["plugin:1.3.0:serv",{"_index":698,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["plugin:3.0.1:sign",{"_index":2190,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["pm",{"_index":723,"title":{},"name":{},"text":{"8":{},"82":{},"83":{},"145":{},"178":{}},"component":{}}],["pmc",{"_index":574,"title":{},"name":{},"text":{"6":{},"9":{},"10":{},"14":{},"34":{},"36":{},"111":{},"176":{},"179":{},"180":{},"195":{},"197":{}},"component":{}}],["pn",{"_index":3668,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["podl",{"_index":1024,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["podling’",{"_index":4440,"title":{},"name":{},"text":{"179":{}},"component":{}}],["point",{"_index":894,"title":{},"name":{},"text":{"9":{},"10":{},"15":{},"34":{},"36":{},"41":{},"78":{},"82":{},"83":{},"103":{},"106":{},"115":{},"141":{},"145":{},"179":{},"180":{},"195":{},"197":{},"204":{}},"component":{}}],["pointer",{"_index":3684,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["pojo",{"_index":4015,"title":{},"name":{},"text":{"90":{},"101":{},"151":{},"202":{}},"component":{}}],["polici",{"_index":578,"title":{},"name":{},"text":{"6":{},"34":{},"36":{},"78":{},"141":{},"176":{},"195":{},"197":{}},"component":{}}],["poll",{"_index":1451,"title":{},"name":{},"text":{"15":{},"46":{},"47":{},"48":{},"50":{},"54":{},"55":{},"86":{},"106":{},"119":{},"121":{},"123":{},"146":{},"157":{},"158":{}},"component":{}}],["polyglot",{"_index":461,"title":{},"name":{},"text":{"5":{},"175":{}},"component":{}}],["pom",{"_index":86,"title":{"3-8":{},"173-8":{}},"name":{},"text":{"3":{},"21":{},"34":{},"36":{},"173":{},"182":{},"195":{},"197":{}},"component":{}}],["pom.xml",{"_index":2053,"title":{},"name":{},"text":{"34":{},"37":{},"40":{},"46":{},"49":{},"119":{},"122":{},"195":{},"198":{}},"component":{}}],["pool",{"_index":316,"title":{"88":{},"149":{}},"name":{"88":{},"149":{}},"text":{"3":{},"15":{},"88":{},"91":{},"106":{},"149":{},"153":{},"173":{}},"component":{}}],["pool.sk",{"_index":2180,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["pooledplcdrivermanag",{"_index":3998,"title":{"88-1":{},"149-1":{}},"name":{},"text":{"88":{},"91":{},"149":{},"153":{}},"component":{}}],["pooledplddrivermanag",{"_index":4008,"title":{},"name":{},"text":{"88":{},"149":{}},"component":{}}],["poor",{"_index":3691,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["pop",{"_index":2899,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["popul",{"_index":4107,"title":{},"name":{},"text":{"92":{},"152":{}},"component":{}}],["popular",{"_index":1631,"title":{},"name":{},"text":{"17":{},"66":{},"72":{},"113":{},"129":{},"135":{}},"component":{}}],["popup",{"_index":2407,"title":{},"name":{},"text":{"43":{},"56":{},"159":{}},"component":{}}],["port",{"_index":10,"title":{"97":{},"167":{},"2-3":{},"172-3":{}},"name":{},"text":{"2":{},"8":{},"15":{},"36":{},"41":{},"50":{},"54":{},"59":{},"62":{},"63":{},"71":{},"75":{},"76":{},"77":{},"78":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"94":{},"97":{},"99":{},"100":{},"106":{},"115":{},"123":{},"125":{},"126":{},"134":{},"138":{},"139":{},"140":{},"141":{},"143":{},"144":{},"145":{},"146":{},"147":{},"157":{},"162":{},"164":{},"167":{},"170":{},"171":{},"172":{},"178":{},"197":{}},"component":{}}],["portabl",{"_index":4122,"title":{},"name":{},"text":{"93":{},"165":{}},"component":{}}],["portal",{"_index":3500,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["portion",{"_index":1706,"title":{},"name":{},"text":{"21":{}},"component":{}}],["posit",{"_index":1042,"title":{},"name":{},"text":{"10":{},"15":{},"48":{},"83":{},"103":{},"106":{},"145":{},"180":{}},"component":{}}],["possess",{"_index":2452,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["possibl",{"_index":53,"title":{},"name":{},"text":{"2":{},"3":{},"7":{},"9":{},"15":{},"16":{},"17":{},"21":{},"29":{},"34":{},"36":{},"41":{},"46":{},"47":{},"48":{},"50":{},"63":{},"65":{},"66":{},"75":{},"78":{},"82":{},"83":{},"86":{},"90":{},"93":{},"103":{},"106":{},"107":{},"113":{},"115":{},"119":{},"121":{},"123":{},"126":{},"127":{},"129":{},"138":{},"141":{},"145":{},"146":{},"151":{},"165":{},"172":{},"173":{},"177":{},"179":{},"182":{},"190":{},"193":{},"195":{},"197":{},"204":{}},"component":{}}],["post",{"_index":453,"title":{"13-1":{},"112-1":{}},"name":{},"text":{"5":{},"7":{},"9":{},"12":{},"30":{},"55":{},"110":{},"158":{},"175":{},"177":{},"179":{}},"component":{}}],["postprocesstemplateoutput(fil",{"_index":4178,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["potenti",{"_index":1125,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["power",{"_index":917,"title":{},"name":{},"text":{"9":{},"17":{},"27":{},"92":{},"113":{},"152":{},"179":{},"188":{}},"component":{}}],["powershel",{"_index":2257,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["ppmc",{"_index":914,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["practic",{"_index":3449,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["pragmat",{"_index":1028,"title":{},"name":{},"text":{"10":{},"12":{},"110":{},"180":{}},"component":{}}],["pre",{"_index":169,"title":{},"name":{},"text":{"3":{},"8":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"91":{},"153":{},"173":{},"178":{},"193":{}},"component":{}}],["preassur",{"_index":4029,"title":{},"name":{},"text":{"90":{}},"component":{}}],["precis",{"_index":3530,"title":{},"name":{},"text":{"82":{},"83":{},"103":{},"145":{}},"component":{}}],["precondit",{"_index":620,"title":{},"name":{},"text":{"7":{},"177":{}},"component":{}}],["predefin",{"_index":2656,"title":{},"name":{},"text":{"48":{},"50":{},"83":{},"123":{},"145":{}},"component":{}}],["predict",{"_index":1140,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["prefix",{"_index":545,"title":{},"name":{},"text":{"5":{},"15":{},"22":{},"34":{},"36":{},"90":{},"106":{},"175":{},"183":{},"195":{},"197":{}},"component":{}}],["preliminari",{"_index":1147,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["prepar",{"_index":218,"title":{"19":{},"29":{},"108":{},"190":{},"29-1":{},"34-2":{},"34-4":{},"36-2":{},"36-3":{},"36-5":{},"36-7":{},"40-1":{},"40-2":{},"190-1":{},"195-2":{},"195-4":{},"197-2":{},"197-3":{},"197-5":{},"197-7":{}},"name":{"19":{},"108":{}},"text":{"3":{},"7":{},"15":{},"34":{},"36":{},"43":{},"46":{},"47":{},"48":{},"50":{},"78":{},"83":{},"92":{},"106":{},"119":{},"121":{},"123":{},"141":{},"145":{},"152":{},"173":{},"177":{},"195":{},"197":{}},"component":{}}],["prerequisit",{"_index":619,"title":{"173-10":{}},"name":{},"text":{"7":{},"30":{},"31":{},"32":{},"173":{},"177":{}},"component":{}}],["prerequisitecheck",{"_index":1937,"title":{},"name":{},"text":{"30":{},"31":{},"32":{}},"component":{}}],["present",{"_index":2087,"title":{},"name":{},"text":{"34":{},"36":{},"43":{},"56":{},"90":{},"101":{},"103":{},"159":{},"195":{},"197":{},"202":{},"204":{}},"component":{}}],["preset",{"_index":3674,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["press",{"_index":736,"title":{},"name":{},"text":{"8":{},"43":{},"178":{}},"component":{}}],["pressur",{"_index":4021,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["pretti",{"_index":506,"title":{},"name":{},"text":{"5":{},"8":{},"21":{},"41":{},"62":{},"87":{},"101":{},"103":{},"115":{},"125":{},"148":{},"175":{},"178":{},"182":{},"202":{}},"component":{}}],["prevent",{"_index":953,"title":{},"name":{},"text":{"9":{},"83":{},"86":{},"145":{},"146":{},"179":{}},"component":{}}],["previou",{"_index":625,"title":{"15-6":{},"106-6":{}},"name":{},"text":{"7":{},"15":{},"21":{},"36":{},"83":{},"106":{},"145":{},"177":{},"182":{},"197":{}},"component":{}}],["previous",{"_index":1336,"title":{},"name":{},"text":{"15":{},"34":{},"36":{},"71":{},"83":{},"102":{},"106":{},"134":{},"145":{},"195":{},"197":{},"203":{}},"component":{}}],["primari",{"_index":622,"title":{},"name":{},"text":{"7":{},"9":{},"41":{},"78":{},"98":{},"103":{},"169":{},"177":{},"179":{},"204":{}},"component":{}}],["print",{"_index":2280,"title":{},"name":{},"text":{"37":{},"48":{},"92":{},"151":{},"152":{},"198":{}},"component":{}}],["print(f\"build",{"_index":2627,"title":{},"name":{},"text":{"48":{}},"component":{}}],["print(f\"connect",{"_index":2624,"title":{},"name":{},"text":{"48":{}},"component":{}}],["print(f\"execut",{"_index":2631,"title":{},"name":{},"text":{"48":{}},"component":{}}],["print(f\"request",{"_index":2630,"title":{},"name":{},"text":{"48":{}},"component":{}}],["print(f\"respons",{"_index":2634,"title":{},"name":{},"text":{"48":{}},"component":{}}],["prior",{"_index":1783,"title":{},"name":{},"text":{"21":{},"36":{},"78":{},"141":{},"182":{},"197":{}},"component":{}}],["prioriti",{"_index":866,"title":{},"name":{},"text":{"9":{},"66":{},"129":{},"179":{}},"component":{}}],["priority_class",{"_index":3747,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["privat",{"_index":598,"title":{},"name":{},"text":{"6":{},"9":{},"17":{},"34":{},"36":{},"43":{},"78":{},"90":{},"101":{},"113":{},"141":{},"151":{},"176":{},"179":{},"195":{},"197":{},"202":{}},"component":{}}],["privileg",{"_index":1943,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["pro",{"_index":4441,"title":{},"name":{},"text":{"179":{}},"component":{}}],["proactiv",{"_index":869,"title":{},"name":{},"text":{"9":{}},"component":{}}],["probabl",{"_index":1624,"title":{},"name":{},"text":{"17":{},"21":{},"27":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"41":{},"46":{},"47":{},"82":{},"83":{},"86":{},"91":{},"113":{},"115":{},"119":{},"121":{},"145":{},"146":{},"153":{},"173":{},"182":{},"188":{},"190":{},"191":{},"192":{},"193":{},"195":{},"197":{}},"component":{}}],["problem",{"_index":5,"title":{"2-2":{},"21-6":{},"172-2":{},"182-6":{}},"name":{},"text":{"2":{},"11":{},"12":{},"15":{},"17":{},"21":{},"26":{},"29":{},"34":{},"36":{},"37":{},"47":{},"48":{},"50":{},"62":{},"82":{},"83":{},"86":{},"88":{},"91":{},"106":{},"110":{},"113":{},"121":{},"123":{},"125":{},"145":{},"146":{},"149":{},"153":{},"172":{},"181":{},"182":{},"187":{},"190":{},"195":{},"197":{},"198":{}},"component":{}}],["problemat",{"_index":4000,"title":{},"name":{},"text":{"88":{},"149":{}},"component":{}}],["proce",{"_index":3695,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["procedur",{"_index":876,"title":{"78-6":{},"141-6":{}},"name":{},"text":{"9":{},"15":{},"78":{},"83":{},"106":{},"141":{},"145":{},"179":{}},"component":{}}],["process",{"_index":742,"title":{"83-14":{},"145-14":{}},"name":{},"text":{"8":{},"9":{},"10":{},"12":{},"13":{},"30":{},"31":{},"34":{},"36":{},"40":{},"43":{},"47":{},"48":{},"50":{},"55":{},"56":{},"65":{},"78":{},"82":{},"83":{},"87":{},"91":{},"103":{},"110":{},"112":{},"121":{},"123":{},"127":{},"145":{},"148":{},"153":{},"158":{},"159":{},"178":{},"179":{},"180":{},"191":{},"195":{},"197":{},"204":{}},"component":{}}],["processor",{"_index":1444,"title":{"56-2":{},"56-3":{},"159-2":{},"159-3":{}},"name":{},"text":{"15":{},"29":{},"56":{},"83":{},"106":{},"145":{},"159":{}},"component":{}}],["prod.deb",{"_index":1968,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["produc",{"_index":655,"title":{},"name":{},"text":{"8":{},"9":{},"15":{},"20":{},"34":{},"36":{},"37":{},"55":{},"56":{},"103":{},"106":{},"114":{},"158":{},"159":{},"178":{},"179":{},"182":{},"195":{},"197":{},"198":{}},"component":{}}],["product",{"_index":399,"title":{},"name":{},"text":{"4":{},"5":{},"12":{},"17":{},"43":{},"55":{},"83":{},"110":{},"113":{},"145":{},"158":{},"173":{},"174":{},"175":{}},"component":{}}],["profibu",{"_index":3739,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["profil",{"_index":82,"title":{"3-6":{},"3-7":{},"3-8":{},"3-9":{},"173-6":{},"173-7":{},"173-8":{},"173-9":{},"173-10":{}},"name":{},"text":{"3":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"40":{},"173":{},"190":{},"195":{},"197":{},"198":{}},"component":{}}],["profinet",{"_index":2350,"title":{"81":{},"144":{}},"name":{"81":{},"144":{}},"text":{"41":{},"74":{},"81":{},"83":{},"115":{},"137":{},"144":{},"145":{}},"component":{}}],["profinet:raw://127.0.0.1?gsddirectory=/profinet/gsd&devices=[[test",{"_index":3434,"title":{},"name":{},"text":{"81":{},"144":{}},"component":{}}],["profinet:raw://{ip",{"_index":3431,"title":{},"name":{},"text":{"81":{},"144":{}},"component":{}}],["program",{"_index":1378,"title":{},"name":{},"text":{"15":{},"17":{},"42":{},"43":{},"46":{},"54":{},"62":{},"82":{},"83":{},"88":{},"98":{},"103":{},"106":{},"113":{},"116":{},"119":{},"125":{},"145":{},"149":{},"157":{},"169":{},"193":{},"204":{}},"component":{}}],["programm",{"_index":1581,"title":{},"name":{},"text":{"16":{},"17":{},"36":{},"90":{},"107":{},"113":{},"151":{},"197":{}},"component":{}}],["programmat",{"_index":2554,"title":{},"name":{},"text":{"47":{},"48":{},"50":{},"121":{},"123":{}},"component":{}}],["progran",{"_index":2423,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["progress",{"_index":3194,"title":{},"name":{},"text":{"74":{},"137":{}},"component":{}}],["project",{"_index":158,"title":{"26":{},"6-3":{},"46-1":{},"119-1":{},"176-3":{}},"name":{},"text":{"3":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"12":{},"14":{},"15":{},"16":{},"21":{},"22":{},"23":{},"26":{},"27":{},"29":{},"32":{},"34":{},"36":{},"37":{},"46":{},"47":{},"50":{},"52":{},"78":{},"83":{},"90":{},"93":{},"106":{},"107":{},"110":{},"111":{},"119":{},"121":{},"123":{},"141":{},"145":{},"151":{},"165":{},"173":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"182":{},"183":{},"184":{},"187":{},"188":{},"190":{},"195":{},"197":{},"198":{}},"component":{}}],["project.build.directory}/gener",{"_index":1736,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["project.vers",{"_index":2306,"title":{},"name":{},"text":{"39":{},"200":{}},"component":{}}],["project/cmak",{"_index":2038,"title":{},"name":{},"text":{"32":{}},"component":{}}],["project?dti=0&lc=en",{"_index":3590,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["project’",{"_index":581,"title":{},"name":{},"text":{"6":{},"9":{},"176":{},"179":{}},"component":{}}],["prolifer",{"_index":1359,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["prolong",{"_index":3984,"title":{},"name":{},"text":{"87":{},"88":{},"148":{},"149":{}},"component":{}}],["promin",{"_index":889,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["promis",{"_index":1511,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["promiss",{"_index":2448,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["promot",{"_index":450,"title":{},"name":{},"text":{"5":{},"93":{},"165":{},"175":{}},"component":{}}],["prompt",{"_index":2413,"title":{},"name":{},"text":{"43":{},"59":{},"162":{}},"component":{}}],["propag",{"_index":3308,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["properti",{"_index":279,"title":{},"name":{},"text":{"3":{},"48":{},"55":{},"90":{},"103":{},"158":{},"173":{},"204":{}},"component":{}}],["proprietari",{"_index":1602,"title":{},"name":{},"text":{"17":{},"113":{},"182":{}},"component":{}}],["prosi",{"_index":3407,"title":{},"name":{},"text":{"78":{}},"component":{}}],["protect",{"_index":2954,"title":{},"name":{},"text":{"59":{},"101":{},"162":{},"202":{}},"component":{}}],["protocol",{"_index":6,"title":{"33":{},"74":{},"79":{},"104":{},"105":{},"142":{},"194":{},"201":{},"205":{},"206":{},"2-3":{},"2-4":{},"21-4":{},"21-8":{},"40-1":{},"40-3":{},"137-1":{},"172-3":{},"172-4":{},"182-4":{},"182-8":{}},"name":{"79":{},"104":{},"105":{},"142":{},"205":{},"206":{}},"text":{"2":{},"4":{},"12":{},"15":{},"16":{},"17":{},"21":{},"27":{},"36":{},"39":{},"40":{},"41":{},"46":{},"47":{},"48":{},"50":{},"55":{},"62":{},"63":{},"65":{},"66":{},"71":{},"72":{},"74":{},"75":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"85":{},"86":{},"87":{},"88":{},"90":{},"91":{},"93":{},"99":{},"100":{},"101":{},"102":{},"103":{},"106":{},"107":{},"110":{},"113":{},"115":{},"119":{},"121":{},"123":{},"125":{},"126":{},"127":{},"129":{},"134":{},"135":{},"137":{},"138":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"148":{},"149":{},"151":{},"153":{},"158":{},"165":{},"170":{},"171":{},"172":{},"174":{},"182":{},"188":{},"197":{},"200":{},"201":{},"202":{},"203":{},"204":{}},"component":{}}],["protocol(",{"_index":4485,"title":{},"name":{},"text":{"201":{}},"component":{}}],["protocol/driv",{"_index":1214,"title":{},"name":{},"text":{"14":{},"111":{}},"component":{}}],["protocolid",{"_index":4260,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["protocolnam",{"_index":1718,"title":{},"name":{},"text":{"21":{},"101":{},"182":{},"202":{}},"component":{}}],["protocolvers",{"_index":1723,"title":{},"name":{},"text":{"21":{}},"component":{}}],["proven",{"_index":794,"title":{},"name":{},"text":{"9":{},"17":{},"78":{},"82":{},"113":{},"141":{},"179":{}},"component":{}}],["provid",{"_index":95,"title":{"27-1":{},"188-1":{}},"name":{},"text":{"3":{},"5":{},"7":{},"8":{},"9":{},"11":{},"12":{},"14":{},"15":{},"16":{},"17":{},"21":{},"26":{},"27":{},"29":{},"32":{},"34":{},"36":{},"39":{},"41":{},"47":{},"48":{},"49":{},"50":{},"55":{},"56":{},"63":{},"65":{},"70":{},"75":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"87":{},"90":{},"92":{},"93":{},"99":{},"100":{},"101":{},"103":{},"106":{},"107":{},"110":{},"111":{},"113":{},"115":{},"121":{},"122":{},"123":{},"126":{},"127":{},"133":{},"138":{},"139":{},"141":{},"144":{},"145":{},"147":{},"148":{},"152":{},"158":{},"159":{},"165":{},"170":{},"171":{},"173":{},"175":{},"177":{},"178":{},"179":{},"181":{},"182":{},"187":{},"188":{},"190":{},"195":{},"197":{},"200":{},"202":{},"204":{}},"component":{}}],["provis",{"_index":3343,"title":{},"name":{},"text":{"78":{}},"component":{}}],["proxi",{"_index":1295,"title":{"80":{},"143":{}},"name":{},"text":{"15":{},"74":{},"80":{},"90":{},"106":{},"137":{},"143":{},"173":{}},"component":{}}],["proxim",{"_index":3475,"title":{},"name":{},"text":{"82":{}},"component":{}}],["pseudocod",{"_index":3709,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["pto",{"_index":987,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["public",{"_index":597,"title":{},"name":{},"text":{"6":{},"9":{},"17":{},"21":{},"26":{},"34":{},"36":{},"39":{},"83":{},"87":{},"90":{},"91":{},"92":{},"101":{},"113":{},"145":{},"148":{},"151":{},"152":{},"153":{},"176":{},"179":{},"182":{},"187":{},"195":{},"197":{},"200":{},"202":{}},"component":{}}],["publicli",{"_index":780,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["publish",{"_index":2613,"title":{},"name":{},"text":{"48":{},"65":{},"72":{},"74":{},"78":{},"83":{},"127":{},"135":{},"137":{},"145":{},"183":{}},"component":{}}],["publishrequest",{"_index":3386,"title":{},"name":{},"text":{"78":{}},"component":{}}],["pull",{"_index":437,"title":{"5-3":{},"175-3":{}},"name":{},"text":{"5":{},"12":{},"14":{},"22":{},"29":{},"110":{},"111":{},"175":{},"183":{}},"component":{}}],["pullup",{"_index":3162,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["purchas",{"_index":1668,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["pure",{"_index":1374,"title":{},"name":{},"text":{"15":{},"101":{},"106":{},"202":{}},"component":{}}],["purpos",{"_index":3177,"title":{},"name":{},"text":{"72":{},"83":{},"84":{},"92":{},"93":{},"135":{},"145":{},"147":{},"152":{},"165":{}},"component":{}}],["push",{"_index":521,"title":{},"name":{},"text":{"5":{},"27":{},"34":{},"36":{},"175":{},"188":{},"195":{},"197":{}},"component":{}}],["put",{"_index":864,"title":{},"name":{},"text":{"9":{},"12":{},"37":{},"87":{},"88":{},"110":{},"148":{},"149":{},"179":{},"198":{}},"component":{}}],["put/get",{"_index":3616,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["pyenv",{"_index":1922,"title":{},"name":{},"text":{"29":{},"31":{},"190":{},"192":{}},"component":{}}],["pypi",{"_index":2612,"title":{},"name":{},"text":{"48":{}},"component":{}}],["python",{"_index":216,"title":{"48":{},"120":{},"30-7":{},"30-8":{},"31-7":{},"32-7":{},"42-3":{},"191-5":{},"191-6":{},"192-5":{},"193-5":{}},"name":{},"text":{"3":{},"7":{},"15":{},"16":{},"26":{},"29":{},"31":{},"32":{},"36":{},"42":{},"74":{},"106":{},"107":{},"137":{},"173":{},"177":{},"187":{},"190":{},"192":{},"193":{},"197":{}},"component":{}}],["python,en",{"_index":2163,"title":{},"name":{},"text":{"36":{}},"component":{}}],["python,with",{"_index":4436,"title":{},"name":{},"text":{"173":{},"197":{}},"component":{}}],["python.ex",{"_index":2046,"title":{},"name":{},"text":{"32":{},"193":{}},"component":{}}],["python3",{"_index":1981,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["pythonista",{"_index":1072,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["q",{"_index":1966,"title":{},"name":{},"text":{"30":{},"82":{},"83":{},"145":{},"191":{}},"component":{}}],["q0.4:bool",{"_index":2560,"title":{},"name":{},"text":{"47":{},"121":{}},"component":{}}],["q0:byte",{"_index":2561,"title":{},"name":{},"text":{"47":{},"121":{}},"component":{}}],["qu10",{"_index":859,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["qu20",{"_index":863,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["qu30",{"_index":877,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["qu40",{"_index":880,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["qu50",{"_index":885,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["qualifi",{"_index":2355,"title":{},"name":{},"text":{"41":{},"115":{}},"component":{}}],["qualiti",{"_index":638,"title":{},"name":{},"text":{"8":{},"9":{},"83":{},"145":{},"178":{},"179":{}},"component":{}}],["quantum",{"_index":3949,"title":{},"name":{},"text":{"85":{}},"component":{}}],["que",{"_index":3595,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["queri",{"_index":694,"title":{},"name":{},"text":{"8":{},"54":{},"91":{},"153":{},"157":{},"178":{}},"component":{}}],["question",{"_index":605,"title":{},"name":{},"text":{"6":{},"9":{},"34":{},"36":{},"83":{},"145":{},"176":{},"179":{},"195":{},"197":{}},"component":{}}],["queue",{"_index":3461,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["quick",{"_index":253,"title":{},"name":{},"text":{"3":{},"27":{},"34":{},"36":{},"173":{},"188":{},"195":{},"197":{}},"component":{}}],["quickli",{"_index":1714,"title":{},"name":{},"text":{"21":{},"34":{},"36":{},"182":{},"195":{},"197":{}},"component":{}}],["quickstart",{"_index":2769,"title":{"55-3":{},"158-3":{}},"name":{},"text":{},"component":{}}],["quit",{"_index":184,"title":{},"name":{},"text":{"3":{},"17":{},"21":{},"29":{},"30":{},"32":{},"34":{},"36":{},"41":{},"56":{},"82":{},"83":{},"88":{},"90":{},"103":{},"113":{},"145":{},"149":{},"159":{},"173":{},"182":{},"190":{},"191":{},"193":{},"195":{},"197":{},"204":{}},"component":{}}],["rack",{"_index":3221,"title":{},"name":{},"text":{"76":{},"82":{},"83":{},"139":{},"145":{}},"component":{}}],["rack2",{"_index":3654,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["rack=0&remot",{"_index":3480,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["rais",{"_index":2861,"title":{},"name":{},"text":{"55":{},"103":{},"158":{},"204":{}},"component":{}}],["random",{"_index":755,"title":{},"name":{},"text":{"8":{},"48":{},"54":{},"55":{},"84":{},"147":{},"157":{},"158":{},"173":{},"178":{}},"component":{}}],["random/device1.machinea.sensor1:str",{"_index":3943,"title":{},"name":{},"text":{"84":{},"147":{}},"component":{}}],["random/device1.machinea.sensor1:uint",{"_index":3942,"title":{},"name":{},"text":{"84":{},"147":{}},"component":{}}],["random/foo:int",{"_index":3940,"title":{},"name":{},"text":{"84":{},"147":{}},"component":{}}],["random/foo:integ",{"_index":2737,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["random/foo:udint",{"_index":3941,"title":{},"name":{},"text":{"84":{},"147":{}},"component":{}}],["random/temporary:integ",{"_index":2948,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["random_foo_integ",{"_index":2752,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["rang",{"_index":2525,"title":{},"name":{},"text":{"46":{},"50":{},"62":{},"78":{},"119":{},"123":{},"125":{},"141":{}},"component":{}}],["rat",{"_index":2251,"title":{"37-1":{},"198-1":{}},"name":{},"text":{"37":{},"198":{}},"component":{}}],["rat.log",{"_index":2263,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["rate",{"_index":2858,"title":{},"name":{},"text":{"55":{},"71":{},"77":{},"134":{},"140":{},"158":{}},"component":{}}],["raw",{"_index":1808,"title":{"96":{},"168":{},"30-4":{},"31-4":{},"32-4":{},"75-4":{},"81-2":{},"138-4":{},"144-2":{}},"name":{"96":{},"168":{}},"text":{"26":{},"32":{},"39":{},"40":{},"41":{},"61":{},"75":{},"81":{},"94":{},"96":{},"98":{},"103":{},"115":{},"124":{},"138":{},"144":{},"164":{},"168":{},"169":{},"187":{},"200":{},"204":{}},"component":{}}],["raw.protocol",{"_index":3208,"title":{},"name":{},"text":{"75":{},"81":{},"138":{},"144":{}},"component":{}}],["raw.resolv",{"_index":3206,"title":{},"name":{},"text":{"75":{},"81":{},"138":{},"144":{}},"component":{}}],["raw.support",{"_index":3207,"title":{},"name":{},"text":{"75":{},"81":{},"138":{},"144":{}},"component":{}}],["rc",{"_index":2165,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["rc1",{"_index":2115,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["rdbm",{"_index":681,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["re",{"_index":1293,"title":{},"name":{},"text":{"15":{},"21":{},"27":{},"31":{},"34":{},"36":{},"88":{},"90":{},"106":{},"149":{},"173":{},"182":{},"188":{},"195":{},"197":{}},"component":{}}],["re10",{"_index":829,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["re20",{"_index":837,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["re30",{"_index":842,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["re40",{"_index":848,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["re50",{"_index":853,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["reach",{"_index":2996,"title":{},"name":{},"text":{"63":{},"75":{},"80":{},"86":{},"95":{},"126":{},"138":{},"143":{},"146":{},"166":{}},"component":{}}],["reaction",{"_index":1201,"title":{},"name":{},"text":{"14":{},"111":{}},"component":{}}],["reactor",{"_index":687,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["read",{"_index":223,"title":{"46-4":{},"47-2":{},"48-2":{},"50-5":{},"119-4":{},"121-2":{},"123-5":{}},"name":{},"text":{"3":{},"7":{},"13":{},"15":{},"21":{},"37":{},"39":{},"41":{},"46":{},"47":{},"48":{},"50":{},"52":{},"55":{},"62":{},"66":{},"70":{},"71":{},"74":{},"75":{},"77":{},"78":{},"80":{},"82":{},"83":{},"84":{},"85":{},"90":{},"91":{},"92":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"112":{},"115":{},"119":{},"121":{},"123":{},"125":{},"129":{},"133":{},"134":{},"137":{},"138":{},"140":{},"141":{},"143":{},"145":{},"147":{},"151":{},"152":{},"153":{},"158":{},"173":{},"177":{},"182":{},"198":{},"200":{},"202":{},"203":{},"204":{},"205":{},"206":{}},"component":{}}],["read'read",{"_index":4362,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["read'writ",{"_index":4364,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["read(str",{"_index":4090,"title":{},"name":{},"text":{"92":{},"152":{}},"component":{}}],["read({read",{"_index":1570,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["read/writ",{"_index":3247,"title":{"83-15":{},"145-15":{}},"name":{},"text":{"77":{},"82":{},"83":{},"140":{},"145":{}},"component":{}}],["read/write/subscrib",{"_index":3332,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["readabl",{"_index":832,"title":{},"name":{},"text":{"9":{},"39":{},"43":{},"50":{},"84":{},"103":{},"123":{},"147":{},"179":{},"200":{}},"component":{}}],["readbuff",{"_index":1459,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["readi",{"_index":732,"title":{},"name":{},"text":{"8":{},"16":{},"26":{},"34":{},"36":{},"43":{},"46":{},"47":{},"48":{},"50":{},"82":{},"83":{},"91":{},"107":{},"119":{},"121":{},"123":{},"145":{},"153":{},"173":{},"178":{},"187":{},"195":{},"197":{}},"component":{}}],["reading/writ",{"_index":1678,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["reading/writing/brows",{"_index":3951,"title":{},"name":{},"text":{"85":{}},"component":{}}],["readm",{"_index":2116,"title":{},"name":{},"text":{"34":{},"36":{},"37":{},"195":{},"197":{},"198":{}},"component":{}}],["readme.md",{"_index":2266,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["readrequest",{"_index":2465,"title":{},"name":{},"text":{"46":{},"47":{},"50":{},"83":{},"119":{},"121":{},"123":{},"145":{}},"component":{}}],["readrequest.addtagaddress(\"myszl",{"_index":3485,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["readrequest.build",{"_index":3489,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["readrequest.execut",{"_index":2477,"title":{},"name":{},"text":{"46":{},"47":{},"50":{},"119":{},"121":{},"123":{}},"component":{}}],["readrequest.execute().get",{"_index":2707,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["readrequest.execute().get(5000",{"_index":2574,"title":{},"name":{},"text":{"47":{},"121":{}},"component":{}}],["readrequestbuild",{"_index":2638,"title":{},"name":{},"text":{"48":{},"92":{},"152":{}},"component":{}}],["readrequestresult",{"_index":2478,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["readrequestresult.err",{"_index":2479,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["readrequestresult.err.error",{"_index":2480,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["readrequestresult.response.getvalue(\"field1",{"_index":2486,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["readrequestresult.response.getvalue(\"field2",{"_index":2488,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["readrespons",{"_index":2572,"title":{},"name":{},"text":{"47":{},"48":{},"50":{},"121":{},"123":{}},"component":{}}],["readresponsechanel",{"_index":2476,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["real",{"_index":1110,"title":{},"name":{},"text":{"12":{},"15":{},"30":{},"36":{},"41":{},"65":{},"66":{},"70":{},"72":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"103":{},"106":{},"110":{},"115":{},"127":{},"129":{},"133":{},"135":{},"139":{},"140":{},"141":{},"144":{},"145":{},"146":{},"147":{},"197":{},"204":{}},"component":{}}],["real32",{"_index":3100,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["real64",{"_index":3101,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["realiz",{"_index":4119,"title":{},"name":{},"text":{"93":{},"101":{},"165":{},"202":{}},"component":{}}],["realizar",{"_index":3596,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["realli",{"_index":665,"title":{},"name":{},"text":{"8":{},"9":{},"10":{},"31":{},"41":{},"46":{},"92":{},"103":{},"115":{},"119":{},"152":{},"178":{},"179":{},"180":{},"193":{}},"component":{}}],["reason",{"_index":1623,"title":{},"name":{},"text":{"17":{},"21":{},"34":{},"36":{},"37":{},"83":{},"90":{},"93":{},"103":{},"113":{},"145":{},"151":{},"165":{},"182":{},"195":{},"197":{},"198":{},"204":{}},"component":{}}],["reboot",{"_index":4458,"title":{},"name":{},"text":{"193":{}},"component":{}}],["rebuild",{"_index":2333,"title":{},"name":{},"text":{"40":{}},"component":{}}],["receiv",{"_index":497,"title":{},"name":{},"text":{"5":{},"9":{},"15":{},"34":{},"36":{},"41":{},"55":{},"59":{},"62":{},"65":{},"66":{},"72":{},"78":{},"82":{},"83":{},"90":{},"104":{},"106":{},"125":{},"127":{},"129":{},"135":{},"141":{},"145":{},"158":{},"162":{},"175":{},"179":{},"195":{},"197":{},"205":{}},"component":{}}],["receive_pdo_1:nodeid:type[arrays",{"_index":3062,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["receive_pdo_2:nodeid:type[arrays",{"_index":3064,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["receive_pdo_3:nodeid:type[arrays",{"_index":3066,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["receive_pdo_4:nodeid:type[arrays",{"_index":3068,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["receive_timestamp",{"_index":2377,"title":{},"name":{},"text":{"41":{}},"component":{}}],["receivebuffers",{"_index":4426,"title":{},"name":{},"text":{"141":{}},"component":{}}],["receivetim",{"_index":3395,"title":{},"name":{},"text":{"78":{}},"component":{}}],["recent",{"_index":1023,"title":{},"name":{},"text":{"10":{},"21":{},"32":{},"87":{},"148":{},"180":{}},"component":{}}],["recept",{"_index":3793,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["reciev",{"_index":2843,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["recipi",{"_index":2248,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["recogn",{"_index":901,"title":{},"name":{},"text":{"9":{},"83":{},"102":{},"145":{},"179":{},"203":{}},"component":{}}],["recognis",{"_index":890,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["recommend",{"_index":2075,"title":{},"name":{},"text":{"34":{},"36":{},"66":{},"83":{},"93":{},"129":{},"145":{},"165":{},"195":{},"197":{}},"component":{}}],["record",{"_index":183,"title":{"83-3":{},"145-3":{}},"name":{},"text":{"3":{},"12":{},"40":{},"41":{},"55":{},"66":{},"77":{},"83":{},"84":{},"86":{},"95":{},"110":{},"115":{},"129":{},"140":{},"145":{},"146":{},"147":{},"158":{},"166":{},"173":{}},"component":{}}],["record)(extend",{"_index":3275,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["records\":[{\"ausbg2\":0,\"ausbg1\":61,\"bgtyp\":130,\"index\":1,\"mifb\":\"6es7",{"_index":3891,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["recreat",{"_index":790,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["red",{"_index":2901,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["reduc",{"_index":613,"title":{},"name":{},"text":{"7":{},"17":{},"55":{},"78":{},"101":{},"113":{},"158":{},"177":{},"202":{}},"component":{}}],["reduct",{"_index":1595,"title":{"17-6":{},"113-6":{}},"name":{},"text":{"17":{},"83":{},"113":{},"145":{}},"component":{}}],["redund",{"_index":2779,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["ref",{"_index":1900,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["refactor",{"_index":1317,"title":{},"name":{},"text":{"15":{},"21":{},"87":{},"106":{},"148":{}},"component":{}}],["refer",{"_index":539,"title":{"90-6":{},"151-5":{}},"name":{},"text":{"5":{},"12":{},"21":{},"27":{},"36":{},"37":{},"40":{},"43":{},"46":{},"65":{},"70":{},"77":{},"82":{},"83":{},"87":{},"88":{},"91":{},"103":{},"110":{},"119":{},"127":{},"133":{},"140":{},"145":{},"148":{},"149":{},"153":{},"175":{},"182":{},"188":{},"193":{},"197":{},"198":{},"204":{}},"component":{}}],["referenc",{"_index":1747,"title":{},"name":{},"text":{"21":{},"34":{},"36":{},"103":{},"182":{},"195":{},"197":{},"204":{}},"component":{}}],["reflect",{"_index":2074,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["refresh",{"_index":4046,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["regard",{"_index":1282,"title":{"83-2":{},"145-2":{}},"name":{},"text":{"15":{},"21":{},"36":{},"39":{},"65":{},"93":{},"101":{},"106":{},"127":{},"165":{},"182":{},"197":{},"200":{},"202":{}},"component":{}}],["regardless",{"_index":3109,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["regist",{"_index":1408,"title":{},"name":{},"text":{"15":{},"21":{},"27":{},"39":{},"46":{},"47":{},"50":{},"77":{},"83":{},"106":{},"119":{},"121":{},"123":{},"140":{},"145":{},"182":{},"188":{},"200":{}},"component":{}}],["register(msg",{"_index":3725,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["register:1",{"_index":2705,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["register:1:r",{"_index":2469,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["register:20:uint[10",{"_index":3277,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["register:3:r",{"_index":2471,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["register:3[4",{"_index":2706,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["register:50[10",{"_index":3293,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["register:5678",{"_index":3283,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["register:5678{unit",{"_index":3288,"title":{},"name":{},"text":{"77":{}},"component":{}}],["register:9995[10",{"_index":3300,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["register:{start",{"_index":2691,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["registermod",{"_index":3723,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["registers:1",{"_index":3252,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["registersi",{"_index":3777,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["registerusr",{"_index":3784,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["registr",{"_index":3791,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["registri",{"_index":1560,"title":{},"name":{},"text":{"15":{},"92":{},"106":{},"152":{}},"component":{}}],["regular",{"_index":2500,"title":{},"name":{},"text":{"46":{},"47":{},"62":{},"78":{},"119":{},"121":{},"125":{},"141":{}},"component":{}}],["reject",{"_index":2124,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["rel",{"_index":4140,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["rel/0.13.0",{"_index":547,"title":{},"name":{},"text":{"5":{}},"component":{}}],["rel/{curr",{"_index":2197,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["rel/{major",{"_index":4438,"title":{},"name":{},"text":{"175":{}},"component":{}}],["relat",{"_index":211,"title":{},"name":{},"text":{"3":{},"9":{},"10":{},"14":{},"15":{},"29":{},"66":{},"87":{},"106":{},"111":{},"129":{},"148":{},"173":{},"179":{},"180":{},"190":{}},"component":{}}],["relationship",{"_index":2894,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["relax",{"_index":3349,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["relay",{"_index":1545,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["releas",{"_index":84,"title":{"34":{},"35":{},"36":{},"37":{},"195":{},"196":{},"197":{},"198":{},"3-7":{},"15-1":{},"15-2":{},"15-6":{},"15-7":{},"15-10":{},"15-11":{},"15-13":{},"15-17":{},"15-21":{},"15-25":{},"15-29":{},"15-33":{},"15-37":{},"15-38":{},"15-42":{},"15-46":{},"15-48":{},"21-7":{},"34-1":{},"34-3":{},"34-4":{},"34-6":{},"34-7":{},"34-9":{},"34-10":{},"34-11":{},"34-12":{},"36-2":{},"36-3":{},"36-4":{},"36-6":{},"36-7":{},"36-9":{},"36-10":{},"36-12":{},"36-13":{},"36-14":{},"36-15":{},"36-17":{},"37-2":{},"106-1":{},"106-2":{},"106-6":{},"106-7":{},"106-10":{},"106-11":{},"106-13":{},"106-17":{},"106-21":{},"106-25":{},"106-29":{},"106-33":{},"106-37":{},"106-38":{},"106-42":{},"106-46":{},"106-48":{},"173-7":{},"182-7":{},"195-1":{},"195-3":{},"195-4":{},"195-6":{},"195-7":{},"195-9":{},"195-10":{},"195-11":{},"195-12":{},"197-2":{},"197-3":{},"197-4":{},"197-6":{},"197-7":{},"197-9":{},"197-10":{},"197-12":{},"197-13":{},"197-14":{},"197-15":{},"197-17":{},"198-2":{}},"name":{"36":{},"197":{}},"text":{"3":{},"5":{},"6":{},"9":{},"15":{},"21":{},"29":{},"34":{},"36":{},"37":{},"41":{},"46":{},"48":{},"55":{},"56":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"106":{},"119":{},"141":{},"145":{},"158":{},"159":{},"173":{},"175":{},"176":{},"179":{},"182":{},"190":{},"195":{},"197":{},"198":{}},"component":{}}],["release.properti",{"_index":2095,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["release.zip",{"_index":2110,"title":{},"name":{},"text":{"34":{},"36":{},"37":{},"195":{},"197":{},"198":{}},"component":{}}],["release.zip.asc",{"_index":2111,"title":{},"name":{},"text":{"34":{},"36":{},"37":{},"195":{},"197":{},"198":{}},"component":{}}],["release.zip.sha512",{"_index":2112,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["release/{cod",{"_index":2057,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["release:branch",{"_index":2061,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["release:perform",{"_index":2094,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["release:prepar",{"_index":2080,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["release:rollback",{"_index":2092,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["release_not",{"_index":2068,"title":{},"name":{},"text":{"34":{},"36":{},"37":{},"195":{},"197":{},"198":{}},"component":{}}],["releases/cod",{"_index":2067,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["relese.zip",{"_index":2213,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["reli",{"_index":293,"title":{},"name":{},"text":{"3":{},"21":{},"65":{},"78":{},"127":{},"141":{},"182":{}},"component":{}}],["reliabl",{"_index":796,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["remain",{"_index":3186,"title":{},"name":{},"text":{"72":{},"78":{},"98":{},"135":{},"141":{},"169":{}},"component":{}}],["rememb",{"_index":2415,"title":{},"name":{},"text":{"43":{}},"component":{}}],["remot",{"_index":70,"title":{},"name":{},"text":{"2":{},"5":{},"8":{},"34":{},"36":{},"46":{},"55":{},"56":{},"59":{},"78":{},"80":{},"82":{},"83":{},"119":{},"141":{},"143":{},"145":{},"158":{},"159":{},"162":{},"172":{},"175":{},"178":{},"195":{},"197":{}},"component":{}}],["remov",{"_index":601,"title":{},"name":{},"text":{"6":{},"15":{},"34":{},"36":{},"88":{},"106":{},"149":{},"176":{},"195":{},"197":{}},"component":{}}],["renam",{"_index":1263,"title":{},"name":{},"text":{"15":{},"77":{},"106":{}},"component":{}}],["render",{"_index":1664,"title":{},"name":{},"text":{"17":{},"36":{},"113":{},"197":{}},"component":{}}],["repeat",{"_index":854,"title":{},"name":{},"text":{"9":{},"90":{},"101":{},"179":{},"202":{}},"component":{}}],["repeatedli",{"_index":3982,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["replac",{"_index":1305,"title":{},"name":{},"text":{"15":{},"17":{},"59":{},"106":{},"113":{},"151":{},"162":{}},"component":{}}],["replacethiswiththerealgitcommittag",{"_index":2121,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["replay",{"_index":2344,"title":{"86":{},"95":{},"146":{},"166":{},"86-2":{},"146-2":{}},"name":{"86":{},"95":{},"146":{},"166":{}},"text":{"41":{},"63":{},"75":{},"86":{},"94":{},"95":{},"115":{},"126":{},"138":{},"146":{},"164":{},"166":{}},"component":{}}],["repli",{"_index":2139,"title":{},"name":{},"text":{"34":{},"36":{},"66":{},"129":{},"195":{},"197":{}},"component":{}}],["replic",{"_index":2801,"title":{},"name":{},"text":{"55":{},"86":{},"146":{},"158":{}},"component":{}}],["repo",{"_index":483,"title":{},"name":{},"text":{"5":{},"21":{},"27":{},"34":{},"36":{},"37":{},"173":{},"175":{},"182":{},"188":{},"193":{},"195":{},"197":{},"198":{}},"component":{}}],["report",{"_index":441,"title":{"19":{},"108":{},"5-5":{},"175-5":{}},"name":{},"text":{"5":{},"6":{},"8":{},"9":{},"15":{},"20":{},"30":{},"31":{},"32":{},"39":{},"83":{},"106":{},"114":{},"145":{},"175":{},"176":{},"178":{},"179":{},"191":{},"192":{},"200":{}},"component":{}}],["repositori",{"_index":247,"title":{},"name":{},"text":{"3":{},"5":{},"9":{},"21":{},"34":{},"36":{},"48":{},"49":{},"55":{},"122":{},"158":{},"173":{},"175":{},"179":{},"182":{},"195":{},"197":{}},"component":{}}],["repres",{"_index":963,"title":{},"name":{},"text":{"9":{},"77":{},"82":{},"83":{},"103":{},"140":{},"145":{},"179":{}},"component":{}}],["represent",{"_index":2296,"title":{},"name":{},"text":{"39":{},"65":{},"82":{},"83":{},"98":{},"103":{},"127":{},"145":{},"169":{},"200":{}},"component":{}}],["reproduc",{"_index":784,"title":{},"name":{},"text":{"9":{},"15":{},"106":{},"179":{}},"component":{}}],["request",{"_index":438,"title":{"5-3":{},"26-1":{},"83-23":{},"145-23":{},"175-3":{},"187-1":{}},"name":{},"text":{"5":{},"12":{},"14":{},"15":{},"17":{},"22":{},"26":{},"39":{},"46":{},"47":{},"48":{},"50":{},"55":{},"56":{},"62":{},"66":{},"70":{},"72":{},"73":{},"76":{},"77":{},"78":{},"80":{},"82":{},"83":{},"85":{},"87":{},"88":{},"90":{},"92":{},"93":{},"102":{},"105":{},"106":{},"110":{},"111":{},"113":{},"119":{},"121":{},"123":{},"125":{},"129":{},"135":{},"136":{},"140":{},"141":{},"143":{},"145":{},"148":{},"149":{},"152":{},"158":{},"159":{},"165":{},"173":{},"175":{},"183":{},"187":{},"200":{},"203":{},"206":{}},"component":{}}],["request/respons",{"_index":3031,"title":{},"name":{},"text":{"66":{},"83":{},"129":{},"145":{}},"component":{}}],["request?falsear",{"_index":4385,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["requestapi",{"_index":4376,"title":{},"name":{},"text":{"104":{},"105":{},"205":{},"206":{}},"component":{}}],["requestif",{"_index":4407,"title":{},"name":{},"text":{"105":{},"206":{}},"component":{}}],["requestrec",{"_index":4391,"title":{},"name":{},"text":{"105":{},"206":{}},"component":{}}],["requestsend",{"_index":4395,"title":{},"name":{},"text":{"105":{},"206":{}},"component":{}}],["requestus",{"_index":4378,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["requir",{"_index":7,"title":{"2-3":{},"3-1":{},"26-4":{},"172-3":{},"173-1":{},"187-4":{}},"name":{},"text":{"2":{},"3":{},"6":{},"7":{},"9":{},"14":{},"15":{},"17":{},"21":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"39":{},"41":{},"46":{},"47":{},"50":{},"55":{},"56":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"87":{},"88":{},"90":{},"91":{},"93":{},"101":{},"103":{},"106":{},"111":{},"113":{},"115":{},"119":{},"121":{},"123":{},"124":{},"125":{},"126":{},"128":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"147":{},"148":{},"149":{},"153":{},"158":{},"159":{},"165":{},"172":{},"173":{},"176":{},"177":{},"179":{},"182":{},"190":{},"191":{},"195":{},"197":{},"200":{},"202":{},"204":{}},"component":{}}],["research",{"_index":1077,"title":{},"name":{},"text":{"10":{},"12":{},"110":{},"180":{}},"component":{}}],["reserv",{"_index":3767,"title":{"103-15":{},"204-13":{}},"name":{},"text":{"83":{},"103":{},"145":{},"204":{}},"component":{}}],["resistor",{"_index":3164,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["resolut",{"_index":2155,"title":{},"name":{},"text":{"34":{},"36":{},"104":{},"195":{},"197":{},"205":{}},"component":{}}],["resolution'read",{"_index":4363,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["resolution'subscrib",{"_index":4371,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["resolution'writ",{"_index":4368,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["resolv",{"_index":561,"title":{},"name":{},"text":{"6":{},"55":{},"62":{},"75":{},"81":{},"125":{},"138":{},"144":{},"158":{},"176":{}},"component":{}}],["resolved?falsetru",{"_index":4388,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["resolved?falsetruei",{"_index":4387,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["resolved?unresolvedresolvedtruei",{"_index":4386,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["resourc",{"_index":1221,"title":{"41-3":{},"71-3":{},"75-5":{},"76-3":{},"77-11":{},"80-4":{},"82-7":{},"82-12":{},"83-10":{},"83-25":{},"84-2":{},"85-3":{},"115-3":{},"134-3":{},"138-5":{},"139-3":{},"140-11":{},"143-4":{},"145-10":{},"145-25":{},"147-2":{}},"name":{},"text":{"14":{},"17":{},"41":{},"47":{},"48":{},"50":{},"56":{},"87":{},"91":{},"111":{},"113":{},"115":{},"121":{},"123":{},"148":{},"153":{},"159":{}},"component":{}}],["respect",{"_index":900,"title":{},"name":{},"text":{"9":{},"90":{},"179":{}},"component":{}}],["respond",{"_index":879,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["respons",{"_index":553,"title":{"6-2":{},"176-2":{}},"name":{},"text":{"6":{},"9":{},"15":{},"22":{},"26":{},"31":{},"39":{},"46":{},"47":{},"48":{},"50":{},"65":{},"66":{},"78":{},"82":{},"83":{},"88":{},"92":{},"93":{},"102":{},"106":{},"119":{},"121":{},"123":{},"127":{},"129":{},"145":{},"149":{},"152":{},"165":{},"176":{},"179":{},"183":{},"187":{},"200":{},"203":{}},"component":{}}],["response.getfieldnam",{"_index":2605,"title":{},"name":{},"text":{"47":{},"50":{},"121":{},"123":{}},"component":{}}],["response.getnumberofvalues(fieldnam",{"_index":4422,"title":{},"name":{},"text":{"123":{}},"component":{}}],["response.getnumberofvalues(tagnam",{"_index":2581,"title":{},"name":{},"text":{"47":{},"50":{},"121":{},"123":{}},"component":{}}],["response.getobject(fieldnam",{"_index":2710,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["response.getobject(tagnam",{"_index":2585,"title":{},"name":{},"text":{"47":{},"50":{},"121":{},"123":{}},"component":{}}],["response.getresponsecode(fieldname).nam",{"_index":2731,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["response.getresponsecode(tagname).nam",{"_index":2591,"title":{},"name":{},"text":{"47":{},"50":{},"121":{},"123":{}},"component":{}}],["response.getsubscriptionhandle(subscriptionnam",{"_index":2608,"title":{},"name":{},"text":{"47":{},"121":{}},"component":{}}],["response.gettagnam",{"_index":2577,"title":{},"name":{},"text":{"47":{},"50":{},"121":{},"123":{}},"component":{}}],["response.response_cod",{"_index":2635,"title":{},"name":{},"text":{"48":{}},"component":{}}],["response.tag_nam",{"_index":2646,"title":{},"name":{},"text":{"48":{}},"component":{}}],["response.tags[tag_name].nam",{"_index":2654,"title":{},"name":{},"text":{"48":{}},"component":{}}],["response.tags[tag_name].response_cod",{"_index":2647,"title":{},"name":{},"text":{"48":{}},"component":{}}],["response.tags[tag_name].valu",{"_index":2650,"title":{},"name":{},"text":{"48":{}},"component":{}}],["response.tags[tag_name].value.get_list",{"_index":2651,"title":{},"name":{},"text":{"48":{}},"component":{}}],["response_cod",{"_index":2657,"title":{},"name":{},"text":{"48":{}},"component":{}}],["response_pend",{"_index":2663,"title":{},"name":{},"text":{"48":{},"50":{},"123":{}},"component":{}}],["responseapi",{"_index":4406,"title":{},"name":{},"text":{"105":{},"206":{}},"component":{}}],["responsereadwithconnectionmanagerreadwithoutconnectionmanagerreadwithoutmessageroutersend",{"_index":4398,"title":{},"name":{},"text":{"105":{},"206":{}},"component":{}}],["responserec",{"_index":4397,"title":{},"name":{},"text":{"105":{},"206":{}},"component":{}}],["responsesend",{"_index":4392,"title":{},"name":{},"text":{"105":{},"206":{}},"component":{}}],["responsewritewithconnectionmanagerwritewithoutconnectionmanagerwritewithoutmessageroutersend",{"_index":4403,"title":{},"name":{},"text":{"105":{},"206":{}},"component":{}}],["rest",{"_index":1679,"title":{},"name":{},"text":{"21":{},"34":{},"36":{},"55":{},"86":{},"101":{},"146":{},"158":{},"182":{},"195":{},"197":{},"202":{}},"component":{}}],["restart",{"_index":2047,"title":{},"name":{},"text":{"32":{},"82":{},"83":{},"145":{},"193":{}},"component":{}}],["restor",{"_index":3474,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["restrict",{"_index":810,"title":{},"name":{},"text":{"9":{},"17":{},"21":{},"113":{},"179":{},"182":{}},"component":{}}],["result",{"_index":58,"title":{},"name":{},"text":{"2":{},"8":{},"15":{},"17":{},"21":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"39":{},"41":{},"50":{},"55":{},"78":{},"83":{},"88":{},"90":{},"91":{},"103":{},"106":{},"113":{},"123":{},"145":{},"149":{},"153":{},"158":{},"172":{},"173":{},"178":{},"182":{},"195":{},"197":{},"198":{},"200":{},"204":{}},"component":{}}],["resultapi",{"_index":4375,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["resulthandl",{"_index":4077,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["resultread",{"_index":4360,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["resultunsubscrib",{"_index":4373,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["resultwrit",{"_index":4367,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["retir",{"_index":2240,"title":{"53":{},"156":{}},"name":{},"text":{"36":{},"197":{}},"component":{}}],["retri",{"_index":2859,"title":{},"name":{},"text":{"55":{},"83":{},"145":{},"158":{}},"component":{}}],["retriabl",{"_index":2860,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["retriev",{"_index":2354,"title":{},"name":{},"text":{"41":{},"78":{},"87":{},"91":{},"115":{},"148":{},"153":{}},"component":{}}],["retrofit",{"_index":1126,"title":{},"name":{},"text":{"12":{},"16":{},"107":{},"110":{}},"component":{}}],["return",{"_index":1314,"title":{},"name":{},"text":{"15":{},"17":{},"21":{},"40":{},"46":{},"47":{},"48":{},"50":{},"62":{},"65":{},"66":{},"78":{},"81":{},"83":{},"84":{},"87":{},"88":{},"90":{},"92":{},"101":{},"103":{},"104":{},"106":{},"113":{},"119":{},"121":{},"123":{},"125":{},"127":{},"129":{},"141":{},"144":{},"145":{},"147":{},"148":{},"149":{},"151":{},"152":{},"182":{},"202":{},"204":{},"205":{}},"component":{}}],["rev",{"_index":3651,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["revers",{"_index":4286,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["review",{"_index":499,"title":{},"name":{},"text":{"5":{},"9":{},"36":{},"175":{},"179":{},"197":{}},"component":{}}],["revis",{"_index":2096,"title":{"83-3":{},"145-3":{}},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["revolution",{"_index":398,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["revolv",{"_index":3622,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["rewind",{"_index":4312,"title":{},"name":{},"text":{"103":{}},"component":{}}],["rewound",{"_index":4297,"title":{},"name":{},"text":{"103":{}},"component":{}}],["rewritten",{"_index":3446,"title":{},"name":{},"text":{"82":{}},"component":{}}],["rheinjug",{"_index":372,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["rhine",{"_index":360,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["right",{"_index":573,"title":{},"name":{},"text":{"6":{},"7":{},"9":{},"17":{},"21":{},"47":{},"48":{},"50":{},"56":{},"59":{},"65":{},"113":{},"121":{},"123":{},"127":{},"159":{},"162":{},"175":{},"176":{},"177":{},"179":{}},"component":{}}],["risk",{"_index":1632,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["rm",{"_index":2123,"title":{},"name":{},"text":{"34":{},"36":{},"37":{},"195":{},"197":{},"198":{}},"component":{}}],["road",{"_index":1918,"title":{},"name":{},"text":{"29":{},"190":{}},"component":{}}],["roadmap",{"_index":2553,"title":{},"name":{},"text":{"47":{},"48":{},"121":{}},"component":{}}],["roadshow",{"_index":411,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["role",{"_index":552,"title":{"6-2":{},"176-2":{}},"name":{},"text":{"6":{},"10":{},"78":{},"141":{},"176":{},"180":{}},"component":{}}],["room",{"_index":3216,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["root",{"_index":690,"title":{"26-3":{},"187-3":{}},"name":{},"text":{"8":{},"22":{},"26":{},"30":{},"34":{},"36":{},"39":{},"54":{},"59":{},"65":{},"83":{},"103":{},"127":{},"145":{},"157":{},"162":{},"178":{},"183":{},"187":{},"191":{},"195":{},"197":{},"200":{},"204":{}},"component":{}}],["root.m1.d1",{"_index":2751,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["root.mi.d1",{"_index":2754,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["root.mi.d1.foo",{"_index":2738,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["root.mi.d1.random_foo_integ",{"_index":2739,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["roster",{"_index":582,"title":{},"name":{},"text":{"6":{},"176":{}},"component":{}}],["round",{"_index":1388,"title":{},"name":{},"text":{"15":{},"39":{},"106":{},"200":{}},"component":{}}],["rout",{"_index":1361,"title":{},"name":{},"text":{"15":{},"52":{},"70":{},"76":{},"106":{},"133":{},"139":{}},"component":{}}],["routes'rec",{"_index":4343,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["routes'send",{"_index":4341,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["routin",{"_index":3788,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["row",{"_index":2409,"title":{},"name":{},"text":{"43":{},"47":{},"48":{},"50":{},"121":{},"123":{}},"component":{}}],["rr",{"_index":3488,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["rr.execute().get",{"_index":3492,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["rs",{"_index":673,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["rs232",{"_index":2345,"title":{},"name":{},"text":{"41":{},"115":{}},"component":{}}],["rs458",{"_index":62,"title":{},"name":{},"text":{"2":{},"172":{}},"component":{}}],["rs475",{"_index":42,"title":{},"name":{},"text":{"2":{},"172":{}},"component":{}}],["rs485",{"_index":49,"title":{},"name":{},"text":{"2":{},"41":{},"77":{},"115":{},"140":{},"172":{}},"component":{}}],["rsa",{"_index":1818,"title":{},"name":{},"text":{"26":{},"43":{},"187":{}},"component":{}}],["rtu",{"_index":64,"title":{"77-4":{},"140-4":{}},"name":{},"text":{"2":{},"15":{},"77":{},"106":{},"140":{},"172":{}},"component":{}}],["rule",{"_index":632,"title":{"8-1":{},"178-1":{}},"name":{},"text":{"8":{},"9":{},"86":{},"146":{},"173":{},"178":{},"179":{}},"component":{}}],["run",{"_index":234,"title":{"59-3":{},"91-5":{},"153-5":{},"162-3":{}},"name":{},"text":{"3":{},"8":{},"15":{},"17":{},"21":{},"22":{},"26":{},"29":{},"30":{},"31":{},"34":{},"36":{},"37":{},"39":{},"40":{},"46":{},"48":{},"50":{},"54":{},"55":{},"56":{},"59":{},"62":{},"83":{},"86":{},"90":{},"91":{},"106":{},"113":{},"119":{},"123":{},"125":{},"145":{},"146":{},"153":{},"157":{},"158":{},"159":{},"162":{},"173":{},"178":{},"182":{},"183":{},"190":{},"193":{},"195":{},"197":{},"198":{},"200":{}},"component":{}}],["run/stop",{"_index":3640,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["runner",{"_index":2284,"title":{"39-3":{},"200-3":{}},"name":{},"text":{"39":{},"200":{}},"component":{}}],["running\":false,\"conveyorleft\":tru",{"_index":2844,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["runtim",{"_index":1113,"title":{},"name":{},"text":{"12":{},"15":{},"21":{},"43":{},"47":{},"50":{},"82":{},"83":{},"106":{},"110":{},"121":{},"123":{},"145":{},"182":{}},"component":{}}],["runtimeexcept",{"_index":2716,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["rx",{"_index":3171,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["rühl",{"_index":1090,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["s",{"_index":2442,"title":{},"name":{},"text":{"46":{},"59":{},"82":{},"83":{},"85":{},"119":{},"145":{},"162":{}},"component":{}}],["s,i,b",{"_index":3382,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["s.r.l",{"_index":1137,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["s/%sw",{"_index":3952,"title":{},"name":{},"text":{"85":{}},"component":{}}],["s120",{"_index":3669,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["s20",{"_index":3964,"title":{},"name":{},"text":{"85":{}},"component":{}}],["s5",{"_index":994,"title":{},"name":{},"text":{"10":{},"82":{},"83":{},"145":{},"180":{}},"component":{}}],["s5time",{"_index":3532,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["s7",{"_index":315,"title":{"82":{},"83":{},"145":{},"83-15":{},"83-16":{},"145-15":{},"145-16":{}},"name":{"82":{},"83":{},"145":{}},"text":{"3":{},"10":{},"13":{},"15":{},"21":{},"27":{},"36":{},"47":{},"56":{},"57":{},"74":{},"78":{},"82":{},"83":{},"87":{},"88":{},"90":{},"103":{},"106":{},"112":{},"121":{},"137":{},"145":{},"148":{},"149":{},"151":{},"159":{},"160":{},"173":{},"180":{},"182":{},"188":{},"197":{},"204":{}},"component":{}}],["s7://10.10.64.20",{"_index":2549,"title":{},"name":{},"text":{"47":{},"121":{}},"component":{}}],["s7://192.168.23.30",{"_index":2887,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["s7_1200",{"_index":3468,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["s7_1500",{"_index":3527,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["s7_300",{"_index":3466,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["s7_400",{"_index":3467,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["s7alarmev",{"_index":3614,"title":{"83-20":{},"145-20":{}},"name":{},"text":{},"component":{}}],["s7app",{"_index":3664,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["s7diagnosticeventid",{"_index":3781,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["s7diagnosticeventid(10",{"_index":3786,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["s7messag",{"_index":4265,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7messagerequest",{"_index":4271,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7messagerespons",{"_index":4272,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7messageresponsedata",{"_index":4275,"title":{},"name":{},"text":{"103":{}},"component":{}}],["s7messageuserdata",{"_index":4277,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7modeev",{"_index":3609,"title":{"83-18":{},"145-18":{}},"name":{},"text":{"83":{},"145":{}},"component":{}}],["s7paramet",{"_index":3705,"title":{},"name":{},"text":{"83":{},"103":{},"145":{},"204":{}},"component":{}}],["s7parameter('messagetyp",{"_index":4488,"title":{},"name":{},"text":{"204":{}},"component":{}}],["s7parameterreadvarresponse).numitem",{"_index":4324,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7parameterwritevarrequest).item",{"_index":4328,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7parameterwritevarresponse).numitem",{"_index":4332,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7payload",{"_index":4278,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7payload('messagetyp",{"_index":4489,"title":{},"name":{},"text":{"204":{}},"component":{}}],["s7payload(uint",{"_index":4313,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7payloadreadvarrequest",{"_index":4318,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7payloadreadvarrespons",{"_index":4320,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7payloadsetupcommun",{"_index":4316,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7payloaduserdata",{"_index":4334,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7payloadwritevarrequest",{"_index":4326,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7payloadwritevarrespons",{"_index":4330,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7sysev",{"_index":3611,"title":{"83-19":{},"145-19":{}},"name":{},"text":{"83":{},"145":{}},"component":{}}],["s7userev",{"_index":3612,"title":{"83-19":{},"145-19":{}},"name":{},"text":{"83":{},"145":{}},"component":{}}],["s7varpayloaddataitem",{"_index":4322,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s7varpayloadstatusitem",{"_index":4331,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["s\\n",{"_index":2532,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["safe",{"_index":1827,"title":{},"name":{},"text":{"26":{},"56":{},"83":{},"145":{},"159":{},"187":{}},"component":{}}],["sake",{"_index":1823,"title":{},"name":{},"text":{"26":{},"91":{},"153":{},"187":{}},"component":{}}],["same",{"_index":61,"title":{},"name":{},"text":{"2":{},"3":{},"5":{},"8":{},"9":{},"15":{},"17":{},"21":{},"34":{},"36":{},"37":{},"39":{},"41":{},"43":{},"46":{},"47":{},"48":{},"50":{},"55":{},"66":{},"72":{},"75":{},"78":{},"81":{},"82":{},"83":{},"84":{},"87":{},"90":{},"91":{},"92":{},"101":{},"103":{},"106":{},"113":{},"115":{},"119":{},"121":{},"123":{},"129":{},"135":{},"138":{},"141":{},"144":{},"145":{},"147":{},"148":{},"152":{},"153":{},"158":{},"172":{},"173":{},"175":{},"178":{},"179":{},"182":{},"195":{},"197":{},"198":{},"200":{},"202":{}},"component":{}}],["sampl",{"_index":2374,"title":{},"name":{},"text":{"41":{},"55":{},"83":{},"145":{},"158":{}},"component":{}}],["sandbox",{"_index":1510,"title":{},"name":{},"text":{"15":{},"106":{},"173":{},"197":{},"198":{}},"component":{}}],["sandbox,en",{"_index":4478,"title":{},"name":{},"text":{"197":{}},"component":{}}],["sapi",{"_index":3625,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sat",{"_index":4257,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["satisfi",{"_index":1695,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["save",{"_index":1646,"title":{},"name":{},"text":{"17":{},"43":{},"56":{},"103":{},"113":{},"159":{},"204":{}},"component":{}}],["sb",{"_index":3878,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["scada",{"_index":1194,"title":{},"name":{},"text":{"13":{},"83":{},"112":{},"145":{}},"component":{}}],["scale",{"_index":1621,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["scan",{"_index":653,"title":{"83-17":{},"145-17":{}},"name":{},"text":{"8":{},"37":{},"83":{},"145":{},"178":{},"198":{}},"component":{}}],["scanner",{"_index":643,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["scenario",{"_index":1127,"title":{},"name":{},"text":{"12":{},"72":{},"83":{},"88":{},"110":{},"135":{},"145":{},"149":{}},"component":{}}],["schedul",{"_index":2179,"title":{},"name":{},"text":{"36":{},"56":{},"83":{},"91":{},"145":{},"153":{},"159":{},"197":{}},"component":{}}],["scheduled,1000",{"_index":4057,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["scheduled,10000",{"_index":4082,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["schema",{"_index":1717,"title":{"55-12":{},"158-12":{}},"name":{},"text":{"21":{},"55":{},"82":{},"83":{},"145":{},"158":{}},"component":{}}],["scheme",{"_index":3215,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["schneider",{"_index":3946,"title":{"85":{}},"name":{},"text":{"85":{}},"component":{}}],["scienc",{"_index":1150,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["scm",{"_index":2084,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["scope",{"_index":462,"title":{},"name":{},"text":{"5":{},"21":{},"70":{},"78":{},"133":{},"175":{},"182":{}},"component":{}}],["scout",{"_index":3599,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["scrape",{"_index":1563,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["scraper",{"_index":1434,"title":{"91":{},"153":{},"91-1":{},"91-5":{},"153-1":{},"153-5":{}},"name":{"91":{},"153":{}},"text":{"15":{},"16":{},"55":{},"91":{},"92":{},"106":{},"107":{},"152":{},"153":{},"158":{}},"component":{}}],["scraper.start",{"_index":4071,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["scraperconfig",{"_index":4065,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["scraperconfigur",{"_index":4083,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["scraperconfiguration.fromfile(\"{path",{"_index":4085,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["scraperconfigurationtriggeredimpl",{"_index":4064,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["scraperconfigurationtriggeredimpl.class",{"_index":4086,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["scraperconfigurationtriggeredimplbuild",{"_index":4049,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["scraperexcept",{"_index":4073,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["screen",{"_index":2396,"title":{},"name":{},"text":{"43":{}},"component":{}}],["script",{"_index":134,"title":{},"name":{},"text":{"3":{},"37":{},"56":{},"159":{},"173":{},"198":{}},"component":{}}],["sdk",{"_index":1964,"title":{},"name":{},"text":{"30":{},"31":{},"191":{},"192":{},"193":{}},"component":{}}],["sdo",{"_index":3029,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["sdo:nodeid:index/subindex:type[arrays",{"_index":3055,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["se",{"_index":3600,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["search",{"_index":624,"title":{},"name":{},"text":{"7":{},"34":{},"36":{},"37":{},"56":{},"159":{},"177":{},"195":{},"197":{},"198":{}},"component":{}}],["sebastian",{"_index":1089,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["sec",{"_index":3828,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["second",{"_index":56,"title":{},"name":{},"text":{"2":{},"5":{},"15":{},"34":{},"36":{},"43":{},"50":{},"54":{},"56":{},"77":{},"78":{},"82":{},"83":{},"87":{},"90":{},"91":{},"102":{},"106":{},"123":{},"140":{},"141":{},"145":{},"148":{},"151":{},"153":{},"157":{},"159":{},"172":{},"175":{},"193":{},"195":{},"197":{},"203":{}},"component":{}}],["secondari",{"_index":3473,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["secret",{"_index":4011,"title":{"90-5":{}},"name":{},"text":{},"component":{}}],["section",{"_index":607,"title":{"7":{},"177":{}},"name":{},"text":{"9":{},"21":{},"23":{},"34":{},"36":{},"37":{},"56":{},"82":{},"83":{},"145":{},"159":{},"173":{},"179":{},"182":{},"184":{},"193":{},"195":{},"197":{},"198":{}},"component":{}}],["secur",{"_index":867,"title":{"20":{},"114":{},"17-5":{},"78-4":{},"113-5":{},"141-4":{}},"name":{"20":{},"114":{}},"text":{"9":{},"13":{},"17":{},"20":{},"43":{},"59":{},"78":{},"112":{},"113":{},"114":{},"141":{},"162":{},"179":{}},"component":{}}],["securitypolici",{"_index":3315,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["see",{"_index":131,"title":{},"name":{},"text":{"3":{},"9":{},"20":{},"27":{},"34":{},"36":{},"39":{},"40":{},"43":{},"46":{},"47":{},"48":{},"50":{},"55":{},"56":{},"65":{},"71":{},"82":{},"83":{},"86":{},"87":{},"92":{},"101":{},"103":{},"114":{},"119":{},"121":{},"123":{},"127":{},"134":{},"145":{},"146":{},"148":{},"151":{},"152":{},"158":{},"159":{},"173":{},"179":{},"188":{},"195":{},"197":{},"200":{},"202":{},"204":{}},"component":{}}],["seed",{"_index":1843,"title":{},"name":{},"text":{"26":{}},"component":{}}],["seem",{"_index":123,"title":{},"name":{},"text":{"3":{},"15":{},"21":{},"26":{},"27":{},"30":{},"31":{},"32":{},"50":{},"66":{},"82":{},"83":{},"103":{},"106":{},"123":{},"129":{},"145":{},"173":{},"182":{},"187":{},"188":{},"191":{},"192":{},"193":{}},"component":{}}],["segment",{"_index":2361,"title":{},"name":{},"text":{"41":{},"62":{},"66":{},"70":{},"72":{},"75":{},"81":{},"115":{},"125":{},"129":{},"133":{},"135":{},"138":{},"144":{}},"component":{}}],["select",{"_index":102,"title":{},"name":{},"text":{"3":{},"21":{},"26":{},"30":{},"32":{},"34":{},"36":{},"41":{},"43":{},"50":{},"54":{},"56":{},"78":{},"81":{},"82":{},"83":{},"101":{},"103":{},"115":{},"123":{},"141":{},"144":{},"145":{},"157":{},"159":{},"173":{},"182":{},"187":{},"191":{},"193":{},"195":{},"197":{},"202":{}},"component":{}}],["self",{"_index":708,"title":{"43-1":{}},"name":{},"text":{"8":{},"9":{},"10":{},"59":{},"78":{},"162":{},"178":{},"179":{},"180":{}},"component":{}}],["semant",{"_index":1067,"title":{"72-1":{},"135-1":{}},"name":{},"text":{"10":{},"93":{},"165":{},"180":{}},"component":{}}],["semver",{"_index":2055,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["send",{"_index":72,"title":{},"name":{},"text":{"2":{},"7":{},"17":{},"34":{},"36":{},"55":{},"65":{},"66":{},"71":{},"77":{},"78":{},"82":{},"83":{},"92":{},"104":{},"113":{},"127":{},"129":{},"134":{},"140":{},"141":{},"145":{},"152":{},"158":{},"172":{},"177":{},"195":{},"197":{},"205":{}},"component":{}}],["sendbuffers",{"_index":4425,"title":{},"name":{},"text":{"141":{}},"component":{}}],["sendunitdata",{"_index":4399,"title":{},"name":{},"text":{"105":{},"206":{}},"component":{}}],["sens",{"_index":4306,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["sensit",{"_index":3366,"title":{},"name":{},"text":{"78":{}},"component":{}}],["sent",{"_index":2140,"title":{},"name":{},"text":{"34":{},"36":{},"46":{},"47":{},"48":{},"50":{},"55":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"72":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"90":{},"102":{},"119":{},"121":{},"123":{},"124":{},"125":{},"126":{},"128":{},"129":{},"133":{},"135":{},"136":{},"139":{},"140":{},"141":{},"142":{},"143":{},"145":{},"158":{},"195":{},"197":{},"203":{},"204":{}},"component":{}}],["separ",{"_index":1574,"title":{"21-7":{},"182-7":{}},"name":{},"text":{"16":{},"21":{},"41":{},"50":{},"78":{},"82":{},"83":{},"90":{},"103":{},"107":{},"115":{},"123":{},"145":{},"175":{},"182":{},"204":{}},"component":{}}],["separar",{"_index":2884,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["septemb",{"_index":401,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["seqdiag",{"_index":1860,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["sequenc",{"_index":3526,"title":{},"name":{},"text":{"82":{},"83":{},"103":{},"145":{},"204":{}},"component":{}}],["sequenti",{"_index":3795,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["seri",{"_index":1038,"title":{},"name":{},"text":{"10":{},"54":{},"83":{},"145":{},"157":{},"180":{}},"component":{}}],["serial",{"_index":39,"title":{"39":{},"97":{},"167":{},"200":{},"40-3":{},"71-2":{},"77-6":{},"77-9":{},"103-22":{},"134-2":{},"140-6":{},"140-9":{}},"name":{"39":{},"97":{},"167":{},"200":{}},"text":{"2":{},"15":{},"21":{},"39":{},"41":{},"50":{},"65":{},"71":{},"77":{},"94":{},"97":{},"103":{},"106":{},"115":{},"123":{},"127":{},"134":{},"140":{},"164":{},"167":{},"172":{},"200":{},"204":{}},"component":{}}],["serial.baud",{"_index":3135,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["serial.num",{"_index":3145,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["serial.par",{"_index":3148,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["serv",{"_index":2147,"title":{},"name":{},"text":{"34":{},"36":{},"83":{},"93":{},"145":{},"165":{},"195":{},"197":{}},"component":{}}],["server",{"_index":295,"title":{"59":{},"59-1":{},"78-14":{},"162-1":{}},"name":{},"text":{"3":{},"8":{},"10":{},"15":{},"16":{},"36":{},"43":{},"55":{},"59":{},"78":{},"86":{},"106":{},"107":{},"141":{},"146":{},"158":{},"162":{},"173":{},"178":{},"180":{},"197":{}},"component":{}}],["servic",{"_index":1082,"title":{},"name":{},"text":{"10":{},"12":{},"13":{},"14":{},"15":{},"17":{},"18":{},"22":{},"23":{},"24":{},"25":{},"26":{},"28":{},"46":{},"66":{},"72":{},"78":{},"81":{},"82":{},"83":{},"88":{},"106":{},"110":{},"111":{},"112":{},"113":{},"119":{},"129":{},"135":{},"141":{},"144":{},"145":{},"149":{},"175":{},"180":{},"184":{},"185":{},"186":{},"187":{},"189":{}},"component":{}}],["serviceload",{"_index":1743,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["servlet",{"_index":1792,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["session",{"_index":1853,"title":{},"name":{},"text":{"26":{},"54":{},"55":{},"56":{},"78":{},"103":{},"141":{},"157":{},"158":{},"159":{},"187":{},"204":{}},"component":{}}],["set",{"_index":205,"title":{"50-1":{},"56-1":{},"123-1":{},"159-1":{}},"name":{},"text":{"3":{},"6":{},"8":{},"9":{},"15":{},"16":{},"21":{},"27":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"39":{},"41":{},"46":{},"47":{},"48":{},"50":{},"55":{},"56":{},"59":{},"66":{},"70":{},"71":{},"75":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"86":{},"90":{},"101":{},"103":{},"105":{},"106":{},"107":{},"115":{},"119":{},"121":{},"123":{},"129":{},"133":{},"134":{},"138":{},"139":{},"140":{},"141":{},"144":{},"145":{},"146":{},"158":{},"159":{},"162":{},"173":{},"176":{},"178":{},"179":{},"182":{},"188":{},"190":{},"191":{},"192":{},"193":{},"195":{},"197":{},"200":{},"202":{},"204":{},"206":{}},"component":{}}],["setcap",{"_index":1944,"title":{},"name":{},"text":{"30":{},"81":{},"144":{},"191":{}},"component":{}}],["setter",{"_index":2713,"title":{},"name":{},"text":{"50":{},"90":{},"123":{}},"component":{}}],["setting\"respons",{"_index":4410,"title":{},"name":{},"text":{"105":{},"206":{}},"component":{}}],["settings.xml",{"_index":2170,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["setup",{"_index":219,"title":{},"name":{},"text":{"3":{},"22":{},"46":{},"92":{},"119":{},"152":{},"173":{},"183":{},"193":{}},"component":{}}],["sever",{"_index":965,"title":{},"name":{},"text":{"9":{},"10":{},"15":{},"43":{},"66":{},"78":{},"83":{},"106":{},"129":{},"145":{},"179":{},"180":{}},"component":{}}],["sfc",{"_index":3556,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["sg",{"_index":2746,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["sga",{"_index":828,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["sha512",{"_index":263,"title":{"15-2":{},"15-7":{},"15-10":{},"15-11":{},"15-13":{},"15-17":{},"15-21":{},"15-25":{},"15-29":{},"15-33":{},"15-38":{},"15-42":{},"15-46":{},"15-48":{},"106-2":{},"106-7":{},"106-10":{},"106-11":{},"106-13":{},"106-17":{},"106-21":{},"106-25":{},"106-29":{},"106-33":{},"106-38":{},"106-42":{},"106-46":{},"106-48":{}},"name":{},"text":{"3":{},"34":{},"36":{},"37":{},"173":{},"195":{},"197":{},"198":{}},"component":{}}],["share",{"_index":46,"title":{},"name":{},"text":{"2":{},"3":{},"17":{},"30":{},"36":{},"50":{},"88":{},"92":{},"113":{},"123":{},"149":{},"152":{},"172":{},"173":{},"193":{},"197":{}},"component":{}}],["sharpen",{"_index":1087,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["shasum",{"_index":2255,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["sheet",{"_index":3049,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["ship",{"_index":1584,"title":{},"name":{},"text":{"16":{},"66":{},"93":{},"107":{},"129":{},"165":{},"193":{}},"component":{}}],["shop",{"_index":1122,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["short",{"_index":1405,"title":{},"name":{},"text":{"15":{},"34":{},"36":{},"37":{},"41":{},"43":{},"47":{},"50":{},"71":{},"77":{},"82":{},"83":{},"106":{},"115":{},"121":{},"123":{},"134":{},"140":{},"145":{},"151":{},"195":{},"197":{},"198":{}},"component":{}}],["shortcut",{"_index":464,"title":{},"name":{},"text":{"5":{},"175":{}},"component":{}}],["shorter",{"_index":1505,"title":{},"name":{},"text":{"15":{},"77":{},"82":{},"83":{},"106":{},"140":{},"145":{}},"component":{}}],["shortest",{"_index":2369,"title":{},"name":{},"text":{"41":{},"115":{}},"component":{}}],["shouldn’t",{"_index":1738,"title":{},"name":{},"text":{"21":{},"34":{},"55":{},"59":{},"81":{},"103":{},"144":{},"158":{},"162":{},"182":{},"195":{},"204":{}},"component":{}}],["show",{"_index":2742,"title":{},"name":{},"text":{"54":{},"55":{},"56":{},"78":{},"83":{},"92":{},"145":{},"151":{},"152":{},"157":{},"158":{},"159":{}},"component":{}}],["shown",{"_index":2615,"title":{},"name":{},"text":{"48":{},"55":{},"59":{},"82":{},"83":{},"145":{},"158":{},"162":{}},"component":{}}],["sicher",{"_index":424,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["side",{"_index":533,"title":{},"name":{},"text":{"5":{},"12":{},"22":{},"34":{},"36":{},"56":{},"65":{},"80":{},"82":{},"83":{},"110":{},"127":{},"143":{},"145":{},"159":{},"175":{},"195":{},"197":{}},"component":{}}],["siemen",{"_index":993,"title":{},"name":{},"text":{"10":{},"13":{},"15":{},"21":{},"36":{},"82":{},"83":{},"88":{},"106":{},"112":{},"145":{},"149":{},"180":{},"182":{},"197":{}},"component":{}}],["sig",{"_index":3815,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sig_[1..8]_data_statu",{"_index":3823,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sig_[1…8",{"_index":3816,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sig_[1…8]_data",{"_index":3820,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sig_[1…8]_data_co",{"_index":3822,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sig_[1…8]_data_go",{"_index":3821,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sig_[1…8]_data_length",{"_index":3825,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sig_[1…8]_data_s",{"_index":3824,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sig_[1…8]_stat",{"_index":3818,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sig_data",{"_index":3819,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sig_stat",{"_index":3817,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sign",{"_index":477,"title":{"43-1":{}},"name":{},"text":{"5":{},"8":{},"9":{},"27":{},"34":{},"36":{},"59":{},"78":{},"82":{},"83":{},"103":{},"141":{},"145":{},"162":{},"175":{},"178":{},"179":{},"188":{},"195":{},"197":{},"204":{}},"component":{}}],["sign_encrypt",{"_index":3314,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["signal",{"_index":2502,"title":{},"name":{},"text":{"46":{},"47":{},"83":{},"119":{},"121":{},"145":{}},"component":{}}],["signatur",{"_index":266,"title":{},"name":{},"text":{"3":{},"34":{},"36":{},"37":{},"78":{},"141":{},"173":{},"195":{},"197":{},"198":{}},"component":{}}],["signific",{"_index":1475,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["silenc",{"_index":593,"title":{},"name":{},"text":{"6":{},"176":{}},"component":{}}],["silicon",{"_index":1959,"title":{},"name":{},"text":{"30":{}},"component":{}}],["silo",{"_index":375,"title":{},"name":{},"text":{"4":{},"13":{},"112":{},"174":{}},"component":{}}],["simat",{"_index":3408,"title":{},"name":{},"text":{"78":{},"82":{},"83":{},"145":{}},"component":{}}],["similar",{"_index":1760,"title":{},"name":{},"text":{"21":{},"32":{},"34":{},"36":{},"46":{},"47":{},"48":{},"50":{},"71":{},"72":{},"103":{},"119":{},"121":{},"123":{},"134":{},"135":{},"195":{},"197":{},"204":{}},"component":{}}],["simocod",{"_index":3410,"title":{},"name":{},"text":{"78":{}},"component":{}}],["simot",{"_index":3598,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["simpl",{"_index":3,"title":{"2-1":{},"90-3":{},"90-4":{},"92-2":{},"103-1":{},"103-16":{},"151-2":{},"152-2":{},"172-1":{},"204-1":{},"204-14":{}},"name":{},"text":{"2":{},"3":{},"8":{},"21":{},"27":{},"29":{},"36":{},"39":{},"50":{},"55":{},"71":{},"77":{},"83":{},"91":{},"92":{},"101":{},"102":{},"103":{},"123":{},"134":{},"140":{},"145":{},"152":{},"153":{},"158":{},"172":{},"173":{},"178":{},"188":{},"190":{},"197":{},"200":{},"202":{},"203":{},"204":{}},"component":{}}],["simpler",{"_index":1319,"title":{},"name":{},"text":{"15":{},"17":{},"34":{},"106":{},"113":{},"195":{}},"component":{}}],["simplest",{"_index":472,"title":{},"name":{},"text":{"5":{},"27":{},"34":{},"36":{},"86":{},"146":{},"175":{},"188":{},"195":{},"197":{}},"component":{}}],["simpli",{"_index":164,"title":{},"name":{},"text":{"3":{},"8":{},"21":{},"26":{},"32":{},"41":{},"46":{},"47":{},"48":{},"50":{},"56":{},"77":{},"80":{},"82":{},"83":{},"86":{},"87":{},"90":{},"91":{},"101":{},"103":{},"115":{},"119":{},"121":{},"123":{},"143":{},"145":{},"146":{},"148":{},"151":{},"153":{},"159":{},"173":{},"178":{},"182":{},"187":{},"202":{},"204":{}},"component":{}}],["simplic",{"_index":1128,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["simplif",{"_index":4288,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["simplifi",{"_index":2130,"title":{},"name":{},"text":{"34":{},"36":{},"65":{},"78":{},"82":{},"83":{},"127":{},"141":{},"145":{},"175":{},"195":{},"197":{}},"component":{}}],["simplist",{"_index":1762,"title":{},"name":{},"text":{"21":{},"93":{},"165":{},"182":{}},"component":{}}],["simul",{"_index":1258,"title":{"84":{},"147":{},"84-5":{},"147-5":{}},"name":{"84":{},"147":{}},"text":{"15":{},"47":{},"48":{},"50":{},"54":{},"74":{},"78":{},"80":{},"84":{},"88":{},"106":{},"121":{},"123":{},"137":{},"141":{},"143":{},"147":{},"149":{},"157":{}},"component":{}}],["simulated%3a%2f%2flocalhost",{"_index":3425,"title":{},"name":{},"text":{"80":{},"143":{}},"component":{}}],["simulated://127.0.0.1",{"_index":2743,"title":{},"name":{},"text":{"54":{},"59":{},"84":{},"147":{},"157":{},"162":{}},"component":{}}],["simulated://localhost",{"_index":3424,"title":{},"name":{},"text":{"80":{},"143":{}},"component":{}}],["simulated:{transport}://{ip",{"_index":3932,"title":{},"name":{},"text":{"84":{},"147":{}},"component":{}}],["simulationdevic",{"_index":2946,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["simultan",{"_index":3745,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sin",{"_index":3583,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["sinam",{"_index":3572,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["singl",{"_index":1473,"title":{},"name":{},"text":{"15":{},"47":{},"48":{},"50":{},"62":{},"63":{},"74":{},"77":{},"78":{},"82":{},"83":{},"103":{},"104":{},"106":{},"121":{},"123":{},"125":{},"126":{},"137":{},"140":{},"141":{},"145":{},"183":{},"204":{},"205":{}},"component":{}}],["singlefieldoptim",{"_index":1432,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["sink",{"_index":1381,"title":{"55-8":{},"55-9":{},"55-10":{},"158-8":{},"158-9":{},"158-10":{}},"name":{},"text":{"15":{},"55":{},"56":{},"106":{},"158":{},"159":{}},"component":{}}],["sink.properti",{"_index":2826,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["sint",{"_index":3091,"title":{},"name":{},"text":{"66":{},"70":{},"72":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"129":{},"133":{},"135":{},"139":{},"140":{},"141":{},"144":{},"145":{},"147":{}},"component":{}}],["site",{"_index":252,"title":{"36-19":{},"197-19":{}},"name":{},"text":{"3":{},"5":{},"26":{},"27":{},"34":{},"36":{},"173":{},"175":{},"187":{},"188":{},"193":{},"195":{},"197":{}},"component":{}}],["site.xml",{"_index":1881,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["situat",{"_index":1403,"title":{},"name":{},"text":{"15":{},"78":{},"88":{},"106":{},"149":{}},"component":{}}],["size",{"_index":1387,"title":{},"name":{},"text":{"15":{},"17":{},"43":{},"50":{},"62":{},"63":{},"66":{},"71":{},"76":{},"77":{},"78":{},"82":{},"83":{},"84":{},"85":{},"98":{},"102":{},"103":{},"106":{},"113":{},"123":{},"125":{},"126":{},"129":{},"134":{},"139":{},"140":{},"141":{},"145":{},"147":{},"169":{},"203":{},"204":{}},"component":{}}],["sizes'brows",{"_index":4357,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["sizes'rec",{"_index":4351,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["sizes'send",{"_index":4352,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["size}]:{nam",{"_index":3242,"title":{},"name":{},"text":{"77":{}},"component":{}}],["size}]:{speci",{"_index":3161,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["sketch",{"_index":2299,"title":{},"name":{},"text":{"39":{},"71":{},"134":{},"200":{}},"component":{}}],["skin",{"_index":1864,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["skip",{"_index":233,"title":{"173-10":{}},"name":{},"text":{"3":{},"27":{},"65":{},"82":{},"83":{},"101":{},"103":{},"127":{},"145":{},"173":{},"188":{},"202":{},"204":{}},"component":{}}],["slave",{"_index":2673,"title":{"50-1":{},"123-1":{}},"name":{},"text":{"50":{},"77":{},"83":{},"85":{},"123":{},"145":{}},"component":{}}],["slide",{"_index":1164,"title":{"13":{},"112":{},"13-3":{},"112-3":{}},"name":{"13":{},"112":{}},"text":{},"component":{}}],["slightli",{"_index":1383,"title":{},"name":{},"text":{"15":{},"17":{},"46":{},"78":{},"106":{},"113":{},"119":{}},"component":{}}],["slot",{"_index":3123,"title":{},"name":{},"text":{"70":{},"76":{},"82":{},"83":{},"133":{},"139":{},"145":{}},"component":{}}],["slot2",{"_index":3655,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["slot=3&control",{"_index":3481,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["slower",{"_index":3976,"title":{},"name":{},"text":{"86":{},"146":{}},"component":{}}],["slz_id",{"_index":3890,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["small",{"_index":1462,"title":{},"name":{},"text":{"15":{},"17":{},"82":{},"83":{},"88":{},"106":{},"113":{},"145":{},"149":{}},"component":{}}],["smaller",{"_index":2715,"title":{},"name":{},"text":{"50":{},"71":{},"77":{},"82":{},"83":{},"123":{},"134":{},"140":{},"145":{}},"component":{}}],["smart",{"_index":1081,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["smooth",{"_index":612,"title":{},"name":{},"text":{"7":{},"177":{}},"component":{}}],["snap7",{"_index":3618,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["snapshot",{"_index":314,"title":{"49":{},"122":{}},"name":{"49":{},"122":{}},"text":{"3":{},"5":{},"8":{},"21":{},"22":{},"34":{},"36":{},"37":{},"46":{},"47":{},"49":{},"50":{},"55":{},"86":{},"87":{},"91":{},"92":{},"93":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"119":{},"122":{},"123":{},"158":{},"173":{},"178":{},"182":{},"183":{},"195":{},"197":{},"198":{}},"component":{}}],["snapshot}/rc1",{"_index":2106,"title":{},"name":{},"text":{"34":{}},"component":{}}],["snapshot}/rc1/apach",{"_index":2109,"title":{},"name":{},"text":{"34":{}},"component":{}}],["snapshot}/rc1/readm",{"_index":2107,"title":{},"name":{},"text":{"34":{}},"component":{}}],["snapshot}/rc1/release_not",{"_index":2108,"title":{},"name":{},"text":{"34":{}},"component":{}}],["snip",{"_index":4199,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["snippet",{"_index":2308,"title":{},"name":{},"text":{"39":{},"87":{},"92":{},"103":{},"148":{},"151":{},"152":{},"200":{},"204":{}},"component":{}}],["socket",{"_index":1534,"title":{"96":{},"168":{}},"name":{"96":{},"168":{}},"text":{"15":{},"26":{},"41":{},"75":{},"81":{},"94":{},"96":{},"97":{},"99":{},"100":{},"106":{},"115":{},"138":{},"144":{},"164":{},"167":{},"168":{},"170":{},"171":{},"187":{}},"component":{}}],["socketcan",{"_index":3013,"title":{"98":{},"169":{},"66-3":{},"72-3":{},"129-3":{},"135-3":{}},"name":{"98":{},"169":{}},"text":{"65":{},"66":{},"72":{},"93":{},"94":{},"98":{},"127":{},"129":{},"135":{},"164":{},"165":{},"169":{}},"component":{}}],["socketcanfram",{"_index":3014,"title":{},"name":{},"text":{"65":{},"127":{}},"component":{}}],["soften",{"_index":2387,"title":{},"name":{},"text":{"43":{}},"component":{}}],["softnet",{"_index":3624,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["softwar",{"_index":773,"title":{"26-4":{},"187-4":{}},"name":{},"text":{"9":{},"10":{},"12":{},"13":{},"14":{},"16":{},"17":{},"50":{},"78":{},"82":{},"83":{},"98":{},"101":{},"107":{},"110":{},"111":{},"112":{},"113":{},"123":{},"145":{},"169":{},"179":{},"180":{},"202":{}},"component":{}}],["solingen",{"_index":353,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["solut",{"_index":1120,"title":{},"name":{},"text":{"12":{},"14":{},"17":{},"21":{},"30":{},"54":{},"83":{},"110":{},"111":{},"113":{},"145":{},"157":{},"182":{},"191":{}},"component":{}}],["solv",{"_index":1109,"title":{},"name":{},"text":{"12":{},"14":{},"110":{},"111":{}},"component":{}}],["somefourdigitnumb",{"_index":2126,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["somenumb",{"_index":2101,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["someon",{"_index":856,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["someth",{"_index":519,"title":{"34-5":{},"36-8":{},"195-5":{},"197-8":{}},"name":{},"text":{"5":{},"27":{},"32":{},"34":{},"36":{},"39":{},"41":{},"46":{},"47":{},"48":{},"50":{},"56":{},"71":{},"88":{},"91":{},"103":{},"115":{},"119":{},"121":{},"123":{},"134":{},"149":{},"153":{},"159":{},"175":{},"188":{},"193":{},"195":{},"197":{},"200":{}},"component":{}}],["sometim",{"_index":1952,"title":{},"name":{},"text":{"30":{},"34":{},"36":{},"41":{},"78":{},"86":{},"103":{},"115":{},"191":{},"195":{},"197":{}},"component":{}}],["somewher",{"_index":1899,"title":{},"name":{},"text":{"27":{},"173":{},"188":{}},"component":{}}],["sonar",{"_index":1805,"title":{},"name":{"25":{},"186":{}},"text":{},"component":{}}],["sonarcloud",{"_index":1803,"title":{},"name":{},"text":{"22":{},"25":{},"183":{},"186":{}},"component":{}}],["soon",{"_index":54,"title":{},"name":{},"text":{"2":{},"5":{},"8":{},"14":{},"15":{},"17":{},"21":{},"26":{},"27":{},"29":{},"34":{},"36":{},"40":{},"41":{},"46":{},"47":{},"48":{},"50":{},"56":{},"62":{},"63":{},"75":{},"82":{},"83":{},"86":{},"87":{},"88":{},"91":{},"95":{},"101":{},"106":{},"111":{},"113":{},"115":{},"119":{},"121":{},"123":{},"125":{},"126":{},"138":{},"145":{},"146":{},"148":{},"149":{},"153":{},"159":{},"166":{},"172":{},"175":{},"178":{},"182":{},"187":{},"188":{},"190":{},"195":{},"197":{},"202":{}},"component":{}}],["sophist",{"_index":1320,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["sort",{"_index":968,"title":{},"name":{},"text":{"10":{},"14":{},"17":{},"39":{},"46":{},"113":{},"119":{},"180":{},"193":{},"200":{}},"component":{}}],["sourc",{"_index":119,"title":{"15-2":{},"15-7":{},"15-10":{},"15-11":{},"15-13":{},"15-17":{},"15-21":{},"15-25":{},"15-29":{},"15-33":{},"15-38":{},"15-42":{},"15-46":{},"15-48":{},"17-1":{},"55-5":{},"55-6":{},"55-7":{},"56-3":{},"91-2":{},"106-2":{},"106-7":{},"106-10":{},"106-11":{},"106-13":{},"106-17":{},"106-21":{},"106-25":{},"106-29":{},"106-33":{},"106-38":{},"106-42":{},"106-46":{},"106-48":{},"113-1":{},"153-2":{},"158-5":{},"158-6":{},"158-7":{},"159-3":{}},"name":{},"text":{"3":{},"4":{},"7":{},"9":{},"10":{},"12":{},"13":{},"15":{},"17":{},"21":{},"34":{},"36":{},"37":{},"41":{},"43":{},"50":{},"55":{},"56":{},"62":{},"64":{},"66":{},"78":{},"82":{},"83":{},"91":{},"102":{},"106":{},"110":{},"112":{},"113":{},"123":{},"125":{},"128":{},"129":{},"141":{},"145":{},"153":{},"158":{},"159":{},"173":{},"174":{},"177":{},"179":{},"180":{},"182":{},"195":{},"197":{},"198":{},"203":{}},"component":{}}],["source.properti",{"_index":2805,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["sourceaddress",{"_index":4232,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["sourcecod",{"_index":781,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["sourcenam",{"_index":3394,"title":{},"name":{},"text":{"78":{},"91":{},"153":{}},"component":{}}],["sourcenod",{"_index":3393,"title":{},"name":{},"text":{"78":{}},"component":{}}],["sources/plc4x",{"_index":1737,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["sp",{"_index":1047,"title":{},"name":{},"text":{"10":{},"12":{},"14":{},"15":{},"106":{},"110":{},"111":{},"180":{}},"component":{}}],["space",{"_index":2917,"title":{},"name":{},"text":{"59":{},"83":{},"145":{},"162":{}},"component":{}}],["space_par",{"_index":3156,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["spanish",{"_index":3838,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["spark",{"_index":1069,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["spawn",{"_index":548,"title":{},"name":{},"text":{"5":{},"21":{},"175":{},"182":{}},"component":{}}],["speak",{"_index":1613,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["spec",{"_index":1682,"title":{},"name":{},"text":{"21":{},"77":{},"101":{},"103":{},"140":{},"182":{},"202":{},"204":{}},"component":{}}],["special",{"_index":81,"title":{"3-6":{},"173-6":{}},"name":{},"text":{"3":{},"4":{},"10":{},"41":{},"65":{},"71":{},"83":{},"93":{},"103":{},"115":{},"127":{},"134":{},"145":{},"165":{},"173":{},"174":{},"180":{},"193":{},"204":{}},"component":{}}],["specif",{"_index":1722,"title":{"62":{},"125":{}},"name":{},"text":{"21":{},"39":{},"41":{},"43":{},"48":{},"62":{},"66":{},"72":{},"77":{},"78":{},"82":{},"83":{},"84":{},"85":{},"93":{},"98":{},"101":{},"102":{},"103":{},"125":{},"129":{},"135":{},"140":{},"141":{},"145":{},"147":{},"165":{},"169":{},"200":{},"202":{},"203":{},"204":{}},"component":{}}],["specifi",{"_index":1390,"title":{},"name":{},"text":{"15":{},"21":{},"37":{},"39":{},"41":{},"43":{},"46":{},"50":{},"55":{},"62":{},"66":{},"70":{},"77":{},"78":{},"80":{},"82":{},"83":{},"86":{},"101":{},"102":{},"103":{},"106":{},"119":{},"123":{},"125":{},"129":{},"133":{},"140":{},"141":{},"143":{},"145":{},"146":{},"158":{},"182":{},"198":{},"200":{},"202":{},"203":{},"204":{}},"component":{}}],["speed",{"_index":2991,"title":{},"name":{},"text":{"63":{},"75":{},"86":{},"95":{},"126":{},"138":{},"146":{},"166":{}},"component":{}}],["spi",{"_index":3447,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["split",{"_index":1456,"title":{},"name":{},"text":{"15":{},"77":{},"82":{},"83":{},"106":{},"140":{},"145":{}},"component":{}}],["spot",{"_index":2186,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["sql",{"_index":2732,"title":{},"name":{},"text":{"51":{},"54":{},"154":{},"157":{}},"component":{}}],["squar",{"_index":2281,"title":{},"name":{},"text":{"37":{},"56":{},"103":{},"159":{},"198":{},"204":{}},"component":{}}],["src",{"_index":4209,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["src/jjqassist",{"_index":686,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["src/main/java",{"_index":2319,"title":{},"name":{},"text":{"40":{}},"component":{}}],["src/main/releas",{"_index":2317,"title":{},"name":{},"text":{"40":{}},"component":{}}],["src/main/resources/meta",{"_index":2320,"title":{},"name":{},"text":{"40":{}},"component":{}}],["src/site",{"_index":1863,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["src/site/asciidoc",{"_index":538,"title":{},"name":{},"text":{"5":{},"175":{}},"component":{}}],["src/site/asciidoc/protocols/wombat",{"_index":1886,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["src/site/resourc",{"_index":2226,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["src/site/us",{"_index":2231,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["src/test/java",{"_index":2331,"title":{},"name":{},"text":{"40":{}},"component":{}}],["src/test/resourc",{"_index":2327,"title":{},"name":{},"text":{"40":{}},"component":{}}],["src/test/resources/testsuit",{"_index":2315,"title":{},"name":{},"text":{"39":{},"200":{}},"component":{}}],["srchk",{"_index":3003,"title":{},"name":{},"text":{"64":{},"128":{}},"component":{}}],["ssh",{"_index":1815,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["ssh/id_rsa.pub",{"_index":1822,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["ssl",{"_index":706,"title":{},"name":{},"text":{"8":{},"83":{},"145":{},"178":{}},"component":{}}],["st",{"_index":4211,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["stabil",{"_index":1508,"title":{"17-3":{},"34-3":{},"36-6":{},"113-3":{},"195-3":{},"197-6":{}},"name":{},"text":{"15":{},"17":{},"106":{},"113":{}},"component":{}}],["stabl",{"_index":3653,"title":{},"name":{},"text":{"83":{},"145":{},"173":{}},"component":{}}],["stack",{"_index":1576,"title":{},"name":{},"text":{"16":{},"17":{},"41":{},"46":{},"103":{},"107":{},"113":{},"115":{},"119":{}},"component":{}}],["stackoverflow",{"_index":1977,"title":{},"name":{},"text":{"30":{}},"component":{}}],["stage",{"_index":2052,"title":{"37":{},"198":{},"34-7":{},"36-10":{},"195-7":{},"197-10":{}},"name":{},"text":{"34":{},"36":{},"37":{},"195":{},"197":{},"198":{}},"component":{}}],["stamp",{"_index":3632,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["stanbol",{"_index":1068,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["stand",{"_index":1586,"title":{},"name":{},"text":{"16":{},"17":{},"78":{},"107":{},"113":{}},"component":{}}],["standalon",{"_index":2771,"title":{"55-6":{},"55-9":{},"158-6":{},"158-9":{}},"name":{},"text":{"55":{},"158":{}},"component":{}}],["standalone.properti",{"_index":2815,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["standalone.sh",{"_index":2814,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["standard",{"_index":785,"title":{},"name":{},"text":{"9":{},"15":{},"21":{},"27":{},"43":{},"51":{},"55":{},"78":{},"82":{},"83":{},"84":{},"98":{},"101":{},"103":{},"106":{},"145":{},"147":{},"154":{},"158":{},"169":{},"179":{},"188":{},"202":{}},"component":{}}],["standardcharsets.utf_8",{"_index":4183,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["standardfirmata",{"_index":3132,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["standbi",{"_index":1615,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["stare",{"_index":4419,"title":{},"name":{},"text":{"115":{}},"component":{}}],["start",{"_index":174,"title":{"42":{},"44":{},"45":{},"46":{},"47":{},"48":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"7-1":{},"34-8":{},"36-11":{},"40-3":{},"40-4":{},"55-4":{},"55-6":{},"55-7":{},"55-9":{},"55-10":{},"91-1":{},"153-1":{},"158-4":{},"158-6":{},"158-7":{},"158-9":{},"158-10":{},"177-1":{},"195-8":{},"197-11":{}},"name":{},"text":{"3":{},"7":{},"8":{},"10":{},"12":{},"21":{},"22":{},"29":{},"32":{},"34":{},"36":{},"39":{},"40":{},"41":{},"42":{},"46":{},"50":{},"55":{},"56":{},"59":{},"63":{},"70":{},"71":{},"75":{},"77":{},"82":{},"83":{},"86":{},"88":{},"90":{},"91":{},"95":{},"102":{},"103":{},"110":{},"115":{},"116":{},"119":{},"123":{},"126":{},"133":{},"134":{},"138":{},"140":{},"145":{},"146":{},"149":{},"153":{},"158":{},"159":{},"162":{},"166":{},"173":{},"177":{},"178":{},"180":{},"182":{},"183":{},"190":{},"195":{},"197":{},"200":{},"203":{},"204":{}},"component":{}}],["start.sh",{"_index":2795,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["startup",{"_index":2818,"title":{},"name":{},"text":{"55":{},"59":{},"83":{},"145":{},"158":{},"162":{}},"component":{}}],["state",{"_index":34,"title":{},"name":{},"text":{"2":{},"5":{},"13":{},"22":{},"34":{},"36":{},"46":{},"47":{},"50":{},"55":{},"56":{},"66":{},"78":{},"83":{},"84":{},"88":{},"91":{},"103":{},"119":{},"121":{},"123":{},"129":{},"145":{},"147":{},"149":{},"153":{},"158":{},"159":{},"172":{},"175":{},"193":{},"195":{},"197":{}},"component":{}}],["state/device1.machinea.sensor1:int",{"_index":3944,"title":{},"name":{},"text":{"84":{},"147":{}},"component":{}}],["statement",{"_index":2869,"title":{},"name":{},"text":{"56":{},"82":{},"83":{},"87":{},"145":{},"148":{},"159":{}},"component":{}}],["static",{"_index":717,"title":{},"name":{},"text":{"8":{},"25":{},"83":{},"87":{},"90":{},"92":{},"101":{},"103":{},"145":{},"148":{},"151":{},"152":{},"178":{},"186":{},"202":{}},"component":{}}],["static_call(\"org.apache.plc4x.java.df1.readwrite.utils.statichelper.crccheck",{"_index":4236,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["static_call(\"org.apache.plc4x.java.df1.readwrite.utils.statichelper.datalength",{"_index":4248,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["static_call(\"org.apache.plc4x.java.df1.readwrite.utils.statichelper.datatermin",{"_index":4245,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["static_call(\"org.apache.plc4x.java.df1.readwrite.utils.statichelper.readdata",{"_index":4246,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["static_call(\"org.apache.plc4x.java.df1.readwrite.utils.statichelper.writedata",{"_index":4247,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["station",{"_index":2959,"title":{},"name":{},"text":{"61":{},"83":{},"124":{},"145":{}},"component":{}}],["statist",{"_index":1436,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["statu",{"_index":771,"title":{"83-22":{},"145-22":{}},"name":{},"text":{"9":{},"15":{},"50":{},"55":{},"78":{},"82":{},"83":{},"102":{},"106":{},"123":{},"145":{},"158":{},"179":{},"203":{}},"component":{}}],["stay",{"_index":831,"title":{},"name":{},"text":{"9":{},"90":{},"103":{},"179":{},"204":{}},"component":{}}],["stdout",{"_index":3938,"title":{},"name":{},"text":{"84":{},"147":{}},"component":{}}],["stdout/device1.machinea.sensor1:int",{"_index":3945,"title":{},"name":{},"text":{"84":{},"147":{}},"component":{}}],["step",{"_index":458,"title":{},"name":{},"text":{"5":{},"7":{},"12":{},"22":{},"30":{},"34":{},"36":{},"37":{},"39":{},"43":{},"50":{},"55":{},"78":{},"82":{},"83":{},"110":{},"123":{},"141":{},"145":{},"158":{},"173":{},"175":{},"177":{},"183":{},"195":{},"197":{},"198":{},"200":{}},"component":{}}],["step7",{"_index":3441,"title":{"82":{},"83":{},"145":{}},"name":{},"text":{"83":{},"145":{}},"component":{}}],["step7/tia/wincc",{"_index":3643,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["stick",{"_index":1606,"title":{},"name":{},"text":{"17":{},"41":{},"82":{},"83":{},"113":{},"115":{},"145":{}},"component":{}}],["still",{"_index":1435,"title":{},"name":{},"text":{"15":{},"37":{},"46":{},"56":{},"78":{},"82":{},"83":{},"87":{},"91":{},"92":{},"103":{},"106":{},"119":{},"145":{},"148":{},"152":{},"153":{},"159":{},"173":{},"198":{},"204":{}},"component":{}}],["stop",{"_index":1181,"title":{},"name":{},"text":{"13":{},"15":{},"56":{},"63":{},"71":{},"75":{},"77":{},"83":{},"84":{},"95":{},"106":{},"112":{},"126":{},"134":{},"138":{},"140":{},"145":{},"147":{},"159":{},"166":{}},"component":{}}],["storag",{"_index":1217,"title":{},"name":{},"text":{"14":{},"54":{},"87":{},"111":{},"148":{},"157":{}},"component":{}}],["store",{"_index":645,"title":{},"name":{},"text":{"8":{},"43":{},"54":{},"59":{},"63":{},"70":{},"78":{},"83":{},"103":{},"126":{},"133":{},"141":{},"145":{},"157":{},"162":{},"178":{},"204":{}},"component":{}}],["storm",{"_index":1070,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["str(i",{"_index":2653,"title":{},"name":{},"text":{"48":{}},"component":{}}],["straight",{"_index":542,"title":{},"name":{},"text":{"5":{},"21":{},"175":{},"182":{}},"component":{}}],["strang",{"_index":1674,"title":{"21-8":{},"182-8":{}},"name":{},"text":{"21":{},"182":{},"193":{}},"component":{}}],["strategi",{"_index":1916,"title":{"40":{}},"name":{},"text":{"29":{},"34":{},"36":{},"39":{},"190":{},"195":{},"197":{},"200":{}},"component":{}}],["stream",{"_index":2329,"title":{},"name":{},"text":{"40":{},"55":{},"56":{},"83":{},"145":{},"158":{},"159":{}},"component":{}}],["streamlin",{"_index":1246,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["streampip",{"_index":1179,"title":{"57":{},"160":{}},"name":{"57":{},"160":{}},"text":{"13":{},"112":{}},"component":{}}],["strength",{"_index":3345,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["stress",{"_index":4002,"title":{},"name":{},"text":{"88":{},"149":{}},"component":{}}],["stressful",{"_index":4076,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["strict",{"_index":4437,"title":{},"name":{},"text":{"173":{}},"component":{}}],["strictli",{"_index":3621,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["string",{"_index":1249,"title":{"41-2":{},"61-1":{},"62-2":{},"63-2":{},"64-1":{},"66-2":{},"67-1":{},"70-1":{},"71-1":{},"72-2":{},"73-1":{},"75-1":{},"76-1":{},"76-4":{},"77-1":{},"77-12":{},"78-1":{},"78-3":{},"79-1":{},"80-1":{},"80-3":{},"80-5":{},"81-1":{},"81-3":{},"82-3":{},"83-6":{},"84-1":{},"84-3":{},"85-1":{},"85-4":{},"115-2":{},"124-1":{},"125-2":{},"126-2":{},"128-1":{},"129-2":{},"130-1":{},"133-1":{},"134-1":{},"135-2":{},"136-1":{},"138-1":{},"139-1":{},"139-4":{},"140-1":{},"140-12":{},"141-1":{},"141-3":{},"142-1":{},"143-1":{},"143-3":{},"143-5":{},"144-1":{},"144-3":{},"145-6":{},"147-1":{},"147-3":{}},"name":{},"text":{"15":{},"21":{},"41":{},"47":{},"48":{},"50":{},"54":{},"56":{},"59":{},"62":{},"63":{},"66":{},"71":{},"72":{},"75":{},"76":{},"77":{},"78":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"87":{},"90":{},"91":{},"92":{},"101":{},"103":{},"106":{},"115":{},"121":{},"123":{},"125":{},"126":{},"129":{},"134":{},"135":{},"138":{},"139":{},"140":{},"141":{},"143":{},"144":{},"145":{},"147":{},"148":{},"152":{},"153":{},"157":{},"159":{},"162":{},"182":{},"202":{},"204":{}},"component":{}}],["string(",{"_index":3358,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["string=simulated%3a%2f%2flocalhost",{"_index":3423,"title":{},"name":{},"text":{"80":{},"143":{}},"component":{}}],["string={url",{"_index":3421,"title":{},"name":{},"text":{"80":{},"143":{}},"component":{}}],["stringbuild",{"_index":3877,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["strip",{"_index":1779,"title":{},"name":{},"text":{"21":{},"47":{},"50":{},"82":{},"121":{},"123":{},"182":{}},"component":{}}],["strive",{"_index":886,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["strljic",{"_index":1076,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["strong",{"_index":797,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["strongli",{"_index":4075,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["struct",{"_index":3238,"title":{},"name":{},"text":{"77":{}},"component":{}}],["structur",{"_index":1468,"title":{"22-1":{},"39-1":{},"39-2":{},"62-1":{},"125-1":{},"183-1":{},"200-1":{},"200-2":{}},"name":{},"text":{"15":{},"21":{},"34":{},"36":{},"41":{},"48":{},"50":{},"55":{},"62":{},"65":{},"66":{},"75":{},"82":{},"83":{},"88":{},"101":{},"103":{},"106":{},"115":{},"123":{},"125":{},"127":{},"129":{},"138":{},"145":{},"149":{},"158":{},"182":{},"183":{},"195":{},"197":{},"202":{},"204":{}},"component":{}}],["studi",{"_index":1033,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["studio",{"_index":4472,"title":{},"name":{},"text":{"193":{}},"component":{}}],["stuff",{"_index":1096,"title":{},"name":{},"text":{"10":{},"36":{},"101":{},"180":{},"197":{},"202":{}},"component":{}}],["stuttgart",{"_index":1035,"title":{},"name":{},"text":{"10":{},"12":{},"110":{},"180":{}},"component":{}}],["stx",{"_index":4207,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["style",{"_index":4134,"title":{},"name":{},"text":{"101":{},"193":{},"202":{}},"component":{}}],["sub",{"_index":689,"title":{},"name":{},"text":{"8":{},"15":{},"34":{},"66":{},"75":{},"77":{},"83":{},"90":{},"103":{},"106":{},"129":{},"138":{},"140":{},"145":{},"178":{},"182":{},"191":{},"195":{},"204":{}},"component":{}}],["sub.execute().get",{"_index":3720,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sub.tostr",{"_index":3718,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["subchapt",{"_index":1782,"title":{},"name":{},"text":{"21":{}},"component":{}}],["subindex",{"_index":3058,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["subject",{"_index":2410,"title":{},"name":{},"text":{"43":{}},"component":{}}],["sublist",{"_index":3852,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["submit",{"_index":447,"title":{},"name":{},"text":{"5":{},"6":{},"9":{},"72":{},"135":{},"175":{},"176":{},"179":{}},"component":{}}],["suboptim",{"_index":1955,"title":{},"name":{},"text":{"30":{}},"component":{}}],["subrespons",{"_index":3719,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["subresponse.getresponsecode(\"mymod",{"_index":3721,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["subscibe'subscrib",{"_index":4372,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["subscrib",{"_index":627,"title":{"46-6":{},"47-4":{},"48-4":{},"119-6":{},"121-4":{}},"name":{},"text":{"7":{},"46":{},"47":{},"48":{},"50":{},"66":{},"71":{},"72":{},"74":{},"75":{},"78":{},"80":{},"81":{},"83":{},"119":{},"121":{},"123":{},"129":{},"134":{},"135":{},"137":{},"138":{},"141":{},"143":{},"144":{},"145":{},"177":{}},"component":{}}],["subscribe(str",{"_index":4094,"title":{},"name":{},"text":{"92":{},"152":{}},"component":{}}],["subscribe({subscrib",{"_index":1572,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["subscribe@plc4x.apache.org",{"_index":630,"title":{},"name":{},"text":{"7":{},"177":{}},"component":{}}],["subscript",{"_index":1416,"title":{"83-16":{},"83-18":{},"83-19":{},"83-20":{},"83-21":{},"145-16":{},"145-18":{},"145-19":{},"145-20":{},"145-21":{}},"name":{},"text":{"15":{},"46":{},"47":{},"48":{},"50":{},"66":{},"71":{},"78":{},"81":{},"82":{},"83":{},"104":{},"105":{},"106":{},"119":{},"121":{},"123":{},"129":{},"134":{},"141":{},"144":{},"145":{},"205":{},"206":{}},"component":{}}],["subscription.addeventfield(\"mymod",{"_index":3715,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["subscription.addeventfield(\"mysi",{"_index":3776,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["subscription.addeventfield(\"myusr",{"_index":3783,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["subscription.build",{"_index":3716,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["subscriptionhandl",{"_index":2607,"title":{},"name":{},"text":{"47":{},"121":{}},"component":{}}],["subscriptionhandle.register(plcsubscriptionev",{"_index":2609,"title":{},"name":{},"text":{"47":{},"121":{}},"component":{}}],["subscriptionnam",{"_index":2604,"title":{},"name":{},"text":{"47":{},"121":{}},"component":{}}],["subscriptionrequest",{"_index":2505,"title":{},"name":{},"text":{"46":{},"47":{},"119":{},"121":{}},"component":{}}],["subscriptionrequest.execut",{"_index":2543,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["subscriptionrequest.execute().get",{"_index":2602,"title":{},"name":{},"text":{"47":{},"121":{}},"component":{}}],["subscriptionrequestresult",{"_index":2544,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["subscriptionrequestresult.err",{"_index":2545,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["subscriptionrequestresult.err.error",{"_index":2546,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["subscriptionrequestresultchanel",{"_index":2542,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["subsequ",{"_index":3697,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["subset",{"_index":4310,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["substitut",{"_index":1562,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["subtyp",{"_index":4281,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["success",{"_index":1938,"title":{"34-9":{},"36-12":{},"195-9":{},"197-12":{}},"name":{},"text":{"30":{},"31":{},"32":{},"37":{},"39":{},"43":{},"56":{},"83":{},"145":{},"159":{},"191":{},"192":{},"193":{},"198":{},"200":{}},"component":{}}],["successful",{"_index":4408,"title":{},"name":{},"text":{"105":{},"206":{}},"component":{}}],["successfulli",{"_index":2730,"title":{},"name":{},"text":{"50":{},"98":{},"123":{},"169":{}},"component":{}}],["such",{"_index":71,"title":{},"name":{},"text":{"2":{},"9":{},"10":{},"15":{},"16":{},"17":{},"21":{},"30":{},"31":{},"32":{},"39":{},"41":{},"46":{},"50":{},"65":{},"78":{},"82":{},"83":{},"85":{},"101":{},"103":{},"106":{},"107":{},"113":{},"115":{},"119":{},"123":{},"127":{},"141":{},"145":{},"172":{},"179":{},"180":{},"182":{},"200":{},"202":{}},"component":{}}],["sudo",{"_index":1814,"title":{},"name":{},"text":{"26":{},"30":{},"81":{},"144":{},"187":{},"191":{}},"component":{}}],["suffici",{"_index":251,"title":{},"name":{},"text":{"3":{},"9":{},"173":{},"179":{}},"component":{}}],["suffix",{"_index":2082,"title":{},"name":{},"text":{"34":{},"36":{},"50":{},"123":{},"195":{},"197":{}},"component":{}}],["suggest",{"_index":2064,"title":{},"name":{},"text":{"34":{},"36":{},"50":{},"91":{},"123":{},"153":{},"195":{},"197":{}},"component":{}}],["suit",{"_index":1669,"title":{},"name":{},"text":{"17":{},"21":{},"113":{},"182":{}},"component":{}}],["suitabl",{"_index":152,"title":{},"name":{},"text":{"3":{},"17":{},"92":{},"113":{},"152":{},"173":{}},"component":{}}],["sum",{"_index":3185,"title":{},"name":{},"text":{"72":{},"135":{}},"component":{}}],["summar",{"_index":769,"title":{},"name":{},"text":{"9":{},"41":{},"179":{}},"component":{}}],["summari",{"_index":955,"title":{"83-1":{},"145-1":{}},"name":{},"text":{"9":{},"34":{},"36":{},"179":{},"195":{},"197":{}},"component":{}}],["summit",{"_index":396,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["super(\"/testsuite/modbustestsuite.xml",{"_index":2313,"title":{},"name":{},"text":{"39":{},"200":{}},"component":{}}],["supersed",{"_index":3670,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["supervis",{"_index":3658,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["suppli",{"_index":3352,"title":{},"name":{},"text":{"78":{},"83":{},"141":{},"145":{}},"component":{}}],["support",{"_index":67,"title":{"14":{},"74":{},"111":{},"30-3":{},"30-4":{},"31-3":{},"31-4":{},"32-3":{},"32-4":{},"77-10":{},"83-2":{},"85-2":{},"137-1":{},"140-10":{},"145-2":{}},"name":{"14":{},"111":{}},"text":{"2":{},"3":{},"8":{},"12":{},"14":{},"15":{},"17":{},"21":{},"41":{},"46":{},"47":{},"48":{},"50":{},"56":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"90":{},"91":{},"101":{},"103":{},"105":{},"106":{},"110":{},"111":{},"113":{},"119":{},"121":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"129":{},"133":{},"134":{},"135":{},"136":{},"137":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"147":{},"153":{},"159":{},"172":{},"173":{},"178":{},"182":{},"202":{},"206":{}},"component":{}}],["supportedopt",{"_index":1770,"title":{},"name":{},"text":{"21":{},"101":{},"182":{},"202":{}},"component":{}}],["supportedoutputflavor",{"_index":1768,"title":{},"name":{},"text":{"21":{},"101":{},"182":{},"202":{}},"component":{}}],["suppos",{"_index":3693,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["sure",{"_index":1241,"title":{},"name":{},"text":{"15":{},"26":{},"31":{},"32":{},"34":{},"36":{},"37":{},"39":{},"40":{},"46":{},"48":{},"50":{},"55":{},"56":{},"59":{},"82":{},"83":{},"88":{},"106":{},"119":{},"123":{},"149":{},"158":{},"159":{},"162":{},"187":{},"192":{},"193":{},"195":{},"197":{},"198":{},"200":{}},"component":{}}],["surpris",{"_index":2261,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["suspend",{"_index":2819,"title":{},"name":{},"text":{"55":{},"56":{},"158":{},"159":{}},"component":{}}],["suspend=i",{"_index":2908,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["suspend=n",{"_index":2907,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["svn",{"_index":2103,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["sw",{"_index":1095,"title":{},"name":{},"text":{"10":{},"85":{},"180":{}},"component":{}}],["sw1",{"_index":3963,"title":{},"name":{},"text":{"85":{}},"component":{}}],["swap",{"_index":1362,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["sweet",{"_index":2185,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["swim",{"_index":1010,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["switch",{"_index":1499,"title":{},"name":{},"text":{"15":{},"17":{},"34":{},"36":{},"59":{},"78":{},"83":{},"86":{},"103":{},"106":{},"113":{},"141":{},"145":{},"146":{},"162":{},"195":{},"197":{},"204":{}},"component":{}}],["switchtyp",{"_index":4311,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["sy",{"_index":3610,"title":{"83-19":{},"145-19":{}},"name":{},"text":{"83":{},"145":{}},"component":{}}],["symbol",{"_index":1873,"title":{},"name":{},"text":{"27":{},"62":{},"70":{},"87":{},"104":{},"125":{},"133":{},"148":{},"188":{},"205":{}},"component":{}}],["symbolic)'rec",{"_index":4349,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["symbolic)'send",{"_index":4347,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["symboltyp",{"_index":4228,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["symlink",{"_index":1947,"title":{},"name":{},"text":{"30":{}},"component":{}}],["sync",{"_index":2152,"title":{},"name":{},"text":{"34":{},"36":{},"49":{},"122":{},"195":{},"197":{}},"component":{}}],["synchron",{"_index":1134,"title":{},"name":{},"text":{"12":{},"47":{},"50":{},"83":{},"86":{},"110":{},"121":{},"123":{},"145":{},"146":{}},"component":{}}],["syntax",{"_index":540,"title":{"103-3":{},"204-3":{}},"name":{},"text":{"5":{},"15":{},"27":{},"41":{},"50":{},"66":{},"72":{},"78":{},"82":{},"83":{},"92":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"103":{},"106":{},"123":{},"129":{},"135":{},"145":{},"152":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"175":{},"188":{},"204":{}},"component":{}}],["system",{"_index":127,"title":{"36-2":{},"83-22":{},"145-22":{},"197-2":{}},"name":{},"text":{"3":{},"9":{},"10":{},"12":{},"13":{},"17":{},"21":{},"22":{},"27":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"41":{},"43":{},"46":{},"55":{},"56":{},"82":{},"83":{},"85":{},"86":{},"90":{},"110":{},"112":{},"113":{},"115":{},"119":{},"145":{},"146":{},"158":{},"159":{},"173":{},"175":{},"179":{},"180":{},"182":{},"183":{},"188":{},"190":{},"191":{},"193":{},"195":{},"197":{}},"component":{}}],["system.out.println",{"_index":3726,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(\"befor",{"_index":3855,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(\"by",{"_index":3885,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(\"chapt",{"_index":3862,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(\"current_mod",{"_index":3732,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(\"diagnost",{"_index":3780,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(\"docu",{"_index":3860,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(\"end",{"_index":3737,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(\"i",{"_index":4101,"title":{},"name":{},"text":{"92":{},"152":{}},"component":{}}],["system.out.println(\"queri",{"_index":3717,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(\"system",{"_index":3856,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(\"szl",{"_index":3883,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(\"url",{"_index":3864,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(\"wait",{"_index":3735,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(entity.getpressur",{"_index":4033,"title":{},"name":{},"text":{"90":{},"151":{}},"component":{}}],["system.out.println(plcsubscriptionevent.getplcvalue(tagnam",{"_index":2611,"title":{},"name":{},"text":{"47":{},"121":{}},"component":{}}],["system.out.println(sb.tostr",{"_index":3880,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.out.println(x",{"_index":3729,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["system.setproperty(simplelogger.default_log_level_key",{"_index":3854,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["systemroot%\\system32",{"_index":4463,"title":{},"name":{},"text":{"193":{}},"component":{}}],["systemroot%\\system32\\npcap",{"_index":4456,"title":{},"name":{},"text":{"193":{}},"component":{}}],["system’",{"_index":4457,"title":{},"name":{},"text":{"193":{}},"component":{}}],["szl",{"_index":3444,"title":{"83-22":{},"83-23":{},"145-22":{},"145-23":{}},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["szl(ssl",{"_index":3642,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["szl.execute(wb",{"_index":3879,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["szl.valueof(0x0012",{"_index":3874,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["szl_id",{"_index":3843,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["szl_id/index",{"_index":3848,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["szl_id=0x0012",{"_index":3888,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["szl_id=16#0012;index=16#0000",{"_index":3868,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["szl_id=16#0091;index=16#0000",{"_index":3486,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["szlrespons",{"_index":3491,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["szlresponse.getallbytes(\"myszl",{"_index":3870,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["szlresponse.getresponsecode(\"myszl",{"_index":3494,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["t",{"_index":3515,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["t.errorf(\"error",{"_index":2472,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["t.fail",{"_index":2473,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["tab",{"_index":2684,"title":{},"name":{},"text":{"50":{},"56":{},"123":{},"159":{}},"component":{}}],["tabl",{"_index":656,"title":{},"name":{},"text":{"8":{},"9":{},"14":{},"50":{},"62":{},"66":{},"71":{},"72":{},"74":{},"78":{},"82":{},"83":{},"87":{},"104":{},"123":{},"125":{},"129":{},"134":{},"135":{},"137":{},"141":{},"145":{},"148":{},"178":{},"179":{},"205":{}},"component":{}}],["table'brows",{"_index":4358,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["table'rec",{"_index":4353,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["table'return",{"_index":4359,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["table'send",{"_index":4354,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["table'subscrib",{"_index":4355,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["tables?truefalseconfig",{"_index":4381,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["tag",{"_index":2083,"title":{"41-3":{},"41-4":{},"78-13":{},"115-3":{}},"name":{},"text":{"34":{},"36":{},"41":{},"46":{},"47":{},"48":{},"59":{},"77":{},"78":{},"81":{},"82":{},"85":{},"90":{},"101":{},"115":{},"119":{},"121":{},"144":{},"162":{},"195":{},"197":{},"202":{}},"component":{}}],["tag_nam",{"_index":2645,"title":{},"name":{},"text":{"48":{}},"component":{}}],["tagnam",{"_index":2534,"title":{},"name":{},"text":{"46":{},"47":{},"50":{},"70":{},"119":{},"121":{},"123":{},"133":{}},"component":{}}],["tagname}[{startindex}]:{numberofel",{"_index":3126,"title":{},"name":{},"text":{"70":{},"133":{}},"component":{}}],["tagname}[{startindex}]:{numberofelements}:{datatyp",{"_index":3127,"title":{},"name":{},"text":{"70":{},"133":{}},"component":{}}],["tagrec",{"_index":4402,"title":{},"name":{},"text":{"105":{},"206":{}},"component":{}}],["take",{"_index":2048,"title":{},"name":{},"text":{"32":{},"34":{},"36":{},"56":{},"78":{},"82":{},"83":{},"90":{},"91":{},"98":{},"103":{},"141":{},"145":{},"153":{},"159":{},"169":{},"193":{},"195":{},"197":{},"204":{}},"component":{}}],["taken",{"_index":937,"title":{},"name":{},"text":{"9":{},"10":{},"83":{},"145":{},"179":{},"180":{},"193":{}},"component":{}}],["takt",{"_index":1704,"title":{},"name":{},"text":{"21":{}},"component":{}}],["talk",{"_index":322,"title":{},"name":{},"text":{"4":{},"5":{},"17":{},"82":{},"83":{},"113":{},"145":{},"174":{},"175":{}},"component":{}}],["tap",{"_index":3180,"title":{},"name":{},"text":{"72":{},"86":{},"135":{},"146":{}},"component":{}}],["target",{"_index":37,"title":{},"name":{},"text":{"2":{},"3":{},"9":{},"29":{},"36":{},"46":{},"59":{},"62":{},"63":{},"72":{},"77":{},"85":{},"102":{},"119":{},"125":{},"126":{},"135":{},"140":{},"162":{},"172":{},"173":{},"179":{},"190":{},"197":{},"203":{}},"component":{}}],["target/checkout",{"_index":2097,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["target/checkout/target",{"_index":2204,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["target/plc4j",{"_index":2783,"title":{},"name":{},"text":{"55":{},"86":{},"146":{},"158":{}},"component":{}}],["target/site/protocols/wombat/index.html",{"_index":1893,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["task",{"_index":1448,"title":{},"name":{},"text":{"15":{},"83":{},"87":{},"91":{},"106":{},"145":{},"148":{},"153":{},"201":{}},"component":{}}],["tasks.max\":\"1",{"_index":2810,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["tcp",{"_index":1299,"title":{"80":{},"99":{},"143":{},"170":{},"61-2":{},"62-3":{},"63-4":{},"64-2":{},"70-2":{},"73-2":{},"76-2":{},"77-2":{},"77-3":{},"77-5":{},"77-8":{},"78-2":{},"79-2":{},"80-2":{},"82-4":{},"83-7":{},"124-2":{},"125-3":{},"126-4":{},"128-2":{},"133-2":{},"136-2":{},"139-2":{},"140-2":{},"140-3":{},"140-5":{},"140-8":{},"141-2":{},"142-2":{},"143-2":{},"145-7":{}},"name":{"99":{},"170":{}},"text":{"15":{},"41":{},"50":{},"61":{},"62":{},"63":{},"64":{},"65":{},"70":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"85":{},"94":{},"99":{},"106":{},"115":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"133":{},"136":{},"139":{},"140":{},"141":{},"142":{},"143":{},"145":{},"164":{},"170":{}},"component":{}}],["tcp.default",{"_index":2964,"title":{},"name":{},"text":{"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"124":{},"125":{},"126":{},"128":{},"133":{},"136":{},"139":{},"140":{},"141":{},"142":{},"143":{},"145":{}},"component":{}}],["tcp.keep",{"_index":2960,"title":{},"name":{},"text":{"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"124":{},"125":{},"126":{},"128":{},"133":{},"136":{},"139":{},"140":{},"141":{},"142":{},"143":{},"145":{}},"component":{}}],["tcp.no",{"_index":2961,"title":{},"name":{},"text":{"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"124":{},"125":{},"126":{},"128":{},"133":{},"136":{},"139":{},"140":{},"141":{},"142":{},"143":{},"145":{}},"component":{}}],["tcp/rtu/ascii",{"_index":3190,"title":{},"name":{},"text":{"74":{},"137":{}},"component":{}}],["tcp/udp/seri",{"_index":3230,"title":{"77":{},"140":{}},"name":{},"text":{},"component":{}}],["tcp/udp/whatev",{"_index":2328,"title":{},"name":{},"text":{"40":{}},"component":{}}],["tcp://127.0.0.1:502",{"_index":2929,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["tcp://192.168.23.30?unit",{"_index":2436,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["tcp://localhost",{"_index":2698,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["tcp://localhost:1502",{"_index":2700,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["tcp:tcp://127.0.0.1:502",{"_index":3240,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["tcp:{transport}://{ip",{"_index":3239,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["tcpport",{"_index":2920,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["teach",{"_index":2383,"title":{},"name":{},"text":{"43":{}},"component":{}}],["team",{"_index":895,"title":{"10":{},"180":{}},"name":{"10":{},"180":{}},"text":{"9":{},"20":{},"26":{},"36":{},"83":{},"91":{},"114":{},"145":{},"153":{},"175":{},"179":{},"187":{},"197":{}},"component":{}}],["techcamp",{"_index":417,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["technic",{"_index":534,"title":{},"name":{},"text":{"5":{},"9":{},"41":{},"83":{},"84":{},"90":{},"115":{},"145":{},"147":{},"175":{},"179":{}},"component":{}}],["technolog",{"_index":1000,"title":{},"name":{},"text":{"10":{},"11":{},"17":{},"82":{},"83":{},"113":{},"145":{},"180":{},"181":{}},"component":{}}],["teck",{"_index":1032,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["tecnol%c3%b3gica",{"_index":3604,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["tell",{"_index":509,"title":{},"name":{},"text":{"5":{},"7":{},"17":{},"21":{},"36":{},"39":{},"41":{},"91":{},"101":{},"113":{},"115":{},"153":{},"175":{},"177":{},"182":{},"197":{},"200":{},"202":{}},"component":{}}],["temperatur",{"_index":2508,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["templat",{"_index":1677,"title":{"37-3":{},"198-3":{}},"name":{},"text":{"21":{},"34":{},"36":{},"43":{},"82":{},"83":{},"84":{},"101":{},"103":{},"145":{},"147":{},"182":{},"195":{},"197":{},"202":{},"204":{}},"component":{}}],["template.java.ftlh",{"_index":4167,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["templates/java/io",{"_index":4186,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["templates/java/pojo",{"_index":4185,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["tempor",{"_index":3531,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["temporari",{"_index":2947,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["temporaryboolarray",{"_index":2930,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["temporarydint5",{"_index":2938,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["temporaryint4",{"_index":2936,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["temporaryreal6",{"_index":2940,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["temporaryreal7",{"_index":2942,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["temporaryreal8",{"_index":2944,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["temporaryuint3",{"_index":2934,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["temporaryword2",{"_index":2932,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["term",{"_index":567,"title":{},"name":{},"text":{"6":{},"9":{},"12":{},"110":{},"176":{},"179":{}},"component":{}}],["termin",{"_index":1438,"title":{},"name":{},"text":{"15":{},"31":{},"46":{},"56":{},"71":{},"77":{},"82":{},"83":{},"87":{},"88":{},"102":{},"103":{},"106":{},"119":{},"134":{},"140":{},"145":{},"148":{},"149":{},"159":{},"192":{},"203":{},"204":{}},"component":{}}],["test",{"_index":235,"title":{"39":{},"92":{},"152":{},"200":{},"39-1":{},"92-3":{},"152-3":{},"200-1":{}},"name":{"39":{},"92":{},"152":{},"200":{}},"text":{"3":{},"8":{},"9":{},"10":{},"15":{},"16":{},"21":{},"22":{},"29":{},"34":{},"36":{},"37":{},"39":{},"40":{},"41":{},"55":{},"78":{},"81":{},"83":{},"84":{},"92":{},"98":{},"106":{},"107":{},"115":{},"141":{},"144":{},"145":{},"147":{},"152":{},"158":{},"169":{},"173":{},"178":{},"179":{},"180":{},"182":{},"183":{},"190":{},"193":{},"195":{},"197":{},"198":{},"200":{}},"component":{}}],["testcas",{"_index":2301,"title":{},"name":{},"text":{"39":{},"200":{}},"component":{}}],["testing_bool_1",{"_index":3958,"title":{},"name":{},"text":{"85":{}},"component":{}}],["testing_udt_1.start",{"_index":3961,"title":{},"name":{},"text":{"85":{}},"component":{}}],["testng",{"_index":682,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["tests/confirm",{"_index":3403,"title":{},"name":{},"text":{"78":{}},"component":{}}],["testsuit",{"_index":2283,"title":{"39-2":{},"200-2":{}},"name":{},"text":{"39":{},"183":{},"200":{}},"component":{}}],["text",{"_index":1707,"title":{},"name":{},"text":{"21":{},"34":{},"36":{},"37":{},"66":{},"83":{},"103":{},"129":{},"145":{},"195":{},"197":{},"198":{},"204":{}},"component":{}}],["th",{"_index":267,"title":{},"name":{},"text":{"3":{},"50":{},"86":{},"123":{},"146":{},"173":{}},"component":{}}],["thank",{"_index":1105,"title":{},"name":{},"text":{"11":{},"181":{}},"component":{}}],["that’",{"_index":478,"title":{},"name":{},"text":{"5":{},"26":{},"27":{},"46":{},"56":{},"119":{},"159":{},"175":{},"187":{},"188":{}},"component":{}}],["their",{"_index":2153,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["themselv",{"_index":961,"title":{},"name":{},"text":{"9":{},"36":{},"78":{},"141":{},"179":{},"197":{}},"component":{}}],["then\\n",{"_index":2007,"title":{},"name":{},"text":{"31":{},"192":{}},"component":{}}],["theoret",{"_index":3146,"title":{},"name":{},"text":{"71":{},"77":{},"91":{},"134":{},"140":{},"153":{}},"component":{}}],["therefor",{"_index":289,"title":{},"name":{},"text":{"3":{},"17":{},"26":{},"41":{},"42":{},"46":{},"47":{},"48":{},"50":{},"54":{},"82":{},"83":{},"87":{},"101":{},"103":{},"113":{},"115":{},"116":{},"119":{},"121":{},"123":{},"145":{},"148":{},"157":{},"187":{},"198":{},"202":{},"204":{}},"component":{}}],["there’",{"_index":305,"title":{},"name":{},"text":{"3":{},"36":{},"173":{},"197":{}},"component":{}}],["thing",{"_index":492,"title":{"26-3":{},"187-3":{}},"name":{},"text":{"5":{},"7":{},"9":{},"10":{},"16":{},"17":{},"21":{},"26":{},"34":{},"36":{},"37":{},"43":{},"46":{},"47":{},"48":{},"50":{},"56":{},"66":{},"83":{},"91":{},"103":{},"107":{},"113":{},"119":{},"121":{},"123":{},"129":{},"145":{},"153":{},"159":{},"175":{},"177":{},"179":{},"180":{},"182":{},"187":{},"193":{},"195":{},"197":{},"198":{},"204":{}},"component":{}}],["think",{"_index":1909,"title":{},"name":{},"text":{"29":{},"34":{},"36":{},"39":{},"56":{},"83":{},"88":{},"91":{},"145":{},"149":{},"153":{},"159":{},"190":{},"195":{},"197":{},"200":{}},"component":{}}],["thinkabl",{"_index":1687,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["third",{"_index":200,"title":{},"name":{},"text":{"3":{},"7":{},"9":{},"30":{},"31":{},"32":{},"46":{},"47":{},"65":{},"78":{},"86":{},"103":{},"119":{},"121":{},"127":{},"146":{},"173":{},"177":{},"179":{},"204":{}},"component":{}}],["thistyp",{"_index":4175,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["those",{"_index":932,"title":{},"name":{},"text":{"9":{},"27":{},"34":{},"37":{},"41":{},"83":{},"115":{},"145":{},"179":{},"188":{},"195":{},"198":{}},"component":{}}],["though",{"_index":2552,"title":{},"name":{},"text":{"47":{},"48":{},"78":{},"103":{},"121":{},"204":{}},"component":{}}],["thought",{"_index":640,"title":{},"name":{},"text":{"8":{},"36":{},"178":{},"197":{}},"component":{}}],["thousand",{"_index":2774,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["thread",{"_index":713,"title":{},"name":{},"text":{"8":{},"15":{},"34":{},"36":{},"87":{},"106":{},"148":{},"178":{},"195":{},"197":{}},"component":{}}],["thread.sleep(120000",{"_index":3736,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["thread.sleep(2000",{"_index":3884,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["three",{"_index":980,"title":{"82-6":{},"83-9":{},"145-9":{}},"name":{},"text":{"10":{},"21":{},"34":{},"36":{},"78":{},"82":{},"83":{},"101":{},"102":{},"145":{},"180":{},"195":{},"197":{},"202":{},"203":{}},"component":{}}],["thrift",{"_index":1698,"title":{},"name":{},"text":{"21":{},"173":{}},"component":{}}],["through",{"_index":1298,"title":{},"name":{},"text":{"15":{},"21":{},"66":{},"70":{},"78":{},"83":{},"106":{},"129":{},"133":{},"141":{},"145":{},"182":{}},"component":{}}],["throw",{"_index":1445,"title":{},"name":{},"text":{"15":{},"21":{},"83":{},"87":{},"101":{},"103":{},"106":{},"145":{},"148":{},"182":{},"202":{},"204":{}},"component":{}}],["throwabl",{"_index":2570,"title":{},"name":{},"text":{"47":{},"50":{},"121":{},"123":{}},"component":{}}],["thrown",{"_index":1406,"title":{},"name":{},"text":{"15":{},"50":{},"71":{},"103":{},"106":{},"123":{},"134":{},"204":{}},"component":{}}],["thru",{"_index":3262,"title":{},"name":{},"text":{"77":{},"140":{}},"component":{}}],["thu",{"_index":1497,"title":{},"name":{},"text":{"15":{},"78":{},"83":{},"106":{},"145":{}},"component":{}}],["thüringen",{"_index":335,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["ti",{"_index":1605,"title":{},"name":{},"text":{"17":{},"83":{},"113":{},"145":{}},"component":{}}],["tia",{"_index":3499,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["ticket",{"_index":2236,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["tie",{"_index":1685,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["till",{"_index":2133,"title":{},"name":{},"text":{"34":{},"36":{},"46":{},"55":{},"56":{},"87":{},"103":{},"119":{},"148":{},"158":{},"159":{},"195":{},"197":{}},"component":{}}],["tim",{"_index":1092,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["time",{"_index":17,"title":{"2-4":{},"172-4":{}},"name":{},"text":{"3":{},"5":{},"9":{},"10":{},"12":{},"14":{},"15":{},"21":{},"27":{},"29":{},"34":{},"36":{},"41":{},"50":{},"54":{},"55":{},"56":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"85":{},"86":{},"87":{},"88":{},"90":{},"91":{},"92":{},"101":{},"103":{},"106":{},"110":{},"111":{},"123":{},"124":{},"125":{},"126":{},"128":{},"129":{},"133":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"148":{},"149":{},"152":{},"153":{},"157":{},"158":{},"159":{},"173":{},"175":{},"179":{},"180":{},"182":{},"188":{},"190":{},"195":{},"197":{},"202":{},"204":{}},"component":{}}],["time.millisecond",{"_index":2515,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["time_differ",{"_index":3107,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["time_of_day",{"_index":1531,"title":{},"name":{},"text":{"15":{},"66":{},"82":{},"83":{},"106":{},"129":{},"145":{}},"component":{}}],["timecho",{"_index":1007,"title":{},"name":{},"text":{"10":{},"14":{},"111":{}},"component":{}}],["timeout",{"_index":2643,"title":{},"name":{},"text":{"48":{},"55":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"72":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"85":{},"87":{},"124":{},"125":{},"126":{},"128":{},"129":{},"133":{},"135":{},"136":{},"139":{},"140":{},"141":{},"142":{},"143":{},"145":{},"148":{},"158":{}},"component":{}}],["timeoutexcept",{"_index":2642,"title":{},"name":{},"text":{"48":{}},"component":{}}],["timer",{"_index":3516,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["timestamp",{"_index":2375,"title":{},"name":{},"text":{"41":{},"55":{},"78":{},"83":{},"145":{},"158":{}},"component":{}}],["timestamp\":1606047842350",{"_index":2853,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["timestamp_com",{"_index":3807,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["timestamp_go",{"_index":3806,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["timestamp_sourc",{"_index":2376,"title":{},"name":{},"text":{"41":{},"78":{}},"component":{}}],["timeunit.millisecond",{"_index":2575,"title":{},"name":{},"text":{"47":{},"121":{}},"component":{}}],["time|root.mi.d1.random_foo_integ",{"_index":2755,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["tip",{"_index":3229,"title":{"77-16":{},"78-10":{},"81-6":{},"82-11":{},"83-24":{},"84-8":{},"140-16":{},"141-10":{},"144-6":{},"145-24":{},"147-8":{}},"name":{},"text":{},"component":{}}],["titl",{"_index":327,"title":{},"name":{},"text":{"4":{},"27":{},"34":{},"36":{},"50":{},"123":{},"174":{},"188":{},"195":{},"197":{}},"component":{}}],["tl",{"_index":3350,"title":{},"name":{},"text":{"78":{},"141":{}},"component":{}}],["tl/dr",{"_index":2161,"title":{"36-1":{},"197-1":{}},"name":{},"text":{},"component":{}}],["tlp",{"_index":1190,"title":{},"name":{},"text":{"13":{},"34":{},"36":{},"112":{},"195":{},"197":{}},"component":{}}],["tn",{"_index":4212,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["toc",{"_index":2234,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["tod",{"_index":3965,"title":{},"name":{},"text":{"85":{}},"component":{}}],["today",{"_index":1611,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["todo",{"_index":691,"title":{"83-21":{},"145-21":{}},"name":{},"text":{"8":{},"40":{},"55":{},"82":{},"83":{},"145":{},"158":{},"178":{}},"component":{}}],["togeth",{"_index":237,"title":{},"name":{},"text":{"3":{},"10":{},"15":{},"58":{},"82":{},"91":{},"106":{},"153":{},"173":{},"180":{}},"component":{}}],["toler",{"_index":3764,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["took",{"_index":1055,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["tool",{"_index":207,"title":{"11":{},"34":{},"79":{},"89":{},"142":{},"150":{},"181":{},"195":{},"37-2":{},"198-2":{}},"name":{"11":{},"34":{},"181":{},"195":{}},"text":{"3":{},"7":{},"8":{},"9":{},"10":{},"11":{},"12":{},"15":{},"16":{},"21":{},"26":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"41":{},"43":{},"50":{},"74":{},"78":{},"82":{},"83":{},"86":{},"91":{},"92":{},"106":{},"107":{},"110":{},"115":{},"123":{},"137":{},"141":{},"145":{},"146":{},"152":{},"153":{},"173":{},"177":{},"178":{},"179":{},"180":{},"181":{},"182":{},"187":{},"190":{},"193":{},"195":{},"197":{},"198":{}},"component":{}}],["tools.git",{"_index":2091,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["tools/cod",{"_index":2105,"title":{},"name":{},"text":{"34":{},"195":{}},"component":{}}],["tools/download_staged_release.sh",{"_index":2277,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["toolset",{"_index":743,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["top",{"_index":764,"title":{},"name":{},"text":{"9":{},"15":{},"27":{},"36":{},"56":{},"66":{},"72":{},"93":{},"106":{},"129":{},"135":{},"159":{},"165":{},"179":{},"188":{},"197":{}},"component":{}}],["topic",{"_index":1245,"title":{},"name":{},"text":{"15":{},"34":{},"36":{},"55":{},"106":{},"158":{},"195":{},"197":{}},"component":{}}],["topics\":\"connect",{"_index":2812,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["topics.sh",{"_index":2799,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["topsecret",{"_index":2184,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["torqu",{"_index":3191,"title":{"79":{},"142":{}},"name":{},"text":{"74":{},"137":{}},"component":{}}],["total",{"_index":3845,"title":{},"name":{},"text":{"83":{},"101":{},"103":{},"145":{},"202":{}},"component":{}}],["touch",{"_index":2177,"title":{},"name":{},"text":{"36":{},"83":{},"145":{},"197":{}},"component":{}}],["tp",{"_index":4292,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["tpdurefer",{"_index":4267,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["tpktpacket",{"_index":1410,"title":{},"name":{},"text":{"15":{},"103":{},"106":{},"204":{}},"component":{}}],["trace",{"_index":1039,"title":{},"name":{},"text":{"10":{},"78":{},"83":{},"141":{},"145":{},"180":{}},"component":{}}],["track",{"_index":1101,"title":{},"name":{},"text":{"11":{},"30":{},"31":{},"32":{},"36":{},"83":{},"87":{},"145":{},"148":{},"181":{},"197":{}},"component":{}}],["tracker",{"_index":528,"title":{"18":{},"24":{},"185":{}},"name":{},"text":{"5":{},"9":{},"18":{},"24":{},"175":{},"179":{},"185":{}},"component":{}}],["trade",{"_index":1655,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["traffic",{"_index":2348,"title":{},"name":{},"text":{"41":{},"82":{},"83":{},"86":{},"115":{},"145":{},"146":{}},"component":{}}],["train",{"_index":187,"title":{},"name":{},"text":{"3":{},"14":{},"111":{},"173":{}},"component":{}}],["transact",{"_index":4221,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["transactioncount",{"_index":4240,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["transfer",{"_index":1701,"title":{},"name":{},"text":{"21":{},"36":{},"66":{},"82":{},"83":{},"129":{},"145":{},"197":{}},"component":{}}],["transferleft\":tru",{"_index":2849,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["transferright\":fals",{"_index":2848,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["transform",{"_index":3011,"title":{},"name":{},"text":{"65":{},"72":{},"127":{},"135":{}},"component":{}}],["transit",{"_index":884,"title":{},"name":{},"text":{"9":{},"83":{},"145":{},"179":{}},"component":{}}],["translat",{"_index":3837,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["transmiss",{"_index":3152,"title":{},"name":{},"text":{"71":{},"77":{},"134":{},"140":{}},"component":{}}],["transmit_pdo_1:nodeid:type[arrays",{"_index":3061,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["transmit_pdo_2:nodeid:type[arrays",{"_index":3063,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["transmit_pdo_3:nodeid:type[arrays",{"_index":3065,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["transmit_pdo_4:nodeid:type[arrays",{"_index":3067,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["transmitt",{"_index":2979,"title":{},"name":{},"text":{"62":{},"125":{}},"component":{}}],["transpar",{"_index":163,"title":{},"name":{},"text":{"3":{},"47":{},"48":{},"50":{},"82":{},"83":{},"121":{},"123":{},"145":{},"173":{}},"component":{}}],["transport",{"_index":40,"title":{"94":{},"164":{},"93-2":{},"165-2":{}},"name":{},"text":{"2":{},"15":{},"30":{},"32":{},"41":{},"46":{},"50":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"93":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"106":{},"115":{},"119":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"147":{},"152":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"191":{}},"component":{}}],["transportinst",{"_index":35,"title":{},"name":{},"text":{"2":{},"172":{}},"component":{}}],["transports.registertcptransport(drivermanag",{"_index":2430,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["transports.registerudptransport(drivermanag",{"_index":2431,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["travi",{"_index":4444,"title":{},"name":{},"text":{"183":{}},"component":{}}],["treat",{"_index":871,"title":{},"name":{},"text":{"9":{},"48":{},"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"76":{},"77":{},"78":{},"79":{},"80":{},"82":{},"83":{},"101":{},"103":{},"124":{},"125":{},"126":{},"128":{},"133":{},"136":{},"139":{},"140":{},"141":{},"142":{},"143":{},"145":{},"179":{},"202":{},"204":{}},"component":{}}],["tree",{"_index":2504,"title":{},"name":{},"text":{"46":{},"47":{},"59":{},"78":{},"119":{},"121":{},"141":{},"162":{}},"component":{}}],["tri",{"_index":57,"title":{},"name":{},"text":{"2":{},"3":{},"7":{},"9":{},"16":{},"21":{},"31":{},"46":{},"47":{},"48":{},"49":{},"50":{},"59":{},"66":{},"82":{},"83":{},"87":{},"91":{},"92":{},"101":{},"103":{},"107":{},"119":{},"121":{},"122":{},"123":{},"129":{},"145":{},"148":{},"152":{},"153":{},"162":{},"172":{},"173":{},"177":{},"179":{},"182":{},"202":{}},"component":{}}],["trick",{"_index":1791,"title":{},"name":{},"text":{"21":{},"103":{},"182":{},"193":{}},"component":{}}],["tricki",{"_index":2603,"title":{},"name":{},"text":{"47":{},"86":{},"121":{},"146":{},"193":{}},"component":{}}],["trigger",{"_index":1591,"title":{},"name":{},"text":{"16":{},"34":{},"36":{},"91":{},"107":{},"153":{},"195":{},"197":{}},"component":{}}],["triggercollector",{"_index":4066,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["triggercollector.start",{"_index":4072,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["triggercollectorimpl(plcdrivermanag",{"_index":4067,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["triggercommand",{"_index":4056,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["triggerconfig",{"_index":4081,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["triggeredscraperimpl",{"_index":4068,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["triggeredscraperimpl(scraperconfig",{"_index":4069,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["trip",{"_index":2285,"title":{},"name":{},"text":{"39":{},"200":{}},"component":{}}],["tripl",{"_index":2481,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["true",{"_index":1420,"title":{},"name":{},"text":{"15":{},"21":{},"36":{},"49":{},"56":{},"59":{},"61":{},"62":{},"63":{},"64":{},"70":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"86":{},"95":{},"103":{},"106":{},"122":{},"123":{},"124":{},"125":{},"126":{},"128":{},"133":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"159":{},"162":{},"166":{},"182":{},"197":{},"204":{}},"component":{}}],["truncat",{"_index":1460,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["trust",{"_index":1158,"title":{},"name":{},"text":{"12":{},"36":{},"59":{},"78":{},"110":{},"141":{},"162":{},"197":{}},"component":{}}],["truststorefil",{"_index":4424,"title":{},"name":{},"text":{"141":{}},"component":{}}],["try(plcconnect",{"_index":4006,"title":{},"name":{},"text":{"88":{},"149":{}},"component":{}}],["tsap",{"_index":3453,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["tune",{"_index":2362,"title":{},"name":{},"text":{"41":{},"77":{},"103":{},"115":{},"204":{}},"component":{}}],["tunnel",{"_index":1297,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["turn",{"_index":3018,"title":{},"name":{},"text":{"65":{},"78":{},"88":{},"127":{},"141":{},"149":{}},"component":{}}],["turquois",{"_index":1693,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["tutori",{"_index":2253,"title":{"38":{},"199":{}},"name":{},"text":{"37":{},"43":{},"50":{},"78":{},"123":{},"198":{}},"component":{}}],["tweak",{"_index":1739,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["twice",{"_index":3977,"title":{},"name":{},"text":{"86":{},"146":{}},"component":{}}],["twin",{"_index":2911,"title":{},"name":{},"text":{"58":{}},"component":{}}],["twincat",{"_index":2967,"title":{},"name":{},"text":{"62":{},"125":{}},"component":{}}],["two",{"_index":641,"title":{"82-5":{},"83-8":{},"145-8":{}},"name":{},"text":{"8":{},"17":{},"21":{},"27":{},"34":{},"36":{},"40":{},"41":{},"50":{},"55":{},"56":{},"62":{},"66":{},"77":{},"81":{},"82":{},"83":{},"87":{},"90":{},"101":{},"102":{},"103":{},"113":{},"115":{},"123":{},"125":{},"129":{},"140":{},"144":{},"145":{},"148":{},"158":{},"159":{},"178":{},"182":{},"188":{},"195":{},"197":{},"202":{},"203":{},"204":{}},"component":{}}],["tx",{"_index":3172,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["tycho",{"_index":683,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["type",{"_index":326,"title":{"70-4":{},"76-6":{},"77-15":{},"78-8":{},"81-5":{},"82-10":{},"83-13":{},"83-20":{},"84-5":{},"84-7":{},"85-7":{},"103-1":{},"103-2":{},"103-3":{},"133-4":{},"139-6":{},"140-15":{},"141-8":{},"144-5":{},"145-13":{},"145-20":{},"147-5":{},"147-7":{},"204-1":{},"204-2":{},"204-3":{}},"name":{},"text":{"4":{},"12":{},"15":{},"16":{},"17":{},"21":{},"37":{},"39":{},"40":{},"41":{},"43":{},"46":{},"48":{},"50":{},"55":{},"56":{},"59":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"70":{},"71":{},"72":{},"73":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"87":{},"90":{},"91":{},"101":{},"102":{},"103":{},"104":{},"106":{},"107":{},"110":{},"113":{},"115":{},"119":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"129":{},"133":{},"134":{},"135":{},"136":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"147":{},"148":{},"153":{},"158":{},"159":{},"162":{},"174":{},"182":{},"198":{},"200":{},"202":{},"203":{},"204":{},"205":{}},"component":{}}],["type\":\"boolean\",\"optional\":true,\"field\":\"conveyorentri",{"_index":2836,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["type\":\"boolean\",\"optional\":true,\"field\":\"conveyorleft",{"_index":2829,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["type\":\"boolean\",\"optional\":true,\"field\":\"conveyorright",{"_index":2830,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["type\":\"boolean\",\"optional\":true,\"field\":\"load",{"_index":2831,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["type\":\"boolean\",\"optional\":true,\"field\":\"run",{"_index":2828,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["type\":\"boolean\",\"optional\":true,\"field\":\"transferleft",{"_index":2835,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["type\":\"boolean\",\"optional\":true,\"field\":\"transferright",{"_index":2834,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["type\":\"boolean\",\"optional\":true,\"field\":\"unload",{"_index":2833,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["type\":\"int32\",\"optional\":true,\"field\":\"numlargebox",{"_index":2832,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["type\":\"int32\",\"optional\":true,\"field\":\"numsmallbox",{"_index":2837,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["type\":\"int64\",\"optional\":false,\"field\":\"timestamp",{"_index":2839,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["type\":\"int64\",\"optional\":true,\"field\":\"expir",{"_index":2840,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["type\":\"struct\",\"field",{"_index":2827,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["type.nam",{"_index":4197,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["type.name}.java",{"_index":4190,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["type.parenttype.nam",{"_index":4198,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["type:address",{"_index":2371,"title":{},"name":{},"text":{"41":{}},"component":{}}],["type=logo",{"_index":3445,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["type=s7_400",{"_index":3482,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["type`",{"_index":4279,"title":{},"name":{},"text":{"103":{}},"component":{}}],["typecontext",{"_index":1755,"title":{},"name":{},"text":{"21":{}},"component":{}}],["typenam",{"_index":4135,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["typeswitch",{"_index":4229,"title":{"103-17":{},"204-16":{}},"name":{},"text":{"102":{},"103":{},"203":{},"204":{}},"component":{}}],["type}/{alias}:{data",{"_index":3934,"title":{},"name":{},"text":{"84":{},"147":{}},"component":{}}],["type}[{array",{"_index":3227,"title":{},"name":{},"text":{"76":{},"77":{},"82":{},"83":{},"84":{},"85":{},"139":{},"140":{},"145":{},"147":{}},"component":{}}],["typic",{"_index":217,"title":{},"name":{},"text":{"3":{},"9":{},"39":{},"50":{},"71":{},"77":{},"82":{},"83":{},"87":{},"123":{},"134":{},"140":{},"145":{},"148":{},"173":{},"179":{},"193":{},"200":{}},"component":{}}],["u",{"_index":4420,"title":{},"name":{},"text":{"119":{}},"component":{}}],["ua",{"_index":1260,"title":{"43":{},"59":{},"78":{},"141":{},"43-2":{},"78-9":{},"78-11":{},"78-12":{},"78-14":{},"78-15":{},"141-9":{},"141-11":{}},"name":{},"text":{"15":{},"16":{},"36":{},"43":{},"59":{},"74":{},"78":{},"83":{},"106":{},"107":{},"137":{},"141":{},"145":{},"162":{},"197":{}},"component":{}}],["uber",{"_index":2784,"title":{},"name":{},"text":{"55":{},"59":{},"86":{},"146":{},"158":{},"162":{}},"component":{}}],["ubuntu",{"_index":1948,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["udint",{"_index":3080,"title":{},"name":{},"text":{"66":{},"72":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"129":{},"135":{},"139":{},"140":{},"141":{},"144":{},"145":{},"147":{}},"component":{}}],["udp",{"_index":43,"title":{"100":{},"171":{},"63-3":{},"75-2":{},"126-3":{},"138-2":{}},"name":{"100":{},"171":{}},"text":{"2":{},"15":{},"41":{},"63":{},"65":{},"75":{},"94":{},"97":{},"100":{},"106":{},"115":{},"126":{},"127":{},"138":{},"164":{},"167":{},"171":{},"172":{}},"component":{}}],["udp.loc",{"_index":2986,"title":{},"name":{},"text":{"63":{},"75":{},"126":{},"138":{}},"component":{}}],["udt",{"_index":3960,"title":{},"name":{},"text":{"85":{}},"component":{}}],["ui",{"_index":634,"title":{"8-2":{},"178-2":{}},"name":{},"text":{"8":{},"50":{},"56":{},"123":{},"159":{},"178":{}},"component":{}}],["uid",{"_index":1953,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["uint",{"_index":3078,"title":{},"name":{},"text":{"66":{},"72":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"102":{},"103":{},"129":{},"135":{},"139":{},"140":{},"141":{},"144":{},"145":{},"147":{},"203":{},"204":{}},"component":{}}],["ukasz",{"_index":1044,"title":{},"name":{},"text":{"10":{},"14":{},"111":{},"180":{}},"component":{}}],["ulint",{"_index":3084,"title":{},"name":{},"text":{"66":{},"72":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"129":{},"135":{},"140":{},"141":{},"144":{},"145":{},"147":{}},"component":{}}],["uma",{"_index":3192,"title":{"85":{}},"name":{"85":{}},"text":{"74":{},"85":{}},"component":{}}],["umas:tcp://127.0.0.1:502",{"_index":3954,"title":{},"name":{},"text":{"85":{}},"component":{}}],["umas:{transport}://{ip",{"_index":3953,"title":{},"name":{},"text":{"85":{}},"component":{}}],["umbau",{"_index":389,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["unabl",{"_index":1926,"title":{},"name":{},"text":{"29":{},"190":{}},"component":{}}],["unanim",{"_index":840,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["uncomfort",{"_index":4045,"title":{},"name":{},"text":{"91":{},"153":{}},"component":{}}],["uncommit",{"_index":2202,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["unconfirm",{"_index":3458,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["unconnect",{"_index":3124,"title":{},"name":{},"text":{"70":{},"76":{},"105":{},"206":{}},"component":{}}],["und",{"_index":390,"title":{},"name":{},"text":{"4":{},"13":{},"112":{},"174":{}},"component":{}}],["under",{"_index":302,"title":{},"name":{},"text":{"3":{},"9":{},"21":{},"26":{},"34":{},"36":{},"37":{},"40":{},"65":{},"78":{},"82":{},"92":{},"101":{},"127":{},"152":{},"173":{},"179":{},"187":{},"195":{},"197":{},"198":{},"202":{}},"component":{}}],["underli",{"_index":1351,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["underlin",{"_index":3988,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["understand",{"_index":193,"title":{},"name":{},"text":{"3":{},"21":{},"41":{},"91":{},"115":{},"153":{},"173":{},"182":{}},"component":{}}],["underwhelm",{"_index":2424,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["unfortun",{"_index":741,"title":{},"name":{},"text":{"8":{},"17":{},"21":{},"32":{},"83":{},"113":{},"145":{},"173":{},"178":{}},"component":{}}],["unicod",{"_index":3112,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["unicode_str",{"_index":3108,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["unif",{"_index":3016,"title":{},"name":{},"text":{"65":{},"93":{},"127":{},"165":{}},"component":{}}],["unifi",{"_index":3015,"title":{},"name":{},"text":{"65":{},"78":{},"83":{},"93":{},"127":{},"141":{},"145":{},"165":{}},"component":{}}],["uniform",{"_index":1582,"title":{},"name":{},"text":{"16":{},"83":{},"107":{},"145":{}},"component":{}}],["uninstal",{"_index":4460,"title":{},"name":{},"text":{"193":{}},"component":{}}],["uniqu",{"_index":2925,"title":{},"name":{},"text":{"59":{},"162":{}},"component":{}}],["unit",{"_index":245,"title":{"92-3":{},"152-3":{}},"name":{},"text":{"3":{},"10":{},"29":{},"41":{},"43":{},"77":{},"85":{},"92":{},"115":{},"140":{},"152":{},"173":{},"180":{},"190":{}},"component":{}}],["uniti",{"_index":3950,"title":{},"name":{},"text":{"85":{}},"component":{}}],["univers",{"_index":1079,"title":{},"name":{},"text":{"10":{},"12":{},"50":{},"110":{},"123":{},"180":{},"182":{}},"component":{}}],["unix",{"_index":4470,"title":{},"name":{},"text":{"193":{}},"component":{}}],["unknown",{"_index":4253,"title":{"103-18":{}},"name":{},"text":{"103":{},"204":{}},"component":{}}],["unless",{"_index":268,"title":{},"name":{},"text":{"3":{},"78":{},"90":{},"101":{},"141":{},"173":{},"202":{}},"component":{}}],["unlik",{"_index":3432,"title":{},"name":{},"text":{"81":{},"83":{},"144":{},"145":{}},"component":{}}],["unload\":tru",{"_index":2847,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["unmanag",{"_index":3203,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["unmodifi",{"_index":4131,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["unnecesari",{"_index":3509,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["unnecessari",{"_index":4001,"title":{},"name":{},"text":{"88":{},"149":{}},"component":{}}],["unnecessarili",{"_index":3657,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["uno",{"_index":3168,"title":{},"name":{},"text":{"71":{},"134":{}},"component":{}}],["unpack",{"_index":2782,"title":{},"name":{},"text":{"55":{},"63":{},"75":{},"81":{},"126":{},"138":{},"144":{},"158":{}},"component":{}}],["unprotect",{"_index":4218,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["unreleas",{"_index":2069,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["unresolvedread",{"_index":4361,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["unresolvedsubscrib",{"_index":4370,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["unresolvedwrit",{"_index":4365,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["unsign",{"_index":1311,"title":{},"name":{},"text":{"15":{},"66":{},"77":{},"78":{},"82":{},"83":{},"103":{},"106":{},"129":{},"140":{},"141":{},"145":{},"204":{}},"component":{}}],["unsigned16",{"_index":3077,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["unsigned24",{"_index":3079,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["unsigned32",{"_index":3081,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["unsigned40",{"_index":3082,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["unsigned48",{"_index":3085,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["unsigned56",{"_index":3087,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["unsigned64",{"_index":3089,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["unsigned8",{"_index":3052,"title":{},"name":{},"text":{"66":{},"72":{},"129":{},"135":{}},"component":{}}],["unsigned8[4",{"_index":3053,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["unsubscrib",{"_index":4095,"title":{},"name":{},"text":{"92":{},"104":{},"152":{},"205":{}},"component":{}}],["unsubscribe'unsubscrib",{"_index":4374,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["unsubscript",{"_index":4377,"title":{},"name":{},"text":{"104":{},"105":{},"205":{},"206":{}},"component":{}}],["unsupport",{"_index":3106,"title":{},"name":{},"text":{"66":{},"78":{},"129":{}},"component":{}}],["unsur",{"_index":3195,"title":{},"name":{},"text":{"74":{},"137":{}},"component":{}}],["unter",{"_index":1031,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["until",{"_index":1498,"title":{},"name":{},"text":{"15":{},"50":{},"87":{},"103":{},"106":{},"123":{},"148":{},"204":{}},"component":{}}],["unwant",{"_index":3000,"title":{},"name":{},"text":{"63":{},"75":{},"126":{},"138":{}},"component":{}}],["unzip",{"_index":2260,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["up",{"_index":206,"title":{"5-4":{},"34-10":{},"36-14":{},"50-1":{},"56-1":{},"123-1":{},"159-1":{},"175-4":{},"195-10":{},"197-14":{}},"name":{},"text":{"3":{},"6":{},"9":{},"10":{},"15":{},"17":{},"21":{},"27":{},"29":{},"32":{},"34":{},"36":{},"46":{},"50":{},"56":{},"66":{},"72":{},"77":{},"78":{},"82":{},"83":{},"87":{},"90":{},"91":{},"92":{},"103":{},"106":{},"113":{},"119":{},"123":{},"129":{},"135":{},"140":{},"141":{},"145":{},"148":{},"152":{},"153":{},"159":{},"173":{},"176":{},"179":{},"180":{},"182":{},"188":{},"190":{},"195":{},"197":{},"204":{}},"component":{}}],["updat",{"_index":525,"title":{"36-18":{},"36-19":{},"197-18":{},"197-19":{}},"name":{},"text":{"5":{},"14":{},"15":{},"17":{},"21":{},"22":{},"26":{},"27":{},"30":{},"31":{},"32":{},"34":{},"36":{},"40":{},"46":{},"47":{},"48":{},"66":{},"83":{},"90":{},"103":{},"104":{},"106":{},"111":{},"113":{},"119":{},"121":{},"129":{},"145":{},"175":{},"182":{},"187":{},"188":{},"191":{},"192":{},"195":{},"197":{},"204":{},"205":{}},"component":{}}],["updateallthetag",{"_index":4040,"title":{},"name":{},"text":{"90":{}},"component":{}}],["upgrad",{"_index":1135,"title":{},"name":{},"text":{"12":{},"20":{},"110":{},"114":{}},"component":{}}],["upload",{"_index":2167,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["upon",{"_index":1801,"title":{},"name":{},"text":{"22":{},"41":{},"43":{},"50":{},"59":{},"78":{},"82":{},"83":{},"91":{},"123":{},"145":{},"153":{},"162":{},"183":{}},"component":{}}],["upstream",{"_index":512,"title":{},"name":{},"text":{"5":{},"103":{},"175":{}},"component":{}}],["uri",{"_index":2411,"title":{},"name":{},"text":{"43":{},"78":{},"141":{}},"component":{}}],["url",{"_index":739,"title":{},"name":{},"text":{"8":{},"15":{},"26":{},"34":{},"36":{},"37":{},"78":{},"80":{},"82":{},"83":{},"106":{},"141":{},"143":{},"145":{},"178":{},"187":{},"195":{},"197":{},"198":{}},"component":{}}],["urn:my:plc:cli",{"_index":2412,"title":{},"name":{},"text":{"43":{}},"component":{}}],["us",{"_index":8,"title":{"8":{},"12":{},"49":{},"92":{},"110":{},"122":{},"152":{},"178":{},"2-3":{},"3-2":{},"3-3":{},"3-10":{},"8-2":{},"8-3":{},"17-1":{},"37-1":{},"43-1":{},"46-2":{},"47-1":{},"48-1":{},"56-3":{},"77-16":{},"78-10":{},"81-6":{},"82-11":{},"83-24":{},"84-8":{},"91-4":{},"91-6":{},"113-1":{},"119-2":{},"121-1":{},"140-16":{},"141-10":{},"144-6":{},"145-24":{},"147-8":{},"153-4":{},"153-6":{},"159-3":{},"172-3":{},"173-2":{},"173-3":{},"173-11":{},"178-2":{},"178-3":{},"198-1":{}},"name":{"49":{},"122":{}},"text":{"2":{},"3":{},"5":{},"6":{},"7":{},"8":{},"9":{},"12":{},"13":{},"15":{},"16":{},"17":{},"21":{},"22":{},"23":{},"25":{},"26":{},"27":{},"28":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"39":{},"40":{},"41":{},"43":{},"46":{},"47":{},"48":{},"49":{},"50":{},"52":{},"54":{},"55":{},"56":{},"59":{},"62":{},"63":{},"65":{},"66":{},"70":{},"71":{},"72":{},"75":{},"76":{},"77":{},"78":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"88":{},"90":{},"91":{},"92":{},"93":{},"98":{},"101":{},"102":{},"103":{},"106":{},"107":{},"110":{},"112":{},"113":{},"115":{},"119":{},"121":{},"122":{},"123":{},"125":{},"126":{},"127":{},"129":{},"133":{},"134":{},"135":{},"138":{},"139":{},"140":{},"141":{},"143":{},"144":{},"145":{},"146":{},"147":{},"148":{},"149":{},"151":{},"152":{},"153":{},"157":{},"158":{},"159":{},"162":{},"165":{},"169":{},"172":{},"173":{},"175":{},"176":{},"177":{},"178":{},"179":{},"182":{},"183":{},"184":{},"186":{},"187":{},"188":{},"189":{},"191":{},"192":{},"193":{},"195":{},"197":{},"198":{},"200":{},"202":{},"203":{},"204":{}},"component":{}}],["usabl",{"_index":1198,"title":{},"name":{},"text":{"14":{},"111":{}},"component":{}}],["usag",{"_index":1104,"title":{"33":{},"194":{},"43-2":{}},"name":{},"text":{"11":{},"15":{},"16":{},"17":{},"26":{},"42":{},"46":{},"54":{},"66":{},"83":{},"93":{},"106":{},"107":{},"113":{},"116":{},"119":{},"129":{},"145":{},"157":{},"165":{},"181":{},"187":{}},"component":{}}],["usecas",{"_index":4452,"title":{},"name":{},"text":{"192":{}},"component":{}}],["useconnectionmanag",{"_index":4413,"title":{},"name":{},"text":{"105":{},"206":{}},"component":{}}],["useconnectionmanagertruefalseconnectionid",{"_index":4414,"title":{},"name":{},"text":{"105":{},"206":{}},"component":{}}],["useless",{"_index":1665,"title":{},"name":{},"text":{"17":{},"21":{},"113":{},"182":{}},"component":{}}],["usemessagerout",{"_index":4412,"title":{},"name":{},"text":{"105":{},"206":{}},"component":{}}],["user",{"_index":487,"title":{"16":{},"107":{},"83-19":{},"145-19":{}},"name":{},"text":{"5":{},"9":{},"10":{},"15":{},"16":{},"21":{},"26":{},"36":{},"41":{},"47":{},"48":{},"50":{},"54":{},"55":{},"82":{},"83":{},"101":{},"106":{},"107":{},"115":{},"121":{},"123":{},"145":{},"157":{},"158":{},"175":{},"179":{},"180":{},"182":{},"187":{},"193":{},"197":{},"202":{}},"component":{}}],["usernam",{"_index":751,"title":{},"name":{},"text":{"8":{},"26":{},"59":{},"78":{},"141":{},"162":{},"175":{},"178":{},"187":{}},"component":{}}],["user’",{"_index":3773,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["usint",{"_index":3072,"title":{},"name":{},"text":{"66":{},"72":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"129":{},"135":{},"139":{},"140":{},"141":{},"144":{},"145":{},"147":{}},"component":{}}],["usr",{"_index":1979,"title":{},"name":{},"text":{"30":{},"83":{},"145":{}},"component":{}}],["usr/bin/rubi",{"_index":4450,"title":{},"name":{},"text":{"192":{}},"component":{}}],["usr/lib/jvm/java",{"_index":1950,"title":{},"name":{},"text":{"30":{}},"component":{}}],["usr/lib/jvm/jdk",{"_index":3426,"title":{},"name":{},"text":{"81":{},"144":{}},"component":{}}],["usr/share/dotnet/host/fxr",{"_index":1976,"title":{},"name":{},"text":{"30":{}},"component":{}}],["usual",{"_index":301,"title":{},"name":{},"text":{"3":{},"5":{},"12":{},"17":{},"21":{},"27":{},"29":{},"30":{},"32":{},"34":{},"36":{},"39":{},"41":{},"46":{},"47":{},"50":{},"75":{},"77":{},"78":{},"82":{},"83":{},"86":{},"87":{},"88":{},"90":{},"103":{},"110":{},"113":{},"115":{},"119":{},"121":{},"123":{},"138":{},"140":{},"141":{},"145":{},"146":{},"148":{},"149":{},"173":{},"175":{},"182":{},"188":{},"191":{},"193":{},"195":{},"197":{},"200":{},"204":{}},"component":{}}],["utf",{"_index":3104,"title":{},"name":{},"text":{"66":{},"78":{},"81":{},"103":{},"129":{},"141":{},"144":{}},"component":{}}],["util",{"_index":966,"title":{},"name":{},"text":{"9":{},"12":{},"16":{},"17":{},"21":{},"39":{},"66":{},"88":{},"101":{},"107":{},"110":{},"113":{},"129":{},"149":{},"179":{},"182":{},"200":{},"202":{}},"component":{}}],["v",{"_index":517,"title":{},"name":{},"text":{"5":{},"31":{},"175":{},"192":{}},"component":{}}],["v0.10.0",{"_index":2753,"title":{},"name":{},"text":{"54":{},"157":{}},"component":{}}],["v0.13.0",{"_index":2200,"title":{},"name":{},"text":{"36":{}},"component":{}}],["valid",{"_index":846,"title":{"35":{},"37":{},"196":{},"198":{},"78-9":{},"103-19":{},"141-9":{}},"name":{"37":{},"198":{}},"text":{"9":{},"21":{},"34":{},"36":{},"37":{},"39":{},"41":{},"43":{},"46":{},"47":{},"50":{},"51":{},"59":{},"66":{},"71":{},"77":{},"78":{},"83":{},"84":{},"87":{},"90":{},"101":{},"103":{},"115":{},"119":{},"121":{},"123":{},"129":{},"134":{},"140":{},"141":{},"145":{},"147":{},"148":{},"154":{},"162":{},"179":{},"182":{},"195":{},"197":{},"198":{},"200":{},"202":{}},"component":{}}],["valu",{"_index":281,"title":{},"name":{},"text":{"3":{},"8":{},"9":{},"10":{},"12":{},"15":{},"21":{},"40":{},"41":{},"43":{},"46":{},"47":{},"48":{},"50":{},"55":{},"56":{},"61":{},"62":{},"63":{},"64":{},"66":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"90":{},"91":{},"92":{},"93":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"102":{},"103":{},"106":{},"110":{},"115":{},"119":{},"121":{},"123":{},"124":{},"125":{},"126":{},"128":{},"129":{},"133":{},"134":{},"135":{},"136":{},"137":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"147":{},"151":{},"152":{},"153":{},"158":{},"159":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"173":{},"178":{},"179":{},"180":{},"203":{},"204":{}},"component":{}}],["value1",{"_index":2485,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["value1.getfloat32",{"_index":2492,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["value2",{"_index":2487,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["value2.getfloat32",{"_index":2494,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["value=%db2:30.0:string(10",{"_index":2889,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["value=%db2:8:time;str",{"_index":2888,"title":{},"name":{},"text":{"56":{},"159":{}},"component":{}}],["valueof(eventid.shortvalue()).getdescript",{"_index":3782,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["value}&{opt",{"_index":2366,"title":{},"name":{},"text":{"41":{},"115":{}},"component":{}}],["valv",{"_index":2512,"title":{},"name":{},"text":{"46":{},"119":{}},"component":{}}],["vargument",{"_index":4491,"title":{},"name":{},"text":{"204":{}},"component":{}}],["vari",{"_index":2363,"title":{},"name":{},"text":{"41":{},"78":{},"83":{},"145":{}},"component":{}}],["variabl",{"_index":1561,"title":{},"name":{},"text":{"15":{},"32":{},"55":{},"66":{},"78":{},"83":{},"87":{},"103":{},"106":{},"129":{},"141":{},"145":{},"148":{},"151":{},"158":{},"204":{}},"component":{}}],["variant",{"_index":1296,"title":{},"name":{},"text":{"15":{},"21":{},"46":{},"66":{},"83":{},"103":{},"106":{},"119":{},"129":{},"145":{},"182":{}},"component":{}}],["varieti",{"_index":99,"title":{},"name":{},"text":{"3":{},"5":{},"16":{},"17":{},"36":{},"50":{},"65":{},"72":{},"107":{},"113":{},"123":{},"127":{},"135":{},"173":{},"175":{},"197":{}},"component":{}}],["variou",{"_index":861,"title":{},"name":{},"text":{"9":{},"15":{},"16":{},"41":{},"78":{},"93":{},"106":{},"107":{},"115":{},"165":{},"179":{}},"component":{}}],["vcan",{"_index":4128,"title":{},"name":{},"text":{"98":{},"169":{}},"component":{}}],["vcan0",{"_index":4125,"title":{},"name":{},"text":{"98":{},"169":{}},"component":{}}],["vendor",{"_index":97,"title":{},"name":{},"text":{"3":{},"12":{},"17":{},"21":{},"110":{},"113":{},"173":{},"182":{}},"component":{}}],["venezuela",{"_index":991,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["venv",{"_index":1933,"title":{"30-8":{},"191-6":{}},"name":{},"text":{"30":{},"191":{}},"component":{}}],["verbindung",{"_index":339,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["veri",{"_index":454,"title":{},"name":{},"text":{"5":{},"8":{},"9":{},"10":{},"12":{},"21":{},"36":{},"46":{},"47":{},"48":{},"50":{},"55":{},"66":{},"83":{},"86":{},"92":{},"93":{},"103":{},"110":{},"119":{},"121":{},"123":{},"129":{},"145":{},"146":{},"152":{},"158":{},"165":{},"175":{},"178":{},"179":{},"180":{},"182":{},"197":{},"204":{}},"component":{}}],["verif",{"_index":3306,"title":{"78-5":{},"141-5":{}},"name":{},"text":{},"component":{}}],["verifi",{"_index":1205,"title":{},"name":{},"text":{"14":{},"15":{},"29":{},"34":{},"36":{},"37":{},"49":{},"78":{},"82":{},"83":{},"103":{},"106":{},"111":{},"122":{},"141":{},"145":{},"190":{},"195":{},"197":{},"198":{},"204":{}},"component":{}}],["verify(mockdevice).read(eq(\"myadress",{"_index":4113,"title":{},"name":{},"text":{"92":{},"152":{}},"component":{}}],["versa",{"_index":3686,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["versatil",{"_index":1656,"title":{},"name":{},"text":{"17":{},"113":{}},"component":{}}],["version",{"_index":148,"title":{"49":{},"122":{},"34-10":{},"34-12":{},"36-14":{},"36-16":{},"36-17":{},"195-10":{},"195-12":{},"197-14":{},"197-16":{},"197-17":{}},"name":{},"text":{"3":{},"5":{},"7":{},"8":{},"9":{},"10":{},"15":{},"17":{},"20":{},"21":{},"22":{},"26":{},"29":{},"30":{},"31":{},"32":{},"34":{},"36":{},"37":{},"41":{},"42":{},"46":{},"47":{},"49":{},"50":{},"55":{},"56":{},"59":{},"66":{},"71":{},"77":{},"78":{},"82":{},"83":{},"87":{},"88":{},"90":{},"91":{},"101":{},"104":{},"106":{},"113":{},"114":{},"115":{},"116":{},"119":{},"121":{},"122":{},"123":{},"129":{},"134":{},"140":{},"145":{},"148":{},"149":{},"153":{},"158":{},"159":{},"162":{},"173":{},"175":{},"177":{},"178":{},"179":{},"180":{},"182":{},"183":{},"187":{},"190":{},"191":{},"192":{},"193":{},"195":{},"197":{},"198":{},"202":{},"205":{}},"component":{}}],["version'rec",{"_index":4348,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["version'send",{"_index":4350,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["versionbrows",{"_index":4356,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["versionreset",{"_index":4345,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["versions:set",{"_index":2218,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["version}.{minor",{"_index":4439,"title":{},"name":{},"text":{"175":{}},"component":{}}],["version}/apach",{"_index":4481,"title":{},"name":{},"text":{"197":{}},"component":{}}],["version}/rc1",{"_index":2212,"title":{},"name":{},"text":{"36":{},"195":{},"197":{}},"component":{}}],["version}/rc1/apach",{"_index":4476,"title":{},"name":{},"text":{"195":{},"197":{}},"component":{}}],["version}/rc1/readm",{"_index":4474,"title":{},"name":{},"text":{"195":{},"197":{}},"component":{}}],["version}/rc1/release_not",{"_index":4475,"title":{},"name":{},"text":{"195":{},"197":{}},"component":{}}],["version}1",{"_index":4483,"title":{},"name":{},"text":{"198":{}},"component":{}}],["veto",{"_index":589,"title":{},"name":{},"text":{"6":{},"9":{},"176":{},"179":{}},"component":{}}],["via",{"_index":474,"title":{},"name":{},"text":{"5":{},"9":{},"15":{},"16":{},"17":{},"31":{},"32":{},"36":{},"39":{},"43":{},"47":{},"50":{},"55":{},"65":{},"72":{},"81":{},"82":{},"83":{},"87":{},"106":{},"107":{},"113":{},"121":{},"123":{},"127":{},"135":{},"144":{},"145":{},"148":{},"151":{},"158":{},"175":{},"179":{},"192":{},"197":{},"200":{}},"component":{}}],["vice",{"_index":3685,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["video",{"_index":188,"title":{"13":{},"112":{},"13-2":{},"112-2":{}},"name":{"13":{},"112":{}},"text":{"3":{},"173":{}},"component":{}}],["view",{"_index":756,"title":{},"name":{},"text":{"8":{},"34":{},"36":{},"41":{},"50":{},"115":{},"123":{},"178":{},"195":{},"197":{}},"component":{}}],["violat",{"_index":657,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["vipa",{"_index":3644,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["virtual",{"_index":1626,"title":{"50":{},"123":{},"50-1":{},"103-20":{},"123-1":{},"204-15":{}},"name":{"50":{},"123":{}},"text":{"17":{},"32":{},"50":{},"54":{},"92":{},"103":{},"113":{},"123":{},"152":{},"157":{},"193":{},"204":{}},"component":{}}],["visibl",{"_index":3111,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["visible_str",{"_index":3105,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["visit",{"_index":737,"title":{},"name":{},"text":{"8":{},"36":{},"178":{},"197":{}},"component":{}}],["visual",{"_index":1148,"title":{},"name":{},"text":{"12":{},"110":{},"193":{}},"component":{}}],["visualizaci%c3%b3n",{"_index":3577,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["vital",{"_index":1156,"title":{},"name":{},"text":{"12":{},"110":{}},"component":{}}],["vlan",{"_index":2989,"title":{},"name":{},"text":{"63":{},"75":{},"81":{},"126":{},"138":{},"144":{}},"component":{}}],["vlaue",{"_index":1476,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["vm",{"_index":617,"title":{"26":{}},"name":{"26":{},"187":{}},"text":{"7":{},"26":{},"32":{},"177":{},"187":{}},"component":{}}],["vm2",{"_index":1833,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["vm2.apache.org",{"_index":1813,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["void",{"_index":1771,"title":{},"name":{},"text":{"21":{},"83":{},"87":{},"90":{},"91":{},"92":{},"101":{},"145":{},"148":{},"151":{},"152":{},"153":{},"182":{},"202":{}},"component":{}}],["volum",{"_index":3858,"title":{},"name":{},"text":{"83":{},"86":{},"145":{},"146":{}},"component":{}}],["voluntarili",{"_index":1200,"title":{},"name":{},"text":{"14":{}},"component":{}}],["voluntatili",{"_index":4416,"title":{},"name":{},"text":{"111":{}},"component":{}}],["vote",{"_index":559,"title":{"34-8":{},"34-9":{},"36-11":{},"36-12":{},"37-3":{},"195-8":{},"195-9":{},"197-11":{},"197-12":{},"198-3":{}},"name":{},"text":{"6":{},"9":{},"34":{},"36":{},"37":{},"176":{},"179":{},"195":{},"197":{},"198":{}},"component":{}}],["vstring",{"_index":4291,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["vulner",{"_index":1636,"title":{"20":{},"114":{},"20-1":{},"114-1":{}},"name":{},"text":{"17":{},"20":{},"113":{},"114":{}},"component":{}}],["v{current",{"_index":2221,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["v{releas",{"_index":2199,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["w",{"_index":167,"title":{},"name":{},"text":{"3":{},"82":{},"83":{},"145":{},"173":{}},"component":{}}],["wach",{"_index":2364,"title":{},"name":{},"text":{"41":{}},"component":{}}],["wait",{"_index":2132,"title":{},"name":{},"text":{"34":{},"36":{},"46":{},"82":{},"83":{},"87":{},"119":{},"145":{},"148":{},"195":{},"197":{}},"component":{}}],["walk",{"_index":1014,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["want",{"_index":75,"title":{},"name":{},"text":{"2":{},"3":{},"5":{},"7":{},"16":{},"21":{},"27":{},"29":{},"34":{},"36":{},"40":{},"41":{},"46":{},"47":{},"48":{},"49":{},"50":{},"55":{},"56":{},"59":{},"61":{},"70":{},"83":{},"86":{},"88":{},"90":{},"91":{},"92":{},"107":{},"115":{},"119":{},"121":{},"122":{},"123":{},"124":{},"133":{},"145":{},"146":{},"149":{},"152":{},"153":{},"158":{},"159":{},"162":{},"172":{},"173":{},"175":{},"177":{},"182":{},"188":{},"190":{},"195":{},"197":{}},"component":{}}],["warn",{"_index":660,"title":{},"name":{},"text":{"8":{},"15":{},"21":{},"34":{},"82":{},"83":{},"103":{},"106":{},"145":{},"178":{},"182":{},"195":{},"204":{}},"component":{}}],["warn_restart",{"_index":3699,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["warranti",{"_index":4194,"title":{},"name":{},"text":{"101":{},"202":{}},"component":{}}],["warsaw",{"_index":1052,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["wasn’t",{"_index":2243,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["wast",{"_index":1887,"title":{},"name":{},"text":{"27":{},"103":{},"188":{}},"component":{}}],["watch",{"_index":1961,"title":{},"name":{},"text":{"30":{},"55":{},"158":{}},"component":{}}],["way",{"_index":271,"title":{},"name":{},"text":{"3":{},"4":{},"5":{},"9":{},"12":{},"13":{},"16":{},"17":{},"21":{},"34":{},"36":{},"37":{},"43":{},"46":{},"47":{},"48":{},"50":{},"55":{},"65":{},"66":{},"75":{},"83":{},"84":{},"86":{},"90":{},"92":{},"93":{},"98":{},"103":{},"107":{},"110":{},"112":{},"113":{},"119":{},"121":{},"123":{},"127":{},"129":{},"138":{},"145":{},"146":{},"147":{},"152":{},"158":{},"165":{},"169":{},"173":{},"174":{},"175":{},"179":{},"182":{},"195":{},"197":{},"198":{},"204":{}},"component":{}}],["way/apach",{"_index":767,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["wb",{"_index":3875,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["wchar",{"_index":3264,"title":{},"name":{},"text":{"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"140":{},"141":{},"144":{},"145":{},"147":{}},"component":{}}],["we'll",{"_index":1889,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["web",{"_index":633,"title":{"8-2":{},"178-2":{}},"name":{},"text":{"8":{},"13":{},"21":{},"26":{},"56":{},"112":{},"159":{},"178":{},"182":{},"187":{}},"component":{}}],["webadmin",{"_index":718,"title":{},"name":{},"text":{"8":{},"178":{}},"component":{}}],["webinar",{"_index":1163,"title":{"13-2":{},"112-2":{}},"name":{},"text":{},"component":{}}],["webserv",{"_index":1902,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["websit",{"_index":80,"title":{"27":{},"188":{},"3-5":{},"27-3":{},"173-5":{},"188-3":{}},"name":{"27":{},"188":{}},"text":{"3":{},"5":{},"9":{},"15":{},"16":{},"22":{},"27":{},"28":{},"36":{},"106":{},"107":{},"173":{},"175":{},"179":{},"183":{},"188":{},"189":{},"197":{}},"component":{}}],["weed",{"_index":2015,"title":{},"name":{},"text":{"32":{}},"component":{}}],["weekend",{"_index":2136,"title":{},"name":{},"text":{"34":{},"36":{},"195":{},"197":{}},"component":{}}],["welcom",{"_index":897,"title":{},"name":{},"text":{"9":{},"86":{},"146":{},"179":{}},"component":{}}],["well",{"_index":249,"title":{},"name":{},"text":{"3":{},"5":{},"7":{},"9":{},"12":{},"15":{},"16":{},"17":{},"21":{},"22":{},"26":{},"34":{},"36":{},"41":{},"50":{},"55":{},"56":{},"71":{},"78":{},"82":{},"83":{},"85":{},"91":{},"98":{},"101":{},"103":{},"106":{},"107":{},"110":{},"113":{},"123":{},"134":{},"141":{},"145":{},"153":{},"158":{},"159":{},"169":{},"173":{},"175":{},"177":{},"179":{},"182":{},"183":{},"187":{},"195":{},"197":{},"202":{},"204":{}},"component":{}}],["wenig",{"_index":422,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["went",{"_index":1316,"title":{},"name":{},"text":{"15":{},"26":{},"34":{},"36":{},"46":{},"47":{},"48":{},"50":{},"106":{},"119":{},"121":{},"123":{},"187":{},"195":{},"197":{}},"component":{}}],["we’ll",{"_index":940,"title":{},"name":{},"text":{"9":{},"29":{},"32":{},"37":{},"41":{},"46":{},"47":{},"56":{},"115":{},"119":{},"121":{},"159":{},"179":{},"190":{},"198":{}},"component":{}}],["we’r",{"_index":1960,"title":{},"name":{},"text":{"30":{},"91":{},"153":{},"179":{}},"component":{}}],["wget",{"_index":1965,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["whatev",{"_index":489,"title":{},"name":{},"text":{"5":{},"46":{},"119":{},"175":{}},"component":{}}],["what’",{"_index":287,"title":{},"name":{},"text":{"3":{},"7":{},"30":{},"31":{},"32":{},"34":{},"36":{},"173":{},"177":{},"195":{},"197":{}},"component":{}}],["when(mockdevice).read(anystring()).thenreturn(pair.of(plcresponsecode.ok",{"_index":4108,"title":{},"name":{},"text":{"92":{},"152":{}},"component":{}}],["whenev",{"_index":282,"title":{},"name":{},"text":{"3":{},"91":{},"153":{},"173":{}},"component":{}}],["wherea",{"_index":3959,"title":{},"name":{},"text":{"85":{}},"component":{}}],["wherev",{"_index":4335,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["whether",{"_index":3844,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["who`",{"_index":4259,"title":{},"name":{},"text":{"103":{}},"component":{}}],["whole",{"_index":3115,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["whose",{"_index":4097,"title":{},"name":{},"text":{"92":{},"103":{},"152":{},"204":{}},"component":{}}],["who’",{"_index":4486,"title":{},"name":{},"text":{"204":{}},"component":{}}],["wich",{"_index":4287,"title":{},"name":{},"text":{"103":{},"104":{},"205":{}},"component":{}}],["wide",{"_index":541,"title":{},"name":{},"text":{"5":{},"9":{},"17":{},"50":{},"71":{},"113":{},"123":{},"134":{},"175":{},"179":{}},"component":{}}],["widespread",{"_index":3043,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["width=100",{"_index":1910,"title":{},"name":{},"text":{"29":{}},"component":{}}],["wie",{"_index":373,"title":{},"name":{},"text":{"4":{},"13":{},"112":{},"174":{}},"component":{}}],["wiki",{"_index":1906,"title":{"28":{},"189":{}},"name":{"28":{},"189":{}},"text":{"28":{},"189":{}},"component":{}}],["wildcard",{"_index":3214,"title":{},"name":{},"text":{"75":{},"138":{}},"component":{}}],["winbuild",{"_index":4453,"title":{"193-6":{}},"name":{},"text":{"193":{}},"component":{}}],["wincc",{"_index":3561,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["window",{"_index":140,"title":{"32":{},"193":{}},"name":{"32":{},"193":{}},"text":{"3":{},"7":{},"9":{},"29":{},"32":{},"37":{},"43":{},"50":{},"55":{},"56":{},"86":{},"97":{},"123":{},"146":{},"158":{},"159":{},"167":{},"173":{},"177":{},"179":{},"190":{},"193":{},"198":{}},"component":{}}],["wine",{"_index":3051,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["winpcap",{"_index":4459,"title":{},"name":{},"text":{"193":{}},"component":{}}],["wir",{"_index":374,"title":{},"name":{},"text":{"4":{},"13":{},"112":{},"174":{}},"component":{}}],["wireshark",{"_index":2325,"title":{},"name":{},"text":{"40":{},"41":{},"78":{},"86":{},"115":{},"141":{},"146":{}},"component":{}}],["wish",{"_index":3050,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["with",{"_index":924,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["within",{"_index":1450,"title":{"43-2":{}},"name":{},"text":{"15":{},"27":{},"43":{},"52":{},"55":{},"59":{},"70":{},"76":{},"77":{},"78":{},"83":{},"90":{},"106":{},"133":{},"139":{},"140":{},"141":{},"145":{},"158":{},"162":{},"188":{}},"component":{}}],["withmaxleasetime(duration.ofseconds(10",{"_index":3996,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["withmaxwaittime(duration.ofminutes(1",{"_index":3997,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["without",{"_index":230,"title":{"92":{},"152":{}},"name":{},"text":{"3":{},"5":{},"15":{},"16":{},"17":{},"21":{},"29":{},"41":{},"50":{},"55":{},"70":{},"76":{},"78":{},"82":{},"83":{},"84":{},"90":{},"101":{},"103":{},"106":{},"107":{},"113":{},"115":{},"123":{},"133":{},"139":{},"141":{},"145":{},"147":{},"151":{},"158":{},"173":{},"175":{},"182":{},"193":{},"202":{},"204":{}},"component":{}}],["without.html",{"_index":2247,"title":{},"name":{},"text":{"36":{},"197":{}},"component":{}}],["wombat",{"_index":1726,"title":{},"name":{},"text":{"21":{},"27":{},"188":{}},"component":{}}],["won’t",{"_index":2157,"title":{},"name":{},"text":{"34":{},"81":{},"144":{},"195":{}},"component":{}}],["woodwork",{"_index":1085,"title":{},"name":{},"text":{"10":{},"180":{}},"component":{}}],["word",{"_index":939,"title":{},"name":{},"text":{"9":{},"15":{},"76":{},"77":{},"78":{},"81":{},"82":{},"83":{},"84":{},"85":{},"106":{},"139":{},"140":{},"141":{},"144":{},"145":{},"147":{},"179":{}},"component":{}}],["work",{"_index":194,"title":{},"name":{},"text":{"3":{},"5":{},"6":{},"7":{},"9":{},"10":{},"11":{},"12":{},"15":{},"17":{},"21":{},"26":{},"29":{},"30":{},"32":{},"34":{},"36":{},"40":{},"43":{},"46":{},"47":{},"56":{},"65":{},"74":{},"78":{},"82":{},"83":{},"86":{},"91":{},"92":{},"101":{},"103":{},"106":{},"110":{},"113":{},"119":{},"121":{},"127":{},"137":{},"145":{},"146":{},"152":{},"153":{},"159":{},"173":{},"175":{},"176":{},"177":{},"179":{},"180":{},"181":{},"182":{},"187":{},"193":{},"195":{},"197":{},"202":{}},"component":{}}],["workaround",{"_index":1696,"title":{},"name":{},"text":{"21":{},"182":{}},"component":{}}],["worker",{"_index":1380,"title":{"55-6":{},"55-7":{},"55-9":{},"55-10":{},"158-6":{},"158-7":{},"158-9":{},"158-10":{}},"name":{},"text":{"15":{},"55":{},"106":{},"158":{}},"component":{}}],["workflow",{"_index":1892,"title":{},"name":{},"text":{"27":{},"188":{}},"component":{}}],["workshop",{"_index":1213,"title":{},"name":{},"text":{"14":{},"111":{}},"component":{}}],["world",{"_index":1671,"title":{"36-20":{},"197-20":{}},"name":{},"text":{"17":{},"34":{},"36":{},"41":{},"113":{},"115":{},"195":{},"197":{}},"component":{}}],["worri",{"_index":1182,"title":{},"name":{},"text":{"13":{},"27":{},"112":{},"188":{}},"component":{}}],["wors",{"_index":3037,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["worth",{"_index":3987,"title":{},"name":{},"text":{"87":{},"148":{}},"component":{}}],["wouldn’t",{"_index":1784,"title":{},"name":{},"text":{"21":{},"50":{},"123":{},"182":{}},"component":{}}],["wpcap.dll",{"_index":4462,"title":{},"name":{},"text":{"193":{}},"component":{}}],["wrap",{"_index":1472,"title":{},"name":{},"text":{"15":{},"39":{},"106":{},"200":{}},"component":{}}],["wrappedbuffer(dbyt",{"_index":3876,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["wrapper",{"_index":78,"title":{"3-2":{},"173-2":{}},"name":{},"text":{"3":{},"7":{},"36":{},"83":{},"88":{},"145":{},"149":{},"173":{},"177":{},"197":{}},"component":{}}],["wrapper.properti",{"_index":151,"title":{},"name":{},"text":{"3":{},"173":{}},"component":{}}],["write",{"_index":820,"title":{"46-5":{},"47-3":{},"48-3":{},"50-3":{},"50-6":{},"119-5":{},"121-3":{},"123-3":{},"123-6":{}},"name":{"40":{},"201":{}},"text":{"9":{},"15":{},"17":{},"21":{},"29":{},"40":{},"41":{},"42":{},"46":{},"47":{},"48":{},"50":{},"52":{},"54":{},"55":{},"56":{},"66":{},"70":{},"71":{},"72":{},"74":{},"75":{},"77":{},"78":{},"80":{},"82":{},"83":{},"84":{},"85":{},"90":{},"92":{},"101":{},"103":{},"104":{},"105":{},"106":{},"113":{},"115":{},"116":{},"119":{},"121":{},"123":{},"129":{},"133":{},"134":{},"135":{},"137":{},"138":{},"140":{},"141":{},"143":{},"145":{},"147":{},"152":{},"157":{},"158":{},"159":{},"179":{},"182":{},"190":{},"202":{},"204":{},"205":{},"206":{}},"component":{}}],["write'subscrib",{"_index":4369,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["write'writ",{"_index":4366,"title":{},"name":{},"text":{"104":{},"205":{}},"component":{}}],["write(sdo:1:2/3:record",{"_index":3114,"title":{},"name":{},"text":{"66":{},"129":{}},"component":{}}],["write(str",{"_index":4093,"title":{},"name":{},"text":{"92":{},"152":{}},"component":{}}],["write({writ",{"_index":1571,"title":{},"name":{},"text":{"15":{},"106":{}},"component":{}}],["writerequest",{"_index":2728,"title":{},"name":{},"text":{"50":{},"123":{}},"component":{}}],["writerequest.execut",{"_index":2587,"title":{},"name":{},"text":{"47":{},"121":{}},"component":{}}],["writerequest.execute().get",{"_index":2589,"title":{},"name":{},"text":{"47":{},"50":{},"121":{},"123":{}},"component":{}}],["written",{"_index":536,"title":{},"name":{},"text":{"5":{},"9":{},"50":{},"72":{},"84":{},"103":{},"123":{},"135":{},"147":{},"175":{},"179":{}},"component":{}}],["wrong",{"_index":1516,"title":{"34-5":{},"36-8":{},"195-5":{},"197-8":{}},"name":{},"text":{"15":{},"21":{},"30":{},"31":{},"32":{},"34":{},"36":{},"46":{},"47":{},"48":{},"50":{},"78":{},"106":{},"119":{},"121":{},"123":{},"141":{},"182":{},"193":{},"195":{},"197":{}},"component":{}}],["wstring",{"_index":1250,"title":{},"name":{},"text":{"15":{},"78":{},"81":{},"82":{},"83":{},"106":{},"141":{},"144":{},"145":{}},"component":{}}],["ww",{"_index":3553,"title":{},"name":{},"text":{"82":{},"83":{},"145":{}},"component":{}}],["x",{"_index":2154,"title":{},"name":{},"text":{"34":{},"36":{},"55":{},"82":{},"83":{},"86":{},"145":{},"146":{},"158":{},"195":{},"197":{}},"component":{}}],["x.509",{"_index":2385,"title":{},"name":{},"text":{"43":{}},"component":{}}],["x509",{"_index":3344,"title":{},"name":{},"text":{"78":{}},"component":{}}],["x86_64",{"_index":1911,"title":{},"name":{},"text":{"29":{},"193":{}},"component":{}}],["xcode",{"_index":1993,"title":{},"name":{},"text":{"31":{}},"component":{}}],["xml",{"_index":684,"title":{},"name":{},"text":{"8":{},"21":{},"39":{},"82":{},"83":{},"145":{},"178":{},"182":{},"200":{}},"component":{}}],["xmluint",{"_index":2300,"title":{},"name":{},"text":{"39":{},"200":{}},"component":{}}],["xx",{"_index":4215,"title":{},"name":{},"text":{"102":{},"203":{}},"component":{}}],["xxx",{"_index":3842,"title":{},"name":{},"text":{"83":{},"145":{}},"component":{}}],["xyz",{"_index":2267,"title":{},"name":{},"text":{"37":{},"198":{}},"component":{}}],["y",{"_index":3569,"title":{},"name":{},"text":{"82":{},"83":{},"145":{},"193":{}},"component":{}}],["yaml",{"_index":685,"title":{"91-6":{},"153-6":{}},"name":{},"text":{"8":{},"91":{},"153":{},"178":{}},"component":{}}],["ye",{"_index":599,"title":{},"name":{},"text":{"6":{},"83":{},"145":{},"176":{}},"component":{}}],["year",{"_index":1016,"title":{},"name":{},"text":{"10":{},"17":{},"36":{},"37":{},"90":{},"113":{},"151":{},"180":{},"197":{},"198":{}},"component":{}}],["yourself",{"_index":4471,"title":{},"name":{},"text":{"193":{}},"component":{}}],["you’ll",{"_index":1839,"title":{},"name":{},"text":{"26":{},"187":{}},"component":{}}],["you’r",{"_index":493,"title":{},"name":{},"text":{"5":{},"29":{},"30":{},"34":{},"36":{},"46":{},"56":{},"119":{},"159":{},"175":{},"191":{},"195":{},"197":{}},"component":{}}],["you’v",{"_index":430,"title":{},"name":{},"text":{"4":{},"174":{}},"component":{}}],["yum",{"_index":1939,"title":{},"name":{},"text":{"30":{},"191":{}},"component":{}}],["z",{"_index":1048,"title":{},"name":{},"text":{"10":{},"12":{},"14":{},"110":{},"111":{},"180":{}},"component":{}}],["zero",{"_index":4304,"title":{},"name":{},"text":{"103":{},"204":{}},"component":{}}],["zheng",{"_index":1219,"title":{},"name":{},"text":{"14":{}},"component":{}}],["zip",{"_index":2078,"title":{},"name":{},"text":{"34":{},"36":{},"37":{},"193":{},"195":{},"197":{},"198":{}},"component":{}}],["zone",{"_index":929,"title":{},"name":{},"text":{"9":{},"179":{}},"component":{}}],["zookeep",{"_index":2793,"title":{},"name":{},"text":{"55":{},"158":{}},"component":{}}],["zshrc",{"_index":2011,"title":{},"name":{},"text":{"31":{},"192":{}},"component":{}}]],"pipeline":["stemmer"]},"store":{"documents":{"1":{"id":1,"text":"","title":"Home","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/index.html","titles":[]},"2":{"id":2,"text":"In this simple case, an application asks the DriverManager to forward a connection creation to the corresponding Driver implementation, which then creates both a Connection and a MessageCodec instance. The Connection is the logical link between the connection state and the MessageCodec. A MessageCodec uses a TransportInstance to communicate with the target device. Serial transports based on RS475 and UDP Transports currently don’t allow sharing. That means only one connection instance can have access to one RS485 or one shared local UDP Port (Multiple UDP transport instances with different local ports however are possible). As soon as one connection is established and a second connection would try to access this, this would result in errors. However, multiple devices could be attached to the same RS458 port (Modbus RTU and Modbus ASCII explicitly supports this, however using different devices using different protocols over the same port is not possible) and in BACnet connecting to multiple remote BACnet devices would require one local UDP port to be used by multiple connections. Some protocols, such as BACnet require remotes to send data to a fixed udp port on a non-broadcast address. This causes problems as soon as we want to connect to multiple BACnet devices from the same host as only one instance can get access to that port.","title":"Architecture of PLC4X Connections","component":"plc4x","version":"pre-release","name":"architecture","url":"/plc4x/pre-release/developers/architecture.html","titles":[{"text":"Simple case","hash":"_simple_case","id":1},{"text":"Problems","hash":"_problems","id":2},{"text":"Protocols requiring us to use a fixed port on a non-broadcast address","hash":"_protocols_requiring_us_to_use_a_fixed_port_on_a_non_broadcast_address","id":3},{"text":"Protocols only allowing one connection at a time","hash":"_protocols_only_allowing_one_connection_at_a_time","id":4}]},"3":{"id":3,"text":"PLC4X is built with Apache Maven and we have tried to make the build as simple as possible. However PLC4X aims at providing means to communicate with PLCs of multiple vendors using a shared API but also in a variety of different languages. We have partitioned the build to allow selecting the parts that are of interest. This is done by selecting so-called Maven profiles. More about these later down in this manual. For your convenience we also have provided a Maven-Wrapper, that should allow building of PLC4X with only Java 11 or greater as requirement. The only requirements to building PLC4X should be: Java 11 JDK (or newer) Git (Even if you are building the source distribution, the Kafka plugin seems to require a git executable being available on the systems PATH) Apache Maven (3.6.0 or newer) (Optional) (See next chapter) The so-called Maven-Wrapper is used by calling the Maven-Wrapper scripts mvnw (Mac & Linux) or mvnw.cmd (Windows) instead of the default Maven commands mvn and mvn.cmd. These helpers ensure Maven is available in at least the version defined in .mvn/maven-wrapper.properties. If no suitable version can be found, it is automatically downloaded and installed alongside the project (So it doesn’t have to be downloaded every time and every project can have it’s own Maven version) After the script has ensured a suitable Maven version is available, this is used and all arguments and parameters are transparently forwarded to this. So simply adding the additional w to each of the Maven commands, there should be no difference to using a pre-installed Maven version. This document can’t provide you with all the details needed to get started with Maven itself. But there is a lot of good documentation out there. Justin McLean and Christofer Dutz even recorded a not quite 2-hour Maven training Video some time ago for another Apache project. It should handle all the details needed to get a general understanding of Maven and how it works. Recording of a Maven Training for Apache Flex from 2016 https://vimeo.com/167857327 As especially building the C++, and C# drivers requires building of some third party artifacts and increases build-time dramatically and requires setting up some additional third party tools, we have excluded these parts form the default Maven build. The following profiles are available: with-c: Builds all C related modules with-dotnet: Builds all C# and .Net related modules with-go: Builds all Go related modules with-java: Builds all Java related modules with-python: Builds all Python related modules As these profiles typically require some preparation and setup on your development machine, please read the Preparing your Computer guide for a detailed description on this. The minimum Apache PLC4X build will build only basic code-generation modules without support for any language: mvn install So if for example you want to build only the Java related modules, the following command will do that: mvn -P with-java install If you want to skip the running of tests (even if this is not encouraged) you can skip them all together. mvn -P with-java -DskipTests install All Apache PLC4X modules are built by executing the following command: mvn -P with-c,with-dotnet,with-go,with-java,with-python install This not only builds the artifacts and creates the jar files, but also runs all unit- and integration-tests. If you want to skip the running of tests (even if this is not encouraged) you can skip them all together. mvn -P with-c,with-dotnet,with-go,with-java,with-python install -DskipTests This will not skip the compilation of tests, however. The PLC4X Website is also part of the same GIT repository that contains the code and it is built by Maven as well. In order to build the website the following command should be sufficient: mvn site This is just a quick-start version of the site generation, for a fully detailed documentation please read the Website documentation page. Maven supports so-called profiles for customizing the build in special cases. We have tried to keep the number of profiles as low as possible. So far there is only one profile. This profile is automatically enabled on a release-build and it automatically creates some additional artifacts: JavaDoc artifact Sources artifact Source distribution assembly SHA512 checksum files for every artifact PGP signature files for every artifact Generally it is not required to enable ths profile unless you are interested in these Artifacts. Especially for Maven beginners, it might be difficult to understand why a module builds the way it does. Maven contains a lot of concepts to inherit and override settings. The debug-pom profile will generate the so-called effective pom in the modules target directory. This file contains 100% of the settings Maven uses to execute. All settings are inherited and overridden. All Properties are expanded to the value Maven uses. So whenever Maven doesn’t behave the way you expect it to, just enable this profile and it should help you find out, what’s going on. Some tests of the PLC4X project do require quite a bit of time to run. Therefore we decided to disable these for a normal build on developer machines. If you want to run them locally and not rely on them being run on the CI servers, enable the enable-all-checks profile. Compiling the library as explained here add the new version in the local Maven repository (i.e. usually under ~/.m2/repository on linux like systems), if you would like to use Gradle as Build Tool for your project you have just to use a local repository in your Gradle build.gradle file. Here there’s an example: repositories { mavenCentral() mavenLocal() } dependencies { implementation group: 'org.apache.plc4x', name: 'plc4j-api', version: '0.13.0-SNAPSHOT' implementation group: 'org.apache.plc4x', name: 'plc4j-driver-s7', version: '0.13.0-SNAPSHOT' implementation group: 'org.apache.plc4x', name: 'plc4j-connection-pool', version: '0.13.0-SNAPSHOT' }","title":"Building PLC4X","component":"plc4x","version":"pre-release","name":"building","url":"/plc4x/pre-release/developers/building.html","titles":[{"text":"Requirements","hash":"_requirements","id":1},{"text":"Using the Maven-Wrapper","hash":"_using_the_maven_wrapper","id":2},{"text":"Using Maven","hash":"_using_maven","id":3},{"text":"Building PLC4X with Maven","hash":"_building_plc4x_with_maven","id":4},{"text":"Building the PLC4X Website with Maven","hash":"_building_the_plc4x_website_with_maven","id":5},{"text":"Some special Maven profiles","hash":"_some_special_maven_profiles","id":6},{"text":"apache-release profile","hash":"_apache_release_profile","id":7},{"text":"debug-pom profile","hash":"_debug_pom_profile","id":8},{"text":"enable-all-checks profile","hash":"_enable_all_checks_profile","id":9},{"text":"Use the compiled library with Gradle","hash":"_use_the_compiled_library_with_gradle","id":10}]},"4":{"id":4,"text":"On this page we are listing options to attend talks and events around PLC4X. Date Location Type Event Title 18th June 2019 Erfurt (GER) Meetup IoT Thüringen Industrie & IoT: Die perfekte Verbindung mit Flexibus & Apache PLC4X 24th May 2019 Frankfurt (GER) Meetup IoT Hessen Industrial IoT goes Open Source: Apache PLC4X Talks & Party 3th April 2019 Cologne (GER) Conference Building IoT Apache PLC4X: Industry 4.0 done our way 8th March 2019 Solingen (GER) Conference Industrial IoT Day Apache PLC4X: Industry 4.0 done our way 21th February 2019 Aachen (GER) Meetup EURegJUG Maas-Rhine Episode IV - A New Hope: Industry 4.0 Done Our Way 15th February 2019 Nürtingen (GER) Meetup PLC4X Meetup Special Hackathon looking deeper into some new Protocols 15th November 2018 Düsseldorf (GER) Meetup RheinJUG Wie wir mit Apache PLC4X die Silos in der Automatisierungsindustrie aufbrechen 12th-13th November 2018 Berlin (GER) Conference 3. Fachkonferenz: Industrial Analytics & Big Data in der Industrie Kommunikation mit Industrieanlagen ohne Umbau- und Lizenzkosten 22th-24th October 2018 Edinburgh (GB) Conference Open-Source Summit Europe Revolutionizing the production industry with Apache PLC4X 24th-19th September 2018 Montreal (CAN) Conference ApacheCon NA 2018 Revolutionizing the Production Industry with Apache PLC4X (incubating) 20th September 2018 Nürtingen (GER) Meetup PLC4X Meetup First general committer meetup 13th-14th June 2018 Berlin (GER) Conference Apache EU Roadshow Revolutionizing the production industry with Apache PLC4X 4th June 2018 Cologne (GER) Conference Building IoT Industrial IoT und Edge Computing mit Apache PLC4X und Apache Edgent 5th April 2018 Hamburg (GER) Conference TechCamp Hamburg Revolutionizing Industrial IoT with Apache PLC4X 21th January 2018 Hamburg (GER) Conference Nortec Mehr für Weniger? Aber Sicher! 4th-5th May 2019 Brussels (BE) Hackathon EU FOSSA Apache Hackathon Co-creating the future of open source Looking forward to meeting you. If you’ve got or found any events or talks we might be missing, please inform us on dev@plc4x.apache.org. PLC4X Banner","title":"Conferences & Events","component":"plc4x","version":"pre-release","name":"conferences","url":"/plc4x/pre-release/developers/conferences.html","titles":[{"text":"Additional Material","hash":"_additional_material","id":1}]},"5":{"id":5,"text":"There are multiple forms in which you can become involved with the PLC4X project. These usually are, but are not limited to: Submitting Pull Requests Filing Bug-Reports Active communication on our mailing lists Promoting the project (articles, blog posts, talks at conferences) Documentation We are a very friendly bunch and don’t be afraid to step forward. We make use of conventional commits. As plc4x is a monolithic polyglot repository we usually define the scope as …(plc4[language shortcut here]/subcomponent) (e.g. a new feature in Bacnet in the Golang part would have a message of feat(plc4go/bacnet): cool new feature for…). The simplest way to submit code changes, is via a GitHub pull-request. In order to do this first create a GitHub account and sign into you account. After that’s done, please to to our GitHub site and create a so-called Fork. What happens now, is that GitHub creates a full copy of the PLC4X repo in your account. Only you can commit to this. Now ideally you check-out your cloned repository: git clone https://github.com/{your-user-id}/plc4x.git Now you have a copy of PLC4X on your computer and you can change whatever you want and as it’s your copy, you can even commit these changes without any danger of breaking things. As soon as you’re finished with your changes and want us to have a look, it’s time to create a so-called Pull-Request. You do that by going to your forked repository page on GitHub. Every forked repository has an additional button called \"New Pull Request\": If you click on this, we will receive a notification on your changes and can review them. We also can discuss your changes and have you perfect your pull request before we accept and merge it into PLC4X. As we are continuously working on PLC4X and you created a copy of our repo, this will become out-of-date pretty soon. In order get the changes we introduced in the official repo you have to tell git about that. You do this locally by adding a new so-called remote. Per default the remote you cloned from is called origin. Usually you will call the second remote upstream but in general you can call it whatever you like. Add the remote on the commandline (or your git gui of choice): git remote add upstream https://github.com/apache/plc4x.git If you list all your remotes, with the following command: git remote -v It should output something like this: origin https://github.com/{your-user-id}/plc4x.git (fetch) origin https://github.com/{your-user-id}/plc4x.git (push) upstream https://github.com/apache/plc4x.git (fetch) upstream https://github.com/apache/plc4x.git (push) If that’s so, you’re fine to continue, if not … well you could ask for assistance on our dev-list. In order to get all changes of our upstream-repository, just execute the following command: git pull upstream This will get all changed from upstream and merge them locally. In order to update your GitHub version, you have to push things back to origin. You can do this by executing the following command: git push (If no remote is provided, git will use origin per default) We use GitHub Issues as our Bug & Issue Tracker. Feel free to submit feature requests, bug reports, patches, comment on issues, … As our documentation and website are generated as a side-product of our build, contributing to this technically the same as contributing to the code. All our content is written in Asciidoctor and is located in src/site/asciidoc directories. For a reference of the Asciidoctor syntax please have a look at the Asciidoctor documentation. The PLC4X project uses the following branching model. The same model is used for a wide variety of other projects, so it should be pretty straight forward. release contains the latest released state. Development is performed on the develop branch. Features are developed in Feature-Branches with a prefix feature/ Each minor release has a corresponding release branch rel/0.13.0-SNAPSHOT A release branch is spawned from develop only Bugfix releases don’t have a dedicated release branch, they are just performed on the corresponding minor versions release branch","title":"Contributing","component":"plc4x","version":"pre-release","name":"contributing","url":"/plc4x/pre-release/developers/contributing.html","titles":[{"text":"Forms of contribution","hash":"_forms_of_contribution","id":1},{"text":"Commits","hash":"_commits","id":2},{"text":"Pull-Requests","hash":"_pull_requests","id":3},{"text":"Keeping your fork up to date","hash":"_keeping_your_fork_up_to_date","id":4},{"text":"Bug Reports","hash":"_bug_reports","id":5},{"text":"Documentation","hash":"_documentation","id":6},{"text":"Branching model","hash":"_branching_model","id":7}]},"6":{"id":6,"text":"This document describes the roles and responsibilities of the project, who may vote, how voting works, how conflicts are resolved, etc. The Apache Foundation FAQ and How-It-Works explain the operation and background of the foundation. Terms used are defined in the ASF glossary. Apache has a code of conduct that it expects its members to follow. Apache projects define a set of roles with associated rights and responsibilities. The PMC has many responsibilities including complying with ASF policies, reporting to the board, approving releases and adding new committers and PMC members. The chair ensures board reports are submitted and that the project’s roster is up to date. Different decisions require different forms of approval but community consensus is always the goal. Voting when needed should be open for at least 72 hours. Consensus Approval – Consensus approval requires 3 binding +1 votes and no -1 votes (vetoes). Majority Approval – requires at least 3 binding +1 votes more +1 votes than -1 votes. Lazy Consensus – consensus no objections (‘silence gives assent’). Action Who can vote Approval Where to vote Board approval required Code change Committer Lazy Consensus public dev or commit list Release PMC Majority Approval public dev list New committer PMC Consensus Approval private list New PMC member PMC Consensus Approval private list Yes 1) Existing committer removal PMC Consensus Approval private list Existing PMC removal PMC Consensus Approval private list Yes 2) Change chair PMC Consensus Approval private list Yes 3) Notice must be given to board. Except PMC member in question. Only the board can remove PMC members. Need to be approved by the board at the next board meeting.","title":"Decision Making","component":"plc4x","version":"pre-release","name":"decisions","url":"/plc4x/pre-release/developers/decisions.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Roles and Responsibilities","hash":"_roles_and_responsibilities","id":2},{"text":"Project Management Committee","hash":"_project_management_committee","id":3},{"text":"The Chair","hash":"_the_chair","id":4},{"text":"Decision Making","hash":"_decision_making","id":5}]},"7":{"id":7,"text":"This part of the Apache PLC4X dedicated to provide information to people wanting to build PLC4X and hopefully also start contributing to this awesome project. We have tried to make the PLC4X build experience as smooth as possible and have tried to reduce the number of required third party tools to an absolute minimum. The full PLC4X build however builds not only Java libraries, but also C++, Python and C# libraries as well as builds Docker images on Linux, Mac and Windows. As a start, you will basically need a Java VM of at least Java 11. Using the Maven-Wrapper you don’t even need a Maven installation. The build will automatically fetch the right version for you. As part of the build we have an initial build step that will do a prerequisite check. Depending on the activated modules, it will check if all preconditions are met and tell you what’s missing. For details please have a look at the Preparing your Computer page. We have a dedicated page on Building PLC4X. Please read this page on information about how to build Apache PLC4X. If you want to work on Apache PLC4X in order to fix things, add things and start contributing in general, please have a look at our Contributing page. It should contain all the information you need. The primary source for getting help definitely is our project mailing list dev@plc4x.apache.org. You can search previous content in our Mail Archive In order to post to the list you first need to subscribe. This can be done by sending an empty Email to dev-subscribe@plc4x.apache.org.","title":"Developer Section","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/developers/index.html","titles":[{"text":"Getting Started","hash":"_getting_started","id":1},{"text":"Building PLC4X","hash":"_building_plc4x","id":2},{"text":"Contributing","hash":"_contributing","id":3},{"text":"Getting Help","hash":"_getting_help","id":4}]},"8":{"id":8,"text":"In PLC4X we are using a tool called JQAssistant for enforcing quality assurance rules. JQAssistant can be thought of as a set of two components: A set of scanners that analyse a project and stores the gathered information in for of linked graphs in a Neo4j database. An engine that executes defined rules against the graph created during the scan phase of the build These rules can produce either reports and tables or they are used to enforce rules. If a pre-defined rule is violated the failed checks can be marked as warning or error that breaks the build. In contrast to using the maven-enforcer-plugin doing cross-domain checks is really simple as all information is available in one big graph. Currently the following scanners are active: CDI Common Common Test Core Analysis EJB3 GraphML JAX-RS JPA 2 JSON JUnit Java Java 9 Java EE 6 Maven 3 OSGi RDBMS TestNG Tycho XML YAML These rules that are automatically checked during the build are defined in src/jjqassistant. If defined in a reactor project, the rules apply to all modules of that (sub-)reactor. So if they are defined in the root module of the project, it applies to all modules. TODO: Finish this \"little detail\" … The scan and analysis is automatically performed during a normal Maven build. In order to do ad-hoc queries against the project or develop new rules, the Web-UI is very helpful. To start the Web-UI, all you need to do, is run the following command (after a build): mvn jqassistant:server This will start a Neo4j server with web console. [INFO] --- jqassistant-maven-plugin:1.3.0:server (default-cli) @ plclogger --- [INFO] Connecting to store at 'file:/Users/christofer.dutz/Projects/Apache/PLC4X/target/jqassistant/store/' 2018-04-05 19:11:14.369+0200 INFO [o.n.s.CommunityNeoServer] No SSL certificate found, generating a self-signed certificate.. 2018-04-05 19:11:14.683+0200 INFO [o.n.s.CommunityNeoServer] Starting HTTP on port 7474 (8 threads available) 2018-04-05 19:11:14.859+0200 INFO [o.n.s.w.Jetty9WebServer] Mounting static content at /webadmin 2018-04-05 19:11:14.892+0200 INFO [o.n.s.w.Jetty9WebServer] Mounting static content at /browser Apr 05, 2018 7:11:15 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate INFORMATION: Initiating Jersey application, version 'Jersey: 1.19 02/11/2015 03:25 AM' Apr 05, 2018 7:11:15 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate INFORMATION: Initiating Jersey application, version 'Jersey: 1.19 02/11/2015 03:25 AM' Apr 05, 2018 7:11:15 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate INFORMATION: Initiating Jersey application, version 'Jersey: 1.19 02/11/2015 03:25 AM' 2018-04-05 19:11:15.396+0200 INFO [o.n.s.CommunityNeoServer] Remote interface ready and available at http://localhost:7474/ [INFO] Running server for module org.apache.plc4x:plc4x-parent:0.0.1-SNAPSHOT [INFO] Press to finish. So when visiting the anounced url with a browser, you can use the pretty useful neo4j web console. IntelliJ comes with some interesting Neo4J support. Unfortunately this only supports Neo4j 3. Unfortunately the process of enabling this toolset is a little less comfortable than the Web-UI version. Even if JQAssistant uses Neo4j 2 per default, we can force it to use Neo4j 3 by providing an additional commandline parameter. mvn -Djqassistant.neo4jVersion=3 clean install JQAssistant uses Neo4j 3 and the resulting data directory is then in Neo4j 3 format. In this case the server has to be started with the same parameter: mvn -Djqassistant.neo4jVersion=3 jqassistant:server As soon as the server is started, we can connect from the IntelliJ plugin. Note: The connection settings also contain a username and a password. It appears that this can simply be left empty of can contain random values. After creating the connection, the Graph Neo4j view should list the new connection. You can now use this to perform queries","title":"Using JQAssistant","component":"plc4x","version":"pre-release","name":"jqassistant","url":"/plc4x/pre-release/developers/jqassistant.html","titles":[{"text":"Defining JQAssistant rules","hash":"_defining_jqassistant_rules","id":1},{"text":"Using the Web-UI","hash":"_using_the_web_ui","id":2},{"text":"Using IntelliJ Idea","hash":"_using_intellij_idea","id":3}]},"9":{"id":9,"text":"This is an assessment of the PLC4X project’s maturity, meant to help inform the decision (of the mentors, community, Incubator PMC and ASF Board of Directors) to graduate it as a top-level Apache project. It is based on the ASF project maturity model at https://community.apache.org/apache-way/apache-project-maturity-model.html Community members are encouraged to contribute to this page and comment on it, the following table summarizes project’s self-assessment against the Apache Maturity Model. ID Description Status Code CD10 The project produces Open Source software, for distribution to the public at no charge. The project source code is licensed under the Apache License, version 2.0. CD20 The project’s code is easily discoverable and publicly accessible. Our sourcecode is available at Apache GitBox and GitHub and linked to from our website CD30 The code can be built in a reproducible way using widely available standard tools. our Maven build has been tested on Linux, Mac-OS and Windows and build description is available on our website CD40 The full history of the project’s code is available via a source code control system, in a way that allows any released version to be recreated. The entire commit history is available from the beginning. CD50 The provenance of each line of code is established via the source code control system, in a reliable way based on strong authentication of the committer. When third-party contributions are committed, commit messages provide reliable information about the code provenance. The project uses the git repository, managed by Apache Infra, ensuring provenance of each line of code to a committer, each line committed before entering incubation was equally configured. Licenses and Copyright LC10 The code is released under the Apache License, version 2.0. Both the source distribution as well as the convenience binary artifacts clearly declare that they are licensed under the Apache 2.0 license LC20 Libraries that are mandatory dependencies of the project’s code do not create more restrictions than the Apache License does. The list of mandatory dependencies have been reviewed to contain approved licenses only. LC30 The libraries mentioned in LC20 are available as Open Source software. All mandatory dependencies are available as open source software. LC40 Committers are bound by an Individual Contributor Agreement (the \"Apache iCLA\") that defines which code they are allowed to commit and how they need to identify code that is not their own. The project uses a repository managed by Apache Gitbox — write access requires an Apache account, which requires an ICLA on file. LC50 The copyright ownership of everything that the project produces is clearly defined and documented. All files in the source repository have appropriate headers which is enforced by tooling included in the build. ICLAs from all initial committers have been documented. CCLAs from all companies involved have been documented. SGA is on file for the initial contribution. Releases RE10 Releases consist of source code, distributed using standard and open archive formats that are expected to stay readable in the long term. Current source releases are distributed via dist.apache.org and Older source releases are available from archive.apache.org. Both are linked from the website. RE20 Releases are approved by the project’s PMC (see CS10), in order to make them an act of the Foundation. All incubating releases have been unanimously approved by the PLC4X community and the Incubator, all with at least 3 (P)PMC votes and more +1 than -1. RE30 Releases are signed and/or distributed along with digests that can be reliably used to validate the downloaded archives. All releases are signed, and the KEYS file is provided on dist.apache.org RE40 Convenience binaries can be distributed alongside source code but they are not Apache Releases — they are just a convenience provided with no guarantee. Convenience binaries are distributed via Maven Central Repository only. Currently due to the platform-dependency of C++ libraries, these are not distributed currently. RE50 The release process is documented and repeatable to the extent that someone new to the project is able to independently generate the complete set of artifacts required for a release. We have a guide for release managers, that has been tested by multiple release managers available on our website. Quality QU10 The project is open and honest about the quality of its code. Various levels of quality and maturity for various modules are natural and acceptable as long as they are clearly communicated. All issues are documented in our GitHub Issues instance, which is our primary bug and issue tracker. QU20 The project puts a very high priority on producing secure software. even if we haven’t received any security issues targeted at PLC4X yet, we proactively monitor our dependencies and if reported would treat them with the highest priority, according to the CVE/Security Advisory procedure. QU30 The project provides a well-documented, secure and private channel to report security issues, along with a documented way of responding to them. We are using Apaches default way to submit security related information, which is described on our website QU40 The project puts a high priority on backwards compatibility and aims to document any incompatible changes and provide tools and documentation to help users transition to new features. We try to keep everything as backward compatible as possible. If we are forced to introduce incompatible changes, these is documented in a Incompatible changes section as part of our release notes. QU50 The project strives to respond to documented bug reports in a timely manner. Bug reports are treated with priority and are automatically posted to our developer mailing list dev@plc4x.apache.org\" class=\"bare\">https://lists.apache.org/list.html?dev@plc4x.apache.org so they are prominently recognised. Community CO10 The project has a well-known homepage that points to all the information required to operate according to this maturity model. The project website has a description of the project with technical details, how to contribute, team. CO20 The community welcomes contributions from anyone who acts in good faith and in a respectful manner and adds value to the project. So far we have recognized any form of contribution and every contributor with the desire to become part of the team has been invited to join. CO30 Contributions include not only source code, but also documentation, constructive bug reports, constructive discussions, marketing and generally anything that adds value to the project. It’s part of the contribution guide and the current committers are really keen to welcome contributions. CO40 The community is meritocratic and over time aims to give more rights and responsibilities to contributors who add value to the project. So far the community has elected 4 committers, all of them also being added to the PPMC. CO50 The way in which contributors can be granted more rights such as commit access or decision power is clearly documented and is the same for all contributors. The criteria is documented in the contribution guide. CO60 The community operates based on consensus of its members (see CS10) who have decision power. Dictators, benevolent or not, are not welcome in Apache projects. The project works to build consensus. All votes have been unanimous so far. CO70 The project strives to answer user questions in a timely manner. Responses to reported issues or asked questions typically are handled by the community withing a matter of a few hours (Responses being faster during typical European time-zone business-hours). Consensus Building CS10 The project maintains a public list of its contributors who have decision power — the project’s PMC (Project Management Committee) consists of those contributors. All members of the team have been added on team page. CS20 Decisions are made by consensus among PMC members 9 and are documented on the project’s main communications channel. Community opinions are taken into account but the PMC has the final word if needed. All decisions are made on one of our mailing lists. Every decision discussed off-list has been taken back to the list for final discussion and we’ll keep on doing that. CS30 Documented voting rules are used to build consensus when discussion is not sufficient. We have documented our decision-making rule on our website. CS40 In Apache projects, vetoes are only valid for code commits and are justified by a technical explanation, as per the Apache voting rules defined in CS30. This part actively contradicts the voting rules of the Apache Incubator. This project follows the voting rules of the Apache Incubator which we documented on our website. CS50 All \"important\" discussions happen asynchronously in written form on the project’s main communications channel. Offline, face-to-face or private discussions 11 that affect the project are also documented on that channel. As mentioned in CS20 it is impossible to prevent off-list discussions when meeting in person. But we have always handled things in a way that we always write up summaries of important discussions and post them to the mailing lists. Independence IN10 The project is independent of any corporate or organizational influence. The group of active committers and PPMCs consists of members of more than independent 4 companies. IN20 Contributors act as themselves as opposed to representatives of a corporation or organization. While there are several cases where committers and PPMC members utilize corporate infrastructure or these companies, no case has been found where any of these committers and PPMCs have represented corporate interests.","title":"Apache Maturity Model Assessment for PLC4X","component":"plc4x","version":"pre-release","name":"maturity","url":"/plc4x/pre-release/developers/maturity.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Maturity model assessment","hash":"_maturity_model_assessment","id":2}]},"10":{"id":10,"text":"Sorted by first name: Name Bio Ben Hutcheson Software Developer, Control Systems Engineer Isar Aerospace Altötting, Germany Experienced as an Electrical Engineer, Control Systems Engineer and Software Developer. Enjoys developing systems which overlap in all three of these fields. César García CEOS Automatización, C.A. Pto. La Cruz, Anzoátegui, Venezuela Electrical engineer, dedicated to process automation and control. Specialized in Siemens S5, S7, PCS7 architecture for the Oil&Gas industry and Braumat for the food and beverage industry. Applying open source technologies to create added value for users, such as Kannel, Apache Http Server, Apache Karaf, Apache Hop, Apache IoTDB and the meeting point of all of them Apache PLC4X where I have been able to collaborate as a PMC. Christofer Dutz IoT Consultant Timecho Europe GmbH Frankfurt Likes to swim outside the mainstream. He is really passionate about walking new paths. His first email to an Apache list on file was to the Cocoon project back in the year 2000. His direct involvement started in 2012 when he was elected to become an Apache Flex committer. Since then he became involved with a lot of Apache-internal groups and committees and was elected to become a Member of the Apache Software Foundation in 2015 and recently has taken up the role of mentoring several IoT podlings in the Apache Incubator. Julian Feinauer Founder / CEO pragmatic minds GmbH / pragmatic industries GmbH Kirchheim unter Teck Has studied mathematics in Stuttgart. Besides his interest in open source software and big data, he focuses on the analysis of time series and traces from testing or manufacturing. PLC4X was the first project where he was offered a position as (P)PMC but he is also engaged in other Apache projects like Edgent and IotDB. Łukasz Dywicki Coding CEO / Consultant ConnectorIO sp. z o.o. / Code-House (self employed) Warsaw He started working with Apache Software Foundation projects in 2007 - at the time when the first incubation version of Apache CXF was out. Since then he took active part and contributed to Apache projects related to software integration such as Apache Karaf, Apache ActiveMQ and Apache Camel. He is an Open Source and OSGi enthusiast, passionate about connecting things, physical ones too. Lukas Ott Domain Architect Pharmaceutical Industry Copenhagen He started working with Apache Software Foundation projects in 2013 - at that time in the context of Semantic Technologies with an archived project called Apache Stanbol. Since then he took an interested in several different Apache projects like Apache ActiveMQ, Apache Spark, Apache Storm, Apache Cassandra. He is an Open Source and Pythonista, passionate about connecting people, processes and machines. Main focus is community over code and linking different communities together Matthias Milan Strljic Research assistant ISW; University of Stuttgart Stuttgart Research assistant and software engineer at the Institute for control engineering of machine tools and manufacturing units (ISW) of the university of stuttgart, research in the fields of automation technology + smart services + cloud manufacturing, my favourites are woodwork + knife sharpening + cigars, member of the PMC of PLC4X Sebastian Rühl Software Developer Mapped Frankfurt Software engineer, member of the PMC of PLC4X Tim Mitsch Engineer pragmatic industries GmbH Nürtingen Electrical engineer (HW, SW and interface-stuff) from passion and very new to Apache projects. The more he is involved in open-source the more he likes it, focusing on PLC4X at first.","title":"Team","component":"plc4x","version":"pre-release","name":"team","url":"/plc4x/pre-release/developers/team.html","titles":[]},"11":{"id":11,"text":"In order to be able to work on PLC4X some tools have kindly been made available to Apache PLC4X committers. Jetbrains offers Licenses to IntelliJ to Apache Committers for free EJ-Technologies have also kindly provided us with JProfiler licenses in order to track down some concurrency and memory usage problems. Thank you to all.","title":"Tools","component":"plc4x","version":"pre-release","name":"tools","url":"/plc4x/pre-release/developers/tools.html","titles":[]},"12":{"id":12,"text":"The companies in the following list are actively using Apache PLC4X. Name Market Description codecentric AG IT Consulting We develop software that solves real problems - and PLC4X solves the problem of IoT connectivity in a highly performant and open source way ConnectorIO sp. z o.o. IoT / Software / Cloud We developed an open source gateway runtime and compatible cloud service to manage installations and collected information. We utilize PLC4X to gain access to data provided by industrial hardware. IndustryFusion IIoT / Industry 4.0 In the End-2-End Industry 4.0 solution IndustryFusion we use PLC4X for brownfield-connectivity, i.e. the connectivity to existing machines on the shop floor. ISW University of Stuttgart IIoT / Industry 4.0 / Research We use PLC4X for our research projects because of its great potential for retrofitting scenarios, the simplicity of the API, an active community for broad platform support and the open source flexibility. Lebbing automation & drives GmbH https://in2lutions.com/in2lutions/[In2Lutions] Automation / Drives / Industry 4.0 We used PLC4X to developed a solution to synchronize data between PLCs and customers systems. Our Solution is used for new products as well as for industry 4.0 upgrades to older machines. PIETRORIMOLDI&C s.r.l. IIoT / Analytics We started a project which deals with long term data analysis; the data are gathered from machines controlled in real time by PLC. Failure prediction and behavioral working condition monitoring are the main goals. PLC4x library is a fundamental part of the process. pragmatic industries GmbH (I)IoT / Industry 4.0 PLC4X is an important part of our platform Digital Cockpit which we develop in-house. pragmatic minds GmbH Big Data / Analytics We use PLC4X to collect data from different types of PLCs as preliminary step for data analytics and visualization. Record Evolution GmbH Iot / Industry 4.0 / Data Science We developed a platform for IoT development and Data Science. We are using PLC4X to enable IoT devices in our platform to extract data from PLCs of different vendors, using different protocols. The people working on Apache PLC4X, and the companies behind them have put an enormous amount of effort into creating this great tool. The problem some of them are facing, is that they are usually not allowed to mention which companies are using PLC4X. However being able to name references is most vital nowdays in gaining trust. So if you work for a company which is using Apache PLC4X, one way you can help the project is by admitting you are using it. This might be only very little active contribution on your side, but for the project this is of extremely high value. On this page we are maintaining a list of companies openly communicating that they are using Apache PLC4X. If your company is using Apache PLC4X and you would like to give back to the community, please create a Pull-Request on github or post an email to dev@plc4x.apache.org and give us the permission to list your company.","title":"Companies using Apache PLC4X","component":"plc4x","version":"pre-release","name":"adopters","url":"/plc4x/pre-release/users/adopters.html","titles":[]},"13":{"id":13,"text":"Apache Kafka, KSQL and Apache PLC4X for IIoT Data Integration and Processing Edge Computing und Industrial IoT mit Apache Edgent und Apache PLC4X Advanced: Exposing a PLC as JSON Web Services (using PLC4X) High Security Iiot Communication With Apache Plc4X, Apache Asia Con, August 2021 Apache Plc4X For Can Bus And Canopen, Apache Asia Con, August 2021 Eclipse IoT Meetup, December 2020 Librecon - Open Industry 4.0, 2020 Analyzing IIoT data with PLC4X and StreamPipes Apache PLC4X or: How I Learned to Stop Worrying and Love the Industrial IoT \"Hands on\" - Reading out Siemens S7 with Apache PLC4X \"Hands On\": Siemens S7 auslesen mit PLC4X (GERMAN) Mittelstand meets Open Source - Einführung in das Industrial IoT (IIoT) (GERMAN) Apache Kafka, KSQL and Apache PLC4X for IIoT Data Integration and Processing Episode IV - A New Hope: Industry 4.0 done our way From an idea to an Apache TLP Wie wir mit Apache PLC4X die Silos in der Automatisierungsindustrie aufbechen Apache Kafka, KSQL and Apache PLC4X for IIoT Data Integration and Processing Episode iv a new hope - Industry 4.0 done our way From the Chip to the Cloud with Apache Software Digitizing your factory the open source way From an idea to an Apache TLP Building scada systems with apache software State of the Civiet, June 2024","title":"Blogs, Videos and Slides on Apache PLC4X","component":"plc4x","version":"pre-release","name":"blogs-videos-and-slides","url":"/plc4x/pre-release/users/blogs-videos-and-slides.html","titles":[{"text":"Blog posts","hash":"_blog_posts","id":1},{"text":"Videos & Webinars","hash":"_videos_webinars","id":2},{"text":"Slides","hash":"_slides","id":3}]},"14":{"id":14,"text":"As every Apache project, so is Apache PLC4X generally available and usable by anyone free of charge. Also does the Apache PLC4X Community offer free support on the official project Mailinglist. This support is however done voluntarily by the community, so there are no service-level-agreements, guaranteed reaction times or guarantee that an issue will be addressed or solved. If you or your business has higher demands on guaranteed availability and execution of support requests, the following individuals and companies have commercial support offerings. The information provided here was provided by the entities named, and is not verified (except the Involvement Level), updated or endorsed by the Apache Software Foundation or the Apache PLC4X project. Name Description Contact Person(s) Contact Email(s) Contact Phone(s) Involvement Level Assso - Accelerated Solutions GmbH consulting, workshops, individual software development, protocol/driver development Christofer Dutz christofer.dutz@accso.de PMC Member ConnectorIO sp. z o.o. workshops, individual software development Łukasz Dywicki lukasz@connectorio.com PMC Member Timecho Europe GmbH consulting, workshops, individual software development, protocol/driver development, data-storage solutions Pengchen Zheng pengcheng.zheng@timecho.com Anyone who provides Apache PLC4X related services can be added to this list (e.g. training, consulting, custom software development, support, installation or related services). Please create a Pull-Request on GitHub as described here. The resource requiring editing can be found here When updating the table, please keep the alphabetical sort by company name. We will then check if the entry fulfills the requirements and accept the changes as soon as all of these have been addressed.","title":"Commercial support offerings for Apache PLC4X","component":"plc4x","version":"pre-release","name":"commercial-support","url":"/plc4x/pre-release/users/commercial-support.html","titles":[{"text":"Who can be added to this list?","hash":"_who_can_be_added_to_this_list","id":1},{"text":"How can I get added to this list?","hash":"_how_can_i_get_added_to_this_list","id":2}]},"15":{"id":15,"text":"Be sure to verify your downloads by these procedures using these KEYS for any Apache release. This release was mainly a release containing many bugfixes. We literally halved the number of open issues. A second major topic would have been another API streamlining in preparation to aiming for the big 1.0.0 release. The API was extended by additional features, that now allow tools to automatically provide support for tool assist when connecting to devices. Now additional information such as: - Which transports does a given driver support? - Which is the default transport for a given driver? - Which configuration-options does a driver have? - What types are these configuration options? - What are the default-values these configuration options have? - Which of these configuration options are required? - The same set of information is also available for the transports a driver is using. API: Made several bits of information available via the API allowing tools to provide more content assist when dealing with PLC4X connections. S7: The S7 driver now supports reading of STRING and WSTRING data-types without providing a maximum length. Build: Worked on making PLC4X provide reproducible builds. Added \"Ping\" functionality to: ADS, EIP, KNX, Mock, Modbus and Simulated drivers. The OPC-UA Java driver now support certificate-based authentication and encryption. Java 8 is no longer officially supported and Java 11 is the new base-line. Renamed the PlcDriverManager method listDrivers to getProtocolCodes Renamed the PlcDriverMetadata method canDiscover to isDiscoverySupported Renamed the PlcConnectionMetadata methods canRead, canWrite canSubscribe and canBrowse to isReadSupported, isWriteSupported, isSubscribeSupported and isBrowseSupported The configuration syntax for configuring transport-related config options in the connection-string was updated to be now prefixed with the transport name the option belongs to. S7: Several bugs and issues regarding supporting various duration, date and time data-types. S7: Implemented the missing 64bit (L-) types. KNX: Fixed an issue with decoding 16 bit floating point numbers. NiFi-Integration: The NiFi integration module was greatly improved. Core: Fixed several leaks of open threads. The APIs have been streamlined in a preparation for a hopefully soon 1.0.0 release. Many drivers have been re-implemented with much more features. Integration modules have been improved. Implemented a PLC4X-Server and PLC4X-Driver that allows using the server as a proxy for communicating with PLCs. The Modbus driver is now also available in the variants: \"modbus-rtu\" and \"modbus-ascii\" (Both using Serial communication, which however can be tunneled through a \"tcp\" and \"udp\" transport) The KNX driver in Java now supports reading \"knxproj\" files exported from the new ETS version 6. The name of the Modbus TCP driver was changed from \"modbus\" to \"modbus-tcp\". Removed the Apache Edgent (incubating) integration and examples related, as Edgent is abandoned and there were CVEs reported, which will not be fixed. We have replaced the BitString types with BYTE, WORD, DWORD, and LWORD which generally match their unsigned integer counterparts. So we are no longer returning lists of boolean values for any of these types. A lot of the work in this version went into refactoring and cleaning up our code generation. The code generation itself is now a lot cleaner and simpler as well as the code generated for Java. We also added a number of new field-types to allow implementing more sophisticated protocols. PLC4C now should also support all of the constructs mspec has to offer. This is a bugfix release aiming at directly fixing CVE-2021-43083 as well as updating the dependency to Log4J 2.14.0 which was affected by CVE-2021-44228 Please note that CVE-2021-43083 only affects the PLC4C part of PLC4X. CVE-2021-43083 Apache PLC4X 0.9.0 Buffer overflow in PLC4C via crafted server response This is an ordinary PLC4X release, containing changes that accumulated over time. It doesn’t have an explicit focus on a particular topic. The OPC UA driver has been replaced with a native driver. Previously Eclipse Milo was being used. Permit customized package names for code generation Added an initial draft of a Discover and Browse API to PLC4J PLC4Go now supports many more drivers PLC4Go received a huge internal refactoring and cleanup Major cleanup of PLC4C S7 Driver now supports event and alarm handling on some S7 models PLC4X-200 OPC-UA Driver not connecting if params string is not provided PLC4X-201 OPC-UA PlcList underlying type not compatible with Eclipse Milo PLC4X-202 OPC-UA Driver cannot write Unsigned Types PLC4X-276 [S7] The most of the supported types don’t work correctly PLC4X-278 Double Reading Error PLC4X-279 nioEventLoopGroup thread proliferation PLC4X-280 ADS route request swapped positions of route name and address PLC4X-291 DefaultPlcSubscriptionField cannot be cast to class OpcuaField PLC4X-298 [S7] When writing REAL values the Write operation fails with an internal error PLC4X-299 Modbus - Kafka Connect Configuration PLC4X-312 CAN NOT READ STRING FROM S7 PLC PLC4X-314 CAN NOT WRITING MANY DATA TO S7 ONE TIME This is an ordinary PLC4X release, containing changes that accumulated over time. It doesn’t have an explicit focus on a particular topic. The KNXnet/IP Driver now supports writing of values. The Modbus driver now supports more common notations of Modbus addresses using a pure-numeric notation. The ADS, KNX, Modbus, S7 and simulated drivers have been updated to support the IEC 61131-3 data-types. We are now including PLC4Go as PLC4X implementation in the programming language Go(lang) Integration with the Milo OPC UA Server is now available. Kafka Connect workers have been updated source and sink connectors are now included. The syntax of the S7 addresses changed slightly allowing to provide a string length. Without this, a STRING datatype will read 254 characters, by adding the size in round brackets to the type name will use the specified number. Examples: Read one String which is max 10 chars long: %DB2:30:STRING(10) Read an array of 3 Strings where each is max 10 chars long: %DB2:30:STRING(10)[3] The PLCValue types have been refactored to align with the types defined in IEC 61131-3 (https://en.wikipedia.org/wiki/IEC_61131-3) directly using the older Java types (PlcBoolean) is no longer possible. A lot of testing was done regarding the IEC 61131-3 data-types. This resulted in numerous bugfixes in many protocols. PLC4X-132 [S7] Communication to S7 PLC dies in some situations PLC4X-206 When writing short values exceptions are thrown while preparing the write request. PLC4X-207 No registered handler found for message TPKTPacket[], using default decode method - Communication with S7 and Modbus device hangs PLC4X-209 [S7] When writing INT and DINT values the Write operation fails with an internal error PLC4X-210 [KNX] When running a KNX Tunneling Subscription for a longer time there are packets that kill the connection PLC4X-211 PlcValues seem to always return \"true\" on the isXYZ\" checks. PLC4X-212 When writing multiple values in one request the item status is not correctly set PLC4X-213 [Modbus] The Modbus driver doesn’t handle error responses gracefully PLC4X-214 [Modbus] Holding register addresses have an offset of 1 (Not reading the correct address) PLC4X-215 Drivers using the BaseOptimizer (SingleFieldOptimizer) don’t handle error responses gracefully PLC4X-218 [Scraper] After stopping the scraper still the statistics are logged and the application doesn’t terminate PLC4X-239 Read DTL (Date and Time) PLC4X-240 Protocol error in reading string PLC4X-246 S7 driver hangs on read PLC4X-245 [Modbus] Apache NiFi processor throws java.io.IOException after a while PLC4X-255 Kafka Connector Source Task doesn’t block within poll() resulting in high CPU usage. PLC4X-261 Pooled connection manager returns a connection that isn’t connected in some situations. PLC4X-272 When splitting up large requests, too big sub-requests are generated (S7) PLC4X-256 ReadBuffer truncate last byte of even small payloads PLC4X-262 Error in reading Array PLC4X-270 Ads driver does not accept double-digit array indexes This version is the first after a major refactoring of the driver core. All previous driver versions are now considered deprecated and have been replaced by versions using the new driver structure and generated driver codebase. Drivers now support structured types using PlcValues The EIP (EtherNet/IP) driver no longer requires an external library and is implemented fully in the PLC4X project The Modbus driver no longer requires an external library and is implemented fully in the PLC4X project The new S7 Driver supports writing multiple entries in one request (The API allowed this from the beginning now not every item is wrapped in a single request. It should bring significant performance gains when writing multiple vlaues) S7 Driver now supports String datatypes. OSGi : Implementation of Drivers/Transports as OSGi services to be able to use them in an OSGi container. New Firmata protocol driver Due to the refactoring of the driver core there might be issues running drivers built against older core versions. This version doesn’t provide a Beckhoff AMS/ADS driver as this driver is still being ported to the new mspec format. All drivers connection strings now follow the same pattern: {protocol-code:(transport-code:)?//{transport-config}(?{params})? Please check the drivers documentation on our website: https://plc4x.apache.org/users/protocols/s7.html The karaf-feature modules are removed as the drivers now all provide both a feature.xml as well as a kar bundled archive PLC4X-174 UDP Transport does not accept ports containing 0 PLC4X-134 S7 is terminating the connection during handshake PLC4X-192 Support for conversion of complex connection string parameters This is the last release of PLC4X with the \"handwritten\" drivers. This Minor release will thus receive updates and fixes until most users have switched to 0.7 and above (with generated drivers). If you are using the S7 Driver you should update to this Version as the critical (memory leak) bug PLC4X-163 is fixed. PLC4X-168 A shorter S7 Field Syntax is Introduced. This release contains no further features and mostly stabilization. Moved the C++, C# and Python drivers into the sandbox Fixed Promise Chain for InternalPlcWriteRequest PLC4X-45 Add float support to Modbus Protocol PLC4X-164 Fix wrong NOT FOUND exception in OPC UA Driver PLC4X-166 Fixed Download Page PLC4X-163 Fixed Netty ByteBuf Leaks for S7 Driver PLC4X-158 Added Warning if no Pooled Driver is used for Scraper This is the first release containing our new generated drivers (AB-ETH) Implemented a new Apache Kafka Connect integration module Implemented a new Apache NiFi integration module Implemented a new Logstash integration module Implemented a driver for the AB-ETH protocol Implemented Apache Karaf features for S7 OSGI drivers PLC4X-121 Develop Code Generation to allow Generated Drivers in multiple Languages Sandbox (Beta-Features) - Implemented a new BACnet/IP passive mode driver - Implemented a new Serial DF1 driver PLC4X-104 S7 Driver Datatype TIME_OF_DAY causes ArrayOutOfBoundException PLC4X-134 S7 is terminating the connection during handshake PLC4X-139 PLC4X leaks sockets in case of connection problems PLC4X-141 String with real length of greater 127 throw an exception PLC4X-144 When requesting invalid addresses, the DefaultS7MessageProcessor produces errors This is the first release of Apache PLC4X as top-level project. The PlcConnection now supports a ping method to allow checking if an existing connection is still alive. Support of the OPC-UA protocol with the opc-ua-driver. Other Languages Support: — Added first versions of a C# .Net PLC4X API (plc4net) — Added first versions of a Python PLC4X API (plc4py) Added an Interop server which allows to relay requests from other languages to a Java Server ElasticSearch example was updated to use ElasticSearch 7.0.1, this might cause problems with older Kibana versions. No new features No incompatible changes. The S7 driver didn’t correctly handle \"fill-bytes\" in multi-item read-responses and multi-item write-requests Fixed NPE when reading odd-length array of one-byte base types Renamed flags \"F\" to Siemens Standard \"M\" (Marker) Fixed a bug in the DefaultS7MessageProcessor which didn’t correctly merge together split up items Object PLC Mapping (OPM) now has a Alias Registry to allow variable substitution at runtime and write support New module plc-scraper for applications that have to scrape a lot of sps fields with high frequency New integration apache-karaf to enable plc4j in a karaf runtime environment The 'plc4j-core' module has been merged into 'plc4j-api'. So there is no 'plc4j-core' module anymore. Just remove that dependency. The driver artifact names have changed so if you were using a plc4j-protocol-{name} you now need to change this to plc4j-driver-{name} Fixing dependency to the wrap url-handler When receiving responses with more than 512 byte, the IsoOnTcp protocol doesn’t work When the last item in a request is a DINT, the DefaultS7MessageProcessor dies Write operations seem to fail Fixed a Bug where S7 was not able to read arrays. Changed API: instead of passing request object to read({read-request}), write({write-request}) or subscribe({subscribe-request}) methods now the execute() method is called on the request itself New Connection Pool component New OPM (Object PLC Mapping) component (JPA for PLCs) Bug fixes","title":"Download","component":"plc4x","version":"pre-release","name":"download","url":"/plc4x/pre-release/users/download.html","titles":[{"text":"Current Releases","hash":"_current_releases","id":1},{"text":"0.12.0 Official source release [ SHA512 ] [ ASC ]","hash":"_0_12_0_official_source_release_sha512_asc","id":2},{"text":"New Features","hash":"_new_features","id":3},{"text":"Incompatible changes","hash":"_incompatible_changes","id":4},{"text":"Bug Fixes","hash":"_bug_fixes","id":5},{"text":"Previous Releases","hash":"_previous_releases","id":6},{"text":"0.11.0 Official source release [ SHA512 ] [ ASC ]","hash":"_0_11_0_official_source_release_sha512_asc","id":7},{"text":"New Features","hash":"_new_features_2","id":8},{"text":"Bug Fixes","hash":"_bug_fixes_2","id":9},{"text":"0.10.0 Official source release [ SHA512 ] [ ASC ]","hash":"_0_10_0_official_source_release_sha512_asc","id":10},{"text":"0.9.1 Official source release [ SHA512 ] [ ASC ]","hash":"_0_9_1_official_source_release_sha512_asc","id":11},{"text":"Bug Fixes","hash":"_bug_fixes_3","id":12},{"text":"0.9.0 Official source release [ SHA512 ] [ ASC ]","hash":"release-0_9_0","id":13},{"text":"New Features","hash":"_new_features_3","id":14},{"text":"Incompatible changes","hash":"_incompatible_changes_2","id":15},{"text":"Bug Fixes","hash":"_bug_fixes_4","id":16},{"text":"0.8.0 Official source release [ SHA512 ] [ ASC ]","hash":"release-0_8_0","id":17},{"text":"New Features","hash":"_new_features_4","id":18},{"text":"Incompatible changes","hash":"_incompatible_changes_3","id":19},{"text":"Bug Fixes","hash":"_bug_fixes_5","id":20},{"text":"0.7.0 Official source release [ SHA512 ] [ ASC ]","hash":"release-0_7_0","id":21},{"text":"New Features","hash":"_new_features_5","id":22},{"text":"Incompatible changes","hash":"_incompatible_changes_4","id":23},{"text":"Bug Fixes","hash":"_bug_fixes_6","id":24},{"text":"0.6.0 Official source release [ SHA512 ] [ ASC ]","hash":"release-0_6_0","id":25},{"text":"New Features","hash":"_new_features_6","id":26},{"text":"Incompatible changes","hash":"_incompatible_changes_5","id":27},{"text":"Bug Fixes","hash":"_bug_fixes_7","id":28},{"text":"0.5.0 Official source release [ SHA512 ] [ ASC ]","hash":"release-0_5_0","id":29},{"text":"New Features","hash":"_new_features_7","id":30},{"text":"Incompatible changes","hash":"_incompatible_changes_6","id":31},{"text":"Bug Fixes","hash":"_bug_fixes_8","id":32},{"text":"0.4.0 Official source release [ SHA512 ] [ ASC ]","hash":"release-0_4_0","id":33},{"text":"New Features","hash":"_new_features_8","id":34},{"text":"Incompatible changes","hash":"_incompatible_changes_7","id":35},{"text":"Bug Fixes","hash":"_bug_fixes_9","id":36},{"text":"Incubating Releases","hash":"_incubating_releases","id":37},{"text":"0.3.1 (incubating) Official source release [ SHA512 ] [ ASC ]","hash":"_0_3_1_incubating_official_source_release_sha512_asc","id":38},{"text":"New Features","hash":"_new_features_9","id":39},{"text":"Incompatible changes","hash":"_incompatible_changes_8","id":40},{"text":"Bug Fixes","hash":"_bug_fixes_10","id":41},{"text":"0.3.0 (incubating) Official source release [ SHA512 ] [ ASC ]","hash":"release-0_3_0","id":42},{"text":"New Features","hash":"_new_features_10","id":43},{"text":"Incompatible changes","hash":"_incompatible_changes_9","id":44},{"text":"Bug Fixes","hash":"_bug_fixes_11","id":45},{"text":"0.2.0 (incubating) Official source release [ SHA512 ] [ ASC ]","hash":"release-0_2_0","id":46},{"text":"Changes:","hash":"_changes","id":47},{"text":"0.1.0 (incubating) Official source release [ SHA512 ] [ ASC ]","hash":"release-0_1_0","id":48}]},"16":{"id":16,"text":"This part of the PLC4X website is dedicated to people wanting to use Apache PLC4X. It will provide information on the features and how to use them as well as documentation on how to use the different integration modules. Apache PLC4X allows you to communicate directly with your industrial Hardware, without having to retrofit it. This is possible, as PLC4X implements the protocols for the most common industrial communication protocols and uses these to communicate with the various types of devices. The one thing that separates PLC4X from most other, mostly commercial drivers, is that we don’t try to implement each protocol that it would be a certifiable protocol-stack, but concentrate on making a core set of operations available the identical way over all drivers. This allows users to develop software mostly independent of the actual type of hardware used. Apache PLC4X is an effort to create a set of libraries for communicating with industrial grade programmable logic controllers (PLCs) in a uniform way. We are planning on shipping libraries for usage in: Java Go C (not ready for usage) Python (not ready for usage) C# (.Net) (not ready for usage - abandoned) PLC4X also integrates with other Apache projects, such as: Apache Calcite Apache Camel Apache Kafka-Connect Apache Karaf Apache NiFi And brings stand-alone (Java) utils like: OPC-UA Server: Enables you to communicate with legacy devices using PLC4X with OPC-UA. PLC4X Server: Enables you to communicate with a central PLC4X Server which then communicates with devices via PLC4X. It also provides (Java) tools for usage inside an application: Connection Cache (Connection Cache for PLC connections) Object PLC Mapping (OPM) (Object PLC Mapping - Like JPA for PLC data) Scraper (Util for automating fetching PLC data using a variety of triggers) Testing-Utils (Want to build/test an application without having a PLC? … this is the tool for you)","title":"Users","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/users/index.html","titles":[{"text":"About Apache PLC4X","hash":"_about_apache_plc4x","id":1}]},"17":{"id":17,"text":"Since the introduction of programmable logic controllers in the production industry in the early 80s, they have been the core of almost every piece of production machinery. While first PLCs were usually stand-alone controllers. These were soon extended by the ability to talk to other controllers of the same type via proprietary protocols. After that came first computer based control systems, which were able to monitor and parametrize these controllers. Usually however in order to do this, a company needed to use the control system that was provided by the PLC vendor. This has tied companies to stick to the company they decided to use the PLCs of. Making it almost impossible to switch to another vendor. In the last 20 years in the IT industry, the concept of open source has come up and has more and more proven to be the engine of great innovation. Most of the biggest changes in how we create modern IT systems is a result of this. Unfortunately the production industry has been missing a lot of this innovation. Only a small number of companies today use open source software in their production systems. The benefit of using open source could be huge: Increased Flexibility Increased Stability Increased Extendability Improved Security Great Cost reduction If a company had decided to use PLCs and control systems of a certain vendor, it is almost impossible to change this decision. This reduces the options available when adding new machinery or replacing existing ones. Technologically speaking, also the company can only use the options and solution it’s vendor is able to provide. Current control systems are usually based on the concept of \"backup systems\". If the main control system fails, all activity is switched to the standby system. When using modern public- or private cloud systems, there is no need for a backup system, because the cluster is designed in a way that it can live with the failure of most of its hosts before loosing the ability to function. From the perspective of designing and scaling the IT infrastructure: If a control system was designed to handle the current size of plant, for cost reasons the IT infrastructure isn’t designed to handle much more than that. Now if the plant should be extended in the future, extending it’s control-systems IT infrastructure would probably result in replacing this with a bigger system. By utilizing modern virtualization frameworks, extending the existing cloud solution, would only require adding more compute resources, by adding more systems to the cluster and it should be possible to extend the existing system without problems. If the company decided to utilize a public cloud provider, it makes things even simpler, as it would only require booking more resources. This is probably one of the most concerning aspects of modern production control systems. Right now, in order to run these systems, a lot of the most popular solutions require companies to run not up to date systems. If applying all updates, the company is risking either loss of commercial support or even loss of functionality. Therefore an attacker can probably be certain to be able to exploit certain vulnerabilities just by knowing the type and version of the used control system. Well the probably biggest and most obvious cost reduction factor is definitely, that if the software you are using is free, you will not have to pay for it. Additionally, the ability to get the computing power of one insanely expensive system by using a cluster of cheap commodity systems, helps saving a lot of money. Being freed of the requirement to stick to the products of one vendor alone and to be able to choose the technology and the vendor of used systems freely will definitely also reduce costs. In general there are two options for communicating with industrial PLCs: Using a protocol converter Hardware protocol converter Software protocol converter Using a driver for direct communication Commercial drivers Open source drivers Well protocol converters are all software in the end, but while a \"hardware converter\" is usually a closed hardware box that runs some sort of software, a \"software converter\" is usually an installable service or program that runs on a host system. In both cases the configuration of the protocol converter tells the system which information to get and how to make that available in another protocol. It usually doesn’t allow full access to all information available in a PLC, but only the ones the adapter is configured to make available. Here, there is a big trade-off. If a system should be used in the most versatile way, also the most information has to be made available. Even if most of this information is never needed. Limiting the system only to the needed information, greatly reduces the systems versatility. Another disadvantage is a slightly increased latency when making information available. This is due to the fact that the protocol converter has to send a request to the PLC to get information and as soon as this information is returned to the converter this new information can only be passed on in the other protocol in the next request. The usage of a protocol converter is probably the ideal solution, if all a company wants to do, is integrate PLCs communicating in one protocol into an existing system using a different protocol. In case of integrating open source software, this usually is a protocol converter that converts into one of the well established open source protocols. The most widely used protocol here currently will probably be MQTT. The option that provides the most possibilities is directly communicating with the PLCs. Here the system can always directly access only the exact information required and can do this without any detours that would add latency. There is a wide variety of drivers available, that generally would allow writing software that directly accesses PLCs. Unfortunately most of these are commercial drivers. While there is a number of open source drivers, most of these have licenses that render them useless for commercial applications. Either they are licensed with restrictive licenses such as GPL or they are dual licensed with a restriction to non-commercial usage for the open source version and the requirement to purchase a commercial license for commercial use cases. The APIs of all drivers usually differs quite greatly from each one another. This makes it extremely difficult to create solutions that work with a variety of PLCs and protocols. This is where Apache PLC4X comes in. It is the goal of PLC4X to provide a suite of drivers for communicating with industrial PLCs using a variety of protocols, but with a shared API and a license model, that is suitable for creating commercial applications. Hereby PLC4X forms the missing link between the automation and the open source world. Making it possible to use the entire stack of open source technologies to create a new generation of open industrial control systems.","title":"Industry 4.0 with Apache","component":"plc4x","version":"pre-release","name":"industry40","url":"/plc4x/pre-release/users/industry40.html","titles":[{"text":"Benefits of using open source","hash":"_benefits_of_using_open_source","id":1},{"text":"Increased Flexibility","hash":"_increased_flexibility","id":2},{"text":"Increased Stability","hash":"_increased_stability","id":3},{"text":"Increased Extendability","hash":"_increased_extendability","id":4},{"text":"Improved Security","hash":"_improved_security","id":5},{"text":"Cost Reduction","hash":"_cost_reduction","id":6},{"text":"Options to communicating with PLCs","hash":"_options_to_communicating_with_plcs","id":7}]},"18":{"id":18,"text":"Our bug & issue tracker is Github-Issues. This service is available here: https://github.com/apache/plc4x/issues","title":"Bug & Issue Tracker","component":"plc4x","version":"pre-release","name":"issues","url":"/plc4x/pre-release/users/issues.html","titles":[]},"19":{"id":19,"text":"","title":"Preparing Issues & Bug Reports","component":"plc4x","version":"pre-release","name":"preparing-issues","url":"/plc4x/pre-release/users/preparing-issues.html","titles":[]},"20":{"id":20,"text":"Please note that binary patches are not produced for individual vulnerabilities. To obtain the binary fix for a particular vulnerability you should upgrade to an Apache PLC4X version where that vulnerability has been fixed. For more information about reporting vulnerabilities, see the Apache Security Team page. No vulnerabilities have been reported.","title":"Security Vulnerabilities","component":"plc4x","version":"pre-release","name":"security","url":"/plc4x/pre-release/users/security.html","titles":[{"text":"Known Vulnerabilities","hash":"_known_vulnerabilities","id":1}]},"21":{"id":21,"text":"As hand-writing code for a lot of drivers in multiple languages would be quite a nightmare, we have invested a very large amount of time into finding a way to automate this. So in the end we need 3 parts: Protocol definition Language template A maven plugin which generates the code This maven plugin uses a given protocol definition as well as a language template and generates code for reading/writing data in that protocol with the given language. The Types Base module provides all the structures the Protocol modules output which are then used in the Language templates to generate code. Protocol Base and Language Base hereby just provide the interfaces that reference these types and provide the API for the plc4x-maven-plugin to use. These modules are also maintained in a repository which is separate from the rest of the PLC4X code. This is generally only due to some restrictions in the Maven build system. If you are interested in understanding the reasons - please read the chapter on Problems with Maven near the end of this page. Concrete protocol spec parsers, code generators as well as templates that actually generate code are implemented in derived modules all located under the code-generation part of the main project repository. We didn’t want to tie ourselves to only one way to specify protocols and to generate code. Generally multiple types of formats for specifying drivers are thinkable and the same way, multiple ways of generating code are possible. Currently, however we only have one parser: MSpec and one generator: Freemarker. These add more layers to the hierarchy. So for example in case of generating a Siemens S7 Driver for Java this would look like this: The dark blue parts are the ones released externally, the turquoise ones are part of the main PLC4X repo. The maven plugin is built up very modular. So in general it is possible to add new forms of providing protocol definitions as well as language templates. For the formats of specifying a protocol we have tried out numerous tools and frameworks, however the results were never quite satisfying. Usually using them required a large amount of workarounds, which made the solution quite complicated. This is mainly the result, that tools like Thrift, Avro, GRPc, … all are made for transferring an object structure from A to B. They lay focus on keeping the structure of the object in takt and not offer ways to control the format for transferring them. Existing industry standards, such as ASN.1 unfortunately mostly relied on large portions of text to describe part of the parsing or serializing logic, which made it pretty much useless for a fully automated code genration. In the end only DFDL and the corresponding Apache project Apache Daffodil seemed to provide what we were looking for. With this we were able to provide first driver versions fully specified in XML. The downside was, that the PLC4X community regarded this XML format as pretty complicated and when implementing an experimental code generator we quickly noticed that generating a nice object model would not be possible, due to the lack of an ability to model inheritance of types into a DFDL schema. In the end we came up with our own format which we called MSpec and is described in the MSpec Format description. The plc4x-maven-plugin has a very limited set of configuration options. In general all you need to specify, is the protocolName and the languageName. An additional option outputFlavor allows generating multiple versions of a driver for a given language. This can come in handy if we want to be able to generate read-only or passive mode driver variants. In order to be able to refactor and improve protocol specifications without having to update all drivers for a given protocol, we recently added a protocolVersion attribute, that allows us to provide and use multiple versions of one protocol. So in case of us updating the fictional wombat-protocol, we could add a version 2 mspec for that, then use the version 2 in the java-driver and continue to use version 1 in all other languages. Once all drivers are updated we could eliminate the version again. Last, not least, we have a pretty generic options config option, which is a Map type. With options is it possible to pass generic options to the code-generation. So if a driver or language requires further customization, these options can be used. For a list of all supported options for a given language template, please refer to the corresponding language page. Currently, the Java module makes use of such an option for specifying the Java package the generated code uses. If no package option is provided, the default package org.apache.plc4x.{language-name}.{protocol-name}.{output-flavor} is used, but especially when generating custom drivers, which are not part of the Apache PLC4X project, different package names are better suited. So in these cases, the user can simply override the default package name. There is also an additional parameter: outputDir, which defaults to ${project.build.directory}/generated-sources/plc4x/ and usually shouldn’t require being changed in case of a Java project, but usually requires tweaking when generating code for other languages. Here’s an example of a driver pom for building a S7 driver for java: 4.0.0 org.apache.plc4x.plugins plc4x-code-generation 0.13.0-SNAPSHOT test-java-s7-driver org.apache.plc4x.plugins plc4x-maven-plugin test generate-sources generate-driver s7 java read-write org.apache.plc4x.plugins plc4x-code-generation-driver-base-java 0.13.0-SNAPSHOT org.apache.plc4x.plugins plc4x-code-generation-language-java 0.13.0-SNAPSHOT provided org.apache.plc4x.plugins plc4x-code-generation-protocol-s7 0.13.0-SNAPSHOT provided So the plugin configuration is pretty straight forward, all that is specified, is the protocolName, languageName and the output-flavor. The dependency: org.apache.plc4x.plugins plc4x-code-generation-driver-base-java 0.13.0-SNAPSHOT For example contains all classes the generated code relies on. The definitions of both the s7 protocol and java language are provided by the two dependencies: org.apache.plc4x.plugins plc4x-code-generation-language-java 0.13.0-SNAPSHOT provided and: org.apache.plc4x.plugins plc4x-code-generation-protocol-s7 0.13.0-SNAPSHOT provided The reason for why the dependencies are added as code-dependencies and why the scope is set the way it is, is described in the Why are the protocol and language dependencies done so strangely? section. The plugin uses the Java Serviceloader mechanism to find modules. In order to provide a new protocol module, all that is required, it so create a module containing a META-INF/services/org.apache.plc4x.plugins.codegenerator.protocol.Protocol file referencing an implementation of the org.apache.plc4x.plugins.codegenerator.protocol.Protocol interface. This interface is located in the org.apache.plc4x.plugins:plc4x-code-generation-protocol-base module and generally only defines three methods: package org.apache.plc4x.plugins.codegenerator.protocol; import org.apache.plc4x.plugins.codegenerator.types.exceptions.GenerationException; import java.util.Optional; public interface Protocol { /** * The name of the protocol what the plugin will use to select the correct protocol module. * * @return the name of the protocol. */ String getName(); /** * Returns a map of type definitions for which code has to be generated. * * @return the Map of types that need to be generated. * @throws GenerationException if anything goes wrong parsing. */ TypeContext getTypeContext() throws GenerationException; /** * @return the protocolVersion is applicable */ default Optional getVersion() { return Optional.empty(); } } The name is being used for the module to find the right language module, so the result of getName() needs to match the value provided in the maven config-option protocolName. As mentioned before, we support multiple versions of a protocol, so if getVersions() returns a non-empty version, this is used to select the version. The most important method for the actual code-generation however is the getTypeContext() method, which returns a TypeContext type which generally contains a list of all parsed types for this given protocol. Analog to the Protocol Modules the Language modules are constructed very similar. The LanguageOutput interface is very simplistic too and is located in the org.apache.plc4x.plugins:plc4x-code-generation-language-base module and generally only defines four methods: package org.apache.plc4x.plugins.codegenerator.language; import org.apache.plc4x.plugins.codegenerator.types.definitions.ComplexTypeDefinition; import org.apache.plc4x.plugins.codegenerator.types.exceptions.GenerationException; import java.io.File; import java.util.Map; public interface LanguageOutput { /** * The name of the template is what the plugin will use to select the correct language module. * * @return the name of the template. */ String getName(); List supportedOutputFlavors(); /** * An additional method which allows generator to have a hint which options are supported by it. * This method might be used to improve user experience and warn, if set options are ones generator does not support. * * @return Set containing names of options this language output can accept. */ Set supportedOptions(); void generate(File outputDir, String version, String languageName, String protocolName, String outputFlavor, Map types, Map options) throws GenerationException; } The file for registering Language modules is located at: META-INF/services/org.apache.plc4x.plugins.codegenerator.language.LanguageOutput The name being used by the plugin to find the language output module defined by the maven config option languageName. supportedOutputFlavors provides a possible list of flavors, that can be referred to by the maven config option outputFlavor. supportedOptions provides a list of options that the current language module is able to use and which can be passed in to the maven configuration using the options settings. We mentioned in the introduction, that the first 4 modules are maintained and released from outside the main PLC4X repository. This is due to some restrictions in Maven, which result from the way Maven generally works. The main problem is that when starting a build, in the validate-phase, Maven goes through the configuration, downloads the plugins and configures these. This means that Maven also tries to download the dependencies of the plugins too. In case of using a Maven plugin in a project which also builds the maven plugin itself, this is guaranteed to fail - Especially during releases. While during normal development, Maven will probably just download the latest SNAPSHOT from our Maven repository and will be happy with this and not complain even if this version will be overwritten later on in the build. It will just use the new version as soon as it has to. During releases however the release plugin changes the version to a release version and then spawns a build. In this case the build will fail because there is no Plugin with that version to download from anywhere. In this case the only option would be to manually build and deploy the plugin in the release version and to re-start the release (Which is not a nice thing for the release manager). For this reason we have stripped down the plugin and its dependencies to an absolute minimum and have released that separately from the rest, hoping due to the minimality of the dependencies that we will not have to do it very often. As soon as the tooling is released, the version is updated in the PLC4X build and the release version is used without any complications. It would certainly be a lot cleaner, if we provided the dependencies to protocol and language modules as plugin dependencies. However, as we mentioned in the previous subchapter, Maven tries to download and configure the plugins prior to running the build. So during a release the new versions of the modules wouldn’t exist, this would cause the build to fail. We could release the protocol- and the language modules separately too, but we want the language and protocol modules to be part of the project, to not over-complicate things - especially during a release. In order to keep the build and the release as simple as possible, we built the Maven plugin in a way, that it uses the modules dependencies and creates its own Classloader to contain all of these modules at runtime. This brings the benefit of being able to utilize Maven’s capability of determining the build order and dynamically creating the modules build classpath. Adding a normal dependency however would make Maven deploy the artifacts with the rest of the modules. We don’t want that as both the protocol as well as the language-modules are useless as soon as they have been used to generate the code. So we use a trick that is usually used in Web applications, for example: Here the vendor of a Servlet engine is expected to provide an implementation of the Servlet API. It is forbidden for an application to bring this along, but it is required to build the application. For this the Maven scope provided, which tells Maven to provide it during the build, but to exclude it from any applications it builds, because it will be provided by the system running the application. This is not quite true, but it does the trick.","title":"Code Generation","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/developers/code-gen/index.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Configuration","hash":"_configuration","id":2},{"text":"Custom Modules","hash":"_custom_modules","id":3},{"text":"Protocol Modules","hash":"_protocol_modules","id":4},{"text":"Language Modules","hash":"_language_modules","id":5},{"text":"Problems with Maven","hash":"_problems_with_maven","id":6},{"text":"Why are the 4 modules released separately?","hash":"_why_are_the_4_modules_released_separately","id":7},{"text":"Why are the protocol and language dependencies done so strangely?","hash":"_why_are_the_protocol_and_language_dependencies_done_so_strangely","id":8}]},"22":{"id":22,"text":"We are currently using the following CI systems. Apache’s Jenkins at: https://ci-builds.apache.org/job/PLC4X/ GitHub Actions at: https://github.com/apache/plc4x/actions The build on Jenkins is generally responsible for building and testing the state of the project on the development branch. It is currently the only service that is able to build and deploy the SNAPSHOT artifacts and is also responsible for building and updating our website. GitHub Actions on the other side responsible for doing the main part of the testing. It not only builds and runs the tests on a matrix of operating systems as well as with a number of java versions. It also is configured to run the tests on pull-requests. We are using the Jenkins multi-branch pipeline plugin to automatically setup build for branches based upon the build definition in the Jenkinsfile in the root of the project. In general, it builds the develop branch and all branches starting with the prefix feature/. However, when building the develop branch some additional steps are performed. When building develop the build not only builds the project itself and runs all tests, it also runs the sonarcloud analysis, deploys the artifacts built to the Apache Nexus as well as generates and deploys the website.","title":"Continuous Integration","component":"plc4x","version":"pre-release","name":"ci","url":"/plc4x/pre-release/developers/infrastructure/ci.html","titles":[{"text":"Structure of the Jenkins Pipeline build","hash":"_structure_of_the_jenkins_pipeline_build","id":1}]},"23":{"id":23,"text":"In this section you can find information on the services the Apache PLC4X project makes use of.","title":"Infrastructure","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/developers/infrastructure/index.html","titles":[]},"24":{"id":24,"text":"Our bug & issue tracker is Github-Issues. This service is available here: https://github.com/apache/plc4x/issues","title":"Bug & Issue Tracker","component":"plc4x","version":"pre-release","name":"issues","url":"/plc4x/pre-release/developers/infrastructure/issues.html","titles":[]},"25":{"id":25,"text":"We are using SonarCloud as the service for static code analysis. This is an externally hosted service and is available here: https://sonarcloud.io/dashboard?id=apache_plc4x","title":"Code Analysis","component":"plc4x","version":"pre-release","name":"sonar","url":"/plc4x/pre-release/developers/infrastructure/sonar.html","titles":[]},"26":{"id":26,"text":"As, especially for the raw socket functionality of PLC4X, our project had higher demands on the infrastructure as other projects. Apache Infra kindly provided us with a dedicated VM. This is included as build agent into Apache’s Jenkins with the label plc4x2 and is marked for exclusive usage by our project. The host name of this machine is: plc4x-vm2.apache.org On this machine we can even sudo to perform operations only available to root. Project members can request access to the machine. In order to be able to log in, users need to add their SSH public key to their Apache ID first. This is done under the following url: https://id.apache.org/ Here just add the content in the following format to one of the SSH Key (authorized_keys line) fields: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDd10ykYAZLxHJVTER71IrrVVpyR8OBdlJd1aVwb67Ts+ueJjzo8ofQKLASaQw9EQOSfprGZW0sfzhepeJvbX0n1IfsRexoyIGlD8WzyX/UoLiRLPHFv+eSGJVlN90x/l+zps+yo3lq6qfuIqkXQQvB4aJBYsYC/jifpMLvx06zaUBPfdWIaGiBgaWbX/59Q0QsSpX5r8tgdA+XLw/8Zg5AbKazuS2Cm/soJCfQQ7km4bd/WtF5R5xvakVbyILMT8Dk9Hs9OfVL/RFGLYqX4bjy5uCTwPBrwlWqFyq1u7JR39i870XNgn+bIeChaZU098BGyBH/cWMGt7bTJQSKxksF2SZAHjt8Ga2Pl+J6MTW6/EPzIYENgvfOBVSlVaz9SlM26nel1+SHDND9dK/4gRNbujbmzHZLfTjMk7oc4R+WPCBIw99CFeShTKHSxhJKz/3KmcmuEHhNRBdMy+xHecr/r/Pax58a9VHXQqHbwES6tvC1gvM2uFSMKoaKtNkME4V7bPLbQcEF8tKz7/gKp6vp1IL0BdDMwZPodFPmbiJzqjvC38A++B5k0GAgWKYPVsenamZviFhRNGjjum/qxBnAF1FjpIocsEA0zQBYvvOPDpKl9KPRZ32ALHztnRfCEwltgnM1Sjinn4zQjxQs5mJBz2rjMGlkSzVjLoSo7khiBQ== my@email-address.com (I just had to copy this line from my ~/.ssh/id_rsa.pub file) Note, the Email Address in the end doesn’t seem to matter, I simply added it for the sake of completeness. So if this doesn’t match your Apache email, this is not a problem. As soon as that’s done, access needs to be requested from Apache Infra. This is done using the Infra Jira at: https://issues.apache.org/jira Here make sure to select the Project Infrastructure (INFRA). As soon as that’s handled by the Infra team, you should be ready to log-in on the machine. Using SSH we should now be able to log in to the VM. ssh apacheId@plc4x-vm2.apache.org Be sure to use the username matching your Apache ID or the login will fail. If all went well you should now be able to log in to the machine using your apache user. Apache Infra is great at keeping things safe. Providing a sudo password directly would increase the danger of having this intercepted, therefore they are using a tool called opiepasswd. Instead of now entering a password, a challenge is displayed: myid@plc4x-vm2:~$ sudo apt-get update otp-md5 496 pl8230 Password: If you now enter your normal password, you’ll simply get permission denied errors. In order to execute operations as root on the machine, you firstly need to run ortpasswd to generate a new seed. ortpasswd You can then use an opie client on your local machine or online at https://selfserve.apache.org/otp-calculator.html otp-md5 496 pl8230 into OPIE client’s challenge field. In the password field you provide your Apache LDAP password. When hitting enter or clicking on Compute the tool should automatically generate a response. Now all you need to do is copy & paste that as password into your SSH client session. As with the latest version of Mac Catalina the existing clients no longer work and using a public web service is a bad idea, Apache has its own service to calculate it: https://selfserve.apache.org/otp-calculator.html More help can be found for Apache committers at https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=122916896 For being able to build the charts and graphics as part of the site generation, we need to add some additional packages: sudo apt-get install python-seqdiag sudo apt-get install python-nwdiag","title":"The PLC4X Project VM","component":"plc4x","version":"pre-release","name":"vm","url":"/plc4x/pre-release/developers/infrastructure/vm.html","titles":[{"text":"Requesting access","hash":"_requesting_access","id":1},{"text":"Login to the machine","hash":"_login_to_the_machine","id":2},{"text":"Doing things as root","hash":"_doing_things_as_root","id":3},{"text":"Required software","hash":"_required_software","id":4}]},"27":{"id":27,"text":"We are currently using the normal Maven build to not only generate the project artifacts, but also the projects website. In order to provide content, every module can have a src/site directory. This content will be generated to that modules site-part. The skin being used to generate the site is none of the default Maven skins, but a more up-to-date looking skin using: Bootstrap (For the CSS) JQuery (For the JavaScript magic) Fontawesome (For icons and symbols) But we don’t have to worry about the details, all is configured to be used automatically. The site content itself is generated from asciidoc files (ending .adoc) which is a simple yet powerful markup language. (See AsciiDoc Syntax Quick Reference or AsciiDoc cheatsheet for details) Beyond the basic goodies, the build is also configured to generate images from ASCII data using the asciidoctor-diagram plugin. This allows us to generate images like the ones on the S7 Protocol Description page Within the src/site directory there is a file site.xml which generally controls the menu and the look of the site. Most setting are inherited from the plc4x-parent module. That’s also why this is more complicated than the others. The site.xml file is optional. Even if this is not available a site will be generated however no additional content will be linked from any of the navigation menus. So if we wanted to add a new page on some (hopefully non existent) Wombat PLC Protocol, we would create a file called: index.adoc in the src/site/asciidoc/protocols/wombat directory. For example with this content: = Wombat PLC Protocol If you want to waste your money, brains and time, feel free to use a `Wombat PLC`. In order to help you waste even more of that, we'll skip documenting anything. Notice the double equals sign? This is the site Title. It seems the level One with only one equals sign is only used for ebook output. So just keep in mind: Two equals signs is the top level title, all lower levels have more equals signs. In order to generate the content you need to execute the Maven site workflow. This is for example done by executing: mvn site This will not build the artifact itself, but only it’s website. After the build, you would find a file target/site/protocols/wombat/index.html However you can link to this page from any other page, but it is not added ot the navigation menu. In order to add links to the menus, you have to create or modify the site.xml for the module you want to add content to. The simplest form would probably be something like this: This will generate a Wombat menu at the end, and this has one link named lalala. Notice that the link has to have a file ending of .html and not .adoc. If you want to insert the menu somewhere else, you will have to re-define the entire menu. The menu ref items hereby reference standard menus provided by the Maven build. The PLC4X project uses Apache gitpubsub system for maintaining the website. In general all content in a repos asf-site branch is copied to the Webservers, if that repo is registered for it. The content in this branch is generated and maintained during the Maven build as part of the site generation if the site-deploy phase is executed. The build system needs to check-in content to the asf-site branch and usually ASF Jenkins nodes don’t have the permissions to do that. In order to be able to push to the asf-site GIT branch, a dedicated build job is configured to build on nodes with the Jenkins label git-websites. Only on these machines are jobs allowed to push changes to a Git repo and here only to a branch named asf-site. See https://ci-builds.apache.org/job/PLC4X/ for details on the PLC4X Jenkins Website build job. As soon as content is updated in the asf-site the gitpubsub mechanism will make those changes available at https://plc4x.apache.org","title":"Generating the Website","component":"plc4x","version":"pre-release","name":"website","url":"/plc4x/pre-release/developers/infrastructure/website.html","titles":[{"text":"Providing new content","hash":"_providing_new_content","id":1},{"text":"Adding links to menus","hash":"_adding_links_to_menus","id":2},{"text":"Deploying the Website","hash":"_deploying_the_website","id":3}]},"28":{"id":28,"text":"We use Apache’s Confluence instance as Wiki, however most information is generally managed on this website. This service is available here: https://cwiki.apache.org/confluence/display/PLC4X","title":"WIKI","component":"plc4x","version":"pre-release","name":"wiki","url":"/plc4x/pre-release/developers/infrastructure/wiki.html","titles":[]},"29":{"id":29,"text":"Building a project like Apache PLC4X on multiple target operating-systems is quite a challenge, but I think we managed to make it as simple as possible. We usually test the PLC4X build on the following systems: width=100%] Operating System CPU Architecture Description Linux x86_64 Most computers Linux aarch64 Linux running on Macs with M processors (Paralells) Windows x86_64 Most computers Windows aarch64 Windows running on Macs with M processors (Paralells) Mac x86_64 Older Macs Mac aarch64 Newer Macs with M processors (Paralells) However, when building PLC4X there are some requirements the build is expecting you to have provided. These greatly depend on which parts you want to build. If you’re just building the Java modules, these probably have the least demanding requirements. Also, should the Go parts generally work without any additional installations as the maven build should automatically pull the required packages. In order to build all Java parts of PLC4X you are required to have at least Java 11 installed on your machine. We have tested the build with Java 11 up to Java 21 (Latest version at the time of writing this document). If a new version comes out, please give us a little time to verify and handle any related issues. We’ll probably fix them as soon as possible. However, in the past with Oracle’s new release strategy, there have been a few bumps on the road. Also will PLC4X build with any Maven version starting with Maven 3.6.0. Profile Description Requirements Builds Java API, drivers Git LibPCAP with-c Builds C API, drivers with-dotnet Builds C# and .Net API, drivers dotnet with-python Builds Python API, drivers python (min 3.7) pyenv The following pages will describe how to provide these requirements for your operating system. Linux MacOS Windows When running Java unit-tests in IntelliJ, you might run into problems where during the test execution complaints arise that JUnit is unable to load {failsafeArgLine}. In this case you need to go to Settings → Build, Execution, Deployment → Build Tools → Maven → Running Tests and deselect the option argLine.","title":"Preparing your Computer","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/developers/preparing/index.html","titles":[{"text":"Preparing your IDE","hash":"_preparing_your_ide","id":1},{"text":"IntelliJ","hash":"_intellij","id":2}]},"30":{"id":30,"text":"As tracking down issues which result from missing or outdated third party tools such as compilers are always hard do diagnose, we have extended the build of PLC4X with a prerequisiteCheck that automatically checks if required tools are installed and if a required minimum version is available. If any of the prerequisites are not met, the build fails with an error message that will help finding out what’s wrong. The number of checks is highly dependent on which profiles are enabled. So for example the availability and version of the C compiler is only checked if the with-c profile is enabled. If the check is reporting any issues, please feel free to follow the corresponding steps in this guide to install the tools. Checking: git --version If you get any successful output, you probably don’t need to do anything. Apt-based systems: sudo apt install git Yum based systems: sudo yum install git Checking: java --version If you get successful output indicating at least Java 11, you don’t need to do anything. Apt based systems: sudo apt install openjdk-21-jdk Git an Java should be all you need for building the Java part of PLC4X. Apt-based systems: sudo apt install libpcap-dev Yum based systems: sudo yum install libpcap-devel Using libpcap usually requires root privileges, however the java process can be granted permission to do so by executing the following command. sudo setcap cap_net_raw,cap_net_admin=eip /path/to/java /path/to/java however needs to be a real file and not a symlink. So on my Ubuntu 22.04 system, where I installed java as described above the command is as follows: sudo setcap cap_net_raw,cap_net_admin=eip /usr/lib/jvm/java-21-openjdk-arm64/bin/java Sometimes I had to set the uid to execute the java executable with the permissions of the owner (root) … however this is quite suboptimal solution. sudo chmod 4755 /path/to/java It seems that when running Linux on aarch64 (Apple’s Silicon Chips), that there are issues … we’re working on that. Feel free to watch https://github.com/apache/plc4x/issues/1582 on updates to this. Checking: gcc --version If you get any successful output, you probably don’t need to do anything. Apt-based systems: sudo apt install gcc Yum based systems: sudo yum install gcc Checking: dotnet --version If you get any successful output, you probably don’t need to do anything. Microsoft has documented what is needed to install .Net SDK here For Ubuntu this would be: wget -q https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb sudo apt install apt-transport-https sudo apt update sudo apt install dotnet-sdk-6.0 For other distributions, please select the distribution in the drop-down menu and follow the instructions there. If, when checking the version again after installing, you are getting an error: A fatal error occurred. The folder [/usr/share/dotnet/host/fxr] does not exist Then please have a look at this Stackoverflow post (the accepted solution) https://stackoverflow.com/questions/73753672/a-fatal-error-occurred-the-folder-usr-share-dotnet-host-fxr-does-not-exist Checking: python3 --version If you get a version of 3.7 or higher reported, you probably don’t need to do anything. Apt-based systems: sudo apt install python3 Yum based systems: yum intall python3 Checking: python3 -Im ensurepip If you are getting anything else than a: No module named ensurepip, you’re ok. It seems that this manually needs to be installed on some systems. Apt-based systems: sudo apt install python3-venv","title":"Linux","component":"plc4x","version":"pre-release","name":"linux","url":"/plc4x/pre-release/developers/preparing/linux.html","titles":[{"text":"Git","hash":"_git","id":1},{"text":"Java","hash":"_java","id":2},{"text":"Optional and other language support","hash":"_optional_and_other_language_support","id":3},{"text":"LibPCAP (For raw-ethernet support)","hash":"_libpcap_for_raw_ethernet_support","id":4},{"text":"gcc (For PLC4C)","hash":"_gcc_for_plc4c","id":5},{"text":"dotnet (For PLC4Net)","hash":"_dotnet_for_plc4net","id":6},{"text":"python (For PLC4Py)","hash":"_python_for_plc4py","id":7},{"text":"Python venv (For PLC4Py)","hash":"_python_venv_for_plc4py","id":8}]},"31":{"id":31,"text":"As tracking down issues which result from missing or outdated third party tools such as compilers are always hard do diagnose, we have extended the build of PLC4X with a prerequisiteCheck that automatically checks if required tools are installed and if a required minimum version is available. If any of the prerequisites are not met, the build fails with an error message that will help finding out what’s wrong. The number of checks is highly dependent on which profiles are enabled. So for example the availability and version of the C compiler is only checked if the with-c profile is enabled. Most libraries on Mac are installed using Homebrew. Make sure Homebrew ist installed in order to install most of these. /bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\" Checking: git --version If you get any successful output, you probably don’t need to do anything. If you are running this command on a really fresh and clean system, it might be that you are asked to finish installing the XCode commandline tools. If this happens, just follow the process and re-try after it has finished. If you get a response that indicates that git needs to be installed, please execute the following command: brew install git Checking: java --version If you get successful output indicating at least Java 11, you don’t need to do anything. Apt based systems: brew install openjdk Git an Java should be all you need for building the Java part of PLC4X. The libpcap version bundled with macOS is currently 1.9.1. This version causes exceptions. So it’s best to update to a newer version using brew: brew install libpcap Checking: gcc --version If you get any successful output, you probably don’t need to do anything. It seems macOS comes with a version of gcc which is good enough for our use cases. Checking: dotnet --version If you get any successful output, you probably don’t need to do anything. Microsoft is offering an installer for macOS which is available from here. Alternatively you can also install it via homebrew: brew install --cask dotnet-sdk Checking: python --version If you get a version of 3.0.0 or higher reported, you probably don’t need to do anything. In order to install it, please execute the following command: brew install pyenv Then use pyenv to install python: pyenv install 3.9.13 Then set this as the global python version: pyenv global 3.9.13 And add pyenv to the PATH: echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\\n eval \"$(pyenv init -)\"\\nfi' >> ~/.zshrc echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\\n eval \"$(pyenv init -)\"\\nfi' >> ~/.bash_profile After opening a new terminal, python should be configured python --version","title":"Mac OS","component":"plc4x","version":"pre-release","name":"macos","url":"/plc4x/pre-release/developers/preparing/macos.html","titles":[{"text":"Git","hash":"_git","id":1},{"text":"Java","hash":"_java","id":2},{"text":"Optional and other language support","hash":"_optional_and_other_language_support","id":3},{"text":"LibPCAP (For raw-ethernet support)","hash":"_libpcap_for_raw_ethernet_support","id":4},{"text":"gcc (For PLC4C)","hash":"_gcc_for_plc4c","id":5},{"text":"dotnet (For PLC4Net)","hash":"_dotnet_for_plc4net","id":6},{"text":"python (For PLC4Py)","hash":"_python_for_plc4py","id":7}]},"32":{"id":32,"text":"As tracking down issues which result from missing or outdated third party tools such as compilers are always hard do diagnose, we have extended the build of PLC4X with a prerequisiteCheck that automatically checks if required tools are installed and if a required minimum version is available. If any of the prerequisites are not met, the build fails with an error message that will help finding out what’s wrong. The number of checks is highly dependent on which profiles are enabled. So for example the availability and version of the C compiler is only checked if the with-c profile is enabled. As in the past keeping the documentation up to date has been quite challenging, as the projects providing and packaging some of the needed tools have been born and dying like weed, we’ll start using Chocolatey as something similar to Homebrew on Mac or Apt on Linux. So first be sure to install Chocolatey from here: https://community.chocolatey.org/ and follow the most recent instructions on that page in order to install it. Checking: git --version If you get any successful output, you probably don’t need to do anything. If above command is not successful, simply install it via Chocolatey: choco install git Checking: java --version If you get successful output, check that the version reported is at least Java 11. If you need to install or update Java, unfortunately this doesn’t seem to be available via Chocolatey, but needs to be installed directly from a distribution. For Oracles OpenJDK 21 this would be from here: https://learn.microsoft.com/de-de/java/openjdk/download If you are using a Windows VM on aarch64 (Apple M1 or M2 virtual machine), the download available from Microsoft build seem to be one of the few options you have. When installing make sure to select the option to configure the \"JAVA_HOME\" environment variable (deactivated per default). Git an Java should be all you need for building the Java part of PLC4X. In order to use the raw ethernet transport capabilities of PLC4X, we need to ensure the NPcap library is installed. In order to check if NPcap is installed, check the following directories: 64-bit versions: C:\\Windows\\System32\\packet.dll C:\\Windows\\System32\\wpcap.dll 32-bit versions: C:\\Windows\\SysWOW64\\packet.dll C:\\Windows\\SysWOW64\\wpcap.dll If none of these can be found, install it by downloading the installer from https://npcap.com/#download Checking: gcc --version If you get any successful output, you probably don’t need to do anything. If above command fails, please install MinGW from an Administrative console with the following command: choco install mingw https://repo.maven.apache.org/maven2/com/googlecode/cmake-maven-project/cmake-binaries/3.27.7-b1/ Download: https://repo.maven.apache.org/maven2/com/googlecode/cmake-maven-project/cmake-binaries/3.27.7-b1/cmake-binaries-3.27.7-b1-windows-arm_64.jar Deploy as: https://repo.maven.apache.org/maven2/com/googlecode/cmake-maven-project/cmake-binaries/3.27.7-b1/cmake-binaries-3.27.7-b1-windows-arm64.jar Checking: dotnet --version If you get any successful output, you probably don’t need to do anything. Usually this is already installed on Windows machines. Download the installer from here Checking: python --version If you get any successful output, you probably don’t need to do anything. You can get Python from here. Make sure directory containing python.exe is added to your systems PATH. Also make sure you restarted your IDE and or console window after changing the PATH settings for the changes to take effect. https://visualstudio.microsoft.com/de/visual-cpp-build-tools/ PLC4PY Build doesn’t work on Aarch64 on Windows","title":"Windows","component":"plc4x","version":"pre-release","name":"windows","url":"/plc4x/pre-release/developers/preparing/windows.html","titles":[{"text":"Git","hash":"_git","id":1},{"text":"Java","hash":"_java","id":2},{"text":"Optional and other language support","hash":"_optional_and_other_language_support","id":3},{"text":"LibPCAP (For raw-ethernet support)","hash":"_libpcap_for_raw_ethernet_support","id":4},{"text":"gcc (For PLC4C)","hash":"_gcc_for_plc4c","id":5},{"text":"dotnet (For PLC4Net)","hash":"_dotnet_for_plc4net","id":6},{"text":"python (For PLC4Py)","hash":"_python_for_plc4py","id":7}]},"33":{"id":33,"text":"Beckhoff/ ADS EIP","title":"Usage of protocols","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/developers/protocols/index.html","titles":[{"text":"Currently documented are:","hash":"_currently_documented_are","id":1}]},"34":{"id":34,"text":"In contrast to the main project, the plc4x-build-tools repository contains a loose collection of sub-projects. The main pom.xml in the root directory is mainly for allowing to import all modules into an IDE and shouldn’t be used for releases. If you want to release a part of the build-tools, please execute the following release steps in the parts sub-directory. In general the preparation steps for releasing a build-tool is equal to those of the main project. So please check here (Chapters: Preparing your system for being able to release and Preparing the codebase for a release) The rest of the steps are a lot simpler than those of the main project as there aren’t any profiles involved. According to SemVer, we have: Major, Minor and Bugfix releases. For each new Major and Minor release we create a new branch at the beginning of a code-freeze phase. So if currently the project version in develop is {0.13.0-SNAPSHOT}, we create a branch release/{code-generation-short-version}. When creating the branch is exactly the moment in which the version in develop is incremented to the next minor version. This can and should be automated by the maven-release-plugin. Per default the plugin will ask for the working copy version during the build execution. This is the version the develop branch will be changed to. mvn release:branch -DbranchName=releases/code-generation/{minor-version} Per default the plugin suggests the next bugfix version as working version, however we want it to use the next minor version. So in case of preparing the release branch for {0.13.0-SNAPSHOT} the command would be the following: mvn release:branch -DbranchName=releases/code-generation/{code-generation-short-version} The plugin will then aks for the version: What is the new working copy version for \"PLC4X Build Tools: Code Generation\"? (org.apache.plc4x.plugins:plc4x-code-generation) {code-generation-bugfix-version}-SNAPSHOT: : {code-generation-development-version}-SNAPSHOT Where the suggested default is manually overridden. This step now should perform quite quickly as no build and no tests are involved. However in the end the versions of the develop branch are updated and a new releases/code-generation/{code-generation-short-version} branch is created. Now is a good time to add a new section to the RELEASE_NOTES document for the new SNAPSHOT version. Here comes a template: ============================================================== (Unreleased) Apache PLC4X {code-generation-development-version}-SNAPSHOT ============================================================== New Features ------------ Incompatible changes -------------------- Bug Fixes --------- // Rest of the file After that please remove the (Unreleased) from the following section, as we are currently working on its release. Also be sure to do a quick full-text-search to check if the version was updated correctly everywhere. If you find anything here, you will need to pay attention during the release. Now usually comes a phase in which last tests and checks should be performed. If any problems are found they, have to be fixed in the release branch. Changes should either be re applied in develop or cherry-picked, however merging things back can cause a lot of problems, and we no longer have the same versions. Before you start preparing the release, it is important to manually make the RELEASE_NOTES reflect the version we are planning on releasing. Be sure to ensure you have switched to the release branch before continuing. So be sure to remove the (Unreleased) and SNAPSHOT from the version. As especially when switching a lot between different branches, it is recommended to do a clean checkout of the repository. Otherwise, a lot of directories can be left over, which would be included in the source-release zip. In order to prepare a release-candidate, the first step is switching to the corresponding release-branch. Again, just in case you missed the first warning: Be sure to ensure you have switched to the release branch before continuing. After that, the following command will to all preparation steps for the release: mvn release:prepare In general the plugin will now ask you 3 questions: The version we want to release as (It will suggest the version you get by omitting the -SNAPSHOT suffix, keep it as it is) The name of the tag the release commit will be tagged with in the SCM (Name it releases/code-generation/{release-version} (releases/code-generation/{0.13.0-SNAPSHOT} in our case) The next development version (The version present in the pom after the release) (leave it as it is suggested by the plugin) Usually for 1 and 3 the defaults are just fine, make sure the tag name is correct as this usually is different. However, it is important to check that nowhere else SNAPSHOT versions are referenced. What the plugin now does, is automatically to execute the following operations: Check we aren’t referencing any SNAPSHOT dependencies. Update all pom versions to the release version. Run a build with all tests Commit the changes (commit message: [maven-release-plugin] prepare release releases/code-generation/{0.13.0-SNAPSHOT}) Push the commit Tag the commit Update all poms to the next development version. Commit the changes (commit message: [maven-release-plugin] prepare for next development iteration) Push the commit However, this just prepared the git repository for the release, we have to perform the release to produce and stage the release artifacts. Please verify the git repository at: https://gitbox.apache.org/repos/asf?p=plc4x-build-tools.git is in the correct state. Please select the release branch and verify the commit log looks similar to this It is important that the commit with the message \"[maven-release-plugin] prepare release releases/code-generation/{0.13.0-SNAPSHOT}\" is tagged with the release tag (in this case releases/code-generation/{0.13.0-SNAPSHOT}) If you check the commit itself, it should mainly consist of version updates like this: The root pom has a few more changes, but in general this should be what you are seeing. After that should come a second commit: This now updates the versions again, but this time from the release version to the one we selected for the next development iteration (in this case {code-generation-bugfix-version}-SNAPSHOT) If the commit history doesn’t look like this, something went wrong. If something goes wrong, you can always execute: mvn release:rollback And it will change the versions back and commit and push things. However, it will not delete the tag in GIT (locally and remotely). So you have to do that manually or use a different tag next time. This is done by executing another goal of the maven-release-plugin: mvn release:perform This executes automatically as all information it requires is located in the release.properties file the prepare-goal prepared. The first step is that the perform-goal checks out the previously tagged revision into the root modules target/checkout directory. Here it automatically executes a maven build (You don’t have to do this, it’s just that you know what’s happening): mvn clean deploy -P apache-release As the apache-release profile is activated, this builds and tests the project as well as creates the JavaDocs, Source packages and signs each of these with your PGP key. As this time the build is building with release versions, Maven will automatically choose the release url for deploying artifacts. The way things are set up in the apache parent pom, is that release artifacts are deployed to a so-called staging repository. You can think of a staging repository as a dedicated repository created on the fly as soon as the first artifact comes in. After the build you will have a nice and clean Maven repository at https://repository.apache.org/ that contains only artifacts from the current build. After the build it is important to log in to Nexus at https://repository.apache.org/, select Staging Repositories and find the repository with the name: orgapacheplc4x-{somenumber}. Select that and click on the Close button. Now Nexus will do some checks on the artifacts and check the signatures. As soon as it’s finished, we are done on the Maven side and ready to continue with the rest of the release process. A release build also produces a so-called source-assembly zip. This contains all sources of the project and will be what’s actually the release from an Apache point of view and will be the thing we will be voting on. This file will also be signed and SHA512 hashes will be created. Each new release and release-candidate has to be staged in the Apache SVN under: https://dist.apache.org/repos/dist/dev/plc4x/ The directory structure of this directory is as follows: ./KEYS ./build-tools/code-generation/{0.13.0-SNAPSHOT} ./build-tools/code-generation/{0.13.0-SNAPSHOT}/rc1 ./build-tools/code-generation/{0.13.0-SNAPSHOT}/rc1/README ./build-tools/code-generation/{0.13.0-SNAPSHOT}/rc1/RELEASE_NOTES ./build-tools/code-generation/{0.13.0-SNAPSHOT}/rc1/apache-plc4x-code-generation-{0.13.0-SNAPSHOT}-source-release.zip ./build-tools/code-generation/{0.13.0-SNAPSHOT}/rc1/apache-plc4x-code-generation-{0.13.0-SNAPSHOT}-source-release.zip.asc ./build-tools/code-generation/{0.13.0-SNAPSHOT}/rc1/apache-plc4x-code-generation-{0.13.0-SNAPSHOT}-source-release.zip.sha512 I usually prepare exactly the same directory structure, starting with the {0.13.0-SNAPSHOT} locally and then just import everything using the following command: svn import {0.13.0-SNAPSHOT} https://dist.apache.org/repos/dist/dev/plc4x/build-tools/code-generation/{0.13.0-SNAPSHOT} -m\"Staging of rc1 of PLC4X Build-Tools (Code-Generation) {0.13.0-SNAPSHOT}\" The KEYS file contains the PGP public key which belongs to the private key used to sign the release artifacts. If this is your first release be sure to add your key to this file. For the format have a look at the file itself. It should contain all the information needed. Be sure to stage exactly the README and RELEASE_NOTES files contained in the root of your project. Ideally you just copy them there from there. The three -source-release.zip artifacts should be located in the directory: code-generation/target/checkout/code-generation/target So, after committing these files to SVN, you are ready to start the vote. After staging the release candidate in the Apache SVN, it is time to actually call out the vote. For this we usually send two emails. The following would be the one used to do our first TLP release: E-Mail Topic: [VOTE] Apache PLC4X Build-Tools Code-Generation {0.13.0-SNAPSHOT} RC1 Message: Apache PLC4X Build-Tools Code-Generation {0.13.0-SNAPSHOT} has been staged under [2] and it’s time to vote on accepting it for release. All Maven artifacts are available under [1]. Voting will be open for 72hr. A minimum of 3 binding +1 votes and more binding +1 than binding -1 are required to pass. Repository: https://gitbox.apache.org/repos/asf/plc4x-build-tools.git Release tag: releases/code-generation/{0.13.0-SNAPSHOT} Hash for the release tag: {replacethiswiththerealgitcommittag} Per [3] \"Before voting +1 PMC members are required to download the signed source code package, compile it as provided, and test the resulting executable on their own platform, along with also verifying that the package meets the requirements of the ASF policy on releases.\" You can achieve the above by following [4]. [ ] +1 accept (indicate what you validated - e.g. performed the non-RM items in [4]) [ ] -1 reject (explanation required) [1] https://repository.apache.org/content/repositories/orgapacheplc4x-{somefourdigitnumber} [2] https://dist.apache.org/repos/dist/dev/plc4x/build-tools/code-generation/{0.13.0-SNAPSHOT}/rc1/ [3] https://www.apache.org/dev/release/validation.html#approving-a-release [4] https://plc4x.apache.org/plc4x/latest/developers/release/validation.html As it is sometimes to do the vote counting, if voting and discussions are going on in the same thread, we send a second email: E-Mail Topic: [DISCUSS] Apache PLC4X Build-Tools Code-Generation {0.13.0-SNAPSHOT} RC1 Message: This is the discussion thread for the corresponding VOTE thread. Please keep discussions in this thread to simplify the counting of votes. If you have to vote -1 please mention a brief description on why and then take the details to this thread. Now we have to wait 72 hours till we can announce the result of the vote. This is an Apache policy to make it possible for anyone to participate in the vote, no matter where that person lives and not matter what weekends or public holidays might currently be. The vote passes, if at least 3 +1 votes are received and more +1 are received than -1. After the 72-our minimum wait period is over, and we have fulfilled the requirement of at least 3 +1 votes and more +1 than -1, a final reply is sent to the vote thread with a prefix of [RESULT] in the title in which the summary of the vote is presented in an aggregated form. E-Mail Topic: [RESULT] [VOTE] Apache PLC4X Build-Tools Code-Generation {0.13.0-SNAPSHOT} RC1 Message: So, the vote passes with 3 +1 votes by PMC members and one +1 vote by a non PMC member. Chris As soon as the votes are finished, and the results were in favor of a release, the staged artifacts can be released. This is done by moving them inside the Apache SVN. svn move -m \"Release Apache PLC4X {0.13.0-SNAPSHOT}\" \\ https://dist.apache.org/repos/dist/dev/plc4x/build-tools/code-generation/{0.13.0-SNAPSHOT}/rc1 \\ https://dist.apache.org/repos/dist/release/plc4x/build-tools/code-generation/{0.13.0-SNAPSHOT} This will make the release artifacts available and will trigger them being copied to mirror sites. This is also the reason why you should wait at least 24 hours before sending out the release notification emails. As a lot of mirrors are serving our releases, it is the Apache policy to clean old releases from the repo if newer versions are released. This can be done like this: svn delete https://dist.apache.org/repos/dist/release/plc4x/0.3.0/ -m\"deleted version 0.3.0\" After this, https://dist.apache.org/repos/dist/release/plc4x should only contain the latest release directory. The probably simplest part is releasing the Maven artifacts. In order to do this, the release manager logs into Nexus at https://repository.apache.org/, selects the staging repository and clicks on the Release button. This will move all artifacts into the Apache release repository and delete the staging repository after that. All release artifacts released to the Apache release repo, will automatically be synced to Maven central. The `release branch should always point to the last released version. This has to be done with git git checkout release git merge releases/code-generation/{0.13.0-SNAPSHOT} When there are conflicts it could help to use the theirs merge strategy, i.e., git merge -X theirs releases/code-generation/{0.13.0-SNAPSHOT} Possibly a manual conflict resolution has to be done afterwards. After that, changes need to be pushed. In contrast to main releases of PLC4X we won’t do any GitHub Issues version updates, updating of the download page or notifying of the world email to announce@apache.org So now you’re done. Congrats!","title":"Releasing PLC4X Build-Tools","component":"plc4x","version":"pre-release","name":"build-tools","url":"/plc4x/pre-release/developers/release/build-tools.html","titles":[{"text":"Creating a release branch (For the code-generation module)","hash":"_creating_a_release_branch_for_the_code_generation_module","id":1},{"text":"Preparing develop for the next iteration","hash":"_preparing_develop_for_the_next_iteration","id":2},{"text":"Release stabilization phase","hash":"_release_stabilization_phase","id":3},{"text":"Preparing a release","hash":"_preparing_a_release","id":4},{"text":"What if something goes wrong?","hash":"_what_if_something_goes_wrong","id":5},{"text":"Performing a release","hash":"_performing_a_release","id":6},{"text":"Staging a release","hash":"_staging_a_release","id":7},{"text":"Starting a vote on the mailing list","hash":"_starting_a_vote_on_the_mailing_list","id":8},{"text":"Releasing after a successful vote","hash":"_releasing_after_a_successful_vote","id":9},{"text":"Cleaning up older release versions","hash":"_cleaning_up_older_release_versions","id":10},{"text":"Releasing the Maven artifacts","hash":"_releasing_the_maven_artifacts","id":11},{"text":"Merge back release version to release branch","hash":"_merge_back_release_version_to_release_branch","id":12}]},"35":{"id":35,"text":"","title":"Releasing and Validating Releases","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/developers/release/index.html","titles":[]},"36":{"id":36,"text":"Please be sure to execute the release with a Java version 11 or the Karaf feature tests will not run. Update the RELEASE_NOTES Check year in NOTICE Create release branch: mvn release:branch -P with-c,with-dotnet,with-go,with-java,with-python,enable-all-checks -DbranchName=rel/{current-short-version} Add a new section to the RELEASE_NOTES on develop Prepare the release: mvn release:prepare -P with-c,with-dotnet,with-go,with-java,with-python,enable-all-checks Perform the release: mvn clean release:perform Close the staging repo on Nexus Stage the release artifacts in SVN Vote on the mailing list Move RC to the release section of SVN Remove old releases in SVN Release staging repo on Nexus Add the version to the DOAP file on develop Update Download site Update GitHub Issues Merge back release version to release branch Send announce email Be sure you are using a JDK and not a JRE, or the release will fail because the release can’t execute the javadoc executable. As part of the release process, Maven will upload maven release artifacts to a so-called staging repository. This can be thought of as an ad-hoc Maven repository that contains only the artifacts for one release. This helps reviewers to see what’s in the convenience maven package and to release that to the public repos with one click. In order to be allowed to upload artifacts, your account has to be enabled for this, and you have to tell Maven about your credentials. In order to do this, you should provide these credentials via .m2/settings.xml. So if you don’t already have one, you should create a .m2 directory in your user home and inside that create a settings.xml file with at least this content: apache.snapshots.https {user-id} {user-pass} apache.releases.https {user-id} {user-pass} This tells maven to use above credentials as soon as a repository with the id apache.snapshots.https or apache.releases.https is being used. For a release all you need is the releases repo, but it is good to have the other in place as it enables you to also deploy SNAPSHOTs from your system. There repos are defined in the apache parent pom and is identical for all Apache projects. Additionally, all artifacts are automatically signed by the release build. In order to be able to do this you need to set up GPG. The key being used to sign the artifacts will have to be linked to your Apache E-Mail ({apache-id}@apache.org) and verified by at least one fellow Apache committer (Ideally more) that have trusted keys themselves. Usually for this you have to get in touch - in real life - with any Apache committer with a trusted key. Attending an ApacheCon is usually a great way to do this as usually every ApacheCon has a Key Signing event in its schedule. He can then sign your key and hereby enable you to sign Apache release artifacts. There’s a detailed description here. However, in contrast to that documentation, upload your key to the following servers: pool.sks-keyservers.net and keyserver.ubuntu.com as these are the ones Nexus is checking. If you happen to have multiple keys, adding the following profile to your settings.xml should help: apache-release 5C60D6B9 true topsecret-password Currently, there is a Java-Version sweet-spot for being able to release all modules and that is Java 11. So be sure to set Java 11 as the java version used to do the release. Also, at least Maven 3.6 is required for CMake. Ideally use the Maven-Wrapper to ensure the Maven version fits the build. On some systems (mainly Mac) gpg signing can result in errors like: [INFO] --- maven-gpg-plugin:3.0.1:sign (sign-release-artifacts) @ plc4x-parent --- gpg: signing failed: Inappropriate ioctl for device In this case adding the following helps: export GPG_TTY=$(tty) Usually you will have to update the RELEASE_NOTES document to the new version. I would suggest doing this prior to the branch as otherwise you will definitely have to port it back to develop. So remove the SNAPSHOT and (Unreleased) markers from the file and add missing parts. Also, if you are doing the first release in a new year, it is advisable to search for the old year and check if any occurrences are ok the way they are. Usually the NOTICE file has to be adjusted. According to SemVer, we have: Major, Minor and Bugfix releases. For each new Major and Minor release we create a new branch at the beginning of a code-freeze phase. So if currently the project version in develop is 0.13.0-SNAPSHOT, we create a branch rel/{current-short-version}. When creating the branch is exactly the moment in which the version in develop is incremented to the next minor version. This can and should be automated by the maven-release-plugin. Per default the plugin will ask for the working copy version during the build execution. This is the version the develop branch will be changed to. In contrast to normal builds, it is important to enable all profiles when creating the branch as only this way will all modules versions be updated. Otherwise, the non-default modules on develop will reference the old version which will cause problems when building. mvn release:branch -P with-c,with-dotnet,with-go,with-java,with-python,enable-all-checks -DbranchName=rel/{minor-version} Per default the plugin suggests the next bugfix version as working version, however we want it to use the next minor version. So in case of preparing the release branch for 0.13.0-SNAPSHOT the command would be the following: mvn release:branch -P with-c,with-dotnet,with-go,with-java,with-python,enable-all-checks -DbranchName=rel/{current-short-version} The plugin will then aks for the version: What is the new working copy version for \"PLC4X\"? (org.apache.plc4x:plc4x-parent) {current-next-incremental-version}-SNAPSHOT: : {current-next-minor-version}-SNAPSHOT Here the suggested default has to be manually overridden. This step now should perform quite quickly as no build and no tests are involved. However, in the end the versions of the develop branch are updated and a new rel/{current-short-version} branch is created. Now is a good time to add a new section to the RELEASE_NOTES document for the new SNAPSHOT version. Here comes a template: ============================================================== (Unreleased) Apache PLC4X {current-next-minor-version}-SNAPSHOT ============================================================== New Features ------------ Incompatible changes -------------------- Bug Fixes --------- // Rest of the file Also be sure to do a quick full-text-search to check if the version was updated correctly everywhere. If you find anything here, you will need to pay attention during the release. Now usually comes a phase in which last tests and checks should be performed. If any problems are found, they have to be fixed in the release branch. Changes should either be re applied in develop or cherry-picked, however merging things back can cause a lot of problems, and we no longer have the same versions. Same as with creating the branch it is important to enable all profiles when creating the branch as only this way will all modules versions be updated. Otherwise, the non-default modules on develop will reference the old version which will cause problems when building. For people building with some additional profiles from the source release will be impossible. As especially when switching a lot between different branches, it is recommended to do a clean checkout of the repository. Otherwise, a lot of directories can be left over, which would be included in the source-release zip. In order to prepare a release-candidate, the first step is switching to the corresponding release-branch. After that, the following command will to all preparation steps for the release: mvn release:prepare -P with-c,with-dotnet,with-go,with-java,with-python,enable-all-checks (The -P with-c,with-dotnet,with-go,with-java,with-python,enable-all-checks tells maven to activate the all profiles that partition the build and makes sure the versions of all modules are updated as part of the release) In general the plugin will now ask you 3 questions: The version we want to release as (It will suggest the version you get by omitting the -SNAPSHOT suffix) The name of the tag the release commit will be tagged with in the SCM (Name it v{release-version} (v0.13.0 in our case) The next development version (The version present in the pom after the release) ({current-next-bugfix-version} in our case) Usually for 1 and 3 the defaults are just fine, make sure the tag name is correct as this usually is different. What the plugin now does, is automatically execute the following operations: Check we aren’t referencing any SNAPSHOT dependencies. Update all pom versions to the release version. Run a build with all tests Commit the changes (commit message: [maven-release-plugin] prepare release v0.13.0) Push the commit Tag the commit Update all poms to the next development version. Commit the changes (commit message: [maven-release-plugin] prepare for next development iteration) Push the commit However, this just prepared the git repository for the release, we have to perform the release to produce and stage the release artifacts. Please verify the git repository at: https://gitbox.apache.org/repos/asf?p=plc4x.git is in the correct state. Please select the release branch and verify the commit log looks similar to this It is important that the commit with the message \"[maven-release-plugin] prepare release v{release-version}\" is tagged with the release tag (in this case v0.13.0) If you check the commit itself, it should mainly consist of version updates like this: The root pom has a few more changes, but in general this should be what you are seeing. After that should come a second commit: This now updates the versions again, but this time from the release version to the one we selected for the next development iteration (in this case 0.3.1-SNAPSHOT) If the commit history doesn’t look like this, something went wrong. If something goes wrong, you can always execute: mvn release:rollback -P with-c,with-dotnet,with-go,with-java,with-python,enable-all-checks It will change the versions back and commit and push things. Also, should you check if you have any uncommitted changes (as our code-generation can make git think they are \"dirty\") However, it will not delete the tag in GIT (locally and remotely). So you have to do that manually or use a different tag next time. This is done by executing another goal of the maven-release-plugin: mvn clean release:perform The clean is only for making sure there is no artifacts in target directly, but only in target/checkout/target. This executes automatically as all information it requires is located in the release.properties file the prepare-goal prepared. The first step is that the perform-goal checks out the previously tagged revision into the root modules target/checkout directory. Here it automatically executes a maven build (You don’t have to do this, it’s just that you know what’s happening): mvn deploy -P apache-release As the apache-release profile is also activated, this builds and tests the project as well as creates the JavaDocs, Source packages and signs each of these with your PGP key. We are intentionally not adding the other profiles, as these either produce binary artifacts that usually only work on the system they were compiled on (C++, .Net) or we haven’t found a good way to distribute them via Maven yet (Python). As this time the build is building with release versions, Maven will automatically choose the release url for deploying artifacts. The way things are set up in the apache parent pom, is that release artifacts are deployed to a so-called staging repository. You can think of a staging repository as a dedicated repository created on the fly as soon as the first artifact comes in. After the build you will have a nice and clean Maven repository at https://repository.apache.org/ that contains only artifacts from the current build. After the build it is important to log in to Nexus at https://repository.apache.org/, select Staging Repositories and find the repository with the name: orgapacheplc4x-{somenumber}. Select that and click on the Close button. Now Nexus will do some checks on the artifacts and check the signatures. As soon as it’s finished, we are done on the Maven side and ready to continue with the rest of the release process. A release build also produces a so-called source-assembly zip. This contains all sources of the project and will be what’s actually the release from an Apache point of view and will be the thing we will be voting on. This file will also be signed and SHA512 hashes will be created. Each new release and release-candidate has to be staged in the Apache SVN under: https://dist.apache.org/repos/dist/dev/plc4x/ The directory structure of this directory is as follows: ./KEYS ./0.13.0/ ./0.13.0/rc1 ./0.13.0/rc1/README ./0.13.0/rc1/RELEASE_NOTES ./0.13.0/rc1/apache-plc4x-0.13.0-source-release.zip ./0.13.0/rc1/apache-plc4x-0.13.0-source-release.zip.asc ./0.13.0/rc1/apache-plc4x-0.13.0-source-release.zip.sha512 You can generally import the stuff, by preparing a directory structure like above locally and then using svn import to do the importing: cd ./{current-full-version} svn import rc1 https://dist.apache.org/repos/dist/dev/plc4x/{current-full-version}/rc1 -m\"Staging of rc1 of PLC4X {current-full-version}\" The KEYS file contains the PGP public key which belongs to the private key used to sign the release artifacts. If this is your first release be sure to add your key to this file. For the format have a look at the file itself. It should contain all the information needed. Be sure to stage exactly the README and RELEASE_NOTES files contained in the root of your project. Ideally you just copy them there from there. All three -source-relese.zip artifacts should be located in the directory: target/checkout/target After committing these files to SVN you are ready to start the vote. After staging the release candidate in the Apache SVN, it is time to actually call out the vote. For this we usually send two emails. The following would be the one used to do our first TLP release: E-Mail Topic: [VOTE] Apache PLC4X 0.13.0 RC1 Message: Apache PLC4X 0.13.0 has been staged under [2] and it’s time to vote on accepting it for release. All Maven artifacts are available under [1]. Voting will be open for 72hr. A minimum of 3 binding +1 votes and more binding +1 than binding -1 are required to pass. Release tag: v0.13.0 Hash for the release tag: {replacethiswiththerealgitcommittag} Per [3] \"Before voting +1 PMC members are required to download the signed source code package, compile it as provided, and test the resulting executable on their own platform, along with also verifying that the package meets the requirements of the ASF policy on releases.\" You can achieve the above by following [4]. [ ] +1 accept (indicate what you validated - e.g. performed the non-RM items in [4]) [ ] -1 reject (explanation required) [1] https://repository.apache.org/content/repositories/orgapacheplc4x-{somefourdigitnumber} [2] https://dist.apache.org/repos/dist/dev/plc4x/0.13.0/rc1 [3] https://www.apache.org/dev/release.html#approving-a-release [4] https://cwiki.apache.org/confluence/display/PLC4X/Validating+a+staged+Release As it is sometimes to do the vote counting, if voting and discussions are going on in the same thread, we send a second email: E-Mail Topic: [DISCUSS] Apache PLC4X 0.13.0 RC1 Message: This is the discussion thread for the corresponding VOTE thread. Please keep discussions in this thread to simplify the counting of votes. If you have to vote -1 please mention a brief description on why and then take the details to this thread. Now we have to wait 72 hours till we can announce the result of the vote. This is an Apache policy to make it possible for anyone to participate in the vote, no matter where that person lives and not matter what weekends or public holidays might currently be. The vote passes, if at least 3 +1 votes are received and more +1 are received than -1. After the 72-hour minimum wait period is over and we have fulfilled the requirement of at least 3 +1 votes and more +1 than -1, a final reply is sent to the vote thread with a prefix of [RESULT] in the title in which the summary of the vote is presented in an aggregated form. E-Mail Topic: [RESULT] [VOTE] Apache PLC4X 0.13.0 RC1 Message: So, the vote passes with {number of +1 votes} +1 votes by PMC members {number of +1 votes from non-pmc members} +1 vote by a non PMC member. As soon as the votes are finished, and the results were in favor of a release, the staged artifacts can be released. This is done by moving them inside the Apache SVN. svn move -m \"Release Apache PLC4X 0.13.0\" \\ https://dist.apache.org/repos/dist/dev/plc4x/0.13.0/rc1 \\ https://dist.apache.org/repos/dist/release/plc4x/0.13.0 This will make the release artifacts available and will trigger them being copied to mirror sites. This is also the reason why you should wait at least 24 hours before sending out the release notification emails. If however for some reason it is needed to prepare a new RC for the release. Please follow these steps: Set the versions of the release branch to the previous version by using the versions:set plugin: mvn versions:set -DprocessAllModules=true -P with-c,with-dotnet,with-go,with-java,with-python,enable-all-checks Delete the tag locally: git tag -d v{current-full-version} Delete the tag remotely: git push --delete origin v{current-full-version} Commit all changes Drop the staging repo at https://repository.apache.org Delete the previous RC in SVN svn rm https://dist.apache.org/repos/dist/dev/plc4x/0.9.0/rc1 -m\"Removed rc1 of PLC4x 0.9.0\" Reply to the VOTE and the DISCUSS announcing the vote has been cancelled and explain why and that you’re going to start a new RC soon. Ideally prefix the title of the Emails with [CANCELLED] After this you should be ready to start a new RC. As a lot of mirrors are serving our releases, it is the Apache policy to clean old releases from the repo if newer versions are released. This can be done like this: svn delete https://dist.apache.org/repos/dist/release/plc4x/{current-full-version}/ -m\"deleted version {current-full-version}\" After this https://dist.apache.org/repos/dist/release/plc4x should only contain the latest release directory. Probably the simplest part is releasing the Maven artifacts. In order to do this, the release manager logs into Nexus at https://repository.apache.org/, selects the staging repository and clicks on the Release button. This will move all artifacts into the Apache release repository and delete the staging repository after that. All release artifacts released to the Apache release repo, will automatically be synced to Maven central. Now that the release is out, in the develop branch, update the DOAP file for plc4x. This is found at: src/site/resources-filtered/plc4x-doap.rdf Please add the just released version to the top of the versions. This file is needed for Apache’s tooling to automatically keep track of project release activity, and we use this internally too to automatically update the documentation to always reference the latest released version automatically. The release branch should always point to the last released version. This has to be done with git git checkout release git merge v0.13.0 When there are conflicts it could help to use the theirs merge strategy, i.e., git merge -X theirs v0.13.0 Possibly a manual conflict resolution has to be done afterwards. After that, changes need to be pushed. Set the released version to \"released\" and set the \"release-date\" Add the next version to the versions. The URL http://plc4x.apache.org/users/download.html has to be changed, and the current release has to be listed there. This is done by changing the download.adoc under src/site/users/ (in the develop branch, as this is where the site is generated from!) Copy the last release down to Previous Releases Point the download links of the last release to archive, e.g. http://archive.apache.org/dist/plc4x/0.13.0/apache-plc4x-0.13.0-source-release.zip Add the new Release under Current Releases and change all links. Note: Please add an anchor for the toc Update the sections for the changes according to the RELEASE_NOTES from the release Note: Transfer all to ascii-doc notation to ensure correct rendering of the site Also remove the JIRA TICKET ids in Front Make sure you have given the Apache mirrors time to fetch the release files by waiting at least 24 hours after moving the release candidate to the release part of the SVN. After that it is time to announce your release to the world: From: your apache email address To: announce@apache.org CC: dev@plc4x.apache.org E-Mail Topic: [ANNOUNCE] Apache PLC4X 0.13.0 released Message: The Apache PLC4X team is pleased to announce the release of Apache PLC4X 0.13.0 PLC4X is a set of libraries for communicating with industrial programmable logic controllers (PLCs) using a variety of protocols but with a shared API. The current release contains drivers able to communicate with industrial PLCs using one of the following protocols: * AB-ETH * Beckhoff ADS * CanOpen * EtherNet/IP / EIP * Firmata * KNXNet/IP * Modbus * OPC UA * Siemens S7 (0x32) Beyond that we also provide integration modules for the following Apache projects and frameworks: * Apache Calcite * Apache Camel * Apache Edgent (Incubating / Retired) * Apache Kafka (Kafka Connect) * Apache NiFi * Logstash It also provides an `OPC UA Server` which can act as a bridge between legacy systems and OPC UA. Visit the Apache PLC4X website [1] for general information or the downloads page [2] for release notes and download information. Regards, The Apache PLC4X team [1] http://plc4x.apache.org [2] http://plc4x.apache.org/users/download.html It is important to note that you have to send this email from your apache email address, or it will be rejected. This wasn’t very simple for me to set up. A general description can be found here: https://reference.apache.org/committer/email Here’s what I did in Google Mail to allow sending of emails: https://gmail.googleblog.com/2009/07/send-mail-from-another-address-without.html Note … you will be able to select the alternate sending address if you click into the recipients line of a new email (Not very intuitive). After that email is out the door, you’re done. Congrats!","title":"Releasing PLC4X","component":"plc4x","version":"pre-release","name":"release","url":"/plc4x/pre-release/developers/release/release.html","titles":[{"text":"TL/DR","hash":"_tldr","id":1},{"text":"Preparing your system for being able to release","hash":"_preparing_your_system_for_being_able_to_release","id":2},{"text":"Preparing the codebase for a release","hash":"_preparing_the_codebase_for_a_release","id":3},{"text":"Creating a release branch","hash":"_creating_a_release_branch","id":4},{"text":"Preparing develop for the next iteration","hash":"_preparing_develop_for_the_next_iteration","id":5},{"text":"Release stabilization phase","hash":"_release_stabilization_phase","id":6},{"text":"Preparing a release","hash":"_preparing_a_release","id":7},{"text":"What if something goes wrong?","hash":"_what_if_something_goes_wrong","id":8},{"text":"Performing a release","hash":"_performing_a_release","id":9},{"text":"Staging a release","hash":"_staging_a_release","id":10},{"text":"Starting a vote on the mailing list","hash":"_starting_a_vote_on_the_mailing_list","id":11},{"text":"Releasing after a successful vote","hash":"_releasing_after_a_successful_vote","id":12},{"text":"Going back for a new release candidate","hash":"_going_back_for_a_new_release_candidate","id":13},{"text":"Cleaning up older release versions","hash":"_cleaning_up_older_release_versions","id":14},{"text":"Releasing the Maven artifacts","hash":"_releasing_the_maven_artifacts","id":15},{"text":"Add the version to the DOAP file","hash":"_add_the_version_to_the_doap_file","id":16},{"text":"Merge back release version to release branch","hash":"_merge_back_release_version_to_release_branch","id":17},{"text":"Updating GitHub Issues","hash":"_updating_github_issues","id":18},{"text":"Update the download site","hash":"_update_the_download_site","id":19},{"text":"Notifying the world","hash":"_notifying_the_world","id":20}]},"37":{"id":37,"text":"On MacOS and Linux the first 4 steps can be automated. For details please read the section about tooling after this chapter. Download all staged artifacts under the url specified in the release vote email into a directory we’ll now call download-dir. Verify the signature is correct: Additional Apache tutorial on how to verify downloads can be found here. gpg --verify apache-plc4x-{current-full-version}-source-release.zip.asc apache-plc4x-#{current-full-version}-source-release.zip Check if the check is successful. Check if the signature references an Apache email address. Verify the SHA512 hashes: Mac/Linux: shasum -a512 apache-plc4x-{current-full-version}-source-release.zip Windows (PowerShell): Get-FileHash -Algorithm SHA512 .\\apache-plc4x-code-generation-{current-full-version}-source-release.zip | Format-List Unzip the archive: unzip apache-plc4x-{current-full-version}-source-release.zip Verify the existence of LICENSE, NOTICE, README, RELEASE_NOTES files in the extracted source bundle. Verify the content of LICENSE, NOTICE, README, RELEASE_NOTES files in the extracted source bundle. (Especially pay attention to the year in the NOTICE file if this is the first release of the year) [RM] Verify the staged source README, RELEASE_NOTE files correspond to those in the extracted source bundle. [RM] Run RAT externally to ensure there are no surprises. java -jar apache-rat-0.13.jar apache-plc4x-{current-full-version}-source-release.zip > rat.log Search for SNAPSHOT references: find . -type f -name 'pom.xml' -exec grep -l \"SNAPSHOT\" {} \\; Search for Copyright references, and if they are in headers, make sure these files containing them are mentioned in the LICENSE file. Build the project according to the information in the README.md file. [RM] Build the project with all with-xyz profiles and tests enabled and an empty maven local repo: by appending -Dmaven.repo.local=../.m2 (On windows use -D\"maven.repo.local\"=\"../.m2\"). Even if we are using RAT to ensure sources have headers in place, still the project can contain exclusions that hide things from the check. The only way to avoid missing important files is by running RAT externally. If you haven’t got it, yet please download it form here. Also do I like to run RAT against the zip archive containing the source release as this way you avoid the problem of eventually scanning the binaries produced by the build (If you run RAT after building, it will complain about every jar and ever class file). java -jar apache-rat-0.13.jar apache-plc4x-0.13.0-source-release.zip > rat.log By piping the result into a text file gives you the chance to investigate the content more easily. In the tools directory we have a little script that can help with downloading and checking the hashes and signatures automatically. In order to execute this, please change directories into the projects base directory and execute the following command: tools/download_staged_release.sh 0.13.0 1 This will download all the files into a directory: downloaded-plc4x-0.13.01. After that it will calculate the SHA512 hash and compare it with the staged hash. Last not least it will validate the PGP key and print out some information on it. +1/-1 (binding) Name [] Download all staged artifacts under the url specified in the release vote email. [] Verify the signature is correct. [] Check if the signature references an Apache email address. [] Verify the SHA512 hashes. [] Unzip the archive. [] Verify the existence of LICENSE, NOTICE, README, RELEASE_NOTES files in the extracted source bundle. [] Verify the content of LICENSE, NOTICE, README, RELEASE_NOTES files in the extracted source bundle. [] [RM] Verify the staged source README, RELEASE_NOTE files correspond to those in the extracted source bundle. [] [RM] Run RAT externally to ensure there are no surprises. [] Search for SNAPSHOT references [] Search for Copyright references, and if they are in headers, make sure these files containing them are mentioned in the LICENSE file. [] Build the project according to the information in the README.md file. [] [RM] Build the project with all with-xyz profiles and tests enabled and an empty maven local repo. If everything is ok, I put \"OK\" int the square brackets. If there are minor issues, I put \"MINOR\" in there and, if it’s a short reason, I put an explanation at the end of the line. If it’s longer I put a longer section after the checklist. If there are major issues, I put \"FAIL\" in there and comment the same way as with minor issues.","title":"Validating a staged release","component":"plc4x","version":"pre-release","name":"validation","url":"/plc4x/pre-release/developers/release/validation.html","titles":[{"text":"Using RAT","hash":"_using_rat","id":1},{"text":"Release Tooling","hash":"_release_tooling","id":2},{"text":"Template for the email for voting","hash":"_template_for_the_email_for_voting","id":3}]},"38":{"id":38,"text":"","title":"Tutorials","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/developers/tutorials/index.html","titles":[]},"39":{"id":39,"text":"Currently, the build generates the serializers and parsers from a provided mspec specification. A typical full round-trip test for the model, parsers and serializers would look as follows: Starting from a byte array The parser is used to parse the byte array The parsed model instance is compared with an expected model If the expected model matched the expected one the model is serialized back to a byte array The resulting byte array is compared to the original byte array If the byte arrays are identical, the round-trip is regarded ok Doing this manually would require a lot of manual object construction and validation, so we created a framework for creating such tests. As XML, no matter what you think about it, allows simple and easy readable descriptions these tests are provided as XML files. All generated model classes allow parsing and serializing to XML via Jackson. A typical test looks like this: Read Input Registers Request 000000000006ff0408d20002 ModbusTcpADU false 0 255 2258 2 As you can see, the name provides a simple human readable name for the test which is used for reporting success and failure. The raw element contains the hex-representation of the binary input. After that the root-type specifies the base type used for parsing this data. In above example the test will use the ModbusTcpADUIO.serialize and ModbusTcpADUIO.parse methods for serializing and parsing. Some parsers require additional parameters for parsing. In above example the Modbus protocol can’t decide if something is a request or response from the data itself, so we have to pass that information in using a parser-arguments argument. The final element is the xml element, which contains the XML representation of the parsed object. Each test implements exactly the test-strategy sketched above, however for comparing the parsed and the expected model, we use XMLUint to serialize the parsed model to XML and compare that to the given XML in the test-case declaration. Multiple tests are usually wrapped into a testsuite document. In general this is just a container with a given testsuite name and a number of testcase elements. One important setting however controls the endianness of the protocol in general. This is controlled with a bigEndian attribute in the testsuite root element. An example testsuite document looks as follows: Allen-Bradley DF1 ... ... ... ... All logic is implemented in the plc4j-utils-test-utils module, so make sure to add the following test-dependency: org.apache.plc4x plc4j-utils-test-utils {project.version} test In order to run these tests as part of the build, as a last step we need to create a test-runner class. This is generally just a hand-full of boilerplate code, telling the test which document to use for testing. Following code snippet sort of looks the same for every testsuite: package org.apache.plc4x.java.modbus; import org.apache.plc4x.test.parserserializer.ParserSerializerTestsuiteRunner; public class ModbusIOTest extends ParserSerializerTestsuiteRunner { public ModbusIOTest() { super(\"/testsuite/ModbusTestsuite.xml\"); } } Here the document ModbusTestsuite.xml is located in the directory: src/test/resources/testsuite/.","title":"Testing Serializers and Parsers","component":"plc4x","version":"pre-release","name":"testing-serializers-and-parsers","url":"/plc4x/pre-release/developers/tutorials/testing-serializers-and-parsers.html","titles":[{"text":"Structure of a test","hash":"_structure_of_a_test","id":1},{"text":"Structure of a testsuite","hash":"_structure_of_a_testsuite","id":2},{"text":"The Junit runner","hash":"_the_junit_runner","id":3}]},"40":{"id":40,"text":"Please inspect other existing modules on how to implement some of this. Create a new protocol module for your protocol. Create the pom.xml file for the new module. Create a new mspec file in src/main/release/ with just one or two dummy types. Create a new Protocol class in src/main/java which implements org.apache.plc4x.plugins.codegenerator.protocol.Protocol. The value returned by getName() will be used in the maven driver code generation. Create a new file called src/main/resources/META-INF/services/org.apache.plc4x.plugins.codegenerator.protocol.Protocol and list the new protocol class. Test you can build the new protocol module. Create a new driver module under plc4j/drivers Create the pom.xml file for the new module. Be sure to add a maven dependency to your protocol module. Be sure you have the update-generated-code profile in there. Be sure to reference the protocol name used in your protocol module. Create the Driver class in src/main/java which implements org.apache.plc4x.java.api.PlcDriver. Create a file called src/main/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver and list the new driver class. Test you can build the new driver module and the code generation works. Create a capture of the communication you want to create a driver for. Open the capture in WireShark Start defining the types you see in your mspec file Create a file ParserSerializerTestsuite.xml in the protocol modules src/test/resources directory. Start adding empty test-cases for every packet in your recording, by copying the TCP/UDP/Whatever payload in Wireshark as hex-stream and pasting that in the raw element of a test-case. In the driver module, create a ParserSerializer test that extends org.apache.plc4x.test.parserserializer.ParserSerializerTestsuiteRunner in src/test/java which references the ParserSerializerTestsuite.xml file of your protocol module. Iteratively implement all the mspec types needed to process your captures: Add/update the types in the mspec file Rebuild the protocol module Rebuild the driver module (with the update-generate-code profile enabled) Run the ParserSerializer test As soon as you are able to process all captures of your observed communication, you can start implementing a driver protocol logic. TODO: Continue writing this.","title":"Strategy for creating a new Driver","component":"plc4x","version":"pre-release","name":"writing-driver","url":"/plc4x/pre-release/developers/tutorials/writing-driver.html","titles":[{"text":"Prepare a new protocol module","hash":"_prepare_a_new_protocol_module","id":1},{"text":"Prepare a new driver module","hash":"_prepare_a_new_driver_module","id":2},{"text":"Start implementing the protocol parser and serializer","hash":"_start_implementing_the_protocol_parser_and_serializer","id":3},{"text":"Start implementing the driver logic","hash":"_start_implementing_the_driver_logic","id":4}]},"41":{"id":41,"text":"On this page we’ll give a short introduction to the most important concepts that will help you understand Apache PLC4X better. The most important concepts from a user perspective are in general: Connections — protocols — transports — configuration Addresses The two parts where we have built abstractions from the real world in PLC4X API are the connection strings and the tag address strings. Both are pretty dependent on the type of device you are planning to communicate with. However, these can both be easily configured in an external configuration or passed in as arguments. If you are familiar with JDBC or ODBC, you will easily understand the concepts in PLC4X, as these were a great inspiration for the creation of Apache PLC4X. In general a connection is a physical or logical connection between two endpoints. This connection uses a technical transport mechanism and passes data following a given protocol logic. Therefore, we have modeled both of these aspects separately. Let’s start with the Transports: The following transports are currently available, but they will probably be more soon: CAN PCAP replay Raw Socket Serial Port (RS232 and RS485) TCP UDP Test While TCP, UDP are based on the normal TCP and UDP stack of the operating system, Raw sockets directly provide low-level access to Ethernet Frames. This allows them to not only be used in what we call passive-mode drivers for simply reading all network traffic, it also allows communicating with protocols that are Ethernet based, but don’t use TCP or UDP. This is usually the case with Fieldbus protocols, such as PROFINET or EtherCAT, which usually require lower latency than TCP and UDP can provide. The Serial Port transport simply reads and writes data to a given serial port. The probably most special forms of transport are currently the PCAP replay and the Test transport. The PCAP replay transport allows playing back network traffic packets that were recorded using tools like WireShark. This is really helpful for writing new drivers (especially passive mode drivers) without having to be connected to the real device. From a driver point of view there is actually no difference between a Raw Socket and a PCAP replay transport. The Test transport is generally built for being used inside the PLC4X test framework as it allows fine-grained access to the input and output of the drivers. With the test transport we can explicitly control which data is passed into and retrieved from drivers and to validate this in unit- and integration-tests. A fully qualified PLC4X connection string would look like this: {driver code}:{transport code}://{transport config}?{options} The driver code generally selects the protocol we want to use, the transport code now selects the type of transport that should be used. Depending on the selected transport mechanism the transport config tells the transport which resource it should use. For example with a TCP and UDP transport, this will be the IP address or hostname optionally followed by the Port. For a Serial transport this will be the name of the serial interface. Raw Sockets will require the device name or a MAC address and so on. For a full description of all transports and their options, please consult the Transport Documentation here. The last segment - options - can be used to fine tune some protocol or transport options to non-default values. Usually these vary quite a bit from protocol to protocol. For details on these options, please have a look at the Protocol Documentation here. Even if most transports also have common options, their defaults vary quite a bit, depending on the protocol being used. So, instead of having a look at the general Transport Documentation here, wach protocol documentation also contains a list of all supported transports as well as the transport configuration options and their defaults. The general structure of this part is always the same: ?{option-1-name}={option-1-value}&{option-2-name}={option-2-value}&{option-3-name}={option-3-value} So the options start with a ? and are then followed by name-value pairs, which are separated by ampersand characters &. A driver for a given protocol however usually has a default transport, so sometimes it is possible to omit the transport code. Also do most drivers define default values for the various configuration options, so in general you should only require to use configuration options, if you are using non-default settings. The shortest version of a fully qualified connection string would look something like this: {driver code}://{transport config} For more information on the default settings for a given protocol or transport, please check the corresponding drivers documentation. Addresses for individual tags on a PLC are extremely dependent on the used protocol. As we usually decided to stick to the address formats that are used in those particular environments, please check the Protocol Documentation on details about these address formats here. The tag syntax is fairly generic and can be summarized as type:address. Some protocols might support tag attributes which are specified as key-value pairs after primary tag address. For example coil:1{unit-id: 10}. Tag attributes are additional elements which depend on actual protocol. Starting from Apache PLC4X release 0.13 an experimental support for result set metadata is provided in plc4j. This metadata is dedicated to provide additional information which might be available at protocol (sample timestamp) or driver level (i.e. packet receive time). Consult again protocol documentation on specifics of this feature. The common metadata keys currently defined are: timestamp - timestamp for tag value provided by other communication party. timestamp_source - source of timestamp or receive_timestamp field, if any of these is provided. receive_timestamp - timestamp assumed upon receiving of packet with data.","title":"General Concepts","component":"plc4x","version":"pre-release","name":"general-concepts","url":"/plc4x/pre-release/users/getting-started/general-concepts.html","titles":[{"text":"Connections","hash":"_connections","id":1},{"text":"Connection Strings","hash":"_connection_strings","id":2},{"text":"Individual Resource Addresses (Tags)","hash":"_individual_resource_addresses_tags","id":3},{"text":"Tag metadata","hash":"_tag_metadata","id":4}]},"42":{"id":42,"text":"Depending on the programming language, the usage will differ, therefore please go to the Getting Started version of the language of choice. For guides on how to write PLC4X applications with Go, please go to the Go Getting Started For guides on how to write PLC4X applications with Java, please go to the Java Getting Started For guides on how to write PLC4X applications with Python, please go to the Python Getting Started","title":"Getting Started","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/users/getting-started/index.html","titles":[{"text":"Go/Golang","hash":"_gogolang","id":1},{"text":"Java","hash":"_java","id":2},{"text":"Python","hash":"_python","id":3}]},"43":{"id":43,"text":"Below tutorial will teach you how to create client certificate for use within production environments. This tutorial focuses on preparation of configuration. It does not dive in X.509 and PKI details nor specifics of any OPC-UA server. The Apache PLC4X client, as many other UA clients is able to create ad-hoc certificate for communication. While it softens entry bearer for many, it creates also a gap when with secured environments, which control certificate chains. There are several ways on how to organize certificates. In this little tutorial we will use open source tool called KeyStore Explorer, referred herein as KSE. This tool allows to create files which can be used as a cryptographic keystore for Java-based programs but not only. One of nice things which Java runtime introduced, was change of default keystore format from JKS (Java KeyStore) to PKCS#12. Install the tool using the way which is valid for your operating system, then open the tool. Entire process can be observed in below short screen capture: Step by step operations are. Navigate to File New or press CTRL+N to create new keystore. Pick PKCS#12 as desired store format. Navigate to Tools Generate key pair or press CTRL+G: Decide on key type (RSA, DSA, EC) and its size. RSA is a fairly common, confirm key size and click OK KSE will ask you about certificate details Go to Name field and click little phone book icon and click it. You will be able to specify common name (CN), organization unit (OU) and other fields, and confirm with OK Click Add Extensions, which is located below Name field (you will again see step 5 window), it will open next popup. Click Use Standard Template, select CA, then click OK. This will fill extensions with few rows, but do not close this window yet. Click + next to the list, and select Subject Alternative Name, then click OK. You will see again window with list, click + next to it. Select URI, and type client identifier in General Name Value field (i.e. urn:my:plc:client), and confirm via OK. Click OK to close certificate extensions prompt. Click OK to finish certificate creation. Enter key pair alias and confirm with OK. Enter private key password, confirm it in second field and click OK. Upon completion of these steps you should be presented with \"Key Pair Generation Successful\" message. Navigate to File Save or press CTRL+S to save keystore. Enter keystore password, for use within Java it must be same as private key password. Specify file location. Close KSE, your client private key and certificate is ready for use. For detailed use of options used to configure client please refer to documentation of Apache PLC4X OPC-UA driver. Please remember that keystore must be readable by your program. In case if you are not certain what is working directory of your program, specify full path to keystore.","title":"OPC UA : Client certificate creation","component":"plc4x","version":"pre-release","name":"opcua-client-certificate","url":"/plc4x/pre-release/users/getting-started/opcua-client-certificate.html","titles":[{"text":"Creating self-signed certificate using KSE","hash":"_creating_self_signed_certificate_using_kse","id":1},{"text":"Usage within OPC UA PLC4X client","hash":"_usage_within_opc_ua_plc4x_client","id":2}]},"44":{"id":44,"text":"","title":"Getting Started with C","component":"plc4x","version":"pre-release","name":"plc4c","url":"/plc4x/pre-release/users/getting-started/plc4c.html","titles":[]},"45":{"id":45,"text":"","title":"Getting Started with C#","component":"plc4x","version":"pre-release","name":"plc4cs","url":"/plc4x/pre-release/users/getting-started/plc4cs.html","titles":[]},"46":{"id":46,"text":"Just in case you want to get started with Go. In this part we’ll setup a new Go project. If you are familiar with this, you can go to the next chapter. Be sure to have installed Go on your system by downloading and installing it from https://golang.org/. Now that that’s done, create a new directory and console execute the following command: go mod init main This will effectively only create a go.mod file, which is sort of like Go’s counterpart to a Maven pom.xml. This should look like this: module main go 1.16 Now we need to create a app.go file which will be our main program. Create a file app.go with the following content: package main func main() { } By executing the command: go run app.go You will execute your first Go progran … however the output is rather underwhelming ;-) You’re now ready to continue. In order to write a valid PLC4X Go application, all you need, is to add a dependency to the plc4go module. Now all you need to do, is execute the following command: go get github.com/apache/plc4x/plc4go This will checkout the latest version of the Apache PLC4X PLC4Go module. As soon as we have released a PLC4Go version by adding the name of the release-tag will use an explicit version. This will be checked out in our home directory in ⁓/go/pkg/mod/github.com/apache/plc4/plc4go@v0.0.0-{some-commit-hash} In contrast to the PLC4J version this already contains all supported drivers. Perhaps we’ll change this in the future, but for now all comes in one bundle. Now you’re generally set to start writing your first PLC4Go program. In contrast to PLC4J, which uses the service lookup to find the transports and the drivers automatically, in PLC4Go they need to be manually registered at the driver manager. First we need to initialize the PlcDriverManager by registering the transports and drivers with it. // Create a new instance of the PlcDriverManager driverManager := plc4go.NewPlcDriverManager() // Register the Transports transports.RegisterTcpTransport(driverManager) transports.RegisterUdpTransport(driverManager) // Register the Drivers drivers.RegisterKnxDriver(driverManager) drivers.RegisterModbusDriver(driverManager) Now that the PlcDriverManager is configured, we can use it to get a new connection. // Get a connection to a remote PLC connectionRequestChanel := driverManager.GetConnection(\"modbus-tcp://192.168.23.30?unit-identifier=1\") // Wait for the driver to connect (or not) connectionResult := <-connectionRequestChanel // Check if something went wrong if connectionResult.Err != nil { fmt.Printf(\"Error connecting to PLC: %s\", connectionResult.Err.Error()) return } // If all was ok, get the connection instance connection := connectionResult.Connection // Make sure the connection is closed at the end defer connection.Close() In PLC4Go we make heavy use of Go channels, which are similar to Futures or Promisses. And please pay attention to the defer command. This adds a call to a stack of things that need to be called as soon as the program terminates. However in contrast to Java’s try-finally blocks, this isn’t executed at the end of the code-block, but really when the program terminates. So when working with many connections or when using connections in loops (if for example you are polling), then this will keep on piling up active connections, till either you are no longer able to connect cause your PLC denies connections or till you run out of memory. So if you only need the connection in a code block, be sure to explicitly close it after usage. After this code block we should be in possession of a connection instance. If we simply want to check the connectivity, we can use the Ping function on the connection object. Depending on the protocol used, it will exeute a command which only will complete if the connection is available. // Try to ping the remote device pingResultChannel := connection.Ping() // Wait for the Ping operation to finsh pingResult := <-pingResultChannel if pingResult.Err != nil { fmt.Printf(\"Couldn't ping device: %s\", pingResult.Err.Error()) return } Most probably you will want to read something from a PLC. This is done by a PlcReadRequest. First off all, it’s probably a good idea to check if this connection supports reading: if !connection.GetMetadata().CanRead() { fmt.Printf(\"This connection doesn't support read operations\") return } In order to create and run such a PlcReadRequest, please add the following code: Up to version 0.10.0 // Prepare a read-request readRequest, err := connection.ReadRequestBuilder(). AddQuery(\"field1\", \"holding-register:1:REAL\"). AddQuery(\"field2\", \"holding-register:3:REAL\"). Build() if err != nil { t.Errorf(\"error preparing read-request: %s\", connectionResult.Err.Error()) t.Fail() return } SNAPSHOT version // Prepare a read-request readRequest, err := connection.ReadRequestBuilder(). AddTagAddress(\"tag1\", \"holding-register:1:REAL\"). AddTagAddress(\"tag2\", \"holding-register:3:REAL\"). Build() if err != nil { t.Errorf(\"error preparing read-request: %s\", connectionResult.Err.Error()) t.Fail() return } If you have any errors in the addresses or whatever, you will get an err instead of a readRequest. For now, let’s assume you got all addresses correctly. // Execute a read-request readResponseChanel := readRequest.Execute() // Wait for the response to finish readRequestResult := <-readResponseChanel if readRequestResult.Err != nil { t.Errorf(\"error executing read-request: %s\", readRequestResult.Err.Error()) return } Please note that in this case we want to return a triple: PlcReadRequest, PlcReadResponse, err. As this is not supported in Go, the PlcReadRequestResult will contain all of these 3 elements. This will probably change soon. The API is still a bit in flux. Now in order to do something with the response: // Do something with the response value1 := readRequestResult.Response.GetValue(\"field1\") value2 := readRequestResult.Response.GetValue(\"field2\") fmt.Printf(\"\\n\\nResult field1: %f\\n\", value1.GetFloat32()) fmt.Printf(\"\\n\\nResult field2: %f\\n\", value2.GetFloat32()) The GetValue function returns a PlcValue instance, this had accessors for the most general Go types. Not implemented yet As the Modbus protocol, which we used in the above examples, doesn’t support subscriptions, we are using the KNX protocol for a demonstration on the subscription API. Subscribing to data can be considered similar to reading data, at least the subscription itself if very similar to reading of data. We first have to check if the connection supports this: if !connection.GetMetadata().CanSubscribe() { fmt.Printf(\"This connection doesn't support subscriptions operations\") return } Now we’ll create the subscription request. The main difference is that while reading there is only one form how you could read, with subscriptions there are different forms of subscriptions: Change of state (Event is sent as soon as a value changes) Cyclic (The Event is sent in regular cyclic intervals) Event (The Event is usually explicitly sent form the PLC as a signal) Therefore instead of using a normal AddItem, there are tree different functions as you can see in the following examples. Up to version 0.10.0 // Prepare a subscription-request subscriptionRequest, err := connection.SubscriptionRequestBuilder(). AddChangeOfStateItem(\"heating-actual-temperature\", \"*/*/10:DPT_Value_Temp\"). AddChangeOfStateItem(\"heating-target-temperature\", \"*/*/11:DPT_Value_Temp\"). AddCyclicItem(\"heating-valve-open\", \"*/*/12:DPT_OpenClose\", 500 * time.Millisecond). AddItemHandler(knxEventHandler). Build() if err != nil { fmt.Printf(\"Error preparing subscription-request: %s\", connectionResult.Err.Error()) return } SNAPSHOT version // Prepare a subscription-request subscriptionRequest, err := connection.SubscriptionRequestBuilder(). AddChangeOfStateTagAddress(\"heating-actual-temperature\", \"*/*/10:DPT_Value_Temp\"). AddChangeOfStateTagAddress(\"heating-target-temperature\", \"*/*/11:DPT_Value_Temp\"). AddCyclicTagAddress(\"heating-valve-open\", \"*/*/12:DPT_OpenClose\", 500 * time.Millisecond). AddItemHandler(knxEventHandler). Build() if err != nil { fmt.Printf(\"Error preparing subscription-request: %s\", connectionResult.Err.Error()) return } The Event hadnler for intercepting incoming events could look like this: Up to version 0.10.0 func knxEventHandler(event apiModel.PlcSubscriptionEvent) { for _, fieldName := range event.GetFieldNames() { if event.GetResponseCode(fieldName) == apiModel.PlcResponseCode_OK { groupAddress := event.GetAddress(fieldName) fmt.Printf(\"Got update for field %s with address %s. Value changed to: %s\\n\", fieldName, groupAddress, event.GetValue(fieldName).GetString()) } } } SNAPSHOT version func knxEventHandler(event apiModel.PlcSubscriptionEvent) { for _, tagName := range event.GetTagNames() { if event.GetResponseCode(tagName) == apiModel.PlcResponseCode_OK { groupAddress := event.GetTag(tagName).GetAddressString() fmt.Printf(\"Got update for tag %s with address %s. Value changed to: %s\\n\", tagName, groupAddress, event.GetValue(tagName).GetString()) } } } The AddCyclicField/AddCyclicTagAddress method requires a third parameter duration which specifies the interval, in which a given value is sent (even if it has not changed). Here the API differs slightly form the Java version, as in the request-builder itself you specify the reference to the callback handler which should be notified on incoming data. However, we will be aligning all API variants as much as possible in the near future. The request itself is executed exactly the same way the read and write operations are executed, using the Execute function. // Execute a subscription-request subscriptionRequestResultChanel := subscriptionRequest.Execute() // Wait for the response to finish subscriptionRequestResult := <-subscriptionRequestResultChanel if subscriptionRequestResult.Err != nil { fmt.Printf(\"Error executing read-request: %s\", subscriptionRequestResult.Err.Error()) return }","title":"Getting Started with Go","component":"plc4x","version":"pre-release","name":"plc4go","url":"/plc4x/pre-release/users/getting-started/plc4go.html","titles":[{"text":"Initializing a dummy project","hash":"_initializing_a_dummy_project","id":1},{"text":"Using the PLC4Go API directly","hash":"_using_the_plc4go_api_directly","id":2},{"text":"Connecting to a PLC","hash":"_connecting_to_a_plc","id":3},{"text":"Reading Data","hash":"_reading_data","id":4},{"text":"Writing Data","hash":"_writing_data","id":5},{"text":"Subscribing to Data","hash":"_subscribing_to_data","id":6}]},"47":{"id":47,"text":"In order to write a valid PLC4X Java application, all you need, is to add a dependency to the api module. When using Maven, all you need to do is add this dependency: org.apache.plc4x plc4j-api 0.13.0-SNAPSHOT This will allow you to write a valid application, that compiles fine. However, in order to actually connect to a device using a given protocol, you need to add this protocol implementation to the classpath. For example in order to communicate with an S7 device using the S7 Protocol, you would need to add the following dependency: org.apache.plc4x plc4j-driver-s7 0.13.0-SNAPSHOT runtime So as soon as your project has the API and a driver implementation available, you first need to get a PlcConnection instance. This is done via the PlcConnectionManager, which is provided to you by the PlcDriverManager by asking this to create an instance for a given PLC4X connection string. String connectionString = \"s7://10.10.64.20\"; try (PlcConnection plcConnection = PlcDriverManager.getDefault().getConnectionManager().getConnection(connectionString)) { ... do something with the connection here ... } PLC4X generally supports a very limited set of functions, which is not due to the fact, that we didn’t implement things, but that PLCs generally support a very limited set of functions. The basic functions supported by PLCs and therefore supported by PLC4X are: Discover Devices List resources in the PLC Read data Write data Subscribe for data In general, we will try to offer as many features as possible. So if a protocol doesn’t support subscription based communication it is our goal to simulate this by polling in the background, so it is transparent for the users (This simulation feature hasn’t been implemented yet though, but it’s on our roadmap). But there are some cases in which we can’t simulate or features are simply disabled intentionally: If a PLC and/or protocol don’t support writing or browsing, we simply can’t provide this functionality. Also do we plan on providing stripped down versions of drivers, that for example intentionally don’t support any writing of data. Therefore, we use metadata to check programmatically, if a given feature is available. // Check if this connection support reading of data. if (!plcConnection.getMetadata().isReadSupported()) { logger.error(\"This connection doesn't support reading.\"); return; } As soon as you have ensured that a feature is available, you are ready to build a first request. This is done by getting a PlcReadRequest.Builder: // Create a new read request: // - Give the single item requested an alias name PlcReadRequest.Builder builder = plcConnection.readRequestBuilder(); builder.addTagAddress(\"value-1\", \"%Q0.4:BOOL\"); builder.addTagAddress(\"value-2\", \"%Q0:BYTE\"); builder.addTagAddress(\"value-3\", \"%I0.2:BOOL\"); builder.addTagAddress(\"value-4\", \"%DB.DB1.4:INT\"); PlcReadRequest readRequest = builder.build(); So, as you can see, you prepare a request, by adding tag addresses to the request and in the end by calling the build method. If you are using the BrowseApi you might also have been provided with Tag objects. In that case simply use addTag and pass in the Tag object instead of the address string. The request is sent to the PLC by issuing the execute method on the request object: CompletableFuture asyncResponse = readRequest.execute(); asyncResponse.whenComplete((response, throwable) -> { try { ... process the response ... } catch (Exception e) { ... Handle any errors ... } }); In general, all requests are executed asynchronously. As soon as the request is fully processed, the callback gets called and will contain a readResponse, if everything went right or a throwable if there were problems. However, if you want to write your code in a more synchronous fashion, the following alternative will provide this: PlcReadResponse response = readRequest.execute().get(5000, TimeUnit.MILLISECONDS); Processing of the responses is identical in both cases in the synchronous approach you however need to catch any exceptions. The following example will demonstrate some of the options you have: for (String tagName : response.getTagNames()) { if(response.getResponseCode(tagName) == PlcResponseCode.OK) { int numValues = response.getNumberOfValues(tagName); // If it's just one element, output just one single line. if(numValues == 1) { logger.info(\"Value[\" + tagName + \"]: \" + response.getObject(tagName)); } // If it's more than one element, output each in a single row. else { logger.info(\"Value[\" + tagName + \"]:\"); for(int i = 0; i asyncResponse = writeRequest.execute(); asyncResponse.whenComplete((response, throwable) -> { ... process the response ... }); You could here also use the blocking option: PlcWriteResponse response = writeRequest.execute().get(); As we don’t have to process the data itself, for the write request, it’s enough to simply check the return code for each field. for (String tagName : response.getTagNames()) { if(response.getResponseCode(tagName) == PlcResponseCode.OK) { logger.info(\"Value[\" + tagName + \"]: updated\"); } // Something went wrong, to output an error message instead. else { logger.error(\"Error[\" + tagName + \"]: \" + response.getResponseCode(tagName).name()); } } Subscribing to data can be considered similar to reading data, at least the subscription itself if very similar to reading of data. First of all we first have to check if the connection supports this: // Check if this connection support subscribing to data. if (!plcConnection.getMetadata().isSubscribeSupported()) { logger.error(\"This connection doesn't support subscribing.\"); return; } Now we’ll create the subscription request. The main difference is that while reading there is only one form how you could read, with subscriptions there are different forms of subscriptions: Change of state (Event is sent as soon as a value changes) Cyclic (The Event is sent in regular cyclic intervals) Event (The Event is usually explicitly sent form the PLC as a signal) Therefore instead of using a normal addItem or addTag in newer versions, there are tree different methods as you can see in the following examples. // Create a new subscription request: // - Give the single tag requested an alias name PlcSubscriptionRequest.Builder builder = plcConnection.subscriptionRequestBuilder(); builder.addChangeOfStateTagAddress(\"value-1\", \"{some address}\"); builder.addCyclicTagAddress(\"value-2\", \"{some address}\", Duration.ofMillis(1000)); builder.addEventTagAddress(\"value-3\", \"{some alarm address}\"); PlcSubscriptionRequest subscriptionRequest = builder.build(); The addCyclicField/addCyclicTagAddress method requires a third parameter duration. The request itself is executed exactly the same way the read and write operations are executed, using the execute method, therefore just the short synchronous version here (The async version works just as good) PlcSubscriptionResponse response = subscriptionRequest.execute().get(); Now comes the little more tricky part, as subscriptions are always asynchronous, we have to register a callback for the connection to call as soon as there is news available: In general, you can’t say how many of your subscribed fields will be available in every callback. So it is double important to check or iterate over the field names. for (String subscriptionName : response.getFieldNames()) { final PlcSubscriptionHandle subscriptionHandle = response.getSubscriptionHandle(subscriptionName); subscriptionHandle.register(plcSubscriptionEvent -> { for (String tagName : plcSubscriptionEvent.getTagNames()) { System.out.println(plcSubscriptionEvent.getPlcValue(tagName)); } }); } Here there currently is a double iteration over the field names, this will probably change soon.","title":"Getting Started with Java","component":"plc4x","version":"pre-release","name":"plc4j","url":"/plc4x/pre-release/users/getting-started/plc4j.html","titles":[{"text":"Using the PLC4J API directly","hash":"_using_the_plc4j_api_directly","id":1},{"text":"Reading Data","hash":"_reading_data","id":2},{"text":"Writing Data","hash":"_writing_data","id":3},{"text":"Subscribing to Data","hash":"_subscribing_to_data","id":4}]},"48":{"id":48,"text":"Currently, you need to install PLC4Py from the GitHub repository instead of pypi. Once we have decided that PLC4Py is in a position to release we will publish to pypi. Navigate to the plc4py directory and run. This will install plc4py in your global repository. pip install . You now should be able to use PLC4Py in your application. A minimal example is shown below. import asyncio from plc4py.PlcDriverManager import PlcDriverManager connection_string = \"modbus://127.0.0.1:5020\" driver_manager = PlcDriverManager() async def communicate_with_plc(): \"\"\" Asynchronously communicates with a PLC using a PlcDriverManager. This function establishes a connection to the PLC defined by the connection_string. It builds a read request for a specific item (\"Random Tag\" in this case) using the connection's read request builder. The request is then executed asynchronously, and the response code is printed. \"\"\" print(f\"Connecting to plc: {connection_string}\") async with driver_manager.connection(connection_string) as connection: print(f\"Connected to {connection_string}\") with connection.read_request_builder() as builder: print(f\"Building read request\") builder.add_item(\"Random Tag\", \"4x00001[10]\") request = builder.build() print(f\"Request built\") print(f\"Executing request\") response = await connection.execute(request) print(f\"Request executed\") print(f\"Response code: {response.response_code}\") asyncio.run(communicate_with_plc()) PLC4X generally supports a very limited set of functions, which is not due to the fact, that we didn’t implement things, but that PLCs generally support a very limited set of functions. The basic functions supported by PLCs and therefore supported by PLC4X are: Discover Devices (Not yet available for PLC4Py) List resources in the PLC Read data Write data Subscribe for data (Not yet available for PLC4Py) In general, we will try to offer as many features as possible. So if a protocol doesn’t support subscription based communication it is our goal to simulate this by polling in the background, so it is transparent for the users (This simulation feature hasn’t been implemented yet though, but it’s on our roadmap). But there are some cases in which we can’t simulate or features are simply disabled intentionally: If a PLC and/or protocol don’t support writing or browsing, we simply can’t provide this functionality. Therefore, we use metadata to check programmatically, if a given feature is available. # Check if this connection support reading of data. if not connection.is_read_supported(): logger.error(\"This connection doesn't support reading.\") As soon as you have ensured that a feature is available, you are ready to build a first request. This is done by getting a ReadRequestBuilder: # Create a new read request: # - Give the single item requested an alias name with connection.read_request_builder() as builder: builder.add_item(\"Random Tag 1\", \"4x00001[10]\") builder.add_item(\"Random Tag 2\", \"4x00011\") request = builder.build() So, as you can see, you prepare a request, by adding tag addresses to the request and in the end by calling the build method. If you are using the BrowseApi you might also have been provided with Tag objects. In that case simply use add_tag and pass in the PlcTag object instead of the address string. The request is sent to the PLC by issuing the execute method on the request object: try: response = await connection.execute(request) except TimeOutException: # Handle timeout error except ... # Handle all your other errors In general, all requests are executed asynchronously. As soon as the request is fully processed, the callback gets called and will contain a ReadResponse, if everything went right or an excception if there were problems. The following example will demonstrate some of the options you have: for tag_name in response.tag_names: if response.tags[tag_name].response_code == PlcResponseCode.OK: num_values: int = len(response.tags[tag_name].value) # If it's just one element, output just one single line. if num_values == 1: logger.info(\"Value[\" + tag_name + \"]: \" + response.tags[tag_name].value) else: # If it's more than one element, output each in a single row. logger.info(\"Value[\" + tag_name + \"]:\") for i in response.tags[tag_name].value.get_list(): logger.info(\" - \" + str(i)) else: # Something went wrong, to output an error message instead. logger.error(\"Error[\" + tag_name + \"]: \" + response.tags[tag_name].name()) In the for-loop, we are demonstrating how the user can iterate over the tag aliases in the response. In case of an ordinary read request, this will be predefined by the items in the request, however in case of a subscription response, the response might only contain some of the items that were subscribed. Before accessing the data, it is advisable to check if an item was correctly returned. This is done by the response_code property for a given alias. If this is PlcResponseCode.OK, everything is ok, however it could be one of the following: NOT_FOUND ACCESS_DENIED INVALID_ADDRESS INVALID_DATATYPE INTERNAL_ERROR RESPONSE_PENDING Assuming the return code was OK, we can continue accessing the data. As all PlcValue items support the len property, the user can check how many items of a given type are returned by calling len(response.tags[tag_name].value) You can then treat the values in the PlcList as a list using response.tags[tag_name].value.get_list() In general the structure of code for writing data is extremely similar to that of reading data. So first it is advisable to check if this connection is even able to write data: // Check if this connection support writing of data. if not plc_connection.is_write_supported(): logger.error(\"This connection doesn't support writing.\") As soon as we are sure that we can write, we create a new PlcWriteRequest.Builder: // Create a new write request: // - Give the single item requested an alias name // - Pass in the data you want to write (for arrays, pass in a list of values) with connection.write_request_builder() as builder: builder.add_item(\"Random Tag 1\", \"4x00001[2]\", PlcList([PlcINT(1), PlcINT(2)])) builder.add_item(\"Random Tag 2\", \"4x00011\", PlcINT(1)) request = builder.build() The same way read requests are sent to the PLC by issuing the execute method on the request object: try: response = await connection.execute(request) except TimeOutException: # Handle timeout error except ... # Handle all your other errors As we don’t have to process the data itself, for the write request, it’s enough to simply check the return code for each field. for tag_name in response.tag_names: if response.tags[tag_name].response_code == PlcResponseCode.OK: logger.info(\"Value[\" + tag_name + \"]: updated\"); else: # Something went wrong, to output an error message instead. logger.error(\"Error[\" + tag_name + \"]: \" + response.tags[tag_name].name()) Coming Soon","title":"Getting Started with Python","component":"plc4x","version":"pre-release","name":"plc4py","url":"/plc4x/pre-release/users/getting-started/plc4py.html","titles":[{"text":"Using the PLC4PY API directly","hash":"_using_the_plc4py_api_directly","id":1},{"text":"Reading Data","hash":"_reading_data","id":2},{"text":"Writing Data","hash":"_writing_data","id":3},{"text":"Subscribing to Data","hash":"_subscribing_to_data","id":4}]},"49":{"id":49,"text":"Especially when it comes to trying to verify if an issue you are facing has already been fixed in the development version, you might want to or be asked to try out the absolute latest version of PLC4X. You can generally do this by adding \"-SNAPSHOT\" to the version number of PLC4X. We also provide convenience built SNAPSHOT versions, however are these not automatically synced with Maven Central. So Maven will not automatically be able to find them. Our SNAPSHOT versions are deployed on the Apache Maven repository. In order to access these, you need to add the following block to your pom.xml file: apache-snapshots https://repository.apache.org/content/repositories/snapshots false true apache-snapshots https://repository.apache.org/content/repositories/snapshots false true After adding this block, you should be able to also use SNAPSHOT versions.","title":"Using SNAPSHOT versions","component":"plc4x","version":"pre-release","name":"using-snapshots","url":"/plc4x/pre-release/users/getting-started/using-snapshots.html","titles":[]},"50":{"id":50,"text":"If you want to get started with Apache PLC4X, but don’t have any PLC at hand, this tutorial will demonstrate how you can use a virtual Modbus Slave software to simulate communication with Modbus enabled PLCs. Such a fully open-source software is ModbusPal which is available from here. All you need, is to download the file called ModbusPal.jar. In order to run the software, you just need to execute the following command in the same directory you downloaded the Jar to: java -jar ModbusPal.jar After this you will see the ModbusPal UI, which will look like this: Figure 1. ModbusPal Main UI Here be sure that the TCP port is set to 502 (Which is the default Modbus port). Next click on Add to add a new Modbus slave: Figure 2. ModbusPal Add slave UI Select a Slave ID as well as a name. After clicking on Add your new Modbus slave is ready to start. Figure 3. ModbusPal Main UI with one started slave By clicking on the Run button your slave is generally ready to communicate. However up until now this new wouldn’t have anything to share as we haven’t created any resources, so it would be an empty slave. So as last steps, we have to create some resources to access. In order do to this, click on the eye icon of your newly created slave. Figure 4. ModbusPal Main UI with one slave This will bring up an editor in which we can add some so-called Holding registers and some Coils. Let’s start with adding some Holding registers. So make sure Holding registers is selected and then click on the Add button: Figure 5. Holding register view The tool will suggest creating 65536 new registers, I usually create 10 or so. When I use ths tool some times I have to click the Add button more than once as the editor doesn’t always open the first time. Figure 6. Add Holding register dialog After this the Holding register tab should look like this: Figure 7. Add Holding register dialog Now do the same on the Coils tab, which should look like this after that: Figure 8. Add Holding register dialog As a last step, I would suggest to open the Console. You can do this by clicking on the Console button of the main UI. This will open the following window: Figure 9. Console Here ModbusPal will log every important event … especially when getting new connections from PLC4X. In general Modbus only knows two types of data: Coils and Registers. Coils are always simple bits or boolean values and Registers are always 16 bit short values. However, there are different types of these and they have different names: Discrete Inputs (Boolean values) (read-only) Coils (Boolean values) (read-write) Input Registers (16 bit short values) (read-only) Holding Registers (16 bit short values) (read-write) For Modbus there is no universally agreed upon notation for addresses, however as the addresses are extremely simple, in PLC4X we address these as follows: Table 1. Table Title Modbus Type PLC4X Address Syntax Discrete Inputs discrete-input:{start-number} or discrete-input:{start-number}[{number-of-elements}] Coils coil:{start-number} or coil:{start-number}[{number-of-elements}] Input Registers input-register:{start-number} or input-register:{start-number}[{number-of-elements}] Holding Registers holding-register:{start-number} or holding-register:{start-number}[{number-of-elements}] All addresses support a notation with and without a size. If the size is not specified, then PLC4X assumes a size of 1. A PLC4X connection-string generally has the same structure for all drivers: {driver-name}:{transport-name}://{transport-config}?{parameters} The fragments transport-name and parameters herby are usually optional, as every driver can support a default-transport, which is used if the transport is omitted. Also are most drivers implemented in a way that doesn’t require any parameters. These are only required if the connection requires some non-default settings. For Modbus the typical transports are: tcp (transport-config is the ip or host-name of the slave and can be suffixed by a port separated from the ip/host with :) serial (transport-config is the device name of the serial interface) If we have set up ModbusPal as described above and are running this on the same computer, the connection string to connect to this should be: modbus-tcp://localhost If you stated ModbusPal on a port different from Modbus' default port 502 you would have to also provide this port in the connection string. So assuming you started it on port 1502, then the connection string would look as follows: modbus-tcp://localhost:1502 In order to write a valid PLC4X Java application, all you need, is to add a dependency to the api module. When using Maven, all you need to do is add this dependency: org.apache.plc4x plc4j-api 0.13.0-SNAPSHOT This will allow you to write a valid application, that compiles fine. However, in order to actually connect to a device using a given protocol, you need to add this protocol implementation to the classpath. For example in order to communicate using the Modbus protocol, you would need to add the following dependency: org.apache.plc4x plc4j-driver-modbus 0.13.0-SNAPSHOT runtime So as soon as your project has the API and a driver implementation available, you first need to get a PlcConnection instance. This is done via the PlcDriverManager by asking this to create an instance for a given PLC4X connection string. String connectionString = \"modbus-tcp://localhost\"; try (PlcConnection plcConnection = new PlcDriverManager().getConnection(connectionString)) { ... do something with the connection here ... } PLC4X generally supports a very limited set of functions, which is not due to the fact, that we didn’t implement things, but that PLCs generally support a very limited set of functions. The basic functions supported by PLCs and therefore supported by PLC4X are: Read data Write data Subscribe for data Execute functions in the PLC List resources in the PLC In general, we will try to offer as many features as possible. So if a protocol doesn’t support subscription based communication it is our goal to simulate this by polling in the background, so it is transparent for the users. But there are some cases in which we can’t simulate or features are simply disabled intentionally: If a PLC and/or protocol don’t support executing of functions, we simply can’t provide this functionality. We will be providing stripped down versions of drivers, that for example intentionally don’t support any writing of data and executing of functions. Therefore, we use metadata to check programmatically, if a given feature is available: // Check if this connection support reading of data. if (!plcConnection.getMetadata().isReadSupported()) { logger.error(\"This connection doesn't support reading.\"); return; } As soon as you have ensured that a feature is available, you are ready to build a first request. This is done by getting a PlcRequestBuilder: // Create a new read request: // - Give the single item requested the alias name \"value\" PlcReadRequest.Builder builder = plcConnection.readRequestBuilder(); builder.addTagAddress(\"value-1\", \"coil:1\"); builder.addTagAddress(\"value-2\", \"coil:3[4]\"); builder.addTagAddress(\"value-3\", \"holding-register:1\"); builder.addTagAddress(\"value-4\", \"holding-register:3[4]\"); PlcReadRequest readRequest = builder.build(); So, as you can see, you prepare a request, by adding items to the request and in the end by calling the build method. Hereby the first string value is simply an alias you can give the the address as this is usually a more readable way. The second argument is then the address string itself. In above example we didn’t add discrete-input and input-registers as ModbusPal doesn’t seem to support these. The request is sent to the PLC by issuing the execute method on the request object: CompletableFuture asyncResponse = readRequest.execute(); asyncResponse.whenComplete((response, throwable) -> { ... process the response ... }); In general all requests are executed asynchronously. So as soon as the request is fully processed, the callback gets called and will contain a readResponse, if everything went right or a throwable if there were problems. However, if you want to write your code in a more synchronous fashion, the following alternative will provide this: PlcReadResponse response = readRequest.execute().get(); Processing of the responses is identical in both cases. The following example will demonstrate some of the options you have: for (String tagName : response.getTagNames()) { if(response.getResponseCode(tagName) == PlcResponseCode.OK) { int numValues = response.getNumberOfValues(tagName); // If it's just one element, output just one single line. if(numValues == 1) { logger.info(\"Value[\" + tagName + \"]: \" + response.getObject(tagName)); } // If it's more than one element, output each in a single row. else { logger.info(\"Value[\" + tagName + \"]:\"); for(int i = 0; i < numValues; i++) { logger.info(\" - \" + response.getObject(tagName, i)); } } } // Something went wrong, to output an error message instead. else { logger.error(\"Error[\" + tagName + \"]: \" + response.getResponseCode(tagName).name()); } } In the for loop, we are demonstrating how the user can iterate over the address aliases in the response. In case of an ordinary read request, this will be predefined by the items in the request, however in case of a subscription response, the response might only contain some of the items that were subscribed. Before accessing the data, it is advisable to check if an item was correctly returned. This is done by the getResponseCode method for a given alias. If this is PlcResponseCode.OK, everything is ok, however it could be one of the following: NOT_FOUND ACCESS_DENIED INVALID_ADDRESS INVALID_DATATYPE INTERNAL_ERROR RESPONSE_PENDING Assuming the return code was OK, we can continue accessing the data. As some addresses support reading arrays, with the method getNumberOfValues the user can check how many items of a given type are returned. For convenience the response object has single-argument methods for accessing the data, which default to returning the first element. response.getObject(fieldName) If you want to access a given element number, please use the two-argument version instead: response.getObject(fieldName, 42) PLC4X provides getters and setters for a wide variety of Java types and automatically handles the type conversion. However, when for example trying to get a long-value as a byte and the long-value exceeds the range supported by the smaller type, a RuntimeException of type PlcIncompatibleDatatypeException. In order to avoid causing this exception to be thrown, however there are isValid{TypeName} methods that you can use to check if the value is compatible. The code for writing is very similar to the code for reading, however when creating the write request, we have to pass in the data alongside the field definitions. While all 4 field types support reading from, only the coil and holding-register field types support writing to. If you attempt to write to these, this will result in errors. So again, we first check if this driver supports writing (Some drivers such as passive-mode drivers or read-only versions might generally not support writing): // Check if this connection support reading of data. if (!plcConnection.getMetadata().isWriteSupported()) { logger.error(\"This connection doesn't support writing.\"); return; } As soon as you have ensured that a feature is available, you are ready to build a first request. This is done by getting a PlcRequestBuilder: // Create a new read request: // - Give the single item requested the alias name \"value\" PlcWriteRequest.Builder builder = plcConnection.writeRequestBuilder(); builder.addTagAddress(\"value-1\", \"coil:1\", new PlcBOOL(true); builder.addTagAddress(\"value-2\", \"coil:3[4]\", new PlcBOOL(true), new PlcBOOL(false), new PlcBOOL(true), new PlcBOOL(true)); builder.addTagAddress(\"value-3\", \"holding-register:1\", new PlcINT(42); builder.addTagAddress(\"value-4\", \"holding-register:3[4]\", new PlcINT(1), new PlcINT(2), new PlcINT(3), new PlcINT(4)); PlcWriteRequest writeRequest = builder.build(); You can see that for every element that should be written, the same number of arguments have to be provided. PlcWriteResponse response = writeRequest.execute().get(); Actually executing the write operation is almost identical to the reading, with the only difference, that the result only provides status codes and no values. for (String fieldName : response.getFieldNames()) { if(response.getResponseCode(fieldName) == PlcResponseCode.OK) { logger.info(\"Value[\" + fieldName + \"]: successfully written to device.\"); } // Something went wrong, to output an error message instead. else { logger.error(\"Error[\" + fieldName + \"]: \" + response.getResponseCode(fieldName).name()); } }","title":"Virtual Modbus PLC","component":"plc4x","version":"pre-release","name":"virtual-modbus","url":"/plc4x/pre-release/users/getting-started/virtual-modbus.html","titles":[{"text":"Setting up the virtual Modbus Slave","hash":"_setting_up_the_virtual_modbus_slave","id":1},{"text":"Some Modbus basics","hash":"_some_modbus_basics","id":2},{"text":"Writing code","hash":"_writing_code","id":3},{"text":"Connecting","hash":"_connecting","id":4},{"text":"Reading Data","hash":"_reading_data","id":5},{"text":"Writing Data","hash":"_writing_data","id":6}]},"51":{"id":51,"text":"Apache Calcite Standard SQL Industry-standard SQL parser, validator and JDBC driver.","title":"Apache Calcite","component":"plc4x","version":"pre-release","name":"apache-calcite","url":"/plc4x/pre-release/users/integrations/apache-calcite.html","titles":[]},"52":{"id":52,"text":"The Camel Component for PLC4X allows you to create routes using the PLC4X API to read from a PLC device or write to it. This component is now maintained within the Apache Camel Project.","title":"Apache Camel","component":"plc4x","version":"pre-release","name":"apache-camel","url":"/plc4x/pre-release/users/integrations/apache-camel.html","titles":[]},"53":{"id":53,"text":"","title":"Apache Edgent (Retired)","component":"plc4x","version":"pre-release","name":"apache-edgent","url":"/plc4x/pre-release/users/integrations/apache-edgent.html","titles":[]},"54":{"id":54,"text":"Apache IoTDB is database for storing time serie data. Therefore, it can be a good solution for managing the data which is collected by PLC4x. Given a PLC address and some fields, we can consider the PLC as a device in IoTDB, and each field as a measurement in IoTDB. A couple of PLCs form a storage group. For example, there is a virtual storage group mi, and a PLC d1, which has one field RANDOM/foo:Integer. Then, in IoTDB, we can get a time series like root.mi.d1.foo (or root.mi.d1.RANDOM_foo_Integer, as you like). Then, we can write data into IoTDB using JDBC with SQL or native API called session API. https://github.com/apache/plc4x-extras/tree/develop/plc4j/examples/hello-integration-iotdb shows an example to collect data using PLC4x and then writing data to IoTDB. To run the java example, some arguments are needed: e.g., java -jar ….. --connection-string simulated://127.0.0.1 --field-address RANDOM/foo:Integer --polling-interval 1000 --iotdb-address 127.0.0.1:6667 --iotdb-user-name root --iotdb-user-password root --iotdb-sg mi --iotdb-device d1 --iotdb-datatype INT32 --use-jdbc false Then PLC4x will collect data from a simulated PLC device, which generate random integer per 1 second. IoTDB’s address is 127.0.0.1 and the port is 6667. The data will be stored in device root.m1.d1, and the measurement name is RANDOM_foo_Integer. If you are using IoTDB v0.10.0 with the default configuration, and do not manually create the above time series, then IoTDB will consider the data as float. So, after running the program a few secondes, you can query the data using IoTDB’s command line: select * from root.mi.d1; +-----------------------------+-----------------------------+ | Time|root.mi.d1.RANDOM_foo_Integer| +-----------------------------+-----------------------------+ |2020-07-16T20:01:39.216+08:00| -1.34242598E9| |2020-07-16T20:01:40.150+08:00| -9.4141104E7| |2020-07-16T20:01:41.154+08:00| 1.40969664E9| |2020-07-16T20:01:42.155+08:00| 9.5824531E8| |2020-07-16T20:01:43.157+08:00| -4.207406E7| +-----------------------------+-----------------------------+ The detailed usage about IoTDB can be found https://iotdb.apache.org/UserGuide/Master/Client/Programming%20-%20Native%20API.html","title":"Apache IotDB","component":"plc4x","version":"pre-release","name":"apache-iotdb","url":"/plc4x/pre-release/users/integrations/apache-iotdb.html","titles":[{"text":"Data Model (Concept)","hash":"_data_model_concept","id":1},{"text":"Example","hash":"_example","id":2}]},"55":{"id":55,"text":"Apache Kafka is an open-source distributed event streaming platform used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications. The PLC4X connectors have the ability to pass data between Kafka and devices using industrial protocols. They can be built from source from the latest plc4x extras - kafka integration and plc4x release of PLC4X or from the latest snapshot from github. A connect worker is basically a producer or consumer process with a standard api that Kafka can use to manage it. It is able to be run in two modes:- Standalone Distributed Standalone allows you to run the connector locally from the command line without having to install the jar file on your Kafka brokers. In distributed mode the connector runs on the Kafka brokers, which requires you to install the jar file on all of your brokers. It allows the worker to be distrubuted across the Kafka brokers to provide redundancy and load balancing. In order to start a Kafka Connect system the following steps have to be performed: 1) Download the latest version of Apache Kafka binaries from here: https://kafka.apache.org/downloads. 2) Unpack the archive. 3) Copy the target/plc4j-apache-kafka-0.8.0-uber-jar.jar to the Kafka libs or plugin directory specified in the config/connect-distributed.properties file. 4) Copy the files in the config to Kafka’s config directory. 5) Make sure that the host name that the OPCUA server advertises during the discovery process is able to be resolved from the Kafka Connect server. The easiest way to do this is to add the hostname to your hosts file. 1) Open 4 console windows and change directory into that directory 2) Start Zookeeper: bin/zookeeper-server-start.sh config/zookeeper.properties 3) Start Kafka: bin/kafka-server-start.sh config/server.properties 4) Create the \"test\" topic: bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test 5) Start the consumer: bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning The starting configuration for your connect worker is provided by a configuration file. However, once the worker has started the configuration can be changed using the connect REST API which is generally available on http://localhost:8083/connectors. When running in distributed mode all the configuration needs to be done via the REST API. A sample configuration file is provided in the PLC4X Kafka integration repository in the config/plc4x-source.properties directory.. This includes comments as well as meaningful properties that can be used with the worker. The configuration of the connectors via the REST interface expects the same properties as are specified within the example config/plc4x-source.properties file. These will need to be in JSON format and included with a couple of headers. An example below shows the format it expects:- curl -X POST -H \"Content-Type: application/json\" --data '{\"name\": \"plc-source-test\", \"config\": {\"connector.class\":\"org.apache.plc4x.kafka.Plc4xSourceConnector\", // TODO: Continue here ... \"tasks.max\":\"1\", \"file\":\"test.sink.txt\", \"topics\":\"connect-test\" }}' http://localhost:8083/connectors Ideal for testing. 1) Start Kafka connect: bin/connect-standalone.sh config/connect-standalone.properties config/plc4x-source.properties Now watch the console window with the \"kafka-console-consumer\". If you want to debug the connector, be sure to set some environment variables before starting Kafka-Connect: export KAFKA_DEBUG=y; export DEBUG_SUSPEND_FLAG=y; In this case the startup will suspend till an IDE is connected via a remote-debugging session. Ideal for production. In this case the state of the node is handled by Zookeeper and the configuration of the connectors are distributed via Kafka topics. bin/kafka-topics --create --zookeeper localhost:2181 --topic connect-configs --replication-factor 3 --partitions 1 --config cleanup.policy=compact bin/kafka-topics --create --zookeeper localhost:2181 --topic connect-offsets --replication-factor 3 --partitions 50 --config cleanup.policy=compact bin/kafka-topics --create --zookeeper localhost:2181 --topic connect-status --replication-factor 3 --partitions 10 --config cleanup.policy=compact Starting the worker is then as simple as this: bin /connect-distributed.sh config/connect-distributed.properties The configuration of the Connectors is then provided via REST interface: curl -X POST -H \"Content-Type: application/json\" --data '{\"name\": \"plc-source-test\", \"config\": {\"connector.class\":\"org.apache.plc4x.kafka.Plc4xSourceConnector\", // TODO: Continue here ... \"tasks.max\":\"1\", \"file\":\"test.sink.txt\", \"topics\":\"connect-test\" }}' http://localhost:8083/connectors See config/sink.properties for an example configuration. Ideal for testing. 1) Start Kafka connect: bin/connect-standalone.sh config/connect-standalone.properties config/plc4x-sink.properties Now open console window with \"kafka-console-producer\". Producing to the kafka topic using the sample packet shown below should result all the values included in the payload being sent to the PLC using the mapping defined in the sink properties. {\"schema\": {\"type\":\"struct\",\"fields\": [{\"type\":\"struct\",\"fields\": [{\"type\":\"boolean\",\"optional\":true,\"field\":\"running\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"conveyorLeft\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"conveyorRight\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"load\"}, {\"type\":\"int32\",\"optional\":true,\"field\":\"numLargeBoxes\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"unload\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"transferRight\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"transferLeft\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"conveyorEntry\"}, {\"type\":\"int32\",\"optional\":true,\"field\":\"numSmallBoxes\"}], \"optional\":false,\"name\":\"org.apache.plc4x.kafka.schema.Field\",\"field\":\"fields\"}, {\"type\":\"int64\",\"optional\":false,\"field\":\"timestamp\"}, {\"type\":\"int64\",\"optional\":true,\"field\":\"expires\"}], \"optional\":false,\"name\":\"org.apache.plc4x.kafka.schema.JobResult\", \"doc\":\"PLC Job result. This contains all of the received PLCValues as well as a recieved timestamp\"}, \"payload\": {\"fields\": {\"running\":false,\"conveyorLeft\":true, \"conveyorRight\":true,\"load\":false, \"numLargeBoxes\":1630806456, \"unload\":true, \"transferRight\":false, \"transferLeft\":true, \"conveyorEntry\":false, \"numSmallBoxes\":-1135309911}, \"timestamp\":1606047842350, \"expires\":null}} If you want to debug the connector, be sure to set some environment variables before starting Kafka-Connect: export KAFKA_DEBUG=y; export DEBUG_SUSPEND_FLAG=y; In this case the startup will suspend till an IDE is connected via a remote-debugging session. Ideal for production. In this case the state of the node is handled by Zookeeper and the configuration of the connectors are distributed via Kafka topics. bin/kafka-topics --create --zookeeper localhost:2181 --topic connect-configs --replication-factor 3 --partitions 1 --config cleanup.policy=compact bin/kafka-topics --create --zookeeper localhost:2181 --topic connect-offsets --replication-factor 3 --partitions 50 --config cleanup.policy=compact bin/kafka-topics --create --zookeeper localhost:2181 --topic connect-status --replication-factor 3 --partitions 10 --config cleanup.policy=compact Starting the worker is then as simple as this: bin /connect-distributed.sh config/connect-distributed.properties The configuration of the Connectors is then provided via REST interface: curl -X POST -H \"Content-Type: application/json\" --data '{\"name\": \"plc-sink-test\", \"config\": {\"connector.class\":\"org.apache.plc4x.kafka.Plc4xSinkConnector\", // TODO: Continue here ... \"tasks.max\":\"1\", \"file\":\"test.sink.txt\", \"topics\":\"connect-test\" }}' http://localhost:8083/connectors If an error occurs when reading or writing PLC addresses a graceful backoff has been implemented so that the PLC isn’t bombarded with requests. However as the number of connectors for each PLC should be limited to reduce the load on the PLC, the graceful backoff shouldn’t have a major impact. For the source connector the PLC4X scraper logic is able to handle randomized polling rates on failures, this is buffered within the connector, the poll rate of the connector has no affect on the PLC poll rate. For the sink connector, if a write fails it is retried a configurable number of times with a timeout between each time. A Retriable Exception is raised which provides jitter for the timing of the retries. PLC4X specifies a very basic schema and leaves the majority of the implementation to the user. It contains the following fields:- \"fields\": - This is a customized structure that is formed by the fields defined in the connector configuration. This allows the user to defined arbitary fields within here all based on the PLC4X data types. \"timestamp\": - This is the timestamp at which the PLC4X connector processed the PLC request. \"expires\": - This field is used by the sink connector. It allows it to discard the record if it is too old. A value of 0 or null indicates that the record some never be discarded no matter how old it is. As the majority of the schema is left to the user to define we expect to be able to provide backward compatiblity between the base schemas. The schemas for the sink and source connectors are the same. This allows us to producer from one PLC and send the data to a sink.","title":"Apache Kafka","component":"plc4x","version":"pre-release","name":"apache-kafka","url":"/plc4x/pre-release/users/integrations/apache-kafka.html","titles":[{"text":"PLC4X Kafka Connectors","hash":"_plc4x_kafka_connectors","id":1},{"text":"Introduction","hash":"_introduction","id":2},{"text":"Quickstart","hash":"_quickstart","id":3},{"text":"Start a Kafka Broker","hash":"_start_a_kafka_broker","id":4},{"text":"Source Connector","hash":"_source_connector","id":5},{"text":"Start a Kafka Connect Source Worker (Standalone)","hash":"_start_a_kafka_connect_source_worker_standalone","id":6},{"text":"Start Kafka Connect Source Worker (Distributed Mode)","hash":"_start_kafka_connect_source_worker_distributed_mode","id":7},{"text":"Sink Connector","hash":"_sink_connector","id":8},{"text":"Start a Kafka Connect Sink Worker (Standalone)","hash":"_start_a_kafka_connect_sink_worker_standalone","id":9},{"text":"Start Kafka Connect Sink Worker (Distributed Mode)","hash":"_start_kafka_connect_sink_worker_distributed_mode","id":10},{"text":"Graceful Backoff","hash":"_graceful_backoff","id":11},{"text":"Schema Compatability","hash":"_schema_compatability","id":12}]},"56":{"id":56,"text":"Apache NiFi allows creating systems that process data around the concept of data-streams. Apache PLC4X provides both Source as well as Sink processors for accessing data in PLCs or writing data to them. Even if the documentation of NiFi states it works with any Java version above 1.8, this is not quite true. I have found that NiFi only works with Java versions below 11. With Java 1.8 you are definitely on the safe-side. When starting with newer versions the start script just terminates after logging a statement that NiFi is now starting. Other than that, I haven’t encountered any other requirements. As soon as you have started NiFi using the nifi.sh run or run-nifi.bat the Web-UI of NiFi should be available at: http://localhost:8080/nifi/ It might take a few seconds for the Web-UI to show up … so if you’re getting errors in the browser, give it some time to start. In order to enable Apache PLC4X support in Apache NiFi all you need to do, is to copy our nar archive into the Nifi installations lib directory. You can either build the nar by building PLC4X and using the version in the plc4j/integrations/apache-nifi/nifi-plc4x-nar/target directory. Or you can download a released version from Maven central: https://search.maven.org/search?q=plc4j-nifi-plc4x-nar Add a PLC4X Source processor to the canvas, click on the Add processor button and drag it into the canvas. A popup will appear in which you are presented the list of all available processors. Enter PLC4X in the search field and select the Plc4xSourceProcessor and click Add (I think you can also double-click on the processor) If you click on a Processor, it’s a little hard to see it’s selected as the selection is not highlighted. However, you can see a processor is selected as the bottom part shows the name of the selected processor. As soon as your new processor is added to the canvas you need to configure it. Do this by double clicking on it (Or by right-clicking and selecting Configure) Here you now need to provide a PLC4X connection string and a PLC resource address String. The PLC connection String is just a normal PLC4X connection string. Please consult the documentation on using the different types of supported connections Here The PLC resource address String is a ;-separarated list of name-value-pairs, where each name is assigned a plc4x addrress. For information on how an address string looks for the type of driver you are using, please check the documentation for the driver you are using Here Example: PLC connection String: s7://192.168.23.30 PLC resource address String: time-value=%DB2:8:TIME;string-value=%DB2:30.0:STRING(10) Before you save the processor there is one further setting that needs to be set. For this please change to the Scheduling tab and set the Run Schedule to let’s say 1 or 2 seconds. If we don’t do this, NiFi will hammer the PLC with requests and in case of my S7 it will simply start denying accepting new connections. It will still say Invalid at the top, but this has nothing to do with your entries, it’s much more that this processor produces two data-streams: SUCCESS and FAILURE. These need to be connected next. After that’s done, click on Apply. But before we can do that, we need to add something we can connect them to. So we simply add another processor to the canvas: Using a LogMessage processor. This simply logs every bit of data to the NiFi log-system. As the LogMessage processor creates a stream of events every time a log message is logged, we need to configure it to auto-terminate that relationship. Do this by double-clicking on the processor and selecting the Settings tab. Here check the checkbox labeled SUCCESS in the section Automatically Terminate Relationships and then click Apply. Now we can connect both processors. Notice the arrow-icon as soon as the mouse is over the Plc4xSourceProcessor? Click on this and start dragging. You notice that you now have a connection which you simply drag onto the log processor. As soon as you release the connection there, the two processors are now connected. As soon as you release the mouse, a popup will pop up and allow you to configure the connection. You can generally select which streams you want to connect. In this case we’ll simply connect the SUCCESS and the FAILURE stream to the log processor. As soon as that’s done, you are finished configuring your flow. Last thing we now need to do, is to start the processors. Currently, they are stopped (You can see it with the red square icon) Do this by right-clicking on both processors and selecting Start. Now you should see an increasing number at the Out of the PLC4X Source and on the In of the Logging Processor. In order to be able to debug the PLC4X, please edit the bin/nifi.sh (On Mac & Linux) and comment in the line: BOOTSTRAP_DEBUG_PARAMS=\"-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000\" For Windows, you would need to manually add: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000 to the run-nifi.bat files JAVA_ARGS. If you want NiFi so suspend at the start, so you can be sure to captue the entire execution, just change suspend=n to suspend=y. This will make NiFi pause till a remote debugging session is connected.","title":"Apache NiFi","component":"plc4x","version":"pre-release","name":"apache-nifi","url":"/plc4x/pre-release/users/integrations/apache-nifi.html","titles":[{"text":"Setting Up NiFi","hash":"_setting_up_nifi","id":1},{"text":"Enabling PLC4X Processors in NiFi","hash":"_enabling_plc4x_processors_in_nifi","id":2},{"text":"Using a PLC4X Source Processor in NiFi","hash":"_using_a_plc4x_source_processor_in_nifi","id":3},{"text":"Enabling debugging","hash":"_enabling_debugging","id":4}]},"57":{"id":57,"text":"PLC4X S7 Adapter PLC4X MODBUS Adapter","title":"Apache StreamPipes","component":"plc4x","version":"pre-release","name":"apache-streampipes","url":"/plc4x/pre-release/users/integrations/apache-streampipes.html","titles":[]},"58":{"id":58,"text":"… where IoT devices and their digital twins get together https://www.eclipse.org/ditto/ Eclipse Ditto - PLC4X Example: https://github.com/eclipse/ditto-examples/tree/master/plc4x","title":"Eclipse Ditto","component":"plc4x","version":"pre-release","name":"eclipse-ditto","url":"/plc4x/pre-release/users/integrations/eclipse-ditto.html","titles":[]},"59":{"id":59,"text":"The PLC4X OPC UA server integration is based around the Eclipse Milo OPC UA server. It uses PLC4X to communicate with industrial devices effectively acting as a industrial OPC UA gateway. The OPC UA server can be built using maven as part of the PLC4X build. mvn install This creates a target directory within plc4x/plc4j/integrations/opcua-server containing a jar file which is the main java executable. The config.yml file is used to configure the server. The following root level settings should be configured. version: The version is just an internal check to confirm that the right version of the configuration file is being used. dir: This is the directory to the security directory. This is where all configuration is stored including certificates. Be sure to secure this directory with the correct permissions. name: This is the name of the OPC UA server. It can be anything but shouldn’t contain spaces. disableInsecureEndpoint: This is used to disable the remote insecure OPC UA endpoint. tcpPort: this can be used to change the opc.tcp port. httpPort: this can be used to change the http.tcp port. devices: is a list of PLC’s or devices that the server should communicate with. Each device should include a name:, connectionString:, and a list of tags:. For each device within devices the following settings should be configured. name: This is the name of the device. It can anything as long as it doesn’t contain spaces. connectionString: Can be any valid PLC4X connection string. For each tag with tags the following settings should be configured:- alias: This is the name of tag it can be anything but shouldn’t have spaces. This will be shown as the tag name within the OPC UA server tree. Be sure that this is unique within the configuration file. address: This is any valid PLC4X address that matches the connection type. An example configuration file is shown below. --- version: \"0.8\" dir: {path-to-security-dir} name: \"Plc4xOPCUAServer\" disableInsecureEndpoint: true devices: - name: \"ModbusDevice\" connectionString: \"modbus-tcp://127.0.0.1:502\" tags: - alias: \"TemporaryBOOLARRAY\" address: \"000001:BOOL[10]\" - alias: \"TemporaryWORD2\" address: \"400002:WORD\" - alias: \"TemporaryUINT3\" address: \"400003:UINT\" - alias: \"TemporaryINT4\" address: \"400004:INT\" - alias: \"TemporaryDINT5\" address: \"400005:DINT[4]\" - alias: \"TemporaryREAL6\" address: \"400006:REAL\" - alias: \"TemporaryREAL7\" address: \"400007:REAL\" - alias: \"TemporaryREAL8\" address: \"400008:REAL\" - name: \"SimulationDevice\" connectionString: \"simulated://127.0.0.1\" tags: - alias: \"Temporary\" address: \"RANDOM/Temporary:Integer\" tcpPort: 12687 httpPort: 8445 To run the java executable execute:- java -jar plc4x-opcua-server-0.8.0-uber-jar.jar -c {path-to-config-file} -i This will start the OPC UA server with the interactive switch (-i). This prompts the server to ask for usernames and passwords upon startup. However, during normal operation the -i switch should be left out. If a certificate isn’t available at {path-to-security-dir}/security/plc4x-opcuaserver.pfx then a self signed is created. This certificate is password protected with the security password given during startup. If you place another certificate here make sure it is password protected and set the password by running the server again with --set-password switch. java -jar plc4x-opcua-server-0.8.0-uber-jar.jar -c {path-to-config-file} -i -s Once the OPC UA server is running you are able to connect to it from your favorite OPC UA client using the connection string. opc.tcp://{ip.address}:12687/plc4x Replacing the {ip.address} with the servers IP address. If you want to use an encrypted connection be sure to move the client certificate created in {path-to-security-dir}/security/pki/rejected to the trusted directory. Otherwise the client will receive a security error when trying to connect.","title":"Eclipse Milo (OPC UA Server)","component":"plc4x","version":"pre-release","name":"eclipse-milo","url":"/plc4x/pre-release/users/integrations/eclipse-milo.html","titles":[{"text":"Building the server","hash":"_building_the_server","id":1},{"text":"Configuration File","hash":"_configuration_file","id":2},{"text":"Running","hash":"_running","id":3}]},"60":{"id":60,"text":"","title":"Integrations","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/users/integrations/index.html","titles":[]},"61":{"id":61,"text":"Name Type Default Value Required Description Name Allen Bradley ETH Code ab-eth Maven Dependency org.apache.plc4x plc4j-driver-ab-eth pre-release Default Transport raw Supported Transports tcp Config options: station INT Id of the station we want to connect to Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected.","title":"AB-ETH","component":"plc4x","version":"pre-release","name":"ab-eth","url":"/plc4x/pre-release/users/protocols/ab-eth.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2}]},"62":{"id":62,"text":"The ADS (automation device specification) describes a device-independent and fieldbus independent interface for communication between Beckhoff automation devices running TwinCAT and other devices implementing this interface. https://www.home-assistant.io/integrations/ads/ Source (accessed 7 August 2022) ADS device concept: https://infosys.beckhoff.com/english.php?content=../content/1033/ams_nat/4275563275.html&id= Source (accessed 7 August 2022) Specification for ADS devices: https://infosys.beckhoff.com/english.php?content=../content/1033/ams_nat/4275563275.html&id= Source (accessed 7 August 2022) ADS (Automation Device Specification) is the TwinCAT communication protocol that specifies the interaction between two ADS devices. For example, it defines what operations can be executed on another ADS device, what parameters are necessary for that and what return value is sent after execution. AMS (Automation Message Specification) specifies the exchange of the ADS data. A major component of the communication protocol is the AmsNetId. This is specified in the AMS/ADS package for the source and target device. An ADS device can be explicitly addressed using the AmsNetId. Source https://infosys.beckhoff.com/english.php?content=../content/1033/ams_nat/4275563275.html&id= (accessed 7 August 2022) Name Type Default Value Required Description Name Beckhoff TwinCat ADS Code ads Maven Dependency org.apache.plc4x plc4j-driver-ads pre-release Default Transport tcp Supported Transports tcp Config options: target-ams-net-id STRING required AMS-Net-Id of the target. An AMS-Net-Id has the regular format of an IPv4 IP-Address, however with 6 segments instead of 4. target-ams-port INT required AMS port of the target. source-ams-net-id STRING required AMS-Net-Id of the source. An AMS-Net-Id has the regular format of an IPv4 IP-Address, however with 6 segments instead of 4. source-ams-port INT required AMS port of the source. timeout-request INT 4000 Default timeout for all types of requests. load-symbol-and-data-type-tables BOOLEAN true Configures, if when connecting the data-type- and symbol-table should be read. This is an optimization that can help in cases, where the PLC program is pretty large and downloading the full tables is causing problems. When disabled, symbolic addresses will manually be resolved as soon as an address is used. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. Data array Size Description AMS/TCP Header 6 bytes contains the length of the data packet. AMS Header 32 bytes The AMS/TCP-Header contains the addresses of the transmitter and receiver. In addition, the AMS error code , the ADS command Id and some other information. ADS Data n bytes The ADS data range contains the parameter of the single ADS commands. The structure of the data array depends on the ADS command. Some ADS commands require no additional data. For details about the protocol look here: http://www.beckhoff.com/ & (German Handbook: https://download.beckhoff.com/download/Document/automation/twincat3/TwinCAT_3_ADS_INTRO_DE.pdf)","title":"ADS (Automation Device Specification)","component":"plc4x","version":"pre-release","name":"ads","url":"/plc4x/pre-release/users/protocols/ads.html","titles":[{"text":"Structure AMS/TCP Packet","hash":"_structure_amstcp_packet","id":1},{"text":"Connection String Options","hash":"_connection_string_options","id":2},{"text":"tcp","id":3},{"text":"More details on","hash":"_more_details_on","id":4}]},"63":{"id":63,"text":"Name Type Default Value Required Description Name BACnet/IP Code bacnet-ip Maven Dependency org.apache.plc4x plc4j-driver-bacnet pre-release Default Transport udp Supported Transports udp tcp pcap Config options: ede-file-path STRING Path to the location of a single EDE file, that contains the descriptor for the target device. ede-directory-path STRING Path to the directory used for storing multiple EDE files. These files contain the descriptors for the possible target devices. Transport config options: udp.local-port INT -1 Some connections require a UDP listener to listen on a fixed port. Use this configuration option in order to define the port number of the local port. tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. pcap.support-vlans BOOLEAN false Enables support for VLans pcap.replay-speed-factor FLOAT 1.0 Numeric value for changing the replay speed: - 1 = Normal speed (default) - 0 = Maximum speed - 0.5 = Half speed - 2 = Double speed pcap.loop BOOLEAN false Should the replay start at the beginning of the file as soon as the end is reached? - true = Automatically start again - false = Stop at the end (default) pcap.filter STRING Filter expression used to filter out unwanted packets from the replay. pcap.support-vlans BOOLEAN false Should VLan packets be automatically unpacked? pcap.protocol-id INT -1 When provided, filters all packets to let only packets matching this ethernet protocol-id pass. Data array Size Description BACnet - A Data Communication Protocol for Building Automation and Control Networks","title":"BACnet/IP","component":"plc4x","version":"pre-release","name":"bacnet","url":"/plc4x/pre-release/users/protocols/bacnet.html","titles":[{"text":"BACnet (Building Automation and Control Networks)","hash":"_bacnet_building_automation_and_control_networks","id":1},{"text":"Connection String Options","hash":"_connection_string_options","id":2},{"text":"udp","id":3},{"text":"tcp","id":4},{"text":"pcap","id":5},{"text":"More details on","hash":"_more_details_on","id":6}]},"64":{"id":64,"text":"Name Type Default Value Required Description Name Clipsal C-Bus Code c-bus Maven Dependency org.apache.plc4x plc4j-driver-c-bus pre-release Default Transport tcp Supported Transports tcp Config options: srchk BOOLEAN false Source check. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected.","title":"C-Bus","component":"plc4x","version":"pre-release","name":"c-bus","url":"/plc4x/pre-release/users/protocols/c-bus.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2}]},"65":{"id":65,"text":"The CAN Bus driver is a special kind of driver which does not bring any logic. Its responsibility is to combine CAN transport facade and custom application layer protocols. In this way, the protocol can use its own \"root frame\" type which is not delivered from CAN bus frame. The CANDriverAdapter is a full implementation of Apache PLC4X API. Under the hood adapter will forward all operations to delegate driver. Work which is done by the adapter is to transform data incoming via CAN transport into frame supported by driver. In this regard the CANDriverAdapter does not implement any real protocol. All it does is transformation of incoming frames into frame desired by real driver. Below diagram explains how driver adapter works with CANopen. Given that this is currently biggest CAN driver implemented in Apache PLC4X we will use it as a reference. Looking at left most side of diagram we can see a CAN transport. The transport knows how to receive and send data to the CAN bus. Transport can create its own intermediate representation of CAN data frame. In case of SocketCAN there is a dedicated type called SocketCANFrame. Most of other drivers in Apache PLC4X which rely on TCP, UDP or serial transports can unify right above transport. Yet due to variety of APIs which are possible to be used with CAN bus such early unification at API level is not possible. Place where CANDriverAdapter jumps in is once transport formed the frame structure. Then, adapter asks the transport to turn that structure into a FrameData. An instance of FrameData is then passed to an adapter delivered by CANopen Driver. This adapter can then create a CANopenFrame which is processed by desired driver logic. The return side, when desired driver wants to publish information is a bit simplified. Because FrameData does not be a real type (it is an interface) we can skip it. With a help of a CANFrameBuilder provided by CAN transport driver can easily construct a structure which is supported by it. While this makes an API asymmetric it also makes it possible to use any third party transport with CANopenDriver.","title":"CAN Bus Driver Adapter","component":"plc4x","version":"pre-release","name":"can","url":"/plc4x/pre-release/users/protocols/can.html","titles":[{"text":"More details on the driver","hash":"_more_details_on_the_driver","id":1}]},"66":{"id":66,"text":"CANopen is a specific protocol built on top of CAN bus. Name Type Default Value Required Description Name CAN open Code canopen Maven Dependency org.apache.plc4x plc4j-driver-canopen pre-release Default Transport socketcan Supported Transports socketcan Config options: node-id INT CAN node identifier. Depending on used CAN version it might be 11 or 29 bit unsigned int. heartbeat BOOLEAN Forces PLC4X to send CANopen heartbeat (NMT) messages to the bus. request-timeout INT 1000 Time after which dispatched BUS operation (ie. SDO request) will be marked as failed. Transport config options: Name Value Description Supported Operations CANopen PDO read / write PDO messages are broadcasted to the bus and have to be mapped at application layer. CANopen SDO read / write SDO are request/response conversations. Both read and write path is supported. subscribe Receiving PDO messages requires construction of valid subscription. It is possible to subscribe to CANopen NMT messages. CAN, despite (or due) to its popularity has ambiguous meaning. There are multiple articles and sources which attempts to give introduction, yet very few of them is consistent between each other. There are two dominant formats of frames - CAN 2.0A and 2.0B: CAN 2.0A uses 11 bit identifier and up to 8 bytes of data. CAN 2.0B uses 29 bit identifier and up to 8 bytes of data. To make things worse with introduction of CAN FD amount of combinations increased even more. Double check frame format as this integration supports CANopen and does not support CANopen FD nor CAN 2.0B. Further reading on CAN flavors: https://en.wikipedia.org/wiki/CAN_bus Default transport used with this protocol is socketcan. Currently, only 2.0A format (up to 8 bytes of data) is supported. Implemented driver supports currently socketcan transport. Change of transport requires code modifications and injection of new \"transport\" type which will encode CANopen payloads to specific frame format. Socketcan seems to be most widespread way to access CAN bus. It also masks different hardware variants which might come with their own drivers. The CANopen specification defines Object Dictionary (OD). This driver does honor OD structure through usage of index and sub index for addressing fields. It does not ship Electronic Data Sheet (EDS) parser leaving it for applications who wish to utilize it. CANopen specification defines several groups of addresses dedicated to certain kind of operations. Critical services and message exchanges related with them have lower identifiers making them wining eventual bus access. The array size block is necessary only if application expect same value several times. If SDO returns for example 4 values of UNSIGNED8 it can be declared as ::UNSIGNED8[4] for PDO. Equivalent for SDO is ::/:UNSIGNED8[4]. Service Format Supported operations Description SDO SDO:nodeId:index/subindex:type[arraySize] read write SDO is for request/response communication. Both expedited and segmented modes are supported. No support for block transfer. Transfer kind is automatically determined based on payload length. All numeric values - ndodeId, index, subindex can be specified using hexadecimal notation (ie. 0xA). PDO TRANSMIT_PDO_1:nodeId:type[arraySize] RECEIVE_PDO_1:nodeId:type[arraySize] TRANSMIT_PDO_2:nodeId:type[arraySize] RECEIVE_PDO_2:nodeId:type[arraySize] TRANSMIT_PDO_3:nodeId:type[arraySize] RECEIVE_PDO_3:nodeId:type[arraySize] TRANSMIT_PDO_4:nodeId:type[arraySize] RECEIVE_PDO_4:nodeId:type[arraySize] subscribe write PDO is an asynchronous operation hence receiving of it requires subscription. Check Apache PLC4X API documentation for more detailed example of how to use subscriptions API. Subscriber will be notified with value mapped to type defined in field syntax. NMT NMT NMT:nodeId subscribe NMT messages are sent using CAN node ID 0. They have the highest priority on the bus. Messages of this kind indicate operating state of an node (booted, operational). Subscriptions to this service receive structure with two fields: node (USINT) and state (USINT). If subscription sets nodeId to 0 it will receive state updates for all bus participants. HEARTBEAT HEARTBEAT HEARTBEAT:nodeId subscribe HEARTBEAT messages have the lowest priority on the bus. They have the highest priority on the bus. Messages of this kind indicate operating state of an node (booted, operational). Subscriptions to this service receive structure with two fields: node (USINT) and state (USINT). If subscription sets nodeId to 0 it will receive state updates for all bus participants. Below table contains type mapping defined in CANopen specification. CANopen Type Length (in bits) PLC4X Type BOOLEAN 1 BOOL UNSIGNED8 8 USINT UNSIGNED16 16 UINT UNSIGNED24 24 UDINT UNSIGNED32 32 UDINT UNSIGNED40 40 ULINT UNSIGNED48 48 ULINT UNSIGNED56 56 ULINT UNSIGNED64 64 ULINT INTEGER8 8 SINT INTEGER16 16 INT INTEGER24 24 DINT INTEGER32 32 DINT INTEGER40 40 LINT INTEGER48 48 LINT INTEGER56 56 LINT INTEGER64 64 LINT REAL32 32 REAL REAL64 64 LREAL RECORD 8 * size BYTE OCTET_STRING 8 * size STRING (UTF-8) VISIBLE_STRING 8 * size STRING (UTF-8) TIME_OF_DAY unsupported TIME_DIFFERENCE unsupported UNICODE_STRING 8 * size STRING (UTF-8) All string types are decoded using UTF-8 encoding regardless of their kind (octet, visible, unicode). In case if device returns text using different encoding it is recommended to use RECORD type and construct text manually above PLC4X. The size in case of variable length structures is automatically assumed to full length of SDO answer. In case of writing length of field can be ommited. For example request write(SDO:1:2/3:RECORD, payload) will try to write whole payload to specified address. Same applies to responses sent by devies as requester often might not know full length of reply payload.","title":"CANopen","component":"plc4x","version":"pre-release","name":"canopen","url":"/plc4x/pre-release/users/protocols/canopen.html","titles":[{"text":"CAN in Automation","hash":"_can_in_automation","id":1},{"text":"Connection String Options","hash":"_connection_string_options","id":2},{"text":"socketcan","id":3},{"text":"More details on the driver","hash":"_more_details_on_the_driver","id":4},{"text":"Address Format","hash":"_address_format","id":5}]},"67":{"id":67,"text":"","title":"CtlrX","component":"plc4x","version":"pre-release","name":"ctrlx","url":"/plc4x/pre-release/users/protocols/ctrlx.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1}]},"68":{"id":68,"text":"","title":"DeltaV","component":"plc4x","version":"pre-release","name":"deltav","url":"/plc4x/pre-release/users/protocols/deltav.html","titles":[]},"69":{"id":69,"text":"","title":"DF1","component":"plc4x","version":"pre-release","name":"df1","url":"/plc4x/pre-release/users/protocols/df1.html","titles":[]},"70":{"id":70,"text":"Name Type Default Value Required Description Name EthernetIP Code eip Maven Dependency org.apache.plc4x plc4j-driver-eip pre-release Default Transport tcp Supported Transports tcp Config options: backplane INT 1 Without using routing information the backplane defaults to 1. This is overridden if communicationPath is provided. slot INT 0 The slot within the backplane the CPU is located. big-endian BOOLEAN true Configure if the connection should be set to transport data in Big-Endian format, or not. force-unconnected-operation BOOLEAN false Forces the driver to use unconnected requests. Since: 0.13.0 Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. To read and write data to a PLC4X device, the EtherNet/IP driver uses symbolic segments. This is used to refer to objects through their symbolic names. This makes reading data a lot easier, as you do not need to specify the Datatype for reading. %{tagname}[{startIndex}]:{numberOfElements} %{tagname}[{startIndex}]:{numberOfElements}:{DataType} Name Description Tagname symbolic name of the Data Start Index (optional) if the data is an array, we can specify a starting index from where we want to read Number of elements (optional) if the data is an array, we can specify the number of elements we want to read. Use this in combination with the starting index to get the exact scope you want. DataType (writing) Specify the Data-type of the value you want to write (mandatory) To store Use this data type Bit BOOL Bit array DWORD (32-bit boolean array) 8-bit integer SINT 16-bit integer INT 32-bit integer DINT 64-bit integer LINT 32-bit float REAL","title":"EtherNet/IP","component":"plc4x","version":"pre-release","name":"eip","url":"/plc4x/pre-release/users/protocols/eip.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2},{"text":"Address Format","hash":"_address_format","id":3},{"text":"Data Types","hash":"_data_types","id":4}]},"71":{"id":71,"text":"The Firmata protocol is based on the MIDI protocol used for communicating with musical equipment. It is also one of the most widely used protocols for communication with Arduino devices. This driver is built to be compatible with the StandardFirmata Arduino Sketch which can be found here (Version last changed on August 17th, 2017) Name Type Default Value Required Description Name Firmata Code firmata Maven Dependency org.apache.plc4x plc4j-driver-firmata pre-release Default Transport serial Supported Transports serial Config options: Transport config options: serial.baud-rate INT 57600 Baud-rate the serial port is set to. Typical values are: - 9600 - 14400 - 19200 - 38400 - 57600 - 115200 - 128000 But can also be smaller or larger values. serial.num-data-bits INT 8 Number of data-bits used to send data. Typical values are: - 7 - 8 But can also be smaller or larger values. serial.num-stop-bits INT 1 Number of stop-bits used to terminate data. Typical values are: - 1 - 2 (The theoretical 1.5 stop-bits setting is not supported) serial.parity STRING NO_PARITY Number of bits used to calculate data parity. This is used to detect errors in transmission. Allowed values are: - NO_PARITY - ODD_PARITY - EVEN_PARITY - MARK_PARITY - SPACE_PARITY Name Value Description Supported Operations write Writing is only supported to digital addresses. subscribe Reading is supported for both digital and analog addresses. See note after this table however. When subscribing to pins, these are configured to become read pins. When writing to digital pins, these are configured to become output pins. However, writing to pins for which a subscription exists, an exception will be thrown. In order to write to previously subscribed pins, all subscriptions for this have to be cancelled first. Similar to the Modbus protocol, the Firmata protocol support Boolean and Short values. Booleans are used for the digital IO pins and short values for the analog inputs. The full format for a digital address has the following format: digital:{start-address}[{array-size}]:{special-config} The start-address and array-size are simple integer values. special-config can be used to configure the digital input pin to something else than INPUT. Currently the only supported option is PULLUP which configured the Arduino’s digital input pin to use it’s built in pullup-resistor. Both the array-size as well as the special-config parts are optional. So the following example addresses are valid: digital:4 digital:4[5] digital:4:PULLUP A normal Arduino Uno is equipped with 14 digital inputs: 0-13 However in case of using the serial port (which will always be the case when using this driver), the pins 0 and 1 are the RX and TX pins of the serial port and can’t be used. The full format for an analog address is as follows: analog:{start-address}[{array-size}] The start-address and array-size are simple integer values. Both the array-size is optional. So the following example addresses are valid: analog:1 analog:2[3] A normal Arduino Uno is equipped with 6 analog inputs: 0-5","title":"Firmata","component":"plc4x","version":"pre-release","name":"firmata","url":"/plc4x/pre-release/users/protocols/firmata.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"serial","id":2},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":3},{"text":"Binary Addresses","hash":"_binary_addresses","id":4},{"text":"Analog Addresses","hash":"_analog_addresses","id":5}]},"72":{"id":72,"text":"This driver is a generic purpose driver. It allows implementing a basic CAN bus listening or writing scenarios. CAN bus open is a specific protocol built on top of CAN bus. Name Type Default Value Required Description Name Generic CAN Code genericcan Maven Dependency org.apache.plc4x plc4j-driver-can pre-release Default Transport socketcan Supported Transports socketcan Config options: node-id INT Node id of the target device. request-timeout INT 1000 Default timeout for all types of requests. Transport config options: Name Value Description Supported Operations publish write Allows to publish a CAN frame via CAN transport. receive subscribe This operation allows listening for incoming data or requests. Given popularity of CAN in multiple market segments there is variety of protocols which can’t be published. Also, for many cases which are data acquisition oriented it is necessary to tap only parts of communications. This driver allows to model incoming and outgoing communication using plain Apache PLC4X api. The written CAN data is constructed from fields submitted via write request builder. The receiving data is transformed in similar fashion, based on subscribed fields. Service Format Supported operations Description n/a nodeId:type[arraySize] write subscribe There is only one syntax which is currently supported by this driver. Pay attention. You can use multiple fields to write and subscribe actual data. All fields must sum to up to 64 bits. If you subscribe less, then remaining data is discarded and not available via PLC4X api. The data will be sent in the same order as fields. Below table contains type mapping defined in Generic CAN driver. CANopen Type Length (in bits) PLC4X Type BOOLEAN 1 BOOL UNSIGNED8 8 USINT UNSIGNED16 16 UINT UNSIGNED24 24 UDINT UNSIGNED32 32 UDINT UNSIGNED40 40 ULINT UNSIGNED48 48 ULINT UNSIGNED56 56 ULINT UNSIGNED64 64 ULINT INTEGER8 8 SINT INTEGER16 16 INT INTEGER24 24 DINT INTEGER32 32 DINT INTEGER40 40 LINT INTEGER48 48 LINT INTEGER56 56 LINT INTEGER64 64 LINT REAL32 32 REAL REAL64 64 LREAL The type table is similar to CANopen. Main difference is lack of support for string types.","title":"Generic CAN","component":"plc4x","version":"pre-release","name":"genericcan","url":"/plc4x/pre-release/users/protocols/genericcan.html","titles":[{"text":"CAN Bus semantics","hash":"_can_bus_semantics","id":1},{"text":"Connection String Options","hash":"_connection_string_options","id":2},{"text":"socketcan","id":3},{"text":"More details on the driver","hash":"_more_details_on_the_driver","id":4},{"text":"Address format","hash":"_address_format","id":5}]},"73":{"id":73,"text":"Name Type Default Value Required Description Name IEC 60870-5-104 Code iec-60870-5-104 Maven Dependency org.apache.plc4x plc4j-driver-iec-60870 pre-release Default Transport tcp Supported Transports tcp Config options: request-timeout INT 4000 Default timeout for all types of requests. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected.","title":"IEC-60870","component":"plc4x","version":"pre-release","name":"iec-60870","url":"/plc4x/pre-release/users/protocols/iec-60870.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2}]},"74":{"id":74,"text":"Protocol C C# Go Java Python AB-Ethernet ADS /AMS BACnet/IP CBus CANopen DeltaV DF1 EtherNet/IP EtherNet/IP - Logix Firmata IEC-60870 KNXnet/IP Modbus (TCP/RTU/ASCII) OPC-UA Open-Protocol (Torque-Tools) PLC4X (Proxy-Protocol) Profinet S7 Simulated UMAS Legend: - Implemented and fully supported - Work in progress - Not implemented yet - Unsure The following table contains a list of operations and the protocols that support them: Protocol Auto-Discover Browse Read Single Address Value Read Multiple Address Values Write Single Address Value Write Multiple Address Value Subscribe to Value changes Subscribe to PLC Events/Alarms Publish Values AB-Ethernet ADS /AMS BACnet/IP CBus CANopen DeltaV DF1 EtherNet/IP EtherNet/IP - Logix Firmata IEC-60870 KNXnet/IP Modbus (TCP/RTU/ASCII) OPC-UA Open-Protocol (Torque-Tools) PLC4X (Proxy-Protocol) Profinet S7 Simulated UMAS Legend: - Implemented and fully supported - Implemented and supported by simulation - Not implemented yet - Unsure","title":"Current language support for protocols","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/users/protocols/index.html","titles":[{"text":"Features","hash":"_features","id":1}]},"75":{"id":75,"text":"Name Type Default Value Required Description Name KNXNet/IP Code knxnet-ip Maven Dependency org.apache.plc4x plc4j-driver-knxnetip pre-release Default Transport udp Supported Transports udp pcap raw Config options: knxproj-file-path STRING Path to the knxproj file. The default KNXnet/IP protocol doesn’t provide all the information needed to be able to fully decode the messages. knxproj-password STRING Optional password needed to read the knxproj file. group-address-num-levels INT 3 KNX Addresses can be encoded in multiple ways. Which encoding is used, is too not provided by the protocol itself so it has to be provided externally: - 3 Levels: {main-group (5 bit)}/{middle-group (3 bit)}/{sub-group (8 bit)} - 2 Levels: {main-group (5 bit)}/{sub-group (11 bit)} - 1 Level: {sub-group (16 bit)} The default is 3 levels. If the knxproj-file-path this information is provided by the file. connection-type STRING LINK_LAYER Type of connection used to communicate. Possible values are: - 'LINK_LAYER' (default): The client becomes a participant of the KNX bus and gets it’s own individual KNX address. - 'RAW': The client gets unmanaged access to the bus (be careful with this) - 'BUSMONITOR': The client operates as a busmonitor where he can’t actively participate on the bus. Only one 'BUSMONITOR' connection is allowed at the same time on a KNXnet/IP gateway. Transport config options: udp.local-port INT -1 Some connections require a UDP listener to listen on a fixed port. Use this configuration option in order to define the port number of the local port. pcap.replay-speed-factor FLOAT 1.0 Numeric value for changing the replay speed: - 1 = Normal speed (default) - 0 = Maximum speed - 0.5 = Half speed - 2 = Double speed pcap.loop BOOLEAN false Should the replay start at the beginning of the file as soon as the end is reached? - true = Automatically start again - false = Stop at the end (default) pcap.filter STRING Filter expression used to filter out unwanted packets from the replay. pcap.support-vlans BOOLEAN false Should VLan packets be automatically unpacked? pcap.protocol-id INT -1 When provided, filters all packets to let only packets matching this ethernet protocol-id pass. raw.resolve-mac-address BOOLEAN If set to true, the transport will automatically resolve the MAC address for a given IP address (Allows connecting to a raw-socket device using the devices host-name or ip-address). raw.support-vlans BOOLEAN false Should VLan packets be automatically unpacked? raw.protocol-id INT -1 When provided, filters all packets to let only packets matching this ethernet protocol-id pass. KNX Addresses usually have one of the following structures: 3-level Address: {main-group(0-15)}/{middle-group(0-15)}/{sub-group(0-255)} 2-level Address: {main-group(0-15)}/{sub-group(0-4095)} 1-level Address: {sub-group(0-65535)} Depending on the group-address-type configured in the connection string or defined in the knxproj-file configured by the knxproj-file-path connection string parameter, the corresponding address pattern has to be used. However, when subscribing for events, each segment allows using of the wildcard character *. If the addresses used in the KNX installation are structured, this way it is possible to, for example (depending on the scheme used): Collect all information for a given level of your building: 1// Collect all information for a given room: 2/4/* Collect all information about heating in all rooms: //50 Don’t use wildcards when explicitly reading or writing data, this is only supported when subscribing to events.","title":"KNXnet/IP","component":"plc4x","version":"pre-release","name":"knxnetip","url":"/plc4x/pre-release/users/protocols/knxnetip.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"udp","id":2},{"text":"pcap","id":3},{"text":"raw","id":4},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":5}]},"76":{"id":76,"text":"Name Type Default Value Required Description Name Logix CIP Code logix Maven Dependency org.apache.plc4x plc4j-driver-eip pre-release Default Transport tcp Supported Transports tcp Config options: communication-path STRING The communication path allows for connection routing across multiple backplanes. It uses a common format found in Logix controllers. It consists of pairs of values, each pair begins with either 1 (Backplane) or 2 (Ethernet), followed by a slot in the case of a backplane address, or if using Ethernet an ip address. e.g. [1,4,2,192.168.0.1,1,1] - Routes to the 4th slot in the first rack, which is a ethernet module, it then connects to the address 192.168.0.1, then finds the module in slot 1. backplane INT 1 Without using routing information the backplane defaults to 1. This is overridden if communicationPath is provided. slot INT 0 The slot within the backplane the CPU is located. big-endian BOOLEAN true Configure if the connection should be set to transport data in Big-Endian format, or not. force-unconnected-operation BOOLEAN false Forces the driver to use unconnected requests. Since: 0.13.0 Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. Logix has the following connection string format:- logix:tcp://{ip-address}:{port}?{options} An example connection string would look like:- logix:tcp://127.0.0.1:502?communicationPath=[1,1] Note the port and option fields are optional. In general all Logix addresses have this format: {address}:{data-type}[{array-size}] If the array-size part is omitted, the size-default of 1 is assumed. If the data-type part is omitted, the data type from the controller is used The address format matches that found in the controller. The following data types are supported BOOL (boolean) SINT (int 8) USINT (uint 8) BYTE (uint 8) INT (int 16) UINT (uint 16) WORD (uint 16) DINT (int 32) UDINT (uint 32) DWORD (uint 32) LINT (int 64) REAL (float)","title":"Logix","component":"plc4x","version":"pre-release","name":"logix","url":"/plc4x/pre-release/users/protocols/logix.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":3},{"text":"Connection String","hash":"_connection_string","id":4},{"text":"General Format","hash":"_general_format","id":5},{"text":"Data Types","hash":"_data_types","id":6}]},"77":{"id":77,"text":"Name Type Default Value Required Description Name Modbus TCP Code modbus-tcp Maven Dependency org.apache.plc4x plc4j-driver-modbus pre-release Default Transport tcp Supported Transports tcp Config options: request-timeout INT 5000 Default timeout for all types of requests. default-unit-identifier INT 1 Unit-identifier or slave-id that identifies the target PLC (On RS485 multiple Modbus Devices can be listening). Defaults to 1. ping-address STRING 4x00001:BOOL Simple address, that the driver will use to check, if the connection to a given device is active (Defaults to reading holding-register 1). default-payload-byte-order STRING BIG_ENDIAN Default encoding used for transporting register values (Defaults to BIG_ENDIAN). Allowed values are: - BIG_ENDIAN - LITTLE_ENDIAN - BIG_ENDIAN_BYTE_SWAP - LITTLE_ENDIAN_BYTE_SWAP Since: 0.13.0 max-coils-per-request INT 2000 Maximum number of coils addressable in one request (Defaults to 2000) Since: 0.13.0 max-registers-per-request INT 125 Maximum number of registers addressable in one request (Defaults to 125) Since: 0.13.0 Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. Name Type Default Value Required Description Name Modbus RTU Code modbus-rtu Maven Dependency org.apache.plc4x plc4j-driver-modbus pre-release Default Transport serial Supported Transports tcp serial Config options: request-timeout INT 5000 Default timeout for all types of requests. default-unit-identifier INT 1 Unit-identifier or slave-id that identifies the target PLC (On RS485 multiple Modbus Devices can be listening). Defaults to 1. Since: renamed from 'unit-identifier' in 0.13.0 default-payload-byte-order STRING BIG_ENDIAN Default encoding used for transporting register values (Defaults to BIG_ENDIAN). Allowed values are: - BIG_ENDIAN - LITTLE_ENDIAN - BIG_ENDIAN_BYTE_SWAP - LITTLE_ENDIAN_BYTE_SWAP Since: 0.13.0 max-coils-per-request INT 2000 Maximum number of coils addressable in one request (Defaults to 2000) Since: 0.13.0 max-registers-per-request INT 125 Maximum number of registers addressable in one request (Defaults to 125) Since: 0.13.0 Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. serial.baud-rate INT 57600 Baud-rate the serial port is set to. Typical values are: - 9600 - 14400 - 19200 - 38400 - 57600 - 115200 - 128000 But can also be smaller or larger values. serial.num-data-bits INT 8 Number of data-bits used to send data. Typical values are: - 7 - 8 But can also be smaller or larger values. serial.num-stop-bits INT 1 Number of stop-bits used to terminate data. Typical values are: - 1 - 2 (The theoretical 1.5 stop-bits setting is not supported) serial.parity STRING NO_PARITY Number of bits used to calculate data parity. This is used to detect errors in transmission. Allowed values are: - NO_PARITY - ODD_PARITY - EVEN_PARITY - MARK_PARITY - SPACE_PARITY Name Type Default Value Required Description Name Modbus ASCII Code modbus-ascii Maven Dependency org.apache.plc4x plc4j-driver-modbus pre-release Default Transport serial Supported Transports tcp serial Config options: request-timeout INT 5000 Default timeout for all types of requests. default-unit-identifier STRUCT 1 Unit-identifier or slave-id that identifies the target PLC (On RS485 multiple Modbus Devices can be listening). Defaults to 1. default-payload-byte-order STRING BIG_ENDIAN Default encoding used for transporting register values (Defaults to BIG_ENDIAN). Allowed values are: - BIG_ENDIAN - LITTLE_ENDIAN - BIG_ENDIAN_BYTE_SWAP - LITTLE_ENDIAN_BYTE_SWAP Since: 0.13.0 max-coils-per-request INT 2000 Maximum number of coils addressable in one request (Defaults to 2000) Since: 0.13.0 max-registers-per-request INT 125 Maximum number of registers addressable in one request (Defaults to 125) Since: 0.13.0 Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. serial.baud-rate INT 57600 Baud-rate the serial port is set to. Typical values are: - 9600 - 14400 - 19200 - 38400 - 57600 - 115200 - 128000 But can also be smaller or larger values. serial.num-data-bits INT 8 Number of data-bits used to send data. Typical values are: - 7 - 8 But can also be smaller or larger values. serial.num-stop-bits INT 1 Number of stop-bits used to terminate data. Typical values are: - 1 - 2 (The theoretical 1.5 stop-bits setting is not supported) serial.parity STRING NO_PARITY Number of bits used to calculate data parity. This is used to detect errors in transmission. Allowed values are: - NO_PARITY - ODD_PARITY - EVEN_PARITY - MARK_PARITY - SPACE_PARITY Name Value Description Supported Operations read write Modbus has the following connection string format:- modbus-tcp:{transport}://{ip-address}:{port}?{options} An example connection string would look like:- modbus-tcp:tcp://127.0.0.1:502 Note the transport, port and option fields are optional. In general all Modbus addresses have this format: {memory-Area}{start-address}:{data-type}[{array-size}]:{name-value-tag-options} If the array-size part is omitted, the size-default of 1 is assumed. If the data-type part is omitted, it defaults to BOOL for Coils and Discrete Inputs and INT for input, holding and extended registers. If the name-value-tag-options part is omitted, simply no configuration fine-tuning is applied. Additionally address can contain tag configuration: {unit-id: 123} Specifying this value overrides value of default-unit-id parameter specified at the connection string. {byte-order: 'LITTLE_ENDIAN'} With this, can the default byte-order be overridden on a per-tag basis. If not provided the default-byte-order from the connection string is used, or BIG_ENDIAN, if this is also not provided. There are a number of memory areas defined in the Modbus specification. Discrete Input Area Coil Area Input Register Area Holding Register Extended Register Area Name Memory Area Aliases Description Bit-Size Permissions Starting Address Discrete Input discrete-input: or 1 or 1x Boolean input value, usually representing a binary input to the PLC 1 Read Only 1 Coil coil: or 0 or 0x Boolean value, usually representing a binary output from the PLC 1 Read/Write 1 Input Register input-register: or 3 or 3x Short input value, usually representing an analog input to the PLC 16 Read Only 1 Holding Register holding-register: or 4 or 4x Short value, usually representing an analog output from the PLC 16 Read/Write 1 Extended Register extended-register: or 6 or 6x Short value, 16 Read/Write 0 Initially the Modbus format allowed up to 10000 address to be specified or the discrete inputs, coils, input registers and holding registers. Later on, this was expanded to allow up 65536 address within each memory area (except the extended register area). When using the long address format i.e. input-registers:1 the addresses between 1 and 65535 are able to be specified. When using the shorter versions there are two formats available i.e. 30001 and 300001. With the shorter format 3XXXX being limited to between 30001 and 39999, while the longer format 3XXXXX being limited to between 300001 and 365535. These memory areas all start at address 1. For the extended register area the addresses 0-99999 are able to be specified. These registers are mapped to file records with a length of 10000. Address 600000 corresponds to the first address in file record 0. Address 610000 is then the first address in the second file record and so on. It is noted that there is generally only 10 file records (600000 thru to 699999) however the spec allows for 65536 file records. Using the extended-register: format you are able to reference all of these, if the shorter format is used then it is limited to 699999. This memory area starts at address 0. The following data types are supported BOOL (boolean) SINT (int 8) USINT (uint 8) BYTE (uint 8) INT (int 16) UINT (uint 16) WORD (uint 16) DINT (int 32) UDINT (uint 32) DWORD (uint 32) LINT (int 64) ULINT (uint 64) LWORD (uint 64) REAL (float) LREAL (double) CHAR (char) WCHAR (2 byte char) Most memory areas start at address 1, except for the extended register area which starts at 0. These are both mapped to 0x0000 when it is sent in the Modbus protocol. The input, holding and extended registers consist of 16-bit registers while the discrete input and coil areas consist of bits. The following Modbus function codes are supported:- 0x01 (Read Coils) 0x02 (Read Discrete Inputs) 0x03 (Read Holding Registers) 0x04 (Read Input Registers) 0x05 (Write Single Coil) 0x06 (Write Single Register) 0x0F (Write Multiple Coils) 0x10 (Write Multiple Registers) 0x14 (Read File Record)(Extended Register Read) 0x15 (Write File Record)(Extended Register Write) To read 10 holding registers starting at address 20 and parse as Unsigned Integers the following examples are all valid. holding-register:20:UINT[10] 400020:UINT[10] 4x00020:UINT[10] 40020:UINT[10] 4x0020:UINT[10] To read 1 holding register at address 5678 the following examples are valid. holding-register:5678 405678 4x05678 45678 4x5678 To read 1 holding register of unit 10 at address 5678 the following examples are valid. holding-register:5678{unit-id: 10} 405678{unit-id: 10} 4x05678{unit-id: 10} 45678{unit-id: 10} 4x5678{unit-id: 10} To read 10 extended registers starting at address 50 the following examples are valid. extended-register:50[10] 600050[10] 6x00050[10] 60050[10] 6x0050[10] This corresponds to addresses 50-59 in file record 1. To read 10 extended registers starting at address 9995 the following examples are valid. extended-register:9995[10] 609995[10] 6x09995[10] 69995[10] 6x9995[10] This corresponds to addresses 9995-9999 in file record 1 and addresses 0-5 in file record 2. Note that this request is split into 2 sub requests in the Modbus protocol.","title":"Modbus (TCP/UDP/Serial)","component":"plc4x","version":"pre-release","name":"modbus","url":"/plc4x/pre-release/users/protocols/modbus.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"Modbus TCP","hash":"_modbus_tcp","id":2},{"text":"tcp","id":3},{"text":"Modbus RTU","hash":"_modbus_rtu","id":4},{"text":"tcp","id":5},{"text":"serial","id":6},{"text":"Modbus ASCII","hash":"_modbus_ascii","id":7},{"text":"tcp","id":8},{"text":"serial","id":9},{"text":"Supported Operations","hash":"_supported_operations","id":10},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":11},{"text":"Connection String","hash":"_connection_string","id":12},{"text":"General Format","hash":"_general_format","id":13},{"text":"Memory Areas","hash":"_memory_areas","id":14},{"text":"Data Types","hash":"_data_types","id":15},{"text":"Some useful tips","hash":"_some_useful_tips","id":16},{"text":"Examples","hash":"_examples","id":17}]},"78":{"id":78,"text":"Name Type Default Value Required Description Name Opcua Code opcua Maven Dependency org.apache.plc4x plc4j-driver-opcua pre-release Default Transport tcp Supported Transports tcp Config options: protocol-code STRING transport-code STRING transport-config STRING discovery BOOLEAN true Controls the feature of the discovery endpoint of an OPC UA server which every server will propagate over an '/discovery' endpoint. The most common issue here is that most servers are not correctly configured and propagate the wrong external IP or URL address. If that is the case you can disable the discovery by configuring it with a false value. The discovery phase is always conducted using NONE security policy. username STRING A username to authenticate to the OPCUA server with. password STRING A password to authenticate to the OPCUA server with. security-policy STRING NONE The security policy applied to communication channel between driver and OPC UA server. Default value assumes. Possible options are NONE, Basic128Rsa15, Basic256, Basic256Sha256, Aes128_Sha256_RsaOaep, Aes256_Sha256_RsaPss. message-security STRING SIGN_ENCRYPT The security policy applied to messages exchanged after handshake phase. Possible options are NONE, SIGN, SIGN_ENCRYPT. This option is effective only when securityPolicy turns encryption (anything beyond NONE). key-store-file STRING The Keystore file used to lookup client certificate and its private key. key-store-type STRING pkcs12 Keystore type used to access keystore and private key, defaults to PKCS (for Java 11+). Possible values are between others jks, pkcs11, dks, jceks. key-store-password STRING Java keystore password used to access keystore and private key. server-certificate-file STRING Filesystem location where server certificate is located, supported formats are DER and PEM. trust-store-file STRING The trust store file used to verify server certificates and its chain. trust-store-type STRING pkcs12 Keystore type used to access keystore and private key, defaults to PKCS (for Java 11+). Possible values are between others jks, pkcs11, dks, jceks. trust-store-password STRING Password used to open trust store. channel-lifetime LONG 3600000 Time for which negotiated secure channel, its keys and session remains open. Value in milliseconds, by default 60 minutes. session-timeout LONG 120000 Expiry time for opened secure session, value in milliseconds. Defaults to 2 minutes. negotiation-timeout LONG 60000 Timeout for all negotiation steps prior acceptance of application level operations - this timeout applies to open secure channel, create session and close calls. Defaults to 60 seconds. request-timeout LONG 30000 Timeout for read/write/subscribe calls. Value in milliseconds. encoding.receive-buffer-size INT 65535 Maximum size of received TCP transport message chunk value in bytes. encoding.send-buffer-size INT 65535 Maximum size of sent transport message chunk. encoding.max-message-size INT 2097152 Maximum size of complete message. encoding.max-chunk-count INT 64 Maximum number of chunks for both sent and received messages. endpoint-host STRING Endpoint host used to establish secure channel connection. Used when client made connection to server which advertises different hostname than one used for network connection. endpoint-port INT Endpoint port used to establish secure channel. Used when client made connection to server which advertises different port number than one used for network connection. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. Name Value Description Supported Operations read The read interface allows for reading the full range of supported PLC4X data types in single and bulk requests write The write interface allows for writing the full range of supported PLC4X data types in single and bulk requests subscribe Subscriptions are possible with events on event- and cyclic-basis The OPC UA drivers uses the connection string opcua:{transport}://{ip-address}:{port}?{options} An example of this connection string would be:- opcua:tcp://127.0.0.1:12686?discovery=true&username=admin&password=password Note the transport, port and options fields are optional. The secure channel implementation within Apache PLC4X project have been tested against existing open source server implementations. This includes Eclipse Milo (all modes) as well as OPC Foundation .NET server (except Basic128Rsa15). Manual tests proven that driver is able to communicate with OPC UA server launched on PLCs as well as commercial simulators. Depending on actual configuration of remote end there might be necessity to prepare client certificate. Preparation of certificate is beyond driver, however in case when no client certificate is provided, it will be auto-generated to establish a session. Please follow our tutorial on provisioning of client private key and certificate. By following it you will be able to create self-signed certificate for use with both hardware and software based OPC-UA servers. Please note that there are multiple appearances of certificates within specification. There is transport level certificate which can be provided though keystore options, but there is also a X509 Certificate which can be used for authentication (currently unsupported by PLC4X). The security modes differ between themselves by strength of applied signature and encryption algorithms. Driver is able to communicate with single security mode at the time. Additionally, to security policy it is possible to specify message-security option which indicates expected security settings after initial handshake. By default, this option is set to SIGN_ENCRYPT which imposes high security settings and full encryption of exchanged message payloads. In case when additional diagnostics is needed payloads has to be traced through TRACE level log entries. The SIGN mode gives possibility o browse packets in tools such wireshark. The OPC UA specification defines its own procedures for certificate validation. In order to simplify implementation by default server certificate validation is relaxed. Unless explicitly disabled through configuration of trust-store-file all server certificates will be accepted without validation. In case when secure communication is enabled the trust-store-file option might be used to point certificates which client should accept. The acceptance rely on regular TLS checks (expiry date, certificate path etc.), does not validate OPC UA specific parts such as application URI. Depending on settings driver might or might not attempt to discover endpoints from remote server. In case when discovery option is set to true driver will look up server certificate through connection attempt. The discovery option also enables checks of server endpoints for matching security settings. Once initial discovery is completed and driver finds endpoint matching its security settings it will launch second connection attempt which will switch to configured security mode. Each connection attempt made by driver attempt to use limits described in table above. Role of these options is declaration of values accepted and expected by client. Once server returns its limits (Acknowledge for supplied Hello call) driver picks values from these. The only one note is that driver takes minimum of local receive and remote send buffer size. It does same with local send and remote receive buffer. Usual values of encoding.send-buffer-size and encoding.receive-buffer-size PLC devices remain at 8196 bytes. Due to lack of complete implementation of negotiation and chunking logic the OPC UA driver prior Apache PLC4X 0.11 release could supply calls exceeding server limits. To read, write and subscribe to data, the OPC UA driver uses the variable declaration string of the OPC UA server it is connecting to. It includes the namespace(ns) of the hierarchy tree followed by the type of identifier string(s), numeric(i), binary(b) or guid(g) and its address. The Data Type is an optional field, if it is not included a default data type is selected based on the datatype of the returned value. For Unsigned data types it needs to be included otherwise. ns={namespace-index};[s|i|g|b]={Identifier};a=attributeId;{Data Type} The a parameter which stands for attributeId of an object is optional, and by default it is assumed to be Value 13 (0x0d). Value of this parameter can be specified using numeric value or OPC-UA attribute name (case-sensitive). The following data types are supported BOOL (boolean) SINT (int 8) USINT (uint 8) BYTE (uint 8) INT (int 16) UINT (uint 16) WORD (uint 16) DINT (int 32) UDINT (uint 32) DWORD (uint 32) LINT (int 64) ULINT (uint 64) LWORD (uint 64) REAL (float) LREAL (double) CHAR (char) WCHAR (2 byte char) STRING (utf-8) WSTRING (utf-16) The following are examples of valid addresses String address: ns=2;s=HelloWorld/ScalarTypes/Boolean ns=2;s=HelloWorld/ScalarTypes/Boolean;BOOL ns=2;s=HelloWorld/ScalarTypes/Boolean;a=Value;BOOL Numeric address ns=1;i=1337 ns=1;i=1337;DINT ns=1;i=1337;a=Value;DINT GUID address: ns=2;g=09087e75-8e5e-499b-954f-f2a8624db28a ns=2;g=09087e75-8e5e-499b-954f-f2a8624db28a;REAL ns=2;g=09087e75-8e5e-499b-954f-f2a8624db28a;a=Value;REAL Event Subscription: ns=0;i=2253;a=EventNotifier;BOOL{EventId: '', EventType: '', Severity: '', Time: '', Message: ''} Note the Identifiers s,i,b and g specify the format of the address not the data type of the returned value. The a attribute is required only for event subscriptions which additionally makes use of tag config. Tag config is a list of key-value pairs which rely on simplified JSON syntax. The namespace (e.g. ns=2) within the address is specific to the server you are connecting to. Objects appearing in namespaces can, and will vary, as namespaces are used to separate scope of objects. OPC-UA servers support subscriptions which allow to reduce amount of data exchanged between client and server. There are three primary subscription modes: Data Change Notification, Status Change Notification and Event Notification. Currently, Apache PLC4X client supports Data Change Notification and Event Notification. Under the hood subscriptions still require client to request data though PublishRequest. Data change notifications are created with list of tags, after which client need to send publish requests. Upon each publish request server will send response which will include values of all tag for which subscription was created. While OPC-UA specification permits mutation of subscription contents, PLC4X API does not allow that. By default, Cyclic and Change of State subscriptions operations defined in PLC4X client API result in data change notifications. Third mode of subscription defined by PLC4X API is Event Subscription. This kind of subscription is available since PLC4X 0.13 and have slightly different syntax, which brings more complex data. OPC-UA events can be used to receive notifications of various kinds which appear when specific situation happens. In other protocols this kind of behavior can function as alarms or alerts. In order to create OPC-UA event subscription you need to: define a=EventNotifier or a=12 specify event fields to retrieve through a tag config The tag config key must match OPC-UA event field. The tag config value is not used, thus it can not be used to specify filter criteria for field value. Fields which are supported are defined in OPC UA BaseEventType: EventId EventType SourceNode SourceName Time ReceiveTime LocalTime Message Severity Example syntax: ns=0;i=2253;a=EventNotifier;BOOL{EventId: '', EventType: '', Severity: '', Time: '', Message: ''}. Subscription event generated by client upon receiving notification will contain an object (PlcSTRUCT/Map) which will contain all requested fields. Please note that Apache PLC4X does only basic normalization of data, thus your application need to take care of actual processing of event data. This driver supports tag metadata. Beyond standard metadata fields such timestamp and timestamp_source it can provide following keys: opcua_quality opcua_server_timestamp opcua_source_timestamp Appearance of these fields is conditional, they are provided only when it can be sourced from packets exchanged between client and server. This means that depending on operation conducted by client (read/write/subscribe) metadata will vary. There are multiple OPC-UA server implementations. Each of it have its own specifics, sometimes showing up more detailed security handling or further edge case buried in specification. So far Apache PLC4X OPC-UA client have been confirmed to be working with below servers (order in chronology of passed tests/confirmed compatibility): version 0.13 node-opcua Mitsubishi Electric MX OPC Server UA version 0.12 Prosys OPC-UA Simulation Server Simatic OPC UA S7-1200 Basic OPC Foundation UA-.NET Standard Simocode OPC UA server versions prior 0.12 Eclipse Milo OPC UA The OPC Unified Architecture (UA), released in 2008, is a platform independent service-oriented architecture that integrates all the functionality of the individual OPC Classic specifications into one extensible framework. This multi-layered approach accomplishes the original design specification goals of: Functional equivalence: all COM OPC Classic specifications are mapped to UA Platform independence: from an embedded micro-controller to cloud-based infrastructure Secure: encryption, authentication, and auditing Extensible: ability to add new features without affecting existing applications Comprehensive information modeling: for defining complex information","title":"OPC UA","component":"plc4x","version":"pre-release","name":"opcua","url":"/plc4x/pre-release/users/protocols/opcua.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2},{"text":"Connection String","hash":"_connection_string","id":3},{"text":"Secure communication","hash":"_secure_communication","id":4},{"text":"Certificate verification","hash":"_certificate_verification","id":5},{"text":"Negotiation procedure","hash":"_negotiation_procedure","id":6},{"text":"Address Format","hash":"_address_format","id":7},{"text":"Data Types","hash":"_data_types","id":8},{"text":"Example of a valid OPC UA address:","hash":"_example_of_a_valid_opc_ua_address","id":9},{"text":"Some useful tips","hash":"_some_useful_tips","id":10},{"text":"OPC UA Data Change Notification","hash":"_opc_ua_data_change_notification","id":11},{"text":"OPC UA Event Notification","hash":"_opc_ua_event_notification","id":12},{"text":"Tag metadata","hash":"_tag_metadata","id":13},{"text":"Compatibility with OPC-UA Servers","hash":"_compatibility_with_opc_ua_servers","id":14},{"text":"More details on OPC UA","hash":"_more_details_on_opc_ua","id":15}]},"79":{"id":79,"text":"Name Type Default Value Required Description Name Open-Protocol Code open-protocol Maven Dependency org.apache.plc4x plc4j-driver-open-protocol pre-release Default Transport tcp Supported Transports tcp Config options: Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected.","title":"Open-Protocol (Torque-Tools)","component":"plc4x","version":"pre-release","name":"open-protocol","url":"/plc4x/pre-release/users/protocols/open-protocol.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2}]},"80":{"id":80,"text":"Name Type Default Value Required Description Name PLC4X (Proxy-Protocol) Code plc4x Maven Dependency org.apache.plc4x plc4j-driver-plc4x pre-release Default Transport tcp Supported Transports tcp Config options: remote-connection-string STRING URL-Encoded connection string to use on the proxy side to reach the given PLC. request-timeout INT 5000 Default timeout for all types of requests. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. Name Value Description Supported Operations: read write subscribe The plc4x protocol connection has the following connection string format:- plc4x:{transport}://{ip-address/hostname}:{port}?remote-connection-string={url-encoded-connection-string} An example connection string would look like:- plc4x://127.0.0.1?remote-connection-string=simulated%3A%2F%2Flocalhost Note the transport, port and option fields are optional. The remote connection string: simulated://localhost is encoded as simulated%3A%2F%2Flocalhost The address format is simply the address format of the used remote connection. So if you specify a remote connection as simulated, please follow the address format of that driver.","title":"PLC4X (Proxy) (TCP)","component":"plc4x","version":"pre-release","name":"plc4x","url":"/plc4x/pre-release/users/protocols/plc4x.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2},{"text":"Connection String Options","hash":"_connection_string_options_2","id":3},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":4},{"text":"Connection String","hash":"_connection_string","id":5},{"text":"General Format","hash":"_general_format","id":6}]},"81":{"id":81,"text":"The PROFINET driver implements a class 3 real time controller. Which is able to communicate with multiple devices on the same network segment. On linux as the Java executable won’t have permission to capture raw packets, this needs to be enabled via:- sudo setcap cap_net_raw,cap_net_admin=eip /usr/lib/jvm/jdk-19/bin/java The executable will change based on the jdk and OS you are using. Name Type Default Value Required Description Name Profinet Code profinet Maven Dependency org.apache.plc4x plc4j-driver-profinet-ng pre-release Default Transport raw Supported Transports raw Config options: gsd-directory STRING ~/.gsd required dap-id STRING ip-address STRING Transport config options: raw.resolve-mac-address BOOLEAN If set to true, the transport will automatically resolve the MAC address for a given IP address (Allows connecting to a raw-socket device using the devices host-name or ip-address). raw.support-vlans BOOLEAN false Should VLan packets be automatically unpacked? raw.protocol-id INT -1 When provided, filters all packets to let only packets matching this ethernet protocol-id pass. Name Value Description Supported Operations subscribe Only the subscription service is currently supported. The Profinet driver uses the connection string profinet:raw://{ip-address}:{port}?{options} Where the {ip-address}, unlike other PLC4X driver, uses the local IP address of the network interface you would like to bind to. This allows us to connect to multiple devices at once via the devices parameter. An example of this connection string which has two devices test-device-1 and test-device-2, connected on the localhost interface would be:- profinet:raw://127.0.0.1?gsddirectory=/Profinet/GSD&devices=[[test-device-1,MOD_1,(SUBMOD_1,,SUBMOD_1,)],[test-device-2,MOD_1,(SUBMOD_1,,SUBMOD_1,)]] Note the transport, port fields shouldn’t have to be changed The format of address will be in the format. device.slot.id.module_name.channel.bit:format An example would be device-1.1.1.DIGITAL_INPUT.0.1:BOOL Note:- The following data types are supported BOOL (boolean) SINT (int 8) USINT (uint 8) BYTE (uint 8) INT (int 16) UINT (uint 16) WORD (uint 16) DINT (int 32) UDINT (uint 32) DWORD (uint 32) LINT (int 64) ULINT (uint 64) LWORD (uint 64) REAL (float) LREAL (double) CHAR (char) WCHAR (2 byte char) STRING (utf-8) WSTRING (utf-16) Although the GSD file contains all the information needed to configure which data will be available from a device. The easiest approach is to use the browsing function of the Profinet driver to return a list of all available tags. Then only the addresses of interest can be selected.","title":"Profinet (In Development)","component":"plc4x","version":"pre-release","name":"profinet","url":"/plc4x/pre-release/users/protocols/profinet.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"raw","id":2},{"text":"Connection String","hash":"_connection_string","id":3},{"text":"Address Format","hash":"_address_format","id":4},{"text":"Data Types","hash":"_data_types","id":5},{"text":"Some useful tips","hash":"_some_useful_tips","id":6}]},"82":{"id":82,"text":"When trying to connect to a Siemens LOGO device, it is important to add one connection option, as Siemens seems to have only partially implemented the protocol, the device simply terminates the connection as soon as our driver tried to read the SZL table in order to find out which type of S7 device it is talking to. This can be disabled by passing in the type of PLC. For a Siemens LOGO device therefore please add ?controller-type=LOGO to the connection string. The S7-Light driver is a stripped-down version of the full S7 driver. It’s main goal is to simplify communication for S7 devices, that do not support subscriptions, as under heavy load, these have proven to cause issues. As soon as we have rewritten the PLC4X SPI, we will most probably merge both back together again. In PLC4X the URL philosophy is used as the data source for the connection for the specification of the driver and its connection parameters, this is almost a standard in network applications (pointing to the best practices). It is also possible to create an instance of the driver directly and assign its parameters with the typical \"set\" methods. In the following, reference will be made to the Java-based driver, which implements all the functionalities indicated in this manual. The specified URL has the structure SCHEMA: Defines the protocol to be used, in our particular case S7 DOMAINE NAME: Physical address of the PLC or CP’s. PARAMETERS: List of key/value values separated by ampersand \"&\". They define the behavior of the driver. The SCHEMA and DOMAINE NAME are almost standard for any URL and do not require further explanation. The PARAMETERS that define the behavior of the driver are defined in the following table. Name Type Default Value Required Description Name Siemens S7 (Basic) (light) Code s7-light Maven Dependency org.apache.plc4x plc4j-driver-s7 pre-release Default Transport tcp Supported Transports tcp Config options: local-rack INT 1 Rack value for the client (PLC4X device). local-slot INT 1 Slot value for the client (PLC4X device). local-device-group STRING OTHERS Local Device Group. (Defaults to 'OTHERS'). Allowed values: - PG_OR_PC - OS - OTHERS Since: 0.13.0 local-tsap INT 0 Local Transport Service Access Point. (Overrides settings made in local-rack, local-slot and local-device-group. Be sure to convert into integer representation) remote-rack INT 0 Rack value for the remote main CPU (PLC). remote-slot INT 0 Slot value for the remote main CPU (PLC). remote-device-group STRING PG_OR_PC Remote Device Group (Defaults to 'PG_OR_PC'). Allowed values: - PG_OR_PC - OS - OTHERS remote-tsap INT 0 Remote Transport Service Access Point. (Overrides settings made in remote-rack, remote-slot and remote-device-group. Be sure to convert into integer representation) pdu-size INT 1024 Maximum size of a data-packet sent to and received from the remote PLC. During the connection process both parties will negotiate a maximum size both parties can work with and is equal or smaller than the given value is used. The driver will automatically split up large requests to not exceed this value in a request or expected response. max-amq-caller INT 8 Maximum number of unconfirmed requests the PLC will accept in parallel before discarding with errors. This parameter also will be negotiated during the connection process and the maximum both parties can work with and is equal or smaller than the given value is used. The driver will automatically take care not exceeding this value while processing requests. Too many requests can cause a growing queue. max-amq-callee INT 8 Maximum number of unconfirmed responses or requests PLC4X will accept in parallel before discarding with errors. This option is available for completeness and is correctly handled out during the connection process, however it is currently not enforced on PLC4X’s side. So if a PLC would send more messages than agreed upon, these would still be processed. controller-type STRING As part of the connection process, usually the PLC4X S7 driver would try to identify the remote device. However some devices seem to have problems with this and hang up or cause other problems. In such a case, providing the controller-type will skip the identification process and hereby avoid this type of problem. Possible values are:/n- S7_300 - S7_400 - S7_1200 - S7-1500 - LOGO read-timeout INT 1000 This is the maximum waiting time for reading on the TCP channel. As there is no traffic, it must be assumed that the connection with the interlocutor was lost and it must be restarted. When the channel is closed, the \"fail over\" is carried out in case of having the secondary channel, or it is expected that it will be restored automatically, which is done every 4 seconds. enable-block-read-optimizer BOOLEAN true Enable the new experimental block-read optimizer, that groups tags in close memory proximity together and reads blocks of data instead of individual tags. This allows more data to be transferred in one request and is generally intended for cases in which a big number of tags are read. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. Name Value Description Supported Operations read Only supported with tcp transport. write Only supported with tcp transport. After defining the URL, the connection is made. Driver selection from the URL is done via PLC4X’s SPI support, so driver instantiation and mapping originating from the URL is done transparently by the Java SPI services. Any inconsistency in the URL definition will generate an exception that must be handled by the user program. . . . try { PlcConnection connection new DefaultPlcDriverManager().getConnection(\"s7://10.10.1.33?remote-rack=0&remote-slot=3&controller-type=S7_400\"); //(2.1) final PlcReadRequest.Builder subscription connection.readRequestBuilder(); //(2.2) . . . } In (2.1) the driver instance is created, you only have to ensure that the required driver is in the CLASSPATH of your Java environment. Already in (2.2) it defines the type of service required (read/write or a subscription), here a read request is indicated. No problems? Then we are ready to configure and request the data that we require from the PLC. Let’s go to step \"three\". By having the connection we can start building and executing our requests. . . . readrequest.addTagAddress(\"MySZL\", \"SZL_ID=16#0091;INDEX=16#0000\"); //(3.1) final PlcReadRequest rr readrequest.build(); //(3.2) final PlcReadResponse szlresponse rr.execute().get(); //(3.3) if (szlresponse.getResponseCode(\"MySZL\") = PlcResponseCode.OK) {//(3.4) } . . . In (3.1) the request for a PLCTag is constructed, in this particular case a list of controller system status. In step (3.2) we build the request and in (3.3) we execute the request using the futures pattern in Java. We verify in (3.4) that everything is fine and that our data was acquired. These steps are shown separately for ease of analysis, but can be simplified into one statement to avoid excessive code. A detailed explanation of the format for addressing PLCTags in the S7 driver will be given in the following sections. When programming Siemens PLCs, usually the tool used to do that is called TIA Portal. The PLC4X S7 Driver is therefore sticking to the address format defined by this tool as it simplifies exchanging address information. In general all S7 addresses have this format: . %{Memory-Area}{start-address}:{Data-Type}[{array-size}] If the array-part is omitted, the size-default of 1 is assumed. Generally there are two types of addresses: . Bit-Addresses {Memory-Area-Code}{Start-Byte-Address}.{Bit-Offset}:BOOL[{Count}] . Byte-Addresses {Memory-Area-Code}{Start-Byte-Address}:{Data-Type-Code}[{count}] Bit addresses are only used if the datatype: BOOL is used. The array notation of these can be omitted. In this case a Count of 1 is used per default. Start-Byte-Address and Bit-Offset in above list both represent unsigned integer values. In case of accessing data in the data block memory area, the syntax is quite a bit more complex: . DB{Data-Block-Number}.DB{Short-Data-Type-Code}{Start-Byte-Address}.{Bit-Offset}:BOOL[{Count}] . DB{Data-Block-Number}.DB{Short-Data-Type-Code}{Start-Byte-Address}:{Data-Type-Code}[{Count}] When reading a STRING datatype, currently 254 characters would automatically be fetched from the PLC. In order to limit the amount of data, we extended the STRING type declaration syntax to allow limiting this. With the following format less than 254 characters can be read: . DB{Data-Block-Number}.DB{Short-Data-Type-Code}{Start-Byte-Address}:STRING({string-length})[{Count}] These addresses can usually be copied directly out of TIA portal. However we also implemented a shorter version, as above version does have some unnecesary boilerplate parts (The .DB in the middle as well as the Short-Data-Type-Code) The shorter syntax looks like this: . DB{Data-Block-Number}:{Start-Byte-Address}.{Bit-Offset}:BOOL[{Count}] . DB{Data-Block-Number}:{Start-Byte-Address}:{Data-Type-Code}[{Count}] . DB{Data-Block-Number}:{Start-Byte-Address}:STRING({string-length})[{Count}] The S7 driver will handle both types of notation equally. The S7 driver currently allows access to the following memory areas. The Code column represents the code that is used in above general address syntax: Not all S7 device types support the same full set of memory areas, so the last column gives more information on which types a given memory area is supported on. Code Name Description Supported PLC Types C COUNTERS TODO: Document this TODO: Document this T TIMERS TODO: Document this TODO: Document this D DIRECT_PERIPHERAL_ACCESS TODO: Document this TODO: Document this I INPUTS Inputs (Digital and Analog … usually Analog Inputs just have a start-address offset to separate them from the digital ones) All Q OUTPUTS Outputs (Digital and Analog … usually Analog Outputs just have a start-address offset to separate them from the digital ones) All M FLAGS_MARKERS TODO: Document this TODO: Document this DB DATA_BLOCKS Memory areas containing user-defined data structures usually accessed by the integer data block number. antease note that data block addresses have a little more complex address format. All DBI INSTANCE_DATA_BLOCKS TODO: Document this TODO: Document this LD LOCAL_DATA TODO: Document this TODO: Document this Code Short-Code Name Description Size in bits Supported PLC Types Bit-Strings (Will all interpreted as sequence of boolean values in PLC4X) BOOL X Bit Single boolean value 1 All BYTE B Byte Array of 8 boolean values 1 All WORD W Word Array of 16 boolean values 2 All DWORD D Double-Word Array of 32 boolean values 4 All LWORD X Long-Word Array of 64 boolean values 8 S7_1500 Integer values SINT B Small int 8 bit integer (signed) 1 S7_1200, S7_1500 USINT B Small unsigned int 8 bit integer (unsigned) 1 S7_1200, S7_1500 INT W Integer 16 bit integer (signed) 2 All UINT W Unsigned integer 16 bit integer (unsigned) 2 S7_1200, S7_1500 DINT D Double integer 32 bit integer (signed) 4 All UDINT D Unsigned Double Integer 32 bit integer (unsigned) 4 S7_1200, S7_1500 LINT X Long integer 64 bit integer (signed) 8 S7_1500 ULINT X Unsigned long integer 64 bit integer (unsigned) 8 S7_1500 Floating point values REAL D Real 32 bit IEEE 754 full precision floating point value (signed) 4 All LREAL X Long Real 64 bit IEEE 754 double precision floating point value (signed) 8 S7_1200, S7_1500 Character values CHAR B Character 8 bit character 1 All WCHAR X Double byte character 16 bit character value 2 S7_1200, S7_1500 STRING X String String 2 + n bytes 1 All WSTRING X Double byte String String of 16 bit characters 2 + n bytes 1 S7_1200, S7_1500 Temporal values S5TIME X S5 Time S5 Time (like in duration) 2 S7_300, S7_400, S7_1500 TIME X Time Time (like in duration) (Minutes, Seconds, Milliseconds) 4 All LTIME X Long Time Long Time (like in duration) (Minutes, Seconds, Milliseconds, Microseconds, Nanoseconds) 8 S7_1500 DATE X Date Date 2 All TIME_OF_DAY X Time of day Time (like in 4:40PM) 4 All DATE_AND_TIME X Date and Time Date and time (like in 03.05.2020 4:40 PM) 8 S7_300, S7_400, S7_1500 Especially when it comes to the input- and output addresses for analog channels, the start addresses are configurable and hereby don’t always start at the same address. In order to find out what addresses these ports have, please go to the device setting of your PLC in TIA Portal Especially pay attention to this part: In above image you can see that this device has 8 digital inputs (DI 8) and 2 analog inputs (AI 2_1) as well as 6 digital outputs (DQ 6). The start addresses of the digital inputs and outputs start directly at 0. The analog inputs however start at address 64. Each digital input and output can be addresses by a single bit-address (start-address and offset) or can be read in a block by reading a full byte starting at the given start address without providing a bit offset. https://snap7.sourceforge.net/ https://support.industry.siemens.com/cs/document/13649203/simatic-net-pc-software-s7-programming-interface?dti=0&dl=en&lc=es-ES https://support.industry.siemens.com/cs/document/109797648/simatic-comparison-list-for-s7-300-s7-400-s7-1200-s7-1500?dti=0&lc=en-WW https://support.industry.siemens.com/cs/mdm/109746537?c=98956468747&lc=es-DO https://support.industry.siemens.com/cs/document/15166942/writing-user-specific-information-to-the-diagnostic-buffer-of-a-cpu-(sfc-52)?dti=0&lc=en-ES https://support.industry.siemens.com/cs/document/24013249/how-do-you-display-alarm_s-or-alarm_d-messages-with-process-values-(so-called-associated-values)-on-a-wincc-flexible-operator-panel-?dti=0&lc=en-WW https://support.industry.siemens.com/cs/document/109481157/comunicaci%C3%B3n-entre-paneles-de-operador-simatic-hmi-y-convertidores-de-frecuencia-sinamics-g120-para-el-manejo-y-la-visualizaci%C3%B3n-de-avisos-de-fallo-y-de-advertencia-(enlace-directo-sin-controlador)?dti=0&lc=es-WW https://support.industry.siemens.com/cs/document/97550333/sinamics-g-s-hmi-direct-access?dti=0&lc=en-WW https://support.industry.siemens.com/cs/document/21402122/technology-cpus-technology-template-error-messages-?dti=0&lc=en-WW https://support.industry.siemens.com/cs/document/77467239/transforming-warning-and-error-messages-of-a-sinamics-drive-with-the-aid-of-the-xml-parser-and-integrating-them-into-a-step-7-hmi-project?dti=0&lc=en-WW https://support.industry.siemens.com/cs/document/24037531/%C2%BFqu%C3%A9-pasos-de-configuraci%C3%B3n-hay-que-realizar-en-el-simotion-scout-y-el-wincc-flexible-para-que-se-muestren-los-avisos-alarm_s-y-las-alarmas-tecnol%C3%B3gicas-dentro-del-wincc-flexible-runtime-?dti=0&lc=es-ES","title":"S7-Light (Step7)","component":"plc4x","version":"pre-release","name":"s7-light","url":"/plc4x/pre-release/users/protocols/s7-light.html","titles":[{"text":"Connecting as easy as 1-2-3.","hash":"_connecting_as_easy_as_1_2_3","id":1},{"text":"ONE","hash":"_one","id":2},{"text":"Connection String Options","hash":"_connection_string_options","id":3},{"text":"tcp","id":4},{"text":"TWO","hash":"_two","id":5},{"text":"THREE","hash":"_three","id":6},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":7},{"text":"General Format","hash":"_general_format","id":8},{"text":"Memory Areas","hash":"_memory_areas","id":9},{"text":"Data Types","hash":"_data_types","id":10},{"text":"Some useful tips","hash":"_some_useful_tips","id":11},{"text":"Resources","hash":"_resources","id":12}]},"83":{"id":83,"text":"This version of the S7 driver is aimed at exploiting the advanced features of the S7-300 and S7-400 controllers, as well as basic reading and writing functions for the S7-1200 and S7-1500 devices (PUT/GET functions). We hope in a short period of time to have the S7-Plus version, which should exploit the asynchronous functions of the S7-1500. Most of the closed source solutions are based on request/response patterns, generally with a high level of optimization. Even the best open source implementations, such as “Snap7” [1], base their usage on this same pattern. Is there another way to do things?, yes!, but this should be enough for 95% of automation applications, if your system works and you are happy with it, apply the maxim of automation, “Is it working?, no touch it, production first!” If the solution you need to develop must strictly revolve around the Siemens platform, you will probably opt for a solution based on SOFTNET OPC-DA or OPC-UA which is the recommendation given by Siemens, if you want to go to a lower level, you should use the libraries SAPI-S7 [2] (generally supplied with SOFTNET), which is the lowest access layer to access the internal Siemens communications architecture, which gives access to any CP and/or any protocol (S7-TCP, MPI, DP, etc.) that is being used. The configuration of the communication links is carried out from the STEP7 environment (TIA or Simatic Manager) in a static way, so creating communication links falls within a development cycle configure/compile/transfer to each of the interlocutors. Now, what options are there for those applications that want to make use of the asynchronous nature of S7 PLCs, including alarms, events, or time-stamped data? Outside of the Siemens ecosystem, very few. In general they are tied to a specific platform, for example PCS7 (Siemens DCS), Braumat (Platform for brewing processes) or WinCC (SCADA system). This is where the open source nature of the S7 driver developed by the PLC4X team becomes a differentiating factor. The driver data structures are clearly defined in \"mspec\", the cornerstone for the development of our drivers in different languages and platforms, as well as a well-defined API, allow a lingua franca for managing the driver development cycle. Our added value is having the advanced functionalities of the Simatic S7-300/S7-400 such as: Device status management (RUN/STOP). System events (Alarms/User messages). Cyclic Subscription (CYC). SZL(SSL) diagnostics. These functionalities normally available on the Siemens platform (STEP7/TIA/WinCC) are now available for use in open IoT-type applications, which guarantees the correct handling of the \"quality\" of the data, as well as its time stamp. Although this driver is developed using Siemens Hardware, it should be functional with VIPA brand equipment, which is a version (clone) of the S7-300, with more memory and functionalities. If you have one of these devices and you are in your best disposition to carry out communication tests, we would be very grateful if you collaborate with the results in the development list and placing the model and firmware version that you have used. When trying to connect to a Siemens LOGO device, it is important to add one connection option, as Siemens seems to have only partially implemented the protocol, the device simply terminates the connection as soon as our driver tried to read the SZL table in order to find out which type of S7 device it is talking to. This can be disabled by passing in the type of PLC. For a Siemens LOGO device therefore please add ?controller-type=LOGO to the connection string. It is typical within the decision-making cycle in an automation project to know who and how much the support of the tools that will be used in the control architecture will cost. PLC4X support is on our development list (dev@plc4x.apache.org) where we will gladly answer your questions about the S7 driver. If your company requires commercial support, companies that directly or indirectly support the drivers and tools developed in PLC4X are published on our page. Rev Release Date Description of the change 0 0.10.0 2022/10/04 Stable release. In PLC4X the URL philosophy is used as the data source for the connection for the specification of the driver and its connection parameters, this is almost a standard in network applications (pointing to the best practices). It is also possible to create an instance of the driver directly and assign its parameters with the typical \"set\" methods. In the following, reference will be made to the Java-based driver, which implements all the functionalities indicated in this manual. The specified URL has the structure SCHEMA: Defines the protocol to be used, in our particular case S7 DOMAINE NAME: Physical address of the PLC or CP’s. PARAMETERS: List of key/value values separated by ampersand \"&\". They define the behavior of the driver. The SCHEMA and DOMAINE NAME are almost standard for any URL and do not require further explanation. The PARAMETERS that define the behavior of the driver are defined in the following table. Name Type Default Value Required Description Name Siemens S7 (Basic) Code s7 Maven Dependency org.apache.plc4x plc4j-driver-s7 pre-release Default Transport tcp Supported Transports tcp Config options: local-rack INT 1 Rack value for the client (PLC4X device). local-slot INT 1 Slot value for the client (PLC4X device). local-device-group STRING OTHERS Local Device Group. (Defaults to 'OTHERS'). Allowed values: - PG_OR_PC - OS - OTHERS Since: 0.13.0 local-tsap INT 0 Local Transport Service Access Point. (Overrides settings made in local-rack, local-slot and local-device-group. Be sure to convert into integer representation) remote-rack INT 0 Rack value for the remote main CPU (PLC). remote-slot INT 0 Slot value for the remote main CPU (PLC). remote-device-group STRING PG_OR_PC Remote Device Group (Defaults to 'PG_OR_PC'). Allowed values: - PG_OR_PC - OS - OTHERS Since: 0.13.0 remote-tsap INT 0 Remote Transport Service Access Point. (Overrides settings made in remote-rack, remote-slot and remote-device-group. Be sure to convert into integer representation) remote-rack2 INT 0 Rack value for the remote secondary CPU (PLC). remote-slot2 INT 0 Slot value for the remote secondary CPU (PLC). remote-device-group2 STRING PG_OR_PC Remote Device Group. (Defaults to 'PG_OR_PC'). Allowed values: - PG_OR_PC - OS - OTHERS Since: 0.13.0 pdu-size INT 1024 Maximum size of a data-packet sent to and received from the remote PLC. During the connection process both parties will negotiate a maximum size both parties can work with and is equal or smaller than the given value is used. The driver will automatically split up large requests to not exceed this value in a request or expected response. max-amq-caller INT 8 Maximum number of unconfirmed requests the PLC will accept in parallel before discarding with errors. This parameter also will be negotiated during the connection process and the maximum both parties can work with and is equal or smaller than the given value is used. The driver will automatically take care not exceeding this value while processing requests. Too many requests can cause a growing queue. max-amq-callee INT 8 Maximum number of unconfirmed responses or requests PLC4X will accept in parallel before discarding with errors. This option is available for completeness and is correctly handled out during the connection process, however it is currently not enforced on PLC4X’s side. So if a PLC would send more messages than agreed upon, these would still be processed. controller-type STRING As part of the connection process, usually the PLC4X S7 driver would try to identify the remote device. However some devices seem to have problems with this and hang up or cause other problems. In such a case, providing the controller-type will skip the identification process and hereby avoid this type of problem. Possible values are:/n- S7_300 - S7_400 - S7_1200 - S7-1500 - LOGO read-timeout INT 0 This is the maximum waiting time for reading on the TCP channel. As there is no traffic, it must be assumed that the connection with the interlocutor was lost and it must be restarted. When the channel is closed, the \"fail over\" is carried out in case of having the secondary channel, or it is expected that it will be restored automatically, which is done every 4 seconds. ping BOOLEAN false If your application requires sampling times greater than the set \"read-timeout\" time, it is important that the PING option is activated, this will prevent the TCP channel from being closed unnecessarily. ping-time INT 0 Time value in seconds at which the execution of the PING will be scheduled. Generally set by developer experience, but generally should be the same as (read-timeout / 2). retry-time INT 0 Time for supervision of TCP channels. If the channel is not active, a safe stop of the EventLoop must be performed, to ensure that no additional tasks are created. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. Name Value Description Supported Operations read Only supported with tcp transport. write Only supported with tcp transport. After defining the URL, the connection is made. Driver selection from the URL is done via PLC4X’s SPI support, so driver instantiation and mapping originating from the URL is done transparently by the Java SPI services. Any inconsistency in the URL definition will generate an exception that must be handled by the user program. . . . try { PlcConnection connection new DefaultPlcDriverManager().getConnection(\"s7://10.10.1.33?remote-rack=0&remote-slot=3&controller-type=S7_400\"); //(2.1) final PlcReadRequest.Builder subscription connection.readRequestBuilder(); //(2.2) . . . } In (2.1) the driver instance is created, you only have to ensure that the required driver is in the CLASSPATH of your Java environment. Already in (2.2) it defines the type of service required (read/write or a subscription), here a read request is indicated. No problems? Then we are ready to configure and request the data that we require from the PLC. Let’s go to step \"three\". By having the connection we can start building and executing our requests. . . . readrequest.addTagAddress(\"MySZL\", \"SZL_ID=16#0091;INDEX=16#0000\"); //(3.1) final PlcReadRequest rr readrequest.build(); //(3.2) final PlcReadResponse szlresponse rr.execute().get(); //(3.3) if (szlresponse.getResponseCode(\"MySZL\") = PlcResponseCode.OK) {//(3.4) } . . . In (3.1) the request for a PLCTag is constructed, in this particular case a list of controller system status. In step (3.2) we build the request and in (3.3) we execute the request using the futures pattern in Java. We verify in (3.4) that everything is fine and that our data was acquired. These steps are shown separately for ease of analysis, but can be simplified into one statement to avoid excessive code. A detailed explanation of the format for addressing PLCTags in the S7 driver will be given in the following sections. When programming Siemens PLCs, usually the tool used to do that is called TIA Portal. The PLC4X S7 Driver is therefore sticking to the address format defined by this tool as it simplifies exchanging address information. In general all S7 addresses have this format: . %{Memory-Area}{start-address}:{Data-Type}[{array-size}] If the array-part is omitted, the size-default of 1 is assumed. Generally there are two types of addresses: . Bit-Addresses {Memory-Area-Code}{Start-Byte-Address}.{Bit-Offset}:BOOL[{Count}] . Byte-Addresses {Memory-Area-Code}{Start-Byte-Address}:{Data-Type-Code}[{count}] Bit addresses are only used if the datatype: BOOL is used. The array notation of these can be omitted. In this case a Count of 1 is used per default. Start-Byte-Address and Bit-Offset in above list both represent unsigned integer values. In case of accessing data in the data block memory area, the syntax is quite a bit more complex: . DB{Data-Block-Number}.DB{Short-Data-Type-Code}{Start-Byte-Address}.{Bit-Offset}:BOOL[{Count}] . DB{Data-Block-Number}.DB{Short-Data-Type-Code}{Start-Byte-Address}:{Data-Type-Code}[{Count}] When reading a STRING datatype, currently 254 characters would automatically be fetched from the PLC. In order to limit the amount of data, we extended the STRING type declaration syntax to allow limiting this. With the following format less than 254 characters can be read: . DB{Data-Block-Number}.DB{Short-Data-Type-Code}{Start-Byte-Address}:STRING({string-length})[{Count}] These addresses can usually be copied directly out of TIA portal. However we also implemented a shorter version, as above version does have some unnecesary boilerplate parts (The .DB in the middle as well as the Short-Data-Type-Code) The shorter syntax looks like this: . DB{Data-Block-Number}:{Start-Byte-Address}.{Bit-Offset}:BOOL[{Count}] . DB{Data-Block-Number}:{Start-Byte-Address}:{Data-Type-Code}[{Count}] . DB{Data-Block-Number}:{Start-Byte-Address}:STRING({string-length})[{Count}] The S7 driver will handle both types of notation equally. The S7 driver currently allows access to the following memory areas. The Code column represents the code that is used in above general address syntax: Not all S7 device types support the same full set of memory areas, so the last column gives more information on which types a given memory area is supported on. Code Name Description Supported PLC Types C COUNTERS TODO: Document this TODO: Document this T TIMERS TODO: Document this TODO: Document this D DIRECT_PERIPHERAL_ACCESS TODO: Document this TODO: Document this I INPUTS Inputs (Digital and Analog … usually Analog Inputs just have a start-address offset to separate them from the digital ones) All Q OUTPUTS Outputs (Digital and Analog … usually Analog Outputs just have a start-address offset to separate them from the digital ones) All M FLAGS_MARKERS TODO: Document this TODO: Document this DB DATA_BLOCKS Memory areas containing user-defined data structures usually accessed by the integer data block number. antease note that data block addresses have a little more complex address format. All DBI INSTANCE_DATA_BLOCKS TODO: Document this TODO: Document this LD LOCAL_DATA TODO: Document this TODO: Document this Code Short-Code Name Description Size in bits Supported PLC Types Bit-Strings (Will all interpreted as sequence of boolean values in PLC4X) BOOL X Bit Single boolean value 1 All BYTE B Byte Array of 8 boolean values 1 All WORD W Word Array of 16 boolean values 2 All DWORD D Double-Word Array of 32 boolean values 4 All LWORD X Long-Word Array of 64 boolean values 8 S7_1500 Integer values SINT B Small int 8 bit integer (signed) 1 S7_1200, S7_1500 USINT B Small unsigned int 8 bit integer (unsigned) 1 S7_1200, S7_1500 INT W Integer 16 bit integer (signed) 2 All UINT W Unsigned integer 16 bit integer (unsigned) 2 S7_1200, S7_1500 DINT D Double integer 32 bit integer (signed) 4 All UDINT D Unsigned Double Integer 32 bit integer (unsigned) 4 S7_1200, S7_1500 LINT X Long integer 64 bit integer (signed) 8 S7_1500 ULINT X Unsigned long integer 64 bit integer (unsigned) 8 S7_1500 Floating point values REAL D Real 32 bit IEEE 754 full precision floating point value (signed) 4 All LREAL X Long Real 64 bit IEEE 754 double precision floating point value (signed) 8 S7_1200, S7_1500 Character values CHAR B Character 8 bit character 1 All WCHAR X Double byte character 16 bit character value 2 S7_1200, S7_1500 STRING X String String 2 + n bytes 1 All WSTRING X Double byte String String of 16 bit characters 2 + n bytes 1 S7_1200, S7_1500 Temporal values S5TIME X S5 Time S5 Time (like in duration) 2 S7_300, S7_400, S7_1500 TIME X Time Time (like in duration) (Minutes, Seconds, Milliseconds) 4 All LTIME X Long Time Long Time (like in duration) (Minutes, Seconds, Milliseconds, Microseconds, Nanoseconds) 8 S7_1500 DATE X Date Date 2 All TIME_OF_DAY X Time of day Time (like in 4:40PM) 4 All DATE_AND_TIME X Date and Time Date and time (like in 03.05.2020 4:40 PM) 8 S7_300, S7_400, S7_1500 PLC programming in general is a Pandora’s box! Here we will assume that you use standard technological functions/libraries within your development cycle, therefore, at this point it is important to point out the actors that participate in this dialogue between the driver and the PLC and how they affect the communication cycle. The different actors involved in communication are shown in image 1. PLC (AS), the controller. AS is the reference used in PCS7. App, your application. PLC4X, implementation of the S7 driver. OS, PLC operating system. PCS7, represents the technological functions used in the PLC. PCS7 are Siemens DCS libraries. S7App, your application that runs on the PLC. CP, the communications CP will depend on your architecture and requirements, for an S7-300 it will be a CP 343-1 or a CP 443-1 for an S7-400. The S7 driver allows the subscription to asynchronous events generated in the PLC. This type of event is generated by S7-300, S7-400, G120C-PN, S120-PN controllers and VIPA devices. Unfortunately for the S7-1200 and S7-1500 series this functionality has been superseded. For a complete list of compatibility between the S7-300,400 and S7-1200 & S7-1500, you can see the document in [1] provided by Siemens. These services have the following advantages: Report the status of the CPUs and other components within the control architecture that support it (CP, IM, DI, etc). Transfer of values when a change occurs. Associate values to the events sent. A better handling of the TimeStamp of the associated values. The messages are classified into two groups depending on how they are generated: SCAN: All those events generated by the system or preset in Step7 (TIA Portal). The change of state of the configured signals is carried out by the operating system at specific intervals (500 ms, 100ms or 16 ms). ALARM: These are events generated by the user application using the alarm blocks (ALARM_S, ALARM_SQ, NOTIFY, ALARM, ALARM_8). In addition to user applications, these events can be generated from technological functions such as PCS7 or Braumat. The data associated with the events is represented in a HashMap in order to facilitate its transfer to other applications based on a standard such as JMS, MQTT or other messaging technology. The handling of the TimeStamp of the SCAN type events is generated in the computer. In ALARM type messages the TimeStamps are generated in the PLC. It is extremely important that the date and time synchronization is done between both computers and PLC. The values associated with the events can have different types of representation, so their interpretation must be agreed upon during the programming of the application in the PLC and your application. For each type of event, the particular fields of type will be arranged within the Map. These will be documented for each type of event. To maximize the use of the data fields associated with the events, the use of the intra-area pointer system and the ANY type pointer is recommended in the PLC, As well as the recommendations for the management of the time stamp [2]. At the user application level App, you can use the PLC4X API to subscribe SCAN or ALARM type events by selecting any of the following fields according to the requirement: MODE: Change of operating state in the controller, change from STOP to RUN and vice versa. SYS: System events, associated with internal events of the controller or events previously parameterized for their indication. USR: Events programmed by the user and that are registered in the internal diagnostic buffer. ALM: Alarm events generated by the user program, ALARM_S, ALARM_8, NOTIFY. In the following sections we will describe in more detail the functionalities of each field. By subscribing to controller status changes or MODE events, the PLC status changes can be tracked. Depending on the CPU model, these state changes are followed in the user application (PLC program), OB100 and OB101, allowing these applications to be brought to a safe state. Now, how do these state changes affect external applications, for example HMI or custom user applications? In the use of a unified Siemens architecture, the operator panels (HMI) and WinCC (Scada) detect the status of the CPU and pass the quality of the points in the database in real time to poor quality. In the case of an application developed with PLC4X, the use of MODE events will allow your application to indicate to users the quality of the points used, and that by design the quality is not updated in the controller. From image 2, we can describe the sequence of actions that can be followed for subscription. In the first place, the subscription process occurs from the App of the user (1)(2)(3)(4), having a positive response the application is ready to receive the events asynchronously from the PLC (AS). Suppose that the manager for a reason passes the controller to STOP (06) through the front switch or from the engineering station, then OS proceeds to send a notification (07)(08) to all consoles that are registered to receive this event. Subsequently, the manager decides to switch the controller to execution mode, through the front switch or the engineering console, at this time the OS is in charge of generating the startup events, initially it indicates the hot start WARN_RESTART (09)(10)(11) and if the startup is successful, indicate that the controller is in execution mode or RUN (12)(13)(14). The information received in (08)(11)(14) is included in the attached table. Field Type Description TYPE STRING Fixed value. TIMESTAMP Instant Instant.now () value assigned when receiving the event from the PLC. MAP HashMap The HashMap with all fields. METHOD byte Value of \"method\" as defined in S7Parameter. FUNCTION byte Value of \"function\" as defined in S7Parameter. CURRENT_MODE short Status value reported in the event. Check the ModeTransitionType enum. With the sequence diagram and the data structures that will be received by the application, we can analyze the Java code for this specific function. We think this should serve as a pseudocode for the other languages. public class PLCEventModeSubscription { public static void main(String[] args) throws Exception { try (PlcConnection connection new PlcDriverManager() .getConnection(\"s7://192.168.1.51?remote-rack=0&remote-slot=3&controller-type=S7_400\")) { final PlcSubscriptionRequest.Builder subscription connection.subscriptionRequestBuilder(); (01) subscription.addEventField(\"myMODE\", \"MODE\"); final PlcSubscriptionRequest sub subscription.build(); System.out.println(\"Query: \" + sub.toString()); final PlcSubscriptionResponse subresponse sub.execute().get(); if (subresponse.getResponseCode(\"myMODE\") = PlcResponseCode.OK) { (04) PlcConsumerRegistration registerMode = subresponse .getSubscriptionHandle(\"myMODE\") (05) .register(msg -> { (08)(11)(14) System.out.println(\"******** S7ModeEvent ********\"); Map map = ((S7ModeEvent) msg).getMap(); map.forEach((x, y) -> { System.out.println(x + \" : \" + y); }); short currentmode = (short) map.get(S7ModeEvent.Fields.CURRENT_MODE.name()); System.out.println(\"CURRENT_MODE MSG: \" + ModeTransitionType.enumForValue(currentmode).name()); System.out.println(\"****************************\"); }); } System.out.println(\"Waiting for the messages.\"); Thread.sleep(120000); connection.close(); System.out.println(\"Ending the connection.\"); } } } System events allow to receive asynchronously any event that affects the operation of the controller, or any of its peripheral equipment that is capable of sending events through a PROFIBUS or Profinet fieldbus. A first example of its use is the change of state of a CP, IM or FM within the architecture of the controller. This will allow the application to indicate that there is an effect on the system that may affect the quality of the signals used, allowing preventive or corrective actions to be taken as required. In general, system and user events are part of the same group of events, but they are differentiated to facilitate their processing. From the sequence diagrams after subscribing to the required event type (01)(02)(03)(04), the consumer (05) is registered to start receiving the events either from the SYS system or from the user USR. When the event is generated, it is sent to the diagnostic buffer (06) and an image of it is sent to all consoles registered to receive this type of event (07) distributed by the OS (08). Since at the protocol level the events are not differentiated, the PLC4X driver (08) is in charge of classifying the events in SYS or USR and transferring them to the registered consumer (09). For didactic purposes, a step-by-step explanation has been carried out, but in general the App application can be subscribed to the four types of events simultaneously. The following table shows the fields available for each message. Field Type Description TYPE STRING Fixed value. TIMESTAMP Instant Instant.now () value assigned when receiving the event from the PLC. EVENT_ID short OS generated event ID. PRIORITY_CLASS byte Value of \"method\" as defined in S7Parameter. OB_NUMBER byte Value of \"function\" as defined in S7Parameter. DAT_ID short Status value reported in the event. Check the ModeTransitionType enum. INFO1 WORD System information 1 word long. INFO2 DWORD System information 2 words l ng. For SYS events, the EVENT_ID is generated automatically by the OS, and basically they are constant in the different families of controllers. For the USER or User-defined events follow the same pattern as system events. They have the particularity that the value of EVENT_ID must be between the values 0xAXXX and 0xBYYY. This programming of the user-defined events is carried out at the level of the PLC(AS) controller, so we recommend the technical note [3] of the Siemens portal. In the case of user-defined messages, it is important to take into account that these are reported to the diagnostic buffer, which has a limited capacity depending on the CPU model used. Also take into account that the diagnostic buffer works like a circular buffer, so the oldest messages will be lost. +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ |15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ \\__________/\\__________/\\____________________/ Event class IDs Event number Event Class: 1 Standard OB Events 2 Synchronous errors 3 Asynchronous errors 4 Mode transition 5 Run-time events 6 Communications events 7 Events for fail-safe and fault tolerant systems 8 Standardized diagnostic data on modules 9 Predefined user events A,B Freely definable events C,D,E Reserved F Events for modules other than CPUs (for example, CPs, FMs) IDs (Bit) 8 0:Event leaving state, 1:Event entering state 9 1:Entry in diagnostic buffer 10 1:Internal error 11 1:External error In the previous table we can see how the event classes are coded, and how they are classified. If you require detailed information on each event, the user’s App must interpret the indicated bits. In the INFO1 and INFO2 fields, specific diagnostic information associated with the event is generally attached, or some information that needs to be recorded in the case of user events. The INFO1 field contains information that can be stored in a word, namely, WORD, INT of ARRAY [0..1] OF CHAR. The INFO2 field contains information that can be stored in a double word, namely, DWORD, DINT, REAL, TIME, ARRAY [0..3] OF CHAR. Below is an example code for the subscription of events type SYS. public static void main(String[] args) throws Exception { try (PlcConnection connection new PlcDriverManager(). getConnection(\"s7://192.168.1.51?remote-rack=0&remote-slot=3&controller-type=S7_400\")) { final PlcSubscriptionRequest.Builder subscription connection.subscriptionRequestBuilder(); (01) subscription.addEventField(\"mySYS\", \"SYS\"); final PlcSubscriptionRequest sub subscription.build(); System.out.println(\"Query: \" + sub.toString()); final PlcSubscriptionResponse subresponse sub.execute().get(); PlcConsumerRegistration registerSys = subresponse .getSubscriptionHandle(\"mySYS\") (05) .register(msg -> { (09) System.out.println(\"******** S7SysEvent ********\"); Map map = ((S7SysEvent) msg).getMap(); map.forEach((x, y) -> { System.out.println(x + \" : \" + y); }); Integer eventid = (Integer) map.get(S7SysEvent.Fields.EVENT_ID.name()); System.out.println(\"DIAGNOSTIC: \" + S7DiagnosticEventId. valueOf(eventid.shortValue()).getDescription()); (10) System.out.println(\"****************************\"); }); System.out.println(\"Waiting for the messages.\"); Thread.sleep(120000); connection.close(); System.out.println(\"Ending the connection.\"); } } And below is an example code for the subscription of events type USR. public static void main(String[] args) throws Exception { try (PlcConnection connection new PlcDriverManager(). getConnection(\"s7://192.168.1.51?remote-rack=0&remote-slot=3&controller-type=S7_400\")) { final PlcSubscriptionRequest.Builder subscription connection.subscriptionRequestBuilder(); subscription.addEventField(\"myUSR\", \"USR\"); final PlcSubscriptionRequest sub subscription.build(); System.out.println(\"Query: \" + sub.toString()); final PlcSubscriptionResponse subresponse sub.execute().get(); PlcConsumerRegistration registerUsr = subresponse .getSubscriptionHandle(\"myUSR\") (05) .register(msg -> { System.out.println(\"******** S7UserEvent *******\"); Map map = ((S7UserEvent) msg).getMap(); map.forEach((x, y) -> { (09) System.out.println(x + \" : \" + y); }); System.out.println(\"****************************\"); }); System.out.println(\"Waiting for the messages.\"); Thread.sleep(120000); connection.close(); System.out.println(\"Ending the connection.\"); } } The Java code shows how to detect the type of event in an event type SYS. In the S7 driver, there is an enum object S7DiagnosticEventId(10) that allows us to identify which internal event of the PLC(AS) generated it and thus, through the interpretation of the INFO1 and INFO2 fields, determine the root cause of the event. To date, the enum object S7DiagnosticEventId contains a considerable amount of diagnostic values, it must be updated according to the new CPUs or firmware versions available. Unlike SYS events, USR events must be interpreted directly by the App application, so they are generally scheduled during the development phase of the S7App application. By having INFO1 and INFO2 in the S7App program, the user can transfer data associated with events, such as transitions between phases, events of diagnostic routines such as firts-out or the start or end of a batch process, all asynchronously. The registration sequence for subscription is the typical one carried out so far (01)(02)(03)(04)(05). From that moment on, you can start receiving alarm events asynchronously. Depending on your application, you can make a request for the currently active alarms in the alarm buffer of the PLC(AS), in this way you can prepare a reception buffer or establish the correct state of a state machine that depends on the Active events in the controller. You must take into account that when making the request (06), from a few to hundreds of alarms can be stored depending on the complexity of your application and the capacity of the PLC (AS). In this scenario, the PLC4X driver maintains the dialogue with the OS to receive sequentially (07)(08)(09)(10)(11)(12)(13)(14) the alarms stored on the controller, to later transfer them to the user application App (15). At the end of the subscription process, it will begin to receive the events generated by the system, such as high precision time signals (16)(17)(18)(19) or events generated by the user application (20)(21)(22). This simple sequence of events is used by process applications based on PCS7, for the handling of alarms, events and logging of practically all the events of the distributed control system (DCS). Another important feature of the driver is the ability to recognize the alarms generated from the PLC(AS). In (23)(24)(25) the S7App application generates an alarm/event that is required to be acknowledged by the user to continue with the execution of a specific routine. The user applications App generates the acknowledgment (27)(28) using the corresponding alarm identifier, the OS is responsible for making the confirmation (29)(30) and asynchronously generating an event for the update of the state machine in the App(31)(32). Within the cyclical execution of the application S7App waits for the confirmation of the alarm (26) to continue with some specific routine. TODO: Field description Field Type Description TYPE TIMESTAMP TIMESTAMP_GOING TIMESTAMP_COMING ASSOCIATED_VALUES MAP EVENT_ID EVENT_STATE STATE ACKSTATE_GOING ACKSTATE_COMING EVENT_GOING EVENT_COMING EVENT_LAST_CHANGE SIG SIG_[1…8] SIG_STATE SIG_[1…8]_STATE SIG_DATA SIG_[1…8]_DATA SIG_[1…8]_DATA_GOING SIG_[1…8]_DATA_CO SIG_[1..8]_DATA_STATUS SIG_[1…8]_DATA_SIZE SIG_[1…8]_DATA_LENGTH TODO: Example code The cyclical subscription allows the acquisition of data in passive mode, that is, the data is sent from the PLC in a cyclical and synchronous way. The data transfer has three time bases: B01SEC: Time base 0.1 Sec. (100 mSec.). B0SEC: Time base 1.0 Sec. B10SEC: Time base 10 Sec. The system status list gives access to the operating data of the PLC, such as memory space, operating status, status of the control switches, as well as diagnostic data of expansion cards or decentralized peripherals, PROFIBUS or PROFINET . This is fundamental data to determine the quality of the data supplied by the PLC. By initiating the connection with the PLC you can determine its operating status, which will allow you to define the quality of the data taken and what the implemented application can do or not, eventually this is the procedure carried out by the Siemens CPs. Why SZL and not SSL? Well, creative freedom. The translation of the manuals from German to Spanish use SZL and German to English use SSL. Both the source code and the documentation use this reduction to keep the text uniform. Due to the fact that the data structures are so varied, basically one per type of diagnosis, the decision was made to return these as an array of bytes, leaving the developer to implement the parser according to their requirements. For a first approach to using system state lists a byte array to JSON notation parser is available at \"org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.SZL\" . Make use of the XXX document for a detailed explanation of each SZL, since as indicated, everything will depend on the hardware you have installed. The access to the SZL of the PLC is done as a read request, where the PLCTag is formed by two fields \"SZL_ID\" and \"INDEX\". SZL_ID: Number assigned to the SZL list. There are variants of the SZL_ID depending on whether the request is total, partial or just the header. To facilitate its use, the representation will always be in hexadecimal with the format 0xxyID. +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ |15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ \\__________/\\__________/\\____________________/ Module Number of Number of the partial class the partial list list extract Number of the partial list : The number of the partial SZL list you want to read. Number of the partial list extract: Defines which part of the partial list you want to extract. It varies from list to list. Module Class: The requests for the partial list depend on the hardware that is being used, generally the IM (communication cards), FM (special functions) and CP (periphery controller) have their own diagnostic system, which can be consulted through of the SZL_ID/INDEX PlcTag. Module Class: +--------------+-----------------+ | Module class | Coding (Binary) | +--------------|-----------------+ | CPU | 0000 | +--------------|-----------------+ | IM | 0100 | +--------------|-----------------+ | FM | 1000 | +--------------|-----------------+ | CP | 1100 | +--------------|-----------------+ INDEX: Number of the required sublist. To facilitate its use, the representation will always be in hexadecimal with the format 0xhhhh. public static void main(String[] args) throws Exception { System.setProperty(SimpleLogger.DEFAULT_LOG_LEVEL_KEY, \"trace\"); System.out.println(\"******************************************************************************************\"); System.out.println(\"Before using, take a look at:\"); System.out.println(\"System Software for S7-300/400.\\r\\nSystem and Standard Functions - Volume 1/2\"); System.out.println(\"Document: A5E02789976-01\"); System.out.println(\"Chapter 34 System Status Lists (SSL).\"); System.out.println(\"URL: https://cache.industry.siemens.com/dl/files/604/44240604/att_67003/v1/s7sfc_en-EN.pdf\"); System.out.println(\"******************************************************************************************\"); try (PlcConnection connection new DefaultPlcDriverManager().getConnection(\"s7://10.10.1.33?remote-rack=0&remote-slot=3&controller-type=S7_400\")) { //(01) final PlcReadRequest.Builder readrequest connection.readRequestBuilder(); //(02) readrequest.addTagAddress(\"MySZL\", \"SZL_ID=16#0012;INDEX=16#0000\"); //(03) final PlcReadRequest rr readrequest.build(); //(04) final PlcReadResponse szlresponse rr.execute().get(); //(05) if (szlresponse.getResponseCode(\"MySZL\") = PlcResponseCode.OK){ //(06) Collection data szlresponse.getAllBytes(\"MySZL\"); //(07) byte[] dbytes ArrayUtils.toPrimitive(data.toArray(new Byte[data.size()])); //(08) SZL szl SZL.valueOf(0x0012); //(09) ByteBuf wb wrappedBuffer(dbytes); //(10) StringBuilder sb = szl.execute(wb); //(11) System.out.println(sb.toString()); //(12) } else if (szlresponse.getResponseCode(\"MySZL\") = PlcResponseCode.NOT_FOUND){ //(13) System.out.println(\"SZL is not supported.\"); } Thread.sleep(2000); System.out.println(\"Bye...\"); } } The request for the SZL lists follows the same pattern of variable readings, for each request a response, unlike the request for process variables where several can be grouped in a single request, the SZL request must correspond to one request to one petition. Like other requests, the connection URL (01) is established and the request constructor instance (02) is created. The associated PLCTag is added to the diagnostic list (one per request), in this case the SZL_ID=0x0012 and INDEX=0x0000 (03) which allows obtaining the identification and firmware of the PLC. In (04) and (05), we prepare and execute the request to the PLC. If we have a valid response (06) we can perform the processing of the data stream obtained, which as indicated is an array of bytes which is obtained in (07) and (08). As we pointed out in the support libraries, we have an \"SZL\" object (an enum), which allows us to select the appropriate parser based on the numerical index SLZ_ID (09). In (10) we make a wrapper in a ByteBuf type (from the Netty library) in order to pass it to the \"szl\" instance through the \"execute\" method (11). When processing the data buffer we must obtain in (12) a StringBuilder with the JSON representation. {\"RECORDS\":[{\"AUSBG2\":0,\"AUSBG1\":61,\"BGTYP\":130,\"INDEX\":1,\"MIFB\":\"6ES7 417-4XT05-0AB0 \"},{\"AUSBG2\":0,\"AUSBG1\":2,\"BGTYP\":130,\"INDEX\":6,\"MIFB\":\"6ES7 417-4XT05-0AB0 \"},{\"AUSBG2\":768,\"AUSBG1\":22021,\"BGTYP\":0,\"INDEX\":7,\"MIFB\":\" \"},{\"AUSBG2\":3,\"AUSBG1\":22021,\"BGTYP\":0,\"INDEX\":129,\"MIFB\":\"Boot Loader \"}],\"LENGTHDR\":28,\"SZL-ID\":17,\"INDEX\":0,\"N_DR\":4} As noted above, the parser performed on the SZL enum is not complete, so the missing information must be obtained from the returned fields. For further details you should consult []. In case of not being able to process the request, it is detected in (13) to take the necessary measures. The following diagram represents the information in JSON format. From the obtained StringBuilder, you can use the JSON processor of your choice to access the different fields. Module class SZL-ID Implemented SZL List 16#xy00 Tested with S7-400, JSON Module identification 16#xy11 Tested with S7-400, JSON CPU characteristics 16#xy12 Tested with S7-400, JSON User memory areas 16#xy13 Tested with S7-400, JSON System areas 16#xy14 Tested with S7-400, JSON Block types 16#xy15 Tested with S7-400, JSON Interrupt status 16#xy22 Tested with S7-400, JSON Assignment between process image partitions and OBs 16#xy25 Tested with S7-400, JSON Communication status data 16#xy32 Tested with S7-400, JSON H CPU group information 16#xy71 Status of the module LEDs 16#xy74 Tested with S7-400, JSON Switched DP slaves in the H-system 16#xy75 Module status information 16#xy91 Tested with S7-400, JSON Rack / station status information 16#xy92 Tested with S7-400, JSON Rack / station status information 16#xy94 Tested with S7-400, JSON Extended DP master system / PROFINET IO system information 16#xy95 Tested with S7-400, JSON Module status information, PROFINET IO and PROFIBUS DP 16#xy96 Tested with S7-400, JSON Tool changer information (PROFINET IO) 16#xy9C Tested with S7-400, JSON Diagnostic buffer of the CPU 16#xyA0 Tested with S7-400, JSON Module diagnostic information (data record 0) 16#xyB1 Tested with S7-400, JSON Module diagnostic information (data record 1), geographical address 16#xyB2 Tested with S7-400, JSON Module diagnostic information (data record 1), local address 16#xyB3 Tested with S7-400, JSON Diagnostic data of a DP slave 16#xyB4 Tested with S7-400, JSON Especially when it comes to the input- and output addresses for analog channels, the start addresses are configurable and hereby don’t always start at the same address. In order to find out what addresses these ports have, please go to the device setting of your PLC in TIA Portal Especially pay attention to this part: In above image you can see that this device has 8 digital inputs (DI 8) and 2 analog inputs (AI 2_1) as well as 6 digital outputs (DQ 6). The start addresses of the digital inputs and outputs start directly at 0. The analog inputs however start at address 64. Each digital input and output can be addresses by a single bit-address (start-address and offset) or can be read in a block by reading a full byte starting at the given start address without providing a bit offset. https://snap7.sourceforge.net/ https://support.industry.siemens.com/cs/document/13649203/simatic-net-pc-software-s7-programming-interface?dti=0&dl=en&lc=es-ES https://support.industry.siemens.com/cs/document/109797648/simatic-comparison-list-for-s7-300-s7-400-s7-1200-s7-1500?dti=0&lc=en-WW https://support.industry.siemens.com/cs/mdm/109746537?c=98956468747&lc=es-DO https://support.industry.siemens.com/cs/document/15166942/writing-user-specific-information-to-the-diagnostic-buffer-of-a-cpu-(sfc-52)?dti=0&lc=en-ES https://support.industry.siemens.com/cs/document/24013249/how-do-you-display-alarm_s-or-alarm_d-messages-with-process-values-(so-called-associated-values)-on-a-wincc-flexible-operator-panel-?dti=0&lc=en-WW https://support.industry.siemens.com/cs/document/109481157/comunicaci%C3%B3n-entre-paneles-de-operador-simatic-hmi-y-convertidores-de-frecuencia-sinamics-g120-para-el-manejo-y-la-visualizaci%C3%B3n-de-avisos-de-fallo-y-de-advertencia-(enlace-directo-sin-controlador)?dti=0&lc=es-WW https://support.industry.siemens.com/cs/document/97550333/sinamics-g-s-hmi-direct-access?dti=0&lc=en-WW https://support.industry.siemens.com/cs/document/21402122/technology-cpus-technology-template-error-messages-?dti=0&lc=en-WW https://support.industry.siemens.com/cs/document/77467239/transforming-warning-and-error-messages-of-a-sinamics-drive-with-the-aid-of-the-xml-parser-and-integrating-them-into-a-step-7-hmi-project?dti=0&lc=en-WW https://support.industry.siemens.com/cs/document/24037531/%C2%BFqu%C3%A9-pasos-de-configuraci%C3%B3n-hay-que-realizar-en-el-simotion-scout-y-el-wincc-flexible-para-que-se-muestren-los-avisos-alarm_s-y-las-alarmas-tecnol%C3%B3gicas-dentro-del-wincc-flexible-runtime-?dti=0&lc=es-ES","title":"S7 (Step7)","component":"plc4x","version":"pre-release","name":"s7","url":"/plc4x/pre-release/users/protocols/s7.html","titles":[{"text":"Executive Summary","hash":"_executive_summary","id":1},{"text":"Regarding the Support","hash":"_regarding_the_support","id":2},{"text":"Record of revisions made to the driver","hash":"_record_of_revisions_made_to_the_driver","id":3},{"text":"Connecting as easy as 1-2-3.","hash":"_connecting_as_easy_as_1_2_3","id":4},{"text":"ONE","hash":"_one","id":5},{"text":"Connection String Options","hash":"_connection_string_options","id":6},{"text":"tcp","id":7},{"text":"TWO","hash":"_two","id":8},{"text":"THREE","hash":"_three","id":9},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":10},{"text":"General Format","hash":"_general_format","id":11},{"text":"Memory Areas","hash":"_memory_areas","id":12},{"text":"Data Types","hash":"_data_types","id":13},{"text":"Actors participating in the communication process","hash":"_actors_participating_in_the_communication_process","id":14},{"text":"S7 Read/Write","hash":"_s7_readwrite","id":15},{"text":"S7 Event Subscription","hash":"_s7_event_subscription","id":16},{"text":"SCAN Events","hash":"_scan_events","id":17},{"text":"Subscription to MODE events (S7ModeEvent).","hash":"_subscription_to_mode_events_s7modeevent","id":18},{"text":"Subscription to SYS events (S7SysEvent) and USER events (S7UserEvent).","hash":"_subscription_to_sys_events_s7sysevent_and_user_events_s7userevent","id":19},{"text":"Subscription to ALM type events (S7AlarmEvent).","hash":"_subscription_to_alm_type_events_s7alarmevent","id":20},{"text":"TODO: Cyclic subscription (CYC).","hash":"_todo_cyclic_subscription_cyc","id":21},{"text":"SZL System Status List","hash":"_szl_system_status_list","id":22},{"text":"Notation for SZL request","hash":"_notation_for_szl_request","id":23},{"text":"Some useful tips","hash":"_some_useful_tips","id":24},{"text":"Resources","hash":"_resources","id":25}]},"84":{"id":84,"text":"Name Type Default Value Required Description Name Simulated PLC4X Datasource Code simulated Maven Dependency org.apache.plc4x plc4j-driver-simulated pre-release Supported Transports Config options: Name Value Description Supported Operations read Supports all standard IEC 61131 data types outlined below. write Supports all standard IEC 61131 data types outlined below. The simulated driver has the following connection string format:- simulated:{transport}://{ip-address}:{port} An example connection string would look like:- simulated://127.0.0.1 Note the transport and port fields are optional. The simulated addresses have this format: {simulation-type}/{alias}:{data-type}[{array-size}] If the array-size part is omitted, the default size of 1 is assumed. If the data-type part is omitted, it defaults to STRING. The simulation device supports 3 different simulation types STATE - This holds in memory a value for a given alias. This value can be read or written to, however this should only be used in conjunction with a persistent connection. Once the connection is closed the memory area is cleared. RANDOM - This provides a new random value for each read. When writing, a log message is recorded and the value is discarded. STDOUT - Always returns a null value when reading. When writing, a log message is recorded and the value is discarded. Aliases are used to identify the different field addresses. They should only contain alpha-numeric and the full stop (.) character. For readability and language specific technical purposes they should be less than 256 characters. The following data types are supported:- BOOL (boolean) SINT (int 8) USINT (uint 8) BYTE (uint 8) INT (int 16) UINT (uint 16) WORD (uint 16) DINT (int 32) UDINT (uint 32) DWORD (uint 32) LINT (int 64) ULINT (uint 64) LWORD (uint 64) REAL (float) LREAL (double) CHAR (char) WCHAR (2 byte char) STRING (254 bytes) The simulation driver uses a lot of the same logic templates that is used for the other drivers. It is a good way to test PLC4X functionality without having a device to connect to. All of these address formats are valid:- RANDOM/foo:INT RANDOM/foo:UDINT RANDOM/device1.machineA.sensor1:UINT RANDOM/device1.machineA.sensor1:STRING STATE/device1.machineA.sensor1:INT STDOUT/device1.machineA.sensor1:INT","title":"Simulated","component":"plc4x","version":"pre-release","name":"simulated","url":"/plc4x/pre-release/users/protocols/simulated.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":2},{"text":"Connection String","hash":"_connection_string","id":3},{"text":"General Format","hash":"_general_format","id":4},{"text":"Simulation Types","hash":"_simulation_types","id":5},{"text":"Alias","hash":"_alias","id":6},{"text":"Data Types","hash":"_data_types","id":7},{"text":"Some useful tips","hash":"_some_useful_tips","id":8},{"text":"Examples","hash":"_examples","id":9}]},"85":{"id":85,"text":"This protocol is used by Schneider Electric PLCs such as the M340, M580 and the Quantum PLCs with the Unity firmware. This driver supports reading/writing/browsing of PLC tags as well as %S/%SW addresses. The Data Dictionary needs to be enabled on the PLC. (Supported by Plc4Py Only) Name Type Default Value Required Description Name UMAS Code umas Default Transport tcp Supported Transports tcp Config options: request-timeout INT 5000 Default timeout for all types of requests. unit-identifier INT 1 Unit-identifier or slave-id that identifies the target PLC. Defaults to 1. + Name Value Description Supported Operations read write browse UMAS has the following connection string format:- umas:{transport}://{ip-address}:{port}?{options} An example connection string would look like:- umas:tcp://127.0.0.1:502 Note the transport, port and option fields are optional. In general all UMAS addresses have this format: {tag-name}.{child-name}.{child-name}:{data-type}[{array-size}] Depending on the type of tag the child-name parameters are optional. e.g. A tag with a BOOL data type could be 'TESTING_BOOL_1' whereas if it is a UDT the tag name is followed by the child 'TESTING_UDT_1.START' which in itself could be a BOOL. If the array-size part is omitted, the size-default of 1 is assumed. If the data-type part is omitted, it defaults to the data type of the tag read from the PLC. Apart from tags defined in the PLC the driver is also able to access the %S and %SW system memory areas. The specific address details of the data in these areas are outlined in the devices manual. An example of the address format of these areas is %SW1 or %S20. The following data types are supported BOOL (boolean) SINT (int 8) USINT (uint 8) BYTE (uint 8) INT (int 16) UINT (uint 16) WORD (uint 16) DINT (int 32) UDINT (uint 32) DWORD (uint 32) REAL (float) STRING (char) TIME DATE TOD (Time of Day) DATE_AND_TIME","title":"UMAS (Schneider Electric PLCs)","component":"plc4x","version":"pre-release","name":"umas","url":"/plc4x/pre-release/users/protocols/umas.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"Supported Operations","hash":"_supported_operations","id":2},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":3},{"text":"Connection String","hash":"_connection_string","id":4},{"text":"General Format","hash":"_general_format","id":5},{"text":"Memory Areas","hash":"_memory_areas","id":6},{"text":"Data Types","hash":"_data_types","id":7}]},"86":{"id":86,"text":"Sometimes the problem with industry protocols is, that the most interesting protocols live in places that are not very welcoming to IT folks. Either too hot or too cold and usually no good coffee around. The Capture Replay tool is a little helper, that can possibly help with this. Especially when it comes to developing passive mode drivers this tool can come in very handy. It allows to replay recorded network traffic and to directly intercept this traffic in any passive mode drivers. Possibly it could also work with non passive drivers, but I expect synchronization to be tricky. In order to create a capture I usually connect a device running WireShark to the network. Ideally to the replication port of a network switch so I can record all the traffic. An alternative would be to run WireShark on one of the PCs/Servers having access to the traffic I’m interested in. So if for example I wanted to work on a driver for control system X, capturing the traffic on one of the X servers is probably the simplest way to do it. If complicance rules prevent ths a third option would be to use a network tap to record the capture. Now you need to copy the pcapng file ideally to your development system. The capture can be replayed by the tool you find in plc4j/tools/capture-replay. Here simply look for the target/plc4j-capture-replay-0.13.0-SNAPSHOT-uber-jar.jar and run: java -jar target/plc4j-capture-replay-0.13.0-SNAPSHOT-uber-jar.jar --input-file {path to capture} --output-device {name of the network device} --replay-speed 1 --loop true The options input-file and output-device are mandatory, the rest is optional: input-file specifies the path to the capture file (pcapng) output-device name of the network device that will be used for output (name listed when running ifconfig on Linux and Mac or ipconfig on Windows) replay-speed Speed the replay will be played back. 1 is real time, 0 or less is as fast as possible, 0.5 is 50% slower than the original and 2 is twice as fast loop if set to true it will automatically start replaying the capture from the start as soon as the end is reached The replay-speed is ideal to see how your driver can cope with different volumes of traffic. So even if your driver is currently working fine, consider using this tool in order to find out if your system could cope with 50% more nodes or increased polling intervals etc.","title":"Capture Replay","component":"plc4x","version":"pre-release","name":"capture-replay","url":"/plc4x/pre-release/users/tools/capture-replay.html","titles":[{"text":"Getting a Capture","hash":"_getting_a_capture","id":1},{"text":"Replaying the Capture","hash":"_replaying_the_capture","id":2}]},"87":{"id":87,"text":"In some applications there might be multiple parts of the code that require access to a PLC connection. In contrast to usual microservice architectures, with PLCs we can’t simply open as many connections as we like. For example a S7-1200 typically allows 3 concurrent connections. Also can the process of establishing a connection be a pretty cost-intensive task. For example in the ADS protocol, when connecting, the driver loads the tables containing the description of all data-types defined in the PLC alongside the symbol-table which declares which variables are defined, which addresses they have, which datatype they reference and where they are located in the PLCs memory. Even if only one block of code repeatedly requires access to the PLC, simply creating a connection every time would put a too high load on the PLC and the network. When using the connection cache, many pieces of code can use it in parallel. However, only one piece of code can have access to a connection at the same time. So the first thread asking for a new connection will have the cache create a new connection and return it to the client. It can then use this just like any ordinary connection retrieved from the basic PlcConnectionManager. The main difference however is, that as soon as the client calls close() on this so-called connection-lease, the connection is not closed, but the cache puts it back into the storage, waiting for the next thread to require it. If a thread asks for a connection, which is currently leased by another thread, then the requesting thread will wait till the connection is returned and will then instantly continue using the connection till it then returns it back to the cache. If a second thread however asks for a different connection (with a different connection string), then the connection cache will create a new connection and return that instantly. When using the connection cache, connections should not use a connection-lease for a prolonged period of time. So the connection cache keeps track of the leases it hands out and terminates connection-leases that have not been returned for a long time. Here comes an example application, that uses the connection cache: public static void main(String[] args) throws Exception { PlcConnectionManager connectionManager = CachedPlcConnectionManager.getBuilder().build(); for (int i = 0; i org.apache.plc4x plc4j-connection-cache 0.13.0-SNAPSHOT In this snippet of code there are some considerations that are worth to be underlined. In recent versions of PLC4X we have refactored the PlcDriverManager to provide access to a PlcConnectionManager interface. This contains all methods that are related to creating connections. The ConnectionCache implements this same interface, therefore you can use a CachedPlcConnectionManager everywhere you can use the normal PlcConnectionManager. A new CachedPlcConnectionManager is usually created using a builder, that can be accessed via: CachedPlcConnectionManager.getBuilder(). This will be explained in more detail in the next chapter. The try-with-resources statement (i.e. try (PlcConnection connection = connectionManager.getConnection(connectionString))) ensures that a leased connection will be automatically returned to the cache after the use. As said before if the application keeps hold of the connection for too long, after a configurable amount of time will be automatically closed by the cache and the thread can no-longer use it (i.e. the maxLeaseTime parameter defaults to 4 seconds and is configurable - see the next chapter on configuring the connection cache). Before handing out a connection-lease, the connection cache will execute a ping() operation on the corresponding connection to check if it’s still valid. If this check fails, the cache will terminate this connection, establish a new one and then return a handle for that new connection. As mentioned before the CachedPlcConnectionManager is configurable. Mainly this involves configuring the timeouts. Name type Default Description maxLeaseTime java.time.Duration 4 seconds Time that a thread is allowed to keep a connection-lease till the connection-cache terminates the lease. maxWaitTime java.time.Duration 20 seconds Time that a thread asking for a connection will wait until the connection cache gives up and throws a PlcConnectionException. The configuration of a CachedPlcConnectionManager is done when creating the instance. For this the builder contains two methods to configure the timeouts. Here comes an example: public static void main(String[] args) throws Exception { PlcConnectionManager connectionManager = CachedPlcConnectionManager.getBuilder() .withMaxLeaseTime(Duration.ofSeconds(10)) .withMaxWaitTime(Duration.ofMinutes(1)) .build(); ... }","title":"The Connection Cache concept","component":"plc4x","version":"pre-release","name":"connection-cache","url":"/plc4x/pre-release/users/tools/connection-cache.html","titles":[{"text":"Configuring the CachedPlcConnectionManager","hash":"_configuring_the_cachedplcconnectionmanager","id":1}]},"88":{"id":88,"text":"The plc4j-connection-pool module has been discontinued and has been removed from PLC4X stating with version 0.11.0 There are situations where you don’t want to carry around connections in your code. For example if you have a microservice application, you might have multiple services accessing PLC data. Keeping an open connection for each of these is rather problematic as in contrast to modern computers, PLCs usually are only able to manage a small number of concurrent connections. I think a Siemens S7-1200 is limited to 7 concurrent connections and a Siemens LOGO can’t do more than 3. One alternative would be to open and close the connections all the time. This however puts an unnecessary stress on the PLCs as for protocols like the S7 or the ADS protocol a handshake of multiple requests and responses has to be executed before being able to communicate. As usually these services only require ad-hoc access to a PLC, it would be ideal to share connections between services. Another problem occurs when you open a connection and keep it open for a prolonged time period. Here it can happen quite often that a connection is terminated because the PLC has been turned off. Per default the PLC connection has no means of automatically re-connecting. The PooledPlcDriverManager can help you with both of these scenarios. The PooledPlcDriverManager is a wrapper around the normal PlcDriverManager. The main difference is that as soon as a connection is requested, it will look if one already exists and return that. If no connection exists it will create a new one and keep it in the pool. There are no API differences from using the normal PlcDriverManager so you call createConnection and close just like with the normal PLC4X API. The structure of the code is now more or less like if you would create a new connection for every request and close it afterwards. Another benefit of the PooledPlcDriverManager is that it will check a connection for any problems before returning it to the client. So if a connection was terminated, it will detect this and create a new connection. Here comes a little example program utilizing the PooledPlcDriverManager: PlcDriverManager driverManager = new PooledPlcDriverManager(); // This just simulates a scenario where a lot of connections would be created and immediately destroyed again. for(int i = 0; i < 100; i++) { try(PlcConnection connection = driverManager.getConnection(\"...\")) { ... do something ... (please refer to the PLC4J getting started for details) } } When sharing connections between multiple services, be sure to share the instance of the PooledPldDriverManager as otherwise you will result in having multiple pools.","title":"Connection Pool","component":"plc4x","version":"pre-release","name":"connection-pool","url":"/plc4x/pre-release/users/tools/connection-pool.html","titles":[{"text":"The PooledPlcDriverManager","hash":"_the_pooledplcdrivermanager","id":1},{"text":"Example","hash":"_example","id":2}]},"89":{"id":89,"text":"","title":"Tools","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/users/tools/index.html","titles":[]},"90":{"id":90,"text":"Object PLC Mapping (OPM) is heavily inspired by the Java Persistence API (JPA) [1]. One of the main goal of the PLC4X Project is to make it easy to communicate with PLC devices to enable the development of applications that interact with PLCs. As many (or even most) of the application programmers are no experts in PLC Communication and protocols it should be as easy as possible to interact with PLCs without too much domain knowledge. This is exactly the reason why JPA was initialized many years ago to allow the interaction with a Database by simply calling methods on POJOs (Plain old Java Object). This is exactly what the OPM Module is for, to enable PLC communication by simply interacting with a POJO. In order to be handled by the OPM system, you need to create classes, that are decorated with OPM annotations. There annotations are: @PlcEntity: Declared on class-level, declares the class as valid OPM entity. @PlcTag: Declared on a property-level, declares the field as a property which is automatically filled in by fetching data from a connected PLC. Example: @PlcEntity public class MyEntity { @PlcTag(\"DB01:DW01:REAL\") private double pressure; @PlcTag(value = \"DB01:DW05:BOOL\", cacheDurationMillis = 100) private boolean running; public void MyEntity() { // For OPM } public double getPressure() { return pressure; } public boolean isRunning() { return running; } } Important here, ist that the class has a no-args constructor (if there are no other constructors, the no-args constructor can be omitted. However, if there are constructors present, a no-args version is required) Also note, that there is technically no way to actually set the value of the above type, however the OPM interceptor will take care of this, but you can of course also provide setter methods. So the @PlcEntity simply marks the class as OPM entity. The @PlcTag provides the PLC address string to where the value can be read from. In the above example there are two flavors being used. For the preassure field, no second parameter is provided, so the value prefix can be omitted. This will create a property that is fetched from the PLC with every call to the fields getter method. In the second property: running, we provide a second argument: cacheDurationMillis. This will fetch a value when accessing the getter for the first time, but if more calls to the getter are received within 100ms the last read value is returned without calling the PLC. The first call received after the cache-duration will then result in a call (which then will be cached for 100ms again). If you simply have a set of fields defined in your entity, and you simply want to read all of them and then disconnect, you can use the entity managers read method. This creates a connection to the database, reads all the values and then disconnects the entity again. public static void main(String[] args) { PlcEntityManager em = new PlcEntityManager(); MyEntity entity = em.read(MyEntity.class, \"s7://...\"); System.out.println(entity.getPressure()); } Calls to the getters of this detached entity will not result in any requests being sent to the PLC. Please be aware, that in this case you are creating a dead entity. Calling read in a loop will have the OPM create new dynamic proxy classes for every call and these classes will pile up in your class-memory, which will cause OutOfMemory errors eventually. If you are planning on any repeated read operations, please use connected reads (Next example). A connected entity is the most interesting use-case for an OPM entity. In this case the entity stays alive. As mentioned in the chapter about Defining an OPM Entity, when accessing the getter for a property, which is annotated with @PlcTag will result in a call to the PLC, unless the cacheDurationMillis permits a re-use of the last value. The same applies for any possibly present setters. If the setter for a property annotated with @PlcTag is called, this will result in a write request being sent to the PLC. Here the cache duration is not used. public static void main(String[] args) { PlcEntityManager em = new PlcEntityManager(); MyEntity entity = em.connect(MyEntity.class, \"s7://...\"); System.out.println(entity.getPressure()); } As reading every property of an entity in a separate request is usually quite sub-ideal, there is also a way to force the reading of all fields in one request (if the protocol supports that). This is done by defining a method that does not start with get{field-name} or is{field-name} (in case of booleans). When calling this method the OPM system will update all properties defined in the current entity (respecting the cache time however) So when adding this method to our example entity: public void updateAllTheTags() { // Dummy ... } simply calling connectedEntity.updateAllTheTags() will force an update of all tags which have outdated values in the cache. [1] https://www.oracle.com/technetwork/java/javaee/tech/persistence-jsp-140049.html","title":"Object PLC Mapping","component":"plc4x","version":"pre-release","name":"opm","url":"/plc4x/pre-release/users/tools/opm.html","titles":[{"text":"What is Object PLC Mapping","hash":"_what_is_object_plc_mapping","id":1},{"text":"Defining an OPM Entity","hash":"_defining_an_opm_entity","id":2},{"text":"Simple Example (Detached)","hash":"_simple_example_detached","id":3},{"text":"Simple Example (Connected)","hash":"_simple_example_connected","id":4},{"text":"Hidden Secrets","hash":"_hidden_secrets","id":5},{"text":"References","hash":"_references","id":6}]},"91":{"id":91,"text":"While the Apache PLC4X API allows simple access to PLC resources, if you want to continuously monitor some values and have them retrieved in a pre-defined interval, the core PLC4X API method is a little bit uncomfortable. Especially when you have multiple batches of data you want to have refreshed in different intervals. In this case you need to take care of the scheduling of queries, need to manage the connection state (Check if the connection is still available and to apply countermeasures, if there are problems) As we have encountered exactly the same problem for about every integration module we created, the Apache PLC4X team has created a tool called the Scraper. This tool automatically handles all of the tasks mentioned above. The Scraper can be found in the Maven module: org.apache.plc4x plc4j-scraper 0.13.0-SNAPSHOT In general, you need 3 parts to work with the Scraper: 1) A Scraper Configuration 2) A Scraper Implementation 3) A Handler to handle the results of Scraper jobs In the Scraper Configuration you define the so-called jobs. Sources define connections to PLCs using PLC4X drivers. Generally you can think of a Source as a PLC4X connection string, given an alias name. A Job defines which resources (PLC Addresses) should be collected from which Sources with a given Trigger. All resources in a job will be collected as a batch. Generally multiple types of triggers could theoretically be supported, but for now only a time triggered job (Aka SCHEDULED) is actually supported. In the near future we’re hoping that we will be able to support: - External triggers - Triggering collection based upon PLC-values But, as to now, this has not been implemented yet. The core of the Scraper configuration is the ScraperConfigurationTriggeredImplBuilder class. Use this to build the configuration objects used to bootstrap the Scraper. ScraperConfigurationTriggeredImplBuilder builder = new ScraperConfigurationTriggeredImplBuilder(); As soon as you have your builder instance, you should add at least one source to it. builder.addSource({connectionName}, {plc4xConnectionString}); The connectionName will be what we use when configuring the job to reference which source it should use to collect. In order to configure a job we have to get an instance of a JobConfigurationTriggeredImplBuilder. JobConfigurationTriggeredImplBuilder jobBuilder = builder.job({jobName}, {triggerCommand}); This creates a new job with a given name which is executed based on the information in the triggerCommand. As mentioned above, we currently only support a time-scheduled collection. This generally requires just one parameter: The number of milliseconds between each collection. (SCHEDULED,1000) Above would schedule a collection every 1000ms - so once every second. Up to now this job would not be run anywhere, and it would also not collect anything. So in order to have the job actually do something, we should assign it a source to collect from. jobBuilder.source({connectionName}); Here we could theoretically collect on multiple sources, by simply calling the source() method multiple times. All sources would be collected at the same time, whenever the trigger tells it to. So the last thing we need to configure our first Scraper job, is to add a few fields for it to collect. jobBuilder.field({fieldName}, {fieldAddress}); The field method has to be called for every field we want to add to the current job configuration. It gives a PLC4X address string an easy to understand string name, just like when using the core PLC4X API. As soon as we’re done adding fields, we configure the job by calling the build method. jobBuilder.build(); This configures the finished job and attaches that to the overall Scraper configuration of the scraper configuration. As soon as we’re done configuring jobs, we need to create the Scraper configuration by calling the build method on the builder: ScraperConfigurationTriggeredImpl scraperConfig = builder.build(); In order to run the Scraper, the following boilerplate code is needed. try { PlcDriverManager plcDriverManager = new PooledPlcDriverManager(); TriggerCollector triggerCollector = new TriggerCollectorImpl(plcDriverManager); TriggeredScraperImpl scraper = new TriggeredScraperImpl(scraperConfig, (jobName, sourceName, results) -> { ... }, triggerCollector); scraper.start(); triggerCollector.start(); } catch (ScraperException e) { log.error(\"Error starting the scraper\", e); } At first a new PooledPlcDriverManager is created (It actually doesn’t have to be the pooled version, but we strongly suggest you use it as for some protocols the connection process is stressfull for the connected PLC). With this plcDriverManager we can then create a so-called TriggerCollector, which we pass in the driver manager as argument. Next comes the probably most important part: We configure the scraper, by binding a Scraper Configuration, a ResultHandler and a TriggerCollector together. After this, the scraper is ready to start, which is then done by calling start on the scraper as well as the triggerCollector. For the sake of clarity, here comes the definition of the ResultHandler interface: @FunctionalInterface public interface ResultHandler { /** * Callback handler. * @param jobName name of the job (from config) * @param connectionName alias of the connection (not connection String) * @param results Results in the form alias to result value */ void handle(String jobName, String connectionName, Map results); } As an alternative to using the Java API, the Scraper Configuration can also be read from a JSON or YAML document. Here come some examples: JSON: { \"sources\": { \"connectionName\": \"connectionString\" }, \"jobs\": [ { \"name\": \"jobName\", \"triggerConfig\": (SCHEDULED,10000) \"sources\": [ \"connectionName\" ], \"fields\": { \"a\": \"{address-a}\", \"b\": \"{address-b}\" } } ] } YAML: --- sources: connectionName: connectionString jobs: - name: jobName triggerConfig: (SCHEDULED,10000) sources: - connectionName fields: a: {address-a} b: {address-b} In both cases, you can create the ScraperConfiguration with the following code: ScraperConfiguration conf = ScraperConfiguration.fromFile(\"{path to the JSON or YAML file}\", ScraperConfigurationTriggeredImpl.class);","title":"Scraper","component":"plc4x","version":"pre-release","name":"scraper","url":"/plc4x/pre-release/users/tools/scraper.html","titles":[{"text":"Getting started with the Scraper","hash":"_getting_started_with_the_scraper","id":1},{"text":"Sources","hash":"_sources","id":2},{"text":"Jobs","hash":"_jobs","id":3},{"text":"Configuration using the Java API","hash":"_configuration_using_the_java_api","id":4},{"text":"Running the Scraper","hash":"_running_the_scraper","id":5},{"text":"Configuration using a JSON or YAML file","hash":"_configuration_using_a_json_or_yaml_file","id":6}]},"92":{"id":92,"text":"PLC4X has a Mock Driver which was initially implemented to be used for Unit Tests and this still is its main purpose. But this driver is also very suitable to play around a bit with the PLC4X API if no Hardware PLC is available. The driver can be found in the Maven module org.apache.plc4x plc4j-driver-mock 0.13.0-SNAPSHOT test The connection string Syntax for the mock driver is mock:{name-of-the-connection}. So you can use multiple Mock Devices at the same time. The Mock Driver does nothing else than forwarding all Requests to a `Virtual Device which we can provide to control all responses and also Monitor them, e.g. for unit tests. The Interface for the Mock Device is public interface MockDevice { Pair read(String fieldQuery); PlcResponseCode write(String fieldQuery, Object value); Pair subscribe(String fieldQuery); void unsubscribe(); // ... } Imagine we have some Code which we cannot control or whose functionality we want to test. This can be done with the Mock Driver in the following way. First, a new Mock Connection is established (like any other connection also would be): PlcMockConnection connection = (PlcMockConnection) PlcDriverManager.getDefault().getConnectionManager().getConnection(\"mock:my-mock-connection\"); You see, that we directly cast the Connection to a PlcMockConnection. This is done, because we need to connect a Device to this Mock Connection. This is done in the following Snippet connection.setDevice(mockDevice); Here, we pass it an instance of MockDevice which could be a simple Implementation of the interface like MockDevice mockDevice = new MockDevice() { Pair read(String fieldQuery) { System.out.println(\"I got a read to \" + fieldQuery); return Pair.of(PlcResponseCode.OK, new PlcString(\"hello\")); } PlcResponseCode write(String fieldQuery, Object value) { System.out.println(\"I got a write to \" + fieldQuery + \" with the value \" + value); return PlcResponseCode.OK; } // ... } This would just return a String Value hello for every request and print all read and write requests to the Console. To use the Mock driver in Unit Tests the easiest way is to generate the MockDriver instance as Mockito (or any other Framework) Mock. Like in the following Example MockDevice mockDevice = Mockito.mock(MockDevice.class); PlcMockConnection connection = (PlcMockConnection) PlcDriverManager.getDefault().getConnectionManager().getConnection(\"mock:my-mock-connection\"); connection.setDevice(mockDevice); // Populate the Mock to avoid a NPE when(mockDevice).read(anyString()).thenReturn(Pair.of(PlcResponseCode.OK, new PlcString(\"hello\"))); // Some Demo code that uses the same Driver Manager and either the connection from above // or at least mock:my-mock-connection as connection string // Here: send a request to the field \"MyAdress\" connection .readRequestBuilder .addItem(\"station\", \"MyAdress\") .build() .execute() .get(); // Check that the we really issued a Read request to the Field \"MyAdress\" verify(mockDevice).read(eq(\"MyAdress\")); But as the MockDriver uses a static Mock Connection registry the following Code works also MockDevice mockDevice = Mockito.mock(MockDevice.class); // Setup PlcMockConnection connection = (PlcMockConnection) PlcDriverManager.getDefault().getConnectionManager().getConnection(\"mock:my-mock-connection\"); connection.setDevice(mockDevice); // Populate the Mock to avoid a NPE when(mockDevice).read(anyString()).thenReturn(Pair.of(PlcResponseCode.OK, new PlcString(\"hello\"))); // Some Demo code that uses the same Driver Manager and either the connection from above // or at least mock:my-mock-connection as connection string // Here: send a request to the field \"MyAdress\" // and we build up a new Connection try (PlcConnection conn = PlcDriverManager.getDefault().getConnectionManager().getConnection(\"mock:my-mock-connection\")) { conn .readRequestBuilder .addItem(\"station\", \"MyAdress\") .build() .execute() .get(); } catch (Exception e) { // do nothing } // Check that the we really issued a Read request to the Field \"MyAdress\" verify(mockDevice).read(eq(\"MyAdress\")); The Snippet above shows that the part under test really has to share nothing with the test code except for the connection string. The above examples show that the MockDriver driver can not only be used to play around with the API but is also a powerful tool to do unit testing of Code which uses the PLC4X API. All that needs to be done is to either pass an instance of the Mocked Connection or just use the same Connection string (e.g. from a test configuration) that was used to Prepare a Mock Device. Some Examples of further (more Complex) use cases can be found in the PLC4X Codebases, e.g. in the following classes org.apache.plc4x.java.opm.PlcEntityManagerTest org.apache.plc4x.java.opm.PlcEntityManagerComplexTest org.apache.plc4x.java.scraper.ScraperTest and many more Test classes, especially in the OPM and the Scraper Module.","title":"Testing (or using PLC4X without a PLC)","component":"plc4x","version":"pre-release","name":"testing","url":"/plc4x/pre-release/users/tools/testing.html","titles":[{"text":"The Mock Driver","hash":"_the_mock_driver","id":1},{"text":"Simple Example","hash":"_simple_example","id":2},{"text":"Unit Testing with the Mock Driver","hash":"_unit_testing_with_the_mock_driver","id":3},{"text":"Conclusion","hash":"_conclusion","id":4}]},"93":{"id":93,"text":"A CAN transport is a special category of transport which can bring CAN frame data to various drivers. All of these transports are meant to follow basic CAN frame data semantics. Each CAN transport must provide a CANFrameBuilder interface realization. This builder can be used by drivers which implement application layer protocols on top of CAN bus. The builder allow constructing requests which should be passed to the bus operations. Note this API is available since Apache PLC4X 0.9. Name Value Description Code not available This transport ships only additional API on top of existing Apache PLC4X Transport API. Name CAN Maven Dependency org.apache.plc4x plc4j-transport-can 0.13.0-SNAPSHOT Options: none, an abstract transport Main purpose of this transport is basic unification of various CAN bus APIs. There is no unified way to access CAN (beside SocketCAN for linux) across multiple platforms. We brought this simplistic facade-alike API to serve very basic project needs. Its main purpose is to let transport implementer bridge with actual transport or another library. With as little effort as possible. Major advantage of CAN transport facade is possibility to implement application layer protocols in a fully portable way. This flexibility is not guaranteed with SocketCAN alone. The CAN transport responsibility is to bring CAN data to driver implementer. This API does not enforce, require or promote a low level bus operations. In this regard, these operations can be made by library available for specific CAN adapter in use. Usage of CAN transport APIs is recommended for portability reasons. Please have a look on CAN describe usage of CAN driver adapter with CAN transport facade. SocketCAN","title":"CAN","component":"plc4x","version":"pre-release","name":"can","url":"/plc4x/pre-release/users/transports/can.html","titles":[{"text":"Developer notes","hash":"_developer_notes","id":1},{"text":"Compatible CAN transports","hash":"_compatible_can_transports","id":2}]},"94":{"id":94,"text":"TCP UDP Raw Socket Serial Port CAN bus SocketCAN PCAP replay","title":"Transports","component":"plc4x","version":"pre-release","name":"index","url":"/plc4x/pre-release/users/transports/index.html","titles":[]},"95":{"id":95,"text":"Name Value Description Code pcap Name PCAP file replay Maven Dependency org.apache.plc4x plc4j-transport-pcap-replay 0.13.0-SNAPSHOT Transport Syntax: {pcap-path} Path to the PCAP or PCAPNG file containing the network recording. Options: replay-speed-factor (1) Numeric value for changing the replay speed: 1 = Normal speed (default) 0 = Maximum speed 0.5 = Half speed 2 = Double speed loop (false) Should the replay start at the beginning of the file as soon as the end is reached? true = Automatically start again false = Stop at the end (default)","title":"PCAP Replay","component":"plc4x","version":"pre-release","name":"pcap-replay","url":"/plc4x/pre-release/users/transports/pcap-replay.html","titles":[]},"96":{"id":96,"text":"Name Value Description Code raw Name Raw Socket Communication Maven Dependency org.apache.plc4x plc4j-transport-raw-socket 0.13.0-SNAPSHOT Transport Syntax: {device-name} Name of the network device doing the capture Options: none","title":"Raw Socket","component":"plc4x","version":"pre-release","name":"raw-socket","url":"/plc4x/pre-release/users/transports/raw-socket.html","titles":[]},"97":{"id":97,"text":"Name Value Description Code serial Name UDP Socket Communication Maven Dependency org.apache.plc4x plc4j-transport-serial 0.13.0-SNAPSHOT Transport Syntax: {name of the serial port} Can differ depending on the OS: Windows: \"Com 1\" Mac & Linux: \"/dev/ttyS0\" Options: none","title":"Serial Port","component":"plc4x","version":"pre-release","name":"serial","url":"/plc4x/pre-release/users/transports/serial.html","titles":[]},"98":{"id":98,"text":"Name Value Description Code socketcan Name SocketCAN (software bridge to CAN). Maven Dependency org.apache.plc4x plc4j-transport-socketcan 0.13.0-SNAPSHOT Transport Syntax: {name of the socketcan interface} Can differ depending on the OS: can0 vcan0 Options: none SocketCAN is linux specific way to access CAN bus. It has its own representation of CAN frames, buffers and so on. This means that you have to program your application against socketcan and not raw can interfaces. Primary difference is fixed length of socketcan frames (CAN 2.0A always takes 16 bytes) and extended size of CAN identifier. Standard CAN frame uses 11 bits while socketcan uses 29 and appends flags to remaining 3 bits. Use of socketcan means that Apache PLC4X does not handle low level bus access, arbitration, coordination and so on. This is done by socketcan and layer below it. This transport have been successfully tested with vcan as well as gs_usb drivers.","title":"SocketCAN","component":"plc4x","version":"pre-release","name":"socketcan","url":"/plc4x/pre-release/users/transports/socketcan.html","titles":[]},"99":{"id":99,"text":"Name Value Description Code tcp Name TCP Socket Communication Maven Dependency org.apache.plc4x plc4j-transport-tcp 0.13.0-SNAPSHOT Transport Syntax: {IP address or hostname}:{port} The port can be omitted, if the protocol provides a default port value. Options: none","title":"TCP","component":"plc4x","version":"pre-release","name":"tcp","url":"/plc4x/pre-release/users/transports/tcp.html","titles":[]},"100":{"id":100,"text":"Name Value Description Code udp Name UDP Socket Communication Maven Dependency org.apache.plc4x plc4j-transport-udp 0.13.0-SNAPSHOT Transport Syntax: {IP address or hostname}:{port} The port can be omitted, if the protocol provides a default port value. Options: none","title":"UDP","component":"plc4x","version":"pre-release","name":"udp","url":"/plc4x/pre-release/users/transports/udp.html","titles":[]},"101":{"id":101,"text":"For the Freemarker language output we are using an unmodified version of Apache Freemarker to generate output. The boilerplate code for providing a PLC4X language module is located in the org.apache.plc4x.plugins:plc4x-code-generation-language-base-freemarker maven module, inside the FreemarkerLanguageOutput class. This class configures a Freemarker context and provides standardized attributes inside this: packageName: Java style package name which can be used to create some form of directory structure. typeName: Simple string type name type: ComplexTypeDefinition instance containing all the information for the type that code should be generated for. helper: As some times it is pretty complicated to create all the output in Freemarker, the helper allows to provide code that is used by the template that help with generating output. A Freemarker-based output module, has to provide a set of Template instances as well as provide a FreemarkerLanguageTemplateHelper instance. In general, we distinguish between these types of templates: Spec Templates (Global output generated once per driver in total) Complex Type Templates (Generates output for a complex type) Enum Templates (Generates output for enum types) DataIO Templates (Generates output for reading and writing PlcValues, which are our PLC4X form of presenting input and output data to our users) For each of these, the developer can provide a list of templates, which then can generate multiple files per type (Which is important for languages such as C where for every type we need to generate a Header file (.h) and an Implementation (.c)) What the FreemarkerLanguageOutput then does, is iterate over all types provided by the protocol module, and then iterate over all templates the current language defines. The only convention used in this utility, is that the first line of output a template generates will be treated as the path relative to the base output directory. It will automatically create all needed intermediate directories and generate the rest of the input to the file specified by the first line. If this line is empty, the output is skipped for this type. package org.apache.plc4x.language.java; import com.google.googlejavaformat.java.Formatter; import com.google.googlejavaformat.java.FormatterException; import freemarker.template.Configuration; import freemarker.template.Template; import org.apache.commons.io.FileUtils; import org.apache.plc4x.plugins.codegenerator.protocol.freemarker.FreemarkerLanguageOutput; import org.apache.plc4x.plugins.codegenerator.protocol.freemarker.FreemarkerLanguageTemplateHelper; import org.apache.plc4x.plugins.codegenerator.types.definitions.TypeDefinition; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.*; public class JavaLanguageOutput extends FreemarkerLanguageOutput { private static final Logger LOGGER = LoggerFactory.getLogger(JavaLanguageOutput.class); private final Formatter formatter = new Formatter(); @Override public String getName() { return \"Java\"; } @Override public Set supportedOptions() { return Collections.singleton(\"package\"); } @Override public List supportedOutputFlavors() { return Arrays.asList(\"read-write\", \"read-only\", \"passive\"); } @Override protected List getSpecTemplates(Configuration freemarkerConfiguration) { return Collections.emptyList(); } @Override protected List getComplexTypeTemplates(Configuration freemarkerConfiguration) throws IOException { return Arrays.asList( freemarkerConfiguration.getTemplate(\"templates/java/pojo-template.java.ftlh\"), freemarkerConfiguration.getTemplate(\"templates/java/io-template.java.ftlh\")); } @Override protected List getEnumTypeTemplates(Configuration freemarkerConfiguration) throws IOException { return Collections.singletonList( freemarkerConfiguration.getTemplate(\"templates/java/enum-template.java.ftlh\")); } @Override protected List getDataIoTemplates(Configuration freemarkerConfiguration) throws IOException { return Collections.singletonList( freemarkerConfiguration.getTemplate(\"templates/java/data-io-template.java.ftlh\")); } @Override protected FreemarkerLanguageTemplateHelper getHelper(TypeDefinition thisType, String protocolName, String flavorName, Map types, Map options) { return new JavaLanguageTemplateHelper(thisType, protocolName, flavorName, types, options); } @Override protected void postProcessTemplateOutput(File outputFile) { try { FileUtils.writeStringToFile( outputFile, formatter.formatSourceAndFixImports( FileUtils.readFileToString(outputFile, StandardCharsets.UTF_8) ), StandardCharsets.UTF_8 ); } catch (IOException | FormatterException e) { LOGGER.error(\"Error formatting {}\", outputFile, e); } } } The getName method returns Java, this is what needs to be defined in the plc4x-maven-plugin configuration in the language option in order to select this output format. supportedOptions tells the plugin which option tags this code-generation output supports. In case of the Java output, this is only the package option, which defines the package name of the generated output. With supportedOutputFlavors we tell the user, that in general we support the three options: read-write, read-only and passive as valid inputs for the outputFlavor config option of the code-generation plugin. In this case Java doesn’t require any global files being generated for java, so we simply return an empty collection. For complex types, we currently use two templates (however this will soon be reduced to one). So for every complex type in a protocol definition, the templates: templates/java/pojo-template.java.ftlh and templates/java/io-template.java.ftlh will be executed. In case of enum types, only one template is being used. Same as for data-io. The next important method is the getHelper method, which returns an object, that is passed to the templates with the name helper. As mentioned before, a lot of operations would be too complex to implement in pure Freemarker code, so with these helpers every language can provide a helper utility for handling the complex operations. Here an example for a part of a template for generating Java POJOs: ${helper.packageName(protocolName, languageName, outputFlavor)?replace(\".\", \"/\")}/${type.name}.java /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * \"License\"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package ${helper.packageName(protocolName, languageName, outputFlavor)}; ... imports ... // Code generated by code-generation. DO NOT EDIT. public abstract class ${type.name} extends ${type.parentType.name} implements Message { ... SNIP ... } So as you can see, the first line will generate the file-path of the to be generated output. As when creating more and more outputs for different languages, we have realized, that a lot of the code needed in the Helper utility repeats, we therefore introduced a so-called BaseFreemarkerLanguageTemplateHelper which contains a lot of stuff, that is important when generating new language output.","title":"Apache Freemarker","component":"plc4x","version":"pre-release","name":"freemarker","url":"/plc4x/pre-release/developers/code-gen/language/freemarker.html","titles":[{"text":"Example Java output","hash":"_example_java_output","id":1}]},"102":{"id":102,"text":"The DF1 protocol has three basic messages: a command message, acknowledge and not acknowledge. A 0x10 is used as delimiter to differentiate between the messages and parts of the command message. ACK NAK 10 06 10 15 This is what a read command message looks like in full-duplex mode using CRC as checksum: Name DLE STX DST SRC CMD STS TNS ADDR SIZE DLE ETX CRC Value 10 02 XX XX 01 00 XX XX XX XX 02 10 03 XX XX The according response with the requested byte data: Name DLE STX DST SRC CMD STS TNS DATA SIZE DLE ETX CRC Value 10 02 XX XX 41 00 XX XX XX XX 02 10 03 XX XX Every message starts with a DLE = 0x10. The second byte is used to differentiate what type of message will follow. In the case of a command message it is 0x02. DST and SRC specify the target and source of the message. CMD = 0x01 means an unprotected read is requested, the command response code is always attained with the addition of 0x40. STS is a status byte, TNS is the transaction counter that is incremented by the master and used to recognize the specific message response. ADDR is the memory address being requested, size specifies how many bytes are to be read. DLE + ETX mark the end of the message, the last two bytes are the CRC that is calculated using the previously sent bytes. Here is the MSpec to model the behaviour: [discriminatedType DF1Symbol [const uint 8 messageStart 0x10] [discriminator uint 8 symbolType] [typeSwitch 'symbolType' ['0x02' DF1SymbolMessageFrame [simple uint 8 destinationAddress] [simple uint 8 sourceAddress] [simple DF1Command command] [const uint 8 messageEnd 0x10] [const uint 8 endTransaction 0x03] [checksum uint 16 'crc' 'STATIC_CALL(\"org.apache.plc4x.java.df1.readwrite.utils.StaticHelper.crcCheck\", destinationAddress, sourceAddress, command)'] ] ['0x06' DF1SymbolMessageFrameACK ] ['0x15' DF1SymbolMessageFrameNAK ] ] ] [discriminatedType DF1Command [discriminator uint 8 commandCode] [simple uint 8 status] [simple uint 16 transactionCounter] [typeSwitch 'commandCode' ['0x01' DF1UnprotectedReadRequest [simple uint 16 address] [simple uint 8 size] ] ['0x41' DF1UnprotectedReadResponse [manualArray uint 8 'data' terminated 'STATIC_CALL(\"org.apache.plc4x.java.df1.readwrite.utils.StaticHelper.dataTerminate\", io)' 'STATIC_CALL(\"org.apache.plc4x.java.df1.readwrite.utils.StaticHelper.readData\", io)' 'STATIC_CALL(\"org.apache.plc4x.java.df1.readwrite.utils.StaticHelper.writeData\", io, element)' 'STATIC_CALL(\"org.apache.plc4x.java.df1.readwrite.utils.StaticHelper.dataLength\", data)'] ] ] ] The basic object is the DF1Symbol, where the second byte is used to distinguish between the different message types using a typeSwitch. In the case of a command message, the message frame contains the DF1Command to further differentiate between the command types. Currently only the unprotected read and its response are implemented.","title":"Example: DF1 MSpec","component":"plc4x","version":"pre-release","name":"df1","url":"/plc4x/pre-release/developers/code-gen/protocol/df1.html","titles":[]},"103":{"id":103,"text":"The MSpec format (Message Specification) was a result of a brainstorming session after evaluating a lot of other options. We simply sat down and started to write some imaginary format (imaginary was even the initial Name we used Machine-Readable SPEC = mspec). After we had an initial format that seemed to do the trick, we then stated creating parses for this and started iteratively fine-tuning both spec and parsers as part of the process of implementing new protocols and language templates. It’s a text-based format. At the root level of these specs are a set of type, discriminatedType, dataIo and enum blocks. type elements are objects who`s content and structure is independent of the input. An example would be the TPKTPacket of the S7 format: [type TPKTPacket [const uint 8 protocolId 0x03] [reserved uint 8 '0x00'] [implicit uint 16 len 'payload.lengthInBytes + 4'] [simple COTPPacket('len - 4') payload] ] A discriminatedType type, in contrast, is an object who`s content and structure is influenced by the input. Every discriminated type can contain an arbitrary number of normal fields but must contain exactly one typeSwitch element. For example part of the spec for the S7 format looks like this: [discriminatedType S7Message [const uint 8 protocolId 0x32] [discriminator uint 8 messageType] [reserved uint 16 '0x0000'] [simple uint 16 tpduReference] [implicit uint 16 parameterLength 'parameter != null ? parameter.lengthInBytes : 0'] [implicit uint 16 payloadLength 'payload != null ? payload.lengthInBytes : 0'] [typeSwitch messageType ['0x01' S7MessageRequest ] ['0x02' S7MessageResponse [simple uint 8 errorClass] [simple uint 8 errorCode] ] ['0x03' S7MessageResponseData [simple uint 8 errorClass] [simple uint 8 errorCode] ] ['0x07' S7MessageUserData ] ] [optional S7Parameter ('messageType') parameter 'parameterLength > 0'] [optional S7Payload ('messageType', 'parameter') payload 'payloadLength > 0' ] ] A type`s start is declared by an opening square bracket [ followed by the type or discriminatedType keyword, which is directly followed by a name. A Type definition is ended with a closing square bracket ]. Every type definition contains a list of so-called fields. The list of available field types are: abstract: used in the parent type declaration do declare a field that has to be defined with the identical type in all subtypes (reserved for discriminatedType). array: array of simple or complex typed objects. assert: generally similar to constant fields, however do they throw AssertionExceptions instead of hard ParseExceptions. They are used in combination with optional fields. checksum: used for calculating and verifying checksum values. const: expects a given value and causes a hard exception if the value doesn’t match. discriminator: special type of simple typed field which is used to determine the concrete type of object (reserved for discriminatedType). enum: special form of field, used if an enum types property is to be used instead of it’s primary value. implicit: a field required for parsing, but is usually defined though other data, so it’s not stored in the object, but calculated on serialization. manualArray: like an array field, however the logic for serializing, parsing, number of elements and size have to be provided manually. manual: simple field, where the logic for parsing, serializing and size have to be provided manually. optional: simple or complex typed object, that is only present if an optional condition expression evaluates to true and no AssertionException is thrown when parsing the referenced type. padding: field used to add padding data to make datastructures aligned. peek: field that tries to parse a given structure without actually consuming the bytes. reserved: expects a given value, but only warns if condition is not meet. simple: simple or complex typed object. typeSwitch: not a real field, but indicates the existence of subtypes, which are declared inline (reserved for discriminatedType). unknown: field used to declare parts of a message that still has to be defined. Generally used when reverse-engineering a protocol. Messages with unknown fields can only be parsed and not serialized. validation: this field is not actually a real field, it’s more a condition that is checked during parsing and if the check fails, it throws a validation exception, wich is handled by virtual: generates a field in the message, that is generally only used for simplification. It’s not used for parsing or serializing. The full syntax and explanations of these type follow in the following chapters. Another thing we have to explain are how types are specified. In general, we distinguish between two types of types used in field definitions: simple types complex types Simple types are usually raw data the format is: {base-type} {size} The base types available are currently: bit: Simple boolean value or bit. byte: Special value fixed to 8 bit, which defaults to either signed or unsigned depending on the programming language (Java it defaults to signed integer values and in C and Go it defaults to unsigned integers). int: The input is treated as signed integer value. uint: The input is treated as unsigned integer value. float: The input is treated as floating point number. string: The input is treated as string. Then for dataIo types we have some additional types: - time: The input is treated as a time representation - date: The input is treated as a date representation - dateTime: The input is treated as a date with time All except the bit and byte types take a size value which provides how many bits should be read. For the bit field, this obviously defaults to 1 and for the byte the bits default to 8. So reading an unsigned 8-bit integer would be: uint 8. There is currently one special type, reserved for string values, whose length is determined by an expression instead of a fixed number of bits. It is considered a variable length string: vstring: The input is treated as a variable length string and requires an expression tp provide the number of bits to read. In contrast to simple types, complex types reference other complex types (Root elements of the spec document). How the parser should interpret them is defined in the referenced types definition. In the example above, for example the S7Parameter is defined in another part of the spec. An array field is exactly what you expect. It generates an field which is not a single-value element but an array or list of elements. [array {bit|byte} {name} {count|length|terminated} '{expression}'] [array {simple-type} {size} {name} {count|length|terminated} '{expression}'] [array {complex-type} {name} {count|length|terminated} '{expression}'] Array types can be both simple and complex typed and have a name. An array field must specify the way it’s length is determined as well as an expression defining it’s length. Possible values are: - count: This means that exactly the number of elements are parsed as the expression specifies. - length: In this case a given number of bytes are being read. So if an element has been parsed and there are still bytes left, another element is parsed. - terminated: In this case the parser will continue reading elements until it encounters a termination sequence. An assert field is pretty much identical to a const field. The main difference however it how the case is handled, if the parsed value does not match the expected value. [assert {bit|byte} {name} '{assert-value}'] [assert {simple-type} {size} {name} '{assert-value}'] While a const field would abort parsing in total with an error, an assert field with abort parsing, but the error will only bubble up in the stack till the first optional field is found. In this case the parser will be rewound to the position before starting to parse the optional field and continue parsing with the next field, skipping the optional field. If there is no upstream optional field, then parsing of the message terminates with an error. See also: - validation field: Similar to an assert field, however no parsing is done, and instead simply a condition is checked. - optional field: optional fields are aware of the types of parser errors produced by assert and validation fields A checksum field can only operate on simple types. [checksum {bit|byte} {name} '{checksum-expression}'] [checksum {simple-type} {size} {name} '{checksum-expression}'] When parsing a given simple type is parsed and then the result is compared to the value the checksum-expression provides. If they don’t match an exception is thrown. When serializing, the checksum-expression is evaluated and the result is then output. Note: As quite often a checksum is calculated based on the byte data of a message read up to the checksum, an artificial variable is available in expressions called checksumRawData of type byte[] which contains an array of all the byte data read in the current message element and it’s sub types in case of a discriminated type. This field doesn’t keep any data in memory. See also: - implicit field: A checksum field is similar to an implicit field, however the checksum-expression is evaluated are parsing time and throws an exception if the values don’t match. A const field simply reads a given simple type and compares to a given reference value. [const {bit|byte} {name} {reference}] [const {simple-type} {size} {name} {reference}] When parsing it makes the parser throws an Exception if the parsed value does not match the expected one. When serializing is simply outputs the expected constant. This field doesn’t keep any data in memory. See also: - implicit field: A const field is similar to an implicit field, however it compares the parsed input to the reference value and throws an exception if the values don’t match. Discriminator fields are only used in `discriminatedType`s. [discriminator {simple-type} {size} {name}] They are used, in cases where the value of a field determines the concrete type of a discriminated type. In this case we don’t have to waste memory on storing the discriminator value and this can be statically assigned to the type. When parsing a discriminator fields result just in being a locally available variable. When serializing is accesses the discriminated types constants and uses these as output. See also: - implicit field: A discriminator field is similar to an implicit field, however doesn’t provide a serialization expression as it uses the discrimination constants of the type it is. - discriminated types Implicit types are fields that get their value implicitly from the data they contain. [implicit {bit|byte} {name} '{serialization-expression}'] [implicit {simple-type} {size} {name} '{serialization-expression}'] When parsing an implicit type is available as a local variable and can be used by other expressions. When serializing the serialization-expression is executed and the resulting value is output. This type of field is generally used for fields that handle numbers of elements or length values as these can be implicitly calculated at serialization time. This field doesn’t keep any data in memory. [manualArray {bit|byte} {name} {count|length|terminated} '{loop-expression}' '{serialization-expression}' '{deserialization-expression}' '{length-expression}'] [manualArray {simple-type} {size} {name} {count|length|terminated} '{loop-expression}' '{serialization-expression}' '{deserialization-expression}' '{length-expression}'] [manualArray {complex-type} {name} {count|length|terminated} '{loop-expression}' '{serialization-expression}' '{deserialization-expression}' '{length-expression}'] [manual {bit|byte} {name} '{serialization-expression}' '{deserialization-expression}' '{length-expression}'] [manual {simple-type} {size} {name} '{serialization-expression}' '{deserialization-expression}' '{length-expression}'] [manual {complex-type} {name} '{serialization-expression}' '{deserialization-expression}' '{length-expression}'] An optional field is a type of field that can also be null. [optional {bit|byte} {name} ('{optional-expression}')?] [optional {simple-type} {size} {name} ('{optional-expression}')?] [optional {complex-type} {name} ('{optional-expression}')?] The optional-expression attribute is optional. If it is provided the optional-expression is evaluated. If this results in`false` nothing is parsed, if it evaluates to true it is parsed. In any case, if when parsing the content of an optional field a assert or validation field fails, the parser is rewound to the position before starting to parse the optional field, the optional field is then skipped and the parser continues with the next field. When serializing, if the field is null nothing is output, if it is not null it is serialized normally. See also: - simple field: In general optional fields are identical to simple fields except the ability to be null or be skipped. - assert: Assert fields are similar to const fields, but can abort parsing of an optional filed. - validation: If a validation field in any of the subtypes fails, this aborts parsing of the optional field. A padding field allows aligning of data blocks. It outputs additional padding data, given amount of times specified by padding expression. Padding is added only when result of expression is bigger than zero. [padding {bit|byte} {name} '{pading-value}' '{times-padding}'] [padding {simple-type} {size} {name} '{pading-value}' '{times-padding}'] When parsing a padding field is being parsed, the times-padding expressions determines how often the padding-value should be read. So it doesn’t really check if the read values match the padding-value, it just ensures the same amount of bits are being read. The read values are simply discarded. When serializing, the times-padding defines how often the padding-value should be written. This field doesn’t keep any data in memory. Reserved fields are very similar to const fields, however they don’t throw exceptions, but instead log messages if the values don’t match. The reason for this is that in general reserved fields have the given value until they start being used. If the field starts to be used this shouldn’t break existing applications, but it should raise a flag as it might make sense to update the drivers. [reserved {bit|byte} {name} '{reference}'] [reserved {simple-type} {size} {name} '{reference}'] When parsing the values a reserved field is parsed and the result is compared to the reference value and then discarded. If the values don’t match, a log message is written. This field doesn’t keep any data in memory. See also: - const field Simple fields are the most common types of fields. A simple field directly mapped to a normally typed field of a message type. [simple {bit|byte} {name}] [simple {simple-type} {size} {name}] [simple {complex-type} {name}] When parsing, the given type is parsed (can’t be null) and saved in the corresponding model instance’s property field. When serializing it is serialized normally using either a simple type serializer or by delegating serialization to a complex type. These types of fields can only occur in discriminated types. A discriminatedType must contain exactly one typeSwitch field, as it defines the sub-types. [typeSwitch {field-or-attribute-1}(,{field-or-attribute-2}, ...) ['{field-1-value-1}' {subtype-1-name} ... Fields ... ] ['{field-1-value-2}', '{field-2-value-1}' {subtype-2-name} ... Fields ... ] ['{field-1-value-3}', '{field-2-value-2}' {subtype-2-name} [uint 8 'existing-attribute-1', uint 16 'existing-attribute-2'] ... Fields ... ] A type switch element must contain a list of at least one argument expression. Only the last option can stay empty, which results in a default type. Each subtype declares a comma-separated list of concrete values. It must contain at most as many elements as arguments are declared for the type switch. The matching type is found during parsing by starting with the first argument. If it matches and there are no more values, the type is found, if more values are provided, they are compared to the other argument values. If no type is found, an exception is thrown. Inside each subtype can declare fields using a subset of the types (discriminator and typeSwitch can’t be used here) The third case in above code-snippet also passes a named attribute to the subtype. The name must be identical to any argument or named field parsed before the switchType. These arguments are then available for expressions or passing on in the subtypes. See also: - discriminatedType This type of field is mainly used when working on reverse-engineering a new protocol. It allows parsing any type of information, storing and using it and serializing it back. In general, it’s something similar to a simple field, just explicitly states, that we don’t yet quite know how to handle the content. As mentioned before, a validation field is not really a field, it’s a check that is added to the type parser. If the expression provided in the validation field fails, the parser aborts parsing and goes up the stack, till it finds the first optional field. If it finds one, it rewinds the parser to the position just before starting to parse the optional field, then skips the optional fields and continues with the next field. If there is no optional field up the stack, then parsing fails. Virtual fields have no impact on the input or output. They simply result in creating artificial get-methods in the generated model classes. [virtual {bit|byte} {name} '{value-expression}'] [virtual {simple-type} {size} {name} '{value-expression}'] [virtual {complex-type} {name} '{value-expression}'] Instead of being bound to a property, the return value of a virtual property is created by evaluating the value-expression. Sometimes it is necessary to pass along additional parameters. If a complex type requires parameters, these are declared in the header of that type. [discriminatedType S7Payload(uint 8 'messageType', S7Parameter 'parameter') [typeSwitch 'parameter.discriminatorValues[0]', 'messageType' ['0xF0' S7PayloadSetupCommunication] ['0x04','0x01' S7PayloadReadVarRequest] ['0x04','0x03' S7PayloadReadVarResponse [arrayField S7VarPayloadDataItem 'items' count 'CAST(parameter, S7ParameterReadVarResponse).numItems'] ] ['0x05','0x01' S7PayloadWriteVarRequest [arrayField S7VarPayloadDataItem 'items' count 'COUNT(CAST(parameter, S7ParameterWriteVarRequest).items)'] ] ['0x05','0x03' S7PayloadWriteVarResponse [arrayField S7VarPayloadStatusItem 'items' count 'CAST(parameter, S7ParameterWriteVarResponse).numItems'] ] ['0x00','0x07' S7PayloadUserData ] ] ] Therefore, wherever a complex type is referenced an additional list of parameters can be passed to the next type. Here comes an example of this in above snippet: [field S7Payload 'payload' ['messageType', 'parameter']] Arguments influence the way the parser or serializer operates. Wherever an parser-argument is used, this should also be valid in all subtypes the parser processes. A byteOrder argument can set or change the byte-order used by the parser. We currently support two variants: BIG_ENDIAN LITTLE_ENDIAN Each simple type has a default encoding, which is ok for a very high percentage of cases. Unsigned integers for example use 2s-complement notation, floating point values are encoded in IEEE 754 single- or double precision encoding. Strings are encoded as UTF-8 per default. However, in some cases an alternate encoding needs to be used. Especially when dealing with Strings, different encodings, such as ASCII, UTF-16 and many more, can be used. But also for numeric values, different encodings might be used. For example does KNX use a 16bit floating point encoding, which is not standard or in S7 drivers a special encoding was used to encode numeric values so they represent the number in hex format. An encoding attribute can be used to select a non-default encoding.","title":"The MSpec format","component":"plc4x","version":"pre-release","name":"mspec","url":"/plc4x/pre-release/developers/code-gen/protocol/mspec.html","titles":[{"text":"Simple Types","hash":"_simple_types","id":1},{"text":"Complex Types","hash":"_complex_types","id":2},{"text":"Field Types and their Syntax","hash":"_field_types_and_their_syntax","id":3},{"text":"array Field","hash":"_array_field","id":4},{"text":"assert Field","hash":"_assert_field","id":5},{"text":"checksum Field","hash":"_checksum_field","id":6},{"text":"const Field","hash":"_const_field","id":7},{"text":"discriminator Field","hash":"_discriminator_field","id":8},{"text":"implicit Field","hash":"_implicit_field","id":9},{"text":"manualArray Field","hash":"_manualarray_field","id":10},{"text":"manual Field","hash":"_manual_field","id":11},{"text":"optional Field","hash":"_optional_field","id":12},{"text":"padding Field","hash":"_padding_field","id":13},{"text":"peek Field","hash":"_peek_field","id":14},{"text":"reserved Field","hash":"_reserved_field","id":15},{"text":"simple Field","hash":"_simple_field","id":16},{"text":"typeSwitch Field","hash":"_typeswitch_field","id":17},{"text":"unknown Field","hash":"_unknown_field","id":18},{"text":"validation Field","hash":"_validation_field","id":19},{"text":"virtual Field","hash":"_virtual_field","id":20},{"text":"Parameters","hash":"_parameters","id":21},{"text":"Serializer and Parser-Arguments","hash":"_serializer_and_parser_arguments","id":22},{"text":"byteOrder","hash":"_byteorder","id":23},{"text":"encoding","hash":"_encoding","id":24}]},"104":{"id":104,"text":"ConnectConnectedBrowseReadWriteSubscribeUnsubscribeinitializingSend 'Add Or Update AMS Routes'Send 'ADS Read Device Info'Receive 'Add Or Update AMS Routes'Receive 'ADS Read Device Info'Init Read Online and Offline VersionReset Symbol and Data-Type DataSend 'Read Online-Version (Symbolic)'Send 'Read Offline-Version'Receive 'Read Online-Version (Symbolic)'Receive 'Read Offline-Version'Send 'Read Symbol- and Data-Type-Table sizes'Receive 'Read Symbol- and Data-Type-Table sizes'Send 'Read Data-Type-Table'Receive 'Read Data-Type-Table'Send 'Read Symbol-Table'Receive 'Read Symbol-Table'Subscribe to changes to the Online- and Offline VersionBrowse: Send 'Read Symbol- and Data-Type-Table sizes'Browse: Receive 'Read Symbol- and Data-Type-Table sizes'Browse: Send 'Read Data-Type-Table'Browse: Receive 'Read Data-Type-Table'Browse: Send 'Read Symbol-Table'Browse: Receive 'Read Symbol-Table'Return API Browse ResultRead: Send 'Multi Item Address Resolution' for unresolvedRead: Receive 'Multi Item Address Resolution' for unresolvedRead: Send 'Multi Item Read'Read: Receive 'Multi Item Read'Read: Return API Read ResultRead: Send 'Single Item Address Resolution'Read: Receive 'Single Item Address Resolution'Read: Send 'Single Item Read'Read: Receive 'Single Item Read'Write: Send 'Multi Item Address Resolution' for unresolvedWrite: Receive 'Multi Item Address Resolution' for unresolvedWrite: Send 'Multi Item Write'Write: Receive 'Multi Item Write'Write: Return API Write ResultWrite: Send 'Single Item Address Resolution'Write: Receive 'Single Item Address Resolution'Write: Send 'Single Item Write'Write: Receive 'Single Item Write'Subscribe: Send 'Multi Item Address Resolution' for unresolvedSubscribe: Receive 'Multi Item Address Resolution' for unresolvedSubscribe: Send 'Single Item Address Resolution'Subscribe: Receive 'Single Item Address Resolution'Subscribe: Send 'Single Item 1 Subscibe'Subscribe: Receive 'Single Item 1 Subscibe'Subscribe: Send 'Single Item 2 Subscibe'Subscribe: Receive 'Single Item 2 Subscibe'Subscribe: Send 'Single Item n Subscibe'Subscribe: Receive 'Single Item n Subscibe'Subscribe: Return API Write ResultUnsubscribe: Send 'Single Item 1 Unsubscribe'Unsubscribe: Receive 'Single Item 1 Unsubscribe'Unsubscribe: Send 'Single Item 2 Unsubscribe'Unsubscribe: Receive 'Single Item 2 Unsubscribe'Unsubscribe: Send 'Single Item n Unsubscribe'Unsubscribe: Receive 'Single Item n Unsubscribe'Unsubscribe: Return API Unsubscribe ResultAPI Browse RequestAPI Read RequestAPI Write RequestAPI Subscription RequestAPI Unsubscription RequestUsing Authentication?truefalseConfig: Monitor PLC changes?truefalseConfig: Load Symbol- and Data-Type-Tables?truefalseConfig: Monitor PLC changes?trueUpdate the online- or offline version (Depending on wich one changed)Is symbol- and data-type-table loaded?truefalseIs single item read request?falseAre all field addresses resolved?unresolvedresolvedtrueIs the field address resolved?falsetrueIs single item write request?falseAre all field addresses resolved?unresolvedresolvedtrueIs the field address resolved?falsetrueIs single item subscription request?falseAre all field addresses resolved?unresolvedresolvedtrueIs the field address resolved?falsetrue","title":"Beckhoff ADS Protocol","component":"plc4x","version":"pre-release","name":"protocol","url":"/plc4x/pre-release/developers/protocols/ads/protocol.html","titles":[]},"105":{"id":105,"text":"ConnectConnectedBrowseReadWriteSubscribeUnsubscribeDisconnectinitializingSend ListServices requestReceive ListServices responseSend EipConnectionRequest requestReceive EipConnectionRequest responseSend GetAllAttributes requestSend OpenConnectionManager requestReceive GetAllAttributes responseReceive OpenConnectionManager responsereadWithConnectionManagerreadWithoutConnectionManagerreadWithoutMessageRouterSend SendUnitData requestReceive SendUnitData responseSend CipRRData requestReceive CipRRData responseSend unconnected CipReadRequest request for each tagReceive unconnected CipReadRequest responsewriteWithConnectionManagerwriteWithoutConnectionManagerwriteWithoutMessageRouterSend unconnected CipWriteRequest request for each tagReceive unconnected CipWriteRequest responseSend ConnectionManagerClose requestSend Disconnect requestReceive ConnectionManagerClose responseReceive Disconnect responseAPI Browse RequestAPI Read RequestAPI Write RequestAPI Subscription RequestAPI Unsubscription RequestAPI Disconnect RequestIf successfull, extract 'CIP encapsulation support' setting\"Response is an EipConnectionResponse\"?truefalseExtract setting for 'useMessageRouter' and 'useConnectionManager'. If useConnectionManagertruefalseconnectionId != 0truefalseuseMessageRouteruseConnectionManagertruefalsefalseuseMessageRouteruseConnectionManagertruefalsefalse","title":"EIP Protocol","component":"plc4x","version":"pre-release","name":"protocol","url":"/plc4x/pre-release/developers/protocols/eip/protocol.html","titles":[]},"106":{"id":106,"text":"Be sure to verify your downloads by these procedures using these KEYS for any Apache release. This release was mainly a release containing many bugfixes. We literally halved the number of open issues. A second major topic would have been another API streamlining in preparation to aiming for the big 1.0.0 release. The API was extended by additional features, that now allow tools to automatically provide support for tool assist when connecting to devices. Now additional information such as: - Which transports does a given driver support? - Which is the default transport for a given driver? - Which configuration-options does a driver have? - What types are these configuration options? - What are the default-values these configuration options have? - Which of these configuration options are required? - The same set of information is also available for the transports a driver is using. API: Made several bits of information available via the API allowing tools to provide more content assist when dealing with PLC4X connections. S7: The S7 driver now supports reading of STRING and WSTRING data-types without providing a maximum length. Build: Worked on making PLC4X provide reproducible builds. Added \"Ping\" functionality to: ADS, EIP, KNX, Mock, Modbus and Simulated drivers. The OPC-UA Java driver now support certificate-based authentication and encryption. Java 8 is no longer officially supported and Java 11 is the new base-line. Renamed the PlcDriverManager method listDrivers to getProtocolCodes Renamed the PlcDriverMetadata method canDiscover to isDiscoverySupported Renamed the PlcConnectionMetadata methods canRead, canWrite canSubscribe and canBrowse to isReadSupported, isWriteSupported, isSubscribeSupported and isBrowseSupported The configuration syntax for configuring transport-related config options in the connection-string was updated to be now prefixed with the transport name the option belongs to. S7: Several bugs and issues regarding supporting various duration, date and time data-types. S7: Implemented the missing 64bit (L-) types. KNX: Fixed an issue with decoding 16 bit floating point numbers. NiFi-Integration: The NiFi integration module was greatly improved. Core: Fixed several leaks of open threads. The APIs have been streamlined in a preparation for a hopefully soon 1.0.0 release. Many drivers have been re-implemented with much more features. Integration modules have been improved. Implemented a PLC4X-Server and PLC4X-Driver that allows using the server as a proxy for communicating with PLCs. The Modbus driver is now also available in the variants: \"modbus-rtu\" and \"modbus-ascii\" (Both using Serial communication, which however can be tunneled through a \"tcp\" and \"udp\" transport) The KNX driver in Java now supports reading \"knxproj\" files exported from the new ETS version 6. The name of the Modbus TCP driver was changed from \"modbus\" to \"modbus-tcp\". Removed the Apache Edgent (incubating) integration and examples related, as Edgent is abandoned and there were CVEs reported, which will not be fixed. We have replaced the BitString types with BYTE, WORD, DWORD, and LWORD which generally match their unsigned integer counterparts. So we are no longer returning lists of boolean values for any of these types. A lot of the work in this version went into refactoring and cleaning up our code generation. The code generation itself is now a lot cleaner and simpler as well as the code generated for Java. We also added a number of new field-types to allow implementing more sophisticated protocols. PLC4C now should also support all of the constructs mspec has to offer. This is a bugfix release aiming at directly fixing CVE-2021-43083 as well as updating the dependency to Log4J 2.14.0 which was affected by CVE-2021-44228 Please note that CVE-2021-43083 only affects the PLC4C part of PLC4X. CVE-2021-43083 Apache PLC4X 0.9.0 Buffer overflow in PLC4C via crafted server response This is an ordinary PLC4X release, containing changes that accumulated over time. It doesn’t have an explicit focus on a particular topic. The OPC UA driver has been replaced with a native driver. Previously Eclipse Milo was being used. Permit customized package names for code generation Added an initial draft of a Discover and Browse API to PLC4J PLC4Go now supports many more drivers PLC4Go received a huge internal refactoring and cleanup Major cleanup of PLC4C S7 Driver now supports event and alarm handling on some S7 models PLC4X-200 OPC-UA Driver not connecting if params string is not provided PLC4X-201 OPC-UA PlcList underlying type not compatible with Eclipse Milo PLC4X-202 OPC-UA Driver cannot write Unsigned Types PLC4X-276 [S7] The most of the supported types don’t work correctly PLC4X-278 Double Reading Error PLC4X-279 nioEventLoopGroup thread proliferation PLC4X-280 ADS route request swapped positions of route name and address PLC4X-291 DefaultPlcSubscriptionField cannot be cast to class OpcuaField PLC4X-298 [S7] When writing REAL values the Write operation fails with an internal error PLC4X-299 Modbus - Kafka Connect Configuration PLC4X-312 CAN NOT READ STRING FROM S7 PLC PLC4X-314 CAN NOT WRITING MANY DATA TO S7 ONE TIME This is an ordinary PLC4X release, containing changes that accumulated over time. It doesn’t have an explicit focus on a particular topic. The KNXnet/IP Driver now supports writing of values. The Modbus driver now supports more common notations of Modbus addresses using a pure-numeric notation. The ADS, KNX, Modbus, S7 and simulated drivers have been updated to support the IEC 61131-3 data-types. We are now including PLC4Go as PLC4X implementation in the programming language Go(lang) Integration with the Milo OPC UA Server is now available. Kafka Connect workers have been updated source and sink connectors are now included. The syntax of the S7 addresses changed slightly allowing to provide a string length. Without this, a STRING datatype will read 254 characters, by adding the size in round brackets to the type name will use the specified number. Examples: Read one String which is max 10 chars long: %DB2:30:STRING(10) Read an array of 3 Strings where each is max 10 chars long: %DB2:30:STRING(10)[3] The PLCValue types have been refactored to align with the types defined in IEC 61131-3 (https://en.wikipedia.org/wiki/IEC_61131-3) directly using the older Java types (PlcBoolean) is no longer possible. A lot of testing was done regarding the IEC 61131-3 data-types. This resulted in numerous bugfixes in many protocols. PLC4X-132 [S7] Communication to S7 PLC dies in some situations PLC4X-206 When writing short values exceptions are thrown while preparing the write request. PLC4X-207 No registered handler found for message TPKTPacket[], using default decode method - Communication with S7 and Modbus device hangs PLC4X-209 [S7] When writing INT and DINT values the Write operation fails with an internal error PLC4X-210 [KNX] When running a KNX Tunneling Subscription for a longer time there are packets that kill the connection PLC4X-211 PlcValues seem to always return \"true\" on the isXYZ\" checks. PLC4X-212 When writing multiple values in one request the item status is not correctly set PLC4X-213 [Modbus] The Modbus driver doesn’t handle error responses gracefully PLC4X-214 [Modbus] Holding register addresses have an offset of 1 (Not reading the correct address) PLC4X-215 Drivers using the BaseOptimizer (SingleFieldOptimizer) don’t handle error responses gracefully PLC4X-218 [Scraper] After stopping the scraper still the statistics are logged and the application doesn’t terminate PLC4X-239 Read DTL (Date and Time) PLC4X-240 Protocol error in reading string PLC4X-246 S7 driver hangs on read PLC4X-245 [Modbus] Apache NiFi processor throws java.io.IOException after a while PLC4X-255 Kafka Connector Source Task doesn’t block within poll() resulting in high CPU usage. PLC4X-261 Pooled connection manager returns a connection that isn’t connected in some situations. PLC4X-272 When splitting up large requests, too big sub-requests are generated (S7) PLC4X-256 ReadBuffer truncate last byte of even small payloads PLC4X-262 Error in reading Array PLC4X-270 Ads driver does not accept double-digit array indexes This version is the first after a major refactoring of the driver core. All previous driver versions are now considered deprecated and have been replaced by versions using the new driver structure and generated driver codebase. Drivers now support structured types using PlcValues The EIP (EtherNet/IP) driver no longer requires an external library and is implemented fully in the PLC4X project The Modbus driver no longer requires an external library and is implemented fully in the PLC4X project The new S7 Driver supports writing multiple entries in one request (The API allowed this from the beginning now not every item is wrapped in a single request. It should bring significant performance gains when writing multiple vlaues) S7 Driver now supports String datatypes. OSGi : Implementation of Drivers/Transports as OSGi services to be able to use them in an OSGi container. New Firmata protocol driver Due to the refactoring of the driver core there might be issues running drivers built against older core versions. This version doesn’t provide a Beckhoff AMS/ADS driver as this driver is still being ported to the new mspec format. All drivers connection strings now follow the same pattern: {protocol-code:(transport-code:)?//{transport-config}(?{params})? Please check the drivers documentation on our website: https://plc4x.apache.org/users/protocols/s7.html The karaf-feature modules are removed as the drivers now all provide both a feature.xml as well as a kar bundled archive PLC4X-174 UDP Transport does not accept ports containing 0 PLC4X-134 S7 is terminating the connection during handshake PLC4X-192 Support for conversion of complex connection string parameters This is the last release of PLC4X with the \"handwritten\" drivers. This Minor release will thus receive updates and fixes until most users have switched to 0.7 and above (with generated drivers). If you are using the S7 Driver you should update to this Version as the critical (memory leak) bug PLC4X-163 is fixed. PLC4X-168 A shorter S7 Field Syntax is Introduced. This release contains no further features and mostly stabilization. Moved the C++, C# and Python drivers into the sandbox Fixed Promise Chain for InternalPlcWriteRequest PLC4X-45 Add float support to Modbus Protocol PLC4X-164 Fix wrong NOT FOUND exception in OPC UA Driver PLC4X-166 Fixed Download Page PLC4X-163 Fixed Netty ByteBuf Leaks for S7 Driver PLC4X-158 Added Warning if no Pooled Driver is used for Scraper This is the first release containing our new generated drivers (AB-ETH) Implemented a new Apache Kafka Connect integration module Implemented a new Apache NiFi integration module Implemented a new Logstash integration module Implemented a driver for the AB-ETH protocol Implemented Apache Karaf features for S7 OSGI drivers PLC4X-121 Develop Code Generation to allow Generated Drivers in multiple Languages Sandbox (Beta-Features) - Implemented a new BACnet/IP passive mode driver - Implemented a new Serial DF1 driver PLC4X-104 S7 Driver Datatype TIME_OF_DAY causes ArrayOutOfBoundException PLC4X-134 S7 is terminating the connection during handshake PLC4X-139 PLC4X leaks sockets in case of connection problems PLC4X-141 String with real length of greater 127 throw an exception PLC4X-144 When requesting invalid addresses, the DefaultS7MessageProcessor produces errors This is the first release of Apache PLC4X as top-level project. The PlcConnection now supports a ping method to allow checking if an existing connection is still alive. Support of the OPC-UA protocol with the opc-ua-driver. Other Languages Support: — Added first versions of a C# .Net PLC4X API (plc4net) — Added first versions of a Python PLC4X API (plc4py) Added an Interop server which allows to relay requests from other languages to a Java Server ElasticSearch example was updated to use ElasticSearch 7.0.1, this might cause problems with older Kibana versions. No new features No incompatible changes. The S7 driver didn’t correctly handle \"fill-bytes\" in multi-item read-responses and multi-item write-requests Fixed NPE when reading odd-length array of one-byte base types Renamed flags \"F\" to Siemens Standard \"M\" (Marker) Fixed a bug in the DefaultS7MessageProcessor which didn’t correctly merge together split up items Object PLC Mapping (OPM) now has a Alias Registry to allow variable substitution at runtime and write support New module plc-scraper for applications that have to scrape a lot of sps fields with high frequency New integration apache-karaf to enable plc4j in a karaf runtime environment The 'plc4j-core' module has been merged into 'plc4j-api'. So there is no 'plc4j-core' module anymore. Just remove that dependency. The driver artifact names have changed so if you were using a plc4j-protocol-{name} you now need to change this to plc4j-driver-{name} Fixing dependency to the wrap url-handler When receiving responses with more than 512 byte, the IsoOnTcp protocol doesn’t work When the last item in a request is a DINT, the DefaultS7MessageProcessor dies Write operations seem to fail Fixed a Bug where S7 was not able to read arrays. Changed API: instead of passing request object to read({read-request}), write({write-request}) or subscribe({subscribe-request}) methods now the execute() method is called on the request itself New Connection Pool component New OPM (Object PLC Mapping) component (JPA for PLCs) Bug fixes","title":"Download","component":"plc4x","version":"latest","name":"download","url":"/plc4x/latest/users/download.html","titles":[{"text":"Current Releases","hash":"_current_releases","id":1},{"text":"0.12.0 Official source release [ SHA512 ] [ ASC ]","hash":"_0_12_0_official_source_release_sha512_asc","id":2},{"text":"New Features","hash":"_new_features","id":3},{"text":"Incompatible changes","hash":"_incompatible_changes","id":4},{"text":"Bug Fixes","hash":"_bug_fixes","id":5},{"text":"Previous Releases","hash":"_previous_releases","id":6},{"text":"0.11.0 Official source release [ SHA512 ] [ ASC ]","hash":"_0_11_0_official_source_release_sha512_asc","id":7},{"text":"New Features","hash":"_new_features_2","id":8},{"text":"Bug Fixes","hash":"_bug_fixes_2","id":9},{"text":"0.10.0 Official source release [ SHA512 ] [ ASC ]","hash":"_0_10_0_official_source_release_sha512_asc","id":10},{"text":"0.9.1 Official source release [ SHA512 ] [ ASC ]","hash":"_0_9_1_official_source_release_sha512_asc","id":11},{"text":"Bug Fixes","hash":"_bug_fixes_3","id":12},{"text":"0.9.0 Official source release [ SHA512 ] [ ASC ]","hash":"release-0_9_0","id":13},{"text":"New Features","hash":"_new_features_3","id":14},{"text":"Incompatible changes","hash":"_incompatible_changes_2","id":15},{"text":"Bug Fixes","hash":"_bug_fixes_4","id":16},{"text":"0.8.0 Official source release [ SHA512 ] [ ASC ]","hash":"release-0_8_0","id":17},{"text":"New Features","hash":"_new_features_4","id":18},{"text":"Incompatible changes","hash":"_incompatible_changes_3","id":19},{"text":"Bug Fixes","hash":"_bug_fixes_5","id":20},{"text":"0.7.0 Official source release [ SHA512 ] [ ASC ]","hash":"release-0_7_0","id":21},{"text":"New Features","hash":"_new_features_5","id":22},{"text":"Incompatible changes","hash":"_incompatible_changes_4","id":23},{"text":"Bug Fixes","hash":"_bug_fixes_6","id":24},{"text":"0.6.0 Official source release [ SHA512 ] [ ASC ]","hash":"release-0_6_0","id":25},{"text":"New Features","hash":"_new_features_6","id":26},{"text":"Incompatible changes","hash":"_incompatible_changes_5","id":27},{"text":"Bug Fixes","hash":"_bug_fixes_7","id":28},{"text":"0.5.0 Official source release [ SHA512 ] [ ASC ]","hash":"release-0_5_0","id":29},{"text":"New Features","hash":"_new_features_7","id":30},{"text":"Incompatible changes","hash":"_incompatible_changes_6","id":31},{"text":"Bug Fixes","hash":"_bug_fixes_8","id":32},{"text":"0.4.0 Official source release [ SHA512 ] [ ASC ]","hash":"release-0_4_0","id":33},{"text":"New Features","hash":"_new_features_8","id":34},{"text":"Incompatible changes","hash":"_incompatible_changes_7","id":35},{"text":"Bug Fixes","hash":"_bug_fixes_9","id":36},{"text":"Incubating Releases","hash":"_incubating_releases","id":37},{"text":"0.3.1 (incubating) Official source release [ SHA512 ] [ ASC ]","hash":"_0_3_1_incubating_official_source_release_sha512_asc","id":38},{"text":"New Features","hash":"_new_features_9","id":39},{"text":"Incompatible changes","hash":"_incompatible_changes_8","id":40},{"text":"Bug Fixes","hash":"_bug_fixes_10","id":41},{"text":"0.3.0 (incubating) Official source release [ SHA512 ] [ ASC ]","hash":"release-0_3_0","id":42},{"text":"New Features","hash":"_new_features_10","id":43},{"text":"Incompatible changes","hash":"_incompatible_changes_9","id":44},{"text":"Bug Fixes","hash":"_bug_fixes_11","id":45},{"text":"0.2.0 (incubating) Official source release [ SHA512 ] [ ASC ]","hash":"release-0_2_0","id":46},{"text":"Changes:","hash":"_changes","id":47},{"text":"0.1.0 (incubating) Official source release [ SHA512 ] [ ASC ]","hash":"release-0_1_0","id":48}]},"107":{"id":107,"text":"This part of the PLC4X website is dedicated to people wanting to use Apache PLC4X. It will provide information on the features and how to use them as well as documentation on how to use the different integration modules. Apache PLC4X allows you to communicate directly with your industrial Hardware, without having to retrofit it. This is possible, as PLC4X implements the protocols for the most common industrial communication protocols and uses these to communicate with the various types of devices. The one thing that separates PLC4X from most other, mostly commercial drivers, is that we don’t try to implement each protocol that it would be a certifiable protocol-stack, but concentrate on making a core set of operations available the identical way over all drivers. This allows users to develop software mostly independent of the actual type of hardware used. Apache PLC4X is an effort to create a set of libraries for communicating with industrial grade programmable logic controllers (PLCs) in a uniform way. We are planning on shipping libraries for usage in: Java Go C (not ready for usage) Python (not ready for usage) C# (.Net) (not ready for usage - abandoned) PLC4X also integrates with other Apache projects, such as: Apache Calcite Apache Camel Apache Kafka-Connect Apache Karaf Apache NiFi And brings stand-alone (Java) utils like: OPC-UA Server: Enables you to communicate with legacy devices using PLC4X with OPC-UA. PLC4X Server: Enables you to communicate with a central PLC4X Server which then communicates with devices via PLC4X. It also provides (Java) tools for usage inside an application: Connection Cache (Connection Cache for PLC connections) Object PLC Mapping (OPM) (Object PLC Mapping - Like JPA for PLC data) Scraper (Util for automating fetching PLC data using a variety of triggers) Testing-Utils (Want to build/test an application without having a PLC? … this is the tool for you)","title":"Users","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/users/index.html","titles":[{"text":"About Apache PLC4X","hash":"_about_apache_plc4x","id":1}]},"108":{"id":108,"text":"","title":"Preparing Issues & Bug Reports","component":"plc4x","version":"latest","name":"preparing-issues","url":"/plc4x/latest/users/preparing-issues.html","titles":[]},"109":{"id":109,"text":"","title":"Home","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/index.html","titles":[]},"110":{"id":110,"text":"The companies in the following list are actively using Apache PLC4X. Name Market Description codecentric AG IT Consulting We develop software that solves real problems - and PLC4X solves the problem of IoT connectivity in a highly performant and open source way ConnectorIO sp. z o.o. IoT / Software / Cloud We developed an open source gateway runtime and compatible cloud service to manage installations and collected information. We utilize PLC4X to gain access to data provided by industrial hardware. IndustryFusion IIoT / Industry 4.0 In the End-2-End Industry 4.0 solution IndustryFusion we use PLC4X for brownfield-connectivity, i.e. the connectivity to existing machines on the shop floor. ISW University of Stuttgart IIoT / Industry 4.0 / Research We use PLC4X for our research projects because of its great potential for retrofitting scenarios, the simplicity of the API, an active community for broad platform support and the open source flexibility. Lebbing automation & drives GmbH https://in2lutions.com/in2lutions/[In2Lutions] Automation / Drives / Industry 4.0 We used PLC4X to developed a solution to synchronize data between PLCs and customers systems. Our Solution is used for new products as well as for industry 4.0 upgrades to older machines. PIETRORIMOLDI&C s.r.l. IIoT / Analytics We started a project which deals with long term data analysis; the data are gathered from machines controlled in real time by PLC. Failure prediction and behavioral working condition monitoring are the main goals. PLC4x library is a fundamental part of the process. pragmatic industries GmbH (I)IoT / Industry 4.0 PLC4X is an important part of our platform Digital Cockpit which we develop in-house. pragmatic minds GmbH Big Data / Analytics We use PLC4X to collect data from different types of PLCs as preliminary step for data analytics and visualization. Record Evolution GmbH Iot / Industry 4.0 / Data Science We developed a platform for IoT development and Data Science. We are using PLC4X to enable IoT devices in our platform to extract data from PLCs of different vendors, using different protocols. The people working on Apache PLC4X, and the companies behind them have put an enormous amount of effort into creating this great tool. The problem some of them are facing, is that they are usually not allowed to mention which companies are using PLC4X. However being able to name references is most vital nowdays in gaining trust. So if you work for a company which is using Apache PLC4X, one way you can help the project is by admitting you are using it. This might be only very little active contribution on your side, but for the project this is of extremely high value. On this page we are maintaining a list of companies openly communicating that they are using Apache PLC4X. If your company is using Apache PLC4X and you would like to give back to the community, please create a Pull-Request on github or post an email to dev@plc4x.apache.org and give us the permission to list your company.","title":"Companies using Apache PLC4X","component":"plc4x","version":"latest","name":"adopters","url":"/plc4x/latest/users/adopters.html","titles":[]},"111":{"id":111,"text":"As every Apache project, so is Apache PLC4X generally available and usable by anyone free of charge. Also does the Apache PLC4X Community offer free support on the official project Mailinglist. This support is however done voluntatily by the community, so there are no service-level-agreements, guaranteed reaction times or guarantee that an issue will be addressed or solved. If you or your business has higher demands on guaranteed availability and execution of support requests, the following individuals and companies have commercial support offerings. The information provided here was provided by the entities named, and is not verified (except the Involvement Level), updated or endorsed by the Apache Software Foundation or the Apache PLC4X project. Name Description Contact Person(s) Contact Email(s) Contact Phone(s) Involvement Level ConnectorIO sp. z o.o. workshops, individual software development Łukasz Dywicki lukasz@connectorio.com PMC Member Timecho Europe GmbH consulting, workshops, individual software development, protocol/driver development, data-storage solutions Christofer Dutz christofer.dutz@timecho.com PMC Member Anyone who provides Apache PLC4X related services can be added to this list (e.g. training, consulting, custom software development, support, installation or related services). Please create a Pull-Request on GitHub as described here. The resource requiring editing can be found here We will then check if the entry fulfills the requirements and accept the changes as soon as all of these have been addressed.","title":"Commercial support offerings for Apache PLC4X","component":"plc4x","version":"latest","name":"commercial-support","url":"/plc4x/latest/users/commercial-support.html","titles":[{"text":"Who can be added to this list?","hash":"_who_can_be_added_to_this_list","id":1},{"text":"How can I get added to this list?","hash":"_how_can_i_get_added_to_this_list","id":2}]},"112":{"id":112,"text":"Apache Kafka, KSQL and Apache PLC4X for IIoT Data Integration and Processing Edge Computing und Industrial IoT mit Apache Edgent und Apache PLC4X Advanced: Exposing a PLC as JSON Web Services (using PLC4X) High Security Iiot Communication With Apache Plc4X, Apache Asia Con, August 2021 Apache Plc4X For Can Bus And Canopen, Apache Asia Con, August 2021 Eclipse IoT Meetup, December 2020 Librecon - Open Industry 4.0, 2020 Analyzing IIoT data with PLC4X and StreamPipes Apache PLC4X or: How I Learned to Stop Worrying and Love the Industrial IoT \"Hands on\" - Reading out Siemens S7 with Apache PLC4X \"Hands On\": Siemens S7 auslesen mit PLC4X (GERMAN) Mittelstand meets Open Source - Einführung in das Industrial IoT (IIoT) (GERMAN) Apache Kafka, KSQL and Apache PLC4X for IIoT Data Integration and Processing Episode IV - A New Hope: Industry 4.0 done our way From an idea to an Apache TLP Wie wir mit Apache PLC4X die Silos in der Automatisierungsindustrie aufbechen Apache Kafka, KSQL and Apache PLC4X for IIoT Data Integration and Processing Episode iv a new hope - Industry 4.0 done our way From the Chip to the Cloud with Apache Software Digitizing your factory the open source way From an idea to an Apache TLP Building scada systems with apache software","title":"Blogs, Videos and Slides on Apache PLC4X","component":"plc4x","version":"latest","name":"blogs-videos-and-slides","url":"/plc4x/latest/users/blogs-videos-and-slides.html","titles":[{"text":"Blog posts","hash":"_blog_posts","id":1},{"text":"Videos & Webinars","hash":"_videos_webinars","id":2},{"text":"Slides","hash":"_slides","id":3}]},"113":{"id":113,"text":"Since the introduction of programmable logic controllers in the production industry in the early 80s, they have been the core of almost every piece of production machinery. While first PLCs were usually stand-alone controllers. These were soon extended by the ability to talk to other controllers of the same type via proprietary protocols. After that came first computer based control systems, which were able to monitor and parametrize these controllers. Usually however in order to do this, a company needed to use the control system that was provided by the PLC vendor. This has tied companies to stick to the company they decided to use the PLCs of. Making it almost impossible to switch to another vendor. In the last 20 years in the IT industry, the concept of open source has come up and has more and more proven to be the engine of great innovation. Most of the biggest changes in how we create modern IT systems is a result of this. Unfortunately the production industry has been missing a lot of this innovation. Only a small number of companies today use open source software in their production systems. The benefit of using open source could be huge: Increased Flexibility Increased Stability Increased Extendability Improved Security Great Cost reduction If a company had decided to use PLCs and control systems of a certain vendor, it is almost impossible to change this decision. This reduces the options available when adding new machinery or replacing existing ones. Technologically speaking, also the company can only use the options and solution it’s vendor is able to provide. Current control systems are usually based on the concept of \"backup systems\". If the main control system fails, all activity is switched to the standby system. When using modern public- or private cloud systems, there is no need for a backup system, because the cluster is designed in a way that it can live with the failure of most of its hosts before loosing the ability to function. From the perspective of designing and scaling the IT infrastructure: If a control system was designed to handle the current size of plant, for cost reasons the IT infrastructure isn’t designed to handle much more than that. Now if the plant should be extended in the future, extending it’s control-systems IT infrastructure would probably result in replacing this with a bigger system. By utilizing modern virtualization frameworks, extending the existing cloud solution, would only require adding more compute resources, by adding more systems to the cluster and it should be possible to extend the existing system without problems. If the company decided to utilize a public cloud provider, it makes things even simpler, as it would only require booking more resources. This is probably one of the most concerning aspects of modern production control systems. Right now, in order to run these systems, a lot of the most popular solutions require companies to run not up to date systems. If applying all updates, the company is risking either loss of commercial support or even loss of functionality. Therefore an attacker can probably be certain to be able to exploit certain vulnerabilities just by knowing the type and version of the used control system. Well the probably biggest and most obvious cost reduction factor is definitely, that if the software you are using is free, you will not have to pay for it. Additionally, the ability to get the computing power of one insanely expensive system by using a cluster of cheap commodity systems, helps saving a lot of money. Being freed of the requirement to stick to the products of one vendor alone and to be able to choose the technology and the vendor of used systems freely will definitely also reduce costs. In general there are two options for communicating with industrial PLCs: Using a protocol converter Hardware protocol converter Software protocol converter Using a driver for direct communication Commercial drivers Open source drivers Well protocol converters are all software in the end, but while a \"hardware converter\" is usually a closed hardware box that runs some sort of software, a \"software converter\" is usually an installable service or program that runs on a host system. In both cases the configuration of the protocol converter tells the system which information to get and how to make that available in another protocol. It usually doesn’t allow full access to all information available in a PLC, but only the ones the adapter is configured to make available. Here, there is a big trade-off. If a system should be used in the most versatile way, also the most information has to be made available. Even if most of this information is never needed. Limiting the system only to the needed information, greatly reduces the systems versatility. Another disadvantage is a slightly increased latency when making information available. This is due to the fact that the protocol converter has to send a request to the PLC to get information and as soon as this information is returned to the converter this new information can only be passed on in the other protocol in the next request. The usage of a protocol converter is probably the ideal solution, if all a company wants to do, is integrate PLCs communicating in one protocol into an existing system using a different protocol. In case of integrating open source software, this usually is a protocol converter that converts into one of the well established open source protocols. The most widely used protocol here currently will probably be MQTT. The option that provides the most possibilities is directly communicating with the PLCs. Here the system can always directly access only the exact information required and can do this without any detours that would add latency. There is a wide variety of drivers available, that generally would allow writing software that directly accesses PLCs. Unfortunately most of these are commercial drivers. While there is a number of open source drivers, most of these have licenses that render them useless for commercial applications. Either they are licensed with restrictive licenses such as GPL or they are dual licensed with a restriction to non-commercial usage for the open source version and the requirement to purchase a commercial license for commercial use cases. The APIs of all drivers usually differs quite greatly from each one another. This makes it extremely difficult to create solutions that work with a variety of PLCs and protocols. This is where Apache PLC4X comes in. It is the goal of PLC4X to provide a suite of drivers for communicating with industrial PLCs using a variety of protocols, but with a shared API and a license model, that is suitable for creating commercial applications. Hereby PLC4X forms the missing link between the automation and the open source world. Making it possible to use the entire stack of open source technologies to create a new generation of open industrial control systems.","title":"Industry 4.0 with Apache","component":"plc4x","version":"latest","name":"industry40","url":"/plc4x/latest/users/industry40.html","titles":[{"text":"Benefits of using open source","hash":"_benefits_of_using_open_source","id":1},{"text":"Increased Flexibility","hash":"_increased_flexibility","id":2},{"text":"Increased Stability","hash":"_increased_stability","id":3},{"text":"Increased Extendability","hash":"_increased_extendability","id":4},{"text":"Improved Security","hash":"_improved_security","id":5},{"text":"Cost Reduction","hash":"_cost_reduction","id":6},{"text":"Options to communicating with PLCs","hash":"_options_to_communicating_with_plcs","id":7}]},"114":{"id":114,"text":"Please note that binary patches are not produced for individual vulnerabilities. To obtain the binary fix for a particular vulnerability you should upgrade to an Apache PLC4X version where that vulnerability has been fixed. For more information about reporting vulnerabilities, see the Apache Security Team page. No vulnerabilities have been reported.","title":"Security Vulnerabilities","component":"plc4x","version":"latest","name":"security","url":"/plc4x/latest/users/security.html","titles":[{"text":"Known Vulnerabilities","hash":"_known_vulnerabilities","id":1}]},"115":{"id":115,"text":"On this page we’ll give a short introduction to the most important concepts that will help you understand Apache PLC4X better. The most important concepts from a user perspective are in general: Connections — protocols — transports — configuration Addresses The two parts where we have built abstractions from the real world in PLC4X API are the connection strings and the tag address strings. Both are pretty dependent on the type of device you are planning to communicate with. However, these can both be easily configured in an external configuration or passed in as arguments. If you are familiar with JDBC or ODBC, you will easily understand the concepts in PLC4X, as these were a great inspiration for the creation of Apache PLC4X. In general a connection is a physical or logical connection between two endpoints. This connection uses a technical transport mechanism and passes data following a given protocol logic. Therefore, we have modeled both of these aspects separately. Let’s start with the Transports: The following transports are currently available, but they will probably be more soon: CAN PCAP replay Raw Socket Serial Port (RS232 and RS485) TCP UDP Test While TCP, UDP are based on the normal TCP and UDP stack of the operating system, Raw sockets directly provide low-level access to Ethernet Frames. This allows them to not only be used in what we call passive-mode drivers for simply reading all network traffic, it also allows communicating with protocols that are Ethernet based, but don’t use TCP or UDP. This is usually the case with Fieldbus protocols, such as PROFINET or EtherCAT, which usually require lower latency than TCP and UDP can provide. The Serial Port transport simply reads and writes data to a given serial port. The probably most special forms of transport are currently the PCAP replay and the Test transport. The PCAP replay transport allows playing back network traffic packets that were recorded using tools like WireShark. This is really helpful for writing new drivers (especially passive mode drivers) without having to be connected to the real device. From a driver point of view there is actually no difference between a Raw Socket and a PCAP replay transport. The Test transport is generally built for being used inside the PLC4X test framework as it allows fine-grained access to the input and output of the drivers. With the test transport we can explicitly control which data is passed into and retrieved from drivers and to validate this in unit- and integration-tests. A fully qualified PLC4X connection string would look like this: {driver code}:{transport code}://{transport config}?{options} The driver code generally selects the protocol we want to use, the transport code now selects the type of transport that should be used. Depending on the selected transport mechanism the transport config tells the transport which resource it should use. For example with a TCP and UDP transport, this will be the IP address or hostname optionally followed by the Port. For a Serial transport this will be the name of the serial interface. Raw Sockets will require the device name or a `MAC address`and so on. For a full description of all transports and their options, please consult the Transport Documentation here. The last segment - options - can be used to fine tune some protocol or transport options to non-default values. For details on these options, please have a look at the Protocol Documentation here and the Transport Documentation here. The general structure of this part is always the same: ?{option-1-name}={option-1-value}&{option-2-name}={option-2-value}&{option-3-name}={option-3-value} So in general the options are stared with a ? and then followed by name-value pairs, which are separated by ampersand characters &. A driver for a given protocol however usually has a default transport, so sometimes it is possible to omit the transport code. Also do most drivers define default values for the various configuration options, so in general you should only require to use configuration options, if you are using non-default settings. The shortest version of a fully qualified connection string would look something like this: {driver code}://{transport config} For more information on the default settings for a given protocol or transport, please check the corresponding documentation. Addresses for individual tags on a PLC are extremely dependent on the used protocol. As we usually decided to stick to the address formats that are used in those particular environments, please check the Protocol Documentation on details about these address formats here.","title":"General Concepts","component":"plc4x","version":"latest","name":"general-concepts","url":"/plc4x/latest/users/getting-started/general-concepts.html","titles":[{"text":"Connections","hash":"_connections","id":1},{"text":"Connection Strings","hash":"_connection_strings","id":2},{"text":"Individual Resource Addresses (Tags)","hash":"_individual_resource_addresses_tags","id":3}]},"116":{"id":116,"text":"Depending on the programming language, the usage will differ, therefore please go to the Getting Started version of the language of choice. For guides on how to write PLC4X applications with Go, please go to the Go Getting Started For guides on how to write PLC4X applications with Java, please go to the Java Getting Started","title":"Getting Started","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/users/getting-started/index.html","titles":[{"text":"Go/Golang","hash":"_gogolang","id":1},{"text":"Java","hash":"_java","id":2}]},"117":{"id":117,"text":"","title":"Getting Started with C","component":"plc4x","version":"latest","name":"plc4c","url":"/plc4x/latest/users/getting-started/plc4c.html","titles":[]},"118":{"id":118,"text":"","title":"Getting Started with C#","component":"plc4x","version":"latest","name":"plc4cs","url":"/plc4x/latest/users/getting-started/plc4cs.html","titles":[]},"119":{"id":119,"text":"Just in case you want to get started with Go. In this part we’ll setup a new Go project. If you are familiar with this, you can go to the next chapter. Be sure to have installed Go on your system by downloading and installing it from https://golang.org/. Now that that’s done, create a new directory and console execute the following command: go mod init main This will effectively only create a go.mod file, which is sort of like Go’s counterpart to a Maven pom.xml. This should look like this: module main go 1.16 Now we need to create a app.go file which will be our main program. Create a file app.go with the following content: package main func main() { } By executing the command: go run app.go You will execute your first Go progran … however the output is rather underwhelming ;-) You’re now ready to continue. In order to write a valid PLC4X Go application, all you need, is to add a dependency to the plc4go module. Now all you need to do, is execute the following command: go get github.com/apache/plc4x/plc4go This will checkout the latest version of the Apache PLC4X PLC4Go module. As soon as we have released a PLC4Go version by adding the name of the release-tag will use an explicit version. This will be checked out in our home directory in ⁓/go/pkg/mod/github.com/apache/plc4/plc4go@v0.0.0-{some-commit-hash} In contrast to the PLC4J version this already contains all supported drivers. Perhaps we’ll change this in the future, but for now all comes in one bundle. Now you’re generally set to start writing your first PLC4Go program. In contrast to PLC4J, which uses the service lookup to find the transports and the drivers automatically, in PLC4Go they need to be manually registered at the driver manager. First we need to initialize the PlcDriverManager by registering the transports and drivers with it. // Create a new instance of the PlcDriverManager driverManager := plc4go.NewPlcDriverManager() // Register the Transports transports.RegisterTcpTransport(driverManager) transports.RegisterUdpTransport(driverManager) // Register the Drivers drivers.RegisterKnxDriver(driverManager) drivers.RegisterModbusDriver(driverManager) Now that the PlcDriverManager is configured, we can use it to get a new connection. // Get a connection to a remote PLC connectionRequestChanel := driverManager.GetConnection(\"modbus-tcp://192.168.23.30?unit-identifier=1\") // Wait for the driver to connect (or not) connectionResult := <-connectionRequestChanel // Check if something went wrong if connectionResult.Err != nil { fmt.Printf(\"Error connecting to PLC: %s\", connectionResult.Err.Error()) return } // If all was ok, get the connection instance connection := connectionResult.Connection // Make sure the connection is closed at the end defer connection.Close() In PLC4Go we make heavy use of Go channels, which are similar to Futures or Promisses. And please pay attention to the defer command. This adds a call to a stack of things that need to be called as soon as the program terminates. However in contrast to Java’s try-finally blocks, this isn’t executed at the end of the code-block, but really when the program terminates. So when working with many connections or when using connections in loops (if for example you are polling), then this will keep on piling up active connections, till either you are no longer able to connect cause your PLC denies connections or till you run out of memory. So if you only need the connection in a code block, be sure to explicitly close it after usage. After this code block we should be in possession of a connection instance. If we simply want to check the connectivity, we can use the Ping function on the connection object. Depending on the protocol used, it will exeute a command which only will complete if the connection is available. // Try to ping the remote device pingResultChannel := connection.Ping() // Wait for the Ping operation to finsh pingResult := <-pingResultChannel if pingResult.Err != nil { fmt.Printf(\"Couldn't ping device: %s\", pingResult.Err.Error()) return } Most probably you will want to read something from a PLC. This is done by a PlcReadRequest. First off all, it’s probably a good idea to check if this connection supports reading: if !connection.GetMetadata().CanRead() { fmt.Printf(\"This connection doesn't support read operations\") return } In order to create and run such a PlcReadRequest, please add the following code: Up to version 0.10.0 // Prepare a read-request readRequest, err := connection.ReadRequestBuilder(). AddQuery(\"field1\", \"holding-register:1:REAL\"). AddQuery(\"field2\", \"holding-register:3:REAL\"). Build() if err != nil { t.Errorf(\"error preparing read-request: %s\", connectionResult.Err.Error()) t.Fail() return } SNAPSHOT version // Prepare a read-request readRequest, err := connection.ReadRequestBuilder(). AddTagAddress(\"tag1\", \"holding-register:1:REAL\"). AddTagAddress(\"tag2\", \"holding-register:3:REAL\"). Build() if err != nil { t.Errorf(\"error preparing read-request: %s\", connectionResult.Err.Error()) t.Fail() return } If you have any errors in the addresses or whatever, you will get an err instead of a readRequest. For now, let’s assume you got all addresses correctly. // Execute a read-request readResponseChanel := readRequest.Execute() // Wait for the response to finish readRequestResult := <-readResponseChanel if readRequestResult.Err != nil { t.Errorf(\"error executing read-request: %s\", readRequestResult.Err.Error()) return } Please note that in this case we want to return a triple: PlcReadRequest, PlcReadResponse, err. As this is not supported in Go, the PlcReadRequestResult will contain all of these 3 elements. This will probably change soon. The API is still a bit in flux. Now in order to do something with the response: // Do something with the response value1 := readRequestResult.Response.GetValue(\"field1\") value2 := readRequestResult.Response.GetValue(\"field2\") fmt.Printf(\"\\n\\nResult field1: %f\\n\", value1.GetFloat32()) fmt.Printf(\"\\n\\nResult field2: %f\\n\", value2.GetFloat32()) The GetValue function returns a PlcValue instance, this had accessors for the most general Go types. Not implemented yet As the Modbus protocol, which we used in the above examples, doesn’t support subscriptions, we are uing the KNX protocol for a demonstration on the subscription API. Subscribing to data can be considered similar to reading data, at least the subscription itself if very similar to reading of data. We first have to check if the connection supports this: if !connection.GetMetadata().CanSubscribe() { fmt.Printf(\"This connection doesn't support subscriptions operations\") return } Now we’ll create the subscription request. The main difference is that while reading there is only one form how you could read, with subscriptions there are different forms of subscriptions: Change of state (Event is sent as soon as a value changes) Cyclic (The Event is sent in regular cyclic intervals) Event (The Event is usually explicitly sent form the PLC as a signal) Therefore instead of using a normal AddItem, there are tree different functions as you can see in the following examples. Up to version 0.10.0 // Prepare a subscription-request subscriptionRequest, err := connection.SubscriptionRequestBuilder(). AddChangeOfStateItem(\"heating-actual-temperature\", \"*/*/10:DPT_Value_Temp\"). AddChangeOfStateItem(\"heating-target-temperature\", \"*/*/11:DPT_Value_Temp\"). AddCyclicItem(\"heating-valve-open\", \"*/*/12:DPT_OpenClose\", 500 * time.Millisecond). AddItemHandler(knxEventHandler). Build() if err != nil { fmt.Printf(\"Error preparing subscription-request: %s\", connectionResult.Err.Error()) return } SNAPSHOT version // Prepare a subscription-request subscriptionRequest, err := connection.SubscriptionRequestBuilder(). AddChangeOfStateTagAddress(\"heating-actual-temperature\", \"*/*/10:DPT_Value_Temp\"). AddChangeOfStateTagAddress(\"heating-target-temperature\", \"*/*/11:DPT_Value_Temp\"). AddCyclicTagAddress(\"heating-valve-open\", \"*/*/12:DPT_OpenClose\", 500 * time.Millisecond). AddItemHandler(knxEventHandler). Build() if err != nil { fmt.Printf(\"Error preparing subscription-request: %s\", connectionResult.Err.Error()) return } The Event hadnler for intercepting incoming events could look like this: Up to version 0.10.0 func knxEventHandler(event apiModel.PlcSubscriptionEvent) { for _, fieldName := range event.GetFieldNames() { if event.GetResponseCode(fieldName) == apiModel.PlcResponseCode_OK { groupAddress := event.GetAddress(fieldName) fmt.Printf(\"Got update for field %s with address %s. Value changed to: %s\\n\", fieldName, groupAddress, event.GetValue(fieldName).GetString()) } } } SNAPSHOT version func knxEventHandler(event apiModel.PlcSubscriptionEvent) { for _, tagName := range event.GetTagNames() { if event.GetResponseCode(tagName) == apiModel.PlcResponseCode_OK { groupAddress := event.GetTag(tagName).GetAddressString() fmt.Printf(\"Got update for tag %s with address %s. Value changed to: %s\\n\", tagName, groupAddress, event.GetValue(tagName).GetString()) } } } The AddCyclicField/AddCyclicTagAddress method requires a third parameter duration which specifies the interval, in which a given value is sent (even if it has not changed). Here the API differs slightly form the Java version, as in the request-builder itself you specify the reference to the callback handler which should be notified on incoming data. However, we will be aligning all API variants as much as possible in the near future. The request itself is executed exactly the same way the read and write operations are executed, using the Execute function. // Execute a subscription-request subscriptionRequestResultChanel := subscriptionRequest.Execute() // Wait for the response to finish subscriptionRequestResult := <-subscriptionRequestResultChanel if subscriptionRequestResult.Err != nil { fmt.Printf(\"Error executing read-request: %s\", subscriptionRequestResult.Err.Error()) return }","title":"Getting Started with Go","component":"plc4x","version":"latest","name":"plc4go","url":"/plc4x/latest/users/getting-started/plc4go.html","titles":[{"text":"Initializing a dummy project","hash":"_initializing_a_dummy_project","id":1},{"text":"Using the PLC4Go API directly","hash":"_using_the_plc4go_api_directly","id":2},{"text":"Connecting to a PLC","hash":"_connecting_to_a_plc","id":3},{"text":"Reading Data","hash":"_reading_data","id":4},{"text":"Writing Data","hash":"_writing_data","id":5},{"text":"Subscribing to Data","hash":"_subscribing_to_data","id":6}]},"120":{"id":120,"text":"","title":"Getting Started with Python","component":"plc4x","version":"latest","name":"plc4py","url":"/plc4x/latest/users/getting-started/plc4py.html","titles":[]},"121":{"id":121,"text":"In order to write a valid PLC4X Java application, all you need, is to add a dependency to the api module. When using Maven, all you need to do is add this dependency: org.apache.plc4x plc4j-api 0.12.0 This will allow you to write a valid application, that compiles fine. However, in order to actually connect to a device using a given protocol, you need to add this protocol implementation to the classpath. For example in order to communicate with an S7 device using the S7 Protocol, you would need to add the following dependency: org.apache.plc4x plc4j-driver-s7 0.12.0 runtime So as soon as your project has the API and a driver implementation available, you first need to get a PlcConnection instance. This is done via the PlcConnectionManager, which is provided to you by the PlcDriverManager by asking this to create an instance for a given PLC4X connection string. String connectionString = \"s7://10.10.64.20\"; try (PlcConnection plcConnection = PlcDriverManager.getDefault().getConnectionManager().getConnection(connectionString)) { ... do something with the connection here ... } PLC4X generally supports a very limited set of functions, which is not due to the fact, that we didn’t implement things, but that PLCs generally support a very limited set of functions. The basic functions supported by PLCs and therefore supported by PLC4X are: Discover Devices List resources in the PLC Read data Write data Subscribe for data In general, we will try to offer as many features as possible. So if a protocol doesn’t support subscription based communication it is our goal to simulate this by polling in the background, so it is transparent for the users (This simulation feature hasn’t been implemented yet though, but it’s on our roadmap). But there are some cases in which we can’t simulate or features are simply disabled intentionally: If a PLC and/or protocol don’t support writing or browsing, we simply can’t provide this functionality. Also do we plan on providing stripped down versions of drivers, that for example intentionally don’t support any writing of data. Therefore, we use metadata to check programmatically, if a given feature is available. // Check if this connection support reading of data. if (!plcConnection.getMetadata().isReadSupported()) { logger.error(\"This connection doesn't support reading.\"); return; } As soon as you have ensured that a feature is available, you are ready to build a first request. This is done by getting a PlcReadRequest.Builder: // Create a new read request: // - Give the single item requested an alias name PlcReadRequest.Builder builder = plcConnection.readRequestBuilder(); builder.addTagAddress(\"value-1\", \"%Q0.4:BOOL\"); builder.addTagAddress(\"value-2\", \"%Q0:BYTE\"); builder.addTagAddress(\"value-3\", \"%I0.2:BOOL\"); builder.addTagAddress(\"value-4\", \"%DB.DB1.4:INT\"); PlcReadRequest readRequest = builder.build(); So, as you can see, you prepare a request, by adding tag addresses to the request and in the end by calling the build method. If you are using the BrowseApi you might also have been provided with Tag objects. In that case simply use addTag and pass in the Tag object instead of the address string. The request is sent to the PLC by issuing the execute method on the request object: CompletableFuture asyncResponse = readRequest.execute(); asyncResponse.whenComplete((response, throwable) -> { try { ... process the response ... } catch (Exception e) { ... Handle any errors ... } }); In general, all requests are executed asynchronously. As soon as the request is fully processed, the callback gets called and will contain a readResponse, if everything went right or a throwable if there were problems. However, if you want to write your code in a more synchronous fashion, the following alternative will provide this: PlcReadResponse response = readRequest.execute().get(5000, TimeUnit.MILLISECONDS); Processing of the responses is identical in both cases in the synchronous approach you however need to catch any exceptions. The following example will demonstrate some of the options you have: for (String tagName : response.getTagNames()) { if(response.getResponseCode(tagName) == PlcResponseCode.OK) { int numValues = response.getNumberOfValues(tagName); // If it's just one element, output just one single line. if(numValues == 1) { logger.info(\"Value[\" + tagName + \"]: \" + response.getObject(tagName)); } // If it's more than one element, output each in a single row. else { logger.info(\"Value[\" + tagName + \"]:\"); for(int i = 0; i asyncResponse = writeRequest.execute(); asyncResponse.whenComplete((response, throwable) -> { ... process the response ... }); You could here also use the blocking option: PlcWriteResponse response = writeRequest.execute().get(); As we don’t have to process the data itself, for the write request, it’s enough to simply check the return code for each field. for (String tagName : response.getTagNames()) { if(response.getResponseCode(tagName) == PlcResponseCode.OK) { logger.info(\"Value[\" + tagName + \"]: updated\"); } // Something went wrong, to output an error message instead. else { logger.error(\"Error[\" + tagName + \"]: \" + response.getResponseCode(tagName).name()); } } Subscribing to data can be considered similar to reading data, at least the subscription itself if very similar to reading of data. First of all we first have to check if the connection supports this: // Check if this connection support subscribing to data. if (!plcConnection.getMetadata().isSubscribeSupported()) { logger.error(\"This connection doesn't support subscribing.\"); return; } Now we’ll create the subscription request. The main difference is that while reading there is only one form how you could read, with subscriptions there are different forms of subscriptions: Change of state (Event is sent as soon as a value changes) Cyclic (The Event is sent in regular cyclic intervals) Event (The Event is usually explicitly sent form the PLC as a signal) Therefore instead of using a normal addItem or addTag in newer versions, there are tree different methods as you can see in the following examples. // Create a new subscription request: // - Give the single tag requested an alias name PlcSubscriptionRequest.Builder builder = plcConnection.subscriptionRequestBuilder(); builder.addChangeOfStateTagAddress(\"value-1\", \"{some address}\"); builder.addCyclicTagAddress(\"value-2\", \"{some address}\", Duration.ofMillis(1000)); builder.addEventTagAddress(\"value-3\", \"{some alarm address}\"); PlcSubscriptionRequest subscriptionRequest = builder.build(); The addCyclicField/addCyclicTagAddress method requires a third parameter duration. The request itself is executed exactly the same way the read and write operations are executed, using the execute method, therefore just the short synchronous version here (The async version works just as good) PlcSubscriptionResponse response = subscriptionRequest.execute().get(); Now comes the little more tricky part, as subscriptions are always asynchronous, we have to register a callback for the connection to call as soon as there is news available: In general, you can’t say how many of your subscribed fields will be available in every callback. So it is double important to check or iterate over the field names. for (String subscriptionName : response.getFieldNames()) { final PlcSubscriptionHandle subscriptionHandle = response.getSubscriptionHandle(subscriptionName); subscriptionHandle.register(plcSubscriptionEvent -> { for (String tagName : plcSubscriptionEvent.getTagNames()) { System.out.println(plcSubscriptionEvent.getPlcValue(tagName)); } }); } Here there currently is a double iteration over the field names, this will probably change soon.","title":"Getting Started with Java","component":"plc4x","version":"latest","name":"plc4j","url":"/plc4x/latest/users/getting-started/plc4j.html","titles":[{"text":"Using the PLC4J API directly","hash":"_using_the_plc4j_api_directly","id":1},{"text":"Reading Data","hash":"_reading_data","id":2},{"text":"Writing Data","hash":"_writing_data","id":3},{"text":"Subscribing to Data","hash":"_subscribing_to_data","id":4}]},"122":{"id":122,"text":"Especially when it comes to trying to verify if an issue you are facing has already been fixed in the development version, you might want to or be asked to try out the absolute latest version of PLC4X. You can generally do this by adding \"-SNAPSHOT\" to the version number of PLC4X. We also provide convenience built SNAPSHOT versions, however are these not automatically synced with Maven Central. So Maven will not automatically be able to find them. Our SNAPSHOT versions are deployed on the Apache Maven repository. In order to access these, you need to add the following block to your pom.xml file: apache-snapshots https://repository.apache.org/content/repositories/snapshots false true apache-snapshots https://repository.apache.org/content/repositories/snapshots false true After adding this block, you should be able to also use SNAPSHOT versions.","title":"Using SNAPSHOT versions","component":"plc4x","version":"latest","name":"using-snapshots","url":"/plc4x/latest/users/getting-started/using-snapshots.html","titles":[]},"123":{"id":123,"text":"If you want to get started with Apache PLC4X, but don’t have any PLC at hand, this tutorial will demonstrate how you can use a virtual Modbus Slave software to simulate communication with Modbus enabled PLCs. Such a fully open-source software is ModbusPal which is available from here. All you need, is to download the file called ModbusPal.jar. In order to run the software, you just need to execute the following command in the same directory you downloaded the Jar to: java -jar ModbusPal.jar After this you will see the ModbusPal UI, which will look like this: Figure 1. ModbusPal Main UI Here be sure that the TCP port is set to 502 (Which is the default Modbus port). Next click on Add to add a new Modbus slave: Figure 2. ModbusPal Add slave UI Select a Slave ID as well as a name. After clicking on Add your new Modbus slave is ready to start. Figure 3. ModbusPal Main UI with one started slave By clicking on the Run button your slave is generally ready to communicate. However up until now this new wouldn’t have anything to share as we haven’t created any resources, so it would be an empty slave. So as last steps, we have to create some resources to access. In order do to this, click on the eye icon of your newly created slave. Figure 4. ModbusPal Main UI with one slave This will bring up an editor in which we can add some so-called Holding registers and some Coils. Let’s start with adding some Holding registers. So make sure Holding registers is selected and then click on the Add button: Figure 5. Holding register view The tool will suggest creating 65536 new registers, I usually create 10 or so. When I use ths tool some times I have to click the Add button more than once as the editor doesn’t always open the first time. Figure 6. Add Holding register dialog After this the Holding register tab should look like this: Figure 7. Add Holding register dialog Now do the same on the Coils tab, which should look like this after that: Figure 8. Add Holding register dialog As a last step, I would suggest to open the Console. You can do this by clicking on the Console button of the main UI. This will open the following window: Figure 9. Console Here ModbusPal will log every important event … especially when getting new connections from PLC4X. In general Modbus only knows two types of data: Coils and Registers. Coils are always simple bits or boolean values and Registers are always 16 bit short values. However, there are different types of these and they have different names: Discrete Inputs (Boolean values) (read-only) Coils (Boolean values) (read-write) Input Registers (16 bit short values) (read-only) Holding Registers (16 bit short values) (read-write) For Modbus there is no universally agreed upon notation for addresses, however as the addresses are extremely simple, in PLC4X we address these as follows: Table 1. Table Title Modbus Type PLC4X Address Syntax Discrete Inputs discrete-input:{start-number} or discrete-input:{start-number}[{number-of-elements}] Coils coil:{start-number} or coil:{start-number}[{number-of-elements}] Input Registers input-register:{start-number} or input-register:{start-number}[{number-of-elements}] Holding Registers holding-register:{start-number} or holding-register:{start-number}[{number-of-elements}] All addresses support a notation with and without a size. If the size is not specified, then PLC4X assumes a size of 1. A PLC4X connection-string generally has the same structure for all drivers: {driver-name}:{transport-name}://{transport-config}?{parameters} The fragments transport-name and parameters herby are usually optional, as every driver can support a default-transport, which is used if the transport is omitted. Also are most drivers implemented in a way that doesn’t require any parameters. These are only required if the connection requires some non-default settings. For Modbus the typical transports are: tcp (transport-config is the ip or host-name of the slave and can be suffixed by a port separated from the ip/host with :) serial (transport-config is the device name of the serial interface) If we have set up ModbusPal as described above and are running this on the same computer, the connection string to connect to this should be: modbus-tcp://localhost If you stated ModbusPal on a port different from Modbus' default port 502 you would have to also provide this port in the connection string. So assuming you started it on port 1502, then the connection string would look as follows: modbus-tcp://localhost:1502 In order to write a valid PLC4X Java application, all you need, is to add a dependency to the api module. When using Maven, all you need to do is add this dependency: org.apache.plc4x plc4j-api {project-version} This will allow you to write a valid application, that compiles fine. However, in order to actually connect to a device using a given protocol, you need to add this protocol implementation to the classpath. For example in order to communicate using the Modbus protocol, you would need to add the following dependency: org.apache.plc4x plc4j-driver-modbus {project-version} runtime So as soon as your project has the API and a driver implementation available, you first need to get a PlcConnection instance. This is done via the PlcDriverManager by asking this to create an instance for a given PLC4X connection string. String connectionString = \"modbus-tcp://localhost\"; try (PlcConnection plcConnection = new PlcDriverManager().getConnection(connectionString)) { ... do something with the connection here ... } PLC4X generally supports a very limited set of functions, which is not due to the fact, that we didn’t implement things, but that PLCs generally support a very limited set of functions. The basic functions supported by PLCs and therefore supported by PLC4X are: Read data Write data Subscribe for data Execute functions in the PLC List resources in the PLC In general, we will try to offer as many features as possible. So if a protocol doesn’t support subscription based communication it is our goal to simulate this by polling in the background, so it is transparent for the users. But there are some cases in which we can’t simulate or features are simply disabled intentionally: If a PLC and/or protocol don’t support executing of functions, we simply can’t provide this functionality. We will be providing stripped down versions of drivers, that for example intentionally don’t support any writing of data and executing of functions. Therefore, we use metadata to check programmatically, if a given feature is available: // Check if this connection support reading of data. if (!plcConnection.getMetadata().isReadSupported()) { logger.error(\"This connection doesn't support reading.\"); return; } As soon as you have ensured that a feature is available, you are ready to build a first request. This is done by getting a PlcRequestBuilder: // Create a new read request: // - Give the single item requested the alias name \"value\" PlcReadRequest.Builder builder = plcConnection.readRequestBuilder(); builder.addItem(\"value-1\", \"coil:1\"); builder.addItem(\"value-2\", \"coil:3[4]\"); builder.addItem(\"value-3\", \"holding-register:1\"); builder.addItem(\"value-4\", \"holding-register:3[4]\"); PlcReadRequest readRequest = builder.build(); So, as you can see, you prepare a request, by adding items to the request and in the end by calling the build method. Hereby the first string value is simply an alias you can give the the address as this is usually a more readable way. The second argument is then the address string itself. In above example we didn’t add discrete-input and input-registers as ModbusPal doesn’t seem to support these. The request is sent to the PLC by issuing the execute method on the request object: CompletableFuture asyncResponse = readRequest.execute(); asyncResponse.whenComplete((response, throwable) -> { ... process the response ... }); In general all requests are executed asynchronously. So as soon as the request is fully processed, the callback gets called and will contain a readResponse, if everything went right or a throwable if there were problems. However, if you want to write your code in a more synchronous fashion, the following alternative will provide this: PlcReadResponse response = readRequest.execute().get(); Processing of the responses is identical in both cases. The following example will demonstrate some of the options you have: Up to version 0.10.0 for (String fieldName : response.getFieldNames()) { if(response.getResponseCode(fieldName) == PlcResponseCode.OK) { int numValues = response.getNumberOfValues(fieldName); // If it's just one element, output just one single line. if(numValues == 1) { logger.info(\"Value[\" + fieldName + \"]: \" + response.getObject(fieldName)); } // If it's more than one element, output each in a single row. else { logger.info(\"Value[\" + fieldName + \"]:\"); for(int i = 0; i < numValues; i++) { logger.info(\" - \" + response.getObject(fieldName, i)); } } } // Something went wrong, to output an error message instead. else { logger.error(\"Error[\" + fieldName + \"]: \" + response.getResponseCode(fieldName).name()); } } SNAPSHOT version for (String tagName : response.getTagNames()) { if(response.getResponseCode(tagName) == PlcResponseCode.OK) { int numValues = response.getNumberOfValues(tagName); // If it's just one element, output just one single line. if(numValues == 1) { logger.info(\"Value[\" + tagName + \"]: \" + response.getObject(tagName)); } // If it's more than one element, output each in a single row. else { logger.info(\"Value[\" + tagName + \"]:\"); for(int i = 0; i < numValues; i++) { logger.info(\" - \" + response.getObject(tagName, i)); } } } // Something went wrong, to output an error message instead. else { logger.error(\"Error[\" + tagName + \"]: \" + response.getResponseCode(tagName).name()); } } In the for loop, we are demonstrating how the user can iterate over the address aliases in the response. In case of an ordinary read request, this will be predefined by the items in the request, however in case of a subscription response, the response might only contain some of the items that were subscribed. Before accessing the data, it is advisable to check if an item was correctly returned. This is done by the getResponseCode method for a given alias. If this is PlcResponseCode.OK, everything is ok, however it could be one of the following: NOT_FOUND ACCESS_DENIED INVALID_ADDRESS INVALID_DATATYPE INTERNAL_ERROR RESPONSE_PENDING Assuming the return code was OK, we can continue accessing the data. As some addresses support reading arrays, with the method getNumberOfValues the user can check how many items of a given type are returned. For convenience the response object has single-argument methods for accessing the data, which default to returning the first element. response.getObject(fieldName) If you want to access a given element number, please use the two-argument version instead: response.getObject(fieldName, 42) PLC4X provides getters and setters for a wide variety of Java types and automatically handles the type conversion. However, when for example trying to get a long-value as a byte and the long-value exceeds the range supported by the smaller type, a RuntimeException of type PlcIncompatibleDatatypeException. In order to avoid causing this exception to be thrown, however there are isValid{TypeName} methods that you can use to check if the value is compatible. The code for writing is very similar to the code for reading, however when creating the write request, we have to pass in the data alongside the field definitions. While all 4 field types support reading from, only the coil and holding-register field types support writing to. If you attempt to write to these, this will result in errors. So again, we first check if this driver supports writing (Some drivers such as passive-mode drivers or read-only versions might generally not support writing): // Check if this connection support reading of data. if (!plcConnection.getMetadata().isWriteSupported()) { logger.error(\"This connection doesn't support writing.\"); return; } As soon as you have ensured that a feature is available, you are ready to build a first request. This is done by getting a PlcRequestBuilder: // Create a new read request: // - Give the single item requested the alias name \"value\" PlcWriteRequest.Builder builder = plcConnection.writeRequestBuilder(); builder.addItem(\"value-1\", \"coil:1\", true); builder.addItem(\"value-2\", \"coil:3[4]\", true, false, true, true); builder.addItem(\"value-3\", \"holding-register:1\", 42); builder.addItem(\"value-4\", \"holding-register:3[4]\", 1, 2, 3, 4); PlcWriteRequest writeRequest = builder.build(); You can see that for every element that should be written, the same number of arguments have to be provided. PlcWriteResponse response = writeRequest.execute().get(); Actually executing the write operation is almost identical to the reading, with the only difference, that the result only provides status codes and no values. for (String fieldName : response.getFieldNames()) { if(response.getResponseCode(fieldName) == PlcResponseCode.OK) { logger.info(\"Value[\" + fieldName + \"]: successfully written to device.\"); } // Something went wrong, to output an error message instead. else { logger.error(\"Error[\" + fieldName + \"]: \" + response.getResponseCode(fieldName).name()); } }","title":"Playing around with Apache PLC4X with a virtual Modbus PLC","component":"plc4x","version":"latest","name":"virtual-modbus","url":"/plc4x/latest/users/getting-started/virtual-modbus.html","titles":[{"text":"Setting up the virtual Modbus Slave","hash":"_setting_up_the_virtual_modbus_slave","id":1},{"text":"Some Modbus basics","hash":"_some_modbus_basics","id":2},{"text":"Writing code","hash":"_writing_code","id":3},{"text":"Connecting","hash":"_connecting","id":4},{"text":"Reading Data","hash":"_reading_data","id":5},{"text":"Writing Data","hash":"_writing_data","id":6}]},"124":{"id":124,"text":"Name Type Default Value Required Description Name Allen Bradley ETH Code ab-eth Maven Dependency org.apache.plc4x plc4j-driver-ab-eth 0.12.0 Default Transport raw Supported Transports tcp Config options: station INT Id of the station we want to connect to Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected.","title":"AB-ETH","component":"plc4x","version":"latest","name":"ab-eth","url":"/plc4x/latest/users/protocols/ab-eth.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2}]},"125":{"id":125,"text":"The ADS (automation device specification) describes a device-independent and fieldbus independent interface for communication between Beckhoff automation devices running TwinCAT and other devices implementing this interface. https://www.home-assistant.io/integrations/ads/ Source (accessed 7 August 2022) ADS device concept: https://infosys.beckhoff.com/english.php?content=../content/1033/ams_nat/4275563275.html&id= Source (accessed 7 August 2022) Specification for ADS devices: https://infosys.beckhoff.com/english.php?content=../content/1033/ams_nat/4275563275.html&id= Source (accessed 7 August 2022) ADS (Automation Device Specification) is the TwinCAT communication protocol that specifies the interaction between two ADS devices. For example, it defines what operations can be executed on another ADS device, what parameters are necessary for that and what return value is sent after execution. AMS (Automation Message Specification) specifies the exchange of the ADS data. A major component of the communication protocol is the AmsNetId. This is specified in the AMS/ADS package for the source and target device. An ADS device can be explicitly addressed using the AmsNetId. Source https://infosys.beckhoff.com/english.php?content=../content/1033/ams_nat/4275563275.html&id= (accessed 7 August 2022) Name Type Default Value Required Description Name Beckhoff TwinCat ADS Code ads Maven Dependency org.apache.plc4x plc4j-driver-ads 0.12.0 Default Transport tcp Supported Transports tcp Config options: target-ams-net-id STRING required AMS-Net-Id of the target. An AMS-Net-Id has the regular format of an IPv4 IP-Address, however with 6 segments instead of 4. target-ams-port INT required AMS port of the target. source-ams-net-id STRING required AMS-Net-Id of the source. An AMS-Net-Id has the regular format of an IPv4 IP-Address, however with 6 segments instead of 4. source-ams-port INT required AMS port of the source. timeout-request INT 4000 Default timeout for all types of requests. load-symbol-and-data-type-tables BOOLEAN true Configures, if when connecting the data-type- and symbol-table should be read. This is an optimization that can help in cases, where the PLC program is pretty large and downloading the full tables is causing problems. When disabled, symbolic addresses will manually be resolved as soon as an address is used. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. Data array Size Description AMS/TCP Header 6 bytes contains the length of the data packet. AMS Header 32 bytes The AMS/TCP-Header contains the addresses of the transmitter and receiver. In addition, the AMS error code , the ADS command Id and some other information. ADS Data n bytes The ADS data range contains the parameter of the single ADS commands. The structure of the data array depends on the ADS command. Some ADS commands require no additional data. For details about the protocol look here: http://www.beckhoff.com/ & (German Handbook: https://download.beckhoff.com/download/Document/automation/twincat3/TwinCAT_3_ADS_INTRO_DE.pdf)","title":"ADS (Automation Device Specification)","component":"plc4x","version":"latest","name":"ads","url":"/plc4x/latest/users/protocols/ads.html","titles":[{"text":"Structure AMS/TCP Packet","hash":"_structure_amstcp_packet","id":1},{"text":"Connection String Options","hash":"_connection_string_options","id":2},{"text":"tcp","id":3},{"text":"More details on","hash":"_more_details_on","id":4}]},"126":{"id":126,"text":"Name Type Default Value Required Description Name BACnet/IP Code bacnet-ip Maven Dependency org.apache.plc4x plc4j-driver-bacnet 0.12.0 Default Transport udp Supported Transports udp tcp pcap Config options: ede-file-path STRING Path to the location of a single EDE file, that contains the descriptor for the target device. ede-directory-path STRING Path to the directory used for storing multiple EDE files. These files contain the descriptors for the possible target devices. Transport config options: udp.local-port INT -1 Some connections require a UDP listener to listen on a fixed port. Use this configuration option in order to define the port number of the local port. tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. pcap.support-vlans BOOLEAN false Enables support for VLans pcap.replay-speed-factor FLOAT 1.0 Numeric value for changing the replay speed: - 1 = Normal speed (default) - 0 = Maximum speed - 0.5 = Half speed - 2 = Double speed pcap.loop BOOLEAN false Should the replay start at the beginning of the file as soon as the end is reached? - true = Automatically start again - false = Stop at the end (default) pcap.filter STRING Filter expression used to filter out unwanted packets from the replay. pcap.support-vlans BOOLEAN false Should VLan packets be automatically unpacked? pcap.protocol-id INT -1 When provided, filters all packets to let only packets matching this ethernet protocol-id pass. Data array Size Description BACnet - A Data Communication Protocol for Building Automation and Control Networks","title":"BACnet/IP","component":"plc4x","version":"latest","name":"bacnet","url":"/plc4x/latest/users/protocols/bacnet.html","titles":[{"text":"BACnet (Building Automation and Control Networks)","hash":"_bacnet_building_automation_and_control_networks","id":1},{"text":"Connection String Options","hash":"_connection_string_options","id":2},{"text":"udp","id":3},{"text":"tcp","id":4},{"text":"pcap","id":5},{"text":"More details on","hash":"_more_details_on","id":6}]},"127":{"id":127,"text":"The CAN Bus driver is a special kind of driver which does not bring any logic. Its responsibility is to combine CAN transport facade and custom application layer protocols. In this way, the protocol can use its own \"root frame\" type which is not delivered from CAN bus frame. The CANDriverAdapter is a full implementation of Apache PLC4X API. Under the hood adapter will forward all operations to delegate driver. Work which is done by the adapter is to transform data incoming via CAN transport into frame supported by driver. In this regard the CANDriverAdapter does not implement any real protocol. All it does is transformation of incoming frames into frame desired by real driver. Below diagram explains how driver adapter works with CANopen. Given that this is currently biggest CAN driver implemented in Apache PLC4X we will use it as a reference. Looking at left most side of diagram we can see a CAN transport. The transport knows how to receive and send data to the CAN bus. Transport can create its own intermediate representation of CAN data frame. In case of SocketCAN there is a dedicated type called SocketCANFrame. Most of other drivers in Apache PLC4X which rely on TCP, UDP or serial transports can unify right above transport. Yet due to variety of APIs which are possible to be used with CAN bus such early unification at API level is not possible. Place where CANDriverAdapter jumps in is once transport formed the frame structure. Then, adapter asks the transport to turn that structure into a FrameData. An instance of FrameData is then passed to an adapter delivered by CANopen Driver. This adapter can then create a CANopenFrame which is processed by desired driver logic. The return side, when desired driver wants to publish information is a bit simplified. Because FrameData does not be a real type (it is an interface) we can skip it. With a help of a CANFrameBuilder provided by CAN transport driver can easily construct a structure which is supported by it. While this makes an API asymmetric it also makes it possible to use any third party transport with CANopenDriver.","title":"CAN Bus Driver Adapter","component":"plc4x","version":"latest","name":"can","url":"/plc4x/latest/users/protocols/can.html","titles":[{"text":"More details on the driver","hash":"_more_details_on_the_driver","id":1}]},"128":{"id":128,"text":"Name Type Default Value Required Description Name Clipsal C-Bus Code c-bus Maven Dependency org.apache.plc4x plc4j-driver-c-bus 0.12.0 Default Transport tcp Supported Transports tcp Config options: srchk BOOLEAN false Source check. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected.","title":"C-Bus","component":"plc4x","version":"latest","name":"c-bus","url":"/plc4x/latest/users/protocols/c-bus.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2}]},"129":{"id":129,"text":"CANopen is a specific protocol built on top of CAN bus. Name Type Default Value Required Description Name CAN open Code canopen Maven Dependency org.apache.plc4x plc4j-driver-canopen 0.12.0 Default Transport socketcan Supported Transports socketcan Config options: node-id INT CAN node identifier. Depending on used CAN version it might be 11 or 29 bit unsigned int. heartbeat BOOLEAN Forces PLC4X to send CANopen heartbeat (NMT) messages to the bus. request-timeout INT 1000 Time after which dispatched BUS operation (ie. SDO request) will be marked as failed. Transport config options: Name Value Description Supported Operations CANopen PDO read / write PDO messages are broadcasted to the bus and have to be mapped at application layer. CANopen SDO read / write SDO are request/response conversations. Both read and write path is supported. subscribe Receiving PDO messages requires construction of valid subscription. It is possible to subscribe to CANopen NMT messages. CAN, despite (or due) to its popularity has ambiguous meaning. There are multiple articles and sources which attempts to give introduction, yet very few of them is consistent between each other. There are two dominant formats of frames - CAN 2.0A and 2.0B: CAN 2.0A uses 11 bit identifier and up to 8 bytes of data. CAN 2.0B uses 29 bit identifier and up to 8 bytes of data. To make things worse with introduction of CAN FD amount of combinations increased even more. Double check frame format as this integration supports CANopen and does not support CANopen FD nor CAN 2.0B. Further reading on CAN flavors: https://en.wikipedia.org/wiki/CAN_bus Default transport used with this protocol is socketcan. Currently, only 2.0A format (up to 8 bytes of data) is supported. Implemented driver supports currently socketcan transport. Change of transport requires code modifications and injection of new \"transport\" type which will encode CANopen payloads to specific frame format. Socketcan seems to be most widespread way to access CAN bus. It also masks different hardware variants which might come with their own drivers. The CANopen specification defines Object Dictionary (OD). This driver does honor OD structure through usage of index and sub index for addressing fields. It does not ship Electronic Data Sheet (EDS) parser leaving it for applications who wish to utilize it. CANopen specification defines several groups of addresses dedicated to certain kind of operations. Critical services and message exchanges related with them have lower identifiers making them wining eventual bus access. The array size block is necessary only if application expect same value several times. If SDO returns for example 4 values of UNSIGNED8 it can be declared as ::UNSIGNED8[4] for PDO. Equivalent for SDO is ::/:UNSIGNED8[4]. Service Format Supported operations Description SDO SDO:nodeId:index/subindex:type[arraySize] read write SDO is for request/response communication. Both expedited and segmented modes are supported. No support for block transfer. Transfer kind is automatically determined based on payload length. All numeric values - ndodeId, index, subindex can be specified using hexadecimal notation (ie. 0xA). PDO TRANSMIT_PDO_1:nodeId:type[arraySize] RECEIVE_PDO_1:nodeId:type[arraySize] TRANSMIT_PDO_2:nodeId:type[arraySize] RECEIVE_PDO_2:nodeId:type[arraySize] TRANSMIT_PDO_3:nodeId:type[arraySize] RECEIVE_PDO_3:nodeId:type[arraySize] TRANSMIT_PDO_4:nodeId:type[arraySize] RECEIVE_PDO_4:nodeId:type[arraySize] subscribe write PDO is an asynchronous operation hence receiving of it requires subscription. Check Apache PLC4X API documentation for more detailed example of how to use subscriptions API. Subscriber will be notified with value mapped to type defined in field syntax. NMT NMT NMT:nodeId subscribe NMT messages are sent using CAN node ID 0. They have the highest priority on the bus. Messages of this kind indicate operating state of an node (booted, operational). Subscriptions to this service receive structure with two fields: node (USINT) and state (USINT). If subscription sets nodeId to 0 it will receive state updates for all bus participants. HEARTBEAT HEARTBEAT HEARTBEAT:nodeId subscribe HEARTBEAT messages have the lowest priority on the bus. They have the highest priority on the bus. Messages of this kind indicate operating state of an node (booted, operational). Subscriptions to this service receive structure with two fields: node (USINT) and state (USINT). If subscription sets nodeId to 0 it will receive state updates for all bus participants. Below table contains type mapping defined in CANopen specification. CANopen Type Length (in bits) PLC4X Type BOOLEAN 1 BOOL UNSIGNED8 8 USINT UNSIGNED16 16 UINT UNSIGNED24 24 UDINT UNSIGNED32 32 UDINT UNSIGNED40 40 ULINT UNSIGNED48 48 ULINT UNSIGNED56 56 ULINT UNSIGNED64 64 ULINT INTEGER8 8 SINT INTEGER16 16 INT INTEGER24 24 DINT INTEGER32 32 DINT INTEGER40 40 LINT INTEGER48 48 LINT INTEGER56 56 LINT INTEGER64 64 LINT REAL32 32 REAL REAL64 64 LREAL RECORD 8 * size BYTE OCTET_STRING 8 * size STRING (UTF-8) VISIBLE_STRING 8 * size STRING (UTF-8) TIME_OF_DAY unsupported TIME_DIFFERENCE unsupported UNICODE_STRING 8 * size STRING (UTF-8) All string types are decoded using UTF-8 encoding regardless of their kind (octet, visible, unicode). In case if device returns text using different encoding it is recommended to use RECORD type and construct text manually above PLC4X. The size in case of variable length structures is automatically assumed to full length of SDO answer. In case of writing length of field can be ommited. For example request write(SDO:1:2/3:RECORD, payload) will try to write whole payload to specified address. Same applies to responses sent by devies as requester often might not know full length of reply payload.","title":"CANopen","component":"plc4x","version":"latest","name":"canopen","url":"/plc4x/latest/users/protocols/canopen.html","titles":[{"text":"CAN in Automation","hash":"_can_in_automation","id":1},{"text":"Connection String Options","hash":"_connection_string_options","id":2},{"text":"socketcan","id":3},{"text":"More details on the driver","hash":"_more_details_on_the_driver","id":4},{"text":"Address Format","hash":"_address_format","id":5}]},"130":{"id":130,"text":"","title":"CtlrX","component":"plc4x","version":"latest","name":"ctrlx","url":"/plc4x/latest/users/protocols/ctrlx.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1}]},"131":{"id":131,"text":"","title":"DeltaV","component":"plc4x","version":"latest","name":"deltav","url":"/plc4x/latest/users/protocols/deltav.html","titles":[]},"132":{"id":132,"text":"","title":"DF1","component":"plc4x","version":"latest","name":"df1","url":"/plc4x/latest/users/protocols/df1.html","titles":[]},"133":{"id":133,"text":"Name Type Default Value Required Description Name EthernetIP Code eip Maven Dependency org.apache.plc4x plc4j-driver-eip 0.12.0 Default Transport tcp Supported Transports tcp Config options: backplane INT Without using routing information the backplane defaults to 1. This is overridden if communicationPath is provided. slot INT The slot within the backplane the CPU is located. bigEndian BOOLEAN Configure if the connection should be set to transport data in Big-Endian format, or not. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. To read and write data to a PLC4X device, the EtherNet/IP driver uses symbolic segments. This is used to refer to objects through their symbolic names. This makes reading data a lot easier, as you do not need to specify the Datatype for reading. %{tagname}[{startIndex}]:{numberOfElements} %{tagname}[{startIndex}]:{numberOfElements}:{DataType} Name Description Tagname symbolic name of the Data Start Index (optional) if the data is an array, we can specify a starting index from where we want to read Number of elements (optional) if the data is an array, we can specify the number of elements we want to read. Use this in combination with the starting index to get the exact scope you want. DataType (writing) Specify the Data-type of the value you want to write (mandatory) To store Use this data type Bit BOOL Bit array DWORD (32-bit boolean array) 8-bit integer SINT 16-bit integer INT 32-bit integer DINT 64-bit integer LINT 32-bit float REAL","title":"EtherNet/IP","component":"plc4x","version":"latest","name":"eip","url":"/plc4x/latest/users/protocols/eip.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2},{"text":"Address Format","hash":"_address_format","id":3},{"text":"Data Types","hash":"_data_types","id":4}]},"134":{"id":134,"text":"The Firmata protocol is based on the MIDI protocol used for communicating with musical equipment. It is also one of the most widely used protocols for communication with Arduino devices. This driver is built to be compatible with the StandardFirmata Arduino Sketch which can be found here (Version last changed on August 17th, 2017) Name Type Default Value Required Description Name Firmata Code firmata Maven Dependency org.apache.plc4x plc4j-driver-firmata 0.12.0 Default Transport serial Supported Transports serial Config options: Transport config options: serial.baud-rate INT 57600 Baud-rate the serial port is set to. Typical values are: - 9600 - 14400 - 19200 - 38400 - 57600 - 115200 - 128000 But can also be smaller or larger values. serial.num-data-bits INT 8 Number of data-bits used to send data. Typical values are: - 7 - 8 But can also be smaller or larger values. serial.num-stop-bits INT 1 Number of stop-bits used to terminate data. Typical values are: - 1 - 2 (The theoretical 1.5 stop-bits setting is not supported) serial.parity STRING NO_PARITY Number of bits used to calculate data parity. This is used to detect errors in transmission. Allowed values are: - NO_PARITY - ODD_PARITY - EVEN_PARITY - MARK_PARITY - SPACE_PARITY Name Value Description Supported Operations write Writing is only supported to digital addresses. subscribe Reading is supported for both digital and analog addresses. See note after this table however. When subscribing to pins, these are configured to become read pins. When writing to digital pins, these are configured to become output pins. However, writing to pins for which a subscription exists, an exception will be thrown. In order to write to previously subscribed pins, all subscriptions for this have to be cancelled first. Similar to the Modbus protocol, the Firmata protocol support Boolean and Short values. Booleans are used for the digital IO pins and short values for the analog inputs. The full format for a digital address has the following format: digital:{start-address}[{array-size}]:{special-config} The start-address and array-size are simple integer values. special-config can be used to configure the digital input pin to something else than INPUT. Currently the only supported option is PULLUP which configured the Arduino’s digital input pin to use it’s built in pullup-resistor. Both the array-size as well as the special-config parts are optional. So the following example addresses are valid: digital:4 digital:4[5] digital:4:PULLUP A normal Arduino Uno is equipped with 14 digital inputs: 0-13 However in case of using the serial port (which will always be the case when using this driver), the pins 0 and 1 are the RX and TX pins of the serial port and can’t be used. The full format for an analog address is as follows: analog:{start-address}[{array-size}] The start-address and array-size are simple integer values. Both the array-size is optional. So the following example addresses are valid: analog:1 analog:2[3] A normal Arduino Uno is equipped with 6 analog inputs: 0-5","title":"Firmata","component":"plc4x","version":"latest","name":"firmata","url":"/plc4x/latest/users/protocols/firmata.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"serial","id":2},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":3},{"text":"Binary Addresses","hash":"_binary_addresses","id":4},{"text":"Analog Addresses","hash":"_analog_addresses","id":5}]},"135":{"id":135,"text":"This driver is a generic purpose driver. It allows implementing a basic CAN bus listening or writing scenarios. CAN bus open is a specific protocol built on top of CAN bus. Name Type Default Value Required Description Name Generic CAN Code genericcan Maven Dependency org.apache.plc4x plc4j-driver-can 0.12.0 Default Transport socketcan Supported Transports socketcan Config options: node-id INT Node id of the target device. request-timeout INT 1000 Default timeout for all types of requests. Transport config options: Name Value Description Supported Operations publish write Allows to publish a CAN frame via CAN transport. receive subscribe This operation allows listening for incoming data or requests. Given popularity of CAN in multiple market segments there is variety of protocols which can’t be published. Also, for many cases which are data acquisition oriented it is necessary to tap only parts of communications. This driver allows to model incoming and outgoing communication using plain Apache PLC4X api. The written CAN data is constructed from fields submitted via write request builder. The receiving data is transformed in similar fashion, based on subscribed fields. Service Format Supported operations Description n/a nodeId:type[arraySize] write subscribe There is only one syntax which is currently supported by this driver. Pay attention. You can use multiple fields to write and subscribe actual data. All fields must sum to up to 64 bits. If you subscribe less, then remaining data is discarded and not available via PLC4X api. The data will be sent in the same order as fields. Below table contains type mapping defined in Generic CAN driver. CANopen Type Length (in bits) PLC4X Type BOOLEAN 1 BOOL UNSIGNED8 8 USINT UNSIGNED16 16 UINT UNSIGNED24 24 UDINT UNSIGNED32 32 UDINT UNSIGNED40 40 ULINT UNSIGNED48 48 ULINT UNSIGNED56 56 ULINT UNSIGNED64 64 ULINT INTEGER8 8 SINT INTEGER16 16 INT INTEGER24 24 DINT INTEGER32 32 DINT INTEGER40 40 LINT INTEGER48 48 LINT INTEGER56 56 LINT INTEGER64 64 LINT REAL32 32 REAL REAL64 64 LREAL The type table is similar to CANopen. Main difference is lack of support for string types.","title":"Generic CAN","component":"plc4x","version":"latest","name":"genericcan","url":"/plc4x/latest/users/protocols/genericcan.html","titles":[{"text":"CAN Bus semantics","hash":"_can_bus_semantics","id":1},{"text":"Connection String Options","hash":"_connection_string_options","id":2},{"text":"socketcan","id":3},{"text":"More details on the driver","hash":"_more_details_on_the_driver","id":4},{"text":"Address format","hash":"_address_format","id":5}]},"136":{"id":136,"text":"Name Type Default Value Required Description Name IEC 60870-5-104 Code iec-60870-5-104 Maven Dependency org.apache.plc4x plc4j-driver-iec-60870 0.12.0 Default Transport tcp Supported Transports tcp Config options: request-timeout INT 4000 Default timeout for all types of requests. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected.","title":"IEC-60870","component":"plc4x","version":"latest","name":"iec-60870","url":"/plc4x/latest/users/protocols/iec-60870.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2}]},"137":{"id":137,"text":"Protocol C C# Go Java Python AB-Ethernet ADS /AMS BACnet/IP CBus CANopen DeltaV DF1 EtherNet/IP EtherNet/IP - Logix Firmata IEC-60870 KNXnet/IP Modbus (TCP/RTU/ASCII) OPC-UA Open-Protocol (Torque-Tools) PLC4X (Proxy-Protocol) Profinet S7 Simulated Legend: Implemented and fully supported Work in progress Not implemented yet Unsure The following table contains a list of operations and the protocols that support them: Protocol Auto-Discover Browse Read Single Address Value Read Multiple Address Values Write Single Address Value Write Multiple Address Value Subscribe to Value changes Subscribe to PLC Events/Alarms Publish Values AB-Ethernet ADS /AMS BACnet/IP CBus CANopen DeltaV DF1 EtherNet/IP EtherNet/IP - Logix Firmata IEC-60870 KNXnet/IP Modbus (TCP/RTU/ASCII) OPC-UA Open-Protocol (Torque-Tools) PLC4X (Proxy-Protocol) Profinet S7 Simulated Legend: Implemented and fully supported Implemented and supported by simulation Not implemented yet Unsure","title":"","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/users/protocols/index.html","titles":[{"text":"Current language support for protocols","hash":"_current_language_support_for_protocols","id":1},{"text":"Features","hash":"_features","id":2}]},"138":{"id":138,"text":"Name Type Default Value Required Description Name KNXNet/IP Code knxnet-ip Maven Dependency org.apache.plc4x plc4j-driver-knxnetip 0.12.0 Default Transport udp Supported Transports udp pcap raw Config options: knxproj-file-path STRING Path to the knxproj file. The default KNXnet/IP protocol doesn’t provide all the information needed to be able to fully decode the messages. knxproj-password STRING Optional password needed to read the knxproj file. group-address-num-levels INT 3 KNX Addresses can be encoded in multiple ways. Which encoding is used, is too not provided by the protocol itself so it has to be provided externally: 3 Levels: {main-group (5 bit)}/{middle-group (3 bit)}/{sub-group (8 bit)} 2 Levels: {main-group (5 bit)}/{sub-group (11 bit)} 1 Level: {sub-group (16 bit)} The default is 3 levels. If the knxproj-file-path this information is provided by the file. connection-type STRING LINK_LAYER Type of connection used to communicate. Possible values are: 'LINK_LAYER' (default): The client becomes a participant of the KNX bus and gets it’s own individual KNX address. 'RAW': The client gets unmanaged access to the bus (be careful with this) 'BUSMONITOR': The client operates as a busmonitor where he can’t actively participate on the bus. Only one 'BUSMONITOR' connection is allowed at the same time on a KNXnet/IP gateway. Transport config options: udp.local-port INT -1 Some connections require a UDP listener to listen on a fixed port. Use this configuration option in order to define the port number of the local port. pcap.replay-speed-factor FLOAT 1.0 Numeric value for changing the replay speed: - 1 = Normal speed (default) - 0 = Maximum speed - 0.5 = Half speed - 2 = Double speed pcap.loop BOOLEAN false Should the replay start at the beginning of the file as soon as the end is reached? - true = Automatically start again - false = Stop at the end (default) pcap.filter STRING Filter expression used to filter out unwanted packets from the replay. pcap.support-vlans BOOLEAN false Should VLan packets be automatically unpacked? pcap.protocol-id INT -1 When provided, filters all packets to let only packets matching this ethernet protocol-id pass. raw.resolve-mac-address BOOLEAN If set to true, the transport will automatically resolve the MAC address for a given IP address (Allows connecting to a raw-socket device using the devices host-name or ip-address). raw.support-vlans BOOLEAN false Should VLan packets be automatically unpacked? raw.protocol-id INT -1 When provided, filters all packets to let only packets matching this ethernet protocol-id pass. KNX Addresses usually have one of the following structures: 3-level Address: {main-group(0-15)}/{middle-group(0-15)}/{sub-group(0-255)} 2-level Address: {main-group(0-15)}/{sub-group(0-4095)} 1-level Address: {sub-group(0-65535)} Depending on the group-address-type configured in the connection string or defined in the knxproj-file configured by the knxproj-file-path connection string parameter, the corresponding address pattern has to be used. However, when subscribing for events, each segment allows using of the wildcard character *. If the addresses used in the KNX installation are structured, this way it is possible to, for example (depending on the scheme used): Collect all information for a given level of your building: 1// Collect all information for a given room: 2/4/* Collect all information about heating in all rooms: //50 Don’t use wildcards when explicitly reading or writing data, this is only supported when subscribing to events.","title":"KNXnet/IP","component":"plc4x","version":"latest","name":"knxnetip","url":"/plc4x/latest/users/protocols/knxnetip.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"udp","id":2},{"text":"pcap","id":3},{"text":"raw","id":4},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":5}]},"139":{"id":139,"text":"Name Type Default Value Required Description Name Logix CIP Code logix Maven Dependency org.apache.plc4x plc4j-driver-eip 0.12.0 Default Transport tcp Supported Transports tcp Config options: communication-path STRING The communication path allows for connection routing across multiple backplanes. It uses a common format found in Logix controllers. It consists of pairs of values, each pair begins with either 1 (Backplane) or 2 (Ethernet), followed by a slot in the case of a backplane address, or if using Ethernet an ip address. e.g. [1,4,2,192.168.0.1,1,1] - Routes to the 4th slot in the first rack, which is a ethernet module, it then connects to the address 192.168.0.1, then finds the module in slot 1. backplane INT Without using routing information the backplane defaults to 1. This is overridden if communicationPath is provided. slot INT The slot within the backplane the CPU is located. bigEndian BOOLEAN Configure if the connection should be set to transport data in Big-Endian format, or not. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. Logix has the following connection string format:- logix:tcp://{ip-address}:{port}?{options} An example connection string would look like:- logix:tcp://127.0.0.1:502?communicationPath=[1,1] Note the port and option fields are optional. In general all Logix addresses have this format: {address}:{data-type}[{array-size}] If the array-size part is omitted, the size-default of 1 is assumed. If the data-type part is omitted, the data type from the controller is used The address format matches that found in the controller. The following data types are supported BOOL (boolean) SINT (int 8) USINT (uint 8) BYTE (uint 8) INT (int 16) UINT (uint 16) WORD (uint 16) DINT (int 32) UDINT (uint 32) DWORD (uint 32) LINT (int 64) REAL (float)","title":"Logix","component":"plc4x","version":"latest","name":"logix","url":"/plc4x/latest/users/protocols/logix.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":3},{"text":"Connection String","hash":"_connection_string","id":4},{"text":"General Format","hash":"_general_format","id":5},{"text":"Data Types","hash":"_data_types","id":6}]},"140":{"id":140,"text":"Name Type Default Value Required Description Name Modbus TCP Code modbus-tcp Maven Dependency org.apache.plc4x plc4j-driver-modbus 0.12.0 Default Transport tcp Supported Transports tcp Config options: request-timeout INT 5000 Default timeout for all types of requests. unit-identifier INT 1 Unit-identifier that identifies the target PLC (On RS485 multiple Modbus Devices can be listening). Defaults to 1. ping-address STRING 4x00001:BOOL Simple address, that the driver will use to check, if the connection to a given device is active (Defaults to reading holding-register 1). Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. Name Type Default Value Required Description Name Modbus RTU Code modbus-rtu Maven Dependency org.apache.plc4x plc4j-driver-modbus 0.12.0 Default Transport serial Supported Transports tcp serial Config options: request-timeout INT 5000 Default timeout for all types of requests. unit-identifier INT 1 Unit-identifier that identifies the target PLC (On RS485 multiple Modbus Devices can be listening). Defaults to 1. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. serial.baud-rate INT 57600 Baud-rate the serial port is set to. Typical values are: - 9600 - 14400 - 19200 - 38400 - 57600 - 115200 - 128000 But can also be smaller or larger values. serial.num-data-bits INT 8 Number of data-bits used to send data. Typical values are: - 7 - 8 But can also be smaller or larger values. serial.num-stop-bits INT 1 Number of stop-bits used to terminate data. Typical values are: - 1 - 2 (The theoretical 1.5 stop-bits setting is not supported) serial.parity STRING NO_PARITY Number of bits used to calculate data parity. This is used to detect errors in transmission. Allowed values are: - NO_PARITY - ODD_PARITY - EVEN_PARITY - MARK_PARITY - SPACE_PARITY Name Type Default Value Required Description Name Modbus ASCII Code modbus-ascii Maven Dependency org.apache.plc4x plc4j-driver-modbus 0.12.0 Default Transport serial Supported Transports tcp serial Config options: request-timeout INT 5000 Default timeout for all types of requests. unit-identifier INT 1 Unit-identifier that identifies the target PLC (On RS485 multiple Modbus Devices can be listening). Defaults to 1. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. serial.baud-rate INT 57600 Baud-rate the serial port is set to. Typical values are: - 9600 - 14400 - 19200 - 38400 - 57600 - 115200 - 128000 But can also be smaller or larger values. serial.num-data-bits INT 8 Number of data-bits used to send data. Typical values are: - 7 - 8 But can also be smaller or larger values. serial.num-stop-bits INT 1 Number of stop-bits used to terminate data. Typical values are: - 1 - 2 (The theoretical 1.5 stop-bits setting is not supported) serial.parity STRING NO_PARITY Number of bits used to calculate data parity. This is used to detect errors in transmission. Allowed values are: - NO_PARITY - ODD_PARITY - EVEN_PARITY - MARK_PARITY - SPACE_PARITY Name Value Description Supported Operations read write Modbus has the following connection string format:- modbus-tcp:{transport}://{ip-address}:{port}?{options} An example connection string would look like:- modbus-tcp:tcp://127.0.0.1:502 Note the transport, port and option fields are optional. In general all Modbus addresses have this format: {memory-Area}{start-address}:{data-type}[{array-size}] If the array-size part is omitted, the size-default of 1 is assumed. If the data-type part is omitted, it defaults to BOOL for Coils and Discrete Inputs and INT for input, holding and extended registers. There are a number of memory areas defined in the Modbus specification. Discrete Input Area Coil Area Input Register Area Holding Register Extended Register Area Name Memory Area Aliases Description Bit-Size Permissions Starting Address Discrete Input discrete-input: or 1 or 1x Boolean input value, usually representing a binary input to the PLC 1 Read Only 1 Coil coil: or 0 or 0x Boolean value, usually representing a binary output from the PLC 1 Read/Write 1 Input Register input-register: or 3 or 3x Short input value, usually representing an analog input to the PLC 16 Read Only 1 Holding Register holding-register: or 4 or 4x Short value, usually representing an analog output from the PLC 16 Read/Write 1 Extended Register extended-register: or 6 or 6x Short value, 16 Read/Write 0 Initially the Modbus format allowed up to 10000 address to be specified or the discrete inputs, coils, input registers and holding registers. Later on, this was expanded to allow up 65536 address within each memory area (except the extended register area). When using the long address format i.e. input-registers:1 the addresses between 1 and 65535 are able to be specified. When using the shorter versions there are two formats available i.e. 30001 and 300001. With the shorter format 3XXXX being limited to between 30001 and 39999, while the longer format 3XXXXX being limited to between 300001 and 365535. These memory areas all start at address 1. For the extended register area the addresses 0-99999 are able to be specified. These registers are mapped to file records with a length of 10000. Address 600000 corresponds to the first address in file record 0. Address 610000 is then the first address in the second file record and so on. It is noted that there is generally only 10 file records (600000 thru to 699999) however the spec allows for 65536 file records. Using the extended-register: format you are able to reference all of these, if the shorter format is used then it is limited to 699999. This memory area starts at address 0. The following data types are supported BOOL (boolean) SINT (int 8) USINT (uint 8) BYTE (uint 8) INT (int 16) UINT (uint 16) WORD (uint 16) DINT (int 32) UDINT (uint 32) DWORD (uint 32) LINT (int 64) ULINT (uint 64) LWORD (uint 64) REAL (float) LREAL (double) CHAR (char) WCHAR (2 byte char) Most memory areas start at address 1, except for the extended register area which starts at 0. These are both mapped to 0x0000 when it is sent in the Modbus protocol. The input, holding and extended registers consist of 16-bit registers while the discrete input and coil areas consist of bits. The following Modbus function codes are supported:- 0x01 (Read Coils) 0x02 (Read Discrete Inputs) 0x03 (Read Holding Registers) 0x04 (Read Input Registers) 0x05 (Write Single Coil) 0x06 (Write Single Register) 0x0F (Write Multiple Coils) 0x10 (Write Multiple Registers) 0x14 (Read File Record)(Extended Register Read) 0x15 (Write File Record)(Extended Register Write) To read 10 holding registers starting at address 20 and parse as Unsigned Integers the following examples are all valid. holding-register:20:UINT[10] 400020:UINT[10] 4x00020:UINT[10] 40020:UINT[10] 4x0020:UINT[10] To read 1 holding register at address 5678 the following examples are valid. holding-register:5678 405678 4x05678 45678 4x5678 To read 10 extended registers starting at address 50 the following examples are valid. extended-register:50[10] 600050[10] 6x00050[10] 60050[10] 6x0050[10] This corresponds to addresses 50-59 in file record 1. To read 10 extended registers starting at address 9995 the following examples are valid. extended-register:9995[10] 609995[10] 6x09995[10] 69995[10] 6x9995[10] This corresponds to addresses 9995-9999 in file record 1 and addresses 0-5 in file record 2. Note that this request is split into 2 sub requests in the Modbus protocol.","title":"Modbus (TCP/UDP/Serial)","component":"plc4x","version":"latest","name":"modbus","url":"/plc4x/latest/users/protocols/modbus.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"Modbus TCP","hash":"_modbus_tcp","id":2},{"text":"tcp","id":3},{"text":"Modbus RTU","hash":"_modbus_rtu","id":4},{"text":"tcp","id":5},{"text":"serial","id":6},{"text":"Modbus ASCII","hash":"_modbus_ascii","id":7},{"text":"tcp","id":8},{"text":"serial","id":9},{"text":"Supported Operations","hash":"_supported_operations","id":10},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":11},{"text":"Connection String","hash":"_connection_string","id":12},{"text":"General Format","hash":"_general_format","id":13},{"text":"Memory Areas","hash":"_memory_areas","id":14},{"text":"Data Types","hash":"_data_types","id":15},{"text":"Some useful tips","hash":"_some_useful_tips","id":16},{"text":"Examples","hash":"_examples","id":17}]},"141":{"id":141,"text":"Name Type Default Value Required Description Name Opcua Code opcua Maven Dependency org.apache.plc4x plc4j-driver-opcua 0.12.0 Default Transport tcp Supported Transports tcp Config options: protocol-code STRING transport-code STRING transport-config STRING discovery BOOLEAN true Controls the feature of the discovery endpoint of an OPC UA server which every server will propagate over an '/discovery' endpoint. The most common issue here is that most servers are not correctly configured and propagate the wrong external IP or URL address. If that is the case you can disable the discovery by configuring it with a false value. The discovery phase is always conducted using NONE security policy. username STRING A username to authenticate to the OPCUA server with. password STRING A password to authenticate to the OPCUA server with. security-policy STRING NONE The security policy applied to communication channel between driver and OPC UA server. Default value assumes. Possible options are NONE, Basic128Rsa15, Basic256, Basic256Sha256, Aes128_Sha256_RsaOaep, Aes256_Sha256_RsaPss. message-security STRING SIGN_ENCRYPT The security policy applied to messages exchanged after handshake phase. Possible options are NONE, SIGN, SIGN_ENCRYPT. This option is effective only when securityPolicy turns encryption (anything beyond NONE). key-store-file STRING The Keystore file used to lookup client certificate and its private key. key-store-type STRING pkcs12 Keystore type used to access keystore and private key, defaults to PKCS (for Java 11+). Possible values are between others jks, pkcs11, dks, jceks. key-store-password STRING Java keystore password used to access keystore and private key. server-certificate-file STRING Filesystem location where server certificate is located, supported formats are DER and PEM. trust-store-file STRING The trust store file used to verify server certificates and its chain. trust-store-type STRING pkcs12 Keystore type used to access keystore and private key, defaults to PKCS (for Java 11+). Possible values are between others jks, pkcs11, dks, jceks. trust-store-password STRING Password used to open trust store. channel-lifetime LONG 3600000 Time for which negotiated secure channel, its keys and session remains open. Value in milliseconds, by default 60 minutes. session-timeout LONG 120000 Expiry time for opened secure session, value in milliseconds. Defaults to 2 minutes. negotiation-timeout LONG 60000 Timeout for all negotiation steps prior acceptance of application level operations - this timeout applies to open secure channel, create session and close calls. Defaults to 60 seconds. request-timeout LONG 30000 Timeout for read/write/subscribe calls. Value in milliseconds. encoding.receive-buffer-size INT 65535 Maximum size of received TCP transport message chunk value in bytes. encoding.send-buffer-size INT 65535 Maximum size of sent transport message chunk. encoding.max-message-size INT 2097152 Maximum size of complete message. encoding.max-chunk-count INT 64 Maximum number of chunks for both sent and received messages. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. Name Value Description Supported Operations read The read interface allows for reading the full range of supported PLC4X data types in single and bulk requests write The write interface allows for writing the full range of supported PLC4X data types in single and bulk requests subscribe Subscriptions are possible with events on event- and cyclic-basis The OPC UA drivers uses the connection string opcua:{transport}://{ip-address}:{port}?{options} An example of this connection string would be:- opcua:tcp://127.0.0.1:12686?discovery=true&username=admin&password=password Note the transport, port and options fields are optional. The secure channel implementation within Apache PLC4X project have been tested against existing open source server implementations. This includes Eclipse Milo (all modes) as well as OPC Foundation .NET server (except Basic128Rsa15). Manual tests proven that driver is able to communicate with OPC UA server launched on PLCs as well as commercial simulators. Depending on actual configuration of remote end there might be necessity to prepare client certificate. Preparation of certificate is beyond driver, however in case when no client certificate is provided, it will be auto-generated to establish a session. The security modes differ between themselves by strength of applied signature and encryption algorithms. Driver is able to communicate with single security mode at the time. Additionally, to security policy it is possible to specify messageSecurity option which indicates expected security settings after initial handshake. By default, this option is set to SIGN_ENCRYPT which imposes high security settings and full encryption of exchanged message payloads. In case when additional diagnostics is needed payloads has to be traced through TRACE level log entries. The SIGN mode gives possibility o browse packets in tools such wireshark. The OPC UA specification defines its own procedures for certificate validation. In order to simplify implementation by default server certificate validation is relaxed. Unless explicitly disabled through configuration of trustStoreFile all server certificates will be accepted without validation. In case when secure communication is enabled the trustStoreFile option might be used to point certificates which client should accept. The acceptance rely on regular TLS checks (expiry date, certificate path etc.), does not validate OPC UA specific parts such as application URI. Depending on settings driver might or might not attempt to discover endpoints from remote server. In case when discovery option is set to true driver will look up server certificate through connection attempt. The discovery option also enables checks of server endpoints for matching security settings. Once initial discovery is completed and driver finds endpoint matching its security settings it will launch second connection attempt which will switch to configured security mode. Each connection attempt made by driver attempt to use limits described in table above. Role of these options is declaration of values accepted and expected by client. Once server returns its limits (Acknowledge for supplied Hello call) driver picks values from these. The only one note is that driver takes minimum of local receive and remote send buffer size. It does same with local send and remote receive buffer. Usual values of sendBufferSize and receiveBufferSize PLC devices remain at 8196 bytes. Due to lack of complete implementation of negotiation and chunking logic the OPC UA driver prior Apache PLC4X 0.11 release could supply calls exceeding server limits. To read, write and subscribe to data, the OPC UA driver uses the variable declaration string of the OPC UA server it is connecting to. It includes the namespace(ns) of the hierarchy tree followed by the type of identifier string(s), numeric(i), binary(b) or guid(g) and its address. The Data Type is an optional field, if it is not included a default data type is selected based on the datatype of the returned value. For Unsigned data types it needs to be included otherwise. ns={namespace-index};[s|i|g|b]={Identifier};{Data Type} The following data types are supported BOOL (boolean) SINT (int 8) USINT (uint 8) BYTE (uint 8) INT (int 16) UINT (uint 16) WORD (uint 16) DINT (int 32) UDINT (uint 32) DWORD (uint 32) LINT (int 64) ULINT (uint 64) LWORD (uint 64) REAL (float) LREAL (double) CHAR (char) WCHAR (2 byte char) STRING (utf-8) WSTRING (utf-16) The following are examples of valid addresses String address: ns=2;s=HelloWorld/ScalarTypes/Boolean ns=2;s=HelloWorld/ScalarTypes/Boolean;BOOL Numeric address ns=1;i=1337 ns=1;i=1337;DINT GUID address: ns=2;g=09087e75-8e5e-499b-954f-f2a8624db28a ns=2;g=09087e75-8e5e-499b-954f-f2a8624db28a;REAL Note the Identifiers s,i,b and g specify the format of the address not the data type of the returned value. The namespace (e.g. ns=2) within the address is specific to the server you are connecting to. OPC UA The OPC Unified Architecture (UA), released in 2008, is a platform independent service-oriented architecture that integrates all the functionality of the individual OPC Classic specifications into one extensible framework. This multi-layered approach accomplishes the original design specification goals of: Functional equivalence: all COM OPC Classic specifications are mapped to UA Platform independence: from an embedded micro-controller to cloud-based infrastructure Secure: encryption, authentication, and auditing Extensible: ability to add new features without affecting existing applications Comprehensive information modeling: for defining complex information","title":"OPC UA","component":"plc4x","version":"latest","name":"opcua","url":"/plc4x/latest/users/protocols/opcua.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2},{"text":"Connection String","hash":"_connection_string","id":3},{"text":"Secure communication","hash":"_secure_communication","id":4},{"text":"Certificate verification","hash":"_certificate_verification","id":5},{"text":"Negotiation procedure","hash":"_negotiation_procedure","id":6},{"text":"Address Format","hash":"_address_format","id":7},{"text":"Data Types","hash":"_data_types","id":8},{"text":"Example of a valid OPC UA address:","hash":"_example_of_a_valid_opc_ua_address","id":9},{"text":"Some useful tips","hash":"_some_useful_tips","id":10},{"text":"More details on OPC UA","hash":"_more_details_on_opc_ua","id":11}]},"142":{"id":142,"text":"Name Type Default Value Required Description Name Open-Protocol Code open-protocol Maven Dependency org.apache.plc4x plc4j-driver-open-protocol 0.12.0 Default Transport tcp Supported Transports tcp Config options: Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected.","title":"Open-Protocol (Torque-Tools)","component":"plc4x","version":"latest","name":"open-protocol","url":"/plc4x/latest/users/protocols/open-protocol.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2}]},"143":{"id":143,"text":"Name Type Default Value Required Description Name PLC4X (Proxy-Protocol) Code plc4x Maven Dependency org.apache.plc4x plc4j-driver-plc4x 0.12.0 Default Transport tcp Supported Transports tcp Config options: remote-connection-string STRING URL-Encoded connection string to use on the proxy side to reach the given PLC. request-timeout INT 5000 Default timeout for all types of requests. Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. Name Value Description Supported Operations: read write subscribe The plc4x protocol connection has the following connection string format:- plc4x:{transport}://{ip-address/hostname}:{port}?remote-connection-string={url-encoded-connection-string} An example connection string would look like:- plc4x://127.0.0.1?remote-connection-string=simulated%3A%2F%2Flocalhost Note the transport, port and option fields are optional. The remote connection string: simulated://localhost is encoded as simulated%3A%2F%2Flocalhost The address format is simply the address format of the used remote connection. So if you specify a remote connection as simulated, please follow the address format of that driver.","title":"PLC4X (Proxy) (TCP)","component":"plc4x","version":"latest","name":"plc4x","url":"/plc4x/latest/users/protocols/plc4x.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"tcp","id":2},{"text":"Connection String Options","hash":"_connection_string_options_2","id":3},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":4},{"text":"Connection String","hash":"_connection_string","id":5},{"text":"General Format","hash":"_general_format","id":6}]},"144":{"id":144,"text":"The PROFINET driver implements a class 3 real time controller. Which is able to communicate with multiple devices on the same network segment. On linux as the Java executable won’t have permission to capture raw packets, this needs to be enabled via:- sudo setcap cap_net_raw,cap_net_admin=eip /usr/lib/jvm/jdk-19/bin/java The executable will change based on the jdk and OS you are using. Name Type Default Value Required Description Name Profinet Code profinet Maven Dependency org.apache.plc4x plc4j-driver-profinet-ng 0.12.0 Default Transport raw Supported Transports raw Config options: gsd-directory STRING ~/.gsd required dap-id STRING ip-address STRING Transport config options: raw.resolve-mac-address BOOLEAN If set to true, the transport will automatically resolve the MAC address for a given IP address (Allows connecting to a raw-socket device using the devices host-name or ip-address). raw.support-vlans BOOLEAN false Should VLan packets be automatically unpacked? raw.protocol-id INT -1 When provided, filters all packets to let only packets matching this ethernet protocol-id pass. Name Value Description Supported Operations subscribe Only the subscription service is currently supported. The Profinet driver uses the connection string profinet:raw://{ip-address}:{port}?{options} Where the {ip-address}, unlike other PLC4X driver, uses the local IP address of the network interface you would like to bind to. This allows us to connect to multiple devices at once via the devices parameter. An example of this connection string which has two devices test-device-1 and test-device-2, connected on the localhost interface would be:- profinet:raw://127.0.0.1?gsddirectory=/Profinet/GSD&devices=[[test-device-1,MOD_1,(SUBMOD_1,,SUBMOD_1,)],[test-device-2,MOD_1,(SUBMOD_1,,SUBMOD_1,)]] Note the transport, port fields shouldn’t have to be changed The format of address will be in the format. device.slot.id.module_name.channel.bit:format An example would be device-1.1.1.DIGITAL_INPUT.0.1:BOOL Note:- The following data types are supported BOOL (boolean) SINT (int 8) USINT (uint 8) BYTE (uint 8) INT (int 16) UINT (uint 16) WORD (uint 16) DINT (int 32) UDINT (uint 32) DWORD (uint 32) LINT (int 64) ULINT (uint 64) LWORD (uint 64) REAL (float) LREAL (double) CHAR (char) WCHAR (2 byte char) STRING (utf-8) WSTRING (utf-16) Although the GSD file contains all the information needed to configure which data will be available from a device. The easiest approach is to use the browsing function of the Profinet driver to return a list of all available tags. Then only the addresses of interest can be selected.","title":"Profinet (In Development)","component":"plc4x","version":"latest","name":"profinet","url":"/plc4x/latest/users/protocols/profinet.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"raw","id":2},{"text":"Connection String","hash":"_connection_string","id":3},{"text":"Address Format","hash":"_address_format","id":4},{"text":"Data Types","hash":"_data_types","id":5},{"text":"Some useful tips","hash":"_some_useful_tips","id":6}]},"145":{"id":145,"text":"This version of the S7 driver is aimed at exploiting the advanced features of the S7-300 and S7-400 controllers, as well as basic reading and writing functions for the S7-1200 and S7-1500 devices (PUT/GET functions). We hope in a short period of time to have the S7-Plus version, which should exploit the asynchronous functions of the S7-1500. Most of the closed source solutions are based on request/response patterns, generally with a high level of optimization. Even the best open source implementations, such as “Snap7” [1], base their usage on this same pattern. Is there another way to do things?, yes!, but this should be enough for 95% of automation applications, if your system works and you are happy with it, apply the maxim of automation, “Is it working?, no touch it, production first!” If the solution you need to develop must strictly revolve around the Siemens platform, you will probably opt for a solution based on SOFTNET OPC-DA or OPC-UA which is the recommendation given by Siemens, if you want to go to a lower level, you should use the libraries SAPI-S7 [2] (generally supplied with SOFTNET), which is the lowest access layer to access the internal Siemens communications architecture, which gives access to any CP and/or any protocol (S7-TCP, MPI, DP, etc.) that is being used. The configuration of the communication links is carried out from the STEP7 environment (TIA or Simatic Manager) in a static way, so creating communication links falls within a development cycle configure/compile/transfer to each of the interlocutors. Now, what options are there for those applications that want to make use of the asynchronous nature of S7 PLCs, including alarms, events, or time-stamped data? Outside of the Siemens ecosystem, very few. In general they are tied to a specific platform, for example PCS7 (Siemens DCS), Braumat (Platform for brewing processes) or WinCC (SCADA system). This is where the open source nature of the S7 driver developed by the PLC4X team becomes a differentiating factor. The driver data structures are clearly defined in \"mspec\", the cornerstone for the development of our drivers in different languages and platforms, as well as a well-defined API, allow a lingua franca for managing the driver development cycle. Our added value is having the advanced functionalities of the Simatic S7-300/S7-400 such as: Device status management (RUN/STOP). System events (Alarms/User messages). Cyclic Subscription (CYC). SZL(SSL) diagnostics. These functionalities normally available on the Siemens platform (STEP7/TIA/WinCC) are now available for use in open IoT-type applications, which guarantees the correct handling of the \"quality\" of the data, as well as its time stamp. Although this driver is developed using Siemens Hardware, it should be functional with VIPA brand equipment, which is a version (clone) of the S7-300, with more memory and functionalities. If you have one of these devices and you are in your best disposition to carry out communication tests, we would be very grateful if you collaborate with the results in the development list and placing the model and firmware version that you have used. When trying to connect to a Siemens LOGO device, it is important to add one connection option, as Siemens seems to have only partially implemented the protocol, the device simply terminates the connection as soon as our driver tried to read the SZL table in order to find out which type of S7 device it is talking to. This can be disabled by passing in the type of PLC. For a Siemens LOGO device therefore please add ?controller-type=LOGO to the connection string. It is typical within the decision-making cycle in an automation project to know who and how much the support of the tools that will be used in the control architecture will cost. PLC4X support is on our development list (dev@plc4x.apache.org) where we will gladly answer your questions about the S7 driver. If your company requires commercial support, companies that directly or indirectly support the drivers and tools developed in PLC4X are published on our page. Rev Release Date Description of the change 0 0.10.0 2022/10/04 Stable release. In PLC4X the URL philosophy is used as the data source for the connection for the specification of the driver and its connection parameters, this is almost a standard in network applications (pointing to the best practices). It is also possible to create an instance of the driver directly and assign its parameters with the typical \"set\" methods. In the following, reference will be made to the Java-based driver, which implements all the functionalities indicated in this manual. The specified URL has the structure SCHEMA: Defines the protocol to be used, in our particular case S7 DOMAINE NAME: Physical address of the PLC or CP’s. PARAMETERS: List of key/value values separated by ampersand \"&\". They define the behavior of the driver. The SCHEMA and DOMAINE NAME are almost standard for any URL and do not require further explanation. The PARAMETERS that define the behavior of the driver are defined in the following table. Name Type Default Value Required Description Name Siemens S7 (Basic) Code s7 Maven Dependency org.apache.plc4x plc4j-driver-s7 0.12.0 Default Transport tcp Supported Transports tcp Config options: local-rack INT 1 Rack value for the client (PLC4X device). local-slot INT 1 Slot value for the client (PLC4X device). local-tsap INT 0 Local Transport Service Access Point. remote-rack INT 0 Rack value for the remote main CPU (PLC). remote-slot INT 0 Slot value for the remote main CPU (PLC). remote-rack2 INT 0 Rack value for the remote secondary CPU (PLC). remote-slot2 INT 0 Slot value for the remote secondary CPU (PLC). remote-tsap INT 0 Remote Transport Service Access Point. pdu-size INT 1024 Maximum size of a data-packet sent to and received from the remote PLC. During the connection process both parties will negotiate a maximum size both parties can work with and is equal or smaller than the given value is used. The driver will automatically split up large requests to not exceed this value in a request or expected response. max-amq-caller INT 8 Maximum number of unconfirmed requests the PLC will accept in parallel before discarding with errors. This parameter also will be negotiated during the connection process and the maximum both parties can work with and is equal or smaller than the given value is used. The driver will automatically take care not exceeding this value while processing requests. Too many requests can cause a growing queue. max-amq-callee INT 8 Maximum number of unconfirmed responses or requests PLC4X will accept in parallel before discarding with errors. This option is available for completeness and is correctly handled out during the connection process, however it is currently not enforced on PLC4X’s side. So if a PLC would send more messages than agreed upon, these would still be processed. controller-type STRING As part of the connection process, usually the PLC4X S7 driver would try to identify the remote device. However some devices seem to have problems with this and hang up or cause other problems. In such a case, providing the controller-type will skip the identification process and hereby avoid this type of problem. Possible values are:/n- S7_300 - S7_400 - S7_1200 - S7-1500 - LOGO read-timeout INT 0 This is the maximum waiting time for reading on the TCP channel. As there is no traffic, it must be assumed that the connection with the interlocutor was lost and it must be restarted. When the channel is closed, the \"fail over\" is carried out in case of having the secondary channel, or it is expected that it will be restored automatically, which is done every 4 seconds. ping BOOLEAN false Time for supervision of TCP channels. If the channel is not active, a safe stop of the EventLoop must be performed, to ensure that no additional tasks are created. ping-time INT 0 If your application requires sampling times greater than the set \"read-timeout\" time, it is important that the PING option is activated, this will prevent the TCP channel from being closed unnecessarily. retry-time INT 0 Time value in seconds at which the execution of the PING will be scheduled. Generally set by developer experience, but generally should be the same as (read-timeout / 2). Transport config options: tcp.keep-alive BOOLEAN false Should keep-alive packets be sent? tcp.no-delay BOOLEAN true Should packets be sent instantly or should we give the OS some time to aggregate data. tcp.default-timeout INT 1000 Timeout after which a connection will be treated as disconnected. Name Value Description Supported Operations read Only supported with tcp transport. write Only supported with tcp transport. After defining the URL, the connection is made. Driver selection from the URL is done via PLC4X’s SPI support, so driver instantiation and mapping originating from the URL is done transparently by the Java SPI services. Any inconsistency in the URL definition will generate an exception that must be handled by the user program. . . . try { PlcConnection connection = new DefaultPlcDriverManager().getConnection(\"s7://10.10.1.33?remote-rack=0&remote-slot=3&controller-type=S7_400\"); //(2.1) final PlcReadRequest.Builder subscription = connection.readRequestBuilder(); //(2.2) . . . } In (2.1) the driver instance is created, you only have to ensure that the required driver is in the CLASSPATH of your Java environment. Already in (2.2) it defines the type of service required (read/write or a subscription), here a read request is indicated. No problems? Then we are ready to configure and request the data that we require from the PLC. Let’s go to step \"three\". By having the connection we can start building and executing our requests. . . . readrequest.addTagAddress(\"MySZL\", \"SZL_ID=16#0091;INDEX=16#0000\"); //(3.1) final PlcReadRequest rr = readrequest.build(); //(3.2) final PlcReadResponse szlresponse = rr.execute().get(); //(3.3) if (szlresponse.getResponseCode(\"MySZL\") == PlcResponseCode.OK) {//(3.4) } . . . In (3.1) the request for a PLCTag is constructed, in this particular case a list of controller system status. In step (3.2) we build the request and in (3.3) we execute the request using the futures pattern in Java. We verify in (3.4) that everything is fine and that our data was acquired. These steps are shown separately for ease of analysis, but can be simplified into one statement to avoid excessive code. A detailed explanation of the format for addressing PLCTags in the S7 driver will be given in the following sections. When programming Siemens PLCs, usually the tool used to do that is called TIA Portal. The PLC4X S7 Driver is therefore sticking to the address format defined by this tool as it simplifies exchanging address information. In general all S7 addresses have this format: . %{Memory-Area}{start-address}:{Data-Type}[{array-size}] If the array-part is omitted, the size-default of 1 is assumed. Generally there are two types of addresses: . Bit-Addresses {Memory-Area-Code}{Start-Byte-Address}.{Bit-Offset}:BOOL[{Count}] . Byte-Addresses {Memory-Area-Code}{Start-Byte-Address}:{Data-Type-Code}[{count}] Bit addresses are only used if the datatype: BOOL is used. The array notation of these can be omitted. In this case a Count of 1 is used per default. Start-Byte-Address and Bit-Offset in above list both represent unsigned integer values. In case of accessing data in the data block memory area, the syntax is quite a bit more complex: . DB{Data-Block-Number}.DB{Short-Data-Type-Code}{Start-Byte-Address}.{Bit-Offset}:BOOL[{Count}] . DB{Data-Block-Number}.DB{Short-Data-Type-Code}{Start-Byte-Address}:{Data-Type-Code}[{Count}] When reading a STRING datatype, currently 254 characters would automatically be fetched from the PLC. In order to limit the amount of data, we extended the STRING type declaration syntax to allow limiting this. With the following format less than 254 characters can be read: . DB{Data-Block-Number}.DB{Short-Data-Type-Code}{Start-Byte-Address}:STRING({string-length})[{Count}] These addresses can usually be copied directly out of TIA portal. However we also implemented a shorter version, as above version does have some unnecesary boilerplate parts (The .DB in the middle as well as the Short-Data-Type-Code) The shorter syntax looks like this: . DB{Data-Block-Number}:{Start-Byte-Address}.{Bit-Offset}:BOOL[{Count}] . DB{Data-Block-Number}:{Start-Byte-Address}:{Data-Type-Code}[{Count}] . DB{Data-Block-Number}:{Start-Byte-Address}:STRING({string-length})[{Count}] The S7 driver will handle both types of notation equally. The S7 driver currently allows access to the following memory areas. The Code column represents the code that is used in above general address syntax: Not all S7 device types support the same full set of memory areas, so the last column gives more information on which types a given memory area is supported on. Code Name Description Supported PLC Types C COUNTERS TODO: Document this TODO: Document this T TIMERS TODO: Document this TODO: Document this D DIRECT_PERIPHERAL_ACCESS TODO: Document this TODO: Document this I INPUTS Inputs (Digital and Analog … usually Analog Inputs just have a start-address offset to separate them from the digital ones) All Q OUTPUTS Outputs (Digital and Analog … usually Analog Outputs just have a start-address offset to separate them from the digital ones) All M FLAGS_MARKERS TODO: Document this TODO: Document this DB DATA_BLOCKS Memory areas containing user-defined data structures usually accessed by the integer data block number. antease note that data block addresses have a little more complex address format. All DBI INSTANCE_DATA_BLOCKS TODO: Document this TODO: Document this LD LOCAL_DATA TODO: Document this TODO: Document this Code Short-Code Name Description Size in bits Supported PLC Types Bit-Strings (Will all interpreted as sequence of boolean values in PLC4X) BOOL X Bit Single boolean value 1 All BYTE B Byte Array of 8 boolean values 1 All WORD W Word Array of 16 boolean values 2 All DWORD D Double-Word Array of 32 boolean values 4 All LWORD X Long-Word Array of 64 boolean values 8 S7_1500 Integer values SINT B Small int 8 bit integer (signed) 1 S7_1200, S7_1500 USINT B Small unsigned int 8 bit integer (unsigned) 1 S7_1200, S7_1500 INT W Integer 16 bit integer (signed) 2 All UINT W Unsigned integer 16 bit integer (unsigned) 2 S7_1200, S7_1500 DINT D Double integer 32 bit integer (signed) 4 All UDINT D Unsigned Double Integer 32 bit integer (unsigned) 4 S7_1200, S7_1500 LINT X Long integer 64 bit integer (signed) 8 S7_1500 ULINT X Unsigned long integer 64 bit integer (unsigned) 8 S7_1500 Floating point values REAL D Real 32 bit IEEE 754 full precision floating point value (signed) 4 All LREAL X Long Real 64 bit IEEE 754 double precision floating point value (signed) 8 S7_1200, S7_1500 Character values CHAR B Character 8 bit character 1 All WCHAR X Double byte character 16 bit character value 2 S7_1200, S7_1500 STRING X String String 2 + n bytes 1 All WSTRING X Double byte String String of 16 bit characters 2 + n bytes 1 S7_1200, S7_1500 Temporal values S5TIME X S5 Time S5 Time (like in duration) 2 S7_300, S7_400, S7_1500 TIME X Time Time (like in duration) (Minutes, Seconds, Milliseconds) 4 All LTIME X Long Time Long Time (like in duration) (Minutes, Seconds, Milliseconds, Microseconds, Nanoseconds) 8 S7_1500 DATE X Date Date 2 All TIME_OF_DAY X Time of day Time (like in 4:40PM) 4 All DATE_AND_TIME X Date and Time Date and time (like in 03.05.2020 4:40 PM) 8 S7_300, S7_400, S7_1500 PLC programming in general is a Pandora’s box! Here we will assume that you use standard technological functions/libraries within your development cycle, therefore, at this point it is important to point out the actors that participate in this dialogue between the driver and the PLC and how they affect the communication cycle. The different actors involved in communication are shown in image 1. PLC (AS), the controller. AS is the reference used in PCS7. App, your application. PLC4X, implementation of the S7 driver. OS, PLC operating system. PCS7, represents the technological functions used in the PLC. PCS7 are Siemens DCS libraries. S7App, your application that runs on the PLC. CP, the communications CP will depend on your architecture and requirements, for an S7-300 it will be a CP 343-1 or a CP 443-1 for an S7-400. The S7 driver allows the subscription to asynchronous events generated in the PLC. This type of event is generated by S7-300, S7-400, G120C-PN, S120-PN controllers and VIPA devices. Unfortunately for the S7-1200 and S7-1500 series this functionality has been superseded. For a complete list of compatibility between the S7-300,400 and S7-1200 & S7-1500, you can see the document in [1] provided by Siemens. These services have the following advantages: Report the status of the CPUs and other components within the control architecture that support it (CP, IM, DI, etc). Transfer of values when a change occurs. Associate values to the events sent. A better handling of the TimeStamp of the associated values. The messages are classified into two groups depending on how they are generated: SCAN: All those events generated by the system or preset in Step7 (TIA Portal). The change of state of the configured signals is carried out by the operating system at specific intervals (500 ms, 100ms or 16 ms). ALARM: These are events generated by the user application using the alarm blocks (ALARM_S, ALARM_SQ, NOTIFY, ALARM, ALARM_8). In addition to user applications, these events can be generated from technological functions such as PCS7 or Braumat. The data associated with the events is represented in a HashMap in order to facilitate its transfer to other applications based on a standard such as JMS, MQTT or other messaging technology. The handling of the TimeStamp of the SCAN type events is generated in the computer. In ALARM type messages the TimeStamps are generated in the PLC. It is extremely important that the date and time synchronization is done between both computers and PLC. The values associated with the events can have different types of representation, so their interpretation must be agreed upon during the programming of the application in the PLC and your application. For each type of event, the particular fields of type will be arranged within the Map. These will be documented for each type of event. To maximize the use of the data fields associated with the events, the use of the intra-area pointer system and the ANY type pointer is recommended in the PLC, As well as the recommendations for the management of the time stamp [2]. At the user application level App, you can use the PLC4X API to subscribe SCAN or ALARM type events by selecting any of the following fields according to the requirement: MODE: Change of operating state in the controller, change from STOP to RUN and vice versa. SYS: System events, associated with internal events of the controller or events previously parameterized for their indication. USR: Events programmed by the user and that are registered in the internal diagnostic buffer. ALM: Alarm events generated by the user program, ALARM_S, ALARM_8, NOTIFY. In the following sections we will describe in more detail the functionalities of each field. By subscribing to controller status changes or MODE events, the PLC status changes can be tracked. Depending on the CPU model, these state changes are followed in the user application (PLC program), OB100 and OB101, allowing these applications to be brought to a safe state. Now, how do these state changes affect external applications, for example HMI or custom user applications? In the use of a unified Siemens architecture, the operator panels (HMI) and WinCC (Scada) detect the status of the CPU and pass the quality of the points in the database in real time to poor quality. In the case of an application developed with PLC4X, the use of MODE events will allow your application to indicate to users the quality of the points used, and that by design the quality is not updated in the controller. From image 2, we can describe the sequence of actions that can be followed for subscription. In the first place, the subscription process occurs from the App of the user (1)(2)(3)(4), having a positive response the application is ready to receive the events asynchronously from the PLC (AS). Suppose that the manager for a reason passes the controller to STOP (06) through the front switch or from the engineering station, then OS proceeds to send a notification (07)(08) to all consoles that are registered to receive this event. Subsequently, the manager decides to switch the controller to execution mode, through the front switch or the engineering console, at this time the OS is in charge of generating the startup events, initially it indicates the hot start WARN_RESTART (09)(10)(11) and if the startup is successful, indicate that the controller is in execution mode or RUN (12)(13)(14). The information received in (08)(11)(14) is included in the attached table. Field Type Description TYPE STRING Fixed value. TIMESTAMP Instant Instant.now () value assigned when receiving the event from the PLC. MAP HashMap The HashMap with all fields. METHOD byte Value of \"method\" as defined in S7Parameter. FUNCTION byte Value of \"function\" as defined in S7Parameter. CURRENT_MODE short Status value reported in the event. Check the ModeTransitionType enum. With the sequence diagram and the data structures that will be received by the application, we can analyze the Java code for this specific function. We think this should serve as a pseudocode for the other languages. public class PLCEventModeSubscription { public static void main(String[] args) throws Exception { try (PlcConnection connection = new PlcDriverManager() .getConnection(\"s7://192.168.1.51?remote-rack=0&remote-slot=3&controller-type=S7_400\")) { final PlcSubscriptionRequest.Builder subscription = connection.subscriptionRequestBuilder(); (01) subscription.addEventField(\"myMODE\", \"MODE\"); final PlcSubscriptionRequest sub = subscription.build(); System.out.println(\"Query: \" + sub.toString()); final PlcSubscriptionResponse subresponse = sub.execute().get(); if (subresponse.getResponseCode(\"myMODE\") == PlcResponseCode.OK) { (04) PlcConsumerRegistration registerMode = subresponse .getSubscriptionHandle(\"myMODE\") (05) .register(msg -> { (08)(11)(14) System.out.println(\"******** S7ModeEvent ********\"); Map map = ((S7ModeEvent) msg).getMap(); map.forEach((x, y) -> { System.out.println(x + \" : \" + y); }); short currentmode = (short) map.get(S7ModeEvent.Fields.CURRENT_MODE.name()); System.out.println(\"CURRENT_MODE MSG: \" + ModeTransitionType.enumForValue(currentmode).name()); System.out.println(\"****************************\"); }); } System.out.println(\"Waiting for the messages.\"); Thread.sleep(120000); connection.close(); System.out.println(\"Ending the connection.\"); } } } System events allow to receive asynchronously any event that affects the operation of the controller, or any of its peripheral equipment that is capable of sending events through a PROFIBUS or Profinet fieldbus. A first example of its use is the change of state of a CP, IM or FM within the architecture of the controller. This will allow the application to indicate that there is an effect on the system that may affect the quality of the signals used, allowing preventive or corrective actions to be taken as required. In general, system and user events are part of the same group of events, but they are differentiated to facilitate their processing. From the sequence diagrams after subscribing to the required event type (01)(02)(03)(04), the consumer (05) is registered to start receiving the events either from the SYS system or from the user USR. When the event is generated, it is sent to the diagnostic buffer (06) and an image of it is sent to all consoles registered to receive this type of event (07) distributed by the OS (08). Since at the protocol level the events are not differentiated, the PLC4X driver (08) is in charge of classifying the events in SYS or USR and transferring them to the registered consumer (09). For didactic purposes, a step-by-step explanation has been carried out, but in general the App application can be subscribed to the four types of events simultaneously. The following table shows the fields available for each message. Field Type Description TYPE STRING Fixed value. TIMESTAMP Instant Instant.now () value assigned when receiving the event from the PLC. EVENT_ID short OS generated event ID. PRIORITY_CLASS byte Value of \"method\" as defined in S7Parameter. OB_NUMBER byte Value of \"function\" as defined in S7Parameter. DAT_ID short Status value reported in the event. Check the ModeTransitionType enum. INFO1 WORD System information 1 word long. INFO2 DWORD System information 2 words l ng. For SYS events, the EVENT_ID is generated automatically by the OS, and basically they are constant in the different families of controllers. For the USER or User-defined events follow the same pattern as system events. They have the particularity that the value of EVENT_ID must be between the values 0xAXXX and 0xBYYY. This programming of the user-defined events is carried out at the level of the PLC(AS) controller, so we recommend the technical note [3] of the Siemens portal. In the case of user-defined messages, it is important to take into account that these are reported to the diagnostic buffer, which has a limited capacity depending on the CPU model used. Also take into account that the diagnostic buffer works like a circular buffer, so the oldest messages will be lost. +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ |15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ \\__________/\\__________/\\____________________/ Event class IDs Event number Event Class: 1 Standard OB Events 2 Synchronous errors 3 Asynchronous errors 4 Mode transition 5 Run-time events 6 Communications events 7 Events for fail-safe and fault tolerant systems 8 Standardized diagnostic data on modules 9 Predefined user events A,B Freely definable events C,D,E Reserved F Events for modules other than CPUs (for example, CPs, FMs) IDs (Bit) 8 0:Event leaving state, 1:Event entering state 9 1:Entry in diagnostic buffer 10 1:Internal error 11 1:External error In the previous table we can see how the event classes are coded, and how they are classified. If you require detailed information on each event, the user’s App must interpret the indicated bits. In the INFO1 and INFO2 fields, specific diagnostic information associated with the event is generally attached, or some information that needs to be recorded in the case of user events. The INFO1 field contains information that can be stored in a word, namely, WORD, INT of ARRAY [0..1] OF CHAR. The INFO2 field contains information that can be stored in a double word, namely, DWORD, DINT, REAL, TIME, ARRAY [0..3] OF CHAR. Below is an example code for the subscription of events type SYS. public static void main(String[] args) throws Exception { try (PlcConnection connection = new PlcDriverManager(). getConnection(\"s7://192.168.1.51?remote-rack=0&remote-slot=3&controller-type=S7_400\")) { final PlcSubscriptionRequest.Builder subscription = connection.subscriptionRequestBuilder(); (01) subscription.addEventField(\"mySYS\", \"SYS\"); final PlcSubscriptionRequest sub = subscription.build(); System.out.println(\"Query: \" + sub.toString()); final PlcSubscriptionResponse subresponse = sub.execute().get(); PlcConsumerRegistration registerSys = subresponse .getSubscriptionHandle(\"mySYS\") (05) .register(msg -> { (09) System.out.println(\"******** S7SysEvent ********\"); Map map = ((S7SysEvent) msg).getMap(); map.forEach((x, y) -> { System.out.println(x + \" : \" + y); }); Integer eventid = (Integer) map.get(S7SysEvent.Fields.EVENT_ID.name()); System.out.println(\"DIAGNOSTIC: \" + S7DiagnosticEventId. valueOf(eventid.shortValue()).getDescription()); (10) System.out.println(\"****************************\"); }); System.out.println(\"Waiting for the messages.\"); Thread.sleep(120000); connection.close(); System.out.println(\"Ending the connection.\"); } } And below is an example code for the subscription of events type USR. public static void main(String[] args) throws Exception { try (PlcConnection connection = new PlcDriverManager(). getConnection(\"s7://192.168.1.51?remote-rack=0&remote-slot=3&controller-type=S7_400\")) { final PlcSubscriptionRequest.Builder subscription = connection.subscriptionRequestBuilder(); subscription.addEventField(\"myUSR\", \"USR\"); final PlcSubscriptionRequest sub = subscription.build(); System.out.println(\"Query: \" + sub.toString()); final PlcSubscriptionResponse subresponse = sub.execute().get(); PlcConsumerRegistration registerUsr = subresponse .getSubscriptionHandle(\"myUSR\") (05) .register(msg -> { System.out.println(\"******** S7UserEvent *******\"); Map map = ((S7UserEvent) msg).getMap(); map.forEach((x, y) -> { (09) System.out.println(x + \" : \" + y); }); System.out.println(\"****************************\"); }); System.out.println(\"Waiting for the messages.\"); Thread.sleep(120000); connection.close(); System.out.println(\"Ending the connection.\"); } } The Java code shows how to detect the type of event in an event type SYS. In the S7 driver, there is an enum object S7DiagnosticEventId(10) that allows us to identify which internal event of the PLC(AS) generated it and thus, through the interpretation of the INFO1 and INFO2 fields, determine the root cause of the event. To date, the enum object S7DiagnosticEventId contains a considerable amount of diagnostic values, it must be updated according to the new CPUs or firmware versions available. Unlike SYS events, USR events must be interpreted directly by the App application, so they are generally scheduled during the development phase of the S7App application. By having INFO1 and INFO2 in the S7App program, the user can transfer data associated with events, such as transitions between phases, events of diagnostic routines such as firts-out or the start or end of a batch process, all asynchronously. The registration sequence for subscription is the typical one carried out so far (01)(02)(03)(04)(05). From that moment on, you can start receiving alarm events asynchronously. Depending on your application, you can make a request for the currently active alarms in the alarm buffer of the PLC(AS), in this way you can prepare a reception buffer or establish the correct state of a state machine that depends on the Active events in the controller. You must take into account that when making the request (06), from a few to hundreds of alarms can be stored depending on the complexity of your application and the capacity of the PLC (AS). In this scenario, the PLC4X driver maintains the dialogue with the OS to receive sequentially (07)(08)(09)(10)(11)(12)(13)(14) the alarms stored on the controller, to later transfer them to the user application App (15). At the end of the subscription process, it will begin to receive the events generated by the system, such as high precision time signals (16)(17)(18)(19) or events generated by the user application (20)(21)(22). This simple sequence of events is used by process applications based on PCS7, for the handling of alarms, events and logging of practically all the events of the distributed control system (DCS). Another important feature of the driver is the ability to recognize the alarms generated from the PLC(AS). In (23)(24)(25) the S7App application generates an alarm/event that is required to be acknowledged by the user to continue with the execution of a specific routine. The user applications App generates the acknowledgment (27)(28) using the corresponding alarm identifier, the OS is responsible for making the confirmation (29)(30) and asynchronously generating an event for the update of the state machine in the App(31)(32). Within the cyclical execution of the application S7App waits for the confirmation of the alarm (26) to continue with some specific routine. TODO: Field description Field Type Description TYPE TIMESTAMP TIMESTAMP_GOING TIMESTAMP_COMING ASSOCIATED_VALUES MAP EVENT_ID EVENT_STATE STATE ACKSTATE_GOING ACKSTATE_COMING EVENT_GOING EVENT_COMING EVENT_LAST_CHANGE SIG SIG_[1…8] SIG_STATE SIG_[1…8]_STATE SIG_DATA SIG_[1…8]_DATA SIG_[1…8]_DATA_GOING SIG_[1…8]_DATA_CO SIG_[1..8]_DATA_STATUS SIG_[1…8]_DATA_SIZE SIG_[1…8]_DATA_LENGTH TODO: Example code The cyclical subscription allows the acquisition of data in passive mode, that is, the data is sent from the PLC in a cyclical and synchronous way. The data transfer has three time bases: B01SEC: Time base 0.1 Sec. (100 mSec.). B0SEC: Time base 1.0 Sec. B10SEC: Time base 10 Sec. The system status list gives access to the operating data of the PLC, such as memory space, operating status, status of the control switches, as well as diagnostic data of expansion cards or decentralized peripherals, PROFIBUS or PROFINET . This is fundamental data to determine the quality of the data supplied by the PLC. By initiating the connection with the PLC you can determine its operating status, which will allow you to define the quality of the data taken and what the implemented application can do or not, eventually this is the procedure carried out by the Siemens CPs. Why SZL and not SSL? Well, creative freedom. The translation of the manuals from German to Spanish use SZL and German to English use SSL. Both the source code and the documentation use this reduction to keep the text uniform. Due to the fact that the data structures are so varied, basically one per type of diagnosis, the decision was made to return these as an array of bytes, leaving the developer to implement the parser according to their requirements. For a first approach to using system state lists a byte array to JSON notation parser is available at \"org.apache.plc4x.java.s7.readwrite.utils.StaticHelper.SZL\" . Make use of the XXX document for a detailed explanation of each SZL, since as indicated, everything will depend on the hardware you have installed. The access to the SZL of the PLC is done as a read request, where the PLCTag is formed by two fields \"SZL_ID\" and \"INDEX\". SZL_ID: Number assigned to the SZL list. There are variants of the SZL_ID depending on whether the request is total, partial or just the header. To facilitate its use, the representation will always be in hexadecimal with the format 0xxyID. +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ |15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ \\__________/\\__________/\\____________________/ Module Number of Number of the partial class the partial list list extract Number of the partial list : The number of the partial SZL list you want to read. Number of the partial list extract: Defines which part of the partial list you want to extract. It varies from list to list. Module Class: The requests for the partial list depend on the hardware that is being used, generally the IM (communication cards), FM (special functions) and CP (periphery controller) have their own diagnostic system, which can be consulted through of the SZL_ID/INDEX PlcTag. Module Class: +--------------+-----------------+ | Module class | Coding (Binary) | +--------------|-----------------+ | CPU | 0000 | +--------------|-----------------+ | IM | 0100 | +--------------|-----------------+ | FM | 1000 | +--------------|-----------------+ | CP | 1100 | +--------------|-----------------+ INDEX: Number of the required sublist. To facilitate its use, the representation will always be in hexadecimal with the format 0xhhhh. public static void main(String[] args) throws Exception { System.setProperty(SimpleLogger.DEFAULT_LOG_LEVEL_KEY, \"trace\"); System.out.println(\"******************************************************************************************\"); System.out.println(\"Before using, take a look at:\"); System.out.println(\"System Software for S7-300/400.\\r\\nSystem and Standard Functions - Volume 1/2\"); System.out.println(\"Document: A5E02789976-01\"); System.out.println(\"Chapter 34 System Status Lists (SSL).\"); System.out.println(\"URL: https://cache.industry.siemens.com/dl/files/604/44240604/att_67003/v1/s7sfc_en-EN.pdf\"); System.out.println(\"******************************************************************************************\"); try (PlcConnection connection = new DefaultPlcDriverManager().getConnection(\"s7://10.10.1.33?remote-rack=0&remote-slot=3&controller-type=S7_400\")) { //(01) final PlcReadRequest.Builder readrequest = connection.readRequestBuilder(); //(02) readrequest.addTagAddress(\"MySZL\", \"SZL_ID=16#0012;INDEX=16#0000\"); //(03) final PlcReadRequest rr = readrequest.build(); //(04) final PlcReadResponse szlresponse = rr.execute().get(); //(05) if (szlresponse.getResponseCode(\"MySZL\") == PlcResponseCode.OK){ //(06) Collection data = szlresponse.getAllBytes(\"MySZL\"); //(07) byte[] dbytes = ArrayUtils.toPrimitive(data.toArray(new Byte[data.size()])); //(08) SZL szl = SZL.valueOf(0x0012); //(09) ByteBuf wb = wrappedBuffer(dbytes); //(10) StringBuilder sb = szl.execute(wb); //(11) System.out.println(sb.toString()); //(12) } else if (szlresponse.getResponseCode(\"MySZL\") == PlcResponseCode.NOT_FOUND){ //(13) System.out.println(\"SZL is not supported.\"); } Thread.sleep(2000); System.out.println(\"Bye...\"); } } The request for the SZL lists follows the same pattern of variable readings, for each request a response, unlike the request for process variables where several can be grouped in a single request, the SZL request must correspond to one request to one petition. Like other requests, the connection URL (01) is established and the request constructor instance (02) is created. The associated PLCTag is added to the diagnostic list (one per request), in this case the SZL_ID=0x0012 and INDEX=0x0000 (03) which allows obtaining the identification and firmware of the PLC. In (04) and (05), we prepare and execute the request to the PLC. If we have a valid response (06) we can perform the processing of the data stream obtained, which as indicated is an array of bytes which is obtained in (07) and (08). As we pointed out in the support libraries, we have an \"SZL\" object (an enum), which allows us to select the appropriate parser based on the numerical index SLZ_ID (09). In (10) we make a wrapper in a ByteBuf type (from the Netty library) in order to pass it to the \"szl\" instance through the \"execute\" method (11). When processing the data buffer we must obtain in (12) a StringBuilder with the JSON representation. {\"RECORDS\":[{\"AUSBG2\":0,\"AUSBG1\":61,\"BGTYP\":130,\"INDEX\":1,\"MIFB\":\"6ES7 417-4XT05-0AB0 \"},{\"AUSBG2\":0,\"AUSBG1\":2,\"BGTYP\":130,\"INDEX\":6,\"MIFB\":\"6ES7 417-4XT05-0AB0 \"},{\"AUSBG2\":768,\"AUSBG1\":22021,\"BGTYP\":0,\"INDEX\":7,\"MIFB\":\" \"},{\"AUSBG2\":3,\"AUSBG1\":22021,\"BGTYP\":0,\"INDEX\":129,\"MIFB\":\"Boot Loader \"}],\"LENGTHDR\":28,\"SZL-ID\":17,\"INDEX\":0,\"N_DR\":4} As noted above, the parser performed on the SZL enum is not complete, so the missing information must be obtained from the returned fields. For further details you should consult []. In case of not being able to process the request, it is detected in (13) to take the necessary measures. The following diagram represents the information in JSON format. From the obtained StringBuilder, you can use the JSON processor of your choice to access the different fields. Module class SZL-ID Implemented SZL List 16#xy00 Tested with S7-400, JSON Module identification 16#xy11 Tested with S7-400, JSON CPU characteristics 16#xy12 Tested with S7-400, JSON User memory areas 16#xy13 Tested with S7-400, JSON System areas 16#xy14 Tested with S7-400, JSON Block types 16#xy15 Tested with S7-400, JSON Interrupt status 16#xy22 Tested with S7-400, JSON Assignment between process image partitions and OBs 16#xy25 Tested with S7-400, JSON Communication status data 16#xy32 Tested with S7-400, JSON H CPU group information 16#xy71 Status of the module LEDs 16#xy74 Tested with S7-400, JSON Switched DP slaves in the H-system 16#xy75 Module status information 16#xy91 Tested with S7-400, JSON Rack / station status information 16#xy92 Tested with S7-400, JSON Rack / station status information 16#xy94 Tested with S7-400, JSON Extended DP master system / PROFINET IO system information 16#xy95 Tested with S7-400, JSON Module status information, PROFINET IO and PROFIBUS DP 16#xy96 Tested with S7-400, JSON Tool changer information (PROFINET IO) 16#xy9C Tested with S7-400, JSON Diagnostic buffer of the CPU 16#xyA0 Tested with S7-400, JSON Module diagnostic information (data record 0) 16#xyB1 Tested with S7-400, JSON Module diagnostic information (data record 1), geographical address 16#xyB2 Tested with S7-400, JSON Module diagnostic information (data record 1), local address 16#xyB3 Tested with S7-400, JSON Diagnostic data of a DP slave 16#xyB4 Tested with S7-400, JSON Especially when it comes to the input- and output addresses for analog channels, the start addresses are configurable and hereby don’t always start at the same address. In order to find out what addresses these ports have, please go to the device setting of your PLC in TIA Portal Especially pay attention to this part: In above image you can see that this device has 8 digital inputs (DI 8) and 2 analog inputs (AI 2_1) as well as 6 digital outputs (DQ 6). The start addresses of the digital inputs and outputs start directly at 0. The analog inputs however start at address 64. Each digital input and output can be addresses by a single bit-address (start-address and offset) or can be read in a block by reading a full byte starting at the given start address without providing a bit offset. https://snap7.sourceforge.net/ https://support.industry.siemens.com/cs/document/13649203/simatic-net-pc-software-s7-programming-interface?dti=0&dl=en&lc=es-ES https://support.industry.siemens.com/cs/document/109797648/simatic-comparison-list-for-s7-300-s7-400-s7-1200-s7-1500?dti=0&lc=en-WW https://support.industry.siemens.com/cs/mdm/109746537?c=98956468747&lc=es-DO https://support.industry.siemens.com/cs/document/15166942/writing-user-specific-information-to-the-diagnostic-buffer-of-a-cpu-(sfc-52)?dti=0&lc=en-ES https://support.industry.siemens.com/cs/document/24013249/how-do-you-display-alarm_s-or-alarm_d-messages-with-process-values-(so-called-associated-values)-on-a-wincc-flexible-operator-panel-?dti=0&lc=en-WW https://support.industry.siemens.com/cs/document/109481157/comunicaci%C3%B3n-entre-paneles-de-operador-simatic-hmi-y-convertidores-de-frecuencia-sinamics-g120-para-el-manejo-y-la-visualizaci%C3%B3n-de-avisos-de-fallo-y-de-advertencia-(enlace-directo-sin-controlador)?dti=0&lc=es-WW https://support.industry.siemens.com/cs/document/97550333/sinamics-g-s-hmi-direct-access?dti=0&lc=en-WW https://support.industry.siemens.com/cs/document/21402122/technology-cpus-technology-template-error-messages-?dti=0&lc=en-WW https://support.industry.siemens.com/cs/document/77467239/transforming-warning-and-error-messages-of-a-sinamics-drive-with-the-aid-of-the-xml-parser-and-integrating-them-into-a-step-7-hmi-project?dti=0&lc=en-WW https://support.industry.siemens.com/cs/document/24037531/%C2%BFqu%C3%A9-pasos-de-configuraci%C3%B3n-hay-que-realizar-en-el-simotion-scout-y-el-wincc-flexible-para-que-se-muestren-los-avisos-alarm_s-y-las-alarmas-tecnol%C3%B3gicas-dentro-del-wincc-flexible-runtime-?dti=0&lc=es-ES","title":"S7 (Step7)","component":"plc4x","version":"latest","name":"s7","url":"/plc4x/latest/users/protocols/s7.html","titles":[{"text":"Executive Summary","hash":"_executive_summary","id":1},{"text":"Regarding the Support","hash":"_regarding_the_support","id":2},{"text":"Record of revisions made to the driver","hash":"_record_of_revisions_made_to_the_driver","id":3},{"text":"Connecting as easy as 1-2-3.","hash":"_connecting_as_easy_as_1_2_3","id":4},{"text":"ONE","hash":"_one","id":5},{"text":"Connection String Options","hash":"_connection_string_options","id":6},{"text":"tcp","id":7},{"text":"TWO","hash":"_two","id":8},{"text":"THREE","hash":"_three","id":9},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":10},{"text":"General Format","hash":"_general_format","id":11},{"text":"Memory Areas","hash":"_memory_areas","id":12},{"text":"Data Types","hash":"_data_types","id":13},{"text":"Actors participating in the communication process","hash":"_actors_participating_in_the_communication_process","id":14},{"text":"S7 Read/Write","hash":"_s7_readwrite","id":15},{"text":"S7 Event Subscription","hash":"_s7_event_subscription","id":16},{"text":"SCAN Events","hash":"_scan_events","id":17},{"text":"Subscription to MODE events (S7ModeEvent).","hash":"_subscription_to_mode_events_s7modeevent","id":18},{"text":"Subscription to SYS events (S7SysEvent) and USER events (S7UserEvent).","hash":"_subscription_to_sys_events_s7sysevent_and_user_events_s7userevent","id":19},{"text":"Subscription to ALM type events (S7AlarmEvent).","hash":"_subscription_to_alm_type_events_s7alarmevent","id":20},{"text":"TODO: Cyclic subscription (CYC).","hash":"_todo_cyclic_subscription_cyc","id":21},{"text":"SZL System Status List","hash":"_szl_system_status_list","id":22},{"text":"Notation for SZL request","hash":"_notation_for_szl_request","id":23},{"text":"Some useful tips","hash":"_some_useful_tips","id":24},{"text":"Resources","hash":"_resources","id":25}]},"146":{"id":146,"text":"Some times the problem with industry protocols is, that the most interesting protocols live in places that are not very welcoming to IT folks. Either too hot or too cold and usually no good coffee around. The Capture Replay tool is a little helper, that can possibly help with this. Especially when it comes to developing passive mode drivers this tool can come in very handy. It allows to replay recorded network traffic and to directly intercept this traffic in any passive mode drivers. Possibly it could also work with non passive drivers, but I expect synchronization to be tricky. In order to create a capture I usually connect a device running WireShark to the network. Ideally to the replication port of a network switch so I can record all the traffic. An alternative would be to run WireShark on one of the PCs/Servers having access to the traffic I’m interested in. So if for example I wanted to work on a driver for control system X, capturing the traffic on one of the X servers is probably the simplest way to do it. If complicance rules prevent ths a third option would be to use a network tap to record the capture. Now you need to copy the pcapng file ideally to your development system. The capture can be replayed by the tool you find in plc4j/tools/capture-replay. Here simply look for the target/plc4j-capture-replay-0.12.0-uber-jar.jar and run: java -jar target/plc4j-capture-replay-0.12.0-uber-jar.jar --input-file {path to capture} --output-device {name of the network device} --replay-speed 1 --loop true The options input-file and output-device are mandatory, the rest is optional: input-file specifies the path to the capture file (pcapng) output-device name of the network device that will be used for output (name listed when running ifconfig on Linux and Mac or ipconfig on Windows) replay-speed Speed the replay will be played back. 1 is real time, 0 or less is as fast as possible, 0.5 is 50% slower than the original and 2 is twice as fast loop if set to true it will automatically start replaying the capture from the start as soon as the end is reached The replay-speed is ideal to see how your driver can cope with different volumes of traffic. So even if your driver is currently working fine, consider using this tool in order to find out if your system could cope with 50% more nodes or increased polling intervals etc.","title":"Capture Replay","component":"plc4x","version":"latest","name":"capture-replay","url":"/plc4x/latest/users/tools/capture-replay.html","titles":[{"text":"Getting a Capture","hash":"_getting_a_capture","id":1},{"text":"Replaying the Capture","hash":"_replaying_the_capture","id":2}]},"147":{"id":147,"text":"Name Type Default Value Required Description Name Simulated PLC4X Datasource Code simulated Maven Dependency org.apache.plc4x plc4j-driver-simulated 0.12.0 Supported Transports Config options: Name Value Description Supported Operations read Supports all standard IEC 61131 data types outlined below. write Supports all standard IEC 61131 data types outlined below. The simulated driver has the following connection string format:- simulated:{transport}://{ip-address}:{port} An example connection string would look like:- simulated://127.0.0.1 Note the transport and port fields are optional. The simulated addresses have this format: {simulation-type}/{alias}:{data-type}[{array-size}] If the array-size part is omitted, the default size of 1 is assumed. If the data-type part is omitted, it defaults to STRING. The simulation device supports 3 different simulation types STATE - This holds in memory a value for a given alias. This value can be read or written to, however this should only be used in conjunction with a persistent connection. Once the connection is closed the memory area is cleared. RANDOM - This provides a new random value for each read. When writing, a log message is recorded and the value is discarded. STDOUT - Always returns a null value when reading. When writing, a log message is recorded and the value is discarded. Aliases are used to identify the different field addresses. They should only contain alpha-numeric and the full stop (.) character. For readability and language specific technical purposes they should be less than 256 characters. The following data types are supported:- BOOL (boolean) SINT (int 8) USINT (uint 8) BYTE (uint 8) INT (int 16) UINT (uint 16) WORD (uint 16) DINT (int 32) UDINT (uint 32) DWORD (uint 32) LINT (int 64) ULINT (uint 64) LWORD (uint 64) REAL (float) LREAL (double) CHAR (char) WCHAR (2 byte char) STRING (254 bytes) The simulation driver uses a lot of the same logic templates that is used for the other drivers. It is a good way to test PLC4X functionality without having a device to connect to. All of these address formats are valid:- RANDOM/foo:INT RANDOM/foo:UDINT RANDOM/device1.machineA.sensor1:UINT RANDOM/device1.machineA.sensor1:STRING STATE/device1.machineA.sensor1:INT STDOUT/device1.machineA.sensor1:INT","title":"Simulated","component":"plc4x","version":"latest","name":"simulated","url":"/plc4x/latest/users/protocols/simulated.html","titles":[{"text":"Connection String Options","hash":"_connection_string_options","id":1},{"text":"Individual Resource Address Format","hash":"_individual_resource_address_format","id":2},{"text":"Connection String","hash":"_connection_string","id":3},{"text":"General Format","hash":"_general_format","id":4},{"text":"Simulation Types","hash":"_simulation_types","id":5},{"text":"Alias","hash":"_alias","id":6},{"text":"Data Types","hash":"_data_types","id":7},{"text":"Some useful tips","hash":"_some_useful_tips","id":8},{"text":"Examples","hash":"_examples","id":9}]},"148":{"id":148,"text":"In some applications there might be multiple parts of the code that require access to a PLC connection. In contrast to usual microservice architectures, with PLCs we can’t simply open as many connections as we like. For example a S7-1200 typically allows 3 concurrent connections. Also can the process of establishing a connection be a pretty cost-intensive task. For example in the ADS protocol, when connecting, the driver loads the tables containing the description of all data-types defined in the PLC alongside the symbol-table which declares which variables are defined, which addresses they have, which datatype they reference and where they are located in the PLCs memory. Even if only one block of code repeatedly requires access to the PLC, simply creating a connection every time would put a too high load on the PLC and the network. When using the connection cache, many pieces of code can use it in parallel. However, only one piece of code can have access to a connection at the same time. So the first thread asking for a new connection will have the cache create a new connection and return it to the client. It can then use this just like any ordinary connection retrieved from the basic PlcConnectionManager. The main difference however is, that as soon as the client calls close() on this so-called connection-lease, the connection is not closed, but the cache puts it back into the storage, waiting for the next thread to require it. If a thread asks for a connection, which is currently leased by another thread, then the requesting thread will wait till the connection is returned and will then instantly continue using the connection till it then returns it back to the cache. If a second thread however asks for a different connection (with a different connection string), then the connection cache will create a new connection and return that instantly. When using the connection cache, connections should not use a connection-lease for a prolonged period of time. So the connection cache keeps track of the leases it hands out and terminates connection-leases that have not been returned for a long time. Here comes an example application, that uses the connection cache: public static void main(String[] args) throws Exception { PlcConnectionManager connectionManager = CachedPlcConnectionManager.getBuilder().build(); for (int i = 0; i org.apache.plc4x plc4j-connection-cache 0.12.0 In this snippet of code there are some considerations that are worth to be underlined. In recent versions of PLC4X we have refactored the PlcDriverManager to provide access to a PlcConnectionManager interface. This contains all methods that are related to creating connections. The ConnectionCache implements this same interface, therefore you can use a CachedPlcConnectionManager everywhere you can use the normal PlcConnectionManager. A new CachedPlcConnectionManager is usually created using a builder, that can be accessed via: CachedPlcConnectionManager.getBuilder(). This will be explained in more detail in the next chapter. The try-with-resources statement (i.e. try (PlcConnection connection = connectionManager.getConnection(connectionString))) ensures that a leased connection will be automatically returned to the cache after the use. As said before if the application keeps hold of the connection for too long, after a configurable amount of time will be automatically closed by the cache and the thread can no-longer use it (i.e. the maxLeaseTime parameter defaults to 4 seconds and is configurable - see the next chapter on configuring the connection cache). Before handing out a connection-lease, the connection cache will execute a ping() operation on the corresponding connection to check if it’s still valid. If this check fails, the cache will terminate this connection, establish a new one and then return a handle for that new connection. As mentioned before the CachedPlcConnectionManager is configurable. Mainly this involves configuring the timeouts. Name type Default Description maxLeaseTime java.time.Duration 4 seconds Time that a thread is allowed to keep a connection-lease till the connection-cache terminates the lease. maxWaitTime java.time.Duration 20 seconds Time that a thread asking for a connection will wait until the connection cache gives up and throws a PlcConnectionException. The configuration of a CachedPlcConnectionManager is done when creating the instance. For this the builder contains two methods to configure the timeouts. Here comes an example: public static void main(String[] args) throws Exception { PlcConnectionManager connectionManager = CachedPlcConnectionManager.getBuilder() .withMaxLeaseTime(Duration.ofSeconds(10)) .withMaxWaitTime(Duration.ofMinutes(1)) .build(); ... }","title":"The Connection Cache concept","component":"plc4x","version":"latest","name":"connection-cache","url":"/plc4x/latest/users/tools/connection-cache.html","titles":[{"text":"Configuring the CachedPlcConnectionManager","hash":"_configuring_the_cachedplcconnectionmanager","id":1}]},"149":{"id":149,"text":"The plc4j-connection-pool module has been discontinued and has been removed from PLC4X stating with version 0.11.0 There are situations where you don’t want to carry around connections in your code. For example if you have a microservice application, you might have multiple services accessing PLC data. Keeping an open connection for each of these is rather problematic as in contrast to modern computers, PLCs usually are only able to manage a small number of concurrent connections. I think a Siemens S7-1200 is limited to 7 concurrent connections and a Siemens LOGO can’t do more than 3. One alternative would be to open and close the connections all the time. This however puts an unnecessary stress on the PLCs as for protocols like the S7 or the ADS protocol a handshake of multiple requests and responses has to be executed before being able to communicate. As usually these services only require ad-hoc access to a PLC, it would be ideal to share connections between services. Another problem occurs when you open a connection and keep it open for a prolonged time period. Here it can happen quite often that a connection is terminated because the PLC has been turned off. Per default the PLC connection has no means of automatically re-connecting. The PooledPlcDriverManager can help you with both of these scenarios. The PooledPlcDriverManager is a wrapper around the normal PlcDriverManager. The main difference is that as soon as a connection is requested, it will look if one already exists and return that. If no connection exists it will create a new one and keep it in the pool. There are no API differences from using the normal PlcDriverManager so you call createConnection and close just like with the normal PLC4X API. The structure of the code is now more or less like if you would create a new connection for every request and close it afterwards. Another benefit of the PooledPlcDriverManager is that it will check a connection for any problems before returning it to the client. So if a connection was terminated, it will detect this and create a new connection. Here comes a little example program utilizing the PooledPlcDriverManager: PlcDriverManager driverManager = new PooledPlcDriverManager(); // This just simulates a scenario where a lot of connections would be created and immediately destroyed again. for(int i = 0; i < 100; i++) { try(PlcConnection connection = driverManager.getConnection(\"...\")) { ... do something ... (please refer to the PLC4J getting started for details) } } When sharing connections between multiple services, be sure to share the instance of the PooledPldDriverManager as otherwise you will result in having multiple pools.","title":"Connection Pool","component":"plc4x","version":"latest","name":"connection-pool","url":"/plc4x/latest/users/tools/connection-pool.html","titles":[{"text":"The PooledPlcDriverManager","hash":"_the_pooledplcdrivermanager","id":1},{"text":"Example","hash":"_example","id":2}]},"150":{"id":150,"text":"","title":"Tools","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/users/tools/index.html","titles":[]},"151":{"id":151,"text":"Object PLC Mapping (OPM) is heavily inspired by the Java Persistence API (JPA) [1]. One of the main goal of the PLC4X Project is to make it easy to communicate with PLC devices to enable the development of applications that interact with PLCs. As many (or even most) of the application programmers are no experts in PLC Communication and protocols it should be as easy as possible to interact with PLCs without too much domain knowledge. This is exactly the reason why JPA was initialized many years ago to allow the interaction with a Database by simply calling methods on POJOs (Plain old Java Object). This is exactly what the OPM Module is for, to enable PLC communication by simply interacting with a POJO. The following short code snippet shows how to read one value from a PLC via OPM. First, a PlcEntityManager is instantiated, then a connected entity is fetched for a given PLC connection address. Connected means that all method calls of the entity are intersected and replaced by PLC calls. This is then used to print one value to the console. In the second snippet one can see how the Entity class looks. The address where to read the variable pressure from is given in the @PlcField annotation. public static void main(String[] args) { PlcEntityManager em = new PlcEntityManager(); MyEntity entity = em.connect(MyEntity.class, \"s7://...\"); System.out.println(entity.getPressure()); } The class MyEntity is given by @PlcEntity public class MyEntity { @PlcField(\"DB01:DW01:LONG\") private double pressure; public void MyEntity() { // For OPM } public double getPressure() { return pressure; } } [1] https://www.oracle.com/technetwork/java/javaee/tech/persistence-jsp-140049.html","title":"Object PLC Mapping","component":"plc4x","version":"latest","name":"opm","url":"/plc4x/latest/users/tools/opm.html","titles":[{"text":"What is Object PLC Mapping","hash":"_what_is_object_plc_mapping","id":1},{"text":"Simple Example","hash":"_simple_example","id":2},{"text":"Annotations","hash":"_annotations","id":3},{"text":"More details","hash":"_more_details","id":4},{"text":"References","hash":"_references","id":5}]},"152":{"id":152,"text":"PLC4X has a Mock Driver which was initially implemented to be used for Unit Tests and this still is its main purpose. But this driver is also very suitable to play around a bit with the PLC4X API if no Hardware PLC is available. The driver can be found in the Maven module org.apache.plc4x plc4j-transport-test 0.12.0 test The connection string Syntax for the mock driver is mock:{name-of-the-connection}. So you can use multiple Mock Devices at the same time. The Mock Driver does nothing else than forwarding all Requests to a Virtual Device which we can provide to control all responses and also Monitor them, e.g. for unit tests. The Interface for the Mock Device is public interface MockDevice { Pair read(String fieldQuery); PlcResponseCode write(String fieldQuery, Object value); Pair subscribe(String fieldQuery); void unsubscribe(); // ... } Imagine we have some Code which we cannot control or whose functionality we want to test. This can be done with the Mock Driver in the following way. First, a new Mock Connection is established (like any other connection also would be): PlcDriverManager driverManager = new PlcDriverManager(); PlcMockConnection connection = (PlcMockConnection) driverManager.getConnection(\"mock:my-mock-connection\"); You see, that we directly cast the Connection to a PlcMockConnection. This is done, because we need to connect a Device to this Mock Connection. This is done in the following Snippet connection.setDevice(mockDevice); Here, we pass it an instance of MockDevice which could be a simple Implementation of the interface like MockDevice mockDevice = new MockDevice() { Pair read(String fieldQuery) { System.out.println(\"I got a read to \" + fieldQuery); return Pair.of(PlcResponseCode.OK, new PlcString(\"hello\")); } PlcResponseCode write(String fieldQuery, Object value) { System.out.println(\"I got a write to \" + fieldQuery + \" with the value \" + value); return PlcResponseCode.OK; } // ... } This would just return a String Value hello for every request and print all read and write requests to the Console. To use the Mock driver in Unit Tests the easiest way is to generate the MockDriver instance as Mockito (or any other Framework) Mock. Like in the following Example MockDevice mockDevice = Mockito.mock(MockDevice.class); PlcDriverManager driverManager = new PlcDriverManager(); PlcMockConnection connection = (PlcMockConnection) driverManager.getConnection(\"mock:my-mock-connection\"); connection.setDevice(mockDevice); // Populate the Mock to avoid a NPE when(mockDevice).read(anyString()).thenReturn(Pair.of(PlcResponseCode.OK, new PlcString(\"hello\"))); // Some Demo code that uses the same Driver Manager and either the connection from above // or at least mock:my-mock-connection as connection string // Here: send a request to the field \"MyAdress\" connection .readRequestBuilder .addItem(\"station\", \"MyAdress\") .build() .execute() .get(); // Check that the we really issued a Read request to the Field \"MyAdress\" verify(mockDevice).read(eq(\"MyAdress\")); But as the MockDriver uses a static Mock Connection registry the following Code works also MockDevice mockDevice = Mockito.mock(MockDevice.class); // Setup PlcDriverManager driverManager = new PlcDriverManager(); PlcMockConnection connection = (PlcMockConnection) driverManager.getConnection(\"mock:my-mock-connection\"); connection.setDevice(mockDevice); // Populate the Mock to avoid a NPE when(mockDevice).read(anyString()).thenReturn(Pair.of(PlcResponseCode.OK, new PlcString(\"hello\"))); // Some Demo code that uses the same Driver Manager and either the connection from above // or at least mock:my-mock-connection as connection string // Here: send a request to the field \"MyAdress\" // and we build up a new Connection try (PlcConnection conn = driverManager.getConnection(\"mock:my-mock-connection\")) { conn .readRequestBuilder .addItem(\"station\", \"MyAdress\") .build() .execute() .get(); } catch (Exception e) { // do nothing } // Check that the we really issued a Read request to the Field \"MyAdress\" verify(mockDevice).read(eq(\"MyAdress\")); The Snippet above shows that the part under test really has to share nothing with the test code except for the connection string. The above examples show that the MockDriver driver can not only be used to play around with the API but is also a powerful tool to do unit testing of Code which uses the PLC4X API. All that needs to be done is to either pass an instance of the Mocked Connection or just use the same Connection string (e.g. from a test configuration) that was used to Prepare a Mock Device. Some Examples of futher (more Complex) use cases can be found in the PLC4X Codebases, e.g. in the following classes org.apache.plc4x.java.opm.PlcEntityManagerTest org.apache.plc4x.java.opm.PlcEntityManagerComplexTest org.apache.plc4x.java.scraper.ScraperTest and many more Test classes, especially in the OPM and the Scraper Module.","title":"Testing (or using PLC4X without a PLC)","component":"plc4x","version":"latest","name":"testing","url":"/plc4x/latest/users/tools/testing.html","titles":[{"text":"The Mock Driver","hash":"_the_mock_driver","id":1},{"text":"Simple Example","hash":"_simple_example","id":2},{"text":"Unit Testing with the Mock Driver","hash":"_unit_testing_with_the_mock_driver","id":3},{"text":"Conclusion","hash":"_conclusion","id":4}]},"153":{"id":153,"text":"While the Apache PLC4X API allows simple access to PLC resources, if you want to continuously monitor some values and have them retrieved in a pre-defined interval, the core PLC4X API method is a little bit uncomfortable. Especially when you have multiple batches of data you want to have refreshed in different intervals. In this case you need to take care of the scheduling of queries, need to manage the connection state (Check if the connection is still available and to apply countermeasures, if there are problems) As we have encountered exactly the same problem for about every integration module we created, the Apache PLC4X team has created a tool called the Scraper. This tool automatically handles all of the tasks mentioned above. The Scraper can be found in the Maven module: org.apache.plc4x plc4j-scraper 0.12.0 In general, you need 3 parts to work with the Scraper: 1) A Scraper Configuration 2) A Scraper Implementation 3) A Handler to handle the results of Scraper jobs In the Scraper Configuration you define the so-called jobs. Sources define connections to PLCs using PLC4X drivers. Generally you can think of a Source as a PLC4X connection string, given an alias name. A Job defines which resources (PLC Addresses) should be collected from which Sources with a given Trigger. All resources in a job will be collected as a batch. Generally multiple types of triggers could theoretically be supported, but for now only a time triggered job (Aka SCHEDULED) is actually supported. In the near future we’re hoping that we will be able to support: - External triggers - Triggering collection based upon PLC-values But, as to now, this has not been implemented yet. The core of the Scraper configuration is the ScraperConfigurationTriggeredImplBuilder class. Use this to build the configuration objects used to bootstrap the Scraper. ScraperConfigurationTriggeredImplBuilder builder = new ScraperConfigurationTriggeredImplBuilder(); As soon as you have your builder instance, you should add at least one source to it. builder.addSource({connectionName}, {plc4xConnectionString}); The connectionName will be what we use when configuring the job to reference which source it should use to collect. In order to configure a job we have to get an instance of a JobConfigurationTriggeredImplBuilder. JobConfigurationTriggeredImplBuilder jobBuilder = builder.job({jobName}, {triggerCommand}); This creates a new job with a given name which is executed based on the information in the triggerCommand. As mentioned above, we currently only support a time-scheduled collection. This generally requires just one parameter: The number of milliseconds between each collection. (SCHEDULED,1000) Above would schedule a collection every 1000ms - so once every second. Up to now this job would not be run anywhere, and it would also not collect anything. So in order to have the job actually do something, we should assign it a source to collect from. jobBuilder.source({connectionName}); Here we could theoretically collect on multiple sources, by simply calling the source() method multiple times. All sources would be collected at the same time, whenever the trigger tells it to. So the last thing we need to configure our first Scraper job, is to add a few fields for it to collect. jobBuilder.field({fieldName}, {fieldAddress}); The field method has to be called for every field we want to add to the current job configuration. It gives a PLC4X address string an easy to understand string name, just like when using the core PLC4X API. As soon as we’re done adding fields, we configure the job by calling the build method. jobBuilder.build(); This configures the finished job and attaches that to the overall Scraper configuration of the scraper configuration. As soon as we’re done configuring jobs, we need to create the Scraper configuration by calling the build method on the builder: ScraperConfigurationTriggeredImpl scraperConfig = builder.build(); In order to run the Scraper, the following boilerplate code is needed. try { PlcDriverManager plcDriverManager = new PooledPlcDriverManager(); TriggerCollector triggerCollector = new TriggerCollectorImpl(plcDriverManager); TriggeredScraperImpl scraper = new TriggeredScraperImpl(scraperConfig, (jobName, sourceName, results) -> { ... }, triggerCollector); scraper.start(); triggerCollector.start(); } catch (ScraperException e) { log.error(\"Error starting the scraper\", e); } At first a new PooledPlcDriverManager is created (It actually doesn’t have to be the pooled version, but we strongly suggest you use it as for some protocols the connection process is stressfull for the connected PLC). With this plcDriverManager we can then create a so-called TriggerCollector, which we pass in the driver manager as argument. Next comes the probably most important part: We configure the scraper, by binding a Scraper Configuration, a ResultHandler and a TriggerCollector together. After this, the scraper is ready to start, which is then done by calling start on the scraper as well as the triggerCollector. For the sake of clarity, here comes the definition of the ResultHandler interface: @FunctionalInterface public interface ResultHandler { /** * Callback handler. * @param jobName name of the job (from config) * @param connectionName alias of the connection (not connection String) * @param results Results in the form alias to result value */ void handle(String jobName, String connectionName, Map results); } As an alternative to using the Java API, the Scraper Configuration can also be read from a JSON or YAML document. Here come some examples: JSON: { \"sources\": { \"connectionName\": \"connectionString\" }, \"jobs\": [ { \"name\": \"jobName\", \"triggerConfig\": (SCHEDULED,10000) \"sources\": [ \"connectionName\" ], \"fields\": { \"a\": \"{address-a}\", \"b\": \"{address-b}\" } } ] } YAML: --- sources: connectionName: connectionString jobs: - name: jobName triggerConfig: (SCHEDULED,10000) sources: - connectionName fields: a: {address-a} b: {address-b} In both cases, you can create the ScraperConfiguration with the following code: ScraperConfiguration conf = ScraperConfiguration.fromFile(\"{path to the JSON or YAML file}\", ScraperConfigurationTriggeredImpl.class);","title":"Scraper","component":"plc4x","version":"latest","name":"scraper","url":"/plc4x/latest/users/tools/scraper.html","titles":[{"text":"Getting started with the Scraper","hash":"_getting_started_with_the_scraper","id":1},{"text":"Sources","hash":"_sources","id":2},{"text":"Jobs","hash":"_jobs","id":3},{"text":"Configuration using the Java API","hash":"_configuration_using_the_java_api","id":4},{"text":"Running the Scraper","hash":"_running_the_scraper","id":5},{"text":"Configuration using a JSON or YAML file","hash":"_configuration_using_a_json_or_yaml_file","id":6}]},"154":{"id":154,"text":"Apache Calcite Standard SQL Industry-standard SQL parser, validator and JDBC driver.","title":"Apache Calcite","component":"plc4x","version":"latest","name":"apache-calcite","url":"/plc4x/latest/users/integrations/apache-calcite.html","titles":[]},"155":{"id":155,"text":"","title":"Apache Camel","component":"plc4x","version":"latest","name":"apache-camel","url":"/plc4x/latest/users/integrations/apache-camel.html","titles":[]},"156":{"id":156,"text":"","title":"Apache Edgent (Retired)","component":"plc4x","version":"latest","name":"apache-edgent","url":"/plc4x/latest/users/integrations/apache-edgent.html","titles":[]},"157":{"id":157,"text":"Apache IoTDB is database for storing time serie data. Therefore, it can be a good solution for managing the data which is collected by PLC4x. Given a PLC address and some fields, we can consider the PLC as a device in IoTDB, and each field as a measurement in IoTDB. A couple of PLCs form a storage group. For example, there is a virtual storage group mi, and a PLC d1, which has one field RANDOM/foo:Integer. Then, in IoTDB, we can get a time series like root.mi.d1.foo (or root.mi.d1.RANDOM_foo_Integer, as you like). Then, we can write data into IoTDB using JDBC with SQL or native API called session API. https://github.com/apache/plc4x/tree/develop/plc4j/examples/hello-integration-iotdb shows an example to collect data using PLC4x and then writing data to IoTDB. To run the java example, some arguments are needed: e.g., java -jar ….. --connection-string simulated://127.0.0.1 --field-address RANDOM/foo:Integer --polling-interval 1000 --iotdb-address 127.0.0.1:6667 --iotdb-user-name root --iotdb-user-password root --iotdb-sg mi --iotdb-device d1 --iotdb-datatype INT32 --use-jdbc false Then PLC4x will collect data from a simulated PLC device, which generate random integer per 1 second. IoTDB’s address is 127.0.0.1 and the port is 6667. The data will be stored in device root.m1.d1, and the measurement name is RANDOM_foo_Integer. If you are using IoTDB v0.10.0 with the default configuration, and do not manually create the above time series, then IoTDB will consider the data as float. So, after running the program a few secondes, you can query the data using IoTDB’s command line: select * from root.mi.d1; +-----------------------------+-----------------------------+ | Time|root.mi.d1.RANDOM_foo_Integer| +-----------------------------+-----------------------------+ |2020-07-16T20:01:39.216+08:00| -1.34242598E9| |2020-07-16T20:01:40.150+08:00| -9.4141104E7| |2020-07-16T20:01:41.154+08:00| 1.40969664E9| |2020-07-16T20:01:42.155+08:00| 9.5824531E8| |2020-07-16T20:01:43.157+08:00| -4.207406E7| +-----------------------------+-----------------------------+ The detailed usage about IoTDB can be found https://iotdb.apache.org/UserGuide/Master/Client/Programming%20-%20Native%20API.html","title":"Apache IotDB","component":"plc4x","version":"latest","name":"apache-iotdb","url":"/plc4x/latest/users/integrations/apache-iotdb.html","titles":[{"text":"Data Model (Concept)","hash":"_data_model_concept","id":1},{"text":"Example","hash":"_example","id":2}]},"158":{"id":158,"text":"Apache Kafka is an open-source distributed event streaming platform used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications. The PLC4X connectors have the ability to pass data between Kafka and devices using industrial protocols. They can be built from source from the latest release of PLC4X or from the latest snapshot from github. A connect worker is basically a producer or consumer process with a standard api that Kafka can use to manage it. It is able to be run in two modes:- Standalone Distributed Standalone allows you to run the connector locally from the command line without having to install the jar file on your Kafka brokers. In distributed mode the connector runs on the Kafka brokers, which requires you to install the jar file on all of your brokers. It allows the worker to be distrubuted across the Kafka brokers to provide redundancy and load balancing. In order to start a Kafka Connect system the following steps have to be performed: 1) Download the latest version of Apache Kafka binaries from here: https://kafka.apache.org/downloads. 2) Unpack the archive. 3) Copy the target/plc4j-apache-kafka-0.8.0-uber-jar.jar to the Kafka libs or plugin directory specified in the config/connect-distributed.properties file. 4) Copy the files in the config to Kafka’s config directory. 5) Make sure that the host name that the OPCUA server advertises during the discovery process is able to be resolved from the Kafka Connect server. The easiest way to do this is to add the hostname to your hosts file. 1) Open 4 console windows and change directory into that directory 2) Start Zookeeper: bin/zookeeper-server-start.sh config/zookeeper.properties 3) Start Kafka: bin/kafka-server-start.sh config/server.properties 4) Create the \"test\" topic: bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test 5) Start the consumer: bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning The starting configuration for your connect worker is provided by a configuration file. However, once the worker has started the configuration can be changed using the connect REST API which is generally available on http://localhost:8083/connectors. When running in distributed mode all the configuration needs to be done via the REST API. A sample configuration file is provided in the PLC4X Kafka integration repository in the config/plc4x-source.properties directory.. This includes comments as well as meaningful properties that can be used with the worker. The configuration of the connectors via the REST interface expects the same properties as are specified within the example config/plc4x-source.properties file. These will need to be in JSON format and included with a couple of headers. An example below shows the format it expects:- curl -X POST -H \"Content-Type: application/json\" --data '{\"name\": \"plc-source-test\", \"config\": {\"connector.class\":\"org.apache.plc4x.kafka.Plc4xSourceConnector\", // TODO: Continue here ... \"tasks.max\":\"1\", \"file\":\"test.sink.txt\", \"topics\":\"connect-test\" }}' http://localhost:8083/connectors Ideal for testing. 1) Start Kafka connect: bin/connect-standalone.sh config/connect-standalone.properties config/plc4x-source.properties Now watch the console window with the \"kafka-console-consumer\". If you want to debug the connector, be sure to set some environment variables before starting Kafka-Connect: export KAFKA_DEBUG=y; export DEBUG_SUSPEND_FLAG=y; In this case the startup will suspend till an IDE is connected via a remote-debugging session. Ideal for production. In this case the state of the node is handled by Zookeeper and the configuration of the connectors are distributed via Kafka topics. bin/kafka-topics --create --zookeeper localhost:2181 --topic connect-configs --replication-factor 3 --partitions 1 --config cleanup.policy=compact bin/kafka-topics --create --zookeeper localhost:2181 --topic connect-offsets --replication-factor 3 --partitions 50 --config cleanup.policy=compact bin/kafka-topics --create --zookeeper localhost:2181 --topic connect-status --replication-factor 3 --partitions 10 --config cleanup.policy=compact Starting the worker is then as simple as this: bin /connect-distributed.sh config/connect-distributed.properties The configuration of the Connectors is then provided via REST interface: curl -X POST -H \"Content-Type: application/json\" --data '{\"name\": \"plc-source-test\", \"config\": {\"connector.class\":\"org.apache.plc4x.kafka.Plc4xSourceConnector\", // TODO: Continue here ... \"tasks.max\":\"1\", \"file\":\"test.sink.txt\", \"topics\":\"connect-test\" }}' http://localhost:8083/connectors See config/sink.properties for an example configuration. Ideal for testing. 1) Start Kafka connect: bin/connect-standalone.sh config/connect-standalone.properties config/plc4x-sink.properties Now open console window with \"kafka-console-producer\". Producing to the kafka topic using the sample packet shown below should result all the values included in the payload being sent to the PLC using the mapping defined in the sink properties. {\"schema\": {\"type\":\"struct\",\"fields\": [{\"type\":\"struct\",\"fields\": [{\"type\":\"boolean\",\"optional\":true,\"field\":\"running\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"conveyorLeft\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"conveyorRight\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"load\"}, {\"type\":\"int32\",\"optional\":true,\"field\":\"numLargeBoxes\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"unload\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"transferRight\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"transferLeft\"}, {\"type\":\"boolean\",\"optional\":true,\"field\":\"conveyorEntry\"}, {\"type\":\"int32\",\"optional\":true,\"field\":\"numSmallBoxes\"}], \"optional\":false,\"name\":\"org.apache.plc4x.kafka.schema.Field\",\"field\":\"fields\"}, {\"type\":\"int64\",\"optional\":false,\"field\":\"timestamp\"}, {\"type\":\"int64\",\"optional\":true,\"field\":\"expires\"}], \"optional\":false,\"name\":\"org.apache.plc4x.kafka.schema.JobResult\", \"doc\":\"PLC Job result. This contains all of the received PLCValues as well as a recieved timestamp\"}, \"payload\": {\"fields\": {\"running\":false,\"conveyorLeft\":true, \"conveyorRight\":true,\"load\":false, \"numLargeBoxes\":1630806456, \"unload\":true, \"transferRight\":false, \"transferLeft\":true, \"conveyorEntry\":false, \"numSmallBoxes\":-1135309911}, \"timestamp\":1606047842350, \"expires\":null}} If you want to debug the connector, be sure to set some environment variables before starting Kafka-Connect: export KAFKA_DEBUG=y; export DEBUG_SUSPEND_FLAG=y; In this case the startup will suspend till an IDE is connected via a remote-debugging session. Ideal for production. In this case the state of the node is handled by Zookeeper and the configuration of the connectors are distributed via Kafka topics. bin/kafka-topics --create --zookeeper localhost:2181 --topic connect-configs --replication-factor 3 --partitions 1 --config cleanup.policy=compact bin/kafka-topics --create --zookeeper localhost:2181 --topic connect-offsets --replication-factor 3 --partitions 50 --config cleanup.policy=compact bin/kafka-topics --create --zookeeper localhost:2181 --topic connect-status --replication-factor 3 --partitions 10 --config cleanup.policy=compact Starting the worker is then as simple as this: bin /connect-distributed.sh config/connect-distributed.properties The configuration of the Connectors is then provided via REST interface: curl -X POST -H \"Content-Type: application/json\" --data '{\"name\": \"plc-sink-test\", \"config\": {\"connector.class\":\"org.apache.plc4x.kafka.Plc4xSinkConnector\", // TODO: Continue here ... \"tasks.max\":\"1\", \"file\":\"test.sink.txt\", \"topics\":\"connect-test\" }}' http://localhost:8083/connectors If an error occurs when reading or writing PLC addresses a graceful backoff has been implemented so that the PLC isn’t bombarded with requests. However as the number of connectors for each PLC should be limited to reduce the load on the PLC, the graceful backoff shouldn’t have a major impact. For the source connector the PLC4X scraper logic is able to handle randomized polling rates on failures, this is buffered within the connector, the poll rate of the connector has no affect on the PLC poll rate. For the sink connector, if a write fails it is retried a configurable number of times with a timeout between each time. A Retriable Exception is raised which provides jitter for the timing of the retries. PLC4X specifies a very basic schema and leaves the majority of the implementation to the user. It contains the following fields:- \"fields\": - This is a customized structure that is formed by the fields defined in the connector configuration. This allows the user to defined arbitary fields within here all based on the PLC4X data types. \"timestamp\": - This is the timestamp at which the PLC4X connector processed the PLC request. \"expires\": - This field is used by the sink connector. It allows it to discard the record if it is too old. A value of 0 or null indicates that the record some never be discarded no matter how old it is. As the majority of the schema is left to the user to define we expect to be able to provide backward compatiblity between the base schemas. The schemas for the sink and source connectors are the same. This allows us to producer from one PLC and send the data to a sink.","title":"Apache Kafka","component":"plc4x","version":"latest","name":"apache-kafka","url":"/plc4x/latest/users/integrations/apache-kafka.html","titles":[{"text":"PLC4X Kafka Connectors","hash":"_plc4x_kafka_connectors","id":1},{"text":"Introduction","hash":"_introduction","id":2},{"text":"Quickstart","hash":"_quickstart","id":3},{"text":"Start a Kafka Broker","hash":"_start_a_kafka_broker","id":4},{"text":"Source Connector","hash":"_source_connector","id":5},{"text":"Start a Kafka Connect Source Worker (Standalone)","hash":"_start_a_kafka_connect_source_worker_standalone","id":6},{"text":"Start Kafka Connect Source Worker (Distributed Mode)","hash":"_start_kafka_connect_source_worker_distributed_mode","id":7},{"text":"Sink Connector","hash":"_sink_connector","id":8},{"text":"Start a Kafka Connect Sink Worker (Standalone)","hash":"_start_a_kafka_connect_sink_worker_standalone","id":9},{"text":"Start Kafka Connect Sink Worker (Distributed Mode)","hash":"_start_kafka_connect_sink_worker_distributed_mode","id":10},{"text":"Graceful Backoff","hash":"_graceful_backoff","id":11},{"text":"Schema Compatability","hash":"_schema_compatability","id":12}]},"159":{"id":159,"text":"Apache NiFi allows creating systems that process data around the concept of data-streams. Apache PLC4X provides both Source as well as Sink processors for accessing data in PLCs or writing data to them. Even if the documentation of NiFi states it works with any Java version above 1.8, this is not quite true. I have found that NiFi only works with Java versions below 11. With Java 1.8 you are definitely on the safe-side. When starting with newer versions the start script just terminates after logging a statement that NiFi is now starting. Other than that, I haven’t encountered any other requirements. As soon as you have started NiFi using the nifi.sh run or run-nifi.bat the Web-UI of NiFi should be available at: http://localhost:8080/nifi/ It might take a few seconds for the Web-UI to show up … so if you’re getting errors in the browser, give it some time to start. In order to enable Apache PLC4X support in Apache NiFi all you need to do, is to copy our nar archive into the Nifi installations lib directory. You can either build the nar by building PLC4X and using the version in the plc4j/integrations/apache-nifi/nifi-plc4x-nar/target directory. Or you can download a released version from Maven central: https://search.maven.org/search?q=plc4j-nifi-plc4x-nar Add a PLC4X Source processor to the canvas, click on the Add processor button and drag it into the canvas. A popup will appear in which you are presented the list of all available processors. Enter PLC4X in the search field and select the Plc4xSourceProcessor and click Add (I think you can also double-click on the processor) If you click on a Processor, it’s a little hard to see it’s selected as the selection is not highlighted. However, you can see a processor is selected as the bottom part shows the name of the selected processor. As soon as your new processor is added to the canvas you need to configure it. Do this by double clicking on it (Or by right-clicking and selecting Configure) Here you now need to provide a PLC4X connection string and a PLC resource address String. The PLC connection String is just a normal PLC4X connection string. Please consult the documentation on using the different types of supported connections Here The PLC resource address String is a ;-separarated list of name-value-pairs, where each name is assigned a plc4x addrress. For information on how an address string looks for the type of driver you are using, please check the documentation for the driver you are using Here Example: PLC connection String: s7://192.168.23.30 PLC resource address String: time-value=%DB2:8:TIME;string-value=%DB2:30.0:STRING(10) Before you save the processor there is one further setting that needs to be set. For this please change to the Scheduling tab and set the Run Schedule to let’s say 1 or 2 seconds. If we don’t do this, NiFi will hammer the PLC with requests and in case of my S7 it will simply start denying accepting new connections. It will still say Invalid at the top, but this has nothing to do with your entries, it’s much more that this processor produces two data-streams: SUCCESS and FAILURE. These need to be connected next. After that’s done, click on Apply. But before we can do that, we need to add something we can connect them to. So we simply add another processor to the canvas: Using a LogMessage processor. This simply logs every bit of data to the NiFi log-system. As the LogMessage processor creates a stream of events every time a log message is logged, we need to configure it to auto-terminate that relationship. Do this by double-clicking on the processor and selecting the Settings tab. Here check the checkbox labeled SUCCESS in the section Automatically Terminate Relationships and then click Apply. Now we can connect both processors. Notice the arrow-icon as soon as the mouse is over the Plc4xSourceProcessor? Click on this and start dragging. You notice that you now have a connection which you simply drag onto the log processor. As soon as you release the connection there, the two processors are now connected. As soon as you release the mouse, a popup will pop up and allow you to configure the connection. You can generally select which streams you want to connect. In this case we’ll simply connect the SUCCESS and the FAILURE stream to the log processor. As soon as that’s done, you are finished configuring your flow. Last thing we now need to do, is to start the processors. Currently, they are stopped (You can see it with the red square icon) Do this by right-clicking on both processors and selecting Start. Now you should see an increasing number at the Out of the PLC4X Source and on the In of the Logging Processor. In order to be able to debug the PLC4X, please edit the bin/nifi.sh (On Mac & Linux) and comment in the line: BOOTSTRAP_DEBUG_PARAMS=\"-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000\" For Windows, you would need to manually add: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000 to the run-nifi.bat files JAVA_ARGS. If you want NiFi so suspend at the start, so you can be sure to captue the entire execution, just change suspend=n to suspend=y. This will make NiFi pause till a remote debugging session is connected.","title":"Apache NiFi","component":"plc4x","version":"latest","name":"apache-nifi","url":"/plc4x/latest/users/integrations/apache-nifi.html","titles":[{"text":"Setting Up NiFi","hash":"_setting_up_nifi","id":1},{"text":"Enabling PLC4X Processors in NiFi","hash":"_enabling_plc4x_processors_in_nifi","id":2},{"text":"Using a PLC4X Source Processor in NiFi","hash":"_using_a_plc4x_source_processor_in_nifi","id":3},{"text":"Enabling debugging","hash":"_enabling_debugging","id":4}]},"160":{"id":160,"text":"PLC4X S7 Adapter PLC4X MODBUS Adapter","title":"Apache StreamPipes","component":"plc4x","version":"latest","name":"apache-streampipes","url":"/plc4x/latest/users/integrations/apache-streampipes.html","titles":[]},"161":{"id":161,"text":"https://www.eclipse.org/ditto/ Eclipse Ditto - PLC4X Example: https://github.com/eclipse/ditto-examples/tree/master/plc4x","title":"Eclipse Ditto","component":"plc4x","version":"latest","name":"eclipse-ditto","url":"/plc4x/latest/users/integrations/eclipse-ditto.html","titles":[]},"162":{"id":162,"text":"The PLC4X OPC UA server integration is based around the Eclipse Milo OPC UA server. It uses PLC4X to communicate with industrial devices effectively acting as a industrial OPC UA gateway. The OPC UA server can be built using maven as part of the PLC4X build. mvn install This creates a target directory within plc4x/plc4j/integrations/opcua-server containing a jar file which is the main java executable. The config.yml file is used to configure the server. The following root level settings should be configured. version: The version is just an internal check to confirm that the right version of the configuration file is being used. dir: This is the directory to the security directory. This is where all configuration is stored including certificates. Be sure to secure this directory with the correct permissions. name: This is the name of the OPC UA server. It can be anything but shouldn’t contain spaces. disableInsecureEndpoint: This is used to disable the remote insecure OPC UA endpoint. tcpPort: this can be used to change the opc.tcp port. httpPort: this can be used to change the http.tcp port. devices: is a list of PLC’s or devices that the server should communicate with. Each device should include a name:, connectionString:, and a list of tags:. For each device within devices the following settings should be configured. name: This is the name of the device. It can anything as long as it doesn’t contain spaces. connectionString: Can be any valid PLC4X connection string. For each tag with tags the following settings should be configured:- alias: This is the name of tag it can be anything but shouldn’t have spaces. This will be shown as the tag name within the OPC UA server tree. Be sure that this is unique within the configuration file. address: This is any valid PLC4X address that matches the connection type. An example configuration file is shown below. --- version: \"0.8\" dir: {path-to-security-dir} name: \"Plc4xOPCUAServer\" disableInsecureEndpoint: true devices: - name: \"ModbusDevice\" connectionString: \"modbus-tcp://127.0.0.1:502\" tags: - alias: \"TemporaryBOOLARRAY\" address: \"000001:BOOL[10]\" - alias: \"TemporaryWORD2\" address: \"400002:WORD\" - alias: \"TemporaryUINT3\" address: \"400003:UINT\" - alias: \"TemporaryINT4\" address: \"400004:INT\" - alias: \"TemporaryDINT5\" address: \"400005:DINT[4]\" - alias: \"TemporaryREAL6\" address: \"400006:REAL\" - alias: \"TemporaryREAL7\" address: \"400007:REAL\" - alias: \"TemporaryREAL8\" address: \"400008:REAL\" - name: \"SimulationDevice\" connectionString: \"simulated://127.0.0.1\" tags: - alias: \"Temporary\" address: \"RANDOM/Temporary:Integer\" tcpPort: 12687 httpPort: 8445 To run the java executable execute:- java -jar plc4x-opcua-server-0.8.0-uber-jar.jar -c {path-to-config-file} -i This will start the OPC UA server with the interactive switch (-i). This prompts the server to ask for usernames and passwords upon startup. However, during normal operation the -i switch should be left out. If a certificate isn’t available at {path-to-security-dir}/security/plc4x-opcuaserver.pfx then a self signed is created. This certificate is password protected with the security password given during startup. If you place another certificate here make sure it is password protected and set the password by running the server again with --set-password switch. java -jar plc4x-opcua-server-0.8.0-uber-jar.jar -c {path-to-config-file} -i -s Once the OPC UA server is running you are able to connect to it from your favorite OPC UA client using the connection string. opc.tcp://{ip.address}:12687/plc4x Replacing the {ip.address} with the servers IP address. If you want to use an encrypted connection be sure to move the client certificate created in {path-to-security-dir}/security/pki/rejected to the trusted directory. Otherwise the client will receive a security error when trying to connect.","title":"Introduction","component":"plc4x","version":"latest","name":"eclipse-milo","url":"/plc4x/latest/users/integrations/eclipse-milo.html","titles":[{"text":"Building the server","hash":"_building_the_server","id":1},{"text":"Configuration File","hash":"_configuration_file","id":2},{"text":"Running","hash":"_running","id":3}]},"163":{"id":163,"text":"","title":"Integrations","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/users/integrations/index.html","titles":[]},"164":{"id":164,"text":"TCP UDP Raw Socket Serial Port CAN bus SocketCAN PCAP replay","title":"Transports","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/users/transports/index.html","titles":[]},"165":{"id":165,"text":"A CAN transport is a special category of transport which can bring CAN frame data to various drivers. All of these transports are meant to follow basic CAN frame data semantics. Each CAN transport must provide a CANFrameBuilder interface realization. This builder can be used by drivers which implement application layer protocols on top of CAN bus. The builder allow constructing requests which should be passed to the bus operations. Note this API is available since Apache PLC4X 0.9. Name Value Description Code not available This transport ships only additional API on top of existing Apache PLC4X Transport API. Name CAN Maven Dependency org.apache.plc4x plc4j-transport-can 0.12.0 Options: none, an abstract transport Main purpose of this transport is basic unification of various CAN bus APIs. There is no unified way to access CAN (beside SocketCAN for linux) across multiple platforms. We brought this simplistic facade-alike API to serve very basic project needs. Its main purpose is to let transport implementer bridge with actual transport or another library. With as little effort as possible. Major advantage of CAN transport facade is possibility to implement application layer protocols in a fully portable way. This flexibility is not guaranteed with SocketCAN alone. The CAN transport responsibility is to bring CAN data to driver implementer. This API does not enforce, require or promote a low level bus operations. In this regard, these operations can be made by library available for specific CAN adapter in use. Usage of CAN transport APIs is recommended for portability reasons. Please have a look on CAN describe usage of CAN driver adapter with CAN transport facade. SocketCAN","title":"CAN","component":"plc4x","version":"latest","name":"can","url":"/plc4x/latest/users/transports/can.html","titles":[{"text":"Developer notes","hash":"_developer_notes","id":1},{"text":"Compatible CAN transports","hash":"_compatible_can_transports","id":2}]},"166":{"id":166,"text":"Name Value Description Code pcap Name PCAP file replay Maven Dependency org.apache.plc4x plc4j-transport-pcap-replay 0.12.0 Transport Syntax: {pcap-path} Path to the PCAP or PCAPNG file containing the network recording. Options: replay-speed-factor (1) Numeric value for changing the replay speed: 1 = Normal speed (default) 0 = Maximum speed 0.5 = Half speed 2 = Double speed loop (false) Should the replay start at the beginning of the file as soon as the end is reached? true = Automatically start again false = Stop at the end (default)","title":"PCAP Replay","component":"plc4x","version":"latest","name":"pcap-replay","url":"/plc4x/latest/users/transports/pcap-replay.html","titles":[]},"167":{"id":167,"text":"Name Value Description Code serial Name UDP Socket Communication Maven Dependency org.apache.plc4x plc4j-transport-serial 0.12.0 Transport Syntax: {name of the serial port} Can differ depending on the OS: Windows: \"Com 1\" Mac & Linux: \"/dev/ttyS0\" Options: none","title":"Serial Port","component":"plc4x","version":"latest","name":"serial","url":"/plc4x/latest/users/transports/serial.html","titles":[]},"168":{"id":168,"text":"Name Value Description Code raw Name Raw Socket Communication Maven Dependency org.apache.plc4x plc4j-transport-raw-socket 0.12.0 Transport Syntax: {device-name} Name of the network device doing the capture Options: none","title":"Raw Socket","component":"plc4x","version":"latest","name":"raw-socket","url":"/plc4x/latest/users/transports/raw-socket.html","titles":[]},"169":{"id":169,"text":"Name Value Description Code socketcan Name SocketCAN (software bridge to CAN). Maven Dependency org.apache.plc4x plc4j-transport-socketcan 0.12.0 Transport Syntax: {name of the socketcan interface} Can differ depending on the OS: can0 vcan0 Options: none SocketCAN is linux specific way to access CAN bus. It has its own representation of CAN frames, buffers and so on. This means that you have to program your application against socketcan and not raw can interfaces. Primary difference is fixed length of socketcan frames (CAN 2.0A always takes 16 bytes) and extended size of CAN identifier. Standard CAN frame uses 11 bits while socketcan uses 29 and appends flags to remaining 3 bits. Use of socketcan means that Apache PLC4X does not handle low level bus access, arbitration, coordination and so on. This is done by socketcan and layer below it. This transport have been successfully tested with vcan as well as gs_usb drivers.","title":"SocketCAN","component":"plc4x","version":"latest","name":"socketcan","url":"/plc4x/latest/users/transports/socketcan.html","titles":[]},"170":{"id":170,"text":"Name Value Description Code tcp Name TCP Socket Communication Maven Dependency org.apache.plc4x plc4j-transport-tcp 0.12.0 Transport Syntax: {IP address or hostname}:{port} The port can be omitted, if the protocol provides a default port value. Options: none","title":"TCP","component":"plc4x","version":"latest","name":"tcp","url":"/plc4x/latest/users/transports/tcp.html","titles":[]},"171":{"id":171,"text":"Name Value Description Code udp Name UDP Socket Communication Maven Dependency org.apache.plc4x plc4j-transport-udp 0.12.0 Transport Syntax: {IP address or hostname}:{port} The port can be omitted, if the protocol provides a default port value. Options: none","title":"UDP","component":"plc4x","version":"latest","name":"udp","url":"/plc4x/latest/users/transports/udp.html","titles":[]},"172":{"id":172,"text":"In this simple case, an application asks the DriverManager to forward a connection creation to the corresponding Driver implementation, which then creates both a Connection and a MessageCodec instance. The Connection is the logical link between the connection state and the MessageCodec. A MessageCodec uses a TransportInstance to communicate with the target device. Serial transports based on RS475 and UDP Transports currently don’t allow sharing. That means only one connection instance can have access to one RS485 or one shared local UDP Port (Multiple UDP transport instances with different local ports however are possible). As soon as one connection is established and a second connection would try to access this, this would result in errors. However, multiple devices could be attached to the same RS458 port (Modbus RTU and Modbus ASCII explicitly supports this, however using different devices using different protocols over the same port is not possible) and in BACnet connecting to multiple remote BACnet devices would require one local UDP port to be used by multiple connections. Some protocols, such as BACnet require remotes to send data to a fixed udp port on a non-broadcast address. This causes problems as soon as we want to connect to multiple BACnet devices from the same host as only one instance can get access to that port.","title":"Architecture of PLC4X Connections","component":"plc4x","version":"latest","name":"architecture","url":"/plc4x/latest/developers/architecture.html","titles":[{"text":"Simple case","hash":"_simple_case","id":1},{"text":"Problems","hash":"_problems","id":2},{"text":"Protocols requiring us to use a fixed port on a non-broadcast address","hash":"_protocols_requiring_us_to_use_a_fixed_port_on_a_non_broadcast_address","id":3},{"text":"Protocols only allowing one connection at a time","hash":"_protocols_only_allowing_one_connection_at_a_time","id":4}]},"173":{"id":173,"text":"PLC4X is built with Apache Maven and we have tried to make the build as simple as possible. However PLC4X aims at providing means to communicate with PLCs of multiple vendors using a shared API but also in a variety of different languages. We have partitioned the build to allow selecting the parts that are of interest. This is done by selecting so-called Maven profiles. More about these later down in this manual. For your convenience we also have provided a Maven-Wrapper, that should allow building of PLC4X with only Java 11 or greater as requirement. The only requirements to building PLC4X should be: Java 11 JDK (or newer) Git (Even if you are building the source distribution, the Kafka plugin seems to require a git executable being available on the systems PATH) Apache Maven (3.6.0 or newer) (Optional) (See next chapter) The so-called Maven-Wrapper is used by calling the Maven-Wrapper scripts mvnw (Mac & Linux) or mvnw.cmd (Windows) instead of the default Maven commands mvn and mvn.cmd. These helpers ensure Maven is available in at least the version defined in .mvn/maven-wrapper.properties. If no suitable version can be found, it is automatically downloaded and installed alongside the project (So it doesn’t have to be downloaded every time and every project can have it’s own Maven version) After the script has ensured a suitable Maven version is available, this is used and all arguments and parameters are transparently forwarded to this. So simply adding the additional w to each of the Maven commands, there should be no difference to using a pre-installed Maven version. This document can’t provide you with all the details needed to get started with Maven itself. But there is a lot of good documentation out there. Justin McLean and Christofer Dutz even recorded a not quite 2 hour Maven training Video some time ago for another Apache project. It should handle all the details needed to get a general understanding of Maven and how it works. Recording of a Maven Training for Apache Flex from 2016 In general all modules which are not considered production-ready are located in the sandbox section of the project. They are not built per default and are enabled by enabling the with-sandbox Maven profile. As especially building the C++, and C# drivers requires building of some third party artifacts and increases build-time dramatically and requires setting up some additional third party tools, we have excluded these parts form the default Maven build. The following profiles are available (They have to be enabled additionally to the with-sandbox profile): with-c: Builds all C related modules, integrations and examples with-dotnet: Builds all C# and .Net related modules, integrations and examples with-go: Builds all Go related modules, integrations and examples with-java: Builds all Java related modules, integrations and examples with-python: Builds all Python related modules, integrations and examples (Also requires with-sandbox) with-sandbox: Builds the modules which are not yet considered stable enough to become part of the main distribution As these profiles typically require some preparation and setup on your development machine, please read the Preparing your Computer guide for a detailed description on this. Beyond that there is an additional profile with-proxies which will enable additional modules in each of the activated languages. This proxies module, uses Apache Thrift to generate modules for forwarding requests to an interop server which runs somewhere else or on the same machine. Currently when enabling the with-python module, you are required to also enable the with-proxies profile too as this is currently required there but will probably change in the near future. There are 3 more profiles that allow you to activate additional modules or functionality: with-docker : Some modules also provide the means to build Docker images. By enabling this profile these images are automatically built too with-boost : Builds a C/C` Library used by both the `Apache Thrift` build as well as the `C drivers. Unfortunately this is an extremely intense build so we have setup the PLC4X build to only require this profile to be activated once. If the resulting artifacts are installed in your Maven-Local-Repo, these will be re-used. The minimum Apache PLC4X build will build only the Java modules without any experimental modules: mvn install If you want to skip the running of tests (even if this is not encouraged) you can skip them all together. mvn install -DskipTests All Apache PLC4X modules are built by executing the following command: mvn -P with-c,with-dotnet,with-go,with-java,with-python,with-sandbox install This not only builds the artifacts and creates the jar files, but also runs all unit- and integration-tests. If you want to skip the running of tests (even if this is not encouraged) you can skip them all together. mvn -P with-c,with-dotnet,with-go,with-java,with-python,with-sandbox install -DskipTests This will not skip the compilation of tests, however. The PLC4X Website is also part of the same GIT repository that contains the code and it is built by Maven as well. In order to build the website the following command should be sufficient: mvn site This is just a quick-start version of the site generation, for a fully detailed documentation please read the Website documentation page. Maven supports so-called profiles for customizing the build in special cases. We have tried to keep the number of profiles as low as possible. So far there is only one profile. This profile is automatically enabled on a release-build and it automatically creates some additional artifacts: JavaDoc artifact Sources artifact Source distribution assembly SHA512 checksum files for every artifact PGP signature files for every artifact Generally it is not required to enable ths profile unless you are interested in these Artifacts. Especially for Maven beginners, it might be difficult to understand why a module builds the way it does. Maven contains a lot of concepts to inherit and override settings. The debug-pom profile will generate the so-called effective pom in the modules target directory. This file contains 100% of the settings Maven uses to execute. All settings are inherited and overridden. All Properties are expanded to the value Maven uses. So whenever Maven doesn’t behave the way you expect it to, just enable this profile and it should help you find out, what’s going on. This profile enables some extra strict enforcer rules. It is encouraged to activate this profile during development. In the CI Build this profile is enabled. Some times, actually only on the build-server we have encountered random failures of the prerequisite check build step. In order to still be able to build in this case, activating this profile simply disables these checks. Compiling the library as explained here add the new version in the local Maven repository (i.e. usually under ~/.m2/repository on linux like systems), if you would like to use Gradle as Build Tool for your project you have just to use a local repository in your Gradle build.gradle file. Here there’s an example: repositories { mavenCentral() mavenLocal() } dependencies { implementation group: 'org.apache.plc4x', name: 'plc4j-api', version: '0.8.0-SNAPSHOT' implementation group: 'org.apache.plc4x', name: 'plc4j-driver-s7', version: '0.8.0-SNAPSHOT' implementation group: 'org.apache.plc4x', name: 'plc4j-connection-pool', version: '0.8.0-SNAPSHOT' }","title":"Building PLC4X","component":"plc4x","version":"latest","name":"building","url":"/plc4x/latest/developers/building.html","titles":[{"text":"Requirements","hash":"_requirements","id":1},{"text":"Using the Maven-Wrapper","hash":"_using_the_maven_wrapper","id":2},{"text":"Using Maven","hash":"_using_maven","id":3},{"text":"Building PLC4X with Maven","hash":"_building_plc4x_with_maven","id":4},{"text":"Building the PLC4X Website with Maven","hash":"_building_the_plc4x_website_with_maven","id":5},{"text":"Some special Maven profiles","hash":"_some_special_maven_profiles","id":6},{"text":"apache-release profile","hash":"_apache_release_profile","id":7},{"text":"debug-pom profile","hash":"_debug_pom_profile","id":8},{"text":"development profile","hash":"_development_profile","id":9},{"text":"skip-prerequisite-check profile","hash":"_skip_prerequisite_check_profile","id":10},{"text":"Use the compiled library with Gradle","hash":"_use_the_compiled_library_with_gradle","id":11}]},"174":{"id":174,"text":"On this page we are listing options to attend talks and events around PLC4X. Date Location Type Event Title 18th June 2019 Erfurt (GER) Meetup IoT Thüringen Industrie & IoT: Die perfekte Verbindung mit Flexibus & Apache PLC4X 24th May 2019 Frankfurt (GER) Meetup IoT Hessen Industrial IoT goes Open Source: Apache PLC4X Talks & Party 3th April 2019 Cologne (GER) Conference Building IoT Apache PLC4X: Industry 4.0 done our way 8th March 2019 Solingen (GER) Conference Industrial IoT Day Apache PLC4X: Industry 4.0 done our way 21th February 2019 Aachen (GER) Meetup EURegJUG Maas-Rhine Episode IV - A New Hope: Industry 4.0 Done Our Way 15th February 2019 Nürtingen (GER) Meetup PLC4X Meetup Special Hackathon looking deeper into some new Protocols 15th November 2018 Düsseldorf (GER) Meetup RheinJUG Wie wir mit Apache PLC4X die Silos in der Automatisierungsindustrie aufbrechen 12th-13th November 2018 Berlin (GER) Conference 3. Fachkonferenz: Industrial Analytics & Big Data in der Industrie Kommunikation mit Industrieanlagen ohne Umbau- und Lizenzkosten 22th-24th October 2018 Edinburgh (GB) Conference Open-Source Summit Europe Revolutionizing the production industry with Apache PLC4X 24th-19th September 2018 Montreal (CAN) Conference ApacheCon NA 2018 Revolutionizing the Production Industry with Apache PLC4X (incubating) 20th September 2018 Nürtingen (GER) Meetup PLC4X Meetup First general committer meetup 13th-14th June 2018 Berlin (GER) Conference Apache EU Roadshow Revolutionizing the production industry with Apache PLC4X 4th June 2018 Cologne (GER) Conference Building IoT Industrial IoT und Edge Computing mit Apache PLC4X und Apache Edgent 5th April 2018 Hamburg (GER) Conference TechCamp Hamburg Revolutionizing Industrial IoT with Apache PLC4X 21th January 2018 Hamburg (GER) Conference Nortec Mehr für Weniger? Aber Sicher! 4th-5th May 2019 Brussels (BE) Hackathon EU FOSSA Apache Hackathon Co-creating the future of open source Looking forward to meeting you. If you’ve got or found any events or talks we might be missing, please inform us on dev@plc4x.apache.org. PLC4X Banner","title":"Conferences & Events","component":"plc4x","version":"latest","name":"conferences","url":"/plc4x/latest/developers/conferences.html","titles":[{"text":"Additional Material","hash":"_additional_material","id":1}]},"175":{"id":175,"text":"There are multiple forms in which you can become involved with the PLC4X project. These usually are, but are not limited to: Submitting Pull Requests Filing Bug-Reports Active communication on our mailing lists Promoting the project (articles, blog posts, talks at conferences) Documentation We are a very friendly bunch and don’t be afraid to step forward. We make use of conventional commits. As plc4x is a monolithic polyglot repository we usually define the scope as …(plc4[language shortcut here]/subcomponent) (e.g. a new feature in Bacnet in the Golang part would have a message of feat(plc4go/bacnet): cool new feature for…). The simplest way to submit code changes, is via a GitHub pull-request. In order to do this first create a GitHub account and sign into you account. After that’s done, please to to our GitHub site and create a so-called Fork. What happens now, is that GitHub creates a full copy of the PLC4X repo in your account. Only you can commit to this. Now ideally you check-out your cloned repository: git clone https://github.com/{your-user-id}/plc4x.git Now you have a copy of PLC4X on your computer and you can change whatever you want and as it’s your copy, you can even commit these changes without any danger of breaking things. As soon as you’re finished with your changes and want us to have a look, it’s time to create a so-called Pull-Request. You do that by going to your forked repository page on GitHub. Every forked repository has an additional button called \"New Pull Request\": If you click on this, we will receive a notification on your changes and can review them. We also can discuss your changes and have you perfect your pull request before we accept and merge it into PLC4X. As we are continuously working on PLC4X and you created a copy of our repo, this will become out-of-date pretty soon. In order get the changes we introduced in the official repo you have to tell git about that. You do this locally by adding a new so-called remote. Per default the remote you cloned from is called origin. Usually you will call the second remote upstream but in general you can call it whatever you like. Add the remote on the commandline (or your git gui of choice): git remote add upstream https://github.com/apache/plc4x.git If you list all your remotes, with the following command: git remote -v It should output something like this: origin https://github.com/{your-user-id}/plc4x.git (fetch) origin https://github.com/{your-user-id}/plc4x.git (push) upstream https://github.com/apache/plc4x.git (fetch) upstream https://github.com/apache/plc4x.git (push) If that’s so, you’re fine to continue, if not … well you could ask for assistance on our dev-list. In order to get all changes of our upstream-repository, just execute the following command: git pull upstream This will get all changed from upstream and merge them locally. In order to update your GitHub version, you have to push things back to origin. You can do this by executing the following command: git push (If no remote is provided, git will use origin per default) We use JIRA as our Bug & Issue Tracker. Feel free to submit feature requests, bug reports, patches, comment on issues, … In order to be able to do so, you need to create an account first. Currently Apache has a separate login system for JIRA and all other services, this might change in the future, but right now it’s the way things are. So if you are considering to contribute more than just a one-time-patch, please choose a username that hasn’t been used by an existing Apache committer as this will simplify things if we invite you to become part of the team. If you want to be assigned to an issue because you want to work on it, please request to be added to the JIRA groups on our developers mailing list As our documentation and website are generated as a side-product of our build, contributing to this technically the same as contributing to the code. All our content is written in Asciidoctor and is located in src/site/asciidoc directories. For a reference of the Asciidoctor syntax please have a look at the Asciidoctor documentation. The PLC4X project uses the following branching model. The same model is used for a wide variety of other projects, so it should be pretty straight forward. release contains the latest released state. Development is performed on the develop branch. Features are developed in Feature-Branches with a prefix feature/ Each minor release has a corresponding release branch rel/{major-version}.{minor-version} A release branch is spawned from develop only Bugfix releases don’t have a dedicated release branch, they are just performed on the corresponding minor versions release branch","title":"Contributing","component":"plc4x","version":"latest","name":"contributing","url":"/plc4x/latest/developers/contributing.html","titles":[{"text":"Forms of contribution","hash":"_forms_of_contribution","id":1},{"text":"Commits","hash":"_commits","id":2},{"text":"Pull-Requests","hash":"_pull_requests","id":3},{"text":"Keeping your fork up to date","hash":"_keeping_your_fork_up_to_date","id":4},{"text":"Bug Reports","hash":"_bug_reports","id":5},{"text":"Documentation","hash":"_documentation","id":6},{"text":"Branching model","hash":"_branching_model","id":7}]},"176":{"id":176,"text":"This document describes the roles and responsibilities of the project, who may vote, how voting works, how conflicts are resolved, etc. The Apache Foundation FAQ and How-It-Works explain the operation and background of the foundation. Terms used are defined in the ASF glossary. Apache has a code of conduct that it expects its members to follow. Apache projects define a set of roles with associated rights and responsibilities. The PMC has many responsibilities including complying with ASF policies, reporting to the board, approving releases and adding new committers and PMC members. The chair ensures board reports are submitted and that the project’s roster is up to date. Different decisions require different forms of approval but community consensus is always the goal. Voting when needed should be open for at least 72 hours. Consensus Approval – Consensus approval requires 3 binding +1 votes and no -1 votes (vetoes). Majority Approval – requires at least 3 binding +1 votes more +1 votes than -1 votes. Lazy Consensus – consensus no objections (‘silence gives assent’). Action Who can vote Approval Where to vote Board approval required Code change Committer Lazy Consensus public dev or commit list Release PMC Majority Approval public dev list New committer PMC Consensus Approval private list New PMC member PMC Consensus Approval private list Yes 1) Existing committer removal PMC Consensus Approval private list Existing PMC removal PMC Consensus Approval private list Yes 2) Change chair PMC Consensus Approval private list Yes 3) Notice must be given to board. Except PMC member in question. Only the board can remove PMC members. Need to be approved by the board at the next board meeting.","title":"Decision Making","component":"plc4x","version":"latest","name":"decisions","url":"/plc4x/latest/developers/decisions.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Roles and Responsibilities","hash":"_roles_and_responsibilities","id":2},{"text":"Project Management Committee","hash":"_project_management_committee","id":3},{"text":"The Chair","hash":"_the_chair","id":4},{"text":"Decision Making","hash":"_decision_making","id":5}]},"177":{"id":177,"text":"This part of the Apache PLC4X dedicated to provide information to people wanting to build PLC4X and hopefully also start contributing to this awesome project. We have tried to make the PLC4X build experience as smooth as possible and have tried to reduce the number of required third party tools to an absolute minimum. The full PLC4X build however builds not only Java libraries, but also C++, Python and C# libraries as well as builds Docker images on Linux, Mac and Windows. As a start, you will basically need a Java VM of at least Java 11. Using the Maven-Wrapper you don’t even need a Maven installation. The build will automatically fetch the right version for you. As part of the build we have an initial build step that will do a prerequisite check. Depending on the activated modules, it will check if all preconditions are met and tell you what’s missing. For details please have a look at the Preparing your Computer page. We have a dedicated page on Building PLC4X. Please read this page on information about how to build Apache PLC4X. If you want to work on Apache PLC4X in order to fix things, add things and start contributing in general, please have a look at our Contributing page. It should contain all the information you need. The primary source for getting help definitely is our project mailing list dev@plc4x.apache.org. You can search previous content in our Mail Archive In order to post to the list you first need to subscribe. This can be done by sending an empty Email to dev-subscribe@plc4x.apache.org.","title":"Developer Section","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/developers/index.html","titles":[{"text":"Getting Started","hash":"_getting_started","id":1},{"text":"Building PLC4X","hash":"_building_plc4x","id":2},{"text":"Contributing","hash":"_contributing","id":3},{"text":"Getting Help","hash":"_getting_help","id":4}]},"178":{"id":178,"text":"In PLC4X we are using a tool called JQAssistant for enforcing quality assurance rules. JQAssistant can be thought of as a set of two components: A set of scanners that analyse a project and stores the gathered information in for of linked graphs in a Neo4j database. An engine that executes defined rules against the graph created during the scan phase of the build These rules can produce either reports and tables or they are used to enforce rules. If a pre-defined rule is violated the failed checks can be marked as warning or error that breaks the build. In contrast to using the maven-enforcer-plugin doing cross-domain checks is really simple as all information is available in one big graph. Currently the following scanners are active: CDI Common Common Test Core Analysis EJB3 GraphML JAX-RS JPA 2 JSON JUnit Java Java 9 Java EE 6 Maven 3 OSGi RDBMS TestNG Tycho XML YAML These rules that are automatically checked during the build are defined in src/jjqassistant. If defined in a reactor project, the rules apply to all modules of that (sub-)reactor. So if they are defined in the root module of the project, it applies to all modules. TODO: Finish this \"little detail\" … The scan and analysis is automatically performed during a normal Maven build. In order to do ad-hoc queries against the project or develop new rules, the Web-UI is very helpful. To start the Web-UI, all you need to do, is run the following command (after a build): mvn jqassistant:server This will start a Neo4j server with web console. [INFO] --- jqassistant-maven-plugin:1.3.0:server (default-cli) @ plclogger --- [INFO] Connecting to store at 'file:/Users/christofer.dutz/Projects/Apache/PLC4X/target/jqassistant/store/' 2018-04-05 19:11:14.369+0200 INFO [o.n.s.CommunityNeoServer] No SSL certificate found, generating a self-signed certificate.. 2018-04-05 19:11:14.683+0200 INFO [o.n.s.CommunityNeoServer] Starting HTTP on port 7474 (8 threads available) 2018-04-05 19:11:14.859+0200 INFO [o.n.s.w.Jetty9WebServer] Mounting static content at /webadmin 2018-04-05 19:11:14.892+0200 INFO [o.n.s.w.Jetty9WebServer] Mounting static content at /browser Apr 05, 2018 7:11:15 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate INFORMATION: Initiating Jersey application, version 'Jersey: 1.19 02/11/2015 03:25 AM' Apr 05, 2018 7:11:15 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate INFORMATION: Initiating Jersey application, version 'Jersey: 1.19 02/11/2015 03:25 AM' Apr 05, 2018 7:11:15 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate INFORMATION: Initiating Jersey application, version 'Jersey: 1.19 02/11/2015 03:25 AM' 2018-04-05 19:11:15.396+0200 INFO [o.n.s.CommunityNeoServer] Remote interface ready and available at http://localhost:7474/ [INFO] Running server for module org.apache.plc4x:plc4x-parent:0.0.1-SNAPSHOT [INFO] Press to finish. So when visiting the anounced url with a browser, you can use the pretty useful neo4j web console. IntelliJ comes with some interesting Neo4J support. Unfortunately this only supports Neo4j 3. Unfortunately the process of enabling this toolset is a little less comfortable than the Web-UI version. Even if JQAssistant uses Neo4j 2 per default, we can force it to use Neo4j 3 by providing an additional commandline parameter. mvn -Djqassistant.neo4jVersion=3 clean install JQAssistant uses Neo4j 3 and the resulting data directory is then in Neo4j 3 format. In this case the server has to be started with the same parameter: mvn -Djqassistant.neo4jVersion=3 jqassistant:server As soon as the server is started, we can connect from the IntelliJ plugin. Note: The connection settings also contain a username and a password. It appears that this can simply be left empty of can contain random values. After creating the connection, the Graph Neo4j view should list the new connection. You can now use this to perform queries","title":"Using JQAssistant","component":"plc4x","version":"latest","name":"jqassistant","url":"/plc4x/latest/developers/jqassistant.html","titles":[{"text":"Defining JQAssistant rules","hash":"_defining_jqassistant_rules","id":1},{"text":"Using the Web-UI","hash":"_using_the_web_ui","id":2},{"text":"Using IntelliJ Idea","hash":"_using_intellij_idea","id":3}]},"179":{"id":179,"text":"This is an assessment of the PLC4X podling’s maturity, meant to help inform the decision (of the mentors, community, Incubator PMC and ASF Board of Directors) to graduate it as a top-level Apache project. It is based on the ASF project maturity model at https://community.apache.org/apache-way/apache-project-maturity-model.html Mentors and community members are encouraged to contribute to this page and comment on it, the following table summarizes project’s self-assessment against the Apache Maturity Model. ID Description Status Code CD10 The project produces Open Source software, for distribution to the public at no charge. The project source code is licensed under the Apache License, version 2.0. CD20 The project’s code is easily discoverable and publicly accessible. Our sourcecode is available at Apache GitBox and GitHub and linked to from our website CD30 The code can be built in a reproducible way using widely available standard tools. our Maven build has been tested on Linux, MacOS and Windows and build description is available on our website CD40 The full history of the project’s code is available via a source code control system, in a way that allows any released version to be recreated. The entire commit history is available from the beginning. CD50 The provenance of each line of code is established via the source code control system, in a reliable way based on strong authentication of the committer. When third-party contributions are committed, commit messages provide reliable information about the code provenance. The project uses the git repository, managed by Apache Infra, ensuring provenance of each line of code to a committer, each line committed before entering incubation was equally configured. Licenses and Copyright LC10 The code is released under the Apache License, version 2.0. Both the source distribution as well as the convenience binary artifacts clearly declare that they are licensed under the Apache 2.0 license LC20 Libraries that are mandatory dependencies of the project’s code do not create more restrictions than the Apache License does. The list of mandatory dependencies have been reviewed to contain approved licenses only. LC30 The libraries mentioned in LC20 are available as Open Source software. All mandatory dependencies are available as open source software. LC40 Committers are bound by an Individual Contributor Agreement (the \"Apache iCLA\") that defines which code they are allowed to commit and how they need to identify code that is not their own. The project uses a repository managed by Apache Gitbox — write access requires an Apache account, which requires an ICLA on file. LC50 The copyright ownership of everything that the project produces is clearly defined and documented. All files in the source repository have appropriate headers which is enforced by tooling included in the build. ICLAs from all initial committers have been documented. CCLAs from all companies involved have been documented. SGA is on file for the initial contribution. Releases RE10 Releases consist of source code, distributed using standard and open archive formats that are expected to stay readable in the long term. Current source releases are distributed via dist.apache.org and Older source releases are available from archive.apache.org. Both are linked from the website. RE20 Releases are approved by the project’s PMC (see CS10), in order to make them an act of the Foundation. All incubating releases have been unanimously approved by the PLC4X community and the Incubator, all with at least 3 (P)PMC votes and more +1 than -1. RE30 Releases are signed and/or distributed along with digests that can be reliably used to validate the downloaded archives. All releases are signed, and the KEYS file is provided on dist.apache.org RE40 Convenience binaries can be distributed alongside source code but they are not Apache Releases — they are just a convenience provided with no guarantee. Convenience binaries are distributed via Maven Central Repository only. Currently due to the platform-dependency of C++ libraries, these are not distributed currently. RE50 The release process is documented and repeatable to the extent that someone new to the project is able to independently generate the complete set of artifacts required for a release. We have a guide for release managers, that has been tested by multiple release managers available on our website. Quality QU10 The project is open and honest about the quality of its code. Various levels of quality and maturity for various modules are natural and acceptable as long as they are clearly communicated. All issues are documented in our JIRA instance, which is our primary bug and issue tracker. QU20 The project puts a very high priority on producing secure software. even if we haven’t received any security issues targeted at PLC4X yet, we pro-actively monitor our dependencies and if reported would treat them with the highest priority, according to the CVE/Security Advisory procedure. QU30 The project provides a well-documented, secure and private channel to report security issues, along with a documented way of responding to them. We are using Apaches default way to submit security related information, which is described on our website QU40 The project puts a high priority on backwards compatibility and aims to document any incompatible changes and provide tools and documentation to help users transition to new features. We try to keep everything as backward compatible as possible. If we are forced to introduce incompatible changes, these is documented in a Incompatible changes section as part of our release notes. QU50 The project strives to respond to documented bug reports in a timely manner. Bug reports are treated with priority and are automatically posted to our developer mailing list dev@plc4x.apache.org\" class=\"bare\">https://lists.apache.org/list.html?dev@plc4x.apache.org so they are prominently recognised. Community CO10 The project has a well-known homepage that points to all the information required to operate according to this maturity model. The project website has a description of the project with technical details, how to contribute, team. CO20 The community welcomes contributions from anyone who acts in good faith and in a respectful manner and adds value to the project. So far we have recognized any form of contribution and every contributor with the desire to become part of the team has been invited to join. CO30 Contributions include not only source code, but also documentation, constructive bug reports, constructive discussions, marketing and generally anything that adds value to the project. It’s part of the contribution guide and the current committers are really keen to welcome contributions. CO40 The community is meritocratic and over time aims to give more rights and responsibilities to contributors who add value to the project. So far the community has elected 4 committers, all of them also being added to the PPMC. CO50 The way in which contributors can be granted more rights such as commit access or decision power is clearly documented and is the same for all contributors. The criteria is documented in the contribution guide. CO60 The community operates based on consensus of its members (see CS10) who have decision power. Dictators, benevolent or not, are not welcome in Apache projects. The project works to build consensus. All votes have been unanimous so far. CO70 The project strives to answer user questions in a timely manner. Responses to reported issues or asked questions typically are handled by the community withing a matter of a few hours (Responses being faster during typical European time-zone business-hours). Consensus Building CS10 The project maintains a public list of its contributors who have decision power — the project’s PMC (Project Management Committee) consists of those contributors. We’re currently working on filling the team page. CS20 Decisions are made by consensus among PMC members 9 and are documented on the project’s main communications channel. Community opinions are taken into account but the PMC has the final word if needed. All decisions are made on one of our mailing lists. Every decision discussed off-list has been taken back to the list for final discussion and we’ll keep on doing that. CS30 Documented voting rules are used to build consensus when discussion is not sufficient. We have documented our decision making rule on our website. CS40 In Apache projects, vetoes are only valid for code commits and are justified by a technical explanation, as per the Apache voting rules defined in CS30. This part actively contradicts the voting rules of the Apache Incubator. This project follows the voting rules of the Apache Incubator which we documented on our website. CS50 All \"important\" discussions happen asynchronously in written form on the project’s main communications channel. Offline, face-to-face or private discussions 11 that affect the project are also documented on that channel. As mentioned in CS20 it is impossible to prevent off-list discussions when meeting in person. But we have always handled things in a way that we always write up summaries of important discussions and post them to the mailing lists. Independence IN10 The project is independent from any corporate or organizational influence. The group of active committers and PPMCs consists of members of more than independent 4 companies. IN20 Contributors act as themselves as opposed to representatives of a corporation or organization. While there are several cases where committers and PPMC members utilize corporate infrastructure or these companies, no case has been found where any of these committers and PPMCs have represented corporate interests.","title":"Apache Maturity Model Assessment for PLC4X","component":"plc4x","version":"latest","name":"maturity","url":"/plc4x/latest/developers/maturity.html","titles":[{"text":"Overview","hash":"_overview","id":1},{"text":"Maturity model assessment","hash":"_maturity_model_assessment","id":2}]},"180":{"id":180,"text":"Sorted by first name: Name Bio Ben Hutcheson Software Developer, Control Systems Engineer Isar Aerospace Altötting, Germany Experienced as an Electrical Engineer, Control Systems Engineer and Software Developer. Enjoys developing systems which overlap in all three of these fields. César García CEOS Automatización, C.A. Pto. La Cruz, Anzoátegui, Venezuela Electrical engineer, dedicated to process automation and control. Specialized in Siemens S5, S7, PCS7 architecture for the Oil&Gas industry and Braumat for the food and beverage industry. Applying open source technologies to create added value for users, such as Kannel, Apache Http Server, Apache Karaf, Apache Hop, Apache IoTDB and the meeting point of all of them Apache PLC4X where I have been able to collaborate as a PMC. Christofer Dutz IoT Consultant Mapped Frankfurt Likes to swim outside the mainstream. He is really passionate about walking new paths. His first email to an Apache list on file was to the Cocoon project back in the year 2000. His direct involvement started in 2012 when he was elected to become an Apache Flex committer. Since then he became involved with a lot of Apache-internal groups and committees and was elected to become a Member of the Apache Software Foundation in 2015 and recently has taken up the role of mentoring several IoT podlings in the Apache Incubator. Julian Feinauer Founder / CEO pragmatic minds GmbH / pragmatic industries GmbH Kirchheim unter Teck Has studied mathematics in Stuttgart. Besides his interest in open source software and big data, he focuses on the analysis of time series and traces from testing or manufacturing. PLC4X was the first project where he was offered a position as (P)PMC but he is also engaged in other Apache projects like Edgent and IotDB. Łukasz Dywicki Coding CEO / Consultant ConnectorIO sp. z o.o. / Code-House (self employed) Warsaw He started working with Apache Software Foundation projects in 2007 - at the time when the first incubation version of Apache CXF was out. Since then he took active part and contributed to Apache projects related to software integration such as Apache Karaf, Apache ActiveMQ and Apache Camel. He is an Open Source and OSGi enthusiast, passionate about connecting things, physical ones too. Lukas Ott Domain Architect Pharmaceutical Industry Copenhagen He started working with Apache Software Foundation projects in 2013 - at that time in the context of Semantic Technologies with an archived project called Apache Stanbol. Since then he took an interested in several different Apache projects like Apache ActiveMQ, Apache Spark, Apache Storm, Apache Cassandra. He is an Open Source and Pythonista, passionate about connecting people, processes and machines. Main focus is community over code and linking different communities together Matthias Milan Strljic Research assistant ISW; University of Stuttgart Stuttgart Research assistant and software engineer at the Institute for control engineering of machine tools and manufacturing units (ISW) of the university of stuttgart, research in the fields of automation technology + smart services + cloud manufacturing, my favourites are woodwork + knife sharpening + cigars, member of the PMC of PLC4X Sebastian Rühl Software Developer Mapped Frankfurt Software engineer, member of the PMC of PLC4X Tim Mitsch Engineer pragmatic industries GmbH Nürtingen Electrical engineer (HW, SW and interface-stuff) from passion and very new to Apache projects. The more he is involved in open-source the more he likes it, focusing on PLC4X at first.","title":"Team","component":"plc4x","version":"latest","name":"team","url":"/plc4x/latest/developers/team.html","titles":[]},"181":{"id":181,"text":"In order to be able to work on PLC4X some tools have kindly been made available to Apache PLC4X committers. Jetbrains offers Licenses to IntelliJ to Apache Committers for free EJ-Technologies have also kindly provided us with JProfiler licenses in order to track down some concurrency and memory usage problems. Thank you to all.","title":"Tools","component":"plc4x","version":"latest","name":"tools","url":"/plc4x/latest/developers/tools.html","titles":[]},"182":{"id":182,"text":"As hand-writing code for a lot of drivers in multiple languages would be quite a nightmare, we have invested a very large amount of time into finding a way to automate this. So in the end we need 3 parts: Protocol definition Language template A maven plugin which generates the code This maven plugin uses a given protocol definition as well as a language template and generates code for reading/writing data in that protocol with the given language. The Types Base module provides all the structures the Protocol modules output which are then used in the Language templates to generate code. Protocol Base and Language Base hereby just provide the interfaces that reference these types and provide the API for the plc4x-maven-plugin to use. These modules are also maintained in a repository which is separate from the rest of the PLC4X code. This is due to some restrictions in the Maven build system. If you are interested in understanding the reasons - please read the chapter on Problems with Maven near the end of this page. Concrete protocol spec parsers and templates that actually generate code are implemented in derived modules. We didn’t want to tie ourselves to only one way to specify protocols and to generate code. Generally multiple types of formats for specifying drivers are thinkable and the same way multiple ways of generating code are possible. Currently however we only have one parser: MSpec and one generator: Freemarker. These add more layers to the hierarchy. So for example in case of generating a Siemens S7 Driver for Java this would look like this: The dark blue parts are the ones released externally, the turquoise ones are part of the main PLC4X repo. The maven plugin is built up very modular. So in general it is possible to add new forms of providing protocol definitions as well as language templates. For the formats of specifying a protocol we have tried out numerous tools and frameworks, however the results were never quite satisfying. Usually using them required a large amount of workarounds, which made the solution quite complicated. In the end only DFDL and the corresponding Apache project Apache Daffodil seemed to provide what we were looking for. With this we were able to provide first driver versions fully specified in XML. The downside was, that the PLC4X community regarded this XML format as pretty complicated and when implementing an experimental code generator we quickly noticed that generating a nice object model would not be possible, due to the lack ability to model the inheritance of types in DFDL. In the end we came up with our own solution which we called MSpec and is described in the MSpec Format description. The plc4x-maven-plugin has a very limited set of configuration options. In general all you need to specify, is the protocolName and the languageName. An additional option outputFlavor allows generating multiple versions of a driver for a given language. This can come in handy if we want to be able to generate read-only or passive mode driver variants. Last, not least, we have a pretty generic options config option, which is a Map type. With options is it possible to pass generic options to the code-generation. So if a driver or language requires further customization, these options can be used. Currently, the Java module makes use of such an option for specifying the Java package the generated code uses. If no package option is provided, the default package org.apache.plc4x.{language-name}.{protocol-name}.{output-flavor} is used, but especially when generating custom drivers, which are not part of the Apache PLC4X project, different package names are better suited. So in these cases, the user can simply override the default package name. There is also an additional parameter: outputDir, which defaults to ${project.build.directory}/generated-sources/plc4x/ and usually shouldn’t require being changed in case of a Java project, but usually requires tweaking when generating code for other languages. Here’s an example of a driver pom for building a S7 driver for java: 4.0.0 org.apache.plc4x.plugins plc4x-code-generation 0.6.0-SNAPSHOT test-java-s7-driver org.apache.plc4x.plugins plc4x-maven-plugin test generate-sources generate-driver s7 java read-write org.apache.plc4x.plugins plc4x-code-generation-driver-base-java 0.6.0-SNAPSHOT org.apache.plc4x.plugins plc4x-code-generation-language-java 0.6.0-SNAPSHOT provided org.apache.plc4x.plugins plc4x-code-generation-protocol-s7 0.6.0-SNAPSHOT provided So the plugin configuration is pretty straight forward, all that is specified, is the protocolName, languageName and the output-flavor. The dependency: org.apache.plc4x.plugins plc4x-code-generation-driver-base-java 0.6.0-SNAPSHOT For example contains all classes the generated code relies on. The definitions of both the s7 protocol and java language are provided by the two dependencies: org.apache.plc4x.plugins plc4x-code-generation-language-java 0.6.0-SNAPSHOT provided and: org.apache.plc4x.plugins plc4x-code-generation-protocol-s7 0.6.0-SNAPSHOT provided The reason for why the dependencies are added as code-dependencies and why the scope is set the way it is, is described in the Why are the protocol and language dependencies done so strangely? section. The plugin uses the Java Serviceloader mechanism to find modules. In order to provide a new protocol module, all that is required, it so create a module containing a META-INF/services/org.apache.plc4x.plugins.codegenerator.protocol.Protocol file referencing an implementation of the org.apache.plc4x.plugins.codegenerator.protocol.Protocol interface. This interface is located in the org.apache.plc4x.plugins:plc4x-code-generation-protocol-base module and generally only defines two methods: package org.apache.plc4x.plugins.codegenerator.protocol; import org.apache.plc4x.plugins.codegenerator.types.definitions.ComplexTypeDefinition; import org.apache.plc4x.plugins.codegenerator.types.exceptions.GenerationException; import java.util.Map; public interface Protocol { /** * The name of the protocol what the plugin will use to select the correct protocol module. * * @return the name of the protocol. */ String getName(); /** * Returns a map of complex type definitions for which code has to be generated. * * @return the Map of types that need to be generated. * @throws GenerationException if anything goes wrong parsing. */ Map getTypeDefinitions() throws GenerationException; } These implementations could use any form of way to generate the Map of `ComplexTypeDefinition’s. They could even be hard coded. However, we have currently implemented utilities for universally providing input: MSpec Format PLC4X proprietary format. Analog to the Protocol Modules the Language modules are constructed equally. The Language interface is very simplistic too and is located in the org.apache.plc4x.plugins:plc4x-code-generation-language-base module and generally only defines two methods: package org.apache.plc4x.plugins.codegenerator.language; import org.apache.plc4x.plugins.codegenerator.types.definitions.ComplexTypeDefinition; import org.apache.plc4x.plugins.codegenerator.types.exceptions.GenerationException; import java.io.File; import java.util.Map; public interface LanguageOutput { /** * The name of the template is what the plugin will use to select the correct language module. * * @return the name of the template. */ String getName(); List supportedOutputFlavors(); /** * An additional method which allows generator to have a hint which options are supported by it. * This method might be used to improve user experience and warn, if set options are ones generator does not support. * * @return Set containing names of options this language output can accept. */ Set supportedOptions(); void generate(File outputDir, String languageName, String protocolName, String outputFlavor, Map types, Map options) throws GenerationException; } The file for registering Language modules is located at: META-INF/services/org.apache.plc4x.plugins.codegenerator.language.LanguageOutput Same as with the protocol modules, the language modules could also be implemented in any thinkable way, however we have already implemented some helpers for using: Apache Freemarker Format Generate output using Apache Freemarker Project. We mentioned in the introduction, that the first 4 modules are maintained and released from outside the main PLC4X repository. This is due to some restrictions in Maven, which result from the way Maven generally works. The main problem is that when starting a build, in the validate-phase, Maven goes through the configuration, downloads the plugins and configures these. This means that Maven also tries to download the dependencies of the plugins too. In case of using a Maven plugin in a project which also produces the maven plugin, this is guaranteed to fail - Especially during releases. While during normal development, Maven will probably just download the latest SNAPSHOT from our Maven repository and be happy with this and not complain that this version will be overwritten later on in the build. It will just use the new version as soon as it has to. During releases however the release plugin changes the version to a release version and then spawns a build. In this case the build will fail because there is no Plugin with that version to download. In this case the only option would be to manually build and install the plugin in the release version and to re-start the release (Which is not a nice thing for the release manager). For this reason we have stripped down the plugin and its dependencies to an absolute minimum and have released (or will release) that separately from the rest, hoping due to the minimality of the dependencies that we will not have to do it very often. As soon as the tooling is released, the version is updated in the PLC4X build and the release version is used without any complications. It would certainly be a lot cleaner, if we provided the modules as plugin dependencies. However, as we mentioned in the previous sub-chapter, Maven tries to download and configure the plugins prior to running the build. So during a release the new versions of the modules wouldn’t exist, this would cause the build to fail. We could release the protocol- and the language modules separately too, but we want the language and protocol modules to be part of the project, to not over-complicate things - especially during a release. So the Maven plugin is built in a way, that it uses the modules dependencies and creates its own Classloader to contain all of these modules at runtime. This brings the benefit of being able to utilize Maven’s capability of determining the build order and dynamically creating the modules build classpath. Adding a normal dependency however would make Maven deploy the artifacts with the rest of the modules. We don’t want that as the modules are useless as soon as they have been used to generate the code. So we use a trick that is usually used in Web applications, for example: Here the vendor of a Servlet engine is expected to provide an implementation of the Servlet API. It is forbidden for an application to bring this along, but it is required to build the application. For this the Maven scope provided, which tells Maven to provide it during the build, but to exclude it from any applications it builds, because it will be provided by the system running the application. This is not quite true, but it does the trick.","title":"Code Generation","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/developers/code-gen/index.html","titles":[{"text":"Introduction","hash":"_introduction","id":1},{"text":"Configuration","hash":"_configuration","id":2},{"text":"Custom Modules","hash":"_custom_modules","id":3},{"text":"Protocol Modules","hash":"_protocol_modules","id":4},{"text":"Language Modules","hash":"_language_modules","id":5},{"text":"Problems with Maven","hash":"_problems_with_maven","id":6},{"text":"Why are the 4 modules released separately?","hash":"_why_are_the_4_modules_released_separately","id":7},{"text":"Why are the protocol and language dependencies done so strangely?","hash":"_why_are_the_protocol_and_language_dependencies_done_so_strangely","id":8}]},"183":{"id":183,"text":"We are currently using Apache’s Jenkins as single CI system. Apache’s Jenkins at: https://ci-builds.apache.org/job/PLC4X/ However we might add Travis for automatically building and testing Pull-Requests in the near future. Hereby Apache Jenkins' clearly is responsible for running the full testsuite with all integration-tests. Also only jobs on Apache Jenkins are allowed to publish SNAPSHOT versions of the Maven artifacts to Apaches Nexus at: https://repository.apache.org. We are using the Jenkins multi-branch pipeline plugin to automatically setup build for branches based upon the build definition in the Jenkinsfile in the root of the project. In general it builds the develop branch and all branches starting with the prefix feature/. However when building the develop branch some additional steps are performed. When building develop the build not only builds the project itself and runs all tests, it also runs the sonarcloud analysis, deploys the artifacts built to the Apache Nexus as well as generates and deploys the website. The general structure of the build is as follows:","title":"Continuous Integration","component":"plc4x","version":"latest","name":"ci","url":"/plc4x/latest/developers/infrastructure/ci.html","titles":[{"text":"Structure of the Jenkins Pipeline build","hash":"_structure_of_the_jenkins_pipeline_build","id":1}]},"184":{"id":184,"text":"In this section you can find information on the services the Apache PLC4X project makes use of.","title":"Infrastructure","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/developers/infrastructure/index.html","titles":[]},"185":{"id":185,"text":"Our bug & issue tracker is Apache’s Jira instance. This service is available here: https://issues.apache.org/jira/projects/PLC4X","title":"Bug & Issue Tracker","component":"plc4x","version":"latest","name":"issues","url":"/plc4x/latest/developers/infrastructure/issues.html","titles":[]},"186":{"id":186,"text":"We are using SonarCloud as the service for static code analysis. This is an externally hosted service and is available here: https://sonarcloud.io/dashboard?id=apache_plc4x","title":"Code Analysis","component":"plc4x","version":"latest","name":"sonar","url":"/plc4x/latest/developers/infrastructure/sonar.html","titles":[]},"187":{"id":187,"text":"==The PLC4X Project VM As, especially for the raw socket functionality of PLC4X, our project had higher demands on the infrastructure as other projects. Apache Infra kindly provided us with a dedicated VM. This is included as build agent into Apache’s Jenkins with the label plc4x2 and is marked for exclusive usage by our project. The host name of this machine is: plc4x-vm2.apache.org On this machine we can even sudo to perform operations only available to root. Project members can request access to the machine. In order to be able to log in, users need to add their SSH public key to their Apache ID first. This is done under the following url: https://id.apache.org/ Here just add the content in the following format to one of the SSH Key (authorized_keys line) fields: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDd10ykYAZLxHJVTER71IrrVVpyR8OBdlJd1aVwb67Ts+ueJjzo8ofQKLASaQw9EQOSfprGZW0sfzhepeJvbX0n1IfsRexoyIGlD8WzyX/UoLiRLPHFv+eSGJVlN90x/l+zps+yo3lq6qfuIqkXQQvB4aJBYsYC/jifpMLvx06zaUBPfdWIaGiBgaWbX/59Q0QsSpX5r8tgdA+XLw/8Zg5AbKazuS2Cm/soJCfQQ7km4bd/WtF5R5xvakVbyILMT8Dk9Hs9OfVL/RFGLYqX4bjy5uCTwPBrwlWqFyq1u7JR39i870XNgn+bIeChaZU098BGyBH/cWMGt7bTJQSKxksF2SZAHjt8Ga2Pl+J6MTW6/EPzIYENgvfOBVSlVaz9SlM26nel1+SHDND9dK/4gRNbujbmzHZLfTjMk7oc4R+WPCBIw99CFeShTKHSxhJKz/3KmcmuEHhNRBdMy+xHecr/r/Pax58a9VHXQqHbwES6tvC1gvM2uFSMKoaKtNkME4V7bPLbQcEF8tKz7/gKp6vp1IL0BdDMwZPodFPmbiJzqjvC38A++B5k0GAgWKYPVsenamZviFhRNGjjum/qxBnAF1FjpIocsEA0zQBYvvOPDpKl9KPRZ32ALHztnRfCEwltgnM1Sjinn4zQjxQs5mJBz2rjMGlkSzVjLoSo7khiBQ== my@email-address.com (I just had to copy this line from my ~/.ssh/id_rsa.pub file) Note, the Email Address in the end doesn’t seem to matter, I simply added it for the sake of completeness. So if this doesn’t match your Apache email, this is not a problem. As soon as that’s done, access needs to be requested from Apache Infra. This is done using the Infra Jira at: https://issues.apache.org/jira Here make sure to select the Project Infrastructure (INFRA). As soon as that’s handled by the Infra team, you should be ready to log-in on the machine. Using SSH we should now be able to log in to the VM. ssh apacheId@plc4x-vm2.apache.org Be sure to use the username matching your Apache ID or the login will fail. If all went well you should now be able to log in to the machine using your apache user. Apache Infra is great at keeping things safe. Providing a sudo password directly would increase the danger of having this intercepted, therefore they are using a tool called opiepasswd. Instead of now entering a password, a challenge is displayed: myid@plc4x-vm2:~$ sudo apt-get update otp-md5 496 pl8230 Password: If you now enter your normal password, you’ll simply get permission denied errors. In order to execute operations as root on the machine, you need to use an opie client. otp-md5 496 pl8230 into OPIE client’s challenge field. In the password field you provide your Apache LDAP password. When hitting enter or clicking on Compute the tool should automatically generate a response. Now all you need to do is copy & paste that as password into your SSH client session. As with the latest version of Mac Catalina the existing clients no longer work and using a public web service is a bad idea, Apache has its own service to calculate it: https://selfserve.apache.org/otp-md5.html For being able to build the charts and graphics as part of the site generation, we need to add some additional packages: sudo apt-get install python-seqdiag sudo apt-get install python-nwdiag","title":"","component":"plc4x","version":"latest","name":"vm","url":"/plc4x/latest/developers/infrastructure/vm.html","titles":[{"text":"Requesting access","hash":"_requesting_access","id":1},{"text":"Login to the machine","hash":"_login_to_the_machine","id":2},{"text":"Doing things as root","hash":"_doing_things_as_root","id":3},{"text":"Required software","hash":"_required_software","id":4}]},"188":{"id":188,"text":"We are currently using the normal Maven build to not only generate the project artifacts, but also the projects website. In order to provide content, every module can have a src/site directory. This content will be generated to that modules site-part. The skin being used to generate the site is none of the default Maven skins, but a more up-to-date looking skin using: Bootstrap (For the CSS) JQuery (For the JavaScript magic) Fontawesome (For icons and symbols) But we don’t have to worry about the details, all is configured to be used automatically. The site content itself is generated from asciidoc files (ending .adoc) which is a simple yet powerful markup language. (See AsciiDoc Syntax Quick Reference or AsciiDoc cheatsheet for details) Beyond the basic goodies, the build is also configured to generate images from ASCII data using the asciidoctor-diagram plugin. This allows us to generate images like the ones on the S7 Protocol Description page Within the src/site directory there is a file site.xml which generally controls the menu and the look of the site. Most setting are inherited from the plc4x-parent module. That’s also why this is more complicated than the others. The site.xml file is optional. Even if this is not available a site will be generated however no additional content will be linked from any of the navigation menus. So if we wanted to add a new page on some (hopefully non existent) Wombat PLC Protocol, we would create a file called: index.adoc in the src/site/asciidoc/protocols/wombat directory. For example with this content: == Wombat PLC Protocol If you want to waste your money, brains and time, feel free to use a `Wombat PLC`. In order to help you waste even more of that, we'll skip documenting anything. Notice the double equals sign? This is the site Title. It seems the level One with only one equals sign is only used for ebook output. So just keep in mind: Two equals signs is the top level title, all lower levels have more equals signs. In order to generate the content you need to execute the Maven site workflow. This is for example done by executing: mvn site This will not build the artifact itself, but only it’s website. After the build, you would find a file target/site/protocols/wombat/index.html However you can link to this page from any other page, but it is not added ot the navigation menu. In order to add links to the menus, you have to create or modify the site.xml for the module you want to add content to. The simplest form would probably be something like this: This will generate a Wombat menu at the end, and this has one link named lalala. Notice that the link has to have a file ending of .html and not .adoc. If you want to insert the menu somewhere else, you will have to re-define the entire menu. The menu ref items hereby reference standard menus provided by the Maven build. The PLC4X project uses Apache gitpubsub system for maintaining the website. In general all content in a repos asf-site branch is copied to the Webservers, if that repo is registered for it. The content in this branch is generated and maintained during the Maven build as part of the site generation if the site-deploy phase is executed. The build system needs to check-in content to the asf-site branch and usually ASF Jenkins nodes don’t have the permissions to do that. In order to be able to push to the asf-site GIT branch, a dedicated build job is configured to build on nodes with the Jenkins label git-websites. Only on these machines are jobs allowed to push changes to a Git repo and here only to a branch named asf-site. See https://ci-builds.apache.org/job/PLC4X/ for details on the PLC4X Jenkins Website build job. As soon as content is updated in the asf-site the gitpubsub mechanism will make those changes available at https://plc4x.apache.org","title":"Generating the Website","component":"plc4x","version":"latest","name":"website","url":"/plc4x/latest/developers/infrastructure/website.html","titles":[{"text":"Providing new content","hash":"_providing_new_content","id":1},{"text":"Adding links to menus","hash":"_adding_links_to_menus","id":2},{"text":"Deploying the Website","hash":"_deploying_the_website","id":3}]},"189":{"id":189,"text":"We use Apache’s Confluence instance as Wiki, however most information is generally managed on this website. This service is available here: https://cwiki.apache.org/confluence/display/PLC4X","title":"WIKI","component":"plc4x","version":"latest","name":"wiki","url":"/plc4x/latest/developers/infrastructure/wiki.html","titles":[]},"190":{"id":190,"text":"Building a project like Apache PLC4X on multiple target operating-systems is quite a challenge, but I think we managed to make it as simple as possible. However, when building PLC4X there are some requirements the build is expecting you to have provided. However, this greatly depends on which parts you want to build. The Java modules hereby probably have the least demanding requirements. In order to build most Java parts of PLC4X you are required to have at least Java 9 installed on your machine. Some integration modules and some other languages however may add some additional constraints to this. We have tested the build with Java 11 up to Java 18 (Latest version at the time of writing this document). If a new version comes out, please give us a little time to verify and handle any related issues. We’ll probably fix them as soon as possible. However, in the past with Oracle’s new release strategy, there have been a few bumps on the road. Also will PLC4X build with any Maven version starting with Maven 3.3.0 however the with-c profile requires at least Maven 3.6 as the cmake-maven-plugin requires this. Currently, Maven 3.6 and above is required for being able to build all parts of PLC4X. Profile Description Requirements Builds Java API, drivers, integrations, examples Git LibPCAP with-c Builds C API, drivers, integrations, examples with-dotnet Builds C# and .Net API, drivers, integrations, examples dotnet with-python Builds Python API, drivers, integrations, examples python (min 3.7) pyenv The following pages will describe how to provide these requirements for your operating system. Linux MacOS Windows When running Java unit-tests in IntelliJ, you might run into problems where during the test execution complaints arise that JUnit is unable to load {failsafeArgLine}. In this case you need to go to Settings → Build, Execution, Deployment → Build Tools → Maven → Running Tests and deselect the option argLine.","title":"Preparing your Computer","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/developers/preparing/index.html","titles":[{"text":"Preparing your IDE","hash":"_preparing_your_ide","id":1},{"text":"IntelliJ","hash":"_intellij","id":2}]},"191":{"id":191,"text":"Checking: git --version If you get any successful output, you probably don’t need to do anything. Apt-based systems: sudo apt-get install git Yum based systems: sudo yum install git Apt-based systems: sudo apt-get install libpcap-dev Yum based systems: sudo yum install libpcap-devel Using libpcap usually requires root privileges, however the java process can be granted permission to do so by executing the following command. setcap cap_net_raw,cap_net_admin=eip /path/to/java Sometimes I had to set the uid to execute the java executable with the permissions of the owner (root) … however this is quite sub-optimal solution. chmod 4755 /path/to/java Checking: gcc --version If you get any successful output, you probably don’t need to do anything. Apt-based systems: sudo apt-get install gcc Yum based systems: sudo yum install gcc Checking: dotnet --version If you get any successful output, you probably don’t need to do anything. Microsoft has documented what is needed to install .Net SDK here For Ubuntu this would be: wget -q https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb sudo apt-get install apt-transport-https sudo apt-get update sudo apt-get install dotnet-sdk-6.0 For other distributions, please select the distribution in the drop-down menu and follow the instructions there. Checking: python3 --version If you get a version of 3.7 or higher reported, you probably don’t need to do anything. Apt-based systems: sudo apt-get install python3 Yum based systems: yum intall python3 Checking: python3 -Im ensurepip If you are getting anything else than a: No module named ensurepip, you’re ok. It seems that this manually needs to be installed on some systems. Apt-based systems: sudo apt-get install python3-venv","title":"Linux","component":"plc4x","version":"latest","name":"linux","url":"/plc4x/latest/developers/preparing/linux.html","titles":[{"text":"Git","hash":"_git","id":1},{"text":"LibPCAP","hash":"_libpcap","id":2},{"text":"gcc","hash":"_gcc","id":3},{"text":"dotnet","hash":"_dotnet","id":4},{"text":"python","hash":"_python","id":5},{"text":"Python venv","hash":"_python_venv","id":6}]},"192":{"id":192,"text":"Most libraries on Mac are installed using Homebrew. Make sure Homebrew ist installed in order to install most of these. /usr/bin/ruby -e \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)\" Checking: git --version If you get any successful output, you probably don’t need to do anything. In order to install it, please execute the following command: brew install git The libpcap version bundled with Mac OS is currently 1.9.1. This version causes exceptions. So it’s best to update to a newer version using brew: brew install libpcap Checking: gcc --version If you get any successful output, you probably don’t need to do anything. It seems macOS comes with a version of gcc which is good enough for our usecases. Checking: dotnet --version If you get any successful output, you probably don’t need to do anything. Microsoft is offering an installer for MacOS which is available from here. Alternatively you can also install it via homebrew: brew install --cask dotnet-sdk Checking: python --version If you get a version of 3.0.0 or higher reported, you probably don’t need to do anything. In order to install it, please execute the following command: brew install pyenv Then use pyenv to install python: pyenv install 3.9.13 Then set this as the global python version: pyenv global 3.9.13 And add pyenv to the PATH: echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\\n eval \"$(pyenv init -)\"\\nfi' >> ~/.zshrc $ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\\n eval \"$(pyenv init -)\"\\nfi' >> ~/.bash_profile After opening a new terminal, python should be configured python --version","title":"Mac OS","component":"plc4x","version":"latest","name":"macos","url":"/plc4x/latest/developers/preparing/macos.html","titles":[{"text":"Git","hash":"_git","id":1},{"text":"LibPCAP","hash":"_libpcap","id":2},{"text":"gcc","hash":"_gcc","id":3},{"text":"dotnet","hash":"_dotnet","id":4},{"text":"python","hash":"_python","id":5}]},"193":{"id":193,"text":"Checking: git --version If you get any successful output, you probably don’t need to do anything. In order to install it, please download end execute the installer from here and make sure to have it add the git executable to your systems PATH. A special version of LibPCAP is available for Windows, which is called Npcap. It is available from here. So in order to install things correctly: install the version Npcap from above location. Add %SystemRoot%\\System32\\Npcap\\ to your System’s PATH Possibly reboot After this all should be working. If not, have a look here for possible help: here If you had WinPcap installed, you need to uninstall this and make sure the files Packet.dll and wpcap.dll are deleted in the %SystemRoot%\\System32\\ directory. Otherwise pcap4j will incorrectly detect a wrong version. An alternative is to use the version that comes with nmap choco install -y nmap Checking: gcc --version If you get any successful output, you probably don’t need to do anything. On windows we will be using something called WinBuilds, which is sort of a package consisting of a typical build environment consisting of multiple build tools. So please look at the WinBuilds chapter at the end of the Windows section. Checking: dotnet --version If you get any successful output, you probably don’t need to do anything. Usually this is already installed on Windows machines. Download the installer from here (Be sure to download an installer from the second column labeled Build apps - SDK) Checking: python --version If you get any successful output, you probably don’t need to do anything. You can get Python from here. Make sure directory containing python.exe is added to your systems PATH. Also make sure you restarted your IDE and or console window after changing the PATH settings for the changes to take effect. We have tested WinBuilds with the bundle found here. Please use the installer. When using the zip distribution and manually adding that to the PATH the build will fail without a log output as some binaries can’t find some of the DLL files. When installing in virtual machines. Make sure to run the installer from a path referring to a local hard-disk C:, D: … when using Paralells the location of the Downloads or Desktop is a shared directory on your Mac. When installing in virtual machines. Please don’t install to any of Windows' Program Files directories. Strange things will happen. When running the installer, make sure to select the options: - Native Windows - x86_64 Not quite sure which elements are really needed, better just install all of them. When running the setup, be sure to leave the setting on the line ending conversions on Checkout Windows-style, commit Unix-style line endings, this will cause specially in the generated code, a lot of false-dirty files, however when selecting other options that check out the code with Unix line endings (the repo is in this state) the build will fail. Make sure it’s bin directory is added to your systems PATH, however the installer should have taken care of this. Also make sure you restarted your IDE and or console window after changing the PATH settings for the changes to take effect. It is encouraged to build them yourself, but binaries can be downloaded from sites like: this Usually I download the 64Bit installer. Be sure to add the bin directory to the systems Path. Pre-Compiled Clang executables seem to be shipped with Visual Studio Community edition. So if you have this installed, just make sure the executables are available on the path. If not, it’s a little tricky to find pre-compiled binaries for windows. Seem the versions available here to the trick. Download and install the LLVM package. Select to add the LLVM to the path (doesn’t matter if just for the current user or for all)","title":"Windows","component":"plc4x","version":"latest","name":"windows","url":"/plc4x/latest/developers/preparing/windows.html","titles":[{"text":"Git","hash":"_git","id":1},{"text":"LibPCAP","hash":"_libpcap","id":2},{"text":"gcc","hash":"_gcc","id":3},{"text":"dotnet","hash":"_dotnet","id":4},{"text":"python","hash":"_python","id":5},{"text":"WinBuilds","hash":"_winbuilds","id":6},{"text":"OpenSSL","hash":"_openssl","id":7},{"text":"Clang","hash":"_clang","id":8}]},"194":{"id":194,"text":"Beckhoff/ ADS EIP","title":"Usage of protocols","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/developers/protocols/index.html","titles":[{"text":"Currently documented are:","hash":"_currently_documented_are","id":1}]},"195":{"id":195,"text":"In contrast to the main project, the plc4x-build-tools repository contains a loose collection of sub-projects. The main pom.xml in the root directory is mainly for allowing to import all modules into an IDE and shouldn’t be used for releases. If you want to release a part of the build-tools, please execute the following release steps in the parts sub-directory. In general the preparation steps for releasing a build-tool is equal to those of the main project. So please check here (Chapters: Preparing your system for being able to release and Preparing the codebase for a release) The rest of the steps are a lot simpler than those of the main project as there aren’t any profiles involved. According to SemVer, we have: Major, Minor and Bugfix releases. For each new Major and Minor release we create a new branch at the beginning of a code-freeze phase. So if currently the project version in develop is {code-generation-full-version}-SNAPSHOT, we create a branch release/{code-generation-short-version}. When creating the branch is exactly the moment in which the version in develop is incremented to the next minor version. This can and should be automated by the maven-release-plugin. Per default the plugin will ask for the working copy version during the build execution. This is the version the develop branch will be changed to. mvn release:branch -DbranchName=releases/code-generation/{minor-version} Per default the plugin suggests the next bugfix version as working version, however we want it to use the next minor version. So in case of preparing the release branch for {code-generation-full-version} the command would be the following: mvn release:branch -DbranchName=releases/code-generation/{code-generation-short-version} The plugin will then aks for the version: What is the new working copy version for \"PLC4X Build Tools: Code Generation\"? (org.apache.plc4x.plugins:plc4x-code-generation) {code-generation-bugfix-version}-SNAPSHOT: : {code-generation-development-version}-SNAPSHOT Where the suggested default is manually overridden. This step now should perform quite quickly as no build and no tests are involved. However in the end the versions of the develop branch are updated and a new releases/code-generation/{code-generation-short-version} branch is created. Now is a good time to add a new section to the RELEASE_NOTES document for the new SNAPSHOT version. Here comes a template: ============================================================== (Unreleased) Apache PLC4X {code-generation-development-version}-SNAPSHOT ============================================================== New Features ------------ Incompatible changes -------------------- Bug Fixes --------- // Rest of the file After that please remove the (Unreleased) from the following section, as we are currently working on its release. Also be sure to do a quick full-text-search to check if the version was updated correctly everywhere. If you find anything here, you will need to pay attention during the release. Now usually comes a phase in which last tests and checks should be performed. If any problems are found they, have to be fixed in the release branch. Changes should either be re applied in develop or cherry-picked, however merging things back can cause a lot of problems, and we no longer have the same versions. Before you start preparing the release, it is important to manually make the RELEASE_NOTES reflect the version we are planning on releasing. Be sure to ensure you have switched to the release branch before continuing. So be sure to remove the (Unreleased) and SNAPSHOT from the version. As especially when switching a lot between different branches, it is recommended to do a clean checkout of the repository. Otherwise, a lot of directories can be left over, which would be included in the source-release zip. In order to prepare a release-candidate, the first step is switching to the corresponding release-branch. Again, just in case you missed the first warning: Be sure to ensure you have switched to the release branch before continuing. After that, the following command will to all preparation steps for the release: mvn release:prepare In general the plugin will now ask you 3 questions: The version we want to release as (It will suggest the version you get by omitting the -SNAPSHOT suffix, keep it as it is) The name of the tag the release commit will be tagged with in the SCM (Name it releases/code-generation/{release-version} (releases/code-generation/{code-generation-full-version} in our case) The next development version (The version present in the pom after the release) (leave it as it is suggested by the plugin) Usually for 1 and 3 the defaults are just fine, make sure the tag name is correct as this usually is different. However, it is important to check that nowhere else SNAPSHOT versions are referenced. What the plugin now does, is automatically to execute the following operations: Check we aren’t referencing any SNAPSHOT dependencies. Update all pom versions to the release version. Run a build with all tests Commit the changes (commit message: [maven-release-plugin] prepare release releases/code-generation/{code-generation-full-version}) Push the commit Tag the commit Update all poms to the next development version. Commit the changes (commit message: [maven-release-plugin] prepare for next development iteration) Push the commit However, this just prepared the git repository for the release, we have to perform the release to produce and stage the release artifacts. Please verify the git repository at: https://gitbox.apache.org/repos/asf?p=plc4x-build-tools.git is in the correct state. Please select the release branch and verify the commit log looks similar to this It is important that the commit with the message \"[maven-release-plugin] prepare release releases/code-generation/{code-generation-full-version}\" is tagged with the release tag (in this case releases/code-generation/{code-generation-full-version}) If you check the commit itself, it should mainly consist of version updates like this: The root pom has a few more changes, but in general this should be what you are seeing. After that should come a second commit: This now updates the versions again, but this time from the release version to the one we selected for the next development iteration (in this case {code-generation-bugfix-version}-SNAPSHOT) If the commit history doesn’t look like this, something went wrong. If something goes wrong, you can always execute: mvn release:rollback And it will change the versions back and commit and push things. However, it will not delete the tag in GIT (locally and remotely). So you have to do that manually or use a different tag next time. This is done by executing another goal of the maven-release-plugin: mvn release:perform This executes automatically as all information it requires is located in the release.properties file the prepare-goal prepared. The first step is that the perform-goal checks out the previously tagged revision into the root modules target/checkout directory. Here it automatically executes a maven build (You don’t have to do this, it’s just that you know what’s happening): mvn clean deploy -P apache-release As the apache-release profile is activated, this builds and tests the project as well as creates the JavaDocs, Source packages and signs each of these with your PGP key. As this time the build is building with release versions, Maven will automatically choose the release url for deploying artifacts. The way things are set up in the apache parent pom, is that release artifacts are deployed to a so-called staging repository. You can think of a staging repository as a dedicated repository created on the fly as soon as the first artifact comes in. After the build you will have a nice and clean Maven repository at https://repository.apache.org/ that contains only artifacts from the current build. After the build it is important to log in to Nexus at https://repository.apache.org/, select Staging Repositories and find the repository with the name: orgapacheplc4x-{somenumber}. Select that and click on the Close button. Now Nexus will do some checks on the artifacts and check the signatures. As soon as it’s finished, we are done on the Maven side and ready to continue with the rest of the release process. A release build also produces a so-called source-assembly zip. This contains all sources of the project and will be what’s actually the release from an Apache point of view and will be the thing we will be voting on. This file will also be signed and SHA512 hashes will be created. Each new release and release-candidate has to be staged in the Apache SVN under: https://dist.apache.org/repos/dist/dev/plc4x/ The directory structure of this directory is as follows: ./KEYS ./build-tools/code-generation/{code-generation-full-version} ./build-tools/code-generation/{code-generation-full-version}/rc1 ./build-tools/code-generation/{code-generation-full-version}/rc1/README ./build-tools/code-generation/{code-generation-full-version}/rc1/RELEASE_NOTES ./build-tools/code-generation/{code-generation-full-version}/rc1/apache-plc4x-code-generation-{code-generation-full-version}-source-release.zip ./build-tools/code-generation/{code-generation-full-version}/rc1/apache-plc4x-code-generation-{code-generation-full-version}-source-release.zip.asc ./build-tools/code-generation/{code-generation-full-version}/rc1/apache-plc4x-code-generation-{code-generation-full-version}-source-release.zip.sha512 I usually prepare exactly the same directory structure, starting with the {code-generation-full-version} locally and then just import everything using the following command: svn import {code-generation-full-version} https://dist.apache.org/repos/dist/dev/plc4x/build-tools/code-generation/{code-generation-full-version} -m\"Staging of rc1 of PLC4X Build-Tools (Code-Generation) {code-generation-full-version}\" The KEYS file contains the PGP public key which belongs to the private key used to sign the release artifacts. If this is your first release be sure to add your key to this file. For the format have a look at the file itself. It should contain all the information needed. Be sure to stage exactly the README and RELEASE_NOTES files contained in the root of your project. Ideally you just copy them there from there. The three -source-release.zip artifacts should be located in the directory: code-generation/target/checkout/code-generation/target So, after committing these files to SVN, you are ready to start the vote. After staging the release candidate in the Apache SVN, it is time to actually call out the vote. For this we usually send two emails. The following would be the one used to do our first TLP release: E-Mail Topic: [VOTE] Apache PLC4X Build-Tools Code-Generation {code-generation-full-version} RC1 Message: Apache PLC4X Build-Tools Code-Generation {code-generation-full-version} has been staged under [2] and it’s time to vote on accepting it for release. All Maven artifacts are available under [1]. Voting will be open for 72hr. A minimum of 3 binding +1 votes and more binding +1 than binding -1 are required to pass. Repository: https://gitbox.apache.org/repos/asf/plc4x-build-tools.git Release tag: releases/code-generation/{code-generation-full-version} Hash for the release tag: {replacethiswiththerealgitcommittag} Per [3] \"Before voting +1 PMC members are required to download the signed source code package, compile it as provided, and test the resulting executable on their own platform, along with also verifying that the package meets the requirements of the ASF policy on releases.\" You can achieve the above by following [4]. [ ] +1 accept (indicate what you validated - e.g. performed the non-RM items in [4]) [ ] -1 reject (explanation required) [1] https://repository.apache.org/content/repositories/orgapacheplc4x-{somefourdigitnumber} [2] https://dist.apache.org/repos/dist/dev/plc4x/build-tools/code-generation/{code-generation-full-version}/rc1/ [3] https://www.apache.org/dev/release/validation.html#approving-a-release [4] https://plc4x.apache.org/developers/release/validation.html As it is sometimes to do the vote counting, if voting and discussions are going on in the same thread, we send a second email: E-Mail Topic: [DISCUSS] Apache PLC4X Build-Tools Code-Generation {code-generation-full-version} RC1 Message: This is the discussion thread for the corresponding VOTE thread. Please keep discussions in this thread to simplify the counting of votes. If you have to vote -1 please mention a brief description on why and then take the details to this thread. Now we have to wait 72 hours till we can announce the result of the vote. This is an Apache policy to make it possible for anyone to participate in the vote, no matter where that person lives and not matter what weekends or public holidays might currently be. The vote passes, if at least 3 +1 votes are received and more +1 are received than -1. After the 72-our minimum wait period is over, and we have fulfilled the requirement of at least 3 +1 votes and more +1 than -1, a final reply is sent to the vote thread with a prefix of [RESULT] in the title in which the summary of the vote is presented in an aggregated form. E-Mail Topic: [RESULT] [VOTE] Apache PLC4X Build-Tools Code-Generation {code-generation-full-version} RC1 Message: So, the vote passes with 3 +1 votes by PMC members and one +1 vote by a non PMC member. Chris As soon as the votes are finished, and the results were in favor of a release, the staged artifacts can be released. This is done by moving them inside the Apache SVN. svn move -m \"Release Apache PLC4X {code-generation-full-version}\" \\ https://dist.apache.org/repos/dist/dev/plc4x/build-tools/code-generation/{code-generation-full-version}/rc1 \\ https://dist.apache.org/repos/dist/release/plc4x/build-tools/code-generation/{code-generation-full-version} This will make the release artifacts available and will trigger them being copied to mirror sites. This is also the reason why you should wait at least 24 hours before sending out the release notification emails. As a lot of mirrors are serving our releases, it is the Apache policy to clean old releases from the repo if newer versions are released. This can be done like this: svn delete https://dist.apache.org/repos/dist/release/plc4x/0.3.0/ -m\"deleted version 0.3.0\" After this, https://dist.apache.org/repos/dist/release/plc4x should only contain the latest release directory. The probably simplest part is releasing the Maven artifacts. In order to do this, the release manager logs into Nexus at https://repository.apache.org/, selects the staging repository and clicks on the Release button. This will move all artifacts into the Apache release repository and delete the staging repository after that. All release artifacts released to the Apache release repo, will automatically be synced to Maven central. The `release branch should always point to the last released version. This has to be done with git git checkout release git merge releases/code-generation/{code-generation-full-version} When there are conflicts it could help to use the theirs merge strategy, i.e., git merge -X theirs releases/code-generation/{code-generation-full-version} Possibly a manual conflict resolution has to be done afterwards. After that, changes need to be pushed. In contrast to main releases of PLC4X we won’t do any JIRA version updates, updating of the download page or notifying of the world email to announce@apache.org So now you’re done. Congrats!","title":"Releasing PLC4X Build-Tools","component":"plc4x","version":"latest","name":"build-tools","url":"/plc4x/latest/developers/release/build-tools.html","titles":[{"text":"Creating a release branch (For the code-generation module)","hash":"_creating_a_release_branch_for_the_code_generation_module","id":1},{"text":"Preparing develop for the next iteration","hash":"_preparing_develop_for_the_next_iteration","id":2},{"text":"Release stabilization phase","hash":"_release_stabilization_phase","id":3},{"text":"Preparing a release","hash":"_preparing_a_release","id":4},{"text":"What if something goes wrong?","hash":"_what_if_something_goes_wrong","id":5},{"text":"Performing a release","hash":"_performing_a_release","id":6},{"text":"Staging a release","hash":"_staging_a_release","id":7},{"text":"Starting a vote on the mailing list","hash":"_starting_a_vote_on_the_mailing_list","id":8},{"text":"Releasing after a successful vote","hash":"_releasing_after_a_successful_vote","id":9},{"text":"Cleaning up older release versions","hash":"_cleaning_up_older_release_versions","id":10},{"text":"Releasing the Maven artifacts","hash":"_releasing_the_maven_artifacts","id":11},{"text":"Merge back release version to release branch","hash":"_merge_back_release_version_to_release_branch","id":12}]},"196":{"id":196,"text":"","title":"Releasing and Validating Releases","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/developers/release/index.html","titles":[]},"197":{"id":197,"text":"Please be sure to execute the release with a Java version 11 or the Karaf feature tests will not run. Update the RELEASE_NOTES Check year in NOTICE Create release branch: mvn release:branch -P with-c,with-dotnet,with-go,with-java,with-python,with-sandbox,enable-all-checks -DbranchName=rel/{current-short-version} Add a new section to the RELEASE_NOTES on develop Prepare the release: mvn release:prepare -P with-c,with-dotnet,with-go,with-java,with-python,with-sandbox,enable-all-checks Perform the release: mvn clean release:perform Close the staging repo on Nexus Stage the release artifacts in SVN Vote on the mailing list Move RC to the release section of SVN Remove old releases in SVN Release staging repo on Nexus Add the version to the DOAP file on develop Update Download site Update Jira Merge back release version to release branch Send announce email Be sure you are using a JDK and not a JRE, or the release will fail because the release can’t execute the javadoc executable. As part of the release process, Maven will upload maven release artifacts to a so-called staging repository. This can be thought of as an ad-hoc Maven repository that contains only the artifacts for one release. This helps reviewers to see what’s in the convenience maven package and to release that to the public repos with one click. In order to be allowed to upload artifacts, your account has to be enabled for this, and you have to tell Maven about your credentials. In order to do this, you should provide these credentials via .m2/settings.xml. So if you don’t already have one, you should create a .m2 directory in your user home and inside that create a settings.xml file with at least this content: apache.snapshots.https {user-id} {user-pass} apache.releases.https {user-id} {user-pass} This tells maven to use above credentials as soon as a repository with the id apache.snapshots.https or apache.releases.https is being used. For a release all you need is the releases repo, but it is good to have the other in place as it enables you to also deploy SNAPSHOTs from your system. There repos are defined in the apache parent pom and is identical for all Apache projects. Additionally, all artifacts are automatically signed by the release build. In order to be able to do this you need to set up GPG. The key being used to sign the artifacts will have to be linked to your Apache E-Mail ({apache-id}@apache.org) and verified by at least one fellow Apache committer (Ideally more) that have trusted keys themselves. Usually for this you have to get in touch - in real life - with any Apache committer with a trusted key. Attending an ApacheCon is usually a great way to do this as usually every ApacheCon has a Key Signing event in its schedule. He can then sign your key and hereby enable you to sign Apache release artifacts. There’s a detailed description here. However, in contrast to that documentation, upload your key to the following servers: pool.sks-keyservers.net and keyserver.ubuntu.com as these are the ones Nexus is checking. If you happen to have multiple keys, adding the following profile to your settings.xml should help: apache-release 5C60D6B9 true topsecret-password Currently, there is a Java-Version sweet-spot for being able to release all modules and that is Java 11. So be sure to set Java 11 as the java version used to do the release. Also, at least Maven 3.6 is required for CMake. Ideally use the Maven-Wrapper to ensure the Maven version fits the build. On some systems (mainly Mac) gpg signing can result in errors like: [INFO] --- maven-gpg-plugin:3.0.1:sign (sign-release-artifacts) @ plc4x-parent --- gpg: signing failed: Inappropriate ioctl for device In this case adding the following helps: export GPG_TTY=$(tty) Usually you will have to update the RELEASE_NOTES document to the new version. I would suggest doing this prior to the branch as otherwise you will definitely have to port it back to develop. So remove the SNAPSHOT and (Unreleased) markers from the file and add missing parts. Also, if you are doing the first release in a new year, it is advisable to search for the old year and check if any occurrences are ok the way they are. Usually the NOTICE file has to be adjusted. According to SemVer, we have: Major, Minor and Bugfix releases. For each new Major and Minor release we create a new branch at the beginning of a code-freeze phase. So if currently the project version in develop is {current-full-version}-SNAPSHOT, we create a branch rel/{current-short-version}. When creating the branch is exactly the moment in which the version in develop is incremented to the next minor version. This can and should be automated by the maven-release-plugin. Per default the plugin will ask for the working copy version during the build execution. This is the version the develop branch will be changed to. In contrast to normal builds, it is important to enable all profiles when creating the branch as only this way will all modules versions be updated. Otherwise, the non-default modules on develop will reference the old version which will cause problems when building. mvn release:branch -P with-c,with-dotnet,with-go,with-java,with-python,with-sandbox,enable-all-checks -DbranchName=rel/{minor-version} Per default the plugin suggests the next bugfix version as working version, however we want it to use the next minor version. So in case of preparing the release branch for {current-full-version}-SNAPSHOT the command would be the following: mvn release:branch -P with-c,with-dotnet,with-go,with-java,with-python,with-sandbox,enable-all-checks -DbranchName=rel/{current-short-version} The plugin will then aks for the version: What is the new working copy version for \"PLC4X\"? (org.apache.plc4x:plc4x-parent) {current-next-incremental-version}-SNAPSHOT: : {current-next-minor-version}-SNAPSHOT Here the suggested default has to be manually overridden. This step now should perform quite quickly as no build and no tests are involved. However, in the end the versions of the develop branch are updated and a new rel/{current-short-version} branch is created. Now is a good time to add a new section to the RELEASE_NOTES document for the new SNAPSHOT version. Here comes a template: ============================================================== (Unreleased) Apache PLC4X {current-next-minor-version}-SNAPSHOT ============================================================== New Features ------------ Incompatible changes -------------------- Bug Fixes --------- // Rest of the file Also be sure to do a quick full-text-search to check if the version was updated correctly everywhere. If you find anything here, you will need to pay attention during the release. Now usually comes a phase in which last tests and checks should be performed. If any problems are found, they have to be fixed in the release branch. Changes should either be re applied in develop or cherry-picked, however merging things back can cause a lot of problems, and we no longer have the same versions. Same as with creating the branch it is important to enable all profiles when creating the branch as only this way will all modules versions be updated. Otherwise, the non-default modules on develop will reference the old version which will cause problems when building. For people building with some additional profiles from the source release will be impossible. As especially when switching a lot between different branches, it is recommended to do a clean checkout of the repository. Otherwise, a lot of directories can be left over, which would be included in the source-release zip. In order to prepare a release-candidate, the first step is switching to the corresponding release-branch. After that, the following command will to all preparation steps for the release: mvn release:prepare -P with-c,with-dotnet,with-go,with-java,with-python,with-sandbox,enable-all-checks (The -P with-c,with-dotnet,with-go,with-java,with-python,with-sandbox,enable-all-checks tells maven to activate the all profiles that partition the build and makes sure the versions of all modules are updated as part of the release) In general the plugin will now ask you 3 questions: The version we want to release as (It will suggest the version you get by omitting the -SNAPSHOT suffix) The name of the tag the release commit will be tagged with in the SCM (Name it v{release-version} (v{current-full-version} in our case) The next development version (The version present in the pom after the release) ({current-next-bugfix-version} in our case) Usually for 1 and 3 the defaults are just fine, make sure the tag name is correct as this usually is different. What the plugin now does, is automatically execute the following operations: Check we aren’t referencing any SNAPSHOT dependencies. Update all pom versions to the release version. Run a build with all tests Commit the changes (commit message: [maven-release-plugin] prepare release v{current-full-version}) Push the commit Tag the commit Update all poms to the next development version. Commit the changes (commit message: [maven-release-plugin] prepare for next development iteration) Push the commit However, this just prepared the git repository for the release, we have to perform the release to produce and stage the release artifacts. Please verify the git repository at: https://gitbox.apache.org/repos/asf?p=plc4x.git is in the correct state. Please select the release branch and verify the commit log looks similar to this It is important that the commit with the message \"[maven-release-plugin] prepare release v{release-version}\" is tagged with the release tag (in this case v{current-full-version}) If you check the commit itself, it should mainly consist of version updates like this: The root pom has a few more changes, but in general this should be what you are seeing. After that should come a second commit: This now updates the versions again, but this time from the release version to the one we selected for the next development iteration (in this case 0.3.1-SNAPSHOT) If the commit history doesn’t look like this, something went wrong. If something goes wrong, you can always execute: mvn release:rollback -P with-c,with-dotnet,with-go,with-java,with-python,with-sandbox,enable-all-checks It will change the versions back and commit and push things. Also, should you check if you have any uncommitted changes (as our code-generation can make git think they are \"dirty\") However, it will not delete the tag in GIT (locally and remotely). So you have to do that manually or use a different tag next time. This is done by executing another goal of the maven-release-plugin: mvn clean release:perform The clean is only for making sure there is no artifacts in target directly, but only in target/checkout/target. This executes automatically as all information it requires is located in the release.properties file the prepare-goal prepared. The first step is that the perform-goal checks out the previously tagged revision into the root modules target/checkout directory. Here it automatically executes a maven build (You don’t have to do this, it’s just that you know what’s happening): mvn deploy -P apache-release As the apache-release profile is also activated, this builds and tests the project as well as creates the JavaDocs, Source packages and signs each of these with your PGP key. We are intentionally not adding the other profiles, as these either produce binary artifacts that usually only work on the system they were compiled on (C++, .Net) or we haven’t found a good way to distribute them via Maven yet (Python) or deployment is disabled anyway (sandbox). As this time the build is building with release versions, Maven will automatically choose the release url for deploying artifacts. The way things are set up in the apache parent pom, is that release artifacts are deployed to a so-called staging repository. You can think of a staging repository as a dedicated repository created on the fly as soon as the first artifact comes in. After the build you will have a nice and clean Maven repository at https://repository.apache.org/ that contains only artifacts from the current build. After the build it is important to log in to Nexus at https://repository.apache.org/, select Staging Repositories and find the repository with the name: orgapacheplc4x-{somenumber}. Select that and click on the Close button. Now Nexus will do some checks on the artifacts and check the signatures. As soon as it’s finished, we are done on the Maven side and ready to continue with the rest of the release process. A release build also produces a so-called source-assembly zip. This contains all sources of the project and will be what’s actually the release from an Apache point of view and will be the thing we will be voting on. This file will also be signed and SHA512 hashes will be created. Each new release and release-candidate has to be staged in the Apache SVN under: https://dist.apache.org/repos/dist/dev/plc4x/ The directory structure of this directory is as follows: ./KEYS ./{current-full-version}/ ./{current-full-version}/rc1 ./{current-full-version}/rc1/README ./{current-full-version}/rc1/RELEASE_NOTES ./{current-full-version}/rc1/apache-plc4x-{current-full-version}-source-release.zip ./{current-full-version}/rc1/apache-plc4x-{current-full-version}-source-release.zip.asc ./{current-full-version}/rc1/apache-plc4x-{current-full-version}-source-release.zip.sha512 You can generally import the stuff, by preparing a directory structure like above locally and then using svn import to do the importing: cd ./{current-full-version} svn import rc1 https://dist.apache.org/repos/dist/dev/plc4x/{current-full-version}/rc1 -m\"Staging of rc1 of PLC4X {current-full-version}\" The KEYS file contains the PGP public key which belongs to the private key used to sign the release artifacts. If this is your first release be sure to add your key to this file. For the format have a look at the file itself. It should contain all the information needed. Be sure to stage exactly the README and RELEASE_NOTES files contained in the root of your project. Ideally you just copy them there from there. All three -source-relese.zip artifacts should be located in the directory: target/checkout/target After committing these files to SVN you are ready to start the vote. After staging the release candidate in the Apache SVN, it is time to actually call out the vote. For this we usually send two emails. The following would be the one used to do our first TLP release: E-Mail Topic: [VOTE] Apache PLC4X {current-full-version} RC1 Message: Apache PLC4X {current-full-version} has been staged under [2] and it’s time to vote on accepting it for release. All Maven artifacts are available under [1]. Voting will be open for 72hr. A minimum of 3 binding +1 votes and more binding +1 than binding -1 are required to pass. Release tag: v{current-full-version} Hash for the release tag: {replacethiswiththerealgitcommittag} Per [3] \"Before voting +1 PMC members are required to download the signed source code package, compile it as provided, and test the resulting executable on their own platform, along with also verifying that the package meets the requirements of the ASF policy on releases.\" You can achieve the above by following [4]. [ ] +1 accept (indicate what you validated - e.g. performed the non-RM items in [4]) [ ] -1 reject (explanation required) [1] https://repository.apache.org/content/repositories/orgapacheplc4x-{somefourdigitnumber} [2] https://dist.apache.org/repos/dist/dev/plc4x/{current-full-version}/rc1 [3] https://www.apache.org/dev/release.html#approving-a-release [4] https://cwiki.apache.org/confluence/display/PLC4X/Validating+a+staged+Release As it is sometimes to do the vote counting, if voting and discussions are going on in the same thread, we send a second email: E-Mail Topic: [DISCUSS] Apache PLC4X {current-full-version} RC1 Message: This is the discussion thread for the corresponding VOTE thread. Please keep discussions in this thread to simplify the counting of votes. If you have to vote -1 please mention a brief description on why and then take the details to this thread. Now we have to wait 72 hours till we can announce the result of the vote. This is an Apache policy to make it possible for anyone to participate in the vote, no matter where that person lives and not matter what weekends or public holidays might currently be. The vote passes, if at least 3 +1 votes are received and more +1 are received than -1. After the 72-hour minimum wait period is over and we have fulfilled the requirement of at least 3 +1 votes and more +1 than -1, a final reply is sent to the vote thread with a prefix of [RESULT] in the title in which the summary of the vote is presented in an aggregated form. E-Mail Topic: [RESULT] [VOTE] Apache PLC4X {current-full-version} RC1 Message: So, the vote passes with {number of +1 votes} +1 votes by PMC members {number of +1 votes from non-pmc members} +1 vote by a non PMC member. As soon as the votes are finished, and the results were in favor of a release, the staged artifacts can be released. This is done by moving them inside the Apache SVN. svn move -m \"Release Apache PLC4X {current-full-version}\" \\ https://dist.apache.org/repos/dist/dev/plc4x/{current-full-version}/rc1 \\ https://dist.apache.org/repos/dist/release/plc4x/{current-full-version} This will make the release artifacts available and will trigger them being copied to mirror sites. This is also the reason why you should wait at least 24 hours before sending out the release notification emails. If however for some reason it is needed to prepare a new RC for the release. Please follow these steps: Set the versions of the release branch to the previous version by using the versions:set plugin: mvn versions:set -DprocessAllModules=true -P with-c,with-dotnet,with-go,with-java,with-python,with-sandbox,enable-all-checks Delete the tag locally: git tag -d v{current-full-version} Delete the tag remotely: git push --delete origin v{current-full-version} Commit all changes Drop the staging repo at https://repository.apache.org Delete the previous RC in SVN svn rm https://dist.apache.org/repos/dist/dev/plc4x/0.9.0/rc1 -m\"Removed rc1 of PLC4x 0.9.0\" Reply to the VOTE and the DISCUSS announcing the vote has been cancelled and explain why and that you’re going to start a new RC soon. Ideally prefix the title of the Emails with [CANCELLED] After this you should be ready to start a new RC. As a lot of mirrors are serving our releases, it is the Apache policy to clean old releases from the repo if newer versions are released. This can be done like this: svn delete https://dist.apache.org/repos/dist/release/plc4x/{current-full-version}/ -m\"deleted version {current-full-version}\" After this https://dist.apache.org/repos/dist/release/plc4x should only contain the latest release directory. Probably the simplest part is releasing the Maven artifacts. In order to do this, the release manager logs into Nexus at https://repository.apache.org/, selects the staging repository and clicks on the Release button. This will move all artifacts into the Apache release repository and delete the staging repository after that. All release artifacts released to the Apache release repo, will automatically be synced to Maven central. Now that the release is out, in the develop branch, update the DOAP file for plc4x. This is found at: src/site/resources-filtered/plc4x-doap.rdf Please add the just released version to the top of the versions. This file is needed for Apache’s tooling to automatically keep track of project release activity, and we use this internally too to automatically update the documentation to always reference the latest released version automatically. The release branch should always point to the last released version. This has to be done with git git checkout release git merge v{current-full-version} When there are conflicts it could help to use the theirs merge strategy, i.e., git merge -X theirs v{current-full-version} Possibly a manual conflict resolution has to be done afterwards. After that, changes need to be pushed. Set the released version to \"released\" and set the \"release-date\" Add the next version to the versions. The URL http://plc4x.apache.org/users/download.html has to be changed, and the current release has to be listed there. This is done by changing the download.adoc under src/site/users/ (in the develop branch, as this is where the site is generated from!) Copy the last release down to Previous Releases Point the download links of the last release to archive, e.g. http://archive.apache.org/dist/plc4x/{current-full-version}/apache-plc4x-{current-full-version}-source-release.zip Add the new Release under Current Releases and change all links. Note: Please add an anchor for the toc Update the sections for the changes according to the RELEASE_NOTES from the release Note: Transfer all to ascii-doc notation to ensure correct rendering of the site Also remove the JIRA TICKET ids in Front Make sure you have given the Apache mirrors time to fetch the release files by waiting at least 24 hours after moving the release candidate to the release part of the SVN. After that it is time to announce your release to the world: From: your apache email address To: announce@apache.org CC: dev@plc4x.apache.org E-Mail Topic: [ANNOUNCE] Apache PLC4X {current-full-version} released Message: The Apache PLC4X team is pleased to announce the release of Apache PLC4X {current-full-version} PLC4X is a set of libraries for communicating with industrial programmable logic controllers (PLCs) using a variety of protocols but with a shared API. The current release contains drivers able to communicate with industrial PLCs using one of the following protocols: * AB-ETH * Beckhoff ADS * CanOpen * EtherNet/IP / EIP * Firmata * KNXNet/IP * Modbus * OPC UA * Siemens S7 (0x32) Beyond that we also provide integration modules for the following Apache projects and frameworks: * Apache Calcite * Apache Camel * Apache Edgent (Incubating / Retired) * Apache Kafka (Kafka Connect) * Apache NiFi * Logstash It also provides an `OPC UA Server` which can act as a bridge between legacy systems and OPC UA. Visit the Apache PLC4X website [1] for general information or the downloads page [2] for release notes and download information. Regards, The Apache PLC4X team [1] http://plc4x.apache.org [2] http://plc4x.apache.org/users/download.html It is important to note that you have to send this email from your apache email address, or it will be rejected. This wasn’t very simple for me to set up. A general description can be found here: https://reference.apache.org/committer/email Here’s what I did in Google Mail to allow sending of emails: https://gmail.googleblog.com/2009/07/send-mail-from-another-address-without.html Note … you will be able to select the alternate sending address if you click into the recipients line of a new email (Not very intuitive). After that email is out the door, you’re done. Congrats!","title":"Releasing PLC4X","component":"plc4x","version":"latest","name":"release","url":"/plc4x/latest/developers/release/release.html","titles":[{"text":"TL/DR","hash":"_tldr","id":1},{"text":"Preparing your system for being able to release","hash":"_preparing_your_system_for_being_able_to_release","id":2},{"text":"Preparing the codebase for a release","hash":"_preparing_the_codebase_for_a_release","id":3},{"text":"Creating a release branch","hash":"_creating_a_release_branch","id":4},{"text":"Preparing develop for the next iteration","hash":"_preparing_develop_for_the_next_iteration","id":5},{"text":"Release stabilization phase","hash":"_release_stabilization_phase","id":6},{"text":"Preparing a release","hash":"_preparing_a_release","id":7},{"text":"What if something goes wrong?","hash":"_what_if_something_goes_wrong","id":8},{"text":"Performing a release","hash":"_performing_a_release","id":9},{"text":"Staging a release","hash":"_staging_a_release","id":10},{"text":"Starting a vote on the mailing list","hash":"_starting_a_vote_on_the_mailing_list","id":11},{"text":"Releasing after a successful vote","hash":"_releasing_after_a_successful_vote","id":12},{"text":"Going back for a new release candidate","hash":"_going_back_for_a_new_release_candidate","id":13},{"text":"Cleaning up older release versions","hash":"_cleaning_up_older_release_versions","id":14},{"text":"Releasing the Maven artifacts","hash":"_releasing_the_maven_artifacts","id":15},{"text":"Add the version to the DOAP file","hash":"_add_the_version_to_the_doap_file","id":16},{"text":"Merge back release version to release branch","hash":"_merge_back_release_version_to_release_branch","id":17},{"text":"Updating Jira","hash":"_updating_jira","id":18},{"text":"Update the download site","hash":"_update_the_download_site","id":19},{"text":"Notifying the world","hash":"_notifying_the_world","id":20}]},"198":{"id":198,"text":"On MacOS and Linux the first 4 steps can be automated. For details please read the section about tooling after this chapter. Download all staged artifacts under the url specified in the release vote email into a directory we’ll now call download-dir. Verify the signature is correct: Additional Apache tutorial on how to verify downloads can be found here. gpg --verify apache-plc4x-{current-full-version}-source-release.zip.asc apache-plc4x-#{current-full-version}-source-release.zip Check if the check is successful. Check if the signature references an Apache email address. Verify the SHA512 hashes: Mac/Linux: shasum -a512 apache-plc4x-{current-full-version}-source-release.zip Windows (PowerShell): Get-FileHash -Algorithm SHA512 .\\apache-plc4x-code-generation-{current-full-version}-source-release.zip | Format-List Unzip the archive: unzip apache-plc4x-{current-full-version}-source-release.zip Verify the existence of LICENSE, NOTICE, README, RELEASE_NOTES files in the extracted source bundle. Verify the content of LICENSE, NOTICE, README, RELEASE_NOTES files in the extracted source bundle. (Especially pay attention to the year in the NOTICE file if this is the first release of the year) [RM] Verify the staged source README, RELEASE_NOTE files correspond to those in the extracted source bundle. [RM] Run RAT externally to ensure there are no surprises. java -jar apache-rat-0.13.jar apache-plc4x-{current-full-version}-source-release.zip > rat.log Search for SNAPSHOT references: find . -type f -name 'pom.xml' -exec grep -l \"SNAPSHOT\" {} \\; Especially in the sandbox there may be parts that are not formally released, SNAPSHOT versions in the sandbox therefore should not result in a -1 vote … in the other parts however they should. Search for Copyright references, and if they are in headers, make sure these files containing them are mentioned in the LICENSE file. Build the project according to the information in the README.md file. [RM] Build the project with all with-xyz profiles and tests enabled and an empty maven local repo: by appending -Dmaven.repo.local=../.m2 (On windows use -D\"maven.repo.local\"=\"../.m2\"). Even if we are using RAT to ensure sources have headers in place, still the project can contain exclusions that hide things from the check. The only way to avoid missing important files is by running RAT externally. If you haven’t got it, yet please download it form here. Also do I like to run RAT against the zip archive containing the source release as this way you avoid the problem of eventually scanning the binaries produced by the build (If you run RAT after building, it will complain about every jar and ever class file). java -jar apache-rat-0.13.jar apache-plc4x-{current-full-version}-source-release.zip > rat.log By piping the result into a text file gives you the chance to investigate the content more easily. In the tools directory we have a little script that can help with downloading and checking the hashes and signatures automatically. In order to execute this, please change directories into the projects base directory and execute the following command: tools/download_staged_release.sh {current-full-version} 1 This will download all the files into a directory: downloaded-plc4x-{current-full-version}1. After that it will calculate the SHA512 hash and compare it with the staged hash. Last not least it will validate the PGP key and print out some information on it. +1/-1 (binding) Name [] Download all staged artifacts under the url specified in the release vote email. [] Verify the signature is correct. [] Check if the signature references an Apache email address. [] Verify the SHA512 hashes. [] Unzip the archive. [] Verify the existence of LICENSE, NOTICE, README, RELEASE_NOTES files in the extracted source bundle. [] Verify the content of LICENSE, NOTICE, README, RELEASE_NOTES files in the extracted source bundle. [] [RM] Verify the staged source README, RELEASE_NOTE files correspond to those in the extracted source bundle. [] [RM] Run RAT externally to ensure there are no surprises. [] Search for SNAPSHOT references [] Search for Copyright references, and if they are in headers, make sure these files containing them are mentioned in the LICENSE file. [] Build the project according to the information in the README.md file. [] [RM] Build the project with all with-xyz profiles and tests enabled and an empty maven local repo. If everything is ok, I put \"OK\" int the square brackets. If there are minor issues, I put \"MINOR\" in there and, if it’s a short reason, I put an explanation at the end of the line. If it’s longer I put a longer section after the checklist. If there are major issues, I put \"FAIL\" in there and comment the same way as with minor issues.","title":"Validating a staged release","component":"plc4x","version":"latest","name":"validation","url":"/plc4x/latest/developers/release/validation.html","titles":[{"text":"Using RAT","hash":"_using_rat","id":1},{"text":"Release Tooling","hash":"_release_tooling","id":2},{"text":"Template for the email for voting","hash":"_template_for_the_email_for_voting","id":3}]},"199":{"id":199,"text":"","title":"Tutorials","component":"plc4x","version":"latest","name":"index","url":"/plc4x/latest/developers/tutorials/index.html","titles":[]},"200":{"id":200,"text":"Currently the build generates the serializers and parsers from a provided mspec specification. A typical full round-trip test for the model, parsers and serializers would look as follows: Starting from a byte array The parser is used to parse the byte array The parsed model instance is compared with an expected model If the expected model matched the expected one the model is serialized back to a byte array The resulting byte array is compared to the original byte array If the byte arrays are identical, the round-trip is regarded ok Doing this manually would require a lot of manual object construction and validation, so we created a framework for creating such tests. As XML, no matter what you think about it, allows simple and easy readable descriptions these tests are provided as XML files. All generated model classes allow parsing and serializing to XML via Jackson. A typical test looks like this: Read Input Registers Request 000000000006ff0408d20002 ModbusTcpADU false 0 255 2258 2 As you can see, the name provides a simple human readable name for the test which is used for reporting success and failure. The raw element contains the hex-representation of the binary input. After that the root-type specifies the base type used for parsing this data. In above example the test will use the ModbusTcpADUIO.serialize and ModbusTcpADUIO.parse methods for serializing and parsing. Some parsers require additional parameters for parsing. In above example the Modbus protocol can’t decide if something is a request or response from the data itself, so we have to pass that information in using a parser-arguments argument. The final element is the xml element, which contains the XML representation of the parsed object. Each test implements exactly the test-strategy sketched above, however for comparing the parsed and the expected model, we use XMLUint to serialize the parsed model to XML and compare that to the given XML in the test-case declaration. Multiple tests are usually wrapped into a testsuite document. In general this is just a container with a given testsuite name and a number of testcase elements. One important setting however controls the endianness of the protocol in general. This is controlled with a bigEndian attribute in the testsuite root element. An example testsuite document looks as follows: Allen-Bradley DF1 ... ... ... ... All logic is implemented in the plc4j-utils-test-utils module, so make sure to add the following test-dependency: org.apache.plc4x plc4j-utils-test-utils {project.version} test In order to run these tests as part of the build, as a last step we need to create a test-runner class. This is generally just a hand-full of boilerplate code, telling the test which document to use for testing. Following code snippet sort of looks the same for every testsuite: package org.apache.plc4x.java.modbus; import org.apache.plc4x.test.parserserializer.ParserSerializerTestsuiteRunner; public class ModbusIOTest extends ParserSerializerTestsuiteRunner { public ModbusIOTest() { super(\"/testsuite/ModbusTestsuite.xml\"); } } Here the document ModbusTestsuite.xml is located in the directory: src/test/resources/testsuite/.","title":"Testing Serializers and Parsers","component":"plc4x","version":"latest","name":"testing-serializers-and-parsers","url":"/plc4x/latest/developers/tutorials/testing-serializers-and-parsers.html","titles":[{"text":"Structure of a test","hash":"_structure_of_a_test","id":1},{"text":"Structure of a testsuite","hash":"_structure_of_a_testsuite","id":2},{"text":"The Junit runner","hash":"_the_junit_runner","id":3}]},"201":{"id":201,"text":"The general pipeline for a Protocol looks like the following: A driver has the task to assemble the pipeline for the protocol(s).","title":"Basic Building Blocs of a Driver / Protocol","component":"plc4x","version":"latest","name":"writing-driver","url":"/plc4x/latest/developers/tutorials/writing-driver.html","titles":[]},"202":{"id":202,"text":"For the Freemarker language output we are using an unmodified version of Apache Freemarker to generate output. The boilerplate code for providing a PLC4X language module is located in the org.apache.plc4x.plugins:plc4x-code-generation-language-base-freemarker maven module, inside the FreemarkerLanguageOutput class. This class configures a Freemarker context and provides standardized attributes inside this: packageName: Java style package name which can be used to create some form of directory structure. typeName: Simple string type name type: ComplexTypeDefinition instance containing all the information for the type that code should be generated for. helper: As some times it is pretty complicated to create all the output in Freemarker, the helper allows to provide code that is used by the template that help with generating output. A Freemarker-based output module, has to provide a set of Template instances as well as provide a FreemarkerLanguageTemplateHelper instance. In general, we distinguish between these types of templates: Spec Templates (Global output generated once per driver in total) Complex Type Templates (Generates output for a complex type) Enum Templates (Generates output for enum types) DataIO Templates (Generates output for reading and writing PlcValues, which are our PLC4X form of presenting input and output data to our users) For each of these, the developer can provide a list of templates, which then can generate multiple files per type (Which is important for languages such as C where for every type we need to generate a Header file (.h) and an Implementation (.c)) What the FreemarkerLanguageOutput then does, is iterate over all types provided by the protocol module, and then iterate over all templates the current language defines. The only convention used in this utility, is that the first line of output a template generates will be treated as the path relative to the base output directory. It will automatically create all needed intermediate directories and generate the rest of the input to the file specified by the first line. If this line is empty, the output is skipped for this type. package org.apache.plc4x.language.java; import com.google.googlejavaformat.java.Formatter; import com.google.googlejavaformat.java.FormatterException; import freemarker.template.Configuration; import freemarker.template.Template; import org.apache.commons.io.FileUtils; import org.apache.plc4x.plugins.codegenerator.protocol.freemarker.FreemarkerLanguageOutput; import org.apache.plc4x.plugins.codegenerator.protocol.freemarker.FreemarkerLanguageTemplateHelper; import org.apache.plc4x.plugins.codegenerator.types.definitions.TypeDefinition; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.*; public class JavaLanguageOutput extends FreemarkerLanguageOutput { private static final Logger LOGGER = LoggerFactory.getLogger(JavaLanguageOutput.class); private final Formatter formatter = new Formatter(); @Override public String getName() { return \"Java\"; } @Override public Set supportedOptions() { return Collections.singleton(\"package\"); } @Override public List supportedOutputFlavors() { return Arrays.asList(\"read-write\", \"read-only\", \"passive\"); } @Override protected List getSpecTemplates(Configuration freemarkerConfiguration) { return Collections.emptyList(); } @Override protected List getComplexTypeTemplates(Configuration freemarkerConfiguration) throws IOException { return Arrays.asList( freemarkerConfiguration.getTemplate(\"templates/java/pojo-template.java.ftlh\"), freemarkerConfiguration.getTemplate(\"templates/java/io-template.java.ftlh\")); } @Override protected List getEnumTypeTemplates(Configuration freemarkerConfiguration) throws IOException { return Collections.singletonList( freemarkerConfiguration.getTemplate(\"templates/java/enum-template.java.ftlh\")); } @Override protected List getDataIoTemplates(Configuration freemarkerConfiguration) throws IOException { return Collections.singletonList( freemarkerConfiguration.getTemplate(\"templates/java/data-io-template.java.ftlh\")); } @Override protected FreemarkerLanguageTemplateHelper getHelper(TypeDefinition thisType, String protocolName, String flavorName, Map types, Map options) { return new JavaLanguageTemplateHelper(thisType, protocolName, flavorName, types, options); } @Override protected void postProcessTemplateOutput(File outputFile) { try { FileUtils.writeStringToFile( outputFile, formatter.formatSourceAndFixImports( FileUtils.readFileToString(outputFile, StandardCharsets.UTF_8) ), StandardCharsets.UTF_8 ); } catch (IOException | FormatterException e) { LOGGER.error(\"Error formatting {}\", outputFile, e); } } } The getName method returns Java, this is what needs to be defined in the plc4x-maven-plugin configuration in the language option in order to select this output format. supportedOptions tells the plugin which option tags this code-generation output supports. In case of the Java output, this is only the package option, which defines the package name of the generated output. With supportedOutputFlavors we tell the user, that in general we support the three options: read-write, read-only and passive as valid inputs for the outputFlavor config option of the code-generation plugin. In this case Java doesn’t require any global files being generated for java, so we simply return an empty collection. For complex types, we currently use two templates (however this will soon be reduced to one). So for every complex type in a protocol definition, the templates: templates/java/pojo-template.java.ftlh and templates/java/io-template.java.ftlh will be executed. In case of enum types, only one template is being used. Same as for data-io. The next important method is the getHelper method, which returns an object, that is passed to the templates with the name helper. As mentioned before, a lot of operations would be too complex to implement in pure Freemarker code, so with these helpers every language can provide a helper utility for handling the complex operations. Here an example for a part of a template for generating Java POJOs: ${helper.packageName(protocolName, languageName, outputFlavor)?replace(\".\", \"/\")}/${type.name}.java /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * \"License\"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package ${helper.packageName(protocolName, languageName, outputFlavor)}; ... imports ... // Code generated by code-generation. DO NOT EDIT. public abstract class ${type.name} extends ${type.parentType.name} implements Message { ... SNIP ... } So as you can see, the first line will generate the file-path of the to be generated output. As when creating more and more outputs for different languages, we have realized, that a lot of the code needed in the Helper utility repeats, we therefore introduced a so-called BaseFreemarkerLanguageTemplateHelper which contains a lot of stuff, that is important when generating new language output.","title":"Apache Freemarker","component":"plc4x","version":"latest","name":"freemarker","url":"/plc4x/latest/developers/code-gen/language/freemarker.html","titles":[{"text":"Example Java output","hash":"_example_java_output","id":1}]},"203":{"id":203,"text":"The DF1 protocol has three basic messages: a command message, acknowledge and not acknowledge. A 0x10 is used as delimiter to differentiate between the messages and parts of the command message. ACK NAK 10 06 10 15 This is what a read command message looks like in full-duplex mode using CRC as checksum: Name DLE STX DST SRC CMD STS TNS ADDR SIZE DLE ETX CRC Value 10 02 XX XX 01 00 XX XX XX XX 02 10 03 XX XX The according response with the requested byte data: Name DLE STX DST SRC CMD STS TNS DATA SIZE DLE ETX CRC Value 10 02 XX XX 41 00 XX XX XX XX 02 10 03 XX XX Every message starts with a DLE = 0x10. The second byte is used to differentiate what type of message will follow. In the case of a command message it is 0x02. DST and SRC specify the target and source of the message. CMD = 0x01 means an unprotected read is requested, the command response code is always attained with the addition of 0x40. STS is a status byte, TNS is the transaction counter that is incremented by the master and used to recognize the specific message response. ADDR is the memory address being requested, size specifies how many bytes are to be read. DLE + ETX mark the end of the message, the last two bytes are the CRC that is calculated using the previously sent bytes. Here is the MSpec to model the behaviour: [discriminatedType DF1Symbol [const uint 8 messageStart 0x10] [discriminator uint 8 symbolType] [typeSwitch 'symbolType' ['0x02' DF1SymbolMessageFrame [simple uint 8 destinationAddress] [simple uint 8 sourceAddress] [simple DF1Command command] [const uint 8 messageEnd 0x10] [const uint 8 endTransaction 0x03] [checksum uint 16 'crc' 'STATIC_CALL(\"org.apache.plc4x.java.df1.readwrite.utils.StaticHelper.crcCheck\", destinationAddress, sourceAddress, command)'] ] ['0x06' DF1SymbolMessageFrameACK ] ['0x15' DF1SymbolMessageFrameNAK ] ] ] [discriminatedType DF1Command [discriminator uint 8 commandCode] [simple uint 8 status] [simple uint 16 transactionCounter] [typeSwitch 'commandCode' ['0x01' DF1UnprotectedReadRequest [simple uint 16 address] [simple uint 8 size] ] ['0x41' DF1UnprotectedReadResponse [manualArray uint 8 'data' terminated 'STATIC_CALL(\"org.apache.plc4x.java.df1.readwrite.utils.StaticHelper.dataTerminate\", io)' 'STATIC_CALL(\"org.apache.plc4x.java.df1.readwrite.utils.StaticHelper.readData\", io)' 'STATIC_CALL(\"org.apache.plc4x.java.df1.readwrite.utils.StaticHelper.writeData\", io, element)' 'STATIC_CALL(\"org.apache.plc4x.java.df1.readwrite.utils.StaticHelper.dataLength\", data)'] ] ] ] The basic object is the DF1Symbol, where the second byte is used to distinguish between the different message types using a typeSwitch. In the case of a command message, the message frame contains the DF1Command to further differentiate between the command types. Currently only the unprotected read and its response are implemented.","title":"Example: DF1 MSpec","component":"plc4x","version":"latest","name":"df1","url":"/plc4x/latest/developers/code-gen/protocol/df1.html","titles":[]},"204":{"id":204,"text":"The MSpec format (Message Specification) was a result of a brainstorming session after evaluating a lot of other options. We simply sat down and started to write some imaginary format (imaginary was even the initial Name we used) and created parses for this afterwards and fine-tuned spec and parsers as part of the process of implementing first protocols and language templates. It’s a text-based format. At the root level of these specs are a set of type, discriminatedType, dataIo and enum blocks. type elements are objects who’s content is independent of the input. An example would be the TPKTPacket of the S7 format: [type TPKTPacket [const uint 8 protocolId 0x03] [reserved uint 8 '0x00'] [implicit uint 16 len 'payload.lengthInBytes + 4'] [field COTPPacket 'payload'] ] A discriminatedType type, in contrast, is an object who’s content and structure is influenced by the input. Every discriminated type can contain an arbitrary number of discriminator fields and exactly one typeSwitch element. For example part of the spec for the S7 format looks like this: [discriminatedType S7Message [const uint 8 protocolId 0x32] [discriminator uint 8 messageType] [reserved uint 16 '0x0000'] [simple uint 16 tpduReference] [implicit uint 16 parameterLength 'parameter.lengthInBytes'] [implicit uint 16 payloadLength 'payload.lengthInBytes'] [typeSwitch 'messageType' ['0x01' S7MessageRequest ] ['0x03' S7MessageResponse [simple uint 8 errorClass] [simple uint 8 errorCode ] ] ['0x07' S7MessageUserData ] ] [simple S7Parameter('messageType') parameter] [simple S7Payload('messageType', 'parameter') payload ] ] A types start is declared by an opening square bracket [ and ended with a closing one ]. Also, to both provide a name as first argument. Every type definition contains a list of fields that can have different types. The list of available types are: abstract: used in the parent type declaration do declare a field that has to be defined with the identical type in all sub-types (reserved for discriminatedType). array: array of simple or complex typed objects. checksum: used for calculating and verifying checksum values. const: expects a given value and causes a hard exception if the value doesn’t match. discriminator: special type of simple typed field which is used to determine the concrete type of object (reserved for discriminatedType). enum: special form of field, used if an enum types property is to be used instead of it’s primary value. implicit: a field required for parsing, but is usually defined though other data, so it’s not stored in the object, but calculated on serialization. assert: generally similar to constant fields, however do they throw AssertionExceptions instead of hard ParseExceptions. They are used in combination with optional fields. manualArray: like an array field, however the logic for serializing, parsing, number of elements and size have to be provided manually. manual: simple field, where the logic for parsing, serializing and size have to be provided manually. optional: simple or complex typed object, that is only present if an optional condition expression evaluates to true and no AssertionException is thrown when parsing the referenced type. padding: field used to add padding data to make datastructures aligned. reserved: expects a given value, but only warns if condition is not meet. simple: simple or complex typed object. typeSwitch: not a real field, but indicates the existence of sub-types, which are declared inline (reserved for discriminatedType). unknown: field used to declare parts of a message that still has to be defined. Generally used when reverse-engineering a protocol. Messages with unknown fields can only be parsed and not serialized. virtual: generates a field in the message, that is generally only used for simplification. It’s not used for parsing or serializing. The full syntax and explanations of these type follow in the following chapters. Another thing we have to explain are how types are specified. In general, we distinguish between two types of types used in field definitions: simple types complex types Simple types are usually raw data the format is: {base-type} {size} The base types available are currently: bit: Simple boolean value or bit. byte: Special value fixed to 8 bit, which defaults to either signed or unsigned depending on the programming language (Java it defaults to signed integer values and in C and Go it defaults to unsigned integers). uint: The input is treated as unsigned integer value. int: The input is treated as signed integer value. float: The input is treated as floating point number. string: The input is treated as string. All above types take a size value which provides how many bits should be read. All except the bit type, which is fixed to one single bit. So reading an unsigned byte would be: uint 8. There is currently one special type, reserved for string values, whose length is determined by an expression instead of a fixed number of bits. It is considered a variable length string: vstring: The input is treated as a variable length string and requires an expression tp provide the number of bits to read. In contrast to simple types, complex type reference other complex types (Root elements of the spec document). How the parser should interpret them is defined in the referenced types definition. In the example above, for example the S7Parameter is defined in another part of the spec. An array field is exactly what you expect. It generates an field which is not a single-value element but an array or list of elements. [array {simple-type} {size} '{name}' {'count', 'length', 'terminated'} '{expression}'] [array {complex-type} '{name}' {'count', 'length', 'terminated'} '{expression}'] Array types can be both simple and complex typed and have a name. An array field must specify the way it’s length is determined as well as an expression defining it’s length. Possible values are: - count: This means that exactly the number of elements are parsed as the expression specifies. - length: In this case a given number of bytes are being read. So if an element has been parsed and there are still bytes left, another element is parsed. - terminated: In this case the parser will continue reading elements until it encounters a termination sequence. A checksum field can only operate on simple types. [checksum {simple-type} {size} '{name}' '{checksum-expression}'] When parsing a given simple type is parsed and then the result is compared to the value the checksum-expression provides. If they don’t match an exception is thrown. When serializing, the checksum-expression is evaluated and the result is then output. Note: As quite often a checksum is calculated based on the byte data of a message read up to the checksum, an artificial variable is available in expressions called checksumRawData of type byte[] which contains an array of all the byte data read in the current message element and it’s sub types in case of a discriminated type. This field doesn’t keep any data in memory. See also: - implicit field: A checksum field is similar to an implicit field, however the checksum-expression is evaluated are parsing time and throws an exception if the values don’t match. A const field simply reads a given simple type and compares to a given reference value. [const {simple-type} {size} '{name}' {reference}] When parsing it makes the parser throw an Exception if the parsed value does not match. When serializing is simply outputs the expected constant. This field doesn’t keep any data in memory. See also: - implicit field: A const field is similar to an implicit field, however it compares the parsed input to the reference value and throws an exception if the values don’t match. Discriminator fields are only used in `discriminatedType`s. [discriminator {simple-type} {size} '{name}'] When parsing a discriminator fields result just in being a locally available variable. When serializing is accesses the discriminated types constants and uses these as output. See also: - implicit field: A discriminator field is similar to an implicit field, however doesn’t provide a serialization expression as it uses the discrimination constants of the type it is. - discriminated types Implicit types are fields that get their value implicitly from the data they contain. [implicit {simple-type} {size} '{name}' '{serialization-expression}'] When parsing an implicit type is available as a local variable and can be used by other expressions. When serializing the serialization-expression is executed and the resulting value is output. This type of field is generally used for fields that handle numbers of elements or length values as these can be implicitly calculated at serialization time. This field doesn’t keep any data in memory. [manualArray {simple-type} {size} '{name}' {'count', 'length', 'terminated'} '{loop-expression}' '{serialization-expression}' '{deserialization-expression}' '{length-expression}'] [manualArray {complex-type} '{name}' {'count', 'length', 'terminated'} '{loop-expression}' '{serialization-expression}' '{deserialization-expression}' '{length-expression}'] [manual {simple-type} {size} '{name}' '{serialization-expression}' '{deserialization-expression}' '{length-expression}'] [manual {complex-type} '{name}' '{serialization-expression}' '{deserialization-expression}' '{length-expression}'] An optional field is a type of field that can also be null. [optional {simple-type} {size} '{name}' '{optional-expression}'] [optional {complex-type} '{name}' '{optional-expression}'] When parsing the optional-expression is evaluated. If this results in`false` nothing is output, if it evaluates to true it is serialized as a simple field. When serializing, if the field is null nothing is output, if it is not null it is serialized normally. See also: - simple field: In general optional fields are identical to simple fields except the ability to be null or be skipped. A padding field allows aligning of data blocks. It outputs additional padding data, given amount of times specified by padding expression. Padding is added only when result of expression is bigger than zero. [padding {simple-type} {size} '{pading-value}' '{padding-expression}'] When parsing a padding field is just consumed without being made available as property or local variable if the padding-expression evaluates to value greater than zero. If it doesn’t, it is just skipped. This field doesn’t keep any data in memory. Reserved fields are very similar to const fields, however they don’t throw exceptions, but instead log messages if the values don’t match. The reason for this is that in general reserved fields have the given value until they start to be used. If the field starts to be used this shouldn’t break existing applications, but it should raise a flag as it might make sense to update the drivers. [reserved {simple-type} {size} '{name}' '{reference}'] When parsing the values is parsed and the result is compared to the reference value. If the values don’t match, a log message is sent. This field doesn’t keep any data in memory. See also: - const field Simple fields are the most common types of fields. A simple field directly mapped to a normally typed field. [simple {simple-type} {size} '{name}'] [simple {complex-type} '{name}'] When parsing, the given type is parsed (can’t be null) and saved in the corresponding model instance’s property field. When serializing it is serialized normally. Virtual fields have no impact on the input or output. They simply result in creating artificial get-methods in the generated model classes. [virtual {simple-type} {size} '{name}' '{value-expression}'] [virtual {complex-type} '{name}' '{value-expression}'] Instead of being bound to a property, the return value of a virtual property is created by evaluating the value-expression. These types of fields can only occur in discriminated types. A discriminatedType must contain exactly one typeSwitch field, as it defines the sub-types. [typeSwitch '{arument-1}', '{arument-2}', ... ['{argument-1-value-1}' {subtype-1-name} ... Fields ... ] ['{vargument-1-value-2}', '{argument-2-value-1}' {subtype-2-name} ... Fields ... ] ['{vargument-1-value-3}', '{argument-2-value-2}' {subtype-2-name} [uint 8 'existing-attribute-1', uint 16 'existing-attribute-2'] ... Fields ... ] A type switch element must contain a list of at least one argument expression. Only the last option can stay empty, which results in a default type. Each sub-type declares a comma-separated list of concrete values. It must contain at most as many elements as arguments are declared for the type switch. The matching type is found during parsing by starting with the first argument. If it matches and there are no more values, the type is found, if more values are provided, they are compared to the other argument values. If no type is found, an exception is thrown. Inside each sub-type can declare fields using a subset of the types (discriminator and typeSwitch can’t be used here) The third case in above code-snippet also passes a named attribute to the sub-type. The name must be identical to any argument or named field parsed before the switchType. These arguments are then available for expressions or passing on in the subtypes. See also: - discriminatedType Some times it is necessary to pass along additional parameters. If a complex type requires parameters, these are declared in the header of that type. [discriminatedType S7Payload(uint 8 'messageType', S7Parameter 'parameter') [typeSwitch 'parameter.discriminatorValues[0]', 'messageType' ['0xF0' S7PayloadSetupCommunication] ['0x04','0x01' S7PayloadReadVarRequest] ['0x04','0x03' S7PayloadReadVarResponse [arrayField S7VarPayloadDataItem 'items' count 'CAST(parameter, S7ParameterReadVarResponse).numItems'] ] ['0x05','0x01' S7PayloadWriteVarRequest [arrayField S7VarPayloadDataItem 'items' count 'COUNT(CAST(parameter, S7ParameterWriteVarRequest).items)'] ] ['0x05','0x03' S7PayloadWriteVarResponse [arrayField S7VarPayloadStatusItem 'items' count 'CAST(parameter, S7ParameterWriteVarResponse).numItems'] ] ['0x00','0x07' S7PayloadUserData ] ] ] Therefore wherever a complex type is referenced an additional list of parameters can be passed to the next type. Here comes an example of this in above snippet: [field S7Payload 'payload' ['messageType', 'parameter']]","title":"The MSpec format","component":"plc4x","version":"latest","name":"mspec","url":"/plc4x/latest/developers/code-gen/protocol/mspec.html","titles":[{"text":"Simple Types","hash":"_simple_types","id":1},{"text":"Complex Types","hash":"_complex_types","id":2},{"text":"Field Types and their Syntax","hash":"_field_types_and_their_syntax","id":3},{"text":"array Field","hash":"_array_field","id":4},{"text":"checksum Field","hash":"_checksum_field","id":5},{"text":"const Field","hash":"_const_field","id":6},{"text":"discriminator Field","hash":"_discriminator_field","id":7},{"text":"implicit Field","hash":"_implicit_field","id":8},{"text":"manualArray Field","hash":"_manualarray_field","id":9},{"text":"manual Field","hash":"_manual_field","id":10},{"text":"optional Field","hash":"_optional_field","id":11},{"text":"padding Field","hash":"_padding_field","id":12},{"text":"reserved Field","hash":"_reserved_field","id":13},{"text":"simple Field","hash":"_simple_field","id":14},{"text":"virtual Field","hash":"_virtual_field","id":15},{"text":"typeSwitch Field","hash":"_typeswitch_field","id":16},{"text":"Parameters","hash":"_parameters","id":17}]},"205":{"id":205,"text":"ConnectConnectedBrowseReadWriteSubscribeUnsubscribeinitializingSend 'Add Or Update AMS Routes'Send 'ADS Read Device Info'Receive 'Add Or Update AMS Routes'Receive 'ADS Read Device Info'Init Read Online and Offline VersionReset Symbol and Data-Type DataSend 'Read Online-Version (Symbolic)'Send 'Read Offline-Version'Receive 'Read Online-Version (Symbolic)'Receive 'Read Offline-Version'Send 'Read Symbol- and Data-Type-Table sizes'Receive 'Read Symbol- and Data-Type-Table sizes'Send 'Read Data-Type-Table'Receive 'Read Data-Type-Table'Send 'Read Symbol-Table'Receive 'Read Symbol-Table'Subscribe to changes to the Online- and Offline VersionBrowse: Send 'Read Symbol- and Data-Type-Table sizes'Browse: Receive 'Read Symbol- and Data-Type-Table sizes'Browse: Send 'Read Data-Type-Table'Browse: Receive 'Read Data-Type-Table'Browse: Send 'Read Symbol-Table'Browse: Receive 'Read Symbol-Table'Return API Browse ResultRead: Send 'Multi Item Address Resolution' for unresolvedRead: Receive 'Multi Item Address Resolution' for unresolvedRead: Send 'Multi Item Read'Read: Receive 'Multi Item Read'Read: Return API Read ResultRead: Send 'Single Item Address Resolution'Read: Receive 'Single Item Address Resolution'Read: Send 'Single Item Read'Read: Receive 'Single Item Read'Write: Send 'Multi Item Address Resolution' for unresolvedWrite: Receive 'Multi Item Address Resolution' for unresolvedWrite: Send 'Multi Item Write'Write: Receive 'Multi Item Write'Write: Return API Write ResultWrite: Send 'Single Item Address Resolution'Write: Receive 'Single Item Address Resolution'Write: Send 'Single Item Write'Write: Receive 'Single Item Write'Subscribe: Send 'Multi Item Address Resolution' for unresolvedSubscribe: Receive 'Multi Item Address Resolution' for unresolvedSubscribe: Send 'Single Item Address Resolution'Subscribe: Receive 'Single Item Address Resolution'Subscribe: Send 'Single Item 1 Subscibe'Subscribe: Receive 'Single Item 1 Subscibe'Subscribe: Send 'Single Item 2 Subscibe'Subscribe: Receive 'Single Item 2 Subscibe'Subscribe: Send 'Single Item n Subscibe'Subscribe: Receive 'Single Item n Subscibe'Subscribe: Return API Write ResultUnsubscribe: Send 'Single Item 1 Unsubscribe'Unsubscribe: Receive 'Single Item 1 Unsubscribe'Unsubscribe: Send 'Single Item 2 Unsubscribe'Unsubscribe: Receive 'Single Item 2 Unsubscribe'Unsubscribe: Send 'Single Item n Unsubscribe'Unsubscribe: Receive 'Single Item n Unsubscribe'Unsubscribe: Return API Unsubscribe ResultAPI Browse RequestAPI Read RequestAPI Write RequestAPI Subscription RequestAPI Unsubscription RequestUsing Authentication?truefalseConfig: Monitor PLC changes?truefalseConfig: Load Symbol- and Data-Type-Tables?truefalseConfig: Monitor PLC changes?trueUpdate the online- or offline version (Depending on wich one changed)Is symbol- and data-type-table loaded?truefalseIs single item read request?falseAre all field addresses resolved?unresolvedresolvedtrueIs the field address resolved?falsetrueIs single item write request?falseAre all field addresses resolved?unresolvedresolvedtrueIs the field address resolved?falsetrueIs single item subscription request?falseAre all field addresses resolved?unresolvedresolvedtrueIs the field address resolved?falsetrue","title":"Beckhoff ADS Protocol","component":"plc4x","version":"latest","name":"protocol","url":"/plc4x/latest/developers/protocols/ads/protocol.html","titles":[]},"206":{"id":206,"text":"ConnectConnectedBrowseReadWriteSubscribeUnsubscribeDisconnectinitializingSend ListServices requestReceive ListServices responseSend EipConnectionRequest requestReceive EipConnectionRequest responseSend GetAllAttributes requestSend OpenConnectionManager requestReceive GetAllAttributes responseReceive OpenConnectionManager responsereadWithConnectionManagerreadWithoutConnectionManagerreadWithoutMessageRouterSend SendUnitData requestReceive SendUnitData responseSend CipRRData requestReceive CipRRData responseSend unconnected CipReadRequest request for each tagReceive unconnected CipReadRequest responsewriteWithConnectionManagerwriteWithoutConnectionManagerwriteWithoutMessageRouterSend unconnected CipWriteRequest request for each tagReceive unconnected CipWriteRequest responseSend ConnectionManagerClose requestSend Disconnect requestReceive ConnectionManagerClose responseReceive Disconnect responseAPI Browse RequestAPI Read RequestAPI Write RequestAPI Subscription RequestAPI Unsubscription RequestAPI Disconnect RequestIf successfull, extract 'CIP encapsulation support' setting\"Response is an EipConnectionResponse\"?truefalseExtract setting for 'useMessageRouter' and 'useConnectionManager'. If useConnectionManagertruefalseconnectionId != 0truefalseuseMessageRouteruseConnectionManagertruefalsefalseuseMessageRouteruseConnectionManagertruefalsefalse","title":"EIP Protocol","component":"plc4x","version":"latest","name":"protocol","url":"/plc4x/latest/developers/protocols/eip/protocol.html","titles":[]}},"components":{},"componentVersions":{"plc4x/latest":{"displayVersion":"latest","title":"PLC4X","version":"latest","name":"plc4x","prerelease":true,"asciidoc":{"attributes":{"env":"site","env-site":"","site-gen":"antora","site-gen-antora":"","attribute-missing":"warn","data-uri":null,"icons":"font","sectanchors":"","source-highlighter":"highlight.js","site-title":"PLC4X","allow-uri-read":"true","current-last-released-version":"0.12.0"},"sourcemap":false,"extensions":[{}]},"url":"/plc4x/latest/users/index.html","navigation":[{"items":[{"content":"Users","url":"/plc4x/latest/users/index.html","urlType":"internal","items":[{"content":"Download","url":"/plc4x/latest/users/download.html","urlType":"internal"},{"content":"Adopters","url":"/plc4x/latest/users/adopters.html","urlType":"internal"},{"content":"Commercial Support","url":"/plc4x/latest/users/commercial-support.html","urlType":"internal"},{"content":"Getting Started","url":"/plc4x/latest/users/getting-started/index.html","urlType":"internal","items":[{"content":"Getting Started with C","url":"/plc4x/latest/users/getting-started/plc4c.html","urlType":"internal"},{"content":"Getting Started with C#","url":"/plc4x/latest/users/getting-started/plc4cs.html","urlType":"internal"},{"content":"Getting Started with Go","url":"/plc4x/latest/users/getting-started/plc4go.html","urlType":"internal"},{"content":"Getting Started with Java","url":"/plc4x/latest/users/getting-started/plc4j.html","urlType":"internal"},{"content":"Getting Started with Python","url":"/plc4x/latest/users/getting-started/plc4py.html","urlType":"internal"},{"content":"Using SNAPSHOT versions","url":"/plc4x/latest/users/getting-started/using-snapshots.html","urlType":"internal"},{"content":"General Concepts","url":"/plc4x/latest/users/getting-started/general-concepts.html","urlType":"internal"},{"content":"Virtual Modbus","url":"/plc4x/latest/users/getting-started/virtual-modbus.html","urlType":"internal"}]},{"content":"Blogs, Videos and Slides on Apache PLC4X","url":"/plc4x/latest/users/blogs-videos-and-slides.html","urlType":"internal"},{"content":"Protocols","url":"/plc4x/latest/users/protocols/index.html","urlType":"internal","items":[{"content":"AB-ETH","url":"/plc4x/latest/users/protocols/ab-eth.html","urlType":"internal"},{"content":"ADS (Automation Device Specification)","url":"/plc4x/latest/users/protocols/ads.html","urlType":"internal"},{"content":"BACnet/IP","url":"/plc4x/latest/users/protocols/bacnet.html","urlType":"internal"},{"content":"C-Bus","url":"/plc4x/latest/users/protocols/c-bus.html","urlType":"internal"},{"content":"CANopen","url":"/plc4x/latest/users/protocols/canopen.html","urlType":"internal"},{"content":"CtlrX","url":"/plc4x/latest/users/protocols/ctrlx.html","urlType":"internal"},{"content":"DeltaV","url":"/plc4x/latest/users/protocols/deltav.html","urlType":"internal"},{"content":"DF1","url":"/plc4x/latest/users/protocols/df1.html","urlType":"internal"},{"content":"EtherNet/IP","url":"/plc4x/latest/users/protocols/eip.html","urlType":"internal"},{"content":"Firmata","url":"/plc4x/latest/users/protocols/firmata.html","urlType":"internal"},{"content":"Generic CAN","url":"/plc4x/latest/users/protocols/genericcan.html","urlType":"internal"},{"content":"IEC-60870","url":"/plc4x/latest/users/protocols/iec-60870.html","urlType":"internal"},{"content":"KNXnet/IP","url":"/plc4x/latest/users/protocols/knxnetip.html","urlType":"internal"},{"content":"Logix","url":"/plc4x/latest/users/protocols/logix.html","urlType":"internal"},{"content":"Modbus (TCP/UDP/Serial)","url":"/plc4x/latest/users/protocols/modbus.html","urlType":"internal"},{"content":"OPC UA","url":"/plc4x/latest/users/protocols/opcua.html","urlType":"internal"},{"content":"Open-Protocol (Torque-Tools)","url":"/plc4x/latest/users/protocols/open-protocol.html","urlType":"internal"},{"content":"PLC4X (Proxy) (TCP)","url":"/plc4x/latest/users/protocols/plc4x.html","urlType":"internal"},{"content":"Profinet (In Development)","url":"/plc4x/latest/users/protocols/profinet.html","urlType":"internal"},{"content":"S7 (Step7)","url":"/plc4x/latest/users/protocols/s7.html","urlType":"internal"},{"content":"Simulated","url":"/plc4x/latest/users/protocols/simulated.html","urlType":"internal"}]},{"content":"Transports","url":"/plc4x/latest/users/transports/index.html","urlType":"internal","items":[{"content":"TCP","url":"/plc4x/latest/users/transports/tcp.html","urlType":"internal"},{"content":"UDP","url":"/plc4x/latest/users/transports/udp.html","urlType":"internal"},{"content":"Serial Port","url":"/plc4x/latest/users/transports/serial.html","urlType":"internal"},{"content":"SocketCAN","url":"/plc4x/latest/users/transports/socketcan.html","urlType":"internal"},{"content":"Raw Socket","url":"/plc4x/latest/users/transports/raw-socket.html","urlType":"internal"},{"content":"PCAP Replay","url":"/plc4x/latest/users/transports/pcap-replay.html","urlType":"internal"}]},{"content":"Integrations","url":"/plc4x/latest/users/integrations/index.html","urlType":"internal","items":[{"content":"Apache Calcite","url":"/plc4x/latest/users/integrations/apache-calcite.html","urlType":"internal"},{"content":"Apache Camel","url":"/plc4x/latest/users/integrations/apache-camel.html","urlType":"internal"},{"content":"Apache IotDB","url":"/plc4x/latest/users/integrations/apache-iotdb.html","urlType":"internal"},{"content":"<a href=\"https://kafka.apache.org/\">Apache Kafka","url":"/plc4x/latest/users/integrations/apache-kafka.html","urlType":"internal"},{"content":"Apache NiFi","url":"/plc4x/latest/users/integrations/apache-nifi.html","urlType":"internal"},{"content":"Apache StreamPipes","url":"/plc4x/latest/users/integrations/apache-streampipes.html","urlType":"internal"},{"content":"Eclipse Ditto","url":"/plc4x/latest/users/integrations/eclipse-ditto.html","urlType":"internal"},{"content":"Introduction","url":"/plc4x/latest/users/integrations/eclipse-milo.html","urlType":"internal"}]},{"content":"Tools","url":"/plc4x/latest/users/tools/index.html","urlType":"internal","items":[{"content":"Capture Replay","url":"/plc4x/latest/users/tools/capture-replay.html","urlType":"internal"},{"content":"The Connection Cache concept","url":"/plc4x/latest/users/tools/connection-cache.html","urlType":"internal"},{"content":"Object PLC Mapping","url":"/plc4x/latest/users/tools/opm.html","urlType":"internal"},{"content":"Scraper","url":"/plc4x/latest/users/tools/scraper.html","urlType":"internal"},{"content":"Testing (or using PLC4X without a PLC)","url":"/plc4x/latest/users/tools/testing.html","urlType":"internal"}]},{"content":"Industry 4.0 with Apache","url":"/plc4x/latest/users/industry40.html","urlType":"internal"},{"content":"Security Vulnerabilities","url":"/plc4x/latest/users/security.html","urlType":"internal"}]}],"root":true,"order":1},{"items":[{"content":"Developers","url":"/plc4x/latest/developers/index.html","urlType":"internal","items":[{"content":"Preparing your Computer","url":"/plc4x/latest/developers/preparing/index.html","urlType":"internal","items":[{"content":"Linux","url":"/plc4x/latest/developers/preparing/linux.html","urlType":"internal"},{"content":"Mac OS","url":"/plc4x/latest/developers/preparing/macos.html","urlType":"internal"},{"content":"Windows","url":"/plc4x/latest/developers/preparing/windows.html","urlType":"internal"}]},{"content":"Building PLC4X","url":"/plc4x/latest/developers/building.html","urlType":"internal"},{"content":"Contributing","url":"/plc4x/latest/developers/contributing.html","urlType":"internal"},{"content":"Tutorials","url":"/plc4x/latest/developers/tutorials/index.html","urlType":"internal","items":[{"content":"Basic Building Blocs of a Driver / Protocol","url":"/plc4x/latest/developers/tutorials/writing-driver.html","urlType":"internal"},{"content":"Testing Serializers and Parsers","url":"/plc4x/latest/developers/tutorials/testing-serializers-and-parsers.html","urlType":"internal"}]},{"content":"Code Generation","url":"/plc4x/latest/developers/code-gen/index.html","urlType":"internal","items":[{"content":"The MSpec format","url":"/plc4x/latest/developers/code-gen/protocol/mspec.html","urlType":"internal"},{"content":"Apache Freemarker","url":"/plc4x/latest/developers/code-gen/language/freemarker.html","urlType":"internal"},{"content":"Example: DF1 MSpec","url":"/plc4x/latest/developers/code-gen/protocol/df1.html","urlType":"internal"}]},{"content":"Usage of protocols","url":"/plc4x/latest/developers/protocols/index.html","urlType":"internal","items":[{"content":"Beckhoff ADS Protocol","url":"/plc4x/latest/developers/protocols/ads/protocol.html","urlType":"internal"},{"content":"EIP Protocol","url":"/plc4x/latest/developers/protocols/eip/protocol.html","urlType":"internal"}]},{"content":"Infrastructure","url":"/plc4x/latest/developers/infrastructure/index.html","urlType":"internal","items":[{"content":"Continuous Integration","url":"/plc4x/latest/developers/infrastructure/ci.html","urlType":"internal"},{"content":"Bug & Issue Tracker","url":"/plc4x/latest/developers/infrastructure/issues.html","urlType":"internal"},{"content":"Code Analysis","url":"/plc4x/latest/developers/infrastructure/sonar.html","urlType":"internal"},{"content":"WIKI","url":"/plc4x/latest/developers/infrastructure/wiki.html","urlType":"internal"},{"content":"infrastructure/vm.adoc","url":"/plc4x/latest/developers/infrastructure/vm.html","urlType":"internal"},{"content":"Generating the Website","url":"/plc4x/latest/developers/infrastructure/website.html","urlType":"internal"}]},{"content":"Releasing and Validating Releases","url":"/plc4x/latest/developers/release/index.html","urlType":"internal","items":[{"content":"Releasing PLC4X","url":"/plc4x/latest/developers/release/release.html","urlType":"internal"},{"content":"Validating a staged release","url":"/plc4x/latest/developers/release/validation.html","urlType":"internal"},{"content":"Releasing PLC4X Build-Tools","url":"/plc4x/latest/developers/release/build-tools.html","urlType":"internal"}]},{"content":"Tools","url":"/plc4x/latest/developers/tools.html","urlType":"internal"},{"content":"Team","url":"/plc4x/latest/developers/team.html","urlType":"internal"},{"content":"Decision Making","url":"/plc4x/latest/developers/decisions.html","urlType":"internal"},{"content":"Apache Maturity Model Assessment for PLC4X","url":"/plc4x/latest/developers/maturity.html","urlType":"internal"}]}],"root":true,"order":2}]},"plc4x/pre-release":{"displayVersion":"pre-release","title":"PLC4X","version":"pre-release","name":"plc4x","prerelease":true,"asciidoc":{"attributes":{"env":"site","env-site":"","site-gen":"antora","site-gen-antora":"","attribute-missing":"warn","data-uri":null,"icons":"font","sectanchors":"","source-highlighter":"highlight.js","site-title":"PLC4X","allow-uri-read":"true","current-last-released-version":"0.13.0-SNAPSHOT","current-full-version":"0.13.0"},"sourcemap":false,"extensions":[{}]},"url":"/plc4x/pre-release/users/index.html","navigation":[{"items":[{"content":"Users","url":"/plc4x/pre-release/users/index.html","urlType":"internal","items":[{"content":"Download","url":"/plc4x/pre-release/users/download.html","urlType":"internal"},{"content":"Adopters","url":"/plc4x/pre-release/users/adopters.html","urlType":"internal"},{"content":"Bug & Issue Tracker","url":"/plc4x/pre-release/users/issues.html","urlType":"internal"},{"content":"Commercial Support","url":"/plc4x/pre-release/users/commercial-support.html","urlType":"internal"},{"content":"Getting Started","url":"/plc4x/pre-release/users/getting-started/index.html","urlType":"internal","items":[{"content":"Getting Started with C","url":"/plc4x/pre-release/users/getting-started/plc4c.html","urlType":"internal"},{"content":"Getting Started with C#","url":"/plc4x/pre-release/users/getting-started/plc4cs.html","urlType":"internal"},{"content":"Getting Started with Go","url":"/plc4x/pre-release/users/getting-started/plc4go.html","urlType":"internal"},{"content":"Getting Started with Java","url":"/plc4x/pre-release/users/getting-started/plc4j.html","urlType":"internal"},{"content":"Getting Started with Python","url":"/plc4x/pre-release/users/getting-started/plc4py.html","urlType":"internal"},{"content":"Using SNAPSHOT versions","url":"/plc4x/pre-release/users/getting-started/using-snapshots.html","urlType":"internal"},{"content":"General Concepts","url":"/plc4x/pre-release/users/getting-started/general-concepts.html","urlType":"internal"},{"content":"Virtual Modbus","url":"/plc4x/pre-release/users/getting-started/virtual-modbus.html","urlType":"internal"},{"content":"OPC UA : Client certificate creation","url":"/plc4x/pre-release/users/getting-started/opcua-client-certificate.html","urlType":"internal"}]},{"content":"Blogs, Videos and Slides on Apache PLC4X","url":"/plc4x/pre-release/users/blogs-videos-and-slides.html","urlType":"internal"},{"content":"Protocols","url":"/plc4x/pre-release/users/protocols/index.html","urlType":"internal","items":[{"content":"AB-ETH","url":"/plc4x/pre-release/users/protocols/ab-eth.html","urlType":"internal"},{"content":"ADS (Automation Device Specification)","url":"/plc4x/pre-release/users/protocols/ads.html","urlType":"internal"},{"content":"BACnet/IP","url":"/plc4x/pre-release/users/protocols/bacnet.html","urlType":"internal"},{"content":"C-Bus","url":"/plc4x/pre-release/users/protocols/c-bus.html","urlType":"internal"},{"content":"CANopen","url":"/plc4x/pre-release/users/protocols/canopen.html","urlType":"internal"},{"content":"CtlrX","url":"/plc4x/pre-release/users/protocols/ctrlx.html","urlType":"internal"},{"content":"DeltaV","url":"/plc4x/pre-release/users/protocols/deltav.html","urlType":"internal"},{"content":"DF1","url":"/plc4x/pre-release/users/protocols/df1.html","urlType":"internal"},{"content":"EtherNet/IP","url":"/plc4x/pre-release/users/protocols/eip.html","urlType":"internal"},{"content":"Firmata","url":"/plc4x/pre-release/users/protocols/firmata.html","urlType":"internal"},{"content":"Generic CAN","url":"/plc4x/pre-release/users/protocols/genericcan.html","urlType":"internal"},{"content":"IEC-60870","url":"/plc4x/pre-release/users/protocols/iec-60870.html","urlType":"internal"},{"content":"KNXnet/IP","url":"/plc4x/pre-release/users/protocols/knxnetip.html","urlType":"internal"},{"content":"Logix","url":"/plc4x/pre-release/users/protocols/logix.html","urlType":"internal"},{"content":"Modbus (TCP/UDP/Serial)","url":"/plc4x/pre-release/users/protocols/modbus.html","urlType":"internal"},{"content":"OPC UA","url":"/plc4x/pre-release/users/protocols/opcua.html","urlType":"internal"},{"content":"Open-Protocol (Torque-Tools)","url":"/plc4x/pre-release/users/protocols/open-protocol.html","urlType":"internal"},{"content":"PLC4X (Proxy) (TCP)","url":"/plc4x/pre-release/users/protocols/plc4x.html","urlType":"internal"},{"content":"Profinet (In Development)","url":"/plc4x/pre-release/users/protocols/profinet.html","urlType":"internal"},{"content":"S7 (Step7)","url":"/plc4x/pre-release/users/protocols/s7.html","urlType":"internal"},{"content":"S7-Light (Step7)","url":"/plc4x/pre-release/users/protocols/s7-light.html","urlType":"internal"},{"content":"Simulated","url":"/plc4x/pre-release/users/protocols/simulated.html","urlType":"internal"},{"content":"UMAS (Schneider Electric PLCs)","url":"/plc4x/pre-release/users/protocols/umas.html","urlType":"internal"}]},{"content":"Transports","url":"/plc4x/pre-release/users/transports/index.html","urlType":"internal","items":[{"content":"TCP","url":"/plc4x/pre-release/users/transports/tcp.html","urlType":"internal"},{"content":"UDP","url":"/plc4x/pre-release/users/transports/udp.html","urlType":"internal"},{"content":"Serial Port","url":"/plc4x/pre-release/users/transports/serial.html","urlType":"internal"},{"content":"SocketCAN","url":"/plc4x/pre-release/users/transports/socketcan.html","urlType":"internal"},{"content":"Raw Socket","url":"/plc4x/pre-release/users/transports/raw-socket.html","urlType":"internal"},{"content":"PCAP Replay","url":"/plc4x/pre-release/users/transports/pcap-replay.html","urlType":"internal"}]},{"content":"Integrations","url":"/plc4x/pre-release/users/integrations/index.html","urlType":"internal","items":[{"content":"Apache Calcite","url":"/plc4x/pre-release/users/integrations/apache-calcite.html","urlType":"internal"},{"content":"Apache Camel","url":"/plc4x/pre-release/users/integrations/apache-camel.html","urlType":"internal"},{"content":"Apache IotDB","url":"/plc4x/pre-release/users/integrations/apache-iotdb.html","urlType":"internal"},{"content":"Apache Kafka","url":"/plc4x/pre-release/users/integrations/apache-kafka.html","urlType":"internal"},{"content":"Apache NiFi","url":"/plc4x/pre-release/users/integrations/apache-nifi.html","urlType":"internal"},{"content":"Apache StreamPipes","url":"/plc4x/pre-release/users/integrations/apache-streampipes.html","urlType":"internal"},{"content":"Eclipse Ditto","url":"/plc4x/pre-release/users/integrations/eclipse-ditto.html","urlType":"internal"},{"content":"Eclipse Milo (OPC UA Server)","url":"/plc4x/pre-release/users/integrations/eclipse-milo.html","urlType":"internal"}]},{"content":"Tools","url":"/plc4x/pre-release/users/tools/index.html","urlType":"internal","items":[{"content":"Capture Replay","url":"/plc4x/pre-release/users/tools/capture-replay.html","urlType":"internal"},{"content":"The Connection Cache concept","url":"/plc4x/pre-release/users/tools/connection-cache.html","urlType":"internal"},{"content":"Object PLC Mapping","url":"/plc4x/pre-release/users/tools/opm.html","urlType":"internal"},{"content":"Scraper","url":"/plc4x/pre-release/users/tools/scraper.html","urlType":"internal"},{"content":"Testing (or using PLC4X without a PLC)","url":"/plc4x/pre-release/users/tools/testing.html","urlType":"internal"}]},{"content":"Industry 4.0 with Apache","url":"/plc4x/pre-release/users/industry40.html","urlType":"internal"},{"content":"Security Vulnerabilities","url":"/plc4x/pre-release/users/security.html","urlType":"internal"}]}],"root":true,"order":1},{"items":[{"content":"Developers","url":"/plc4x/pre-release/developers/index.html","urlType":"internal","items":[{"content":"Preparing your Computer","url":"/plc4x/pre-release/developers/preparing/index.html","urlType":"internal","items":[{"content":"Linux","url":"/plc4x/pre-release/developers/preparing/linux.html","urlType":"internal"},{"content":"Mac OS","url":"/plc4x/pre-release/developers/preparing/macos.html","urlType":"internal"},{"content":"Windows","url":"/plc4x/pre-release/developers/preparing/windows.html","urlType":"internal"}]},{"content":"Building PLC4X","url":"/plc4x/pre-release/developers/building.html","urlType":"internal"},{"content":"Contributing","url":"/plc4x/pre-release/developers/contributing.html","urlType":"internal"},{"content":"Tutorials","url":"/plc4x/pre-release/developers/tutorials/index.html","urlType":"internal","items":[{"content":"Strategy for creating a new Driver","url":"/plc4x/pre-release/developers/tutorials/writing-driver.html","urlType":"internal"},{"content":"Testing Serializers and Parsers","url":"/plc4x/pre-release/developers/tutorials/testing-serializers-and-parsers.html","urlType":"internal"}]},{"content":"Code Generation","url":"/plc4x/pre-release/developers/code-gen/index.html","urlType":"internal","items":[{"content":"The MSpec format","url":"/plc4x/pre-release/developers/code-gen/protocol/mspec.html","urlType":"internal"},{"content":"Apache Freemarker","url":"/plc4x/pre-release/developers/code-gen/language/freemarker.html","urlType":"internal"},{"content":"Example: DF1 MSpec","url":"/plc4x/pre-release/developers/code-gen/protocol/df1.html","urlType":"internal"}]},{"content":"Usage of protocols","url":"/plc4x/pre-release/developers/protocols/index.html","urlType":"internal","items":[{"content":"Beckhoff ADS Protocol","url":"/plc4x/pre-release/developers/protocols/ads/protocol.html","urlType":"internal"},{"content":"EIP Protocol","url":"/plc4x/pre-release/developers/protocols/eip/protocol.html","urlType":"internal"}]},{"content":"Infrastructure","url":"/plc4x/pre-release/developers/infrastructure/index.html","urlType":"internal","items":[{"content":"Continuous Integration","url":"/plc4x/pre-release/developers/infrastructure/ci.html","urlType":"internal"},{"content":"Bug & Issue Tracker","url":"/plc4x/pre-release/developers/infrastructure/issues.html","urlType":"internal"},{"content":"Code Analysis","url":"/plc4x/pre-release/developers/infrastructure/sonar.html","urlType":"internal"},{"content":"WIKI","url":"/plc4x/pre-release/developers/infrastructure/wiki.html","urlType":"internal"},{"content":"The PLC4X Project VM","url":"/plc4x/pre-release/developers/infrastructure/vm.html","urlType":"internal"},{"content":"Generating the Website","url":"/plc4x/pre-release/developers/infrastructure/website.html","urlType":"internal"}]},{"content":"Releasing and Validating Releases","url":"/plc4x/pre-release/developers/release/index.html","urlType":"internal","items":[{"content":"Releasing PLC4X","url":"/plc4x/pre-release/developers/release/release.html","urlType":"internal"},{"content":"Validating a staged release","url":"/plc4x/pre-release/developers/release/validation.html","urlType":"internal"},{"content":"Releasing PLC4X Build-Tools","url":"/plc4x/pre-release/developers/release/build-tools.html","urlType":"internal"}]},{"content":"Tools","url":"/plc4x/pre-release/developers/tools.html","urlType":"internal"},{"content":"Team","url":"/plc4x/pre-release/developers/team.html","urlType":"internal"},{"content":"Decision Making","url":"/plc4x/pre-release/developers/decisions.html","urlType":"internal"},{"content":"Apache Maturity Model Assessment for PLC4X","url":"/plc4x/pre-release/developers/maturity.html","urlType":"internal"}]}],"root":true,"order":2}]}}}})
\ No newline at end of file