@pixwel/pixwel-sdk 2.1.14 → 2.1.16

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 (38) hide show
  1. package/.vs/slnx.sqlite +0 -0
  2. package/coverage/clover.xml +628 -0
  3. package/coverage/coverage-final.json +16 -0
  4. package/coverage/lcov-report/Ass.js.html +651 -0
  5. package/coverage/lcov-report/Asset.js.html +129 -0
  6. package/coverage/lcov-report/AssetType.js.html +102 -0
  7. package/coverage/lcov-report/Encode.js.html +102 -0
  8. package/coverage/lcov-report/File.js.html +102 -0
  9. package/coverage/lcov-report/Filename.js.html +96 -0
  10. package/coverage/lcov-report/Ingest.js.html +2061 -0
  11. package/coverage/lcov-report/IngestFile.js.html +87 -0
  12. package/coverage/lcov-report/IngestFileDrop.js.html +540 -0
  13. package/coverage/lcov-report/Model.js.html +825 -0
  14. package/coverage/lcov-report/Order.js.html +198 -0
  15. package/coverage/lcov-report/Srt.js.html +333 -0
  16. package/coverage/lcov-report/Sub.js.html +177 -0
  17. package/coverage/lcov-report/Tag.js.html +102 -0
  18. package/coverage/lcov-report/TimeFormat.js.html +210 -0
  19. package/coverage/lcov-report/base.css +223 -0
  20. package/coverage/lcov-report/block-navigation.js +63 -0
  21. package/coverage/lcov-report/fileType.js.html +192 -0
  22. package/coverage/lcov-report/index.html +279 -0
  23. package/coverage/lcov-report/lib/Filename.js.html +720 -0
  24. package/coverage/lcov-report/lib/index.html +97 -0
  25. package/coverage/lcov-report/prettify.css +1 -0
  26. package/coverage/lcov-report/prettify.js +1 -0
  27. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  28. package/coverage/lcov-report/sorter.js +158 -0
  29. package/coverage/lcov-report/test/index.html +97 -0
  30. package/coverage/lcov-report/test/mocks.js.html +423 -0
  31. package/coverage/lcov.info +1289 -0
  32. package/dist/index.js +0 -9
  33. package/dist/src/Ingest.js +6 -2
  34. package/index.js +0 -1
  35. package/npm-update.sh +8 -0
  36. package/package.json +1 -1
  37. package/src/Ingest.js +7 -2
  38. package/test/Ingest.spec.js +42 -0
