@itentialopensource/adapter-mockdevice 2.3.1 → 2.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/package.json +6 -8
- package/coverage/adapter-mockdevice/adapter.js.html +0 -1612
- package/coverage/adapter-mockdevice/index.html +0 -116
- package/coverage/adapter-mockdevice/utils/argParser.js.html +0 -217
- package/coverage/adapter-mockdevice/utils/index.html +0 -131
- package/coverage/adapter-mockdevice/utils/logger.js.html +0 -163
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -131
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -210
|
@@ -1,1612 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for adapter-mockdevice/adapter.js</title>
|
|
7
|
-
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="../prettify.css" />
|
|
9
|
-
<link rel="stylesheet" href="../base.css" />
|
|
10
|
-
<link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
|
|
11
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
-
<style type='text/css'>
|
|
13
|
-
.coverage-summary .sorter {
|
|
14
|
-
background-image: url(../sort-arrow-sprite.png);
|
|
15
|
-
}
|
|
16
|
-
</style>
|
|
17
|
-
</head>
|
|
18
|
-
|
|
19
|
-
<body>
|
|
20
|
-
<div class='wrapper'>
|
|
21
|
-
<div class='pad1'>
|
|
22
|
-
<h1><a href="../index.html">All files</a> / <a href="index.html">adapter-mockdevice</a> adapter.js</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">10.18% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>22/216</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">3.33% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>2/60</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">7.14% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>3/42</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">10.32% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>22/213</span>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
</div>
|
|
54
|
-
<p class="quiet">
|
|
55
|
-
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
-
</p>
|
|
57
|
-
<template id="filterTemplate">
|
|
58
|
-
<div class="quiet">
|
|
59
|
-
Filter:
|
|
60
|
-
<input type="search" id="fileSearch">
|
|
61
|
-
</div>
|
|
62
|
-
</template>
|
|
63
|
-
</div>
|
|
64
|
-
<div class='status-line low'></div>
|
|
65
|
-
<pre><table class="coverage">
|
|
66
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
-
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
-
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
-
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
-
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
-
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
-
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
-
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
-
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
-
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
-
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
-
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
-
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
-
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
-
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
-
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
-
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
-
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
-
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
-
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
-
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
-
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
-
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
-
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
-
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
-
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
-
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
-
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
-
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
-
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
-
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
-
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
-
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
-
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
-
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
-
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
-
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
-
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
-
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
-
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
-
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
-
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
-
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
-
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
-
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
-
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
-
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
-
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
-
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
-
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
-
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
-
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
-
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
-
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
-
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
-
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
-
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
-
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
-
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
-
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
-
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
-
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
-
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
-
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
-
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
-
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
-
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
-
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
-
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
-
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
-
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
-
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
-
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
-
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
-
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
-
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
-
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
-
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
-
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
-
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
-
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
-
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
-
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
-
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
-
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
-
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
-
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
-
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
-
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
-
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
-
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
-
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
-
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
-
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
-
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
-
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
-
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
-
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
-
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
-
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
-
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
-
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
-
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
-
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
-
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
-
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
-
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
-
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
-
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
-
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
-
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
-
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
-
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
-
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
-
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
-
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
-
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
-
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
-
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
-
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
-
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
-
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
-
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
-
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
-
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
-
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
-
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
-
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
-
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
-
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
-
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
-
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
-
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
-
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
-
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
-
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
-
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
-
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
-
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
-
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
-
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
-
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
-
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
-
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
-
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
-
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
-
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
-
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
-
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
-
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
-
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
-
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
-
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
-
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
-
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
-
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
-
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
-
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
-
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
-
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
-
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
-
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
-
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
-
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
-
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
-
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
-
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
-
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
-
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
-
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
-
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
-
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
-
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
-
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
-
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
-
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
-
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
-
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
-
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
-
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
-
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
-
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
-
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
-
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
-
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
-
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
-
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
-
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
-
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
-
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
-
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
-
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
-
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
-
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
-
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
-
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
-
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
-
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
-
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
-
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
-
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
-
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
-
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
-
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
-
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
-
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
-
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
-
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
-
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
-
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
-
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
-
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
-
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
-
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
-
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
-
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
-
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
-
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
-
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
-
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
-
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
-
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
-
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
-
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
-
<a name='L268'></a><a href='#L268'>268</a>
|
|
334
|
-
<a name='L269'></a><a href='#L269'>269</a>
|
|
335
|
-
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
|
-
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
|
-
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
-
<a name='L273'></a><a href='#L273'>273</a>
|
|
339
|
-
<a name='L274'></a><a href='#L274'>274</a>
|
|
340
|
-
<a name='L275'></a><a href='#L275'>275</a>
|
|
341
|
-
<a name='L276'></a><a href='#L276'>276</a>
|
|
342
|
-
<a name='L277'></a><a href='#L277'>277</a>
|
|
343
|
-
<a name='L278'></a><a href='#L278'>278</a>
|
|
344
|
-
<a name='L279'></a><a href='#L279'>279</a>
|
|
345
|
-
<a name='L280'></a><a href='#L280'>280</a>
|
|
346
|
-
<a name='L281'></a><a href='#L281'>281</a>
|
|
347
|
-
<a name='L282'></a><a href='#L282'>282</a>
|
|
348
|
-
<a name='L283'></a><a href='#L283'>283</a>
|
|
349
|
-
<a name='L284'></a><a href='#L284'>284</a>
|
|
350
|
-
<a name='L285'></a><a href='#L285'>285</a>
|
|
351
|
-
<a name='L286'></a><a href='#L286'>286</a>
|
|
352
|
-
<a name='L287'></a><a href='#L287'>287</a>
|
|
353
|
-
<a name='L288'></a><a href='#L288'>288</a>
|
|
354
|
-
<a name='L289'></a><a href='#L289'>289</a>
|
|
355
|
-
<a name='L290'></a><a href='#L290'>290</a>
|
|
356
|
-
<a name='L291'></a><a href='#L291'>291</a>
|
|
357
|
-
<a name='L292'></a><a href='#L292'>292</a>
|
|
358
|
-
<a name='L293'></a><a href='#L293'>293</a>
|
|
359
|
-
<a name='L294'></a><a href='#L294'>294</a>
|
|
360
|
-
<a name='L295'></a><a href='#L295'>295</a>
|
|
361
|
-
<a name='L296'></a><a href='#L296'>296</a>
|
|
362
|
-
<a name='L297'></a><a href='#L297'>297</a>
|
|
363
|
-
<a name='L298'></a><a href='#L298'>298</a>
|
|
364
|
-
<a name='L299'></a><a href='#L299'>299</a>
|
|
365
|
-
<a name='L300'></a><a href='#L300'>300</a>
|
|
366
|
-
<a name='L301'></a><a href='#L301'>301</a>
|
|
367
|
-
<a name='L302'></a><a href='#L302'>302</a>
|
|
368
|
-
<a name='L303'></a><a href='#L303'>303</a>
|
|
369
|
-
<a name='L304'></a><a href='#L304'>304</a>
|
|
370
|
-
<a name='L305'></a><a href='#L305'>305</a>
|
|
371
|
-
<a name='L306'></a><a href='#L306'>306</a>
|
|
372
|
-
<a name='L307'></a><a href='#L307'>307</a>
|
|
373
|
-
<a name='L308'></a><a href='#L308'>308</a>
|
|
374
|
-
<a name='L309'></a><a href='#L309'>309</a>
|
|
375
|
-
<a name='L310'></a><a href='#L310'>310</a>
|
|
376
|
-
<a name='L311'></a><a href='#L311'>311</a>
|
|
377
|
-
<a name='L312'></a><a href='#L312'>312</a>
|
|
378
|
-
<a name='L313'></a><a href='#L313'>313</a>
|
|
379
|
-
<a name='L314'></a><a href='#L314'>314</a>
|
|
380
|
-
<a name='L315'></a><a href='#L315'>315</a>
|
|
381
|
-
<a name='L316'></a><a href='#L316'>316</a>
|
|
382
|
-
<a name='L317'></a><a href='#L317'>317</a>
|
|
383
|
-
<a name='L318'></a><a href='#L318'>318</a>
|
|
384
|
-
<a name='L319'></a><a href='#L319'>319</a>
|
|
385
|
-
<a name='L320'></a><a href='#L320'>320</a>
|
|
386
|
-
<a name='L321'></a><a href='#L321'>321</a>
|
|
387
|
-
<a name='L322'></a><a href='#L322'>322</a>
|
|
388
|
-
<a name='L323'></a><a href='#L323'>323</a>
|
|
389
|
-
<a name='L324'></a><a href='#L324'>324</a>
|
|
390
|
-
<a name='L325'></a><a href='#L325'>325</a>
|
|
391
|
-
<a name='L326'></a><a href='#L326'>326</a>
|
|
392
|
-
<a name='L327'></a><a href='#L327'>327</a>
|
|
393
|
-
<a name='L328'></a><a href='#L328'>328</a>
|
|
394
|
-
<a name='L329'></a><a href='#L329'>329</a>
|
|
395
|
-
<a name='L330'></a><a href='#L330'>330</a>
|
|
396
|
-
<a name='L331'></a><a href='#L331'>331</a>
|
|
397
|
-
<a name='L332'></a><a href='#L332'>332</a>
|
|
398
|
-
<a name='L333'></a><a href='#L333'>333</a>
|
|
399
|
-
<a name='L334'></a><a href='#L334'>334</a>
|
|
400
|
-
<a name='L335'></a><a href='#L335'>335</a>
|
|
401
|
-
<a name='L336'></a><a href='#L336'>336</a>
|
|
402
|
-
<a name='L337'></a><a href='#L337'>337</a>
|
|
403
|
-
<a name='L338'></a><a href='#L338'>338</a>
|
|
404
|
-
<a name='L339'></a><a href='#L339'>339</a>
|
|
405
|
-
<a name='L340'></a><a href='#L340'>340</a>
|
|
406
|
-
<a name='L341'></a><a href='#L341'>341</a>
|
|
407
|
-
<a name='L342'></a><a href='#L342'>342</a>
|
|
408
|
-
<a name='L343'></a><a href='#L343'>343</a>
|
|
409
|
-
<a name='L344'></a><a href='#L344'>344</a>
|
|
410
|
-
<a name='L345'></a><a href='#L345'>345</a>
|
|
411
|
-
<a name='L346'></a><a href='#L346'>346</a>
|
|
412
|
-
<a name='L347'></a><a href='#L347'>347</a>
|
|
413
|
-
<a name='L348'></a><a href='#L348'>348</a>
|
|
414
|
-
<a name='L349'></a><a href='#L349'>349</a>
|
|
415
|
-
<a name='L350'></a><a href='#L350'>350</a>
|
|
416
|
-
<a name='L351'></a><a href='#L351'>351</a>
|
|
417
|
-
<a name='L352'></a><a href='#L352'>352</a>
|
|
418
|
-
<a name='L353'></a><a href='#L353'>353</a>
|
|
419
|
-
<a name='L354'></a><a href='#L354'>354</a>
|
|
420
|
-
<a name='L355'></a><a href='#L355'>355</a>
|
|
421
|
-
<a name='L356'></a><a href='#L356'>356</a>
|
|
422
|
-
<a name='L357'></a><a href='#L357'>357</a>
|
|
423
|
-
<a name='L358'></a><a href='#L358'>358</a>
|
|
424
|
-
<a name='L359'></a><a href='#L359'>359</a>
|
|
425
|
-
<a name='L360'></a><a href='#L360'>360</a>
|
|
426
|
-
<a name='L361'></a><a href='#L361'>361</a>
|
|
427
|
-
<a name='L362'></a><a href='#L362'>362</a>
|
|
428
|
-
<a name='L363'></a><a href='#L363'>363</a>
|
|
429
|
-
<a name='L364'></a><a href='#L364'>364</a>
|
|
430
|
-
<a name='L365'></a><a href='#L365'>365</a>
|
|
431
|
-
<a name='L366'></a><a href='#L366'>366</a>
|
|
432
|
-
<a name='L367'></a><a href='#L367'>367</a>
|
|
433
|
-
<a name='L368'></a><a href='#L368'>368</a>
|
|
434
|
-
<a name='L369'></a><a href='#L369'>369</a>
|
|
435
|
-
<a name='L370'></a><a href='#L370'>370</a>
|
|
436
|
-
<a name='L371'></a><a href='#L371'>371</a>
|
|
437
|
-
<a name='L372'></a><a href='#L372'>372</a>
|
|
438
|
-
<a name='L373'></a><a href='#L373'>373</a>
|
|
439
|
-
<a name='L374'></a><a href='#L374'>374</a>
|
|
440
|
-
<a name='L375'></a><a href='#L375'>375</a>
|
|
441
|
-
<a name='L376'></a><a href='#L376'>376</a>
|
|
442
|
-
<a name='L377'></a><a href='#L377'>377</a>
|
|
443
|
-
<a name='L378'></a><a href='#L378'>378</a>
|
|
444
|
-
<a name='L379'></a><a href='#L379'>379</a>
|
|
445
|
-
<a name='L380'></a><a href='#L380'>380</a>
|
|
446
|
-
<a name='L381'></a><a href='#L381'>381</a>
|
|
447
|
-
<a name='L382'></a><a href='#L382'>382</a>
|
|
448
|
-
<a name='L383'></a><a href='#L383'>383</a>
|
|
449
|
-
<a name='L384'></a><a href='#L384'>384</a>
|
|
450
|
-
<a name='L385'></a><a href='#L385'>385</a>
|
|
451
|
-
<a name='L386'></a><a href='#L386'>386</a>
|
|
452
|
-
<a name='L387'></a><a href='#L387'>387</a>
|
|
453
|
-
<a name='L388'></a><a href='#L388'>388</a>
|
|
454
|
-
<a name='L389'></a><a href='#L389'>389</a>
|
|
455
|
-
<a name='L390'></a><a href='#L390'>390</a>
|
|
456
|
-
<a name='L391'></a><a href='#L391'>391</a>
|
|
457
|
-
<a name='L392'></a><a href='#L392'>392</a>
|
|
458
|
-
<a name='L393'></a><a href='#L393'>393</a>
|
|
459
|
-
<a name='L394'></a><a href='#L394'>394</a>
|
|
460
|
-
<a name='L395'></a><a href='#L395'>395</a>
|
|
461
|
-
<a name='L396'></a><a href='#L396'>396</a>
|
|
462
|
-
<a name='L397'></a><a href='#L397'>397</a>
|
|
463
|
-
<a name='L398'></a><a href='#L398'>398</a>
|
|
464
|
-
<a name='L399'></a><a href='#L399'>399</a>
|
|
465
|
-
<a name='L400'></a><a href='#L400'>400</a>
|
|
466
|
-
<a name='L401'></a><a href='#L401'>401</a>
|
|
467
|
-
<a name='L402'></a><a href='#L402'>402</a>
|
|
468
|
-
<a name='L403'></a><a href='#L403'>403</a>
|
|
469
|
-
<a name='L404'></a><a href='#L404'>404</a>
|
|
470
|
-
<a name='L405'></a><a href='#L405'>405</a>
|
|
471
|
-
<a name='L406'></a><a href='#L406'>406</a>
|
|
472
|
-
<a name='L407'></a><a href='#L407'>407</a>
|
|
473
|
-
<a name='L408'></a><a href='#L408'>408</a>
|
|
474
|
-
<a name='L409'></a><a href='#L409'>409</a>
|
|
475
|
-
<a name='L410'></a><a href='#L410'>410</a>
|
|
476
|
-
<a name='L411'></a><a href='#L411'>411</a>
|
|
477
|
-
<a name='L412'></a><a href='#L412'>412</a>
|
|
478
|
-
<a name='L413'></a><a href='#L413'>413</a>
|
|
479
|
-
<a name='L414'></a><a href='#L414'>414</a>
|
|
480
|
-
<a name='L415'></a><a href='#L415'>415</a>
|
|
481
|
-
<a name='L416'></a><a href='#L416'>416</a>
|
|
482
|
-
<a name='L417'></a><a href='#L417'>417</a>
|
|
483
|
-
<a name='L418'></a><a href='#L418'>418</a>
|
|
484
|
-
<a name='L419'></a><a href='#L419'>419</a>
|
|
485
|
-
<a name='L420'></a><a href='#L420'>420</a>
|
|
486
|
-
<a name='L421'></a><a href='#L421'>421</a>
|
|
487
|
-
<a name='L422'></a><a href='#L422'>422</a>
|
|
488
|
-
<a name='L423'></a><a href='#L423'>423</a>
|
|
489
|
-
<a name='L424'></a><a href='#L424'>424</a>
|
|
490
|
-
<a name='L425'></a><a href='#L425'>425</a>
|
|
491
|
-
<a name='L426'></a><a href='#L426'>426</a>
|
|
492
|
-
<a name='L427'></a><a href='#L427'>427</a>
|
|
493
|
-
<a name='L428'></a><a href='#L428'>428</a>
|
|
494
|
-
<a name='L429'></a><a href='#L429'>429</a>
|
|
495
|
-
<a name='L430'></a><a href='#L430'>430</a>
|
|
496
|
-
<a name='L431'></a><a href='#L431'>431</a>
|
|
497
|
-
<a name='L432'></a><a href='#L432'>432</a>
|
|
498
|
-
<a name='L433'></a><a href='#L433'>433</a>
|
|
499
|
-
<a name='L434'></a><a href='#L434'>434</a>
|
|
500
|
-
<a name='L435'></a><a href='#L435'>435</a>
|
|
501
|
-
<a name='L436'></a><a href='#L436'>436</a>
|
|
502
|
-
<a name='L437'></a><a href='#L437'>437</a>
|
|
503
|
-
<a name='L438'></a><a href='#L438'>438</a>
|
|
504
|
-
<a name='L439'></a><a href='#L439'>439</a>
|
|
505
|
-
<a name='L440'></a><a href='#L440'>440</a>
|
|
506
|
-
<a name='L441'></a><a href='#L441'>441</a>
|
|
507
|
-
<a name='L442'></a><a href='#L442'>442</a>
|
|
508
|
-
<a name='L443'></a><a href='#L443'>443</a>
|
|
509
|
-
<a name='L444'></a><a href='#L444'>444</a>
|
|
510
|
-
<a name='L445'></a><a href='#L445'>445</a>
|
|
511
|
-
<a name='L446'></a><a href='#L446'>446</a>
|
|
512
|
-
<a name='L447'></a><a href='#L447'>447</a>
|
|
513
|
-
<a name='L448'></a><a href='#L448'>448</a>
|
|
514
|
-
<a name='L449'></a><a href='#L449'>449</a>
|
|
515
|
-
<a name='L450'></a><a href='#L450'>450</a>
|
|
516
|
-
<a name='L451'></a><a href='#L451'>451</a>
|
|
517
|
-
<a name='L452'></a><a href='#L452'>452</a>
|
|
518
|
-
<a name='L453'></a><a href='#L453'>453</a>
|
|
519
|
-
<a name='L454'></a><a href='#L454'>454</a>
|
|
520
|
-
<a name='L455'></a><a href='#L455'>455</a>
|
|
521
|
-
<a name='L456'></a><a href='#L456'>456</a>
|
|
522
|
-
<a name='L457'></a><a href='#L457'>457</a>
|
|
523
|
-
<a name='L458'></a><a href='#L458'>458</a>
|
|
524
|
-
<a name='L459'></a><a href='#L459'>459</a>
|
|
525
|
-
<a name='L460'></a><a href='#L460'>460</a>
|
|
526
|
-
<a name='L461'></a><a href='#L461'>461</a>
|
|
527
|
-
<a name='L462'></a><a href='#L462'>462</a>
|
|
528
|
-
<a name='L463'></a><a href='#L463'>463</a>
|
|
529
|
-
<a name='L464'></a><a href='#L464'>464</a>
|
|
530
|
-
<a name='L465'></a><a href='#L465'>465</a>
|
|
531
|
-
<a name='L466'></a><a href='#L466'>466</a>
|
|
532
|
-
<a name='L467'></a><a href='#L467'>467</a>
|
|
533
|
-
<a name='L468'></a><a href='#L468'>468</a>
|
|
534
|
-
<a name='L469'></a><a href='#L469'>469</a>
|
|
535
|
-
<a name='L470'></a><a href='#L470'>470</a>
|
|
536
|
-
<a name='L471'></a><a href='#L471'>471</a>
|
|
537
|
-
<a name='L472'></a><a href='#L472'>472</a>
|
|
538
|
-
<a name='L473'></a><a href='#L473'>473</a>
|
|
539
|
-
<a name='L474'></a><a href='#L474'>474</a>
|
|
540
|
-
<a name='L475'></a><a href='#L475'>475</a>
|
|
541
|
-
<a name='L476'></a><a href='#L476'>476</a>
|
|
542
|
-
<a name='L477'></a><a href='#L477'>477</a>
|
|
543
|
-
<a name='L478'></a><a href='#L478'>478</a>
|
|
544
|
-
<a name='L479'></a><a href='#L479'>479</a>
|
|
545
|
-
<a name='L480'></a><a href='#L480'>480</a>
|
|
546
|
-
<a name='L481'></a><a href='#L481'>481</a>
|
|
547
|
-
<a name='L482'></a><a href='#L482'>482</a>
|
|
548
|
-
<a name='L483'></a><a href='#L483'>483</a>
|
|
549
|
-
<a name='L484'></a><a href='#L484'>484</a>
|
|
550
|
-
<a name='L485'></a><a href='#L485'>485</a>
|
|
551
|
-
<a name='L486'></a><a href='#L486'>486</a>
|
|
552
|
-
<a name='L487'></a><a href='#L487'>487</a>
|
|
553
|
-
<a name='L488'></a><a href='#L488'>488</a>
|
|
554
|
-
<a name='L489'></a><a href='#L489'>489</a>
|
|
555
|
-
<a name='L490'></a><a href='#L490'>490</a>
|
|
556
|
-
<a name='L491'></a><a href='#L491'>491</a>
|
|
557
|
-
<a name='L492'></a><a href='#L492'>492</a>
|
|
558
|
-
<a name='L493'></a><a href='#L493'>493</a>
|
|
559
|
-
<a name='L494'></a><a href='#L494'>494</a>
|
|
560
|
-
<a name='L495'></a><a href='#L495'>495</a>
|
|
561
|
-
<a name='L496'></a><a href='#L496'>496</a>
|
|
562
|
-
<a name='L497'></a><a href='#L497'>497</a>
|
|
563
|
-
<a name='L498'></a><a href='#L498'>498</a>
|
|
564
|
-
<a name='L499'></a><a href='#L499'>499</a>
|
|
565
|
-
<a name='L500'></a><a href='#L500'>500</a>
|
|
566
|
-
<a name='L501'></a><a href='#L501'>501</a>
|
|
567
|
-
<a name='L502'></a><a href='#L502'>502</a>
|
|
568
|
-
<a name='L503'></a><a href='#L503'>503</a>
|
|
569
|
-
<a name='L504'></a><a href='#L504'>504</a>
|
|
570
|
-
<a name='L505'></a><a href='#L505'>505</a>
|
|
571
|
-
<a name='L506'></a><a href='#L506'>506</a>
|
|
572
|
-
<a name='L507'></a><a href='#L507'>507</a>
|
|
573
|
-
<a name='L508'></a><a href='#L508'>508</a>
|
|
574
|
-
<a name='L509'></a><a href='#L509'>509</a>
|
|
575
|
-
<a name='L510'></a><a href='#L510'>510</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
576
|
-
<span class="cline-any cline-neutral"> </span>
|
|
577
|
-
<span class="cline-any cline-neutral"> </span>
|
|
578
|
-
<span class="cline-any cline-neutral"> </span>
|
|
579
|
-
<span class="cline-any cline-yes">1x</span>
|
|
580
|
-
<span class="cline-any cline-yes">1x</span>
|
|
581
|
-
<span class="cline-any cline-yes">1x</span>
|
|
582
|
-
<span class="cline-any cline-yes">1x</span>
|
|
583
|
-
<span class="cline-any cline-yes">1x</span>
|
|
584
|
-
<span class="cline-any cline-neutral"> </span>
|
|
585
|
-
<span class="cline-any cline-yes">1x</span>
|
|
586
|
-
<span class="cline-any cline-yes">1x</span>
|
|
587
|
-
<span class="cline-any cline-neutral"> </span>
|
|
588
|
-
<span class="cline-any cline-yes">1x</span>
|
|
589
|
-
<span class="cline-any cline-yes">1x</span>
|
|
590
|
-
<span class="cline-any cline-neutral"> </span>
|
|
591
|
-
<span class="cline-any cline-neutral"> </span>
|
|
592
|
-
<span class="cline-any cline-yes">1x</span>
|
|
593
|
-
<span class="cline-any cline-yes">1x</span>
|
|
594
|
-
<span class="cline-any cline-neutral"> </span>
|
|
595
|
-
<span class="cline-any cline-neutral"> </span>
|
|
596
|
-
<span class="cline-any cline-neutral"> </span>
|
|
597
|
-
<span class="cline-any cline-neutral"> </span>
|
|
598
|
-
<span class="cline-any cline-neutral"> </span>
|
|
599
|
-
<span class="cline-any cline-neutral"> </span>
|
|
600
|
-
<span class="cline-any cline-neutral"> </span>
|
|
601
|
-
<span class="cline-any cline-yes">1x</span>
|
|
602
|
-
<span class="cline-any cline-no"> </span>
|
|
603
|
-
<span class="cline-any cline-no"> </span>
|
|
604
|
-
<span class="cline-any cline-no"> </span>
|
|
605
|
-
<span class="cline-any cline-no"> </span>
|
|
606
|
-
<span class="cline-any cline-no"> </span>
|
|
607
|
-
<span class="cline-any cline-no"> </span>
|
|
608
|
-
<span class="cline-any cline-neutral"> </span>
|
|
609
|
-
<span class="cline-any cline-neutral"> </span>
|
|
610
|
-
<span class="cline-any cline-neutral"> </span>
|
|
611
|
-
<span class="cline-any cline-no"> </span>
|
|
612
|
-
<span class="cline-any cline-neutral"> </span>
|
|
613
|
-
<span class="cline-any cline-neutral"> </span>
|
|
614
|
-
<span class="cline-any cline-neutral"> </span>
|
|
615
|
-
<span class="cline-any cline-neutral"> </span>
|
|
616
|
-
<span class="cline-any cline-neutral"> </span>
|
|
617
|
-
<span class="cline-any cline-yes">1x</span>
|
|
618
|
-
<span class="cline-any cline-no"> </span>
|
|
619
|
-
<span class="cline-any cline-no"> </span>
|
|
620
|
-
<span class="cline-any cline-no"> </span>
|
|
621
|
-
<span class="cline-any cline-no"> </span>
|
|
622
|
-
<span class="cline-any cline-neutral"> </span>
|
|
623
|
-
<span class="cline-any cline-no"> </span>
|
|
624
|
-
<span class="cline-any cline-neutral"> </span>
|
|
625
|
-
<span class="cline-any cline-no"> </span>
|
|
626
|
-
<span class="cline-any cline-no"> </span>
|
|
627
|
-
<span class="cline-any cline-neutral"> </span>
|
|
628
|
-
<span class="cline-any cline-neutral"> </span>
|
|
629
|
-
<span class="cline-any cline-neutral"> </span>
|
|
630
|
-
<span class="cline-any cline-neutral"> </span>
|
|
631
|
-
<span class="cline-any cline-neutral"> </span>
|
|
632
|
-
<span class="cline-any cline-neutral"> </span>
|
|
633
|
-
<span class="cline-any cline-neutral"> </span>
|
|
634
|
-
<span class="cline-any cline-neutral"> </span>
|
|
635
|
-
<span class="cline-any cline-neutral"> </span>
|
|
636
|
-
<span class="cline-any cline-neutral"> </span>
|
|
637
|
-
<span class="cline-any cline-neutral"> </span>
|
|
638
|
-
<span class="cline-any cline-no"> </span>
|
|
639
|
-
<span class="cline-any cline-no"> </span>
|
|
640
|
-
<span class="cline-any cline-no"> </span>
|
|
641
|
-
<span class="cline-any cline-no"> </span>
|
|
642
|
-
<span class="cline-any cline-neutral"> </span>
|
|
643
|
-
<span class="cline-any cline-neutral"> </span>
|
|
644
|
-
<span class="cline-any cline-neutral"> </span>
|
|
645
|
-
<span class="cline-any cline-neutral"> </span>
|
|
646
|
-
<span class="cline-any cline-neutral"> </span>
|
|
647
|
-
<span class="cline-any cline-no"> </span>
|
|
648
|
-
<span class="cline-any cline-no"> </span>
|
|
649
|
-
<span class="cline-any cline-no"> </span>
|
|
650
|
-
<span class="cline-any cline-neutral"> </span>
|
|
651
|
-
<span class="cline-any cline-neutral"> </span>
|
|
652
|
-
<span class="cline-any cline-neutral"> </span>
|
|
653
|
-
<span class="cline-any cline-neutral"> </span>
|
|
654
|
-
<span class="cline-any cline-neutral"> </span>
|
|
655
|
-
<span class="cline-any cline-neutral"> </span>
|
|
656
|
-
<span class="cline-any cline-neutral"> </span>
|
|
657
|
-
<span class="cline-any cline-neutral"> </span>
|
|
658
|
-
<span class="cline-any cline-neutral"> </span>
|
|
659
|
-
<span class="cline-any cline-neutral"> </span>
|
|
660
|
-
<span class="cline-any cline-no"> </span>
|
|
661
|
-
<span class="cline-any cline-no"> </span>
|
|
662
|
-
<span class="cline-any cline-no"> </span>
|
|
663
|
-
<span class="cline-any cline-no"> </span>
|
|
664
|
-
<span class="cline-any cline-no"> </span>
|
|
665
|
-
<span class="cline-any cline-no"> </span>
|
|
666
|
-
<span class="cline-any cline-no"> </span>
|
|
667
|
-
<span class="cline-any cline-no"> </span>
|
|
668
|
-
<span class="cline-any cline-no"> </span>
|
|
669
|
-
<span class="cline-any cline-neutral"> </span>
|
|
670
|
-
<span class="cline-any cline-no"> </span>
|
|
671
|
-
<span class="cline-any cline-no"> </span>
|
|
672
|
-
<span class="cline-any cline-neutral"> </span>
|
|
673
|
-
<span class="cline-any cline-no"> </span>
|
|
674
|
-
<span class="cline-any cline-no"> </span>
|
|
675
|
-
<span class="cline-any cline-neutral"> </span>
|
|
676
|
-
<span class="cline-any cline-no"> </span>
|
|
677
|
-
<span class="cline-any cline-neutral"> </span>
|
|
678
|
-
<span class="cline-any cline-neutral"> </span>
|
|
679
|
-
<span class="cline-any cline-neutral"> </span>
|
|
680
|
-
<span class="cline-any cline-neutral"> </span>
|
|
681
|
-
<span class="cline-any cline-neutral"> </span>
|
|
682
|
-
<span class="cline-any cline-neutral"> </span>
|
|
683
|
-
<span class="cline-any cline-neutral"> </span>
|
|
684
|
-
<span class="cline-any cline-neutral"> </span>
|
|
685
|
-
<span class="cline-any cline-no"> </span>
|
|
686
|
-
<span class="cline-any cline-no"> </span>
|
|
687
|
-
<span class="cline-any cline-no"> </span>
|
|
688
|
-
<span class="cline-any cline-no"> </span>
|
|
689
|
-
<span class="cline-any cline-no"> </span>
|
|
690
|
-
<span class="cline-any cline-neutral"> </span>
|
|
691
|
-
<span class="cline-any cline-no"> </span>
|
|
692
|
-
<span class="cline-any cline-neutral"> </span>
|
|
693
|
-
<span class="cline-any cline-neutral"> </span>
|
|
694
|
-
<span class="cline-any cline-neutral"> </span>
|
|
695
|
-
<span class="cline-any cline-neutral"> </span>
|
|
696
|
-
<span class="cline-any cline-neutral"> </span>
|
|
697
|
-
<span class="cline-any cline-neutral"> </span>
|
|
698
|
-
<span class="cline-any cline-neutral"> </span>
|
|
699
|
-
<span class="cline-any cline-no"> </span>
|
|
700
|
-
<span class="cline-any cline-no"> </span>
|
|
701
|
-
<span class="cline-any cline-no"> </span>
|
|
702
|
-
<span class="cline-any cline-no"> </span>
|
|
703
|
-
<span class="cline-any cline-neutral"> </span>
|
|
704
|
-
<span class="cline-any cline-no"> </span>
|
|
705
|
-
<span class="cline-any cline-neutral"> </span>
|
|
706
|
-
<span class="cline-any cline-neutral"> </span>
|
|
707
|
-
<span class="cline-any cline-neutral"> </span>
|
|
708
|
-
<span class="cline-any cline-neutral"> </span>
|
|
709
|
-
<span class="cline-any cline-neutral"> </span>
|
|
710
|
-
<span class="cline-any cline-neutral"> </span>
|
|
711
|
-
<span class="cline-any cline-no"> </span>
|
|
712
|
-
<span class="cline-any cline-no"> </span>
|
|
713
|
-
<span class="cline-any cline-no"> </span>
|
|
714
|
-
<span class="cline-any cline-neutral"> </span>
|
|
715
|
-
<span class="cline-any cline-no"> </span>
|
|
716
|
-
<span class="cline-any cline-no"> </span>
|
|
717
|
-
<span class="cline-any cline-no"> </span>
|
|
718
|
-
<span class="cline-any cline-no"> </span>
|
|
719
|
-
<span class="cline-any cline-no"> </span>
|
|
720
|
-
<span class="cline-any cline-no"> </span>
|
|
721
|
-
<span class="cline-any cline-neutral"> </span>
|
|
722
|
-
<span class="cline-any cline-no"> </span>
|
|
723
|
-
<span class="cline-any cline-no"> </span>
|
|
724
|
-
<span class="cline-any cline-neutral"> </span>
|
|
725
|
-
<span class="cline-any cline-no"> </span>
|
|
726
|
-
<span class="cline-any cline-neutral"> </span>
|
|
727
|
-
<span class="cline-any cline-neutral"> </span>
|
|
728
|
-
<span class="cline-any cline-neutral"> </span>
|
|
729
|
-
<span class="cline-any cline-neutral"> </span>
|
|
730
|
-
<span class="cline-any cline-neutral"> </span>
|
|
731
|
-
<span class="cline-any cline-neutral"> </span>
|
|
732
|
-
<span class="cline-any cline-no"> </span>
|
|
733
|
-
<span class="cline-any cline-no"> </span>
|
|
734
|
-
<span class="cline-any cline-no"> </span>
|
|
735
|
-
<span class="cline-any cline-no"> </span>
|
|
736
|
-
<span class="cline-any cline-no"> </span>
|
|
737
|
-
<span class="cline-any cline-neutral"> </span>
|
|
738
|
-
<span class="cline-any cline-neutral"> </span>
|
|
739
|
-
<span class="cline-any cline-neutral"> </span>
|
|
740
|
-
<span class="cline-any cline-neutral"> </span>
|
|
741
|
-
<span class="cline-any cline-neutral"> </span>
|
|
742
|
-
<span class="cline-any cline-neutral"> </span>
|
|
743
|
-
<span class="cline-any cline-neutral"> </span>
|
|
744
|
-
<span class="cline-any cline-neutral"> </span>
|
|
745
|
-
<span class="cline-any cline-no"> </span>
|
|
746
|
-
<span class="cline-any cline-no"> </span>
|
|
747
|
-
<span class="cline-any cline-no"> </span>
|
|
748
|
-
<span class="cline-any cline-neutral"> </span>
|
|
749
|
-
<span class="cline-any cline-neutral"> </span>
|
|
750
|
-
<span class="cline-any cline-neutral"> </span>
|
|
751
|
-
<span class="cline-any cline-neutral"> </span>
|
|
752
|
-
<span class="cline-any cline-yes">1x</span>
|
|
753
|
-
<span class="cline-any cline-yes">1x</span>
|
|
754
|
-
<span class="cline-any cline-yes">1x</span>
|
|
755
|
-
<span class="cline-any cline-yes">1x</span>
|
|
756
|
-
<span class="cline-any cline-neutral"> </span>
|
|
757
|
-
<span class="cline-any cline-neutral"> </span>
|
|
758
|
-
<span class="cline-any cline-neutral"> </span>
|
|
759
|
-
<span class="cline-any cline-no"> </span>
|
|
760
|
-
<span class="cline-any cline-no"> </span>
|
|
761
|
-
<span class="cline-any cline-no"> </span>
|
|
762
|
-
<span class="cline-any cline-neutral"> </span>
|
|
763
|
-
<span class="cline-any cline-neutral"> </span>
|
|
764
|
-
<span class="cline-any cline-neutral"> </span>
|
|
765
|
-
<span class="cline-any cline-neutral"> </span>
|
|
766
|
-
<span class="cline-any cline-neutral"> </span>
|
|
767
|
-
<span class="cline-any cline-no"> </span>
|
|
768
|
-
<span class="cline-any cline-neutral"> </span>
|
|
769
|
-
<span class="cline-any cline-neutral"> </span>
|
|
770
|
-
<span class="cline-any cline-neutral"> </span>
|
|
771
|
-
<span class="cline-any cline-neutral"> </span>
|
|
772
|
-
<span class="cline-any cline-no"> </span>
|
|
773
|
-
<span class="cline-any cline-neutral"> </span>
|
|
774
|
-
<span class="cline-any cline-neutral"> </span>
|
|
775
|
-
<span class="cline-any cline-neutral"> </span>
|
|
776
|
-
<span class="cline-any cline-no"> </span>
|
|
777
|
-
<span class="cline-any cline-neutral"> </span>
|
|
778
|
-
<span class="cline-any cline-neutral"> </span>
|
|
779
|
-
<span class="cline-any cline-neutral"> </span>
|
|
780
|
-
<span class="cline-any cline-yes">1x</span>
|
|
781
|
-
<span class="cline-any cline-yes">1x</span>
|
|
782
|
-
<span class="cline-any cline-yes">1x</span>
|
|
783
|
-
<span class="cline-any cline-neutral"> </span>
|
|
784
|
-
<span class="cline-any cline-neutral"> </span>
|
|
785
|
-
<span class="cline-any cline-neutral"> </span>
|
|
786
|
-
<span class="cline-any cline-neutral"> </span>
|
|
787
|
-
<span class="cline-any cline-neutral"> </span>
|
|
788
|
-
<span class="cline-any cline-no"> </span>
|
|
789
|
-
<span class="cline-any cline-no"> </span>
|
|
790
|
-
<span class="cline-any cline-no"> </span>
|
|
791
|
-
<span class="cline-any cline-no"> </span>
|
|
792
|
-
<span class="cline-any cline-no"> </span>
|
|
793
|
-
<span class="cline-any cline-no"> </span>
|
|
794
|
-
<span class="cline-any cline-neutral"> </span>
|
|
795
|
-
<span class="cline-any cline-neutral"> </span>
|
|
796
|
-
<span class="cline-any cline-no"> </span>
|
|
797
|
-
<span class="cline-any cline-neutral"> </span>
|
|
798
|
-
<span class="cline-any cline-no"> </span>
|
|
799
|
-
<span class="cline-any cline-neutral"> </span>
|
|
800
|
-
<span class="cline-any cline-neutral"> </span>
|
|
801
|
-
<span class="cline-any cline-neutral"> </span>
|
|
802
|
-
<span class="cline-any cline-neutral"> </span>
|
|
803
|
-
<span class="cline-any cline-no"> </span>
|
|
804
|
-
<span class="cline-any cline-no"> </span>
|
|
805
|
-
<span class="cline-any cline-neutral"> </span>
|
|
806
|
-
<span class="cline-any cline-neutral"> </span>
|
|
807
|
-
<span class="cline-any cline-neutral"> </span>
|
|
808
|
-
<span class="cline-any cline-no"> </span>
|
|
809
|
-
<span class="cline-any cline-no"> </span>
|
|
810
|
-
<span class="cline-any cline-neutral"> </span>
|
|
811
|
-
<span class="cline-any cline-no"> </span>
|
|
812
|
-
<span class="cline-any cline-no"> </span>
|
|
813
|
-
<span class="cline-any cline-no"> </span>
|
|
814
|
-
<span class="cline-any cline-no"> </span>
|
|
815
|
-
<span class="cline-any cline-no"> </span>
|
|
816
|
-
<span class="cline-any cline-no"> </span>
|
|
817
|
-
<span class="cline-any cline-no"> </span>
|
|
818
|
-
<span class="cline-any cline-neutral"> </span>
|
|
819
|
-
<span class="cline-any cline-neutral"> </span>
|
|
820
|
-
<span class="cline-any cline-neutral"> </span>
|
|
821
|
-
<span class="cline-any cline-neutral"> </span>
|
|
822
|
-
<span class="cline-any cline-no"> </span>
|
|
823
|
-
<span class="cline-any cline-no"> </span>
|
|
824
|
-
<span class="cline-any cline-neutral"> </span>
|
|
825
|
-
<span class="cline-any cline-neutral"> </span>
|
|
826
|
-
<span class="cline-any cline-neutral"> </span>
|
|
827
|
-
<span class="cline-any cline-no"> </span>
|
|
828
|
-
<span class="cline-any cline-neutral"> </span>
|
|
829
|
-
<span class="cline-any cline-no"> </span>
|
|
830
|
-
<span class="cline-any cline-no"> </span>
|
|
831
|
-
<span class="cline-any cline-no"> </span>
|
|
832
|
-
<span class="cline-any cline-no"> </span>
|
|
833
|
-
<span class="cline-any cline-no"> </span>
|
|
834
|
-
<span class="cline-any cline-no"> </span>
|
|
835
|
-
<span class="cline-any cline-no"> </span>
|
|
836
|
-
<span class="cline-any cline-neutral"> </span>
|
|
837
|
-
<span class="cline-any cline-neutral"> </span>
|
|
838
|
-
<span class="cline-any cline-neutral"> </span>
|
|
839
|
-
<span class="cline-any cline-no"> </span>
|
|
840
|
-
<span class="cline-any cline-no"> </span>
|
|
841
|
-
<span class="cline-any cline-neutral"> </span>
|
|
842
|
-
<span class="cline-any cline-neutral"> </span>
|
|
843
|
-
<span class="cline-any cline-neutral"> </span>
|
|
844
|
-
<span class="cline-any cline-neutral"> </span>
|
|
845
|
-
<span class="cline-any cline-neutral"> </span>
|
|
846
|
-
<span class="cline-any cline-neutral"> </span>
|
|
847
|
-
<span class="cline-any cline-neutral"> </span>
|
|
848
|
-
<span class="cline-any cline-no"> </span>
|
|
849
|
-
<span class="cline-any cline-neutral"> </span>
|
|
850
|
-
<span class="cline-any cline-neutral"> </span>
|
|
851
|
-
<span class="cline-any cline-neutral"> </span>
|
|
852
|
-
<span class="cline-any cline-neutral"> </span>
|
|
853
|
-
<span class="cline-any cline-neutral"> </span>
|
|
854
|
-
<span class="cline-any cline-neutral"> </span>
|
|
855
|
-
<span class="cline-any cline-no"> </span>
|
|
856
|
-
<span class="cline-any cline-neutral"> </span>
|
|
857
|
-
<span class="cline-any cline-neutral"> </span>
|
|
858
|
-
<span class="cline-any cline-neutral"> </span>
|
|
859
|
-
<span class="cline-any cline-neutral"> </span>
|
|
860
|
-
<span class="cline-any cline-neutral"> </span>
|
|
861
|
-
<span class="cline-any cline-neutral"> </span>
|
|
862
|
-
<span class="cline-any cline-no"> </span>
|
|
863
|
-
<span class="cline-any cline-no"> </span>
|
|
864
|
-
<span class="cline-any cline-neutral"> </span>
|
|
865
|
-
<span class="cline-any cline-neutral"> </span>
|
|
866
|
-
<span class="cline-any cline-neutral"> </span>
|
|
867
|
-
<span class="cline-any cline-no"> </span>
|
|
868
|
-
<span class="cline-any cline-no"> </span>
|
|
869
|
-
<span class="cline-any cline-neutral"> </span>
|
|
870
|
-
<span class="cline-any cline-no"> </span>
|
|
871
|
-
<span class="cline-any cline-no"> </span>
|
|
872
|
-
<span class="cline-any cline-no"> </span>
|
|
873
|
-
<span class="cline-any cline-neutral"> </span>
|
|
874
|
-
<span class="cline-any cline-neutral"> </span>
|
|
875
|
-
<span class="cline-any cline-neutral"> </span>
|
|
876
|
-
<span class="cline-any cline-neutral"> </span>
|
|
877
|
-
<span class="cline-any cline-no"> </span>
|
|
878
|
-
<span class="cline-any cline-no"> </span>
|
|
879
|
-
<span class="cline-any cline-neutral"> </span>
|
|
880
|
-
<span class="cline-any cline-neutral"> </span>
|
|
881
|
-
<span class="cline-any cline-neutral"> </span>
|
|
882
|
-
<span class="cline-any cline-no"> </span>
|
|
883
|
-
<span class="cline-any cline-no"> </span>
|
|
884
|
-
<span class="cline-any cline-neutral"> </span>
|
|
885
|
-
<span class="cline-any cline-neutral"> </span>
|
|
886
|
-
<span class="cline-any cline-neutral"> </span>
|
|
887
|
-
<span class="cline-any cline-neutral"> </span>
|
|
888
|
-
<span class="cline-any cline-no"> </span>
|
|
889
|
-
<span class="cline-any cline-neutral"> </span>
|
|
890
|
-
<span class="cline-any cline-no"> </span>
|
|
891
|
-
<span class="cline-any cline-neutral"> </span>
|
|
892
|
-
<span class="cline-any cline-neutral"> </span>
|
|
893
|
-
<span class="cline-any cline-neutral"> </span>
|
|
894
|
-
<span class="cline-any cline-neutral"> </span>
|
|
895
|
-
<span class="cline-any cline-neutral"> </span>
|
|
896
|
-
<span class="cline-any cline-no"> </span>
|
|
897
|
-
<span class="cline-any cline-neutral"> </span>
|
|
898
|
-
<span class="cline-any cline-neutral"> </span>
|
|
899
|
-
<span class="cline-any cline-neutral"> </span>
|
|
900
|
-
<span class="cline-any cline-neutral"> </span>
|
|
901
|
-
<span class="cline-any cline-neutral"> </span>
|
|
902
|
-
<span class="cline-any cline-no"> </span>
|
|
903
|
-
<span class="cline-any cline-neutral"> </span>
|
|
904
|
-
<span class="cline-any cline-neutral"> </span>
|
|
905
|
-
<span class="cline-any cline-neutral"> </span>
|
|
906
|
-
<span class="cline-any cline-neutral"> </span>
|
|
907
|
-
<span class="cline-any cline-neutral"> </span>
|
|
908
|
-
<span class="cline-any cline-neutral"> </span>
|
|
909
|
-
<span class="cline-any cline-neutral"> </span>
|
|
910
|
-
<span class="cline-any cline-neutral"> </span>
|
|
911
|
-
<span class="cline-any cline-no"> </span>
|
|
912
|
-
<span class="cline-any cline-no"> </span>
|
|
913
|
-
<span class="cline-any cline-neutral"> </span>
|
|
914
|
-
<span class="cline-any cline-neutral"> </span>
|
|
915
|
-
<span class="cline-any cline-neutral"> </span>
|
|
916
|
-
<span class="cline-any cline-neutral"> </span>
|
|
917
|
-
<span class="cline-any cline-neutral"> </span>
|
|
918
|
-
<span class="cline-any cline-neutral"> </span>
|
|
919
|
-
<span class="cline-any cline-no"> </span>
|
|
920
|
-
<span class="cline-any cline-no"> </span>
|
|
921
|
-
<span class="cline-any cline-neutral"> </span>
|
|
922
|
-
<span class="cline-any cline-neutral"> </span>
|
|
923
|
-
<span class="cline-any cline-neutral"> </span>
|
|
924
|
-
<span class="cline-any cline-no"> </span>
|
|
925
|
-
<span class="cline-any cline-no"> </span>
|
|
926
|
-
<span class="cline-any cline-no"> </span>
|
|
927
|
-
<span class="cline-any cline-no"> </span>
|
|
928
|
-
<span class="cline-any cline-no"> </span>
|
|
929
|
-
<span class="cline-any cline-neutral"> </span>
|
|
930
|
-
<span class="cline-any cline-no"> </span>
|
|
931
|
-
<span class="cline-any cline-no"> </span>
|
|
932
|
-
<span class="cline-any cline-no"> </span>
|
|
933
|
-
<span class="cline-any cline-no"> </span>
|
|
934
|
-
<span class="cline-any cline-neutral"> </span>
|
|
935
|
-
<span class="cline-any cline-no"> </span>
|
|
936
|
-
<span class="cline-any cline-no"> </span>
|
|
937
|
-
<span class="cline-any cline-no"> </span>
|
|
938
|
-
<span class="cline-any cline-no"> </span>
|
|
939
|
-
<span class="cline-any cline-neutral"> </span>
|
|
940
|
-
<span class="cline-any cline-neutral"> </span>
|
|
941
|
-
<span class="cline-any cline-no"> </span>
|
|
942
|
-
<span class="cline-any cline-neutral"> </span>
|
|
943
|
-
<span class="cline-any cline-neutral"> </span>
|
|
944
|
-
<span class="cline-any cline-neutral"> </span>
|
|
945
|
-
<span class="cline-any cline-no"> </span>
|
|
946
|
-
<span class="cline-any cline-neutral"> </span>
|
|
947
|
-
<span class="cline-any cline-neutral"> </span>
|
|
948
|
-
<span class="cline-any cline-no"> </span>
|
|
949
|
-
<span class="cline-any cline-no"> </span>
|
|
950
|
-
<span class="cline-any cline-no"> </span>
|
|
951
|
-
<span class="cline-any cline-neutral"> </span>
|
|
952
|
-
<span class="cline-any cline-neutral"> </span>
|
|
953
|
-
<span class="cline-any cline-neutral"> </span>
|
|
954
|
-
<span class="cline-any cline-no"> </span>
|
|
955
|
-
<span class="cline-any cline-no"> </span>
|
|
956
|
-
<span class="cline-any cline-neutral"> </span>
|
|
957
|
-
<span class="cline-any cline-neutral"> </span>
|
|
958
|
-
<span class="cline-any cline-neutral"> </span>
|
|
959
|
-
<span class="cline-any cline-neutral"> </span>
|
|
960
|
-
<span class="cline-any cline-neutral"> </span>
|
|
961
|
-
<span class="cline-any cline-neutral"> </span>
|
|
962
|
-
<span class="cline-any cline-neutral"> </span>
|
|
963
|
-
<span class="cline-any cline-neutral"> </span>
|
|
964
|
-
<span class="cline-any cline-neutral"> </span>
|
|
965
|
-
<span class="cline-any cline-neutral"> </span>
|
|
966
|
-
<span class="cline-any cline-neutral"> </span>
|
|
967
|
-
<span class="cline-any cline-no"> </span>
|
|
968
|
-
<span class="cline-any cline-no"> </span>
|
|
969
|
-
<span class="cline-any cline-neutral"> </span>
|
|
970
|
-
<span class="cline-any cline-neutral"> </span>
|
|
971
|
-
<span class="cline-any cline-neutral"> </span>
|
|
972
|
-
<span class="cline-any cline-no"> </span>
|
|
973
|
-
<span class="cline-any cline-no"> </span>
|
|
974
|
-
<span class="cline-any cline-neutral"> </span>
|
|
975
|
-
<span class="cline-any cline-neutral"> </span>
|
|
976
|
-
<span class="cline-any cline-neutral"> </span>
|
|
977
|
-
<span class="cline-any cline-neutral"> </span>
|
|
978
|
-
<span class="cline-any cline-no"> </span>
|
|
979
|
-
<span class="cline-any cline-no"> </span>
|
|
980
|
-
<span class="cline-any cline-neutral"> </span>
|
|
981
|
-
<span class="cline-any cline-neutral"> </span>
|
|
982
|
-
<span class="cline-any cline-neutral"> </span>
|
|
983
|
-
<span class="cline-any cline-no"> </span>
|
|
984
|
-
<span class="cline-any cline-neutral"> </span>
|
|
985
|
-
<span class="cline-any cline-neutral"> </span>
|
|
986
|
-
<span class="cline-any cline-neutral"> </span>
|
|
987
|
-
<span class="cline-any cline-neutral"> </span>
|
|
988
|
-
<span class="cline-any cline-no"> </span>
|
|
989
|
-
<span class="cline-any cline-no"> </span>
|
|
990
|
-
<span class="cline-any cline-no"> </span>
|
|
991
|
-
<span class="cline-any cline-neutral"> </span>
|
|
992
|
-
<span class="cline-any cline-neutral"> </span>
|
|
993
|
-
<span class="cline-any cline-neutral"> </span>
|
|
994
|
-
<span class="cline-any cline-neutral"> </span>
|
|
995
|
-
<span class="cline-any cline-neutral"> </span>
|
|
996
|
-
<span class="cline-any cline-neutral"> </span>
|
|
997
|
-
<span class="cline-any cline-neutral"> </span>
|
|
998
|
-
<span class="cline-any cline-neutral"> </span>
|
|
999
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1000
|
-
<span class="cline-any cline-no"> </span>
|
|
1001
|
-
<span class="cline-any cline-no"> </span>
|
|
1002
|
-
<span class="cline-any cline-no"> </span>
|
|
1003
|
-
<span class="cline-any cline-no"> </span>
|
|
1004
|
-
<span class="cline-any cline-no"> </span>
|
|
1005
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1006
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1007
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1008
|
-
<span class="cline-any cline-no"> </span>
|
|
1009
|
-
<span class="cline-any cline-no"> </span>
|
|
1010
|
-
<span class="cline-any cline-no"> </span>
|
|
1011
|
-
<span class="cline-any cline-no"> </span>
|
|
1012
|
-
<span class="cline-any cline-no"> </span>
|
|
1013
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1014
|
-
<span class="cline-any cline-no"> </span>
|
|
1015
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1016
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1017
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1018
|
-
<span class="cline-any cline-no"> </span>
|
|
1019
|
-
<span class="cline-any cline-no"> </span>
|
|
1020
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1021
|
-
<span class="cline-any cline-no"> </span>
|
|
1022
|
-
<span class="cline-any cline-no"> </span>
|
|
1023
|
-
<span class="cline-any cline-no"> </span>
|
|
1024
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1025
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1026
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1027
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1028
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1029
|
-
<span class="cline-any cline-no"> </span>
|
|
1030
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1031
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1032
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1033
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1034
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1035
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1036
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1037
|
-
<span class="cline-any cline-no"> </span>
|
|
1038
|
-
<span class="cline-any cline-no"> </span>
|
|
1039
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1040
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1041
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1042
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1043
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1044
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1045
|
-
<span class="cline-any cline-no"> </span>
|
|
1046
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1047
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1048
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1049
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1050
|
-
<span class="cline-any cline-no"> </span>
|
|
1051
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1052
|
-
<span class="cline-any cline-no"> </span>
|
|
1053
|
-
<span class="cline-any cline-no"> </span>
|
|
1054
|
-
<span class="cline-any cline-no"> </span>
|
|
1055
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1056
|
-
<span class="cline-any cline-no"> </span>
|
|
1057
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1058
|
-
<span class="cline-any cline-no"> </span>
|
|
1059
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1060
|
-
<span class="cline-any cline-no"> </span>
|
|
1061
|
-
<span class="cline-any cline-no"> </span>
|
|
1062
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1063
|
-
<span class="cline-any cline-no"> </span>
|
|
1064
|
-
<span class="cline-any cline-no"> </span>
|
|
1065
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1066
|
-
<span class="cline-any cline-no"> </span>
|
|
1067
|
-
<span class="cline-any cline-no"> </span>
|
|
1068
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1069
|
-
<span class="cline-any cline-no"> </span>
|
|
1070
|
-
<span class="cline-any cline-no"> </span>
|
|
1071
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1072
|
-
<span class="cline-any cline-no"> </span>
|
|
1073
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1074
|
-
<span class="cline-any cline-no"> </span>
|
|
1075
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1076
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1077
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1078
|
-
<span class="cline-any cline-no"> </span>
|
|
1079
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1080
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1081
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1082
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1083
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1084
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">// Set globals
|
|
1085
|
-
/* global database pronghornProps log eventSystem */
|
|
1086
|
-
/* eslint default-param-last: warn */
|
|
1087
|
-
|
|
1088
|
-
const path = require('path');
|
|
1089
|
-
const fs = require('fs');
|
|
1090
|
-
const { unzip } = require('zlib');
|
|
1091
|
-
const EventEmitterCl = require('events').EventEmitter;
|
|
1092
|
-
const util = require('util');
|
|
1093
|
-
|
|
1094
|
-
const encProps = pronghornProps.pathProps.encrypted;
|
|
1095
|
-
const Ajv = require('ajv');
|
|
1096
|
-
|
|
1097
|
-
const ajv = new Ajv({ allErrors: true });
|
|
1098
|
-
const mockDeviceSchema = JSON.parse(
|
|
1099
|
-
fs.readFileSync(path.join(__dirname, './mockDeviceSchema.json'), 'utf-8')
|
|
1100
|
-
);
|
|
1101
|
-
const configMgrPath = path.join(__dirname, '../../@itential/app-configuration_manager');
|
|
1102
|
-
const utilsPath = path.join(__dirname, '../../@itential/itential-utils');
|
|
1103
|
-
let MOCK_DEVICES;
|
|
1104
|
-
let CONFIG_PARSERS;
|
|
1105
|
-
let getDriver;
|
|
1106
|
-
let translateChangesToNativeConfig;
|
|
1107
|
-
let Discovery;
|
|
1108
|
-
let discovery;
|
|
1109
|
-
|
|
1110
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (process.env.NODE_ENV !== 'test') {
|
|
1111
|
-
<span class="cstat-no" title="statement not covered" > ({ Discovery } = require(`${utilsPath}`));</span>
|
|
1112
|
-
<span class="cstat-no" title="statement not covered" > discovery = new Discovery();</span>
|
|
1113
|
-
<span class="cstat-no" title="statement not covered" > console.log(discovery);</span>
|
|
1114
|
-
<span class="cstat-no" title="statement not covered" > MOCK_DEVICES = database.collection('mock_devices');</span>
|
|
1115
|
-
<span class="cstat-no" title="statement not covered" > CONFIG_PARSERS = database.collection('ucm_config_parsers');</span>
|
|
1116
|
-
<span class="cstat-no" title="statement not covered" > ({ getDriver } = discovery.require(</span>
|
|
1117
|
-
`${configMgrPath}/shared/device-config/index.js`,
|
|
1118
|
-
encProps
|
|
1119
|
-
));
|
|
1120
|
-
<span class="cstat-no" title="statement not covered" > ({ translateChangesToNativeConfig } = discovery.require(</span>
|
|
1121
|
-
`${configMgrPath}/config-tools/nativeConfigConverter.js`,
|
|
1122
|
-
encProps
|
|
1123
|
-
));
|
|
1124
|
-
}
|
|
1125
|
-
|
|
1126
|
-
const getDeviceParser = <span class="fstat-no" title="function not covered" >as</span>ync (deviceType) => {
|
|
1127
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1128
|
-
const parserData = <span class="cstat-no" title="statement not covered" >await CONFIG_PARSERS.findOne({ name: deviceType });</span>
|
|
1129
|
-
<span class="cstat-no" title="statement not covered" > if (parserData) {</span>
|
|
1130
|
-
<span class="cstat-no" title="statement not covered" > return parserData;</span>
|
|
1131
|
-
}
|
|
1132
|
-
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
1133
|
-
} catch (error) {
|
|
1134
|
-
<span class="cstat-no" title="statement not covered" > log.error(`Failed to get device parser. ${error.message || error}`);</span>
|
|
1135
|
-
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
1136
|
-
}
|
|
1137
|
-
};
|
|
1138
|
-
|
|
1139
|
-
// Converts lines of config into changesets
|
|
1140
|
-
// You need changesets to rebuild a config
|
|
1141
|
-
/**
|
|
1142
|
-
* @param lineObj
|
|
1143
|
-
* @param p
|
|
1144
|
-
* @param changes
|
|
1145
|
-
*/
|
|
1146
|
-
function <span class="fstat-no" title="function not covered" >lineToChangeSet(</span>lineObj, p, changes) {
|
|
1147
|
-
const line = <span class="cstat-no" title="statement not covered" >lineObj.words.join(' ');</span>
|
|
1148
|
-
const parent = <span class="cstat-no" title="statement not covered" >[...p];</span>
|
|
1149
|
-
<span class="cstat-no" title="statement not covered" > if (lineObj.lines.length === 0) {</span>
|
|
1150
|
-
<span class="cstat-no" title="statement not covered" > changes.push({</span>
|
|
1151
|
-
parents: p,
|
|
1152
|
-
new: line,
|
|
1153
|
-
old: null
|
|
1154
|
-
});
|
|
1155
|
-
} else {
|
|
1156
|
-
<span class="cstat-no" title="statement not covered" > parent.push(line);</span>
|
|
1157
|
-
<span class="cstat-no" title="statement not covered" > lineObj.lines.forEach(<span class="fstat-no" title="function not covered" >(e</span>lement) => {</span>
|
|
1158
|
-
<span class="cstat-no" title="statement not covered" > lineToChangeSet(element, parent, changes);</span>
|
|
1159
|
-
});
|
|
1160
|
-
}
|
|
1161
|
-
}
|
|
1162
|
-
|
|
1163
|
-
// Puts ! comments on new lines because they get removed
|
|
1164
|
-
// This is sketchy at best
|
|
1165
|
-
/**
|
|
1166
|
-
* @param native
|
|
1167
|
-
*/
|
|
1168
|
-
function <span class="fstat-no" title="function not covered" >bangOn(</span>native) {
|
|
1169
|
-
let indent = <span class="cstat-no" title="statement not covered" >0;</span>
|
|
1170
|
-
const newLines = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
1171
|
-
const lines = <span class="cstat-no" title="statement not covered" >native.split('\n');</span>
|
|
1172
|
-
<span class="cstat-no" title="statement not covered" > lines.forEach(<span class="fstat-no" title="function not covered" >(l</span>ine) => {</span>
|
|
1173
|
-
const spacecount = <span class="cstat-no" title="statement not covered" >line.search(/\S|$/);</span>
|
|
1174
|
-
<span class="cstat-no" title="statement not covered" > if (spacecount < indent) {</span>
|
|
1175
|
-
let bString = <span class="cstat-no" title="statement not covered" >'';</span>
|
|
1176
|
-
<span class="cstat-no" title="statement not covered" > for (let index = <span class="cstat-no" title="statement not covered" >0;</span> index < spacecount; index += 1) {</span>
|
|
1177
|
-
<span class="cstat-no" title="statement not covered" > bString += ' ';</span>
|
|
1178
|
-
}
|
|
1179
|
-
<span class="cstat-no" title="statement not covered" > bString += '!';</span>
|
|
1180
|
-
<span class="cstat-no" title="statement not covered" > newLines.push(bString);</span>
|
|
1181
|
-
}
|
|
1182
|
-
<span class="cstat-no" title="statement not covered" > newLines.push(line);</span>
|
|
1183
|
-
<span class="cstat-no" title="statement not covered" > indent = spacecount;</span>
|
|
1184
|
-
});
|
|
1185
|
-
<span class="cstat-no" title="statement not covered" > return newLines.join('\n');</span>
|
|
1186
|
-
}
|
|
1187
|
-
|
|
1188
|
-
// Finds misplaced end and moves it to the end
|
|
1189
|
-
// This is mostly important for cisco-ios
|
|
1190
|
-
/**
|
|
1191
|
-
* @param native
|
|
1192
|
-
*/
|
|
1193
|
-
function <span class="fstat-no" title="function not covered" >findEnd(</span>native) {
|
|
1194
|
-
const lines = <span class="cstat-no" title="statement not covered" >native.split('\n');</span>
|
|
1195
|
-
const index = <span class="cstat-no" title="statement not covered" >lines.indexOf('end');</span>
|
|
1196
|
-
<span class="cstat-no" title="statement not covered" > if (index > -1) {</span>
|
|
1197
|
-
<span class="cstat-no" title="statement not covered" > lines.splice(index, 1);</span>
|
|
1198
|
-
<span class="cstat-no" title="statement not covered" > lines.push('end');</span>
|
|
1199
|
-
}
|
|
1200
|
-
<span class="cstat-no" title="statement not covered" > return lines.join('\n');</span>
|
|
1201
|
-
}
|
|
1202
|
-
|
|
1203
|
-
/**
|
|
1204
|
-
* @param native
|
|
1205
|
-
* @param line
|
|
1206
|
-
*/
|
|
1207
|
-
function <span class="fstat-no" title="function not covered" >removeLine(</span>native, line) {
|
|
1208
|
-
const lines = <span class="cstat-no" title="statement not covered" >native.split('\n');</span>
|
|
1209
|
-
const index = <span class="cstat-no" title="statement not covered" >lines.indexOf(line);</span>
|
|
1210
|
-
<span class="cstat-no" title="statement not covered" > if (index > -1) {</span>
|
|
1211
|
-
<span class="cstat-no" title="statement not covered" > lines.splice(index, 1);</span>
|
|
1212
|
-
}
|
|
1213
|
-
<span class="cstat-no" title="statement not covered" > return lines.join('\n');</span>
|
|
1214
|
-
}
|
|
1215
|
-
|
|
1216
|
-
/**
|
|
1217
|
-
* @param native
|
|
1218
|
-
*/
|
|
1219
|
-
function <span class="fstat-no" title="function not covered" >negation(</span>native) {
|
|
1220
|
-
const regex = <span class="cstat-no" title="statement not covered" >/no .*/g;</span>
|
|
1221
|
-
const lines = <span class="cstat-no" title="statement not covered" >native.split('\n');</span>
|
|
1222
|
-
const negatives = <span class="cstat-no" title="statement not covered" >lines.filter(<span class="fstat-no" title="function not covered" >(l</span>ine) => <span class="cstat-no" title="statement not covered" >line.match(regex))</span>;</span>
|
|
1223
|
-
|
|
1224
|
-
let updated = <span class="cstat-no" title="statement not covered" >native;</span>
|
|
1225
|
-
<span class="cstat-no" title="statement not covered" > negatives.forEach(<span class="fstat-no" title="function not covered" >(n</span>) => {</span>
|
|
1226
|
-
const pieces = <span class="cstat-no" title="statement not covered" >n.split('no ');</span>
|
|
1227
|
-
let ltr = <span class="cstat-no" title="statement not covered" >pieces[1];</span>
|
|
1228
|
-
<span class="cstat-no" title="statement not covered" > if (pieces[0].length > 0) {</span>
|
|
1229
|
-
<span class="cstat-no" title="statement not covered" > ltr = pieces[0].split('no ') + ltr;</span>
|
|
1230
|
-
}
|
|
1231
|
-
<span class="cstat-no" title="statement not covered" > updated = removeLine(updated, ltr);</span>
|
|
1232
|
-
<span class="cstat-no" title="statement not covered" > updated = removeLine(updated, n);</span>
|
|
1233
|
-
});
|
|
1234
|
-
<span class="cstat-no" title="statement not covered" > return updated;</span>
|
|
1235
|
-
}
|
|
1236
|
-
|
|
1237
|
-
/**
|
|
1238
|
-
* @param data
|
|
1239
|
-
*/
|
|
1240
|
-
function <span class="fstat-no" title="function not covered" >decompressData(</span>data) {
|
|
1241
|
-
<span class="cstat-no" title="statement not covered" > return new Promise(<span class="fstat-no" title="function not covered" >(r</span>esolve, reject) => {</span>
|
|
1242
|
-
const buffer = <span class="cstat-no" title="statement not covered" >Buffer.from(data, 'base64');</span>
|
|
1243
|
-
<span class="cstat-no" title="statement not covered" > unzip(buffer, <span class="fstat-no" title="function not covered" >(e</span>rror, bufferString) => {</span>
|
|
1244
|
-
<span class="cstat-no" title="statement not covered" > if (error) <span class="cstat-no" title="statement not covered" >reject(error);</span></span>
|
|
1245
|
-
<span class="cstat-no" title="statement not covered" > resolve(bufferString.toString());</span>
|
|
1246
|
-
});
|
|
1247
|
-
});
|
|
1248
|
-
}
|
|
1249
|
-
|
|
1250
|
-
/**
|
|
1251
|
-
* @param device
|
|
1252
|
-
*/
|
|
1253
|
-
function <span class="fstat-no" title="function not covered" >validateSchema(</span>device) {
|
|
1254
|
-
const validate = <span class="cstat-no" title="statement not covered" >ajv.compile(mockDeviceSchema);</span>
|
|
1255
|
-
const valid = <span class="cstat-no" title="statement not covered" >validate(device);</span>
|
|
1256
|
-
<span class="cstat-no" title="statement not covered" > return valid;</span>
|
|
1257
|
-
}
|
|
1258
|
-
|
|
1259
|
-
class MockDevice {
|
|
1260
|
-
constructor(prongid, properties) {
|
|
1261
|
-
log.debug(`Mock device properties ${JSON.stringify(properties)}`);
|
|
1262
|
-
console.log(`config path: ${configMgrPath}`);
|
|
1263
|
-
this.props = properties;
|
|
1264
|
-
this.id = prongid;
|
|
1265
|
-
}
|
|
1266
|
-
|
|
1267
|
-
<span class="fstat-no" title="function not covered" > co</span>nnect() {
|
|
1268
|
-
<span class="cstat-no" title="statement not covered" > setTimeout(<span class="fstat-no" title="function not covered" >()</span> => {</span>
|
|
1269
|
-
<span class="cstat-no" title="statement not covered" > this.emit('ONLINE', { id: this.id });</span>
|
|
1270
|
-
const msg = <span class="cstat-no" title="statement not covered" >{</span>
|
|
1271
|
-
id: this.id,
|
|
1272
|
-
server: 'foo',
|
|
1273
|
-
type: 'MockDevice',
|
|
1274
|
-
time: Date.now().toString()
|
|
1275
|
-
};
|
|
1276
|
-
<span class="cstat-no" title="statement not covered" > eventSystem.publish('adapterOnline', msg);</span>
|
|
1277
|
-
}, 1000);
|
|
1278
|
-
}
|
|
1279
|
-
|
|
1280
|
-
<span class="fstat-no" title="function not covered" > he</span>althCheck(callback) {
|
|
1281
|
-
const status = <span class="cstat-no" title="statement not covered" >{</span>
|
|
1282
|
-
id: this.id,
|
|
1283
|
-
status: 'success'
|
|
1284
|
-
};
|
|
1285
|
-
<span class="cstat-no" title="statement not covered" > callback(status);</span>
|
|
1286
|
-
}
|
|
1287
|
-
|
|
1288
|
-
hasEntities(entityType, deviceList, callback) {
|
|
1289
|
-
(async () => {
|
|
1290
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (entityType !== 'Device') {
|
|
1291
|
-
return callback(
|
|
1292
|
-
null,
|
|
1293
|
-
`${this.id} does not support entity ${entityType}`
|
|
1294
|
-
);
|
|
1295
|
-
}
|
|
1296
|
-
// TODO: $in deviceList
|
|
1297
|
-
const devices = <span class="cstat-no" title="statement not covered" >await MOCK_DEVICES.find({ deleted: false }).toArray();</span>
|
|
1298
|
-
const findings = <span class="cstat-no" title="statement not covered" >deviceList.reduce(<span class="fstat-no" title="function not covered" >(m</span>ap, device) => {</span>
|
|
1299
|
-
<span class="cstat-no" title="statement not covered" > map[device] = false;</span>
|
|
1300
|
-
<span class="cstat-no" title="statement not covered" > devices.forEach(<span class="fstat-no" title="function not covered" >(f</span>oundDevice) => {</span>
|
|
1301
|
-
<span class="cstat-no" title="statement not covered" > if (foundDevice.name === device) {</span>
|
|
1302
|
-
<span class="cstat-no" title="statement not covered" > map[device] = true;</span>
|
|
1303
|
-
}
|
|
1304
|
-
});
|
|
1305
|
-
<span class="cstat-no" title="statement not covered" > return map;</span>
|
|
1306
|
-
}, {});
|
|
1307
|
-
<span class="cstat-no" title="statement not covered" > return callback(findings);</span>
|
|
1308
|
-
})();
|
|
1309
|
-
}
|
|
1310
|
-
|
|
1311
|
-
<span class="fstat-no" title="function not covered" > ge</span>tDevice(deviceId, callback) {
|
|
1312
|
-
<span class="cstat-no" title="statement not covered" > (<span class="fstat-no" title="function not covered" >as</span>ync () => {</span>
|
|
1313
|
-
const device = <span class="cstat-no" title="statement not covered" >await MOCK_DEVICES.findOne({</span>
|
|
1314
|
-
deleted: false,
|
|
1315
|
-
name: deviceId
|
|
1316
|
-
});
|
|
1317
|
-
<span class="cstat-no" title="statement not covered" > if (!device) {</span>
|
|
1318
|
-
<span class="cstat-no" title="statement not covered" > return callback(null, 'Device not found');</span>
|
|
1319
|
-
}
|
|
1320
|
-
const copy = <span class="cstat-no" title="statement not covered" >JSON.parse(JSON.stringify(device));</span>
|
|
1321
|
-
<span class="cstat-no" title="statement not covered" > delete copy.states;</span>
|
|
1322
|
-
<span class="cstat-no" title="statement not covered" > delete copy.actions;</span>
|
|
1323
|
-
<span class="cstat-no" title="statement not covered" > delete copy._id;</span>
|
|
1324
|
-
<span class="cstat-no" title="statement not covered" > delete copy.deleted;</span>
|
|
1325
|
-
<span class="cstat-no" title="statement not covered" > delete copy.online;</span>
|
|
1326
|
-
<span class="cstat-no" title="statement not covered" > return callback(copy);</span>
|
|
1327
|
-
})();
|
|
1328
|
-
}
|
|
1329
|
-
|
|
1330
|
-
<span class="fstat-no" title="function not covered" > ge</span>tDevicesFiltered(searchOptions, callback) {
|
|
1331
|
-
<span class="cstat-no" title="statement not covered" > (<span class="fstat-no" title="function not covered" >as</span>ync () => {</span>
|
|
1332
|
-
const result = <span class="cstat-no" title="statement not covered" >await MOCK_DEVICES.find({</span>
|
|
1333
|
-
deleted: false,
|
|
1334
|
-
name: { $regex: `.*${searchOptions.filter.name}.*` }
|
|
1335
|
-
}).toArray();
|
|
1336
|
-
const result2 = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
1337
|
-
// eslint-disable-next-line guard-for-in
|
|
1338
|
-
<span class="cstat-no" title="statement not covered" > for (const r in result) {</span>
|
|
1339
|
-
const validateDevice = <span class="cstat-no" title="statement not covered" >result[r];</span>
|
|
1340
|
-
<span class="cstat-no" title="statement not covered" > if (validateSchema(validateDevice)) {</span>
|
|
1341
|
-
<span class="cstat-no" title="statement not covered" > delete result[r]._id;</span>
|
|
1342
|
-
<span class="cstat-no" title="statement not covered" > delete result[r].deleted;</span>
|
|
1343
|
-
<span class="cstat-no" title="statement not covered" > delete result[r].online;</span>
|
|
1344
|
-
<span class="cstat-no" title="statement not covered" > result2.push(result[r]);</span>
|
|
1345
|
-
}
|
|
1346
|
-
}
|
|
1347
|
-
// eslint-disable-next-line prefer-object-spread
|
|
1348
|
-
<span class="cstat-no" title="statement not covered" > Object.assign({}, result2);</span>
|
|
1349
|
-
<span class="cstat-no" title="statement not covered" > return callback({</span>
|
|
1350
|
-
total: result2.length,
|
|
1351
|
-
list: result2
|
|
1352
|
-
});
|
|
1353
|
-
})();
|
|
1354
|
-
}
|
|
1355
|
-
|
|
1356
|
-
<span class="fstat-no" title="function not covered" > ad</span>dDevice(device, callback) {
|
|
1357
|
-
<span class="cstat-no" title="statement not covered" > return callback({</span>
|
|
1358
|
-
code: 0,
|
|
1359
|
-
value: reply
|
|
1360
|
-
});
|
|
1361
|
-
}
|
|
1362
|
-
|
|
1363
|
-
<span class="fstat-no" title="function not covered" > de</span>leteDevice(deviceId, callback) {
|
|
1364
|
-
<span class="cstat-no" title="statement not covered" > return callback({</span>
|
|
1365
|
-
code: 0,
|
|
1366
|
-
value: reply
|
|
1367
|
-
});
|
|
1368
|
-
}
|
|
1369
|
-
|
|
1370
|
-
<span class="fstat-no" title="function not covered" > is</span>Alive(deviceId, callback) {
|
|
1371
|
-
<span class="cstat-no" title="statement not covered" > (<span class="fstat-no" title="function not covered" >as</span>ync () => {</span>
|
|
1372
|
-
const device = <span class="cstat-no" title="statement not covered" >await MOCK_DEVICES.findOne({</span>
|
|
1373
|
-
deleted: false,
|
|
1374
|
-
name: deviceId
|
|
1375
|
-
});
|
|
1376
|
-
<span class="cstat-no" title="statement not covered" > if (!device) {</span>
|
|
1377
|
-
<span class="cstat-no" title="statement not covered" > return callback(null, 'Device not found');</span>
|
|
1378
|
-
}
|
|
1379
|
-
const newDev = <span class="cstat-no" title="statement not covered" >{};</span>
|
|
1380
|
-
<span class="cstat-no" title="statement not covered" > newDev.response = device.online;</span>
|
|
1381
|
-
<span class="cstat-no" title="statement not covered" > return callback(device.online);</span>
|
|
1382
|
-
})();
|
|
1383
|
-
}
|
|
1384
|
-
|
|
1385
|
-
<span class="fstat-no" title="function not covered" > ge</span>tConfig(deviceId, format, callback) {
|
|
1386
|
-
<span class="cstat-no" title="statement not covered" > (<span class="fstat-no" title="function not covered" >as</span>ync () => {</span>
|
|
1387
|
-
const result = <span class="cstat-no" title="statement not covered" >await MOCK_DEVICES.findOne({</span>
|
|
1388
|
-
deleted: false,
|
|
1389
|
-
name: deviceId
|
|
1390
|
-
});
|
|
1391
|
-
<span class="cstat-no" title="statement not covered" > if (result) {</span>
|
|
1392
|
-
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
1393
|
-
result.config !== undefined
|
|
1394
|
-
&& Object.hasOwnProperty.call(result.config, 'type')
|
|
1395
|
-
&& result.config.type === 'Buffer'
|
|
1396
|
-
) {
|
|
1397
|
-
const decompressConfig = <span class="cstat-no" title="statement not covered" >await decompressData(result.config);</span>
|
|
1398
|
-
|
|
1399
|
-
<span class="cstat-no" title="statement not covered" > return callback({</span>
|
|
1400
|
-
code: 200,
|
|
1401
|
-
config: decompressConfig,
|
|
1402
|
-
value: '?'
|
|
1403
|
-
});
|
|
1404
|
-
}
|
|
1405
|
-
<span class="cstat-no" title="statement not covered" > return callback({</span>
|
|
1406
|
-
code: 200,
|
|
1407
|
-
device: deviceId,
|
|
1408
|
-
config: result.config
|
|
1409
|
-
});
|
|
1410
|
-
}
|
|
1411
|
-
<span class="cstat-no" title="statement not covered" > return callback({</span>
|
|
1412
|
-
code: 404,
|
|
1413
|
-
config: '?',
|
|
1414
|
-
value: '?'
|
|
1415
|
-
});
|
|
1416
|
-
})();
|
|
1417
|
-
}
|
|
1418
|
-
|
|
1419
|
-
<span class="fstat-no" title="function not covered" > se</span>tConfig(deviceId, transactions, callback) {
|
|
1420
|
-
<span class="cstat-no" title="statement not covered" > (<span class="fstat-no" title="function not covered" >as</span>ync () => {</span>
|
|
1421
|
-
<span class="cstat-no" title="statement not covered" > console.log(</span>
|
|
1422
|
-
`Incoming Changeset:\n ${util.inspect(transactions, {
|
|
1423
|
-
showHidden: false,
|
|
1424
|
-
depth: null,
|
|
1425
|
-
colors: true
|
|
1426
|
-
})}`
|
|
1427
|
-
);
|
|
1428
|
-
<span class="cstat-no" title="statement not covered" > console.log(`Remediating config for: ${deviceId}`);</span>
|
|
1429
|
-
const device = <span class="cstat-no" title="statement not covered" >await MOCK_DEVICES.findOne({</span>
|
|
1430
|
-
deleted: false,
|
|
1431
|
-
name: deviceId
|
|
1432
|
-
});
|
|
1433
|
-
<span class="cstat-no" title="statement not covered" > console.log(`Getting parser for OS: ${device.ostype}`);</span>
|
|
1434
|
-
const deviceParser = <span class="cstat-no" title="statement not covered" >await getDeviceParser(device.ostype);</span>
|
|
1435
|
-
<span class="cstat-no" title="statement not covered" > if (!deviceParser) {</span>
|
|
1436
|
-
const e = <span class="cstat-no" title="statement not covered" >`Unable to find a parser for ${deviceId} with type ${device.ostype}`;</span>
|
|
1437
|
-
<span class="cstat-no" title="statement not covered" > return callback(null, new Error(e));</span>
|
|
1438
|
-
}
|
|
1439
|
-
const driver = <span class="cstat-no" title="statement not covered" >getDriver(device.ostype, deviceParser);</span>
|
|
1440
|
-
<span class="cstat-no" title="statement not covered" > if (!driver) {</span>
|
|
1441
|
-
const e = <span class="cstat-no" title="statement not covered" >`Unable to find a driver for type: ${device.ostype}`;</span>
|
|
1442
|
-
<span class="cstat-no" title="statement not covered" > return callback(null, new Error(e));</span>
|
|
1443
|
-
}
|
|
1444
|
-
const parsedConfig = <span class="cstat-no" title="statement not covered" >driver.parse(device.config);</span>
|
|
1445
|
-
const changes = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
1446
|
-
<span class="cstat-no" title="statement not covered" > parsedConfig.lines.forEach(<span class="fstat-no" title="function not covered" >(e</span>lement) => {</span>
|
|
1447
|
-
<span class="cstat-no" title="statement not covered" > lineToChangeSet(element, [], changes);</span>
|
|
1448
|
-
});
|
|
1449
|
-
|
|
1450
|
-
<span class="cstat-no" title="statement not covered" > translateChangesToNativeConfig(</span>
|
|
1451
|
-
changes.concat(transactions),
|
|
1452
|
-
deviceParser,
|
|
1453
|
-
<span class="fstat-no" title="function not covered" > as</span>ync (native) => {
|
|
1454
|
-
<span class="cstat-no" title="statement not covered" > console.log(</span>
|
|
1455
|
-
`Remediation changeset successfully integrated into: ${deviceId}`
|
|
1456
|
-
);
|
|
1457
|
-
const newConfig = <span class="cstat-no" title="statement not covered" >negation(bangOn(findEnd(native)));</span>
|
|
1458
|
-
<span class="cstat-no" title="statement not covered" > device.config = newConfig;</span>
|
|
1459
|
-
const r = <span class="cstat-no" title="statement not covered" >await MOCK_DEVICES.updateOne(</span>
|
|
1460
|
-
{ name: deviceId },
|
|
1461
|
-
{ $set: device }
|
|
1462
|
-
);
|
|
1463
|
-
<span class="cstat-no" title="statement not covered" > console.log(`Configuration saved for: ${deviceId}`);</span>
|
|
1464
|
-
<span class="cstat-no" title="statement not covered" > return callback({</span>
|
|
1465
|
-
status: 200,
|
|
1466
|
-
results: {
|
|
1467
|
-
attemptedConfig: 'TODO'
|
|
1468
|
-
}
|
|
1469
|
-
});
|
|
1470
|
-
}
|
|
1471
|
-
);
|
|
1472
|
-
})();
|
|
1473
|
-
}
|
|
1474
|
-
|
|
1475
|
-
<span class="fstat-no" title="function not covered" > re</span>storeConfig(deviceId, config, callback) {
|
|
1476
|
-
<span class="cstat-no" title="statement not covered" > (<span class="fstat-no" title="function not covered" >as</span>ync () => {</span>
|
|
1477
|
-
const result = <span class="cstat-no" title="statement not covered" >await MOCK_DEVICES.findOne({</span>
|
|
1478
|
-
deleted: false,
|
|
1479
|
-
name: deviceId
|
|
1480
|
-
});
|
|
1481
|
-
<span class="cstat-no" title="statement not covered" > if (!result) {</span>
|
|
1482
|
-
<span class="cstat-no" title="statement not covered" > return callback(</span>
|
|
1483
|
-
null,
|
|
1484
|
-
`Cannot call restoreConfig on ${deviceId} not found`
|
|
1485
|
-
);
|
|
1486
|
-
}
|
|
1487
|
-
<span class="cstat-no" title="statement not covered" > result.config = config;</span>
|
|
1488
|
-
const r = <span class="cstat-no" title="statement not covered" >await MOCK_DEVICES.updateOne(</span>
|
|
1489
|
-
{ name: deviceId },
|
|
1490
|
-
{ $set: { config } }
|
|
1491
|
-
);
|
|
1492
|
-
<span class="cstat-no" title="statement not covered" > return callback('success');</span>
|
|
1493
|
-
})();
|
|
1494
|
-
}
|
|
1495
|
-
|
|
1496
|
-
<span class="fstat-no" title="function not covered" > ge</span>tDeviceGroups(callback) {
|
|
1497
|
-
const groups = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
1498
|
-
<span class="cstat-no" title="statement not covered" > groups.push({ name: 'mock', devices: [] });</span>
|
|
1499
|
-
<span class="cstat-no" title="statement not covered" > return callback(groups);</span>
|
|
1500
|
-
}
|
|
1501
|
-
|
|
1502
|
-
/**
|
|
1503
|
-
* @param {Array} devices Array of unique id strings
|
|
1504
|
-
* @param {string} command The command to run against the devices
|
|
1505
|
-
* @param {object} options (optional) Possible specific options
|
|
1506
|
-
* @param {Function} callback The callback function
|
|
1507
|
-
*/
|
|
1508
|
-
<span class="fstat-no" title="function not covered" > ru</span>nCommand(devices, command, options = <span class="branch-0 cbranch-no" title="branch not covered" >{},</span> callback) {
|
|
1509
|
-
<span class="cstat-no" title="statement not covered" > (<span class="fstat-no" title="function not covered" >as</span>ync () => {</span>
|
|
1510
|
-
const cmd = <span class="cstat-no" title="statement not covered" >command.split(' ')[0];</span>
|
|
1511
|
-
const results = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
1512
|
-
<span class="cstat-no" title="statement not covered" > for (const deviceId of devices) {</span>
|
|
1513
|
-
const device = <span class="cstat-no" title="statement not covered" >await MOCK_DEVICES.findOne({</span>
|
|
1514
|
-
deleted: false,
|
|
1515
|
-
name: deviceId
|
|
1516
|
-
});
|
|
1517
|
-
<span class="cstat-no" title="statement not covered" > if (device) {</span>
|
|
1518
|
-
let result = <span class="cstat-no" title="statement not covered" >'ok';</span>
|
|
1519
|
-
<span class="cstat-no" title="statement not covered" > if (Object.hasOwnProperty.call(device.actions, cmd)) {</span>
|
|
1520
|
-
const r = <span class="cstat-no" title="statement not covered" >await this.doAction(device.actions[cmd], device);</span>
|
|
1521
|
-
<span class="cstat-no" title="statement not covered" > results.push({ device: device.name, result: r, status: 'success' });</span>
|
|
1522
|
-
} else {
|
|
1523
|
-
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
1524
|
-
Object.hasOwnProperty.call(device.states, 'type')
|
|
1525
|
-
&& device.states.type === 'Buffer'
|
|
1526
|
-
) {
|
|
1527
|
-
const decompressedState = <span class="cstat-no" title="statement not covered" >await decompressData(device.states);</span>
|
|
1528
|
-
<span class="cstat-no" title="statement not covered" > device.states = JSON.parse(decompressedState);</span>
|
|
1529
|
-
}
|
|
1530
|
-
<span class="cstat-no" title="statement not covered" > if (Object.hasOwnProperty.call(device.states[device.current_state], command)) {</span>
|
|
1531
|
-
<span class="cstat-no" title="statement not covered" > result = device.states[device.current_state][command];</span>
|
|
1532
|
-
<span class="cstat-no" title="statement not covered" > results.push({</span>
|
|
1533
|
-
device: device.name,
|
|
1534
|
-
result,
|
|
1535
|
-
status: 'success'
|
|
1536
|
-
});
|
|
1537
|
-
} else {
|
|
1538
|
-
<span class="cstat-no" title="statement not covered" > results.push({</span>
|
|
1539
|
-
device: device.name,
|
|
1540
|
-
result,
|
|
1541
|
-
status: 'error'
|
|
1542
|
-
});
|
|
1543
|
-
}
|
|
1544
|
-
}
|
|
1545
|
-
} else {
|
|
1546
|
-
<span class="cstat-no" title="statement not covered" > console.error(`${device.name} not found?`);</span>
|
|
1547
|
-
<span class="cstat-no" title="statement not covered" > results.push({</span>
|
|
1548
|
-
device: device.name,
|
|
1549
|
-
result: 'no such device',
|
|
1550
|
-
status: 'error'
|
|
1551
|
-
});
|
|
1552
|
-
}
|
|
1553
|
-
}
|
|
1554
|
-
<span class="cstat-no" title="statement not covered" > return callback(results);</span>
|
|
1555
|
-
})();
|
|
1556
|
-
}
|
|
1557
|
-
|
|
1558
|
-
<span class="fstat-no" title="function not covered" > as</span>ync doAction(cmd, device) {
|
|
1559
|
-
<span class="cstat-no" title="statement not covered" > switch (cmd.action) {</span>
|
|
1560
|
-
case 'next_state':
|
|
1561
|
-
const max_state = <span class="cstat-no" title="statement not covered" >device.states.length - 1;</span>
|
|
1562
|
-
<span class="cstat-no" title="statement not covered" > if (device.current_state < max_state) {</span>
|
|
1563
|
-
<span class="cstat-no" title="statement not covered" > device.current_state += 1;</span>
|
|
1564
|
-
} else {
|
|
1565
|
-
<span class="cstat-no" title="statement not covered" > device.current_state = 0;</span>
|
|
1566
|
-
}
|
|
1567
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
1568
|
-
case 'reset_state':
|
|
1569
|
-
<span class="cstat-no" title="statement not covered" > device.current_state = 0;</span>
|
|
1570
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
1571
|
-
case 'turn_on':
|
|
1572
|
-
<span class="cstat-no" title="statement not covered" > device.online = true;</span>
|
|
1573
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
1574
|
-
case 'turn_off':
|
|
1575
|
-
<span class="cstat-no" title="statement not covered" > device.online = false;</span>
|
|
1576
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
1577
|
-
case 'overwrite_config':
|
|
1578
|
-
<span class="cstat-no" title="statement not covered" > device.config = device.states[device.current_state][cmd.value];</span>
|
|
1579
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
1580
|
-
default:
|
|
1581
|
-
<span class="cstat-no" title="statement not covered" > console.error(`unsupported action ${action}`);</span>
|
|
1582
|
-
}
|
|
1583
|
-
const r = <span class="cstat-no" title="statement not covered" >await MOCK_DEVICES.updateOne(</span>
|
|
1584
|
-
{ name: device.name },
|
|
1585
|
-
{ $set: device }
|
|
1586
|
-
);
|
|
1587
|
-
<span class="cstat-no" title="statement not covered" > return 'Device state has been updated!';</span>
|
|
1588
|
-
}
|
|
1589
|
-
}
|
|
1590
|
-
|
|
1591
|
-
util.inherits(MockDevice, EventEmitterCl);
|
|
1592
|
-
module.exports = MockDevice;
|
|
1593
|
-
</pre></td></tr></table></pre>
|
|
1594
|
-
|
|
1595
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
1596
|
-
</div><!-- /wrapper -->
|
|
1597
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
1598
|
-
Code coverage generated by
|
|
1599
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1600
|
-
at 2025-12-08T16:25:29.189Z
|
|
1601
|
-
</div>
|
|
1602
|
-
<script src="../prettify.js"></script>
|
|
1603
|
-
<script>
|
|
1604
|
-
window.onload = function () {
|
|
1605
|
-
prettyPrint();
|
|
1606
|
-
};
|
|
1607
|
-
</script>
|
|
1608
|
-
<script src="../sorter.js"></script>
|
|
1609
|
-
<script src="../block-navigation.js"></script>
|
|
1610
|
-
</body>
|
|
1611
|
-
</html>
|
|
1612
|
-
|