apostrophe 2.221.0 → 2.221.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/lib/modules/apostrophe-caches/index.js +23 -1
  3. package/lib/modules/apostrophe-soft-redirects/index.js +21 -14
  4. package/package.json +1 -1
  5. package/test/caches.js +29 -0
  6. package/test/soft-redirects.js +16 -3
  7. package/.nyc_output/02d8fb44-f6bc-4ab4-8f47-22c7a42b887d.json +0 -1
  8. package/.nyc_output/14b3f5f0-7e4e-461b-a7d9-4b735f510bd7.json +0 -1
  9. package/.nyc_output/99acae99-becc-463d-ba35-9333f88d2694.json +0 -1
  10. package/.nyc_output/d071f9e0-3b11-44e6-9817-69f184dd064d.json +0 -1
  11. package/.nyc_output/ed000bec-7ff7-49bf-a109-d17bfe883433.json +0 -1
  12. package/.nyc_output/processinfo/02d8fb44-f6bc-4ab4-8f47-22c7a42b887d.json +0 -1
  13. package/.nyc_output/processinfo/14b3f5f0-7e4e-461b-a7d9-4b735f510bd7.json +0 -1
  14. package/.nyc_output/processinfo/99acae99-becc-463d-ba35-9333f88d2694.json +0 -1
  15. package/.nyc_output/processinfo/d071f9e0-3b11-44e6-9817-69f184dd064d.json +0 -1
  16. package/.nyc_output/processinfo/ed000bec-7ff7-49bf-a109-d17bfe883433.json +0 -1
  17. package/.nyc_output/processinfo/index.json +0 -1
  18. package/coverage/a3/defaults.js.html +0 -253
  19. package/coverage/a3/index.html +0 -131
  20. package/coverage/a3/index.js.html +0 -2338
  21. package/coverage/a3/lib/escape-host.js.html +0 -109
  22. package/coverage/a3/lib/index.html +0 -176
  23. package/coverage/a3/lib/mongodb-connect.js.html +0 -250
  24. package/coverage/a3/lib/moog-require.js.html +0 -790
  25. package/coverage/a3/lib/moog.js.html +0 -1711
  26. package/coverage/a3/lib/opentelemetry.js.html +0 -517
  27. package/coverage/a3/modules/@apostrophecms/admin-bar/index.html +0 -116
  28. package/coverage/a3/modules/@apostrophecms/admin-bar/index.js.html +0 -931
  29. package/coverage/a3/modules/@apostrophecms/any-doc-type/index.html +0 -116
  30. package/coverage/a3/modules/@apostrophecms/any-doc-type/index.js.html +0 -115
  31. package/coverage/a3/modules/@apostrophecms/any-page-type/index.html +0 -116
  32. package/coverage/a3/modules/@apostrophecms/any-page-type/index.js.html +0 -1105
  33. package/coverage/a3/modules/@apostrophecms/archive-page/index.html +0 -116
  34. package/coverage/a3/modules/@apostrophecms/archive-page/index.js.html +0 -97
  35. package/coverage/a3/modules/@apostrophecms/area/index.html +0 -116
  36. package/coverage/a3/modules/@apostrophecms/area/index.js.html +0 -2104
  37. package/coverage/a3/modules/@apostrophecms/area/lib/custom-tags/area.js.html +0 -469
  38. package/coverage/a3/modules/@apostrophecms/area/lib/custom-tags/index.html +0 -131
  39. package/coverage/a3/modules/@apostrophecms/area/lib/custom-tags/widget.js.html +0 -286
  40. package/coverage/a3/modules/@apostrophecms/asset/index.html +0 -116
  41. package/coverage/a3/modules/@apostrophecms/asset/index.js.html +0 -3982
  42. package/coverage/a3/modules/@apostrophecms/asset/lib/globalIcons.js.html +0 -346
  43. package/coverage/a3/modules/@apostrophecms/asset/lib/index.html +0 -116
  44. package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/apos/index.html +0 -131
  45. package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/apos/webpack.scss.js.html +0 -289
  46. package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/apos/webpack.vue.js.html +0 -148
  47. package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/index.html +0 -116
  48. package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/src/index.html +0 -131
  49. package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/src/webpack.es5.js.html +0 -184
  50. package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/src/webpack.scss.js.html +0 -238
  51. package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/utils.js.html +0 -958
  52. package/coverage/a3/modules/@apostrophecms/attachment/index.html +0 -116
  53. package/coverage/a3/modules/@apostrophecms/attachment/index.js.html +0 -3676
  54. package/coverage/a3/modules/@apostrophecms/attachment/lib/index.html +0 -116
  55. package/coverage/a3/modules/@apostrophecms/attachment/lib/legacy-migrations.js.html +0 -205
  56. package/coverage/a3/modules/@apostrophecms/attachment/lib/tasks/index.html +0 -116
  57. package/coverage/a3/modules/@apostrophecms/attachment/lib/tasks/rescale.js.html +0 -328
  58. package/coverage/a3/modules/@apostrophecms/busy/index.html +0 -116
  59. package/coverage/a3/modules/@apostrophecms/busy/index.js.html +0 -145
  60. package/coverage/a3/modules/@apostrophecms/cache/index.html +0 -116
  61. package/coverage/a3/modules/@apostrophecms/cache/index.js.html +0 -424
  62. package/coverage/a3/modules/@apostrophecms/db/index.html +0 -116
  63. package/coverage/a3/modules/@apostrophecms/db/index.js.html +0 -640
  64. package/coverage/a3/modules/@apostrophecms/doc/index.html +0 -116
  65. package/coverage/a3/modules/@apostrophecms/doc/index.js.html +0 -3937
  66. package/coverage/a3/modules/@apostrophecms/doc/lib/index.html +0 -116
  67. package/coverage/a3/modules/@apostrophecms/doc/lib/legacy-migrations.js.html +0 -622
  68. package/coverage/a3/modules/@apostrophecms/doc-type/index.html +0 -116
  69. package/coverage/a3/modules/@apostrophecms/doc-type/index.js.html +0 -8638
  70. package/coverage/a3/modules/@apostrophecms/doc-type/lib/autocomplete.js.html +0 -319
  71. package/coverage/a3/modules/@apostrophecms/doc-type/lib/index.html +0 -116
  72. package/coverage/a3/modules/@apostrophecms/email/index.html +0 -116
  73. package/coverage/a3/modules/@apostrophecms/email/index.js.html +0 -301
  74. package/coverage/a3/modules/@apostrophecms/error/index.html +0 -116
  75. package/coverage/a3/modules/@apostrophecms/error/index.js.html +0 -202
  76. package/coverage/a3/modules/@apostrophecms/express/index.html +0 -116
  77. package/coverage/a3/modules/@apostrophecms/express/index.js.html +0 -2116
  78. package/coverage/a3/modules/@apostrophecms/file/index.html +0 -116
  79. package/coverage/a3/modules/@apostrophecms/file/index.js.html +0 -367
  80. package/coverage/a3/modules/@apostrophecms/file-tag/index.html +0 -116
  81. package/coverage/a3/modules/@apostrophecms/file-tag/index.js.html +0 -127
  82. package/coverage/a3/modules/@apostrophecms/global/index.html +0 -116
  83. package/coverage/a3/modules/@apostrophecms/global/index.js.html +0 -535
  84. package/coverage/a3/modules/@apostrophecms/home-page/index.html +0 -116
  85. package/coverage/a3/modules/@apostrophecms/home-page/index.js.html +0 -94
  86. package/coverage/a3/modules/@apostrophecms/html-widget/index.html +0 -116
  87. package/coverage/a3/modules/@apostrophecms/html-widget/index.js.html +0 -271
  88. package/coverage/a3/modules/@apostrophecms/http/index.html +0 -116
  89. package/coverage/a3/modules/@apostrophecms/http/index.js.html +0 -976
  90. package/coverage/a3/modules/@apostrophecms/i18n/index.html +0 -116
  91. package/coverage/a3/modules/@apostrophecms/i18n/index.js.html +0 -2083
  92. package/coverage/a3/modules/@apostrophecms/image/index.html +0 -116
  93. package/coverage/a3/modules/@apostrophecms/image/index.js.html +0 -1486
  94. package/coverage/a3/modules/@apostrophecms/image-tag/index.html +0 -116
  95. package/coverage/a3/modules/@apostrophecms/image-tag/index.js.html +0 -127
  96. package/coverage/a3/modules/@apostrophecms/image-widget/index.html +0 -116
  97. package/coverage/a3/modules/@apostrophecms/image-widget/index.js.html +0 -145
  98. package/coverage/a3/modules/@apostrophecms/job/index.html +0 -116
  99. package/coverage/a3/modules/@apostrophecms/job/index.js.html +0 -1321
  100. package/coverage/a3/modules/@apostrophecms/launder/index.html +0 -116
  101. package/coverage/a3/modules/@apostrophecms/launder/index.js.html +0 -124
  102. package/coverage/a3/modules/@apostrophecms/lock/index.html +0 -116
  103. package/coverage/a3/modules/@apostrophecms/lock/index.js.html +0 -676
  104. package/coverage/a3/modules/@apostrophecms/login/index.html +0 -116
  105. package/coverage/a3/modules/@apostrophecms/login/index.js.html +0 -2617
  106. package/coverage/a3/modules/@apostrophecms/migration/index.html +0 -116
  107. package/coverage/a3/modules/@apostrophecms/migration/index.js.html +0 -970
  108. package/coverage/a3/modules/@apostrophecms/modal/index.html +0 -116
  109. package/coverage/a3/modules/@apostrophecms/modal/index.js.html +0 -193
  110. package/coverage/a3/modules/@apostrophecms/module/index.html +0 -116
  111. package/coverage/a3/modules/@apostrophecms/module/index.js.html +0 -2500
  112. package/coverage/a3/modules/@apostrophecms/module/lib/events.js.html +0 -547
  113. package/coverage/a3/modules/@apostrophecms/module/lib/index.html +0 -116
  114. package/coverage/a3/modules/@apostrophecms/notification/index.html +0 -116
  115. package/coverage/a3/modules/@apostrophecms/notification/index.js.html +0 -1315
  116. package/coverage/a3/modules/@apostrophecms/oembed/index.html +0 -116
  117. package/coverage/a3/modules/@apostrophecms/oembed/index.js.html +0 -781
  118. package/coverage/a3/modules/@apostrophecms/oembed/lib/index.html +0 -161
  119. package/coverage/a3/modules/@apostrophecms/oembed/lib/infogram.js.html +0 -178
  120. package/coverage/a3/modules/@apostrophecms/oembed/lib/vimeo.js.html +0 -124
  121. package/coverage/a3/modules/@apostrophecms/oembed/lib/wufoo.js.html +0 -256
  122. package/coverage/a3/modules/@apostrophecms/oembed/lib/youtube.js.html +0 -322
  123. package/coverage/a3/modules/@apostrophecms/oembed-field/index.html +0 -116
  124. package/coverage/a3/modules/@apostrophecms/oembed-field/index.js.html +0 -268
  125. package/coverage/a3/modules/@apostrophecms/page/index.html +0 -116
  126. package/coverage/a3/modules/@apostrophecms/page/index.js.html +0 -6955
  127. package/coverage/a3/modules/@apostrophecms/page/lib/index.html +0 -116
  128. package/coverage/a3/modules/@apostrophecms/page/lib/legacy-migrations.js.html +0 -568
  129. package/coverage/a3/modules/@apostrophecms/page-type/index.html +0 -116
  130. package/coverage/a3/modules/@apostrophecms/page-type/index.js.html +0 -1501
  131. package/coverage/a3/modules/@apostrophecms/pager/index.html +0 -116
  132. package/coverage/a3/modules/@apostrophecms/pager/index.js.html +0 -232
  133. package/coverage/a3/modules/@apostrophecms/permission/index.html +0 -116
  134. package/coverage/a3/modules/@apostrophecms/permission/index.js.html +0 -1057
  135. package/coverage/a3/modules/@apostrophecms/permission/lib/index.html +0 -116
  136. package/coverage/a3/modules/@apostrophecms/permission/lib/legacy-migrations.js.html +0 -160
  137. package/coverage/a3/modules/@apostrophecms/piece-page-type/index.html +0 -116
  138. package/coverage/a3/modules/@apostrophecms/piece-page-type/index.js.html +0 -1051
  139. package/coverage/a3/modules/@apostrophecms/piece-type/index.html +0 -116
  140. package/coverage/a3/modules/@apostrophecms/piece-type/index.js.html +0 -3103
  141. package/coverage/a3/modules/@apostrophecms/polymorphic-type/index.html +0 -116
  142. package/coverage/a3/modules/@apostrophecms/polymorphic-type/index.js.html +0 -157
  143. package/coverage/a3/modules/@apostrophecms/rich-text-widget/index.html +0 -116
  144. package/coverage/a3/modules/@apostrophecms/rich-text-widget/index.js.html +0 -1363
  145. package/coverage/a3/modules/@apostrophecms/schema/index.html +0 -116
  146. package/coverage/a3/modules/@apostrophecms/schema/index.js.html +0 -4603
  147. package/coverage/a3/modules/@apostrophecms/schema/lib/addFieldTypes.js.html +0 -3502
  148. package/coverage/a3/modules/@apostrophecms/schema/lib/index.html +0 -131
  149. package/coverage/a3/modules/@apostrophecms/schema/lib/joinr.js.html +0 -703
  150. package/coverage/a3/modules/@apostrophecms/search/index.html +0 -116
  151. package/coverage/a3/modules/@apostrophecms/search/index.js.html +0 -1222
  152. package/coverage/a3/modules/@apostrophecms/soft-redirect/index.html +0 -116
  153. package/coverage/a3/modules/@apostrophecms/soft-redirect/index.js.html +0 -343
  154. package/coverage/a3/modules/@apostrophecms/submitted-draft/index.html +0 -116
  155. package/coverage/a3/modules/@apostrophecms/submitted-draft/index.js.html +0 -595
  156. package/coverage/a3/modules/@apostrophecms/task/index.html +0 -116
  157. package/coverage/a3/modules/@apostrophecms/task/index.js.html +0 -1147
  158. package/coverage/a3/modules/@apostrophecms/template/index.html +0 -116
  159. package/coverage/a3/modules/@apostrophecms/template/index.js.html +0 -2731
  160. package/coverage/a3/modules/@apostrophecms/template/lib/bundlesLoader.js.html +0 -559
  161. package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/component.js.html +0 -310
  162. package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/fragment.js.html +0 -325
  163. package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/index.html +0 -146
  164. package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/render.js.html +0 -490
  165. package/coverage/a3/modules/@apostrophecms/template/lib/index.html +0 -131
  166. package/coverage/a3/modules/@apostrophecms/template/lib/nunjucksLoader.js.html +0 -658
  167. package/coverage/a3/modules/@apostrophecms/ui/index.html +0 -116
  168. package/coverage/a3/modules/@apostrophecms/ui/index.js.html +0 -181
  169. package/coverage/a3/modules/@apostrophecms/uploadfs/index.html +0 -116
  170. package/coverage/a3/modules/@apostrophecms/uploadfs/index.js.html +0 -286
  171. package/coverage/a3/modules/@apostrophecms/url/index.html +0 -116
  172. package/coverage/a3/modules/@apostrophecms/url/index.js.html +0 -733
  173. package/coverage/a3/modules/@apostrophecms/user/index.html +0 -116
  174. package/coverage/a3/modules/@apostrophecms/user/index.js.html +0 -1684
  175. package/coverage/a3/modules/@apostrophecms/user/lib/index.html +0 -116
  176. package/coverage/a3/modules/@apostrophecms/user/lib/legacy-migrations.js.html +0 -157
  177. package/coverage/a3/modules/@apostrophecms/util/index.html +0 -116
  178. package/coverage/a3/modules/@apostrophecms/util/index.js.html +0 -3424
  179. package/coverage/a3/modules/@apostrophecms/util/lib/index.html +0 -116
  180. package/coverage/a3/modules/@apostrophecms/util/lib/logger.js.html +0 -319
  181. package/coverage/a3/modules/@apostrophecms/video-widget/index.html +0 -116
  182. package/coverage/a3/modules/@apostrophecms/video-widget/index.js.html +0 -178
  183. package/coverage/a3/modules/@apostrophecms/widget-type/index.html +0 -116
  184. package/coverage/a3/modules/@apostrophecms/widget-type/index.js.html +0 -1225
  185. package/coverage/a3/test-lib/index.html +0 -131
  186. package/coverage/a3/test-lib/test.js.html +0 -232
  187. package/coverage/a3/test-lib/util.js.html +0 -373
  188. package/coverage/base.css +0 -224
  189. package/coverage/block-navigation.js +0 -87
  190. package/coverage/favicon.png +0 -0
  191. package/coverage/index.html +0 -1256
  192. package/coverage/prettify.css +0 -1
  193. package/coverage/prettify.js +0 -2
  194. package/coverage/sort-arrow-sprite.png +0 -0
  195. package/coverage/sorter.js +0 -196
