@lomray/react-mobx-manager 2.1.0-beta.2 → 2.1.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 (45) hide show
  1. package/.c8rc.json +11 -0
  2. package/.mocharc.json +11 -0
  3. package/.run/Run all.run.xml +14 -0
  4. package/README.md +1 -1
  5. package/__helpers__/root-hooks.ts +13 -0
  6. package/__helpers__/sinon-chai.ts +4 -0
  7. package/__tests__/manager-stream.ts +57 -0
  8. package/__tests__/wakeup.ts +32 -0
  9. package/coverage/lcov-report/base.css +224 -0
  10. package/coverage/lcov-report/block-navigation.js +87 -0
  11. package/coverage/lcov-report/favicon.png +0 -0
  12. package/coverage/lcov-report/index.html +176 -0
  13. package/coverage/lcov-report/prettify.css +1 -0
  14. package/coverage/lcov-report/prettify.js +2 -0
  15. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  16. package/coverage/lcov-report/sorter.js +196 -0
  17. package/coverage/lcov-report/src/context.tsx.html +367 -0
  18. package/coverage/lcov-report/src/events.ts.html +118 -0
  19. package/coverage/lcov-report/src/index.html +266 -0
  20. package/coverage/lcov-report/src/index.ts.html +124 -0
  21. package/coverage/lcov-report/src/manager-stream.ts.html +226 -0
  22. package/coverage/lcov-report/src/manager.ts.html +1834 -0
  23. package/coverage/lcov-report/src/on-change-listener.ts.html +169 -0
  24. package/coverage/lcov-report/src/plugins/dev-extension/index.html +131 -0
  25. package/coverage/lcov-report/src/plugins/dev-extension/index.ts.html +109 -0
  26. package/coverage/lcov-report/src/plugins/dev-extension/state-listener.ts.html +397 -0
  27. package/coverage/lcov-report/src/plugins/helpers.ts.html +514 -0
  28. package/coverage/lcov-report/src/plugins/index.html +116 -0
  29. package/coverage/lcov-report/src/plugins/vite/id-generator.ts.html +292 -0
  30. package/coverage/lcov-report/src/plugins/vite/index.html +131 -0
  31. package/coverage/lcov-report/src/plugins/vite/index.ts.html +178 -0
  32. package/coverage/lcov-report/src/storages/async-storage.ts.html +253 -0
  33. package/coverage/lcov-report/src/storages/index.html +131 -0
  34. package/coverage/lcov-report/src/storages/local-storage.ts.html +190 -0
  35. package/coverage/lcov-report/src/store-status.ts.html +109 -0
  36. package/coverage/lcov-report/src/suspense-query.ts.html +619 -0
  37. package/coverage/lcov-report/src/types.ts.html +499 -0
  38. package/coverage/lcov-report/src/wakeup.ts.html +121 -0
  39. package/coverage/lcov-report/src/with-stores.tsx.html +274 -0
  40. package/coverage/lcov.info +1849 -0
  41. package/coverage/tmp/coverage-1953-1701099463465-0.json +1 -0
  42. package/coverage/tmp/coverage-1966-1701099463425-0.json +1 -0
  43. package/coverage/tmp/coverage-1973-1701099463382-0.json +1 -0
  44. package/lib/suspense-query.d.ts +1 -1
  45. package/package.json +14 -1
