@hurenkam/hue-services 0.6.4 → 0.6.6

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.
Files changed (121) hide show
  1. package/.nyc_output/ccf277a0-5927-457e-9598-5bb4939612f5.json +1 -0
  2. package/.nyc_output/processinfo/ccf277a0-5927-457e-9598-5bb4939612f5.json +1 -0
  3. package/README.md +16 -5
  4. package/acquire_token_failed.log +14 -0
  5. package/attic-bridge-v2-key.txt +2 -0
  6. package/bridge_v3_grouped_light.log +43 -0
  7. package/cross_room_onoff.log +42 -0
  8. package/package.json +1 -1
  9. package/select_fire_effect.log +59 -0
  10. package/src/RestApi.js +21 -5
  11. package/src/all.html +4 -0
  12. package/src/all.js +4 -0
  13. package/src/clip/ClipApi.js +4 -35
  14. package/src/clip/Resource.js +1 -1
  15. package/src/nodes/BridgeConfigNode.js +1 -1
  16. package/src/nodes/CameraMotionNode.js +39 -0
  17. package/src/nodes/ContactNode.js +52 -0
  18. package/src/nodes/ResourceNode.js +21 -12
  19. package/src/ui/CameraMotionUI.js +27 -0
  20. package/src/ui/ContactUI.js +27 -0
  21. package/.nyc_output/badbd0a1-e95b-4210-b112-988173b5b131.json +0 -1
  22. package/.nyc_output/processinfo/badbd0a1-e95b-4210-b112-988173b5b131.json +0 -1
  23. package/.nyc_output/processinfo/index.json +0 -1
  24. package/.vscode/settings.json +0 -15
  25. package/.vscode/sftp.json +0 -11
  26. package/Todo.txt +0 -18
  27. package/coverage/BaseNode.js.html +0 -379
  28. package/coverage/base.css +0 -224
  29. package/coverage/block-navigation.js +0 -87
  30. package/coverage/favicon.png +0 -0
  31. package/coverage/index.html +0 -146
  32. package/coverage/lcov-report/base.css +0 -224
  33. package/coverage/lcov-report/block-navigation.js +0 -87
  34. package/coverage/lcov-report/favicon.png +0 -0
  35. package/coverage/lcov-report/index.html +0 -161
  36. package/coverage/lcov-report/prettify.css +0 -1
  37. package/coverage/lcov-report/prettify.js +0 -2
  38. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  39. package/coverage/lcov-report/sorter.js +0 -196
  40. package/coverage/lcov-report/src/RestApi.js.html +0 -499
  41. package/coverage/lcov-report/src/all.js.html +0 -208
  42. package/coverage/lcov-report/src/clip/ClipApi.js.html +0 -1096
  43. package/coverage/lcov-report/src/clip/Resource.js.html +0 -481
  44. package/coverage/lcov-report/src/clip/index.html +0 -131
  45. package/coverage/lcov-report/src/debug.js.html +0 -253
  46. package/coverage/lcov-report/src/files.js.html +0 -118
  47. package/coverage/lcov-report/src/index.html +0 -161
  48. package/coverage/lcov-report/src/nodes/BaseNode.js.html +0 -381
  49. package/coverage/lcov-report/src/nodes/BridgeConfigNode.js.html +0 -817
  50. package/coverage/lcov-report/src/nodes/ButtonNode.js.html +0 -241
  51. package/coverage/lcov-report/src/nodes/DevicePowerNode.js.html +0 -199
  52. package/coverage/lcov-report/src/nodes/GroupedLightNode.js.html +0 -226
  53. package/coverage/lcov-report/src/nodes/LightLevelNode.js.html +0 -205
  54. package/coverage/lcov-report/src/nodes/LightNode.js.html +0 -226
  55. package/coverage/lcov-report/src/nodes/MotionNode.js.html +0 -205
  56. package/coverage/lcov-report/src/nodes/RelativeRotaryNode.js.html +0 -253
  57. package/coverage/lcov-report/src/nodes/ResourceNode.js.html +0 -388
  58. package/coverage/lcov-report/src/nodes/SceneNode.js.html +0 -124
  59. package/coverage/lcov-report/src/nodes/ServiceNode.js.html +0 -124
  60. package/coverage/lcov-report/src/nodes/TemperatureNode.js.html +0 -205
  61. package/coverage/lcov-report/src/nodes/ZigbeeConnectivityNode.js.html +0 -199
  62. package/coverage/lcov-report/src/nodes/index.html +0 -311
  63. package/coverage/lcov-report/src/ui/BaseUI.js.html +0 -484
  64. package/coverage/lcov-report/src/ui/BridgeConfigUI.js.html +0 -475
  65. package/coverage/lcov-report/src/ui/ButtonUI.js.html +0 -166
  66. package/coverage/lcov-report/src/ui/DevicePowerUI.js.html +0 -166
  67. package/coverage/lcov-report/src/ui/GroupedLightUI.js.html +0 -178
  68. package/coverage/lcov-report/src/ui/LightLevelUI.js.html +0 -166
  69. package/coverage/lcov-report/src/ui/LightUI.js.html +0 -178
  70. package/coverage/lcov-report/src/ui/MotionUI.js.html +0 -166
  71. package/coverage/lcov-report/src/ui/RelativeRotaryUI.js.html +0 -166
  72. package/coverage/lcov-report/src/ui/ResourceUI.js.html +0 -511
  73. package/coverage/lcov-report/src/ui/SceneUI.js.html +0 -160
  74. package/coverage/lcov-report/src/ui/ServiceUI.js.html +0 -868
  75. package/coverage/lcov-report/src/ui/TemperatureUI.js.html +0 -166
  76. package/coverage/lcov-report/src/ui/ZigbeeConnectivityUI.js.html +0 -166
  77. package/coverage/lcov-report/src/ui/index.html +0 -311
  78. package/coverage/lcov.info +0 -2217
  79. package/coverage/prettify.css +0 -1
  80. package/coverage/prettify.js +0 -2
  81. package/coverage/sort-arrow-sprite.png +0 -0
  82. package/coverage/sorter.js +0 -196
  83. package/coverage/src/RestApi.js.html +0 -499
  84. package/coverage/src/all.js.html +0 -208
  85. package/coverage/src/clip/ClipApi.js.html +0 -1183
  86. package/coverage/src/clip/Resource.js.html +0 -481
  87. package/coverage/src/clip/index.html +0 -131
  88. package/coverage/src/debug.js.html +0 -253
  89. package/coverage/src/files.js.html +0 -118
  90. package/coverage/src/index.html +0 -116
  91. package/coverage/src/nodes/BaseNode.js.html +0 -379
  92. package/coverage/src/nodes/BridgeConfigNode.js.html +0 -517
  93. package/coverage/src/nodes/ButtonNode.js.html +0 -238
  94. package/coverage/src/nodes/DevicePowerNode.js.html +0 -196
  95. package/coverage/src/nodes/GroupedLightNode.js.html +0 -223
  96. package/coverage/src/nodes/LightLevelNode.js.html +0 -202
  97. package/coverage/src/nodes/LightNode.js.html +0 -223
  98. package/coverage/src/nodes/MotionNode.js.html +0 -202
  99. package/coverage/src/nodes/RelativeRotaryNode.js.html +0 -250
  100. package/coverage/src/nodes/ResourceNode.js.html +0 -409
  101. package/coverage/src/nodes/SceneNode.js.html +0 -124
  102. package/coverage/src/nodes/ServiceNode.js.html +0 -124
  103. package/coverage/src/nodes/TemperatureNode.js.html +0 -202
  104. package/coverage/src/nodes/ZigbeeConnectivityNode.js.html +0 -199
  105. package/coverage/src/nodes/index.html +0 -311
  106. package/coverage/src/ui/BaseUI.js.html +0 -484
  107. package/coverage/src/ui/BridgeConfigUI.js.html +0 -475
  108. package/coverage/src/ui/ButtonUI.js.html +0 -166
  109. package/coverage/src/ui/DevicePowerUI.js.html +0 -166
  110. package/coverage/src/ui/GroupedLightUI.js.html +0 -178
  111. package/coverage/src/ui/LightLevelUI.js.html +0 -166
  112. package/coverage/src/ui/LightUI.js.html +0 -178
  113. package/coverage/src/ui/MotionUI.js.html +0 -166
  114. package/coverage/src/ui/RelativeRotaryUI.js.html +0 -166
  115. package/coverage/src/ui/ResourceUI.js.html +0 -511
  116. package/coverage/src/ui/SceneUI.js.html +0 -160
  117. package/coverage/src/ui/ServiceUI.js.html +0 -868
  118. package/coverage/src/ui/TemperatureUI.js.html +0 -166
  119. package/coverage/src/ui/ZigbeeConnectivityUI.js.html +0 -166
  120. package/coverage/src/ui/index.html +0 -311
  121. package/test/BaseUI_spec.js +0 -17
