@strapi/database 4.10.0-beta.1 → 4.10.1-experimental.0

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 (87) hide show
  1. package/coverage/clover.xml +2669 -0
  2. package/coverage/coverage-final.json +56 -0
  3. package/coverage/lcov-report/base.css +224 -0
  4. package/coverage/lcov-report/block-navigation.js +87 -0
  5. package/coverage/lcov-report/favicon.png +0 -0
  6. package/coverage/lcov-report/index.html +356 -0
  7. package/coverage/lcov-report/lib/entity-manager/entity-repository.js.html +532 -0
  8. package/coverage/lcov-report/lib/entity-manager/index.html +176 -0
  9. package/coverage/lcov-report/lib/entity-manager/index.js.html +3832 -0
  10. package/coverage/lcov-report/lib/entity-manager/morph-relations.js.html +274 -0
  11. package/coverage/lcov-report/lib/entity-manager/regular-relations.js.html +1246 -0
  12. package/coverage/lcov-report/lib/entity-manager/relations-orderer.js.html +760 -0
  13. package/coverage/lcov-report/lib/errors/database.js.html +121 -0
  14. package/coverage/lcov-report/lib/errors/index.html +206 -0
  15. package/coverage/lcov-report/lib/errors/index.js.html +136 -0
  16. package/coverage/lcov-report/lib/errors/invalid-date.js.html +127 -0
  17. package/coverage/lcov-report/lib/errors/invalid-datetime.js.html +127 -0
  18. package/coverage/lcov-report/lib/errors/invalid-relation.js.html +127 -0
  19. package/coverage/lcov-report/lib/errors/invalid-time.js.html +127 -0
  20. package/coverage/lcov-report/lib/errors/not-null.js.html +130 -0
  21. package/coverage/lcov-report/lib/fields/biginteger.js.html +136 -0
  22. package/coverage/lcov-report/lib/fields/boolean.js.html +202 -0
  23. package/coverage/lcov-report/lib/fields/date.js.html +133 -0
  24. package/coverage/lcov-report/lib/fields/datetime.js.html +142 -0
  25. package/coverage/lcov-report/lib/fields/field.js.html +136 -0
  26. package/coverage/lcov-report/lib/fields/index.html +266 -0
  27. package/coverage/lcov-report/lib/fields/index.js.html +232 -0
  28. package/coverage/lcov-report/lib/fields/json.js.html +133 -0
  29. package/coverage/lcov-report/lib/fields/number.js.html +154 -0
  30. package/coverage/lcov-report/lib/fields/shared/index.html +116 -0
  31. package/coverage/lcov-report/lib/fields/shared/parsers.js.html +292 -0
  32. package/coverage/lcov-report/lib/fields/string.js.html +136 -0
  33. package/coverage/lcov-report/lib/fields/time.js.html +136 -0
  34. package/coverage/lcov-report/lib/fields/timestamp.js.html +142 -0
  35. package/coverage/lcov-report/lib/index.html +131 -0
  36. package/coverage/lcov-report/lib/index.js.html +457 -0
  37. package/coverage/lcov-report/lib/lifecycles/index.html +116 -0
  38. package/coverage/lcov-report/lib/lifecycles/index.js.html +355 -0
  39. package/coverage/lcov-report/lib/lifecycles/subscribers/index.html +131 -0
  40. package/coverage/lcov-report/lib/lifecycles/subscribers/models-lifecycles.js.html +142 -0
  41. package/coverage/lcov-report/lib/lifecycles/subscribers/timestamps.js.html +280 -0
  42. package/coverage/lcov-report/lib/metadata/index.html +131 -0
  43. package/coverage/lcov-report/lib/metadata/index.js.html +817 -0
  44. package/coverage/lcov-report/lib/metadata/relations.js.html +1783 -0
  45. package/coverage/lcov-report/lib/query/helpers/index.html +191 -0
  46. package/coverage/lcov-report/lib/query/helpers/index.js.html +118 -0
  47. package/coverage/lcov-report/lib/query/helpers/join.js.html +373 -0
  48. package/coverage/lcov-report/lib/query/helpers/order-by.js.html +295 -0
  49. package/coverage/lcov-report/lib/query/helpers/populate/apply.js.html +2077 -0
  50. package/coverage/lcov-report/lib/query/helpers/populate/index.html +146 -0
  51. package/coverage/lcov-report/lib/query/helpers/populate/index.js.html +112 -0
  52. package/coverage/lcov-report/lib/query/helpers/populate/process.js.html +391 -0
  53. package/coverage/lcov-report/lib/query/helpers/search.js.html +337 -0
  54. package/coverage/lcov-report/lib/query/helpers/streams/index.html +131 -0
  55. package/coverage/lcov-report/lib/query/helpers/streams/index.js.html +100 -0
  56. package/coverage/lcov-report/lib/query/helpers/streams/readable.js.html +607 -0
  57. package/coverage/lcov-report/lib/query/helpers/transform.js.html +337 -0
  58. package/coverage/lcov-report/lib/query/helpers/where.js.html +1255 -0
  59. package/coverage/lcov-report/lib/query/index.html +131 -0
  60. package/coverage/lcov-report/lib/query/index.js.html +106 -0
  61. package/coverage/lcov-report/lib/query/query-builder.js.html +1627 -0
  62. package/coverage/lcov-report/lib/schema/builder.js.html +1243 -0
  63. package/coverage/lcov-report/lib/schema/diff.js.html +1207 -0
  64. package/coverage/lcov-report/lib/schema/index.html +176 -0
  65. package/coverage/lcov-report/lib/schema/index.js.html +367 -0
  66. package/coverage/lcov-report/lib/schema/schema.js.html +688 -0
  67. package/coverage/lcov-report/lib/schema/storage.js.html +313 -0
  68. package/coverage/lcov-report/lib/transaction-context.js.html +136 -0
  69. package/coverage/lcov-report/lib/types/index.html +116 -0
  70. package/coverage/lcov-report/lib/types/index.js.html +187 -0
  71. package/coverage/lcov-report/lib/utils/content-types.js.html +205 -0
  72. package/coverage/lcov-report/lib/utils/index.html +131 -0
  73. package/coverage/lcov-report/lib/utils/knex.js.html +151 -0
  74. package/coverage/lcov-report/lib/validations/index.html +116 -0
  75. package/coverage/lcov-report/lib/validations/index.js.html +145 -0
  76. package/coverage/lcov-report/lib/validations/relations/bidirectional.js.html +352 -0
  77. package/coverage/lcov-report/lib/validations/relations/index.html +131 -0
  78. package/coverage/lcov-report/lib/validations/relations/index.js.html +127 -0
  79. package/coverage/lcov-report/prettify.css +1 -0
  80. package/coverage/lcov-report/prettify.js +2 -0
  81. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  82. package/coverage/lcov-report/sorter.js +196 -0
  83. package/coverage/lcov.info +5179 -0
  84. package/lib/dialects/mysql/index.js +5 -1
  85. package/lib/entity-manager/regular-relations.js +1 -1
  86. package/lib/metadata/relations.js +10 -0
  87. package/package.json +2 -2