@@ -0,0 +1,1834 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/manager.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../prettify.css" />
9
+ <link rel="stylesheet" href="../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../index.html">All files</a> / <a href="index.html">src</a> manager.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">0% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>0/583</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/1</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">0% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>0/1</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">0% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>0/583</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></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
650
+ <span class="cline-any cline-no">&nbsp;</span>
651
+ <span class="cline-any cline-no">&nbsp;</span>
652
+ <span class="cline-any cline-no">&nbsp;</span>
653
+ <span class="cline-any cline-no">&nbsp;</span>
654
+ <span class="cline-any cline-no">&nbsp;</span>
655
+ <span class="cline-any cline-no">&nbsp;</span>
656
+ <span class="cline-any cline-no">&nbsp;</span>
657
+ <span class="cline-any cline-no">&nbsp;</span>
658
+ <span class="cline-any cline-no">&nbsp;</span>
659
+ <span class="cline-any cline-no">&nbsp;</span>
660
+ <span class="cline-any cline-no">&nbsp;</span>
661
+ <span class="cline-any cline-no">&nbsp;</span>
662
+ <span class="cline-any cline-no">&nbsp;</span>
663
+ <span class="cline-any cline-no">&nbsp;</span>
664
+ <span class="cline-any cline-no">&nbsp;</span>
665
+ <span class="cline-any cline-no">&nbsp;</span>
666
+ <span class="cline-any cline-no">&nbsp;</span>
667
+ <span class="cline-any cline-no">&nbsp;</span>
668
+ <span class="cline-any cline-no">&nbsp;</span>
669
+ <span class="cline-any cline-no">&nbsp;</span>
670
+ <span class="cline-any cline-no">&nbsp;</span>
671
+ <span class="cline-any cline-no">&nbsp;</span>
672
+ <span class="cline-any cline-no">&nbsp;</span>
673
+ <span class="cline-any cline-no">&nbsp;</span>
674
+ <span class="cline-any cline-no">&nbsp;</span>
675
+ <span class="cline-any cline-no">&nbsp;</span>
676
+ <span class="cline-any cline-no">&nbsp;</span>
677
+ <span class="cline-any cline-no">&nbsp;</span>
678
+ <span class="cline-any cline-no">&nbsp;</span>
679
+ <span class="cline-any cline-no">&nbsp;</span>
680
+ <span class="cline-any cline-no">&nbsp;</span>
681
+ <span class="cline-any cline-no">&nbsp;</span>
682
+ <span class="cline-any cline-no">&nbsp;</span>
683
+ <span class="cline-any cline-no">&nbsp;</span>
684
+ <span class="cline-any cline-no">&nbsp;</span>
685
+ <span class="cline-any cline-no">&nbsp;</span>
686
+ <span class="cline-any cline-no">&nbsp;</span>
687
+ <span class="cline-any cline-no">&nbsp;</span>
688
+ <span class="cline-any cline-no">&nbsp;</span>
689
+ <span class="cline-any cline-no">&nbsp;</span>
690
+ <span class="cline-any cline-no">&nbsp;</span>
691
+ <span class="cline-any cline-no">&nbsp;</span>
692
+ <span class="cline-any cline-no">&nbsp;</span>
693
+ <span class="cline-any cline-no">&nbsp;</span>
694
+ <span class="cline-any cline-no">&nbsp;</span>
695
+ <span class="cline-any cline-no">&nbsp;</span>
696
+ <span class="cline-any cline-no">&nbsp;</span>
697
+ <span class="cline-any cline-no">&nbsp;</span>
698
+ <span class="cline-any cline-no">&nbsp;</span>
699
+ <span class="cline-any cline-no">&nbsp;</span>
700
+ <span class="cline-any cline-no">&nbsp;</span>
701
+ <span class="cline-any cline-no">&nbsp;</span>
702
+ <span class="cline-any cline-no">&nbsp;</span>
703
+ <span class="cline-any cline-no">&nbsp;</span>
704
+ <span class="cline-any cline-no">&nbsp;</span>
705
+ <span class="cline-any cline-no">&nbsp;</span>
706
+ <span class="cline-any cline-no">&nbsp;</span>
707
+ <span class="cline-any cline-no">&nbsp;</span>
708
+ <span class="cline-any cline-no">&nbsp;</span>
709
+ <span class="cline-any cline-no">&nbsp;</span>
710
+ <span class="cline-any cline-no">&nbsp;</span>
711
+ <span class="cline-any cline-no">&nbsp;</span>
712
+ <span class="cline-any cline-no">&nbsp;</span>
713
+ <span class="cline-any cline-no">&nbsp;</span>
714
+ <span class="cline-any cline-no">&nbsp;</span>
715
+ <span class="cline-any cline-no">&nbsp;</span>
716
+ <span class="cline-any cline-no">&nbsp;</span>
717
+ <span class="cline-any cline-no">&nbsp;</span>
718
+ <span class="cline-any cline-no">&nbsp;</span>
719
+ <span class="cline-any cline-no">&nbsp;</span>
720
+ <span class="cline-any cline-no">&nbsp;</span>
721
+ <span class="cline-any cline-no">&nbsp;</span>
722
+ <span class="cline-any cline-no">&nbsp;</span>
723
+ <span class="cline-any cline-no">&nbsp;</span>
724
+ <span class="cline-any cline-no">&nbsp;</span>
725
+ <span class="cline-any cline-no">&nbsp;</span>
726
+ <span class="cline-any cline-no">&nbsp;</span>
727
+ <span class="cline-any cline-no">&nbsp;</span>
728
+ <span class="cline-any cline-no">&nbsp;</span>
729
+ <span class="cline-any cline-no">&nbsp;</span>
730
+ <span class="cline-any cline-no">&nbsp;</span>
731
+ <span class="cline-any cline-no">&nbsp;</span>
732
+ <span class="cline-any cline-no">&nbsp;</span>
733
+ <span class="cline-any cline-no">&nbsp;</span>
734
+ <span class="cline-any cline-no">&nbsp;</span>
735
+ <span class="cline-any cline-no">&nbsp;</span>
736
+ <span class="cline-any cline-no">&nbsp;</span>
737
+ <span class="cline-any cline-no">&nbsp;</span>
738
+ <span class="cline-any cline-no">&nbsp;</span>
739
+ <span class="cline-any cline-no">&nbsp;</span>
740
+ <span class="cline-any cline-no">&nbsp;</span>
741
+ <span class="cline-any cline-no">&nbsp;</span>
742
+ <span class="cline-any cline-no">&nbsp;</span>
743
+ <span class="cline-any cline-no">&nbsp;</span>
744
+ <span class="cline-any cline-no">&nbsp;</span>
745
+ <span class="cline-any cline-no">&nbsp;</span>
746
+ <span class="cline-any cline-no">&nbsp;</span>
747
+ <span class="cline-any cline-no">&nbsp;</span>
748
+ <span class="cline-any cline-no">&nbsp;</span>
749
+ <span class="cline-any cline-no">&nbsp;</span>
750
+ <span class="cline-any cline-no">&nbsp;</span>
751
+ <span class="cline-any cline-no">&nbsp;</span>
752
+ <span class="cline-any cline-no">&nbsp;</span>
753
+ <span class="cline-any cline-no">&nbsp;</span>
754
+ <span class="cline-any cline-no">&nbsp;</span>
755
+ <span class="cline-any cline-no">&nbsp;</span>
756
+ <span class="cline-any cline-no">&nbsp;</span>
757
+ <span class="cline-any cline-no">&nbsp;</span>
758
+ <span class="cline-any cline-no">&nbsp;</span>
759
+ <span class="cline-any cline-no">&nbsp;</span>
760
+ <span class="cline-any cline-no">&nbsp;</span>
761
+ <span class="cline-any cline-no">&nbsp;</span>
762
+ <span class="cline-any cline-no">&nbsp;</span>
763
+ <span class="cline-any cline-no">&nbsp;</span>
764
+ <span class="cline-any cline-no">&nbsp;</span>
765
+ <span class="cline-any cline-no">&nbsp;</span>
766
+ <span class="cline-any cline-no">&nbsp;</span>
767
+ <span class="cline-any cline-no">&nbsp;</span>
768
+ <span class="cline-any cline-no">&nbsp;</span>
769
+ <span class="cline-any cline-no">&nbsp;</span>
770
+ <span class="cline-any cline-no">&nbsp;</span>
771
+ <span class="cline-any cline-no">&nbsp;</span>
772
+ <span class="cline-any cline-no">&nbsp;</span>
773
+ <span class="cline-any cline-no">&nbsp;</span>
774
+ <span class="cline-any cline-no">&nbsp;</span>
775
+ <span class="cline-any cline-no">&nbsp;</span>
776
+ <span class="cline-any cline-no">&nbsp;</span>
777
+ <span class="cline-any cline-no">&nbsp;</span>
778
+ <span class="cline-any cline-no">&nbsp;</span>
779
+ <span class="cline-any cline-no">&nbsp;</span>
780
+ <span class="cline-any cline-no">&nbsp;</span>
781
+ <span class="cline-any cline-no">&nbsp;</span>
782
+ <span class="cline-any cline-no">&nbsp;</span>
783
+ <span class="cline-any cline-no">&nbsp;</span>
784
+ <span class="cline-any cline-no">&nbsp;</span>
785
+ <span class="cline-any cline-no">&nbsp;</span>
786
+ <span class="cline-any cline-no">&nbsp;</span>
787
+ <span class="cline-any cline-no">&nbsp;</span>
788
+ <span class="cline-any cline-no">&nbsp;</span>
789
+ <span class="cline-any cline-no">&nbsp;</span>
790
+ <span class="cline-any cline-no">&nbsp;</span>
791
+ <span class="cline-any cline-no">&nbsp;</span>
792
+ <span class="cline-any cline-no">&nbsp;</span>
793
+ <span class="cline-any cline-no">&nbsp;</span>
794
+ <span class="cline-any cline-no">&nbsp;</span>
795
+ <span class="cline-any cline-no">&nbsp;</span>
796
+ <span class="cline-any cline-no">&nbsp;</span>
797
+ <span class="cline-any cline-no">&nbsp;</span>
798
+ <span class="cline-any cline-no">&nbsp;</span>
799
+ <span class="cline-any cline-no">&nbsp;</span>
800
+ <span class="cline-any cline-no">&nbsp;</span>
801
+ <span class="cline-any cline-no">&nbsp;</span>
802
+ <span class="cline-any cline-no">&nbsp;</span>
803
+ <span class="cline-any cline-no">&nbsp;</span>
804
+ <span class="cline-any cline-no">&nbsp;</span>
805
+ <span class="cline-any cline-no">&nbsp;</span>
806
+ <span class="cline-any cline-no">&nbsp;</span>
807
+ <span class="cline-any cline-no">&nbsp;</span>
808
+ <span class="cline-any cline-no">&nbsp;</span>
809
+ <span class="cline-any cline-no">&nbsp;</span>
810
+ <span class="cline-any cline-no">&nbsp;</span>
811
+ <span class="cline-any cline-no">&nbsp;</span>
812
+ <span class="cline-any cline-no">&nbsp;</span>
813
+ <span class="cline-any cline-no">&nbsp;</span>
814
+ <span class="cline-any cline-no">&nbsp;</span>
815
+ <span class="cline-any cline-no">&nbsp;</span>
816
+ <span class="cline-any cline-no">&nbsp;</span>
817
+ <span class="cline-any cline-no">&nbsp;</span>
818
+ <span class="cline-any cline-no">&nbsp;</span>
819
+ <span class="cline-any cline-no">&nbsp;</span>
820
+ <span class="cline-any cline-no">&nbsp;</span>
821
+ <span class="cline-any cline-no">&nbsp;</span>
822
+ <span class="cline-any cline-no">&nbsp;</span>
823
+ <span class="cline-any cline-no">&nbsp;</span>
824
+ <span class="cline-any cline-no">&nbsp;</span>
825
+ <span class="cline-any cline-no">&nbsp;</span>
826
+ <span class="cline-any cline-no">&nbsp;</span>
827
+ <span class="cline-any cline-no">&nbsp;</span>
828
+ <span class="cline-any cline-no">&nbsp;</span>
829
+ <span class="cline-any cline-no">&nbsp;</span>
830
+ <span class="cline-any cline-no">&nbsp;</span>
831
+ <span class="cline-any cline-no">&nbsp;</span>
832
+ <span class="cline-any cline-no">&nbsp;</span>
833
+ <span class="cline-any cline-no">&nbsp;</span>
834
+ <span class="cline-any cline-no">&nbsp;</span>
835
+ <span class="cline-any cline-no">&nbsp;</span>
836
+ <span class="cline-any cline-no">&nbsp;</span>
837
+ <span class="cline-any cline-no">&nbsp;</span>
838
+ <span class="cline-any cline-no">&nbsp;</span>
839
+ <span class="cline-any cline-no">&nbsp;</span>
840
+ <span class="cline-any cline-no">&nbsp;</span>
841
+ <span class="cline-any cline-no">&nbsp;</span>
842
+ <span class="cline-any cline-no">&nbsp;</span>
843
+ <span class="cline-any cline-no">&nbsp;</span>
844
+ <span class="cline-any cline-no">&nbsp;</span>
845
+ <span class="cline-any cline-no">&nbsp;</span>
846
+ <span class="cline-any cline-no">&nbsp;</span>
847
+ <span class="cline-any cline-no">&nbsp;</span>
848
+ <span class="cline-any cline-no">&nbsp;</span>
849
+ <span class="cline-any cline-no">&nbsp;</span>
850
+ <span class="cline-any cline-no">&nbsp;</span>
851
+ <span class="cline-any cline-no">&nbsp;</span>
852
+ <span class="cline-any cline-no">&nbsp;</span>
853
+ <span class="cline-any cline-no">&nbsp;</span>
854
+ <span class="cline-any cline-no">&nbsp;</span>
855
+ <span class="cline-any cline-no">&nbsp;</span>
856
+ <span class="cline-any cline-no">&nbsp;</span>
857
+ <span class="cline-any cline-no">&nbsp;</span>
858
+ <span class="cline-any cline-no">&nbsp;</span>
859
+ <span class="cline-any cline-no">&nbsp;</span>
860
+ <span class="cline-any cline-no">&nbsp;</span>
861
+ <span class="cline-any cline-no">&nbsp;</span>
862
+ <span class="cline-any cline-no">&nbsp;</span>
863
+ <span class="cline-any cline-no">&nbsp;</span>
864
+ <span class="cline-any cline-no">&nbsp;</span>
865
+ <span class="cline-any cline-no">&nbsp;</span>
866
+ <span class="cline-any cline-no">&nbsp;</span>
867
+ <span class="cline-any cline-no">&nbsp;</span>
868
+ <span class="cline-any cline-no">&nbsp;</span>
869
+ <span class="cline-any cline-no">&nbsp;</span>
870
+ <span class="cline-any cline-no">&nbsp;</span>
871
+ <span class="cline-any cline-no">&nbsp;</span>
872
+ <span class="cline-any cline-no">&nbsp;</span>
873
+ <span class="cline-any cline-no">&nbsp;</span>
874
+ <span class="cline-any cline-no">&nbsp;</span>
875
+ <span class="cline-any cline-no">&nbsp;</span>
876
+ <span class="cline-any cline-no">&nbsp;</span>
877
+ <span class="cline-any cline-no">&nbsp;</span>
878
+ <span class="cline-any cline-no">&nbsp;</span>
879
+ <span class="cline-any cline-no">&nbsp;</span>
880
+ <span class="cline-any cline-no">&nbsp;</span>
881
+ <span class="cline-any cline-no">&nbsp;</span>
882
+ <span class="cline-any cline-no">&nbsp;</span>
883
+ <span class="cline-any cline-no">&nbsp;</span>
884
+ <span class="cline-any cline-no">&nbsp;</span>
885
+ <span class="cline-any cline-no">&nbsp;</span>
886
+ <span class="cline-any cline-no">&nbsp;</span>
887
+ <span class="cline-any cline-no">&nbsp;</span>
888
+ <span class="cline-any cline-no">&nbsp;</span>
889
+ <span class="cline-any cline-no">&nbsp;</span>
890
+ <span class="cline-any cline-no">&nbsp;</span>
891
+ <span class="cline-any cline-no">&nbsp;</span>
892
+ <span class="cline-any cline-no">&nbsp;</span>
893
+ <span class="cline-any cline-no">&nbsp;</span>
894
+ <span class="cline-any cline-no">&nbsp;</span>
895
+ <span class="cline-any cline-no">&nbsp;</span>
896
+ <span class="cline-any cline-no">&nbsp;</span>
897
+ <span class="cline-any cline-no">&nbsp;</span>
898
+ <span class="cline-any cline-no">&nbsp;</span>
899
+ <span class="cline-any cline-no">&nbsp;</span>
900
+ <span class="cline-any cline-no">&nbsp;</span>
901
+ <span class="cline-any cline-no">&nbsp;</span>
902
+ <span class="cline-any cline-no">&nbsp;</span>
903
+ <span class="cline-any cline-no">&nbsp;</span>
904
+ <span class="cline-any cline-no">&nbsp;</span>
905
+ <span class="cline-any cline-no">&nbsp;</span>
906
+ <span class="cline-any cline-no">&nbsp;</span>
907
+ <span class="cline-any cline-no">&nbsp;</span>
908
+ <span class="cline-any cline-no">&nbsp;</span>
909
+ <span class="cline-any cline-no">&nbsp;</span>
910
+ <span class="cline-any cline-no">&nbsp;</span>
911
+ <span class="cline-any cline-no">&nbsp;</span>
912
+ <span class="cline-any cline-no">&nbsp;</span>
913
+ <span class="cline-any cline-no">&nbsp;</span>
914
+ <span class="cline-any cline-no">&nbsp;</span>
915
+ <span class="cline-any cline-no">&nbsp;</span>
916
+ <span class="cline-any cline-no">&nbsp;</span>
917
+ <span class="cline-any cline-no">&nbsp;</span>
918
+ <span class="cline-any cline-no">&nbsp;</span>
919
+ <span class="cline-any cline-no">&nbsp;</span>
920
+ <span class="cline-any cline-no">&nbsp;</span>
921
+ <span class="cline-any cline-no">&nbsp;</span>
922
+ <span class="cline-any cline-no">&nbsp;</span>
923
+ <span class="cline-any cline-no">&nbsp;</span>
924
+ <span class="cline-any cline-no">&nbsp;</span>
925
+ <span class="cline-any cline-no">&nbsp;</span>
926
+ <span class="cline-any cline-no">&nbsp;</span>
927
+ <span class="cline-any cline-no">&nbsp;</span>
928
+ <span class="cline-any cline-no">&nbsp;</span>
929
+ <span class="cline-any cline-no">&nbsp;</span>
930
+ <span class="cline-any cline-no">&nbsp;</span>
931
+ <span class="cline-any cline-no">&nbsp;</span>
932
+ <span class="cline-any cline-no">&nbsp;</span>
933
+ <span class="cline-any cline-no">&nbsp;</span>
934
+ <span class="cline-any cline-no">&nbsp;</span>
935
+ <span class="cline-any cline-no">&nbsp;</span>
936
+ <span class="cline-any cline-no">&nbsp;</span>
937
+ <span class="cline-any cline-no">&nbsp;</span>
938
+ <span class="cline-any cline-no">&nbsp;</span>
939
+ <span class="cline-any cline-no">&nbsp;</span>
940
+ <span class="cline-any cline-no">&nbsp;</span>
941
+ <span class="cline-any cline-no">&nbsp;</span>
942
+ <span class="cline-any cline-no">&nbsp;</span>
943
+ <span class="cline-any cline-no">&nbsp;</span>
944
+ <span class="cline-any cline-no">&nbsp;</span>
945
+ <span class="cline-any cline-no">&nbsp;</span>
946
+ <span class="cline-any cline-no">&nbsp;</span>
947
+ <span class="cline-any cline-no">&nbsp;</span>
948
+ <span class="cline-any cline-no">&nbsp;</span>
949
+ <span class="cline-any cline-no">&nbsp;</span>
950
+ <span class="cline-any cline-no">&nbsp;</span>
951
+ <span class="cline-any cline-no">&nbsp;</span>
952
+ <span class="cline-any cline-no">&nbsp;</span>
953
+ <span class="cline-any cline-no">&nbsp;</span>
954
+ <span class="cline-any cline-no">&nbsp;</span>
955
+ <span class="cline-any cline-no">&nbsp;</span>
956
+ <span class="cline-any cline-no">&nbsp;</span>
957
+ <span class="cline-any cline-no">&nbsp;</span>
958
+ <span class="cline-any cline-no">&nbsp;</span>
959
+ <span class="cline-any cline-no">&nbsp;</span>
960
+ <span class="cline-any cline-no">&nbsp;</span>
961
+ <span class="cline-any cline-no">&nbsp;</span>
962
+ <span class="cline-any cline-no">&nbsp;</span>
963
+ <span class="cline-any cline-no">&nbsp;</span>
964
+ <span class="cline-any cline-no">&nbsp;</span>
965
+ <span class="cline-any cline-no">&nbsp;</span>
966
+ <span class="cline-any cline-no">&nbsp;</span>
967
+ <span class="cline-any cline-no">&nbsp;</span>
968
+ <span class="cline-any cline-no">&nbsp;</span>
969
+ <span class="cline-any cline-no">&nbsp;</span>
970
+ <span class="cline-any cline-no">&nbsp;</span>
971
+ <span class="cline-any cline-no">&nbsp;</span>
972
+ <span class="cline-any cline-no">&nbsp;</span>
973
+ <span class="cline-any cline-no">&nbsp;</span>
974
+ <span class="cline-any cline-no">&nbsp;</span>
975
+ <span class="cline-any cline-no">&nbsp;</span>
976
+ <span class="cline-any cline-no">&nbsp;</span>
977
+ <span class="cline-any cline-no">&nbsp;</span>
978
+ <span class="cline-any cline-no">&nbsp;</span>
979
+ <span class="cline-any cline-no">&nbsp;</span>
980
+ <span class="cline-any cline-no">&nbsp;</span>
981
+ <span class="cline-any cline-no">&nbsp;</span>
982
+ <span class="cline-any cline-no">&nbsp;</span>
983
+ <span class="cline-any cline-no">&nbsp;</span>
984
+ <span class="cline-any cline-no">&nbsp;</span>
985
+ <span class="cline-any cline-no">&nbsp;</span>
986
+ <span class="cline-any cline-no">&nbsp;</span>
987
+ <span class="cline-any cline-no">&nbsp;</span>
988
+ <span class="cline-any cline-no">&nbsp;</span>
989
+ <span class="cline-any cline-no">&nbsp;</span>
990
+ <span class="cline-any cline-no">&nbsp;</span>
991
+ <span class="cline-any cline-no">&nbsp;</span>
992
+ <span class="cline-any cline-no">&nbsp;</span>
993
+ <span class="cline-any cline-no">&nbsp;</span>
994
+ <span class="cline-any cline-no">&nbsp;</span>
995
+ <span class="cline-any cline-no">&nbsp;</span>
996
+ <span class="cline-any cline-no">&nbsp;</span>
997
+ <span class="cline-any cline-no">&nbsp;</span>
998
+ <span class="cline-any cline-no">&nbsp;</span>
999
+ <span class="cline-any cline-no">&nbsp;</span>
1000
+ <span class="cline-any cline-no">&nbsp;</span>
1001
+ <span class="cline-any cline-no">&nbsp;</span>
1002
+ <span class="cline-any cline-no">&nbsp;</span>
1003
+ <span class="cline-any cline-no">&nbsp;</span>
1004
+ <span class="cline-any cline-no">&nbsp;</span>
1005
+ <span class="cline-any cline-no">&nbsp;</span>
1006
+ <span class="cline-any cline-no">&nbsp;</span>
1007
+ <span class="cline-any cline-no">&nbsp;</span>
1008
+ <span class="cline-any cline-no">&nbsp;</span>
1009
+ <span class="cline-any cline-no">&nbsp;</span>
1010
+ <span class="cline-any cline-no">&nbsp;</span>
1011
+ <span class="cline-any cline-no">&nbsp;</span>
1012
+ <span class="cline-any cline-no">&nbsp;</span>
1013
+ <span class="cline-any cline-no">&nbsp;</span>
1014
+ <span class="cline-any cline-no">&nbsp;</span>
1015
+ <span class="cline-any cline-no">&nbsp;</span>
1016
+ <span class="cline-any cline-no">&nbsp;</span>
1017
+ <span class="cline-any cline-no">&nbsp;</span>
1018
+ <span class="cline-any cline-no">&nbsp;</span>
1019
+ <span class="cline-any cline-no">&nbsp;</span>
1020
+ <span class="cline-any cline-no">&nbsp;</span>
1021
+ <span class="cline-any cline-no">&nbsp;</span>
1022
+ <span class="cline-any cline-no">&nbsp;</span>
1023
+ <span class="cline-any cline-no">&nbsp;</span>
1024
+ <span class="cline-any cline-no">&nbsp;</span>
1025
+ <span class="cline-any cline-no">&nbsp;</span>
1026
+ <span class="cline-any cline-no">&nbsp;</span>
1027
+ <span class="cline-any cline-no">&nbsp;</span>
1028
+ <span class="cline-any cline-no">&nbsp;</span>
1029
+ <span class="cline-any cline-no">&nbsp;</span>
1030
+ <span class="cline-any cline-no">&nbsp;</span>
1031
+ <span class="cline-any cline-no">&nbsp;</span>
1032
+ <span class="cline-any cline-no">&nbsp;</span>
1033
+ <span class="cline-any cline-no">&nbsp;</span>
1034
+ <span class="cline-any cline-no">&nbsp;</span>
1035
+ <span class="cline-any cline-no">&nbsp;</span>
1036
+ <span class="cline-any cline-no">&nbsp;</span>
1037
+ <span class="cline-any cline-no">&nbsp;</span>
1038
+ <span class="cline-any cline-no">&nbsp;</span>
1039
+ <span class="cline-any cline-no">&nbsp;</span>
1040
+ <span class="cline-any cline-no">&nbsp;</span>
1041
+ <span class="cline-any cline-no">&nbsp;</span>
1042
+ <span class="cline-any cline-no">&nbsp;</span>
1043
+ <span class="cline-any cline-no">&nbsp;</span>
1044
+ <span class="cline-any cline-no">&nbsp;</span>
1045
+ <span class="cline-any cline-no">&nbsp;</span>
1046
+ <span class="cline-any cline-no">&nbsp;</span>
1047
+ <span class="cline-any cline-no">&nbsp;</span>
1048
+ <span class="cline-any cline-no">&nbsp;</span>
1049
+ <span class="cline-any cline-no">&nbsp;</span>
1050
+ <span class="cline-any cline-no">&nbsp;</span>
1051
+ <span class="cline-any cline-no">&nbsp;</span>
1052
+ <span class="cline-any cline-no">&nbsp;</span>
1053
+ <span class="cline-any cline-no">&nbsp;</span>
1054
+ <span class="cline-any cline-no">&nbsp;</span>
1055
+ <span class="cline-any cline-no">&nbsp;</span>
1056
+ <span class="cline-any cline-no">&nbsp;</span>
1057
+ <span class="cline-any cline-no">&nbsp;</span>
1058
+ <span class="cline-any cline-no">&nbsp;</span>
1059
+ <span class="cline-any cline-no">&nbsp;</span>
1060
+ <span class="cline-any cline-no">&nbsp;</span>
1061
+ <span class="cline-any cline-no">&nbsp;</span>
1062
+ <span class="cline-any cline-no">&nbsp;</span>
1063
+ <span class="cline-any cline-no">&nbsp;</span>
1064
+ <span class="cline-any cline-no">&nbsp;</span>
1065
+ <span class="cline-any cline-no">&nbsp;</span>
1066
+ <span class="cline-any cline-no">&nbsp;</span>
1067
+ <span class="cline-any cline-no">&nbsp;</span>
1068
+ <span class="cline-any cline-no">&nbsp;</span>
1069
+ <span class="cline-any cline-no">&nbsp;</span>
1070
+ <span class="cline-any cline-no">&nbsp;</span>
1071
+ <span class="cline-any cline-no">&nbsp;</span>
1072
+ <span class="cline-any cline-no">&nbsp;</span>
1073
+ <span class="cline-any cline-no">&nbsp;</span>
1074
+ <span class="cline-any cline-no">&nbsp;</span>
1075
+ <span class="cline-any cline-no">&nbsp;</span>
1076
+ <span class="cline-any cline-no">&nbsp;</span>
1077
+ <span class="cline-any cline-no">&nbsp;</span>
1078
+ <span class="cline-any cline-no">&nbsp;</span>
1079
+ <span class="cline-any cline-no">&nbsp;</span>
1080
+ <span class="cline-any cline-no">&nbsp;</span>
1081
+ <span class="cline-any cline-no">&nbsp;</span>
1082
+ <span class="cline-any cline-no">&nbsp;</span>
1083
+ <span class="cline-any cline-no">&nbsp;</span>
1084
+ <span class="cline-any cline-no">&nbsp;</span>
1085
+ <span class="cline-any cline-no">&nbsp;</span>
1086
+ <span class="cline-any cline-no">&nbsp;</span>
1087
+ <span class="cline-any cline-no">&nbsp;</span>
1088
+ <span class="cline-any cline-no">&nbsp;</span>
1089
+ <span class="cline-any cline-no">&nbsp;</span>
1090
+ <span class="cline-any cline-no">&nbsp;</span>
1091
+ <span class="cline-any cline-no">&nbsp;</span>
1092
+ <span class="cline-any cline-no">&nbsp;</span>
1093
+ <span class="cline-any cline-no">&nbsp;</span>
1094
+ <span class="cline-any cline-no">&nbsp;</span>
1095
+ <span class="cline-any cline-no">&nbsp;</span>
1096
+ <span class="cline-any cline-no">&nbsp;</span>
1097
+ <span class="cline-any cline-no">&nbsp;</span>
1098
+ <span class="cline-any cline-no">&nbsp;</span>
1099
+ <span class="cline-any cline-no">&nbsp;</span>
1100
+ <span class="cline-any cline-no">&nbsp;</span>
1101
+ <span class="cline-any cline-no">&nbsp;</span>
1102
+ <span class="cline-any cline-no">&nbsp;</span>
1103
+ <span class="cline-any cline-no">&nbsp;</span>
1104
+ <span class="cline-any cline-no">&nbsp;</span>
1105
+ <span class="cline-any cline-no">&nbsp;</span>
1106
+ <span class="cline-any cline-no">&nbsp;</span>
1107
+ <span class="cline-any cline-no">&nbsp;</span>
1108
+ <span class="cline-any cline-no">&nbsp;</span>
1109
+ <span class="cline-any cline-no">&nbsp;</span>
1110
+ <span class="cline-any cline-no">&nbsp;</span>
1111
+ <span class="cline-any cline-no">&nbsp;</span>
1112
+ <span class="cline-any cline-no">&nbsp;</span>
1113
+ <span class="cline-any cline-no">&nbsp;</span>
1114
+ <span class="cline-any cline-no">&nbsp;</span>
1115
+ <span class="cline-any cline-no">&nbsp;</span>
1116
+ <span class="cline-any cline-no">&nbsp;</span>
1117
+ <span class="cline-any cline-no">&nbsp;</span>
1118
+ <span class="cline-any cline-no">&nbsp;</span>
1119
+ <span class="cline-any cline-no">&nbsp;</span>
1120
+ <span class="cline-any cline-no">&nbsp;</span>
1121
+ <span class="cline-any cline-no">&nbsp;</span>
1122
+ <span class="cline-any cline-no">&nbsp;</span>
1123
+ <span class="cline-any cline-no">&nbsp;</span>
1124
+ <span class="cline-any cline-no">&nbsp;</span>
1125
+ <span class="cline-any cline-no">&nbsp;</span>
1126
+ <span class="cline-any cline-no">&nbsp;</span>
1127
+ <span class="cline-any cline-no">&nbsp;</span>
1128
+ <span class="cline-any cline-no">&nbsp;</span>
1129
+ <span class="cline-any cline-no">&nbsp;</span>
1130
+ <span class="cline-any cline-no">&nbsp;</span>
1131
+ <span class="cline-any cline-no">&nbsp;</span>
1132
+ <span class="cline-any cline-no">&nbsp;</span>
1133
+ <span class="cline-any cline-no">&nbsp;</span>
1134
+ <span class="cline-any cline-no">&nbsp;</span>
1135
+ <span class="cline-any cline-no">&nbsp;</span>
1136
+ <span class="cline-any cline-no">&nbsp;</span>
1137
+ <span class="cline-any cline-no">&nbsp;</span>
1138
+ <span class="cline-any cline-no">&nbsp;</span>
1139
+ <span class="cline-any cline-no">&nbsp;</span>
1140
+ <span class="cline-any cline-no">&nbsp;</span>
1141
+ <span class="cline-any cline-no">&nbsp;</span>
1142
+ <span class="cline-any cline-no">&nbsp;</span>
1143
+ <span class="cline-any cline-no">&nbsp;</span>
1144
+ <span class="cline-any cline-no">&nbsp;</span>
1145
+ <span class="cline-any cline-no">&nbsp;</span>
1146
+ <span class="cline-any cline-no">&nbsp;</span>
1147
+ <span class="cline-any cline-no">&nbsp;</span>
1148
+ <span class="cline-any cline-no">&nbsp;</span>
1149
+ <span class="cline-any cline-no">&nbsp;</span>
1150
+ <span class="cline-any cline-no">&nbsp;</span>
1151
+ <span class="cline-any cline-no">&nbsp;</span>
1152
+ <span class="cline-any cline-no">&nbsp;</span>
1153
+ <span class="cline-any cline-no">&nbsp;</span>
1154
+ <span class="cline-any cline-no">&nbsp;</span>
1155
+ <span class="cline-any cline-no">&nbsp;</span>
1156
+ <span class="cline-any cline-no">&nbsp;</span>
1157
+ <span class="cline-any cline-no">&nbsp;</span>
1158
+ <span class="cline-any cline-no">&nbsp;</span>
1159
+ <span class="cline-any cline-no">&nbsp;</span>
1160
+ <span class="cline-any cline-no">&nbsp;</span>
1161
+ <span class="cline-any cline-no">&nbsp;</span>
1162
+ <span class="cline-any cline-no">&nbsp;</span>
1163
+ <span class="cline-any cline-no">&nbsp;</span>
1164
+ <span class="cline-any cline-no">&nbsp;</span>
1165
+ <span class="cline-any cline-no">&nbsp;</span>
1166
+ <span class="cline-any cline-no">&nbsp;</span>
1167
+ <span class="cline-any cline-no">&nbsp;</span>
1168
+ <span class="cline-any cline-no">&nbsp;</span>
1169
+ <span class="cline-any cline-no">&nbsp;</span>
1170
+ <span class="cline-any cline-no">&nbsp;</span>
1171
+ <span class="cline-any cline-no">&nbsp;</span>
1172
+ <span class="cline-any cline-no">&nbsp;</span>
1173
+ <span class="cline-any cline-no">&nbsp;</span>
1174
+ <span class="cline-any cline-no">&nbsp;</span>
1175
+ <span class="cline-any cline-no">&nbsp;</span>
1176
+ <span class="cline-any cline-no">&nbsp;</span>
1177
+ <span class="cline-any cline-no">&nbsp;</span>
1178
+ <span class="cline-any cline-no">&nbsp;</span>
1179
+ <span class="cline-any cline-no">&nbsp;</span>
1180
+ <span class="cline-any cline-no">&nbsp;</span>
1181
+ <span class="cline-any cline-no">&nbsp;</span>
1182
+ <span class="cline-any cline-no">&nbsp;</span>
1183
+ <span class="cline-any cline-no">&nbsp;</span>
1184
+ <span class="cline-any cline-no">&nbsp;</span>
1185
+ <span class="cline-any cline-no">&nbsp;</span>
1186
+ <span class="cline-any cline-no">&nbsp;</span>
1187
+ <span class="cline-any cline-no">&nbsp;</span>
1188
+ <span class="cline-any cline-no">&nbsp;</span>
1189
+ <span class="cline-any cline-no">&nbsp;</span>
1190
+ <span class="cline-any cline-no">&nbsp;</span>
1191
+ <span class="cline-any cline-no">&nbsp;</span>
1192
+ <span class="cline-any cline-no">&nbsp;</span>
1193
+ <span class="cline-any cline-no">&nbsp;</span>
1194
+ <span class="cline-any cline-no">&nbsp;</span>
1195
+ <span class="cline-any cline-no">&nbsp;</span>
1196
+ <span class="cline-any cline-no">&nbsp;</span>
1197
+ <span class="cline-any cline-no">&nbsp;</span>
1198
+ <span class="cline-any cline-no">&nbsp;</span>
1199
+ <span class="cline-any cline-no">&nbsp;</span>
1200
+ <span class="cline-any cline-no">&nbsp;</span>
1201
+ <span class="cline-any cline-no">&nbsp;</span>
1202
+ <span class="cline-any cline-no">&nbsp;</span>
1203
+ <span class="cline-any cline-no">&nbsp;</span>
1204
+ <span class="cline-any cline-no">&nbsp;</span>
1205
+ <span class="cline-any cline-no">&nbsp;</span>
1206
+ <span class="cline-any cline-no">&nbsp;</span>
1207
+ <span class="cline-any cline-no">&nbsp;</span>
1208
+ <span class="cline-any cline-no">&nbsp;</span>
1209
+ <span class="cline-any cline-no">&nbsp;</span>
1210
+ <span class="cline-any cline-no">&nbsp;</span>
1211
+ <span class="cline-any cline-no">&nbsp;</span>
1212
+ <span class="cline-any cline-no">&nbsp;</span>
1213
+ <span class="cline-any cline-no">&nbsp;</span>
1214
+ <span class="cline-any cline-no">&nbsp;</span>
1215
+ <span class="cline-any cline-no">&nbsp;</span>
1216
+ <span class="cline-any cline-no">&nbsp;</span>
1217
+ <span class="cline-any cline-no">&nbsp;</span>
1218
+ <span class="cline-any cline-no">&nbsp;</span>
1219
+ <span class="cline-any cline-no">&nbsp;</span>
1220
+ <span class="cline-any cline-no">&nbsp;</span>
1221
+ <span class="cline-any cline-no">&nbsp;</span>
1222
+ <span class="cline-any cline-no">&nbsp;</span>
1223
+ <span class="cline-any cline-no">&nbsp;</span>
1224
+ <span class="cline-any cline-no">&nbsp;</span>
1225
+ <span class="cline-any cline-no">&nbsp;</span>
1226
+ <span class="cline-any cline-no">&nbsp;</span>
1227
+ <span class="cline-any cline-no">&nbsp;</span>
1228
+ <span class="cline-any cline-no">&nbsp;</span>
1229
+ <span class="cline-any cline-no">&nbsp;</span>
1230
+ <span class="cline-any cline-no">&nbsp;</span>
1231
+ <span class="cline-any cline-no">&nbsp;</span>
1232
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" >import EventManager from '@lomray/event-manager';</span></span></span>
1233
+ <span class="cstat-no" title="statement not covered" >import { isObservableProp, toJS } from 'mobx';</span>
1234
+ <span class="cstat-no" title="statement not covered" >import Events from './events';</span>
1235
+ <span class="cstat-no" title="statement not covered" >import onChangeListener from './on-change-listener';</span>
1236
+ <span class="cstat-no" title="statement not covered" >import StoreStatus from './store-status';</span>
1237
+ <span class="cstat-no" title="statement not covered" >import type {</span>
1238
+ <span class="cstat-no" title="statement not covered" > IConstructableStore,</span>
1239
+ <span class="cstat-no" title="statement not covered" > IManagerOptions,</span>
1240
+ <span class="cstat-no" title="statement not covered" > IManagerParams,</span>
1241
+ <span class="cstat-no" title="statement not covered" > IStorage,</span>
1242
+ <span class="cstat-no" title="statement not covered" > IStore,</span>
1243
+ <span class="cstat-no" title="statement not covered" > IStoreParams,</span>
1244
+ <span class="cstat-no" title="statement not covered" > TInitStore,</span>
1245
+ <span class="cstat-no" title="statement not covered" > TStoreDefinition,</span>
1246
+ <span class="cstat-no" title="statement not covered" > TStores,</span>
1247
+ <span class="cstat-no" title="statement not covered" >} from './types';</span>
1248
+ <span class="cstat-no" title="statement not covered" >import wakeup from './wakeup';</span>
1249
+ <span class="cstat-no" title="statement not covered" ></span>
1250
+ <span class="cstat-no" title="statement not covered" >/**</span>
1251
+ <span class="cstat-no" title="statement not covered" > * Mobx stores manager</span>
1252
+ <span class="cstat-no" title="statement not covered" > */</span>
1253
+ <span class="cstat-no" title="statement not covered" >class Manager {</span>
1254
+ <span class="cstat-no" title="statement not covered" > /**</span>
1255
+ <span class="cstat-no" title="statement not covered" > * Manger instance</span>
1256
+ <span class="cstat-no" title="statement not covered" > */</span>
1257
+ <span class="cstat-no" title="statement not covered" > protected static instance: Manager;</span>
1258
+ <span class="cstat-no" title="statement not covered" ></span>
1259
+ <span class="cstat-no" title="statement not covered" > /**</span>
1260
+ <span class="cstat-no" title="statement not covered" > * Created stores</span>
1261
+ <span class="cstat-no" title="statement not covered" > */</span>
1262
+ <span class="cstat-no" title="statement not covered" > protected readonly stores = new Map&lt;string, TInitStore&gt;();</span>
1263
+ <span class="cstat-no" title="statement not covered" ></span>
1264
+ <span class="cstat-no" title="statement not covered" > /**</span>
1265
+ <span class="cstat-no" title="statement not covered" > * Relations between stores</span>
1266
+ <span class="cstat-no" title="statement not covered" > * @protected</span>
1267
+ <span class="cstat-no" title="statement not covered" > */</span>
1268
+ <span class="cstat-no" title="statement not covered" > protected readonly storesRelations = new Map&lt;</span>
1269
+ <span class="cstat-no" title="statement not covered" > string, // contextId</span>
1270
+ <span class="cstat-no" title="statement not covered" > { ids: Set&lt;string&gt;; parentId: string | null; componentName?: string }</span>
1271
+ <span class="cstat-no" title="statement not covered" > &gt;();</span>
1272
+ <span class="cstat-no" title="statement not covered" ></span>
1273
+ <span class="cstat-no" title="statement not covered" > /**</span>
1274
+ <span class="cstat-no" title="statement not covered" > * Save persisted stores identities</span>
1275
+ <span class="cstat-no" title="statement not covered" > * @private</span>
1276
+ <span class="cstat-no" title="statement not covered" > */</span>
1277
+ <span class="cstat-no" title="statement not covered" > protected static readonly persistedStores = new Set&lt;string&gt;();</span>
1278
+ <span class="cstat-no" title="statement not covered" ></span>
1279
+ <span class="cstat-no" title="statement not covered" > /**</span>
1280
+ <span class="cstat-no" title="statement not covered" > * Initial stores state (local storage, custom etc.)</span>
1281
+ <span class="cstat-no" title="statement not covered" > * @private</span>
1282
+ <span class="cstat-no" title="statement not covered" > */</span>
1283
+ <span class="cstat-no" title="statement not covered" > protected readonly initState: Record&lt;string, any&gt;;</span>
1284
+ <span class="cstat-no" title="statement not covered" ></span>
1285
+ <span class="cstat-no" title="statement not covered" > /**</span>
1286
+ <span class="cstat-no" title="statement not covered" > * Storage for persisted stores</span>
1287
+ <span class="cstat-no" title="statement not covered" > */</span>
1288
+ <span class="cstat-no" title="statement not covered" > public readonly storage: IStorage | undefined;</span>
1289
+ <span class="cstat-no" title="statement not covered" ></span>
1290
+ <span class="cstat-no" title="statement not covered" > /**</span>
1291
+ <span class="cstat-no" title="statement not covered" > * Restored persist storage data</span>
1292
+ <span class="cstat-no" title="statement not covered" > * @protected</span>
1293
+ <span class="cstat-no" title="statement not covered" > */</span>
1294
+ <span class="cstat-no" title="statement not covered" > protected persistData: Record&lt;string, any&gt; = {};</span>
1295
+ <span class="cstat-no" title="statement not covered" ></span>
1296
+ <span class="cstat-no" title="statement not covered" > /**</span>
1297
+ <span class="cstat-no" title="statement not covered" > * Additional store's constructor params</span>
1298
+ <span class="cstat-no" title="statement not covered" > * @private</span>
1299
+ <span class="cstat-no" title="statement not covered" > */</span>
1300
+ <span class="cstat-no" title="statement not covered" > protected readonly storesParams: IManagerParams['storesParams'];</span>
1301
+ <span class="cstat-no" title="statement not covered" ></span>
1302
+ <span class="cstat-no" title="statement not covered" > /**</span>
1303
+ <span class="cstat-no" title="statement not covered" > * Manager options</span>
1304
+ <span class="cstat-no" title="statement not covered" > */</span>
1305
+ <span class="cstat-no" title="statement not covered" > public readonly options: IManagerOptions = {</span>
1306
+ <span class="cstat-no" title="statement not covered" > shouldDisablePersist: false,</span>
1307
+ <span class="cstat-no" title="statement not covered" > shouldRemoveInitState: true,</span>
1308
+ <span class="cstat-no" title="statement not covered" > };</span>
1309
+ <span class="cstat-no" title="statement not covered" ></span>
1310
+ <span class="cstat-no" title="statement not covered" > /**</span>
1311
+ <span class="cstat-no" title="statement not covered" > * Suspense stores relations</span>
1312
+ <span class="cstat-no" title="statement not covered" > * @see withStores</span>
1313
+ <span class="cstat-no" title="statement not covered" > */</span>
1314
+ <span class="cstat-no" title="statement not covered" > protected suspenseRelations: Map&lt;string, Set&lt;string&gt;&gt; = new Map();</span>
1315
+ <span class="cstat-no" title="statement not covered" ></span>
1316
+ <span class="cstat-no" title="statement not covered" > /**</span>
1317
+ <span class="cstat-no" title="statement not covered" > * @constructor</span>
1318
+ <span class="cstat-no" title="statement not covered" > */</span>
1319
+ <span class="cstat-no" title="statement not covered" > public constructor({ initState, storesParams, storage, options }: IManagerParams = {}) {</span>
1320
+ <span class="cstat-no" title="statement not covered" > this.initState = initState || {};</span>
1321
+ <span class="cstat-no" title="statement not covered" > this.storesParams = storesParams || {};</span>
1322
+ <span class="cstat-no" title="statement not covered" > this.storage = storage;</span>
1323
+ <span class="cstat-no" title="statement not covered" ></span>
1324
+ <span class="cstat-no" title="statement not covered" > Object.assign(this.options, options || {});</span>
1325
+ <span class="cstat-no" title="statement not covered" ></span>
1326
+ <span class="cstat-no" title="statement not covered" > Manager.instance = this;</span>
1327
+ <span class="cstat-no" title="statement not covered" ></span>
1328
+ <span class="cstat-no" title="statement not covered" > // only client side</span>
1329
+ <span class="cstat-no" title="statement not covered" > if (typeof window !== 'undefined') {</span>
1330
+ <span class="cstat-no" title="statement not covered" > const state = window.mbxM;</span>
1331
+ <span class="cstat-no" title="statement not covered" ></span>
1332
+ <span class="cstat-no" title="statement not covered" > window.mbxM = { push: this.pushInitState };</span>
1333
+ <span class="cstat-no" title="statement not covered" ></span>
1334
+ <span class="cstat-no" title="statement not covered" > (Array.isArray(state) ? state : []).forEach(this.pushInitState);</span>
1335
+ <span class="cstat-no" title="statement not covered" > }</span>
1336
+ <span class="cstat-no" title="statement not covered" > }</span>
1337
+ <span class="cstat-no" title="statement not covered" ></span>
1338
+ <span class="cstat-no" title="statement not covered" > /**</span>
1339
+ <span class="cstat-no" title="statement not covered" > * Init store manager</span>
1340
+ <span class="cstat-no" title="statement not covered" > */</span>
1341
+ <span class="cstat-no" title="statement not covered" > public async init(): Promise&lt;Manager&gt; {</span>
1342
+ <span class="cstat-no" title="statement not covered" > if (this.storage) {</span>
1343
+ <span class="cstat-no" title="statement not covered" > this.persistData = (await this.storage.get()) || {};</span>
1344
+ <span class="cstat-no" title="statement not covered" > }</span>
1345
+ <span class="cstat-no" title="statement not covered" ></span>
1346
+ <span class="cstat-no" title="statement not covered" > return this;</span>
1347
+ <span class="cstat-no" title="statement not covered" > }</span>
1348
+ <span class="cstat-no" title="statement not covered" ></span>
1349
+ <span class="cstat-no" title="statement not covered" > /**</span>
1350
+ <span class="cstat-no" title="statement not covered" > * Get manager instance</span>
1351
+ <span class="cstat-no" title="statement not covered" > */</span>
1352
+ <span class="cstat-no" title="statement not covered" > public static get(): Manager {</span>
1353
+ <span class="cstat-no" title="statement not covered" > if (!Manager.instance) {</span>
1354
+ <span class="cstat-no" title="statement not covered" > throw new Error('Store manager is not initialized.');</span>
1355
+ <span class="cstat-no" title="statement not covered" > }</span>
1356
+ <span class="cstat-no" title="statement not covered" ></span>
1357
+ <span class="cstat-no" title="statement not covered" > return Manager.instance;</span>
1358
+ <span class="cstat-no" title="statement not covered" > }</span>
1359
+ <span class="cstat-no" title="statement not covered" ></span>
1360
+ <span class="cstat-no" title="statement not covered" > /**</span>
1361
+ <span class="cstat-no" title="statement not covered" > * Get all stores</span>
1362
+ <span class="cstat-no" title="statement not covered" > */</span>
1363
+ <span class="cstat-no" title="statement not covered" > public getStores(): Manager['stores'] {</span>
1364
+ <span class="cstat-no" title="statement not covered" > return this.stores;</span>
1365
+ <span class="cstat-no" title="statement not covered" > }</span>
1366
+ <span class="cstat-no" title="statement not covered" ></span>
1367
+ <span class="cstat-no" title="statement not covered" > /**</span>
1368
+ <span class="cstat-no" title="statement not covered" > * Get stores relations</span>
1369
+ <span class="cstat-no" title="statement not covered" > */</span>
1370
+ <span class="cstat-no" title="statement not covered" > public getStoresRelations(): Manager['storesRelations'] {</span>
1371
+ <span class="cstat-no" title="statement not covered" > return this.storesRelations;</span>
1372
+ <span class="cstat-no" title="statement not covered" > }</span>
1373
+ <span class="cstat-no" title="statement not covered" ></span>
1374
+ <span class="cstat-no" title="statement not covered" > /**</span>
1375
+ <span class="cstat-no" title="statement not covered" > * Get suspense relations with stores</span>
1376
+ <span class="cstat-no" title="statement not covered" > */</span>
1377
+ <span class="cstat-no" title="statement not covered" > public getSuspenseRelations(): Manager['suspenseRelations'] {</span>
1378
+ <span class="cstat-no" title="statement not covered" > return this.suspenseRelations;</span>
1379
+ <span class="cstat-no" title="statement not covered" > }</span>
1380
+ <span class="cstat-no" title="statement not covered" ></span>
1381
+ <span class="cstat-no" title="statement not covered" > /**</span>
1382
+ <span class="cstat-no" title="statement not covered" > * Get persisted stores ids</span>
1383
+ <span class="cstat-no" title="statement not covered" > */</span>
1384
+ <span class="cstat-no" title="statement not covered" > public static getPersistedStoresIds(): Set&lt;string&gt; {</span>
1385
+ <span class="cstat-no" title="statement not covered" > return Manager.persistedStores;</span>
1386
+ <span class="cstat-no" title="statement not covered" > }</span>
1387
+ <span class="cstat-no" title="statement not covered" ></span>
1388
+ <span class="cstat-no" title="statement not covered" > /**</span>
1389
+ <span class="cstat-no" title="statement not covered" > * Push initial state dynamically</span>
1390
+ <span class="cstat-no" title="statement not covered" > * E.g. when stream html</span>
1391
+ <span class="cstat-no" title="statement not covered" > */</span>
1392
+ <span class="cstat-no" title="statement not covered" > public pushInitState = (storesState: Record&lt;string, any&gt; = {}): void =&gt; {</span>
1393
+ <span class="cstat-no" title="statement not covered" > for (const [storeId, state] of Object.entries(storesState)) {</span>
1394
+ <span class="cstat-no" title="statement not covered" > this.initState[storeId] = state;</span>
1395
+ <span class="cstat-no" title="statement not covered" > }</span>
1396
+ <span class="cstat-no" title="statement not covered" > };</span>
1397
+ <span class="cstat-no" title="statement not covered" ></span>
1398
+ <span class="cstat-no" title="statement not covered" > /**</span>
1399
+ <span class="cstat-no" title="statement not covered" > * Get store identity</span>
1400
+ <span class="cstat-no" title="statement not covered" > * @protected</span>
1401
+ <span class="cstat-no" title="statement not covered" > */</span>
1402
+ <span class="cstat-no" title="statement not covered" > protected getStoreId&lt;T&gt;(</span>
1403
+ <span class="cstat-no" title="statement not covered" > store: IConstructableStore&lt;T&gt; | TInitStore,</span>
1404
+ <span class="cstat-no" title="statement not covered" > params: IStoreParams = {},</span>
1405
+ <span class="cstat-no" title="statement not covered" > ): string {</span>
1406
+ <span class="cstat-no" title="statement not covered" > const { id, contextId, key } = params;</span>
1407
+ <span class="cstat-no" title="statement not covered" ></span>
1408
+ <span class="cstat-no" title="statement not covered" > if (id) {</span>
1409
+ <span class="cstat-no" title="statement not covered" > return id;</span>
1410
+ <span class="cstat-no" title="statement not covered" > }</span>
1411
+ <span class="cstat-no" title="statement not covered" ></span>
1412
+ <span class="cstat-no" title="statement not covered" > if (store.libStoreId) {</span>
1413
+ <span class="cstat-no" title="statement not covered" > return store.libStoreId;</span>
1414
+ <span class="cstat-no" title="statement not covered" > }</span>
1415
+ <span class="cstat-no" title="statement not covered" ></span>
1416
+ <span class="cstat-no" title="statement not covered" > let storeId = (store['id'] as string) || (store['name'] as string) || store.constructor.name;</span>
1417
+ <span class="cstat-no" title="statement not covered" ></span>
1418
+ <span class="cstat-no" title="statement not covered" > if (store.isGlobal) {</span>
1419
+ <span class="cstat-no" title="statement not covered" > return storeId;</span>
1420
+ <span class="cstat-no" title="statement not covered" > }</span>
1421
+ <span class="cstat-no" title="statement not covered" ></span>
1422
+ <span class="cstat-no" title="statement not covered" > storeId = `${storeId}--${contextId!}`;</span>
1423
+ <span class="cstat-no" title="statement not covered" ></span>
1424
+ <span class="cstat-no" title="statement not covered" > return key ? `${storeId}--${key}` : storeId;</span>
1425
+ <span class="cstat-no" title="statement not covered" > }</span>
1426
+ <span class="cstat-no" title="statement not covered" ></span>
1427
+ <span class="cstat-no" title="statement not covered" > /**</span>
1428
+ <span class="cstat-no" title="statement not covered" > * Get exist store</span>
1429
+ <span class="cstat-no" title="statement not covered" > */</span>
1430
+ <span class="cstat-no" title="statement not covered" > public getStore&lt;T&gt;(store: IConstructableStore&lt;T&gt;, params: IStoreParams = {}): T | undefined {</span>
1431
+ <span class="cstat-no" title="statement not covered" > const storeId = this.getStoreId(store, params);</span>
1432
+ <span class="cstat-no" title="statement not covered" ></span>
1433
+ <span class="cstat-no" title="statement not covered" > // full match</span>
1434
+ <span class="cstat-no" title="statement not covered" > if (this.stores.has(storeId)) {</span>
1435
+ <span class="cstat-no" title="statement not covered" > return this.stores.get(storeId) as T;</span>
1436
+ <span class="cstat-no" title="statement not covered" > }</span>
1437
+ <span class="cstat-no" title="statement not covered" ></span>
1438
+ <span class="cstat-no" title="statement not covered" > // in case with global store (create if not exist)</span>
1439
+ <span class="cstat-no" title="statement not covered" > if (store.isGlobal) {</span>
1440
+ <span class="cstat-no" title="statement not covered" > return this.createStore(store, {</span>
1441
+ <span class="cstat-no" title="statement not covered" > id: storeId,</span>
1442
+ <span class="cstat-no" title="statement not covered" > contextId: 'global',</span>
1443
+ <span class="cstat-no" title="statement not covered" > parentId: 'root',</span>
1444
+ <span class="cstat-no" title="statement not covered" > suspenseId: '',</span>
1445
+ <span class="cstat-no" title="statement not covered" > componentName: 'root-app',</span>
1446
+ <span class="cstat-no" title="statement not covered" > componentProps: {},</span>
1447
+ <span class="cstat-no" title="statement not covered" > });</span>
1448
+ <span class="cstat-no" title="statement not covered" > }</span>
1449
+ <span class="cstat-no" title="statement not covered" ></span>
1450
+ <span class="cstat-no" title="statement not covered" > // try to look up store in current or parent context</span>
1451
+ <span class="cstat-no" title="statement not covered" > return this.lookupStore(storeId, params);</span>
1452
+ <span class="cstat-no" title="statement not covered" > }</span>
1453
+ <span class="cstat-no" title="statement not covered" ></span>
1454
+ <span class="cstat-no" title="statement not covered" > /**</span>
1455
+ <span class="cstat-no" title="statement not covered" > * Lookup store</span>
1456
+ <span class="cstat-no" title="statement not covered" > * @protected</span>
1457
+ <span class="cstat-no" title="statement not covered" > */</span>
1458
+ <span class="cstat-no" title="statement not covered" > protected lookupStore&lt;T&gt;(id: string, params: IStoreParams): TInitStore&lt;T&gt; | undefined {</span>
1459
+ <span class="cstat-no" title="statement not covered" > const { contextId, parentId: defaultParentId } = params;</span>
1460
+ <span class="cstat-no" title="statement not covered" > const clearId = id.split('--')?.[0];</span>
1461
+ <span class="cstat-no" title="statement not covered" > const { ids, parentId } = this.storesRelations.get(contextId!) ?? {</span>
1462
+ <span class="cstat-no" title="statement not covered" > ids: new Set(),</span>
1463
+ <span class="cstat-no" title="statement not covered" > parentId: defaultParentId,</span>
1464
+ <span class="cstat-no" title="statement not covered" > };</span>
1465
+ <span class="cstat-no" title="statement not covered" ></span>
1466
+ <span class="cstat-no" title="statement not covered" > const matchedIds = [...ids].filter((storeId) =&gt; storeId.startsWith(`${clearId}--`));</span>
1467
+ <span class="cstat-no" title="statement not covered" ></span>
1468
+ <span class="cstat-no" title="statement not covered" > if (matchedIds.length === 1) {</span>
1469
+ <span class="cstat-no" title="statement not covered" > return this.stores.get(matchedIds[0]) as T;</span>
1470
+ <span class="cstat-no" title="statement not covered" > } else if (matchedIds.length &gt; 1) {</span>
1471
+ <span class="cstat-no" title="statement not covered" > console.error(</span>
1472
+ <span class="cstat-no" title="statement not covered" > 'Parent context has multiple stores with the same id, please pass key to getStore function.',</span>
1473
+ <span class="cstat-no" title="statement not covered" > );</span>
1474
+ <span class="cstat-no" title="statement not covered" ></span>
1475
+ <span class="cstat-no" title="statement not covered" > return undefined;</span>
1476
+ <span class="cstat-no" title="statement not covered" > }</span>
1477
+ <span class="cstat-no" title="statement not covered" ></span>
1478
+ <span class="cstat-no" title="statement not covered" > if (!parentId || parentId === 'root') {</span>
1479
+ <span class="cstat-no" title="statement not covered" > return undefined;</span>
1480
+ <span class="cstat-no" title="statement not covered" > }</span>
1481
+ <span class="cstat-no" title="statement not covered" ></span>
1482
+ <span class="cstat-no" title="statement not covered" > return this.lookupStore(id, { contextId: parentId });</span>
1483
+ <span class="cstat-no" title="statement not covered" > }</span>
1484
+ <span class="cstat-no" title="statement not covered" ></span>
1485
+ <span class="cstat-no" title="statement not covered" > /**</span>
1486
+ <span class="cstat-no" title="statement not covered" > * Create new store instance</span>
1487
+ <span class="cstat-no" title="statement not covered" > * @protected</span>
1488
+ <span class="cstat-no" title="statement not covered" > */</span>
1489
+ <span class="cstat-no" title="statement not covered" > protected createStore&lt;T&gt;(</span>
1490
+ <span class="cstat-no" title="statement not covered" > store: IConstructableStore&lt;T&gt;,</span>
1491
+ <span class="cstat-no" title="statement not covered" > params: Omit&lt;Required&lt;IStoreParams&gt;, 'key'&gt;,</span>
1492
+ <span class="cstat-no" title="statement not covered" > ): T {</span>
1493
+ <span class="cstat-no" title="statement not covered" > const { id, contextId, parentId, suspenseId, componentName, componentProps } = params;</span>
1494
+ <span class="cstat-no" title="statement not covered" ></span>
1495
+ <span class="cstat-no" title="statement not covered" > // only for global store</span>
1496
+ <span class="cstat-no" title="statement not covered" > if (this.stores.has(id)) {</span>
1497
+ <span class="cstat-no" title="statement not covered" > return this.stores.get(id) as T;</span>
1498
+ <span class="cstat-no" title="statement not covered" > }</span>
1499
+ <span class="cstat-no" title="statement not covered" ></span>
1500
+ <span class="cstat-no" title="statement not covered" > const newStore = new store({</span>
1501
+ <span class="cstat-no" title="statement not covered" > ...this.storesParams,</span>
1502
+ <span class="cstat-no" title="statement not covered" > storeManager: this,</span>
1503
+ <span class="cstat-no" title="statement not covered" > getStore: &lt;TS&gt;(</span>
1504
+ <span class="cstat-no" title="statement not covered" > targetStore: IConstructableStore&lt;TS&gt;,</span>
1505
+ <span class="cstat-no" title="statement not covered" > targetParams = { contextId, parentId },</span>
1506
+ <span class="cstat-no" title="statement not covered" > ) =&gt; this.getStore(targetStore, targetParams),</span>
1507
+ <span class="cstat-no" title="statement not covered" > componentProps,</span>
1508
+ <span class="cstat-no" title="statement not covered" > });</span>
1509
+ <span class="cstat-no" title="statement not covered" ></span>
1510
+ <span class="cstat-no" title="statement not covered" > // assign params to new store</span>
1511
+ <span class="cstat-no" title="statement not covered" > newStore.libStoreId = id;</span>
1512
+ <span class="cstat-no" title="statement not covered" > newStore.isGlobal = store.isGlobal;</span>
1513
+ <span class="cstat-no" title="statement not covered" > newStore.libStoreContextId = store.isGlobal ? 'global' : contextId;</span>
1514
+ <span class="cstat-no" title="statement not covered" > newStore.libStoreParentId =</span>
1515
+ <span class="cstat-no" title="statement not covered" > store.isGlobal || !parentId || parentId === contextId ? 'root' : parentId;</span>
1516
+ <span class="cstat-no" title="statement not covered" > newStore.libStoreSuspenseId = suspenseId;</span>
1517
+ <span class="cstat-no" title="statement not covered" > newStore.libStoreComponentName = componentName;</span>
1518
+ <span class="cstat-no" title="statement not covered" ></span>
1519
+ <span class="cstat-no" title="statement not covered" > this.setStoreStatus(newStore, store.isGlobal ? StoreStatus.inUse : StoreStatus.init);</span>
1520
+ <span class="cstat-no" title="statement not covered" > this.prepareStore(newStore);</span>
1521
+ <span class="cstat-no" title="statement not covered" > EventManager.publish(Events.CREATE_STORE, { store });</span>
1522
+ <span class="cstat-no" title="statement not covered" ></span>
1523
+ <span class="cstat-no" title="statement not covered" > return newStore as T;</span>
1524
+ <span class="cstat-no" title="statement not covered" > }</span>
1525
+ <span class="cstat-no" title="statement not covered" ></span>
1526
+ <span class="cstat-no" title="statement not covered" > /**</span>
1527
+ <span class="cstat-no" title="statement not covered" > * Create stores for component</span>
1528
+ <span class="cstat-no" title="statement not covered" > */</span>
1529
+ <span class="cstat-no" title="statement not covered" > public createStores(</span>
1530
+ <span class="cstat-no" title="statement not covered" > map: [string, TStoreDefinition][],</span>
1531
+ <span class="cstat-no" title="statement not covered" > parentId: string,</span>
1532
+ <span class="cstat-no" title="statement not covered" > contextId: string,</span>
1533
+ <span class="cstat-no" title="statement not covered" > suspenseId: string,</span>
1534
+ <span class="cstat-no" title="statement not covered" > componentName: string,</span>
1535
+ <span class="cstat-no" title="statement not covered" > componentProps: Record&lt;string, any&gt; = {},</span>
1536
+ <span class="cstat-no" title="statement not covered" > ): TStores {</span>
1537
+ <span class="cstat-no" title="statement not covered" > return map.reduce((res, [key, store]) =&gt; {</span>
1538
+ <span class="cstat-no" title="statement not covered" > const [s, id] =</span>
1539
+ <span class="cstat-no" title="statement not covered" > 'store' in store</span>
1540
+ <span class="cstat-no" title="statement not covered" > ? [store.store, store.id!]</span>
1541
+ <span class="cstat-no" title="statement not covered" > : [store, this.getStoreId(store, { key, contextId })];</span>
1542
+ <span class="cstat-no" title="statement not covered" ></span>
1543
+ <span class="cstat-no" title="statement not covered" > return {</span>
1544
+ <span class="cstat-no" title="statement not covered" > ...res,</span>
1545
+ <span class="cstat-no" title="statement not covered" > [key]: this.createStore(s, {</span>
1546
+ <span class="cstat-no" title="statement not covered" > id,</span>
1547
+ <span class="cstat-no" title="statement not covered" > contextId,</span>
1548
+ <span class="cstat-no" title="statement not covered" > parentId,</span>
1549
+ <span class="cstat-no" title="statement not covered" > suspenseId,</span>
1550
+ <span class="cstat-no" title="statement not covered" > componentName,</span>
1551
+ <span class="cstat-no" title="statement not covered" > componentProps,</span>
1552
+ <span class="cstat-no" title="statement not covered" > }),</span>
1553
+ <span class="cstat-no" title="statement not covered" > };</span>
1554
+ <span class="cstat-no" title="statement not covered" > }, {});</span>
1555
+ <span class="cstat-no" title="statement not covered" > }</span>
1556
+ <span class="cstat-no" title="statement not covered" ></span>
1557
+ <span class="cstat-no" title="statement not covered" > /**</span>
1558
+ <span class="cstat-no" title="statement not covered" > * Prepare store before usage</span>
1559
+ <span class="cstat-no" title="statement not covered" > */</span>
1560
+ <span class="cstat-no" title="statement not covered" > protected prepareStore(store: TStores[string]): void {</span>
1561
+ <span class="cstat-no" title="statement not covered" > const storeId = store.libStoreId!;</span>
1562
+ <span class="cstat-no" title="statement not covered" > const contextId = store.libStoreContextId!;</span>
1563
+ <span class="cstat-no" title="statement not covered" > const suspenseId = store.libStoreSuspenseId!;</span>
1564
+ <span class="cstat-no" title="statement not covered" ></span>
1565
+ <span class="cstat-no" title="statement not covered" > // restore initial state from server</span>
1566
+ <span class="cstat-no" title="statement not covered" > const initState = this.initState[storeId];</span>
1567
+ <span class="cstat-no" title="statement not covered" > const persistedState = this.persistData[storeId];</span>
1568
+ <span class="cstat-no" title="statement not covered" ></span>
1569
+ <span class="cstat-no" title="statement not covered" > if (this.stores.has(storeId)) {</span>
1570
+ <span class="cstat-no" title="statement not covered" > return;</span>
1571
+ <span class="cstat-no" title="statement not covered" > }</span>
1572
+ <span class="cstat-no" title="statement not covered" ></span>
1573
+ <span class="cstat-no" title="statement not covered" > if (initState) {</span>
1574
+ <span class="cstat-no" title="statement not covered" > Object.assign(store, initState);</span>
1575
+ <span class="cstat-no" title="statement not covered" > }</span>
1576
+ <span class="cstat-no" title="statement not covered" ></span>
1577
+ <span class="cstat-no" title="statement not covered" > // restore persisted state</span>
1578
+ <span class="cstat-no" title="statement not covered" > if ('wakeup' in store &amp;&amp; Manager.persistedStores.has(storeId)) {</span>
1579
+ <span class="cstat-no" title="statement not covered" > store.wakeup?.({ initState, persistedState });</span>
1580
+ <span class="cstat-no" title="statement not covered" > }</span>
1581
+ <span class="cstat-no" title="statement not covered" ></span>
1582
+ <span class="cstat-no" title="statement not covered" > // track changes in persisted store</span>
1583
+ <span class="cstat-no" title="statement not covered" > if (Manager.persistedStores.has(storeId) &amp;&amp; 'addOnChangeListener' in store) {</span>
1584
+ <span class="cstat-no" title="statement not covered" > const onDestroyDefault = store.onDestroy?.bind(store);</span>
1585
+ <span class="cstat-no" title="statement not covered" > const removeListener = store.addOnChangeListener!(store, this);</span>
1586
+ <span class="cstat-no" title="statement not covered" ></span>
1587
+ <span class="cstat-no" title="statement not covered" > store.onDestroy = () =&gt; {</span>
1588
+ <span class="cstat-no" title="statement not covered" > removeListener?.();</span>
1589
+ <span class="cstat-no" title="statement not covered" > onDestroyDefault?.();</span>
1590
+ <span class="cstat-no" title="statement not covered" > };</span>
1591
+ <span class="cstat-no" title="statement not covered" > }</span>
1592
+ <span class="cstat-no" title="statement not covered" ></span>
1593
+ <span class="cstat-no" title="statement not covered" > store.init?.();</span>
1594
+ <span class="cstat-no" title="statement not covered" ></span>
1595
+ <span class="cstat-no" title="statement not covered" > if (!this.storesRelations.has(contextId)) {</span>
1596
+ <span class="cstat-no" title="statement not covered" > this.storesRelations.set(contextId, {</span>
1597
+ <span class="cstat-no" title="statement not covered" > ids: new Set(),</span>
1598
+ <span class="cstat-no" title="statement not covered" > parentId:</span>
1599
+ <span class="cstat-no" title="statement not covered" > !store.libStoreParentId || store.libStoreParentId === contextId</span>
1600
+ <span class="cstat-no" title="statement not covered" > ? 'root'</span>
1601
+ <span class="cstat-no" title="statement not covered" > : store.libStoreParentId,</span>
1602
+ <span class="cstat-no" title="statement not covered" > componentName: store.libStoreComponentName,</span>
1603
+ <span class="cstat-no" title="statement not covered" > });</span>
1604
+ <span class="cstat-no" title="statement not covered" > }</span>
1605
+ <span class="cstat-no" title="statement not covered" ></span>
1606
+ <span class="cstat-no" title="statement not covered" > if (!this.suspenseRelations.has(suspenseId)) {</span>
1607
+ <span class="cstat-no" title="statement not covered" > this.suspenseRelations.set(suspenseId, new Set());</span>
1608
+ <span class="cstat-no" title="statement not covered" > }</span>
1609
+ <span class="cstat-no" title="statement not covered" ></span>
1610
+ <span class="cstat-no" title="statement not covered" > const { ids } = this.storesRelations.get(contextId)!;</span>
1611
+ <span class="cstat-no" title="statement not covered" ></span>
1612
+ <span class="cstat-no" title="statement not covered" > // add store to manager</span>
1613
+ <span class="cstat-no" title="statement not covered" > this.stores.set(storeId, store);</span>
1614
+ <span class="cstat-no" title="statement not covered" > ids.add(storeId);</span>
1615
+ <span class="cstat-no" title="statement not covered" > // add store relation with suspense</span>
1616
+ <span class="cstat-no" title="statement not covered" > this.suspenseRelations.get(suspenseId)!.add(storeId);</span>
1617
+ <span class="cstat-no" title="statement not covered" > }</span>
1618
+ <span class="cstat-no" title="statement not covered" ></span>
1619
+ <span class="cstat-no" title="statement not covered" > /**</span>
1620
+ <span class="cstat-no" title="statement not covered" > * Remove store</span>
1621
+ <span class="cstat-no" title="statement not covered" > */</span>
1622
+ <span class="cstat-no" title="statement not covered" > protected removeStore(store: TStores[string]): void {</span>
1623
+ <span class="cstat-no" title="statement not covered" > const storeId = store.libStoreId!;</span>
1624
+ <span class="cstat-no" title="statement not covered" > const suspenseId = store.libStoreSuspenseId!;</span>
1625
+ <span class="cstat-no" title="statement not covered" > const { ids } = this.storesRelations.get(store.libStoreContextId!) ?? { ids: new Set() };</span>
1626
+ <span class="cstat-no" title="statement not covered" ></span>
1627
+ <span class="cstat-no" title="statement not covered" > if (!this.stores.has(storeId)) {</span>
1628
+ <span class="cstat-no" title="statement not covered" > return;</span>
1629
+ <span class="cstat-no" title="statement not covered" > }</span>
1630
+ <span class="cstat-no" title="statement not covered" ></span>
1631
+ <span class="cstat-no" title="statement not covered" > this.stores.delete(storeId);</span>
1632
+ <span class="cstat-no" title="statement not covered" > ids.delete(storeId);</span>
1633
+ <span class="cstat-no" title="statement not covered" ></span>
1634
+ <span class="cstat-no" title="statement not covered" > if (suspenseId &amp;&amp; this.suspenseRelations.get(suspenseId)?.has(storeId)) {</span>
1635
+ <span class="cstat-no" title="statement not covered" > this.suspenseRelations.get(suspenseId)!.delete(storeId);</span>
1636
+ <span class="cstat-no" title="statement not covered" > }</span>
1637
+ <span class="cstat-no" title="statement not covered" ></span>
1638
+ <span class="cstat-no" title="statement not covered" > // cleanup store relations</span>
1639
+ <span class="cstat-no" title="statement not covered" > if (!ids.size) {</span>
1640
+ <span class="cstat-no" title="statement not covered" > this.storesRelations.delete(store.libStoreContextId!);</span>
1641
+ <span class="cstat-no" title="statement not covered" > }</span>
1642
+ <span class="cstat-no" title="statement not covered" ></span>
1643
+ <span class="cstat-no" title="statement not covered" > if ('onDestroy' in store) {</span>
1644
+ <span class="cstat-no" title="statement not covered" > store.onDestroy?.();</span>
1645
+ <span class="cstat-no" title="statement not covered" > }</span>
1646
+ <span class="cstat-no" title="statement not covered" ></span>
1647
+ <span class="cstat-no" title="statement not covered" > EventManager.publish(Events.DELETE_STORE, { store });</span>
1648
+ <span class="cstat-no" title="statement not covered" > }</span>
1649
+ <span class="cstat-no" title="statement not covered" ></span>
1650
+ <span class="cstat-no" title="statement not covered" > /**</span>
1651
+ <span class="cstat-no" title="statement not covered" > * Mount stores to component</span>
1652
+ <span class="cstat-no" title="statement not covered" > */</span>
1653
+ <span class="cstat-no" title="statement not covered" > public mountStores(stores: TStores): () =&gt; void {</span>
1654
+ <span class="cstat-no" title="statement not covered" > const { shouldRemoveInitState } = this.options;</span>
1655
+ <span class="cstat-no" title="statement not covered" ></span>
1656
+ <span class="cstat-no" title="statement not covered" > Object.values(stores).forEach((store) =&gt; {</span>
1657
+ <span class="cstat-no" title="statement not covered" > const storeId = store.libStoreId!;</span>
1658
+ <span class="cstat-no" title="statement not covered" ></span>
1659
+ <span class="cstat-no" title="statement not covered" > // cleanup init state</span>
1660
+ <span class="cstat-no" title="statement not covered" > if (shouldRemoveInitState &amp;&amp; this.initState[storeId]) {</span>
1661
+ <span class="cstat-no" title="statement not covered" > delete this.initState[storeId];</span>
1662
+ <span class="cstat-no" title="statement not covered" > }</span>
1663
+ <span class="cstat-no" title="statement not covered" ></span>
1664
+ <span class="cstat-no" title="statement not covered" > this.setStoreStatus(store, StoreStatus.inUse);</span>
1665
+ <span class="cstat-no" title="statement not covered" > EventManager.publish(Events.MOUNT_STORE, { store });</span>
1666
+ <span class="cstat-no" title="statement not covered" > });</span>
1667
+ <span class="cstat-no" title="statement not covered" ></span>
1668
+ <span class="cstat-no" title="statement not covered" > return () =&gt; {</span>
1669
+ <span class="cstat-no" title="statement not covered" > Object.values(stores).forEach((store) =&gt; {</span>
1670
+ <span class="cstat-no" title="statement not covered" > if (store.isGlobal) {</span>
1671
+ <span class="cstat-no" title="statement not covered" > return;</span>
1672
+ <span class="cstat-no" title="statement not covered" > }</span>
1673
+ <span class="cstat-no" title="statement not covered" ></span>
1674
+ <span class="cstat-no" title="statement not covered" > this.setStoreStatus(store, StoreStatus.unused);</span>
1675
+ <span class="cstat-no" title="statement not covered" > EventManager.publish(Events.UNMOUNT_STORE, { store });</span>
1676
+ <span class="cstat-no" title="statement not covered" > });</span>
1677
+ <span class="cstat-no" title="statement not covered" > };</span>
1678
+ <span class="cstat-no" title="statement not covered" > }</span>
1679
+ <span class="cstat-no" title="statement not covered" ></span>
1680
+ <span class="cstat-no" title="statement not covered" > /**</span>
1681
+ <span class="cstat-no" title="statement not covered" > * Change the stores status to touched</span>
1682
+ <span class="cstat-no" title="statement not covered" > */</span>
1683
+ <span class="cstat-no" title="statement not covered" > public touchedStores(stores: TStores): void {</span>
1684
+ <span class="cstat-no" title="statement not covered" > Object.values(stores).forEach((store) =&gt; {</span>
1685
+ <span class="cstat-no" title="statement not covered" > if (store.libStoreStatus !== StoreStatus.init || store.isGlobal) {</span>
1686
+ <span class="cstat-no" title="statement not covered" > return;</span>
1687
+ <span class="cstat-no" title="statement not covered" > }</span>
1688
+ <span class="cstat-no" title="statement not covered" ></span>
1689
+ <span class="cstat-no" title="statement not covered" > this.setStoreStatus(store, StoreStatus.touched);</span>
1690
+ <span class="cstat-no" title="statement not covered" > });</span>
1691
+ <span class="cstat-no" title="statement not covered" > }</span>
1692
+ <span class="cstat-no" title="statement not covered" ></span>
1693
+ <span class="cstat-no" title="statement not covered" > /**</span>
1694
+ <span class="cstat-no" title="statement not covered" > * Change store status</span>
1695
+ <span class="cstat-no" title="statement not covered" > */</span>
1696
+ <span class="cstat-no" title="statement not covered" > protected setStoreStatus(store: TStores[string], status: StoreStatus): void {</span>
1697
+ <span class="cstat-no" title="statement not covered" > const { destroyTimers: { init = 500, touched = 10000, unused = 1000 } = {} } = this.options;</span>
1698
+ <span class="cstat-no" title="statement not covered" ></span>
1699
+ <span class="cstat-no" title="statement not covered" > store.libStoreStatus = status;</span>
1700
+ <span class="cstat-no" title="statement not covered" ></span>
1701
+ <span class="cstat-no" title="statement not covered" > clearTimeout(store.libDestroyTimer);</span>
1702
+ <span class="cstat-no" title="statement not covered" ></span>
1703
+ <span class="cstat-no" title="statement not covered" > let destroyTime = 0;</span>
1704
+ <span class="cstat-no" title="statement not covered" ></span>
1705
+ <span class="cstat-no" title="statement not covered" > switch (status) {</span>
1706
+ <span class="cstat-no" title="statement not covered" > case StoreStatus.init:</span>
1707
+ <span class="cstat-no" title="statement not covered" > destroyTime = init;</span>
1708
+ <span class="cstat-no" title="statement not covered" > break;</span>
1709
+ <span class="cstat-no" title="statement not covered" ></span>
1710
+ <span class="cstat-no" title="statement not covered" > case StoreStatus.touched:</span>
1711
+ <span class="cstat-no" title="statement not covered" > destroyTime = touched;</span>
1712
+ <span class="cstat-no" title="statement not covered" > break;</span>
1713
+ <span class="cstat-no" title="statement not covered" ></span>
1714
+ <span class="cstat-no" title="statement not covered" > case StoreStatus.unused:</span>
1715
+ <span class="cstat-no" title="statement not covered" > destroyTime = unused;</span>
1716
+ <span class="cstat-no" title="statement not covered" > break;</span>
1717
+ <span class="cstat-no" title="statement not covered" > }</span>
1718
+ <span class="cstat-no" title="statement not covered" ></span>
1719
+ <span class="cstat-no" title="statement not covered" > if (!destroyTime) {</span>
1720
+ <span class="cstat-no" title="statement not covered" > return;</span>
1721
+ <span class="cstat-no" title="statement not covered" > }</span>
1722
+ <span class="cstat-no" title="statement not covered" ></span>
1723
+ <span class="cstat-no" title="statement not covered" > store.libDestroyTimer = setTimeout(() =&gt; this.removeStore(store), destroyTime);</span>
1724
+ <span class="cstat-no" title="statement not covered" > }</span>
1725
+ <span class="cstat-no" title="statement not covered" ></span>
1726
+ <span class="cstat-no" title="statement not covered" > /**</span>
1727
+ <span class="cstat-no" title="statement not covered" > * Get store's state</span>
1728
+ <span class="cstat-no" title="statement not covered" > */</span>
1729
+ <span class="cstat-no" title="statement not covered" > public toJSON(ids?: string[]): Record&lt;string, any&gt; {</span>
1730
+ <span class="cstat-no" title="statement not covered" > const result = {};</span>
1731
+ <span class="cstat-no" title="statement not covered" > const stores = Array.isArray(ids)</span>
1732
+ <span class="cstat-no" title="statement not covered" > ? ids.reduce((res, id) =&gt; {</span>
1733
+ <span class="cstat-no" title="statement not covered" > if (this.stores.has(id)) {</span>
1734
+ <span class="cstat-no" title="statement not covered" > res.set(id, this.stores.get(id)!);</span>
1735
+ <span class="cstat-no" title="statement not covered" > }</span>
1736
+ <span class="cstat-no" title="statement not covered" ></span>
1737
+ <span class="cstat-no" title="statement not covered" > return res;</span>
1738
+ <span class="cstat-no" title="statement not covered" > }, new Map&lt;string, TInitStore&gt;())</span>
1739
+ <span class="cstat-no" title="statement not covered" > : this.stores;</span>
1740
+ <span class="cstat-no" title="statement not covered" ></span>
1741
+ <span class="cstat-no" title="statement not covered" > for (const [storeId, store] of stores.entries()) {</span>
1742
+ <span class="cstat-no" title="statement not covered" > result[storeId] = store.toJSON?.() ?? Manager.getObservableProps(store);</span>
1743
+ <span class="cstat-no" title="statement not covered" > }</span>
1744
+ <span class="cstat-no" title="statement not covered" ></span>
1745
+ <span class="cstat-no" title="statement not covered" > return result;</span>
1746
+ <span class="cstat-no" title="statement not covered" > }</span>
1747
+ <span class="cstat-no" title="statement not covered" ></span>
1748
+ <span class="cstat-no" title="statement not covered" > /**</span>
1749
+ <span class="cstat-no" title="statement not covered" > * Get persisted store's data</span>
1750
+ <span class="cstat-no" title="statement not covered" > */</span>
1751
+ <span class="cstat-no" title="statement not covered" > public toPersistedJSON(): Record&lt;string, any&gt; {</span>
1752
+ <span class="cstat-no" title="statement not covered" > const result = {};</span>
1753
+ <span class="cstat-no" title="statement not covered" ></span>
1754
+ <span class="cstat-no" title="statement not covered" > for (const storeKey of Manager.persistedStores) {</span>
1755
+ <span class="cstat-no" title="statement not covered" > const store = this.stores.get(storeKey);</span>
1756
+ <span class="cstat-no" title="statement not covered" ></span>
1757
+ <span class="cstat-no" title="statement not covered" > if (!store) {</span>
1758
+ <span class="cstat-no" title="statement not covered" > continue;</span>
1759
+ <span class="cstat-no" title="statement not covered" > }</span>
1760
+ <span class="cstat-no" title="statement not covered" ></span>
1761
+ <span class="cstat-no" title="statement not covered" > result[storeKey] = store['toJSON']?.() ?? Manager.getObservableProps(store);</span>
1762
+ <span class="cstat-no" title="statement not covered" > }</span>
1763
+ <span class="cstat-no" title="statement not covered" ></span>
1764
+ <span class="cstat-no" title="statement not covered" > return result;</span>
1765
+ <span class="cstat-no" title="statement not covered" > }</span>
1766
+ <span class="cstat-no" title="statement not covered" ></span>
1767
+ <span class="cstat-no" title="statement not covered" > /**</span>
1768
+ <span class="cstat-no" title="statement not covered" > * Get observable store props (fields)</span>
1769
+ <span class="cstat-no" title="statement not covered" > * @private</span>
1770
+ <span class="cstat-no" title="statement not covered" > */</span>
1771
+ <span class="cstat-no" title="statement not covered" > public static getObservableProps(store: IStore): Record&lt;string, any&gt; {</span>
1772
+ <span class="cstat-no" title="statement not covered" > const props = toJS(store);</span>
1773
+ <span class="cstat-no" title="statement not covered" ></span>
1774
+ <span class="cstat-no" title="statement not covered" > return Object.entries(props).reduce(</span>
1775
+ <span class="cstat-no" title="statement not covered" > (res, [prop, value]) =&gt; ({</span>
1776
+ <span class="cstat-no" title="statement not covered" > ...res,</span>
1777
+ <span class="cstat-no" title="statement not covered" > ...(isObservableProp(store, prop) ? { [prop]: value } : {}),</span>
1778
+ <span class="cstat-no" title="statement not covered" > }),</span>
1779
+ <span class="cstat-no" title="statement not covered" > {},</span>
1780
+ <span class="cstat-no" title="statement not covered" > );</span>
1781
+ <span class="cstat-no" title="statement not covered" > }</span>
1782
+ <span class="cstat-no" title="statement not covered" ></span>
1783
+ <span class="cstat-no" title="statement not covered" > /**</span>
1784
+ <span class="cstat-no" title="statement not covered" > * Persist store</span>
1785
+ <span class="cstat-no" title="statement not covered" > */</span>
1786
+ <span class="cstat-no" title="statement not covered" > public static persistStore&lt;TSt&gt;(</span>
1787
+ <span class="cstat-no" title="statement not covered" > store: IConstructableStore&lt;TSt&gt;,</span>
1788
+ <span class="cstat-no" title="statement not covered" > id: string,</span>
1789
+ <span class="cstat-no" title="statement not covered" > ): IConstructableStore&lt;TSt&gt; {</span>
1790
+ <span class="cstat-no" title="statement not covered" > if (Manager.persistedStores.has(id)) {</span>
1791
+ <span class="cstat-no" title="statement not covered" > console.warn(`Duplicate serializable store key: ${id}`);</span>
1792
+ <span class="cstat-no" title="statement not covered" ></span>
1793
+ <span class="cstat-no" title="statement not covered" > return store;</span>
1794
+ <span class="cstat-no" title="statement not covered" > }</span>
1795
+ <span class="cstat-no" title="statement not covered" ></span>
1796
+ <span class="cstat-no" title="statement not covered" > Manager.persistedStores.add(id);</span>
1797
+ <span class="cstat-no" title="statement not covered" ></span>
1798
+ <span class="cstat-no" title="statement not covered" > store.libStoreId = id;</span>
1799
+ <span class="cstat-no" title="statement not covered" ></span>
1800
+ <span class="cstat-no" title="statement not covered" > // add default wakeup handler</span>
1801
+ <span class="cstat-no" title="statement not covered" > if (!('wakeup' in store.prototype)) {</span>
1802
+ <span class="cstat-no" title="statement not covered" > store.prototype.wakeup = wakeup;</span>
1803
+ <span class="cstat-no" title="statement not covered" > }</span>
1804
+ <span class="cstat-no" title="statement not covered" ></span>
1805
+ <span class="cstat-no" title="statement not covered" > // add default changes listener</span>
1806
+ <span class="cstat-no" title="statement not covered" > if (!('addOnChangeListener' in store.prototype)) {</span>
1807
+ <span class="cstat-no" title="statement not covered" > store.prototype.addOnChangeListener = onChangeListener;</span>
1808
+ <span class="cstat-no" title="statement not covered" > }</span>
1809
+ <span class="cstat-no" title="statement not covered" ></span>
1810
+ <span class="cstat-no" title="statement not covered" > return store;</span>
1811
+ <span class="cstat-no" title="statement not covered" > }</span>
1812
+ <span class="cstat-no" title="statement not covered" >}</span>
1813
+ <span class="cstat-no" title="statement not covered" ></span>
1814
+ <span class="cstat-no" title="statement not covered" >export default Manager;</span>
1815
+ &nbsp;</pre></td></tr></table></pre>
1816
+
1817
+ <div class='push'></div><!-- for sticky footer -->
1818
+ </div><!-- /wrapper -->
1819
+ <div class='footer quiet pad2 space-top1 center small'>
1820
+ Code coverage generated by
1821
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1822
+ at 2023-11-27T15:37:43.623Z
1823
+ </div>
1824
+ <script src="../prettify.js"></script>
1825
+ <script>
1826
+ window.onload = function () {
1827
+ prettyPrint();
1828
+ };
1829
+ </script>
1830
+ <script src="../sorter.js"></script>
1831
+ <script src="../block-navigation.js"></script>
1832
+ </body>
1833
+ </html>
1834
+