@@ -1,1096 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/clip/ClipApi.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">src/clip</a> ClipApi.js</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">0% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>0/175</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>0/57</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>0/37</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">0% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>0/161</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 oninput="onInput()" 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></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
404
- <span class="cline-any cline-no">&nbsp;</span>
405
- <span class="cline-any cline-no">&nbsp;</span>
406
- <span class="cline-any cline-neutral">&nbsp;</span>
407
- <span class="cline-any cline-no">&nbsp;</span>
408
- <span class="cline-any cline-neutral">&nbsp;</span>
409
- <span class="cline-any cline-neutral">&nbsp;</span>
410
- <span class="cline-any cline-no">&nbsp;</span>
411
- <span class="cline-any cline-no">&nbsp;</span>
412
- <span class="cline-any cline-no">&nbsp;</span>
413
- <span class="cline-any cline-no">&nbsp;</span>
414
- <span class="cline-any cline-neutral">&nbsp;</span>
415
- <span class="cline-any cline-neutral">&nbsp;</span>
416
- <span class="cline-any cline-neutral">&nbsp;</span>
417
- <span class="cline-any cline-neutral">&nbsp;</span>
418
- <span class="cline-any cline-neutral">&nbsp;</span>
419
- <span class="cline-any cline-neutral">&nbsp;</span>
420
- <span class="cline-any cline-neutral">&nbsp;</span>
421
- <span class="cline-any cline-neutral">&nbsp;</span>
422
- <span class="cline-any cline-neutral">&nbsp;</span>
423
- <span class="cline-any cline-neutral">&nbsp;</span>
424
- <span class="cline-any cline-neutral">&nbsp;</span>
425
- <span class="cline-any cline-neutral">&nbsp;</span>
426
- <span class="cline-any cline-neutral">&nbsp;</span>
427
- <span class="cline-any cline-neutral">&nbsp;</span>
428
- <span class="cline-any cline-neutral">&nbsp;</span>
429
- <span class="cline-any cline-no">&nbsp;</span>
430
- <span class="cline-any cline-neutral">&nbsp;</span>
431
- <span class="cline-any cline-neutral">&nbsp;</span>
432
- <span class="cline-any cline-neutral">&nbsp;</span>
433
- <span class="cline-any cline-neutral">&nbsp;</span>
434
- <span class="cline-any cline-neutral">&nbsp;</span>
435
- <span class="cline-any cline-neutral">&nbsp;</span>
436
- <span class="cline-any cline-neutral">&nbsp;</span>
437
- <span class="cline-any cline-neutral">&nbsp;</span>
438
- <span class="cline-any cline-neutral">&nbsp;</span>
439
- <span class="cline-any cline-neutral">&nbsp;</span>
440
- <span class="cline-any cline-neutral">&nbsp;</span>
441
- <span class="cline-any cline-neutral">&nbsp;</span>
442
- <span class="cline-any cline-neutral">&nbsp;</span>
443
- <span class="cline-any cline-neutral">&nbsp;</span>
444
- <span class="cline-any cline-neutral">&nbsp;</span>
445
- <span class="cline-any cline-neutral">&nbsp;</span>
446
- <span class="cline-any cline-neutral">&nbsp;</span>
447
- <span class="cline-any cline-neutral">&nbsp;</span>
448
- <span class="cline-any cline-neutral">&nbsp;</span>
449
- <span class="cline-any cline-neutral">&nbsp;</span>
450
- <span class="cline-any cline-neutral">&nbsp;</span>
451
- <span class="cline-any cline-neutral">&nbsp;</span>
452
- <span class="cline-any cline-neutral">&nbsp;</span>
453
- <span class="cline-any cline-neutral">&nbsp;</span>
454
- <span class="cline-any cline-neutral">&nbsp;</span>
455
- <span class="cline-any cline-neutral">&nbsp;</span>
456
- <span class="cline-any cline-neutral">&nbsp;</span>
457
- <span class="cline-any cline-no">&nbsp;</span>
458
- <span class="cline-any cline-no">&nbsp;</span>
459
- <span class="cline-any cline-no">&nbsp;</span>
460
- <span class="cline-any cline-no">&nbsp;</span>
461
- <span class="cline-any cline-no">&nbsp;</span>
462
- <span class="cline-any cline-no">&nbsp;</span>
463
- <span class="cline-any cline-no">&nbsp;</span>
464
- <span class="cline-any cline-neutral">&nbsp;</span>
465
- <span class="cline-any cline-no">&nbsp;</span>
466
- <span class="cline-any cline-no">&nbsp;</span>
467
- <span class="cline-any cline-no">&nbsp;</span>
468
- <span class="cline-any cline-no">&nbsp;</span>
469
- <span class="cline-any cline-neutral">&nbsp;</span>
470
- <span class="cline-any cline-no">&nbsp;</span>
471
- <span class="cline-any cline-neutral">&nbsp;</span>
472
- <span class="cline-any cline-no">&nbsp;</span>
473
- <span class="cline-any cline-no">&nbsp;</span>
474
- <span class="cline-any cline-neutral">&nbsp;</span>
475
- <span class="cline-any cline-neutral">&nbsp;</span>
476
- <span class="cline-any cline-neutral">&nbsp;</span>
477
- <span class="cline-any cline-neutral">&nbsp;</span>
478
- <span class="cline-any cline-no">&nbsp;</span>
479
- <span class="cline-any cline-no">&nbsp;</span>
480
- <span class="cline-any cline-no">&nbsp;</span>
481
- <span class="cline-any cline-no">&nbsp;</span>
482
- <span class="cline-any cline-no">&nbsp;</span>
483
- <span class="cline-any cline-no">&nbsp;</span>
484
- <span class="cline-any cline-no">&nbsp;</span>
485
- <span class="cline-any cline-neutral">&nbsp;</span>
486
- <span class="cline-any cline-neutral">&nbsp;</span>
487
- <span class="cline-any cline-neutral">&nbsp;</span>
488
- <span class="cline-any cline-neutral">&nbsp;</span>
489
- <span class="cline-any cline-neutral">&nbsp;</span>
490
- <span class="cline-any cline-no">&nbsp;</span>
491
- <span class="cline-any cline-no">&nbsp;</span>
492
- <span class="cline-any cline-no">&nbsp;</span>
493
- <span class="cline-any cline-no">&nbsp;</span>
494
- <span class="cline-any cline-neutral">&nbsp;</span>
495
- <span class="cline-any cline-no">&nbsp;</span>
496
- <span class="cline-any cline-no">&nbsp;</span>
497
- <span class="cline-any cline-no">&nbsp;</span>
498
- <span class="cline-any cline-no">&nbsp;</span>
499
- <span class="cline-any cline-neutral">&nbsp;</span>
500
- <span class="cline-any cline-neutral">&nbsp;</span>
501
- <span class="cline-any cline-no">&nbsp;</span>
502
- <span class="cline-any cline-neutral">&nbsp;</span>
503
- <span class="cline-any cline-neutral">&nbsp;</span>
504
- <span class="cline-any cline-neutral">&nbsp;</span>
505
- <span class="cline-any cline-no">&nbsp;</span>
506
- <span class="cline-any cline-no">&nbsp;</span>
507
- <span class="cline-any cline-no">&nbsp;</span>
508
- <span class="cline-any cline-neutral">&nbsp;</span>
509
- <span class="cline-any cline-neutral">&nbsp;</span>
510
- <span class="cline-any cline-no">&nbsp;</span>
511
- <span class="cline-any cline-no">&nbsp;</span>
512
- <span class="cline-any cline-neutral">&nbsp;</span>
513
- <span class="cline-any cline-neutral">&nbsp;</span>
514
- <span class="cline-any cline-no">&nbsp;</span>
515
- <span class="cline-any cline-neutral">&nbsp;</span>
516
- <span class="cline-any cline-neutral">&nbsp;</span>
517
- <span class="cline-any cline-neutral">&nbsp;</span>
518
- <span class="cline-any cline-neutral">&nbsp;</span>
519
- <span class="cline-any cline-neutral">&nbsp;</span>
520
- <span class="cline-any cline-no">&nbsp;</span>
521
- <span class="cline-any cline-neutral">&nbsp;</span>
522
- <span class="cline-any cline-neutral">&nbsp;</span>
523
- <span class="cline-any cline-neutral">&nbsp;</span>
524
- <span class="cline-any cline-neutral">&nbsp;</span>
525
- <span class="cline-any cline-neutral">&nbsp;</span>
526
- <span class="cline-any cline-no">&nbsp;</span>
527
- <span class="cline-any cline-no">&nbsp;</span>
528
- <span class="cline-any cline-neutral">&nbsp;</span>
529
- <span class="cline-any cline-no">&nbsp;</span>
530
- <span class="cline-any cline-neutral">&nbsp;</span>
531
- <span class="cline-any cline-neutral">&nbsp;</span>
532
- <span class="cline-any cline-neutral">&nbsp;</span>
533
- <span class="cline-any cline-neutral">&nbsp;</span>
534
- <span class="cline-any cline-no">&nbsp;</span>
535
- <span class="cline-any cline-no">&nbsp;</span>
536
- <span class="cline-any cline-no">&nbsp;</span>
537
- <span class="cline-any cline-no">&nbsp;</span>
538
- <span class="cline-any cline-neutral">&nbsp;</span>
539
- <span class="cline-any cline-no">&nbsp;</span>
540
- <span class="cline-any cline-no">&nbsp;</span>
541
- <span class="cline-any cline-no">&nbsp;</span>
542
- <span class="cline-any cline-no">&nbsp;</span>
543
- <span class="cline-any cline-neutral">&nbsp;</span>
544
- <span class="cline-any cline-neutral">&nbsp;</span>
545
- <span class="cline-any cline-no">&nbsp;</span>
546
- <span class="cline-any cline-neutral">&nbsp;</span>
547
- <span class="cline-any cline-no">&nbsp;</span>
548
- <span class="cline-any cline-no">&nbsp;</span>
549
- <span class="cline-any cline-no">&nbsp;</span>
550
- <span class="cline-any cline-no">&nbsp;</span>
551
- <span class="cline-any cline-no">&nbsp;</span>
552
- <span class="cline-any cline-neutral">&nbsp;</span>
553
- <span class="cline-any cline-neutral">&nbsp;</span>
554
- <span class="cline-any cline-no">&nbsp;</span>
555
- <span class="cline-any cline-neutral">&nbsp;</span>
556
- <span class="cline-any cline-neutral">&nbsp;</span>
557
- <span class="cline-any cline-neutral">&nbsp;</span>
558
- <span class="cline-any cline-no">&nbsp;</span>
559
- <span class="cline-any cline-no">&nbsp;</span>
560
- <span class="cline-any cline-neutral">&nbsp;</span>
561
- <span class="cline-any cline-no">&nbsp;</span>
562
- <span class="cline-any cline-neutral">&nbsp;</span>
563
- <span class="cline-any cline-neutral">&nbsp;</span>
564
- <span class="cline-any cline-neutral">&nbsp;</span>
565
- <span class="cline-any cline-neutral">&nbsp;</span>
566
- <span class="cline-any cline-no">&nbsp;</span>
567
- <span class="cline-any cline-no">&nbsp;</span>
568
- <span class="cline-any cline-neutral">&nbsp;</span>
569
- <span class="cline-any cline-neutral">&nbsp;</span>
570
- <span class="cline-any cline-neutral">&nbsp;</span>
571
- <span class="cline-any cline-no">&nbsp;</span>
572
- <span class="cline-any cline-no">&nbsp;</span>
573
- <span class="cline-any cline-neutral">&nbsp;</span>
574
- <span class="cline-any cline-neutral">&nbsp;</span>
575
- <span class="cline-any cline-neutral">&nbsp;</span>
576
- <span class="cline-any cline-no">&nbsp;</span>
577
- <span class="cline-any cline-no">&nbsp;</span>
578
- <span class="cline-any cline-neutral">&nbsp;</span>
579
- <span class="cline-any cline-neutral">&nbsp;</span>
580
- <span class="cline-any cline-neutral">&nbsp;</span>
581
- <span class="cline-any cline-no">&nbsp;</span>
582
- <span class="cline-any cline-no">&nbsp;</span>
583
- <span class="cline-any cline-neutral">&nbsp;</span>
584
- <span class="cline-any cline-neutral">&nbsp;</span>
585
- <span class="cline-any cline-neutral">&nbsp;</span>
586
- <span class="cline-any cline-no">&nbsp;</span>
587
- <span class="cline-any cline-neutral">&nbsp;</span>
588
- <span class="cline-any cline-neutral">&nbsp;</span>
589
- <span class="cline-any cline-neutral">&nbsp;</span>
590
- <span class="cline-any cline-no">&nbsp;</span>
591
- <span class="cline-any cline-no">&nbsp;</span>
592
- <span class="cline-any cline-neutral">&nbsp;</span>
593
- <span class="cline-any cline-neutral">&nbsp;</span>
594
- <span class="cline-any cline-neutral">&nbsp;</span>
595
- <span class="cline-any cline-no">&nbsp;</span>
596
- <span class="cline-any cline-no">&nbsp;</span>
597
- <span class="cline-any cline-neutral">&nbsp;</span>
598
- <span class="cline-any cline-neutral">&nbsp;</span>
599
- <span class="cline-any cline-neutral">&nbsp;</span>
600
- <span class="cline-any cline-no">&nbsp;</span>
601
- <span class="cline-any cline-neutral">&nbsp;</span>
602
- <span class="cline-any cline-no">&nbsp;</span>
603
- <span class="cline-any cline-no">&nbsp;</span>
604
- <span class="cline-any cline-no">&nbsp;</span>
605
- <span class="cline-any cline-neutral">&nbsp;</span>
606
- <span class="cline-any cline-neutral">&nbsp;</span>
607
- <span class="cline-any cline-no">&nbsp;</span>
608
- <span class="cline-any cline-no">&nbsp;</span>
609
- <span class="cline-any cline-no">&nbsp;</span>
610
- <span class="cline-any cline-no">&nbsp;</span>
611
- <span class="cline-any cline-no">&nbsp;</span>
612
- <span class="cline-any cline-neutral">&nbsp;</span>
613
- <span class="cline-any cline-neutral">&nbsp;</span>
614
- <span class="cline-any cline-no">&nbsp;</span>
615
- <span class="cline-any cline-neutral">&nbsp;</span>
616
- <span class="cline-any cline-neutral">&nbsp;</span>
617
- <span class="cline-any cline-no">&nbsp;</span>
618
- <span class="cline-any cline-neutral">&nbsp;</span>
619
- <span class="cline-any cline-neutral">&nbsp;</span>
620
- <span class="cline-any cline-neutral">&nbsp;</span>
621
- <span class="cline-any cline-no">&nbsp;</span>
622
- <span class="cline-any cline-no">&nbsp;</span>
623
- <span class="cline-any cline-no">&nbsp;</span>
624
- <span class="cline-any cline-no">&nbsp;</span>
625
- <span class="cline-any cline-no">&nbsp;</span>
626
- <span class="cline-any cline-neutral">&nbsp;</span>
627
- <span class="cline-any cline-neutral">&nbsp;</span>
628
- <span class="cline-any cline-no">&nbsp;</span>
629
- <span class="cline-any cline-no">&nbsp;</span>
630
- <span class="cline-any cline-no">&nbsp;</span>
631
- <span class="cline-any cline-neutral">&nbsp;</span>
632
- <span class="cline-any cline-neutral">&nbsp;</span>
633
- <span class="cline-any cline-no">&nbsp;</span>
634
- <span class="cline-any cline-no">&nbsp;</span>
635
- <span class="cline-any cline-no">&nbsp;</span>
636
- <span class="cline-any cline-no">&nbsp;</span>
637
- <span class="cline-any cline-neutral">&nbsp;</span>
638
- <span class="cline-any cline-neutral">&nbsp;</span>
639
- <span class="cline-any cline-neutral">&nbsp;</span>
640
- <span class="cline-any cline-no">&nbsp;</span>
641
- <span class="cline-any cline-no">&nbsp;</span>
642
- <span class="cline-any cline-no">&nbsp;</span>
643
- <span class="cline-any cline-neutral">&nbsp;</span>
644
- <span class="cline-any cline-no">&nbsp;</span>
645
- <span class="cline-any cline-neutral">&nbsp;</span>
646
- <span class="cline-any cline-neutral">&nbsp;</span>
647
- <span class="cline-any cline-neutral">&nbsp;</span>
648
- <span class="cline-any cline-neutral">&nbsp;</span>
649
- <span class="cline-any cline-neutral">&nbsp;</span>
650
- <span class="cline-any cline-no">&nbsp;</span>
651
- <span class="cline-any cline-neutral">&nbsp;</span>
652
- <span class="cline-any cline-no">&nbsp;</span>
653
- <span class="cline-any cline-no">&nbsp;</span>
654
- <span class="cline-any cline-no">&nbsp;</span>
655
- <span class="cline-any cline-no">&nbsp;</span>
656
- <span class="cline-any cline-neutral">&nbsp;</span>
657
- <span class="cline-any cline-neutral">&nbsp;</span>
658
- <span class="cline-any cline-no">&nbsp;</span>
659
- <span class="cline-any cline-no">&nbsp;</span>
660
- <span class="cline-any cline-no">&nbsp;</span>
661
- <span class="cline-any cline-no">&nbsp;</span>
662
- <span class="cline-any cline-neutral">&nbsp;</span>
663
- <span class="cline-any cline-neutral">&nbsp;</span>
664
- <span class="cline-any cline-no">&nbsp;</span>
665
- <span class="cline-any cline-no">&nbsp;</span>
666
- <span class="cline-any cline-neutral">&nbsp;</span>
667
- <span class="cline-any cline-neutral">&nbsp;</span>
668
- <span class="cline-any cline-neutral">&nbsp;</span>
669
- <span class="cline-any cline-no">&nbsp;</span>
670
- <span class="cline-any cline-no">&nbsp;</span>
671
- <span class="cline-any cline-no">&nbsp;</span>
672
- <span class="cline-any cline-no">&nbsp;</span>
673
- <span class="cline-any cline-no">&nbsp;</span>
674
- <span class="cline-any cline-no">&nbsp;</span>
675
- <span class="cline-any cline-no">&nbsp;</span>
676
- <span class="cline-any cline-no">&nbsp;</span>
677
- <span class="cline-any cline-neutral">&nbsp;</span>
678
- <span class="cline-any cline-neutral">&nbsp;</span>
679
- <span class="cline-any cline-neutral">&nbsp;</span>
680
- <span class="cline-any cline-neutral">&nbsp;</span>
681
- <span class="cline-any cline-no">&nbsp;</span>
682
- <span class="cline-any cline-no">&nbsp;</span>
683
- <span class="cline-any cline-no">&nbsp;</span>
684
- <span class="cline-any cline-no">&nbsp;</span>
685
- <span class="cline-any cline-neutral">&nbsp;</span>
686
- <span class="cline-any cline-neutral">&nbsp;</span>
687
- <span class="cline-any cline-no">&nbsp;</span>
688
- <span class="cline-any cline-no">&nbsp;</span>
689
- <span class="cline-any cline-neutral">&nbsp;</span>
690
- <span class="cline-any cline-neutral">&nbsp;</span>
691
- <span class="cline-any cline-neutral">&nbsp;</span>
692
- <span class="cline-any cline-no">&nbsp;</span>
693
- <span class="cline-any cline-neutral">&nbsp;</span>
694
- <span class="cline-any cline-no">&nbsp;</span>
695
- <span class="cline-any cline-no">&nbsp;</span>
696
- <span class="cline-any cline-no">&nbsp;</span>
697
- <span class="cline-any cline-no">&nbsp;</span>
698
- <span class="cline-any cline-no">&nbsp;</span>
699
- <span class="cline-any cline-no">&nbsp;</span>
700
- <span class="cline-any cline-no">&nbsp;</span>
701
- <span class="cline-any cline-no">&nbsp;</span>
702
- <span class="cline-any cline-neutral">&nbsp;</span>
703
- <span class="cline-any cline-neutral">&nbsp;</span>
704
- <span class="cline-any cline-neutral">&nbsp;</span>
705
- <span class="cline-any cline-neutral">&nbsp;</span>
706
- <span class="cline-any cline-neutral">&nbsp;</span>
707
- <span class="cline-any cline-no">&nbsp;</span>
708
- <span class="cline-any cline-no">&nbsp;</span>
709
- <span class="cline-any cline-no">&nbsp;</span>
710
- <span class="cline-any cline-no">&nbsp;</span>
711
- <span class="cline-any cline-neutral">&nbsp;</span>
712
- <span class="cline-any cline-neutral">&nbsp;</span>
713
- <span class="cline-any cline-no">&nbsp;</span>
714
- <span class="cline-any cline-no">&nbsp;</span>
715
- <span class="cline-any cline-neutral">&nbsp;</span>
716
- <span class="cline-any cline-neutral">&nbsp;</span>
717
- <span class="cline-any cline-neutral">&nbsp;</span>
718
- <span class="cline-any cline-no">&nbsp;</span>
719
- <span class="cline-any cline-neutral">&nbsp;</span>
720
- <span class="cline-any cline-no">&nbsp;</span>
721
- <span class="cline-any cline-no">&nbsp;</span>
722
- <span class="cline-any cline-no">&nbsp;</span>
723
- <span class="cline-any cline-no">&nbsp;</span>
724
- <span class="cline-any cline-no">&nbsp;</span>
725
- <span class="cline-any cline-no">&nbsp;</span>
726
- <span class="cline-any cline-neutral">&nbsp;</span>
727
- <span class="cline-any cline-neutral">&nbsp;</span>
728
- <span class="cline-any cline-neutral">&nbsp;</span>
729
- <span class="cline-any cline-no">&nbsp;</span>
730
- <span class="cline-any cline-no">&nbsp;</span>
731
- <span class="cline-any cline-no">&nbsp;</span>
732
- <span class="cline-any cline-no">&nbsp;</span>
733
- <span class="cline-any cline-neutral">&nbsp;</span>
734
- <span class="cline-any cline-neutral">&nbsp;</span>
735
- <span class="cline-any cline-no">&nbsp;</span>
736
- <span class="cline-any cline-no">&nbsp;</span>
737
- <span class="cline-any cline-neutral">&nbsp;</span>
738
- <span class="cline-any cline-neutral">&nbsp;</span>
739
- <span class="cline-any cline-neutral">&nbsp;</span>
740
- <span class="cline-any cline-no">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const events = <span class="cstat-no" title="statement not covered" >require('events');</span>
741
- const EventSource = <span class="cstat-no" title="statement not covered" >require('eventsource');</span>
742
- const RestApi = <span class="cstat-no" title="statement not covered" >require('../RestApi');</span>
743
- &nbsp;
744
- const Resource = <span class="cstat-no" title="statement not covered" >require('./Resource');</span>
745
- //const ServiceListResource = require('./ServiceListResource');
746
- &nbsp;
747
- const _error = <span class="cstat-no" title="statement not covered" >require('debug')('error').extend('ClipApi');</span>
748
- const _warn = <span class="cstat-no" title="statement not covered" >require('debug')('warn').extend('ClipApi');</span>
749
- const _info = <span class="cstat-no" title="statement not covered" >require('debug')('info').extend('ClipApi');</span>
750
- const _trace = <span class="cstat-no" title="statement not covered" >require('debug')('trace').extend('ClipApi');</span>
751
- &nbsp;
752
- class ClipApi extends events.EventEmitter {
753
- #restAPI;
754
- #resources;
755
- #startQ;
756
- #isStarted;
757
- #name;
758
- #ip;
759
- #key;
760
- &nbsp;
761
- #error;
762
- #warn;
763
- #info;
764
- #trace;
765
- &nbsp;
766
- #factory = <span class="cstat-no" title="statement not covered" >{</span>
767
- "behavior_script": Resource,
768
- "behavior_instance": Resource,
769
- "bridge": Resource,
770
- "bridge_home": Resource,
771
- "button": Resource,
772
- "device": Resource,
773
- "device_power": Resource,
774
- "entertainment": Resource,
775
- "entertainment_configuration": Resource,
776
- "geolocation": Resource,
777
- "grouped_light": Resource,
778
- "homekit": Resource,
779
- "light": Resource,
780
- "light_level": Resource,
781
- "matter": Resource,
782
- "motion": Resource,
783
- "relative_rotary": Resource,
784
- "room": Resource,
785
- "scene": Resource,
786
- "temperature": Resource,
787
- "zgp_connectivity": Resource,
788
- "zigbee_connectivity": Resource,
789
- "zigbee_device_discovery": Resource,
790
- "zone": Resource
791
- };
792
- &nbsp;
793
- <span class="fstat-no" title="function not covered" > co</span>nstructor(ip,key,name) {
794
- <span class="cstat-no" title="statement not covered" > super();</span>
795
- <span class="cstat-no" title="statement not covered" > this.#name = name;</span>
796
- <span class="cstat-no" title="statement not covered" > this.#ip = ip;</span>
797
- <span class="cstat-no" title="statement not covered" > this.#key = key;</span>
798
- <span class="cstat-no" title="statement not covered" > this.#resources = {};</span>
799
- <span class="cstat-no" title="statement not covered" > this.#startQ = [];</span>
800
- <span class="cstat-no" title="statement not covered" > this.#isStarted = false;</span>
801
- &nbsp;
802
- <span class="cstat-no" title="statement not covered" > this.#error = _error.extend("["+name+"]");</span>
803
- <span class="cstat-no" title="statement not covered" > this.#warn = _warn. extend("["+name+"]");</span>
804
- <span class="cstat-no" title="statement not covered" > this.#info = _info. extend("["+name+"]");</span>
805
- <span class="cstat-no" title="statement not covered" > this.#trace = _trace.extend("["+name+"]");</span>
806
- &nbsp;
807
- <span class="cstat-no" title="statement not covered" > this.#info("constructor("+ip+","+key+","+name+")");</span>
808
- &nbsp;
809
- var eventsurl = <span class="cstat-no" title="statement not covered" >"https://" + ip + "/eventstream/clip/v2";</span>
810
- <span class="cstat-no" title="statement not covered" > this.eventSource = new EventSource(eventsurl, {</span>
811
- headers: { 'hue-application-key': this.#key },
812
- https: { rejectUnauthorized: false },
813
- });
814
- &nbsp;
815
- <span class="cstat-no" title="statement not covered" > this.eventSource.onmessage = <span class="fstat-no" title="function not covered" >(s</span>treammessage) =&gt; {</span>
816
- const messages = <span class="cstat-no" title="statement not covered" >JSON.parse(streammessage.data);</span>
817
- <span class="cstat-no" title="statement not covered" > messages.forEach(<span class="fstat-no" title="function not covered" >(m</span>essage) =&gt; {</span>
818
- <span class="cstat-no" title="statement not covered" > message.data.forEach(<span class="fstat-no" title="function not covered" >(e</span>vent) =&gt; {</span>
819
- <span class="cstat-no" title="statement not covered" > this.#trace("constructor().onEvent(",event,")");</span>
820
- <span class="cstat-no" title="statement not covered" > if (Object.keys(this.#resources).includes(event.id)) {</span>
821
- <span class="cstat-no" title="statement not covered" > this.#resources[event.id].onEvent(event);</span>
822
- }
823
- });
824
- });
825
- };
826
- &nbsp;
827
- var instance = <span class="cstat-no" title="statement not covered" >this;</span>
828
- var handleResourceList = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >as</span>ync function(response) {</span>
829
- <span class="cstat-no" title="statement not covered" > response.data.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; {<span class="cstat-no" title="statement not covered" >constructor(",ip,",",key,")</span></span>
830
- <span class="cstat-no" title="statement not covered" > instance.#trace("constructor() found resource:", item);</span>
831
- &nbsp;
832
- <span class="cstat-no" title="statement not covered" > if (Object.keys(instance.#factory).includes(item.type)) {</span>
833
- <span class="cstat-no" title="statement not covered" > if (!instance.#isResourceRegistered(item.id)) {</span>
834
- var resource = <span class="cstat-no" title="statement not covered" >new instance.#factory[item.type](item,instance);</span>
835
- <span class="cstat-no" title="statement not covered" > instance.#registerResource(resource);</span>
836
- }
837
- } else {
838
- <span class="cstat-no" title="statement not covered" > instance.#warn("constructor(): Missing factory for type", item.type);</span>
839
- }
840
- });
841
- &nbsp;
842
- <span class="cstat-no" title="statement not covered" > instance.#startQ.forEach(<span class="fstat-no" title="function not covered" >re</span>source =&gt; <span class="cstat-no" title="statement not covered" >resource.start(instance.#resources[resource.rid()]))</span>;</span>
843
- <span class="cstat-no" title="statement not covered" > instance.#isStarted = true;</span>
844
- <span class="cstat-no" title="statement not covered" > instance.#startQ = null;</span>
845
- };
846
- &nbsp;
847
- var handleError = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >as</span>ync function(error) {</span>
848
- <span class="cstat-no" title="statement not covered" > instance.#error("constructor() error:", error);</span>
849
- }
850
- &nbsp;
851
- <span class="cstat-no" title="statement not covered" > this.#restAPI = new RestApi(</span>
852
- instance.#name,
853
- instance.#ip,
854
- { tokensPerInterval: 3, interval: "second" },
855
- {"hue-application-key": instance.#key}
856
- );
857
- <span class="cstat-no" title="statement not covered" > this.#restAPI.get("/clip/v2/resource")</span>
858
- .then(handleResourceList)
859
- .catch(handleError);
860
- }
861
- &nbsp;
862
- <span class="fstat-no" title="function not covered" > re</span>questStartup(resource) {
863
- <span class="cstat-no" title="statement not covered" > if (this.#isStarted) {</span>
864
- <span class="cstat-no" title="statement not covered" > resource.start();</span>
865
- } else {
866
- <span class="cstat-no" title="statement not covered" > this.#startQ.push(resource);</span>
867
- }
868
- }
869
- &nbsp;
870
- <span class="fstat-no" title="function not covered" > de</span>structor() {
871
- <span class="cstat-no" title="statement not covered" > this.#info("destructor()");</span>
872
- <span class="cstat-no" title="statement not covered" > this.emit('stopped');</span>
873
- <span class="cstat-no" title="statement not covered" > this.removeAllListeners();</span>
874
- <span class="cstat-no" title="statement not covered" > this.#restAPI.destructor();</span>
875
- &nbsp;
876
- <span class="cstat-no" title="statement not covered" > if (this.eventSource != null) {</span>
877
- <span class="cstat-no" title="statement not covered" > this.eventSource.onmessage = null;</span>
878
- <span class="cstat-no" title="statement not covered" > this.eventSource.close();</span>
879
- <span class="cstat-no" title="statement not covered" > delete this.eventSource;</span>
880
- };
881
- &nbsp;
882
- <span class="cstat-no" title="statement not covered" > this.eventSource = null;</span>
883
- &nbsp;
884
- var instance = <span class="cstat-no" title="statement not covered" >this;</span>
885
- <span class="cstat-no" title="statement not covered" > Object.keys(this.#resources).forEach(<span class="fstat-no" title="function not covered" >(i</span>d) =&gt; {</span>
886
- var resource = <span class="cstat-no" title="statement not covered" >instance.resource[id];</span>
887
- <span class="cstat-no" title="statement not covered" > instance.#unregisterResource(resource);</span>
888
- <span class="cstat-no" title="statement not covered" > resource.destructor();</span>
889
- });
890
- &nbsp;
891
- <span class="cstat-no" title="statement not covered" > this.resources = null;</span>
892
- }
893
- &nbsp;
894
- <span class="fstat-no" title="function not covered" > ge</span>tResource(rid) {
895
- <span class="cstat-no" title="statement not covered" > if (this.#isResourceRegistered(rid)) {</span>
896
- <span class="cstat-no" title="statement not covered" > return this.#resources[rid];</span>
897
- } else {
898
- <span class="cstat-no" title="statement not covered" > this.#warn("getResource(",rid,"): Resource not found.");</span>
899
- }
900
- }
901
- &nbsp;
902
- <span class="fstat-no" title="function not covered" > ge</span>t(rtype,rid) {
903
- <span class="cstat-no" title="statement not covered" > this.#trace("get(",rtype,",",rid,")");</span>
904
- <span class="cstat-no" title="statement not covered" > return this.#restAPI.get("/clip/v2/resource/" + rtype + "/" + rid);</span>
905
- }
906
- &nbsp;
907
- <span class="fstat-no" title="function not covered" > pu</span>t(rtype,rid,data) {
908
- <span class="cstat-no" title="statement not covered" > this.#trace("put(",rtype,",",rid,",",data,")");</span>
909
- <span class="cstat-no" title="statement not covered" > return this.#restAPI.put("/clip/v2/resource/" + rtype + "/" + rid, data);</span>
910
- }
911
- &nbsp;
912
- <span class="fstat-no" title="function not covered" > po</span>st(rtype,rid,data) {
913
- <span class="cstat-no" title="statement not covered" > this.#trace("post(",rtype,",",rid,",",data,")");</span>
914
- <span class="cstat-no" title="statement not covered" > return this.#restAPI.post("/clip/v2/resource/" + rtype + "/" + rid, data);</span>
915
- }
916
- &nbsp;
917
- <span class="fstat-no" title="function not covered" > de</span>lete(rtype,rid,data) {
918
- <span class="cstat-no" title="statement not covered" > this.#trace("delete(",rtype,",",rid,",",data,")");</span>
919
- <span class="cstat-no" title="statement not covered" > return this.#restAPI.delete("/clip/v2/resource/" + rtype + "/" + rid, data);</span>
920
- }
921
- &nbsp;
922
- #isResourceRegistered(uuid) {
923
- <span class="cstat-no" title="statement not covered" > return Object.keys(this.#resources).includes(uuid);</span>
924
- }
925
- &nbsp;
926
- #registerResource(resource) {
927
- <span class="cstat-no" title="statement not covered" > this.#trace("#registerResource(",resource.id(),")");</span>
928
- <span class="cstat-no" title="statement not covered" > this.#resources[resource.rid()] = resource;</span>
929
- }
930
- &nbsp;
931
- #unregisterResource(resource) {
932
- <span class="cstat-no" title="statement not covered" > this.#trace("#unregisterResource()");</span>
933
- <span class="cstat-no" title="statement not covered" > this.#resources.remove(resource.rid());</span>
934
- }
935
- &nbsp;
936
- <span class="fstat-no" title="function not covered" > ge</span>tSortedServicesById(uuid) {
937
- <span class="cstat-no" title="statement not covered" > this.#trace("getSortedServicesById(" + uuid + "," + rtype + ")");</span>
938
- &nbsp;
939
- var services = <span class="cstat-no" title="statement not covered" >[];</span>
940
- <span class="cstat-no" title="statement not covered" > Object.values(this.#resources[uuid].services).forEach(<span class="fstat-no" title="function not covered" >se</span>rvice =&gt; {</span>
941
- <span class="cstat-no" title="statement not covered" > services.push(service);</span>
942
- });
943
- &nbsp;
944
- <span class="cstat-no" title="statement not covered" > if (services) {</span>
945
- <span class="cstat-no" title="statement not covered" > services.sort(<span class="fstat-no" title="function not covered" >fu</span>nction (a, b) {</span>
946
- <span class="cstat-no" title="statement not covered" > if (a.typeName() &gt; b.typeName()) <span class="cstat-no" title="statement not covered" >return 1;</span></span>
947
- <span class="cstat-no" title="statement not covered" > if (a.typeName() &lt; b.typeName()) <span class="cstat-no" title="statement not covered" >return -1;</span></span>
948
- <span class="cstat-no" title="statement not covered" > return 0;</span>
949
- });
950
- }
951
- <span class="cstat-no" title="statement not covered" > services.unshift(this.#resources[uuid]);</span>
952
- &nbsp;
953
- //this.#trace("getSortedServicesById(" + uuid + "," + rtype + ") services:",services);
954
- <span class="cstat-no" title="statement not covered" > return services;</span>
955
- }
956
- &nbsp;
957
- <span class="fstat-no" title="function not covered" > ge</span>tSortedResourcesByTypeAndModel(type,models) {
958
- <span class="cstat-no" title="statement not covered" > this.#trace("getSortedResourcesByTypeAndModel(",type,",",models,")");</span>
959
- var instance = <span class="cstat-no" title="statement not covered" >this;</span>
960
- var keys = <span class="cstat-no" title="statement not covered" >Object.keys(instance.#resources).filter(<span class="fstat-no" title="function not covered" >fu</span>nction(key) {</span>
961
- var value = <span class="cstat-no" title="statement not covered" >instance.resources[key];</span>
962
- <span class="cstat-no" title="statement not covered" > return ((value.rtype() == type))</span>
963
- });
964
- &nbsp;
965
- var result = <span class="cstat-no" title="statement not covered" >[]</span>
966
- <span class="cstat-no" title="statement not covered" > keys.forEach(<span class="fstat-no" title="function not covered" >(k</span>ey) =&gt; {</span>
967
- <span class="cstat-no" title="statement not covered" > result.push(instance.#resources[key]);</span>
968
- });
969
- &nbsp;
970
- <span class="cstat-no" title="statement not covered" > result.sort(<span class="fstat-no" title="function not covered" >fu</span>nction (a, b) {</span>
971
- <span class="cstat-no" title="statement not covered" > if (a.id() &gt; b.id()) <span class="cstat-no" title="statement not covered" >return 1;</span></span>
972
- <span class="cstat-no" title="statement not covered" > if (a.id() &lt; b.id()) <span class="cstat-no" title="statement not covered" >return -1;</span></span>
973
- <span class="cstat-no" title="statement not covered" > return 0;</span>
974
- });
975
- &nbsp;
976
- //this.#trace("getSortedResourcesByTypeAndModel(",type,",",models,") options:",options);
977
- <span class="cstat-no" title="statement not covered" > return result.filter(<span class="fstat-no" title="function not covered" >fu</span>nction(resource) {</span>
978
- <span class="cstat-no" title="statement not covered" > if ((models) &amp;&amp; (resource.item.product_data) &amp;&amp; (resource.item.product_data.model_id)) {</span>
979
- <span class="cstat-no" title="statement not covered" > return models.includes(resource.item.product_data.model_id);</span>
980
- } else {
981
- <span class="cstat-no" title="statement not covered" > return true;</span>
982
- }
983
- });
984
- }
985
- &nbsp;
986
- <span class="fstat-no" title="function not covered" > ge</span>tSortedResourceOptions(type, models) {
987
- <span class="cstat-no" title="statement not covered" > this.#trace("getSortedOptions(" + type + "," + models + ")");</span>
988
- &nbsp;
989
- var options = <span class="cstat-no" title="statement not covered" >[];</span>
990
- var resources = <span class="cstat-no" title="statement not covered" >this.getSortedResourcesByTypeAndModel(type,models);</span>
991
- <span class="cstat-no" title="statement not covered" > resources.forEach(<span class="fstat-no" title="function not covered" >(r</span>esource) =&gt; {</span>
992
- <span class="cstat-no" title="statement not covered" > options.push({ value: resource.rid(), label: (resource.name()? resource.name() : resource.id()) });</span>
993
- });
994
- &nbsp;
995
- <span class="cstat-no" title="statement not covered" > options.sort(<span class="fstat-no" title="function not covered" >fu</span>nction (a, b) {</span>
996
- <span class="cstat-no" title="statement not covered" > if (a.label &gt; b.label) <span class="cstat-no" title="statement not covered" >return 1;</span></span>
997
- <span class="cstat-no" title="statement not covered" > if (a.label &lt; b.label) <span class="cstat-no" title="statement not covered" >return -1;</span></span>
998
- <span class="cstat-no" title="statement not covered" > return 0;</span>
999
- });
1000
- &nbsp;
1001
- <span class="cstat-no" title="statement not covered" > this.#trace("getSortedOptions(" + type + "," + models + ") options:",options);</span>
1002
- <span class="cstat-no" title="statement not covered" > return options;</span>
1003
- }
1004
- &nbsp;
1005
- <span class="fstat-no" title="function not covered" > ge</span>tSortedTypeOptions() {
1006
- <span class="cstat-no" title="statement not covered" > this.#trace("getSortedTypeOptions()");</span>
1007
- var options = <span class="cstat-no" title="statement not covered" >[];</span>
1008
- var rtypes = <span class="cstat-no" title="statement not covered" >[];</span>
1009
- <span class="cstat-no" title="statement not covered" > Object.values(this.#resources).forEach(<span class="fstat-no" title="function not covered" >(r</span>esource)=&gt;{</span>
1010
- <span class="cstat-no" title="statement not covered" > if (resource.owner()) {</span>
1011
- <span class="cstat-no" title="statement not covered" > if (!rtypes.includes(resource.rtype())) {</span>
1012
- <span class="cstat-no" title="statement not covered" > rtypes.push(resource.rtype());</span>
1013
- <span class="cstat-no" title="statement not covered" > options.push({ value: resource.rtype(), label: resource.rtype()});</span>
1014
- }
1015
- }
1016
- });
1017
- &nbsp;
1018
- <span class="cstat-no" title="statement not covered" > options.sort(<span class="fstat-no" title="function not covered" >fu</span>nction (a, b) {</span>
1019
- <span class="cstat-no" title="statement not covered" > if (a.label &gt; b.label) <span class="cstat-no" title="statement not covered" >return 1;</span></span>
1020
- <span class="cstat-no" title="statement not covered" > if (a.label &lt; b.label) <span class="cstat-no" title="statement not covered" >return -1;</span></span>
1021
- <span class="cstat-no" title="statement not covered" > return 0;</span>
1022
- });
1023
- &nbsp;
1024
- <span class="cstat-no" title="statement not covered" > this.#trace("getSortedTypeOptions() options:",options);</span>
1025
- <span class="cstat-no" title="statement not covered" > return options;</span>
1026
- }
1027
- &nbsp;
1028
- <span class="fstat-no" title="function not covered" > ge</span>tSortedOwnerOptions(rtype) {
1029
- <span class="cstat-no" title="statement not covered" > this.#trace("getSortedOwnerOptions(" + rtype + ")");</span>
1030
- &nbsp;
1031
- var options = <span class="cstat-no" title="statement not covered" >[];</span>
1032
- var rids = <span class="cstat-no" title="statement not covered" >[];</span>
1033
- <span class="cstat-no" title="statement not covered" > Object.values(this.#resources).forEach(<span class="fstat-no" title="function not covered" >(r</span>esource)=&gt;{</span>
1034
- <span class="cstat-no" title="statement not covered" > if (resource.services) {</span>
1035
- <span class="cstat-no" title="statement not covered" > Object.values(resource.services()).forEach(<span class="fstat-no" title="function not covered" >(s</span>ervice) =&gt; {</span>
1036
- <span class="cstat-no" title="statement not covered" > if ((service.rtype() == rtype) &amp;&amp; (!rids.includes(resource.rid()))) {</span>
1037
- <span class="cstat-no" title="statement not covered" > rids.push(resource.rid());</span>
1038
- <span class="cstat-no" title="statement not covered" > options.push({ value: resource.rid(), label: resource.name() });</span>
1039
- }
1040
- });
1041
- }
1042
- });
1043
- &nbsp;
1044
- <span class="cstat-no" title="statement not covered" > options.sort(<span class="fstat-no" title="function not covered" >fu</span>nction (a, b) {</span>
1045
- <span class="cstat-no" title="statement not covered" > if (a.label &gt; b.label) <span class="cstat-no" title="statement not covered" >return 1;</span></span>
1046
- <span class="cstat-no" title="statement not covered" > if (a.label &lt; b.label) <span class="cstat-no" title="statement not covered" >return -1;</span></span>
1047
- <span class="cstat-no" title="statement not covered" > return 0;</span>
1048
- });
1049
- &nbsp;
1050
- <span class="cstat-no" title="statement not covered" > this.#trace("getSortedOwnerOptions(" + rtype + ") options:",options);</span>
1051
- <span class="cstat-no" title="statement not covered" > return options;</span>
1052
- }
1053
- &nbsp;
1054
- <span class="fstat-no" title="function not covered" > ge</span>tSortedServiceOptions(uuid,rtype) {
1055
- <span class="cstat-no" title="statement not covered" > this.#trace("getSortedServiceOptions("+ uuid + "," + rtype + ")");</span>
1056
- &nbsp;
1057
- var options = <span class="cstat-no" title="statement not covered" >[];</span>
1058
- var owner = <span class="cstat-no" title="statement not covered" >this.#resources[uuid];</span>
1059
- var services = <span class="cstat-no" title="statement not covered" >owner.services();</span>
1060
- <span class="cstat-no" title="statement not covered" > Object.values(services).forEach(<span class="fstat-no" title="function not covered" >(s</span>ervice) =&gt; {</span>
1061
- <span class="cstat-no" title="statement not covered" > if (service.rtype() == rtype) {</span>
1062
- <span class="cstat-no" title="statement not covered" > options.push({ value: service.rid(), label: service.typeName() });</span>
1063
- }
1064
- });
1065
- &nbsp;
1066
- <span class="cstat-no" title="statement not covered" > options.sort(<span class="fstat-no" title="function not covered" >fu</span>nction (a, b) {</span>
1067
- <span class="cstat-no" title="statement not covered" > if (a.label &gt; b.label) <span class="cstat-no" title="statement not covered" >return 1;</span></span>
1068
- <span class="cstat-no" title="statement not covered" > if (a.label &lt; b.label) <span class="cstat-no" title="statement not covered" >return -1;</span></span>
1069
- <span class="cstat-no" title="statement not covered" > return 0;</span>
1070
- });
1071
- &nbsp;
1072
- <span class="cstat-no" title="statement not covered" > this.#trace("getSortedServiceOptions("+ uuid + "," + rtype + ") options:",options);</span>
1073
- <span class="cstat-no" title="statement not covered" > return options;</span>
1074
- }
1075
- }
1076
- &nbsp;
1077
- <span class="cstat-no" title="statement not covered" >module.exports = ClipApi</span></pre></td></tr></table></pre>
1078
-
1079
- <div class='push'></div><!-- for sticky footer -->
1080
- </div><!-- /wrapper -->
1081
- <div class='footer quiet pad2 space-top1 center small'>
1082
- Code coverage generated by
1083
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1084
- at 2022-12-04T16:46:19.032Z
1085
- </div>
1086
- <script src="../../prettify.js"></script>
1087
- <script>
1088
- window.onload = function () {
1089
- prettyPrint();
1090
- };
1091
- </script>
1092
- <script src="../../sorter.js"></script>
1093
- <script src="../../block-navigation.js"></script>
1094
- </body>
1095
- </html>
1096
-