@@ -0,0 +1,3832 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for lib/entity-manager/index.js</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../prettify.css" />
9
+ <link rel="stylesheet" href="../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../index.html">All files</a> / <a href="index.html">lib/entity-manager</a> index.js</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">4.56% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>19/416</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">0% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>0/326</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">2.04% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>1/49</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">4.65% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>19/408</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line low'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a>
199
+ <a name='L134'></a><a href='#L134'>134</a>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a>
202
+ <a name='L137'></a><a href='#L137'>137</a>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a>
244
+ <a name='L179'></a><a href='#L179'>179</a>
245
+ <a name='L180'></a><a href='#L180'>180</a>
246
+ <a name='L181'></a><a href='#L181'>181</a>
247
+ <a name='L182'></a><a href='#L182'>182</a>
248
+ <a name='L183'></a><a href='#L183'>183</a>
249
+ <a name='L184'></a><a href='#L184'>184</a>
250
+ <a name='L185'></a><a href='#L185'>185</a>
251
+ <a name='L186'></a><a href='#L186'>186</a>
252
+ <a name='L187'></a><a href='#L187'>187</a>
253
+ <a name='L188'></a><a href='#L188'>188</a>
254
+ <a name='L189'></a><a href='#L189'>189</a>
255
+ <a name='L190'></a><a href='#L190'>190</a>
256
+ <a name='L191'></a><a href='#L191'>191</a>
257
+ <a name='L192'></a><a href='#L192'>192</a>
258
+ <a name='L193'></a><a href='#L193'>193</a>
259
+ <a name='L194'></a><a href='#L194'>194</a>
260
+ <a name='L195'></a><a href='#L195'>195</a>
261
+ <a name='L196'></a><a href='#L196'>196</a>
262
+ <a name='L197'></a><a href='#L197'>197</a>
263
+ <a name='L198'></a><a href='#L198'>198</a>
264
+ <a name='L199'></a><a href='#L199'>199</a>
265
+ <a name='L200'></a><a href='#L200'>200</a>
266
+ <a name='L201'></a><a href='#L201'>201</a>
267
+ <a name='L202'></a><a href='#L202'>202</a>
268
+ <a name='L203'></a><a href='#L203'>203</a>
269
+ <a name='L204'></a><a href='#L204'>204</a>
270
+ <a name='L205'></a><a href='#L205'>205</a>
271
+ <a name='L206'></a><a href='#L206'>206</a>
272
+ <a name='L207'></a><a href='#L207'>207</a>
273
+ <a name='L208'></a><a href='#L208'>208</a>
274
+ <a name='L209'></a><a href='#L209'>209</a>
275
+ <a name='L210'></a><a href='#L210'>210</a>
276
+ <a name='L211'></a><a href='#L211'>211</a>
277
+ <a name='L212'></a><a href='#L212'>212</a>
278
+ <a name='L213'></a><a href='#L213'>213</a>
279
+ <a name='L214'></a><a href='#L214'>214</a>
280
+ <a name='L215'></a><a href='#L215'>215</a>
281
+ <a name='L216'></a><a href='#L216'>216</a>
282
+ <a name='L217'></a><a href='#L217'>217</a>
283
+ <a name='L218'></a><a href='#L218'>218</a>
284
+ <a name='L219'></a><a href='#L219'>219</a>
285
+ <a name='L220'></a><a href='#L220'>220</a>
286
+ <a name='L221'></a><a href='#L221'>221</a>
287
+ <a name='L222'></a><a href='#L222'>222</a>
288
+ <a name='L223'></a><a href='#L223'>223</a>
289
+ <a name='L224'></a><a href='#L224'>224</a>
290
+ <a name='L225'></a><a href='#L225'>225</a>
291
+ <a name='L226'></a><a href='#L226'>226</a>
292
+ <a name='L227'></a><a href='#L227'>227</a>
293
+ <a name='L228'></a><a href='#L228'>228</a>
294
+ <a name='L229'></a><a href='#L229'>229</a>
295
+ <a name='L230'></a><a href='#L230'>230</a>
296
+ <a name='L231'></a><a href='#L231'>231</a>
297
+ <a name='L232'></a><a href='#L232'>232</a>
298
+ <a name='L233'></a><a href='#L233'>233</a>
299
+ <a name='L234'></a><a href='#L234'>234</a>
300
+ <a name='L235'></a><a href='#L235'>235</a>
301
+ <a name='L236'></a><a href='#L236'>236</a>
302
+ <a name='L237'></a><a href='#L237'>237</a>
303
+ <a name='L238'></a><a href='#L238'>238</a>
304
+ <a name='L239'></a><a href='#L239'>239</a>
305
+ <a name='L240'></a><a href='#L240'>240</a>
306
+ <a name='L241'></a><a href='#L241'>241</a>
307
+ <a name='L242'></a><a href='#L242'>242</a>
308
+ <a name='L243'></a><a href='#L243'>243</a>
309
+ <a name='L244'></a><a href='#L244'>244</a>
310
+ <a name='L245'></a><a href='#L245'>245</a>
311
+ <a name='L246'></a><a href='#L246'>246</a>
312
+ <a name='L247'></a><a href='#L247'>247</a>
313
+ <a name='L248'></a><a href='#L248'>248</a>
314
+ <a name='L249'></a><a href='#L249'>249</a>
315
+ <a name='L250'></a><a href='#L250'>250</a>
316
+ <a name='L251'></a><a href='#L251'>251</a>
317
+ <a name='L252'></a><a href='#L252'>252</a>
318
+ <a name='L253'></a><a href='#L253'>253</a>
319
+ <a name='L254'></a><a href='#L254'>254</a>
320
+ <a name='L255'></a><a href='#L255'>255</a>
321
+ <a name='L256'></a><a href='#L256'>256</a>
322
+ <a name='L257'></a><a href='#L257'>257</a>
323
+ <a name='L258'></a><a href='#L258'>258</a>
324
+ <a name='L259'></a><a href='#L259'>259</a>
325
+ <a name='L260'></a><a href='#L260'>260</a>
326
+ <a name='L261'></a><a href='#L261'>261</a>
327
+ <a name='L262'></a><a href='#L262'>262</a>
328
+ <a name='L263'></a><a href='#L263'>263</a>
329
+ <a name='L264'></a><a href='#L264'>264</a>
330
+ <a name='L265'></a><a href='#L265'>265</a>
331
+ <a name='L266'></a><a href='#L266'>266</a>
332
+ <a name='L267'></a><a href='#L267'>267</a>
333
+ <a name='L268'></a><a href='#L268'>268</a>
334
+ <a name='L269'></a><a href='#L269'>269</a>
335
+ <a name='L270'></a><a href='#L270'>270</a>
336
+ <a name='L271'></a><a href='#L271'>271</a>
337
+ <a name='L272'></a><a href='#L272'>272</a>
338
+ <a name='L273'></a><a href='#L273'>273</a>
339
+ <a name='L274'></a><a href='#L274'>274</a>
340
+ <a name='L275'></a><a href='#L275'>275</a>
341
+ <a name='L276'></a><a href='#L276'>276</a>
342
+ <a name='L277'></a><a href='#L277'>277</a>
343
+ <a name='L278'></a><a href='#L278'>278</a>
344
+ <a name='L279'></a><a href='#L279'>279</a>
345
+ <a name='L280'></a><a href='#L280'>280</a>
346
+ <a name='L281'></a><a href='#L281'>281</a>
347
+ <a name='L282'></a><a href='#L282'>282</a>
348
+ <a name='L283'></a><a href='#L283'>283</a>
349
+ <a name='L284'></a><a href='#L284'>284</a>
350
+ <a name='L285'></a><a href='#L285'>285</a>
351
+ <a name='L286'></a><a href='#L286'>286</a>
352
+ <a name='L287'></a><a href='#L287'>287</a>
353
+ <a name='L288'></a><a href='#L288'>288</a>
354
+ <a name='L289'></a><a href='#L289'>289</a>
355
+ <a name='L290'></a><a href='#L290'>290</a>
356
+ <a name='L291'></a><a href='#L291'>291</a>
357
+ <a name='L292'></a><a href='#L292'>292</a>
358
+ <a name='L293'></a><a href='#L293'>293</a>
359
+ <a name='L294'></a><a href='#L294'>294</a>
360
+ <a name='L295'></a><a href='#L295'>295</a>
361
+ <a name='L296'></a><a href='#L296'>296</a>
362
+ <a name='L297'></a><a href='#L297'>297</a>
363
+ <a name='L298'></a><a href='#L298'>298</a>
364
+ <a name='L299'></a><a href='#L299'>299</a>
365
+ <a name='L300'></a><a href='#L300'>300</a>
366
+ <a name='L301'></a><a href='#L301'>301</a>
367
+ <a name='L302'></a><a href='#L302'>302</a>
368
+ <a name='L303'></a><a href='#L303'>303</a>
369
+ <a name='L304'></a><a href='#L304'>304</a>
370
+ <a name='L305'></a><a href='#L305'>305</a>
371
+ <a name='L306'></a><a href='#L306'>306</a>
372
+ <a name='L307'></a><a href='#L307'>307</a>
373
+ <a name='L308'></a><a href='#L308'>308</a>
374
+ <a name='L309'></a><a href='#L309'>309</a>
375
+ <a name='L310'></a><a href='#L310'>310</a>
376
+ <a name='L311'></a><a href='#L311'>311</a>
377
+ <a name='L312'></a><a href='#L312'>312</a>
378
+ <a name='L313'></a><a href='#L313'>313</a>
379
+ <a name='L314'></a><a href='#L314'>314</a>
380
+ <a name='L315'></a><a href='#L315'>315</a>
381
+ <a name='L316'></a><a href='#L316'>316</a>
382
+ <a name='L317'></a><a href='#L317'>317</a>
383
+ <a name='L318'></a><a href='#L318'>318</a>
384
+ <a name='L319'></a><a href='#L319'>319</a>
385
+ <a name='L320'></a><a href='#L320'>320</a>
386
+ <a name='L321'></a><a href='#L321'>321</a>
387
+ <a name='L322'></a><a href='#L322'>322</a>
388
+ <a name='L323'></a><a href='#L323'>323</a>
389
+ <a name='L324'></a><a href='#L324'>324</a>
390
+ <a name='L325'></a><a href='#L325'>325</a>
391
+ <a name='L326'></a><a href='#L326'>326</a>
392
+ <a name='L327'></a><a href='#L327'>327</a>
393
+ <a name='L328'></a><a href='#L328'>328</a>
394
+ <a name='L329'></a><a href='#L329'>329</a>
395
+ <a name='L330'></a><a href='#L330'>330</a>
396
+ <a name='L331'></a><a href='#L331'>331</a>
397
+ <a name='L332'></a><a href='#L332'>332</a>
398
+ <a name='L333'></a><a href='#L333'>333</a>
399
+ <a name='L334'></a><a href='#L334'>334</a>
400
+ <a name='L335'></a><a href='#L335'>335</a>
401
+ <a name='L336'></a><a href='#L336'>336</a>
402
+ <a name='L337'></a><a href='#L337'>337</a>
403
+ <a name='L338'></a><a href='#L338'>338</a>
404
+ <a name='L339'></a><a href='#L339'>339</a>
405
+ <a name='L340'></a><a href='#L340'>340</a>
406
+ <a name='L341'></a><a href='#L341'>341</a>
407
+ <a name='L342'></a><a href='#L342'>342</a>
408
+ <a name='L343'></a><a href='#L343'>343</a>
409
+ <a name='L344'></a><a href='#L344'>344</a>
410
+ <a name='L345'></a><a href='#L345'>345</a>
411
+ <a name='L346'></a><a href='#L346'>346</a>
412
+ <a name='L347'></a><a href='#L347'>347</a>
413
+ <a name='L348'></a><a href='#L348'>348</a>
414
+ <a name='L349'></a><a href='#L349'>349</a>
415
+ <a name='L350'></a><a href='#L350'>350</a>
416
+ <a name='L351'></a><a href='#L351'>351</a>
417
+ <a name='L352'></a><a href='#L352'>352</a>
418
+ <a name='L353'></a><a href='#L353'>353</a>
419
+ <a name='L354'></a><a href='#L354'>354</a>
420
+ <a name='L355'></a><a href='#L355'>355</a>
421
+ <a name='L356'></a><a href='#L356'>356</a>
422
+ <a name='L357'></a><a href='#L357'>357</a>
423
+ <a name='L358'></a><a href='#L358'>358</a>
424
+ <a name='L359'></a><a href='#L359'>359</a>
425
+ <a name='L360'></a><a href='#L360'>360</a>
426
+ <a name='L361'></a><a href='#L361'>361</a>
427
+ <a name='L362'></a><a href='#L362'>362</a>
428
+ <a name='L363'></a><a href='#L363'>363</a>
429
+ <a name='L364'></a><a href='#L364'>364</a>
430
+ <a name='L365'></a><a href='#L365'>365</a>
431
+ <a name='L366'></a><a href='#L366'>366</a>
432
+ <a name='L367'></a><a href='#L367'>367</a>
433
+ <a name='L368'></a><a href='#L368'>368</a>
434
+ <a name='L369'></a><a href='#L369'>369</a>
435
+ <a name='L370'></a><a href='#L370'>370</a>
436
+ <a name='L371'></a><a href='#L371'>371</a>
437
+ <a name='L372'></a><a href='#L372'>372</a>
438
+ <a name='L373'></a><a href='#L373'>373</a>
439
+ <a name='L374'></a><a href='#L374'>374</a>
440
+ <a name='L375'></a><a href='#L375'>375</a>
441
+ <a name='L376'></a><a href='#L376'>376</a>
442
+ <a name='L377'></a><a href='#L377'>377</a>
443
+ <a name='L378'></a><a href='#L378'>378</a>
444
+ <a name='L379'></a><a href='#L379'>379</a>
445
+ <a name='L380'></a><a href='#L380'>380</a>
446
+ <a name='L381'></a><a href='#L381'>381</a>
447
+ <a name='L382'></a><a href='#L382'>382</a>
448
+ <a name='L383'></a><a href='#L383'>383</a>
449
+ <a name='L384'></a><a href='#L384'>384</a>
450
+ <a name='L385'></a><a href='#L385'>385</a>
451
+ <a name='L386'></a><a href='#L386'>386</a>
452
+ <a name='L387'></a><a href='#L387'>387</a>
453
+ <a name='L388'></a><a href='#L388'>388</a>
454
+ <a name='L389'></a><a href='#L389'>389</a>
455
+ <a name='L390'></a><a href='#L390'>390</a>
456
+ <a name='L391'></a><a href='#L391'>391</a>
457
+ <a name='L392'></a><a href='#L392'>392</a>
458
+ <a name='L393'></a><a href='#L393'>393</a>
459
+ <a name='L394'></a><a href='#L394'>394</a>
460
+ <a name='L395'></a><a href='#L395'>395</a>
461
+ <a name='L396'></a><a href='#L396'>396</a>
462
+ <a name='L397'></a><a href='#L397'>397</a>
463
+ <a name='L398'></a><a href='#L398'>398</a>
464
+ <a name='L399'></a><a href='#L399'>399</a>
465
+ <a name='L400'></a><a href='#L400'>400</a>
466
+ <a name='L401'></a><a href='#L401'>401</a>
467
+ <a name='L402'></a><a href='#L402'>402</a>
468
+ <a name='L403'></a><a href='#L403'>403</a>
469
+ <a name='L404'></a><a href='#L404'>404</a>
470
+ <a name='L405'></a><a href='#L405'>405</a>
471
+ <a name='L406'></a><a href='#L406'>406</a>
472
+ <a name='L407'></a><a href='#L407'>407</a>
473
+ <a name='L408'></a><a href='#L408'>408</a>
474
+ <a name='L409'></a><a href='#L409'>409</a>
475
+ <a name='L410'></a><a href='#L410'>410</a>
476
+ <a name='L411'></a><a href='#L411'>411</a>
477
+ <a name='L412'></a><a href='#L412'>412</a>
478
+ <a name='L413'></a><a href='#L413'>413</a>
479
+ <a name='L414'></a><a href='#L414'>414</a>
480
+ <a name='L415'></a><a href='#L415'>415</a>
481
+ <a name='L416'></a><a href='#L416'>416</a>
482
+ <a name='L417'></a><a href='#L417'>417</a>
483
+ <a name='L418'></a><a href='#L418'>418</a>
484
+ <a name='L419'></a><a href='#L419'>419</a>
485
+ <a name='L420'></a><a href='#L420'>420</a>
486
+ <a name='L421'></a><a href='#L421'>421</a>
487
+ <a name='L422'></a><a href='#L422'>422</a>
488
+ <a name='L423'></a><a href='#L423'>423</a>
489
+ <a name='L424'></a><a href='#L424'>424</a>
490
+ <a name='L425'></a><a href='#L425'>425</a>
491
+ <a name='L426'></a><a href='#L426'>426</a>
492
+ <a name='L427'></a><a href='#L427'>427</a>
493
+ <a name='L428'></a><a href='#L428'>428</a>
494
+ <a name='L429'></a><a href='#L429'>429</a>
495
+ <a name='L430'></a><a href='#L430'>430</a>
496
+ <a name='L431'></a><a href='#L431'>431</a>
497
+ <a name='L432'></a><a href='#L432'>432</a>
498
+ <a name='L433'></a><a href='#L433'>433</a>
499
+ <a name='L434'></a><a href='#L434'>434</a>
500
+ <a name='L435'></a><a href='#L435'>435</a>
501
+ <a name='L436'></a><a href='#L436'>436</a>
502
+ <a name='L437'></a><a href='#L437'>437</a>
503
+ <a name='L438'></a><a href='#L438'>438</a>
504
+ <a name='L439'></a><a href='#L439'>439</a>
505
+ <a name='L440'></a><a href='#L440'>440</a>
506
+ <a name='L441'></a><a href='#L441'>441</a>
507
+ <a name='L442'></a><a href='#L442'>442</a>
508
+ <a name='L443'></a><a href='#L443'>443</a>
509
+ <a name='L444'></a><a href='#L444'>444</a>
510
+ <a name='L445'></a><a href='#L445'>445</a>
511
+ <a name='L446'></a><a href='#L446'>446</a>
512
+ <a name='L447'></a><a href='#L447'>447</a>
513
+ <a name='L448'></a><a href='#L448'>448</a>
514
+ <a name='L449'></a><a href='#L449'>449</a>
515
+ <a name='L450'></a><a href='#L450'>450</a>
516
+ <a name='L451'></a><a href='#L451'>451</a>
517
+ <a name='L452'></a><a href='#L452'>452</a>
518
+ <a name='L453'></a><a href='#L453'>453</a>
519
+ <a name='L454'></a><a href='#L454'>454</a>
520
+ <a name='L455'></a><a href='#L455'>455</a>
521
+ <a name='L456'></a><a href='#L456'>456</a>
522
+ <a name='L457'></a><a href='#L457'>457</a>
523
+ <a name='L458'></a><a href='#L458'>458</a>
524
+ <a name='L459'></a><a href='#L459'>459</a>
525
+ <a name='L460'></a><a href='#L460'>460</a>
526
+ <a name='L461'></a><a href='#L461'>461</a>
527
+ <a name='L462'></a><a href='#L462'>462</a>
528
+ <a name='L463'></a><a href='#L463'>463</a>
529
+ <a name='L464'></a><a href='#L464'>464</a>
530
+ <a name='L465'></a><a href='#L465'>465</a>
531
+ <a name='L466'></a><a href='#L466'>466</a>
532
+ <a name='L467'></a><a href='#L467'>467</a>
533
+ <a name='L468'></a><a href='#L468'>468</a>
534
+ <a name='L469'></a><a href='#L469'>469</a>
535
+ <a name='L470'></a><a href='#L470'>470</a>
536
+ <a name='L471'></a><a href='#L471'>471</a>
537
+ <a name='L472'></a><a href='#L472'>472</a>
538
+ <a name='L473'></a><a href='#L473'>473</a>
539
+ <a name='L474'></a><a href='#L474'>474</a>
540
+ <a name='L475'></a><a href='#L475'>475</a>
541
+ <a name='L476'></a><a href='#L476'>476</a>
542
+ <a name='L477'></a><a href='#L477'>477</a>
543
+ <a name='L478'></a><a href='#L478'>478</a>
544
+ <a name='L479'></a><a href='#L479'>479</a>
545
+ <a name='L480'></a><a href='#L480'>480</a>
546
+ <a name='L481'></a><a href='#L481'>481</a>
547
+ <a name='L482'></a><a href='#L482'>482</a>
548
+ <a name='L483'></a><a href='#L483'>483</a>
549
+ <a name='L484'></a><a href='#L484'>484</a>
550
+ <a name='L485'></a><a href='#L485'>485</a>
551
+ <a name='L486'></a><a href='#L486'>486</a>
552
+ <a name='L487'></a><a href='#L487'>487</a>
553
+ <a name='L488'></a><a href='#L488'>488</a>
554
+ <a name='L489'></a><a href='#L489'>489</a>
555
+ <a name='L490'></a><a href='#L490'>490</a>
556
+ <a name='L491'></a><a href='#L491'>491</a>
557
+ <a name='L492'></a><a href='#L492'>492</a>
558
+ <a name='L493'></a><a href='#L493'>493</a>
559
+ <a name='L494'></a><a href='#L494'>494</a>
560
+ <a name='L495'></a><a href='#L495'>495</a>
561
+ <a name='L496'></a><a href='#L496'>496</a>
562
+ <a name='L497'></a><a href='#L497'>497</a>
563
+ <a name='L498'></a><a href='#L498'>498</a>
564
+ <a name='L499'></a><a href='#L499'>499</a>
565
+ <a name='L500'></a><a href='#L500'>500</a>
566
+ <a name='L501'></a><a href='#L501'>501</a>
567
+ <a name='L502'></a><a href='#L502'>502</a>
568
+ <a name='L503'></a><a href='#L503'>503</a>
569
+ <a name='L504'></a><a href='#L504'>504</a>
570
+ <a name='L505'></a><a href='#L505'>505</a>
571
+ <a name='L506'></a><a href='#L506'>506</a>
572
+ <a name='L507'></a><a href='#L507'>507</a>
573
+ <a name='L508'></a><a href='#L508'>508</a>
574
+ <a name='L509'></a><a href='#L509'>509</a>
575
+ <a name='L510'></a><a href='#L510'>510</a>
576
+ <a name='L511'></a><a href='#L511'>511</a>
577
+ <a name='L512'></a><a href='#L512'>512</a>
578
+ <a name='L513'></a><a href='#L513'>513</a>
579
+ <a name='L514'></a><a href='#L514'>514</a>
580
+ <a name='L515'></a><a href='#L515'>515</a>
581
+ <a name='L516'></a><a href='#L516'>516</a>
582
+ <a name='L517'></a><a href='#L517'>517</a>
583
+ <a name='L518'></a><a href='#L518'>518</a>
584
+ <a name='L519'></a><a href='#L519'>519</a>
585
+ <a name='L520'></a><a href='#L520'>520</a>
586
+ <a name='L521'></a><a href='#L521'>521</a>
587
+ <a name='L522'></a><a href='#L522'>522</a>
588
+ <a name='L523'></a><a href='#L523'>523</a>
589
+ <a name='L524'></a><a href='#L524'>524</a>
590
+ <a name='L525'></a><a href='#L525'>525</a>
591
+ <a name='L526'></a><a href='#L526'>526</a>
592
+ <a name='L527'></a><a href='#L527'>527</a>
593
+ <a name='L528'></a><a href='#L528'>528</a>
594
+ <a name='L529'></a><a href='#L529'>529</a>
595
+ <a name='L530'></a><a href='#L530'>530</a>
596
+ <a name='L531'></a><a href='#L531'>531</a>
597
+ <a name='L532'></a><a href='#L532'>532</a>
598
+ <a name='L533'></a><a href='#L533'>533</a>
599
+ <a name='L534'></a><a href='#L534'>534</a>
600
+ <a name='L535'></a><a href='#L535'>535</a>
601
+ <a name='L536'></a><a href='#L536'>536</a>
602
+ <a name='L537'></a><a href='#L537'>537</a>
603
+ <a name='L538'></a><a href='#L538'>538</a>
604
+ <a name='L539'></a><a href='#L539'>539</a>
605
+ <a name='L540'></a><a href='#L540'>540</a>
606
+ <a name='L541'></a><a href='#L541'>541</a>
607
+ <a name='L542'></a><a href='#L542'>542</a>
608
+ <a name='L543'></a><a href='#L543'>543</a>
609
+ <a name='L544'></a><a href='#L544'>544</a>
610
+ <a name='L545'></a><a href='#L545'>545</a>
611
+ <a name='L546'></a><a href='#L546'>546</a>
612
+ <a name='L547'></a><a href='#L547'>547</a>
613
+ <a name='L548'></a><a href='#L548'>548</a>
614
+ <a name='L549'></a><a href='#L549'>549</a>
615
+ <a name='L550'></a><a href='#L550'>550</a>
616
+ <a name='L551'></a><a href='#L551'>551</a>
617
+ <a name='L552'></a><a href='#L552'>552</a>
618
+ <a name='L553'></a><a href='#L553'>553</a>
619
+ <a name='L554'></a><a href='#L554'>554</a>
620
+ <a name='L555'></a><a href='#L555'>555</a>
621
+ <a name='L556'></a><a href='#L556'>556</a>
622
+ <a name='L557'></a><a href='#L557'>557</a>
623
+ <a name='L558'></a><a href='#L558'>558</a>
624
+ <a name='L559'></a><a href='#L559'>559</a>
625
+ <a name='L560'></a><a href='#L560'>560</a>
626
+ <a name='L561'></a><a href='#L561'>561</a>
627
+ <a name='L562'></a><a href='#L562'>562</a>
628
+ <a name='L563'></a><a href='#L563'>563</a>
629
+ <a name='L564'></a><a href='#L564'>564</a>
630
+ <a name='L565'></a><a href='#L565'>565</a>
631
+ <a name='L566'></a><a href='#L566'>566</a>
632
+ <a name='L567'></a><a href='#L567'>567</a>
633
+ <a name='L568'></a><a href='#L568'>568</a>
634
+ <a name='L569'></a><a href='#L569'>569</a>
635
+ <a name='L570'></a><a href='#L570'>570</a>
636
+ <a name='L571'></a><a href='#L571'>571</a>
637
+ <a name='L572'></a><a href='#L572'>572</a>
638
+ <a name='L573'></a><a href='#L573'>573</a>
639
+ <a name='L574'></a><a href='#L574'>574</a>
640
+ <a name='L575'></a><a href='#L575'>575</a>
641
+ <a name='L576'></a><a href='#L576'>576</a>
642
+ <a name='L577'></a><a href='#L577'>577</a>
643
+ <a name='L578'></a><a href='#L578'>578</a>
644
+ <a name='L579'></a><a href='#L579'>579</a>
645
+ <a name='L580'></a><a href='#L580'>580</a>
646
+ <a name='L581'></a><a href='#L581'>581</a>
647
+ <a name='L582'></a><a href='#L582'>582</a>
648
+ <a name='L583'></a><a href='#L583'>583</a>
649
+ <a name='L584'></a><a href='#L584'>584</a>
650
+ <a name='L585'></a><a href='#L585'>585</a>
651
+ <a name='L586'></a><a href='#L586'>586</a>
652
+ <a name='L587'></a><a href='#L587'>587</a>
653
+ <a name='L588'></a><a href='#L588'>588</a>
654
+ <a name='L589'></a><a href='#L589'>589</a>
655
+ <a name='L590'></a><a href='#L590'>590</a>
656
+ <a name='L591'></a><a href='#L591'>591</a>
657
+ <a name='L592'></a><a href='#L592'>592</a>
658
+ <a name='L593'></a><a href='#L593'>593</a>
659
+ <a name='L594'></a><a href='#L594'>594</a>
660
+ <a name='L595'></a><a href='#L595'>595</a>
661
+ <a name='L596'></a><a href='#L596'>596</a>
662
+ <a name='L597'></a><a href='#L597'>597</a>
663
+ <a name='L598'></a><a href='#L598'>598</a>
664
+ <a name='L599'></a><a href='#L599'>599</a>
665
+ <a name='L600'></a><a href='#L600'>600</a>
666
+ <a name='L601'></a><a href='#L601'>601</a>
667
+ <a name='L602'></a><a href='#L602'>602</a>
668
+ <a name='L603'></a><a href='#L603'>603</a>
669
+ <a name='L604'></a><a href='#L604'>604</a>
670
+ <a name='L605'></a><a href='#L605'>605</a>
671
+ <a name='L606'></a><a href='#L606'>606</a>
672
+ <a name='L607'></a><a href='#L607'>607</a>
673
+ <a name='L608'></a><a href='#L608'>608</a>
674
+ <a name='L609'></a><a href='#L609'>609</a>
675
+ <a name='L610'></a><a href='#L610'>610</a>
676
+ <a name='L611'></a><a href='#L611'>611</a>
677
+ <a name='L612'></a><a href='#L612'>612</a>
678
+ <a name='L613'></a><a href='#L613'>613</a>
679
+ <a name='L614'></a><a href='#L614'>614</a>
680
+ <a name='L615'></a><a href='#L615'>615</a>
681
+ <a name='L616'></a><a href='#L616'>616</a>
682
+ <a name='L617'></a><a href='#L617'>617</a>
683
+ <a name='L618'></a><a href='#L618'>618</a>
684
+ <a name='L619'></a><a href='#L619'>619</a>
685
+ <a name='L620'></a><a href='#L620'>620</a>
686
+ <a name='L621'></a><a href='#L621'>621</a>
687
+ <a name='L622'></a><a href='#L622'>622</a>
688
+ <a name='L623'></a><a href='#L623'>623</a>
689
+ <a name='L624'></a><a href='#L624'>624</a>
690
+ <a name='L625'></a><a href='#L625'>625</a>
691
+ <a name='L626'></a><a href='#L626'>626</a>
692
+ <a name='L627'></a><a href='#L627'>627</a>
693
+ <a name='L628'></a><a href='#L628'>628</a>
694
+ <a name='L629'></a><a href='#L629'>629</a>
695
+ <a name='L630'></a><a href='#L630'>630</a>
696
+ <a name='L631'></a><a href='#L631'>631</a>
697
+ <a name='L632'></a><a href='#L632'>632</a>
698
+ <a name='L633'></a><a href='#L633'>633</a>
699
+ <a name='L634'></a><a href='#L634'>634</a>
700
+ <a name='L635'></a><a href='#L635'>635</a>
701
+ <a name='L636'></a><a href='#L636'>636</a>
702
+ <a name='L637'></a><a href='#L637'>637</a>
703
+ <a name='L638'></a><a href='#L638'>638</a>
704
+ <a name='L639'></a><a href='#L639'>639</a>
705
+ <a name='L640'></a><a href='#L640'>640</a>
706
+ <a name='L641'></a><a href='#L641'>641</a>
707
+ <a name='L642'></a><a href='#L642'>642</a>
708
+ <a name='L643'></a><a href='#L643'>643</a>
709
+ <a name='L644'></a><a href='#L644'>644</a>
710
+ <a name='L645'></a><a href='#L645'>645</a>
711
+ <a name='L646'></a><a href='#L646'>646</a>
712
+ <a name='L647'></a><a href='#L647'>647</a>
713
+ <a name='L648'></a><a href='#L648'>648</a>
714
+ <a name='L649'></a><a href='#L649'>649</a>
715
+ <a name='L650'></a><a href='#L650'>650</a>
716
+ <a name='L651'></a><a href='#L651'>651</a>
717
+ <a name='L652'></a><a href='#L652'>652</a>
718
+ <a name='L653'></a><a href='#L653'>653</a>
719
+ <a name='L654'></a><a href='#L654'>654</a>
720
+ <a name='L655'></a><a href='#L655'>655</a>
721
+ <a name='L656'></a><a href='#L656'>656</a>
722
+ <a name='L657'></a><a href='#L657'>657</a>
723
+ <a name='L658'></a><a href='#L658'>658</a>
724
+ <a name='L659'></a><a href='#L659'>659</a>
725
+ <a name='L660'></a><a href='#L660'>660</a>
726
+ <a name='L661'></a><a href='#L661'>661</a>
727
+ <a name='L662'></a><a href='#L662'>662</a>
728
+ <a name='L663'></a><a href='#L663'>663</a>
729
+ <a name='L664'></a><a href='#L664'>664</a>
730
+ <a name='L665'></a><a href='#L665'>665</a>
731
+ <a name='L666'></a><a href='#L666'>666</a>
732
+ <a name='L667'></a><a href='#L667'>667</a>
733
+ <a name='L668'></a><a href='#L668'>668</a>
734
+ <a name='L669'></a><a href='#L669'>669</a>
735
+ <a name='L670'></a><a href='#L670'>670</a>
736
+ <a name='L671'></a><a href='#L671'>671</a>
737
+ <a name='L672'></a><a href='#L672'>672</a>
738
+ <a name='L673'></a><a href='#L673'>673</a>
739
+ <a name='L674'></a><a href='#L674'>674</a>
740
+ <a name='L675'></a><a href='#L675'>675</a>
741
+ <a name='L676'></a><a href='#L676'>676</a>
742
+ <a name='L677'></a><a href='#L677'>677</a>
743
+ <a name='L678'></a><a href='#L678'>678</a>
744
+ <a name='L679'></a><a href='#L679'>679</a>
745
+ <a name='L680'></a><a href='#L680'>680</a>
746
+ <a name='L681'></a><a href='#L681'>681</a>
747
+ <a name='L682'></a><a href='#L682'>682</a>
748
+ <a name='L683'></a><a href='#L683'>683</a>
749
+ <a name='L684'></a><a href='#L684'>684</a>
750
+ <a name='L685'></a><a href='#L685'>685</a>
751
+ <a name='L686'></a><a href='#L686'>686</a>
752
+ <a name='L687'></a><a href='#L687'>687</a>
753
+ <a name='L688'></a><a href='#L688'>688</a>
754
+ <a name='L689'></a><a href='#L689'>689</a>
755
+ <a name='L690'></a><a href='#L690'>690</a>
756
+ <a name='L691'></a><a href='#L691'>691</a>
757
+ <a name='L692'></a><a href='#L692'>692</a>
758
+ <a name='L693'></a><a href='#L693'>693</a>
759
+ <a name='L694'></a><a href='#L694'>694</a>
760
+ <a name='L695'></a><a href='#L695'>695</a>
761
+ <a name='L696'></a><a href='#L696'>696</a>
762
+ <a name='L697'></a><a href='#L697'>697</a>
763
+ <a name='L698'></a><a href='#L698'>698</a>
764
+ <a name='L699'></a><a href='#L699'>699</a>
765
+ <a name='L700'></a><a href='#L700'>700</a>
766
+ <a name='L701'></a><a href='#L701'>701</a>
767
+ <a name='L702'></a><a href='#L702'>702</a>
768
+ <a name='L703'></a><a href='#L703'>703</a>
769
+ <a name='L704'></a><a href='#L704'>704</a>
770
+ <a name='L705'></a><a href='#L705'>705</a>
771
+ <a name='L706'></a><a href='#L706'>706</a>
772
+ <a name='L707'></a><a href='#L707'>707</a>
773
+ <a name='L708'></a><a href='#L708'>708</a>
774
+ <a name='L709'></a><a href='#L709'>709</a>
775
+ <a name='L710'></a><a href='#L710'>710</a>
776
+ <a name='L711'></a><a href='#L711'>711</a>
777
+ <a name='L712'></a><a href='#L712'>712</a>
778
+ <a name='L713'></a><a href='#L713'>713</a>
779
+ <a name='L714'></a><a href='#L714'>714</a>
780
+ <a name='L715'></a><a href='#L715'>715</a>
781
+ <a name='L716'></a><a href='#L716'>716</a>
782
+ <a name='L717'></a><a href='#L717'>717</a>
783
+ <a name='L718'></a><a href='#L718'>718</a>
784
+ <a name='L719'></a><a href='#L719'>719</a>
785
+ <a name='L720'></a><a href='#L720'>720</a>
786
+ <a name='L721'></a><a href='#L721'>721</a>
787
+ <a name='L722'></a><a href='#L722'>722</a>
788
+ <a name='L723'></a><a href='#L723'>723</a>
789
+ <a name='L724'></a><a href='#L724'>724</a>
790
+ <a name='L725'></a><a href='#L725'>725</a>
791
+ <a name='L726'></a><a href='#L726'>726</a>
792
+ <a name='L727'></a><a href='#L727'>727</a>
793
+ <a name='L728'></a><a href='#L728'>728</a>
794
+ <a name='L729'></a><a href='#L729'>729</a>
795
+ <a name='L730'></a><a href='#L730'>730</a>
796
+ <a name='L731'></a><a href='#L731'>731</a>
797
+ <a name='L732'></a><a href='#L732'>732</a>
798
+ <a name='L733'></a><a href='#L733'>733</a>
799
+ <a name='L734'></a><a href='#L734'>734</a>
800
+ <a name='L735'></a><a href='#L735'>735</a>
801
+ <a name='L736'></a><a href='#L736'>736</a>
802
+ <a name='L737'></a><a href='#L737'>737</a>
803
+ <a name='L738'></a><a href='#L738'>738</a>
804
+ <a name='L739'></a><a href='#L739'>739</a>
805
+ <a name='L740'></a><a href='#L740'>740</a>
806
+ <a name='L741'></a><a href='#L741'>741</a>
807
+ <a name='L742'></a><a href='#L742'>742</a>
808
+ <a name='L743'></a><a href='#L743'>743</a>
809
+ <a name='L744'></a><a href='#L744'>744</a>
810
+ <a name='L745'></a><a href='#L745'>745</a>
811
+ <a name='L746'></a><a href='#L746'>746</a>
812
+ <a name='L747'></a><a href='#L747'>747</a>
813
+ <a name='L748'></a><a href='#L748'>748</a>
814
+ <a name='L749'></a><a href='#L749'>749</a>
815
+ <a name='L750'></a><a href='#L750'>750</a>
816
+ <a name='L751'></a><a href='#L751'>751</a>
817
+ <a name='L752'></a><a href='#L752'>752</a>
818
+ <a name='L753'></a><a href='#L753'>753</a>
819
+ <a name='L754'></a><a href='#L754'>754</a>
820
+ <a name='L755'></a><a href='#L755'>755</a>
821
+ <a name='L756'></a><a href='#L756'>756</a>
822
+ <a name='L757'></a><a href='#L757'>757</a>
823
+ <a name='L758'></a><a href='#L758'>758</a>
824
+ <a name='L759'></a><a href='#L759'>759</a>
825
+ <a name='L760'></a><a href='#L760'>760</a>
826
+ <a name='L761'></a><a href='#L761'>761</a>
827
+ <a name='L762'></a><a href='#L762'>762</a>
828
+ <a name='L763'></a><a href='#L763'>763</a>
829
+ <a name='L764'></a><a href='#L764'>764</a>
830
+ <a name='L765'></a><a href='#L765'>765</a>
831
+ <a name='L766'></a><a href='#L766'>766</a>
832
+ <a name='L767'></a><a href='#L767'>767</a>
833
+ <a name='L768'></a><a href='#L768'>768</a>
834
+ <a name='L769'></a><a href='#L769'>769</a>
835
+ <a name='L770'></a><a href='#L770'>770</a>
836
+ <a name='L771'></a><a href='#L771'>771</a>
837
+ <a name='L772'></a><a href='#L772'>772</a>
838
+ <a name='L773'></a><a href='#L773'>773</a>
839
+ <a name='L774'></a><a href='#L774'>774</a>
840
+ <a name='L775'></a><a href='#L775'>775</a>
841
+ <a name='L776'></a><a href='#L776'>776</a>
842
+ <a name='L777'></a><a href='#L777'>777</a>
843
+ <a name='L778'></a><a href='#L778'>778</a>
844
+ <a name='L779'></a><a href='#L779'>779</a>
845
+ <a name='L780'></a><a href='#L780'>780</a>
846
+ <a name='L781'></a><a href='#L781'>781</a>
847
+ <a name='L782'></a><a href='#L782'>782</a>
848
+ <a name='L783'></a><a href='#L783'>783</a>
849
+ <a name='L784'></a><a href='#L784'>784</a>
850
+ <a name='L785'></a><a href='#L785'>785</a>
851
+ <a name='L786'></a><a href='#L786'>786</a>
852
+ <a name='L787'></a><a href='#L787'>787</a>
853
+ <a name='L788'></a><a href='#L788'>788</a>
854
+ <a name='L789'></a><a href='#L789'>789</a>
855
+ <a name='L790'></a><a href='#L790'>790</a>
856
+ <a name='L791'></a><a href='#L791'>791</a>
857
+ <a name='L792'></a><a href='#L792'>792</a>
858
+ <a name='L793'></a><a href='#L793'>793</a>
859
+ <a name='L794'></a><a href='#L794'>794</a>
860
+ <a name='L795'></a><a href='#L795'>795</a>
861
+ <a name='L796'></a><a href='#L796'>796</a>
862
+ <a name='L797'></a><a href='#L797'>797</a>
863
+ <a name='L798'></a><a href='#L798'>798</a>
864
+ <a name='L799'></a><a href='#L799'>799</a>
865
+ <a name='L800'></a><a href='#L800'>800</a>
866
+ <a name='L801'></a><a href='#L801'>801</a>
867
+ <a name='L802'></a><a href='#L802'>802</a>
868
+ <a name='L803'></a><a href='#L803'>803</a>
869
+ <a name='L804'></a><a href='#L804'>804</a>
870
+ <a name='L805'></a><a href='#L805'>805</a>
871
+ <a name='L806'></a><a href='#L806'>806</a>
872
+ <a name='L807'></a><a href='#L807'>807</a>
873
+ <a name='L808'></a><a href='#L808'>808</a>
874
+ <a name='L809'></a><a href='#L809'>809</a>
875
+ <a name='L810'></a><a href='#L810'>810</a>
876
+ <a name='L811'></a><a href='#L811'>811</a>
877
+ <a name='L812'></a><a href='#L812'>812</a>
878
+ <a name='L813'></a><a href='#L813'>813</a>
879
+ <a name='L814'></a><a href='#L814'>814</a>
880
+ <a name='L815'></a><a href='#L815'>815</a>
881
+ <a name='L816'></a><a href='#L816'>816</a>
882
+ <a name='L817'></a><a href='#L817'>817</a>
883
+ <a name='L818'></a><a href='#L818'>818</a>
884
+ <a name='L819'></a><a href='#L819'>819</a>
885
+ <a name='L820'></a><a href='#L820'>820</a>
886
+ <a name='L821'></a><a href='#L821'>821</a>
887
+ <a name='L822'></a><a href='#L822'>822</a>
888
+ <a name='L823'></a><a href='#L823'>823</a>
889
+ <a name='L824'></a><a href='#L824'>824</a>
890
+ <a name='L825'></a><a href='#L825'>825</a>
891
+ <a name='L826'></a><a href='#L826'>826</a>
892
+ <a name='L827'></a><a href='#L827'>827</a>
893
+ <a name='L828'></a><a href='#L828'>828</a>
894
+ <a name='L829'></a><a href='#L829'>829</a>
895
+ <a name='L830'></a><a href='#L830'>830</a>
896
+ <a name='L831'></a><a href='#L831'>831</a>
897
+ <a name='L832'></a><a href='#L832'>832</a>
898
+ <a name='L833'></a><a href='#L833'>833</a>
899
+ <a name='L834'></a><a href='#L834'>834</a>
900
+ <a name='L835'></a><a href='#L835'>835</a>
901
+ <a name='L836'></a><a href='#L836'>836</a>
902
+ <a name='L837'></a><a href='#L837'>837</a>
903
+ <a name='L838'></a><a href='#L838'>838</a>
904
+ <a name='L839'></a><a href='#L839'>839</a>
905
+ <a name='L840'></a><a href='#L840'>840</a>
906
+ <a name='L841'></a><a href='#L841'>841</a>
907
+ <a name='L842'></a><a href='#L842'>842</a>
908
+ <a name='L843'></a><a href='#L843'>843</a>
909
+ <a name='L844'></a><a href='#L844'>844</a>
910
+ <a name='L845'></a><a href='#L845'>845</a>
911
+ <a name='L846'></a><a href='#L846'>846</a>
912
+ <a name='L847'></a><a href='#L847'>847</a>
913
+ <a name='L848'></a><a href='#L848'>848</a>
914
+ <a name='L849'></a><a href='#L849'>849</a>
915
+ <a name='L850'></a><a href='#L850'>850</a>
916
+ <a name='L851'></a><a href='#L851'>851</a>
917
+ <a name='L852'></a><a href='#L852'>852</a>
918
+ <a name='L853'></a><a href='#L853'>853</a>
919
+ <a name='L854'></a><a href='#L854'>854</a>
920
+ <a name='L855'></a><a href='#L855'>855</a>
921
+ <a name='L856'></a><a href='#L856'>856</a>
922
+ <a name='L857'></a><a href='#L857'>857</a>
923
+ <a name='L858'></a><a href='#L858'>858</a>
924
+ <a name='L859'></a><a href='#L859'>859</a>
925
+ <a name='L860'></a><a href='#L860'>860</a>
926
+ <a name='L861'></a><a href='#L861'>861</a>
927
+ <a name='L862'></a><a href='#L862'>862</a>
928
+ <a name='L863'></a><a href='#L863'>863</a>
929
+ <a name='L864'></a><a href='#L864'>864</a>
930
+ <a name='L865'></a><a href='#L865'>865</a>
931
+ <a name='L866'></a><a href='#L866'>866</a>
932
+ <a name='L867'></a><a href='#L867'>867</a>
933
+ <a name='L868'></a><a href='#L868'>868</a>
934
+ <a name='L869'></a><a href='#L869'>869</a>
935
+ <a name='L870'></a><a href='#L870'>870</a>
936
+ <a name='L871'></a><a href='#L871'>871</a>
937
+ <a name='L872'></a><a href='#L872'>872</a>
938
+ <a name='L873'></a><a href='#L873'>873</a>
939
+ <a name='L874'></a><a href='#L874'>874</a>
940
+ <a name='L875'></a><a href='#L875'>875</a>
941
+ <a name='L876'></a><a href='#L876'>876</a>
942
+ <a name='L877'></a><a href='#L877'>877</a>
943
+ <a name='L878'></a><a href='#L878'>878</a>
944
+ <a name='L879'></a><a href='#L879'>879</a>
945
+ <a name='L880'></a><a href='#L880'>880</a>
946
+ <a name='L881'></a><a href='#L881'>881</a>
947
+ <a name='L882'></a><a href='#L882'>882</a>
948
+ <a name='L883'></a><a href='#L883'>883</a>
949
+ <a name='L884'></a><a href='#L884'>884</a>
950
+ <a name='L885'></a><a href='#L885'>885</a>
951
+ <a name='L886'></a><a href='#L886'>886</a>
952
+ <a name='L887'></a><a href='#L887'>887</a>
953
+ <a name='L888'></a><a href='#L888'>888</a>
954
+ <a name='L889'></a><a href='#L889'>889</a>
955
+ <a name='L890'></a><a href='#L890'>890</a>
956
+ <a name='L891'></a><a href='#L891'>891</a>
957
+ <a name='L892'></a><a href='#L892'>892</a>
958
+ <a name='L893'></a><a href='#L893'>893</a>
959
+ <a name='L894'></a><a href='#L894'>894</a>
960
+ <a name='L895'></a><a href='#L895'>895</a>
961
+ <a name='L896'></a><a href='#L896'>896</a>
962
+ <a name='L897'></a><a href='#L897'>897</a>
963
+ <a name='L898'></a><a href='#L898'>898</a>
964
+ <a name='L899'></a><a href='#L899'>899</a>
965
+ <a name='L900'></a><a href='#L900'>900</a>
966
+ <a name='L901'></a><a href='#L901'>901</a>
967
+ <a name='L902'></a><a href='#L902'>902</a>
968
+ <a name='L903'></a><a href='#L903'>903</a>
969
+ <a name='L904'></a><a href='#L904'>904</a>
970
+ <a name='L905'></a><a href='#L905'>905</a>
971
+ <a name='L906'></a><a href='#L906'>906</a>
972
+ <a name='L907'></a><a href='#L907'>907</a>
973
+ <a name='L908'></a><a href='#L908'>908</a>
974
+ <a name='L909'></a><a href='#L909'>909</a>
975
+ <a name='L910'></a><a href='#L910'>910</a>
976
+ <a name='L911'></a><a href='#L911'>911</a>
977
+ <a name='L912'></a><a href='#L912'>912</a>
978
+ <a name='L913'></a><a href='#L913'>913</a>
979
+ <a name='L914'></a><a href='#L914'>914</a>
980
+ <a name='L915'></a><a href='#L915'>915</a>
981
+ <a name='L916'></a><a href='#L916'>916</a>
982
+ <a name='L917'></a><a href='#L917'>917</a>
983
+ <a name='L918'></a><a href='#L918'>918</a>
984
+ <a name='L919'></a><a href='#L919'>919</a>
985
+ <a name='L920'></a><a href='#L920'>920</a>
986
+ <a name='L921'></a><a href='#L921'>921</a>
987
+ <a name='L922'></a><a href='#L922'>922</a>
988
+ <a name='L923'></a><a href='#L923'>923</a>
989
+ <a name='L924'></a><a href='#L924'>924</a>
990
+ <a name='L925'></a><a href='#L925'>925</a>
991
+ <a name='L926'></a><a href='#L926'>926</a>
992
+ <a name='L927'></a><a href='#L927'>927</a>
993
+ <a name='L928'></a><a href='#L928'>928</a>
994
+ <a name='L929'></a><a href='#L929'>929</a>
995
+ <a name='L930'></a><a href='#L930'>930</a>
996
+ <a name='L931'></a><a href='#L931'>931</a>
997
+ <a name='L932'></a><a href='#L932'>932</a>
998
+ <a name='L933'></a><a href='#L933'>933</a>
999
+ <a name='L934'></a><a href='#L934'>934</a>
1000
+ <a name='L935'></a><a href='#L935'>935</a>
1001
+ <a name='L936'></a><a href='#L936'>936</a>
1002
+ <a name='L937'></a><a href='#L937'>937</a>
1003
+ <a name='L938'></a><a href='#L938'>938</a>
1004
+ <a name='L939'></a><a href='#L939'>939</a>
1005
+ <a name='L940'></a><a href='#L940'>940</a>
1006
+ <a name='L941'></a><a href='#L941'>941</a>
1007
+ <a name='L942'></a><a href='#L942'>942</a>
1008
+ <a name='L943'></a><a href='#L943'>943</a>
1009
+ <a name='L944'></a><a href='#L944'>944</a>
1010
+ <a name='L945'></a><a href='#L945'>945</a>
1011
+ <a name='L946'></a><a href='#L946'>946</a>
1012
+ <a name='L947'></a><a href='#L947'>947</a>
1013
+ <a name='L948'></a><a href='#L948'>948</a>
1014
+ <a name='L949'></a><a href='#L949'>949</a>
1015
+ <a name='L950'></a><a href='#L950'>950</a>
1016
+ <a name='L951'></a><a href='#L951'>951</a>
1017
+ <a name='L952'></a><a href='#L952'>952</a>
1018
+ <a name='L953'></a><a href='#L953'>953</a>
1019
+ <a name='L954'></a><a href='#L954'>954</a>
1020
+ <a name='L955'></a><a href='#L955'>955</a>
1021
+ <a name='L956'></a><a href='#L956'>956</a>
1022
+ <a name='L957'></a><a href='#L957'>957</a>
1023
+ <a name='L958'></a><a href='#L958'>958</a>
1024
+ <a name='L959'></a><a href='#L959'>959</a>
1025
+ <a name='L960'></a><a href='#L960'>960</a>
1026
+ <a name='L961'></a><a href='#L961'>961</a>
1027
+ <a name='L962'></a><a href='#L962'>962</a>
1028
+ <a name='L963'></a><a href='#L963'>963</a>
1029
+ <a name='L964'></a><a href='#L964'>964</a>
1030
+ <a name='L965'></a><a href='#L965'>965</a>
1031
+ <a name='L966'></a><a href='#L966'>966</a>
1032
+ <a name='L967'></a><a href='#L967'>967</a>
1033
+ <a name='L968'></a><a href='#L968'>968</a>
1034
+ <a name='L969'></a><a href='#L969'>969</a>
1035
+ <a name='L970'></a><a href='#L970'>970</a>
1036
+ <a name='L971'></a><a href='#L971'>971</a>
1037
+ <a name='L972'></a><a href='#L972'>972</a>
1038
+ <a name='L973'></a><a href='#L973'>973</a>
1039
+ <a name='L974'></a><a href='#L974'>974</a>
1040
+ <a name='L975'></a><a href='#L975'>975</a>
1041
+ <a name='L976'></a><a href='#L976'>976</a>
1042
+ <a name='L977'></a><a href='#L977'>977</a>
1043
+ <a name='L978'></a><a href='#L978'>978</a>
1044
+ <a name='L979'></a><a href='#L979'>979</a>
1045
+ <a name='L980'></a><a href='#L980'>980</a>
1046
+ <a name='L981'></a><a href='#L981'>981</a>
1047
+ <a name='L982'></a><a href='#L982'>982</a>
1048
+ <a name='L983'></a><a href='#L983'>983</a>
1049
+ <a name='L984'></a><a href='#L984'>984</a>
1050
+ <a name='L985'></a><a href='#L985'>985</a>
1051
+ <a name='L986'></a><a href='#L986'>986</a>
1052
+ <a name='L987'></a><a href='#L987'>987</a>
1053
+ <a name='L988'></a><a href='#L988'>988</a>
1054
+ <a name='L989'></a><a href='#L989'>989</a>
1055
+ <a name='L990'></a><a href='#L990'>990</a>
1056
+ <a name='L991'></a><a href='#L991'>991</a>
1057
+ <a name='L992'></a><a href='#L992'>992</a>
1058
+ <a name='L993'></a><a href='#L993'>993</a>
1059
+ <a name='L994'></a><a href='#L994'>994</a>
1060
+ <a name='L995'></a><a href='#L995'>995</a>
1061
+ <a name='L996'></a><a href='#L996'>996</a>
1062
+ <a name='L997'></a><a href='#L997'>997</a>
1063
+ <a name='L998'></a><a href='#L998'>998</a>
1064
+ <a name='L999'></a><a href='#L999'>999</a>
1065
+ <a name='L1000'></a><a href='#L1000'>1000</a>
1066
+ <a name='L1001'></a><a href='#L1001'>1001</a>
1067
+ <a name='L1002'></a><a href='#L1002'>1002</a>
1068
+ <a name='L1003'></a><a href='#L1003'>1003</a>
1069
+ <a name='L1004'></a><a href='#L1004'>1004</a>
1070
+ <a name='L1005'></a><a href='#L1005'>1005</a>
1071
+ <a name='L1006'></a><a href='#L1006'>1006</a>
1072
+ <a name='L1007'></a><a href='#L1007'>1007</a>
1073
+ <a name='L1008'></a><a href='#L1008'>1008</a>
1074
+ <a name='L1009'></a><a href='#L1009'>1009</a>
1075
+ <a name='L1010'></a><a href='#L1010'>1010</a>
1076
+ <a name='L1011'></a><a href='#L1011'>1011</a>
1077
+ <a name='L1012'></a><a href='#L1012'>1012</a>
1078
+ <a name='L1013'></a><a href='#L1013'>1013</a>
1079
+ <a name='L1014'></a><a href='#L1014'>1014</a>
1080
+ <a name='L1015'></a><a href='#L1015'>1015</a>
1081
+ <a name='L1016'></a><a href='#L1016'>1016</a>
1082
+ <a name='L1017'></a><a href='#L1017'>1017</a>
1083
+ <a name='L1018'></a><a href='#L1018'>1018</a>
1084
+ <a name='L1019'></a><a href='#L1019'>1019</a>
1085
+ <a name='L1020'></a><a href='#L1020'>1020</a>
1086
+ <a name='L1021'></a><a href='#L1021'>1021</a>
1087
+ <a name='L1022'></a><a href='#L1022'>1022</a>
1088
+ <a name='L1023'></a><a href='#L1023'>1023</a>
1089
+ <a name='L1024'></a><a href='#L1024'>1024</a>
1090
+ <a name='L1025'></a><a href='#L1025'>1025</a>
1091
+ <a name='L1026'></a><a href='#L1026'>1026</a>
1092
+ <a name='L1027'></a><a href='#L1027'>1027</a>
1093
+ <a name='L1028'></a><a href='#L1028'>1028</a>
1094
+ <a name='L1029'></a><a href='#L1029'>1029</a>
1095
+ <a name='L1030'></a><a href='#L1030'>1030</a>
1096
+ <a name='L1031'></a><a href='#L1031'>1031</a>
1097
+ <a name='L1032'></a><a href='#L1032'>1032</a>
1098
+ <a name='L1033'></a><a href='#L1033'>1033</a>
1099
+ <a name='L1034'></a><a href='#L1034'>1034</a>
1100
+ <a name='L1035'></a><a href='#L1035'>1035</a>
1101
+ <a name='L1036'></a><a href='#L1036'>1036</a>
1102
+ <a name='L1037'></a><a href='#L1037'>1037</a>
1103
+ <a name='L1038'></a><a href='#L1038'>1038</a>
1104
+ <a name='L1039'></a><a href='#L1039'>1039</a>
1105
+ <a name='L1040'></a><a href='#L1040'>1040</a>
1106
+ <a name='L1041'></a><a href='#L1041'>1041</a>
1107
+ <a name='L1042'></a><a href='#L1042'>1042</a>
1108
+ <a name='L1043'></a><a href='#L1043'>1043</a>
1109
+ <a name='L1044'></a><a href='#L1044'>1044</a>
1110
+ <a name='L1045'></a><a href='#L1045'>1045</a>
1111
+ <a name='L1046'></a><a href='#L1046'>1046</a>
1112
+ <a name='L1047'></a><a href='#L1047'>1047</a>
1113
+ <a name='L1048'></a><a href='#L1048'>1048</a>
1114
+ <a name='L1049'></a><a href='#L1049'>1049</a>
1115
+ <a name='L1050'></a><a href='#L1050'>1050</a>
1116
+ <a name='L1051'></a><a href='#L1051'>1051</a>
1117
+ <a name='L1052'></a><a href='#L1052'>1052</a>
1118
+ <a name='L1053'></a><a href='#L1053'>1053</a>
1119
+ <a name='L1054'></a><a href='#L1054'>1054</a>
1120
+ <a name='L1055'></a><a href='#L1055'>1055</a>
1121
+ <a name='L1056'></a><a href='#L1056'>1056</a>
1122
+ <a name='L1057'></a><a href='#L1057'>1057</a>
1123
+ <a name='L1058'></a><a href='#L1058'>1058</a>
1124
+ <a name='L1059'></a><a href='#L1059'>1059</a>
1125
+ <a name='L1060'></a><a href='#L1060'>1060</a>
1126
+ <a name='L1061'></a><a href='#L1061'>1061</a>
1127
+ <a name='L1062'></a><a href='#L1062'>1062</a>
1128
+ <a name='L1063'></a><a href='#L1063'>1063</a>
1129
+ <a name='L1064'></a><a href='#L1064'>1064</a>
1130
+ <a name='L1065'></a><a href='#L1065'>1065</a>
1131
+ <a name='L1066'></a><a href='#L1066'>1066</a>
1132
+ <a name='L1067'></a><a href='#L1067'>1067</a>
1133
+ <a name='L1068'></a><a href='#L1068'>1068</a>
1134
+ <a name='L1069'></a><a href='#L1069'>1069</a>
1135
+ <a name='L1070'></a><a href='#L1070'>1070</a>
1136
+ <a name='L1071'></a><a href='#L1071'>1071</a>
1137
+ <a name='L1072'></a><a href='#L1072'>1072</a>
1138
+ <a name='L1073'></a><a href='#L1073'>1073</a>
1139
+ <a name='L1074'></a><a href='#L1074'>1074</a>
1140
+ <a name='L1075'></a><a href='#L1075'>1075</a>
1141
+ <a name='L1076'></a><a href='#L1076'>1076</a>
1142
+ <a name='L1077'></a><a href='#L1077'>1077</a>
1143
+ <a name='L1078'></a><a href='#L1078'>1078</a>
1144
+ <a name='L1079'></a><a href='#L1079'>1079</a>
1145
+ <a name='L1080'></a><a href='#L1080'>1080</a>
1146
+ <a name='L1081'></a><a href='#L1081'>1081</a>
1147
+ <a name='L1082'></a><a href='#L1082'>1082</a>
1148
+ <a name='L1083'></a><a href='#L1083'>1083</a>
1149
+ <a name='L1084'></a><a href='#L1084'>1084</a>
1150
+ <a name='L1085'></a><a href='#L1085'>1085</a>
1151
+ <a name='L1086'></a><a href='#L1086'>1086</a>
1152
+ <a name='L1087'></a><a href='#L1087'>1087</a>
1153
+ <a name='L1088'></a><a href='#L1088'>1088</a>
1154
+ <a name='L1089'></a><a href='#L1089'>1089</a>
1155
+ <a name='L1090'></a><a href='#L1090'>1090</a>
1156
+ <a name='L1091'></a><a href='#L1091'>1091</a>
1157
+ <a name='L1092'></a><a href='#L1092'>1092</a>
1158
+ <a name='L1093'></a><a href='#L1093'>1093</a>
1159
+ <a name='L1094'></a><a href='#L1094'>1094</a>
1160
+ <a name='L1095'></a><a href='#L1095'>1095</a>
1161
+ <a name='L1096'></a><a href='#L1096'>1096</a>
1162
+ <a name='L1097'></a><a href='#L1097'>1097</a>
1163
+ <a name='L1098'></a><a href='#L1098'>1098</a>
1164
+ <a name='L1099'></a><a href='#L1099'>1099</a>
1165
+ <a name='L1100'></a><a href='#L1100'>1100</a>
1166
+ <a name='L1101'></a><a href='#L1101'>1101</a>
1167
+ <a name='L1102'></a><a href='#L1102'>1102</a>
1168
+ <a name='L1103'></a><a href='#L1103'>1103</a>
1169
+ <a name='L1104'></a><a href='#L1104'>1104</a>
1170
+ <a name='L1105'></a><a href='#L1105'>1105</a>
1171
+ <a name='L1106'></a><a href='#L1106'>1106</a>
1172
+ <a name='L1107'></a><a href='#L1107'>1107</a>
1173
+ <a name='L1108'></a><a href='#L1108'>1108</a>
1174
+ <a name='L1109'></a><a href='#L1109'>1109</a>
1175
+ <a name='L1110'></a><a href='#L1110'>1110</a>
1176
+ <a name='L1111'></a><a href='#L1111'>1111</a>
1177
+ <a name='L1112'></a><a href='#L1112'>1112</a>
1178
+ <a name='L1113'></a><a href='#L1113'>1113</a>
1179
+ <a name='L1114'></a><a href='#L1114'>1114</a>
1180
+ <a name='L1115'></a><a href='#L1115'>1115</a>
1181
+ <a name='L1116'></a><a href='#L1116'>1116</a>
1182
+ <a name='L1117'></a><a href='#L1117'>1117</a>
1183
+ <a name='L1118'></a><a href='#L1118'>1118</a>
1184
+ <a name='L1119'></a><a href='#L1119'>1119</a>
1185
+ <a name='L1120'></a><a href='#L1120'>1120</a>
1186
+ <a name='L1121'></a><a href='#L1121'>1121</a>
1187
+ <a name='L1122'></a><a href='#L1122'>1122</a>
1188
+ <a name='L1123'></a><a href='#L1123'>1123</a>
1189
+ <a name='L1124'></a><a href='#L1124'>1124</a>
1190
+ <a name='L1125'></a><a href='#L1125'>1125</a>
1191
+ <a name='L1126'></a><a href='#L1126'>1126</a>
1192
+ <a name='L1127'></a><a href='#L1127'>1127</a>
1193
+ <a name='L1128'></a><a href='#L1128'>1128</a>
1194
+ <a name='L1129'></a><a href='#L1129'>1129</a>
1195
+ <a name='L1130'></a><a href='#L1130'>1130</a>
1196
+ <a name='L1131'></a><a href='#L1131'>1131</a>
1197
+ <a name='L1132'></a><a href='#L1132'>1132</a>
1198
+ <a name='L1133'></a><a href='#L1133'>1133</a>
1199
+ <a name='L1134'></a><a href='#L1134'>1134</a>
1200
+ <a name='L1135'></a><a href='#L1135'>1135</a>
1201
+ <a name='L1136'></a><a href='#L1136'>1136</a>
1202
+ <a name='L1137'></a><a href='#L1137'>1137</a>
1203
+ <a name='L1138'></a><a href='#L1138'>1138</a>
1204
+ <a name='L1139'></a><a href='#L1139'>1139</a>
1205
+ <a name='L1140'></a><a href='#L1140'>1140</a>
1206
+ <a name='L1141'></a><a href='#L1141'>1141</a>
1207
+ <a name='L1142'></a><a href='#L1142'>1142</a>
1208
+ <a name='L1143'></a><a href='#L1143'>1143</a>
1209
+ <a name='L1144'></a><a href='#L1144'>1144</a>
1210
+ <a name='L1145'></a><a href='#L1145'>1145</a>
1211
+ <a name='L1146'></a><a href='#L1146'>1146</a>
1212
+ <a name='L1147'></a><a href='#L1147'>1147</a>
1213
+ <a name='L1148'></a><a href='#L1148'>1148</a>
1214
+ <a name='L1149'></a><a href='#L1149'>1149</a>
1215
+ <a name='L1150'></a><a href='#L1150'>1150</a>
1216
+ <a name='L1151'></a><a href='#L1151'>1151</a>
1217
+ <a name='L1152'></a><a href='#L1152'>1152</a>
1218
+ <a name='L1153'></a><a href='#L1153'>1153</a>
1219
+ <a name='L1154'></a><a href='#L1154'>1154</a>
1220
+ <a name='L1155'></a><a href='#L1155'>1155</a>
1221
+ <a name='L1156'></a><a href='#L1156'>1156</a>
1222
+ <a name='L1157'></a><a href='#L1157'>1157</a>
1223
+ <a name='L1158'></a><a href='#L1158'>1158</a>
1224
+ <a name='L1159'></a><a href='#L1159'>1159</a>
1225
+ <a name='L1160'></a><a href='#L1160'>1160</a>
1226
+ <a name='L1161'></a><a href='#L1161'>1161</a>
1227
+ <a name='L1162'></a><a href='#L1162'>1162</a>
1228
+ <a name='L1163'></a><a href='#L1163'>1163</a>
1229
+ <a name='L1164'></a><a href='#L1164'>1164</a>
1230
+ <a name='L1165'></a><a href='#L1165'>1165</a>
1231
+ <a name='L1166'></a><a href='#L1166'>1166</a>
1232
+ <a name='L1167'></a><a href='#L1167'>1167</a>
1233
+ <a name='L1168'></a><a href='#L1168'>1168</a>
1234
+ <a name='L1169'></a><a href='#L1169'>1169</a>
1235
+ <a name='L1170'></a><a href='#L1170'>1170</a>
1236
+ <a name='L1171'></a><a href='#L1171'>1171</a>
1237
+ <a name='L1172'></a><a href='#L1172'>1172</a>
1238
+ <a name='L1173'></a><a href='#L1173'>1173</a>
1239
+ <a name='L1174'></a><a href='#L1174'>1174</a>
1240
+ <a name='L1175'></a><a href='#L1175'>1175</a>
1241
+ <a name='L1176'></a><a href='#L1176'>1176</a>
1242
+ <a name='L1177'></a><a href='#L1177'>1177</a>
1243
+ <a name='L1178'></a><a href='#L1178'>1178</a>
1244
+ <a name='L1179'></a><a href='#L1179'>1179</a>
1245
+ <a name='L1180'></a><a href='#L1180'>1180</a>
1246
+ <a name='L1181'></a><a href='#L1181'>1181</a>
1247
+ <a name='L1182'></a><a href='#L1182'>1182</a>
1248
+ <a name='L1183'></a><a href='#L1183'>1183</a>
1249
+ <a name='L1184'></a><a href='#L1184'>1184</a>
1250
+ <a name='L1185'></a><a href='#L1185'>1185</a>
1251
+ <a name='L1186'></a><a href='#L1186'>1186</a>
1252
+ <a name='L1187'></a><a href='#L1187'>1187</a>
1253
+ <a name='L1188'></a><a href='#L1188'>1188</a>
1254
+ <a name='L1189'></a><a href='#L1189'>1189</a>
1255
+ <a name='L1190'></a><a href='#L1190'>1190</a>
1256
+ <a name='L1191'></a><a href='#L1191'>1191</a>
1257
+ <a name='L1192'></a><a href='#L1192'>1192</a>
1258
+ <a name='L1193'></a><a href='#L1193'>1193</a>
1259
+ <a name='L1194'></a><a href='#L1194'>1194</a>
1260
+ <a name='L1195'></a><a href='#L1195'>1195</a>
1261
+ <a name='L1196'></a><a href='#L1196'>1196</a>
1262
+ <a name='L1197'></a><a href='#L1197'>1197</a>
1263
+ <a name='L1198'></a><a href='#L1198'>1198</a>
1264
+ <a name='L1199'></a><a href='#L1199'>1199</a>
1265
+ <a name='L1200'></a><a href='#L1200'>1200</a>
1266
+ <a name='L1201'></a><a href='#L1201'>1201</a>
1267
+ <a name='L1202'></a><a href='#L1202'>1202</a>
1268
+ <a name='L1203'></a><a href='#L1203'>1203</a>
1269
+ <a name='L1204'></a><a href='#L1204'>1204</a>
1270
+ <a name='L1205'></a><a href='#L1205'>1205</a>
1271
+ <a name='L1206'></a><a href='#L1206'>1206</a>
1272
+ <a name='L1207'></a><a href='#L1207'>1207</a>
1273
+ <a name='L1208'></a><a href='#L1208'>1208</a>
1274
+ <a name='L1209'></a><a href='#L1209'>1209</a>
1275
+ <a name='L1210'></a><a href='#L1210'>1210</a>
1276
+ <a name='L1211'></a><a href='#L1211'>1211</a>
1277
+ <a name='L1212'></a><a href='#L1212'>1212</a>
1278
+ <a name='L1213'></a><a href='#L1213'>1213</a>
1279
+ <a name='L1214'></a><a href='#L1214'>1214</a>
1280
+ <a name='L1215'></a><a href='#L1215'>1215</a>
1281
+ <a name='L1216'></a><a href='#L1216'>1216</a>
1282
+ <a name='L1217'></a><a href='#L1217'>1217</a>
1283
+ <a name='L1218'></a><a href='#L1218'>1218</a>
1284
+ <a name='L1219'></a><a href='#L1219'>1219</a>
1285
+ <a name='L1220'></a><a href='#L1220'>1220</a>
1286
+ <a name='L1221'></a><a href='#L1221'>1221</a>
1287
+ <a name='L1222'></a><a href='#L1222'>1222</a>
1288
+ <a name='L1223'></a><a href='#L1223'>1223</a>
1289
+ <a name='L1224'></a><a href='#L1224'>1224</a>
1290
+ <a name='L1225'></a><a href='#L1225'>1225</a>
1291
+ <a name='L1226'></a><a href='#L1226'>1226</a>
1292
+ <a name='L1227'></a><a href='#L1227'>1227</a>
1293
+ <a name='L1228'></a><a href='#L1228'>1228</a>
1294
+ <a name='L1229'></a><a href='#L1229'>1229</a>
1295
+ <a name='L1230'></a><a href='#L1230'>1230</a>
1296
+ <a name='L1231'></a><a href='#L1231'>1231</a>
1297
+ <a name='L1232'></a><a href='#L1232'>1232</a>
1298
+ <a name='L1233'></a><a href='#L1233'>1233</a>
1299
+ <a name='L1234'></a><a href='#L1234'>1234</a>
1300
+ <a name='L1235'></a><a href='#L1235'>1235</a>
1301
+ <a name='L1236'></a><a href='#L1236'>1236</a>
1302
+ <a name='L1237'></a><a href='#L1237'>1237</a>
1303
+ <a name='L1238'></a><a href='#L1238'>1238</a>
1304
+ <a name='L1239'></a><a href='#L1239'>1239</a>
1305
+ <a name='L1240'></a><a href='#L1240'>1240</a>
1306
+ <a name='L1241'></a><a href='#L1241'>1241</a>
1307
+ <a name='L1242'></a><a href='#L1242'>1242</a>
1308
+ <a name='L1243'></a><a href='#L1243'>1243</a>
1309
+ <a name='L1244'></a><a href='#L1244'>1244</a>
1310
+ <a name='L1245'></a><a href='#L1245'>1245</a>
1311
+ <a name='L1246'></a><a href='#L1246'>1246</a>
1312
+ <a name='L1247'></a><a href='#L1247'>1247</a>
1313
+ <a name='L1248'></a><a href='#L1248'>1248</a>
1314
+ <a name='L1249'></a><a href='#L1249'>1249</a>
1315
+ <a name='L1250'></a><a href='#L1250'>1250</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
1316
+ <span class="cline-any cline-neutral">&nbsp;</span>
1317
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
1321
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
1325
+ <span class="cline-any cline-neutral">&nbsp;</span>
1326
+ <span class="cline-any cline-neutral">&nbsp;</span>
1327
+ <span class="cline-any cline-neutral">&nbsp;</span>
1328
+ <span class="cline-any cline-neutral">&nbsp;</span>
1329
+ <span class="cline-any cline-neutral">&nbsp;</span>
1330
+ <span class="cline-any cline-neutral">&nbsp;</span>
1331
+ <span class="cline-any cline-neutral">&nbsp;</span>
1332
+ <span class="cline-any cline-neutral">&nbsp;</span>
1333
+ <span class="cline-any cline-neutral">&nbsp;</span>
1334
+ <span class="cline-any cline-neutral">&nbsp;</span>
1335
+ <span class="cline-any cline-neutral">&nbsp;</span>
1336
+ <span class="cline-any cline-neutral">&nbsp;</span>
1337
+ <span class="cline-any cline-yes">1x</span>
1338
+ <span class="cline-any cline-yes">1x</span>
1339
+ <span class="cline-any cline-yes">1x</span>
1340
+ <span class="cline-any cline-yes">1x</span>
1341
+ <span class="cline-any cline-yes">1x</span>
1342
+ <span class="cline-any cline-yes">1x</span>
1343
+ <span class="cline-any cline-neutral">&nbsp;</span>
1344
+ <span class="cline-any cline-neutral">&nbsp;</span>
1345
+ <span class="cline-any cline-neutral">&nbsp;</span>
1346
+ <span class="cline-any cline-neutral">&nbsp;</span>
1347
+ <span class="cline-any cline-neutral">&nbsp;</span>
1348
+ <span class="cline-any cline-neutral">&nbsp;</span>
1349
+ <span class="cline-any cline-yes">1x</span>
1350
+ <span class="cline-any cline-neutral">&nbsp;</span>
1351
+ <span class="cline-any cline-neutral">&nbsp;</span>
1352
+ <span class="cline-any cline-neutral">&nbsp;</span>
1353
+ <span class="cline-any cline-neutral">&nbsp;</span>
1354
+ <span class="cline-any cline-neutral">&nbsp;</span>
1355
+ <span class="cline-any cline-yes">1x</span>
1356
+ <span class="cline-any cline-yes">1x</span>
1357
+ <span class="cline-any cline-neutral">&nbsp;</span>
1358
+ <span class="cline-any cline-yes">1x</span>
1359
+ <span class="cline-any cline-yes">1x</span>
1360
+ <span class="cline-any cline-neutral">&nbsp;</span>
1361
+ <span class="cline-any cline-yes">1x</span>
1362
+ <span class="cline-any cline-yes">1x</span>
1363
+ <span class="cline-any cline-no">&nbsp;</span>
1364
+ <span class="cline-any cline-no">&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-no">&nbsp;</span>
1368
+ <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
1372
+ <span class="cline-any cline-no">&nbsp;</span>
1373
+ <span class="cline-any cline-no">&nbsp;</span>
1374
+ <span class="cline-any cline-neutral">&nbsp;</span>
1375
+ <span class="cline-any cline-neutral">&nbsp;</span>
1376
+ <span class="cline-any cline-no">&nbsp;</span>
1377
+ <span class="cline-any cline-neutral">&nbsp;</span>
1378
+ <span class="cline-any cline-no">&nbsp;</span>
1379
+ <span class="cline-any cline-neutral">&nbsp;</span>
1380
+ <span class="cline-any cline-neutral">&nbsp;</span>
1381
+ <span class="cline-any cline-yes">1x</span>
1382
+ <span class="cline-any cline-no">&nbsp;</span>
1383
+ <span class="cline-any cline-no">&nbsp;</span>
1384
+ <span class="cline-any cline-neutral">&nbsp;</span>
1385
+ <span class="cline-any cline-neutral">&nbsp;</span>
1386
+ <span class="cline-any cline-neutral">&nbsp;</span>
1387
+ <span class="cline-any cline-neutral">&nbsp;</span>
1388
+ <span class="cline-any cline-no">&nbsp;</span>
1389
+ <span class="cline-any cline-no">&nbsp;</span>
1390
+ <span class="cline-any cline-neutral">&nbsp;</span>
1391
+ <span class="cline-any cline-neutral">&nbsp;</span>
1392
+ <span class="cline-any cline-neutral">&nbsp;</span>
1393
+ <span class="cline-any cline-neutral">&nbsp;</span>
1394
+ <span class="cline-any cline-no">&nbsp;</span>
1395
+ <span class="cline-any cline-neutral">&nbsp;</span>
1396
+ <span class="cline-any cline-neutral">&nbsp;</span>
1397
+ <span class="cline-any cline-neutral">&nbsp;</span>
1398
+ <span class="cline-any cline-no">&nbsp;</span>
1399
+ <span class="cline-any cline-neutral">&nbsp;</span>
1400
+ <span class="cline-any cline-neutral">&nbsp;</span>
1401
+ <span class="cline-any cline-neutral">&nbsp;</span>
1402
+ <span class="cline-any cline-neutral">&nbsp;</span>
1403
+ <span class="cline-any cline-neutral">&nbsp;</span>
1404
+ <span class="cline-any cline-neutral">&nbsp;</span>
1405
+ <span class="cline-any cline-neutral">&nbsp;</span>
1406
+ <span class="cline-any cline-yes">1x</span>
1407
+ <span class="cline-any cline-no">&nbsp;</span>
1408
+ <span class="cline-any cline-neutral">&nbsp;</span>
1409
+ <span class="cline-any cline-no">&nbsp;</span>
1410
+ <span class="cline-any cline-neutral">&nbsp;</span>
1411
+ <span class="cline-any cline-no">&nbsp;</span>
1412
+ <span class="cline-any cline-no">&nbsp;</span>
1413
+ <span class="cline-any cline-neutral">&nbsp;</span>
1414
+ <span class="cline-any cline-no">&nbsp;</span>
1415
+ <span class="cline-any cline-no">&nbsp;</span>
1416
+ <span class="cline-any cline-neutral">&nbsp;</span>
1417
+ <span class="cline-any cline-no">&nbsp;</span>
1418
+ <span class="cline-any cline-no">&nbsp;</span>
1419
+ <span class="cline-any cline-no">&nbsp;</span>
1420
+ <span class="cline-any cline-no">&nbsp;</span>
1421
+ <span class="cline-any cline-neutral">&nbsp;</span>
1422
+ <span class="cline-any cline-no">&nbsp;</span>
1423
+ <span class="cline-any cline-neutral">&nbsp;</span>
1424
+ <span class="cline-any cline-neutral">&nbsp;</span>
1425
+ <span class="cline-any cline-no">&nbsp;</span>
1426
+ <span class="cline-any cline-neutral">&nbsp;</span>
1427
+ <span class="cline-any cline-neutral">&nbsp;</span>
1428
+ <span class="cline-any cline-no">&nbsp;</span>
1429
+ <span class="cline-any cline-no">&nbsp;</span>
1430
+ <span class="cline-any cline-neutral">&nbsp;</span>
1431
+ <span class="cline-any cline-neutral">&nbsp;</span>
1432
+ <span class="cline-any cline-no">&nbsp;</span>
1433
+ <span class="cline-any cline-neutral">&nbsp;</span>
1434
+ <span class="cline-any cline-no">&nbsp;</span>
1435
+ <span class="cline-any cline-neutral">&nbsp;</span>
1436
+ <span class="cline-any cline-neutral">&nbsp;</span>
1437
+ <span class="cline-any cline-no">&nbsp;</span>
1438
+ <span class="cline-any cline-neutral">&nbsp;</span>
1439
+ <span class="cline-any cline-no">&nbsp;</span>
1440
+ <span class="cline-any cline-no">&nbsp;</span>
1441
+ <span class="cline-any cline-neutral">&nbsp;</span>
1442
+ <span class="cline-any cline-neutral">&nbsp;</span>
1443
+ <span class="cline-any cline-no">&nbsp;</span>
1444
+ <span class="cline-any cline-neutral">&nbsp;</span>
1445
+ <span class="cline-any cline-neutral">&nbsp;</span>
1446
+ <span class="cline-any cline-neutral">&nbsp;</span>
1447
+ <span class="cline-any cline-no">&nbsp;</span>
1448
+ <span class="cline-any cline-no">&nbsp;</span>
1449
+ <span class="cline-any cline-neutral">&nbsp;</span>
1450
+ <span class="cline-any cline-neutral">&nbsp;</span>
1451
+ <span class="cline-any cline-no">&nbsp;</span>
1452
+ <span class="cline-any cline-neutral">&nbsp;</span>
1453
+ <span class="cline-any cline-neutral">&nbsp;</span>
1454
+ <span class="cline-any cline-no">&nbsp;</span>
1455
+ <span class="cline-any cline-no">&nbsp;</span>
1456
+ <span class="cline-any cline-neutral">&nbsp;</span>
1457
+ <span class="cline-any cline-no">&nbsp;</span>
1458
+ <span class="cline-any cline-neutral">&nbsp;</span>
1459
+ <span class="cline-any cline-no">&nbsp;</span>
1460
+ <span class="cline-any cline-no">&nbsp;</span>
1461
+ <span class="cline-any cline-neutral">&nbsp;</span>
1462
+ <span class="cline-any cline-neutral">&nbsp;</span>
1463
+ <span class="cline-any cline-neutral">&nbsp;</span>
1464
+ <span class="cline-any cline-neutral">&nbsp;</span>
1465
+ <span class="cline-any cline-no">&nbsp;</span>
1466
+ <span class="cline-any cline-neutral">&nbsp;</span>
1467
+ <span class="cline-any cline-neutral">&nbsp;</span>
1468
+ <span class="cline-any cline-no">&nbsp;</span>
1469
+ <span class="cline-any cline-no">&nbsp;</span>
1470
+ <span class="cline-any cline-no">&nbsp;</span>
1471
+ <span class="cline-any cline-neutral">&nbsp;</span>
1472
+ <span class="cline-any cline-neutral">&nbsp;</span>
1473
+ <span class="cline-any cline-no">&nbsp;</span>
1474
+ <span class="cline-any cline-neutral">&nbsp;</span>
1475
+ <span class="cline-any cline-neutral">&nbsp;</span>
1476
+ <span class="cline-any cline-neutral">&nbsp;</span>
1477
+ <span class="cline-any cline-neutral">&nbsp;</span>
1478
+ <span class="cline-any cline-neutral">&nbsp;</span>
1479
+ <span class="cline-any cline-neutral">&nbsp;</span>
1480
+ <span class="cline-any cline-neutral">&nbsp;</span>
1481
+ <span class="cline-any cline-neutral">&nbsp;</span>
1482
+ <span class="cline-any cline-no">&nbsp;</span>
1483
+ <span class="cline-any cline-neutral">&nbsp;</span>
1484
+ <span class="cline-any cline-neutral">&nbsp;</span>
1485
+ <span class="cline-any cline-yes">1x</span>
1486
+ <span class="cline-any cline-yes">4x</span>
1487
+ <span class="cline-any cline-neutral">&nbsp;</span>
1488
+ <span class="cline-any cline-yes">4x</span>
1489
+ <span class="cline-any cline-neutral">&nbsp;</span>
1490
+ <span class="cline-any cline-no">&nbsp;</span>
1491
+ <span class="cline-any cline-neutral">&nbsp;</span>
1492
+ <span class="cline-any cline-no">&nbsp;</span>
1493
+ <span class="cline-any cline-neutral">&nbsp;</span>
1494
+ <span class="cline-any cline-no">&nbsp;</span>
1495
+ <span class="cline-any cline-neutral">&nbsp;</span>
1496
+ <span class="cline-any cline-no">&nbsp;</span>
1497
+ <span class="cline-any cline-neutral">&nbsp;</span>
1498
+ <span class="cline-any cline-neutral">&nbsp;</span>
1499
+ <span class="cline-any cline-neutral">&nbsp;</span>
1500
+ <span class="cline-any cline-neutral">&nbsp;</span>
1501
+ <span class="cline-any cline-no">&nbsp;</span>
1502
+ <span class="cline-any cline-neutral">&nbsp;</span>
1503
+ <span class="cline-any cline-no">&nbsp;</span>
1504
+ <span class="cline-any cline-neutral">&nbsp;</span>
1505
+ <span class="cline-any cline-no">&nbsp;</span>
1506
+ <span class="cline-any cline-neutral">&nbsp;</span>
1507
+ <span class="cline-any cline-no">&nbsp;</span>
1508
+ <span class="cline-any cline-neutral">&nbsp;</span>
1509
+ <span class="cline-any cline-neutral">&nbsp;</span>
1510
+ <span class="cline-any cline-neutral">&nbsp;</span>
1511
+ <span class="cline-any cline-no">&nbsp;</span>
1512
+ <span class="cline-any cline-neutral">&nbsp;</span>
1513
+ <span class="cline-any cline-no">&nbsp;</span>
1514
+ <span class="cline-any cline-neutral">&nbsp;</span>
1515
+ <span class="cline-any cline-neutral">&nbsp;</span>
1516
+ <span class="cline-any cline-neutral">&nbsp;</span>
1517
+ <span class="cline-any cline-neutral">&nbsp;</span>
1518
+ <span class="cline-any cline-neutral">&nbsp;</span>
1519
+ <span class="cline-any cline-no">&nbsp;</span>
1520
+ <span class="cline-any cline-neutral">&nbsp;</span>
1521
+ <span class="cline-any cline-no">&nbsp;</span>
1522
+ <span class="cline-any cline-neutral">&nbsp;</span>
1523
+ <span class="cline-any cline-no">&nbsp;</span>
1524
+ <span class="cline-any cline-neutral">&nbsp;</span>
1525
+ <span class="cline-any cline-neutral">&nbsp;</span>
1526
+ <span class="cline-any cline-neutral">&nbsp;</span>
1527
+ <span class="cline-any cline-no">&nbsp;</span>
1528
+ <span class="cline-any cline-neutral">&nbsp;</span>
1529
+ <span class="cline-any cline-no">&nbsp;</span>
1530
+ <span class="cline-any cline-no">&nbsp;</span>
1531
+ <span class="cline-any cline-neutral">&nbsp;</span>
1532
+ <span class="cline-any cline-no">&nbsp;</span>
1533
+ <span class="cline-any cline-no">&nbsp;</span>
1534
+ <span class="cline-any cline-neutral">&nbsp;</span>
1535
+ <span class="cline-any cline-neutral">&nbsp;</span>
1536
+ <span class="cline-any cline-no">&nbsp;</span>
1537
+ <span class="cline-any cline-neutral">&nbsp;</span>
1538
+ <span class="cline-any cline-no">&nbsp;</span>
1539
+ <span class="cline-any cline-neutral">&nbsp;</span>
1540
+ <span class="cline-any cline-no">&nbsp;</span>
1541
+ <span class="cline-any cline-neutral">&nbsp;</span>
1542
+ <span class="cline-any cline-no">&nbsp;</span>
1543
+ <span class="cline-any cline-no">&nbsp;</span>
1544
+ <span class="cline-any cline-no">&nbsp;</span>
1545
+ <span class="cline-any cline-neutral">&nbsp;</span>
1546
+ <span class="cline-any cline-no">&nbsp;</span>
1547
+ <span class="cline-any cline-neutral">&nbsp;</span>
1548
+ <span class="cline-any cline-no">&nbsp;</span>
1549
+ <span class="cline-any cline-no">&nbsp;</span>
1550
+ <span class="cline-any cline-no">&nbsp;</span>
1551
+ <span class="cline-any cline-neutral">&nbsp;</span>
1552
+ <span class="cline-any cline-neutral">&nbsp;</span>
1553
+ <span class="cline-any cline-neutral">&nbsp;</span>
1554
+ <span class="cline-any cline-neutral">&nbsp;</span>
1555
+ <span class="cline-any cline-no">&nbsp;</span>
1556
+ <span class="cline-any cline-neutral">&nbsp;</span>
1557
+ <span class="cline-any cline-neutral">&nbsp;</span>
1558
+ <span class="cline-any cline-neutral">&nbsp;</span>
1559
+ <span class="cline-any cline-neutral">&nbsp;</span>
1560
+ <span class="cline-any cline-neutral">&nbsp;</span>
1561
+ <span class="cline-any cline-no">&nbsp;</span>
1562
+ <span class="cline-any cline-neutral">&nbsp;</span>
1563
+ <span class="cline-any cline-no">&nbsp;</span>
1564
+ <span class="cline-any cline-neutral">&nbsp;</span>
1565
+ <span class="cline-any cline-neutral">&nbsp;</span>
1566
+ <span class="cline-any cline-neutral">&nbsp;</span>
1567
+ <span class="cline-any cline-neutral">&nbsp;</span>
1568
+ <span class="cline-any cline-no">&nbsp;</span>
1569
+ <span class="cline-any cline-neutral">&nbsp;</span>
1570
+ <span class="cline-any cline-no">&nbsp;</span>
1571
+ <span class="cline-any cline-no">&nbsp;</span>
1572
+ <span class="cline-any cline-neutral">&nbsp;</span>
1573
+ <span class="cline-any cline-no">&nbsp;</span>
1574
+ <span class="cline-any cline-no">&nbsp;</span>
1575
+ <span class="cline-any cline-neutral">&nbsp;</span>
1576
+ <span class="cline-any cline-neutral">&nbsp;</span>
1577
+ <span class="cline-any cline-no">&nbsp;</span>
1578
+ <span class="cline-any cline-no">&nbsp;</span>
1579
+ <span class="cline-any cline-neutral">&nbsp;</span>
1580
+ <span class="cline-any cline-neutral">&nbsp;</span>
1581
+ <span class="cline-any cline-no">&nbsp;</span>
1582
+ <span class="cline-any cline-no">&nbsp;</span>
1583
+ <span class="cline-any cline-neutral">&nbsp;</span>
1584
+ <span class="cline-any cline-neutral">&nbsp;</span>
1585
+ <span class="cline-any cline-no">&nbsp;</span>
1586
+ <span class="cline-any cline-neutral">&nbsp;</span>
1587
+ <span class="cline-any cline-no">&nbsp;</span>
1588
+ <span class="cline-any cline-neutral">&nbsp;</span>
1589
+ <span class="cline-any cline-no">&nbsp;</span>
1590
+ <span class="cline-any cline-neutral">&nbsp;</span>
1591
+ <span class="cline-any cline-no">&nbsp;</span>
1592
+ <span class="cline-any cline-neutral">&nbsp;</span>
1593
+ <span class="cline-any cline-neutral">&nbsp;</span>
1594
+ <span class="cline-any cline-neutral">&nbsp;</span>
1595
+ <span class="cline-any cline-no">&nbsp;</span>
1596
+ <span class="cline-any cline-neutral">&nbsp;</span>
1597
+ <span class="cline-any cline-no">&nbsp;</span>
1598
+ <span class="cline-any cline-no">&nbsp;</span>
1599
+ <span class="cline-any cline-neutral">&nbsp;</span>
1600
+ <span class="cline-any cline-no">&nbsp;</span>
1601
+ <span class="cline-any cline-no">&nbsp;</span>
1602
+ <span class="cline-any cline-neutral">&nbsp;</span>
1603
+ <span class="cline-any cline-neutral">&nbsp;</span>
1604
+ <span class="cline-any cline-no">&nbsp;</span>
1605
+ <span class="cline-any cline-no">&nbsp;</span>
1606
+ <span class="cline-any cline-neutral">&nbsp;</span>
1607
+ <span class="cline-any cline-neutral">&nbsp;</span>
1608
+ <span class="cline-any cline-no">&nbsp;</span>
1609
+ <span class="cline-any cline-neutral">&nbsp;</span>
1610
+ <span class="cline-any cline-neutral">&nbsp;</span>
1611
+ <span class="cline-any cline-neutral">&nbsp;</span>
1612
+ <span class="cline-any cline-neutral">&nbsp;</span>
1613
+ <span class="cline-any cline-neutral">&nbsp;</span>
1614
+ <span class="cline-any cline-no">&nbsp;</span>
1615
+ <span class="cline-any cline-no">&nbsp;</span>
1616
+ <span class="cline-any cline-neutral">&nbsp;</span>
1617
+ <span class="cline-any cline-neutral">&nbsp;</span>
1618
+ <span class="cline-any cline-no">&nbsp;</span>
1619
+ <span class="cline-any cline-neutral">&nbsp;</span>
1620
+ <span class="cline-any cline-no">&nbsp;</span>
1621
+ <span class="cline-any cline-neutral">&nbsp;</span>
1622
+ <span class="cline-any cline-no">&nbsp;</span>
1623
+ <span class="cline-any cline-no">&nbsp;</span>
1624
+ <span class="cline-any cline-neutral">&nbsp;</span>
1625
+ <span class="cline-any cline-neutral">&nbsp;</span>
1626
+ <span class="cline-any cline-no">&nbsp;</span>
1627
+ <span class="cline-any cline-no">&nbsp;</span>
1628
+ <span class="cline-any cline-no">&nbsp;</span>
1629
+ <span class="cline-any cline-no">&nbsp;</span>
1630
+ <span class="cline-any cline-neutral">&nbsp;</span>
1631
+ <span class="cline-any cline-no">&nbsp;</span>
1632
+ <span class="cline-any cline-no">&nbsp;</span>
1633
+ <span class="cline-any cline-no">&nbsp;</span>
1634
+ <span class="cline-any cline-neutral">&nbsp;</span>
1635
+ <span class="cline-any cline-neutral">&nbsp;</span>
1636
+ <span class="cline-any cline-neutral">&nbsp;</span>
1637
+ <span class="cline-any cline-no">&nbsp;</span>
1638
+ <span class="cline-any cline-neutral">&nbsp;</span>
1639
+ <span class="cline-any cline-neutral">&nbsp;</span>
1640
+ <span class="cline-any cline-neutral">&nbsp;</span>
1641
+ <span class="cline-any cline-neutral">&nbsp;</span>
1642
+ <span class="cline-any cline-neutral">&nbsp;</span>
1643
+ <span class="cline-any cline-no">&nbsp;</span>
1644
+ <span class="cline-any cline-neutral">&nbsp;</span>
1645
+ <span class="cline-any cline-no">&nbsp;</span>
1646
+ <span class="cline-any cline-neutral">&nbsp;</span>
1647
+ <span class="cline-any cline-neutral">&nbsp;</span>
1648
+ <span class="cline-any cline-neutral">&nbsp;</span>
1649
+ <span class="cline-any cline-neutral">&nbsp;</span>
1650
+ <span class="cline-any cline-no">&nbsp;</span>
1651
+ <span class="cline-any cline-neutral">&nbsp;</span>
1652
+ <span class="cline-any cline-no">&nbsp;</span>
1653
+ <span class="cline-any cline-no">&nbsp;</span>
1654
+ <span class="cline-any cline-neutral">&nbsp;</span>
1655
+ <span class="cline-any cline-no">&nbsp;</span>
1656
+ <span class="cline-any cline-neutral">&nbsp;</span>
1657
+ <span class="cline-any cline-no">&nbsp;</span>
1658
+ <span class="cline-any cline-no">&nbsp;</span>
1659
+ <span class="cline-any cline-neutral">&nbsp;</span>
1660
+ <span class="cline-any cline-neutral">&nbsp;</span>
1661
+ <span class="cline-any cline-no">&nbsp;</span>
1662
+ <span class="cline-any cline-neutral">&nbsp;</span>
1663
+ <span class="cline-any cline-neutral">&nbsp;</span>
1664
+ <span class="cline-any cline-neutral">&nbsp;</span>
1665
+ <span class="cline-any cline-neutral">&nbsp;</span>
1666
+ <span class="cline-any cline-no">&nbsp;</span>
1667
+ <span class="cline-any cline-neutral">&nbsp;</span>
1668
+ <span class="cline-any cline-no">&nbsp;</span>
1669
+ <span class="cline-any cline-neutral">&nbsp;</span>
1670
+ <span class="cline-any cline-no">&nbsp;</span>
1671
+ <span class="cline-any cline-neutral">&nbsp;</span>
1672
+ <span class="cline-any cline-neutral">&nbsp;</span>
1673
+ <span class="cline-any cline-neutral">&nbsp;</span>
1674
+ <span class="cline-any cline-no">&nbsp;</span>
1675
+ <span class="cline-any cline-neutral">&nbsp;</span>
1676
+ <span class="cline-any cline-no">&nbsp;</span>
1677
+ <span class="cline-any cline-neutral">&nbsp;</span>
1678
+ <span class="cline-any cline-no">&nbsp;</span>
1679
+ <span class="cline-any cline-no">&nbsp;</span>
1680
+ <span class="cline-any cline-neutral">&nbsp;</span>
1681
+ <span class="cline-any cline-neutral">&nbsp;</span>
1682
+ <span class="cline-any cline-neutral">&nbsp;</span>
1683
+ <span class="cline-any cline-no">&nbsp;</span>
1684
+ <span class="cline-any cline-neutral">&nbsp;</span>
1685
+ <span class="cline-any cline-neutral">&nbsp;</span>
1686
+ <span class="cline-any cline-neutral">&nbsp;</span>
1687
+ <span class="cline-any cline-neutral">&nbsp;</span>
1688
+ <span class="cline-any cline-neutral">&nbsp;</span>
1689
+ <span class="cline-any cline-no">&nbsp;</span>
1690
+ <span class="cline-any cline-no">&nbsp;</span>
1691
+ <span class="cline-any cline-neutral">&nbsp;</span>
1692
+ <span class="cline-any cline-neutral">&nbsp;</span>
1693
+ <span class="cline-any cline-no">&nbsp;</span>
1694
+ <span class="cline-any cline-neutral">&nbsp;</span>
1695
+ <span class="cline-any cline-no">&nbsp;</span>
1696
+ <span class="cline-any cline-neutral">&nbsp;</span>
1697
+ <span class="cline-any cline-no">&nbsp;</span>
1698
+ <span class="cline-any cline-no">&nbsp;</span>
1699
+ <span class="cline-any cline-no">&nbsp;</span>
1700
+ <span class="cline-any cline-neutral">&nbsp;</span>
1701
+ <span class="cline-any cline-no">&nbsp;</span>
1702
+ <span class="cline-any cline-neutral">&nbsp;</span>
1703
+ <span class="cline-any cline-no">&nbsp;</span>
1704
+ <span class="cline-any cline-no">&nbsp;</span>
1705
+ <span class="cline-any cline-neutral">&nbsp;</span>
1706
+ <span class="cline-any cline-neutral">&nbsp;</span>
1707
+ <span class="cline-any cline-no">&nbsp;</span>
1708
+ <span class="cline-any cline-neutral">&nbsp;</span>
1709
+ <span class="cline-any cline-no">&nbsp;</span>
1710
+ <span class="cline-any cline-neutral">&nbsp;</span>
1711
+ <span class="cline-any cline-neutral">&nbsp;</span>
1712
+ <span class="cline-any cline-neutral">&nbsp;</span>
1713
+ <span class="cline-any cline-neutral">&nbsp;</span>
1714
+ <span class="cline-any cline-no">&nbsp;</span>
1715
+ <span class="cline-any cline-neutral">&nbsp;</span>
1716
+ <span class="cline-any cline-no">&nbsp;</span>
1717
+ <span class="cline-any cline-neutral">&nbsp;</span>
1718
+ <span class="cline-any cline-no">&nbsp;</span>
1719
+ <span class="cline-any cline-neutral">&nbsp;</span>
1720
+ <span class="cline-any cline-no">&nbsp;</span>
1721
+ <span class="cline-any cline-neutral">&nbsp;</span>
1722
+ <span class="cline-any cline-no">&nbsp;</span>
1723
+ <span class="cline-any cline-neutral">&nbsp;</span>
1724
+ <span class="cline-any cline-no">&nbsp;</span>
1725
+ <span class="cline-any cline-neutral">&nbsp;</span>
1726
+ <span class="cline-any cline-neutral">&nbsp;</span>
1727
+ <span class="cline-any cline-neutral">&nbsp;</span>
1728
+ <span class="cline-any cline-neutral">&nbsp;</span>
1729
+ <span class="cline-any cline-neutral">&nbsp;</span>
1730
+ <span class="cline-any cline-neutral">&nbsp;</span>
1731
+ <span class="cline-any cline-neutral">&nbsp;</span>
1732
+ <span class="cline-any cline-neutral">&nbsp;</span>
1733
+ <span class="cline-any cline-neutral">&nbsp;</span>
1734
+ <span class="cline-any cline-neutral">&nbsp;</span>
1735
+ <span class="cline-any cline-neutral">&nbsp;</span>
1736
+ <span class="cline-any cline-no">&nbsp;</span>
1737
+ <span class="cline-any cline-neutral">&nbsp;</span>
1738
+ <span class="cline-any cline-no">&nbsp;</span>
1739
+ <span class="cline-any cline-no">&nbsp;</span>
1740
+ <span class="cline-any cline-neutral">&nbsp;</span>
1741
+ <span class="cline-any cline-no">&nbsp;</span>
1742
+ <span class="cline-any cline-neutral">&nbsp;</span>
1743
+ <span class="cline-any cline-no">&nbsp;</span>
1744
+ <span class="cline-any cline-no">&nbsp;</span>
1745
+ <span class="cline-any cline-neutral">&nbsp;</span>
1746
+ <span class="cline-any cline-neutral">&nbsp;</span>
1747
+ <span class="cline-any cline-no">&nbsp;</span>
1748
+ <span class="cline-any cline-neutral">&nbsp;</span>
1749
+ <span class="cline-any cline-no">&nbsp;</span>
1750
+ <span class="cline-any cline-no">&nbsp;</span>
1751
+ <span class="cline-any cline-neutral">&nbsp;</span>
1752
+ <span class="cline-any cline-no">&nbsp;</span>
1753
+ <span class="cline-any cline-neutral">&nbsp;</span>
1754
+ <span class="cline-any cline-no">&nbsp;</span>
1755
+ <span class="cline-any cline-neutral">&nbsp;</span>
1756
+ <span class="cline-any cline-no">&nbsp;</span>
1757
+ <span class="cline-any cline-neutral">&nbsp;</span>
1758
+ <span class="cline-any cline-no">&nbsp;</span>
1759
+ <span class="cline-any cline-neutral">&nbsp;</span>
1760
+ <span class="cline-any cline-no">&nbsp;</span>
1761
+ <span class="cline-any cline-neutral">&nbsp;</span>
1762
+ <span class="cline-any cline-neutral">&nbsp;</span>
1763
+ <span class="cline-any cline-neutral">&nbsp;</span>
1764
+ <span class="cline-any cline-neutral">&nbsp;</span>
1765
+ <span class="cline-any cline-no">&nbsp;</span>
1766
+ <span class="cline-any cline-no">&nbsp;</span>
1767
+ <span class="cline-any cline-no">&nbsp;</span>
1768
+ <span class="cline-any cline-neutral">&nbsp;</span>
1769
+ <span class="cline-any cline-no">&nbsp;</span>
1770
+ <span class="cline-any cline-neutral">&nbsp;</span>
1771
+ <span class="cline-any cline-no">&nbsp;</span>
1772
+ <span class="cline-any cline-no">&nbsp;</span>
1773
+ <span class="cline-any cline-neutral">&nbsp;</span>
1774
+ <span class="cline-any cline-neutral">&nbsp;</span>
1775
+ <span class="cline-any cline-no">&nbsp;</span>
1776
+ <span class="cline-any cline-no">&nbsp;</span>
1777
+ <span class="cline-any cline-neutral">&nbsp;</span>
1778
+ <span class="cline-any cline-neutral">&nbsp;</span>
1779
+ <span class="cline-any cline-neutral">&nbsp;</span>
1780
+ <span class="cline-any cline-neutral">&nbsp;</span>
1781
+ <span class="cline-any cline-neutral">&nbsp;</span>
1782
+ <span class="cline-any cline-neutral">&nbsp;</span>
1783
+ <span class="cline-any cline-neutral">&nbsp;</span>
1784
+ <span class="cline-any cline-neutral">&nbsp;</span>
1785
+ <span class="cline-any cline-neutral">&nbsp;</span>
1786
+ <span class="cline-any cline-neutral">&nbsp;</span>
1787
+ <span class="cline-any cline-no">&nbsp;</span>
1788
+ <span class="cline-any cline-neutral">&nbsp;</span>
1789
+ <span class="cline-any cline-neutral">&nbsp;</span>
1790
+ <span class="cline-any cline-no">&nbsp;</span>
1791
+ <span class="cline-any cline-no">&nbsp;</span>
1792
+ <span class="cline-any cline-neutral">&nbsp;</span>
1793
+ <span class="cline-any cline-no">&nbsp;</span>
1794
+ <span class="cline-any cline-no">&nbsp;</span>
1795
+ <span class="cline-any cline-no">&nbsp;</span>
1796
+ <span class="cline-any cline-no">&nbsp;</span>
1797
+ <span class="cline-any cline-neutral">&nbsp;</span>
1798
+ <span class="cline-any cline-no">&nbsp;</span>
1799
+ <span class="cline-any cline-neutral">&nbsp;</span>
1800
+ <span class="cline-any cline-no">&nbsp;</span>
1801
+ <span class="cline-any cline-no">&nbsp;</span>
1802
+ <span class="cline-any cline-neutral">&nbsp;</span>
1803
+ <span class="cline-any cline-neutral">&nbsp;</span>
1804
+ <span class="cline-any cline-no">&nbsp;</span>
1805
+ <span class="cline-any cline-neutral">&nbsp;</span>
1806
+ <span class="cline-any cline-neutral">&nbsp;</span>
1807
+ <span class="cline-any cline-neutral">&nbsp;</span>
1808
+ <span class="cline-any cline-neutral">&nbsp;</span>
1809
+ <span class="cline-any cline-neutral">&nbsp;</span>
1810
+ <span class="cline-any cline-neutral">&nbsp;</span>
1811
+ <span class="cline-any cline-neutral">&nbsp;</span>
1812
+ <span class="cline-any cline-neutral">&nbsp;</span>
1813
+ <span class="cline-any cline-neutral">&nbsp;</span>
1814
+ <span class="cline-any cline-no">&nbsp;</span>
1815
+ <span class="cline-any cline-neutral">&nbsp;</span>
1816
+ <span class="cline-any cline-neutral">&nbsp;</span>
1817
+ <span class="cline-any cline-neutral">&nbsp;</span>
1818
+ <span class="cline-any cline-neutral">&nbsp;</span>
1819
+ <span class="cline-any cline-neutral">&nbsp;</span>
1820
+ <span class="cline-any cline-neutral">&nbsp;</span>
1821
+ <span class="cline-any cline-neutral">&nbsp;</span>
1822
+ <span class="cline-any cline-no">&nbsp;</span>
1823
+ <span class="cline-any cline-neutral">&nbsp;</span>
1824
+ <span class="cline-any cline-no">&nbsp;</span>
1825
+ <span class="cline-any cline-neutral">&nbsp;</span>
1826
+ <span class="cline-any cline-neutral">&nbsp;</span>
1827
+ <span class="cline-any cline-no">&nbsp;</span>
1828
+ <span class="cline-any cline-no">&nbsp;</span>
1829
+ <span class="cline-any cline-no">&nbsp;</span>
1830
+ <span class="cline-any cline-neutral">&nbsp;</span>
1831
+ <span class="cline-any cline-neutral">&nbsp;</span>
1832
+ <span class="cline-any cline-neutral">&nbsp;</span>
1833
+ <span class="cline-any cline-neutral">&nbsp;</span>
1834
+ <span class="cline-any cline-no">&nbsp;</span>
1835
+ <span class="cline-any cline-neutral">&nbsp;</span>
1836
+ <span class="cline-any cline-neutral">&nbsp;</span>
1837
+ <span class="cline-any cline-neutral">&nbsp;</span>
1838
+ <span class="cline-any cline-neutral">&nbsp;</span>
1839
+ <span class="cline-any cline-neutral">&nbsp;</span>
1840
+ <span class="cline-any cline-neutral">&nbsp;</span>
1841
+ <span class="cline-any cline-no">&nbsp;</span>
1842
+ <span class="cline-any cline-neutral">&nbsp;</span>
1843
+ <span class="cline-any cline-neutral">&nbsp;</span>
1844
+ <span class="cline-any cline-neutral">&nbsp;</span>
1845
+ <span class="cline-any cline-no">&nbsp;</span>
1846
+ <span class="cline-any cline-neutral">&nbsp;</span>
1847
+ <span class="cline-any cline-no">&nbsp;</span>
1848
+ <span class="cline-any cline-neutral">&nbsp;</span>
1849
+ <span class="cline-any cline-neutral">&nbsp;</span>
1850
+ <span class="cline-any cline-no">&nbsp;</span>
1851
+ <span class="cline-any cline-neutral">&nbsp;</span>
1852
+ <span class="cline-any cline-no">&nbsp;</span>
1853
+ <span class="cline-any cline-neutral">&nbsp;</span>
1854
+ <span class="cline-any cline-neutral">&nbsp;</span>
1855
+ <span class="cline-any cline-neutral">&nbsp;</span>
1856
+ <span class="cline-any cline-neutral">&nbsp;</span>
1857
+ <span class="cline-any cline-neutral">&nbsp;</span>
1858
+ <span class="cline-any cline-no">&nbsp;</span>
1859
+ <span class="cline-any cline-neutral">&nbsp;</span>
1860
+ <span class="cline-any cline-neutral">&nbsp;</span>
1861
+ <span class="cline-any cline-neutral">&nbsp;</span>
1862
+ <span class="cline-any cline-neutral">&nbsp;</span>
1863
+ <span class="cline-any cline-neutral">&nbsp;</span>
1864
+ <span class="cline-any cline-neutral">&nbsp;</span>
1865
+ <span class="cline-any cline-neutral">&nbsp;</span>
1866
+ <span class="cline-any cline-no">&nbsp;</span>
1867
+ <span class="cline-any cline-neutral">&nbsp;</span>
1868
+ <span class="cline-any cline-neutral">&nbsp;</span>
1869
+ <span class="cline-any cline-no">&nbsp;</span>
1870
+ <span class="cline-any cline-neutral">&nbsp;</span>
1871
+ <span class="cline-any cline-no">&nbsp;</span>
1872
+ <span class="cline-any cline-neutral">&nbsp;</span>
1873
+ <span class="cline-any cline-no">&nbsp;</span>
1874
+ <span class="cline-any cline-no">&nbsp;</span>
1875
+ <span class="cline-any cline-neutral">&nbsp;</span>
1876
+ <span class="cline-any cline-no">&nbsp;</span>
1877
+ <span class="cline-any cline-no">&nbsp;</span>
1878
+ <span class="cline-any cline-neutral">&nbsp;</span>
1879
+ <span class="cline-any cline-neutral">&nbsp;</span>
1880
+ <span class="cline-any cline-neutral">&nbsp;</span>
1881
+ <span class="cline-any cline-neutral">&nbsp;</span>
1882
+ <span class="cline-any cline-neutral">&nbsp;</span>
1883
+ <span class="cline-any cline-neutral">&nbsp;</span>
1884
+ <span class="cline-any cline-neutral">&nbsp;</span>
1885
+ <span class="cline-any cline-neutral">&nbsp;</span>
1886
+ <span class="cline-any cline-neutral">&nbsp;</span>
1887
+ <span class="cline-any cline-no">&nbsp;</span>
1888
+ <span class="cline-any cline-no">&nbsp;</span>
1889
+ <span class="cline-any cline-neutral">&nbsp;</span>
1890
+ <span class="cline-any cline-neutral">&nbsp;</span>
1891
+ <span class="cline-any cline-neutral">&nbsp;</span>
1892
+ <span class="cline-any cline-neutral">&nbsp;</span>
1893
+ <span class="cline-any cline-neutral">&nbsp;</span>
1894
+ <span class="cline-any cline-neutral">&nbsp;</span>
1895
+ <span class="cline-any cline-neutral">&nbsp;</span>
1896
+ <span class="cline-any cline-neutral">&nbsp;</span>
1897
+ <span class="cline-any cline-no">&nbsp;</span>
1898
+ <span class="cline-any cline-no">&nbsp;</span>
1899
+ <span class="cline-any cline-no">&nbsp;</span>
1900
+ <span class="cline-any cline-neutral">&nbsp;</span>
1901
+ <span class="cline-any cline-no">&nbsp;</span>
1902
+ <span class="cline-any cline-neutral">&nbsp;</span>
1903
+ <span class="cline-any cline-no">&nbsp;</span>
1904
+ <span class="cline-any cline-neutral">&nbsp;</span>
1905
+ <span class="cline-any cline-neutral">&nbsp;</span>
1906
+ <span class="cline-any cline-neutral">&nbsp;</span>
1907
+ <span class="cline-any cline-neutral">&nbsp;</span>
1908
+ <span class="cline-any cline-neutral">&nbsp;</span>
1909
+ <span class="cline-any cline-neutral">&nbsp;</span>
1910
+ <span class="cline-any cline-neutral">&nbsp;</span>
1911
+ <span class="cline-any cline-neutral">&nbsp;</span>
1912
+ <span class="cline-any cline-no">&nbsp;</span>
1913
+ <span class="cline-any cline-neutral">&nbsp;</span>
1914
+ <span class="cline-any cline-no">&nbsp;</span>
1915
+ <span class="cline-any cline-no">&nbsp;</span>
1916
+ <span class="cline-any cline-neutral">&nbsp;</span>
1917
+ <span class="cline-any cline-neutral">&nbsp;</span>
1918
+ <span class="cline-any cline-neutral">&nbsp;</span>
1919
+ <span class="cline-any cline-neutral">&nbsp;</span>
1920
+ <span class="cline-any cline-no">&nbsp;</span>
1921
+ <span class="cline-any cline-no">&nbsp;</span>
1922
+ <span class="cline-any cline-neutral">&nbsp;</span>
1923
+ <span class="cline-any cline-neutral">&nbsp;</span>
1924
+ <span class="cline-any cline-neutral">&nbsp;</span>
1925
+ <span class="cline-any cline-neutral">&nbsp;</span>
1926
+ <span class="cline-any cline-neutral">&nbsp;</span>
1927
+ <span class="cline-any cline-neutral">&nbsp;</span>
1928
+ <span class="cline-any cline-neutral">&nbsp;</span>
1929
+ <span class="cline-any cline-neutral">&nbsp;</span>
1930
+ <span class="cline-any cline-neutral">&nbsp;</span>
1931
+ <span class="cline-any cline-no">&nbsp;</span>
1932
+ <span class="cline-any cline-no">&nbsp;</span>
1933
+ <span class="cline-any cline-neutral">&nbsp;</span>
1934
+ <span class="cline-any cline-neutral">&nbsp;</span>
1935
+ <span class="cline-any cline-neutral">&nbsp;</span>
1936
+ <span class="cline-any cline-no">&nbsp;</span>
1937
+ <span class="cline-any cline-no">&nbsp;</span>
1938
+ <span class="cline-any cline-neutral">&nbsp;</span>
1939
+ <span class="cline-any cline-neutral">&nbsp;</span>
1940
+ <span class="cline-any cline-neutral">&nbsp;</span>
1941
+ <span class="cline-any cline-no">&nbsp;</span>
1942
+ <span class="cline-any cline-no">&nbsp;</span>
1943
+ <span class="cline-any cline-neutral">&nbsp;</span>
1944
+ <span class="cline-any cline-neutral">&nbsp;</span>
1945
+ <span class="cline-any cline-neutral">&nbsp;</span>
1946
+ <span class="cline-any cline-no">&nbsp;</span>
1947
+ <span class="cline-any cline-neutral">&nbsp;</span>
1948
+ <span class="cline-any cline-neutral">&nbsp;</span>
1949
+ <span class="cline-any cline-neutral">&nbsp;</span>
1950
+ <span class="cline-any cline-neutral">&nbsp;</span>
1951
+ <span class="cline-any cline-neutral">&nbsp;</span>
1952
+ <span class="cline-any cline-neutral">&nbsp;</span>
1953
+ <span class="cline-any cline-neutral">&nbsp;</span>
1954
+ <span class="cline-any cline-neutral">&nbsp;</span>
1955
+ <span class="cline-any cline-neutral">&nbsp;</span>
1956
+ <span class="cline-any cline-neutral">&nbsp;</span>
1957
+ <span class="cline-any cline-neutral">&nbsp;</span>
1958
+ <span class="cline-any cline-neutral">&nbsp;</span>
1959
+ <span class="cline-any cline-neutral">&nbsp;</span>
1960
+ <span class="cline-any cline-neutral">&nbsp;</span>
1961
+ <span class="cline-any cline-no">&nbsp;</span>
1962
+ <span class="cline-any cline-neutral">&nbsp;</span>
1963
+ <span class="cline-any cline-no">&nbsp;</span>
1964
+ <span class="cline-any cline-no">&nbsp;</span>
1965
+ <span class="cline-any cline-neutral">&nbsp;</span>
1966
+ <span class="cline-any cline-no">&nbsp;</span>
1967
+ <span class="cline-any cline-no">&nbsp;</span>
1968
+ <span class="cline-any cline-neutral">&nbsp;</span>
1969
+ <span class="cline-any cline-no">&nbsp;</span>
1970
+ <span class="cline-any cline-neutral">&nbsp;</span>
1971
+ <span class="cline-any cline-no">&nbsp;</span>
1972
+ <span class="cline-any cline-no">&nbsp;</span>
1973
+ <span class="cline-any cline-neutral">&nbsp;</span>
1974
+ <span class="cline-any cline-no">&nbsp;</span>
1975
+ <span class="cline-any cline-neutral">&nbsp;</span>
1976
+ <span class="cline-any cline-no">&nbsp;</span>
1977
+ <span class="cline-any cline-neutral">&nbsp;</span>
1978
+ <span class="cline-any cline-no">&nbsp;</span>
1979
+ <span class="cline-any cline-neutral">&nbsp;</span>
1980
+ <span class="cline-any cline-neutral">&nbsp;</span>
1981
+ <span class="cline-any cline-neutral">&nbsp;</span>
1982
+ <span class="cline-any cline-no">&nbsp;</span>
1983
+ <span class="cline-any cline-neutral">&nbsp;</span>
1984
+ <span class="cline-any cline-neutral">&nbsp;</span>
1985
+ <span class="cline-any cline-neutral">&nbsp;</span>
1986
+ <span class="cline-any cline-neutral">&nbsp;</span>
1987
+ <span class="cline-any cline-neutral">&nbsp;</span>
1988
+ <span class="cline-any cline-no">&nbsp;</span>
1989
+ <span class="cline-any cline-no">&nbsp;</span>
1990
+ <span class="cline-any cline-no">&nbsp;</span>
1991
+ <span class="cline-any cline-neutral">&nbsp;</span>
1992
+ <span class="cline-any cline-neutral">&nbsp;</span>
1993
+ <span class="cline-any cline-neutral">&nbsp;</span>
1994
+ <span class="cline-any cline-neutral">&nbsp;</span>
1995
+ <span class="cline-any cline-neutral">&nbsp;</span>
1996
+ <span class="cline-any cline-no">&nbsp;</span>
1997
+ <span class="cline-any cline-no">&nbsp;</span>
1998
+ <span class="cline-any cline-no">&nbsp;</span>
1999
+ <span class="cline-any cline-neutral">&nbsp;</span>
2000
+ <span class="cline-any cline-no">&nbsp;</span>
2001
+ <span class="cline-any cline-neutral">&nbsp;</span>
2002
+ <span class="cline-any cline-no">&nbsp;</span>
2003
+ <span class="cline-any cline-neutral">&nbsp;</span>
2004
+ <span class="cline-any cline-neutral">&nbsp;</span>
2005
+ <span class="cline-any cline-neutral">&nbsp;</span>
2006
+ <span class="cline-any cline-neutral">&nbsp;</span>
2007
+ <span class="cline-any cline-neutral">&nbsp;</span>
2008
+ <span class="cline-any cline-neutral">&nbsp;</span>
2009
+ <span class="cline-any cline-neutral">&nbsp;</span>
2010
+ <span class="cline-any cline-neutral">&nbsp;</span>
2011
+ <span class="cline-any cline-neutral">&nbsp;</span>
2012
+ <span class="cline-any cline-neutral">&nbsp;</span>
2013
+ <span class="cline-any cline-no">&nbsp;</span>
2014
+ <span class="cline-any cline-no">&nbsp;</span>
2015
+ <span class="cline-any cline-neutral">&nbsp;</span>
2016
+ <span class="cline-any cline-neutral">&nbsp;</span>
2017
+ <span class="cline-any cline-no">&nbsp;</span>
2018
+ <span class="cline-any cline-neutral">&nbsp;</span>
2019
+ <span class="cline-any cline-neutral">&nbsp;</span>
2020
+ <span class="cline-any cline-neutral">&nbsp;</span>
2021
+ <span class="cline-any cline-neutral">&nbsp;</span>
2022
+ <span class="cline-any cline-neutral">&nbsp;</span>
2023
+ <span class="cline-any cline-neutral">&nbsp;</span>
2024
+ <span class="cline-any cline-neutral">&nbsp;</span>
2025
+ <span class="cline-any cline-neutral">&nbsp;</span>
2026
+ <span class="cline-any cline-neutral">&nbsp;</span>
2027
+ <span class="cline-any cline-no">&nbsp;</span>
2028
+ <span class="cline-any cline-neutral">&nbsp;</span>
2029
+ <span class="cline-any cline-neutral">&nbsp;</span>
2030
+ <span class="cline-any cline-no">&nbsp;</span>
2031
+ <span class="cline-any cline-neutral">&nbsp;</span>
2032
+ <span class="cline-any cline-neutral">&nbsp;</span>
2033
+ <span class="cline-any cline-no">&nbsp;</span>
2034
+ <span class="cline-any cline-neutral">&nbsp;</span>
2035
+ <span class="cline-any cline-no">&nbsp;</span>
2036
+ <span class="cline-any cline-neutral">&nbsp;</span>
2037
+ <span class="cline-any cline-neutral">&nbsp;</span>
2038
+ <span class="cline-any cline-no">&nbsp;</span>
2039
+ <span class="cline-any cline-no">&nbsp;</span>
2040
+ <span class="cline-any cline-no">&nbsp;</span>
2041
+ <span class="cline-any cline-neutral">&nbsp;</span>
2042
+ <span class="cline-any cline-no">&nbsp;</span>
2043
+ <span class="cline-any cline-neutral">&nbsp;</span>
2044
+ <span class="cline-any cline-no">&nbsp;</span>
2045
+ <span class="cline-any cline-neutral">&nbsp;</span>
2046
+ <span class="cline-any cline-neutral">&nbsp;</span>
2047
+ <span class="cline-any cline-neutral">&nbsp;</span>
2048
+ <span class="cline-any cline-neutral">&nbsp;</span>
2049
+ <span class="cline-any cline-neutral">&nbsp;</span>
2050
+ <span class="cline-any cline-neutral">&nbsp;</span>
2051
+ <span class="cline-any cline-neutral">&nbsp;</span>
2052
+ <span class="cline-any cline-neutral">&nbsp;</span>
2053
+ <span class="cline-any cline-no">&nbsp;</span>
2054
+ <span class="cline-any cline-no">&nbsp;</span>
2055
+ <span class="cline-any cline-neutral">&nbsp;</span>
2056
+ <span class="cline-any cline-neutral">&nbsp;</span>
2057
+ <span class="cline-any cline-no">&nbsp;</span>
2058
+ <span class="cline-any cline-neutral">&nbsp;</span>
2059
+ <span class="cline-any cline-neutral">&nbsp;</span>
2060
+ <span class="cline-any cline-neutral">&nbsp;</span>
2061
+ <span class="cline-any cline-neutral">&nbsp;</span>
2062
+ <span class="cline-any cline-neutral">&nbsp;</span>
2063
+ <span class="cline-any cline-neutral">&nbsp;</span>
2064
+ <span class="cline-any cline-neutral">&nbsp;</span>
2065
+ <span class="cline-any cline-neutral">&nbsp;</span>
2066
+ <span class="cline-any cline-neutral">&nbsp;</span>
2067
+ <span class="cline-any cline-no">&nbsp;</span>
2068
+ <span class="cline-any cline-neutral">&nbsp;</span>
2069
+ <span class="cline-any cline-neutral">&nbsp;</span>
2070
+ <span class="cline-any cline-neutral">&nbsp;</span>
2071
+ <span class="cline-any cline-neutral">&nbsp;</span>
2072
+ <span class="cline-any cline-neutral">&nbsp;</span>
2073
+ <span class="cline-any cline-neutral">&nbsp;</span>
2074
+ <span class="cline-any cline-neutral">&nbsp;</span>
2075
+ <span class="cline-any cline-no">&nbsp;</span>
2076
+ <span class="cline-any cline-neutral">&nbsp;</span>
2077
+ <span class="cline-any cline-no">&nbsp;</span>
2078
+ <span class="cline-any cline-neutral">&nbsp;</span>
2079
+ <span class="cline-any cline-neutral">&nbsp;</span>
2080
+ <span class="cline-any cline-no">&nbsp;</span>
2081
+ <span class="cline-any cline-neutral">&nbsp;</span>
2082
+ <span class="cline-any cline-no">&nbsp;</span>
2083
+ <span class="cline-any cline-neutral">&nbsp;</span>
2084
+ <span class="cline-any cline-neutral">&nbsp;</span>
2085
+ <span class="cline-any cline-neutral">&nbsp;</span>
2086
+ <span class="cline-any cline-neutral">&nbsp;</span>
2087
+ <span class="cline-any cline-no">&nbsp;</span>
2088
+ <span class="cline-any cline-neutral">&nbsp;</span>
2089
+ <span class="cline-any cline-no">&nbsp;</span>
2090
+ <span class="cline-any cline-neutral">&nbsp;</span>
2091
+ <span class="cline-any cline-no">&nbsp;</span>
2092
+ <span class="cline-any cline-neutral">&nbsp;</span>
2093
+ <span class="cline-any cline-neutral">&nbsp;</span>
2094
+ <span class="cline-any cline-neutral">&nbsp;</span>
2095
+ <span class="cline-any cline-neutral">&nbsp;</span>
2096
+ <span class="cline-any cline-neutral">&nbsp;</span>
2097
+ <span class="cline-any cline-no">&nbsp;</span>
2098
+ <span class="cline-any cline-no">&nbsp;</span>
2099
+ <span class="cline-any cline-no">&nbsp;</span>
2100
+ <span class="cline-any cline-neutral">&nbsp;</span>
2101
+ <span class="cline-any cline-neutral">&nbsp;</span>
2102
+ <span class="cline-any cline-neutral">&nbsp;</span>
2103
+ <span class="cline-any cline-neutral">&nbsp;</span>
2104
+ <span class="cline-any cline-neutral">&nbsp;</span>
2105
+ <span class="cline-any cline-neutral">&nbsp;</span>
2106
+ <span class="cline-any cline-neutral">&nbsp;</span>
2107
+ <span class="cline-any cline-no">&nbsp;</span>
2108
+ <span class="cline-any cline-no">&nbsp;</span>
2109
+ <span class="cline-any cline-neutral">&nbsp;</span>
2110
+ <span class="cline-any cline-no">&nbsp;</span>
2111
+ <span class="cline-any cline-no">&nbsp;</span>
2112
+ <span class="cline-any cline-no">&nbsp;</span>
2113
+ <span class="cline-any cline-no">&nbsp;</span>
2114
+ <span class="cline-any cline-neutral">&nbsp;</span>
2115
+ <span class="cline-any cline-no">&nbsp;</span>
2116
+ <span class="cline-any cline-no">&nbsp;</span>
2117
+ <span class="cline-any cline-neutral">&nbsp;</span>
2118
+ <span class="cline-any cline-neutral">&nbsp;</span>
2119
+ <span class="cline-any cline-neutral">&nbsp;</span>
2120
+ <span class="cline-any cline-no">&nbsp;</span>
2121
+ <span class="cline-any cline-no">&nbsp;</span>
2122
+ <span class="cline-any cline-neutral">&nbsp;</span>
2123
+ <span class="cline-any cline-no">&nbsp;</span>
2124
+ <span class="cline-any cline-neutral">&nbsp;</span>
2125
+ <span class="cline-any cline-neutral">&nbsp;</span>
2126
+ <span class="cline-any cline-no">&nbsp;</span>
2127
+ <span class="cline-any cline-no">&nbsp;</span>
2128
+ <span class="cline-any cline-no">&nbsp;</span>
2129
+ <span class="cline-any cline-neutral">&nbsp;</span>
2130
+ <span class="cline-any cline-no">&nbsp;</span>
2131
+ <span class="cline-any cline-no">&nbsp;</span>
2132
+ <span class="cline-any cline-neutral">&nbsp;</span>
2133
+ <span class="cline-any cline-neutral">&nbsp;</span>
2134
+ <span class="cline-any cline-neutral">&nbsp;</span>
2135
+ <span class="cline-any cline-no">&nbsp;</span>
2136
+ <span class="cline-any cline-no">&nbsp;</span>
2137
+ <span class="cline-any cline-neutral">&nbsp;</span>
2138
+ <span class="cline-any cline-neutral">&nbsp;</span>
2139
+ <span class="cline-any cline-no">&nbsp;</span>
2140
+ <span class="cline-any cline-no">&nbsp;</span>
2141
+ <span class="cline-any cline-neutral">&nbsp;</span>
2142
+ <span class="cline-any cline-neutral">&nbsp;</span>
2143
+ <span class="cline-any cline-neutral">&nbsp;</span>
2144
+ <span class="cline-any cline-neutral">&nbsp;</span>
2145
+ <span class="cline-any cline-no">&nbsp;</span>
2146
+ <span class="cline-any cline-no">&nbsp;</span>
2147
+ <span class="cline-any cline-neutral">&nbsp;</span>
2148
+ <span class="cline-any cline-neutral">&nbsp;</span>
2149
+ <span class="cline-any cline-neutral">&nbsp;</span>
2150
+ <span class="cline-any cline-neutral">&nbsp;</span>
2151
+ <span class="cline-any cline-neutral">&nbsp;</span>
2152
+ <span class="cline-any cline-neutral">&nbsp;</span>
2153
+ <span class="cline-any cline-neutral">&nbsp;</span>
2154
+ <span class="cline-any cline-neutral">&nbsp;</span>
2155
+ <span class="cline-any cline-neutral">&nbsp;</span>
2156
+ <span class="cline-any cline-neutral">&nbsp;</span>
2157
+ <span class="cline-any cline-neutral">&nbsp;</span>
2158
+ <span class="cline-any cline-no">&nbsp;</span>
2159
+ <span class="cline-any cline-neutral">&nbsp;</span>
2160
+ <span class="cline-any cline-neutral">&nbsp;</span>
2161
+ <span class="cline-any cline-neutral">&nbsp;</span>
2162
+ <span class="cline-any cline-neutral">&nbsp;</span>
2163
+ <span class="cline-any cline-neutral">&nbsp;</span>
2164
+ <span class="cline-any cline-neutral">&nbsp;</span>
2165
+ <span class="cline-any cline-no">&nbsp;</span>
2166
+ <span class="cline-any cline-neutral">&nbsp;</span>
2167
+ <span class="cline-any cline-no">&nbsp;</span>
2168
+ <span class="cline-any cline-neutral">&nbsp;</span>
2169
+ <span class="cline-any cline-neutral">&nbsp;</span>
2170
+ <span class="cline-any cline-neutral">&nbsp;</span>
2171
+ <span class="cline-any cline-neutral">&nbsp;</span>
2172
+ <span class="cline-any cline-neutral">&nbsp;</span>
2173
+ <span class="cline-any cline-neutral">&nbsp;</span>
2174
+ <span class="cline-any cline-neutral">&nbsp;</span>
2175
+ <span class="cline-any cline-no">&nbsp;</span>
2176
+ <span class="cline-any cline-neutral">&nbsp;</span>
2177
+ <span class="cline-any cline-neutral">&nbsp;</span>
2178
+ <span class="cline-any cline-neutral">&nbsp;</span>
2179
+ <span class="cline-any cline-neutral">&nbsp;</span>
2180
+ <span class="cline-any cline-neutral">&nbsp;</span>
2181
+ <span class="cline-any cline-neutral">&nbsp;</span>
2182
+ <span class="cline-any cline-neutral">&nbsp;</span>
2183
+ <span class="cline-any cline-neutral">&nbsp;</span>
2184
+ <span class="cline-any cline-neutral">&nbsp;</span>
2185
+ <span class="cline-any cline-neutral">&nbsp;</span>
2186
+ <span class="cline-any cline-neutral">&nbsp;</span>
2187
+ <span class="cline-any cline-neutral">&nbsp;</span>
2188
+ <span class="cline-any cline-neutral">&nbsp;</span>
2189
+ <span class="cline-any cline-neutral">&nbsp;</span>
2190
+ <span class="cline-any cline-neutral">&nbsp;</span>
2191
+ <span class="cline-any cline-neutral">&nbsp;</span>
2192
+ <span class="cline-any cline-neutral">&nbsp;</span>
2193
+ <span class="cline-any cline-neutral">&nbsp;</span>
2194
+ <span class="cline-any cline-neutral">&nbsp;</span>
2195
+ <span class="cline-any cline-no">&nbsp;</span>
2196
+ <span class="cline-any cline-neutral">&nbsp;</span>
2197
+ <span class="cline-any cline-neutral">&nbsp;</span>
2198
+ <span class="cline-any cline-neutral">&nbsp;</span>
2199
+ <span class="cline-any cline-neutral">&nbsp;</span>
2200
+ <span class="cline-any cline-neutral">&nbsp;</span>
2201
+ <span class="cline-any cline-neutral">&nbsp;</span>
2202
+ <span class="cline-any cline-neutral">&nbsp;</span>
2203
+ <span class="cline-any cline-neutral">&nbsp;</span>
2204
+ <span class="cline-any cline-no">&nbsp;</span>
2205
+ <span class="cline-any cline-no">&nbsp;</span>
2206
+ <span class="cline-any cline-neutral">&nbsp;</span>
2207
+ <span class="cline-any cline-neutral">&nbsp;</span>
2208
+ <span class="cline-any cline-neutral">&nbsp;</span>
2209
+ <span class="cline-any cline-neutral">&nbsp;</span>
2210
+ <span class="cline-any cline-no">&nbsp;</span>
2211
+ <span class="cline-any cline-no">&nbsp;</span>
2212
+ <span class="cline-any cline-neutral">&nbsp;</span>
2213
+ <span class="cline-any cline-neutral">&nbsp;</span>
2214
+ <span class="cline-any cline-neutral">&nbsp;</span>
2215
+ <span class="cline-any cline-neutral">&nbsp;</span>
2216
+ <span class="cline-any cline-no">&nbsp;</span>
2217
+ <span class="cline-any cline-neutral">&nbsp;</span>
2218
+ <span class="cline-any cline-neutral">&nbsp;</span>
2219
+ <span class="cline-any cline-neutral">&nbsp;</span>
2220
+ <span class="cline-any cline-neutral">&nbsp;</span>
2221
+ <span class="cline-any cline-neutral">&nbsp;</span>
2222
+ <span class="cline-any cline-neutral">&nbsp;</span>
2223
+ <span class="cline-any cline-neutral">&nbsp;</span>
2224
+ <span class="cline-any cline-neutral">&nbsp;</span>
2225
+ <span class="cline-any cline-neutral">&nbsp;</span>
2226
+ <span class="cline-any cline-no">&nbsp;</span>
2227
+ <span class="cline-any cline-no">&nbsp;</span>
2228
+ <span class="cline-any cline-neutral">&nbsp;</span>
2229
+ <span class="cline-any cline-neutral">&nbsp;</span>
2230
+ <span class="cline-any cline-neutral">&nbsp;</span>
2231
+ <span class="cline-any cline-no">&nbsp;</span>
2232
+ <span class="cline-any cline-no">&nbsp;</span>
2233
+ <span class="cline-any cline-neutral">&nbsp;</span>
2234
+ <span class="cline-any cline-neutral">&nbsp;</span>
2235
+ <span class="cline-any cline-neutral">&nbsp;</span>
2236
+ <span class="cline-any cline-neutral">&nbsp;</span>
2237
+ <span class="cline-any cline-no">&nbsp;</span>
2238
+ <span class="cline-any cline-neutral">&nbsp;</span>
2239
+ <span class="cline-any cline-neutral">&nbsp;</span>
2240
+ <span class="cline-any cline-neutral">&nbsp;</span>
2241
+ <span class="cline-any cline-neutral">&nbsp;</span>
2242
+ <span class="cline-any cline-no">&nbsp;</span>
2243
+ <span class="cline-any cline-no">&nbsp;</span>
2244
+ <span class="cline-any cline-neutral">&nbsp;</span>
2245
+ <span class="cline-any cline-no">&nbsp;</span>
2246
+ <span class="cline-any cline-neutral">&nbsp;</span>
2247
+ <span class="cline-any cline-neutral">&nbsp;</span>
2248
+ <span class="cline-any cline-no">&nbsp;</span>
2249
+ <span class="cline-any cline-neutral">&nbsp;</span>
2250
+ <span class="cline-any cline-neutral">&nbsp;</span>
2251
+ <span class="cline-any cline-no">&nbsp;</span>
2252
+ <span class="cline-any cline-neutral">&nbsp;</span>
2253
+ <span class="cline-any cline-no">&nbsp;</span>
2254
+ <span class="cline-any cline-no">&nbsp;</span>
2255
+ <span class="cline-any cline-neutral">&nbsp;</span>
2256
+ <span class="cline-any cline-neutral">&nbsp;</span>
2257
+ <span class="cline-any cline-no">&nbsp;</span>
2258
+ <span class="cline-any cline-no">&nbsp;</span>
2259
+ <span class="cline-any cline-neutral">&nbsp;</span>
2260
+ <span class="cline-any cline-neutral">&nbsp;</span>
2261
+ <span class="cline-any cline-neutral">&nbsp;</span>
2262
+ <span class="cline-any cline-neutral">&nbsp;</span>
2263
+ <span class="cline-any cline-neutral">&nbsp;</span>
2264
+ <span class="cline-any cline-neutral">&nbsp;</span>
2265
+ <span class="cline-any cline-neutral">&nbsp;</span>
2266
+ <span class="cline-any cline-neutral">&nbsp;</span>
2267
+ <span class="cline-any cline-no">&nbsp;</span>
2268
+ <span class="cline-any cline-no">&nbsp;</span>
2269
+ <span class="cline-any cline-neutral">&nbsp;</span>
2270
+ <span class="cline-any cline-neutral">&nbsp;</span>
2271
+ <span class="cline-any cline-no">&nbsp;</span>
2272
+ <span class="cline-any cline-neutral">&nbsp;</span>
2273
+ <span class="cline-any cline-neutral">&nbsp;</span>
2274
+ <span class="cline-any cline-neutral">&nbsp;</span>
2275
+ <span class="cline-any cline-neutral">&nbsp;</span>
2276
+ <span class="cline-any cline-neutral">&nbsp;</span>
2277
+ <span class="cline-any cline-neutral">&nbsp;</span>
2278
+ <span class="cline-any cline-neutral">&nbsp;</span>
2279
+ <span class="cline-any cline-no">&nbsp;</span>
2280
+ <span class="cline-any cline-no">&nbsp;</span>
2281
+ <span class="cline-any cline-no">&nbsp;</span>
2282
+ <span class="cline-any cline-neutral">&nbsp;</span>
2283
+ <span class="cline-any cline-neutral">&nbsp;</span>
2284
+ <span class="cline-any cline-neutral">&nbsp;</span>
2285
+ <span class="cline-any cline-neutral">&nbsp;</span>
2286
+ <span class="cline-any cline-no">&nbsp;</span>
2287
+ <span class="cline-any cline-no">&nbsp;</span>
2288
+ <span class="cline-any cline-neutral">&nbsp;</span>
2289
+ <span class="cline-any cline-neutral">&nbsp;</span>
2290
+ <span class="cline-any cline-neutral">&nbsp;</span>
2291
+ <span class="cline-any cline-neutral">&nbsp;</span>
2292
+ <span class="cline-any cline-neutral">&nbsp;</span>
2293
+ <span class="cline-any cline-neutral">&nbsp;</span>
2294
+ <span class="cline-any cline-neutral">&nbsp;</span>
2295
+ <span class="cline-any cline-neutral">&nbsp;</span>
2296
+ <span class="cline-any cline-neutral">&nbsp;</span>
2297
+ <span class="cline-any cline-no">&nbsp;</span>
2298
+ <span class="cline-any cline-neutral">&nbsp;</span>
2299
+ <span class="cline-any cline-neutral">&nbsp;</span>
2300
+ <span class="cline-any cline-neutral">&nbsp;</span>
2301
+ <span class="cline-any cline-neutral">&nbsp;</span>
2302
+ <span class="cline-any cline-no">&nbsp;</span>
2303
+ <span class="cline-any cline-neutral">&nbsp;</span>
2304
+ <span class="cline-any cline-neutral">&nbsp;</span>
2305
+ <span class="cline-any cline-neutral">&nbsp;</span>
2306
+ <span class="cline-any cline-neutral">&nbsp;</span>
2307
+ <span class="cline-any cline-neutral">&nbsp;</span>
2308
+ <span class="cline-any cline-neutral">&nbsp;</span>
2309
+ <span class="cline-any cline-neutral">&nbsp;</span>
2310
+ <span class="cline-any cline-neutral">&nbsp;</span>
2311
+ <span class="cline-any cline-neutral">&nbsp;</span>
2312
+ <span class="cline-any cline-no">&nbsp;</span>
2313
+ <span class="cline-any cline-no">&nbsp;</span>
2314
+ <span class="cline-any cline-neutral">&nbsp;</span>
2315
+ <span class="cline-any cline-neutral">&nbsp;</span>
2316
+ <span class="cline-any cline-neutral">&nbsp;</span>
2317
+ <span class="cline-any cline-no">&nbsp;</span>
2318
+ <span class="cline-any cline-no">&nbsp;</span>
2319
+ <span class="cline-any cline-neutral">&nbsp;</span>
2320
+ <span class="cline-any cline-neutral">&nbsp;</span>
2321
+ <span class="cline-any cline-neutral">&nbsp;</span>
2322
+ <span class="cline-any cline-neutral">&nbsp;</span>
2323
+ <span class="cline-any cline-no">&nbsp;</span>
2324
+ <span class="cline-any cline-neutral">&nbsp;</span>
2325
+ <span class="cline-any cline-neutral">&nbsp;</span>
2326
+ <span class="cline-any cline-neutral">&nbsp;</span>
2327
+ <span class="cline-any cline-neutral">&nbsp;</span>
2328
+ <span class="cline-any cline-no">&nbsp;</span>
2329
+ <span class="cline-any cline-no">&nbsp;</span>
2330
+ <span class="cline-any cline-neutral">&nbsp;</span>
2331
+ <span class="cline-any cline-no">&nbsp;</span>
2332
+ <span class="cline-any cline-neutral">&nbsp;</span>
2333
+ <span class="cline-any cline-neutral">&nbsp;</span>
2334
+ <span class="cline-any cline-no">&nbsp;</span>
2335
+ <span class="cline-any cline-neutral">&nbsp;</span>
2336
+ <span class="cline-any cline-neutral">&nbsp;</span>
2337
+ <span class="cline-any cline-neutral">&nbsp;</span>
2338
+ <span class="cline-any cline-no">&nbsp;</span>
2339
+ <span class="cline-any cline-no">&nbsp;</span>
2340
+ <span class="cline-any cline-neutral">&nbsp;</span>
2341
+ <span class="cline-any cline-neutral">&nbsp;</span>
2342
+ <span class="cline-any cline-neutral">&nbsp;</span>
2343
+ <span class="cline-any cline-neutral">&nbsp;</span>
2344
+ <span class="cline-any cline-neutral">&nbsp;</span>
2345
+ <span class="cline-any cline-neutral">&nbsp;</span>
2346
+ <span class="cline-any cline-neutral">&nbsp;</span>
2347
+ <span class="cline-any cline-neutral">&nbsp;</span>
2348
+ <span class="cline-any cline-neutral">&nbsp;</span>
2349
+ <span class="cline-any cline-no">&nbsp;</span>
2350
+ <span class="cline-any cline-no">&nbsp;</span>
2351
+ <span class="cline-any cline-neutral">&nbsp;</span>
2352
+ <span class="cline-any cline-neutral">&nbsp;</span>
2353
+ <span class="cline-any cline-neutral">&nbsp;</span>
2354
+ <span class="cline-any cline-neutral">&nbsp;</span>
2355
+ <span class="cline-any cline-neutral">&nbsp;</span>
2356
+ <span class="cline-any cline-neutral">&nbsp;</span>
2357
+ <span class="cline-any cline-neutral">&nbsp;</span>
2358
+ <span class="cline-any cline-neutral">&nbsp;</span>
2359
+ <span class="cline-any cline-neutral">&nbsp;</span>
2360
+ <span class="cline-any cline-neutral">&nbsp;</span>
2361
+ <span class="cline-any cline-neutral">&nbsp;</span>
2362
+ <span class="cline-any cline-neutral">&nbsp;</span>
2363
+ <span class="cline-any cline-neutral">&nbsp;</span>
2364
+ <span class="cline-any cline-neutral">&nbsp;</span>
2365
+ <span class="cline-any cline-neutral">&nbsp;</span>
2366
+ <span class="cline-any cline-neutral">&nbsp;</span>
2367
+ <span class="cline-any cline-neutral">&nbsp;</span>
2368
+ <span class="cline-any cline-neutral">&nbsp;</span>
2369
+ <span class="cline-any cline-neutral">&nbsp;</span>
2370
+ <span class="cline-any cline-neutral">&nbsp;</span>
2371
+ <span class="cline-any cline-neutral">&nbsp;</span>
2372
+ <span class="cline-any cline-neutral">&nbsp;</span>
2373
+ <span class="cline-any cline-no">&nbsp;</span>
2374
+ <span class="cline-any cline-neutral">&nbsp;</span>
2375
+ <span class="cline-any cline-no">&nbsp;</span>
2376
+ <span class="cline-any cline-no">&nbsp;</span>
2377
+ <span class="cline-any cline-neutral">&nbsp;</span>
2378
+ <span class="cline-any cline-no">&nbsp;</span>
2379
+ <span class="cline-any cline-no">&nbsp;</span>
2380
+ <span class="cline-any cline-neutral">&nbsp;</span>
2381
+ <span class="cline-any cline-neutral">&nbsp;</span>
2382
+ <span class="cline-any cline-neutral">&nbsp;</span>
2383
+ <span class="cline-any cline-neutral">&nbsp;</span>
2384
+ <span class="cline-any cline-neutral">&nbsp;</span>
2385
+ <span class="cline-any cline-neutral">&nbsp;</span>
2386
+ <span class="cline-any cline-neutral">&nbsp;</span>
2387
+ <span class="cline-any cline-neutral">&nbsp;</span>
2388
+ <span class="cline-any cline-neutral">&nbsp;</span>
2389
+ <span class="cline-any cline-no">&nbsp;</span>
2390
+ <span class="cline-any cline-no">&nbsp;</span>
2391
+ <span class="cline-any cline-neutral">&nbsp;</span>
2392
+ <span class="cline-any cline-no">&nbsp;</span>
2393
+ <span class="cline-any cline-neutral">&nbsp;</span>
2394
+ <span class="cline-any cline-no">&nbsp;</span>
2395
+ <span class="cline-any cline-neutral">&nbsp;</span>
2396
+ <span class="cline-any cline-no">&nbsp;</span>
2397
+ <span class="cline-any cline-neutral">&nbsp;</span>
2398
+ <span class="cline-any cline-no">&nbsp;</span>
2399
+ <span class="cline-any cline-neutral">&nbsp;</span>
2400
+ <span class="cline-any cline-neutral">&nbsp;</span>
2401
+ <span class="cline-any cline-neutral">&nbsp;</span>
2402
+ <span class="cline-any cline-neutral">&nbsp;</span>
2403
+ <span class="cline-any cline-no">&nbsp;</span>
2404
+ <span class="cline-any cline-no">&nbsp;</span>
2405
+ <span class="cline-any cline-no">&nbsp;</span>
2406
+ <span class="cline-any cline-neutral">&nbsp;</span>
2407
+ <span class="cline-any cline-no">&nbsp;</span>
2408
+ <span class="cline-any cline-neutral">&nbsp;</span>
2409
+ <span class="cline-any cline-no">&nbsp;</span>
2410
+ <span class="cline-any cline-neutral">&nbsp;</span>
2411
+ <span class="cline-any cline-neutral">&nbsp;</span>
2412
+ <span class="cline-any cline-neutral">&nbsp;</span>
2413
+ <span class="cline-any cline-neutral">&nbsp;</span>
2414
+ <span class="cline-any cline-neutral">&nbsp;</span>
2415
+ <span class="cline-any cline-neutral">&nbsp;</span>
2416
+ <span class="cline-any cline-neutral">&nbsp;</span>
2417
+ <span class="cline-any cline-neutral">&nbsp;</span>
2418
+ <span class="cline-any cline-neutral">&nbsp;</span>
2419
+ <span class="cline-any cline-neutral">&nbsp;</span>
2420
+ <span class="cline-any cline-neutral">&nbsp;</span>
2421
+ <span class="cline-any cline-no">&nbsp;</span>
2422
+ <span class="cline-any cline-neutral">&nbsp;</span>
2423
+ <span class="cline-any cline-neutral">&nbsp;</span>
2424
+ <span class="cline-any cline-neutral">&nbsp;</span>
2425
+ <span class="cline-any cline-neutral">&nbsp;</span>
2426
+ <span class="cline-any cline-neutral">&nbsp;</span>
2427
+ <span class="cline-any cline-neutral">&nbsp;</span>
2428
+ <span class="cline-any cline-no">&nbsp;</span>
2429
+ <span class="cline-any cline-neutral">&nbsp;</span>
2430
+ <span class="cline-any cline-neutral">&nbsp;</span>
2431
+ <span class="cline-any cline-neutral">&nbsp;</span>
2432
+ <span class="cline-any cline-neutral">&nbsp;</span>
2433
+ <span class="cline-any cline-neutral">&nbsp;</span>
2434
+ <span class="cline-any cline-neutral">&nbsp;</span>
2435
+ <span class="cline-any cline-neutral">&nbsp;</span>
2436
+ <span class="cline-any cline-no">&nbsp;</span>
2437
+ <span class="cline-any cline-no">&nbsp;</span>
2438
+ <span class="cline-any cline-no">&nbsp;</span>
2439
+ <span class="cline-any cline-neutral">&nbsp;</span>
2440
+ <span class="cline-any cline-no">&nbsp;</span>
2441
+ <span class="cline-any cline-neutral">&nbsp;</span>
2442
+ <span class="cline-any cline-neutral">&nbsp;</span>
2443
+ <span class="cline-any cline-neutral">&nbsp;</span>
2444
+ <span class="cline-any cline-neutral">&nbsp;</span>
2445
+ <span class="cline-any cline-neutral">&nbsp;</span>
2446
+ <span class="cline-any cline-neutral">&nbsp;</span>
2447
+ <span class="cline-any cline-neutral">&nbsp;</span>
2448
+ <span class="cline-any cline-neutral">&nbsp;</span>
2449
+ <span class="cline-any cline-no">&nbsp;</span>
2450
+ <span class="cline-any cline-neutral">&nbsp;</span>
2451
+ <span class="cline-any cline-neutral">&nbsp;</span>
2452
+ <span class="cline-any cline-neutral">&nbsp;</span>
2453
+ <span class="cline-any cline-no">&nbsp;</span>
2454
+ <span class="cline-any cline-no">&nbsp;</span>
2455
+ <span class="cline-any cline-neutral">&nbsp;</span>
2456
+ <span class="cline-any cline-neutral">&nbsp;</span>
2457
+ <span class="cline-any cline-neutral">&nbsp;</span>
2458
+ <span class="cline-any cline-no">&nbsp;</span>
2459
+ <span class="cline-any cline-neutral">&nbsp;</span>
2460
+ <span class="cline-any cline-no">&nbsp;</span>
2461
+ <span class="cline-any cline-neutral">&nbsp;</span>
2462
+ <span class="cline-any cline-neutral">&nbsp;</span>
2463
+ <span class="cline-any cline-neutral">&nbsp;</span>
2464
+ <span class="cline-any cline-no">&nbsp;</span>
2465
+ <span class="cline-any cline-neutral">&nbsp;</span>
2466
+ <span class="cline-any cline-no">&nbsp;</span>
2467
+ <span class="cline-any cline-neutral">&nbsp;</span>
2468
+ <span class="cline-any cline-no">&nbsp;</span>
2469
+ <span class="cline-any cline-neutral">&nbsp;</span>
2470
+ <span class="cline-any cline-neutral">&nbsp;</span>
2471
+ <span class="cline-any cline-neutral">&nbsp;</span>
2472
+ <span class="cline-any cline-neutral">&nbsp;</span>
2473
+ <span class="cline-any cline-neutral">&nbsp;</span>
2474
+ <span class="cline-any cline-neutral">&nbsp;</span>
2475
+ <span class="cline-any cline-no">&nbsp;</span>
2476
+ <span class="cline-any cline-no">&nbsp;</span>
2477
+ <span class="cline-any cline-neutral">&nbsp;</span>
2478
+ <span class="cline-any cline-neutral">&nbsp;</span>
2479
+ <span class="cline-any cline-neutral">&nbsp;</span>
2480
+ <span class="cline-any cline-neutral">&nbsp;</span>
2481
+ <span class="cline-any cline-neutral">&nbsp;</span>
2482
+ <span class="cline-any cline-neutral">&nbsp;</span>
2483
+ <span class="cline-any cline-no">&nbsp;</span>
2484
+ <span class="cline-any cline-neutral">&nbsp;</span>
2485
+ <span class="cline-any cline-neutral">&nbsp;</span>
2486
+ <span class="cline-any cline-neutral">&nbsp;</span>
2487
+ <span class="cline-any cline-neutral">&nbsp;</span>
2488
+ <span class="cline-any cline-neutral">&nbsp;</span>
2489
+ <span class="cline-any cline-no">&nbsp;</span>
2490
+ <span class="cline-any cline-neutral">&nbsp;</span>
2491
+ <span class="cline-any cline-neutral">&nbsp;</span>
2492
+ <span class="cline-any cline-neutral">&nbsp;</span>
2493
+ <span class="cline-any cline-neutral">&nbsp;</span>
2494
+ <span class="cline-any cline-no">&nbsp;</span>
2495
+ <span class="cline-any cline-neutral">&nbsp;</span>
2496
+ <span class="cline-any cline-no">&nbsp;</span>
2497
+ <span class="cline-any cline-no">&nbsp;</span>
2498
+ <span class="cline-any cline-no">&nbsp;</span>
2499
+ <span class="cline-any cline-neutral">&nbsp;</span>
2500
+ <span class="cline-any cline-no">&nbsp;</span>
2501
+ <span class="cline-any cline-no">&nbsp;</span>
2502
+ <span class="cline-any cline-neutral">&nbsp;</span>
2503
+ <span class="cline-any cline-neutral">&nbsp;</span>
2504
+ <span class="cline-any cline-neutral">&nbsp;</span>
2505
+ <span class="cline-any cline-no">&nbsp;</span>
2506
+ <span class="cline-any cline-neutral">&nbsp;</span>
2507
+ <span class="cline-any cline-neutral">&nbsp;</span>
2508
+ <span class="cline-any cline-neutral">&nbsp;</span>
2509
+ <span class="cline-any cline-no">&nbsp;</span>
2510
+ <span class="cline-any cline-no">&nbsp;</span>
2511
+ <span class="cline-any cline-neutral">&nbsp;</span>
2512
+ <span class="cline-any cline-neutral">&nbsp;</span>
2513
+ <span class="cline-any cline-neutral">&nbsp;</span>
2514
+ <span class="cline-any cline-no">&nbsp;</span>
2515
+ <span class="cline-any cline-no">&nbsp;</span>
2516
+ <span class="cline-any cline-neutral">&nbsp;</span>
2517
+ <span class="cline-any cline-neutral">&nbsp;</span>
2518
+ <span class="cline-any cline-no">&nbsp;</span>
2519
+ <span class="cline-any cline-no">&nbsp;</span>
2520
+ <span class="cline-any cline-neutral">&nbsp;</span>
2521
+ <span class="cline-any cline-neutral">&nbsp;</span>
2522
+ <span class="cline-any cline-no">&nbsp;</span>
2523
+ <span class="cline-any cline-neutral">&nbsp;</span>
2524
+ <span class="cline-any cline-neutral">&nbsp;</span>
2525
+ <span class="cline-any cline-neutral">&nbsp;</span>
2526
+ <span class="cline-any cline-neutral">&nbsp;</span>
2527
+ <span class="cline-any cline-neutral">&nbsp;</span>
2528
+ <span class="cline-any cline-neutral">&nbsp;</span>
2529
+ <span class="cline-any cline-neutral">&nbsp;</span>
2530
+ <span class="cline-any cline-neutral">&nbsp;</span>
2531
+ <span class="cline-any cline-neutral">&nbsp;</span>
2532
+ <span class="cline-any cline-neutral">&nbsp;</span>
2533
+ <span class="cline-any cline-neutral">&nbsp;</span>
2534
+ <span class="cline-any cline-neutral">&nbsp;</span>
2535
+ <span class="cline-any cline-neutral">&nbsp;</span>
2536
+ <span class="cline-any cline-neutral">&nbsp;</span>
2537
+ <span class="cline-any cline-neutral">&nbsp;</span>
2538
+ <span class="cline-any cline-neutral">&nbsp;</span>
2539
+ <span class="cline-any cline-neutral">&nbsp;</span>
2540
+ <span class="cline-any cline-neutral">&nbsp;</span>
2541
+ <span class="cline-any cline-neutral">&nbsp;</span>
2542
+ <span class="cline-any cline-neutral">&nbsp;</span>
2543
+ <span class="cline-any cline-neutral">&nbsp;</span>
2544
+ <span class="cline-any cline-no">&nbsp;</span>
2545
+ <span class="cline-any cline-neutral">&nbsp;</span>
2546
+ <span class="cline-any cline-neutral">&nbsp;</span>
2547
+ <span class="cline-any cline-neutral">&nbsp;</span>
2548
+ <span class="cline-any cline-no">&nbsp;</span>
2549
+ <span class="cline-any cline-no">&nbsp;</span>
2550
+ <span class="cline-any cline-neutral">&nbsp;</span>
2551
+ <span class="cline-any cline-neutral">&nbsp;</span>
2552
+ <span class="cline-any cline-no">&nbsp;</span>
2553
+ <span class="cline-any cline-neutral">&nbsp;</span>
2554
+ <span class="cline-any cline-neutral">&nbsp;</span>
2555
+ <span class="cline-any cline-neutral">&nbsp;</span>
2556
+ <span class="cline-any cline-no">&nbsp;</span>
2557
+ <span class="cline-any cline-neutral">&nbsp;</span>
2558
+ <span class="cline-any cline-neutral">&nbsp;</span>
2559
+ <span class="cline-any cline-neutral">&nbsp;</span>
2560
+ <span class="cline-any cline-neutral">&nbsp;</span>
2561
+ <span class="cline-any cline-yes">1x</span>
2562
+ <span class="cline-any cline-neutral">&nbsp;</span>
2563
+ <span class="cline-any cline-neutral">&nbsp;</span>
2564
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">'use strict';
2565
+ &nbsp;
2566
+ const {
2567
+ isUndefined,
2568
+ castArray,
2569
+ compact,
2570
+ isNil,
2571
+ has,
2572
+ isString,
2573
+ isInteger,
2574
+ pick,
2575
+ isPlainObject,
2576
+ isEmpty,
2577
+ isArray,
2578
+ isNull,
2579
+ uniqWith,
2580
+ isEqual,
2581
+ differenceWith,
2582
+ isNumber,
2583
+ map,
2584
+ difference,
2585
+ uniqBy,
2586
+ } = require('lodash/fp');
2587
+ const types = require('../types');
2588
+ const { createField } = require('../fields');
2589
+ const { createQueryBuilder } = require('../query');
2590
+ const { createRepository } = require('./entity-repository');
2591
+ const { deleteRelatedMorphOneRelationsAfterMorphToManyUpdate } = require('./morph-relations');
2592
+ const {
2593
+ isBidirectional,
2594
+ isAnyToOne,
2595
+ isOneToAny,
2596
+ hasOrderColumn,
2597
+ hasInverseOrderColumn,
2598
+ } = require('../metadata/relations');
2599
+ const {
2600
+ deletePreviousOneToAnyRelations,
2601
+ deletePreviousAnyToOneRelations,
2602
+ deleteRelations,
2603
+ cleanOrderColumns,
2604
+ } = require('./regular-relations');
2605
+ const { relationsOrderer } = require('./relations-orderer');
2606
+ &nbsp;
2607
+ const toId = <span class="fstat-no" title="function not covered" >(v</span>alue) =&gt; <span class="cstat-no" title="statement not covered" >value.id || value;</span>
2608
+ const toIds = <span class="fstat-no" title="function not covered" >(v</span>alue) =&gt; <span class="cstat-no" title="statement not covered" >castArray(value || []).map(toId);</span>
2609
+ &nbsp;
2610
+ const isValidId = <span class="fstat-no" title="function not covered" >(v</span>alue) =&gt; <span class="cstat-no" title="statement not covered" >isString(value) || isInteger(value);</span>
2611
+ const toIdArray = <span class="fstat-no" title="function not covered" >(d</span>ata) =&gt; {
2612
+ const array = <span class="cstat-no" title="statement not covered" >castArray(data)</span>
2613
+ .filter(<span class="fstat-no" title="function not covered" >(d</span>atum) =&gt; <span class="cstat-no" title="statement not covered" >!isNil(datum))</span>
2614
+ .map(<span class="fstat-no" title="function not covered" >(d</span>atum) =&gt; {
2615
+ // if it is a string or an integer return an obj with id = to datum
2616
+ <span class="cstat-no" title="statement not covered" > if (isValidId(datum)) {</span>
2617
+ <span class="cstat-no" title="statement not covered" > return { id: datum, __pivot: {} };</span>
2618
+ }
2619
+ &nbsp;
2620
+ // if it is an object check it has at least a valid id
2621
+ <span class="cstat-no" title="statement not covered" > if (!has('id', datum) || !isValidId(datum.id)) {</span>
2622
+ <span class="cstat-no" title="statement not covered" > throw new Error(`Invalid id, expected a string or integer, got ${datum}`);</span>
2623
+ }
2624
+ &nbsp;
2625
+ <span class="cstat-no" title="statement not covered" > return datum;</span>
2626
+ });
2627
+ <span class="cstat-no" title="statement not covered" > return uniqWith(isEqual, array);</span>
2628
+ };
2629
+ &nbsp;
2630
+ const toAssocs = <span class="fstat-no" title="function not covered" >(d</span>ata) =&gt; {
2631
+ <span class="cstat-no" title="statement not covered" > if (isArray(data) || isString(data) || isNumber(data) || isNull(data) || data?.id) {</span>
2632
+ <span class="cstat-no" title="statement not covered" > return {</span>
2633
+ set: isNull(data) ? data : toIdArray(data),
2634
+ };
2635
+ }
2636
+ &nbsp;
2637
+ <span class="cstat-no" title="statement not covered" > if (data?.set) {</span>
2638
+ <span class="cstat-no" title="statement not covered" > return {</span>
2639
+ set: isNull(data.set) ? data.set : toIdArray(data.set),
2640
+ };
2641
+ }
2642
+ &nbsp;
2643
+ <span class="cstat-no" title="statement not covered" > return {</span>
2644
+ options: {
2645
+ strict: data?.options?.strict,
2646
+ },
2647
+ connect: toIdArray(data?.connect).map(<span class="fstat-no" title="function not covered" >(e</span>lm) =&gt; (<span class="cstat-no" title="statement not covered" >{</span>
2648
+ id: elm.id,
2649
+ position: elm.position ? elm.position : { end: true },
2650
+ })),
2651
+ disconnect: toIdArray(data?.disconnect),
2652
+ };
2653
+ };
2654
+ &nbsp;
2655
+ const processData = <span class="fstat-no" title="function not covered" >(m</span>etadata, data = <span class="branch-0 cbranch-no" title="branch not covered" >{},</span> { withDefaults = <span class="branch-0 cbranch-no" title="branch not covered" >false </span>} = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> =&gt; {
2656
+ const { attributes } = <span class="cstat-no" title="statement not covered" >metadata;</span>
2657
+ &nbsp;
2658
+ const obj = <span class="cstat-no" title="statement not covered" >{};</span>
2659
+ &nbsp;
2660
+ <span class="cstat-no" title="statement not covered" > for (const attributeName of Object.keys(attributes)) {</span>
2661
+ const attribute = <span class="cstat-no" title="statement not covered" >attributes[attributeName];</span>
2662
+ &nbsp;
2663
+ <span class="cstat-no" title="statement not covered" > if (types.isScalar(attribute.type)) {</span>
2664
+ const field = <span class="cstat-no" title="statement not covered" >createField(attribute);</span>
2665
+ &nbsp;
2666
+ <span class="cstat-no" title="statement not covered" > if (isUndefined(data[attributeName])) {</span>
2667
+ <span class="cstat-no" title="statement not covered" > if (!isUndefined(attribute.default) &amp;&amp; withDefaults) {</span>
2668
+ <span class="cstat-no" title="statement not covered" > if (typeof attribute.default === 'function') {</span>
2669
+ <span class="cstat-no" title="statement not covered" > obj[attributeName] = attribute.default();</span>
2670
+ } else {
2671
+ <span class="cstat-no" title="statement not covered" > obj[attributeName] = attribute.default;</span>
2672
+ }
2673
+ }
2674
+ <span class="cstat-no" title="statement not covered" > continue;</span>
2675
+ }
2676
+ &nbsp;
2677
+ <span class="cstat-no" title="statement not covered" > if (typeof field.validate === 'function' &amp;&amp; data[attributeName] !== null) {</span>
2678
+ <span class="cstat-no" title="statement not covered" > field.validate(data[attributeName]);</span>
2679
+ }
2680
+ &nbsp;
2681
+ const val = <span class="cstat-no" title="statement not covered" >data[attributeName] === null ? null : field.toDB(data[attributeName]);</span>
2682
+ &nbsp;
2683
+ <span class="cstat-no" title="statement not covered" > obj[attributeName] = val;</span>
2684
+ }
2685
+ &nbsp;
2686
+ <span class="cstat-no" title="statement not covered" > if (types.isRelation(attribute.type)) {</span>
2687
+ // oneToOne &amp; manyToOne
2688
+ <span class="cstat-no" title="statement not covered" > if (attribute.joinColumn &amp;&amp; attribute.owner) {</span>
2689
+ const joinColumnName = <span class="cstat-no" title="statement not covered" >attribute.joinColumn.name;</span>
2690
+ &nbsp;
2691
+ // allow setting to null
2692
+ const attrValue = <span class="cstat-no" title="statement not covered" >!isUndefined(data[attributeName])</span>
2693
+ ? data[attributeName]
2694
+ : data[joinColumnName];
2695
+ &nbsp;
2696
+ <span class="cstat-no" title="statement not covered" > if (!isUndefined(attrValue)) {</span>
2697
+ <span class="cstat-no" title="statement not covered" > obj[joinColumnName] = attrValue;</span>
2698
+ }
2699
+ &nbsp;
2700
+ <span class="cstat-no" title="statement not covered" > continue;</span>
2701
+ }
2702
+ &nbsp;
2703
+ <span class="cstat-no" title="statement not covered" > if (attribute.morphColumn &amp;&amp; attribute.owner) {</span>
2704
+ const { idColumn, typeColumn, typeField = <span class="branch-0 cbranch-no" title="branch not covered" >'__type' </span>} = <span class="cstat-no" title="statement not covered" >attribute.morphColumn;</span>
2705
+ &nbsp;
2706
+ const value = <span class="cstat-no" title="statement not covered" >data[attributeName];</span>
2707
+ &nbsp;
2708
+ <span class="cstat-no" title="statement not covered" > if (value === null) {</span>
2709
+ <span class="cstat-no" title="statement not covered" > Object.assign(obj, {</span>
2710
+ [idColumn.name]: null,
2711
+ [typeColumn.name]: null,
2712
+ });
2713
+ &nbsp;
2714
+ <span class="cstat-no" title="statement not covered" > continue;</span>
2715
+ }
2716
+ &nbsp;
2717
+ <span class="cstat-no" title="statement not covered" > if (!isUndefined(value)) {</span>
2718
+ <span class="cstat-no" title="statement not covered" > if (!has('id', value) || !has(typeField, value)) {</span>
2719
+ <span class="cstat-no" title="statement not covered" > throw new Error(`Expects properties ${typeField} an id to make a morph association`);</span>
2720
+ }
2721
+ &nbsp;
2722
+ <span class="cstat-no" title="statement not covered" > Object.assign(obj, {</span>
2723
+ [idColumn.name]: value.id,
2724
+ [typeColumn.name]: value[typeField],
2725
+ });
2726
+ }
2727
+ }
2728
+ }
2729
+ }
2730
+ &nbsp;
2731
+ <span class="cstat-no" title="statement not covered" > return obj;</span>
2732
+ };
2733
+ &nbsp;
2734
+ const createEntityManager = (db) =&gt; {
2735
+ const repoMap = {};
2736
+ &nbsp;
2737
+ return {
2738
+ <span class="fstat-no" title="function not covered" > as</span>ync findOne(uid, params) {
2739
+ const states = <span class="cstat-no" title="statement not covered" >await db.lifecycles.run('beforeFindOne', uid, { params });</span>
2740
+ &nbsp;
2741
+ const result = <span class="cstat-no" title="statement not covered" >await this.createQueryBuilder(uid).init(params).first().execute();</span>
2742
+ &nbsp;
2743
+ <span class="cstat-no" title="statement not covered" > await db.lifecycles.run('afterFindOne', uid, { params, result }, states);</span>
2744
+ &nbsp;
2745
+ <span class="cstat-no" title="statement not covered" > return result;</span>
2746
+ },
2747
+ &nbsp;
2748
+ // should we name it findOne because people are used to it ?
2749
+ <span class="fstat-no" title="function not covered" > as</span>ync findMany(uid, params) {
2750
+ const states = <span class="cstat-no" title="statement not covered" >await db.lifecycles.run('beforeFindMany', uid, { params });</span>
2751
+ &nbsp;
2752
+ const result = <span class="cstat-no" title="statement not covered" >await this.createQueryBuilder(uid).init(params).execute();</span>
2753
+ &nbsp;
2754
+ <span class="cstat-no" title="statement not covered" > await db.lifecycles.run('afterFindMany', uid, { params, result }, states);</span>
2755
+ &nbsp;
2756
+ <span class="cstat-no" title="statement not covered" > return result;</span>
2757
+ },
2758
+ &nbsp;
2759
+ <span class="fstat-no" title="function not covered" > as</span>ync count(uid, params) {
2760
+ const states = <span class="cstat-no" title="statement not covered" >await db.lifecycles.run('beforeCount', uid, { params });</span>
2761
+ &nbsp;
2762
+ const res = <span class="cstat-no" title="statement not covered" >await this.createQueryBuilder(uid)</span>
2763
+ .init(pick(['_q', 'where', 'filters'], params))
2764
+ .count()
2765
+ .first()
2766
+ .execute();
2767
+ &nbsp;
2768
+ const result = <span class="cstat-no" title="statement not covered" >Number(res.count);</span>
2769
+ &nbsp;
2770
+ <span class="cstat-no" title="statement not covered" > await db.lifecycles.run('afterCount', uid, { params, result }, states);</span>
2771
+ &nbsp;
2772
+ <span class="cstat-no" title="statement not covered" > return result;</span>
2773
+ },
2774
+ &nbsp;
2775
+ <span class="fstat-no" title="function not covered" > as</span>ync create(uid, params = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
2776
+ const states = <span class="cstat-no" title="statement not covered" >await db.lifecycles.run('beforeCreate', uid, { params });</span>
2777
+ &nbsp;
2778
+ const metadata = <span class="cstat-no" title="statement not covered" >db.metadata.get(uid);</span>
2779
+ const { data } = <span class="cstat-no" title="statement not covered" >params;</span>
2780
+ &nbsp;
2781
+ <span class="cstat-no" title="statement not covered" > if (!isPlainObject(data)) {</span>
2782
+ <span class="cstat-no" title="statement not covered" > throw new Error('Create expects a data object');</span>
2783
+ }
2784
+ &nbsp;
2785
+ const dataToInsert = <span class="cstat-no" title="statement not covered" >processData(metadata, data, { withDefaults: true });</span>
2786
+ &nbsp;
2787
+ const res = <span class="cstat-no" title="statement not covered" >await this.createQueryBuilder(uid).insert(dataToInsert).execute();</span>
2788
+ &nbsp;
2789
+ const id = <span class="cstat-no" title="statement not covered" >res[0].id || res[0];</span>
2790
+ &nbsp;
2791
+ const trx = <span class="cstat-no" title="statement not covered" >await strapi.db.transaction();</span>
2792
+ <span class="cstat-no" title="statement not covered" > try {</span>
2793
+ <span class="cstat-no" title="statement not covered" > await this.attachRelations(uid, id, data, { transaction: trx.get() });</span>
2794
+ &nbsp;
2795
+ <span class="cstat-no" title="statement not covered" > await trx.commit();</span>
2796
+ } catch (e) {
2797
+ <span class="cstat-no" title="statement not covered" > await trx.rollback();</span>
2798
+ <span class="cstat-no" title="statement not covered" > await this.createQueryBuilder(uid).where({ id }).delete().execute();</span>
2799
+ <span class="cstat-no" title="statement not covered" > throw e;</span>
2800
+ }
2801
+ &nbsp;
2802
+ // TODO: in case there is no select or populate specified return the inserted data ?
2803
+ // TODO: do not trigger the findOne lifecycles ?
2804
+ const result = <span class="cstat-no" title="statement not covered" >await this.findOne(uid, {</span>
2805
+ where: { id },
2806
+ select: params.select,
2807
+ populate: params.populate,
2808
+ });
2809
+ &nbsp;
2810
+ <span class="cstat-no" title="statement not covered" > await db.lifecycles.run('afterCreate', uid, { params, result }, states);</span>
2811
+ &nbsp;
2812
+ <span class="cstat-no" title="statement not covered" > return result;</span>
2813
+ },
2814
+ &nbsp;
2815
+ // TODO: where do we handle relation processing for many queries ?
2816
+ <span class="fstat-no" title="function not covered" > as</span>ync createMany(uid, params = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
2817
+ const states = <span class="cstat-no" title="statement not covered" >await db.lifecycles.run('beforeCreateMany', uid, { params });</span>
2818
+ &nbsp;
2819
+ const metadata = <span class="cstat-no" title="statement not covered" >db.metadata.get(uid);</span>
2820
+ const { data } = <span class="cstat-no" title="statement not covered" >params;</span>
2821
+ &nbsp;
2822
+ <span class="cstat-no" title="statement not covered" > if (!isArray(data)) {</span>
2823
+ <span class="cstat-no" title="statement not covered" > throw new Error('CreateMany expects data to be an array');</span>
2824
+ }
2825
+ &nbsp;
2826
+ const dataToInsert = <span class="cstat-no" title="statement not covered" >data.map(<span class="fstat-no" title="function not covered" >(d</span>atum) =&gt;</span>
2827
+ <span class="cstat-no" title="statement not covered" > processData(metadata, datum, { withDefaults: true })</span>
2828
+ );
2829
+ &nbsp;
2830
+ <span class="cstat-no" title="statement not covered" > if (isEmpty(dataToInsert)) {</span>
2831
+ <span class="cstat-no" title="statement not covered" > throw new Error('Nothing to insert');</span>
2832
+ }
2833
+ &nbsp;
2834
+ <span class="cstat-no" title="statement not covered" > await this.createQueryBuilder(uid).insert(dataToInsert).execute();</span>
2835
+ &nbsp;
2836
+ const result = <span class="cstat-no" title="statement not covered" >{ count: data.length };</span>
2837
+ &nbsp;
2838
+ <span class="cstat-no" title="statement not covered" > await db.lifecycles.run('afterCreateMany', uid, { params, result }, states);</span>
2839
+ &nbsp;
2840
+ <span class="cstat-no" title="statement not covered" > return result;</span>
2841
+ },
2842
+ &nbsp;
2843
+ <span class="fstat-no" title="function not covered" > as</span>ync update(uid, params = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
2844
+ const states = <span class="cstat-no" title="statement not covered" >await db.lifecycles.run('beforeUpdate', uid, { params });</span>
2845
+ &nbsp;
2846
+ const metadata = <span class="cstat-no" title="statement not covered" >db.metadata.get(uid);</span>
2847
+ const { where, data } = <span class="cstat-no" title="statement not covered" >params;</span>
2848
+ &nbsp;
2849
+ <span class="cstat-no" title="statement not covered" > if (!isPlainObject(data)) {</span>
2850
+ <span class="cstat-no" title="statement not covered" > throw new Error('Update requires a data object');</span>
2851
+ }
2852
+ &nbsp;
2853
+ <span class="cstat-no" title="statement not covered" > if (isEmpty(where)) {</span>
2854
+ <span class="cstat-no" title="statement not covered" > throw new Error('Update requires a where parameter');</span>
2855
+ }
2856
+ &nbsp;
2857
+ const entity = <span class="cstat-no" title="statement not covered" >await this.createQueryBuilder(uid)</span>
2858
+ .select('*')
2859
+ .where(where)
2860
+ .first()
2861
+ .execute({ mapResults: false });
2862
+ &nbsp;
2863
+ <span class="cstat-no" title="statement not covered" > if (!entity) {</span>
2864
+ <span class="cstat-no" title="statement not covered" > return null;</span>
2865
+ }
2866
+ &nbsp;
2867
+ const { id } = <span class="cstat-no" title="statement not covered" >entity;</span>
2868
+ &nbsp;
2869
+ const dataToUpdate = <span class="cstat-no" title="statement not covered" >processData(metadata, data);</span>
2870
+ &nbsp;
2871
+ <span class="cstat-no" title="statement not covered" > if (!isEmpty(dataToUpdate)) {</span>
2872
+ <span class="cstat-no" title="statement not covered" > await this.createQueryBuilder(uid).where({ id }).update(dataToUpdate).execute();</span>
2873
+ }
2874
+ &nbsp;
2875
+ const trx = <span class="cstat-no" title="statement not covered" >await strapi.db.transaction();</span>
2876
+ <span class="cstat-no" title="statement not covered" > try {</span>
2877
+ <span class="cstat-no" title="statement not covered" > await this.updateRelations(uid, id, data, { transaction: trx.get() });</span>
2878
+ <span class="cstat-no" title="statement not covered" > await trx.commit();</span>
2879
+ } catch (e) {
2880
+ <span class="cstat-no" title="statement not covered" > await trx.rollback();</span>
2881
+ <span class="cstat-no" title="statement not covered" > await this.createQueryBuilder(uid).where({ id }).update(entity).execute();</span>
2882
+ <span class="cstat-no" title="statement not covered" > throw e;</span>
2883
+ }
2884
+ &nbsp;
2885
+ // TODO: do not trigger the findOne lifecycles ?
2886
+ const result = <span class="cstat-no" title="statement not covered" >await this.findOne(uid, {</span>
2887
+ where: { id },
2888
+ select: params.select,
2889
+ populate: params.populate,
2890
+ });
2891
+ &nbsp;
2892
+ <span class="cstat-no" title="statement not covered" > await db.lifecycles.run('afterUpdate', uid, { params, result }, states);</span>
2893
+ &nbsp;
2894
+ <span class="cstat-no" title="statement not covered" > return result;</span>
2895
+ },
2896
+ &nbsp;
2897
+ // TODO: where do we handle relation processing for many queries ?
2898
+ <span class="fstat-no" title="function not covered" > as</span>ync updateMany(uid, params = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
2899
+ const states = <span class="cstat-no" title="statement not covered" >await db.lifecycles.run('beforeUpdateMany', uid, { params });</span>
2900
+ &nbsp;
2901
+ const metadata = <span class="cstat-no" title="statement not covered" >db.metadata.get(uid);</span>
2902
+ const { where, data } = <span class="cstat-no" title="statement not covered" >params;</span>
2903
+ &nbsp;
2904
+ const dataToUpdate = <span class="cstat-no" title="statement not covered" >processData(metadata, data);</span>
2905
+ &nbsp;
2906
+ <span class="cstat-no" title="statement not covered" > if (isEmpty(dataToUpdate)) {</span>
2907
+ <span class="cstat-no" title="statement not covered" > throw new Error('Update requires data');</span>
2908
+ }
2909
+ &nbsp;
2910
+ const updatedRows = <span class="cstat-no" title="statement not covered" >await this.createQueryBuilder(uid)</span>
2911
+ .where(where)
2912
+ .update(dataToUpdate)
2913
+ .execute();
2914
+ &nbsp;
2915
+ const result = <span class="cstat-no" title="statement not covered" >{ count: updatedRows };</span>
2916
+ &nbsp;
2917
+ <span class="cstat-no" title="statement not covered" > await db.lifecycles.run('afterUpdateMany', uid, { params, result }, states);</span>
2918
+ &nbsp;
2919
+ <span class="cstat-no" title="statement not covered" > return result;</span>
2920
+ },
2921
+ &nbsp;
2922
+ <span class="fstat-no" title="function not covered" > as</span>ync delete(uid, params = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
2923
+ const states = <span class="cstat-no" title="statement not covered" >await db.lifecycles.run('beforeDelete', uid, { params });</span>
2924
+ &nbsp;
2925
+ const { where, select, populate } = <span class="cstat-no" title="statement not covered" >params;</span>
2926
+ &nbsp;
2927
+ <span class="cstat-no" title="statement not covered" > if (isEmpty(where)) {</span>
2928
+ <span class="cstat-no" title="statement not covered" > throw new Error('Delete requires a where parameter');</span>
2929
+ }
2930
+ &nbsp;
2931
+ // TODO: do not trigger the findOne lifecycles ?
2932
+ const entity = <span class="cstat-no" title="statement not covered" >await this.findOne(uid, {</span>
2933
+ select: select &amp;&amp; ['id'].concat(select),
2934
+ where,
2935
+ populate,
2936
+ });
2937
+ &nbsp;
2938
+ <span class="cstat-no" title="statement not covered" > if (!entity) {</span>
2939
+ <span class="cstat-no" title="statement not covered" > return null;</span>
2940
+ }
2941
+ &nbsp;
2942
+ const { id } = <span class="cstat-no" title="statement not covered" >entity;</span>
2943
+ &nbsp;
2944
+ <span class="cstat-no" title="statement not covered" > await this.createQueryBuilder(uid).where({ id }).delete().execute();</span>
2945
+ &nbsp;
2946
+ const trx = <span class="cstat-no" title="statement not covered" >await strapi.db.transaction();</span>
2947
+ <span class="cstat-no" title="statement not covered" > try {</span>
2948
+ <span class="cstat-no" title="statement not covered" > await this.deleteRelations(uid, id, { transaction: trx.get() });</span>
2949
+ &nbsp;
2950
+ <span class="cstat-no" title="statement not covered" > await trx.commit();</span>
2951
+ } catch (e) {
2952
+ <span class="cstat-no" title="statement not covered" > await trx.rollback();</span>
2953
+ <span class="cstat-no" title="statement not covered" > throw e;</span>
2954
+ }
2955
+ &nbsp;
2956
+ <span class="cstat-no" title="statement not covered" > await db.lifecycles.run('afterDelete', uid, { params, result: entity }, states);</span>
2957
+ &nbsp;
2958
+ <span class="cstat-no" title="statement not covered" > return entity;</span>
2959
+ },
2960
+ &nbsp;
2961
+ // TODO: where do we handle relation processing for many queries ?
2962
+ <span class="fstat-no" title="function not covered" > as</span>ync deleteMany(uid, params = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
2963
+ const states = <span class="cstat-no" title="statement not covered" >await db.lifecycles.run('beforeDeleteMany', uid, { params });</span>
2964
+ &nbsp;
2965
+ const { where } = <span class="cstat-no" title="statement not covered" >params;</span>
2966
+ &nbsp;
2967
+ const deletedRows = <span class="cstat-no" title="statement not covered" >await this.createQueryBuilder(uid).where(where).delete().execute();</span>
2968
+ &nbsp;
2969
+ const result = <span class="cstat-no" title="statement not covered" >{ count: deletedRows };</span>
2970
+ &nbsp;
2971
+ <span class="cstat-no" title="statement not covered" > await db.lifecycles.run('afterDeleteMany', uid, { params, result }, states);</span>
2972
+ &nbsp;
2973
+ <span class="cstat-no" title="statement not covered" > return result;</span>
2974
+ },
2975
+ &nbsp;
2976
+ /**
2977
+ * Attach relations to a new entity
2978
+ *
2979
+ * @param {EntityManager} em - entity manager instance
2980
+ * @param {Metadata} metadata - model metadta
2981
+ * @param {ID} id - entity ID
2982
+ * @param {object} data - data received for creation
2983
+ */
2984
+ <span class="fstat-no" title="function not covered" > as</span>ync attachRelations(uid, id, data, { transaction: trx }) {
2985
+ const { attributes } = <span class="cstat-no" title="statement not covered" >db.metadata.get(uid);</span>
2986
+ &nbsp;
2987
+ <span class="cstat-no" title="statement not covered" > for (const attributeName of Object.keys(attributes)) {</span>
2988
+ const attribute = <span class="cstat-no" title="statement not covered" >attributes[attributeName];</span>
2989
+ &nbsp;
2990
+ const isValidLink = <span class="cstat-no" title="statement not covered" >has(attributeName, data) &amp;&amp; !isNil(data[attributeName]);</span>
2991
+ &nbsp;
2992
+ <span class="cstat-no" title="statement not covered" > if (attribute.type !== 'relation' || !isValidLink) {</span>
2993
+ <span class="cstat-no" title="statement not covered" > continue;</span>
2994
+ }
2995
+ &nbsp;
2996
+ const cleanRelationData = <span class="cstat-no" title="statement not covered" >toAssocs(data[attributeName]);</span>
2997
+ &nbsp;
2998
+ <span class="cstat-no" title="statement not covered" > if (attribute.relation === 'morphOne' || attribute.relation === 'morphMany') {</span>
2999
+ const { target, morphBy } = <span class="cstat-no" title="statement not covered" >attribute;</span>
3000
+ &nbsp;
3001
+ const targetAttribute = <span class="cstat-no" title="statement not covered" >db.metadata.get(target).attributes[morphBy];</span>
3002
+ &nbsp;
3003
+ <span class="cstat-no" title="statement not covered" > if (targetAttribute.relation === 'morphToOne') {</span>
3004
+ // set columns
3005
+ const { idColumn, typeColumn } = <span class="cstat-no" title="statement not covered" >targetAttribute.morphColumn;</span>
3006
+ &nbsp;
3007
+ const relId = <span class="cstat-no" title="statement not covered" >toId(cleanRelationData.set[0]);</span>
3008
+ &nbsp;
3009
+ <span class="cstat-no" title="statement not covered" > await this.createQueryBuilder(target)</span>
3010
+ .update({ [idColumn.name]: id, [typeColumn.name]: uid })
3011
+ .where({ id: relId })
3012
+ .transacting(trx)
3013
+ .execute();
3014
+ } else <span class="cstat-no" title="statement not covered" >if (targetAttribute.relation === 'morphToMany') {</span>
3015
+ const { joinTable } = <span class="cstat-no" title="statement not covered" >targetAttribute;</span>
3016
+ const { joinColumn, morphColumn } = <span class="cstat-no" title="statement not covered" >joinTable;</span>
3017
+ &nbsp;
3018
+ const { idColumn, typeColumn } = <span class="cstat-no" title="statement not covered" >morphColumn;</span>
3019
+ &nbsp;
3020
+ <span class="cstat-no" title="statement not covered" > if (isEmpty(cleanRelationData.set)) {</span>
3021
+ <span class="cstat-no" title="statement not covered" > continue;</span>
3022
+ }
3023
+ &nbsp;
3024
+ const rows = <span class="cstat-no" title="statement not covered" >cleanRelationData.set.map(<span class="fstat-no" title="function not covered" >(d</span>ata, idx) =&gt; {</span>
3025
+ <span class="cstat-no" title="statement not covered" > return {</span>
3026
+ [joinColumn.name]: data.id,
3027
+ [idColumn.name]: id,
3028
+ [typeColumn.name]: uid,
3029
+ ...(joinTable.on || {}),
3030
+ ...(data.__pivot || {}),
3031
+ order: idx + 1,
3032
+ field: attributeName,
3033
+ };
3034
+ });
3035
+ &nbsp;
3036
+ <span class="cstat-no" title="statement not covered" > await this.createQueryBuilder(joinTable.name).insert(rows).transacting(trx).execute();</span>
3037
+ }
3038
+ &nbsp;
3039
+ <span class="cstat-no" title="statement not covered" > continue;</span>
3040
+ } else <span class="cstat-no" title="statement not covered" >if (attribute.relation === 'morphToOne') {</span>
3041
+ // handled on the entry itself
3042
+ <span class="cstat-no" title="statement not covered" > continue;</span>
3043
+ } else <span class="cstat-no" title="statement not covered" >if (attribute.relation === 'morphToMany') {</span>
3044
+ const { joinTable } = <span class="cstat-no" title="statement not covered" >attribute;</span>
3045
+ const { joinColumn, morphColumn } = <span class="cstat-no" title="statement not covered" >joinTable;</span>
3046
+ &nbsp;
3047
+ const { idColumn, typeColumn, typeField = <span class="branch-0 cbranch-no" title="branch not covered" >'__type' </span>} = <span class="cstat-no" title="statement not covered" >morphColumn;</span>
3048
+ &nbsp;
3049
+ <span class="cstat-no" title="statement not covered" > if (isEmpty(cleanRelationData.set)) {</span>
3050
+ <span class="cstat-no" title="statement not covered" > continue;</span>
3051
+ }
3052
+ &nbsp;
3053
+ const rows = <span class="cstat-no" title="statement not covered" >cleanRelationData.set.map(<span class="fstat-no" title="function not covered" >(d</span>ata, idx) =&gt; (<span class="cstat-no" title="statement not covered" >{</span></span>
3054
+ [joinColumn.name]: id,
3055
+ [idColumn.name]: data.id,
3056
+ [typeColumn.name]: data[typeField],
3057
+ ...(joinTable.on || {}),
3058
+ ...(data.__pivot || {}),
3059
+ order: idx + 1,
3060
+ }));
3061
+ &nbsp;
3062
+ // delete previous relations
3063
+ <span class="cstat-no" title="statement not covered" > await deleteRelatedMorphOneRelationsAfterMorphToManyUpdate(rows, {</span>
3064
+ uid,
3065
+ attributeName,
3066
+ joinTable,
3067
+ db,
3068
+ transaction: trx,
3069
+ });
3070
+ &nbsp;
3071
+ <span class="cstat-no" title="statement not covered" > await this.createQueryBuilder(joinTable.name).insert(rows).transacting(trx).execute();</span>
3072
+ &nbsp;
3073
+ <span class="cstat-no" title="statement not covered" > continue;</span>
3074
+ }
3075
+ &nbsp;
3076
+ <span class="cstat-no" title="statement not covered" > if (attribute.joinColumn &amp;&amp; attribute.owner) {</span>
3077
+ const relIdsToAdd = <span class="cstat-no" title="statement not covered" >toIds(cleanRelationData.set);</span>
3078
+ <span class="cstat-no" title="statement not covered" > if (</span>
3079
+ attribute.relation === 'oneToOne' &amp;&amp;
3080
+ isBidirectional(attribute) &amp;&amp;
3081
+ relIdsToAdd.length
3082
+ ) {
3083
+ <span class="cstat-no" title="statement not covered" > await this.createQueryBuilder(uid)</span>
3084
+ .where({ [attribute.joinColumn.name]: relIdsToAdd, id: { $ne: id } })
3085
+ .update({ [attribute.joinColumn.name]: null })
3086
+ .transacting(trx)
3087
+ .execute();
3088
+ }
3089
+ &nbsp;
3090
+ <span class="cstat-no" title="statement not covered" > continue;</span>
3091
+ }
3092
+ &nbsp;
3093
+ // oneToOne oneToMany on the non owning side
3094
+ <span class="cstat-no" title="statement not covered" > if (attribute.joinColumn &amp;&amp; !attribute.owner) {</span>
3095
+ // need to set the column on the target
3096
+ const { target } = <span class="cstat-no" title="statement not covered" >attribute;</span>
3097
+ &nbsp;
3098
+ // TODO: check it is an id &amp; the entity exists (will throw due to FKs otherwise so not a big pbl in SQL)
3099
+ const relIdsToAdd = <span class="cstat-no" title="statement not covered" >toIds(cleanRelationData.set);</span>
3100
+ &nbsp;
3101
+ <span class="cstat-no" title="statement not covered" > await this.createQueryBuilder(target)</span>
3102
+ .where({ [attribute.joinColumn.referencedColumn]: id })
3103
+ .update({ [attribute.joinColumn.referencedColumn]: null })
3104
+ .transacting(trx)
3105
+ .execute();
3106
+ &nbsp;
3107
+ <span class="cstat-no" title="statement not covered" > await this.createQueryBuilder(target)</span>
3108
+ .update({ [attribute.joinColumn.referencedColumn]: id })
3109
+ // NOTE: works if it is an array or a single id
3110
+ .where({ id: relIdsToAdd })
3111
+ .transacting(trx)
3112
+ .execute();
3113
+ }
3114
+ &nbsp;
3115
+ <span class="cstat-no" title="statement not covered" > if (attribute.joinTable) {</span>
3116
+ // need to set the column on the target
3117
+ &nbsp;
3118
+ const { joinTable } = <span class="cstat-no" title="statement not covered" >attribute;</span>
3119
+ const { joinColumn, inverseJoinColumn, orderColumnName, inverseOrderColumnName } =
3120
+ <span class="cstat-no" title="statement not covered" > joinTable;</span>
3121
+ &nbsp;
3122
+ const relsToAdd = <span class="cstat-no" title="statement not covered" >cleanRelationData.set || cleanRelationData.connect;</span>
3123
+ const relIdsToadd = <span class="cstat-no" title="statement not covered" >toIds(relsToAdd);</span>
3124
+ &nbsp;
3125
+ <span class="cstat-no" title="statement not covered" > if (isBidirectional(attribute) &amp;&amp; isOneToAny(attribute)) {</span>
3126
+ <span class="cstat-no" title="statement not covered" > await deletePreviousOneToAnyRelations({</span>
3127
+ id,
3128
+ attribute,
3129
+ relIdsToadd,
3130
+ db,
3131
+ transaction: trx,
3132
+ });
3133
+ }
3134
+ &nbsp;
3135
+ // prepare new relations to insert
3136
+ const insert = <span class="cstat-no" title="statement not covered" >uniqBy('id', relsToAdd).map(<span class="fstat-no" title="function not covered" >(d</span>ata) =&gt; {</span>
3137
+ <span class="cstat-no" title="statement not covered" > return {</span>
3138
+ [joinColumn.name]: id,
3139
+ [inverseJoinColumn.name]: data.id,
3140
+ ...(joinTable.on || {}),
3141
+ ...(data.__pivot || {}),
3142
+ };
3143
+ });
3144
+ &nbsp;
3145
+ // add order value
3146
+ <span class="cstat-no" title="statement not covered" > if (cleanRelationData.set &amp;&amp; hasOrderColumn(attribute)) {</span>
3147
+ <span class="cstat-no" title="statement not covered" > insert.forEach(<span class="fstat-no" title="function not covered" >(d</span>ata, idx) =&gt; {</span>
3148
+ <span class="cstat-no" title="statement not covered" > data[orderColumnName] = idx + 1;</span>
3149
+ });
3150
+ } else <span class="cstat-no" title="statement not covered" >if (cleanRelationData.connect &amp;&amp; hasOrderColumn(attribute)) {</span>
3151
+ // use position attributes to calculate order
3152
+ const orderMap = <span class="cstat-no" title="statement not covered" >relationsOrderer(</span>
3153
+ [],
3154
+ inverseJoinColumn.name,
3155
+ joinTable.orderColumnName,
3156
+ true // Always make an strict connect when inserting
3157
+ )
3158
+ .connect(relsToAdd)
3159
+ .get()
3160
+ // set the order based on the order of the ids
3161
+ .reduce(<span class="fstat-no" title="function not covered" >(a</span>cc, rel, idx) =&gt; (<span class="cstat-no" title="statement not covered" >{ ...acc, [rel.id]: idx })</span>, {});
3162
+ &nbsp;
3163
+ <span class="cstat-no" title="statement not covered" > insert.forEach(<span class="fstat-no" title="function not covered" >(r</span>ow) =&gt; {</span>
3164
+ <span class="cstat-no" title="statement not covered" > row[orderColumnName] = orderMap[row[inverseJoinColumn.name]];</span>
3165
+ });
3166
+ }
3167
+ &nbsp;
3168
+ // add inv_order value
3169
+ <span class="cstat-no" title="statement not covered" > if (hasInverseOrderColumn(attribute)) {</span>
3170
+ const maxResults = <span class="cstat-no" title="statement not covered" >await db</span>
3171
+ .getConnection()
3172
+ .select(inverseJoinColumn.name)
3173
+ .max(inverseOrderColumnName, { as: 'max' })
3174
+ .whereIn(inverseJoinColumn.name, relIdsToadd)
3175
+ .where(joinTable.on || {})
3176
+ .groupBy(inverseJoinColumn.name)
3177
+ .from(joinTable.name)
3178
+ .transacting(trx);
3179
+ &nbsp;
3180
+ const maxMap = <span class="cstat-no" title="statement not covered" >maxResults.reduce(</span>
3181
+ <span class="fstat-no" title="function not covered" > (a</span>cc, res) =&gt; <span class="cstat-no" title="statement not covered" >Object.assign(acc, { [res[inverseJoinColumn.name]]: res.max }),</span>
3182
+ {}
3183
+ );
3184
+ &nbsp;
3185
+ <span class="cstat-no" title="statement not covered" > insert.forEach(<span class="fstat-no" title="function not covered" >(r</span>el) =&gt; {</span>
3186
+ <span class="cstat-no" title="statement not covered" > rel[inverseOrderColumnName] = (maxMap[rel[inverseJoinColumn.name]] || 0) + 1;</span>
3187
+ });
3188
+ }
3189
+ &nbsp;
3190
+ <span class="cstat-no" title="statement not covered" > if (insert.length === 0) {</span>
3191
+ <span class="cstat-no" title="statement not covered" > continue;</span>
3192
+ }
3193
+ &nbsp;
3194
+ // insert new relations
3195
+ <span class="cstat-no" title="statement not covered" > await this.createQueryBuilder(joinTable.name).insert(insert).transacting(trx).execute();</span>
3196
+ }
3197
+ }
3198
+ },
3199
+ &nbsp;
3200
+ /**
3201
+ * Updates relations of an existing entity
3202
+ *
3203
+ * @param {EntityManager} em - entity manager instance
3204
+ * @param {Metadata} metadata - model metadta
3205
+ * @param {ID} id - entity ID
3206
+ * @param {object} data - data received for creation
3207
+ */
3208
+ // TODO: check relation exists (handled by FKs except for polymorphics)
3209
+ <span class="fstat-no" title="function not covered" > as</span>ync updateRelations(uid, id, data, { transaction: trx }) {
3210
+ const { attributes } = <span class="cstat-no" title="statement not covered" >db.metadata.get(uid);</span>
3211
+ &nbsp;
3212
+ <span class="cstat-no" title="statement not covered" > for (const attributeName of Object.keys(attributes)) {</span>
3213
+ const attribute = <span class="cstat-no" title="statement not covered" >attributes[attributeName];</span>
3214
+ &nbsp;
3215
+ <span class="cstat-no" title="statement not covered" > if (attribute.type !== 'relation' || !has(attributeName, data)) {</span>
3216
+ <span class="cstat-no" title="statement not covered" > continue;</span>
3217
+ }
3218
+ const cleanRelationData = <span class="cstat-no" title="statement not covered" >toAssocs(data[attributeName]);</span>
3219
+ &nbsp;
3220
+ <span class="cstat-no" title="statement not covered" > if (attribute.relation === 'morphOne' || attribute.relation === 'morphMany') {</span>
3221
+ const { target, morphBy } = <span class="cstat-no" title="statement not covered" >attribute;</span>
3222
+ &nbsp;
3223
+ const targetAttribute = <span class="cstat-no" title="statement not covered" >db.metadata.get(target).attributes[morphBy];</span>
3224
+ &nbsp;
3225
+ <span class="cstat-no" title="statement not covered" > if (targetAttribute.relation === 'morphToOne') {</span>
3226
+ // set columns
3227
+ const { idColumn, typeColumn } = <span class="cstat-no" title="statement not covered" >targetAttribute.morphColumn;</span>
3228
+ &nbsp;
3229
+ // update instead of deleting because the relation is directly on the entity table
3230
+ // and not in a join table
3231
+ <span class="cstat-no" title="statement not covered" > await this.createQueryBuilder(target)</span>
3232
+ .update({ [idColumn.name]: null, [typeColumn.name]: null })
3233
+ .where({ [idColumn.name]: id, [typeColumn.name]: uid })
3234
+ .transacting(trx)
3235
+ .execute();
3236
+ &nbsp;
3237
+ <span class="cstat-no" title="statement not covered" > if (!isNull(cleanRelationData.set)) {</span>
3238
+ const relId = <span class="cstat-no" title="statement not covered" >toIds(cleanRelationData.set[0]);</span>
3239
+ <span class="cstat-no" title="statement not covered" > await this.createQueryBuilder(target)</span>
3240
+ .update({ [idColumn.name]: id, [typeColumn.name]: uid })
3241
+ .where({ id: relId })
3242
+ .transacting(trx)
3243
+ .execute();
3244
+ }
3245
+ } else <span class="cstat-no" title="statement not covered" >if (targetAttribute.relation === 'morphToMany') {</span>
3246
+ const { joinTable } = <span class="cstat-no" title="statement not covered" >targetAttribute;</span>
3247
+ const { joinColumn, morphColumn } = <span class="cstat-no" title="statement not covered" >joinTable;</span>
3248
+ &nbsp;
3249
+ const { idColumn, typeColumn } = <span class="cstat-no" title="statement not covered" >morphColumn;</span>
3250
+ &nbsp;
3251
+ <span class="cstat-no" title="statement not covered" > await this.createQueryBuilder(joinTable.name)</span>
3252
+ .delete()
3253
+ .where({
3254
+ [idColumn.name]: id,
3255
+ [typeColumn.name]: uid,
3256
+ ...(joinTable.on || {}),
3257
+ field: attributeName,
3258
+ })
3259
+ .transacting(trx)
3260
+ .execute();
3261
+ &nbsp;
3262
+ <span class="cstat-no" title="statement not covered" > if (isEmpty(cleanRelationData.set)) {</span>
3263
+ <span class="cstat-no" title="statement not covered" > continue;</span>
3264
+ }
3265
+ &nbsp;
3266
+ const rows = <span class="cstat-no" title="statement not covered" >cleanRelationData.set.map(<span class="fstat-no" title="function not covered" >(d</span>ata, idx) =&gt; (<span class="cstat-no" title="statement not covered" >{</span></span>
3267
+ [joinColumn.name]: data.id,
3268
+ [idColumn.name]: id,
3269
+ [typeColumn.name]: uid,
3270
+ ...(joinTable.on || {}),
3271
+ ...(data.__pivot || {}),
3272
+ order: idx + 1,
3273
+ field: attributeName,
3274
+ }));
3275
+ &nbsp;
3276
+ <span class="cstat-no" title="statement not covered" > await this.createQueryBuilder(joinTable.name).insert(rows).transacting(trx).execute();</span>
3277
+ }
3278
+ &nbsp;
3279
+ <span class="cstat-no" title="statement not covered" > continue;</span>
3280
+ }
3281
+ &nbsp;
3282
+ <span class="cstat-no" title="statement not covered" > if (attribute.relation === 'morphToOne') {</span>
3283
+ // handled on the entry itself
3284
+ <span class="cstat-no" title="statement not covered" > continue;</span>
3285
+ }
3286
+ &nbsp;
3287
+ <span class="cstat-no" title="statement not covered" > if (attribute.relation === 'morphToMany') {</span>
3288
+ const { joinTable } = <span class="cstat-no" title="statement not covered" >attribute;</span>
3289
+ const { joinColumn, morphColumn } = <span class="cstat-no" title="statement not covered" >joinTable;</span>
3290
+ &nbsp;
3291
+ const { idColumn, typeColumn, typeField = <span class="branch-0 cbranch-no" title="branch not covered" >'__type' </span>} = <span class="cstat-no" title="statement not covered" >morphColumn;</span>
3292
+ &nbsp;
3293
+ <span class="cstat-no" title="statement not covered" > await this.createQueryBuilder(joinTable.name)</span>
3294
+ .delete()
3295
+ .where({
3296
+ [joinColumn.name]: id,
3297
+ ...(joinTable.on || {}),
3298
+ })
3299
+ .transacting(trx)
3300
+ .execute();
3301
+ &nbsp;
3302
+ <span class="cstat-no" title="statement not covered" > if (isEmpty(cleanRelationData.set)) {</span>
3303
+ <span class="cstat-no" title="statement not covered" > continue;</span>
3304
+ }
3305
+ &nbsp;
3306
+ const rows = <span class="cstat-no" title="statement not covered" >cleanRelationData.set.map(<span class="fstat-no" title="function not covered" >(d</span>ata, idx) =&gt; (<span class="cstat-no" title="statement not covered" >{</span></span>
3307
+ [joinColumn.name]: id,
3308
+ [idColumn.name]: data.id,
3309
+ [typeColumn.name]: data[typeField],
3310
+ ...(joinTable.on || {}),
3311
+ ...(data.__pivot || {}),
3312
+ order: idx + 1,
3313
+ }));
3314
+ &nbsp;
3315
+ // delete previous relations
3316
+ <span class="cstat-no" title="statement not covered" > await deleteRelatedMorphOneRelationsAfterMorphToManyUpdate(rows, {</span>
3317
+ uid,
3318
+ attributeName,
3319
+ joinTable,
3320
+ db,
3321
+ transaction: trx,
3322
+ });
3323
+ &nbsp;
3324
+ <span class="cstat-no" title="statement not covered" > await this.createQueryBuilder(joinTable.name).insert(rows).transacting(trx).execute();</span>
3325
+ &nbsp;
3326
+ <span class="cstat-no" title="statement not covered" > continue;</span>
3327
+ }
3328
+ &nbsp;
3329
+ <span class="cstat-no" title="statement not covered" > if (attribute.joinColumn &amp;&amp; attribute.owner) {</span>
3330
+ // handled in the row itself
3331
+ <span class="cstat-no" title="statement not covered" > continue;</span>
3332
+ }
3333
+ &nbsp;
3334
+ // oneToOne oneToMany on the non owning side.
3335
+ // Since it is a join column no need to remove previous relations
3336
+ <span class="cstat-no" title="statement not covered" > if (attribute.joinColumn &amp;&amp; !attribute.owner) {</span>
3337
+ // need to set the column on the target
3338
+ const { target } = <span class="cstat-no" title="statement not covered" >attribute;</span>
3339
+ &nbsp;
3340
+ <span class="cstat-no" title="statement not covered" > await this.createQueryBuilder(target)</span>
3341
+ .where({ [attribute.joinColumn.referencedColumn]: id })
3342
+ .update({ [attribute.joinColumn.referencedColumn]: null })
3343
+ .transacting(trx)
3344
+ .execute();
3345
+ &nbsp;
3346
+ <span class="cstat-no" title="statement not covered" > if (!isNull(cleanRelationData.set)) {</span>
3347
+ const relIdsToAdd = <span class="cstat-no" title="statement not covered" >toIds(cleanRelationData.set);</span>
3348
+ <span class="cstat-no" title="statement not covered" > await this.createQueryBuilder(target)</span>
3349
+ .where({ id: relIdsToAdd })
3350
+ .update({ [attribute.joinColumn.referencedColumn]: id })
3351
+ .transacting(trx)
3352
+ .execute();
3353
+ }
3354
+ }
3355
+ &nbsp;
3356
+ <span class="cstat-no" title="statement not covered" > if (attribute.joinTable) {</span>
3357
+ const { joinTable } = <span class="cstat-no" title="statement not covered" >attribute;</span>
3358
+ const { joinColumn, inverseJoinColumn, orderColumnName, inverseOrderColumnName } =
3359
+ <span class="cstat-no" title="statement not covered" > joinTable;</span>
3360
+ const select = <span class="cstat-no" title="statement not covered" >[joinColumn.name, inverseJoinColumn.name];</span>
3361
+ <span class="cstat-no" title="statement not covered" > if (hasOrderColumn(attribute)) {</span>
3362
+ <span class="cstat-no" title="statement not covered" > select.push(orderColumnName);</span>
3363
+ }
3364
+ <span class="cstat-no" title="statement not covered" > if (hasInverseOrderColumn(attribute)) {</span>
3365
+ <span class="cstat-no" title="statement not covered" > select.push(inverseOrderColumnName);</span>
3366
+ }
3367
+ &nbsp;
3368
+ // only delete relations
3369
+ <span class="cstat-no" title="statement not covered" > if (isNull(cleanRelationData.set)) {</span>
3370
+ <span class="cstat-no" title="statement not covered" > await deleteRelations({ id, attribute, db, relIdsToDelete: 'all', transaction: trx });</span>
3371
+ } else {
3372
+ const isPartialUpdate = <span class="cstat-no" title="statement not covered" >!has('set', cleanRelationData);</span>
3373
+ let relIdsToaddOrMove;
3374
+ &nbsp;
3375
+ <span class="cstat-no" title="statement not covered" > if (isPartialUpdate) {</span>
3376
+ <span class="cstat-no" title="statement not covered" > if (isAnyToOne(attribute)) {</span>
3377
+ <span class="cstat-no" title="statement not covered" > cleanRelationData.connect = cleanRelationData.connect.slice(-1);</span>
3378
+ }
3379
+ <span class="cstat-no" title="statement not covered" > relIdsToaddOrMove = toIds(cleanRelationData.connect);</span>
3380
+ const relIdsToDelete = <span class="cstat-no" title="statement not covered" >toIds(</span>
3381
+ differenceWith(isEqual, cleanRelationData.disconnect, cleanRelationData.connect)
3382
+ );
3383
+ &nbsp;
3384
+ <span class="cstat-no" title="statement not covered" > if (!isEmpty(relIdsToDelete)) {</span>
3385
+ <span class="cstat-no" title="statement not covered" > await deleteRelations({ id, attribute, db, relIdsToDelete, transaction: trx });</span>
3386
+ }
3387
+ &nbsp;
3388
+ <span class="cstat-no" title="statement not covered" > if (isEmpty(cleanRelationData.connect)) {</span>
3389
+ <span class="cstat-no" title="statement not covered" > continue;</span>
3390
+ }
3391
+ &nbsp;
3392
+ // Fetch current relations to handle ordering
3393
+ let currentMovingRels;
3394
+ <span class="cstat-no" title="statement not covered" > if (hasOrderColumn(attribute) || hasInverseOrderColumn(attribute)) {</span>
3395
+ <span class="cstat-no" title="statement not covered" > currentMovingRels = await this.createQueryBuilder(joinTable.name)</span>
3396
+ .select(select)
3397
+ .where({
3398
+ [joinColumn.name]: id,
3399
+ [inverseJoinColumn.name]: { $in: relIdsToaddOrMove },
3400
+ })
3401
+ .where(joinTable.on || {})
3402
+ .transacting(trx)
3403
+ .execute();
3404
+ }
3405
+ &nbsp;
3406
+ // prepare relations to insert
3407
+ const insert = <span class="cstat-no" title="statement not covered" >uniqBy('id', cleanRelationData.connect).map(<span class="fstat-no" title="function not covered" >(r</span>elToAdd) =&gt; (<span class="cstat-no" title="statement not covered" >{</span></span>
3408
+ [joinColumn.name]: id,
3409
+ [inverseJoinColumn.name]: relToAdd.id,
3410
+ ...(joinTable.on || {}),
3411
+ ...(relToAdd.__pivot || {}),
3412
+ }));
3413
+ &nbsp;
3414
+ <span class="cstat-no" title="statement not covered" > if (hasOrderColumn(attribute)) {</span>
3415
+ // Get all adjacent relations and the one with the highest order
3416
+ const adjacentRelations = <span class="cstat-no" title="statement not covered" >await this.createQueryBuilder(joinTable.name)</span>
3417
+ .where({
3418
+ $or: [
3419
+ {
3420
+ [joinColumn.name]: id,
3421
+ [inverseJoinColumn.name]: {
3422
+ $in: compact(
3423
+ cleanRelationData.connect.map(
3424
+ <span class="fstat-no" title="function not covered" > (r</span>) =&gt; <span class="cstat-no" title="statement not covered" >r.position?.after || r.position?.before</span>
3425
+ )
3426
+ ),
3427
+ },
3428
+ },
3429
+ {
3430
+ [joinColumn.name]: id,
3431
+ [orderColumnName]: this.createQueryBuilder(joinTable.name)
3432
+ .max(orderColumnName)
3433
+ .where({ [joinColumn.name]: id })
3434
+ .where(joinTable.on || {})
3435
+ .transacting(trx)
3436
+ .getKnexQuery(),
3437
+ },
3438
+ ],
3439
+ })
3440
+ .where(joinTable.on || {})
3441
+ .transacting(trx)
3442
+ .execute();
3443
+ &nbsp;
3444
+ const orderMap = <span class="cstat-no" title="statement not covered" >relationsOrderer(</span>
3445
+ adjacentRelations,
3446
+ inverseJoinColumn.name,
3447
+ joinTable.orderColumnName,
3448
+ cleanRelationData.options.strict
3449
+ )
3450
+ .connect(cleanRelationData.connect)
3451
+ .getOrderMap();
3452
+ &nbsp;
3453
+ <span class="cstat-no" title="statement not covered" > insert.forEach(<span class="fstat-no" title="function not covered" >(r</span>ow) =&gt; {</span>
3454
+ <span class="cstat-no" title="statement not covered" > row[orderColumnName] = orderMap[row[inverseJoinColumn.name]];</span>
3455
+ });
3456
+ }
3457
+ &nbsp;
3458
+ // add inv order value
3459
+ <span class="cstat-no" title="statement not covered" > if (hasInverseOrderColumn(attribute)) {</span>
3460
+ const nonExistingRelsIds = <span class="cstat-no" title="statement not covered" >difference(</span>
3461
+ relIdsToaddOrMove,
3462
+ map(inverseJoinColumn.name, currentMovingRels)
3463
+ );
3464
+ &nbsp;
3465
+ const maxResults = <span class="cstat-no" title="statement not covered" >await db</span>
3466
+ .getConnection()
3467
+ .select(inverseJoinColumn.name)
3468
+ .max(inverseOrderColumnName, { as: 'max' })
3469
+ .whereIn(inverseJoinColumn.name, nonExistingRelsIds)
3470
+ .where(joinTable.on || {})
3471
+ .groupBy(inverseJoinColumn.name)
3472
+ .from(joinTable.name)
3473
+ .transacting(trx);
3474
+ &nbsp;
3475
+ const maxMap = <span class="cstat-no" title="statement not covered" >maxResults.reduce(</span>
3476
+ <span class="fstat-no" title="function not covered" > (a</span>cc, res) =&gt; <span class="cstat-no" title="statement not covered" >Object.assign(acc, { [res[inverseJoinColumn.name]]: res.max }),</span>
3477
+ {}
3478
+ );
3479
+ &nbsp;
3480
+ <span class="cstat-no" title="statement not covered" > insert.forEach(<span class="fstat-no" title="function not covered" >(r</span>ow) =&gt; {</span>
3481
+ <span class="cstat-no" title="statement not covered" > row[inverseOrderColumnName] = (maxMap[row[inverseJoinColumn.name]] || 0) + 1;</span>
3482
+ });
3483
+ }
3484
+ &nbsp;
3485
+ // insert rows
3486
+ const query = <span class="cstat-no" title="statement not covered" >this.createQueryBuilder(joinTable.name)</span>
3487
+ .insert(insert)
3488
+ .onConflict(joinTable.pivotColumns)
3489
+ .transacting(trx);
3490
+ &nbsp;
3491
+ <span class="cstat-no" title="statement not covered" > if (hasOrderColumn(attribute)) {</span>
3492
+ <span class="cstat-no" title="statement not covered" > query.merge([orderColumnName]);</span>
3493
+ } else {
3494
+ <span class="cstat-no" title="statement not covered" > query.ignore();</span>
3495
+ }
3496
+ &nbsp;
3497
+ <span class="cstat-no" title="statement not covered" > await query.execute();</span>
3498
+ &nbsp;
3499
+ // remove gap between orders
3500
+ <span class="cstat-no" title="statement not covered" > await cleanOrderColumns({ attribute, db, id, transaction: trx });</span>
3501
+ } else {
3502
+ <span class="cstat-no" title="statement not covered" > if (isAnyToOne(attribute)) {</span>
3503
+ <span class="cstat-no" title="statement not covered" > cleanRelationData.set = cleanRelationData.set.slice(-1);</span>
3504
+ }
3505
+ // overwrite all relations
3506
+ <span class="cstat-no" title="statement not covered" > relIdsToaddOrMove = toIds(cleanRelationData.set);</span>
3507
+ <span class="cstat-no" title="statement not covered" > await deleteRelations({</span>
3508
+ id,
3509
+ attribute,
3510
+ db,
3511
+ relIdsToDelete: 'all',
3512
+ relIdsToNotDelete: relIdsToaddOrMove,
3513
+ transaction: trx,
3514
+ });
3515
+ &nbsp;
3516
+ <span class="cstat-no" title="statement not covered" > if (isEmpty(cleanRelationData.set)) {</span>
3517
+ <span class="cstat-no" title="statement not covered" > continue;</span>
3518
+ }
3519
+ &nbsp;
3520
+ const insert = <span class="cstat-no" title="statement not covered" >uniqBy('id', cleanRelationData.set).map(<span class="fstat-no" title="function not covered" >(r</span>elToAdd) =&gt; (<span class="cstat-no" title="statement not covered" >{</span></span>
3521
+ [joinColumn.name]: id,
3522
+ [inverseJoinColumn.name]: relToAdd.id,
3523
+ ...(joinTable.on || {}),
3524
+ ...(relToAdd.__pivot || {}),
3525
+ }));
3526
+ &nbsp;
3527
+ // add order value
3528
+ <span class="cstat-no" title="statement not covered" > if (hasOrderColumn(attribute)) {</span>
3529
+ <span class="cstat-no" title="statement not covered" > insert.forEach(<span class="fstat-no" title="function not covered" >(r</span>ow, idx) =&gt; {</span>
3530
+ <span class="cstat-no" title="statement not covered" > row[orderColumnName] = idx + 1;</span>
3531
+ });
3532
+ }
3533
+ &nbsp;
3534
+ // add inv order value
3535
+ <span class="cstat-no" title="statement not covered" > if (hasInverseOrderColumn(attribute)) {</span>
3536
+ const existingRels = <span class="cstat-no" title="statement not covered" >await this.createQueryBuilder(joinTable.name)</span>
3537
+ .select(inverseJoinColumn.name)
3538
+ .where({
3539
+ [joinColumn.name]: id,
3540
+ [inverseJoinColumn.name]: { $in: relIdsToaddOrMove },
3541
+ })
3542
+ .where(joinTable.on || {})
3543
+ .transacting(trx)
3544
+ .execute();
3545
+ &nbsp;
3546
+ const nonExistingRelsIds = <span class="cstat-no" title="statement not covered" >difference(</span>
3547
+ relIdsToaddOrMove,
3548
+ map(inverseJoinColumn.name, existingRels)
3549
+ );
3550
+ &nbsp;
3551
+ const maxResults = <span class="cstat-no" title="statement not covered" >await db</span>
3552
+ .getConnection()
3553
+ .select(inverseJoinColumn.name)
3554
+ .max(inverseOrderColumnName, { as: 'max' })
3555
+ .whereIn(inverseJoinColumn.name, nonExistingRelsIds)
3556
+ .where(joinTable.on || {})
3557
+ .groupBy(inverseJoinColumn.name)
3558
+ .from(joinTable.name)
3559
+ .transacting(trx);
3560
+ &nbsp;
3561
+ const maxMap = <span class="cstat-no" title="statement not covered" >maxResults.reduce(</span>
3562
+ <span class="fstat-no" title="function not covered" > (a</span>cc, res) =&gt; <span class="cstat-no" title="statement not covered" >Object.assign(acc, { [res[inverseJoinColumn.name]]: res.max }),</span>
3563
+ {}
3564
+ );
3565
+ &nbsp;
3566
+ <span class="cstat-no" title="statement not covered" > insert.forEach(<span class="fstat-no" title="function not covered" >(r</span>ow) =&gt; {</span>
3567
+ <span class="cstat-no" title="statement not covered" > row[inverseOrderColumnName] = (maxMap[row[inverseJoinColumn.name]] || 0) + 1;</span>
3568
+ });
3569
+ }
3570
+ &nbsp;
3571
+ // insert rows
3572
+ const query = <span class="cstat-no" title="statement not covered" >this.createQueryBuilder(joinTable.name)</span>
3573
+ .insert(insert)
3574
+ .onConflict(joinTable.pivotColumns)
3575
+ .transacting(trx);
3576
+ &nbsp;
3577
+ <span class="cstat-no" title="statement not covered" > if (hasOrderColumn(attribute)) {</span>
3578
+ <span class="cstat-no" title="statement not covered" > query.merge([orderColumnName]);</span>
3579
+ } else {
3580
+ <span class="cstat-no" title="statement not covered" > query.ignore();</span>
3581
+ }
3582
+ &nbsp;
3583
+ <span class="cstat-no" title="statement not covered" > await query.execute();</span>
3584
+ }
3585
+ &nbsp;
3586
+ // Delete the previous relations for oneToAny relations
3587
+ <span class="cstat-no" title="statement not covered" > if (isBidirectional(attribute) &amp;&amp; isOneToAny(attribute)) {</span>
3588
+ <span class="cstat-no" title="statement not covered" > await deletePreviousOneToAnyRelations({</span>
3589
+ id,
3590
+ attribute,
3591
+ relIdsToadd: relIdsToaddOrMove,
3592
+ db,
3593
+ transaction: trx,
3594
+ });
3595
+ }
3596
+ &nbsp;
3597
+ // Delete the previous relations for anyToOne relations
3598
+ <span class="cstat-no" title="statement not covered" > if (isAnyToOne(attribute)) {</span>
3599
+ <span class="cstat-no" title="statement not covered" > await deletePreviousAnyToOneRelations({</span>
3600
+ id,
3601
+ attribute,
3602
+ relIdToadd: relIdsToaddOrMove[0],
3603
+ db,
3604
+ transaction: trx,
3605
+ });
3606
+ }
3607
+ }
3608
+ }
3609
+ }
3610
+ },
3611
+ &nbsp;
3612
+ /**
3613
+ * Delete relational associations of an existing entity
3614
+ * This removes associations but doesn't do cascade deletions for components for example. This will be handled on the entity service layer instead
3615
+ * NOTE: Most of the deletion should be handled by ON DELETE CASCADE for dialects that have FKs
3616
+ *
3617
+ * @param {EntityManager} em - entity manager instance
3618
+ * @param {Metadata} metadata - model metadta
3619
+ * @param {ID} id - entity ID
3620
+ */
3621
+ <span class="fstat-no" title="function not covered" > as</span>ync deleteRelations(uid, id, { transaction: trx }) {
3622
+ const { attributes } = <span class="cstat-no" title="statement not covered" >db.metadata.get(uid);</span>
3623
+ &nbsp;
3624
+ <span class="cstat-no" title="statement not covered" > for (const attributeName of Object.keys(attributes)) {</span>
3625
+ const attribute = <span class="cstat-no" title="statement not covered" >attributes[attributeName];</span>
3626
+ &nbsp;
3627
+ <span class="cstat-no" title="statement not covered" > if (attribute.type !== 'relation') {</span>
3628
+ <span class="cstat-no" title="statement not covered" > continue;</span>
3629
+ }
3630
+ &nbsp;
3631
+ /*
3632
+ if morphOne | morphMany
3633
+ if morphBy is morphToOne
3634
+ set null
3635
+ if morphBy is morphToOne
3636
+ delete links
3637
+ */
3638
+ <span class="cstat-no" title="statement not covered" > if (attribute.relation === 'morphOne' || attribute.relation === 'morphMany') {</span>
3639
+ const { target, morphBy } = <span class="cstat-no" title="statement not covered" >attribute;</span>
3640
+ &nbsp;
3641
+ const targetAttribute = <span class="cstat-no" title="statement not covered" >db.metadata.get(target).attributes[morphBy];</span>
3642
+ &nbsp;
3643
+ <span class="cstat-no" title="statement not covered" > if (targetAttribute.relation === 'morphToOne') {</span>
3644
+ // set columns
3645
+ const { idColumn, typeColumn } = <span class="cstat-no" title="statement not covered" >targetAttribute.morphColumn;</span>
3646
+ &nbsp;
3647
+ <span class="cstat-no" title="statement not covered" > await this.createQueryBuilder(target)</span>
3648
+ .update({ [idColumn.name]: null, [typeColumn.name]: null })
3649
+ .where({ [idColumn.name]: id, [typeColumn.name]: uid })
3650
+ .transacting(trx)
3651
+ .execute();
3652
+ } else <span class="cstat-no" title="statement not covered" >if (targetAttribute.relation === 'morphToMany') {</span>
3653
+ const { joinTable } = <span class="cstat-no" title="statement not covered" >targetAttribute;</span>
3654
+ const { morphColumn } = <span class="cstat-no" title="statement not covered" >joinTable;</span>
3655
+ &nbsp;
3656
+ const { idColumn, typeColumn } = <span class="cstat-no" title="statement not covered" >morphColumn;</span>
3657
+ &nbsp;
3658
+ <span class="cstat-no" title="statement not covered" > await this.createQueryBuilder(joinTable.name)</span>
3659
+ .delete()
3660
+ .where({
3661
+ [idColumn.name]: id,
3662
+ [typeColumn.name]: uid,
3663
+ ...(joinTable.on || {}),
3664
+ field: attributeName,
3665
+ })
3666
+ .transacting(trx)
3667
+ .execute();
3668
+ }
3669
+ &nbsp;
3670
+ <span class="cstat-no" title="statement not covered" > continue;</span>
3671
+ }
3672
+ &nbsp;
3673
+ /*
3674
+ if morphToOne
3675
+ nothing to do
3676
+ */
3677
+ <span class="cstat-no" title="statement not covered" > if (attribute.relation === 'morphToOne') {</span>
3678
+ // do nothing
3679
+ }
3680
+ &nbsp;
3681
+ /*
3682
+ if morphToMany
3683
+ delete links
3684
+ */
3685
+ <span class="cstat-no" title="statement not covered" > if (attribute.relation === 'morphToMany') {</span>
3686
+ const { joinTable } = <span class="cstat-no" title="statement not covered" >attribute;</span>
3687
+ const { joinColumn } = <span class="cstat-no" title="statement not covered" >joinTable;</span>
3688
+ &nbsp;
3689
+ <span class="cstat-no" title="statement not covered" > await this.createQueryBuilder(joinTable.name)</span>
3690
+ .delete()
3691
+ .where({
3692
+ [joinColumn.name]: id,
3693
+ ...(joinTable.on || {}),
3694
+ })
3695
+ .transacting(trx)
3696
+ .execute();
3697
+ &nbsp;
3698
+ <span class="cstat-no" title="statement not covered" > continue;</span>
3699
+ }
3700
+ &nbsp;
3701
+ // do not need to delete links when using foreign keys
3702
+ <span class="cstat-no" title="statement not covered" > if (db.dialect.usesForeignKeys()) {</span>
3703
+ <span class="cstat-no" title="statement not covered" > return;</span>
3704
+ }
3705
+ &nbsp;
3706
+ // NOTE: we do not remove existing associations with the target as it should handled by unique FKs instead
3707
+ <span class="cstat-no" title="statement not covered" > if (attribute.joinColumn &amp;&amp; attribute.owner) {</span>
3708
+ // nothing to do =&gt; relation already added on the table
3709
+ <span class="cstat-no" title="statement not covered" > continue;</span>
3710
+ }
3711
+ &nbsp;
3712
+ // oneToOne oneToMany on the non owning side.
3713
+ <span class="cstat-no" title="statement not covered" > if (attribute.joinColumn &amp;&amp; !attribute.owner) {</span>
3714
+ // need to set the column on the target
3715
+ const { target } = <span class="cstat-no" title="statement not covered" >attribute;</span>
3716
+ &nbsp;
3717
+ <span class="cstat-no" title="statement not covered" > await this.createQueryBuilder(target)</span>
3718
+ .where({ [attribute.joinColumn.referencedColumn]: id })
3719
+ .update({ [attribute.joinColumn.referencedColumn]: null })
3720
+ .transacting(trx)
3721
+ .execute();
3722
+ }
3723
+ &nbsp;
3724
+ <span class="cstat-no" title="statement not covered" > if (attribute.joinTable) {</span>
3725
+ <span class="cstat-no" title="statement not covered" > await deleteRelations({ id, attribute, db, relIdsToDelete: 'all', transaction: trx });</span>
3726
+ }
3727
+ }
3728
+ },
3729
+ &nbsp;
3730
+ // TODO: add lifecycle events
3731
+ <span class="fstat-no" title="function not covered" > as</span>ync populate(uid, entity, populate) {
3732
+ const entry = <span class="cstat-no" title="statement not covered" >await this.findOne(uid, {</span>
3733
+ select: ['id'],
3734
+ where: { id: entity.id },
3735
+ populate,
3736
+ });
3737
+ &nbsp;
3738
+ <span class="cstat-no" title="statement not covered" > return { ...entity, ...entry };</span>
3739
+ },
3740
+ &nbsp;
3741
+ // TODO: add lifecycle events
3742
+ <span class="fstat-no" title="function not covered" > as</span>ync load(uid, entity, fields, params) {
3743
+ const { attributes } = <span class="cstat-no" title="statement not covered" >db.metadata.get(uid);</span>
3744
+ &nbsp;
3745
+ const fieldsArr = <span class="cstat-no" title="statement not covered" >castArray(fields);</span>
3746
+ <span class="cstat-no" title="statement not covered" > fieldsArr.forEach(<span class="fstat-no" title="function not covered" >(f</span>ield) =&gt; {</span>
3747
+ const attribute = <span class="cstat-no" title="statement not covered" >attributes[field];</span>
3748
+ &nbsp;
3749
+ <span class="cstat-no" title="statement not covered" > if (!attribute || attribute.type !== 'relation') {</span>
3750
+ <span class="cstat-no" title="statement not covered" > throw new Error(`Invalid load. Expected ${field} to be a relational attribute`);</span>
3751
+ }
3752
+ });
3753
+ &nbsp;
3754
+ const entry = <span class="cstat-no" title="statement not covered" >await this.findOne(uid, {</span>
3755
+ select: ['id'],
3756
+ where: { id: entity.id },
3757
+ populate: fieldsArr.reduce(<span class="fstat-no" title="function not covered" >(a</span>cc, field) =&gt; {
3758
+ <span class="cstat-no" title="statement not covered" > acc[field] = params || true;</span>
3759
+ <span class="cstat-no" title="statement not covered" > return acc;</span>
3760
+ }, {}),
3761
+ });
3762
+ &nbsp;
3763
+ <span class="cstat-no" title="statement not covered" > if (!entry) {</span>
3764
+ <span class="cstat-no" title="statement not covered" > return null;</span>
3765
+ }
3766
+ &nbsp;
3767
+ <span class="cstat-no" title="statement not covered" > if (Array.isArray(fields)) {</span>
3768
+ <span class="cstat-no" title="statement not covered" > return pick(fields, entry);</span>
3769
+ }
3770
+ &nbsp;
3771
+ <span class="cstat-no" title="statement not covered" > return entry[fields];</span>
3772
+ },
3773
+ &nbsp;
3774
+ // cascading
3775
+ // aggregations
3776
+ // -&gt; avg
3777
+ // -&gt; min
3778
+ // -&gt; max
3779
+ // -&gt; grouping
3780
+ &nbsp;
3781
+ // formulas
3782
+ // custom queries
3783
+ &nbsp;
3784
+ // utilities
3785
+ // -&gt; map result
3786
+ // -&gt; map input
3787
+ &nbsp;
3788
+ // extra features
3789
+ // -&gt; virtuals
3790
+ // -&gt; private
3791
+ &nbsp;
3792
+ <span class="fstat-no" title="function not covered" > cr</span>eateQueryBuilder(uid) {
3793
+ <span class="cstat-no" title="statement not covered" > return createQueryBuilder(uid, db);</span>
3794
+ },
3795
+ &nbsp;
3796
+ <span class="fstat-no" title="function not covered" > ge</span>tRepository(uid) {
3797
+ <span class="cstat-no" title="statement not covered" > if (!repoMap[uid]) {</span>
3798
+ <span class="cstat-no" title="statement not covered" > repoMap[uid] = createRepository(uid, db);</span>
3799
+ }
3800
+ &nbsp;
3801
+ <span class="cstat-no" title="statement not covered" > return repoMap[uid];</span>
3802
+ },
3803
+ &nbsp;
3804
+ <span class="fstat-no" title="function not covered" > cl</span>earRepositories() {
3805
+ <span class="cstat-no" title="statement not covered" > repoMap.clear();</span>
3806
+ },
3807
+ };
3808
+ };
3809
+ &nbsp;
3810
+ module.exports = {
3811
+ createEntityManager,
3812
+ };
3813
+ &nbsp;</pre></td></tr></table></pre>
3814
+
3815
+ <div class='push'></div><!-- for sticky footer -->
3816
+ </div><!-- /wrapper -->
3817
+ <div class='footer quiet pad2 space-top1 center small'>
3818
+ Code coverage generated by
3819
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
3820
+ at 2023-03-15T08:52:46.420Z
3821
+ </div>
3822
+ <script src="../../prettify.js"></script>
3823
+ <script>
3824
+ window.onload = function () {
3825
+ prettyPrint();
3826
+ };
3827
+ </script>
3828
+ <script src="../../sorter.js"></script>
3829
+ <script src="../../block-navigation.js"></script>
3830
+ </body>
3831
+ </html>
3832
+