@@ -0,0 +1,2061 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <title>Code coverage report for Ingest.js</title>
5
+ <meta charset="utf-8" />
6
+ <link rel="stylesheet" href="prettify.css" />
7
+ <link rel="stylesheet" href="base.css" />
8
+ <meta name="viewport" content="width=device-width, initial-scale=1">
9
+ <style type='text/css'>
10
+ .coverage-summary .sorter {
11
+ background-image: url(sort-arrow-sprite.png);
12
+ }
13
+ </style>
14
+ </head>
15
+ <body>
16
+ <div class='wrapper'>
17
+ <div class='pad1'>
18
+ <h1>
19
+ <a href="index.html">All files</a> Ingest.js
20
+ </h1>
21
+ <div class='clearfix'>
22
+ <div class='fl pad1y space-right2'>
23
+ <span class="strong">86.99% </span>
24
+ <span class="quiet">Statements</span>
25
+ <span class='fraction'>234/269</span>
26
+ </div>
27
+ <div class='fl pad1y space-right2'>
28
+ <span class="strong">84.81% </span>
29
+ <span class="quiet">Branches</span>
30
+ <span class='fraction'>201/237</span>
31
+ </div>
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">86.36% </span>
34
+ <span class="quiet">Functions</span>
35
+ <span class='fraction'>19/22</span>
36
+ </div>
37
+ <div class='fl pad1y space-right2'>
38
+ <span class="strong">86.94% </span>
39
+ <span class="quiet">Lines</span>
40
+ <span class='fraction'>233/268</span>
41
+ </div>
42
+ </div>
43
+ <p class="quiet">
44
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
45
+ </p>
46
+ </div>
47
+ <div class='status-line high'></div>
48
+ <pre><table class="coverage">
49
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
50
+ <a name='L2'></a><a href='#L2'>2</a>
51
+ <a name='L3'></a><a href='#L3'>3</a>
52
+ <a name='L4'></a><a href='#L4'>4</a>
53
+ <a name='L5'></a><a href='#L5'>5</a>
54
+ <a name='L6'></a><a href='#L6'>6</a>
55
+ <a name='L7'></a><a href='#L7'>7</a>
56
+ <a name='L8'></a><a href='#L8'>8</a>
57
+ <a name='L9'></a><a href='#L9'>9</a>
58
+ <a name='L10'></a><a href='#L10'>10</a>
59
+ <a name='L11'></a><a href='#L11'>11</a>
60
+ <a name='L12'></a><a href='#L12'>12</a>
61
+ <a name='L13'></a><a href='#L13'>13</a>
62
+ <a name='L14'></a><a href='#L14'>14</a>
63
+ <a name='L15'></a><a href='#L15'>15</a>
64
+ <a name='L16'></a><a href='#L16'>16</a>
65
+ <a name='L17'></a><a href='#L17'>17</a>
66
+ <a name='L18'></a><a href='#L18'>18</a>
67
+ <a name='L19'></a><a href='#L19'>19</a>
68
+ <a name='L20'></a><a href='#L20'>20</a>
69
+ <a name='L21'></a><a href='#L21'>21</a>
70
+ <a name='L22'></a><a href='#L22'>22</a>
71
+ <a name='L23'></a><a href='#L23'>23</a>
72
+ <a name='L24'></a><a href='#L24'>24</a>
73
+ <a name='L25'></a><a href='#L25'>25</a>
74
+ <a name='L26'></a><a href='#L26'>26</a>
75
+ <a name='L27'></a><a href='#L27'>27</a>
76
+ <a name='L28'></a><a href='#L28'>28</a>
77
+ <a name='L29'></a><a href='#L29'>29</a>
78
+ <a name='L30'></a><a href='#L30'>30</a>
79
+ <a name='L31'></a><a href='#L31'>31</a>
80
+ <a name='L32'></a><a href='#L32'>32</a>
81
+ <a name='L33'></a><a href='#L33'>33</a>
82
+ <a name='L34'></a><a href='#L34'>34</a>
83
+ <a name='L35'></a><a href='#L35'>35</a>
84
+ <a name='L36'></a><a href='#L36'>36</a>
85
+ <a name='L37'></a><a href='#L37'>37</a>
86
+ <a name='L38'></a><a href='#L38'>38</a>
87
+ <a name='L39'></a><a href='#L39'>39</a>
88
+ <a name='L40'></a><a href='#L40'>40</a>
89
+ <a name='L41'></a><a href='#L41'>41</a>
90
+ <a name='L42'></a><a href='#L42'>42</a>
91
+ <a name='L43'></a><a href='#L43'>43</a>
92
+ <a name='L44'></a><a href='#L44'>44</a>
93
+ <a name='L45'></a><a href='#L45'>45</a>
94
+ <a name='L46'></a><a href='#L46'>46</a>
95
+ <a name='L47'></a><a href='#L47'>47</a>
96
+ <a name='L48'></a><a href='#L48'>48</a>
97
+ <a name='L49'></a><a href='#L49'>49</a>
98
+ <a name='L50'></a><a href='#L50'>50</a>
99
+ <a name='L51'></a><a href='#L51'>51</a>
100
+ <a name='L52'></a><a href='#L52'>52</a>
101
+ <a name='L53'></a><a href='#L53'>53</a>
102
+ <a name='L54'></a><a href='#L54'>54</a>
103
+ <a name='L55'></a><a href='#L55'>55</a>
104
+ <a name='L56'></a><a href='#L56'>56</a>
105
+ <a name='L57'></a><a href='#L57'>57</a>
106
+ <a name='L58'></a><a href='#L58'>58</a>
107
+ <a name='L59'></a><a href='#L59'>59</a>
108
+ <a name='L60'></a><a href='#L60'>60</a>
109
+ <a name='L61'></a><a href='#L61'>61</a>
110
+ <a name='L62'></a><a href='#L62'>62</a>
111
+ <a name='L63'></a><a href='#L63'>63</a>
112
+ <a name='L64'></a><a href='#L64'>64</a>
113
+ <a name='L65'></a><a href='#L65'>65</a>
114
+ <a name='L66'></a><a href='#L66'>66</a>
115
+ <a name='L67'></a><a href='#L67'>67</a>
116
+ <a name='L68'></a><a href='#L68'>68</a>
117
+ <a name='L69'></a><a href='#L69'>69</a>
118
+ <a name='L70'></a><a href='#L70'>70</a>
119
+ <a name='L71'></a><a href='#L71'>71</a>
120
+ <a name='L72'></a><a href='#L72'>72</a>
121
+ <a name='L73'></a><a href='#L73'>73</a>
122
+ <a name='L74'></a><a href='#L74'>74</a>
123
+ <a name='L75'></a><a href='#L75'>75</a>
124
+ <a name='L76'></a><a href='#L76'>76</a>
125
+ <a name='L77'></a><a href='#L77'>77</a>
126
+ <a name='L78'></a><a href='#L78'>78</a>
127
+ <a name='L79'></a><a href='#L79'>79</a>
128
+ <a name='L80'></a><a href='#L80'>80</a>
129
+ <a name='L81'></a><a href='#L81'>81</a>
130
+ <a name='L82'></a><a href='#L82'>82</a>
131
+ <a name='L83'></a><a href='#L83'>83</a>
132
+ <a name='L84'></a><a href='#L84'>84</a>
133
+ <a name='L85'></a><a href='#L85'>85</a>
134
+ <a name='L86'></a><a href='#L86'>86</a>
135
+ <a name='L87'></a><a href='#L87'>87</a>
136
+ <a name='L88'></a><a href='#L88'>88</a>
137
+ <a name='L89'></a><a href='#L89'>89</a>
138
+ <a name='L90'></a><a href='#L90'>90</a>
139
+ <a name='L91'></a><a href='#L91'>91</a>
140
+ <a name='L92'></a><a href='#L92'>92</a>
141
+ <a name='L93'></a><a href='#L93'>93</a>
142
+ <a name='L94'></a><a href='#L94'>94</a>
143
+ <a name='L95'></a><a href='#L95'>95</a>
144
+ <a name='L96'></a><a href='#L96'>96</a>
145
+ <a name='L97'></a><a href='#L97'>97</a>
146
+ <a name='L98'></a><a href='#L98'>98</a>
147
+ <a name='L99'></a><a href='#L99'>99</a>
148
+ <a name='L100'></a><a href='#L100'>100</a>
149
+ <a name='L101'></a><a href='#L101'>101</a>
150
+ <a name='L102'></a><a href='#L102'>102</a>
151
+ <a name='L103'></a><a href='#L103'>103</a>
152
+ <a name='L104'></a><a href='#L104'>104</a>
153
+ <a name='L105'></a><a href='#L105'>105</a>
154
+ <a name='L106'></a><a href='#L106'>106</a>
155
+ <a name='L107'></a><a href='#L107'>107</a>
156
+ <a name='L108'></a><a href='#L108'>108</a>
157
+ <a name='L109'></a><a href='#L109'>109</a>
158
+ <a name='L110'></a><a href='#L110'>110</a>
159
+ <a name='L111'></a><a href='#L111'>111</a>
160
+ <a name='L112'></a><a href='#L112'>112</a>
161
+ <a name='L113'></a><a href='#L113'>113</a>
162
+ <a name='L114'></a><a href='#L114'>114</a>
163
+ <a name='L115'></a><a href='#L115'>115</a>
164
+ <a name='L116'></a><a href='#L116'>116</a>
165
+ <a name='L117'></a><a href='#L117'>117</a>
166
+ <a name='L118'></a><a href='#L118'>118</a>
167
+ <a name='L119'></a><a href='#L119'>119</a>
168
+ <a name='L120'></a><a href='#L120'>120</a>
169
+ <a name='L121'></a><a href='#L121'>121</a>
170
+ <a name='L122'></a><a href='#L122'>122</a>
171
+ <a name='L123'></a><a href='#L123'>123</a>
172
+ <a name='L124'></a><a href='#L124'>124</a>
173
+ <a name='L125'></a><a href='#L125'>125</a>
174
+ <a name='L126'></a><a href='#L126'>126</a>
175
+ <a name='L127'></a><a href='#L127'>127</a>
176
+ <a name='L128'></a><a href='#L128'>128</a>
177
+ <a name='L129'></a><a href='#L129'>129</a>
178
+ <a name='L130'></a><a href='#L130'>130</a>
179
+ <a name='L131'></a><a href='#L131'>131</a>
180
+ <a name='L132'></a><a href='#L132'>132</a>
181
+ <a name='L133'></a><a href='#L133'>133</a>
182
+ <a name='L134'></a><a href='#L134'>134</a>
183
+ <a name='L135'></a><a href='#L135'>135</a>
184
+ <a name='L136'></a><a href='#L136'>136</a>
185
+ <a name='L137'></a><a href='#L137'>137</a>
186
+ <a name='L138'></a><a href='#L138'>138</a>
187
+ <a name='L139'></a><a href='#L139'>139</a>
188
+ <a name='L140'></a><a href='#L140'>140</a>
189
+ <a name='L141'></a><a href='#L141'>141</a>
190
+ <a name='L142'></a><a href='#L142'>142</a>
191
+ <a name='L143'></a><a href='#L143'>143</a>
192
+ <a name='L144'></a><a href='#L144'>144</a>
193
+ <a name='L145'></a><a href='#L145'>145</a>
194
+ <a name='L146'></a><a href='#L146'>146</a>
195
+ <a name='L147'></a><a href='#L147'>147</a>
196
+ <a name='L148'></a><a href='#L148'>148</a>
197
+ <a name='L149'></a><a href='#L149'>149</a>
198
+ <a name='L150'></a><a href='#L150'>150</a>
199
+ <a name='L151'></a><a href='#L151'>151</a>
200
+ <a name='L152'></a><a href='#L152'>152</a>
201
+ <a name='L153'></a><a href='#L153'>153</a>
202
+ <a name='L154'></a><a href='#L154'>154</a>
203
+ <a name='L155'></a><a href='#L155'>155</a>
204
+ <a name='L156'></a><a href='#L156'>156</a>
205
+ <a name='L157'></a><a href='#L157'>157</a>
206
+ <a name='L158'></a><a href='#L158'>158</a>
207
+ <a name='L159'></a><a href='#L159'>159</a>
208
+ <a name='L160'></a><a href='#L160'>160</a>
209
+ <a name='L161'></a><a href='#L161'>161</a>
210
+ <a name='L162'></a><a href='#L162'>162</a>
211
+ <a name='L163'></a><a href='#L163'>163</a>
212
+ <a name='L164'></a><a href='#L164'>164</a>
213
+ <a name='L165'></a><a href='#L165'>165</a>
214
+ <a name='L166'></a><a href='#L166'>166</a>
215
+ <a name='L167'></a><a href='#L167'>167</a>
216
+ <a name='L168'></a><a href='#L168'>168</a>
217
+ <a name='L169'></a><a href='#L169'>169</a>
218
+ <a name='L170'></a><a href='#L170'>170</a>
219
+ <a name='L171'></a><a href='#L171'>171</a>
220
+ <a name='L172'></a><a href='#L172'>172</a>
221
+ <a name='L173'></a><a href='#L173'>173</a>
222
+ <a name='L174'></a><a href='#L174'>174</a>
223
+ <a name='L175'></a><a href='#L175'>175</a>
224
+ <a name='L176'></a><a href='#L176'>176</a>
225
+ <a name='L177'></a><a href='#L177'>177</a>
226
+ <a name='L178'></a><a href='#L178'>178</a>
227
+ <a name='L179'></a><a href='#L179'>179</a>
228
+ <a name='L180'></a><a href='#L180'>180</a>
229
+ <a name='L181'></a><a href='#L181'>181</a>
230
+ <a name='L182'></a><a href='#L182'>182</a>
231
+ <a name='L183'></a><a href='#L183'>183</a>
232
+ <a name='L184'></a><a href='#L184'>184</a>
233
+ <a name='L185'></a><a href='#L185'>185</a>
234
+ <a name='L186'></a><a href='#L186'>186</a>
235
+ <a name='L187'></a><a href='#L187'>187</a>
236
+ <a name='L188'></a><a href='#L188'>188</a>
237
+ <a name='L189'></a><a href='#L189'>189</a>
238
+ <a name='L190'></a><a href='#L190'>190</a>
239
+ <a name='L191'></a><a href='#L191'>191</a>
240
+ <a name='L192'></a><a href='#L192'>192</a>
241
+ <a name='L193'></a><a href='#L193'>193</a>
242
+ <a name='L194'></a><a href='#L194'>194</a>
243
+ <a name='L195'></a><a href='#L195'>195</a>
244
+ <a name='L196'></a><a href='#L196'>196</a>
245
+ <a name='L197'></a><a href='#L197'>197</a>
246
+ <a name='L198'></a><a href='#L198'>198</a>
247
+ <a name='L199'></a><a href='#L199'>199</a>
248
+ <a name='L200'></a><a href='#L200'>200</a>
249
+ <a name='L201'></a><a href='#L201'>201</a>
250
+ <a name='L202'></a><a href='#L202'>202</a>
251
+ <a name='L203'></a><a href='#L203'>203</a>
252
+ <a name='L204'></a><a href='#L204'>204</a>
253
+ <a name='L205'></a><a href='#L205'>205</a>
254
+ <a name='L206'></a><a href='#L206'>206</a>
255
+ <a name='L207'></a><a href='#L207'>207</a>
256
+ <a name='L208'></a><a href='#L208'>208</a>
257
+ <a name='L209'></a><a href='#L209'>209</a>
258
+ <a name='L210'></a><a href='#L210'>210</a>
259
+ <a name='L211'></a><a href='#L211'>211</a>
260
+ <a name='L212'></a><a href='#L212'>212</a>
261
+ <a name='L213'></a><a href='#L213'>213</a>
262
+ <a name='L214'></a><a href='#L214'>214</a>
263
+ <a name='L215'></a><a href='#L215'>215</a>
264
+ <a name='L216'></a><a href='#L216'>216</a>
265
+ <a name='L217'></a><a href='#L217'>217</a>
266
+ <a name='L218'></a><a href='#L218'>218</a>
267
+ <a name='L219'></a><a href='#L219'>219</a>
268
+ <a name='L220'></a><a href='#L220'>220</a>
269
+ <a name='L221'></a><a href='#L221'>221</a>
270
+ <a name='L222'></a><a href='#L222'>222</a>
271
+ <a name='L223'></a><a href='#L223'>223</a>
272
+ <a name='L224'></a><a href='#L224'>224</a>
273
+ <a name='L225'></a><a href='#L225'>225</a>
274
+ <a name='L226'></a><a href='#L226'>226</a>
275
+ <a name='L227'></a><a href='#L227'>227</a>
276
+ <a name='L228'></a><a href='#L228'>228</a>
277
+ <a name='L229'></a><a href='#L229'>229</a>
278
+ <a name='L230'></a><a href='#L230'>230</a>
279
+ <a name='L231'></a><a href='#L231'>231</a>
280
+ <a name='L232'></a><a href='#L232'>232</a>
281
+ <a name='L233'></a><a href='#L233'>233</a>
282
+ <a name='L234'></a><a href='#L234'>234</a>
283
+ <a name='L235'></a><a href='#L235'>235</a>
284
+ <a name='L236'></a><a href='#L236'>236</a>
285
+ <a name='L237'></a><a href='#L237'>237</a>
286
+ <a name='L238'></a><a href='#L238'>238</a>
287
+ <a name='L239'></a><a href='#L239'>239</a>
288
+ <a name='L240'></a><a href='#L240'>240</a>
289
+ <a name='L241'></a><a href='#L241'>241</a>
290
+ <a name='L242'></a><a href='#L242'>242</a>
291
+ <a name='L243'></a><a href='#L243'>243</a>
292
+ <a name='L244'></a><a href='#L244'>244</a>
293
+ <a name='L245'></a><a href='#L245'>245</a>
294
+ <a name='L246'></a><a href='#L246'>246</a>
295
+ <a name='L247'></a><a href='#L247'>247</a>
296
+ <a name='L248'></a><a href='#L248'>248</a>
297
+ <a name='L249'></a><a href='#L249'>249</a>
298
+ <a name='L250'></a><a href='#L250'>250</a>
299
+ <a name='L251'></a><a href='#L251'>251</a>
300
+ <a name='L252'></a><a href='#L252'>252</a>
301
+ <a name='L253'></a><a href='#L253'>253</a>
302
+ <a name='L254'></a><a href='#L254'>254</a>
303
+ <a name='L255'></a><a href='#L255'>255</a>
304
+ <a name='L256'></a><a href='#L256'>256</a>
305
+ <a name='L257'></a><a href='#L257'>257</a>
306
+ <a name='L258'></a><a href='#L258'>258</a>
307
+ <a name='L259'></a><a href='#L259'>259</a>
308
+ <a name='L260'></a><a href='#L260'>260</a>
309
+ <a name='L261'></a><a href='#L261'>261</a>
310
+ <a name='L262'></a><a href='#L262'>262</a>
311
+ <a name='L263'></a><a href='#L263'>263</a>
312
+ <a name='L264'></a><a href='#L264'>264</a>
313
+ <a name='L265'></a><a href='#L265'>265</a>
314
+ <a name='L266'></a><a href='#L266'>266</a>
315
+ <a name='L267'></a><a href='#L267'>267</a>
316
+ <a name='L268'></a><a href='#L268'>268</a>
317
+ <a name='L269'></a><a href='#L269'>269</a>
318
+ <a name='L270'></a><a href='#L270'>270</a>
319
+ <a name='L271'></a><a href='#L271'>271</a>
320
+ <a name='L272'></a><a href='#L272'>272</a>
321
+ <a name='L273'></a><a href='#L273'>273</a>
322
+ <a name='L274'></a><a href='#L274'>274</a>
323
+ <a name='L275'></a><a href='#L275'>275</a>
324
+ <a name='L276'></a><a href='#L276'>276</a>
325
+ <a name='L277'></a><a href='#L277'>277</a>
326
+ <a name='L278'></a><a href='#L278'>278</a>
327
+ <a name='L279'></a><a href='#L279'>279</a>
328
+ <a name='L280'></a><a href='#L280'>280</a>
329
+ <a name='L281'></a><a href='#L281'>281</a>
330
+ <a name='L282'></a><a href='#L282'>282</a>
331
+ <a name='L283'></a><a href='#L283'>283</a>
332
+ <a name='L284'></a><a href='#L284'>284</a>
333
+ <a name='L285'></a><a href='#L285'>285</a>
334
+ <a name='L286'></a><a href='#L286'>286</a>
335
+ <a name='L287'></a><a href='#L287'>287</a>
336
+ <a name='L288'></a><a href='#L288'>288</a>
337
+ <a name='L289'></a><a href='#L289'>289</a>
338
+ <a name='L290'></a><a href='#L290'>290</a>
339
+ <a name='L291'></a><a href='#L291'>291</a>
340
+ <a name='L292'></a><a href='#L292'>292</a>
341
+ <a name='L293'></a><a href='#L293'>293</a>
342
+ <a name='L294'></a><a href='#L294'>294</a>
343
+ <a name='L295'></a><a href='#L295'>295</a>
344
+ <a name='L296'></a><a href='#L296'>296</a>
345
+ <a name='L297'></a><a href='#L297'>297</a>
346
+ <a name='L298'></a><a href='#L298'>298</a>
347
+ <a name='L299'></a><a href='#L299'>299</a>
348
+ <a name='L300'></a><a href='#L300'>300</a>
349
+ <a name='L301'></a><a href='#L301'>301</a>
350
+ <a name='L302'></a><a href='#L302'>302</a>
351
+ <a name='L303'></a><a href='#L303'>303</a>
352
+ <a name='L304'></a><a href='#L304'>304</a>
353
+ <a name='L305'></a><a href='#L305'>305</a>
354
+ <a name='L306'></a><a href='#L306'>306</a>
355
+ <a name='L307'></a><a href='#L307'>307</a>
356
+ <a name='L308'></a><a href='#L308'>308</a>
357
+ <a name='L309'></a><a href='#L309'>309</a>
358
+ <a name='L310'></a><a href='#L310'>310</a>
359
+ <a name='L311'></a><a href='#L311'>311</a>
360
+ <a name='L312'></a><a href='#L312'>312</a>
361
+ <a name='L313'></a><a href='#L313'>313</a>
362
+ <a name='L314'></a><a href='#L314'>314</a>
363
+ <a name='L315'></a><a href='#L315'>315</a>
364
+ <a name='L316'></a><a href='#L316'>316</a>
365
+ <a name='L317'></a><a href='#L317'>317</a>
366
+ <a name='L318'></a><a href='#L318'>318</a>
367
+ <a name='L319'></a><a href='#L319'>319</a>
368
+ <a name='L320'></a><a href='#L320'>320</a>
369
+ <a name='L321'></a><a href='#L321'>321</a>
370
+ <a name='L322'></a><a href='#L322'>322</a>
371
+ <a name='L323'></a><a href='#L323'>323</a>
372
+ <a name='L324'></a><a href='#L324'>324</a>
373
+ <a name='L325'></a><a href='#L325'>325</a>
374
+ <a name='L326'></a><a href='#L326'>326</a>
375
+ <a name='L327'></a><a href='#L327'>327</a>
376
+ <a name='L328'></a><a href='#L328'>328</a>
377
+ <a name='L329'></a><a href='#L329'>329</a>
378
+ <a name='L330'></a><a href='#L330'>330</a>
379
+ <a name='L331'></a><a href='#L331'>331</a>
380
+ <a name='L332'></a><a href='#L332'>332</a>
381
+ <a name='L333'></a><a href='#L333'>333</a>
382
+ <a name='L334'></a><a href='#L334'>334</a>
383
+ <a name='L335'></a><a href='#L335'>335</a>
384
+ <a name='L336'></a><a href='#L336'>336</a>
385
+ <a name='L337'></a><a href='#L337'>337</a>
386
+ <a name='L338'></a><a href='#L338'>338</a>
387
+ <a name='L339'></a><a href='#L339'>339</a>
388
+ <a name='L340'></a><a href='#L340'>340</a>
389
+ <a name='L341'></a><a href='#L341'>341</a>
390
+ <a name='L342'></a><a href='#L342'>342</a>
391
+ <a name='L343'></a><a href='#L343'>343</a>
392
+ <a name='L344'></a><a href='#L344'>344</a>
393
+ <a name='L345'></a><a href='#L345'>345</a>
394
+ <a name='L346'></a><a href='#L346'>346</a>
395
+ <a name='L347'></a><a href='#L347'>347</a>
396
+ <a name='L348'></a><a href='#L348'>348</a>
397
+ <a name='L349'></a><a href='#L349'>349</a>
398
+ <a name='L350'></a><a href='#L350'>350</a>
399
+ <a name='L351'></a><a href='#L351'>351</a>
400
+ <a name='L352'></a><a href='#L352'>352</a>
401
+ <a name='L353'></a><a href='#L353'>353</a>
402
+ <a name='L354'></a><a href='#L354'>354</a>
403
+ <a name='L355'></a><a href='#L355'>355</a>
404
+ <a name='L356'></a><a href='#L356'>356</a>
405
+ <a name='L357'></a><a href='#L357'>357</a>
406
+ <a name='L358'></a><a href='#L358'>358</a>
407
+ <a name='L359'></a><a href='#L359'>359</a>
408
+ <a name='L360'></a><a href='#L360'>360</a>
409
+ <a name='L361'></a><a href='#L361'>361</a>
410
+ <a name='L362'></a><a href='#L362'>362</a>
411
+ <a name='L363'></a><a href='#L363'>363</a>
412
+ <a name='L364'></a><a href='#L364'>364</a>
413
+ <a name='L365'></a><a href='#L365'>365</a>
414
+ <a name='L366'></a><a href='#L366'>366</a>
415
+ <a name='L367'></a><a href='#L367'>367</a>
416
+ <a name='L368'></a><a href='#L368'>368</a>
417
+ <a name='L369'></a><a href='#L369'>369</a>
418
+ <a name='L370'></a><a href='#L370'>370</a>
419
+ <a name='L371'></a><a href='#L371'>371</a>
420
+ <a name='L372'></a><a href='#L372'>372</a>
421
+ <a name='L373'></a><a href='#L373'>373</a>
422
+ <a name='L374'></a><a href='#L374'>374</a>
423
+ <a name='L375'></a><a href='#L375'>375</a>
424
+ <a name='L376'></a><a href='#L376'>376</a>
425
+ <a name='L377'></a><a href='#L377'>377</a>
426
+ <a name='L378'></a><a href='#L378'>378</a>
427
+ <a name='L379'></a><a href='#L379'>379</a>
428
+ <a name='L380'></a><a href='#L380'>380</a>
429
+ <a name='L381'></a><a href='#L381'>381</a>
430
+ <a name='L382'></a><a href='#L382'>382</a>
431
+ <a name='L383'></a><a href='#L383'>383</a>
432
+ <a name='L384'></a><a href='#L384'>384</a>
433
+ <a name='L385'></a><a href='#L385'>385</a>
434
+ <a name='L386'></a><a href='#L386'>386</a>
435
+ <a name='L387'></a><a href='#L387'>387</a>
436
+ <a name='L388'></a><a href='#L388'>388</a>
437
+ <a name='L389'></a><a href='#L389'>389</a>
438
+ <a name='L390'></a><a href='#L390'>390</a>
439
+ <a name='L391'></a><a href='#L391'>391</a>
440
+ <a name='L392'></a><a href='#L392'>392</a>
441
+ <a name='L393'></a><a href='#L393'>393</a>
442
+ <a name='L394'></a><a href='#L394'>394</a>
443
+ <a name='L395'></a><a href='#L395'>395</a>
444
+ <a name='L396'></a><a href='#L396'>396</a>
445
+ <a name='L397'></a><a href='#L397'>397</a>
446
+ <a name='L398'></a><a href='#L398'>398</a>
447
+ <a name='L399'></a><a href='#L399'>399</a>
448
+ <a name='L400'></a><a href='#L400'>400</a>
449
+ <a name='L401'></a><a href='#L401'>401</a>
450
+ <a name='L402'></a><a href='#L402'>402</a>
451
+ <a name='L403'></a><a href='#L403'>403</a>
452
+ <a name='L404'></a><a href='#L404'>404</a>
453
+ <a name='L405'></a><a href='#L405'>405</a>
454
+ <a name='L406'></a><a href='#L406'>406</a>
455
+ <a name='L407'></a><a href='#L407'>407</a>
456
+ <a name='L408'></a><a href='#L408'>408</a>
457
+ <a name='L409'></a><a href='#L409'>409</a>
458
+ <a name='L410'></a><a href='#L410'>410</a>
459
+ <a name='L411'></a><a href='#L411'>411</a>
460
+ <a name='L412'></a><a href='#L412'>412</a>
461
+ <a name='L413'></a><a href='#L413'>413</a>
462
+ <a name='L414'></a><a href='#L414'>414</a>
463
+ <a name='L415'></a><a href='#L415'>415</a>
464
+ <a name='L416'></a><a href='#L416'>416</a>
465
+ <a name='L417'></a><a href='#L417'>417</a>
466
+ <a name='L418'></a><a href='#L418'>418</a>
467
+ <a name='L419'></a><a href='#L419'>419</a>
468
+ <a name='L420'></a><a href='#L420'>420</a>
469
+ <a name='L421'></a><a href='#L421'>421</a>
470
+ <a name='L422'></a><a href='#L422'>422</a>
471
+ <a name='L423'></a><a href='#L423'>423</a>
472
+ <a name='L424'></a><a href='#L424'>424</a>
473
+ <a name='L425'></a><a href='#L425'>425</a>
474
+ <a name='L426'></a><a href='#L426'>426</a>
475
+ <a name='L427'></a><a href='#L427'>427</a>
476
+ <a name='L428'></a><a href='#L428'>428</a>
477
+ <a name='L429'></a><a href='#L429'>429</a>
478
+ <a name='L430'></a><a href='#L430'>430</a>
479
+ <a name='L431'></a><a href='#L431'>431</a>
480
+ <a name='L432'></a><a href='#L432'>432</a>
481
+ <a name='L433'></a><a href='#L433'>433</a>
482
+ <a name='L434'></a><a href='#L434'>434</a>
483
+ <a name='L435'></a><a href='#L435'>435</a>
484
+ <a name='L436'></a><a href='#L436'>436</a>
485
+ <a name='L437'></a><a href='#L437'>437</a>
486
+ <a name='L438'></a><a href='#L438'>438</a>
487
+ <a name='L439'></a><a href='#L439'>439</a>
488
+ <a name='L440'></a><a href='#L440'>440</a>
489
+ <a name='L441'></a><a href='#L441'>441</a>
490
+ <a name='L442'></a><a href='#L442'>442</a>
491
+ <a name='L443'></a><a href='#L443'>443</a>
492
+ <a name='L444'></a><a href='#L444'>444</a>
493
+ <a name='L445'></a><a href='#L445'>445</a>
494
+ <a name='L446'></a><a href='#L446'>446</a>
495
+ <a name='L447'></a><a href='#L447'>447</a>
496
+ <a name='L448'></a><a href='#L448'>448</a>
497
+ <a name='L449'></a><a href='#L449'>449</a>
498
+ <a name='L450'></a><a href='#L450'>450</a>
499
+ <a name='L451'></a><a href='#L451'>451</a>
500
+ <a name='L452'></a><a href='#L452'>452</a>
501
+ <a name='L453'></a><a href='#L453'>453</a>
502
+ <a name='L454'></a><a href='#L454'>454</a>
503
+ <a name='L455'></a><a href='#L455'>455</a>
504
+ <a name='L456'></a><a href='#L456'>456</a>
505
+ <a name='L457'></a><a href='#L457'>457</a>
506
+ <a name='L458'></a><a href='#L458'>458</a>
507
+ <a name='L459'></a><a href='#L459'>459</a>
508
+ <a name='L460'></a><a href='#L460'>460</a>
509
+ <a name='L461'></a><a href='#L461'>461</a>
510
+ <a name='L462'></a><a href='#L462'>462</a>
511
+ <a name='L463'></a><a href='#L463'>463</a>
512
+ <a name='L464'></a><a href='#L464'>464</a>
513
+ <a name='L465'></a><a href='#L465'>465</a>
514
+ <a name='L466'></a><a href='#L466'>466</a>
515
+ <a name='L467'></a><a href='#L467'>467</a>
516
+ <a name='L468'></a><a href='#L468'>468</a>
517
+ <a name='L469'></a><a href='#L469'>469</a>
518
+ <a name='L470'></a><a href='#L470'>470</a>
519
+ <a name='L471'></a><a href='#L471'>471</a>
520
+ <a name='L472'></a><a href='#L472'>472</a>
521
+ <a name='L473'></a><a href='#L473'>473</a>
522
+ <a name='L474'></a><a href='#L474'>474</a>
523
+ <a name='L475'></a><a href='#L475'>475</a>
524
+ <a name='L476'></a><a href='#L476'>476</a>
525
+ <a name='L477'></a><a href='#L477'>477</a>
526
+ <a name='L478'></a><a href='#L478'>478</a>
527
+ <a name='L479'></a><a href='#L479'>479</a>
528
+ <a name='L480'></a><a href='#L480'>480</a>
529
+ <a name='L481'></a><a href='#L481'>481</a>
530
+ <a name='L482'></a><a href='#L482'>482</a>
531
+ <a name='L483'></a><a href='#L483'>483</a>
532
+ <a name='L484'></a><a href='#L484'>484</a>
533
+ <a name='L485'></a><a href='#L485'>485</a>
534
+ <a name='L486'></a><a href='#L486'>486</a>
535
+ <a name='L487'></a><a href='#L487'>487</a>
536
+ <a name='L488'></a><a href='#L488'>488</a>
537
+ <a name='L489'></a><a href='#L489'>489</a>
538
+ <a name='L490'></a><a href='#L490'>490</a>
539
+ <a name='L491'></a><a href='#L491'>491</a>
540
+ <a name='L492'></a><a href='#L492'>492</a>
541
+ <a name='L493'></a><a href='#L493'>493</a>
542
+ <a name='L494'></a><a href='#L494'>494</a>
543
+ <a name='L495'></a><a href='#L495'>495</a>
544
+ <a name='L496'></a><a href='#L496'>496</a>
545
+ <a name='L497'></a><a href='#L497'>497</a>
546
+ <a name='L498'></a><a href='#L498'>498</a>
547
+ <a name='L499'></a><a href='#L499'>499</a>
548
+ <a name='L500'></a><a href='#L500'>500</a>
549
+ <a name='L501'></a><a href='#L501'>501</a>
550
+ <a name='L502'></a><a href='#L502'>502</a>
551
+ <a name='L503'></a><a href='#L503'>503</a>
552
+ <a name='L504'></a><a href='#L504'>504</a>
553
+ <a name='L505'></a><a href='#L505'>505</a>
554
+ <a name='L506'></a><a href='#L506'>506</a>
555
+ <a name='L507'></a><a href='#L507'>507</a>
556
+ <a name='L508'></a><a href='#L508'>508</a>
557
+ <a name='L509'></a><a href='#L509'>509</a>
558
+ <a name='L510'></a><a href='#L510'>510</a>
559
+ <a name='L511'></a><a href='#L511'>511</a>
560
+ <a name='L512'></a><a href='#L512'>512</a>
561
+ <a name='L513'></a><a href='#L513'>513</a>
562
+ <a name='L514'></a><a href='#L514'>514</a>
563
+ <a name='L515'></a><a href='#L515'>515</a>
564
+ <a name='L516'></a><a href='#L516'>516</a>
565
+ <a name='L517'></a><a href='#L517'>517</a>
566
+ <a name='L518'></a><a href='#L518'>518</a>
567
+ <a name='L519'></a><a href='#L519'>519</a>
568
+ <a name='L520'></a><a href='#L520'>520</a>
569
+ <a name='L521'></a><a href='#L521'>521</a>
570
+ <a name='L522'></a><a href='#L522'>522</a>
571
+ <a name='L523'></a><a href='#L523'>523</a>
572
+ <a name='L524'></a><a href='#L524'>524</a>
573
+ <a name='L525'></a><a href='#L525'>525</a>
574
+ <a name='L526'></a><a href='#L526'>526</a>
575
+ <a name='L527'></a><a href='#L527'>527</a>
576
+ <a name='L528'></a><a href='#L528'>528</a>
577
+ <a name='L529'></a><a href='#L529'>529</a>
578
+ <a name='L530'></a><a href='#L530'>530</a>
579
+ <a name='L531'></a><a href='#L531'>531</a>
580
+ <a name='L532'></a><a href='#L532'>532</a>
581
+ <a name='L533'></a><a href='#L533'>533</a>
582
+ <a name='L534'></a><a href='#L534'>534</a>
583
+ <a name='L535'></a><a href='#L535'>535</a>
584
+ <a name='L536'></a><a href='#L536'>536</a>
585
+ <a name='L537'></a><a href='#L537'>537</a>
586
+ <a name='L538'></a><a href='#L538'>538</a>
587
+ <a name='L539'></a><a href='#L539'>539</a>
588
+ <a name='L540'></a><a href='#L540'>540</a>
589
+ <a name='L541'></a><a href='#L541'>541</a>
590
+ <a name='L542'></a><a href='#L542'>542</a>
591
+ <a name='L543'></a><a href='#L543'>543</a>
592
+ <a name='L544'></a><a href='#L544'>544</a>
593
+ <a name='L545'></a><a href='#L545'>545</a>
594
+ <a name='L546'></a><a href='#L546'>546</a>
595
+ <a name='L547'></a><a href='#L547'>547</a>
596
+ <a name='L548'></a><a href='#L548'>548</a>
597
+ <a name='L549'></a><a href='#L549'>549</a>
598
+ <a name='L550'></a><a href='#L550'>550</a>
599
+ <a name='L551'></a><a href='#L551'>551</a>
600
+ <a name='L552'></a><a href='#L552'>552</a>
601
+ <a name='L553'></a><a href='#L553'>553</a>
602
+ <a name='L554'></a><a href='#L554'>554</a>
603
+ <a name='L555'></a><a href='#L555'>555</a>
604
+ <a name='L556'></a><a href='#L556'>556</a>
605
+ <a name='L557'></a><a href='#L557'>557</a>
606
+ <a name='L558'></a><a href='#L558'>558</a>
607
+ <a name='L559'></a><a href='#L559'>559</a>
608
+ <a name='L560'></a><a href='#L560'>560</a>
609
+ <a name='L561'></a><a href='#L561'>561</a>
610
+ <a name='L562'></a><a href='#L562'>562</a>
611
+ <a name='L563'></a><a href='#L563'>563</a>
612
+ <a name='L564'></a><a href='#L564'>564</a>
613
+ <a name='L565'></a><a href='#L565'>565</a>
614
+ <a name='L566'></a><a href='#L566'>566</a>
615
+ <a name='L567'></a><a href='#L567'>567</a>
616
+ <a name='L568'></a><a href='#L568'>568</a>
617
+ <a name='L569'></a><a href='#L569'>569</a>
618
+ <a name='L570'></a><a href='#L570'>570</a>
619
+ <a name='L571'></a><a href='#L571'>571</a>
620
+ <a name='L572'></a><a href='#L572'>572</a>
621
+ <a name='L573'></a><a href='#L573'>573</a>
622
+ <a name='L574'></a><a href='#L574'>574</a>
623
+ <a name='L575'></a><a href='#L575'>575</a>
624
+ <a name='L576'></a><a href='#L576'>576</a>
625
+ <a name='L577'></a><a href='#L577'>577</a>
626
+ <a name='L578'></a><a href='#L578'>578</a>
627
+ <a name='L579'></a><a href='#L579'>579</a>
628
+ <a name='L580'></a><a href='#L580'>580</a>
629
+ <a name='L581'></a><a href='#L581'>581</a>
630
+ <a name='L582'></a><a href='#L582'>582</a>
631
+ <a name='L583'></a><a href='#L583'>583</a>
632
+ <a name='L584'></a><a href='#L584'>584</a>
633
+ <a name='L585'></a><a href='#L585'>585</a>
634
+ <a name='L586'></a><a href='#L586'>586</a>
635
+ <a name='L587'></a><a href='#L587'>587</a>
636
+ <a name='L588'></a><a href='#L588'>588</a>
637
+ <a name='L589'></a><a href='#L589'>589</a>
638
+ <a name='L590'></a><a href='#L590'>590</a>
639
+ <a name='L591'></a><a href='#L591'>591</a>
640
+ <a name='L592'></a><a href='#L592'>592</a>
641
+ <a name='L593'></a><a href='#L593'>593</a>
642
+ <a name='L594'></a><a href='#L594'>594</a>
643
+ <a name='L595'></a><a href='#L595'>595</a>
644
+ <a name='L596'></a><a href='#L596'>596</a>
645
+ <a name='L597'></a><a href='#L597'>597</a>
646
+ <a name='L598'></a><a href='#L598'>598</a>
647
+ <a name='L599'></a><a href='#L599'>599</a>
648
+ <a name='L600'></a><a href='#L600'>600</a>
649
+ <a name='L601'></a><a href='#L601'>601</a>
650
+ <a name='L602'></a><a href='#L602'>602</a>
651
+ <a name='L603'></a><a href='#L603'>603</a>
652
+ <a name='L604'></a><a href='#L604'>604</a>
653
+ <a name='L605'></a><a href='#L605'>605</a>
654
+ <a name='L606'></a><a href='#L606'>606</a>
655
+ <a name='L607'></a><a href='#L607'>607</a>
656
+ <a name='L608'></a><a href='#L608'>608</a>
657
+ <a name='L609'></a><a href='#L609'>609</a>
658
+ <a name='L610'></a><a href='#L610'>610</a>
659
+ <a name='L611'></a><a href='#L611'>611</a>
660
+ <a name='L612'></a><a href='#L612'>612</a>
661
+ <a name='L613'></a><a href='#L613'>613</a>
662
+ <a name='L614'></a><a href='#L614'>614</a>
663
+ <a name='L615'></a><a href='#L615'>615</a>
664
+ <a name='L616'></a><a href='#L616'>616</a>
665
+ <a name='L617'></a><a href='#L617'>617</a>
666
+ <a name='L618'></a><a href='#L618'>618</a>
667
+ <a name='L619'></a><a href='#L619'>619</a>
668
+ <a name='L620'></a><a href='#L620'>620</a>
669
+ <a name='L621'></a><a href='#L621'>621</a>
670
+ <a name='L622'></a><a href='#L622'>622</a>
671
+ <a name='L623'></a><a href='#L623'>623</a>
672
+ <a name='L624'></a><a href='#L624'>624</a>
673
+ <a name='L625'></a><a href='#L625'>625</a>
674
+ <a name='L626'></a><a href='#L626'>626</a>
675
+ <a name='L627'></a><a href='#L627'>627</a>
676
+ <a name='L628'></a><a href='#L628'>628</a>
677
+ <a name='L629'></a><a href='#L629'>629</a>
678
+ <a name='L630'></a><a href='#L630'>630</a>
679
+ <a name='L631'></a><a href='#L631'>631</a>
680
+ <a name='L632'></a><a href='#L632'>632</a>
681
+ <a name='L633'></a><a href='#L633'>633</a>
682
+ <a name='L634'></a><a href='#L634'>634</a>
683
+ <a name='L635'></a><a href='#L635'>635</a>
684
+ <a name='L636'></a><a href='#L636'>636</a>
685
+ <a name='L637'></a><a href='#L637'>637</a>
686
+ <a name='L638'></a><a href='#L638'>638</a>
687
+ <a name='L639'></a><a href='#L639'>639</a>
688
+ <a name='L640'></a><a href='#L640'>640</a>
689
+ <a name='L641'></a><a href='#L641'>641</a>
690
+ <a name='L642'></a><a href='#L642'>642</a>
691
+ <a name='L643'></a><a href='#L643'>643</a>
692
+ <a name='L644'></a><a href='#L644'>644</a>
693
+ <a name='L645'></a><a href='#L645'>645</a>
694
+ <a name='L646'></a><a href='#L646'>646</a>
695
+ <a name='L647'></a><a href='#L647'>647</a>
696
+ <a name='L648'></a><a href='#L648'>648</a>
697
+ <a name='L649'></a><a href='#L649'>649</a>
698
+ <a name='L650'></a><a href='#L650'>650</a>
699
+ <a name='L651'></a><a href='#L651'>651</a>
700
+ <a name='L652'></a><a href='#L652'>652</a>
701
+ <a name='L653'></a><a href='#L653'>653</a>
702
+ <a name='L654'></a><a href='#L654'>654</a>
703
+ <a name='L655'></a><a href='#L655'>655</a>
704
+ <a name='L656'></a><a href='#L656'>656</a>
705
+ <a name='L657'></a><a href='#L657'>657</a>
706
+ <a name='L658'></a><a href='#L658'>658</a>
707
+ <a name='L659'></a><a href='#L659'>659</a>
708
+ <a name='L660'></a><a href='#L660'>660</a>
709
+ <a name='L661'></a><a href='#L661'>661</a>
710
+ <a name='L662'></a><a href='#L662'>662</a>
711
+ <a name='L663'></a><a href='#L663'>663</a>
712
+ <a name='L664'></a><a href='#L664'>664</a>
713
+ <a name='L665'></a><a href='#L665'>665</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
714
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
719
+ <span class="cline-any cline-neutral">&nbsp;</span>
720
+ <span class="cline-any cline-neutral">&nbsp;</span>
721
+ <span class="cline-any cline-neutral">&nbsp;</span>
722
+ <span class="cline-any cline-neutral">&nbsp;</span>
723
+ <span class="cline-any cline-neutral">&nbsp;</span>
724
+ <span class="cline-any cline-neutral">&nbsp;</span>
725
+ <span class="cline-any cline-yes">53x</span>
726
+ <span class="cline-any cline-yes">53x</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-neutral">&nbsp;</span>
731
+ <span class="cline-any cline-neutral">&nbsp;</span>
732
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
736
+ <span class="cline-any cline-yes">2x</span>
737
+ <span class="cline-any cline-yes">2x</span>
738
+ <span class="cline-any cline-no">&nbsp;</span>
739
+ <span class="cline-any cline-neutral">&nbsp;</span>
740
+ <span class="cline-any cline-yes">2x</span>
741
+ <span class="cline-any cline-no">&nbsp;</span>
742
+ <span class="cline-any cline-neutral">&nbsp;</span>
743
+ <span class="cline-any cline-yes">2x</span>
744
+ <span class="cline-any cline-no">&nbsp;</span>
745
+ <span class="cline-any cline-neutral">&nbsp;</span>
746
+ <span class="cline-any cline-yes">2x</span>
747
+ <span class="cline-any cline-neutral">&nbsp;</span>
748
+ <span class="cline-any cline-neutral">&nbsp;</span>
749
+ <span class="cline-any cline-neutral">&nbsp;</span>
750
+ <span class="cline-any cline-neutral">&nbsp;</span>
751
+ <span class="cline-any cline-neutral">&nbsp;</span>
752
+ <span class="cline-any cline-neutral">&nbsp;</span>
753
+ <span class="cline-any cline-neutral">&nbsp;</span>
754
+ <span class="cline-any cline-neutral">&nbsp;</span>
755
+ <span class="cline-any cline-neutral">&nbsp;</span>
756
+ <span class="cline-any cline-neutral">&nbsp;</span>
757
+ <span class="cline-any cline-neutral">&nbsp;</span>
758
+ <span class="cline-any cline-yes">32x</span>
759
+ <span class="cline-any cline-yes">32x</span>
760
+ <span class="cline-any cline-yes">32x</span>
761
+ <span class="cline-any cline-neutral">&nbsp;</span>
762
+ <span class="cline-any cline-yes">32x</span>
763
+ <span class="cline-any cline-yes">1x</span>
764
+ <span class="cline-any cline-neutral">&nbsp;</span>
765
+ <span class="cline-any cline-neutral">&nbsp;</span>
766
+ <span class="cline-any cline-yes">31x</span>
767
+ <span class="cline-any cline-yes">1x</span>
768
+ <span class="cline-any cline-neutral">&nbsp;</span>
769
+ <span class="cline-any cline-neutral">&nbsp;</span>
770
+ <span class="cline-any cline-yes">30x</span>
771
+ <span class="cline-any cline-yes">1x</span>
772
+ <span class="cline-any cline-neutral">&nbsp;</span>
773
+ <span class="cline-any cline-neutral">&nbsp;</span>
774
+ <span class="cline-any cline-yes">29x</span>
775
+ <span class="cline-any cline-yes">1x</span>
776
+ <span class="cline-any cline-neutral">&nbsp;</span>
777
+ <span class="cline-any cline-neutral">&nbsp;</span>
778
+ <span class="cline-any cline-yes">28x</span>
779
+ <span class="cline-any cline-neutral">&nbsp;</span>
780
+ <span class="cline-any cline-neutral">&nbsp;</span>
781
+ <span class="cline-any cline-neutral">&nbsp;</span>
782
+ <span class="cline-any cline-neutral">&nbsp;</span>
783
+ <span class="cline-any cline-neutral">&nbsp;</span>
784
+ <span class="cline-any cline-neutral">&nbsp;</span>
785
+ <span class="cline-any cline-neutral">&nbsp;</span>
786
+ <span class="cline-any cline-neutral">&nbsp;</span>
787
+ <span class="cline-any cline-neutral">&nbsp;</span>
788
+ <span class="cline-any cline-neutral">&nbsp;</span>
789
+ <span class="cline-any cline-neutral">&nbsp;</span>
790
+ <span class="cline-any cline-neutral">&nbsp;</span>
791
+ <span class="cline-any cline-neutral">&nbsp;</span>
792
+ <span class="cline-any cline-neutral">&nbsp;</span>
793
+ <span class="cline-any cline-neutral">&nbsp;</span>
794
+ <span class="cline-any cline-neutral">&nbsp;</span>
795
+ <span class="cline-any cline-neutral">&nbsp;</span>
796
+ <span class="cline-any cline-neutral">&nbsp;</span>
797
+ <span class="cline-any cline-yes">28x</span>
798
+ <span class="cline-any cline-neutral">&nbsp;</span>
799
+ <span class="cline-any cline-yes">28x</span>
800
+ <span class="cline-any cline-yes">2x</span>
801
+ <span class="cline-any cline-neutral">&nbsp;</span>
802
+ <span class="cline-any cline-neutral">&nbsp;</span>
803
+ <span class="cline-any cline-yes">26x</span>
804
+ <span class="cline-any cline-no">&nbsp;</span>
805
+ <span class="cline-any cline-neutral">&nbsp;</span>
806
+ <span class="cline-any cline-neutral">&nbsp;</span>
807
+ <span class="cline-any cline-yes">26x</span>
808
+ <span class="cline-any cline-yes">1x</span>
809
+ <span class="cline-any cline-neutral">&nbsp;</span>
810
+ <span class="cline-any cline-neutral">&nbsp;</span>
811
+ <span class="cline-any cline-yes">25x</span>
812
+ <span class="cline-any cline-yes">1x</span>
813
+ <span class="cline-any cline-neutral">&nbsp;</span>
814
+ <span class="cline-any cline-neutral">&nbsp;</span>
815
+ <span class="cline-any cline-yes">24x</span>
816
+ <span class="cline-any cline-yes">1x</span>
817
+ <span class="cline-any cline-neutral">&nbsp;</span>
818
+ <span class="cline-any cline-neutral">&nbsp;</span>
819
+ <span class="cline-any cline-neutral">&nbsp;</span>
820
+ <span class="cline-any cline-yes">23x</span>
821
+ <span class="cline-any cline-yes">14x</span>
822
+ <span class="cline-any cline-neutral">&nbsp;</span>
823
+ <span class="cline-any cline-neutral">&nbsp;</span>
824
+ <span class="cline-any cline-yes">9x</span>
825
+ <span class="cline-any cline-yes">9x</span>
826
+ <span class="cline-any cline-yes">1x</span>
827
+ <span class="cline-any cline-neutral">&nbsp;</span>
828
+ <span class="cline-any cline-neutral">&nbsp;</span>
829
+ <span class="cline-any cline-yes">8x</span>
830
+ <span class="cline-any cline-neutral">&nbsp;</span>
831
+ <span class="cline-any cline-neutral">&nbsp;</span>
832
+ <span class="cline-any cline-neutral">&nbsp;</span>
833
+ <span class="cline-any cline-neutral">&nbsp;</span>
834
+ <span class="cline-any cline-neutral">&nbsp;</span>
835
+ <span class="cline-any cline-yes">22x</span>
836
+ <span class="cline-any cline-yes">22x</span>
837
+ <span class="cline-any cline-yes">22x</span>
838
+ <span class="cline-any cline-yes">14x</span>
839
+ <span class="cline-any cline-neutral">&nbsp;</span>
840
+ <span class="cline-any cline-yes">12x</span>
841
+ <span class="cline-any cline-yes">12x</span>
842
+ <span class="cline-any cline-yes">12x</span>
843
+ <span class="cline-any cline-neutral">&nbsp;</span>
844
+ <span class="cline-any cline-yes">1x</span>
845
+ <span class="cline-any cline-yes">1x</span>
846
+ <span class="cline-any cline-yes">1x</span>
847
+ <span class="cline-any cline-neutral">&nbsp;</span>
848
+ <span class="cline-any cline-yes">1x</span>
849
+ <span class="cline-any cline-yes">1x</span>
850
+ <span class="cline-any cline-yes">1x</span>
851
+ <span class="cline-any cline-neutral">&nbsp;</span>
852
+ <span class="cline-any cline-neutral">&nbsp;</span>
853
+ <span class="cline-any cline-yes">22x</span>
854
+ <span class="cline-any cline-neutral">&nbsp;</span>
855
+ <span class="cline-any cline-neutral">&nbsp;</span>
856
+ <span class="cline-any cline-neutral">&nbsp;</span>
857
+ <span class="cline-any cline-yes">22x</span>
858
+ <span class="cline-any cline-yes">22x</span>
859
+ <span class="cline-any cline-yes">19x</span>
860
+ <span class="cline-any cline-neutral">&nbsp;</span>
861
+ <span class="cline-any cline-neutral">&nbsp;</span>
862
+ <span class="cline-any cline-yes">3x</span>
863
+ <span class="cline-any cline-yes">3x</span>
864
+ <span class="cline-any cline-neutral">&nbsp;</span>
865
+ <span class="cline-any cline-yes">3x</span>
866
+ <span class="cline-any cline-neutral">&nbsp;</span>
867
+ <span class="cline-any cline-yes">3x</span>
868
+ <span class="cline-any cline-yes">2x</span>
869
+ <span class="cline-any cline-neutral">&nbsp;</span>
870
+ <span class="cline-any cline-neutral">&nbsp;</span>
871
+ <span class="cline-any cline-yes">3x</span>
872
+ <span class="cline-any cline-yes">2x</span>
873
+ <span class="cline-any cline-neutral">&nbsp;</span>
874
+ <span class="cline-any cline-neutral">&nbsp;</span>
875
+ <span class="cline-any cline-yes">3x</span>
876
+ <span class="cline-any cline-neutral">&nbsp;</span>
877
+ <span class="cline-any cline-neutral">&nbsp;</span>
878
+ <span class="cline-any cline-neutral">&nbsp;</span>
879
+ <span class="cline-any cline-yes">22x</span>
880
+ <span class="cline-any cline-yes">1x</span>
881
+ <span class="cline-any cline-neutral">&nbsp;</span>
882
+ <span class="cline-any cline-yes">22x</span>
883
+ <span class="cline-any cline-neutral">&nbsp;</span>
884
+ <span class="cline-any cline-yes">44x</span>
885
+ <span class="cline-any cline-neutral">&nbsp;</span>
886
+ <span class="cline-any cline-neutral">&nbsp;</span>
887
+ <span class="cline-any cline-neutral">&nbsp;</span>
888
+ <span class="cline-any cline-neutral">&nbsp;</span>
889
+ <span class="cline-any cline-neutral">&nbsp;</span>
890
+ <span class="cline-any cline-yes">22x</span>
891
+ <span class="cline-any cline-yes">20x</span>
892
+ <span class="cline-any cline-neutral">&nbsp;</span>
893
+ <span class="cline-any cline-neutral">&nbsp;</span>
894
+ <span class="cline-any cline-yes">2x</span>
895
+ <span class="cline-any cline-yes">2x</span>
896
+ <span class="cline-any cline-yes">2x</span>
897
+ <span class="cline-any cline-neutral">&nbsp;</span>
898
+ <span class="cline-any cline-neutral">&nbsp;</span>
899
+ <span class="cline-any cline-yes">2x</span>
900
+ <span class="cline-any cline-yes">1x</span>
901
+ <span class="cline-any cline-neutral">&nbsp;</span>
902
+ <span class="cline-any cline-neutral">&nbsp;</span>
903
+ <span class="cline-any cline-yes">2x</span>
904
+ <span class="cline-any cline-neutral">&nbsp;</span>
905
+ <span class="cline-any cline-neutral">&nbsp;</span>
906
+ <span class="cline-any cline-neutral">&nbsp;</span>
907
+ <span class="cline-any cline-yes">22x</span>
908
+ <span class="cline-any cline-neutral">&nbsp;</span>
909
+ <span class="cline-any cline-neutral">&nbsp;</span>
910
+ <span class="cline-any cline-neutral">&nbsp;</span>
911
+ <span class="cline-any cline-neutral">&nbsp;</span>
912
+ <span class="cline-any cline-yes">22x</span>
913
+ <span class="cline-any cline-neutral">&nbsp;</span>
914
+ <span class="cline-any cline-neutral">&nbsp;</span>
915
+ <span class="cline-any cline-no">&nbsp;</span>
916
+ <span class="cline-any cline-neutral">&nbsp;</span>
917
+ <span class="cline-any cline-neutral">&nbsp;</span>
918
+ <span class="cline-any cline-yes">22x</span>
919
+ <span class="cline-any cline-no">&nbsp;</span>
920
+ <span class="cline-any cline-neutral">&nbsp;</span>
921
+ <span class="cline-any cline-neutral">&nbsp;</span>
922
+ <span class="cline-any cline-neutral">&nbsp;</span>
923
+ <span class="cline-any cline-yes">23x</span>
924
+ <span class="cline-any cline-yes">23x</span>
925
+ <span class="cline-any cline-neutral">&nbsp;</span>
926
+ <span class="cline-any cline-neutral">&nbsp;</span>
927
+ <span class="cline-any cline-neutral">&nbsp;</span>
928
+ <span class="cline-any cline-neutral">&nbsp;</span>
929
+ <span class="cline-any cline-neutral">&nbsp;</span>
930
+ <span class="cline-any cline-neutral">&nbsp;</span>
931
+ <span class="cline-any cline-neutral">&nbsp;</span>
932
+ <span class="cline-any cline-neutral">&nbsp;</span>
933
+ <span class="cline-any cline-neutral">&nbsp;</span>
934
+ <span class="cline-any cline-neutral">&nbsp;</span>
935
+ <span class="cline-any cline-neutral">&nbsp;</span>
936
+ <span class="cline-any cline-yes">22x</span>
937
+ <span class="cline-any cline-neutral">&nbsp;</span>
938
+ <span class="cline-any cline-neutral">&nbsp;</span>
939
+ <span class="cline-any cline-yes">132x</span>
940
+ <span class="cline-any cline-neutral">&nbsp;</span>
941
+ <span class="cline-any cline-neutral">&nbsp;</span>
942
+ <span class="cline-any cline-yes">22x</span>
943
+ <span class="cline-any cline-yes">1x</span>
944
+ <span class="cline-any cline-yes">1x</span>
945
+ <span class="cline-any cline-neutral">&nbsp;</span>
946
+ <span class="cline-any cline-neutral">&nbsp;</span>
947
+ <span class="cline-any cline-yes">22x</span>
948
+ <span class="cline-any cline-yes">22x</span>
949
+ <span class="cline-any cline-neutral">&nbsp;</span>
950
+ <span class="cline-any cline-yes">22x</span>
951
+ <span class="cline-any cline-no">&nbsp;</span>
952
+ <span class="cline-any cline-yes">22x</span>
953
+ <span class="cline-any cline-no">&nbsp;</span>
954
+ <span class="cline-any cline-yes">22x</span>
955
+ <span class="cline-any cline-yes">1x</span>
956
+ <span class="cline-any cline-neutral">&nbsp;</span>
957
+ <span class="cline-any cline-neutral">&nbsp;</span>
958
+ <span class="cline-any cline-yes">22x</span>
959
+ <span class="cline-any cline-neutral">&nbsp;</span>
960
+ <span class="cline-any cline-yes">22x</span>
961
+ <span class="cline-any cline-yes">22x</span>
962
+ <span class="cline-any cline-neutral">&nbsp;</span>
963
+ <span class="cline-any cline-yes">22x</span>
964
+ <span class="cline-any cline-yes">21x</span>
965
+ <span class="cline-any cline-yes">21x</span>
966
+ <span class="cline-any cline-neutral">&nbsp;</span>
967
+ <span class="cline-any cline-neutral">&nbsp;</span>
968
+ <span class="cline-any cline-neutral">&nbsp;</span>
969
+ <span class="cline-any cline-neutral">&nbsp;</span>
970
+ <span class="cline-any cline-neutral">&nbsp;</span>
971
+ <span class="cline-any cline-neutral">&nbsp;</span>
972
+ <span class="cline-any cline-neutral">&nbsp;</span>
973
+ <span class="cline-any cline-yes">63x</span>
974
+ <span class="cline-any cline-neutral">&nbsp;</span>
975
+ <span class="cline-any cline-neutral">&nbsp;</span>
976
+ <span class="cline-any cline-neutral">&nbsp;</span>
977
+ <span class="cline-any cline-yes">21x</span>
978
+ <span class="cline-any cline-yes">21x</span>
979
+ <span class="cline-any cline-neutral">&nbsp;</span>
980
+ <span class="cline-any cline-neutral">&nbsp;</span>
981
+ <span class="cline-any cline-yes">1x</span>
982
+ <span class="cline-any cline-no">&nbsp;</span>
983
+ <span class="cline-any cline-neutral">&nbsp;</span>
984
+ <span class="cline-any cline-neutral">&nbsp;</span>
985
+ <span class="cline-any cline-yes">22x</span>
986
+ <span class="cline-any cline-neutral">&nbsp;</span>
987
+ <span class="cline-any cline-neutral">&nbsp;</span>
988
+ <span class="cline-any cline-neutral">&nbsp;</span>
989
+ <span class="cline-any cline-neutral">&nbsp;</span>
990
+ <span class="cline-any cline-neutral">&nbsp;</span>
991
+ <span class="cline-any cline-no">&nbsp;</span>
992
+ <span class="cline-any cline-neutral">&nbsp;</span>
993
+ <span class="cline-any cline-neutral">&nbsp;</span>
994
+ <span class="cline-any cline-neutral">&nbsp;</span>
995
+ <span class="cline-any cline-neutral">&nbsp;</span>
996
+ <span class="cline-any cline-neutral">&nbsp;</span>
997
+ <span class="cline-any cline-neutral">&nbsp;</span>
998
+ <span class="cline-any cline-yes">8x</span>
999
+ <span class="cline-any cline-yes">8x</span>
1000
+ <span class="cline-any cline-neutral">&nbsp;</span>
1001
+ <span class="cline-any cline-yes">8x</span>
1002
+ <span class="cline-any cline-neutral">&nbsp;</span>
1003
+ <span class="cline-any cline-neutral">&nbsp;</span>
1004
+ <span class="cline-any cline-neutral">&nbsp;</span>
1005
+ <span class="cline-any cline-neutral">&nbsp;</span>
1006
+ <span class="cline-any cline-neutral">&nbsp;</span>
1007
+ <span class="cline-any cline-neutral">&nbsp;</span>
1008
+ <span class="cline-any cline-neutral">&nbsp;</span>
1009
+ <span class="cline-any cline-neutral">&nbsp;</span>
1010
+ <span class="cline-any cline-neutral">&nbsp;</span>
1011
+ <span class="cline-any cline-neutral">&nbsp;</span>
1012
+ <span class="cline-any cline-neutral">&nbsp;</span>
1013
+ <span class="cline-any cline-neutral">&nbsp;</span>
1014
+ <span class="cline-any cline-yes">8x</span>
1015
+ <span class="cline-any cline-neutral">&nbsp;</span>
1016
+ <span class="cline-any cline-yes">8x</span>
1017
+ <span class="cline-any cline-yes">1x</span>
1018
+ <span class="cline-any cline-neutral">&nbsp;</span>
1019
+ <span class="cline-any cline-neutral">&nbsp;</span>
1020
+ <span class="cline-any cline-yes">7x</span>
1021
+ <span class="cline-any cline-yes">1x</span>
1022
+ <span class="cline-any cline-neutral">&nbsp;</span>
1023
+ <span class="cline-any cline-neutral">&nbsp;</span>
1024
+ <span class="cline-any cline-neutral">&nbsp;</span>
1025
+ <span class="cline-any cline-yes">6x</span>
1026
+ <span class="cline-any cline-yes">2x</span>
1027
+ <span class="cline-any cline-neutral">&nbsp;</span>
1028
+ <span class="cline-any cline-yes">4x</span>
1029
+ <span class="cline-any cline-neutral">&nbsp;</span>
1030
+ <span class="cline-any cline-neutral">&nbsp;</span>
1031
+ <span class="cline-any cline-yes">6x</span>
1032
+ <span class="cline-any cline-neutral">&nbsp;</span>
1033
+ <span class="cline-any cline-yes">4x</span>
1034
+ <span class="cline-any cline-yes">4x</span>
1035
+ <span class="cline-any cline-neutral">&nbsp;</span>
1036
+ <span class="cline-any cline-yes">1x</span>
1037
+ <span class="cline-any cline-yes">1x</span>
1038
+ <span class="cline-any cline-neutral">&nbsp;</span>
1039
+ <span class="cline-any cline-yes">1x</span>
1040
+ <span class="cline-any cline-yes">1x</span>
1041
+ <span class="cline-any cline-neutral">&nbsp;</span>
1042
+ <span class="cline-any cline-yes">1x</span>
1043
+ <span class="cline-any cline-neutral">&nbsp;</span>
1044
+ <span class="cline-any cline-neutral">&nbsp;</span>
1045
+ <span class="cline-any cline-yes">5x</span>
1046
+ <span class="cline-any cline-neutral">&nbsp;</span>
1047
+ <span class="cline-any cline-neutral">&nbsp;</span>
1048
+ <span class="cline-any cline-neutral">&nbsp;</span>
1049
+ <span class="cline-any cline-neutral">&nbsp;</span>
1050
+ <span class="cline-any cline-neutral">&nbsp;</span>
1051
+ <span class="cline-any cline-neutral">&nbsp;</span>
1052
+ <span class="cline-any cline-neutral">&nbsp;</span>
1053
+ <span class="cline-any cline-neutral">&nbsp;</span>
1054
+ <span class="cline-any cline-neutral">&nbsp;</span>
1055
+ <span class="cline-any cline-yes">5x</span>
1056
+ <span class="cline-any cline-neutral">&nbsp;</span>
1057
+ <span class="cline-any cline-neutral">&nbsp;</span>
1058
+ <span class="cline-any cline-yes">5x</span>
1059
+ <span class="cline-any cline-neutral">&nbsp;</span>
1060
+ <span class="cline-any cline-yes">5x</span>
1061
+ <span class="cline-any cline-yes">5x</span>
1062
+ <span class="cline-any cline-yes">5x</span>
1063
+ <span class="cline-any cline-yes">5x</span>
1064
+ <span class="cline-any cline-yes">3x</span>
1065
+ <span class="cline-any cline-neutral">&nbsp;</span>
1066
+ <span class="cline-any cline-neutral">&nbsp;</span>
1067
+ <span class="cline-any cline-yes">5x</span>
1068
+ <span class="cline-any cline-yes">5x</span>
1069
+ <span class="cline-any cline-no">&nbsp;</span>
1070
+ <span class="cline-any cline-neutral">&nbsp;</span>
1071
+ <span class="cline-any cline-neutral">&nbsp;</span>
1072
+ <span class="cline-any cline-yes">5x</span>
1073
+ <span class="cline-any cline-yes">5x</span>
1074
+ <span class="cline-any cline-neutral">&nbsp;</span>
1075
+ <span class="cline-any cline-yes">2x</span>
1076
+ <span class="cline-any cline-yes">2x</span>
1077
+ <span class="cline-any cline-neutral">&nbsp;</span>
1078
+ <span class="cline-any cline-no">&nbsp;</span>
1079
+ <span class="cline-any cline-no">&nbsp;</span>
1080
+ <span class="cline-any cline-neutral">&nbsp;</span>
1081
+ <span class="cline-any cline-no">&nbsp;</span>
1082
+ <span class="cline-any cline-no">&nbsp;</span>
1083
+ <span class="cline-any cline-neutral">&nbsp;</span>
1084
+ <span class="cline-any cline-no">&nbsp;</span>
1085
+ <span class="cline-any cline-no">&nbsp;</span>
1086
+ <span class="cline-any cline-neutral">&nbsp;</span>
1087
+ <span class="cline-any cline-no">&nbsp;</span>
1088
+ <span class="cline-any cline-no">&nbsp;</span>
1089
+ <span class="cline-any cline-neutral">&nbsp;</span>
1090
+ <span class="cline-any cline-no">&nbsp;</span>
1091
+ <span class="cline-any cline-no">&nbsp;</span>
1092
+ <span class="cline-any cline-neutral">&nbsp;</span>
1093
+ <span class="cline-any cline-yes">5x</span>
1094
+ <span class="cline-any cline-yes">5x</span>
1095
+ <span class="cline-any cline-yes">5x</span>
1096
+ <span class="cline-any cline-yes">2x</span>
1097
+ <span class="cline-any cline-neutral">&nbsp;</span>
1098
+ <span class="cline-any cline-neutral">&nbsp;</span>
1099
+ <span class="cline-any cline-yes">5x</span>
1100
+ <span class="cline-any cline-yes">5x</span>
1101
+ <span class="cline-any cline-neutral">&nbsp;</span>
1102
+ <span class="cline-any cline-neutral">&nbsp;</span>
1103
+ <span class="cline-any cline-neutral">&nbsp;</span>
1104
+ <span class="cline-any cline-neutral">&nbsp;</span>
1105
+ <span class="cline-any cline-yes">2x</span>
1106
+ <span class="cline-any cline-yes">2x</span>
1107
+ <span class="cline-any cline-neutral">&nbsp;</span>
1108
+ <span class="cline-any cline-neutral">&nbsp;</span>
1109
+ <span class="cline-any cline-no">&nbsp;</span>
1110
+ <span class="cline-any cline-no">&nbsp;</span>
1111
+ <span class="cline-any cline-neutral">&nbsp;</span>
1112
+ <span class="cline-any cline-neutral">&nbsp;</span>
1113
+ <span class="cline-any cline-neutral">&nbsp;</span>
1114
+ <span class="cline-any cline-neutral">&nbsp;</span>
1115
+ <span class="cline-any cline-yes">5x</span>
1116
+ <span class="cline-any cline-neutral">&nbsp;</span>
1117
+ <span class="cline-any cline-yes">1x</span>
1118
+ <span class="cline-any cline-yes">1x</span>
1119
+ <span class="cline-any cline-neutral">&nbsp;</span>
1120
+ <span class="cline-any cline-yes">1x</span>
1121
+ <span class="cline-any cline-yes">1x</span>
1122
+ <span class="cline-any cline-neutral">&nbsp;</span>
1123
+ <span class="cline-any cline-yes">5x</span>
1124
+ <span class="cline-any cline-yes">2x</span>
1125
+ <span class="cline-any cline-neutral">&nbsp;</span>
1126
+ <span class="cline-any cline-neutral">&nbsp;</span>
1127
+ <span class="cline-any cline-yes">5x</span>
1128
+ <span class="cline-any cline-yes">1x</span>
1129
+ <span class="cline-any cline-neutral">&nbsp;</span>
1130
+ <span class="cline-any cline-neutral">&nbsp;</span>
1131
+ <span class="cline-any cline-yes">5x</span>
1132
+ <span class="cline-any cline-yes">1x</span>
1133
+ <span class="cline-any cline-neutral">&nbsp;</span>
1134
+ <span class="cline-any cline-neutral">&nbsp;</span>
1135
+ <span class="cline-any cline-yes">5x</span>
1136
+ <span class="cline-any cline-no">&nbsp;</span>
1137
+ <span class="cline-any cline-neutral">&nbsp;</span>
1138
+ <span class="cline-any cline-neutral">&nbsp;</span>
1139
+ <span class="cline-any cline-yes">5x</span>
1140
+ <span class="cline-any cline-neutral">&nbsp;</span>
1141
+ <span class="cline-any cline-no">&nbsp;</span>
1142
+ <span class="cline-any cline-no">&nbsp;</span>
1143
+ <span class="cline-any cline-neutral">&nbsp;</span>
1144
+ <span class="cline-any cline-no">&nbsp;</span>
1145
+ <span class="cline-any cline-no">&nbsp;</span>
1146
+ <span class="cline-any cline-neutral">&nbsp;</span>
1147
+ <span class="cline-any cline-no">&nbsp;</span>
1148
+ <span class="cline-any cline-no">&nbsp;</span>
1149
+ <span class="cline-any cline-neutral">&nbsp;</span>
1150
+ <span class="cline-any cline-yes">2x</span>
1151
+ <span class="cline-any cline-yes">2x</span>
1152
+ <span class="cline-any cline-neutral">&nbsp;</span>
1153
+ <span class="cline-any cline-no">&nbsp;</span>
1154
+ <span class="cline-any cline-no">&nbsp;</span>
1155
+ <span class="cline-any cline-neutral">&nbsp;</span>
1156
+ <span class="cline-any cline-no">&nbsp;</span>
1157
+ <span class="cline-any cline-no">&nbsp;</span>
1158
+ <span class="cline-any cline-neutral">&nbsp;</span>
1159
+ <span class="cline-any cline-neutral">&nbsp;</span>
1160
+ <span class="cline-any cline-yes">5x</span>
1161
+ <span class="cline-any cline-yes">5x</span>
1162
+ <span class="cline-any cline-yes">2x</span>
1163
+ <span class="cline-any cline-neutral">&nbsp;</span>
1164
+ <span class="cline-any cline-neutral">&nbsp;</span>
1165
+ <span class="cline-any cline-yes">5x</span>
1166
+ <span class="cline-any cline-neutral">&nbsp;</span>
1167
+ <span class="cline-any cline-neutral">&nbsp;</span>
1168
+ <span class="cline-any cline-neutral">&nbsp;</span>
1169
+ <span class="cline-any cline-neutral">&nbsp;</span>
1170
+ <span class="cline-any cline-neutral">&nbsp;</span>
1171
+ <span class="cline-any cline-neutral">&nbsp;</span>
1172
+ <span class="cline-any cline-neutral">&nbsp;</span>
1173
+ <span class="cline-any cline-yes">5x</span>
1174
+ <span class="cline-any cline-neutral">&nbsp;</span>
1175
+ <span class="cline-any cline-neutral">&nbsp;</span>
1176
+ <span class="cline-any cline-neutral">&nbsp;</span>
1177
+ <span class="cline-any cline-neutral">&nbsp;</span>
1178
+ <span class="cline-any cline-neutral">&nbsp;</span>
1179
+ <span class="cline-any cline-neutral">&nbsp;</span>
1180
+ <span class="cline-any cline-neutral">&nbsp;</span>
1181
+ <span class="cline-any cline-yes">4x</span>
1182
+ <span class="cline-any cline-yes">4x</span>
1183
+ <span class="cline-any cline-yes">4x</span>
1184
+ <span class="cline-any cline-neutral">&nbsp;</span>
1185
+ <span class="cline-any cline-neutral">&nbsp;</span>
1186
+ <span class="cline-any cline-neutral">&nbsp;</span>
1187
+ <span class="cline-any cline-neutral">&nbsp;</span>
1188
+ <span class="cline-any cline-neutral">&nbsp;</span>
1189
+ <span class="cline-any cline-yes">4x</span>
1190
+ <span class="cline-any cline-yes">8x</span>
1191
+ <span class="cline-any cline-yes">8x</span>
1192
+ <span class="cline-any cline-yes">7x</span>
1193
+ <span class="cline-any cline-yes">4x</span>
1194
+ <span class="cline-any cline-yes">2x</span>
1195
+ <span class="cline-any cline-neutral">&nbsp;</span>
1196
+ <span class="cline-any cline-yes">4x</span>
1197
+ <span class="cline-any cline-yes">2x</span>
1198
+ <span class="cline-any cline-neutral">&nbsp;</span>
1199
+ <span class="cline-any cline-neutral">&nbsp;</span>
1200
+ <span class="cline-any cline-yes">3x</span>
1201
+ <span class="cline-any cline-neutral">&nbsp;</span>
1202
+ <span class="cline-any cline-neutral">&nbsp;</span>
1203
+ <span class="cline-any cline-neutral">&nbsp;</span>
1204
+ <span class="cline-any cline-yes">4x</span>
1205
+ <span class="cline-any cline-yes">4x</span>
1206
+ <span class="cline-any cline-neutral">&nbsp;</span>
1207
+ <span class="cline-any cline-neutral">&nbsp;</span>
1208
+ <span class="cline-any cline-neutral">&nbsp;</span>
1209
+ <span class="cline-any cline-neutral">&nbsp;</span>
1210
+ <span class="cline-any cline-neutral">&nbsp;</span>
1211
+ <span class="cline-any cline-neutral">&nbsp;</span>
1212
+ <span class="cline-any cline-neutral">&nbsp;</span>
1213
+ <span class="cline-any cline-yes">4x</span>
1214
+ <span class="cline-any cline-neutral">&nbsp;</span>
1215
+ <span class="cline-any cline-neutral">&nbsp;</span>
1216
+ <span class="cline-any cline-neutral">&nbsp;</span>
1217
+ <span class="cline-any cline-yes">1x</span>
1218
+ <span class="cline-any cline-yes">3x</span>
1219
+ <span class="cline-any cline-yes">2x</span>
1220
+ <span class="cline-any cline-yes">1x</span>
1221
+ <span class="cline-any cline-yes">1x</span>
1222
+ <span class="cline-any cline-neutral">&nbsp;</span>
1223
+ <span class="cline-any cline-yes">4x</span>
1224
+ <span class="cline-any cline-yes">3x</span>
1225
+ <span class="cline-any cline-yes">3x</span>
1226
+ <span class="cline-any cline-neutral">&nbsp;</span>
1227
+ <span class="cline-any cline-yes">4x</span>
1228
+ <span class="cline-any cline-yes">3x</span>
1229
+ <span class="cline-any cline-neutral">&nbsp;</span>
1230
+ <span class="cline-any cline-yes">4x</span>
1231
+ <span class="cline-any cline-neutral">&nbsp;</span>
1232
+ <span class="cline-any cline-neutral">&nbsp;</span>
1233
+ <span class="cline-any cline-neutral">&nbsp;</span>
1234
+ <span class="cline-any cline-neutral">&nbsp;</span>
1235
+ <span class="cline-any cline-neutral">&nbsp;</span>
1236
+ <span class="cline-any cline-neutral">&nbsp;</span>
1237
+ <span class="cline-any cline-neutral">&nbsp;</span>
1238
+ <span class="cline-any cline-yes">1x</span>
1239
+ <span class="cline-any cline-neutral">&nbsp;</span>
1240
+ <span class="cline-any cline-yes">1x</span>
1241
+ <span class="cline-any cline-yes">1x</span>
1242
+ <span class="cline-any cline-neutral">&nbsp;</span>
1243
+ <span class="cline-any cline-yes">1x</span>
1244
+ <span class="cline-any cline-yes">1x</span>
1245
+ <span class="cline-any cline-neutral">&nbsp;</span>
1246
+ <span class="cline-any cline-yes">1x</span>
1247
+ <span class="cline-any cline-neutral">&nbsp;</span>
1248
+ <span class="cline-any cline-yes">1x</span>
1249
+ <span class="cline-any cline-neutral">&nbsp;</span>
1250
+ <span class="cline-any cline-neutral">&nbsp;</span>
1251
+ <span class="cline-any cline-neutral">&nbsp;</span>
1252
+ <span class="cline-any cline-neutral">&nbsp;</span>
1253
+ <span class="cline-any cline-neutral">&nbsp;</span>
1254
+ <span class="cline-any cline-neutral">&nbsp;</span>
1255
+ <span class="cline-any cline-neutral">&nbsp;</span>
1256
+ <span class="cline-any cline-neutral">&nbsp;</span>
1257
+ <span class="cline-any cline-neutral">&nbsp;</span>
1258
+ <span class="cline-any cline-neutral">&nbsp;</span>
1259
+ <span class="cline-any cline-neutral">&nbsp;</span>
1260
+ <span class="cline-any cline-neutral">&nbsp;</span>
1261
+ <span class="cline-any cline-yes">1x</span>
1262
+ <span class="cline-any cline-neutral">&nbsp;</span>
1263
+ <span class="cline-any cline-neutral">&nbsp;</span>
1264
+ <span class="cline-any cline-neutral">&nbsp;</span>
1265
+ <span class="cline-any cline-neutral">&nbsp;</span>
1266
+ <span class="cline-any cline-neutral">&nbsp;</span>
1267
+ <span class="cline-any cline-neutral">&nbsp;</span>
1268
+ <span class="cline-any cline-neutral">&nbsp;</span>
1269
+ <span class="cline-any cline-yes">15x</span>
1270
+ <span class="cline-any cline-neutral">&nbsp;</span>
1271
+ <span class="cline-any cline-yes">15x</span>
1272
+ <span class="cline-any cline-neutral">&nbsp;</span>
1273
+ <span class="cline-any cline-yes">15x</span>
1274
+ <span class="cline-any cline-neutral">&nbsp;</span>
1275
+ <span class="cline-any cline-neutral">&nbsp;</span>
1276
+ <span class="cline-any cline-neutral">&nbsp;</span>
1277
+ <span class="cline-any cline-neutral">&nbsp;</span>
1278
+ <span class="cline-any cline-neutral">&nbsp;</span>
1279
+ <span class="cline-any cline-neutral">&nbsp;</span>
1280
+ <span class="cline-any cline-neutral">&nbsp;</span>
1281
+ <span class="cline-any cline-neutral">&nbsp;</span>
1282
+ <span class="cline-any cline-neutral">&nbsp;</span>
1283
+ <span class="cline-any cline-neutral">&nbsp;</span>
1284
+ <span class="cline-any cline-neutral">&nbsp;</span>
1285
+ <span class="cline-any cline-neutral">&nbsp;</span>
1286
+ <span class="cline-any cline-neutral">&nbsp;</span>
1287
+ <span class="cline-any cline-neutral">&nbsp;</span>
1288
+ <span class="cline-any cline-neutral">&nbsp;</span>
1289
+ <span class="cline-any cline-neutral">&nbsp;</span>
1290
+ <span class="cline-any cline-neutral">&nbsp;</span>
1291
+ <span class="cline-any cline-neutral">&nbsp;</span>
1292
+ <span class="cline-any cline-neutral">&nbsp;</span>
1293
+ <span class="cline-any cline-neutral">&nbsp;</span>
1294
+ <span class="cline-any cline-neutral">&nbsp;</span>
1295
+ <span class="cline-any cline-neutral">&nbsp;</span>
1296
+ <span class="cline-any cline-neutral">&nbsp;</span>
1297
+ <span class="cline-any cline-neutral">&nbsp;</span>
1298
+ <span class="cline-any cline-neutral">&nbsp;</span>
1299
+ <span class="cline-any cline-neutral">&nbsp;</span>
1300
+ <span class="cline-any cline-yes">15x</span>
1301
+ <span class="cline-any cline-neutral">&nbsp;</span>
1302
+ <span class="cline-any cline-yes">15x</span>
1303
+ <span class="cline-any cline-yes">2x</span>
1304
+ <span class="cline-any cline-neutral">&nbsp;</span>
1305
+ <span class="cline-any cline-neutral">&nbsp;</span>
1306
+ <span class="cline-any cline-yes">15x</span>
1307
+ <span class="cline-any cline-yes">1x</span>
1308
+ <span class="cline-any cline-neutral">&nbsp;</span>
1309
+ <span class="cline-any cline-neutral">&nbsp;</span>
1310
+ <span class="cline-any cline-yes">15x</span>
1311
+ <span class="cline-any cline-yes">3x</span>
1312
+ <span class="cline-any cline-yes">3x</span>
1313
+ <span class="cline-any cline-yes">3x</span>
1314
+ <span class="cline-any cline-neutral">&nbsp;</span>
1315
+ <span class="cline-any cline-neutral">&nbsp;</span>
1316
+ <span class="cline-any cline-yes">15x</span>
1317
+ <span class="cline-any cline-yes">3x</span>
1318
+ <span class="cline-any cline-neutral">&nbsp;</span>
1319
+ <span class="cline-any cline-neutral">&nbsp;</span>
1320
+ <span class="cline-any cline-yes">15x</span>
1321
+ <span class="cline-any cline-yes">4x</span>
1322
+ <span class="cline-any cline-neutral">&nbsp;</span>
1323
+ <span class="cline-any cline-neutral">&nbsp;</span>
1324
+ <span class="cline-any cline-yes">15x</span>
1325
+ <span class="cline-any cline-yes">1x</span>
1326
+ <span class="cline-any cline-neutral">&nbsp;</span>
1327
+ <span class="cline-any cline-yes">15x</span>
1328
+ <span class="cline-any cline-yes">1x</span>
1329
+ <span class="cline-any cline-yes">1x</span>
1330
+ <span class="cline-any cline-neutral">&nbsp;</span>
1331
+ <span class="cline-any cline-yes">15x</span>
1332
+ <span class="cline-any cline-yes">2x</span>
1333
+ <span class="cline-any cline-neutral">&nbsp;</span>
1334
+ <span class="cline-any cline-yes">15x</span>
1335
+ <span class="cline-any cline-yes">4x</span>
1336
+ <span class="cline-any cline-neutral">&nbsp;</span>
1337
+ <span class="cline-any cline-neutral">&nbsp;</span>
1338
+ <span class="cline-any cline-neutral">&nbsp;</span>
1339
+ <span class="cline-any cline-neutral">&nbsp;</span>
1340
+ <span class="cline-any cline-yes">15x</span>
1341
+ <span class="cline-any cline-yes">3x</span>
1342
+ <span class="cline-any cline-neutral">&nbsp;</span>
1343
+ <span class="cline-any cline-yes">15x</span>
1344
+ <span class="cline-any cline-yes">3x</span>
1345
+ <span class="cline-any cline-neutral">&nbsp;</span>
1346
+ <span class="cline-any cline-yes">15x</span>
1347
+ <span class="cline-any cline-yes">2x</span>
1348
+ <span class="cline-any cline-neutral">&nbsp;</span>
1349
+ <span class="cline-any cline-neutral">&nbsp;</span>
1350
+ <span class="cline-any cline-yes">15x</span>
1351
+ <span class="cline-any cline-neutral">&nbsp;</span>
1352
+ <span class="cline-any cline-yes">15x</span>
1353
+ <span class="cline-any cline-yes">15x</span>
1354
+ <span class="cline-any cline-neutral">&nbsp;</span>
1355
+ <span class="cline-any cline-neutral">&nbsp;</span>
1356
+ <span class="cline-any cline-neutral">&nbsp;</span>
1357
+ <span class="cline-any cline-neutral">&nbsp;</span>
1358
+ <span class="cline-any cline-neutral">&nbsp;</span>
1359
+ <span class="cline-any cline-neutral">&nbsp;</span>
1360
+ <span class="cline-any cline-neutral">&nbsp;</span>
1361
+ <span class="cline-any cline-yes">15x</span>
1362
+ <span class="cline-any cline-neutral">&nbsp;</span>
1363
+ <span class="cline-any cline-neutral">&nbsp;</span>
1364
+ <span class="cline-any cline-neutral">&nbsp;</span>
1365
+ <span class="cline-any cline-neutral">&nbsp;</span>
1366
+ <span class="cline-any cline-neutral">&nbsp;</span>
1367
+ <span class="cline-any cline-neutral">&nbsp;</span>
1368
+ <span class="cline-any cline-neutral">&nbsp;</span>
1369
+ <span class="cline-any cline-neutral">&nbsp;</span>
1370
+ <span class="cline-any cline-neutral">&nbsp;</span>
1371
+ <span class="cline-any cline-yes">1x</span>
1372
+ <span class="cline-any cline-yes">1x</span>
1373
+ <span class="cline-any cline-yes">2x</span>
1374
+ <span class="cline-any cline-neutral">&nbsp;</span>
1375
+ <span class="cline-any cline-yes">1x</span>
1376
+ <span class="cline-any cline-neutral">&nbsp;</span>
1377
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import _ from "lodash";
1378
+ import File from "./File";
1379
+ import Model from "./Model";
1380
+ import { mediaType } from "./fileType";
1381
+ import { clone, keys, flatten, filter, values } from "ramda";
1382
+ &nbsp;
1383
+ /**
1384
+ * [media description]
1385
+ * @type {[type]}
1386
+ */
1387
+ export default class Ingest extends Model {
1388
+ constructor(data) {
1389
+ super(data);
1390
+ this._resource = "ingests";
1391
+ }
1392
+ <span class="fstat-no" title="function not covered" > st</span>atic get _resource() {
1393
+ <span class="cstat-no" title="statement not covered" > return "ingests";</span>
1394
+ }
1395
+ /**
1396
+ * Returns path given an ingest record
1397
+ *
1398
+ */
1399
+ renderPath() {
1400
+ let ingest = this.data();
1401
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!ingest.asset.project.studio.slug) {
1402
+ <span class="cstat-no" title="statement not covered" > throw new Error("missing studio slug");</span>
1403
+ }
1404
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!ingest.asset.project.slug) {
1405
+ <span class="cstat-no" title="statement not covered" > throw new Error("missing asset.project.slug");</span>
1406
+ }
1407
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!ingest.asset.project.slug) {
1408
+ <span class="cstat-no" title="statement not covered" > throw new Error("missing asset.project.slug");</span>
1409
+ }
1410
+ return [
1411
+ ingest.asset.project.studio.slug,
1412
+ ingest.asset.project.slug,
1413
+ ingest.asset.type
1414
+ ].join("/");
1415
+ }
1416
+ /**
1417
+ * Create a File from an Ingest object with path and filename
1418
+ *
1419
+ * @param {object} params
1420
+ */
1421
+ renderFilename({ allTags, allTypes, extension } = (<span class="branch-0 cbranch-no" title="branch not covered" >params = {})</span>) {
1422
+ let asset = this.data().asset;
1423
+ let options = this.data().selected.download;
1424
+ let mediaType = this.data().asset.mediaType;
1425
+ &nbsp;
1426
+ if (!asset.project) {
1427
+ throw new Error("missing asset.project");
1428
+ }
1429
+ &nbsp;
1430
+ if (asset.project &amp;&amp; !asset.project.filePrefix) {
1431
+ throw new Error("missing asset.project.filePrefix");
1432
+ }
1433
+ &nbsp;
1434
+ if (!asset.name) {
1435
+ throw new Error("missing asset.name");
1436
+ }
1437
+ &nbsp;
1438
+ if (!asset.type) {
1439
+ throw new Error("missing asset.type");
1440
+ }
1441
+ &nbsp;
1442
+ let defaults = {
1443
+ language: null,
1444
+ country: null,
1445
+ version: null,
1446
+ tags: {
1447
+ Usage: null,
1448
+ Aspect: null,
1449
+ SubDub: {
1450
+ sub: null,
1451
+ dub: null
1452
+ },
1453
+ Resolution: null,
1454
+ "Frame Mode": null,
1455
+ Framerate: null,
1456
+ Text: null,
1457
+ Codec: null,
1458
+ Extra: []
1459
+ }
1460
+ };
1461
+ options = _.merge(defaults, options);
1462
+ &nbsp;
1463
+ if (!options.language) {
1464
+ throw new Error("missing options.language");
1465
+ }
1466
+ &nbsp;
1467
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (mediaType &amp;&amp; mediaType == "video" &amp;&amp; !options.tags.Codec) {
1468
+ <span class="cstat-no" title="statement not covered" > throw new Error("missing options.tags.Codec");</span>
1469
+ }
1470
+ &nbsp;
1471
+ if (mediaType &amp;&amp; mediaType == "video" &amp;&amp; !options.tags.Resolution) {
1472
+ throw new Error("missing options.tags.Resolution");
1473
+ }
1474
+ &nbsp;
1475
+ if (mediaType &amp;&amp; mediaType == "video" &amp;&amp; !options.tags.Framerate) {
1476
+ throw new Error("missing options.tags.Framerate");
1477
+ }
1478
+ &nbsp;
1479
+ if (mediaType == "video" &amp;&amp; !options.tags["Frame Mode"]) {
1480
+ throw new Error("missing options.tags[Frame Mode]");
1481
+ }
1482
+ &nbsp;
1483
+ function assetType(asset, types) {
1484
+ if (/trailer/.test(asset.type)) {
1485
+ return false;
1486
+ }
1487
+ &nbsp;
1488
+ let matchingType = _.find(types, { name: asset.type });
1489
+ if (!matchingType) {
1490
+ throw new Error(`Asset type "${asset.type}" could not be found`);
1491
+ }
1492
+ &nbsp;
1493
+ return (
1494
+ matchingType.file || matchingType.name.replace(".", "-").toUpperCase()
1495
+ );
1496
+ }
1497
+ &nbsp;
1498
+ function assetTitle(asset) {
1499
+ let prefix = "";
1500
+ let name = asset.slug.toUpperCase().replace("INT-L", "INTL");
1501
+ if (/trailer/.test(asset.type)) {
1502
+ switch (asset.type) {
1503
+ case "trailer.intl":
1504
+ prefix = "ITR-";
1505
+ name = name.replace(/INTL-TRAILER-/, "");
1506
+ break;
1507
+ case "trailer":
1508
+ prefix = "TR-";
1509
+ name = name.replace(/TRAILER-/, "");
1510
+ break;
1511
+ case "trailer.us":
1512
+ prefix = "DTR-";
1513
+ name = name.replace(/DOMESTIC-TRAILER-/, "");
1514
+ break;
1515
+ }
1516
+ }
1517
+ return prefix + name;
1518
+ }
1519
+ &nbsp;
1520
+ function runningTime(asset) {
1521
+ let matches = asset.type.match(/^film-clip|^featurette/);
1522
+ if (!matches) {
1523
+ return;
1524
+ }
1525
+ &nbsp;
1526
+ let minutes = Math.floor(asset.length / 60);
1527
+ let seconds = asset.length % 60;
1528
+ &nbsp;
1529
+ let result = "";
1530
+ &nbsp;
1531
+ if (minutes &gt; 0) {
1532
+ result += minutes + "min";
1533
+ }
1534
+ &nbsp;
1535
+ if (seconds &gt; 0) {
1536
+ result += seconds + "sec";
1537
+ }
1538
+ &nbsp;
1539
+ return result;
1540
+ }
1541
+ &nbsp;
1542
+ function locale(country, language) {
1543
+ if (language.includes("-")) {
1544
+ country = "";
1545
+ }
1546
+ return [language, country]
1547
+ .filter(str =&gt; {
1548
+ return !!str &amp;&amp; str !== "WW";
1549
+ })
1550
+ .join("-");
1551
+ }
1552
+ &nbsp;
1553
+ function textType(subDub, text) {
1554
+ if (!subDub || (!subDub.sub &amp;&amp; !subDub.dub)) {
1555
+ return text;
1556
+ }
1557
+ &nbsp;
1558
+ let result = [];
1559
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (subDub.sub) {
1560
+ result.push("sub");
1561
+ }
1562
+ &nbsp;
1563
+ if (subDub.dub) {
1564
+ result.push("dub");
1565
+ }
1566
+ &nbsp;
1567
+ return result;
1568
+ }
1569
+ &nbsp;
1570
+ function matchSet(allTags, tags) {
1571
+ let selectedTags = _(tags)
1572
+ .values()
1573
+ .flatten()
1574
+ .value();
1575
+ &nbsp;
1576
+ let setTag = _(allTags)
1577
+ .filter("set")
1578
+ .find(<span class="fstat-no" title="function not covered" >se</span>tTag =&gt; {
1579
+ <span class="cstat-no" title="statement not covered" > return _.difference(setTag.set, selectedTags).length === 0;</span>
1580
+ });
1581
+ &nbsp;
1582
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (setTag) {
1583
+ <span class="cstat-no" title="statement not covered" > return setTag.name;</span>
1584
+ }
1585
+ }
1586
+ &nbsp;
1587
+ let tags = options.tags,
1588
+ parts = [
1589
+ asset.project.filePrefix,
1590
+ assetType(asset, allTypes),
1591
+ assetTitle(asset),
1592
+ runningTime(asset),
1593
+ locale(options.country, options.language),
1594
+ textType(tags.SubDub, tags.Text),
1595
+ tags.Extra.join("_"),
1596
+ options.version,
1597
+ tags.Codec
1598
+ ];
1599
+ &nbsp;
1600
+ parts = _(parts)
1601
+ .flatten()
1602
+ .filter()
1603
+ .map(part =&gt; part.toUpperCase());
1604
+ &nbsp;
1605
+ // if Aspect and Standard are available, then set the encodeName accoring to naming standard
1606
+ if (mediaType == 'video' &amp;&amp; tags.Aspect &amp;&amp; tags.Standard) {
1607
+ let encodeName = `${tags.Standard.toUpperCase()}-${tags.Aspect.replace(':', 'X')}`;
1608
+ parts = parts.push(`${encodeName}`);
1609
+ }
1610
+ &nbsp;
1611
+ let matchedSet = matchSet(allTags, options.tags);
1612
+ let requiredInfo = tags.Resolution &amp;&amp; tags["Frame Mode"] &amp;&amp; tags.Framerate;
1613
+ &nbsp;
1614
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (matchedSet) {
1615
+ <span class="cstat-no" title="statement not covered" > parts = parts.push(matchedSet);</span>
1616
+ } else <span class="missing-if-branch" title="if path not taken" >I</span>if (mediaType == "video" &amp;&amp; tags.Resolution &amp;&amp; !requiredInfo) {
1617
+ <span class="cstat-no" title="statement not covered" > parts = parts.push(tags.Resolution.replace(/\d+x/, ""));</span>
1618
+ } else if (mediaType == "image" &amp;&amp; tags.Resolution) {
1619
+ parts = parts.push(tags.Resolution);
1620
+ }
1621
+ &nbsp;
1622
+ let name = parts.join("_");
1623
+ &nbsp;
1624
+ let hasResInfo = name.match(/\d+(i|p)/i);
1625
+ let hasAllInfo = name.match(/\d+(i|p)\d+/i);
1626
+ &nbsp;
1627
+ if (requiredInfo &amp;&amp; !hasResInfo &amp;&amp; !hasAllInfo) {
1628
+ let res = tags.Resolution;
1629
+ let encodeTag = [
1630
+ hasResInfo ? <span class="branch-0 cbranch-no" title="branch not covered" >"" </span>: res.indexOf("x") ? res.replace(/\d+x/, "") : <span class="branch-1 cbranch-no" title="branch not covered" >res,</span>
1631
+ res.match(/i|p/i) &amp;&amp; !hasResInfo
1632
+ ? ""
1633
+ : tags["Frame Mode"].toLowerCase().slice(0, 1),
1634
+ tags.Framerate.replace(".", "").toUpperCase()
1635
+ ]
1636
+ .filter(val =&gt; {
1637
+ return val;
1638
+ })
1639
+ .join("");
1640
+ &nbsp;
1641
+ let match = new RegExp(encodeTag, "i");
1642
+ name = name.match(match)
1643
+ ? <span class="branch-0 cbranch-no" title="branch not covered" >name.replace(match, encodeTag)</span>
1644
+ : name + "_" + encodeTag;
1645
+ } else <span class="missing-if-branch" title="if path not taken" >I</span>if (hasResInfo &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >!hasAllInfo </span>&amp;&amp; <span class="branch-2 cbranch-no" title="branch not covered" >tags.Framerate)</span> {
1646
+ <span class="cstat-no" title="statement not covered" > name += tags.Framerate.replace(".", "").toUpperCase();</span>
1647
+ }
1648
+ &nbsp;
1649
+ return `${name}.${extension}`;
1650
+ }
1651
+ /**
1652
+ * Returns the mediaType of the ingest
1653
+ */
1654
+ <span class="fstat-no" title="function not covered" > me</span>diaType() {
1655
+ <span class="cstat-no" title="statement not covered" > return this.src.mediaType;</span>
1656
+ }
1657
+ /**
1658
+ * Maps mediainfo metadata into ingest Tag format
1659
+ *
1660
+ */
1661
+ mapFromMediainfo() {
1662
+ let info = this.mediainfo;
1663
+ let mediaType = this.source.mediaType;
1664
+ &nbsp;
1665
+ let schema = {
1666
+ Aspect: null,
1667
+ Standard: null,
1668
+ Resolution: null,
1669
+ Codec: null,
1670
+ "Frame Mode": null,
1671
+ Text: null,
1672
+ Usage: null,
1673
+ Extra: [],
1674
+ Framerate: null,
1675
+ Duration: null
1676
+ };
1677
+ &nbsp;
1678
+ let tags = {};
1679
+ &nbsp;
1680
+ if (!info.File) {
1681
+ throw "missing info.File";
1682
+ }
1683
+ &nbsp;
1684
+ if (!info.File.track) {
1685
+ throw "missing info.File.track";
1686
+ }
1687
+ &nbsp;
1688
+ let general;
1689
+ if (!Array.isArray(info["File"]["track"])) {
1690
+ general = info["File"]["track"];
1691
+ } else {
1692
+ general = _.find(info["File"]["track"], { _type: "General" });
1693
+ }
1694
+ &nbsp;
1695
+ switch (mediaType) {
1696
+ case "video":
1697
+ mediaType = "Video";
1698
+ break;
1699
+ case "image":
1700
+ mediaType = "Image";
1701
+ break;
1702
+ default:
1703
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (general.Format &amp;&amp; general.Format == "MXF") {
1704
+ tags.Usage = "broadcast";
1705
+ }
1706
+ return tags;
1707
+ }
1708
+ &nbsp;
1709
+ let mediainfoDefaults = {
1710
+ DisplayAspectRatio: "",
1711
+ Format: "",
1712
+ Standard: "",
1713
+ Height: "",
1714
+ Width: "",
1715
+ FrameRate: "",
1716
+ ScanType: ""
1717
+ };
1718
+ &nbsp;
1719
+ let media = _.find(info["File"]["track"], {
1720
+ _type: mediaType
1721
+ });
1722
+ media = _.merge({}, mediainfoDefaults, media);
1723
+ &nbsp;
1724
+ let width = parseInt(media["Width"].replace(" ", "").match(/[0-9 ]+/));
1725
+ let height = parseInt(media["Height"].replace(" ", "").match(/[0-9 ]+/));
1726
+ let Resolution = width &amp;&amp; height ? `${width}x${height}` : null;
1727
+ if (Resolution) {
1728
+ tags.Resolution = Resolution;
1729
+ }
1730
+ &nbsp;
1731
+ let Standard = media["Standard"] ? <span class="branch-0 cbranch-no" title="branch not covered" >media["Standard"].toLowerCase() </span>: null;
1732
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (Standard) {
1733
+ <span class="cstat-no" title="statement not covered" > tags.Standard = Standard;</span>
1734
+ }
1735
+ &nbsp;
1736
+ let framerate = media["FrameRate"];
1737
+ switch (framerate) {
1738
+ case "23.976":
1739
+ framerate = "23.98";
1740
+ break;
1741
+ <span class="branch-1 cbranch-no" title="branch not covered" > case "24.000":</span>
1742
+ <span class="cstat-no" title="statement not covered" > framerate = "24";</span>
1743
+ <span class="cstat-no" title="statement not covered" > break;</span>
1744
+ <span class="branch-2 cbranch-no" title="branch not covered" > case "25.000":</span>
1745
+ <span class="cstat-no" title="statement not covered" > framerate = "25";</span>
1746
+ <span class="cstat-no" title="statement not covered" > break;</span>
1747
+ <span class="branch-3 cbranch-no" title="branch not covered" > case "29.970":</span>
1748
+ <span class="cstat-no" title="statement not covered" > framerate = "29.97";</span>
1749
+ <span class="cstat-no" title="statement not covered" > break;</span>
1750
+ <span class="branch-4 cbranch-no" title="branch not covered" > case "50.000":</span>
1751
+ <span class="cstat-no" title="statement not covered" > framerate = "50";</span>
1752
+ <span class="cstat-no" title="statement not covered" > break;</span>
1753
+ <span class="branch-5 cbranch-no" title="branch not covered" > case "59.940":</span>
1754
+ <span class="cstat-no" title="statement not covered" > framerate = "59.94";</span>
1755
+ <span class="cstat-no" title="statement not covered" > break;</span>
1756
+ }
1757
+ framerate = parseFloat(framerate).toString();
1758
+ framerate = framerate != "NaN" ? framerate : null;
1759
+ if (framerate) {
1760
+ tags.Framerate = framerate;
1761
+ }
1762
+ &nbsp;
1763
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (!tags.Standard) {
1764
+ switch (tags.Framerate) {
1765
+ <span class="branch-0 cbranch-no" title="branch not covered" > case "24":</span>
1766
+ case "23.98":
1767
+ case "29.97":
1768
+ case "59.94":
1769
+ tags.Standard = "ntsc";
1770
+ break;
1771
+ <span class="branch-4 cbranch-no" title="branch not covered" > case "25":</span>
1772
+ <span class="branch-5 cbranch-no" title="branch not covered" > case "50":</span>
1773
+ <span class="cstat-no" title="statement not covered" > tags.Standard = "pal";</span>
1774
+ <span class="cstat-no" title="statement not covered" > break;</span>
1775
+ }
1776
+ }
1777
+ &nbsp;
1778
+ let Codec;
1779
+ switch (media["Format"]) {
1780
+ case "AVC":
1781
+ Codec = "h264";
1782
+ break;
1783
+ case "ProRes":
1784
+ Codec = "prores";
1785
+ break;
1786
+ }
1787
+ if (Codec) {
1788
+ tags.Codec = Codec;
1789
+ }
1790
+ &nbsp;
1791
+ if (tags.Codec == "h264") {
1792
+ tags.Usage = "online";
1793
+ }
1794
+ &nbsp;
1795
+ if (tags.Codec == "prores") {
1796
+ tags.Usage = "broadcast";
1797
+ }
1798
+ &nbsp;
1799
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (general &amp;&amp; general["Format"] == "MXF") {
1800
+ <span class="cstat-no" title="statement not covered" > tags.Usage = "broadcast";</span>
1801
+ }
1802
+ &nbsp;
1803
+ switch (media["DisplayAspectRatio"]) {
1804
+ <span class="branch-0 cbranch-no" title="branch not covered" > case "1.000":</span>
1805
+ <span class="cstat-no" title="statement not covered" > tags.Aspect = "1:1";</span>
1806
+ <span class="cstat-no" title="statement not covered" > break;</span>
1807
+ <span class="branch-1 cbranch-no" title="branch not covered" > case "1.347":</span>
1808
+ <span class="cstat-no" title="statement not covered" > tags.Aspect = "4:3";</span>
1809
+ <span class="cstat-no" title="statement not covered" > break;</span>
1810
+ <span class="branch-2 cbranch-no" title="branch not covered" > case "1.756":</span>
1811
+ <span class="cstat-no" title="statement not covered" > tags.Aspect = "16:9";</span>
1812
+ <span class="cstat-no" title="statement not covered" > break;</span>
1813
+ case "1.778":
1814
+ tags.Aspect = "16:9";
1815
+ break;
1816
+ <span class="branch-4 cbranch-no" title="branch not covered" > case "1.366":</span>
1817
+ <span class="cstat-no" title="statement not covered" > tags.Aspect = "4:3";</span>
1818
+ <span class="cstat-no" title="statement not covered" > break;</span>
1819
+ <span class="branch-5 cbranch-no" title="branch not covered" > case "0.562":</span>
1820
+ <span class="cstat-no" title="statement not covered" > tags.Aspect = "9:16";</span>
1821
+ <span class="cstat-no" title="statement not covered" > break;</span>
1822
+ }
1823
+ &nbsp;
1824
+ let ScanType = media["ScanType"].toLowerCase() || null;
1825
+ if (ScanType) {
1826
+ tags["Frame Mode"] = ScanType;
1827
+ }
1828
+ &nbsp;
1829
+ let ingest = {
1830
+ selected: {
1831
+ download: {
1832
+ tags: tags
1833
+ }
1834
+ }
1835
+ };
1836
+ &nbsp;
1837
+ return ingest;
1838
+ }
1839
+ /**
1840
+ * Maps parsed filename data to a partial ingest record for later merging
1841
+ * @param {*} filename
1842
+ * @param {*} allTags
1843
+ */
1844
+ mapFromFilename(params) {
1845
+ let { allTags } = params;
1846
+ let filename = this.filename;
1847
+ let tags = {
1848
+ SubDub: {
1849
+ sub: null,
1850
+ dub: null
1851
+ }
1852
+ };
1853
+ filename.file.tags.forEach(tag =&gt; {
1854
+ let foundTag = _.find(allTags, { name: tag });
1855
+ if (foundTag) {
1856
+ if (foundTag.type == "SubDub") {
1857
+ if (foundTag.name == "sub") {
1858
+ tags.SubDub.sub = true;
1859
+ }
1860
+ if (foundTag.name == "dub") {
1861
+ tags.SubDub.dub = true;
1862
+ }
1863
+ } else {
1864
+ tags[foundTag.type] = foundTag.name;
1865
+ }
1866
+ }
1867
+ });
1868
+ tags.Extra = filename.extra;
1869
+ let ingest = {
1870
+ selected: {
1871
+ download: {
1872
+ tags: tags
1873
+ },
1874
+ preview: {}
1875
+ }
1876
+ };
1877
+ if (
1878
+ filename.file.tags.includes("sub") &amp;&amp;
1879
+ filename.file.tags.includes("dub")
1880
+ ) {
1881
+ ingest.selected.preview.type = "both";
1882
+ } else if (filename.file.tags.includes("sub")) {
1883
+ ingest.selected.preview.type = "sub";
1884
+ } else <span class="missing-if-branch" title="else path not taken" >E</span>if (filename.file.tags.includes("dub")) {
1885
+ ingest.selected.preview.type = "dub";
1886
+ }
1887
+ if (filename.file.language) {
1888
+ ingest.selected.preview.language = filename.file.language;
1889
+ ingest.selected.download.language = filename.file.language;
1890
+ }
1891
+ if (filename.file.country) {
1892
+ ingest.selected.download.country = filename.file.country;
1893
+ }
1894
+ return ingest;
1895
+ }
1896
+ /**
1897
+ * Create a File from an Ingest object
1898
+ *
1899
+ * @param {object} params
1900
+ */
1901
+ createFile(params) {
1902
+ let { allTags, allTypes, order, extension } = params;
1903
+ &nbsp;
1904
+ let filename = this.mapFromFilename({ allTags });
1905
+ let mediainfo = this.mapFromMediainfo();
1906
+ &nbsp;
1907
+ let assembled = this.assemble({ filename, mediainfo, order });
1908
+ this.set(assembled);
1909
+ &nbsp;
1910
+ let name = this.renderFilename({ allTags, allTypes, extension });
1911
+ &nbsp;
1912
+ let file = new File({
1913
+ name: name,
1914
+ path: `${this.renderPath()}/${name}`,
1915
+ asset: this.asset._id,
1916
+ contextTag: this.context.tag,
1917
+ language: this.selected.download.language,
1918
+ country: this.selected.download.country,
1919
+ tags: flatValues(this.selected.download.tags),
1920
+ ingest: this._id,
1921
+ workRequest: this.workRequest,
1922
+ verified: true
1923
+ });
1924
+ &nbsp;
1925
+ return file;
1926
+ }
1927
+ /**
1928
+ * Merges ingest metadata sources
1929
+ *
1930
+ * @param {object} params
1931
+ */
1932
+ assemble(params) {
1933
+ let { filename, mediainfo, order, watermarks = [] } = params;
1934
+ &nbsp;
1935
+ let original = this.data();
1936
+ &nbsp;
1937
+ let defaults = {
1938
+ workRequest: order._id,
1939
+ selected: {
1940
+ download: {
1941
+ enabled: true,
1942
+ tags: {
1943
+ Extra: []
1944
+ },
1945
+ embargo: {
1946
+ enabled: false
1947
+ }
1948
+ },
1949
+ preview: {
1950
+ enabled: false,
1951
+ revision: "Final",
1952
+ type: "none",
1953
+ embargo: {
1954
+ enabled: false
1955
+ }
1956
+ },
1957
+ thumbnail: {
1958
+ enabled: false,
1959
+ position: 50
1960
+ }
1961
+ }
1962
+ };
1963
+ &nbsp;
1964
+ let ingest = _.merge(defaults, filename, original, mediainfo);
1965
+ &nbsp;
1966
+ if (original.asset &amp;&amp; original.asset.creative) {
1967
+ ingest.selected.preview.revision = "Unfinished";
1968
+ }
1969
+ &nbsp;
1970
+ if (!original.context.asset &amp;&amp; filename.asset &amp;&amp; filename.asset._id) {
1971
+ ingest.selected.asset = filename.asset._id;
1972
+ }
1973
+ &nbsp;
1974
+ if (ingest.workRequest) {
1975
+ ingest.selected.project = ingest.context.project;
1976
+ ingest.selected.asset = ingest.context.asset;
1977
+ ingest.selected.assetType = ingest.context.assetType;
1978
+ }
1979
+ &nbsp;
1980
+ if (ingest.workRequest) {
1981
+ ingest.selected.download.tags.Extra = [];
1982
+ }
1983
+ &nbsp;
1984
+ if (original.context.tag) {
1985
+ ingest.selected.download.tags.Extra = [original.context.tag];
1986
+ }
1987
+ &nbsp;
1988
+ if (order.territory) {
1989
+ ingest.selected.download.country = order.territory;
1990
+ }
1991
+ if (order.language) {
1992
+ ingest.selected.preview.language = order.language;
1993
+ ingest.selected.download.language = order.language;
1994
+ }
1995
+ if (order._id) {
1996
+ ingest.selected.download.tags.Text = "txtd";
1997
+ }
1998
+ if (order.isSub() || order.isDub()) {
1999
+ ingest.selected.download.tags.SubDub = {
2000
+ sub: order.isSub(),
2001
+ dub: order.isDub()
2002
+ };
2003
+ }
2004
+ if (order.isSub()) {
2005
+ ingest.selected.preview.type = "sub";
2006
+ }
2007
+ if (order.isDub()) {
2008
+ ingest.selected.preview.type = "dub";
2009
+ }
2010
+ if (order.isSub() &amp;&amp; order.isDub()) {
2011
+ ingest.selected.preview.type = "both";
2012
+ }
2013
+ &nbsp;
2014
+ ingest.selected.preview.watermark = watermarks[0] ? watermarks[0]._id : "";
2015
+ &nbsp;
2016
+ let tags = ingest.selected.download.tags;
2017
+ ingest.selected.preview.enabled =
2018
+ !!(
2019
+ tags.Codec == "prores" &amp;&amp;
2020
+ tags.Resolution.split("x")[1] == "1080" &amp;&amp;
2021
+ (tags.Framerate == "23.98" || <span class="branch-3 cbranch-no" title="branch not covered" >tags.Framerate == "25")</span> &amp;&amp;
2022
+ watermarks.length
2023
+ ) || false;
2024
+ &nbsp;
2025
+ return ingest;
2026
+ }
2027
+ }
2028
+ &nbsp;
2029
+ /**
2030
+ * Flattens ingest.selected.download.tags into a simple array
2031
+ *
2032
+ * @param {object} data
2033
+ */
2034
+ function flatValues(data) {
2035
+ let copy = clone(data);
2036
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (copy.SubDub) {
2037
+ copy.SubDub = keys(filter(val =&gt; !!val, copy.SubDub));
2038
+ }
2039
+ return flatten(values(copy));
2040
+ }
2041
+ &nbsp;</pre></td></tr>
2042
+ </table></pre>
2043
+ <div class='push'></div><!-- for sticky footer -->
2044
+ </div><!-- /wrapper -->
2045
+ <div class='footer quiet pad2 space-top1 center small'>
2046
+ Code coverage
2047
+ generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Fri Sep 06 2019 10:49:53 GMT-0500 (Central Daylight Time)
2048
+ </div>
2049
+ </div>
2050
+ <script src="prettify.js"></script>
2051
+ <script>
2052
+ window.onload = function () {
2053
+ if (typeof prettyPrint === 'function') {
2054
+ prettyPrint();
2055
+ }
2056
+ };
2057
+ </script>
2058
+ <script src="sorter.js"></script>
2059
+ <script src="block-navigation.js"></script>
2060
+ </body>
2061
+ </html>