@@ -1,3937 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for a3/modules/@apostrophecms/doc/index.js</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../../../prettify.css" />
9
- <link rel="stylesheet" href="../../../../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../../../../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../../../../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../../../../index.html">All files</a> / <a href="index.html">a3/modules/@apostrophecms/doc</a> index.js</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">77.16% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>338/438</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">68.72% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>189/275</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">85.22% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>75/88</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">77.24% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>336/435</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 medium'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a>
323
- <a name='L258'></a><a href='#L258'>258</a>
324
- <a name='L259'></a><a href='#L259'>259</a>
325
- <a name='L260'></a><a href='#L260'>260</a>
326
- <a name='L261'></a><a href='#L261'>261</a>
327
- <a name='L262'></a><a href='#L262'>262</a>
328
- <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a>
331
- <a name='L266'></a><a href='#L266'>266</a>
332
- <a name='L267'></a><a href='#L267'>267</a>
333
- <a name='L268'></a><a href='#L268'>268</a>
334
- <a name='L269'></a><a href='#L269'>269</a>
335
- <a name='L270'></a><a href='#L270'>270</a>
336
- <a name='L271'></a><a href='#L271'>271</a>
337
- <a name='L272'></a><a href='#L272'>272</a>
338
- <a name='L273'></a><a href='#L273'>273</a>
339
- <a name='L274'></a><a href='#L274'>274</a>
340
- <a name='L275'></a><a href='#L275'>275</a>
341
- <a name='L276'></a><a href='#L276'>276</a>
342
- <a name='L277'></a><a href='#L277'>277</a>
343
- <a name='L278'></a><a href='#L278'>278</a>
344
- <a name='L279'></a><a href='#L279'>279</a>
345
- <a name='L280'></a><a href='#L280'>280</a>
346
- <a name='L281'></a><a href='#L281'>281</a>
347
- <a name='L282'></a><a href='#L282'>282</a>
348
- <a name='L283'></a><a href='#L283'>283</a>
349
- <a name='L284'></a><a href='#L284'>284</a>
350
- <a name='L285'></a><a href='#L285'>285</a>
351
- <a name='L286'></a><a href='#L286'>286</a>
352
- <a name='L287'></a><a href='#L287'>287</a>
353
- <a name='L288'></a><a href='#L288'>288</a>
354
- <a name='L289'></a><a href='#L289'>289</a>
355
- <a name='L290'></a><a href='#L290'>290</a>
356
- <a name='L291'></a><a href='#L291'>291</a>
357
- <a name='L292'></a><a href='#L292'>292</a>
358
- <a name='L293'></a><a href='#L293'>293</a>
359
- <a name='L294'></a><a href='#L294'>294</a>
360
- <a name='L295'></a><a href='#L295'>295</a>
361
- <a name='L296'></a><a href='#L296'>296</a>
362
- <a name='L297'></a><a href='#L297'>297</a>
363
- <a name='L298'></a><a href='#L298'>298</a>
364
- <a name='L299'></a><a href='#L299'>299</a>
365
- <a name='L300'></a><a href='#L300'>300</a>
366
- <a name='L301'></a><a href='#L301'>301</a>
367
- <a name='L302'></a><a href='#L302'>302</a>
368
- <a name='L303'></a><a href='#L303'>303</a>
369
- <a name='L304'></a><a href='#L304'>304</a>
370
- <a name='L305'></a><a href='#L305'>305</a>
371
- <a name='L306'></a><a href='#L306'>306</a>
372
- <a name='L307'></a><a href='#L307'>307</a>
373
- <a name='L308'></a><a href='#L308'>308</a>
374
- <a name='L309'></a><a href='#L309'>309</a>
375
- <a name='L310'></a><a href='#L310'>310</a>
376
- <a name='L311'></a><a href='#L311'>311</a>
377
- <a name='L312'></a><a href='#L312'>312</a>
378
- <a name='L313'></a><a href='#L313'>313</a>
379
- <a name='L314'></a><a href='#L314'>314</a>
380
- <a name='L315'></a><a href='#L315'>315</a>
381
- <a name='L316'></a><a href='#L316'>316</a>
382
- <a name='L317'></a><a href='#L317'>317</a>
383
- <a name='L318'></a><a href='#L318'>318</a>
384
- <a name='L319'></a><a href='#L319'>319</a>
385
- <a name='L320'></a><a href='#L320'>320</a>
386
- <a name='L321'></a><a href='#L321'>321</a>
387
- <a name='L322'></a><a href='#L322'>322</a>
388
- <a name='L323'></a><a href='#L323'>323</a>
389
- <a name='L324'></a><a href='#L324'>324</a>
390
- <a name='L325'></a><a href='#L325'>325</a>
391
- <a name='L326'></a><a href='#L326'>326</a>
392
- <a name='L327'></a><a href='#L327'>327</a>
393
- <a name='L328'></a><a href='#L328'>328</a>
394
- <a name='L329'></a><a href='#L329'>329</a>
395
- <a name='L330'></a><a href='#L330'>330</a>
396
- <a name='L331'></a><a href='#L331'>331</a>
397
- <a name='L332'></a><a href='#L332'>332</a>
398
- <a name='L333'></a><a href='#L333'>333</a>
399
- <a name='L334'></a><a href='#L334'>334</a>
400
- <a name='L335'></a><a href='#L335'>335</a>
401
- <a name='L336'></a><a href='#L336'>336</a>
402
- <a name='L337'></a><a href='#L337'>337</a>
403
- <a name='L338'></a><a href='#L338'>338</a>
404
- <a name='L339'></a><a href='#L339'>339</a>
405
- <a name='L340'></a><a href='#L340'>340</a>
406
- <a name='L341'></a><a href='#L341'>341</a>
407
- <a name='L342'></a><a href='#L342'>342</a>
408
- <a name='L343'></a><a href='#L343'>343</a>
409
- <a name='L344'></a><a href='#L344'>344</a>
410
- <a name='L345'></a><a href='#L345'>345</a>
411
- <a name='L346'></a><a href='#L346'>346</a>
412
- <a name='L347'></a><a href='#L347'>347</a>
413
- <a name='L348'></a><a href='#L348'>348</a>
414
- <a name='L349'></a><a href='#L349'>349</a>
415
- <a name='L350'></a><a href='#L350'>350</a>
416
- <a name='L351'></a><a href='#L351'>351</a>
417
- <a name='L352'></a><a href='#L352'>352</a>
418
- <a name='L353'></a><a href='#L353'>353</a>
419
- <a name='L354'></a><a href='#L354'>354</a>
420
- <a name='L355'></a><a href='#L355'>355</a>
421
- <a name='L356'></a><a href='#L356'>356</a>
422
- <a name='L357'></a><a href='#L357'>357</a>
423
- <a name='L358'></a><a href='#L358'>358</a>
424
- <a name='L359'></a><a href='#L359'>359</a>
425
- <a name='L360'></a><a href='#L360'>360</a>
426
- <a name='L361'></a><a href='#L361'>361</a>
427
- <a name='L362'></a><a href='#L362'>362</a>
428
- <a name='L363'></a><a href='#L363'>363</a>
429
- <a name='L364'></a><a href='#L364'>364</a>
430
- <a name='L365'></a><a href='#L365'>365</a>
431
- <a name='L366'></a><a href='#L366'>366</a>
432
- <a name='L367'></a><a href='#L367'>367</a>
433
- <a name='L368'></a><a href='#L368'>368</a>
434
- <a name='L369'></a><a href='#L369'>369</a>
435
- <a name='L370'></a><a href='#L370'>370</a>
436
- <a name='L371'></a><a href='#L371'>371</a>
437
- <a name='L372'></a><a href='#L372'>372</a>
438
- <a name='L373'></a><a href='#L373'>373</a>
439
- <a name='L374'></a><a href='#L374'>374</a>
440
- <a name='L375'></a><a href='#L375'>375</a>
441
- <a name='L376'></a><a href='#L376'>376</a>
442
- <a name='L377'></a><a href='#L377'>377</a>
443
- <a name='L378'></a><a href='#L378'>378</a>
444
- <a name='L379'></a><a href='#L379'>379</a>
445
- <a name='L380'></a><a href='#L380'>380</a>
446
- <a name='L381'></a><a href='#L381'>381</a>
447
- <a name='L382'></a><a href='#L382'>382</a>
448
- <a name='L383'></a><a href='#L383'>383</a>
449
- <a name='L384'></a><a href='#L384'>384</a>
450
- <a name='L385'></a><a href='#L385'>385</a>
451
- <a name='L386'></a><a href='#L386'>386</a>
452
- <a name='L387'></a><a href='#L387'>387</a>
453
- <a name='L388'></a><a href='#L388'>388</a>
454
- <a name='L389'></a><a href='#L389'>389</a>
455
- <a name='L390'></a><a href='#L390'>390</a>
456
- <a name='L391'></a><a href='#L391'>391</a>
457
- <a name='L392'></a><a href='#L392'>392</a>
458
- <a name='L393'></a><a href='#L393'>393</a>
459
- <a name='L394'></a><a href='#L394'>394</a>
460
- <a name='L395'></a><a href='#L395'>395</a>
461
- <a name='L396'></a><a href='#L396'>396</a>
462
- <a name='L397'></a><a href='#L397'>397</a>
463
- <a name='L398'></a><a href='#L398'>398</a>
464
- <a name='L399'></a><a href='#L399'>399</a>
465
- <a name='L400'></a><a href='#L400'>400</a>
466
- <a name='L401'></a><a href='#L401'>401</a>
467
- <a name='L402'></a><a href='#L402'>402</a>
468
- <a name='L403'></a><a href='#L403'>403</a>
469
- <a name='L404'></a><a href='#L404'>404</a>
470
- <a name='L405'></a><a href='#L405'>405</a>
471
- <a name='L406'></a><a href='#L406'>406</a>
472
- <a name='L407'></a><a href='#L407'>407</a>
473
- <a name='L408'></a><a href='#L408'>408</a>
474
- <a name='L409'></a><a href='#L409'>409</a>
475
- <a name='L410'></a><a href='#L410'>410</a>
476
- <a name='L411'></a><a href='#L411'>411</a>
477
- <a name='L412'></a><a href='#L412'>412</a>
478
- <a name='L413'></a><a href='#L413'>413</a>
479
- <a name='L414'></a><a href='#L414'>414</a>
480
- <a name='L415'></a><a href='#L415'>415</a>
481
- <a name='L416'></a><a href='#L416'>416</a>
482
- <a name='L417'></a><a href='#L417'>417</a>
483
- <a name='L418'></a><a href='#L418'>418</a>
484
- <a name='L419'></a><a href='#L419'>419</a>
485
- <a name='L420'></a><a href='#L420'>420</a>
486
- <a name='L421'></a><a href='#L421'>421</a>
487
- <a name='L422'></a><a href='#L422'>422</a>
488
- <a name='L423'></a><a href='#L423'>423</a>
489
- <a name='L424'></a><a href='#L424'>424</a>
490
- <a name='L425'></a><a href='#L425'>425</a>
491
- <a name='L426'></a><a href='#L426'>426</a>
492
- <a name='L427'></a><a href='#L427'>427</a>
493
- <a name='L428'></a><a href='#L428'>428</a>
494
- <a name='L429'></a><a href='#L429'>429</a>
495
- <a name='L430'></a><a href='#L430'>430</a>
496
- <a name='L431'></a><a href='#L431'>431</a>
497
- <a name='L432'></a><a href='#L432'>432</a>
498
- <a name='L433'></a><a href='#L433'>433</a>
499
- <a name='L434'></a><a href='#L434'>434</a>
500
- <a name='L435'></a><a href='#L435'>435</a>
501
- <a name='L436'></a><a href='#L436'>436</a>
502
- <a name='L437'></a><a href='#L437'>437</a>
503
- <a name='L438'></a><a href='#L438'>438</a>
504
- <a name='L439'></a><a href='#L439'>439</a>
505
- <a name='L440'></a><a href='#L440'>440</a>
506
- <a name='L441'></a><a href='#L441'>441</a>
507
- <a name='L442'></a><a href='#L442'>442</a>
508
- <a name='L443'></a><a href='#L443'>443</a>
509
- <a name='L444'></a><a href='#L444'>444</a>
510
- <a name='L445'></a><a href='#L445'>445</a>
511
- <a name='L446'></a><a href='#L446'>446</a>
512
- <a name='L447'></a><a href='#L447'>447</a>
513
- <a name='L448'></a><a href='#L448'>448</a>
514
- <a name='L449'></a><a href='#L449'>449</a>
515
- <a name='L450'></a><a href='#L450'>450</a>
516
- <a name='L451'></a><a href='#L451'>451</a>
517
- <a name='L452'></a><a href='#L452'>452</a>
518
- <a name='L453'></a><a href='#L453'>453</a>
519
- <a name='L454'></a><a href='#L454'>454</a>
520
- <a name='L455'></a><a href='#L455'>455</a>
521
- <a name='L456'></a><a href='#L456'>456</a>
522
- <a name='L457'></a><a href='#L457'>457</a>
523
- <a name='L458'></a><a href='#L458'>458</a>
524
- <a name='L459'></a><a href='#L459'>459</a>
525
- <a name='L460'></a><a href='#L460'>460</a>
526
- <a name='L461'></a><a href='#L461'>461</a>
527
- <a name='L462'></a><a href='#L462'>462</a>
528
- <a name='L463'></a><a href='#L463'>463</a>
529
- <a name='L464'></a><a href='#L464'>464</a>
530
- <a name='L465'></a><a href='#L465'>465</a>
531
- <a name='L466'></a><a href='#L466'>466</a>
532
- <a name='L467'></a><a href='#L467'>467</a>
533
- <a name='L468'></a><a href='#L468'>468</a>
534
- <a name='L469'></a><a href='#L469'>469</a>
535
- <a name='L470'></a><a href='#L470'>470</a>
536
- <a name='L471'></a><a href='#L471'>471</a>
537
- <a name='L472'></a><a href='#L472'>472</a>
538
- <a name='L473'></a><a href='#L473'>473</a>
539
- <a name='L474'></a><a href='#L474'>474</a>
540
- <a name='L475'></a><a href='#L475'>475</a>
541
- <a name='L476'></a><a href='#L476'>476</a>
542
- <a name='L477'></a><a href='#L477'>477</a>
543
- <a name='L478'></a><a href='#L478'>478</a>
544
- <a name='L479'></a><a href='#L479'>479</a>
545
- <a name='L480'></a><a href='#L480'>480</a>
546
- <a name='L481'></a><a href='#L481'>481</a>
547
- <a name='L482'></a><a href='#L482'>482</a>
548
- <a name='L483'></a><a href='#L483'>483</a>
549
- <a name='L484'></a><a href='#L484'>484</a>
550
- <a name='L485'></a><a href='#L485'>485</a>
551
- <a name='L486'></a><a href='#L486'>486</a>
552
- <a name='L487'></a><a href='#L487'>487</a>
553
- <a name='L488'></a><a href='#L488'>488</a>
554
- <a name='L489'></a><a href='#L489'>489</a>
555
- <a name='L490'></a><a href='#L490'>490</a>
556
- <a name='L491'></a><a href='#L491'>491</a>
557
- <a name='L492'></a><a href='#L492'>492</a>
558
- <a name='L493'></a><a href='#L493'>493</a>
559
- <a name='L494'></a><a href='#L494'>494</a>
560
- <a name='L495'></a><a href='#L495'>495</a>
561
- <a name='L496'></a><a href='#L496'>496</a>
562
- <a name='L497'></a><a href='#L497'>497</a>
563
- <a name='L498'></a><a href='#L498'>498</a>
564
- <a name='L499'></a><a href='#L499'>499</a>
565
- <a name='L500'></a><a href='#L500'>500</a>
566
- <a name='L501'></a><a href='#L501'>501</a>
567
- <a name='L502'></a><a href='#L502'>502</a>
568
- <a name='L503'></a><a href='#L503'>503</a>
569
- <a name='L504'></a><a href='#L504'>504</a>
570
- <a name='L505'></a><a href='#L505'>505</a>
571
- <a name='L506'></a><a href='#L506'>506</a>
572
- <a name='L507'></a><a href='#L507'>507</a>
573
- <a name='L508'></a><a href='#L508'>508</a>
574
- <a name='L509'></a><a href='#L509'>509</a>
575
- <a name='L510'></a><a href='#L510'>510</a>
576
- <a name='L511'></a><a href='#L511'>511</a>
577
- <a name='L512'></a><a href='#L512'>512</a>
578
- <a name='L513'></a><a href='#L513'>513</a>
579
- <a name='L514'></a><a href='#L514'>514</a>
580
- <a name='L515'></a><a href='#L515'>515</a>
581
- <a name='L516'></a><a href='#L516'>516</a>
582
- <a name='L517'></a><a href='#L517'>517</a>
583
- <a name='L518'></a><a href='#L518'>518</a>
584
- <a name='L519'></a><a href='#L519'>519</a>
585
- <a name='L520'></a><a href='#L520'>520</a>
586
- <a name='L521'></a><a href='#L521'>521</a>
587
- <a name='L522'></a><a href='#L522'>522</a>
588
- <a name='L523'></a><a href='#L523'>523</a>
589
- <a name='L524'></a><a href='#L524'>524</a>
590
- <a name='L525'></a><a href='#L525'>525</a>
591
- <a name='L526'></a><a href='#L526'>526</a>
592
- <a name='L527'></a><a href='#L527'>527</a>
593
- <a name='L528'></a><a href='#L528'>528</a>
594
- <a name='L529'></a><a href='#L529'>529</a>
595
- <a name='L530'></a><a href='#L530'>530</a>
596
- <a name='L531'></a><a href='#L531'>531</a>
597
- <a name='L532'></a><a href='#L532'>532</a>
598
- <a name='L533'></a><a href='#L533'>533</a>
599
- <a name='L534'></a><a href='#L534'>534</a>
600
- <a name='L535'></a><a href='#L535'>535</a>
601
- <a name='L536'></a><a href='#L536'>536</a>
602
- <a name='L537'></a><a href='#L537'>537</a>
603
- <a name='L538'></a><a href='#L538'>538</a>
604
- <a name='L539'></a><a href='#L539'>539</a>
605
- <a name='L540'></a><a href='#L540'>540</a>
606
- <a name='L541'></a><a href='#L541'>541</a>
607
- <a name='L542'></a><a href='#L542'>542</a>
608
- <a name='L543'></a><a href='#L543'>543</a>
609
- <a name='L544'></a><a href='#L544'>544</a>
610
- <a name='L545'></a><a href='#L545'>545</a>
611
- <a name='L546'></a><a href='#L546'>546</a>
612
- <a name='L547'></a><a href='#L547'>547</a>
613
- <a name='L548'></a><a href='#L548'>548</a>
614
- <a name='L549'></a><a href='#L549'>549</a>
615
- <a name='L550'></a><a href='#L550'>550</a>
616
- <a name='L551'></a><a href='#L551'>551</a>
617
- <a name='L552'></a><a href='#L552'>552</a>
618
- <a name='L553'></a><a href='#L553'>553</a>
619
- <a name='L554'></a><a href='#L554'>554</a>
620
- <a name='L555'></a><a href='#L555'>555</a>
621
- <a name='L556'></a><a href='#L556'>556</a>
622
- <a name='L557'></a><a href='#L557'>557</a>
623
- <a name='L558'></a><a href='#L558'>558</a>
624
- <a name='L559'></a><a href='#L559'>559</a>
625
- <a name='L560'></a><a href='#L560'>560</a>
626
- <a name='L561'></a><a href='#L561'>561</a>
627
- <a name='L562'></a><a href='#L562'>562</a>
628
- <a name='L563'></a><a href='#L563'>563</a>
629
- <a name='L564'></a><a href='#L564'>564</a>
630
- <a name='L565'></a><a href='#L565'>565</a>
631
- <a name='L566'></a><a href='#L566'>566</a>
632
- <a name='L567'></a><a href='#L567'>567</a>
633
- <a name='L568'></a><a href='#L568'>568</a>
634
- <a name='L569'></a><a href='#L569'>569</a>
635
- <a name='L570'></a><a href='#L570'>570</a>
636
- <a name='L571'></a><a href='#L571'>571</a>
637
- <a name='L572'></a><a href='#L572'>572</a>
638
- <a name='L573'></a><a href='#L573'>573</a>
639
- <a name='L574'></a><a href='#L574'>574</a>
640
- <a name='L575'></a><a href='#L575'>575</a>
641
- <a name='L576'></a><a href='#L576'>576</a>
642
- <a name='L577'></a><a href='#L577'>577</a>
643
- <a name='L578'></a><a href='#L578'>578</a>
644
- <a name='L579'></a><a href='#L579'>579</a>
645
- <a name='L580'></a><a href='#L580'>580</a>
646
- <a name='L581'></a><a href='#L581'>581</a>
647
- <a name='L582'></a><a href='#L582'>582</a>
648
- <a name='L583'></a><a href='#L583'>583</a>
649
- <a name='L584'></a><a href='#L584'>584</a>
650
- <a name='L585'></a><a href='#L585'>585</a>
651
- <a name='L586'></a><a href='#L586'>586</a>
652
- <a name='L587'></a><a href='#L587'>587</a>
653
- <a name='L588'></a><a href='#L588'>588</a>
654
- <a name='L589'></a><a href='#L589'>589</a>
655
- <a name='L590'></a><a href='#L590'>590</a>
656
- <a name='L591'></a><a href='#L591'>591</a>
657
- <a name='L592'></a><a href='#L592'>592</a>
658
- <a name='L593'></a><a href='#L593'>593</a>
659
- <a name='L594'></a><a href='#L594'>594</a>
660
- <a name='L595'></a><a href='#L595'>595</a>
661
- <a name='L596'></a><a href='#L596'>596</a>
662
- <a name='L597'></a><a href='#L597'>597</a>
663
- <a name='L598'></a><a href='#L598'>598</a>
664
- <a name='L599'></a><a href='#L599'>599</a>
665
- <a name='L600'></a><a href='#L600'>600</a>
666
- <a name='L601'></a><a href='#L601'>601</a>
667
- <a name='L602'></a><a href='#L602'>602</a>
668
- <a name='L603'></a><a href='#L603'>603</a>
669
- <a name='L604'></a><a href='#L604'>604</a>
670
- <a name='L605'></a><a href='#L605'>605</a>
671
- <a name='L606'></a><a href='#L606'>606</a>
672
- <a name='L607'></a><a href='#L607'>607</a>
673
- <a name='L608'></a><a href='#L608'>608</a>
674
- <a name='L609'></a><a href='#L609'>609</a>
675
- <a name='L610'></a><a href='#L610'>610</a>
676
- <a name='L611'></a><a href='#L611'>611</a>
677
- <a name='L612'></a><a href='#L612'>612</a>
678
- <a name='L613'></a><a href='#L613'>613</a>
679
- <a name='L614'></a><a href='#L614'>614</a>
680
- <a name='L615'></a><a href='#L615'>615</a>
681
- <a name='L616'></a><a href='#L616'>616</a>
682
- <a name='L617'></a><a href='#L617'>617</a>
683
- <a name='L618'></a><a href='#L618'>618</a>
684
- <a name='L619'></a><a href='#L619'>619</a>
685
- <a name='L620'></a><a href='#L620'>620</a>
686
- <a name='L621'></a><a href='#L621'>621</a>
687
- <a name='L622'></a><a href='#L622'>622</a>
688
- <a name='L623'></a><a href='#L623'>623</a>
689
- <a name='L624'></a><a href='#L624'>624</a>
690
- <a name='L625'></a><a href='#L625'>625</a>
691
- <a name='L626'></a><a href='#L626'>626</a>
692
- <a name='L627'></a><a href='#L627'>627</a>
693
- <a name='L628'></a><a href='#L628'>628</a>
694
- <a name='L629'></a><a href='#L629'>629</a>
695
- <a name='L630'></a><a href='#L630'>630</a>
696
- <a name='L631'></a><a href='#L631'>631</a>
697
- <a name='L632'></a><a href='#L632'>632</a>
698
- <a name='L633'></a><a href='#L633'>633</a>
699
- <a name='L634'></a><a href='#L634'>634</a>
700
- <a name='L635'></a><a href='#L635'>635</a>
701
- <a name='L636'></a><a href='#L636'>636</a>
702
- <a name='L637'></a><a href='#L637'>637</a>
703
- <a name='L638'></a><a href='#L638'>638</a>
704
- <a name='L639'></a><a href='#L639'>639</a>
705
- <a name='L640'></a><a href='#L640'>640</a>
706
- <a name='L641'></a><a href='#L641'>641</a>
707
- <a name='L642'></a><a href='#L642'>642</a>
708
- <a name='L643'></a><a href='#L643'>643</a>
709
- <a name='L644'></a><a href='#L644'>644</a>
710
- <a name='L645'></a><a href='#L645'>645</a>
711
- <a name='L646'></a><a href='#L646'>646</a>
712
- <a name='L647'></a><a href='#L647'>647</a>
713
- <a name='L648'></a><a href='#L648'>648</a>
714
- <a name='L649'></a><a href='#L649'>649</a>
715
- <a name='L650'></a><a href='#L650'>650</a>
716
- <a name='L651'></a><a href='#L651'>651</a>
717
- <a name='L652'></a><a href='#L652'>652</a>
718
- <a name='L653'></a><a href='#L653'>653</a>
719
- <a name='L654'></a><a href='#L654'>654</a>
720
- <a name='L655'></a><a href='#L655'>655</a>
721
- <a name='L656'></a><a href='#L656'>656</a>
722
- <a name='L657'></a><a href='#L657'>657</a>
723
- <a name='L658'></a><a href='#L658'>658</a>
724
- <a name='L659'></a><a href='#L659'>659</a>
725
- <a name='L660'></a><a href='#L660'>660</a>
726
- <a name='L661'></a><a href='#L661'>661</a>
727
- <a name='L662'></a><a href='#L662'>662</a>
728
- <a name='L663'></a><a href='#L663'>663</a>
729
- <a name='L664'></a><a href='#L664'>664</a>
730
- <a name='L665'></a><a href='#L665'>665</a>
731
- <a name='L666'></a><a href='#L666'>666</a>
732
- <a name='L667'></a><a href='#L667'>667</a>
733
- <a name='L668'></a><a href='#L668'>668</a>
734
- <a name='L669'></a><a href='#L669'>669</a>
735
- <a name='L670'></a><a href='#L670'>670</a>
736
- <a name='L671'></a><a href='#L671'>671</a>
737
- <a name='L672'></a><a href='#L672'>672</a>
738
- <a name='L673'></a><a href='#L673'>673</a>
739
- <a name='L674'></a><a href='#L674'>674</a>
740
- <a name='L675'></a><a href='#L675'>675</a>
741
- <a name='L676'></a><a href='#L676'>676</a>
742
- <a name='L677'></a><a href='#L677'>677</a>
743
- <a name='L678'></a><a href='#L678'>678</a>
744
- <a name='L679'></a><a href='#L679'>679</a>
745
- <a name='L680'></a><a href='#L680'>680</a>
746
- <a name='L681'></a><a href='#L681'>681</a>
747
- <a name='L682'></a><a href='#L682'>682</a>
748
- <a name='L683'></a><a href='#L683'>683</a>
749
- <a name='L684'></a><a href='#L684'>684</a>
750
- <a name='L685'></a><a href='#L685'>685</a>
751
- <a name='L686'></a><a href='#L686'>686</a>
752
- <a name='L687'></a><a href='#L687'>687</a>
753
- <a name='L688'></a><a href='#L688'>688</a>
754
- <a name='L689'></a><a href='#L689'>689</a>
755
- <a name='L690'></a><a href='#L690'>690</a>
756
- <a name='L691'></a><a href='#L691'>691</a>
757
- <a name='L692'></a><a href='#L692'>692</a>
758
- <a name='L693'></a><a href='#L693'>693</a>
759
- <a name='L694'></a><a href='#L694'>694</a>
760
- <a name='L695'></a><a href='#L695'>695</a>
761
- <a name='L696'></a><a href='#L696'>696</a>
762
- <a name='L697'></a><a href='#L697'>697</a>
763
- <a name='L698'></a><a href='#L698'>698</a>
764
- <a name='L699'></a><a href='#L699'>699</a>
765
- <a name='L700'></a><a href='#L700'>700</a>
766
- <a name='L701'></a><a href='#L701'>701</a>
767
- <a name='L702'></a><a href='#L702'>702</a>
768
- <a name='L703'></a><a href='#L703'>703</a>
769
- <a name='L704'></a><a href='#L704'>704</a>
770
- <a name='L705'></a><a href='#L705'>705</a>
771
- <a name='L706'></a><a href='#L706'>706</a>
772
- <a name='L707'></a><a href='#L707'>707</a>
773
- <a name='L708'></a><a href='#L708'>708</a>
774
- <a name='L709'></a><a href='#L709'>709</a>
775
- <a name='L710'></a><a href='#L710'>710</a>
776
- <a name='L711'></a><a href='#L711'>711</a>
777
- <a name='L712'></a><a href='#L712'>712</a>
778
- <a name='L713'></a><a href='#L713'>713</a>
779
- <a name='L714'></a><a href='#L714'>714</a>
780
- <a name='L715'></a><a href='#L715'>715</a>
781
- <a name='L716'></a><a href='#L716'>716</a>
782
- <a name='L717'></a><a href='#L717'>717</a>
783
- <a name='L718'></a><a href='#L718'>718</a>
784
- <a name='L719'></a><a href='#L719'>719</a>
785
- <a name='L720'></a><a href='#L720'>720</a>
786
- <a name='L721'></a><a href='#L721'>721</a>
787
- <a name='L722'></a><a href='#L722'>722</a>
788
- <a name='L723'></a><a href='#L723'>723</a>
789
- <a name='L724'></a><a href='#L724'>724</a>
790
- <a name='L725'></a><a href='#L725'>725</a>
791
- <a name='L726'></a><a href='#L726'>726</a>
792
- <a name='L727'></a><a href='#L727'>727</a>
793
- <a name='L728'></a><a href='#L728'>728</a>
794
- <a name='L729'></a><a href='#L729'>729</a>
795
- <a name='L730'></a><a href='#L730'>730</a>
796
- <a name='L731'></a><a href='#L731'>731</a>
797
- <a name='L732'></a><a href='#L732'>732</a>
798
- <a name='L733'></a><a href='#L733'>733</a>
799
- <a name='L734'></a><a href='#L734'>734</a>
800
- <a name='L735'></a><a href='#L735'>735</a>
801
- <a name='L736'></a><a href='#L736'>736</a>
802
- <a name='L737'></a><a href='#L737'>737</a>
803
- <a name='L738'></a><a href='#L738'>738</a>
804
- <a name='L739'></a><a href='#L739'>739</a>
805
- <a name='L740'></a><a href='#L740'>740</a>
806
- <a name='L741'></a><a href='#L741'>741</a>
807
- <a name='L742'></a><a href='#L742'>742</a>
808
- <a name='L743'></a><a href='#L743'>743</a>
809
- <a name='L744'></a><a href='#L744'>744</a>
810
- <a name='L745'></a><a href='#L745'>745</a>
811
- <a name='L746'></a><a href='#L746'>746</a>
812
- <a name='L747'></a><a href='#L747'>747</a>
813
- <a name='L748'></a><a href='#L748'>748</a>
814
- <a name='L749'></a><a href='#L749'>749</a>
815
- <a name='L750'></a><a href='#L750'>750</a>
816
- <a name='L751'></a><a href='#L751'>751</a>
817
- <a name='L752'></a><a href='#L752'>752</a>
818
- <a name='L753'></a><a href='#L753'>753</a>
819
- <a name='L754'></a><a href='#L754'>754</a>
820
- <a name='L755'></a><a href='#L755'>755</a>
821
- <a name='L756'></a><a href='#L756'>756</a>
822
- <a name='L757'></a><a href='#L757'>757</a>
823
- <a name='L758'></a><a href='#L758'>758</a>
824
- <a name='L759'></a><a href='#L759'>759</a>
825
- <a name='L760'></a><a href='#L760'>760</a>
826
- <a name='L761'></a><a href='#L761'>761</a>
827
- <a name='L762'></a><a href='#L762'>762</a>
828
- <a name='L763'></a><a href='#L763'>763</a>
829
- <a name='L764'></a><a href='#L764'>764</a>
830
- <a name='L765'></a><a href='#L765'>765</a>
831
- <a name='L766'></a><a href='#L766'>766</a>
832
- <a name='L767'></a><a href='#L767'>767</a>
833
- <a name='L768'></a><a href='#L768'>768</a>
834
- <a name='L769'></a><a href='#L769'>769</a>
835
- <a name='L770'></a><a href='#L770'>770</a>
836
- <a name='L771'></a><a href='#L771'>771</a>
837
- <a name='L772'></a><a href='#L772'>772</a>
838
- <a name='L773'></a><a href='#L773'>773</a>
839
- <a name='L774'></a><a href='#L774'>774</a>
840
- <a name='L775'></a><a href='#L775'>775</a>
841
- <a name='L776'></a><a href='#L776'>776</a>
842
- <a name='L777'></a><a href='#L777'>777</a>
843
- <a name='L778'></a><a href='#L778'>778</a>
844
- <a name='L779'></a><a href='#L779'>779</a>
845
- <a name='L780'></a><a href='#L780'>780</a>
846
- <a name='L781'></a><a href='#L781'>781</a>
847
- <a name='L782'></a><a href='#L782'>782</a>
848
- <a name='L783'></a><a href='#L783'>783</a>
849
- <a name='L784'></a><a href='#L784'>784</a>
850
- <a name='L785'></a><a href='#L785'>785</a>
851
- <a name='L786'></a><a href='#L786'>786</a>
852
- <a name='L787'></a><a href='#L787'>787</a>
853
- <a name='L788'></a><a href='#L788'>788</a>
854
- <a name='L789'></a><a href='#L789'>789</a>
855
- <a name='L790'></a><a href='#L790'>790</a>
856
- <a name='L791'></a><a href='#L791'>791</a>
857
- <a name='L792'></a><a href='#L792'>792</a>
858
- <a name='L793'></a><a href='#L793'>793</a>
859
- <a name='L794'></a><a href='#L794'>794</a>
860
- <a name='L795'></a><a href='#L795'>795</a>
861
- <a name='L796'></a><a href='#L796'>796</a>
862
- <a name='L797'></a><a href='#L797'>797</a>
863
- <a name='L798'></a><a href='#L798'>798</a>
864
- <a name='L799'></a><a href='#L799'>799</a>
865
- <a name='L800'></a><a href='#L800'>800</a>
866
- <a name='L801'></a><a href='#L801'>801</a>
867
- <a name='L802'></a><a href='#L802'>802</a>
868
- <a name='L803'></a><a href='#L803'>803</a>
869
- <a name='L804'></a><a href='#L804'>804</a>
870
- <a name='L805'></a><a href='#L805'>805</a>
871
- <a name='L806'></a><a href='#L806'>806</a>
872
- <a name='L807'></a><a href='#L807'>807</a>
873
- <a name='L808'></a><a href='#L808'>808</a>
874
- <a name='L809'></a><a href='#L809'>809</a>
875
- <a name='L810'></a><a href='#L810'>810</a>
876
- <a name='L811'></a><a href='#L811'>811</a>
877
- <a name='L812'></a><a href='#L812'>812</a>
878
- <a name='L813'></a><a href='#L813'>813</a>
879
- <a name='L814'></a><a href='#L814'>814</a>
880
- <a name='L815'></a><a href='#L815'>815</a>
881
- <a name='L816'></a><a href='#L816'>816</a>
882
- <a name='L817'></a><a href='#L817'>817</a>
883
- <a name='L818'></a><a href='#L818'>818</a>
884
- <a name='L819'></a><a href='#L819'>819</a>
885
- <a name='L820'></a><a href='#L820'>820</a>
886
- <a name='L821'></a><a href='#L821'>821</a>
887
- <a name='L822'></a><a href='#L822'>822</a>
888
- <a name='L823'></a><a href='#L823'>823</a>
889
- <a name='L824'></a><a href='#L824'>824</a>
890
- <a name='L825'></a><a href='#L825'>825</a>
891
- <a name='L826'></a><a href='#L826'>826</a>
892
- <a name='L827'></a><a href='#L827'>827</a>
893
- <a name='L828'></a><a href='#L828'>828</a>
894
- <a name='L829'></a><a href='#L829'>829</a>
895
- <a name='L830'></a><a href='#L830'>830</a>
896
- <a name='L831'></a><a href='#L831'>831</a>
897
- <a name='L832'></a><a href='#L832'>832</a>
898
- <a name='L833'></a><a href='#L833'>833</a>
899
- <a name='L834'></a><a href='#L834'>834</a>
900
- <a name='L835'></a><a href='#L835'>835</a>
901
- <a name='L836'></a><a href='#L836'>836</a>
902
- <a name='L837'></a><a href='#L837'>837</a>
903
- <a name='L838'></a><a href='#L838'>838</a>
904
- <a name='L839'></a><a href='#L839'>839</a>
905
- <a name='L840'></a><a href='#L840'>840</a>
906
- <a name='L841'></a><a href='#L841'>841</a>
907
- <a name='L842'></a><a href='#L842'>842</a>
908
- <a name='L843'></a><a href='#L843'>843</a>
909
- <a name='L844'></a><a href='#L844'>844</a>
910
- <a name='L845'></a><a href='#L845'>845</a>
911
- <a name='L846'></a><a href='#L846'>846</a>
912
- <a name='L847'></a><a href='#L847'>847</a>
913
- <a name='L848'></a><a href='#L848'>848</a>
914
- <a name='L849'></a><a href='#L849'>849</a>
915
- <a name='L850'></a><a href='#L850'>850</a>
916
- <a name='L851'></a><a href='#L851'>851</a>
917
- <a name='L852'></a><a href='#L852'>852</a>
918
- <a name='L853'></a><a href='#L853'>853</a>
919
- <a name='L854'></a><a href='#L854'>854</a>
920
- <a name='L855'></a><a href='#L855'>855</a>
921
- <a name='L856'></a><a href='#L856'>856</a>
922
- <a name='L857'></a><a href='#L857'>857</a>
923
- <a name='L858'></a><a href='#L858'>858</a>
924
- <a name='L859'></a><a href='#L859'>859</a>
925
- <a name='L860'></a><a href='#L860'>860</a>
926
- <a name='L861'></a><a href='#L861'>861</a>
927
- <a name='L862'></a><a href='#L862'>862</a>
928
- <a name='L863'></a><a href='#L863'>863</a>
929
- <a name='L864'></a><a href='#L864'>864</a>
930
- <a name='L865'></a><a href='#L865'>865</a>
931
- <a name='L866'></a><a href='#L866'>866</a>
932
- <a name='L867'></a><a href='#L867'>867</a>
933
- <a name='L868'></a><a href='#L868'>868</a>
934
- <a name='L869'></a><a href='#L869'>869</a>
935
- <a name='L870'></a><a href='#L870'>870</a>
936
- <a name='L871'></a><a href='#L871'>871</a>
937
- <a name='L872'></a><a href='#L872'>872</a>
938
- <a name='L873'></a><a href='#L873'>873</a>
939
- <a name='L874'></a><a href='#L874'>874</a>
940
- <a name='L875'></a><a href='#L875'>875</a>
941
- <a name='L876'></a><a href='#L876'>876</a>
942
- <a name='L877'></a><a href='#L877'>877</a>
943
- <a name='L878'></a><a href='#L878'>878</a>
944
- <a name='L879'></a><a href='#L879'>879</a>
945
- <a name='L880'></a><a href='#L880'>880</a>
946
- <a name='L881'></a><a href='#L881'>881</a>
947
- <a name='L882'></a><a href='#L882'>882</a>
948
- <a name='L883'></a><a href='#L883'>883</a>
949
- <a name='L884'></a><a href='#L884'>884</a>
950
- <a name='L885'></a><a href='#L885'>885</a>
951
- <a name='L886'></a><a href='#L886'>886</a>
952
- <a name='L887'></a><a href='#L887'>887</a>
953
- <a name='L888'></a><a href='#L888'>888</a>
954
- <a name='L889'></a><a href='#L889'>889</a>
955
- <a name='L890'></a><a href='#L890'>890</a>
956
- <a name='L891'></a><a href='#L891'>891</a>
957
- <a name='L892'></a><a href='#L892'>892</a>
958
- <a name='L893'></a><a href='#L893'>893</a>
959
- <a name='L894'></a><a href='#L894'>894</a>
960
- <a name='L895'></a><a href='#L895'>895</a>
961
- <a name='L896'></a><a href='#L896'>896</a>
962
- <a name='L897'></a><a href='#L897'>897</a>
963
- <a name='L898'></a><a href='#L898'>898</a>
964
- <a name='L899'></a><a href='#L899'>899</a>
965
- <a name='L900'></a><a href='#L900'>900</a>
966
- <a name='L901'></a><a href='#L901'>901</a>
967
- <a name='L902'></a><a href='#L902'>902</a>
968
- <a name='L903'></a><a href='#L903'>903</a>
969
- <a name='L904'></a><a href='#L904'>904</a>
970
- <a name='L905'></a><a href='#L905'>905</a>
971
- <a name='L906'></a><a href='#L906'>906</a>
972
- <a name='L907'></a><a href='#L907'>907</a>
973
- <a name='L908'></a><a href='#L908'>908</a>
974
- <a name='L909'></a><a href='#L909'>909</a>
975
- <a name='L910'></a><a href='#L910'>910</a>
976
- <a name='L911'></a><a href='#L911'>911</a>
977
- <a name='L912'></a><a href='#L912'>912</a>
978
- <a name='L913'></a><a href='#L913'>913</a>
979
- <a name='L914'></a><a href='#L914'>914</a>
980
- <a name='L915'></a><a href='#L915'>915</a>
981
- <a name='L916'></a><a href='#L916'>916</a>
982
- <a name='L917'></a><a href='#L917'>917</a>
983
- <a name='L918'></a><a href='#L918'>918</a>
984
- <a name='L919'></a><a href='#L919'>919</a>
985
- <a name='L920'></a><a href='#L920'>920</a>
986
- <a name='L921'></a><a href='#L921'>921</a>
987
- <a name='L922'></a><a href='#L922'>922</a>
988
- <a name='L923'></a><a href='#L923'>923</a>
989
- <a name='L924'></a><a href='#L924'>924</a>
990
- <a name='L925'></a><a href='#L925'>925</a>
991
- <a name='L926'></a><a href='#L926'>926</a>
992
- <a name='L927'></a><a href='#L927'>927</a>
993
- <a name='L928'></a><a href='#L928'>928</a>
994
- <a name='L929'></a><a href='#L929'>929</a>
995
- <a name='L930'></a><a href='#L930'>930</a>
996
- <a name='L931'></a><a href='#L931'>931</a>
997
- <a name='L932'></a><a href='#L932'>932</a>
998
- <a name='L933'></a><a href='#L933'>933</a>
999
- <a name='L934'></a><a href='#L934'>934</a>
1000
- <a name='L935'></a><a href='#L935'>935</a>
1001
- <a name='L936'></a><a href='#L936'>936</a>
1002
- <a name='L937'></a><a href='#L937'>937</a>
1003
- <a name='L938'></a><a href='#L938'>938</a>
1004
- <a name='L939'></a><a href='#L939'>939</a>
1005
- <a name='L940'></a><a href='#L940'>940</a>
1006
- <a name='L941'></a><a href='#L941'>941</a>
1007
- <a name='L942'></a><a href='#L942'>942</a>
1008
- <a name='L943'></a><a href='#L943'>943</a>
1009
- <a name='L944'></a><a href='#L944'>944</a>
1010
- <a name='L945'></a><a href='#L945'>945</a>
1011
- <a name='L946'></a><a href='#L946'>946</a>
1012
- <a name='L947'></a><a href='#L947'>947</a>
1013
- <a name='L948'></a><a href='#L948'>948</a>
1014
- <a name='L949'></a><a href='#L949'>949</a>
1015
- <a name='L950'></a><a href='#L950'>950</a>
1016
- <a name='L951'></a><a href='#L951'>951</a>
1017
- <a name='L952'></a><a href='#L952'>952</a>
1018
- <a name='L953'></a><a href='#L953'>953</a>
1019
- <a name='L954'></a><a href='#L954'>954</a>
1020
- <a name='L955'></a><a href='#L955'>955</a>
1021
- <a name='L956'></a><a href='#L956'>956</a>
1022
- <a name='L957'></a><a href='#L957'>957</a>
1023
- <a name='L958'></a><a href='#L958'>958</a>
1024
- <a name='L959'></a><a href='#L959'>959</a>
1025
- <a name='L960'></a><a href='#L960'>960</a>
1026
- <a name='L961'></a><a href='#L961'>961</a>
1027
- <a name='L962'></a><a href='#L962'>962</a>
1028
- <a name='L963'></a><a href='#L963'>963</a>
1029
- <a name='L964'></a><a href='#L964'>964</a>
1030
- <a name='L965'></a><a href='#L965'>965</a>
1031
- <a name='L966'></a><a href='#L966'>966</a>
1032
- <a name='L967'></a><a href='#L967'>967</a>
1033
- <a name='L968'></a><a href='#L968'>968</a>
1034
- <a name='L969'></a><a href='#L969'>969</a>
1035
- <a name='L970'></a><a href='#L970'>970</a>
1036
- <a name='L971'></a><a href='#L971'>971</a>
1037
- <a name='L972'></a><a href='#L972'>972</a>
1038
- <a name='L973'></a><a href='#L973'>973</a>
1039
- <a name='L974'></a><a href='#L974'>974</a>
1040
- <a name='L975'></a><a href='#L975'>975</a>
1041
- <a name='L976'></a><a href='#L976'>976</a>
1042
- <a name='L977'></a><a href='#L977'>977</a>
1043
- <a name='L978'></a><a href='#L978'>978</a>
1044
- <a name='L979'></a><a href='#L979'>979</a>
1045
- <a name='L980'></a><a href='#L980'>980</a>
1046
- <a name='L981'></a><a href='#L981'>981</a>
1047
- <a name='L982'></a><a href='#L982'>982</a>
1048
- <a name='L983'></a><a href='#L983'>983</a>
1049
- <a name='L984'></a><a href='#L984'>984</a>
1050
- <a name='L985'></a><a href='#L985'>985</a>
1051
- <a name='L986'></a><a href='#L986'>986</a>
1052
- <a name='L987'></a><a href='#L987'>987</a>
1053
- <a name='L988'></a><a href='#L988'>988</a>
1054
- <a name='L989'></a><a href='#L989'>989</a>
1055
- <a name='L990'></a><a href='#L990'>990</a>
1056
- <a name='L991'></a><a href='#L991'>991</a>
1057
- <a name='L992'></a><a href='#L992'>992</a>
1058
- <a name='L993'></a><a href='#L993'>993</a>
1059
- <a name='L994'></a><a href='#L994'>994</a>
1060
- <a name='L995'></a><a href='#L995'>995</a>
1061
- <a name='L996'></a><a href='#L996'>996</a>
1062
- <a name='L997'></a><a href='#L997'>997</a>
1063
- <a name='L998'></a><a href='#L998'>998</a>
1064
- <a name='L999'></a><a href='#L999'>999</a>
1065
- <a name='L1000'></a><a href='#L1000'>1000</a>
1066
- <a name='L1001'></a><a href='#L1001'>1001</a>
1067
- <a name='L1002'></a><a href='#L1002'>1002</a>
1068
- <a name='L1003'></a><a href='#L1003'>1003</a>
1069
- <a name='L1004'></a><a href='#L1004'>1004</a>
1070
- <a name='L1005'></a><a href='#L1005'>1005</a>
1071
- <a name='L1006'></a><a href='#L1006'>1006</a>
1072
- <a name='L1007'></a><a href='#L1007'>1007</a>
1073
- <a name='L1008'></a><a href='#L1008'>1008</a>
1074
- <a name='L1009'></a><a href='#L1009'>1009</a>
1075
- <a name='L1010'></a><a href='#L1010'>1010</a>
1076
- <a name='L1011'></a><a href='#L1011'>1011</a>
1077
- <a name='L1012'></a><a href='#L1012'>1012</a>
1078
- <a name='L1013'></a><a href='#L1013'>1013</a>
1079
- <a name='L1014'></a><a href='#L1014'>1014</a>
1080
- <a name='L1015'></a><a href='#L1015'>1015</a>
1081
- <a name='L1016'></a><a href='#L1016'>1016</a>
1082
- <a name='L1017'></a><a href='#L1017'>1017</a>
1083
- <a name='L1018'></a><a href='#L1018'>1018</a>
1084
- <a name='L1019'></a><a href='#L1019'>1019</a>
1085
- <a name='L1020'></a><a href='#L1020'>1020</a>
1086
- <a name='L1021'></a><a href='#L1021'>1021</a>
1087
- <a name='L1022'></a><a href='#L1022'>1022</a>
1088
- <a name='L1023'></a><a href='#L1023'>1023</a>
1089
- <a name='L1024'></a><a href='#L1024'>1024</a>
1090
- <a name='L1025'></a><a href='#L1025'>1025</a>
1091
- <a name='L1026'></a><a href='#L1026'>1026</a>
1092
- <a name='L1027'></a><a href='#L1027'>1027</a>
1093
- <a name='L1028'></a><a href='#L1028'>1028</a>
1094
- <a name='L1029'></a><a href='#L1029'>1029</a>
1095
- <a name='L1030'></a><a href='#L1030'>1030</a>
1096
- <a name='L1031'></a><a href='#L1031'>1031</a>
1097
- <a name='L1032'></a><a href='#L1032'>1032</a>
1098
- <a name='L1033'></a><a href='#L1033'>1033</a>
1099
- <a name='L1034'></a><a href='#L1034'>1034</a>
1100
- <a name='L1035'></a><a href='#L1035'>1035</a>
1101
- <a name='L1036'></a><a href='#L1036'>1036</a>
1102
- <a name='L1037'></a><a href='#L1037'>1037</a>
1103
- <a name='L1038'></a><a href='#L1038'>1038</a>
1104
- <a name='L1039'></a><a href='#L1039'>1039</a>
1105
- <a name='L1040'></a><a href='#L1040'>1040</a>
1106
- <a name='L1041'></a><a href='#L1041'>1041</a>
1107
- <a name='L1042'></a><a href='#L1042'>1042</a>
1108
- <a name='L1043'></a><a href='#L1043'>1043</a>
1109
- <a name='L1044'></a><a href='#L1044'>1044</a>
1110
- <a name='L1045'></a><a href='#L1045'>1045</a>
1111
- <a name='L1046'></a><a href='#L1046'>1046</a>
1112
- <a name='L1047'></a><a href='#L1047'>1047</a>
1113
- <a name='L1048'></a><a href='#L1048'>1048</a>
1114
- <a name='L1049'></a><a href='#L1049'>1049</a>
1115
- <a name='L1050'></a><a href='#L1050'>1050</a>
1116
- <a name='L1051'></a><a href='#L1051'>1051</a>
1117
- <a name='L1052'></a><a href='#L1052'>1052</a>
1118
- <a name='L1053'></a><a href='#L1053'>1053</a>
1119
- <a name='L1054'></a><a href='#L1054'>1054</a>
1120
- <a name='L1055'></a><a href='#L1055'>1055</a>
1121
- <a name='L1056'></a><a href='#L1056'>1056</a>
1122
- <a name='L1057'></a><a href='#L1057'>1057</a>
1123
- <a name='L1058'></a><a href='#L1058'>1058</a>
1124
- <a name='L1059'></a><a href='#L1059'>1059</a>
1125
- <a name='L1060'></a><a href='#L1060'>1060</a>
1126
- <a name='L1061'></a><a href='#L1061'>1061</a>
1127
- <a name='L1062'></a><a href='#L1062'>1062</a>
1128
- <a name='L1063'></a><a href='#L1063'>1063</a>
1129
- <a name='L1064'></a><a href='#L1064'>1064</a>
1130
- <a name='L1065'></a><a href='#L1065'>1065</a>
1131
- <a name='L1066'></a><a href='#L1066'>1066</a>
1132
- <a name='L1067'></a><a href='#L1067'>1067</a>
1133
- <a name='L1068'></a><a href='#L1068'>1068</a>
1134
- <a name='L1069'></a><a href='#L1069'>1069</a>
1135
- <a name='L1070'></a><a href='#L1070'>1070</a>
1136
- <a name='L1071'></a><a href='#L1071'>1071</a>
1137
- <a name='L1072'></a><a href='#L1072'>1072</a>
1138
- <a name='L1073'></a><a href='#L1073'>1073</a>
1139
- <a name='L1074'></a><a href='#L1074'>1074</a>
1140
- <a name='L1075'></a><a href='#L1075'>1075</a>
1141
- <a name='L1076'></a><a href='#L1076'>1076</a>
1142
- <a name='L1077'></a><a href='#L1077'>1077</a>
1143
- <a name='L1078'></a><a href='#L1078'>1078</a>
1144
- <a name='L1079'></a><a href='#L1079'>1079</a>
1145
- <a name='L1080'></a><a href='#L1080'>1080</a>
1146
- <a name='L1081'></a><a href='#L1081'>1081</a>
1147
- <a name='L1082'></a><a href='#L1082'>1082</a>
1148
- <a name='L1083'></a><a href='#L1083'>1083</a>
1149
- <a name='L1084'></a><a href='#L1084'>1084</a>
1150
- <a name='L1085'></a><a href='#L1085'>1085</a>
1151
- <a name='L1086'></a><a href='#L1086'>1086</a>
1152
- <a name='L1087'></a><a href='#L1087'>1087</a>
1153
- <a name='L1088'></a><a href='#L1088'>1088</a>
1154
- <a name='L1089'></a><a href='#L1089'>1089</a>
1155
- <a name='L1090'></a><a href='#L1090'>1090</a>
1156
- <a name='L1091'></a><a href='#L1091'>1091</a>
1157
- <a name='L1092'></a><a href='#L1092'>1092</a>
1158
- <a name='L1093'></a><a href='#L1093'>1093</a>
1159
- <a name='L1094'></a><a href='#L1094'>1094</a>
1160
- <a name='L1095'></a><a href='#L1095'>1095</a>
1161
- <a name='L1096'></a><a href='#L1096'>1096</a>
1162
- <a name='L1097'></a><a href='#L1097'>1097</a>
1163
- <a name='L1098'></a><a href='#L1098'>1098</a>
1164
- <a name='L1099'></a><a href='#L1099'>1099</a>
1165
- <a name='L1100'></a><a href='#L1100'>1100</a>
1166
- <a name='L1101'></a><a href='#L1101'>1101</a>
1167
- <a name='L1102'></a><a href='#L1102'>1102</a>
1168
- <a name='L1103'></a><a href='#L1103'>1103</a>
1169
- <a name='L1104'></a><a href='#L1104'>1104</a>
1170
- <a name='L1105'></a><a href='#L1105'>1105</a>
1171
- <a name='L1106'></a><a href='#L1106'>1106</a>
1172
- <a name='L1107'></a><a href='#L1107'>1107</a>
1173
- <a name='L1108'></a><a href='#L1108'>1108</a>
1174
- <a name='L1109'></a><a href='#L1109'>1109</a>
1175
- <a name='L1110'></a><a href='#L1110'>1110</a>
1176
- <a name='L1111'></a><a href='#L1111'>1111</a>
1177
- <a name='L1112'></a><a href='#L1112'>1112</a>
1178
- <a name='L1113'></a><a href='#L1113'>1113</a>
1179
- <a name='L1114'></a><a href='#L1114'>1114</a>
1180
- <a name='L1115'></a><a href='#L1115'>1115</a>
1181
- <a name='L1116'></a><a href='#L1116'>1116</a>
1182
- <a name='L1117'></a><a href='#L1117'>1117</a>
1183
- <a name='L1118'></a><a href='#L1118'>1118</a>
1184
- <a name='L1119'></a><a href='#L1119'>1119</a>
1185
- <a name='L1120'></a><a href='#L1120'>1120</a>
1186
- <a name='L1121'></a><a href='#L1121'>1121</a>
1187
- <a name='L1122'></a><a href='#L1122'>1122</a>
1188
- <a name='L1123'></a><a href='#L1123'>1123</a>
1189
- <a name='L1124'></a><a href='#L1124'>1124</a>
1190
- <a name='L1125'></a><a href='#L1125'>1125</a>
1191
- <a name='L1126'></a><a href='#L1126'>1126</a>
1192
- <a name='L1127'></a><a href='#L1127'>1127</a>
1193
- <a name='L1128'></a><a href='#L1128'>1128</a>
1194
- <a name='L1129'></a><a href='#L1129'>1129</a>
1195
- <a name='L1130'></a><a href='#L1130'>1130</a>
1196
- <a name='L1131'></a><a href='#L1131'>1131</a>
1197
- <a name='L1132'></a><a href='#L1132'>1132</a>
1198
- <a name='L1133'></a><a href='#L1133'>1133</a>
1199
- <a name='L1134'></a><a href='#L1134'>1134</a>
1200
- <a name='L1135'></a><a href='#L1135'>1135</a>
1201
- <a name='L1136'></a><a href='#L1136'>1136</a>
1202
- <a name='L1137'></a><a href='#L1137'>1137</a>
1203
- <a name='L1138'></a><a href='#L1138'>1138</a>
1204
- <a name='L1139'></a><a href='#L1139'>1139</a>
1205
- <a name='L1140'></a><a href='#L1140'>1140</a>
1206
- <a name='L1141'></a><a href='#L1141'>1141</a>
1207
- <a name='L1142'></a><a href='#L1142'>1142</a>
1208
- <a name='L1143'></a><a href='#L1143'>1143</a>
1209
- <a name='L1144'></a><a href='#L1144'>1144</a>
1210
- <a name='L1145'></a><a href='#L1145'>1145</a>
1211
- <a name='L1146'></a><a href='#L1146'>1146</a>
1212
- <a name='L1147'></a><a href='#L1147'>1147</a>
1213
- <a name='L1148'></a><a href='#L1148'>1148</a>
1214
- <a name='L1149'></a><a href='#L1149'>1149</a>
1215
- <a name='L1150'></a><a href='#L1150'>1150</a>
1216
- <a name='L1151'></a><a href='#L1151'>1151</a>
1217
- <a name='L1152'></a><a href='#L1152'>1152</a>
1218
- <a name='L1153'></a><a href='#L1153'>1153</a>
1219
- <a name='L1154'></a><a href='#L1154'>1154</a>
1220
- <a name='L1155'></a><a href='#L1155'>1155</a>
1221
- <a name='L1156'></a><a href='#L1156'>1156</a>
1222
- <a name='L1157'></a><a href='#L1157'>1157</a>
1223
- <a name='L1158'></a><a href='#L1158'>1158</a>
1224
- <a name='L1159'></a><a href='#L1159'>1159</a>
1225
- <a name='L1160'></a><a href='#L1160'>1160</a>
1226
- <a name='L1161'></a><a href='#L1161'>1161</a>
1227
- <a name='L1162'></a><a href='#L1162'>1162</a>
1228
- <a name='L1163'></a><a href='#L1163'>1163</a>
1229
- <a name='L1164'></a><a href='#L1164'>1164</a>
1230
- <a name='L1165'></a><a href='#L1165'>1165</a>
1231
- <a name='L1166'></a><a href='#L1166'>1166</a>
1232
- <a name='L1167'></a><a href='#L1167'>1167</a>
1233
- <a name='L1168'></a><a href='#L1168'>1168</a>
1234
- <a name='L1169'></a><a href='#L1169'>1169</a>
1235
- <a name='L1170'></a><a href='#L1170'>1170</a>
1236
- <a name='L1171'></a><a href='#L1171'>1171</a>
1237
- <a name='L1172'></a><a href='#L1172'>1172</a>
1238
- <a name='L1173'></a><a href='#L1173'>1173</a>
1239
- <a name='L1174'></a><a href='#L1174'>1174</a>
1240
- <a name='L1175'></a><a href='#L1175'>1175</a>
1241
- <a name='L1176'></a><a href='#L1176'>1176</a>
1242
- <a name='L1177'></a><a href='#L1177'>1177</a>
1243
- <a name='L1178'></a><a href='#L1178'>1178</a>
1244
- <a name='L1179'></a><a href='#L1179'>1179</a>
1245
- <a name='L1180'></a><a href='#L1180'>1180</a>
1246
- <a name='L1181'></a><a href='#L1181'>1181</a>
1247
- <a name='L1182'></a><a href='#L1182'>1182</a>
1248
- <a name='L1183'></a><a href='#L1183'>1183</a>
1249
- <a name='L1184'></a><a href='#L1184'>1184</a>
1250
- <a name='L1185'></a><a href='#L1185'>1185</a>
1251
- <a name='L1186'></a><a href='#L1186'>1186</a>
1252
- <a name='L1187'></a><a href='#L1187'>1187</a>
1253
- <a name='L1188'></a><a href='#L1188'>1188</a>
1254
- <a name='L1189'></a><a href='#L1189'>1189</a>
1255
- <a name='L1190'></a><a href='#L1190'>1190</a>
1256
- <a name='L1191'></a><a href='#L1191'>1191</a>
1257
- <a name='L1192'></a><a href='#L1192'>1192</a>
1258
- <a name='L1193'></a><a href='#L1193'>1193</a>
1259
- <a name='L1194'></a><a href='#L1194'>1194</a>
1260
- <a name='L1195'></a><a href='#L1195'>1195</a>
1261
- <a name='L1196'></a><a href='#L1196'>1196</a>
1262
- <a name='L1197'></a><a href='#L1197'>1197</a>
1263
- <a name='L1198'></a><a href='#L1198'>1198</a>
1264
- <a name='L1199'></a><a href='#L1199'>1199</a>
1265
- <a name='L1200'></a><a href='#L1200'>1200</a>
1266
- <a name='L1201'></a><a href='#L1201'>1201</a>
1267
- <a name='L1202'></a><a href='#L1202'>1202</a>
1268
- <a name='L1203'></a><a href='#L1203'>1203</a>
1269
- <a name='L1204'></a><a href='#L1204'>1204</a>
1270
- <a name='L1205'></a><a href='#L1205'>1205</a>
1271
- <a name='L1206'></a><a href='#L1206'>1206</a>
1272
- <a name='L1207'></a><a href='#L1207'>1207</a>
1273
- <a name='L1208'></a><a href='#L1208'>1208</a>
1274
- <a name='L1209'></a><a href='#L1209'>1209</a>
1275
- <a name='L1210'></a><a href='#L1210'>1210</a>
1276
- <a name='L1211'></a><a href='#L1211'>1211</a>
1277
- <a name='L1212'></a><a href='#L1212'>1212</a>
1278
- <a name='L1213'></a><a href='#L1213'>1213</a>
1279
- <a name='L1214'></a><a href='#L1214'>1214</a>
1280
- <a name='L1215'></a><a href='#L1215'>1215</a>
1281
- <a name='L1216'></a><a href='#L1216'>1216</a>
1282
- <a name='L1217'></a><a href='#L1217'>1217</a>
1283
- <a name='L1218'></a><a href='#L1218'>1218</a>
1284
- <a name='L1219'></a><a href='#L1219'>1219</a>
1285
- <a name='L1220'></a><a href='#L1220'>1220</a>
1286
- <a name='L1221'></a><a href='#L1221'>1221</a>
1287
- <a name='L1222'></a><a href='#L1222'>1222</a>
1288
- <a name='L1223'></a><a href='#L1223'>1223</a>
1289
- <a name='L1224'></a><a href='#L1224'>1224</a>
1290
- <a name='L1225'></a><a href='#L1225'>1225</a>
1291
- <a name='L1226'></a><a href='#L1226'>1226</a>
1292
- <a name='L1227'></a><a href='#L1227'>1227</a>
1293
- <a name='L1228'></a><a href='#L1228'>1228</a>
1294
- <a name='L1229'></a><a href='#L1229'>1229</a>
1295
- <a name='L1230'></a><a href='#L1230'>1230</a>
1296
- <a name='L1231'></a><a href='#L1231'>1231</a>
1297
- <a name='L1232'></a><a href='#L1232'>1232</a>
1298
- <a name='L1233'></a><a href='#L1233'>1233</a>
1299
- <a name='L1234'></a><a href='#L1234'>1234</a>
1300
- <a name='L1235'></a><a href='#L1235'>1235</a>
1301
- <a name='L1236'></a><a href='#L1236'>1236</a>
1302
- <a name='L1237'></a><a href='#L1237'>1237</a>
1303
- <a name='L1238'></a><a href='#L1238'>1238</a>
1304
- <a name='L1239'></a><a href='#L1239'>1239</a>
1305
- <a name='L1240'></a><a href='#L1240'>1240</a>
1306
- <a name='L1241'></a><a href='#L1241'>1241</a>
1307
- <a name='L1242'></a><a href='#L1242'>1242</a>
1308
- <a name='L1243'></a><a href='#L1243'>1243</a>
1309
- <a name='L1244'></a><a href='#L1244'>1244</a>
1310
- <a name='L1245'></a><a href='#L1245'>1245</a>
1311
- <a name='L1246'></a><a href='#L1246'>1246</a>
1312
- <a name='L1247'></a><a href='#L1247'>1247</a>
1313
- <a name='L1248'></a><a href='#L1248'>1248</a>
1314
- <a name='L1249'></a><a href='#L1249'>1249</a>
1315
- <a name='L1250'></a><a href='#L1250'>1250</a>
1316
- <a name='L1251'></a><a href='#L1251'>1251</a>
1317
- <a name='L1252'></a><a href='#L1252'>1252</a>
1318
- <a name='L1253'></a><a href='#L1253'>1253</a>
1319
- <a name='L1254'></a><a href='#L1254'>1254</a>
1320
- <a name='L1255'></a><a href='#L1255'>1255</a>
1321
- <a name='L1256'></a><a href='#L1256'>1256</a>
1322
- <a name='L1257'></a><a href='#L1257'>1257</a>
1323
- <a name='L1258'></a><a href='#L1258'>1258</a>
1324
- <a name='L1259'></a><a href='#L1259'>1259</a>
1325
- <a name='L1260'></a><a href='#L1260'>1260</a>
1326
- <a name='L1261'></a><a href='#L1261'>1261</a>
1327
- <a name='L1262'></a><a href='#L1262'>1262</a>
1328
- <a name='L1263'></a><a href='#L1263'>1263</a>
1329
- <a name='L1264'></a><a href='#L1264'>1264</a>
1330
- <a name='L1265'></a><a href='#L1265'>1265</a>
1331
- <a name='L1266'></a><a href='#L1266'>1266</a>
1332
- <a name='L1267'></a><a href='#L1267'>1267</a>
1333
- <a name='L1268'></a><a href='#L1268'>1268</a>
1334
- <a name='L1269'></a><a href='#L1269'>1269</a>
1335
- <a name='L1270'></a><a href='#L1270'>1270</a>
1336
- <a name='L1271'></a><a href='#L1271'>1271</a>
1337
- <a name='L1272'></a><a href='#L1272'>1272</a>
1338
- <a name='L1273'></a><a href='#L1273'>1273</a>
1339
- <a name='L1274'></a><a href='#L1274'>1274</a>
1340
- <a name='L1275'></a><a href='#L1275'>1275</a>
1341
- <a name='L1276'></a><a href='#L1276'>1276</a>
1342
- <a name='L1277'></a><a href='#L1277'>1277</a>
1343
- <a name='L1278'></a><a href='#L1278'>1278</a>
1344
- <a name='L1279'></a><a href='#L1279'>1279</a>
1345
- <a name='L1280'></a><a href='#L1280'>1280</a>
1346
- <a name='L1281'></a><a href='#L1281'>1281</a>
1347
- <a name='L1282'></a><a href='#L1282'>1282</a>
1348
- <a name='L1283'></a><a href='#L1283'>1283</a>
1349
- <a name='L1284'></a><a href='#L1284'>1284</a>
1350
- <a name='L1285'></a><a href='#L1285'>1285</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">90x</span>
1351
- <span class="cline-any cline-yes">90x</span>
1352
- <span class="cline-any cline-yes">90x</span>
1353
- <span class="cline-any cline-neutral">&nbsp;</span>
1354
- <span class="cline-any cline-neutral">&nbsp;</span>
1355
- <span class="cline-any cline-neutral">&nbsp;</span>
1356
- <span class="cline-any cline-neutral">&nbsp;</span>
1357
- <span class="cline-any cline-neutral">&nbsp;</span>
1358
- <span class="cline-any cline-neutral">&nbsp;</span>
1359
- <span class="cline-any cline-neutral">&nbsp;</span>
1360
- <span class="cline-any cline-neutral">&nbsp;</span>
1361
- <span class="cline-any cline-neutral">&nbsp;</span>
1362
- <span class="cline-any cline-neutral">&nbsp;</span>
1363
- <span class="cline-any cline-neutral">&nbsp;</span>
1364
- <span class="cline-any cline-neutral">&nbsp;</span>
1365
- <span class="cline-any cline-neutral">&nbsp;</span>
1366
- <span class="cline-any cline-neutral">&nbsp;</span>
1367
- <span class="cline-any cline-neutral">&nbsp;</span>
1368
- <span class="cline-any cline-neutral">&nbsp;</span>
1369
- <span class="cline-any cline-neutral">&nbsp;</span>
1370
- <span class="cline-any cline-neutral">&nbsp;</span>
1371
- <span class="cline-any cline-neutral">&nbsp;</span>
1372
- <span class="cline-any cline-neutral">&nbsp;</span>
1373
- <span class="cline-any cline-neutral">&nbsp;</span>
1374
- <span class="cline-any cline-neutral">&nbsp;</span>
1375
- <span class="cline-any cline-yes">90x</span>
1376
- <span class="cline-any cline-neutral">&nbsp;</span>
1377
- <span class="cline-any cline-neutral">&nbsp;</span>
1378
- <span class="cline-any cline-neutral">&nbsp;</span>
1379
- <span class="cline-any cline-neutral">&nbsp;</span>
1380
- <span class="cline-any cline-neutral">&nbsp;</span>
1381
- <span class="cline-any cline-yes">90x</span>
1382
- <span class="cline-any cline-yes">90x</span>
1383
- <span class="cline-any cline-yes">90x</span>
1384
- <span class="cline-any cline-yes">90x</span>
1385
- <span class="cline-any cline-yes">90x</span>
1386
- <span class="cline-any cline-yes">90x</span>
1387
- <span class="cline-any cline-yes">90x</span>
1388
- <span class="cline-any cline-yes">90x</span>
1389
- <span class="cline-any cline-neutral">&nbsp;</span>
1390
- <span class="cline-any cline-neutral">&nbsp;</span>
1391
- <span class="cline-any cline-yes">90x</span>
1392
- <span class="cline-any cline-neutral">&nbsp;</span>
1393
- <span class="cline-any cline-neutral">&nbsp;</span>
1394
- <span class="cline-any cline-neutral">&nbsp;</span>
1395
- <span class="cline-any cline-neutral">&nbsp;</span>
1396
- <span class="cline-any cline-neutral">&nbsp;</span>
1397
- <span class="cline-any cline-neutral">&nbsp;</span>
1398
- <span class="cline-any cline-neutral">&nbsp;</span>
1399
- <span class="cline-any cline-neutral">&nbsp;</span>
1400
- <span class="cline-any cline-no">&nbsp;</span>
1401
- <span class="cline-any cline-no">&nbsp;</span>
1402
- <span class="cline-any cline-no">&nbsp;</span>
1403
- <span class="cline-any cline-no">&nbsp;</span>
1404
- <span class="cline-any cline-neutral">&nbsp;</span>
1405
- <span class="cline-any cline-no">&nbsp;</span>
1406
- <span class="cline-any cline-neutral">&nbsp;</span>
1407
- <span class="cline-any cline-neutral">&nbsp;</span>
1408
- <span class="cline-any cline-neutral">&nbsp;</span>
1409
- <span class="cline-any cline-neutral">&nbsp;</span>
1410
- <span class="cline-any cline-yes">90x</span>
1411
- <span class="cline-any cline-neutral">&nbsp;</span>
1412
- <span class="cline-any cline-neutral">&nbsp;</span>
1413
- <span class="cline-any cline-no">&nbsp;</span>
1414
- <span class="cline-any cline-no">&nbsp;</span>
1415
- <span class="cline-any cline-neutral">&nbsp;</span>
1416
- <span class="cline-any cline-no">&nbsp;</span>
1417
- <span class="cline-any cline-no">&nbsp;</span>
1418
- <span class="cline-any cline-no">&nbsp;</span>
1419
- <span class="cline-any cline-no">&nbsp;</span>
1420
- <span class="cline-any cline-no">&nbsp;</span>
1421
- <span class="cline-any cline-neutral">&nbsp;</span>
1422
- <span class="cline-any cline-no">&nbsp;</span>
1423
- <span class="cline-any cline-no">&nbsp;</span>
1424
- <span class="cline-any cline-no">&nbsp;</span>
1425
- <span class="cline-any cline-neutral">&nbsp;</span>
1426
- <span class="cline-any cline-no">&nbsp;</span>
1427
- <span class="cline-any cline-neutral">&nbsp;</span>
1428
- <span class="cline-any cline-neutral">&nbsp;</span>
1429
- <span class="cline-any cline-neutral">&nbsp;</span>
1430
- <span class="cline-any cline-neutral">&nbsp;</span>
1431
- <span class="cline-any cline-neutral">&nbsp;</span>
1432
- <span class="cline-any cline-neutral">&nbsp;</span>
1433
- <span class="cline-any cline-neutral">&nbsp;</span>
1434
- <span class="cline-any cline-neutral">&nbsp;</span>
1435
- <span class="cline-any cline-neutral">&nbsp;</span>
1436
- <span class="cline-any cline-neutral">&nbsp;</span>
1437
- <span class="cline-any cline-neutral">&nbsp;</span>
1438
- <span class="cline-any cline-neutral">&nbsp;</span>
1439
- <span class="cline-any cline-neutral">&nbsp;</span>
1440
- <span class="cline-any cline-neutral">&nbsp;</span>
1441
- <span class="cline-any cline-neutral">&nbsp;</span>
1442
- <span class="cline-any cline-neutral">&nbsp;</span>
1443
- <span class="cline-any cline-neutral">&nbsp;</span>
1444
- <span class="cline-any cline-yes">2x</span>
1445
- <span class="cline-any cline-no">&nbsp;</span>
1446
- <span class="cline-any cline-neutral">&nbsp;</span>
1447
- <span class="cline-any cline-yes">2x</span>
1448
- <span class="cline-any cline-yes">2x</span>
1449
- <span class="cline-any cline-no">&nbsp;</span>
1450
- <span class="cline-any cline-neutral">&nbsp;</span>
1451
- <span class="cline-any cline-neutral">&nbsp;</span>
1452
- <span class="cline-any cline-neutral">&nbsp;</span>
1453
- <span class="cline-any cline-yes">2x</span>
1454
- <span class="cline-any cline-neutral">&nbsp;</span>
1455
- <span class="cline-any cline-neutral">&nbsp;</span>
1456
- <span class="cline-any cline-neutral">&nbsp;</span>
1457
- <span class="cline-any cline-neutral">&nbsp;</span>
1458
- <span class="cline-any cline-yes">2x</span>
1459
- <span class="cline-any cline-yes">4x</span>
1460
- <span class="cline-any cline-neutral">&nbsp;</span>
1461
- <span class="cline-any cline-neutral">&nbsp;</span>
1462
- <span class="cline-any cline-neutral">&nbsp;</span>
1463
- <span class="cline-any cline-neutral">&nbsp;</span>
1464
- <span class="cline-any cline-neutral">&nbsp;</span>
1465
- <span class="cline-any cline-neutral">&nbsp;</span>
1466
- <span class="cline-any cline-yes">90x</span>
1467
- <span class="cline-any cline-neutral">&nbsp;</span>
1468
- <span class="cline-any cline-neutral">&nbsp;</span>
1469
- <span class="cline-any cline-yes">1804x</span>
1470
- <span class="cline-any cline-yes">1804x</span>
1471
- <span class="cline-any cline-yes">1782x</span>
1472
- <span class="cline-any cline-yes">1782x</span>
1473
- <span class="cline-any cline-neutral">&nbsp;</span>
1474
- <span class="cline-any cline-neutral">&nbsp;</span>
1475
- <span class="cline-any cline-neutral">&nbsp;</span>
1476
- <span class="cline-any cline-yes">1804x</span>
1477
- <span class="cline-any cline-yes">1798x</span>
1478
- <span class="cline-any cline-yes">1798x</span>
1479
- <span class="cline-any cline-yes">927x</span>
1480
- <span class="cline-any cline-yes">5x</span>
1481
- <span class="cline-any cline-yes">5x</span>
1482
- <span class="cline-any cline-no">&nbsp;</span>
1483
- <span class="cline-any cline-neutral">&nbsp;</span>
1484
- <span class="cline-any cline-yes">5x</span>
1485
- <span class="cline-any cline-yes">5x</span>
1486
- <span class="cline-any cline-neutral">&nbsp;</span>
1487
- <span class="cline-any cline-neutral">&nbsp;</span>
1488
- <span class="cline-any cline-yes">1798x</span>
1489
- <span class="cline-any cline-yes">668x</span>
1490
- <span class="cline-any cline-neutral">&nbsp;</span>
1491
- <span class="cline-any cline-yes">1798x</span>
1492
- <span class="cline-any cline-yes">871x</span>
1493
- <span class="cline-any cline-yes">18x</span>
1494
- <span class="cline-any cline-no">&nbsp;</span>
1495
- <span class="cline-any cline-neutral">&nbsp;</span>
1496
- <span class="cline-any cline-neutral">&nbsp;</span>
1497
- <span class="cline-any cline-yes">871x</span>
1498
- <span class="cline-any cline-yes">853x</span>
1499
- <span class="cline-any cline-neutral">&nbsp;</span>
1500
- <span class="cline-any cline-yes">18x</span>
1501
- <span class="cline-any cline-neutral">&nbsp;</span>
1502
- <span class="cline-any cline-neutral">&nbsp;</span>
1503
- <span class="cline-any cline-yes">1798x</span>
1504
- <span class="cline-any cline-yes">1798x</span>
1505
- <span class="cline-any cline-yes">1798x</span>
1506
- <span class="cline-any cline-neutral">&nbsp;</span>
1507
- <span class="cline-any cline-neutral">&nbsp;</span>
1508
- <span class="cline-any cline-yes">314x</span>
1509
- <span class="cline-any cline-neutral">&nbsp;</span>
1510
- <span class="cline-any cline-neutral">&nbsp;</span>
1511
- <span class="cline-any cline-neutral">&nbsp;</span>
1512
- <span class="cline-any cline-neutral">&nbsp;</span>
1513
- <span class="cline-any cline-yes">1798x</span>
1514
- <span class="cline-any cline-yes">46x</span>
1515
- <span class="cline-any cline-no">&nbsp;</span>
1516
- <span class="cline-any cline-neutral">&nbsp;</span>
1517
- <span class="cline-any cline-yes">46x</span>
1518
- <span class="cline-any cline-yes">54x</span>
1519
- <span class="cline-any cline-yes">3x</span>
1520
- <span class="cline-any cline-neutral">&nbsp;</span>
1521
- <span class="cline-any cline-neutral">&nbsp;</span>
1522
- <span class="cline-any cline-neutral">&nbsp;</span>
1523
- <span class="cline-any cline-neutral">&nbsp;</span>
1524
- <span class="cline-any cline-neutral">&nbsp;</span>
1525
- <span class="cline-any cline-neutral">&nbsp;</span>
1526
- <span class="cline-any cline-neutral">&nbsp;</span>
1527
- <span class="cline-any cline-yes">22x</span>
1528
- <span class="cline-any cline-yes">22x</span>
1529
- <span class="cline-any cline-no">&nbsp;</span>
1530
- <span class="cline-any cline-neutral">&nbsp;</span>
1531
- <span class="cline-any cline-neutral">&nbsp;</span>
1532
- <span class="cline-any cline-neutral">&nbsp;</span>
1533
- <span class="cline-any cline-neutral">&nbsp;</span>
1534
- <span class="cline-any cline-neutral">&nbsp;</span>
1535
- <span class="cline-any cline-neutral">&nbsp;</span>
1536
- <span class="cline-any cline-yes">49x</span>
1537
- <span class="cline-any cline-yes">49x</span>
1538
- <span class="cline-any cline-yes">1x</span>
1539
- <span class="cline-any cline-neutral">&nbsp;</span>
1540
- <span class="cline-any cline-neutral">&nbsp;</span>
1541
- <span class="cline-any cline-neutral">&nbsp;</span>
1542
- <span class="cline-any cline-neutral">&nbsp;</span>
1543
- <span class="cline-any cline-neutral">&nbsp;</span>
1544
- <span class="cline-any cline-neutral">&nbsp;</span>
1545
- <span class="cline-any cline-yes">1920x</span>
1546
- <span class="cline-any cline-yes">1920x</span>
1547
- <span class="cline-any cline-yes">1920x</span>
1548
- <span class="cline-any cline-yes">8207x</span>
1549
- <span class="cline-any cline-yes">1708x</span>
1550
- <span class="cline-any cline-neutral">&nbsp;</span>
1551
- <span class="cline-any cline-neutral">&nbsp;</span>
1552
- <span class="cline-any cline-yes">1920x</span>
1553
- <span class="cline-any cline-yes">1916x</span>
1554
- <span class="cline-any cline-yes">1916x</span>
1555
- <span class="cline-any cline-yes">1916x</span>
1556
- <span class="cline-any cline-yes">1916x</span>
1557
- <span class="cline-any cline-neutral">&nbsp;</span>
1558
- <span class="cline-any cline-neutral">&nbsp;</span>
1559
- <span class="cline-any cline-neutral">&nbsp;</span>
1560
- <span class="cline-any cline-neutral">&nbsp;</span>
1561
- <span class="cline-any cline-neutral">&nbsp;</span>
1562
- <span class="cline-any cline-neutral">&nbsp;</span>
1563
- <span class="cline-any cline-neutral">&nbsp;</span>
1564
- <span class="cline-any cline-neutral">&nbsp;</span>
1565
- <span class="cline-any cline-neutral">&nbsp;</span>
1566
- <span class="cline-any cline-yes">1920x</span>
1567
- <span class="cline-any cline-neutral">&nbsp;</span>
1568
- <span class="cline-any cline-neutral">&nbsp;</span>
1569
- <span class="cline-any cline-neutral">&nbsp;</span>
1570
- <span class="cline-any cline-neutral">&nbsp;</span>
1571
- <span class="cline-any cline-yes">1797x</span>
1572
- <span class="cline-any cline-yes">1797x</span>
1573
- <span class="cline-any cline-yes">17x</span>
1574
- <span class="cline-any cline-neutral">&nbsp;</span>
1575
- <span class="cline-any cline-yes">1780x</span>
1576
- <span class="cline-any cline-yes">890x</span>
1577
- <span class="cline-any cline-neutral">&nbsp;</span>
1578
- <span class="cline-any cline-yes">890x</span>
1579
- <span class="cline-any cline-yes">890x</span>
1580
- <span class="cline-any cline-yes">890x</span>
1581
- <span class="cline-any cline-neutral">&nbsp;</span>
1582
- <span class="cline-any cline-neutral">&nbsp;</span>
1583
- <span class="cline-any cline-neutral">&nbsp;</span>
1584
- <span class="cline-any cline-neutral">&nbsp;</span>
1585
- <span class="cline-any cline-neutral">&nbsp;</span>
1586
- <span class="cline-any cline-neutral">&nbsp;</span>
1587
- <span class="cline-any cline-yes">35x</span>
1588
- <span class="cline-any cline-neutral">&nbsp;</span>
1589
- <span class="cline-any cline-yes">855x</span>
1590
- <span class="cline-any cline-neutral">&nbsp;</span>
1591
- <span class="cline-any cline-neutral">&nbsp;</span>
1592
- <span class="cline-any cline-neutral">&nbsp;</span>
1593
- <span class="cline-any cline-neutral">&nbsp;</span>
1594
- <span class="cline-any cline-neutral">&nbsp;</span>
1595
- <span class="cline-any cline-yes">855x</span>
1596
- <span class="cline-any cline-neutral">&nbsp;</span>
1597
- <span class="cline-any cline-neutral">&nbsp;</span>
1598
- <span class="cline-any cline-neutral">&nbsp;</span>
1599
- <span class="cline-any cline-neutral">&nbsp;</span>
1600
- <span class="cline-any cline-yes">4x</span>
1601
- <span class="cline-any cline-neutral">&nbsp;</span>
1602
- <span class="cline-any cline-neutral">&nbsp;</span>
1603
- <span class="cline-any cline-neutral">&nbsp;</span>
1604
- <span class="cline-any cline-neutral">&nbsp;</span>
1605
- <span class="cline-any cline-yes">125x</span>
1606
- <span class="cline-any cline-yes">125x</span>
1607
- <span class="cline-any cline-yes">2x</span>
1608
- <span class="cline-any cline-neutral">&nbsp;</span>
1609
- <span class="cline-any cline-neutral">&nbsp;</span>
1610
- <span class="cline-any cline-neutral">&nbsp;</span>
1611
- <span class="cline-any cline-neutral">&nbsp;</span>
1612
- <span class="cline-any cline-neutral">&nbsp;</span>
1613
- <span class="cline-any cline-neutral">&nbsp;</span>
1614
- <span class="cline-any cline-no">&nbsp;</span>
1615
- <span class="cline-any cline-neutral">&nbsp;</span>
1616
- <span class="cline-any cline-neutral">&nbsp;</span>
1617
- <span class="cline-any cline-neutral">&nbsp;</span>
1618
- <span class="cline-any cline-neutral">&nbsp;</span>
1619
- <span class="cline-any cline-neutral">&nbsp;</span>
1620
- <span class="cline-any cline-neutral">&nbsp;</span>
1621
- <span class="cline-any cline-neutral">&nbsp;</span>
1622
- <span class="cline-any cline-neutral">&nbsp;</span>
1623
- <span class="cline-any cline-neutral">&nbsp;</span>
1624
- <span class="cline-any cline-yes">24x</span>
1625
- <span class="cline-any cline-no">&nbsp;</span>
1626
- <span class="cline-any cline-no">&nbsp;</span>
1627
- <span class="cline-any cline-no">&nbsp;</span>
1628
- <span class="cline-any cline-neutral">&nbsp;</span>
1629
- <span class="cline-any cline-yes">24x</span>
1630
- <span class="cline-any cline-yes">14x</span>
1631
- <span class="cline-any cline-neutral">&nbsp;</span>
1632
- <span class="cline-any cline-neutral">&nbsp;</span>
1633
- <span class="cline-any cline-yes">14x</span>
1634
- <span class="cline-any cline-neutral">&nbsp;</span>
1635
- <span class="cline-any cline-neutral">&nbsp;</span>
1636
- <span class="cline-any cline-yes">14x</span>
1637
- <span class="cline-any cline-yes">8x</span>
1638
- <span class="cline-any cline-yes">8x</span>
1639
- <span class="cline-any cline-neutral">&nbsp;</span>
1640
- <span class="cline-any cline-neutral">&nbsp;</span>
1641
- <span class="cline-any cline-neutral">&nbsp;</span>
1642
- <span class="cline-any cline-neutral">&nbsp;</span>
1643
- <span class="cline-any cline-neutral">&nbsp;</span>
1644
- <span class="cline-any cline-neutral">&nbsp;</span>
1645
- <span class="cline-any cline-neutral">&nbsp;</span>
1646
- <span class="cline-any cline-yes">90x</span>
1647
- <span class="cline-any cline-neutral">&nbsp;</span>
1648
- <span class="cline-any cline-yes">90x</span>
1649
- <span class="cline-any cline-neutral">&nbsp;</span>
1650
- <span class="cline-any cline-neutral">&nbsp;</span>
1651
- <span class="cline-any cline-neutral">&nbsp;</span>
1652
- <span class="cline-any cline-neutral">&nbsp;</span>
1653
- <span class="cline-any cline-neutral">&nbsp;</span>
1654
- <span class="cline-any cline-yes">90x</span>
1655
- <span class="cline-any cline-yes">90x</span>
1656
- <span class="cline-any cline-neutral">&nbsp;</span>
1657
- <span class="cline-any cline-neutral">&nbsp;</span>
1658
- <span class="cline-any cline-yes">90x</span>
1659
- <span class="cline-any cline-yes">90x</span>
1660
- <span class="cline-any cline-neutral">&nbsp;</span>
1661
- <span class="cline-any cline-neutral">&nbsp;</span>
1662
- <span class="cline-any cline-yes">90x</span>
1663
- <span class="cline-any cline-neutral">&nbsp;</span>
1664
- <span class="cline-any cline-neutral">&nbsp;</span>
1665
- <span class="cline-any cline-neutral">&nbsp;</span>
1666
- <span class="cline-any cline-neutral">&nbsp;</span>
1667
- <span class="cline-any cline-neutral">&nbsp;</span>
1668
- <span class="cline-any cline-yes">90x</span>
1669
- <span class="cline-any cline-neutral">&nbsp;</span>
1670
- <span class="cline-any cline-neutral">&nbsp;</span>
1671
- <span class="cline-any cline-neutral">&nbsp;</span>
1672
- <span class="cline-any cline-neutral">&nbsp;</span>
1673
- <span class="cline-any cline-neutral">&nbsp;</span>
1674
- <span class="cline-any cline-neutral">&nbsp;</span>
1675
- <span class="cline-any cline-yes">90x</span>
1676
- <span class="cline-any cline-neutral">&nbsp;</span>
1677
- <span class="cline-any cline-neutral">&nbsp;</span>
1678
- <span class="cline-any cline-neutral">&nbsp;</span>
1679
- <span class="cline-any cline-yes">90x</span>
1680
- <span class="cline-any cline-yes">90x</span>
1681
- <span class="cline-any cline-neutral">&nbsp;</span>
1682
- <span class="cline-any cline-neutral">&nbsp;</span>
1683
- <span class="cline-any cline-neutral">&nbsp;</span>
1684
- <span class="cline-any cline-yes">90x</span>
1685
- <span class="cline-any cline-neutral">&nbsp;</span>
1686
- <span class="cline-any cline-neutral">&nbsp;</span>
1687
- <span class="cline-any cline-neutral">&nbsp;</span>
1688
- <span class="cline-any cline-yes">90x</span>
1689
- <span class="cline-any cline-neutral">&nbsp;</span>
1690
- <span class="cline-any cline-neutral">&nbsp;</span>
1691
- <span class="cline-any cline-neutral">&nbsp;</span>
1692
- <span class="cline-any cline-yes">90x</span>
1693
- <span class="cline-any cline-yes">90x</span>
1694
- <span class="cline-any cline-yes">90x</span>
1695
- <span class="cline-any cline-yes">90x</span>
1696
- <span class="cline-any cline-neutral">&nbsp;</span>
1697
- <span class="cline-any cline-neutral">&nbsp;</span>
1698
- <span class="cline-any cline-neutral">&nbsp;</span>
1699
- <span class="cline-any cline-yes">90x</span>
1700
- <span class="cline-any cline-neutral">&nbsp;</span>
1701
- <span class="cline-any cline-neutral">&nbsp;</span>
1702
- <span class="cline-any cline-yes">91x</span>
1703
- <span class="cline-any cline-yes">91x</span>
1704
- <span class="cline-any cline-neutral">&nbsp;</span>
1705
- <span class="cline-any cline-neutral">&nbsp;</span>
1706
- <span class="cline-any cline-neutral">&nbsp;</span>
1707
- <span class="cline-any cline-neutral">&nbsp;</span>
1708
- <span class="cline-any cline-yes">1x</span>
1709
- <span class="cline-any cline-yes">1x</span>
1710
- <span class="cline-any cline-yes">1x</span>
1711
- <span class="cline-any cline-yes">1x</span>
1712
- <span class="cline-any cline-neutral">&nbsp;</span>
1713
- <span class="cline-any cline-no">&nbsp;</span>
1714
- <span class="cline-any cline-neutral">&nbsp;</span>
1715
- <span class="cline-any cline-neutral">&nbsp;</span>
1716
- <span class="cline-any cline-neutral">&nbsp;</span>
1717
- <span class="cline-any cline-yes">92x</span>
1718
- <span class="cline-any cline-neutral">&nbsp;</span>
1719
- <span class="cline-any cline-neutral">&nbsp;</span>
1720
- <span class="cline-any cline-neutral">&nbsp;</span>
1721
- <span class="cline-any cline-neutral">&nbsp;</span>
1722
- <span class="cline-any cline-neutral">&nbsp;</span>
1723
- <span class="cline-any cline-neutral">&nbsp;</span>
1724
- <span class="cline-any cline-neutral">&nbsp;</span>
1725
- <span class="cline-any cline-neutral">&nbsp;</span>
1726
- <span class="cline-any cline-neutral">&nbsp;</span>
1727
- <span class="cline-any cline-neutral">&nbsp;</span>
1728
- <span class="cline-any cline-neutral">&nbsp;</span>
1729
- <span class="cline-any cline-neutral">&nbsp;</span>
1730
- <span class="cline-any cline-neutral">&nbsp;</span>
1731
- <span class="cline-any cline-neutral">&nbsp;</span>
1732
- <span class="cline-any cline-neutral">&nbsp;</span>
1733
- <span class="cline-any cline-neutral">&nbsp;</span>
1734
- <span class="cline-any cline-yes">90x</span>
1735
- <span class="cline-any cline-yes">90x</span>
1736
- <span class="cline-any cline-neutral">&nbsp;</span>
1737
- <span class="cline-any cline-neutral">&nbsp;</span>
1738
- <span class="cline-any cline-neutral">&nbsp;</span>
1739
- <span class="cline-any cline-neutral">&nbsp;</span>
1740
- <span class="cline-any cline-neutral">&nbsp;</span>
1741
- <span class="cline-any cline-neutral">&nbsp;</span>
1742
- <span class="cline-any cline-neutral">&nbsp;</span>
1743
- <span class="cline-any cline-neutral">&nbsp;</span>
1744
- <span class="cline-any cline-neutral">&nbsp;</span>
1745
- <span class="cline-any cline-neutral">&nbsp;</span>
1746
- <span class="cline-any cline-neutral">&nbsp;</span>
1747
- <span class="cline-any cline-neutral">&nbsp;</span>
1748
- <span class="cline-any cline-neutral">&nbsp;</span>
1749
- <span class="cline-any cline-neutral">&nbsp;</span>
1750
- <span class="cline-any cline-neutral">&nbsp;</span>
1751
- <span class="cline-any cline-neutral">&nbsp;</span>
1752
- <span class="cline-any cline-neutral">&nbsp;</span>
1753
- <span class="cline-any cline-neutral">&nbsp;</span>
1754
- <span class="cline-any cline-neutral">&nbsp;</span>
1755
- <span class="cline-any cline-neutral">&nbsp;</span>
1756
- <span class="cline-any cline-neutral">&nbsp;</span>
1757
- <span class="cline-any cline-neutral">&nbsp;</span>
1758
- <span class="cline-any cline-neutral">&nbsp;</span>
1759
- <span class="cline-any cline-neutral">&nbsp;</span>
1760
- <span class="cline-any cline-yes">56x</span>
1761
- <span class="cline-any cline-neutral">&nbsp;</span>
1762
- <span class="cline-any cline-neutral">&nbsp;</span>
1763
- <span class="cline-any cline-neutral">&nbsp;</span>
1764
- <span class="cline-any cline-neutral">&nbsp;</span>
1765
- <span class="cline-any cline-neutral">&nbsp;</span>
1766
- <span class="cline-any cline-neutral">&nbsp;</span>
1767
- <span class="cline-any cline-neutral">&nbsp;</span>
1768
- <span class="cline-any cline-neutral">&nbsp;</span>
1769
- <span class="cline-any cline-neutral">&nbsp;</span>
1770
- <span class="cline-any cline-neutral">&nbsp;</span>
1771
- <span class="cline-any cline-neutral">&nbsp;</span>
1772
- <span class="cline-any cline-neutral">&nbsp;</span>
1773
- <span class="cline-any cline-neutral">&nbsp;</span>
1774
- <span class="cline-any cline-neutral">&nbsp;</span>
1775
- <span class="cline-any cline-neutral">&nbsp;</span>
1776
- <span class="cline-any cline-neutral">&nbsp;</span>
1777
- <span class="cline-any cline-neutral">&nbsp;</span>
1778
- <span class="cline-any cline-neutral">&nbsp;</span>
1779
- <span class="cline-any cline-neutral">&nbsp;</span>
1780
- <span class="cline-any cline-neutral">&nbsp;</span>
1781
- <span class="cline-any cline-neutral">&nbsp;</span>
1782
- <span class="cline-any cline-neutral">&nbsp;</span>
1783
- <span class="cline-any cline-neutral">&nbsp;</span>
1784
- <span class="cline-any cline-neutral">&nbsp;</span>
1785
- <span class="cline-any cline-neutral">&nbsp;</span>
1786
- <span class="cline-any cline-neutral">&nbsp;</span>
1787
- <span class="cline-any cline-neutral">&nbsp;</span>
1788
- <span class="cline-any cline-neutral">&nbsp;</span>
1789
- <span class="cline-any cline-neutral">&nbsp;</span>
1790
- <span class="cline-any cline-neutral">&nbsp;</span>
1791
- <span class="cline-any cline-neutral">&nbsp;</span>
1792
- <span class="cline-any cline-neutral">&nbsp;</span>
1793
- <span class="cline-any cline-neutral">&nbsp;</span>
1794
- <span class="cline-any cline-neutral">&nbsp;</span>
1795
- <span class="cline-any cline-yes">1804x</span>
1796
- <span class="cline-any cline-yes">1804x</span>
1797
- <span class="cline-any cline-yes">1804x</span>
1798
- <span class="cline-any cline-yes">1804x</span>
1799
- <span class="cline-any cline-yes">1804x</span>
1800
- <span class="cline-any cline-yes">1804x</span>
1801
- <span class="cline-any cline-neutral">&nbsp;</span>
1802
- <span class="cline-any cline-yes">1804x</span>
1803
- <span class="cline-any cline-yes">1804x</span>
1804
- <span class="cline-any cline-yes">1804x</span>
1805
- <span class="cline-any cline-yes">1804x</span>
1806
- <span class="cline-any cline-yes">1797x</span>
1807
- <span class="cline-any cline-neutral">&nbsp;</span>
1808
- <span class="cline-any cline-yes">1797x</span>
1809
- <span class="cline-any cline-yes">1797x</span>
1810
- <span class="cline-any cline-yes">1797x</span>
1811
- <span class="cline-any cline-yes">1797x</span>
1812
- <span class="cline-any cline-yes">1797x</span>
1813
- <span class="cline-any cline-yes">1797x</span>
1814
- <span class="cline-any cline-yes">1797x</span>
1815
- <span class="cline-any cline-yes">1797x</span>
1816
- <span class="cline-any cline-yes">1797x</span>
1817
- <span class="cline-any cline-neutral">&nbsp;</span>
1818
- <span class="cline-any cline-no">&nbsp;</span>
1819
- <span class="cline-any cline-no">&nbsp;</span>
1820
- <span class="cline-any cline-neutral">&nbsp;</span>
1821
- <span class="cline-any cline-yes">1797x</span>
1822
- <span class="cline-any cline-neutral">&nbsp;</span>
1823
- <span class="cline-any cline-neutral">&nbsp;</span>
1824
- <span class="cline-any cline-neutral">&nbsp;</span>
1825
- <span class="cline-any cline-yes">1797x</span>
1826
- <span class="cline-any cline-yes">1797x</span>
1827
- <span class="cline-any cline-neutral">&nbsp;</span>
1828
- <span class="cline-any cline-yes">1797x</span>
1829
- <span class="cline-any cline-yes">1797x</span>
1830
- <span class="cline-any cline-yes">1797x</span>
1831
- <span class="cline-any cline-neutral">&nbsp;</span>
1832
- <span class="cline-any cline-yes">7x</span>
1833
- <span class="cline-any cline-yes">7x</span>
1834
- <span class="cline-any cline-neutral">&nbsp;</span>
1835
- <span class="cline-any cline-yes">1804x</span>
1836
- <span class="cline-any cline-neutral">&nbsp;</span>
1837
- <span class="cline-any cline-neutral">&nbsp;</span>
1838
- <span class="cline-any cline-neutral">&nbsp;</span>
1839
- <span class="cline-any cline-neutral">&nbsp;</span>
1840
- <span class="cline-any cline-neutral">&nbsp;</span>
1841
- <span class="cline-any cline-neutral">&nbsp;</span>
1842
- <span class="cline-any cline-neutral">&nbsp;</span>
1843
- <span class="cline-any cline-neutral">&nbsp;</span>
1844
- <span class="cline-any cline-neutral">&nbsp;</span>
1845
- <span class="cline-any cline-neutral">&nbsp;</span>
1846
- <span class="cline-any cline-neutral">&nbsp;</span>
1847
- <span class="cline-any cline-neutral">&nbsp;</span>
1848
- <span class="cline-any cline-neutral">&nbsp;</span>
1849
- <span class="cline-any cline-neutral">&nbsp;</span>
1850
- <span class="cline-any cline-neutral">&nbsp;</span>
1851
- <span class="cline-any cline-neutral">&nbsp;</span>
1852
- <span class="cline-any cline-neutral">&nbsp;</span>
1853
- <span class="cline-any cline-neutral">&nbsp;</span>
1854
- <span class="cline-any cline-neutral">&nbsp;</span>
1855
- <span class="cline-any cline-neutral">&nbsp;</span>
1856
- <span class="cline-any cline-neutral">&nbsp;</span>
1857
- <span class="cline-any cline-neutral">&nbsp;</span>
1858
- <span class="cline-any cline-neutral">&nbsp;</span>
1859
- <span class="cline-any cline-neutral">&nbsp;</span>
1860
- <span class="cline-any cline-neutral">&nbsp;</span>
1861
- <span class="cline-any cline-neutral">&nbsp;</span>
1862
- <span class="cline-any cline-neutral">&nbsp;</span>
1863
- <span class="cline-any cline-neutral">&nbsp;</span>
1864
- <span class="cline-any cline-yes">126x</span>
1865
- <span class="cline-any cline-yes">126x</span>
1866
- <span class="cline-any cline-yes">126x</span>
1867
- <span class="cline-any cline-yes">126x</span>
1868
- <span class="cline-any cline-yes">126x</span>
1869
- <span class="cline-any cline-yes">126x</span>
1870
- <span class="cline-any cline-neutral">&nbsp;</span>
1871
- <span class="cline-any cline-yes">126x</span>
1872
- <span class="cline-any cline-yes">126x</span>
1873
- <span class="cline-any cline-yes">126x</span>
1874
- <span class="cline-any cline-yes">126x</span>
1875
- <span class="cline-any cline-yes">123x</span>
1876
- <span class="cline-any cline-neutral">&nbsp;</span>
1877
- <span class="cline-any cline-yes">123x</span>
1878
- <span class="cline-any cline-yes">123x</span>
1879
- <span class="cline-any cline-yes">123x</span>
1880
- <span class="cline-any cline-yes">123x</span>
1881
- <span class="cline-any cline-yes">123x</span>
1882
- <span class="cline-any cline-yes">123x</span>
1883
- <span class="cline-any cline-yes">123x</span>
1884
- <span class="cline-any cline-yes">123x</span>
1885
- <span class="cline-any cline-yes">123x</span>
1886
- <span class="cline-any cline-neutral">&nbsp;</span>
1887
- <span class="cline-any cline-no">&nbsp;</span>
1888
- <span class="cline-any cline-no">&nbsp;</span>
1889
- <span class="cline-any cline-neutral">&nbsp;</span>
1890
- <span class="cline-any cline-yes">123x</span>
1891
- <span class="cline-any cline-neutral">&nbsp;</span>
1892
- <span class="cline-any cline-neutral">&nbsp;</span>
1893
- <span class="cline-any cline-neutral">&nbsp;</span>
1894
- <span class="cline-any cline-yes">123x</span>
1895
- <span class="cline-any cline-yes">123x</span>
1896
- <span class="cline-any cline-neutral">&nbsp;</span>
1897
- <span class="cline-any cline-yes">123x</span>
1898
- <span class="cline-any cline-yes">123x</span>
1899
- <span class="cline-any cline-yes">123x</span>
1900
- <span class="cline-any cline-neutral">&nbsp;</span>
1901
- <span class="cline-any cline-yes">3x</span>
1902
- <span class="cline-any cline-yes">3x</span>
1903
- <span class="cline-any cline-neutral">&nbsp;</span>
1904
- <span class="cline-any cline-yes">126x</span>
1905
- <span class="cline-any cline-neutral">&nbsp;</span>
1906
- <span class="cline-any cline-neutral">&nbsp;</span>
1907
- <span class="cline-any cline-neutral">&nbsp;</span>
1908
- <span class="cline-any cline-neutral">&nbsp;</span>
1909
- <span class="cline-any cline-neutral">&nbsp;</span>
1910
- <span class="cline-any cline-neutral">&nbsp;</span>
1911
- <span class="cline-any cline-neutral">&nbsp;</span>
1912
- <span class="cline-any cline-neutral">&nbsp;</span>
1913
- <span class="cline-any cline-neutral">&nbsp;</span>
1914
- <span class="cline-any cline-neutral">&nbsp;</span>
1915
- <span class="cline-any cline-neutral">&nbsp;</span>
1916
- <span class="cline-any cline-neutral">&nbsp;</span>
1917
- <span class="cline-any cline-yes">22x</span>
1918
- <span class="cline-any cline-yes">22x</span>
1919
- <span class="cline-any cline-yes">22x</span>
1920
- <span class="cline-any cline-yes">22x</span>
1921
- <span class="cline-any cline-yes">22x</span>
1922
- <span class="cline-any cline-neutral">&nbsp;</span>
1923
- <span class="cline-any cline-neutral">&nbsp;</span>
1924
- <span class="cline-any cline-neutral">&nbsp;</span>
1925
- <span class="cline-any cline-neutral">&nbsp;</span>
1926
- <span class="cline-any cline-neutral">&nbsp;</span>
1927
- <span class="cline-any cline-no">&nbsp;</span>
1928
- <span class="cline-any cline-no">&nbsp;</span>
1929
- <span class="cline-any cline-neutral">&nbsp;</span>
1930
- <span class="cline-any cline-neutral">&nbsp;</span>
1931
- <span class="cline-any cline-neutral">&nbsp;</span>
1932
- <span class="cline-any cline-neutral">&nbsp;</span>
1933
- <span class="cline-any cline-no">&nbsp;</span>
1934
- <span class="cline-any cline-no">&nbsp;</span>
1935
- <span class="cline-any cline-neutral">&nbsp;</span>
1936
- <span class="cline-any cline-neutral">&nbsp;</span>
1937
- <span class="cline-any cline-neutral">&nbsp;</span>
1938
- <span class="cline-any cline-neutral">&nbsp;</span>
1939
- <span class="cline-any cline-neutral">&nbsp;</span>
1940
- <span class="cline-any cline-neutral">&nbsp;</span>
1941
- <span class="cline-any cline-neutral">&nbsp;</span>
1942
- <span class="cline-any cline-no">&nbsp;</span>
1943
- <span class="cline-any cline-no">&nbsp;</span>
1944
- <span class="cline-any cline-neutral">&nbsp;</span>
1945
- <span class="cline-any cline-neutral">&nbsp;</span>
1946
- <span class="cline-any cline-neutral">&nbsp;</span>
1947
- <span class="cline-any cline-neutral">&nbsp;</span>
1948
- <span class="cline-any cline-neutral">&nbsp;</span>
1949
- <span class="cline-any cline-neutral">&nbsp;</span>
1950
- <span class="cline-any cline-neutral">&nbsp;</span>
1951
- <span class="cline-any cline-neutral">&nbsp;</span>
1952
- <span class="cline-any cline-neutral">&nbsp;</span>
1953
- <span class="cline-any cline-neutral">&nbsp;</span>
1954
- <span class="cline-any cline-neutral">&nbsp;</span>
1955
- <span class="cline-any cline-neutral">&nbsp;</span>
1956
- <span class="cline-any cline-neutral">&nbsp;</span>
1957
- <span class="cline-any cline-neutral">&nbsp;</span>
1958
- <span class="cline-any cline-neutral">&nbsp;</span>
1959
- <span class="cline-any cline-neutral">&nbsp;</span>
1960
- <span class="cline-any cline-neutral">&nbsp;</span>
1961
- <span class="cline-any cline-neutral">&nbsp;</span>
1962
- <span class="cline-any cline-neutral">&nbsp;</span>
1963
- <span class="cline-any cline-neutral">&nbsp;</span>
1964
- <span class="cline-any cline-neutral">&nbsp;</span>
1965
- <span class="cline-any cline-neutral">&nbsp;</span>
1966
- <span class="cline-any cline-neutral">&nbsp;</span>
1967
- <span class="cline-any cline-neutral">&nbsp;</span>
1968
- <span class="cline-any cline-neutral">&nbsp;</span>
1969
- <span class="cline-any cline-neutral">&nbsp;</span>
1970
- <span class="cline-any cline-neutral">&nbsp;</span>
1971
- <span class="cline-any cline-neutral">&nbsp;</span>
1972
- <span class="cline-any cline-neutral">&nbsp;</span>
1973
- <span class="cline-any cline-neutral">&nbsp;</span>
1974
- <span class="cline-any cline-neutral">&nbsp;</span>
1975
- <span class="cline-any cline-neutral">&nbsp;</span>
1976
- <span class="cline-any cline-neutral">&nbsp;</span>
1977
- <span class="cline-any cline-neutral">&nbsp;</span>
1978
- <span class="cline-any cline-neutral">&nbsp;</span>
1979
- <span class="cline-any cline-neutral">&nbsp;</span>
1980
- <span class="cline-any cline-neutral">&nbsp;</span>
1981
- <span class="cline-any cline-neutral">&nbsp;</span>
1982
- <span class="cline-any cline-neutral">&nbsp;</span>
1983
- <span class="cline-any cline-neutral">&nbsp;</span>
1984
- <span class="cline-any cline-yes">130990x</span>
1985
- <span class="cline-any cline-yes">115572x</span>
1986
- <span class="cline-any cline-neutral">&nbsp;</span>
1987
- <span class="cline-any cline-yes">15418x</span>
1988
- <span class="cline-any cline-neutral">&nbsp;</span>
1989
- <span class="cline-any cline-yes">130990x</span>
1990
- <span class="cline-any cline-yes">130990x</span>
1991
- <span class="cline-any cline-yes">130990x</span>
1992
- <span class="cline-any cline-yes">449694x</span>
1993
- <span class="cline-any cline-yes">449694x</span>
1994
- <span class="cline-any cline-yes">449694x</span>
1995
- <span class="cline-any cline-no">&nbsp;</span>
1996
- <span class="cline-any cline-neutral">&nbsp;</span>
1997
- <span class="cline-any cline-yes">449694x</span>
1998
- <span class="cline-any cline-no">&nbsp;</span>
1999
- <span class="cline-any cline-neutral">&nbsp;</span>
2000
- <span class="cline-any cline-yes">449694x</span>
2001
- <span class="cline-any cline-yes">449694x</span>
2002
- <span class="cline-any cline-yes">115572x</span>
2003
- <span class="cline-any cline-neutral">&nbsp;</span>
2004
- <span class="cline-any cline-neutral">&nbsp;</span>
2005
- <span class="cline-any cline-neutral">&nbsp;</span>
2006
- <span class="cline-any cline-yes">130990x</span>
2007
- <span class="cline-any cline-no">&nbsp;</span>
2008
- <span class="cline-any cline-neutral">&nbsp;</span>
2009
- <span class="cline-any cline-neutral">&nbsp;</span>
2010
- <span class="cline-any cline-neutral">&nbsp;</span>
2011
- <span class="cline-any cline-neutral">&nbsp;</span>
2012
- <span class="cline-any cline-neutral">&nbsp;</span>
2013
- <span class="cline-any cline-neutral">&nbsp;</span>
2014
- <span class="cline-any cline-neutral">&nbsp;</span>
2015
- <span class="cline-any cline-neutral">&nbsp;</span>
2016
- <span class="cline-any cline-neutral">&nbsp;</span>
2017
- <span class="cline-any cline-neutral">&nbsp;</span>
2018
- <span class="cline-any cline-neutral">&nbsp;</span>
2019
- <span class="cline-any cline-neutral">&nbsp;</span>
2020
- <span class="cline-any cline-neutral">&nbsp;</span>
2021
- <span class="cline-any cline-neutral">&nbsp;</span>
2022
- <span class="cline-any cline-neutral">&nbsp;</span>
2023
- <span class="cline-any cline-neutral">&nbsp;</span>
2024
- <span class="cline-any cline-neutral">&nbsp;</span>
2025
- <span class="cline-any cline-neutral">&nbsp;</span>
2026
- <span class="cline-any cline-neutral">&nbsp;</span>
2027
- <span class="cline-any cline-yes">1932x</span>
2028
- <span class="cline-any cline-yes">1932x</span>
2029
- <span class="cline-any cline-neutral">&nbsp;</span>
2030
- <span class="cline-any cline-yes">1932x</span>
2031
- <span class="cline-any cline-yes">1936x</span>
2032
- <span class="cline-any cline-yes">1936x</span>
2033
- <span class="cline-any cline-neutral">&nbsp;</span>
2034
- <span class="cline-any cline-yes">4x</span>
2035
- <span class="cline-any cline-no">&nbsp;</span>
2036
- <span class="cline-any cline-neutral">&nbsp;</span>
2037
- <span class="cline-any cline-yes">4x</span>
2038
- <span class="cline-any cline-yes">4x</span>
2039
- <span class="cline-any cline-neutral">&nbsp;</span>
2040
- <span class="cline-any cline-yes">4x</span>
2041
- <span class="cline-any cline-yes">4x</span>
2042
- <span class="cline-any cline-neutral">&nbsp;</span>
2043
- <span class="cline-any cline-neutral">&nbsp;</span>
2044
- <span class="cline-any cline-neutral">&nbsp;</span>
2045
- <span class="cline-any cline-neutral">&nbsp;</span>
2046
- <span class="cline-any cline-neutral">&nbsp;</span>
2047
- <span class="cline-any cline-no">&nbsp;</span>
2048
- <span class="cline-any cline-no">&nbsp;</span>
2049
- <span class="cline-any cline-neutral">&nbsp;</span>
2050
- <span class="cline-any cline-yes">4x</span>
2051
- <span class="cline-any cline-neutral">&nbsp;</span>
2052
- <span class="cline-any cline-neutral">&nbsp;</span>
2053
- <span class="cline-any cline-neutral">&nbsp;</span>
2054
- <span class="cline-any cline-neutral">&nbsp;</span>
2055
- <span class="cline-any cline-neutral">&nbsp;</span>
2056
- <span class="cline-any cline-neutral">&nbsp;</span>
2057
- <span class="cline-any cline-yes">1804x</span>
2058
- <span class="cline-any cline-yes">1804x</span>
2059
- <span class="cline-any cline-yes">6x</span>
2060
- <span class="cline-any cline-neutral">&nbsp;</span>
2061
- <span class="cline-any cline-neutral">&nbsp;</span>
2062
- <span class="cline-any cline-neutral">&nbsp;</span>
2063
- <span class="cline-any cline-neutral">&nbsp;</span>
2064
- <span class="cline-any cline-neutral">&nbsp;</span>
2065
- <span class="cline-any cline-neutral">&nbsp;</span>
2066
- <span class="cline-any cline-neutral">&nbsp;</span>
2067
- <span class="cline-any cline-neutral">&nbsp;</span>
2068
- <span class="cline-any cline-neutral">&nbsp;</span>
2069
- <span class="cline-any cline-neutral">&nbsp;</span>
2070
- <span class="cline-any cline-neutral">&nbsp;</span>
2071
- <span class="cline-any cline-yes">123x</span>
2072
- <span class="cline-any cline-yes">123x</span>
2073
- <span class="cline-any cline-neutral">&nbsp;</span>
2074
- <span class="cline-any cline-neutral">&nbsp;</span>
2075
- <span class="cline-any cline-yes">112x</span>
2076
- <span class="cline-any cline-yes">14x</span>
2077
- <span class="cline-any cline-neutral">&nbsp;</span>
2078
- <span class="cline-any cline-neutral">&nbsp;</span>
2079
- <span class="cline-any cline-yes">123x</span>
2080
- <span class="cline-any cline-yes">124x</span>
2081
- <span class="cline-any cline-neutral">&nbsp;</span>
2082
- <span class="cline-any cline-yes">123x</span>
2083
- <span class="cline-any cline-yes">112x</span>
2084
- <span class="cline-any cline-neutral">&nbsp;</span>
2085
- <span class="cline-any cline-neutral">&nbsp;</span>
2086
- <span class="cline-any cline-neutral">&nbsp;</span>
2087
- <span class="cline-any cline-yes">94x</span>
2088
- <span class="cline-any cline-yes">94x</span>
2089
- <span class="cline-any cline-neutral">&nbsp;</span>
2090
- <span class="cline-any cline-neutral">&nbsp;</span>
2091
- <span class="cline-any cline-neutral">&nbsp;</span>
2092
- <span class="cline-any cline-neutral">&nbsp;</span>
2093
- <span class="cline-any cline-neutral">&nbsp;</span>
2094
- <span class="cline-any cline-neutral">&nbsp;</span>
2095
- <span class="cline-any cline-neutral">&nbsp;</span>
2096
- <span class="cline-any cline-neutral">&nbsp;</span>
2097
- <span class="cline-any cline-yes">123x</span>
2098
- <span class="cline-any cline-neutral">&nbsp;</span>
2099
- <span class="cline-any cline-neutral">&nbsp;</span>
2100
- <span class="cline-any cline-neutral">&nbsp;</span>
2101
- <span class="cline-any cline-yes">22x</span>
2102
- <span class="cline-any cline-no">&nbsp;</span>
2103
- <span class="cline-any cline-neutral">&nbsp;</span>
2104
- <span class="cline-any cline-yes">22x</span>
2105
- <span class="cline-any cline-neutral">&nbsp;</span>
2106
- <span class="cline-any cline-neutral">&nbsp;</span>
2107
- <span class="cline-any cline-neutral">&nbsp;</span>
2108
- <span class="cline-any cline-neutral">&nbsp;</span>
2109
- <span class="cline-any cline-neutral">&nbsp;</span>
2110
- <span class="cline-any cline-neutral">&nbsp;</span>
2111
- <span class="cline-any cline-neutral">&nbsp;</span>
2112
- <span class="cline-any cline-neutral">&nbsp;</span>
2113
- <span class="cline-any cline-neutral">&nbsp;</span>
2114
- <span class="cline-any cline-neutral">&nbsp;</span>
2115
- <span class="cline-any cline-neutral">&nbsp;</span>
2116
- <span class="cline-any cline-neutral">&nbsp;</span>
2117
- <span class="cline-any cline-neutral">&nbsp;</span>
2118
- <span class="cline-any cline-neutral">&nbsp;</span>
2119
- <span class="cline-any cline-yes">1797x</span>
2120
- <span class="cline-any cline-yes">1797x</span>
2121
- <span class="cline-any cline-neutral">&nbsp;</span>
2122
- <span class="cline-any cline-neutral">&nbsp;</span>
2123
- <span class="cline-any cline-neutral">&nbsp;</span>
2124
- <span class="cline-any cline-neutral">&nbsp;</span>
2125
- <span class="cline-any cline-yes">890x</span>
2126
- <span class="cline-any cline-yes">35x</span>
2127
- <span class="cline-any cline-neutral">&nbsp;</span>
2128
- <span class="cline-any cline-neutral">&nbsp;</span>
2129
- <span class="cline-any cline-yes">1797x</span>
2130
- <span class="cline-any cline-neutral">&nbsp;</span>
2131
- <span class="cline-any cline-neutral">&nbsp;</span>
2132
- <span class="cline-any cline-yes">160x</span>
2133
- <span class="cline-any cline-neutral">&nbsp;</span>
2134
- <span class="cline-any cline-yes">1797x</span>
2135
- <span class="cline-any cline-yes">1800x</span>
2136
- <span class="cline-any cline-neutral">&nbsp;</span>
2137
- <span class="cline-any cline-neutral">&nbsp;</span>
2138
- <span class="cline-any cline-neutral">&nbsp;</span>
2139
- <span class="cline-any cline-neutral">&nbsp;</span>
2140
- <span class="cline-any cline-neutral">&nbsp;</span>
2141
- <span class="cline-any cline-neutral">&nbsp;</span>
2142
- <span class="cline-any cline-no">&nbsp;</span>
2143
- <span class="cline-any cline-no">&nbsp;</span>
2144
- <span class="cline-any cline-neutral">&nbsp;</span>
2145
- <span class="cline-any cline-no">&nbsp;</span>
2146
- <span class="cline-any cline-neutral">&nbsp;</span>
2147
- <span class="cline-any cline-neutral">&nbsp;</span>
2148
- <span class="cline-any cline-neutral">&nbsp;</span>
2149
- <span class="cline-any cline-neutral">&nbsp;</span>
2150
- <span class="cline-any cline-neutral">&nbsp;</span>
2151
- <span class="cline-any cline-neutral">&nbsp;</span>
2152
- <span class="cline-any cline-neutral">&nbsp;</span>
2153
- <span class="cline-any cline-neutral">&nbsp;</span>
2154
- <span class="cline-any cline-neutral">&nbsp;</span>
2155
- <span class="cline-any cline-neutral">&nbsp;</span>
2156
- <span class="cline-any cline-neutral">&nbsp;</span>
2157
- <span class="cline-any cline-neutral">&nbsp;</span>
2158
- <span class="cline-any cline-neutral">&nbsp;</span>
2159
- <span class="cline-any cline-neutral">&nbsp;</span>
2160
- <span class="cline-any cline-yes">4x</span>
2161
- <span class="cline-any cline-no">&nbsp;</span>
2162
- <span class="cline-any cline-neutral">&nbsp;</span>
2163
- <span class="cline-any cline-yes">4x</span>
2164
- <span class="cline-any cline-neutral">&nbsp;</span>
2165
- <span class="cline-any cline-neutral">&nbsp;</span>
2166
- <span class="cline-any cline-neutral">&nbsp;</span>
2167
- <span class="cline-any cline-neutral">&nbsp;</span>
2168
- <span class="cline-any cline-neutral">&nbsp;</span>
2169
- <span class="cline-any cline-neutral">&nbsp;</span>
2170
- <span class="cline-any cline-yes">1241x</span>
2171
- <span class="cline-any cline-neutral">&nbsp;</span>
2172
- <span class="cline-any cline-neutral">&nbsp;</span>
2173
- <span class="cline-any cline-neutral">&nbsp;</span>
2174
- <span class="cline-any cline-yes">90x</span>
2175
- <span class="cline-any cline-neutral">&nbsp;</span>
2176
- <span class="cline-any cline-neutral">&nbsp;</span>
2177
- <span class="cline-any cline-neutral">&nbsp;</span>
2178
- <span class="cline-any cline-neutral">&nbsp;</span>
2179
- <span class="cline-any cline-neutral">&nbsp;</span>
2180
- <span class="cline-any cline-neutral">&nbsp;</span>
2181
- <span class="cline-any cline-neutral">&nbsp;</span>
2182
- <span class="cline-any cline-neutral">&nbsp;</span>
2183
- <span class="cline-any cline-neutral">&nbsp;</span>
2184
- <span class="cline-any cline-neutral">&nbsp;</span>
2185
- <span class="cline-any cline-neutral">&nbsp;</span>
2186
- <span class="cline-any cline-yes">48304x</span>
2187
- <span class="cline-any cline-neutral">&nbsp;</span>
2188
- <span class="cline-any cline-neutral">&nbsp;</span>
2189
- <span class="cline-any cline-neutral">&nbsp;</span>
2190
- <span class="cline-any cline-neutral">&nbsp;</span>
2191
- <span class="cline-any cline-neutral">&nbsp;</span>
2192
- <span class="cline-any cline-neutral">&nbsp;</span>
2193
- <span class="cline-any cline-neutral">&nbsp;</span>
2194
- <span class="cline-any cline-neutral">&nbsp;</span>
2195
- <span class="cline-any cline-neutral">&nbsp;</span>
2196
- <span class="cline-any cline-neutral">&nbsp;</span>
2197
- <span class="cline-any cline-neutral">&nbsp;</span>
2198
- <span class="cline-any cline-neutral">&nbsp;</span>
2199
- <span class="cline-any cline-neutral">&nbsp;</span>
2200
- <span class="cline-any cline-neutral">&nbsp;</span>
2201
- <span class="cline-any cline-neutral">&nbsp;</span>
2202
- <span class="cline-any cline-neutral">&nbsp;</span>
2203
- <span class="cline-any cline-neutral">&nbsp;</span>
2204
- <span class="cline-any cline-neutral">&nbsp;</span>
2205
- <span class="cline-any cline-neutral">&nbsp;</span>
2206
- <span class="cline-any cline-neutral">&nbsp;</span>
2207
- <span class="cline-any cline-neutral">&nbsp;</span>
2208
- <span class="cline-any cline-neutral">&nbsp;</span>
2209
- <span class="cline-any cline-neutral">&nbsp;</span>
2210
- <span class="cline-any cline-neutral">&nbsp;</span>
2211
- <span class="cline-any cline-neutral">&nbsp;</span>
2212
- <span class="cline-any cline-neutral">&nbsp;</span>
2213
- <span class="cline-any cline-neutral">&nbsp;</span>
2214
- <span class="cline-any cline-neutral">&nbsp;</span>
2215
- <span class="cline-any cline-yes">17x</span>
2216
- <span class="cline-any cline-yes">4x</span>
2217
- <span class="cline-any cline-neutral">&nbsp;</span>
2218
- <span class="cline-any cline-yes">17x</span>
2219
- <span class="cline-any cline-neutral">&nbsp;</span>
2220
- <span class="cline-any cline-neutral">&nbsp;</span>
2221
- <span class="cline-any cline-no">&nbsp;</span>
2222
- <span class="cline-any cline-neutral">&nbsp;</span>
2223
- <span class="cline-any cline-yes">17x</span>
2224
- <span class="cline-any cline-no">&nbsp;</span>
2225
- <span class="cline-any cline-neutral">&nbsp;</span>
2226
- <span class="cline-any cline-yes">17x</span>
2227
- <span class="cline-any cline-yes">17x</span>
2228
- <span class="cline-any cline-no">&nbsp;</span>
2229
- <span class="cline-any cline-neutral">&nbsp;</span>
2230
- <span class="cline-any cline-yes">17x</span>
2231
- <span class="cline-any cline-yes">17x</span>
2232
- <span class="cline-any cline-yes">14x</span>
2233
- <span class="cline-any cline-neutral">&nbsp;</span>
2234
- <span class="cline-any cline-neutral">&nbsp;</span>
2235
- <span class="cline-any cline-neutral">&nbsp;</span>
2236
- <span class="cline-any cline-neutral">&nbsp;</span>
2237
- <span class="cline-any cline-neutral">&nbsp;</span>
2238
- <span class="cline-any cline-neutral">&nbsp;</span>
2239
- <span class="cline-any cline-neutral">&nbsp;</span>
2240
- <span class="cline-any cline-neutral">&nbsp;</span>
2241
- <span class="cline-any cline-neutral">&nbsp;</span>
2242
- <span class="cline-any cline-neutral">&nbsp;</span>
2243
- <span class="cline-any cline-neutral">&nbsp;</span>
2244
- <span class="cline-any cline-neutral">&nbsp;</span>
2245
- <span class="cline-any cline-neutral">&nbsp;</span>
2246
- <span class="cline-any cline-neutral">&nbsp;</span>
2247
- <span class="cline-any cline-neutral">&nbsp;</span>
2248
- <span class="cline-any cline-neutral">&nbsp;</span>
2249
- <span class="cline-any cline-neutral">&nbsp;</span>
2250
- <span class="cline-any cline-yes">17x</span>
2251
- <span class="cline-any cline-neutral">&nbsp;</span>
2252
- <span class="cline-any cline-neutral">&nbsp;</span>
2253
- <span class="cline-any cline-neutral">&nbsp;</span>
2254
- <span class="cline-any cline-neutral">&nbsp;</span>
2255
- <span class="cline-any cline-neutral">&nbsp;</span>
2256
- <span class="cline-any cline-yes">17x</span>
2257
- <span class="cline-any cline-neutral">&nbsp;</span>
2258
- <span class="cline-any cline-neutral">&nbsp;</span>
2259
- <span class="cline-any cline-neutral">&nbsp;</span>
2260
- <span class="cline-any cline-neutral">&nbsp;</span>
2261
- <span class="cline-any cline-neutral">&nbsp;</span>
2262
- <span class="cline-any cline-yes">17x</span>
2263
- <span class="cline-any cline-neutral">&nbsp;</span>
2264
- <span class="cline-any cline-neutral">&nbsp;</span>
2265
- <span class="cline-any cline-neutral">&nbsp;</span>
2266
- <span class="cline-any cline-neutral">&nbsp;</span>
2267
- <span class="cline-any cline-yes">17x</span>
2268
- <span class="cline-any cline-yes">5x</span>
2269
- <span class="cline-any cline-neutral">&nbsp;</span>
2270
- <span class="cline-any cline-neutral">&nbsp;</span>
2271
- <span class="cline-any cline-neutral">&nbsp;</span>
2272
- <span class="cline-any cline-neutral">&nbsp;</span>
2273
- <span class="cline-any cline-neutral">&nbsp;</span>
2274
- <span class="cline-any cline-neutral">&nbsp;</span>
2275
- <span class="cline-any cline-yes">5x</span>
2276
- <span class="cline-any cline-no">&nbsp;</span>
2277
- <span class="cline-any cline-neutral">&nbsp;</span>
2278
- <span class="cline-any cline-yes">5x</span>
2279
- <span class="cline-any cline-neutral">&nbsp;</span>
2280
- <span class="cline-any cline-neutral">&nbsp;</span>
2281
- <span class="cline-any cline-no">&nbsp;</span>
2282
- <span class="cline-any cline-neutral">&nbsp;</span>
2283
- <span class="cline-any cline-yes">5x</span>
2284
- <span class="cline-any cline-neutral">&nbsp;</span>
2285
- <span class="cline-any cline-neutral">&nbsp;</span>
2286
- <span class="cline-any cline-no">&nbsp;</span>
2287
- <span class="cline-any cline-neutral">&nbsp;</span>
2288
- <span class="cline-any cline-yes">5x</span>
2289
- <span class="cline-any cline-yes">2x</span>
2290
- <span class="cline-any cline-neutral">&nbsp;</span>
2291
- <span class="cline-any cline-neutral">&nbsp;</span>
2292
- <span class="cline-any cline-neutral">&nbsp;</span>
2293
- <span class="cline-any cline-yes">3x</span>
2294
- <span class="cline-any cline-neutral">&nbsp;</span>
2295
- <span class="cline-any cline-neutral">&nbsp;</span>
2296
- <span class="cline-any cline-neutral">&nbsp;</span>
2297
- <span class="cline-any cline-neutral">&nbsp;</span>
2298
- <span class="cline-any cline-neutral">&nbsp;</span>
2299
- <span class="cline-any cline-neutral">&nbsp;</span>
2300
- <span class="cline-any cline-neutral">&nbsp;</span>
2301
- <span class="cline-any cline-neutral">&nbsp;</span>
2302
- <span class="cline-any cline-yes">14x</span>
2303
- <span class="cline-any cline-neutral">&nbsp;</span>
2304
- <span class="cline-any cline-neutral">&nbsp;</span>
2305
- <span class="cline-any cline-neutral">&nbsp;</span>
2306
- <span class="cline-any cline-neutral">&nbsp;</span>
2307
- <span class="cline-any cline-neutral">&nbsp;</span>
2308
- <span class="cline-any cline-neutral">&nbsp;</span>
2309
- <span class="cline-any cline-neutral">&nbsp;</span>
2310
- <span class="cline-any cline-neutral">&nbsp;</span>
2311
- <span class="cline-any cline-neutral">&nbsp;</span>
2312
- <span class="cline-any cline-yes">3x</span>
2313
- <span class="cline-any cline-neutral">&nbsp;</span>
2314
- <span class="cline-any cline-neutral">&nbsp;</span>
2315
- <span class="cline-any cline-no">&nbsp;</span>
2316
- <span class="cline-any cline-neutral">&nbsp;</span>
2317
- <span class="cline-any cline-yes">3x</span>
2318
- <span class="cline-any cline-yes">3x</span>
2319
- <span class="cline-any cline-no">&nbsp;</span>
2320
- <span class="cline-any cline-neutral">&nbsp;</span>
2321
- <span class="cline-any cline-yes">3x</span>
2322
- <span class="cline-any cline-no">&nbsp;</span>
2323
- <span class="cline-any cline-neutral">&nbsp;</span>
2324
- <span class="cline-any cline-yes">3x</span>
2325
- <span class="cline-any cline-neutral">&nbsp;</span>
2326
- <span class="cline-any cline-neutral">&nbsp;</span>
2327
- <span class="cline-any cline-neutral">&nbsp;</span>
2328
- <span class="cline-any cline-neutral">&nbsp;</span>
2329
- <span class="cline-any cline-neutral">&nbsp;</span>
2330
- <span class="cline-any cline-neutral">&nbsp;</span>
2331
- <span class="cline-any cline-neutral">&nbsp;</span>
2332
- <span class="cline-any cline-yes">3x</span>
2333
- <span class="cline-any cline-neutral">&nbsp;</span>
2334
- <span class="cline-any cline-neutral">&nbsp;</span>
2335
- <span class="cline-any cline-neutral">&nbsp;</span>
2336
- <span class="cline-any cline-neutral">&nbsp;</span>
2337
- <span class="cline-any cline-neutral">&nbsp;</span>
2338
- <span class="cline-any cline-neutral">&nbsp;</span>
2339
- <span class="cline-any cline-neutral">&nbsp;</span>
2340
- <span class="cline-any cline-neutral">&nbsp;</span>
2341
- <span class="cline-any cline-yes">28x</span>
2342
- <span class="cline-any cline-neutral">&nbsp;</span>
2343
- <span class="cline-any cline-neutral">&nbsp;</span>
2344
- <span class="cline-any cline-neutral">&nbsp;</span>
2345
- <span class="cline-any cline-neutral">&nbsp;</span>
2346
- <span class="cline-any cline-neutral">&nbsp;</span>
2347
- <span class="cline-any cline-neutral">&nbsp;</span>
2348
- <span class="cline-any cline-neutral">&nbsp;</span>
2349
- <span class="cline-any cline-neutral">&nbsp;</span>
2350
- <span class="cline-any cline-neutral">&nbsp;</span>
2351
- <span class="cline-any cline-neutral">&nbsp;</span>
2352
- <span class="cline-any cline-neutral">&nbsp;</span>
2353
- <span class="cline-any cline-neutral">&nbsp;</span>
2354
- <span class="cline-any cline-neutral">&nbsp;</span>
2355
- <span class="cline-any cline-neutral">&nbsp;</span>
2356
- <span class="cline-any cline-neutral">&nbsp;</span>
2357
- <span class="cline-any cline-neutral">&nbsp;</span>
2358
- <span class="cline-any cline-neutral">&nbsp;</span>
2359
- <span class="cline-any cline-neutral">&nbsp;</span>
2360
- <span class="cline-any cline-neutral">&nbsp;</span>
2361
- <span class="cline-any cline-neutral">&nbsp;</span>
2362
- <span class="cline-any cline-neutral">&nbsp;</span>
2363
- <span class="cline-any cline-neutral">&nbsp;</span>
2364
- <span class="cline-any cline-neutral">&nbsp;</span>
2365
- <span class="cline-any cline-neutral">&nbsp;</span>
2366
- <span class="cline-any cline-yes">1245x</span>
2367
- <span class="cline-any cline-neutral">&nbsp;</span>
2368
- <span class="cline-any cline-yes">1153x</span>
2369
- <span class="cline-any cline-neutral">&nbsp;</span>
2370
- <span class="cline-any cline-neutral">&nbsp;</span>
2371
- <span class="cline-any cline-neutral">&nbsp;</span>
2372
- <span class="cline-any cline-neutral">&nbsp;</span>
2373
- <span class="cline-any cline-neutral">&nbsp;</span>
2374
- <span class="cline-any cline-neutral">&nbsp;</span>
2375
- <span class="cline-any cline-neutral">&nbsp;</span>
2376
- <span class="cline-any cline-yes">29x</span>
2377
- <span class="cline-any cline-neutral">&nbsp;</span>
2378
- <span class="cline-any cline-neutral">&nbsp;</span>
2379
- <span class="cline-any cline-neutral">&nbsp;</span>
2380
- <span class="cline-any cline-neutral">&nbsp;</span>
2381
- <span class="cline-any cline-neutral">&nbsp;</span>
2382
- <span class="cline-any cline-no">&nbsp;</span>
2383
- <span class="cline-any cline-no">&nbsp;</span>
2384
- <span class="cline-any cline-no">&nbsp;</span>
2385
- <span class="cline-any cline-no">&nbsp;</span>
2386
- <span class="cline-any cline-neutral">&nbsp;</span>
2387
- <span class="cline-any cline-no">&nbsp;</span>
2388
- <span class="cline-any cline-no">&nbsp;</span>
2389
- <span class="cline-any cline-no">&nbsp;</span>
2390
- <span class="cline-any cline-no">&nbsp;</span>
2391
- <span class="cline-any cline-no">&nbsp;</span>
2392
- <span class="cline-any cline-neutral">&nbsp;</span>
2393
- <span class="cline-any cline-no">&nbsp;</span>
2394
- <span class="cline-any cline-neutral">&nbsp;</span>
2395
- <span class="cline-any cline-neutral">&nbsp;</span>
2396
- <span class="cline-any cline-no">&nbsp;</span>
2397
- <span class="cline-any cline-no">&nbsp;</span>
2398
- <span class="cline-any cline-no">&nbsp;</span>
2399
- <span class="cline-any cline-no">&nbsp;</span>
2400
- <span class="cline-any cline-no">&nbsp;</span>
2401
- <span class="cline-any cline-no">&nbsp;</span>
2402
- <span class="cline-any cline-neutral">&nbsp;</span>
2403
- <span class="cline-any cline-neutral">&nbsp;</span>
2404
- <span class="cline-any cline-no">&nbsp;</span>
2405
- <span class="cline-any cline-no">&nbsp;</span>
2406
- <span class="cline-any cline-no">&nbsp;</span>
2407
- <span class="cline-any cline-no">&nbsp;</span>
2408
- <span class="cline-any cline-no">&nbsp;</span>
2409
- <span class="cline-any cline-no">&nbsp;</span>
2410
- <span class="cline-any cline-neutral">&nbsp;</span>
2411
- <span class="cline-any cline-neutral">&nbsp;</span>
2412
- <span class="cline-any cline-no">&nbsp;</span>
2413
- <span class="cline-any cline-no">&nbsp;</span>
2414
- <span class="cline-any cline-no">&nbsp;</span>
2415
- <span class="cline-any cline-no">&nbsp;</span>
2416
- <span class="cline-any cline-no">&nbsp;</span>
2417
- <span class="cline-any cline-no">&nbsp;</span>
2418
- <span class="cline-any cline-neutral">&nbsp;</span>
2419
- <span class="cline-any cline-no">&nbsp;</span>
2420
- <span class="cline-any cline-no">&nbsp;</span>
2421
- <span class="cline-any cline-no">&nbsp;</span>
2422
- <span class="cline-any cline-no">&nbsp;</span>
2423
- <span class="cline-any cline-neutral">&nbsp;</span>
2424
- <span class="cline-any cline-no">&nbsp;</span>
2425
- <span class="cline-any cline-neutral">&nbsp;</span>
2426
- <span class="cline-any cline-neutral">&nbsp;</span>
2427
- <span class="cline-any cline-no">&nbsp;</span>
2428
- <span class="cline-any cline-neutral">&nbsp;</span>
2429
- <span class="cline-any cline-neutral">&nbsp;</span>
2430
- <span class="cline-any cline-neutral">&nbsp;</span>
2431
- <span class="cline-any cline-yes">1780x</span>
2432
- <span class="cline-any cline-neutral">&nbsp;</span>
2433
- <span class="cline-any cline-neutral">&nbsp;</span>
2434
- <span class="cline-any cline-neutral">&nbsp;</span>
2435
- <span class="cline-any cline-neutral">&nbsp;</span>
2436
- <span class="cline-any cline-neutral">&nbsp;</span>
2437
- <span class="cline-any cline-yes">48595x</span>
2438
- <span class="cline-any cline-neutral">&nbsp;</span>
2439
- <span class="cline-any cline-no">&nbsp;</span>
2440
- <span class="cline-any cline-neutral">&nbsp;</span>
2441
- <span class="cline-any cline-yes">48595x</span>
2442
- <span class="cline-any cline-neutral">&nbsp;</span>
2443
- <span class="cline-any cline-neutral">&nbsp;</span>
2444
- <span class="cline-any cline-neutral">&nbsp;</span>
2445
- <span class="cline-any cline-neutral">&nbsp;</span>
2446
- <span class="cline-any cline-neutral">&nbsp;</span>
2447
- <span class="cline-any cline-neutral">&nbsp;</span>
2448
- <span class="cline-any cline-yes">1550x</span>
2449
- <span class="cline-any cline-yes">50x</span>
2450
- <span class="cline-any cline-neutral">&nbsp;</span>
2451
- <span class="cline-any cline-yes">1500x</span>
2452
- <span class="cline-any cline-yes">1500x</span>
2453
- <span class="cline-any cline-yes">325x</span>
2454
- <span class="cline-any cline-neutral">&nbsp;</span>
2455
- <span class="cline-any cline-yes">1175x</span>
2456
- <span class="cline-any cline-neutral">&nbsp;</span>
2457
- <span class="cline-any cline-neutral">&nbsp;</span>
2458
- <span class="cline-any cline-neutral">&nbsp;</span>
2459
- <span class="cline-any cline-neutral">&nbsp;</span>
2460
- <span class="cline-any cline-neutral">&nbsp;</span>
2461
- <span class="cline-any cline-neutral">&nbsp;</span>
2462
- <span class="cline-any cline-neutral">&nbsp;</span>
2463
- <span class="cline-any cline-neutral">&nbsp;</span>
2464
- <span class="cline-any cline-neutral">&nbsp;</span>
2465
- <span class="cline-any cline-neutral">&nbsp;</span>
2466
- <span class="cline-any cline-neutral">&nbsp;</span>
2467
- <span class="cline-any cline-neutral">&nbsp;</span>
2468
- <span class="cline-any cline-yes">90x</span>
2469
- <span class="cline-any cline-yes">90x</span>
2470
- <span class="cline-any cline-yes">90x</span>
2471
- <span class="cline-any cline-neutral">&nbsp;</span>
2472
- <span class="cline-any cline-yes">204x</span>
2473
- <span class="cline-any cline-neutral">&nbsp;</span>
2474
- <span class="cline-any cline-neutral">&nbsp;</span>
2475
- <span class="cline-any cline-yes">204x</span>
2476
- <span class="cline-any cline-neutral">&nbsp;</span>
2477
- <span class="cline-any cline-yes">4632x</span>
2478
- <span class="cline-any cline-yes">90x</span>
2479
- <span class="cline-any cline-yes">90x</span>
2480
- <span class="cline-any cline-neutral">&nbsp;</span>
2481
- <span class="cline-any cline-neutral">&nbsp;</span>
2482
- <span class="cline-any cline-neutral">&nbsp;</span>
2483
- <span class="cline-any cline-neutral">&nbsp;</span>
2484
- <span class="cline-any cline-yes">90x</span>
2485
- <span class="cline-any cline-neutral">&nbsp;</span>
2486
- <span class="cline-any cline-neutral">&nbsp;</span>
2487
- <span class="cline-any cline-neutral">&nbsp;</span>
2488
- <span class="cline-any cline-neutral">&nbsp;</span>
2489
- <span class="cline-any cline-neutral">&nbsp;</span>
2490
- <span class="cline-any cline-yes">90x</span>
2491
- <span class="cline-any cline-yes">5x</span>
2492
- <span class="cline-any cline-yes">25x</span>
2493
- <span class="cline-any cline-neutral">&nbsp;</span>
2494
- <span class="cline-any cline-neutral">&nbsp;</span>
2495
- <span class="cline-any cline-neutral">&nbsp;</span>
2496
- <span class="cline-any cline-yes">66x</span>
2497
- <span class="cline-any cline-neutral">&nbsp;</span>
2498
- <span class="cline-any cline-neutral">&nbsp;</span>
2499
- <span class="cline-any cline-neutral">&nbsp;</span>
2500
- <span class="cline-any cline-neutral">&nbsp;</span>
2501
- <span class="cline-any cline-neutral">&nbsp;</span>
2502
- <span class="cline-any cline-yes">25x</span>
2503
- <span class="cline-any cline-yes">37x</span>
2504
- <span class="cline-any cline-neutral">&nbsp;</span>
2505
- <span class="cline-any cline-yes">25x</span>
2506
- <span class="cline-any cline-yes">21x</span>
2507
- <span class="cline-any cline-yes">21x</span>
2508
- <span class="cline-any cline-neutral">&nbsp;</span>
2509
- <span class="cline-any cline-neutral">&nbsp;</span>
2510
- <span class="cline-any cline-neutral">&nbsp;</span>
2511
- <span class="cline-any cline-yes">21x</span>
2512
- <span class="cline-any cline-neutral">&nbsp;</span>
2513
- <span class="cline-any cline-neutral">&nbsp;</span>
2514
- <span class="cline-any cline-yes">21x</span>
2515
- <span class="cline-any cline-yes">50x</span>
2516
- <span class="cline-any cline-yes">29x</span>
2517
- <span class="cline-any cline-yes">29x</span>
2518
- <span class="cline-any cline-yes">29x</span>
2519
- <span class="cline-any cline-neutral">&nbsp;</span>
2520
- <span class="cline-any cline-neutral">&nbsp;</span>
2521
- <span class="cline-any cline-neutral">&nbsp;</span>
2522
- <span class="cline-any cline-neutral">&nbsp;</span>
2523
- <span class="cline-any cline-neutral">&nbsp;</span>
2524
- <span class="cline-any cline-yes">90x</span>
2525
- <span class="cline-any cline-neutral">&nbsp;</span>
2526
- <span class="cline-any cline-neutral">&nbsp;</span>
2527
- <span class="cline-any cline-neutral">&nbsp;</span>
2528
- <span class="cline-any cline-no">&nbsp;</span>
2529
- <span class="cline-any cline-neutral">&nbsp;</span>
2530
- <span class="cline-any cline-neutral">&nbsp;</span>
2531
- <span class="cline-any cline-no">&nbsp;</span>
2532
- <span class="cline-any cline-no">&nbsp;</span>
2533
- <span class="cline-any cline-neutral">&nbsp;</span>
2534
- <span class="cline-any cline-no">&nbsp;</span>
2535
- <span class="cline-any cline-neutral">&nbsp;</span>
2536
- <span class="cline-any cline-neutral">&nbsp;</span>
2537
- <span class="cline-any cline-neutral">&nbsp;</span>
2538
- <span class="cline-any cline-no">&nbsp;</span>
2539
- <span class="cline-any cline-neutral">&nbsp;</span>
2540
- <span class="cline-any cline-neutral">&nbsp;</span>
2541
- <span class="cline-any cline-yes">1920x</span>
2542
- <span class="cline-any cline-yes">1920x</span>
2543
- <span class="cline-any cline-yes">73x</span>
2544
- <span class="cline-any cline-neutral">&nbsp;</span>
2545
- <span class="cline-any cline-neutral">&nbsp;</span>
2546
- <span class="cline-any cline-neutral">&nbsp;</span>
2547
- <span class="cline-any cline-yes">2x</span>
2548
- <span class="cline-any cline-neutral">&nbsp;</span>
2549
- <span class="cline-any cline-yes">71x</span>
2550
- <span class="cline-any cline-yes">92x</span>
2551
- <span class="cline-any cline-yes">1x</span>
2552
- <span class="cline-any cline-neutral">&nbsp;</span>
2553
- <span class="cline-any cline-yes">91x</span>
2554
- <span class="cline-any cline-neutral">&nbsp;</span>
2555
- <span class="cline-any cline-neutral">&nbsp;</span>
2556
- <span class="cline-any cline-neutral">&nbsp;</span>
2557
- <span class="cline-any cline-neutral">&nbsp;</span>
2558
- <span class="cline-any cline-neutral">&nbsp;</span>
2559
- <span class="cline-any cline-neutral">&nbsp;</span>
2560
- <span class="cline-any cline-neutral">&nbsp;</span>
2561
- <span class="cline-any cline-neutral">&nbsp;</span>
2562
- <span class="cline-any cline-yes">3958x</span>
2563
- <span class="cline-any cline-neutral">&nbsp;</span>
2564
- <span class="cline-any cline-neutral">&nbsp;</span>
2565
- <span class="cline-any cline-neutral">&nbsp;</span>
2566
- <span class="cline-any cline-neutral">&nbsp;</span>
2567
- <span class="cline-any cline-neutral">&nbsp;</span>
2568
- <span class="cline-any cline-yes">3958x</span>
2569
- <span class="cline-any cline-neutral">&nbsp;</span>
2570
- <span class="cline-any cline-neutral">&nbsp;</span>
2571
- <span class="cline-any cline-neutral">&nbsp;</span>
2572
- <span class="cline-any cline-neutral">&nbsp;</span>
2573
- <span class="cline-any cline-yes">3958x</span>
2574
- <span class="cline-any cline-yes">3742x</span>
2575
- <span class="cline-any cline-yes">3742x</span>
2576
- <span class="cline-any cline-no">&nbsp;</span>
2577
- <span class="cline-any cline-neutral">&nbsp;</span>
2578
- <span class="cline-any cline-yes">3742x</span>
2579
- <span class="cline-any cline-yes">216x</span>
2580
- <span class="cline-any cline-yes">118x</span>
2581
- <span class="cline-any cline-yes">118x</span>
2582
- <span class="cline-any cline-no">&nbsp;</span>
2583
- <span class="cline-any cline-neutral">&nbsp;</span>
2584
- <span class="cline-any cline-yes">118x</span>
2585
- <span class="cline-any cline-neutral">&nbsp;</span>
2586
- <span class="cline-any cline-neutral">&nbsp;</span>
2587
- <span class="cline-any cline-neutral">&nbsp;</span>
2588
- <span class="cline-any cline-yes">3934x</span>
2589
- <span class="cline-any cline-yes">15862x</span>
2590
- <span class="cline-any cline-yes">114x</span>
2591
- <span class="cline-any cline-yes">118x</span>
2592
- <span class="cline-any cline-neutral">&nbsp;</span>
2593
- <span class="cline-any cline-neutral">&nbsp;</span>
2594
- <span class="cline-any cline-neutral">&nbsp;</span>
2595
- <span class="cline-any cline-neutral">&nbsp;</span>
2596
- <span class="cline-any cline-neutral">&nbsp;</span>
2597
- <span class="cline-any cline-yes">15748x</span>
2598
- <span class="cline-any cline-yes">90x</span>
2599
- <span class="cline-any cline-yes">90x</span>
2600
- <span class="cline-any cline-yes">4x</span>
2601
- <span class="cline-any cline-yes">4x</span>
2602
- <span class="cline-any cline-neutral">&nbsp;</span>
2603
- <span class="cline-any cline-neutral">&nbsp;</span>
2604
- <span class="cline-any cline-yes">15658x</span>
2605
- <span class="cline-any cline-yes">70x</span>
2606
- <span class="cline-any cline-yes">70x</span>
2607
- <span class="cline-any cline-yes">70x</span>
2608
- <span class="cline-any cline-yes">70x</span>
2609
- <span class="cline-any cline-neutral">&nbsp;</span>
2610
- <span class="cline-any cline-yes">15588x</span>
2611
- <span class="cline-any cline-yes">396x</span>
2612
- <span class="cline-any cline-yes">200x</span>
2613
- <span class="cline-any cline-neutral">&nbsp;</span>
2614
- <span class="cline-any cline-neutral">&nbsp;</span>
2615
- <span class="cline-any cline-neutral">&nbsp;</span>
2616
- <span class="cline-any cline-neutral">&nbsp;</span>
2617
- <span class="cline-any cline-neutral">&nbsp;</span>
2618
- <span class="cline-any cline-neutral">&nbsp;</span>
2619
- <span class="cline-any cline-neutral">&nbsp;</span>
2620
- <span class="cline-any cline-neutral">&nbsp;</span>
2621
- <span class="cline-any cline-yes">2x</span>
2622
- <span class="cline-any cline-yes">104x</span>
2623
- <span class="cline-any cline-neutral">&nbsp;</span>
2624
- <span class="cline-any cline-neutral">&nbsp;</span>
2625
- <span class="cline-any cline-neutral">&nbsp;</span>
2626
- <span class="cline-any cline-neutral">&nbsp;</span>
2627
- <span class="cline-any cline-neutral">&nbsp;</span>
2628
- <span class="cline-any cline-yes">90x</span>
2629
- <span class="cline-any cline-neutral">&nbsp;</span>
2630
- <span class="cline-any cline-neutral">&nbsp;</span>
2631
- <span class="cline-any cline-neutral">&nbsp;</span>
2632
- <span class="cline-any cline-neutral">&nbsp;</span>
2633
- <span class="cline-any cline-neutral">&nbsp;</span>
2634
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const _ = require('lodash');
2635
- const cuid = require('cuid');
2636
- const { SemanticAttributes } = require('@opentelemetry/semantic-conventions');
2637
- &nbsp;
2638
- // This module is responsible for managing all of the documents (apostrophe "docs")
2639
- // in the `aposDocs` mongodb collection.
2640
- //
2641
- // The `getManager` method should be used to obtain a reference to the module
2642
- // that manages a particular doc type, so that you can benefit from behavior
2643
- // specific to that module. One method of this module that you may sometimes use directly
2644
- // is `apos.doc.find()`, which returns a query[query](server-@apostrophecms/query.html) for
2645
- // fetching documents of all types. This is useful when implementing something
2646
- // like the [@apostrophecms/search](../@apostrophecms/search/index.html) module.
2647
- //
2648
- // ## Options
2649
- //
2650
- // ** `advisoryLockTimeout`: Apostrophe locks documents while they are
2651
- // being edited so that another user, or another tab for the same user,
2652
- // does not inadvertently interfere. These locks are refreshed frequently
2653
- // by the browser while they are held. By default, if the browser
2654
- // is not heard from for 15 seconds, the lock expires. Note that
2655
- // the browser refreshes the lock every 5 seconds. This timeout should
2656
- // be quite short as there is no longer any reliable way to force a browser
2657
- // to unlock the document when leaving the page.
2658
- &nbsp;
2659
- module.exports = {
2660
- options: {
2661
- alias: 'doc',
2662
- advisoryLockTimeout: 15
2663
- },
2664
- async init(self) {
2665
- self.managers = {};
2666
- self.contextOperations = [];
2667
- self.enableBrowserData();
2668
- await self.enableCollection();
2669
- self.apos.isNew = await self.detectNew();
2670
- await self.createIndexes();
2671
- self.addLegacyMigrations();
2672
- self.addCacheFieldMigration();
2673
- },
2674
- restApiRoutes(self) {
2675
- return {
2676
- // GET /api/v1/@apostrophecms/doc/_id supports only the universal query
2677
- // features, but works for any document type. Simplifies browser-side
2678
- // logic for redirects to foreign documents. The frontend only has to
2679
- // know the doc _id.
2680
- //
2681
- // Since this API is solely for editing purposes you will receive
2682
- // a 404 if you request a document you cannot edit.
2683
- <span class="fstat-no" title="function not covered" > as</span>ync getOne(req, _id) {
2684
- <span class="cstat-no" title="statement not covered" > _id = self.apos.i18n.inferIdLocaleAndMode(req, _id);</span>
2685
- const doc = <span class="cstat-no" title="statement not covered" >await self.find(req, { _id }).permission('edit').toObject();</span>
2686
- <span class="cstat-no" title="statement not covered" > if (!doc) {</span>
2687
- <span class="cstat-no" title="statement not covered" > throw self.apos.error('notfound');</span>
2688
- }
2689
- <span class="cstat-no" title="statement not covered" > return doc;</span>
2690
- }
2691
- };
2692
- },
2693
- apiRoutes(self) {
2694
- return {
2695
- post: {
2696
- <span class="fstat-no" title="function not covered" > as</span>ync slugTaken(req) {
2697
- <span class="cstat-no" title="statement not covered" > if (!req.user) {</span>
2698
- <span class="cstat-no" title="statement not covered" > throw self.apos.error('notfound');</span>
2699
- }
2700
- const slug = <span class="cstat-no" title="statement not covered" >self.apos.launder.string(req.body.slug);</span>
2701
- const _id = <span class="cstat-no" title="statement not covered" >self.apos.launder.id(req.body._id);</span>
2702
- const criteria = <span class="cstat-no" title="statement not covered" >{ slug: slug };</span>
2703
- <span class="cstat-no" title="statement not covered" > if (_id) {</span>
2704
- <span class="cstat-no" title="statement not covered" > criteria._id = { $ne: _id };</span>
2705
- }
2706
- const doc = <span class="cstat-no" title="statement not covered" >await self.find(req, criteria).permission(false).archived(null).project({ slug: 1 }).toObject();</span>
2707
- <span class="cstat-no" title="statement not covered" > if (doc) {</span>
2708
- <span class="cstat-no" title="statement not covered" > throw self.apos.error('conflict');</span>
2709
- } else {
2710
- <span class="cstat-no" title="statement not covered" > return {</span>
2711
- available: true
2712
- };
2713
- }
2714
- },
2715
- // Fast bulk query for doc `ids` that the user is permitted to edit.
2716
- //
2717
- // IDs should be sent as an array in the `ids` property of the POST
2718
- // request.
2719
- //
2720
- // The response object contains an `editable` array made up of
2721
- // the ids of those documents in the original set that the user
2722
- // is actually permitted to edit. Those the user cannot edit
2723
- // are not included. The original order is preserved.
2724
- //
2725
- // This route is a POST route because large numbers of ids
2726
- // might not be accepted as a query string.
2727
- async editable(req) {
2728
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!req.user) {
2729
- <span class="cstat-no" title="statement not covered" > throw self.apos.error('notfound');</span>
2730
- }
2731
- const ids = self.apos.launder.ids(req.body.ids);
2732
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!ids.length) {
2733
- <span class="cstat-no" title="statement not covered" > return {</span>
2734
- editable: []
2735
- };
2736
- }
2737
- const found = await self.apos.doc.find(req, {
2738
- _id: {
2739
- $in: ids
2740
- }
2741
- }).project({ _id: 1 }).permission('edit').toArray();
2742
- return {
2743
- editable: self.apos.util.orderById(ids, found).map(doc =&gt; doc._id)
2744
- };
2745
- }
2746
- }
2747
- };
2748
- },
2749
- handlers(self) {
2750
- return {
2751
- '@apostrophecms/doc-type:beforeInsert': {
2752
- setLocaleAndMode(req, doc, options) {
2753
- const manager = self.getManager(doc.type);
2754
- if (manager.isLocalized()) {
2755
- doc.aposLocale = doc.aposLocale || `${req.locale}:${req.mode}`;
2756
- doc.aposMode = req.mode;
2757
- }
2758
- },
2759
- testPermissionsAndAddIdAndCreatedAt(req, doc, options) {
2760
- self.testInsertPermissions(req, doc, options);
2761
- const manager = self.getManager(doc.type);
2762
- if (doc._id &amp;&amp; manager.isLocalized()) {
2763
- if (!doc.aposDocId) {
2764
- const components = doc._id.split(':');
2765
- <span class="missing-if-branch" title="if path not taken" >I</span>if (components.length &lt; 3) {
2766
- <span class="cstat-no" title="statement not covered" > throw new Error('If you supply your own _id it must end with :locale:mode, like :en:published');</span>
2767
- }
2768
- doc.aposDocId = components[0];
2769
- doc.aposLocale = `${components[1]}:${components[2]}`;
2770
- }
2771
- }
2772
- if (!doc.aposDocId) {
2773
- doc.aposDocId = self.apos.util.generateId();
2774
- }
2775
- if (!doc._id) {
2776
- if (!doc.aposLocale) {
2777
- <span class="missing-if-branch" title="if path not taken" >I</span>if (manager.isLocalized()) {
2778
- <span class="cstat-no" title="statement not covered" > doc.aposLocale = `${req.locale}:${req.mode}`;</span>
2779
- }
2780
- }
2781
- if (doc.aposLocale) {
2782
- doc._id = `${doc.aposDocId}:${doc.aposLocale}`;
2783
- } else {
2784
- doc._id = doc.aposDocId;
2785
- }
2786
- }
2787
- doc.metaType = 'doc';
2788
- doc.createdAt = new Date();
2789
- if (doc.archived == null) {
2790
- // Not always in the schema, so ensure it's true or false
2791
- // to simplify queries and indexing
2792
- doc.archived = false;
2793
- }
2794
- },
2795
- // Makes using our model APIs directly less tedious
2796
- ensureAreaAndWidgetIds(req, doc, options) {
2797
- self.apos.area.walk(doc, area =&gt; {
2798
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!area._id) {
2799
- <span class="cstat-no" title="statement not covered" > area._id = self.apos.util.generateId();</span>
2800
- }
2801
- for (const item of (area.items || <span class="branch-1 cbranch-no" title="branch not covered" >[])</span>) {
2802
- if (!item._id) {
2803
- item._id = self.apos.util.generateId();
2804
- }
2805
- }
2806
- });
2807
- }
2808
- },
2809
- '@apostrophecms/doc-type:beforeDelete': {
2810
- testPermissions(req, doc, options) {
2811
- <span class="missing-if-branch" title="else path not taken" >E</span>if (!(options.permissions === false)) {
2812
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!self.apos.permission.can(req, 'delete', doc)) {
2813
- <span class="cstat-no" title="statement not covered" > throw self.apos.error('forbidden');</span>
2814
- }
2815
- }
2816
- }
2817
- },
2818
- '@apostrophecms/doc-type:beforePublish': {
2819
- testPermissions(req, info) {
2820
- <span class="missing-if-branch" title="else path not taken" >E</span>if (info.options.permissions !== false) {
2821
- if (!self.apos.permission.can(req, info.options.autopublishing ? 'edit' : 'publish', info.draft)) {
2822
- throw self.apos.error('forbidden');
2823
- }
2824
- }
2825
- }
2826
- },
2827
- '@apostrophecms/doc-type:beforeSave': {
2828
- ensureSlugSortifyAndUpdatedAt(req, doc, options) {
2829
- const manager = self.getManager(doc.type);
2830
- manager.ensureSlug(doc);
2831
- _.each(manager.schema, function (field) {
2832
- if (field.sortify) {
2833
- doc[field.name + 'Sortified'] = self.apos.util.sortify(doc[field.name] ? doc[field.name] : '');
2834
- }
2835
- });
2836
- if (options.setUpdatedAtAndBy !== false) {
2837
- const date = new Date();
2838
- doc.updatedAt = date;
2839
- doc.cacheInvalidatedAt = date;
2840
- doc.updatedBy = req.user ? {
2841
- _id: req.user._id,
2842
- title: req.user.title || <span class="branch-1 cbranch-no" title="branch not covered" >null,</span>
2843
- username: req.user.username
2844
- } : <span class="branch-1 cbranch-no" title="branch not covered" >{</span>
2845
- username: 'ApostropheCMS'
2846
- };
2847
- }
2848
- },
2849
- deduplicateWidgetIds(req, doc, options) {
2850
- this.deduplicateWidgetIds(doc);
2851
- }
2852
- },
2853
- '@apostrophecms/doc-type:afterInsert': {
2854
- async ensureDraftExists(req, doc, options) {
2855
- const manager = self.getManager(doc.type);
2856
- if (!manager.isLocalized()) {
2857
- return;
2858
- }
2859
- if (self.isDraft(doc)) {
2860
- return;
2861
- }
2862
- const draftLocale = doc.aposLocale.replace(':published', ':draft');
2863
- const draftId = `${doc.aposDocId}:${draftLocale}`;
2864
- if (await self.db.findOne({
2865
- _id: draftId
2866
- }, {
2867
- projection: {
2868
- _id: 1
2869
- }
2870
- })) {
2871
- return;
2872
- }
2873
- const draft = {
2874
- ...doc,
2875
- _id: draftId,
2876
- aposLocale: draftLocale,
2877
- lastPublishedAt: doc.createdAt || <span class="branch-1 cbranch-no" title="branch not covered" >new Date()</span>
2878
- };
2879
- return manager.insertDraftOf(req, doc, draft, options);
2880
- }
2881
- },
2882
- fixUniqueError: {
2883
- async fixUniqueSlug(req, doc) {
2884
- doc.slug += Math.floor(Math.random() * 10).toString();
2885
- }
2886
- },
2887
- '@apostrophecms/doc-type:beforeUpdate': {
2888
- async checkPermissionsBeforeUpdate(req, doc, options) {
2889
- <span class="missing-if-branch" title="else path not taken" >E</span>if (options.permissions !== false) {
2890
- if (!self.apos.permission.can(req, 'edit', doc)) {
2891
- throw new Error('forbidden');
2892
- }
2893
- }
2894
- }
2895
- },
2896
- '@apostrophecms/version:unversionedFields': {
2897
- <span class="fstat-no" title="function not covered" > ba</span>seUnversionedFields(req, doc, fields) {
2898
- <span class="cstat-no" title="statement not covered" > fields.push('visibility');</span>
2899
- }
2900
- },
2901
- '@apostrophecms/doc-type:afterDelete': {
2902
- // Deleting a draft implies deleting the document completely, since
2903
- // a draft must always exist. Deleting a published doc implies deleting
2904
- // the "previous" copy, since it only makes sense as a tool to revert
2905
- // the published doc's content. Note that deleting a draft recursively
2906
- // deletes both the published and previous docs.
2907
- async deleteOtherModes(req, doc, options) {
2908
- <span class="missing-if-branch" title="if path not taken" >I</span>if (doc.aposLocale &amp;&amp; doc.aposLocale.endsWith(':draft')) {
2909
- <span class="cstat-no" title="statement not covered" > await cleanup('published');</span>
2910
- <span class="cstat-no" title="statement not covered" > await self.emit('afterAllModesDeleted', req, doc, options);</span>
2911
- <span class="cstat-no" title="statement not covered" > return;</span>
2912
- }
2913
- if (doc.aposLocale &amp;&amp; doc.aposLocale.endsWith(':published')) {
2914
- return cleanup('previous');
2915
- }
2916
- async function cleanup(mode) {
2917
- const peer = await self.apos.doc.db.findOne({
2918
- _id: doc._id.replace(/:[\w]+$/, `:${mode}`)
2919
- });
2920
- if (peer) {
2921
- const manager = peer.slug.startsWith('/') ? self.apos.page : <span class="branch-1 cbranch-no" title="branch not covered" >self.getManager(peer.type);</span>
2922
- await manager.delete(req, peer, options);
2923
- }
2924
- }
2925
- }
2926
- }
2927
- };
2928
- },
2929
- methods(self) {
2930
- return {
2931
- async enableCollection() {
2932
- self.db = await self.apos.db.collection('aposDocs');
2933
- },
2934
- // Detect whether the database is brand new (zero documents).
2935
- // This can't be done later because after this point init()
2936
- // functions are permitted to insert documents
2937
- async detectNew() {
2938
- const existing = await self.db.countDocuments();
2939
- return !existing;
2940
- },
2941
- async createSlugIndex() {
2942
- const params = self.getSlugIndexParams();
2943
- return self.db.createIndex(params, { unique: true });
2944
- },
2945
- getSlugIndexParams() {
2946
- return {
2947
- slug: 1,
2948
- aposLocale: 1
2949
- };
2950
- },
2951
- getPathLevelIndexParams() {
2952
- return {
2953
- path: 1,
2954
- level: 1,
2955
- aposLocale: 1
2956
- };
2957
- },
2958
- async createIndexes() {
2959
- await self.db.createIndex({
2960
- type: 1,
2961
- aposLocale: 1
2962
- }, {});
2963
- await self.createSlugIndex();
2964
- await self.db.createIndex({
2965
- titleSortified: 1,
2966
- aposLocale: 1
2967
- }, {});
2968
- await self.db.createIndex({
2969
- updatedAt: -1,
2970
- aposLocale: 1
2971
- }, {});
2972
- await self.db.createIndex({
2973
- relatedReverseIds: 1,
2974
- aposLocale: 1
2975
- }, {});
2976
- await self.db.createIndex({ 'advisoryLock._id': 1 }, {});
2977
- await self.createTextIndex();
2978
- await self.db.createIndex({ parkedId: 1 }, {});
2979
- await self.db.createIndex({
2980
- submitted: 1,
2981
- aposLocale: 1
2982
- });
2983
- await self.createPathLevelIndex();
2984
- },
2985
- async createTextIndex() {
2986
- try {
2987
- return await attempt();
2988
- } catch (e) {
2989
- // We are experiencing what may be a mongodb bug in which these indexes
2990
- // have different weights than expected and the createIndex call fails.
2991
- // If this happens drop and recreate the text index
2992
- <span class="missing-if-branch" title="else path not taken" >E</span>if (e.toString().match(/different options/)) {
2993
- self.apos.util.warn('Text index has unexpected weights or other misconfiguration, reindexing');
2994
- await self.db.dropIndex('highSearchText_text_lowSearchText_text_title_text_searchBoost_text');
2995
- return await attempt();
2996
- } else {
2997
- <span class="cstat-no" title="statement not covered" > throw e;</span>
2998
- }
2999
- }
3000
- function attempt() {
3001
- return self.db.createIndex({
3002
- highSearchText: 'text',
3003
- lowSearchText: 'text',
3004
- title: 'text',
3005
- searchBoost: 'text'
3006
- }, {
3007
- default_language: self.options.searchLanguage || 'none',
3008
- weights: {
3009
- title: 100,
3010
- searchBoost: 150,
3011
- highSearchText: 10,
3012
- lowSearchText: 2
3013
- }
3014
- });
3015
- }
3016
- },
3017
- async createPathLevelIndex() {
3018
- const params = self.getPathLevelIndexParams();
3019
- return self.db.createIndex(params, {});
3020
- },
3021
- &nbsp;
3022
- // Returns a query based on the permissions
3023
- // associated with the given request. You can then
3024
- // invoke chainable query builders like `.project()`,
3025
- // `limit()`, etc. to alter the query before ending
3026
- // the chain with an awaitable method like `toArray()`
3027
- // to obtain documents.
3028
- //
3029
- // `req` determines what documents the user is allowed
3030
- // to see. `criteria` is a MongoDB criteria object,
3031
- // see the MongoDB documentation for basics on this.
3032
- // If an `options` object is present, query builder
3033
- // methods with the same name as each property are
3034
- // invoked, with the value of that property. This is
3035
- // an alternative to chaining methods.
3036
- //
3037
- // This method returns a query, not docs! You
3038
- // need to chain it with toArray() or other
3039
- // query methods and await the result:
3040
- //
3041
- // await apos.doc.find(req, { type: 'foobar' }).toArray()
3042
- &nbsp;
3043
- find(req, criteria = {}, options = {}) {
3044
- return self.apos.modules['@apostrophecms/any-doc-type'].find(req, criteria, options);
3045
- },
3046
- &nbsp;
3047
- // **Most often you will insert or update docs via the
3048
- // insert and update methods of the appropriate doc manager.**
3049
- // This method is for implementation use in those objects,
3050
- // and for times when you wish to explicitly bypass type-specific
3051
- // lifecycle events.
3052
- //
3053
- // Insert the given document. If the slug is not
3054
- // unique it is made unique. `beforeInsert`, `beforeSave`, `afterInsert`
3055
- // and `afterSave` events are emitted via the appropriate doc type manager,
3056
- // then awaited. They receive `(req, doc, options)`.
3057
- //
3058
- // Returns the inserted document.
3059
- //
3060
- // If the slug property is not set, the title
3061
- // property is converted to a slug. If neither
3062
- // property is set, an error is thrown.
3063
- //
3064
- // The `edit-type-name` permission is checked based on
3065
- // doc.type.
3066
- //
3067
- // If a unique key error occurs, the `@apostrophecms/doc:fixUniqueError`
3068
- // event is emitted and the doc is passed to all handlers.
3069
- // Modify the document to fix any properties that may need to be
3070
- // more unique due to a unique index you have added. It is
3071
- // not possible to know which property was responsible. This method
3072
- // takes care of the slug property directly.
3073
- //
3074
- // The `options` object may be omitted completely.
3075
- //
3076
- // If `options.permissions` is set explicitly to
3077
- // `false`, permissions checks are bypassed.
3078
- async insert(req, doc, options) {
3079
- const telemetry = self.apos.telemetry;
3080
- return telemetry.startActiveSpan(`model:${doc.type}:insert`, async (span) =&gt; {
3081
- span.setAttribute(SemanticAttributes.CODE_FUNCTION, 'insert');
3082
- span.setAttribute(SemanticAttributes.CODE_NAMESPACE, self.__meta.name);
3083
- span.setAttribute(telemetry.Attributes.TARGET_NAMESPACE, doc.type);
3084
- span.setAttribute(telemetry.Attributes.TARGET_FUNCTION, 'insert');
3085
- &nbsp;
3086
- try {
3087
- options = options || {};
3088
- const m = self.getManager(doc.type);
3089
- await m.emit('beforeInsert', req, doc, options);
3090
- await m.emit('beforeSave', req, doc, options);
3091
- &nbsp;
3092
- await telemetry.startActiveSpan(`db:${doc.type}:insert`, async (spanInsert) =&gt; {
3093
- spanInsert.setAttribute(SemanticAttributes.CODE_FUNCTION, 'insertBody');
3094
- spanInsert.setAttribute(SemanticAttributes.CODE_NAMESPACE, self.__meta.name);
3095
- spanInsert.setAttribute(telemetry.Attributes.TARGET_NAMESPACE, doc.type);
3096
- spanInsert.setAttribute(telemetry.Attributes.TARGET_FUNCTION, 'insert');
3097
- try {
3098
- const result = await self.insertBody(req, doc, options);
3099
- spanInsert.setStatus({ code: telemetry.api.SpanStatusCode.OK });
3100
- return result;
3101
- } catch (e) {
3102
- <span class="cstat-no" title="statement not covered" > telemetry.handleError(spanInsert, e);</span>
3103
- <span class="cstat-no" title="statement not covered" > throw e;</span>
3104
- } finally {
3105
- spanInsert.end();
3106
- }
3107
- }, span, {});
3108
- &nbsp;
3109
- await m.emit('afterInsert', req, doc, options);
3110
- await m.emit('afterSave', req, doc, options);
3111
- // TODO: Remove `afterLoad` in next major version. Deprecated.
3112
- await m.emit('afterLoad', req, [ doc ]);
3113
- span.setStatus({ code: telemetry.api.SpanStatusCode.OK });
3114
- return doc;
3115
- } catch (err) {
3116
- telemetry.handleError(span, err);
3117
- throw err;
3118
- } finally {
3119
- span.end();
3120
- }
3121
- });
3122
- },
3123
- // Updates the given document. If the slug is not
3124
- // unique it is made unique. `beforeUpdate`, `beforeSave`,
3125
- // `afterUpdate` and `afterSave` events are emitted
3126
- // via the appropriate doc type manager.
3127
- //
3128
- // The second argument must be the document itself.
3129
- // `$set`, `$inc`, etc. are NOT available via
3130
- // this interface. This simplifies the implementation
3131
- // of permissions and workflow. If you need to
3132
- // update an object, find it first and then update it.
3133
- //
3134
- // Returns the updated doc.
3135
- //
3136
- // If a unique key error occurs, the `@apostrophecms/doc:fixUniqueError`
3137
- // event is emitted and the doc is passed to all handlers.
3138
- // Modify the document to fix any properties that may need to be
3139
- // more unique due to a unique index you have added. It is
3140
- // not possible to know which property was responsible. This method
3141
- // takes care of the slug property directly.
3142
- //
3143
- // The `options` object may be omitted completely.
3144
- //
3145
- // If `options.permissions` is set explicitly to
3146
- // `false`, permissions checks are bypassed.
3147
- async update(req, doc, options) {
3148
- const telemetry = self.apos.telemetry;
3149
- return telemetry.startActiveSpan(`model:${doc.type}:update`, async (span) =&gt; {
3150
- span.setAttribute(SemanticAttributes.CODE_FUNCTION, 'update');
3151
- span.setAttribute(SemanticAttributes.CODE_NAMESPACE, self.__meta.name);
3152
- span.setAttribute(telemetry.Attributes.TARGET_NAMESPACE, doc.type);
3153
- span.setAttribute(telemetry.Attributes.TARGET_FUNCTION, 'update');
3154
- &nbsp;
3155
- try {
3156
- options = options || {};
3157
- const m = self.getManager(doc.type);
3158
- await m.emit('beforeUpdate', req, doc, options);
3159
- await m.emit('beforeSave', req, doc, options);
3160
- &nbsp;
3161
- await telemetry.startActiveSpan(`db:${doc.type}:update`, async (spanUpdate) =&gt; {
3162
- spanUpdate.setAttribute(SemanticAttributes.CODE_FUNCTION, 'updateBody');
3163
- spanUpdate.setAttribute(SemanticAttributes.CODE_NAMESPACE, self.__meta.name);
3164
- spanUpdate.setAttribute(telemetry.Attributes.TARGET_NAMESPACE, doc.type);
3165
- spanUpdate.setAttribute(telemetry.Attributes.TARGET_FUNCTION, 'update');
3166
- try {
3167
- const result = await self.updateBody(req, doc, options);
3168
- spanUpdate.setStatus({ code: telemetry.api.SpanStatusCode.OK });
3169
- return result;
3170
- } catch (e) {
3171
- <span class="cstat-no" title="statement not covered" > telemetry.handleError(spanUpdate, e);</span>
3172
- <span class="cstat-no" title="statement not covered" > throw e;</span>
3173
- } finally {
3174
- spanUpdate.end();
3175
- }
3176
- }, span, {});
3177
- &nbsp;
3178
- await m.emit('afterUpdate', req, doc, options);
3179
- await m.emit('afterSave', req, doc, options);
3180
- // TODO: Remove `afterLoad` in next major version. Deprecated.
3181
- await m.emit('afterLoad', req, [ doc ]);
3182
- span.setStatus({ code: telemetry.api.SpanStatusCode.OK });
3183
- return doc;
3184
- } catch (err) {
3185
- telemetry.handleError(span, err);
3186
- throw err;
3187
- } finally {
3188
- span.end();
3189
- }
3190
- });
3191
- },
3192
- &nbsp;
3193
- // True delete. To place a document in the archive,
3194
- // update the archived property (for a piece) or move it
3195
- // to be a child of the archive (for a page). True delete
3196
- // cannot be undone.
3197
- //
3198
- // This operation ignores the locale and mode of `req`
3199
- // in favor of the actual document's locale and mode.
3200
- async delete(req, doc, options = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
3201
- options = options || <span class="branch-1 cbranch-no" title="branch not covered" >{};</span>
3202
- const m = self.getManager(doc.type);
3203
- await m.emit('beforeDelete', req, doc, options);
3204
- await self.deleteBody(req, doc, options);
3205
- await m.emit('afterDelete', req, doc, options);
3206
- },
3207
- &nbsp;
3208
- // Publish the given draft. If `options.permissions` is explicitly
3209
- // set to `false`, permissions checks are bypassed.
3210
- <span class="fstat-no" title="function not covered" > as</span>ync publish(req, draft, options = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
3211
- const m = <span class="cstat-no" title="statement not covered" >self.getManager(draft.type);</span>
3212
- <span class="cstat-no" title="statement not covered" > return m.publish(req, draft, options);</span>
3213
- },
3214
- &nbsp;
3215
- // Unpublish a given document.
3216
- <span class="fstat-no" title="function not covered" > as</span>ync unpublish(req, doc) {
3217
- const m = <span class="cstat-no" title="statement not covered" >self.getManager(doc.type);</span>
3218
- <span class="cstat-no" title="statement not covered" > return m.unpublish(req, doc);</span>
3219
- },
3220
- &nbsp;
3221
- // Revert to the previously published content, or if
3222
- // already equal to the previously published content, to the
3223
- // publication before that. Returns `false` if the draft
3224
- // cannot be reverted any further.
3225
- <span class="fstat-no" title="function not covered" > as</span>ync revert(req, draft) {
3226
- const m = <span class="cstat-no" title="statement not covered" >self.getManager(draft.type);</span>
3227
- <span class="cstat-no" title="statement not covered" > return m.revert(req, draft);</span>
3228
- },
3229
- &nbsp;
3230
- // Recursively visit every property of a doc,
3231
- // invoking an iterator function for each one. Optionally
3232
- // deletes properties.
3233
- //
3234
- // The `_originalWidgets` property and its subproperties
3235
- // are not walked because they are temporary information
3236
- // present only to preserve widgets during save operations
3237
- // performed by users without permissions for those widgets.
3238
- //
3239
- // The second argument must be a function that takes
3240
- // an object, a key, a value, a "dot path" and an
3241
- // array containing the ancestors of this property
3242
- // (beginning with the original `doc` and including
3243
- // "object") and explicitly returns `false` if that property
3244
- // should be discarded. If any other value is returned the
3245
- // property remains.
3246
- //
3247
- // Remember, keys can be numbers; toString() is
3248
- // your friend.
3249
- //
3250
- // If the original object looks like:
3251
- //
3252
- // { a: { b: 5 } }
3253
- //
3254
- // Then when the iterator is invoked for b, the
3255
- // object will be { b: 5 }, the key
3256
- // will be `b`, the value will be `5`, the dotPath
3257
- // will be the string `a.b`, and ancestors will be
3258
- // [ { a: { b: 5 } } ].
3259
- //
3260
- // You do not need to pass the `_dotPath` and `_ancestors` arguments.
3261
- // They are used for recursive invocation.
3262
- walk(doc, iterator, _dotPath, _ancestors) {
3263
- // We do not use lodash here because of
3264
- // performance issues.
3265
- //
3266
- // Pruning big nested objects is not something we
3267
- // can afford to do slowly. -Tom
3268
- if (_dotPath !== undefined) {
3269
- _dotPath += '.';
3270
- } else {
3271
- _dotPath = '';
3272
- }
3273
- _ancestors = (_ancestors || []).concat(doc);
3274
- const remove = [];
3275
- for (const key in doc) {
3276
- const __dotPath = _dotPath + key.toString();
3277
- const ow = '_originalWidgets';
3278
- <span class="missing-if-branch" title="if path not taken" >I</span>if (__dotPath === ow || __dotPath.substring(0, ow.length) === ow + '.') {
3279
- <span class="cstat-no" title="statement not covered" > continue;</span>
3280
- }
3281
- <span class="missing-if-branch" title="if path not taken" >I</span>if (iterator(doc, key, doc[key], __dotPath, _ancestors) === false) {
3282
- <span class="cstat-no" title="statement not covered" > remove.push(key);</span>
3283
- } else {
3284
- const val = doc[key];
3285
- if (typeof val === 'object') {
3286
- self.walk(val, iterator, __dotPath, _ancestors.concat([ doc ]));
3287
- }
3288
- }
3289
- }
3290
- for (const key of remove) {
3291
- <span class="cstat-no" title="statement not covered" > delete doc[key];</span>
3292
- }
3293
- },
3294
- // Retry the given "actor" async function until it
3295
- // does not yield a MongoDB error related to
3296
- // unique indexes. The actor is not passed
3297
- // any arguments and it will be awaited. If
3298
- // an error related to uniqueness does occur, this module emits the
3299
- // `fixUniqueError` event with `req, doc` before
3300
- // the next retry. This is your opportunity to
3301
- // tweak properties relating to unique indexes
3302
- // this module does not know about.
3303
- //
3304
- // Passes on the return value of `actor`.
3305
- //
3306
- // Will make no more than 20 attempts, which statistically eliminates
3307
- // any chance we just didn't try hard enough while avoiding
3308
- // an infinite loop if the unique key error is due to a property
3309
- // there is no handling for.
3310
- async retryUntilUnique(req, doc, actor) {
3311
- const maxAttempts = 20;
3312
- let attempt = 0;
3313
- let firstError;
3314
- while (true) {
3315
- try {
3316
- return await actor();
3317
- } catch (err) {
3318
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!self.isUniqueError(err)) {
3319
- <span class="cstat-no" title="statement not covered" > throw err;</span>
3320
- }
3321
- <span class="missing-if-branch" title="else path not taken" >E</span>if (!firstError) {
3322
- firstError = err;
3323
- }
3324
- attempt++;
3325
- <span class="missing-if-branch" title="if path not taken" >I</span>if (attempt === maxAttempts) {
3326
- // Odds are now 1 in 100000000000000000000 that it is really due
3327
- // to a duplicate path or slug; a far more likely explanation is
3328
- // that another docFixUniqueError handler is needed to address
3329
- // an additional property that has to be unique. Report the
3330
- // original error to avoid confusion ("ZOMG, what are all these digits!")
3331
- <span class="cstat-no" title="statement not covered" > firstError.aposAddendum = 'retryUntilUnique failed, most likely you need another docFixUniqueError method to handle another property that has a unique index, reporting original error';</span>
3332
- <span class="cstat-no" title="statement not covered" > throw firstError;</span>
3333
- }
3334
- await self.emit('fixUniqueError', req, doc);
3335
- }
3336
- }
3337
- },
3338
- // Called by an `@apostrophecms/doc-type:insert` event handler to confirm that the user
3339
- // has the appropriate permissions for the doc's type and content.
3340
- testInsertPermissions(req, doc, options) {
3341
- <span class="missing-if-branch" title="else path not taken" >E</span>if (!(options.permissions === false)) {
3342
- if (!self.apos.permission.can(req, 'edit', doc)) {
3343
- throw self.apos.error('forbidden');
3344
- }
3345
- }
3346
- },
3347
- // Do not call this yourself, it is called
3348
- // by .update(). You will usually want to call the
3349
- // update method of the appropriate doc type manager instead:
3350
- //
3351
- // self.apos.doc.getManager(doc.type).update(...)
3352
- //
3353
- // You may override this method to change the implementation.
3354
- async updateBody(req, doc, options) {
3355
- const manager = self.apos.doc.getManager(doc.type);
3356
- if (manager.isLocalized(doc.type)) {
3357
- // Performance hit now at write time is better than inaccurate
3358
- // indicators of which docs are modified later (per Ben)
3359
- if (doc.aposLocale.endsWith(':draft') &amp;&amp; (options.setModified !== false)) {
3360
- doc.modified = await manager.isModified(req, doc);
3361
- }
3362
- }
3363
- const result = await self.retryUntilUnique(req, doc, async () =&gt; {
3364
- return self.db.replaceOne({ _id: doc._id }, self.apos.util.clonePermanent(doc));
3365
- });
3366
- if (manager.isLocalized(doc.type)) {
3367
- if (doc.aposLocale.endsWith(':published')) {
3368
- // The reverse can happen too: published changes
3369
- // (for instance because a move operation gets
3370
- // repeated on it) and draft is no longer out of sync
3371
- const modified = await manager.isModified(req, doc);
3372
- await self.apos.doc.db.updateOne({
3373
- _id: doc._id.replace(':published', ':draft')
3374
- }, {
3375
- $set: {
3376
- modified
3377
- }
3378
- });
3379
- }
3380
- }
3381
- return result;
3382
- },
3383
- &nbsp;
3384
- async deleteBody(req, doc, options) {
3385
- <span class="missing-if-branch" title="if path not taken" >I</span>if ((options.permissions !== false) &amp;&amp; (!self.apos.permission.can(req, 'delete', doc))) {
3386
- <span class="cstat-no" title="statement not covered" > throw self.apos.error('forbidden');</span>
3387
- }
3388
- return self.db.removeOne({
3389
- _id: doc._id
3390
- });
3391
- },
3392
- &nbsp;
3393
- // Insert the given document. Called by `.insert()`. You will usually want to
3394
- // call the insert method of the appropriate doc type manager instead:
3395
- //
3396
- // ```javascript
3397
- // self.apos.doc.getManager(doc.type).insert(...)
3398
- // ```
3399
- //
3400
- // However you can override this method to alter the
3401
- // implementation.
3402
- async insertBody(req, doc, options) {
3403
- const manager = self.apos.doc.getManager(doc.type);
3404
- if (manager.isLocalized(doc.type) &amp;&amp; doc.aposLocale.endsWith(':draft')) {
3405
- // We are inserting the draft for the first time so it is always
3406
- // different from the published, which won't exist yet. An exception
3407
- // is when the published doc is inserted first (like a parked page)
3408
- // in which case setModified: false will be passed in
3409
- if (options.setModified !== false) {
3410
- doc.modified = true;
3411
- }
3412
- }
3413
- if (!doc.visibility) {
3414
- // If the visibility property has been removed from the schema
3415
- // (images and files), make sure public queries can still match this type
3416
- doc.visibility = 'public';
3417
- }
3418
- return self.retryUntilUnique(req, doc, async function () {
3419
- return self.db.insertOne(self.apos.util.clonePermanent(doc));
3420
- });
3421
- },
3422
- &nbsp;
3423
- // Given either an id (as a string) or a criteria
3424
- // object, return a criteria object.
3425
- <span class="fstat-no" title="function not covered" > id</span>OrCriteria(idOrCriteria) {
3426
- <span class="cstat-no" title="statement not covered" > if (typeof idOrCriteria === 'object') {</span>
3427
- <span class="cstat-no" title="statement not covered" > return idOrCriteria;</span>
3428
- } else {
3429
- <span class="cstat-no" title="statement not covered" > return { _id: idOrCriteria };</span>
3430
- }
3431
- },
3432
- // Is this MongoDB error related to uniqueness? Great for retrying on duplicates.
3433
- // Used heavily by the pages module and no doubt will be by other things.
3434
- //
3435
- // There are three error codes for this: 13596 ("cannot change _id of a document")
3436
- // and 11000 and 11001 which specifically relate to the uniqueness of an index.
3437
- // 13596 can arise on an upsert operation, especially when the _id is assigned
3438
- // by the caller rather than by MongoDB.
3439
- //
3440
- // IMPORTANT: you are responsible for making sure ALL of your unique indexes
3441
- // are accounted for before retrying... otherwise an infinite loop will
3442
- // likely result.
3443
- isUniqueError(err) {
3444
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!err) {
3445
- <span class="cstat-no" title="statement not covered" > return false;</span>
3446
- }
3447
- return err.code === 13596 || err.code === 13596 || err.code === 11000 || <span class="branch-3 cbranch-no" title="branch not covered" >err.code === 11001;</span>
3448
- },
3449
- // Set the manager object corresponding
3450
- // to a given doc type. Typically `manager`
3451
- // is a module that subclasses `@apostrophecms/doc-type`
3452
- // (or its subclasses `@apostrophecms/piece-type` and `@apostrophecms/page-type`).
3453
- setManager(type, manager) {
3454
- self.managers[type] = manager;
3455
- },
3456
- // Returns an array of all of the doc types that have a registered manager.
3457
- getManaged() {
3458
- return Object.keys(self.managers);
3459
- },
3460
- // Fetch the manager object corresponding to a given
3461
- // doc type. The manager object provides methods such
3462
- // as find() specific to that type.
3463
- //
3464
- // If no manager has been registered, this method will
3465
- // return undefined. **All** doc types used in your project must
3466
- // have a registered manager (hint: all subclasses of
3467
- // pieces, the `data.global` doc, and page types registered
3468
- // with `@apostrophecms/page` always have one).
3469
- getManager(type) {
3470
- return self.managers[self.normalizeType(type)];
3471
- },
3472
- // Lock the given doc to a given `tabId`, such
3473
- // that other calls to `apos.doc.lock` for that doc id will
3474
- // fail unless they have the same `tabId`. If
3475
- // `options.force` is true, any existing lock is
3476
- // overwritten. The `options` argument may be
3477
- // omitted entirely.
3478
- //
3479
- // You cannot lock a document that has not yet been inserted,
3480
- // nor do you need to.
3481
- //
3482
- // If a lock cannot be obtained due to a conflict
3483
- // a 'locked' error is thrown, with the `me: true` property if
3484
- // the lock is held by the same user in another tab, or
3485
- // `username` and `title` properties if the lock is held
3486
- // by someone else. Other errors are thrown as appropriate.
3487
- //
3488
- // If you need to refresh a lock in order to avoid
3489
- // expiration, just lock it again. As long as the tabId
3490
- // is the same as the current lock holder you will receive
3491
- // another successful response.
3492
- //
3493
- // This method will set the `advisoryLock` property of the
3494
- // document both in the database and in the `doc` object
3495
- // that you pass to it. This ensures it is present if you
3496
- // follow this call up with an `update()` of the document.
3497
- &nbsp;
3498
- async lock(req, doc, tabId, options) {
3499
- if (!options) {
3500
- options = {};
3501
- }
3502
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!(req &amp;&amp; req.res)) {
3503
- // Use 'error' because this is always a code bug, not a bad
3504
- // HTTP request, and the message should not be disclosed to the client
3505
- <span class="cstat-no" title="statement not covered" > throw self.apos.error('error', 'You forgot to pass req as the first argument');</span>
3506
- }
3507
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!doc &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >doc._id)</span> {
3508
- <span class="cstat-no" title="statement not covered" > throw self.apos.error('invalid', 'No doc was passed');</span>
3509
- }
3510
- const _id = doc._id;
3511
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!tabId) {
3512
- <span class="cstat-no" title="statement not covered" > throw self.apos.error('invalid', 'no tabId was passed');</span>
3513
- }
3514
- let criteria = { _id };
3515
- if (!options.force) {
3516
- criteria.$or = [
3517
- {
3518
- advisoryLock: {
3519
- $exists: 0
3520
- }
3521
- },
3522
- {
3523
- 'advisoryLock.updatedAt': {
3524
- $lt: self.getAdvisoryLockExpiration()
3525
- }
3526
- },
3527
- {
3528
- 'advisoryLock._id': tabId
3529
- }
3530
- ];
3531
- }
3532
- // Prevent nuisance locking by matching only
3533
- // documents the user can edit
3534
- criteria = {
3535
- $and: [
3536
- criteria,
3537
- self.apos.permission.criteria(req, 'edit')
3538
- ]
3539
- };
3540
- doc.advisoryLock = {
3541
- username: req.user &amp;&amp; req.user.username,
3542
- title: req.user &amp;&amp; req.user.title,
3543
- _id: tabId,
3544
- updatedAt: new Date()
3545
- };
3546
- const result = await self.db.updateOne(criteria, {
3547
- $set: {
3548
- advisoryLock: doc.advisoryLock
3549
- }
3550
- });
3551
- if (!result.result.nModified) {
3552
- const info = await self.db.findOne({
3553
- _id
3554
- }, {
3555
- projection: {
3556
- advisoryLock: 1
3557
- }
3558
- });
3559
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!info) {
3560
- <span class="cstat-no" title="statement not covered" > throw self.apos.error('notfound');</span>
3561
- }
3562
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!info.advisoryLock) {
3563
- // Nobody else has a lock but you couldn't get one —
3564
- // must be permissions
3565
- <span class="cstat-no" title="statement not covered" > throw self.apos.error('forbidden');</span>
3566
- }
3567
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!info.advisoryLock) {
3568
- // Nobody else has a lock but you couldn't get one —
3569
- // must be permissions
3570
- <span class="cstat-no" title="statement not covered" > throw self.apos.error('forbidden');</span>
3571
- }
3572
- if (info.advisoryLock.username === req.user.username) {
3573
- throw self.apos.error('locked', {
3574
- me: true
3575
- });
3576
- }
3577
- throw self.apos.error('locked', {
3578
- title: info.advisoryLock.title,
3579
- username: info.advisoryLock.username
3580
- });
3581
- }
3582
- },
3583
- // Any advisory lock whose `updatedAt` time is older than the Date
3584
- // object returned by this method should be considered expired
3585
- getAdvisoryLockExpiration() {
3586
- return new Date(Date.now() - 1000 * self.options.advisoryLockTimeout);
3587
- },
3588
- // Release a document lock set via `lock` for a particular tabId.
3589
- // If the lock is already gone no error occurs.
3590
- //
3591
- // This method will unset the `advisoryLock` property of the
3592
- // document both in the database and in the `doc` object
3593
- // that you pass to it. This ensures it is present if you
3594
- // follow this call up with an `update()` of the document.
3595
- async unlock(req, doc, tabId) {
3596
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!(req &amp;&amp; req.res)) {
3597
- // Use 'error' because this is always a code bug, not a bad
3598
- // HTTP request, and the message should not be disclosed to the client
3599
- <span class="cstat-no" title="statement not covered" > throw self.apos.error('error', 'You forgot to pass req as the first argument');</span>
3600
- }
3601
- const id = doc &amp;&amp; doc._id;
3602
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!id) {
3603
- <span class="cstat-no" title="statement not covered" > throw self.apos.error('invalid', 'no doc');</span>
3604
- }
3605
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!tabId) {
3606
- <span class="cstat-no" title="statement not covered" > throw self.apos.error('invalid', 'no tabId');</span>
3607
- }
3608
- await self.db.updateOne({
3609
- _id: id,
3610
- 'advisoryLock._id': tabId
3611
- }, {
3612
- $unset: {
3613
- advisoryLock: 1
3614
- }
3615
- });
3616
- delete doc.advisoryLock;
3617
- },
3618
- // Returns the field names necessary to build URLs
3619
- // for typical doc types. If a query specific to a
3620
- // doc type is used, the `getUrlFields` method of
3621
- // that module is called instead. This method is
3622
- // used to implement "projections" for the
3623
- // `_url` computed property
3624
- getDefaultUrlFields() {
3625
- return [
3626
- 'type',
3627
- 'slug'
3628
- ];
3629
- },
3630
- // Add context menu operation to be used in AposDocContextMenu.
3631
- // Expected operation format is:
3632
- // {
3633
- // context: 'update',
3634
- // action: 'someAction',
3635
- // modal: 'ModalComponent',
3636
- // label: 'Context Menu Label'
3637
- // }
3638
- // All properties are required.
3639
- // The only supported `context` for now is `update`.
3640
- // `action` is the operation idefntifier and should be globally unique.
3641
- // Overriding existing custom actions is possible (the last wins).
3642
- // `modal` is the name of the modal component to be opened.
3643
- // `label` is the menu label to be shown when expanding the context menu.
3644
- // Additional optional `modifiers` property is supported - button modifiers
3645
- // as supported by `AposContextMenu` (e.g. modifiers: [ 'danger' ]).
3646
- // An optional `manuallyPublished` boolean property is supported - if true
3647
- // the menu will be shown only for docs which have `autopublish: false` and
3648
- // `localized: true` options.
3649
- addContextOperation(moduleName, operation) {
3650
- self.contextOperations = [
3651
- ...self.contextOperations
3652
- .filter(op =&gt; op.action !== operation.action),
3653
- {
3654
- ...operation,
3655
- moduleName
3656
- }
3657
- ];
3658
- },
3659
- getBrowserData(req) {
3660
- return {
3661
- action: self.action,
3662
- contextOperations: self.contextOperations
3663
- };
3664
- },
3665
- <span class="fstat-no" title="function not covered" > mi</span>grateRelationshipIds(doc) {
3666
- <span class="cstat-no" title="statement not covered" > if (doc.metaType === 'doc') {</span>
3667
- const manager = <span class="cstat-no" title="statement not covered" >self.apos.doc.getManager(doc.type);</span>
3668
- <span class="cstat-no" title="statement not covered" > if (!manager) {</span>
3669
- <span class="cstat-no" title="statement not covered" > return false;</span>
3670
- }
3671
- <span class="cstat-no" title="statement not covered" > return forSchema(manager.schema, doc);</span>
3672
- } else <span class="cstat-no" title="statement not covered" >if (doc.metaType === 'widget') {</span>
3673
- const manager = <span class="cstat-no" title="statement not covered" >self.apos.area.getWidgetManager(doc.type);</span>
3674
- <span class="cstat-no" title="statement not covered" > if (!manager) {</span>
3675
- <span class="cstat-no" title="statement not covered" > return false;</span>
3676
- }
3677
- <span class="cstat-no" title="statement not covered" > return forSchema(manager.schema, doc);</span>
3678
- }
3679
- function <span class="fstat-no" title="function not covered" >forSchema(</span>schema, doc) {
3680
- let needed = <span class="cstat-no" title="statement not covered" >false;</span>
3681
- <span class="cstat-no" title="statement not covered" > for (const field of schema) {</span>
3682
- <span class="cstat-no" title="statement not covered" > if (field.type === 'area') {</span>
3683
- <span class="cstat-no" title="statement not covered" > if (doc[field.name] &amp;&amp; doc[field.name].items) {</span>
3684
- <span class="cstat-no" title="statement not covered" > for (const widget of doc[field.name].items) {</span>
3685
- <span class="cstat-no" title="statement not covered" > self.migrateRelationshipIds(widget);</span>
3686
- }
3687
- }
3688
- } else <span class="cstat-no" title="statement not covered" >if (field.type === 'array') {</span>
3689
- <span class="cstat-no" title="statement not covered" > if (doc[field.name]) {</span>
3690
- <span class="cstat-no" title="statement not covered" > doc[field.name].forEach(<span class="fstat-no" title="function not covered" >it</span>em =&gt; {</span>
3691
- <span class="cstat-no" title="statement not covered" > item.metaType = 'arrayItem';</span>
3692
- <span class="cstat-no" title="statement not covered" > item.scopedArrayName = field.scopedArrayName;</span>
3693
- <span class="cstat-no" title="statement not covered" > forSchema(field.schema, item);</span>
3694
- });
3695
- }
3696
- } else <span class="cstat-no" title="statement not covered" >if (field.type === 'object') {</span>
3697
- const value = <span class="cstat-no" title="statement not covered" >doc[field.name];</span>
3698
- <span class="cstat-no" title="statement not covered" > if (value) {</span>
3699
- <span class="cstat-no" title="statement not covered" > value.metaType = 'object';</span>
3700
- <span class="cstat-no" title="statement not covered" > value.scopedObjectName = field.scopedObjectName;</span>
3701
- <span class="cstat-no" title="statement not covered" > forSchema(field.schema, value);</span>
3702
- }
3703
- } else <span class="cstat-no" title="statement not covered" >if (field.type === 'relationship') {</span>
3704
- <span class="cstat-no" title="statement not covered" > doc[field.idsStorage] = (doc[field.idsStorage] || []).map(self.apos.doc.toAposDocId);</span>
3705
- <span class="cstat-no" title="statement not covered" > if (field.fieldsStorage) {</span>
3706
- <span class="cstat-no" title="statement not covered" > doc[field.fieldsStorage] = Object.fromEntries(Object.entries(doc[field.fieldsStorage] || {}).map(<span class="fstat-no" title="function not covered" >([</span> key, value ]) =&gt; <span class="cstat-no" title="statement not covered" >[ self.apos.doc.toAposDocId(key), value ])</span>);</span>
3707
- }
3708
- <span class="cstat-no" title="statement not covered" > needed = true;</span>
3709
- }
3710
- }
3711
- <span class="cstat-no" title="statement not covered" > return needed;</span>
3712
- }
3713
- },
3714
- isDraft(doc) {
3715
- return doc.aposLocale.endsWith(':draft');
3716
- },
3717
- // Given a type name, normalize for any backwards compatibility
3718
- // provisions such as accepting @apostrophecms/page for
3719
- // @apostrophecms/any-page-type
3720
- normalizeType(type) {
3721
- <span class="missing-if-branch" title="if path not taken" >I</span>if (type === '@apostrophecms/page') {
3722
- // Backwards compatible
3723
- <span class="cstat-no" title="statement not covered" > type = '@apostrophecms/any-page-type';</span>
3724
- }
3725
- return type;
3726
- },
3727
- // Given a doc, an _id, or an aposDocId, this method
3728
- // will return the aposDocId (the _id without the
3729
- // mode and locale parts). This will work on a doc
3730
- // even if the projection did not include aposDocId
3731
- toAposDocId(input) {
3732
- if (typeof input === 'object') {
3733
- return input.aposDocId || self.toAposDocId(input._id);
3734
- }
3735
- const index = input.indexOf(':');
3736
- if (index &gt; -1) {
3737
- return input.substring(0, index);
3738
- } else {
3739
- return input;
3740
- }
3741
- },
3742
- // Replicate all documents that should automatically be replicated
3743
- // across all locales: parked pages, and piece types with the
3744
- // replicate: true option. The latter currently must be singletons
3745
- // like the global doc or the palette doc, they cannot be types
3746
- // with more than one instance per locale. Emits
3747
- // `@apostrophecms/doc:beforeReplicate` with an array of criteria
3748
- // to be used to locate docs that require replication, which can
3749
- // be modified by event handlers. Also emits `@apostrophecms/doc:afterReplicate`
3750
- // when replication is complete.
3751
- async replicate() {
3752
- const localeNames = Object.keys(self.apos.i18n.locales);
3753
- const criteria = [];
3754
- self.apos.page.parked.forEach(pushParkedPageAndParkedChildren);
3755
- function pushParkedPageAndParkedChildren(page) {
3756
- criteria.push({
3757
- parkedId: page.parkedId
3758
- });
3759
- (page._children || []).forEach(pushParkedPageAndParkedChildren);
3760
- }
3761
- const pieceModules = Object.values(self.apos.modules).filter(module =&gt; self.apos.instanceOf(module, '@apostrophecms/piece-type') &amp;&amp; module.options.replicate);
3762
- for (const module of pieceModules) {
3763
- criteria.push({
3764
- type: module.name
3765
- });
3766
- }
3767
- // Include the criteria array in the event so that more entries can be pushed to it
3768
- await self.emit('beforeReplicate', criteria);
3769
- // We can skip the core work of this method if there is only one locale,
3770
- // but the events should always be emitted as the guarantee is still there
3771
- // ("this is before replication if any," "this is after replication if any")
3772
- // and we otherwise complicate modules that mainly care about not missing
3773
- // out if there *is* replication
3774
- if (localeNames.length &gt; 1) {
3775
- for (const criterion of criteria) {
3776
- const existing = await self.apos.doc.db.find({
3777
- ...criterion,
3778
- aposLocale: {
3779
- // Only interested in valid draft locales
3780
- $in: Object.keys(self.apos.i18n.locales).map(locale =&gt; `${locale}:draft`)
3781
- }
3782
- }).project({
3783
- _id: 1,
3784
- aposLocale: 1
3785
- }).toArray();
3786
- for (const info of existing) {
3787
- info.aposLocale = info.aposLocale.replace(':draft', '');
3788
- }
3789
- if ((existing.length &gt; 0) &amp;&amp; (existing.length &lt; localeNames.length)) {
3790
- const sourceInfo = self.apos.util.orderById(localeNames, existing, 'aposLocale')[0];
3791
- const req = self.apos.task.getReq({
3792
- locale: sourceInfo.aposLocale,
3793
- mode: 'draft'
3794
- });
3795
- const sourceDoc = await self.apos.doc.find(req, {
3796
- _id: sourceInfo._id
3797
- }).archived(null).toObject();
3798
- for (const locale of localeNames) {
3799
- if (!existing.find(doc =&gt; doc.aposLocale === locale)) {
3800
- const module = self.getManager(sourceDoc.type);
3801
- const localized = await module.localize(req, sourceDoc, locale);
3802
- await module.publish(req.clone({ locale }), localized);
3803
- }
3804
- }
3805
- }
3806
- }
3807
- }
3808
- await self.emit('afterReplicate');
3809
- },
3810
- // Determine which locales exist for the given doc _id
3811
- <span class="fstat-no" title="function not covered" > as</span>ync getLocales(req, _id) {
3812
- const criteria = <span class="cstat-no" title="statement not covered" >{</span>
3813
- aposDocId: _id.split(':')[0]
3814
- };
3815
- <span class="cstat-no" title="statement not covered" > if (!self.apos.permission.can(req, 'view-draft')) {</span>
3816
- <span class="cstat-no" title="statement not covered" > criteria.aposMode = 'published';</span>
3817
- }
3818
- const existing = <span class="cstat-no" title="statement not covered" >await self.apos.doc.db.find(criteria).project({</span>
3819
- _id: 1,
3820
- aposLocale: 1
3821
- }).toArray();
3822
- <span class="cstat-no" title="statement not covered" > return existing;</span>
3823
- },
3824
- deduplicateWidgetIds(doc) {
3825
- const seen = new Set();
3826
- self.apos.area.walk(doc, (area, dotPath) =&gt; {
3827
- if (dotPath.includes('_')) {
3828
- // Ignore relationships so recursive references from a
3829
- // doc to itself can't result in random regeneration of
3830
- // widget ids in the doc proper
3831
- return;
3832
- }
3833
- for (const widget of area.items || <span class="branch-1 cbranch-no" title="branch not covered" >[])</span> {
3834
- if ((!widget._id) || seen.has(widget._id)) {
3835
- widget._id = cuid();
3836
- } else {
3837
- seen.add(widget._id);
3838
- }
3839
- }
3840
- });
3841
- },
3842
- &nbsp;
3843
- // Iterate through the document fields and call the provided handlers
3844
- // for each item of an array, object and relationship field type.
3845
- walkByMetaType(doc, handlers) {
3846
- const defaultHandlers = {
3847
- arrayItem: () =&gt; {},
3848
- object: () =&gt; {},
3849
- relationship: <span class="fstat-no" title="function not covered" >()</span> =&gt; {}
3850
- };
3851
- &nbsp;
3852
- handlers = {
3853
- ...defaultHandlers,
3854
- ...handlers
3855
- };
3856
- &nbsp;
3857
- if (doc.metaType === 'doc') {
3858
- const manager = self.getManager(doc.type);
3859
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!manager) {
3860
- <span class="cstat-no" title="statement not covered" > return;</span>
3861
- }
3862
- forSchema(manager.schema, doc);
3863
- } else if (doc.metaType === 'widget') {
3864
- const manager = self.apos.area.getWidgetManager(doc.type);
3865
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!manager) {
3866
- <span class="cstat-no" title="statement not covered" > return;</span>
3867
- }
3868
- forSchema(manager.schema, doc);
3869
- }
3870
- &nbsp;
3871
- function forSchema(schema, doc) {
3872
- for (const field of schema) {
3873
- if (field.type === 'area' &amp;&amp; doc[field.name] &amp;&amp; doc[field.name].items) {
3874
- for (const widget of doc[field.name].items) {
3875
- self.walkByMetaType(widget, {
3876
- arrayItem: handlers.arrayItem,
3877
- object: handlers.object,
3878
- relationship: handlers.relationship
3879
- });
3880
- }
3881
- } else if (field.type === 'array') {
3882
- <span class="missing-if-branch" title="else path not taken" >E</span>if (doc[field.name]) {
3883
- doc[field.name].forEach(item =&gt; {
3884
- handlers.arrayItem(field, item);
3885
- forSchema(field.schema, item);
3886
- });
3887
- }
3888
- } else if (field.type === 'object') {
3889
- const value = doc[field.name];
3890
- <span class="missing-if-branch" title="else path not taken" >E</span>if (value) {
3891
- handlers.object(field, value);
3892
- forSchema(field.schema, value);
3893
- }
3894
- } else if (field.type === 'relationship') {
3895
- if (Array.isArray(doc[field.name])) {
3896
- handlers.relationship(field, doc);
3897
- }
3898
- }
3899
- }
3900
- }
3901
- },
3902
- // Add the "cacheInvalidatedAt" field to the documents that do not have it yet,
3903
- // and set it to equal doc.updatedAt.
3904
- setCacheField() {
3905
- return self.apos.migration.eachDoc({ cacheInvalidatedAt: { $exists: 0 } }, 5, async doc =&gt; {
3906
- await self.apos.doc.db.updateOne({ _id: doc._id }, {
3907
- $set: { cacheInvalidatedAt: doc.updatedAt }
3908
- });
3909
- });
3910
- },
3911
- addCacheFieldMigration() {
3912
- self.apos.migration.add('add-cache-invalidated-at-field', self.setCacheField);
3913
- },
3914
- ...require('./lib/legacy-migrations')(self)
3915
- };
3916
- }
3917
- };
3918
- &nbsp;</pre></td></tr></table></pre>
3919
-
3920
- <div class='push'></div><!-- for sticky footer -->
3921
- </div><!-- /wrapper -->
3922
- <div class='footer quiet pad2 space-top1 center small'>
3923
- Code coverage generated by
3924
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
3925
- at Wed Jun 08 2022 11:06:49 GMT+0200 (Central European Summer Time)
3926
- </div>
3927
- <script src="../../../../prettify.js"></script>
3928
- <script>
3929
- window.onload = function () {
3930
- prettyPrint();
3931
- };
3932
- </script>
3933
- <script src="../../../../sorter.js"></script>
3934
- <script src="../../../../block-navigation.js"></script>
3935
- </body>
3936
- </html>
3937
-