@deepkit/http 1.0.1-alpha.70 → 1.0.1-alpha.73

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/dist/cjs/src/decorator.d.ts +8 -6
  2. package/dist/cjs/src/decorator.js +49 -12
  3. package/dist/cjs/src/decorator.js.map +1 -1
  4. package/dist/cjs/src/filter.d.ts +3 -3
  5. package/dist/cjs/src/filter.js +3 -3
  6. package/dist/cjs/src/filter.js.map +1 -1
  7. package/dist/cjs/src/http.d.ts +49 -11
  8. package/dist/cjs/src/http.js +124 -38
  9. package/dist/cjs/src/http.js.map +1 -1
  10. package/dist/cjs/src/kernel.d.ts +3 -3
  11. package/dist/cjs/src/kernel.js +1 -1
  12. package/dist/cjs/src/kernel.js.map +1 -1
  13. package/dist/cjs/src/model.d.ts +11 -3
  14. package/dist/cjs/src/model.js +58 -26
  15. package/dist/cjs/src/model.js.map +1 -1
  16. package/dist/cjs/src/module.js +5 -3
  17. package/dist/cjs/src/module.js.map +1 -1
  18. package/dist/cjs/src/router.d.ts +84 -11
  19. package/dist/cjs/src/router.js +280 -94
  20. package/dist/cjs/src/router.js.map +1 -1
  21. package/dist/cjs/src/static-serving.js +15 -8
  22. package/dist/cjs/src/static-serving.js.map +1 -1
  23. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  24. package/dist/esm/src/decorator.d.ts +8 -6
  25. package/dist/esm/src/decorator.js +47 -11
  26. package/dist/esm/src/decorator.js.map +1 -1
  27. package/dist/esm/src/filter.d.ts +3 -3
  28. package/dist/esm/src/filter.js +4 -4
  29. package/dist/esm/src/filter.js.map +1 -1
  30. package/dist/esm/src/http.d.ts +49 -11
  31. package/dist/esm/src/http.js +111 -38
  32. package/dist/esm/src/http.js.map +1 -1
  33. package/dist/esm/src/kernel.d.ts +3 -3
  34. package/dist/esm/src/kernel.js +2 -2
  35. package/dist/esm/src/kernel.js.map +1 -1
  36. package/dist/esm/src/model.d.ts +11 -3
  37. package/dist/esm/src/model.js +47 -15
  38. package/dist/esm/src/model.js.map +1 -1
  39. package/dist/esm/src/module.js +6 -4
  40. package/dist/esm/src/module.js.map +1 -1
  41. package/dist/esm/src/router.d.ts +84 -11
  42. package/dist/esm/src/router.js +278 -94
  43. package/dist/esm/src/router.js.map +1 -1
  44. package/dist/esm/src/static-serving.js +16 -9
  45. package/dist/esm/src/static-serving.js.map +1 -1
  46. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  47. package/package.json +17 -14
  48. package/src/decorator.ts +9 -6
  49. package/src/filter.ts +4 -4
  50. package/src/http.ts +83 -15
  51. package/src/kernel.ts +2 -2
  52. package/src/model.ts +35 -6
  53. package/src/module.ts +5 -3
  54. package/src/router.ts +286 -73
  55. package/src/static-serving.ts +6 -3
  56. package/coverage/clover.xml +0 -1086
  57. package/coverage/coverage-final.json +0 -12
  58. package/coverage/lcov-report/base.css +0 -224
  59. package/coverage/lcov-report/block-navigation.js +0 -79
  60. package/coverage/lcov-report/favicon.png +0 -0
  61. package/coverage/lcov-report/index.html +0 -126
  62. package/coverage/lcov-report/prettify.css +0 -1
  63. package/coverage/lcov-report/prettify.js +0 -2
  64. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  65. package/coverage/lcov-report/sorter.js +0 -170
  66. package/coverage/lcov-report/src/controllers.ts.html +0 -113
  67. package/coverage/lcov-report/src/decorator.ts.html +0 -1280
  68. package/coverage/lcov-report/src/filter.ts.html +0 -734
  69. package/coverage/lcov-report/src/http.ts.html +0 -2192
  70. package/coverage/lcov-report/src/index.html +0 -246
  71. package/coverage/lcov-report/src/kernel.ts.html +0 -260
  72. package/coverage/lcov-report/src/middleware.ts.html +0 -428
  73. package/coverage/lcov-report/src/model.ts.html +0 -937
  74. package/coverage/lcov-report/src/module.config.ts.html +0 -89
  75. package/coverage/lcov-report/src/module.ts.html +0 -245
  76. package/coverage/lcov-report/src/router.ts.html +0 -2318
  77. package/coverage/lcov-report/tests/index.html +0 -111
  78. package/coverage/lcov-report/tests/utils.ts.html +0 -176
  79. package/coverage/lcov.info +0 -2225
  80. package/dist/cjs/tests/filter.spec.d.ts +0 -1
  81. package/dist/cjs/tests/filter.spec.js +0 -251
  82. package/dist/cjs/tests/filter.spec.js.map +0 -1
  83. package/dist/cjs/tests/middleware.spec.d.ts +0 -1
  84. package/dist/cjs/tests/middleware.spec.js +0 -471
  85. package/dist/cjs/tests/middleware.spec.js.map +0 -1
  86. package/dist/cjs/tests/model.spec.d.ts +0 -1
  87. package/dist/cjs/tests/model.spec.js +0 -23
  88. package/dist/cjs/tests/model.spec.js.map +0 -1
  89. package/dist/cjs/tests/module.spec.d.ts +0 -1
  90. package/dist/cjs/tests/module.spec.js +0 -46
  91. package/dist/cjs/tests/module.spec.js.map +0 -1
  92. package/dist/cjs/tests/router.spec.d.ts +0 -1
  93. package/dist/cjs/tests/router.spec.js +0 -987
  94. package/dist/cjs/tests/router.spec.js.map +0 -1
  95. package/dist/cjs/tests/utils.d.ts +0 -8
  96. package/dist/cjs/tests/utils.js +0 -30
  97. package/dist/cjs/tests/utils.js.map +0 -1
  98. package/dist/esm/tests/filter.spec.d.ts +0 -1
  99. package/dist/esm/tests/filter.spec.js +0 -249
  100. package/dist/esm/tests/filter.spec.js.map +0 -1
  101. package/dist/esm/tests/middleware.spec.d.ts +0 -1
  102. package/dist/esm/tests/middleware.spec.js +0 -469
  103. package/dist/esm/tests/middleware.spec.js.map +0 -1
  104. package/dist/esm/tests/model.spec.d.ts +0 -1
  105. package/dist/esm/tests/model.spec.js +0 -21
  106. package/dist/esm/tests/model.spec.js.map +0 -1
  107. package/dist/esm/tests/module.spec.d.ts +0 -1
  108. package/dist/esm/tests/module.spec.js +0 -44
  109. package/dist/esm/tests/module.spec.js.map +0 -1
  110. package/dist/esm/tests/router.spec.d.ts +0 -1
  111. package/dist/esm/tests/router.spec.js +0 -985
  112. package/dist/esm/tests/router.spec.js.map +0 -1
  113. package/dist/esm/tests/utils.d.ts +0 -8
  114. package/dist/esm/tests/utils.js +0 -26
  115. package/dist/esm/tests/utils.js.map +0 -1
  116. package/tests/filter.spec.ts +0 -181
  117. package/tests/middleware.spec.ts +0 -440
  118. package/tests/model.spec.ts +0 -26
  119. package/tests/module.spec.ts +0 -32
  120. package/tests/router.spec.ts +0 -781
  121. package/tests/utils.ts +0 -32
@@ -1,2192 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/http.ts</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../prettify.css" />
9
- <link rel="stylesheet" href="../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../index.html">All files</a> / <a href="index.html">src</a> http.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">14.4% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>53/368</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>0/168</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">1.2% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>1/83</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">15.14% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>48/317</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
- </div>
58
- <div class='status-line low'></div>
59
- <pre><table class="coverage">
60
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
61
- <a name='L2'></a><a href='#L2'>2</a>
62
- <a name='L3'></a><a href='#L3'>3</a>
63
- <a name='L4'></a><a href='#L4'>4</a>
64
- <a name='L5'></a><a href='#L5'>5</a>
65
- <a name='L6'></a><a href='#L6'>6</a>
66
- <a name='L7'></a><a href='#L7'>7</a>
67
- <a name='L8'></a><a href='#L8'>8</a>
68
- <a name='L9'></a><a href='#L9'>9</a>
69
- <a name='L10'></a><a href='#L10'>10</a>
70
- <a name='L11'></a><a href='#L11'>11</a>
71
- <a name='L12'></a><a href='#L12'>12</a>
72
- <a name='L13'></a><a href='#L13'>13</a>
73
- <a name='L14'></a><a href='#L14'>14</a>
74
- <a name='L15'></a><a href='#L15'>15</a>
75
- <a name='L16'></a><a href='#L16'>16</a>
76
- <a name='L17'></a><a href='#L17'>17</a>
77
- <a name='L18'></a><a href='#L18'>18</a>
78
- <a name='L19'></a><a href='#L19'>19</a>
79
- <a name='L20'></a><a href='#L20'>20</a>
80
- <a name='L21'></a><a href='#L21'>21</a>
81
- <a name='L22'></a><a href='#L22'>22</a>
82
- <a name='L23'></a><a href='#L23'>23</a>
83
- <a name='L24'></a><a href='#L24'>24</a>
84
- <a name='L25'></a><a href='#L25'>25</a>
85
- <a name='L26'></a><a href='#L26'>26</a>
86
- <a name='L27'></a><a href='#L27'>27</a>
87
- <a name='L28'></a><a href='#L28'>28</a>
88
- <a name='L29'></a><a href='#L29'>29</a>
89
- <a name='L30'></a><a href='#L30'>30</a>
90
- <a name='L31'></a><a href='#L31'>31</a>
91
- <a name='L32'></a><a href='#L32'>32</a>
92
- <a name='L33'></a><a href='#L33'>33</a>
93
- <a name='L34'></a><a href='#L34'>34</a>
94
- <a name='L35'></a><a href='#L35'>35</a>
95
- <a name='L36'></a><a href='#L36'>36</a>
96
- <a name='L37'></a><a href='#L37'>37</a>
97
- <a name='L38'></a><a href='#L38'>38</a>
98
- <a name='L39'></a><a href='#L39'>39</a>
99
- <a name='L40'></a><a href='#L40'>40</a>
100
- <a name='L41'></a><a href='#L41'>41</a>
101
- <a name='L42'></a><a href='#L42'>42</a>
102
- <a name='L43'></a><a href='#L43'>43</a>
103
- <a name='L44'></a><a href='#L44'>44</a>
104
- <a name='L45'></a><a href='#L45'>45</a>
105
- <a name='L46'></a><a href='#L46'>46</a>
106
- <a name='L47'></a><a href='#L47'>47</a>
107
- <a name='L48'></a><a href='#L48'>48</a>
108
- <a name='L49'></a><a href='#L49'>49</a>
109
- <a name='L50'></a><a href='#L50'>50</a>
110
- <a name='L51'></a><a href='#L51'>51</a>
111
- <a name='L52'></a><a href='#L52'>52</a>
112
- <a name='L53'></a><a href='#L53'>53</a>
113
- <a name='L54'></a><a href='#L54'>54</a>
114
- <a name='L55'></a><a href='#L55'>55</a>
115
- <a name='L56'></a><a href='#L56'>56</a>
116
- <a name='L57'></a><a href='#L57'>57</a>
117
- <a name='L58'></a><a href='#L58'>58</a>
118
- <a name='L59'></a><a href='#L59'>59</a>
119
- <a name='L60'></a><a href='#L60'>60</a>
120
- <a name='L61'></a><a href='#L61'>61</a>
121
- <a name='L62'></a><a href='#L62'>62</a>
122
- <a name='L63'></a><a href='#L63'>63</a>
123
- <a name='L64'></a><a href='#L64'>64</a>
124
- <a name='L65'></a><a href='#L65'>65</a>
125
- <a name='L66'></a><a href='#L66'>66</a>
126
- <a name='L67'></a><a href='#L67'>67</a>
127
- <a name='L68'></a><a href='#L68'>68</a>
128
- <a name='L69'></a><a href='#L69'>69</a>
129
- <a name='L70'></a><a href='#L70'>70</a>
130
- <a name='L71'></a><a href='#L71'>71</a>
131
- <a name='L72'></a><a href='#L72'>72</a>
132
- <a name='L73'></a><a href='#L73'>73</a>
133
- <a name='L74'></a><a href='#L74'>74</a>
134
- <a name='L75'></a><a href='#L75'>75</a>
135
- <a name='L76'></a><a href='#L76'>76</a>
136
- <a name='L77'></a><a href='#L77'>77</a>
137
- <a name='L78'></a><a href='#L78'>78</a>
138
- <a name='L79'></a><a href='#L79'>79</a>
139
- <a name='L80'></a><a href='#L80'>80</a>
140
- <a name='L81'></a><a href='#L81'>81</a>
141
- <a name='L82'></a><a href='#L82'>82</a>
142
- <a name='L83'></a><a href='#L83'>83</a>
143
- <a name='L84'></a><a href='#L84'>84</a>
144
- <a name='L85'></a><a href='#L85'>85</a>
145
- <a name='L86'></a><a href='#L86'>86</a>
146
- <a name='L87'></a><a href='#L87'>87</a>
147
- <a name='L88'></a><a href='#L88'>88</a>
148
- <a name='L89'></a><a href='#L89'>89</a>
149
- <a name='L90'></a><a href='#L90'>90</a>
150
- <a name='L91'></a><a href='#L91'>91</a>
151
- <a name='L92'></a><a href='#L92'>92</a>
152
- <a name='L93'></a><a href='#L93'>93</a>
153
- <a name='L94'></a><a href='#L94'>94</a>
154
- <a name='L95'></a><a href='#L95'>95</a>
155
- <a name='L96'></a><a href='#L96'>96</a>
156
- <a name='L97'></a><a href='#L97'>97</a>
157
- <a name='L98'></a><a href='#L98'>98</a>
158
- <a name='L99'></a><a href='#L99'>99</a>
159
- <a name='L100'></a><a href='#L100'>100</a>
160
- <a name='L101'></a><a href='#L101'>101</a>
161
- <a name='L102'></a><a href='#L102'>102</a>
162
- <a name='L103'></a><a href='#L103'>103</a>
163
- <a name='L104'></a><a href='#L104'>104</a>
164
- <a name='L105'></a><a href='#L105'>105</a>
165
- <a name='L106'></a><a href='#L106'>106</a>
166
- <a name='L107'></a><a href='#L107'>107</a>
167
- <a name='L108'></a><a href='#L108'>108</a>
168
- <a name='L109'></a><a href='#L109'>109</a>
169
- <a name='L110'></a><a href='#L110'>110</a>
170
- <a name='L111'></a><a href='#L111'>111</a>
171
- <a name='L112'></a><a href='#L112'>112</a>
172
- <a name='L113'></a><a href='#L113'>113</a>
173
- <a name='L114'></a><a href='#L114'>114</a>
174
- <a name='L115'></a><a href='#L115'>115</a>
175
- <a name='L116'></a><a href='#L116'>116</a>
176
- <a name='L117'></a><a href='#L117'>117</a>
177
- <a name='L118'></a><a href='#L118'>118</a>
178
- <a name='L119'></a><a href='#L119'>119</a>
179
- <a name='L120'></a><a href='#L120'>120</a>
180
- <a name='L121'></a><a href='#L121'>121</a>
181
- <a name='L122'></a><a href='#L122'>122</a>
182
- <a name='L123'></a><a href='#L123'>123</a>
183
- <a name='L124'></a><a href='#L124'>124</a>
184
- <a name='L125'></a><a href='#L125'>125</a>
185
- <a name='L126'></a><a href='#L126'>126</a>
186
- <a name='L127'></a><a href='#L127'>127</a>
187
- <a name='L128'></a><a href='#L128'>128</a>
188
- <a name='L129'></a><a href='#L129'>129</a>
189
- <a name='L130'></a><a href='#L130'>130</a>
190
- <a name='L131'></a><a href='#L131'>131</a>
191
- <a name='L132'></a><a href='#L132'>132</a>
192
- <a name='L133'></a><a href='#L133'>133</a>
193
- <a name='L134'></a><a href='#L134'>134</a>
194
- <a name='L135'></a><a href='#L135'>135</a>
195
- <a name='L136'></a><a href='#L136'>136</a>
196
- <a name='L137'></a><a href='#L137'>137</a>
197
- <a name='L138'></a><a href='#L138'>138</a>
198
- <a name='L139'></a><a href='#L139'>139</a>
199
- <a name='L140'></a><a href='#L140'>140</a>
200
- <a name='L141'></a><a href='#L141'>141</a>
201
- <a name='L142'></a><a href='#L142'>142</a>
202
- <a name='L143'></a><a href='#L143'>143</a>
203
- <a name='L144'></a><a href='#L144'>144</a>
204
- <a name='L145'></a><a href='#L145'>145</a>
205
- <a name='L146'></a><a href='#L146'>146</a>
206
- <a name='L147'></a><a href='#L147'>147</a>
207
- <a name='L148'></a><a href='#L148'>148</a>
208
- <a name='L149'></a><a href='#L149'>149</a>
209
- <a name='L150'></a><a href='#L150'>150</a>
210
- <a name='L151'></a><a href='#L151'>151</a>
211
- <a name='L152'></a><a href='#L152'>152</a>
212
- <a name='L153'></a><a href='#L153'>153</a>
213
- <a name='L154'></a><a href='#L154'>154</a>
214
- <a name='L155'></a><a href='#L155'>155</a>
215
- <a name='L156'></a><a href='#L156'>156</a>
216
- <a name='L157'></a><a href='#L157'>157</a>
217
- <a name='L158'></a><a href='#L158'>158</a>
218
- <a name='L159'></a><a href='#L159'>159</a>
219
- <a name='L160'></a><a href='#L160'>160</a>
220
- <a name='L161'></a><a href='#L161'>161</a>
221
- <a name='L162'></a><a href='#L162'>162</a>
222
- <a name='L163'></a><a href='#L163'>163</a>
223
- <a name='L164'></a><a href='#L164'>164</a>
224
- <a name='L165'></a><a href='#L165'>165</a>
225
- <a name='L166'></a><a href='#L166'>166</a>
226
- <a name='L167'></a><a href='#L167'>167</a>
227
- <a name='L168'></a><a href='#L168'>168</a>
228
- <a name='L169'></a><a href='#L169'>169</a>
229
- <a name='L170'></a><a href='#L170'>170</a>
230
- <a name='L171'></a><a href='#L171'>171</a>
231
- <a name='L172'></a><a href='#L172'>172</a>
232
- <a name='L173'></a><a href='#L173'>173</a>
233
- <a name='L174'></a><a href='#L174'>174</a>
234
- <a name='L175'></a><a href='#L175'>175</a>
235
- <a name='L176'></a><a href='#L176'>176</a>
236
- <a name='L177'></a><a href='#L177'>177</a>
237
- <a name='L178'></a><a href='#L178'>178</a>
238
- <a name='L179'></a><a href='#L179'>179</a>
239
- <a name='L180'></a><a href='#L180'>180</a>
240
- <a name='L181'></a><a href='#L181'>181</a>
241
- <a name='L182'></a><a href='#L182'>182</a>
242
- <a name='L183'></a><a href='#L183'>183</a>
243
- <a name='L184'></a><a href='#L184'>184</a>
244
- <a name='L185'></a><a href='#L185'>185</a>
245
- <a name='L186'></a><a href='#L186'>186</a>
246
- <a name='L187'></a><a href='#L187'>187</a>
247
- <a name='L188'></a><a href='#L188'>188</a>
248
- <a name='L189'></a><a href='#L189'>189</a>
249
- <a name='L190'></a><a href='#L190'>190</a>
250
- <a name='L191'></a><a href='#L191'>191</a>
251
- <a name='L192'></a><a href='#L192'>192</a>
252
- <a name='L193'></a><a href='#L193'>193</a>
253
- <a name='L194'></a><a href='#L194'>194</a>
254
- <a name='L195'></a><a href='#L195'>195</a>
255
- <a name='L196'></a><a href='#L196'>196</a>
256
- <a name='L197'></a><a href='#L197'>197</a>
257
- <a name='L198'></a><a href='#L198'>198</a>
258
- <a name='L199'></a><a href='#L199'>199</a>
259
- <a name='L200'></a><a href='#L200'>200</a>
260
- <a name='L201'></a><a href='#L201'>201</a>
261
- <a name='L202'></a><a href='#L202'>202</a>
262
- <a name='L203'></a><a href='#L203'>203</a>
263
- <a name='L204'></a><a href='#L204'>204</a>
264
- <a name='L205'></a><a href='#L205'>205</a>
265
- <a name='L206'></a><a href='#L206'>206</a>
266
- <a name='L207'></a><a href='#L207'>207</a>
267
- <a name='L208'></a><a href='#L208'>208</a>
268
- <a name='L209'></a><a href='#L209'>209</a>
269
- <a name='L210'></a><a href='#L210'>210</a>
270
- <a name='L211'></a><a href='#L211'>211</a>
271
- <a name='L212'></a><a href='#L212'>212</a>
272
- <a name='L213'></a><a href='#L213'>213</a>
273
- <a name='L214'></a><a href='#L214'>214</a>
274
- <a name='L215'></a><a href='#L215'>215</a>
275
- <a name='L216'></a><a href='#L216'>216</a>
276
- <a name='L217'></a><a href='#L217'>217</a>
277
- <a name='L218'></a><a href='#L218'>218</a>
278
- <a name='L219'></a><a href='#L219'>219</a>
279
- <a name='L220'></a><a href='#L220'>220</a>
280
- <a name='L221'></a><a href='#L221'>221</a>
281
- <a name='L222'></a><a href='#L222'>222</a>
282
- <a name='L223'></a><a href='#L223'>223</a>
283
- <a name='L224'></a><a href='#L224'>224</a>
284
- <a name='L225'></a><a href='#L225'>225</a>
285
- <a name='L226'></a><a href='#L226'>226</a>
286
- <a name='L227'></a><a href='#L227'>227</a>
287
- <a name='L228'></a><a href='#L228'>228</a>
288
- <a name='L229'></a><a href='#L229'>229</a>
289
- <a name='L230'></a><a href='#L230'>230</a>
290
- <a name='L231'></a><a href='#L231'>231</a>
291
- <a name='L232'></a><a href='#L232'>232</a>
292
- <a name='L233'></a><a href='#L233'>233</a>
293
- <a name='L234'></a><a href='#L234'>234</a>
294
- <a name='L235'></a><a href='#L235'>235</a>
295
- <a name='L236'></a><a href='#L236'>236</a>
296
- <a name='L237'></a><a href='#L237'>237</a>
297
- <a name='L238'></a><a href='#L238'>238</a>
298
- <a name='L239'></a><a href='#L239'>239</a>
299
- <a name='L240'></a><a href='#L240'>240</a>
300
- <a name='L241'></a><a href='#L241'>241</a>
301
- <a name='L242'></a><a href='#L242'>242</a>
302
- <a name='L243'></a><a href='#L243'>243</a>
303
- <a name='L244'></a><a href='#L244'>244</a>
304
- <a name='L245'></a><a href='#L245'>245</a>
305
- <a name='L246'></a><a href='#L246'>246</a>
306
- <a name='L247'></a><a href='#L247'>247</a>
307
- <a name='L248'></a><a href='#L248'>248</a>
308
- <a name='L249'></a><a href='#L249'>249</a>
309
- <a name='L250'></a><a href='#L250'>250</a>
310
- <a name='L251'></a><a href='#L251'>251</a>
311
- <a name='L252'></a><a href='#L252'>252</a>
312
- <a name='L253'></a><a href='#L253'>253</a>
313
- <a name='L254'></a><a href='#L254'>254</a>
314
- <a name='L255'></a><a href='#L255'>255</a>
315
- <a name='L256'></a><a href='#L256'>256</a>
316
- <a name='L257'></a><a href='#L257'>257</a>
317
- <a name='L258'></a><a href='#L258'>258</a>
318
- <a name='L259'></a><a href='#L259'>259</a>
319
- <a name='L260'></a><a href='#L260'>260</a>
320
- <a name='L261'></a><a href='#L261'>261</a>
321
- <a name='L262'></a><a href='#L262'>262</a>
322
- <a name='L263'></a><a href='#L263'>263</a>
323
- <a name='L264'></a><a href='#L264'>264</a>
324
- <a name='L265'></a><a href='#L265'>265</a>
325
- <a name='L266'></a><a href='#L266'>266</a>
326
- <a name='L267'></a><a href='#L267'>267</a>
327
- <a name='L268'></a><a href='#L268'>268</a>
328
- <a name='L269'></a><a href='#L269'>269</a>
329
- <a name='L270'></a><a href='#L270'>270</a>
330
- <a name='L271'></a><a href='#L271'>271</a>
331
- <a name='L272'></a><a href='#L272'>272</a>
332
- <a name='L273'></a><a href='#L273'>273</a>
333
- <a name='L274'></a><a href='#L274'>274</a>
334
- <a name='L275'></a><a href='#L275'>275</a>
335
- <a name='L276'></a><a href='#L276'>276</a>
336
- <a name='L277'></a><a href='#L277'>277</a>
337
- <a name='L278'></a><a href='#L278'>278</a>
338
- <a name='L279'></a><a href='#L279'>279</a>
339
- <a name='L280'></a><a href='#L280'>280</a>
340
- <a name='L281'></a><a href='#L281'>281</a>
341
- <a name='L282'></a><a href='#L282'>282</a>
342
- <a name='L283'></a><a href='#L283'>283</a>
343
- <a name='L284'></a><a href='#L284'>284</a>
344
- <a name='L285'></a><a href='#L285'>285</a>
345
- <a name='L286'></a><a href='#L286'>286</a>
346
- <a name='L287'></a><a href='#L287'>287</a>
347
- <a name='L288'></a><a href='#L288'>288</a>
348
- <a name='L289'></a><a href='#L289'>289</a>
349
- <a name='L290'></a><a href='#L290'>290</a>
350
- <a name='L291'></a><a href='#L291'>291</a>
351
- <a name='L292'></a><a href='#L292'>292</a>
352
- <a name='L293'></a><a href='#L293'>293</a>
353
- <a name='L294'></a><a href='#L294'>294</a>
354
- <a name='L295'></a><a href='#L295'>295</a>
355
- <a name='L296'></a><a href='#L296'>296</a>
356
- <a name='L297'></a><a href='#L297'>297</a>
357
- <a name='L298'></a><a href='#L298'>298</a>
358
- <a name='L299'></a><a href='#L299'>299</a>
359
- <a name='L300'></a><a href='#L300'>300</a>
360
- <a name='L301'></a><a href='#L301'>301</a>
361
- <a name='L302'></a><a href='#L302'>302</a>
362
- <a name='L303'></a><a href='#L303'>303</a>
363
- <a name='L304'></a><a href='#L304'>304</a>
364
- <a name='L305'></a><a href='#L305'>305</a>
365
- <a name='L306'></a><a href='#L306'>306</a>
366
- <a name='L307'></a><a href='#L307'>307</a>
367
- <a name='L308'></a><a href='#L308'>308</a>
368
- <a name='L309'></a><a href='#L309'>309</a>
369
- <a name='L310'></a><a href='#L310'>310</a>
370
- <a name='L311'></a><a href='#L311'>311</a>
371
- <a name='L312'></a><a href='#L312'>312</a>
372
- <a name='L313'></a><a href='#L313'>313</a>
373
- <a name='L314'></a><a href='#L314'>314</a>
374
- <a name='L315'></a><a href='#L315'>315</a>
375
- <a name='L316'></a><a href='#L316'>316</a>
376
- <a name='L317'></a><a href='#L317'>317</a>
377
- <a name='L318'></a><a href='#L318'>318</a>
378
- <a name='L319'></a><a href='#L319'>319</a>
379
- <a name='L320'></a><a href='#L320'>320</a>
380
- <a name='L321'></a><a href='#L321'>321</a>
381
- <a name='L322'></a><a href='#L322'>322</a>
382
- <a name='L323'></a><a href='#L323'>323</a>
383
- <a name='L324'></a><a href='#L324'>324</a>
384
- <a name='L325'></a><a href='#L325'>325</a>
385
- <a name='L326'></a><a href='#L326'>326</a>
386
- <a name='L327'></a><a href='#L327'>327</a>
387
- <a name='L328'></a><a href='#L328'>328</a>
388
- <a name='L329'></a><a href='#L329'>329</a>
389
- <a name='L330'></a><a href='#L330'>330</a>
390
- <a name='L331'></a><a href='#L331'>331</a>
391
- <a name='L332'></a><a href='#L332'>332</a>
392
- <a name='L333'></a><a href='#L333'>333</a>
393
- <a name='L334'></a><a href='#L334'>334</a>
394
- <a name='L335'></a><a href='#L335'>335</a>
395
- <a name='L336'></a><a href='#L336'>336</a>
396
- <a name='L337'></a><a href='#L337'>337</a>
397
- <a name='L338'></a><a href='#L338'>338</a>
398
- <a name='L339'></a><a href='#L339'>339</a>
399
- <a name='L340'></a><a href='#L340'>340</a>
400
- <a name='L341'></a><a href='#L341'>341</a>
401
- <a name='L342'></a><a href='#L342'>342</a>
402
- <a name='L343'></a><a href='#L343'>343</a>
403
- <a name='L344'></a><a href='#L344'>344</a>
404
- <a name='L345'></a><a href='#L345'>345</a>
405
- <a name='L346'></a><a href='#L346'>346</a>
406
- <a name='L347'></a><a href='#L347'>347</a>
407
- <a name='L348'></a><a href='#L348'>348</a>
408
- <a name='L349'></a><a href='#L349'>349</a>
409
- <a name='L350'></a><a href='#L350'>350</a>
410
- <a name='L351'></a><a href='#L351'>351</a>
411
- <a name='L352'></a><a href='#L352'>352</a>
412
- <a name='L353'></a><a href='#L353'>353</a>
413
- <a name='L354'></a><a href='#L354'>354</a>
414
- <a name='L355'></a><a href='#L355'>355</a>
415
- <a name='L356'></a><a href='#L356'>356</a>
416
- <a name='L357'></a><a href='#L357'>357</a>
417
- <a name='L358'></a><a href='#L358'>358</a>
418
- <a name='L359'></a><a href='#L359'>359</a>
419
- <a name='L360'></a><a href='#L360'>360</a>
420
- <a name='L361'></a><a href='#L361'>361</a>
421
- <a name='L362'></a><a href='#L362'>362</a>
422
- <a name='L363'></a><a href='#L363'>363</a>
423
- <a name='L364'></a><a href='#L364'>364</a>
424
- <a name='L365'></a><a href='#L365'>365</a>
425
- <a name='L366'></a><a href='#L366'>366</a>
426
- <a name='L367'></a><a href='#L367'>367</a>
427
- <a name='L368'></a><a href='#L368'>368</a>
428
- <a name='L369'></a><a href='#L369'>369</a>
429
- <a name='L370'></a><a href='#L370'>370</a>
430
- <a name='L371'></a><a href='#L371'>371</a>
431
- <a name='L372'></a><a href='#L372'>372</a>
432
- <a name='L373'></a><a href='#L373'>373</a>
433
- <a name='L374'></a><a href='#L374'>374</a>
434
- <a name='L375'></a><a href='#L375'>375</a>
435
- <a name='L376'></a><a href='#L376'>376</a>
436
- <a name='L377'></a><a href='#L377'>377</a>
437
- <a name='L378'></a><a href='#L378'>378</a>
438
- <a name='L379'></a><a href='#L379'>379</a>
439
- <a name='L380'></a><a href='#L380'>380</a>
440
- <a name='L381'></a><a href='#L381'>381</a>
441
- <a name='L382'></a><a href='#L382'>382</a>
442
- <a name='L383'></a><a href='#L383'>383</a>
443
- <a name='L384'></a><a href='#L384'>384</a>
444
- <a name='L385'></a><a href='#L385'>385</a>
445
- <a name='L386'></a><a href='#L386'>386</a>
446
- <a name='L387'></a><a href='#L387'>387</a>
447
- <a name='L388'></a><a href='#L388'>388</a>
448
- <a name='L389'></a><a href='#L389'>389</a>
449
- <a name='L390'></a><a href='#L390'>390</a>
450
- <a name='L391'></a><a href='#L391'>391</a>
451
- <a name='L392'></a><a href='#L392'>392</a>
452
- <a name='L393'></a><a href='#L393'>393</a>
453
- <a name='L394'></a><a href='#L394'>394</a>
454
- <a name='L395'></a><a href='#L395'>395</a>
455
- <a name='L396'></a><a href='#L396'>396</a>
456
- <a name='L397'></a><a href='#L397'>397</a>
457
- <a name='L398'></a><a href='#L398'>398</a>
458
- <a name='L399'></a><a href='#L399'>399</a>
459
- <a name='L400'></a><a href='#L400'>400</a>
460
- <a name='L401'></a><a href='#L401'>401</a>
461
- <a name='L402'></a><a href='#L402'>402</a>
462
- <a name='L403'></a><a href='#L403'>403</a>
463
- <a name='L404'></a><a href='#L404'>404</a>
464
- <a name='L405'></a><a href='#L405'>405</a>
465
- <a name='L406'></a><a href='#L406'>406</a>
466
- <a name='L407'></a><a href='#L407'>407</a>
467
- <a name='L408'></a><a href='#L408'>408</a>
468
- <a name='L409'></a><a href='#L409'>409</a>
469
- <a name='L410'></a><a href='#L410'>410</a>
470
- <a name='L411'></a><a href='#L411'>411</a>
471
- <a name='L412'></a><a href='#L412'>412</a>
472
- <a name='L413'></a><a href='#L413'>413</a>
473
- <a name='L414'></a><a href='#L414'>414</a>
474
- <a name='L415'></a><a href='#L415'>415</a>
475
- <a name='L416'></a><a href='#L416'>416</a>
476
- <a name='L417'></a><a href='#L417'>417</a>
477
- <a name='L418'></a><a href='#L418'>418</a>
478
- <a name='L419'></a><a href='#L419'>419</a>
479
- <a name='L420'></a><a href='#L420'>420</a>
480
- <a name='L421'></a><a href='#L421'>421</a>
481
- <a name='L422'></a><a href='#L422'>422</a>
482
- <a name='L423'></a><a href='#L423'>423</a>
483
- <a name='L424'></a><a href='#L424'>424</a>
484
- <a name='L425'></a><a href='#L425'>425</a>
485
- <a name='L426'></a><a href='#L426'>426</a>
486
- <a name='L427'></a><a href='#L427'>427</a>
487
- <a name='L428'></a><a href='#L428'>428</a>
488
- <a name='L429'></a><a href='#L429'>429</a>
489
- <a name='L430'></a><a href='#L430'>430</a>
490
- <a name='L431'></a><a href='#L431'>431</a>
491
- <a name='L432'></a><a href='#L432'>432</a>
492
- <a name='L433'></a><a href='#L433'>433</a>
493
- <a name='L434'></a><a href='#L434'>434</a>
494
- <a name='L435'></a><a href='#L435'>435</a>
495
- <a name='L436'></a><a href='#L436'>436</a>
496
- <a name='L437'></a><a href='#L437'>437</a>
497
- <a name='L438'></a><a href='#L438'>438</a>
498
- <a name='L439'></a><a href='#L439'>439</a>
499
- <a name='L440'></a><a href='#L440'>440</a>
500
- <a name='L441'></a><a href='#L441'>441</a>
501
- <a name='L442'></a><a href='#L442'>442</a>
502
- <a name='L443'></a><a href='#L443'>443</a>
503
- <a name='L444'></a><a href='#L444'>444</a>
504
- <a name='L445'></a><a href='#L445'>445</a>
505
- <a name='L446'></a><a href='#L446'>446</a>
506
- <a name='L447'></a><a href='#L447'>447</a>
507
- <a name='L448'></a><a href='#L448'>448</a>
508
- <a name='L449'></a><a href='#L449'>449</a>
509
- <a name='L450'></a><a href='#L450'>450</a>
510
- <a name='L451'></a><a href='#L451'>451</a>
511
- <a name='L452'></a><a href='#L452'>452</a>
512
- <a name='L453'></a><a href='#L453'>453</a>
513
- <a name='L454'></a><a href='#L454'>454</a>
514
- <a name='L455'></a><a href='#L455'>455</a>
515
- <a name='L456'></a><a href='#L456'>456</a>
516
- <a name='L457'></a><a href='#L457'>457</a>
517
- <a name='L458'></a><a href='#L458'>458</a>
518
- <a name='L459'></a><a href='#L459'>459</a>
519
- <a name='L460'></a><a href='#L460'>460</a>
520
- <a name='L461'></a><a href='#L461'>461</a>
521
- <a name='L462'></a><a href='#L462'>462</a>
522
- <a name='L463'></a><a href='#L463'>463</a>
523
- <a name='L464'></a><a href='#L464'>464</a>
524
- <a name='L465'></a><a href='#L465'>465</a>
525
- <a name='L466'></a><a href='#L466'>466</a>
526
- <a name='L467'></a><a href='#L467'>467</a>
527
- <a name='L468'></a><a href='#L468'>468</a>
528
- <a name='L469'></a><a href='#L469'>469</a>
529
- <a name='L470'></a><a href='#L470'>470</a>
530
- <a name='L471'></a><a href='#L471'>471</a>
531
- <a name='L472'></a><a href='#L472'>472</a>
532
- <a name='L473'></a><a href='#L473'>473</a>
533
- <a name='L474'></a><a href='#L474'>474</a>
534
- <a name='L475'></a><a href='#L475'>475</a>
535
- <a name='L476'></a><a href='#L476'>476</a>
536
- <a name='L477'></a><a href='#L477'>477</a>
537
- <a name='L478'></a><a href='#L478'>478</a>
538
- <a name='L479'></a><a href='#L479'>479</a>
539
- <a name='L480'></a><a href='#L480'>480</a>
540
- <a name='L481'></a><a href='#L481'>481</a>
541
- <a name='L482'></a><a href='#L482'>482</a>
542
- <a name='L483'></a><a href='#L483'>483</a>
543
- <a name='L484'></a><a href='#L484'>484</a>
544
- <a name='L485'></a><a href='#L485'>485</a>
545
- <a name='L486'></a><a href='#L486'>486</a>
546
- <a name='L487'></a><a href='#L487'>487</a>
547
- <a name='L488'></a><a href='#L488'>488</a>
548
- <a name='L489'></a><a href='#L489'>489</a>
549
- <a name='L490'></a><a href='#L490'>490</a>
550
- <a name='L491'></a><a href='#L491'>491</a>
551
- <a name='L492'></a><a href='#L492'>492</a>
552
- <a name='L493'></a><a href='#L493'>493</a>
553
- <a name='L494'></a><a href='#L494'>494</a>
554
- <a name='L495'></a><a href='#L495'>495</a>
555
- <a name='L496'></a><a href='#L496'>496</a>
556
- <a name='L497'></a><a href='#L497'>497</a>
557
- <a name='L498'></a><a href='#L498'>498</a>
558
- <a name='L499'></a><a href='#L499'>499</a>
559
- <a name='L500'></a><a href='#L500'>500</a>
560
- <a name='L501'></a><a href='#L501'>501</a>
561
- <a name='L502'></a><a href='#L502'>502</a>
562
- <a name='L503'></a><a href='#L503'>503</a>
563
- <a name='L504'></a><a href='#L504'>504</a>
564
- <a name='L505'></a><a href='#L505'>505</a>
565
- <a name='L506'></a><a href='#L506'>506</a>
566
- <a name='L507'></a><a href='#L507'>507</a>
567
- <a name='L508'></a><a href='#L508'>508</a>
568
- <a name='L509'></a><a href='#L509'>509</a>
569
- <a name='L510'></a><a href='#L510'>510</a>
570
- <a name='L511'></a><a href='#L511'>511</a>
571
- <a name='L512'></a><a href='#L512'>512</a>
572
- <a name='L513'></a><a href='#L513'>513</a>
573
- <a name='L514'></a><a href='#L514'>514</a>
574
- <a name='L515'></a><a href='#L515'>515</a>
575
- <a name='L516'></a><a href='#L516'>516</a>
576
- <a name='L517'></a><a href='#L517'>517</a>
577
- <a name='L518'></a><a href='#L518'>518</a>
578
- <a name='L519'></a><a href='#L519'>519</a>
579
- <a name='L520'></a><a href='#L520'>520</a>
580
- <a name='L521'></a><a href='#L521'>521</a>
581
- <a name='L522'></a><a href='#L522'>522</a>
582
- <a name='L523'></a><a href='#L523'>523</a>
583
- <a name='L524'></a><a href='#L524'>524</a>
584
- <a name='L525'></a><a href='#L525'>525</a>
585
- <a name='L526'></a><a href='#L526'>526</a>
586
- <a name='L527'></a><a href='#L527'>527</a>
587
- <a name='L528'></a><a href='#L528'>528</a>
588
- <a name='L529'></a><a href='#L529'>529</a>
589
- <a name='L530'></a><a href='#L530'>530</a>
590
- <a name='L531'></a><a href='#L531'>531</a>
591
- <a name='L532'></a><a href='#L532'>532</a>
592
- <a name='L533'></a><a href='#L533'>533</a>
593
- <a name='L534'></a><a href='#L534'>534</a>
594
- <a name='L535'></a><a href='#L535'>535</a>
595
- <a name='L536'></a><a href='#L536'>536</a>
596
- <a name='L537'></a><a href='#L537'>537</a>
597
- <a name='L538'></a><a href='#L538'>538</a>
598
- <a name='L539'></a><a href='#L539'>539</a>
599
- <a name='L540'></a><a href='#L540'>540</a>
600
- <a name='L541'></a><a href='#L541'>541</a>
601
- <a name='L542'></a><a href='#L542'>542</a>
602
- <a name='L543'></a><a href='#L543'>543</a>
603
- <a name='L544'></a><a href='#L544'>544</a>
604
- <a name='L545'></a><a href='#L545'>545</a>
605
- <a name='L546'></a><a href='#L546'>546</a>
606
- <a name='L547'></a><a href='#L547'>547</a>
607
- <a name='L548'></a><a href='#L548'>548</a>
608
- <a name='L549'></a><a href='#L549'>549</a>
609
- <a name='L550'></a><a href='#L550'>550</a>
610
- <a name='L551'></a><a href='#L551'>551</a>
611
- <a name='L552'></a><a href='#L552'>552</a>
612
- <a name='L553'></a><a href='#L553'>553</a>
613
- <a name='L554'></a><a href='#L554'>554</a>
614
- <a name='L555'></a><a href='#L555'>555</a>
615
- <a name='L556'></a><a href='#L556'>556</a>
616
- <a name='L557'></a><a href='#L557'>557</a>
617
- <a name='L558'></a><a href='#L558'>558</a>
618
- <a name='L559'></a><a href='#L559'>559</a>
619
- <a name='L560'></a><a href='#L560'>560</a>
620
- <a name='L561'></a><a href='#L561'>561</a>
621
- <a name='L562'></a><a href='#L562'>562</a>
622
- <a name='L563'></a><a href='#L563'>563</a>
623
- <a name='L564'></a><a href='#L564'>564</a>
624
- <a name='L565'></a><a href='#L565'>565</a>
625
- <a name='L566'></a><a href='#L566'>566</a>
626
- <a name='L567'></a><a href='#L567'>567</a>
627
- <a name='L568'></a><a href='#L568'>568</a>
628
- <a name='L569'></a><a href='#L569'>569</a>
629
- <a name='L570'></a><a href='#L570'>570</a>
630
- <a name='L571'></a><a href='#L571'>571</a>
631
- <a name='L572'></a><a href='#L572'>572</a>
632
- <a name='L573'></a><a href='#L573'>573</a>
633
- <a name='L574'></a><a href='#L574'>574</a>
634
- <a name='L575'></a><a href='#L575'>575</a>
635
- <a name='L576'></a><a href='#L576'>576</a>
636
- <a name='L577'></a><a href='#L577'>577</a>
637
- <a name='L578'></a><a href='#L578'>578</a>
638
- <a name='L579'></a><a href='#L579'>579</a>
639
- <a name='L580'></a><a href='#L580'>580</a>
640
- <a name='L581'></a><a href='#L581'>581</a>
641
- <a name='L582'></a><a href='#L582'>582</a>
642
- <a name='L583'></a><a href='#L583'>583</a>
643
- <a name='L584'></a><a href='#L584'>584</a>
644
- <a name='L585'></a><a href='#L585'>585</a>
645
- <a name='L586'></a><a href='#L586'>586</a>
646
- <a name='L587'></a><a href='#L587'>587</a>
647
- <a name='L588'></a><a href='#L588'>588</a>
648
- <a name='L589'></a><a href='#L589'>589</a>
649
- <a name='L590'></a><a href='#L590'>590</a>
650
- <a name='L591'></a><a href='#L591'>591</a>
651
- <a name='L592'></a><a href='#L592'>592</a>
652
- <a name='L593'></a><a href='#L593'>593</a>
653
- <a name='L594'></a><a href='#L594'>594</a>
654
- <a name='L595'></a><a href='#L595'>595</a>
655
- <a name='L596'></a><a href='#L596'>596</a>
656
- <a name='L597'></a><a href='#L597'>597</a>
657
- <a name='L598'></a><a href='#L598'>598</a>
658
- <a name='L599'></a><a href='#L599'>599</a>
659
- <a name='L600'></a><a href='#L600'>600</a>
660
- <a name='L601'></a><a href='#L601'>601</a>
661
- <a name='L602'></a><a href='#L602'>602</a>
662
- <a name='L603'></a><a href='#L603'>603</a>
663
- <a name='L604'></a><a href='#L604'>604</a>
664
- <a name='L605'></a><a href='#L605'>605</a>
665
- <a name='L606'></a><a href='#L606'>606</a>
666
- <a name='L607'></a><a href='#L607'>607</a>
667
- <a name='L608'></a><a href='#L608'>608</a>
668
- <a name='L609'></a><a href='#L609'>609</a>
669
- <a name='L610'></a><a href='#L610'>610</a>
670
- <a name='L611'></a><a href='#L611'>611</a>
671
- <a name='L612'></a><a href='#L612'>612</a>
672
- <a name='L613'></a><a href='#L613'>613</a>
673
- <a name='L614'></a><a href='#L614'>614</a>
674
- <a name='L615'></a><a href='#L615'>615</a>
675
- <a name='L616'></a><a href='#L616'>616</a>
676
- <a name='L617'></a><a href='#L617'>617</a>
677
- <a name='L618'></a><a href='#L618'>618</a>
678
- <a name='L619'></a><a href='#L619'>619</a>
679
- <a name='L620'></a><a href='#L620'>620</a>
680
- <a name='L621'></a><a href='#L621'>621</a>
681
- <a name='L622'></a><a href='#L622'>622</a>
682
- <a name='L623'></a><a href='#L623'>623</a>
683
- <a name='L624'></a><a href='#L624'>624</a>
684
- <a name='L625'></a><a href='#L625'>625</a>
685
- <a name='L626'></a><a href='#L626'>626</a>
686
- <a name='L627'></a><a href='#L627'>627</a>
687
- <a name='L628'></a><a href='#L628'>628</a>
688
- <a name='L629'></a><a href='#L629'>629</a>
689
- <a name='L630'></a><a href='#L630'>630</a>
690
- <a name='L631'></a><a href='#L631'>631</a>
691
- <a name='L632'></a><a href='#L632'>632</a>
692
- <a name='L633'></a><a href='#L633'>633</a>
693
- <a name='L634'></a><a href='#L634'>634</a>
694
- <a name='L635'></a><a href='#L635'>635</a>
695
- <a name='L636'></a><a href='#L636'>636</a>
696
- <a name='L637'></a><a href='#L637'>637</a>
697
- <a name='L638'></a><a href='#L638'>638</a>
698
- <a name='L639'></a><a href='#L639'>639</a>
699
- <a name='L640'></a><a href='#L640'>640</a>
700
- <a name='L641'></a><a href='#L641'>641</a>
701
- <a name='L642'></a><a href='#L642'>642</a>
702
- <a name='L643'></a><a href='#L643'>643</a>
703
- <a name='L644'></a><a href='#L644'>644</a>
704
- <a name='L645'></a><a href='#L645'>645</a>
705
- <a name='L646'></a><a href='#L646'>646</a>
706
- <a name='L647'></a><a href='#L647'>647</a>
707
- <a name='L648'></a><a href='#L648'>648</a>
708
- <a name='L649'></a><a href='#L649'>649</a>
709
- <a name='L650'></a><a href='#L650'>650</a>
710
- <a name='L651'></a><a href='#L651'>651</a>
711
- <a name='L652'></a><a href='#L652'>652</a>
712
- <a name='L653'></a><a href='#L653'>653</a>
713
- <a name='L654'></a><a href='#L654'>654</a>
714
- <a name='L655'></a><a href='#L655'>655</a>
715
- <a name='L656'></a><a href='#L656'>656</a>
716
- <a name='L657'></a><a href='#L657'>657</a>
717
- <a name='L658'></a><a href='#L658'>658</a>
718
- <a name='L659'></a><a href='#L659'>659</a>
719
- <a name='L660'></a><a href='#L660'>660</a>
720
- <a name='L661'></a><a href='#L661'>661</a>
721
- <a name='L662'></a><a href='#L662'>662</a>
722
- <a name='L663'></a><a href='#L663'>663</a>
723
- <a name='L664'></a><a href='#L664'>664</a>
724
- <a name='L665'></a><a href='#L665'>665</a>
725
- <a name='L666'></a><a href='#L666'>666</a>
726
- <a name='L667'></a><a href='#L667'>667</a>
727
- <a name='L668'></a><a href='#L668'>668</a>
728
- <a name='L669'></a><a href='#L669'>669</a>
729
- <a name='L670'></a><a href='#L670'>670</a>
730
- <a name='L671'></a><a href='#L671'>671</a>
731
- <a name='L672'></a><a href='#L672'>672</a>
732
- <a name='L673'></a><a href='#L673'>673</a>
733
- <a name='L674'></a><a href='#L674'>674</a>
734
- <a name='L675'></a><a href='#L675'>675</a>
735
- <a name='L676'></a><a href='#L676'>676</a>
736
- <a name='L677'></a><a href='#L677'>677</a>
737
- <a name='L678'></a><a href='#L678'>678</a>
738
- <a name='L679'></a><a href='#L679'>679</a>
739
- <a name='L680'></a><a href='#L680'>680</a>
740
- <a name='L681'></a><a href='#L681'>681</a>
741
- <a name='L682'></a><a href='#L682'>682</a>
742
- <a name='L683'></a><a href='#L683'>683</a>
743
- <a name='L684'></a><a href='#L684'>684</a>
744
- <a name='L685'></a><a href='#L685'>685</a>
745
- <a name='L686'></a><a href='#L686'>686</a>
746
- <a name='L687'></a><a href='#L687'>687</a>
747
- <a name='L688'></a><a href='#L688'>688</a>
748
- <a name='L689'></a><a href='#L689'>689</a>
749
- <a name='L690'></a><a href='#L690'>690</a>
750
- <a name='L691'></a><a href='#L691'>691</a>
751
- <a name='L692'></a><a href='#L692'>692</a>
752
- <a name='L693'></a><a href='#L693'>693</a>
753
- <a name='L694'></a><a href='#L694'>694</a>
754
- <a name='L695'></a><a href='#L695'>695</a>
755
- <a name='L696'></a><a href='#L696'>696</a>
756
- <a name='L697'></a><a href='#L697'>697</a>
757
- <a name='L698'></a><a href='#L698'>698</a>
758
- <a name='L699'></a><a href='#L699'>699</a>
759
- <a name='L700'></a><a href='#L700'>700</a>
760
- <a name='L701'></a><a href='#L701'>701</a>
761
- <a name='L702'></a><a href='#L702'>702</a>
762
- <a name='L703'></a><a href='#L703'>703</a>
763
- <a name='L704'></a><a href='#L704'>704</a>
764
- <a name='L705'></a><a href='#L705'>705</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
765
- <span class="cline-any cline-neutral">&nbsp;</span>
766
- <span class="cline-any cline-neutral">&nbsp;</span>
767
- <span class="cline-any cline-neutral">&nbsp;</span>
768
- <span class="cline-any cline-neutral">&nbsp;</span>
769
- <span class="cline-any cline-neutral">&nbsp;</span>
770
- <span class="cline-any cline-neutral">&nbsp;</span>
771
- <span class="cline-any cline-neutral">&nbsp;</span>
772
- <span class="cline-any cline-neutral">&nbsp;</span>
773
- <span class="cline-any cline-neutral">&nbsp;</span>
774
- <span class="cline-any cline-yes">2x</span>
775
- <span class="cline-any cline-yes">1x</span>
776
- <span class="cline-any cline-yes">1x</span>
777
- <span class="cline-any cline-yes">1x</span>
778
- <span class="cline-any cline-yes">1x</span>
779
- <span class="cline-any cline-yes">1x</span>
780
- <span class="cline-any cline-yes">4x</span>
781
- <span class="cline-any cline-yes">1x</span>
782
- <span class="cline-any cline-neutral">&nbsp;</span>
783
- <span class="cline-any cline-yes">1x</span>
784
- <span class="cline-any cline-yes">1x</span>
785
- <span class="cline-any cline-neutral">&nbsp;</span>
786
- <span class="cline-any cline-yes">1x</span>
787
- <span class="cline-any cline-no">&nbsp;</span>
788
- <span class="cline-any cline-neutral">&nbsp;</span>
789
- <span class="cline-any cline-neutral">&nbsp;</span>
790
- <span class="cline-any cline-neutral">&nbsp;</span>
791
- <span class="cline-any cline-neutral">&nbsp;</span>
792
- <span class="cline-any cline-yes">1x</span>
793
- <span class="cline-any cline-no">&nbsp;</span>
794
- <span class="cline-any cline-no">&nbsp;</span>
795
- <span class="cline-any cline-no">&nbsp;</span>
796
- <span class="cline-any cline-neutral">&nbsp;</span>
797
- <span class="cline-any cline-neutral">&nbsp;</span>
798
- <span class="cline-any cline-no">&nbsp;</span>
799
- <span class="cline-any cline-neutral">&nbsp;</span>
800
- <span class="cline-any cline-neutral">&nbsp;</span>
801
- <span class="cline-any cline-yes">1x</span>
802
- <span class="cline-any cline-neutral">&nbsp;</span>
803
- <span class="cline-any cline-neutral">&nbsp;</span>
804
- <span class="cline-any cline-neutral">&nbsp;</span>
805
- <span class="cline-any cline-neutral">&nbsp;</span>
806
- <span class="cline-any cline-neutral">&nbsp;</span>
807
- <span class="cline-any cline-no">&nbsp;</span>
808
- <span class="cline-any cline-neutral">&nbsp;</span>
809
- <span class="cline-any cline-neutral">&nbsp;</span>
810
- <span class="cline-any cline-neutral">&nbsp;</span>
811
- <span class="cline-any cline-neutral">&nbsp;</span>
812
- <span class="cline-any cline-no">&nbsp;</span>
813
- <span class="cline-any cline-no">&nbsp;</span>
814
- <span class="cline-any cline-no">&nbsp;</span>
815
- <span class="cline-any cline-no">&nbsp;</span>
816
- <span class="cline-any cline-neutral">&nbsp;</span>
817
- <span class="cline-any cline-neutral">&nbsp;</span>
818
- <span class="cline-any cline-neutral">&nbsp;</span>
819
- <span class="cline-any cline-no">&nbsp;</span>
820
- <span class="cline-any cline-no">&nbsp;</span>
821
- <span class="cline-any cline-no">&nbsp;</span>
822
- <span class="cline-any cline-neutral">&nbsp;</span>
823
- <span class="cline-any cline-neutral">&nbsp;</span>
824
- <span class="cline-any cline-neutral">&nbsp;</span>
825
- <span class="cline-any cline-yes">1x</span>
826
- <span class="cline-any cline-no">&nbsp;</span>
827
- <span class="cline-any cline-no">&nbsp;</span>
828
- <span class="cline-any cline-neutral">&nbsp;</span>
829
- <span class="cline-any cline-neutral">&nbsp;</span>
830
- <span class="cline-any cline-neutral">&nbsp;</span>
831
- <span class="cline-any cline-yes">1x</span>
832
- <span class="cline-any cline-yes">3x</span>
833
- <span class="cline-any cline-no">&nbsp;</span>
834
- <span class="cline-any cline-no">&nbsp;</span>
835
- <span class="cline-any cline-neutral">&nbsp;</span>
836
- <span class="cline-any cline-neutral">&nbsp;</span>
837
- <span class="cline-any cline-neutral">&nbsp;</span>
838
- <span class="cline-any cline-neutral">&nbsp;</span>
839
- <span class="cline-any cline-yes">1x</span>
840
- <span class="cline-any cline-neutral">&nbsp;</span>
841
- <span class="cline-any cline-neutral">&nbsp;</span>
842
- <span class="cline-any cline-yes">1x</span>
843
- <span class="cline-any cline-neutral">&nbsp;</span>
844
- <span class="cline-any cline-neutral">&nbsp;</span>
845
- <span class="cline-any cline-yes">1x</span>
846
- <span class="cline-any cline-neutral">&nbsp;</span>
847
- <span class="cline-any cline-neutral">&nbsp;</span>
848
- <span class="cline-any cline-yes">1x</span>
849
- <span class="cline-any cline-no">&nbsp;</span>
850
- <span class="cline-any cline-neutral">&nbsp;</span>
851
- <span class="cline-any cline-neutral">&nbsp;</span>
852
- <span class="cline-any cline-no">&nbsp;</span>
853
- <span class="cline-any cline-neutral">&nbsp;</span>
854
- <span class="cline-any cline-neutral">&nbsp;</span>
855
- <span class="cline-any cline-neutral">&nbsp;</span>
856
- <span class="cline-any cline-no">&nbsp;</span>
857
- <span class="cline-any cline-neutral">&nbsp;</span>
858
- <span class="cline-any cline-neutral">&nbsp;</span>
859
- <span class="cline-any cline-neutral">&nbsp;</span>
860
- <span class="cline-any cline-neutral">&nbsp;</span>
861
- <span class="cline-any cline-neutral">&nbsp;</span>
862
- <span class="cline-any cline-neutral">&nbsp;</span>
863
- <span class="cline-any cline-no">&nbsp;</span>
864
- <span class="cline-any cline-no">&nbsp;</span>
865
- <span class="cline-any cline-neutral">&nbsp;</span>
866
- <span class="cline-any cline-neutral">&nbsp;</span>
867
- <span class="cline-any cline-neutral">&nbsp;</span>
868
- <span class="cline-any cline-neutral">&nbsp;</span>
869
- <span class="cline-any cline-neutral">&nbsp;</span>
870
- <span class="cline-any cline-neutral">&nbsp;</span>
871
- <span class="cline-any cline-no">&nbsp;</span>
872
- <span class="cline-any cline-no">&nbsp;</span>
873
- <span class="cline-any cline-neutral">&nbsp;</span>
874
- <span class="cline-any cline-neutral">&nbsp;</span>
875
- <span class="cline-any cline-neutral">&nbsp;</span>
876
- <span class="cline-any cline-neutral">&nbsp;</span>
877
- <span class="cline-any cline-neutral">&nbsp;</span>
878
- <span class="cline-any cline-neutral">&nbsp;</span>
879
- <span class="cline-any cline-no">&nbsp;</span>
880
- <span class="cline-any cline-neutral">&nbsp;</span>
881
- <span class="cline-any cline-neutral">&nbsp;</span>
882
- <span class="cline-any cline-neutral">&nbsp;</span>
883
- <span class="cline-any cline-no">&nbsp;</span>
884
- <span class="cline-any cline-no">&nbsp;</span>
885
- <span class="cline-any cline-no">&nbsp;</span>
886
- <span class="cline-any cline-neutral">&nbsp;</span>
887
- <span class="cline-any cline-neutral">&nbsp;</span>
888
- <span class="cline-any cline-neutral">&nbsp;</span>
889
- <span class="cline-any cline-neutral">&nbsp;</span>
890
- <span class="cline-any cline-no">&nbsp;</span>
891
- <span class="cline-any cline-neutral">&nbsp;</span>
892
- <span class="cline-any cline-neutral">&nbsp;</span>
893
- <span class="cline-any cline-neutral">&nbsp;</span>
894
- <span class="cline-any cline-neutral">&nbsp;</span>
895
- <span class="cline-any cline-neutral">&nbsp;</span>
896
- <span class="cline-any cline-neutral">&nbsp;</span>
897
- <span class="cline-any cline-no">&nbsp;</span>
898
- <span class="cline-any cline-neutral">&nbsp;</span>
899
- <span class="cline-any cline-neutral">&nbsp;</span>
900
- <span class="cline-any cline-neutral">&nbsp;</span>
901
- <span class="cline-any cline-no">&nbsp;</span>
902
- <span class="cline-any cline-neutral">&nbsp;</span>
903
- <span class="cline-any cline-neutral">&nbsp;</span>
904
- <span class="cline-any cline-neutral">&nbsp;</span>
905
- <span class="cline-any cline-yes">1x</span>
906
- <span class="cline-any cline-yes">1x</span>
907
- <span class="cline-any cline-neutral">&nbsp;</span>
908
- <span class="cline-any cline-yes">1x</span>
909
- <span class="cline-any cline-neutral">&nbsp;</span>
910
- <span class="cline-any cline-no">&nbsp;</span>
911
- <span class="cline-any cline-no">&nbsp;</span>
912
- <span class="cline-any cline-no">&nbsp;</span>
913
- <span class="cline-any cline-no">&nbsp;</span>
914
- <span class="cline-any cline-neutral">&nbsp;</span>
915
- <span class="cline-any cline-no">&nbsp;</span>
916
- <span class="cline-any cline-neutral">&nbsp;</span>
917
- <span class="cline-any cline-neutral">&nbsp;</span>
918
- <span class="cline-any cline-neutral">&nbsp;</span>
919
- <span class="cline-any cline-no">&nbsp;</span>
920
- <span class="cline-any cline-neutral">&nbsp;</span>
921
- <span class="cline-any cline-neutral">&nbsp;</span>
922
- <span class="cline-any cline-neutral">&nbsp;</span>
923
- <span class="cline-any cline-no">&nbsp;</span>
924
- <span class="cline-any cline-neutral">&nbsp;</span>
925
- <span class="cline-any cline-neutral">&nbsp;</span>
926
- <span class="cline-any cline-neutral">&nbsp;</span>
927
- <span class="cline-any cline-yes">1x</span>
928
- <span class="cline-any cline-neutral">&nbsp;</span>
929
- <span class="cline-any cline-no">&nbsp;</span>
930
- <span class="cline-any cline-no">&nbsp;</span>
931
- <span class="cline-any cline-no">&nbsp;</span>
932
- <span class="cline-any cline-no">&nbsp;</span>
933
- <span class="cline-any cline-no">&nbsp;</span>
934
- <span class="cline-any cline-neutral">&nbsp;</span>
935
- <span class="cline-any cline-no">&nbsp;</span>
936
- <span class="cline-any cline-neutral">&nbsp;</span>
937
- <span class="cline-any cline-neutral">&nbsp;</span>
938
- <span class="cline-any cline-neutral">&nbsp;</span>
939
- <span class="cline-any cline-no">&nbsp;</span>
940
- <span class="cline-any cline-no">&nbsp;</span>
941
- <span class="cline-any cline-neutral">&nbsp;</span>
942
- <span class="cline-any cline-neutral">&nbsp;</span>
943
- <span class="cline-any cline-neutral">&nbsp;</span>
944
- <span class="cline-any cline-no">&nbsp;</span>
945
- <span class="cline-any cline-neutral">&nbsp;</span>
946
- <span class="cline-any cline-neutral">&nbsp;</span>
947
- <span class="cline-any cline-neutral">&nbsp;</span>
948
- <span class="cline-any cline-yes">1x</span>
949
- <span class="cline-any cline-neutral">&nbsp;</span>
950
- <span class="cline-any cline-no">&nbsp;</span>
951
- <span class="cline-any cline-no">&nbsp;</span>
952
- <span class="cline-any cline-no">&nbsp;</span>
953
- <span class="cline-any cline-no">&nbsp;</span>
954
- <span class="cline-any cline-no">&nbsp;</span>
955
- <span class="cline-any cline-neutral">&nbsp;</span>
956
- <span class="cline-any cline-no">&nbsp;</span>
957
- <span class="cline-any cline-neutral">&nbsp;</span>
958
- <span class="cline-any cline-neutral">&nbsp;</span>
959
- <span class="cline-any cline-neutral">&nbsp;</span>
960
- <span class="cline-any cline-no">&nbsp;</span>
961
- <span class="cline-any cline-neutral">&nbsp;</span>
962
- <span class="cline-any cline-neutral">&nbsp;</span>
963
- <span class="cline-any cline-neutral">&nbsp;</span>
964
- <span class="cline-any cline-yes">1x</span>
965
- <span class="cline-any cline-neutral">&nbsp;</span>
966
- <span class="cline-any cline-no">&nbsp;</span>
967
- <span class="cline-any cline-no">&nbsp;</span>
968
- <span class="cline-any cline-no">&nbsp;</span>
969
- <span class="cline-any cline-no">&nbsp;</span>
970
- <span class="cline-any cline-neutral">&nbsp;</span>
971
- <span class="cline-any cline-no">&nbsp;</span>
972
- <span class="cline-any cline-neutral">&nbsp;</span>
973
- <span class="cline-any cline-neutral">&nbsp;</span>
974
- <span class="cline-any cline-neutral">&nbsp;</span>
975
- <span class="cline-any cline-yes">1x</span>
976
- <span class="cline-any cline-no">&nbsp;</span>
977
- <span class="cline-any cline-neutral">&nbsp;</span>
978
- <span class="cline-any cline-neutral">&nbsp;</span>
979
- <span class="cline-any cline-no">&nbsp;</span>
980
- <span class="cline-any cline-no">&nbsp;</span>
981
- <span class="cline-any cline-no">&nbsp;</span>
982
- <span class="cline-any cline-no">&nbsp;</span>
983
- <span class="cline-any cline-no">&nbsp;</span>
984
- <span class="cline-any cline-neutral">&nbsp;</span>
985
- <span class="cline-any cline-no">&nbsp;</span>
986
- <span class="cline-any cline-neutral">&nbsp;</span>
987
- <span class="cline-any cline-neutral">&nbsp;</span>
988
- <span class="cline-any cline-neutral">&nbsp;</span>
989
- <span class="cline-any cline-no">&nbsp;</span>
990
- <span class="cline-any cline-neutral">&nbsp;</span>
991
- <span class="cline-any cline-neutral">&nbsp;</span>
992
- <span class="cline-any cline-neutral">&nbsp;</span>
993
- <span class="cline-any cline-yes">1x</span>
994
- <span class="cline-any cline-neutral">&nbsp;</span>
995
- <span class="cline-any cline-no">&nbsp;</span>
996
- <span class="cline-any cline-no">&nbsp;</span>
997
- <span class="cline-any cline-no">&nbsp;</span>
998
- <span class="cline-any cline-no">&nbsp;</span>
999
- <span class="cline-any cline-no">&nbsp;</span>
1000
- <span class="cline-any cline-neutral">&nbsp;</span>
1001
- <span class="cline-any cline-no">&nbsp;</span>
1002
- <span class="cline-any cline-neutral">&nbsp;</span>
1003
- <span class="cline-any cline-neutral">&nbsp;</span>
1004
- <span class="cline-any cline-neutral">&nbsp;</span>
1005
- <span class="cline-any cline-yes">1x</span>
1006
- <span class="cline-any cline-neutral">&nbsp;</span>
1007
- <span class="cline-any cline-neutral">&nbsp;</span>
1008
- <span class="cline-any cline-neutral">&nbsp;</span>
1009
- <span class="cline-any cline-no">&nbsp;</span>
1010
- <span class="cline-any cline-neutral">&nbsp;</span>
1011
- <span class="cline-any cline-neutral">&nbsp;</span>
1012
- <span class="cline-any cline-no">&nbsp;</span>
1013
- <span class="cline-any cline-no">&nbsp;</span>
1014
- <span class="cline-any cline-no">&nbsp;</span>
1015
- <span class="cline-any cline-no">&nbsp;</span>
1016
- <span class="cline-any cline-no">&nbsp;</span>
1017
- <span class="cline-any cline-neutral">&nbsp;</span>
1018
- <span class="cline-any cline-no">&nbsp;</span>
1019
- <span class="cline-any cline-neutral">&nbsp;</span>
1020
- <span class="cline-any cline-neutral">&nbsp;</span>
1021
- <span class="cline-any cline-neutral">&nbsp;</span>
1022
- <span class="cline-any cline-yes">1x</span>
1023
- <span class="cline-any cline-neutral">&nbsp;</span>
1024
- <span class="cline-any cline-neutral">&nbsp;</span>
1025
- <span class="cline-any cline-neutral">&nbsp;</span>
1026
- <span class="cline-any cline-no">&nbsp;</span>
1027
- <span class="cline-any cline-neutral">&nbsp;</span>
1028
- <span class="cline-any cline-neutral">&nbsp;</span>
1029
- <span class="cline-any cline-no">&nbsp;</span>
1030
- <span class="cline-any cline-no">&nbsp;</span>
1031
- <span class="cline-any cline-no">&nbsp;</span>
1032
- <span class="cline-any cline-no">&nbsp;</span>
1033
- <span class="cline-any cline-no">&nbsp;</span>
1034
- <span class="cline-any cline-neutral">&nbsp;</span>
1035
- <span class="cline-any cline-no">&nbsp;</span>
1036
- <span class="cline-any cline-neutral">&nbsp;</span>
1037
- <span class="cline-any cline-neutral">&nbsp;</span>
1038
- <span class="cline-any cline-neutral">&nbsp;</span>
1039
- <span class="cline-any cline-yes">1x</span>
1040
- <span class="cline-any cline-neutral">&nbsp;</span>
1041
- <span class="cline-any cline-neutral">&nbsp;</span>
1042
- <span class="cline-any cline-neutral">&nbsp;</span>
1043
- <span class="cline-any cline-neutral">&nbsp;</span>
1044
- <span class="cline-any cline-neutral">&nbsp;</span>
1045
- <span class="cline-any cline-neutral">&nbsp;</span>
1046
- <span class="cline-any cline-neutral">&nbsp;</span>
1047
- <span class="cline-any cline-neutral">&nbsp;</span>
1048
- <span class="cline-any cline-neutral">&nbsp;</span>
1049
- <span class="cline-any cline-neutral">&nbsp;</span>
1050
- <span class="cline-any cline-neutral">&nbsp;</span>
1051
- <span class="cline-any cline-neutral">&nbsp;</span>
1052
- <span class="cline-any cline-neutral">&nbsp;</span>
1053
- <span class="cline-any cline-neutral">&nbsp;</span>
1054
- <span class="cline-any cline-neutral">&nbsp;</span>
1055
- <span class="cline-any cline-neutral">&nbsp;</span>
1056
- <span class="cline-any cline-neutral">&nbsp;</span>
1057
- <span class="cline-any cline-neutral">&nbsp;</span>
1058
- <span class="cline-any cline-neutral">&nbsp;</span>
1059
- <span class="cline-any cline-neutral">&nbsp;</span>
1060
- <span class="cline-any cline-neutral">&nbsp;</span>
1061
- <span class="cline-any cline-neutral">&nbsp;</span>
1062
- <span class="cline-any cline-neutral">&nbsp;</span>
1063
- <span class="cline-any cline-neutral">&nbsp;</span>
1064
- <span class="cline-any cline-yes">1x</span>
1065
- <span class="cline-any cline-no">&nbsp;</span>
1066
- <span class="cline-any cline-neutral">&nbsp;</span>
1067
- <span class="cline-any cline-no">&nbsp;</span>
1068
- <span class="cline-any cline-neutral">&nbsp;</span>
1069
- <span class="cline-any cline-neutral">&nbsp;</span>
1070
- <span class="cline-any cline-neutral">&nbsp;</span>
1071
- <span class="cline-any cline-no">&nbsp;</span>
1072
- <span class="cline-any cline-no">&nbsp;</span>
1073
- <span class="cline-any cline-neutral">&nbsp;</span>
1074
- <span class="cline-any cline-neutral">&nbsp;</span>
1075
- <span class="cline-any cline-neutral">&nbsp;</span>
1076
- <span class="cline-any cline-no">&nbsp;</span>
1077
- <span class="cline-any cline-no">&nbsp;</span>
1078
- <span class="cline-any cline-neutral">&nbsp;</span>
1079
- <span class="cline-any cline-neutral">&nbsp;</span>
1080
- <span class="cline-any cline-neutral">&nbsp;</span>
1081
- <span class="cline-any cline-no">&nbsp;</span>
1082
- <span class="cline-any cline-no">&nbsp;</span>
1083
- <span class="cline-any cline-neutral">&nbsp;</span>
1084
- <span class="cline-any cline-neutral">&nbsp;</span>
1085
- <span class="cline-any cline-neutral">&nbsp;</span>
1086
- <span class="cline-any cline-no">&nbsp;</span>
1087
- <span class="cline-any cline-no">&nbsp;</span>
1088
- <span class="cline-any cline-neutral">&nbsp;</span>
1089
- <span class="cline-any cline-neutral">&nbsp;</span>
1090
- <span class="cline-any cline-neutral">&nbsp;</span>
1091
- <span class="cline-any cline-no">&nbsp;</span>
1092
- <span class="cline-any cline-no">&nbsp;</span>
1093
- <span class="cline-any cline-neutral">&nbsp;</span>
1094
- <span class="cline-any cline-neutral">&nbsp;</span>
1095
- <span class="cline-any cline-neutral">&nbsp;</span>
1096
- <span class="cline-any cline-yes">1x</span>
1097
- <span class="cline-any cline-no">&nbsp;</span>
1098
- <span class="cline-any cline-no">&nbsp;</span>
1099
- <span class="cline-any cline-neutral">&nbsp;</span>
1100
- <span class="cline-any cline-neutral">&nbsp;</span>
1101
- <span class="cline-any cline-neutral">&nbsp;</span>
1102
- <span class="cline-any cline-yes">1x</span>
1103
- <span class="cline-any cline-no">&nbsp;</span>
1104
- <span class="cline-any cline-no">&nbsp;</span>
1105
- <span class="cline-any cline-neutral">&nbsp;</span>
1106
- <span class="cline-any cline-neutral">&nbsp;</span>
1107
- <span class="cline-any cline-neutral">&nbsp;</span>
1108
- <span class="cline-any cline-neutral">&nbsp;</span>
1109
- <span class="cline-any cline-neutral">&nbsp;</span>
1110
- <span class="cline-any cline-neutral">&nbsp;</span>
1111
- <span class="cline-any cline-neutral">&nbsp;</span>
1112
- <span class="cline-any cline-neutral">&nbsp;</span>
1113
- <span class="cline-any cline-neutral">&nbsp;</span>
1114
- <span class="cline-any cline-neutral">&nbsp;</span>
1115
- <span class="cline-any cline-neutral">&nbsp;</span>
1116
- <span class="cline-any cline-yes">1x</span>
1117
- <span class="cline-any cline-no">&nbsp;</span>
1118
- <span class="cline-any cline-no">&nbsp;</span>
1119
- <span class="cline-any cline-neutral">&nbsp;</span>
1120
- <span class="cline-any cline-no">&nbsp;</span>
1121
- <span class="cline-any cline-neutral">&nbsp;</span>
1122
- <span class="cline-any cline-neutral">&nbsp;</span>
1123
- <span class="cline-any cline-neutral">&nbsp;</span>
1124
- <span class="cline-any cline-no">&nbsp;</span>
1125
- <span class="cline-any cline-neutral">&nbsp;</span>
1126
- <span class="cline-any cline-no">&nbsp;</span>
1127
- <span class="cline-any cline-neutral">&nbsp;</span>
1128
- <span class="cline-any cline-neutral">&nbsp;</span>
1129
- <span class="cline-any cline-neutral">&nbsp;</span>
1130
- <span class="cline-any cline-neutral">&nbsp;</span>
1131
- <span class="cline-any cline-neutral">&nbsp;</span>
1132
- <span class="cline-any cline-neutral">&nbsp;</span>
1133
- <span class="cline-any cline-neutral">&nbsp;</span>
1134
- <span class="cline-any cline-no">&nbsp;</span>
1135
- <span class="cline-any cline-neutral">&nbsp;</span>
1136
- <span class="cline-any cline-neutral">&nbsp;</span>
1137
- <span class="cline-any cline-neutral">&nbsp;</span>
1138
- <span class="cline-any cline-no">&nbsp;</span>
1139
- <span class="cline-any cline-no">&nbsp;</span>
1140
- <span class="cline-any cline-neutral">&nbsp;</span>
1141
- <span class="cline-any cline-neutral">&nbsp;</span>
1142
- <span class="cline-any cline-neutral">&nbsp;</span>
1143
- <span class="cline-any cline-no">&nbsp;</span>
1144
- <span class="cline-any cline-neutral">&nbsp;</span>
1145
- <span class="cline-any cline-neutral">&nbsp;</span>
1146
- <span class="cline-any cline-neutral">&nbsp;</span>
1147
- <span class="cline-any cline-no">&nbsp;</span>
1148
- <span class="cline-any cline-neutral">&nbsp;</span>
1149
- <span class="cline-any cline-neutral">&nbsp;</span>
1150
- <span class="cline-any cline-neutral">&nbsp;</span>
1151
- <span class="cline-any cline-no">&nbsp;</span>
1152
- <span class="cline-any cline-neutral">&nbsp;</span>
1153
- <span class="cline-any cline-no">&nbsp;</span>
1154
- <span class="cline-any cline-neutral">&nbsp;</span>
1155
- <span class="cline-any cline-neutral">&nbsp;</span>
1156
- <span class="cline-any cline-neutral">&nbsp;</span>
1157
- <span class="cline-any cline-no">&nbsp;</span>
1158
- <span class="cline-any cline-no">&nbsp;</span>
1159
- <span class="cline-any cline-no">&nbsp;</span>
1160
- <span class="cline-any cline-neutral">&nbsp;</span>
1161
- <span class="cline-any cline-neutral">&nbsp;</span>
1162
- <span class="cline-any cline-neutral">&nbsp;</span>
1163
- <span class="cline-any cline-no">&nbsp;</span>
1164
- <span class="cline-any cline-no">&nbsp;</span>
1165
- <span class="cline-any cline-no">&nbsp;</span>
1166
- <span class="cline-any cline-neutral">&nbsp;</span>
1167
- <span class="cline-any cline-neutral">&nbsp;</span>
1168
- <span class="cline-any cline-neutral">&nbsp;</span>
1169
- <span class="cline-any cline-no">&nbsp;</span>
1170
- <span class="cline-any cline-neutral">&nbsp;</span>
1171
- <span class="cline-any cline-no">&nbsp;</span>
1172
- <span class="cline-any cline-neutral">&nbsp;</span>
1173
- <span class="cline-any cline-no">&nbsp;</span>
1174
- <span class="cline-any cline-neutral">&nbsp;</span>
1175
- <span class="cline-any cline-neutral">&nbsp;</span>
1176
- <span class="cline-any cline-neutral">&nbsp;</span>
1177
- <span class="cline-any cline-no">&nbsp;</span>
1178
- <span class="cline-any cline-neutral">&nbsp;</span>
1179
- <span class="cline-any cline-neutral">&nbsp;</span>
1180
- <span class="cline-any cline-neutral">&nbsp;</span>
1181
- <span class="cline-any cline-neutral">&nbsp;</span>
1182
- <span class="cline-any cline-neutral">&nbsp;</span>
1183
- <span class="cline-any cline-neutral">&nbsp;</span>
1184
- <span class="cline-any cline-no">&nbsp;</span>
1185
- <span class="cline-any cline-no">&nbsp;</span>
1186
- <span class="cline-any cline-no">&nbsp;</span>
1187
- <span class="cline-any cline-no">&nbsp;</span>
1188
- <span class="cline-any cline-no">&nbsp;</span>
1189
- <span class="cline-any cline-no">&nbsp;</span>
1190
- <span class="cline-any cline-no">&nbsp;</span>
1191
- <span class="cline-any cline-no">&nbsp;</span>
1192
- <span class="cline-any cline-no">&nbsp;</span>
1193
- <span class="cline-any cline-no">&nbsp;</span>
1194
- <span class="cline-any cline-no">&nbsp;</span>
1195
- <span class="cline-any cline-no">&nbsp;</span>
1196
- <span class="cline-any cline-no">&nbsp;</span>
1197
- <span class="cline-any cline-no">&nbsp;</span>
1198
- <span class="cline-any cline-neutral">&nbsp;</span>
1199
- <span class="cline-any cline-no">&nbsp;</span>
1200
- <span class="cline-any cline-no">&nbsp;</span>
1201
- <span class="cline-any cline-no">&nbsp;</span>
1202
- <span class="cline-any cline-no">&nbsp;</span>
1203
- <span class="cline-any cline-no">&nbsp;</span>
1204
- <span class="cline-any cline-neutral">&nbsp;</span>
1205
- <span class="cline-any cline-neutral">&nbsp;</span>
1206
- <span class="cline-any cline-neutral">&nbsp;</span>
1207
- <span class="cline-any cline-no">&nbsp;</span>
1208
- <span class="cline-any cline-neutral">&nbsp;</span>
1209
- <span class="cline-any cline-neutral">&nbsp;</span>
1210
- <span class="cline-any cline-neutral">&nbsp;</span>
1211
- <span class="cline-any cline-neutral">&nbsp;</span>
1212
- <span class="cline-any cline-yes">1x</span>
1213
- <span class="cline-any cline-neutral">&nbsp;</span>
1214
- <span class="cline-any cline-no">&nbsp;</span>
1215
- <span class="cline-any cline-no">&nbsp;</span>
1216
- <span class="cline-any cline-no">&nbsp;</span>
1217
- <span class="cline-any cline-no">&nbsp;</span>
1218
- <span class="cline-any cline-neutral">&nbsp;</span>
1219
- <span class="cline-any cline-neutral">&nbsp;</span>
1220
- <span class="cline-any cline-neutral">&nbsp;</span>
1221
- <span class="cline-any cline-neutral">&nbsp;</span>
1222
- <span class="cline-any cline-yes">1x</span>
1223
- <span class="cline-any cline-no">&nbsp;</span>
1224
- <span class="cline-any cline-no">&nbsp;</span>
1225
- <span class="cline-any cline-neutral">&nbsp;</span>
1226
- <span class="cline-any cline-no">&nbsp;</span>
1227
- <span class="cline-any cline-neutral">&nbsp;</span>
1228
- <span class="cline-any cline-neutral">&nbsp;</span>
1229
- <span class="cline-any cline-neutral">&nbsp;</span>
1230
- <span class="cline-any cline-yes">1x</span>
1231
- <span class="cline-any cline-no">&nbsp;</span>
1232
- <span class="cline-any cline-no">&nbsp;</span>
1233
- <span class="cline-any cline-no">&nbsp;</span>
1234
- <span class="cline-any cline-neutral">&nbsp;</span>
1235
- <span class="cline-any cline-no">&nbsp;</span>
1236
- <span class="cline-any cline-no">&nbsp;</span>
1237
- <span class="cline-any cline-neutral">&nbsp;</span>
1238
- <span class="cline-any cline-no">&nbsp;</span>
1239
- <span class="cline-any cline-no">&nbsp;</span>
1240
- <span class="cline-any cline-neutral">&nbsp;</span>
1241
- <span class="cline-any cline-neutral">&nbsp;</span>
1242
- <span class="cline-any cline-no">&nbsp;</span>
1243
- <span class="cline-any cline-no">&nbsp;</span>
1244
- <span class="cline-any cline-no">&nbsp;</span>
1245
- <span class="cline-any cline-no">&nbsp;</span>
1246
- <span class="cline-any cline-no">&nbsp;</span>
1247
- <span class="cline-any cline-neutral">&nbsp;</span>
1248
- <span class="cline-any cline-no">&nbsp;</span>
1249
- <span class="cline-any cline-no">&nbsp;</span>
1250
- <span class="cline-any cline-no">&nbsp;</span>
1251
- <span class="cline-any cline-neutral">&nbsp;</span>
1252
- <span class="cline-any cline-neutral">&nbsp;</span>
1253
- <span class="cline-any cline-neutral">&nbsp;</span>
1254
- <span class="cline-any cline-no">&nbsp;</span>
1255
- <span class="cline-any cline-no">&nbsp;</span>
1256
- <span class="cline-any cline-neutral">&nbsp;</span>
1257
- <span class="cline-any cline-no">&nbsp;</span>
1258
- <span class="cline-any cline-no">&nbsp;</span>
1259
- <span class="cline-any cline-no">&nbsp;</span>
1260
- <span class="cline-any cline-no">&nbsp;</span>
1261
- <span class="cline-any cline-no">&nbsp;</span>
1262
- <span class="cline-any cline-no">&nbsp;</span>
1263
- <span class="cline-any cline-neutral">&nbsp;</span>
1264
- <span class="cline-any cline-neutral">&nbsp;</span>
1265
- <span class="cline-any cline-no">&nbsp;</span>
1266
- <span class="cline-any cline-no">&nbsp;</span>
1267
- <span class="cline-any cline-no">&nbsp;</span>
1268
- <span class="cline-any cline-neutral">&nbsp;</span>
1269
- <span class="cline-any cline-neutral">&nbsp;</span>
1270
- <span class="cline-any cline-no">&nbsp;</span>
1271
- <span class="cline-any cline-no">&nbsp;</span>
1272
- <span class="cline-any cline-no">&nbsp;</span>
1273
- <span class="cline-any cline-no">&nbsp;</span>
1274
- <span class="cline-any cline-no">&nbsp;</span>
1275
- <span class="cline-any cline-no">&nbsp;</span>
1276
- <span class="cline-any cline-neutral">&nbsp;</span>
1277
- <span class="cline-any cline-no">&nbsp;</span>
1278
- <span class="cline-any cline-neutral">&nbsp;</span>
1279
- <span class="cline-any cline-neutral">&nbsp;</span>
1280
- <span class="cline-any cline-neutral">&nbsp;</span>
1281
- <span class="cline-any cline-no">&nbsp;</span>
1282
- <span class="cline-any cline-neutral">&nbsp;</span>
1283
- <span class="cline-any cline-neutral">&nbsp;</span>
1284
- <span class="cline-any cline-neutral">&nbsp;</span>
1285
- <span class="cline-any cline-no">&nbsp;</span>
1286
- <span class="cline-any cline-neutral">&nbsp;</span>
1287
- <span class="cline-any cline-neutral">&nbsp;</span>
1288
- <span class="cline-any cline-neutral">&nbsp;</span>
1289
- <span class="cline-any cline-neutral">&nbsp;</span>
1290
- <span class="cline-any cline-no">&nbsp;</span>
1291
- <span class="cline-any cline-neutral">&nbsp;</span>
1292
- <span class="cline-any cline-neutral">&nbsp;</span>
1293
- <span class="cline-any cline-no">&nbsp;</span>
1294
- <span class="cline-any cline-no">&nbsp;</span>
1295
- <span class="cline-any cline-neutral">&nbsp;</span>
1296
- <span class="cline-any cline-neutral">&nbsp;</span>
1297
- <span class="cline-any cline-neutral">&nbsp;</span>
1298
- <span class="cline-any cline-neutral">&nbsp;</span>
1299
- <span class="cline-any cline-yes">1x</span>
1300
- <span class="cline-any cline-no">&nbsp;</span>
1301
- <span class="cline-any cline-no">&nbsp;</span>
1302
- <span class="cline-any cline-neutral">&nbsp;</span>
1303
- <span class="cline-any cline-no">&nbsp;</span>
1304
- <span class="cline-any cline-no">&nbsp;</span>
1305
- <span class="cline-any cline-neutral">&nbsp;</span>
1306
- <span class="cline-any cline-neutral">&nbsp;</span>
1307
- <span class="cline-any cline-neutral">&nbsp;</span>
1308
- <span class="cline-any cline-neutral">&nbsp;</span>
1309
- <span class="cline-any cline-yes">1x</span>
1310
- <span class="cline-any cline-no">&nbsp;</span>
1311
- <span class="cline-any cline-no">&nbsp;</span>
1312
- <span class="cline-any cline-neutral">&nbsp;</span>
1313
- <span class="cline-any cline-no">&nbsp;</span>
1314
- <span class="cline-any cline-neutral">&nbsp;</span>
1315
- <span class="cline-any cline-neutral">&nbsp;</span>
1316
- <span class="cline-any cline-neutral">&nbsp;</span>
1317
- <span class="cline-any cline-yes">1x</span>
1318
- <span class="cline-any cline-no">&nbsp;</span>
1319
- <span class="cline-any cline-no">&nbsp;</span>
1320
- <span class="cline-any cline-neutral">&nbsp;</span>
1321
- <span class="cline-any cline-no">&nbsp;</span>
1322
- <span class="cline-any cline-neutral">&nbsp;</span>
1323
- <span class="cline-any cline-neutral">&nbsp;</span>
1324
- <span class="cline-any cline-neutral">&nbsp;</span>
1325
- <span class="cline-any cline-yes">1x</span>
1326
- <span class="cline-any cline-no">&nbsp;</span>
1327
- <span class="cline-any cline-no">&nbsp;</span>
1328
- <span class="cline-any cline-neutral">&nbsp;</span>
1329
- <span class="cline-any cline-no">&nbsp;</span>
1330
- <span class="cline-any cline-no">&nbsp;</span>
1331
- <span class="cline-any cline-no">&nbsp;</span>
1332
- <span class="cline-any cline-neutral">&nbsp;</span>
1333
- <span class="cline-any cline-no">&nbsp;</span>
1334
- <span class="cline-any cline-neutral">&nbsp;</span>
1335
- <span class="cline-any cline-neutral">&nbsp;</span>
1336
- <span class="cline-any cline-neutral">&nbsp;</span>
1337
- <span class="cline-any cline-neutral">&nbsp;</span>
1338
- <span class="cline-any cline-yes">1x</span>
1339
- <span class="cline-any cline-no">&nbsp;</span>
1340
- <span class="cline-any cline-no">&nbsp;</span>
1341
- <span class="cline-any cline-neutral">&nbsp;</span>
1342
- <span class="cline-any cline-no">&nbsp;</span>
1343
- <span class="cline-any cline-neutral">&nbsp;</span>
1344
- <span class="cline-any cline-neutral">&nbsp;</span>
1345
- <span class="cline-any cline-neutral">&nbsp;</span>
1346
- <span class="cline-any cline-yes">1x</span>
1347
- <span class="cline-any cline-no">&nbsp;</span>
1348
- <span class="cline-any cline-no">&nbsp;</span>
1349
- <span class="cline-any cline-neutral">&nbsp;</span>
1350
- <span class="cline-any cline-no">&nbsp;</span>
1351
- <span class="cline-any cline-neutral">&nbsp;</span>
1352
- <span class="cline-any cline-no">&nbsp;</span>
1353
- <span class="cline-any cline-no">&nbsp;</span>
1354
- <span class="cline-any cline-no">&nbsp;</span>
1355
- <span class="cline-any cline-no">&nbsp;</span>
1356
- <span class="cline-any cline-no">&nbsp;</span>
1357
- <span class="cline-any cline-neutral">&nbsp;</span>
1358
- <span class="cline-any cline-no">&nbsp;</span>
1359
- <span class="cline-any cline-no">&nbsp;</span>
1360
- <span class="cline-any cline-no">&nbsp;</span>
1361
- <span class="cline-any cline-neutral">&nbsp;</span>
1362
- <span class="cline-any cline-no">&nbsp;</span>
1363
- <span class="cline-any cline-no">&nbsp;</span>
1364
- <span class="cline-any cline-no">&nbsp;</span>
1365
- <span class="cline-any cline-neutral">&nbsp;</span>
1366
- <span class="cline-any cline-no">&nbsp;</span>
1367
- <span class="cline-any cline-no">&nbsp;</span>
1368
- <span class="cline-any cline-no">&nbsp;</span>
1369
- <span class="cline-any cline-neutral">&nbsp;</span>
1370
- <span class="cline-any cline-no">&nbsp;</span>
1371
- <span class="cline-any cline-no">&nbsp;</span>
1372
- <span class="cline-any cline-no">&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-no">&nbsp;</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-yes">1x</span>
1381
- <span class="cline-any cline-no">&nbsp;</span>
1382
- <span class="cline-any cline-no">&nbsp;</span>
1383
- <span class="cline-any cline-neutral">&nbsp;</span>
1384
- <span class="cline-any cline-no">&nbsp;</span>
1385
- <span class="cline-any cline-no">&nbsp;</span>
1386
- <span class="cline-any cline-neutral">&nbsp;</span>
1387
- <span class="cline-any cline-neutral">&nbsp;</span>
1388
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
1392
- <span class="cline-any cline-neutral">&nbsp;</span>
1393
- <span class="cline-any cline-no">&nbsp;</span>
1394
- <span class="cline-any cline-no">&nbsp;</span>
1395
- <span class="cline-any cline-neutral">&nbsp;</span>
1396
- <span class="cline-any cline-neutral">&nbsp;</span>
1397
- <span class="cline-any cline-neutral">&nbsp;</span>
1398
- <span class="cline-any cline-neutral">&nbsp;</span>
1399
- <span class="cline-any cline-no">&nbsp;</span>
1400
- <span class="cline-any cline-neutral">&nbsp;</span>
1401
- <span class="cline-any cline-no">&nbsp;</span>
1402
- <span class="cline-any cline-neutral">&nbsp;</span>
1403
- <span class="cline-any cline-neutral">&nbsp;</span>
1404
- <span class="cline-any cline-neutral">&nbsp;</span>
1405
- <span class="cline-any cline-neutral">&nbsp;</span>
1406
- <span class="cline-any cline-yes">1x</span>
1407
- <span class="cline-any cline-no">&nbsp;</span>
1408
- <span class="cline-any cline-no">&nbsp;</span>
1409
- <span class="cline-any cline-neutral">&nbsp;</span>
1410
- <span class="cline-any cline-no">&nbsp;</span>
1411
- <span class="cline-any cline-no">&nbsp;</span>
1412
- <span class="cline-any cline-neutral">&nbsp;</span>
1413
- <span class="cline-any cline-neutral">&nbsp;</span>
1414
- <span class="cline-any cline-neutral">&nbsp;</span>
1415
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
1419
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1423
- <span class="cline-any cline-no">&nbsp;</span>
1424
- <span class="cline-any cline-neutral">&nbsp;</span>
1425
- <span class="cline-any cline-no">&nbsp;</span>
1426
- <span class="cline-any cline-neutral">&nbsp;</span>
1427
- <span class="cline-any cline-neutral">&nbsp;</span>
1428
- <span class="cline-any cline-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-yes">1x</span>
1433
- <span class="cline-any cline-no">&nbsp;</span>
1434
- <span class="cline-any cline-no">&nbsp;</span>
1435
- <span class="cline-any cline-no">&nbsp;</span>
1436
- <span class="cline-any cline-neutral">&nbsp;</span>
1437
- <span class="cline-any cline-no">&nbsp;</span>
1438
- <span class="cline-any cline-neutral">&nbsp;</span>
1439
- <span class="cline-any cline-no">&nbsp;</span>
1440
- <span class="cline-any cline-no">&nbsp;</span>
1441
- <span class="cline-any cline-neutral">&nbsp;</span>
1442
- <span class="cline-any cline-no">&nbsp;</span>
1443
- <span class="cline-any cline-neutral">&nbsp;</span>
1444
- <span class="cline-any cline-no">&nbsp;</span>
1445
- <span class="cline-any cline-no">&nbsp;</span>
1446
- <span class="cline-any cline-no">&nbsp;</span>
1447
- <span class="cline-any cline-no">&nbsp;</span>
1448
- <span class="cline-any cline-no">&nbsp;</span>
1449
- <span class="cline-any cline-no">&nbsp;</span>
1450
- <span class="cline-any cline-no">&nbsp;</span>
1451
- <span class="cline-any cline-neutral">&nbsp;</span>
1452
- <span class="cline-any cline-no">&nbsp;</span>
1453
- <span class="cline-any cline-no">&nbsp;</span>
1454
- <span class="cline-any cline-neutral">&nbsp;</span>
1455
- <span class="cline-any cline-no">&nbsp;</span>
1456
- <span class="cline-any cline-no">&nbsp;</span>
1457
- <span class="cline-any cline-no">&nbsp;</span>
1458
- <span class="cline-any cline-neutral">&nbsp;</span>
1459
- <span class="cline-any cline-neutral">&nbsp;</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-yes">1x</span>
1463
- <span class="cline-any cline-no">&nbsp;</span>
1464
- <span class="cline-any cline-neutral">&nbsp;</span>
1465
- <span class="cline-any cline-no">&nbsp;</span>
1466
- <span class="cline-any cline-neutral">&nbsp;</span>
1467
- <span class="cline-any cline-neutral">&nbsp;</span>
1468
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/*
1469
- * Deepkit Framework
1470
- * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt
1471
- *
1472
- * This program is free software: you can redistribute it and/or modify
1473
- * it under the terms of the MIT License.
1474
- *
1475
- * You should have received a copy of the MIT License along with this program.
1476
- */
1477
- &nbsp;
1478
- import { asyncOperation, ClassType, CustomError, getClassName, getClassTypeFromInstance, isClassInstance } from '@deepkit/core';
1479
- import { OutgoingHttpHeaders, ServerResponse } from 'http';
1480
- import { eventDispatcher } from '@deepkit/event';
1481
- import { HttpRequest, HttpResponse } from './model';
1482
- import { InjectorContext } from '@deepkit/injector';
1483
- import { Logger } from '@deepkit/logger';
1484
- import { RouteConfig, RouteParameterResolverForInjector, Router } from './router';
1485
- import { createWorkflow, WorkflowEvent } from '@deepkit/workflow';
1486
- import type { ElementStruct, render } from '@deepkit/template';
1487
- import { FrameCategory, Stopwatch } from '@deepkit/stopwatch';
1488
- import { getSerializeFunction, hasTypeInformation, ReflectionKind, resolveReceiveType, SerializationError, serialize, serializer, ValidationError } from '@deepkit/type';
1489
- &nbsp;
1490
- export function <span class="fstat-no" title="function not covered" >isElementStruct(</span>v: any): v is ElementStruct {
1491
- <span class="cstat-no" title="statement not covered" > return 'object' === typeof v &amp;&amp; v.hasOwnProperty('render') &amp;&amp; v.hasOwnProperty('attributes') &amp;&amp; !v.slice;</span>
1492
- }
1493
- &nbsp;
1494
- let templateRender: typeof render;
1495
- &nbsp;
1496
- function <span class="fstat-no" title="function not covered" >getTemplateRender<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(</span>): typeof render {</span></span>
1497
- <span class="cstat-no" title="statement not covered" > if (!templateRender) {</span>
1498
- const template = <span class="cstat-no" title="statement not covered" >require('@deepkit/template');</span>
1499
- <span class="cstat-no" title="statement not covered" > templateRender = template.render;</span>
1500
- }
1501
- &nbsp;
1502
- <span class="cstat-no" title="statement not covered" > return templateRender;</span>
1503
- }
1504
- &nbsp;
1505
- export class Redirect {
1506
- public routeName?: string;
1507
- public routeParameters?: { [name: string]: any };
1508
- public url?: string;
1509
- &nbsp;
1510
- <span class="fstat-no" title="function not covered" > constructor(</span>
1511
- public <span class="cstat-no" title="statement not covered" >statusCode: number = <span class="branch-0 cbranch-no" title="branch not covered" >3</span>02,</span>
1512
- ) {
1513
- }
1514
- &nbsp;
1515
- <span class="fstat-no" title="function not covered" > static </span>toRoute(routeName: string, parameters: { [name: string]: any } = <span class="branch-0 cbranch-no" title="branch not covered" >{},</span> statusCode: number = <span class="branch-0 cbranch-no" title="branch not covered" >302)</span>: Redirect {
1516
- const redirect = <span class="cstat-no" title="statement not covered" >new Redirect(statusCode);</span>
1517
- <span class="cstat-no" title="statement not covered" > redirect.routeName = routeName;</span>
1518
- <span class="cstat-no" title="statement not covered" > redirect.routeParameters = parameters;</span>
1519
- <span class="cstat-no" title="statement not covered" > return redirect;</span>
1520
- }
1521
- &nbsp;
1522
- <span class="fstat-no" title="function not covered" > static </span>toUrl(url: string, statusCode: number = <span class="branch-0 cbranch-no" title="branch not covered" >302)</span>: Redirect {
1523
- const redirect = <span class="cstat-no" title="statement not covered" >new Redirect(statusCode);</span>
1524
- <span class="cstat-no" title="statement not covered" > redirect.url = url;</span>
1525
- <span class="cstat-no" title="statement not covered" > return redirect;</span>
1526
- }
1527
- }
1528
- &nbsp;
1529
- export class HttpError&lt;T extends number&gt; extends CustomError {
1530
- <span class="fstat-no" title="function not covered" > constructor(public <span class="cstat-no" title="statement not covered" >m</span>essage: string,</span> public <span class="cstat-no" title="statement not covered" >httpCode: T)</span> {
1531
- <span class="cstat-no" title="statement not covered" > super(message);</span>
1532
- }
1533
- }
1534
- &nbsp;
1535
- export function createHttpError<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >&lt;T extends number&gt;(c</span></span>ode: T, defaultMessage: string = <span class="branch-0 cbranch-no" title="branch not covered" >'')</span>: ClassType&lt;HttpError&lt;T&gt;&gt; {
1536
- return class extends HttpError&lt;T&gt; {
1537
- <span class="fstat-no" title="function not covered" > constructor(public <span class="cstat-no" title="statement not covered" >m</span>essage: string = <span class="branch-0 cbranch-no" title="branch not covered" >d</span>efaultMessage)</span> {
1538
- <span class="cstat-no" title="statement not covered" > super(message, code);</span>
1539
- }
1540
- } as any;
1541
- }
1542
- &nbsp;
1543
- export class HttpNotFoundError extends createHttpError(404, 'Not found') {
1544
- }
1545
- &nbsp;
1546
- export class HttpBadRequestError extends createHttpError(400, 'Bad request') {
1547
- }
1548
- &nbsp;
1549
- export class HttpAccessDeniedError extends createHttpError(403, 'Access denied') {
1550
- }
1551
- &nbsp;
1552
- export class HttpWorkflowEvent {
1553
- <span class="cstat-no" title="statement not covered" > stopped = false;</span>
1554
- &nbsp;
1555
- <span class="fstat-no" title="function not covered" > stopPropagation(</span>) {
1556
- <span class="cstat-no" title="statement not covered" > this.stopped = true;</span>
1557
- }
1558
- &nbsp;
1559
- <span class="fstat-no" title="function not covered" > isStopped(</span>) {
1560
- <span class="cstat-no" title="statement not covered" > return this.stopped;</span>
1561
- }
1562
- &nbsp;
1563
- public nextState?: any;
1564
- public nextStateEvent?: any;
1565
- &nbsp;
1566
- <span class="fstat-no" title="function not covered" > clearNext(</span>) {
1567
- <span class="cstat-no" title="statement not covered" > this.nextState = undefined;</span>
1568
- <span class="cstat-no" title="statement not covered" > this.nextStateEvent = undefined;</span>
1569
- }
1570
- &nbsp;
1571
- /**
1572
- * @see WorkflowNextEvent.next
1573
- */
1574
- <span class="fstat-no" title="function not covered" > next(</span>nextState: string, event?: any) {
1575
- <span class="cstat-no" title="statement not covered" > this.nextState = nextState;</span>
1576
- <span class="cstat-no" title="statement not covered" > this.nextStateEvent = event;</span>
1577
- }
1578
- &nbsp;
1579
- /**
1580
- * Whether already a next workflow state has been scheduled.
1581
- */
1582
- <span class="fstat-no" title="function not covered" > hasNext(</span>): boolean {
1583
- <span class="cstat-no" title="statement not covered" > return this.nextState !== undefined;</span>
1584
- }
1585
- &nbsp;
1586
- <span class="fstat-no" title="function not covered" > constructor(</span>
1587
- public <span class="cstat-no" title="statement not covered" >injectorContext: InjectorContext,</span>
1588
- public <span class="cstat-no" title="statement not covered" >request: HttpRequest,</span>
1589
- public <span class="cstat-no" title="statement not covered" >response: HttpResponse,</span>
1590
- ) {
1591
- }
1592
- &nbsp;
1593
- <span class="fstat-no" title="function not covered" > get u</span>rl() {
1594
- <span class="cstat-no" title="statement not covered" > return this.request.url || '/';</span>
1595
- }
1596
- &nbsp;
1597
- /**
1598
- * Whether a response has already been sent.
1599
- */
1600
- <span class="fstat-no" title="function not covered" > get s</span>ent() {
1601
- <span class="cstat-no" title="statement not covered" > return this.response.headersSent;</span>
1602
- }
1603
- &nbsp;
1604
- <span class="fstat-no" title="function not covered" > send(</span>response: any) {
1605
- <span class="cstat-no" title="statement not covered" > this.next('response', new HttpResponseEvent(this.injectorContext, this.request, this.response, response));</span>
1606
- }
1607
- }
1608
- &nbsp;
1609
- export const HttpRequestEvent = HttpWorkflowEvent;
1610
- export const HttpRouteNotFoundEvent = HttpWorkflowEvent;
1611
- &nbsp;
1612
- export class HttpWorkflowEventWithRoute extends HttpWorkflowEvent {
1613
- <span class="fstat-no" title="function not covered" > constructor(</span>
1614
- public <span class="cstat-no" title="statement not covered" >injectorContext: InjectorContext,</span>
1615
- public <span class="cstat-no" title="statement not covered" >request: HttpRequest,</span>
1616
- public <span class="cstat-no" title="statement not covered" >response: HttpResponse,</span>
1617
- public <span class="cstat-no" title="statement not covered" >route: RouteConfig,</span>
1618
- ) {
1619
- <span class="cstat-no" title="statement not covered" > super(injectorContext, request, response);</span>
1620
- }
1621
- &nbsp;
1622
- <span class="fstat-no" title="function not covered" > send(</span>response: any) {
1623
- <span class="cstat-no" title="statement not covered" > this.next('response', new HttpResponseEvent(this.injectorContext, this.request, this.response, response, this.route));</span>
1624
- }
1625
- &nbsp;
1626
- <span class="fstat-no" title="function not covered" > accessDenied(</span>) {
1627
- <span class="cstat-no" title="statement not covered" > this.next('accessDenied', new HttpAccessDeniedEvent(this.injectorContext, this.request, this.response, this.route));</span>
1628
- }
1629
- }
1630
- &nbsp;
1631
- export class HttpRouteEvent extends HttpWorkflowEvent {
1632
- <span class="fstat-no" title="function not covered" > constructor(</span>
1633
- public <span class="cstat-no" title="statement not covered" >injectorContext: InjectorContext,</span>
1634
- public <span class="cstat-no" title="statement not covered" >request: HttpRequest,</span>
1635
- public <span class="cstat-no" title="statement not covered" >response: HttpResponse,</span>
1636
- public <span class="cstat-no" title="statement not covered" >parameterResolver?: RouteParameterResolverForInjector,</span>
1637
- public <span class="cstat-no" title="statement not covered" >route?: RouteConfig,</span>
1638
- ) {
1639
- <span class="cstat-no" title="statement not covered" > super(injectorContext, request, response);</span>
1640
- }
1641
- &nbsp;
1642
- <span class="fstat-no" title="function not covered" > routeFound(</span>route: RouteConfig, parameterResolver: RouteParameterResolverForInjector) {
1643
- <span class="cstat-no" title="statement not covered" > this.route = route;</span>
1644
- <span class="cstat-no" title="statement not covered" > this.next('auth', new HttpAuthEvent(this.injectorContext, this.request, this.response, this.route, parameterResolver));</span>
1645
- }
1646
- &nbsp;
1647
- <span class="fstat-no" title="function not covered" > notFound(</span>) {
1648
- <span class="cstat-no" title="statement not covered" > this.next('routeNotFound', new HttpRouteNotFoundEvent(this.injectorContext, this.request, this.response));</span>
1649
- }
1650
- }
1651
- &nbsp;
1652
- export class HttpAuthEvent extends HttpWorkflowEventWithRoute {
1653
- <span class="fstat-no" title="function not covered" > constructor(</span>
1654
- public <span class="cstat-no" title="statement not covered" >injectorContext: InjectorContext,</span>
1655
- public <span class="cstat-no" title="statement not covered" >request: HttpRequest,</span>
1656
- public <span class="cstat-no" title="statement not covered" >response: HttpResponse,</span>
1657
- public <span class="cstat-no" title="statement not covered" >route: RouteConfig,</span>
1658
- public <span class="cstat-no" title="statement not covered" >parameterResolver: RouteParameterResolverForInjector,</span>
1659
- ) {
1660
- <span class="cstat-no" title="statement not covered" > super(injectorContext, request, response, route);</span>
1661
- }
1662
- &nbsp;
1663
- <span class="fstat-no" title="function not covered" > success(</span>) {
1664
- <span class="cstat-no" title="statement not covered" > this.next('resolveParameters', new HttpResolveParametersEvent(this.injectorContext, this.request, this.response, this.parameterResolver, this.route));</span>
1665
- }
1666
- }
1667
- &nbsp;
1668
- export class HttpAccessDeniedEvent extends HttpWorkflowEvent {
1669
- <span class="fstat-no" title="function not covered" > constructor(</span>
1670
- public <span class="cstat-no" title="statement not covered" >injectorContext: InjectorContext,</span>
1671
- public <span class="cstat-no" title="statement not covered" >request: HttpRequest,</span>
1672
- public <span class="cstat-no" title="statement not covered" >response: HttpResponse,</span>
1673
- public <span class="cstat-no" title="statement not covered" >route: RouteConfig,</span>
1674
- ) {
1675
- <span class="cstat-no" title="statement not covered" > super(injectorContext, request, response);</span>
1676
- }
1677
- }
1678
- &nbsp;
1679
- export class HttpResolveParametersEvent extends HttpWorkflowEventWithRoute {
1680
- public <span class="cstat-no" title="statement not covered" >parameters: any[] = [];</span>
1681
- &nbsp;
1682
- <span class="fstat-no" title="function not covered" > constructor(</span>
1683
- public <span class="cstat-no" title="statement not covered" >injectorContext: InjectorContext,</span>
1684
- public <span class="cstat-no" title="statement not covered" >request: HttpRequest,</span>
1685
- public <span class="cstat-no" title="statement not covered" >response: HttpResponse,</span>
1686
- public <span class="cstat-no" title="statement not covered" >parameterResolver: RouteParameterResolverForInjector,</span>
1687
- public <span class="cstat-no" title="statement not covered" >route: RouteConfig,</span>
1688
- ) {
1689
- <span class="cstat-no" title="statement not covered" > super(injectorContext, request, response, route);</span>
1690
- }
1691
- &nbsp;
1692
- <span class="fstat-no" title="function not covered" > accessDenied(</span>) {
1693
- <span class="cstat-no" title="statement not covered" > this.next('accessDenied', new HttpAccessDeniedEvent(this.injectorContext, this.request, this.response, this.route));</span>
1694
- }
1695
- }
1696
- &nbsp;
1697
- export class HttpControllerEvent extends HttpWorkflowEventWithRoute {
1698
- <span class="fstat-no" title="function not covered" > constructor(</span>
1699
- public <span class="cstat-no" title="statement not covered" >injectorContext: InjectorContext,</span>
1700
- public <span class="cstat-no" title="statement not covered" >request: HttpRequest,</span>
1701
- public <span class="cstat-no" title="statement not covered" >response: HttpResponse,</span>
1702
- public <span class="cstat-no" title="statement not covered" >parameters: any[] = <span class="branch-0 cbranch-no" title="branch not covered" >[</span>],</span>
1703
- public <span class="cstat-no" title="statement not covered" >route: RouteConfig,</span>
1704
- ) {
1705
- <span class="cstat-no" title="statement not covered" > super(injectorContext, request, response, route);</span>
1706
- }
1707
- }
1708
- &nbsp;
1709
- export class HttpResponseEvent extends WorkflowEvent {
1710
- /**
1711
- * The time it took to call the controller action in milliseconds.
1712
- */
1713
- public <span class="cstat-no" title="statement not covered" >controllerActionTime: number = 0;</span>
1714
- &nbsp;
1715
- <span class="fstat-no" title="function not covered" > constructor(</span>
1716
- public <span class="cstat-no" title="statement not covered" >injectorContext: InjectorContext,</span>
1717
- public <span class="cstat-no" title="statement not covered" >request: HttpRequest,</span>
1718
- public <span class="cstat-no" title="statement not covered" >response: HttpResponse,</span>
1719
- public <span class="cstat-no" title="statement not covered" >result: any,</span>
1720
- public <span class="cstat-no" title="statement not covered" >route?: RouteConfig,</span>
1721
- ) {
1722
- <span class="cstat-no" title="statement not covered" > super();</span>
1723
- }
1724
- }
1725
- &nbsp;
1726
- export class HttpControllerErrorEvent extends HttpWorkflowEventWithRoute {
1727
- /**
1728
- * The time it took to call the controller action in milliseconds.
1729
- */
1730
- public <span class="cstat-no" title="statement not covered" >controllerActionTime: number = 0;</span>
1731
- &nbsp;
1732
- <span class="fstat-no" title="function not covered" > constructor(</span>
1733
- public <span class="cstat-no" title="statement not covered" >injectorContext: InjectorContext,</span>
1734
- public <span class="cstat-no" title="statement not covered" >request: HttpRequest,</span>
1735
- public <span class="cstat-no" title="statement not covered" >response: HttpResponse,</span>
1736
- public <span class="cstat-no" title="statement not covered" >route: RouteConfig,</span>
1737
- public <span class="cstat-no" title="statement not covered" >error: Error,</span>
1738
- ) {
1739
- <span class="cstat-no" title="statement not covered" > super(injectorContext, request, response, route);</span>
1740
- }
1741
- }
1742
- &nbsp;
1743
- export const httpWorkflow = createWorkflow('http', {
1744
- start: WorkflowEvent,
1745
- request: HttpRequestEvent,
1746
- route: HttpRouteEvent,
1747
- routeNotFound: HttpRouteNotFoundEvent,
1748
- auth: HttpAuthEvent,
1749
- resolveParameters: HttpResolveParametersEvent,
1750
- accessDenied: HttpAccessDeniedEvent,
1751
- controller: HttpControllerEvent,
1752
- controllerError: HttpControllerErrorEvent,
1753
- parametersFailed: HttpControllerErrorEvent,
1754
- response: HttpResponseEvent,
1755
- }, {
1756
- start: 'request',
1757
- request: 'route',
1758
- route: ['auth', 'routeNotFound'],
1759
- auth: ['resolveParameters', 'accessDenied'],
1760
- resolveParameters: ['controller', 'parametersFailed'],
1761
- accessDenied: 'response',
1762
- controller: ['accessDenied', 'controllerError', 'response'],
1763
- controllerError: 'response',
1764
- parametersFailed: 'response',
1765
- routeNotFound: 'response',
1766
- });
1767
- &nbsp;
1768
- export class BaseResponse {
1769
- <span class="cstat-no" title="statement not covered" > autoSerializing: boolean = true;</span>
1770
- &nbsp;
1771
- <span class="fstat-no" title="function not covered" > constructor(public <span class="cstat-no" title="statement not covered" >_</span>statusCode?: number,</span> public <span class="cstat-no" title="statement not covered" >_headers: OutgoingHttpHeaders = <span class="branch-0 cbranch-no" title="branch not covered" >{</span>})</span> {
1772
- }
1773
- &nbsp;
1774
- <span class="fstat-no" title="function not covered" > status(</span>code: number): this {
1775
- <span class="cstat-no" title="statement not covered" > this._statusCode = code;</span>
1776
- <span class="cstat-no" title="statement not covered" > return this;</span>
1777
- }
1778
- &nbsp;
1779
- <span class="fstat-no" title="function not covered" > disableAutoSerializing(</span>) {
1780
- <span class="cstat-no" title="statement not covered" > this.autoSerializing = false;</span>
1781
- <span class="cstat-no" title="statement not covered" > return this;</span>
1782
- }
1783
- &nbsp;
1784
- <span class="fstat-no" title="function not covered" > header(</span>name: string, value: string | number): this {
1785
- <span class="cstat-no" title="statement not covered" > this._headers[name] = value;</span>
1786
- <span class="cstat-no" title="statement not covered" > return this;</span>
1787
- }
1788
- &nbsp;
1789
- <span class="fstat-no" title="function not covered" > headers(</span>headers: OutgoingHttpHeaders): this {
1790
- <span class="cstat-no" title="statement not covered" > this._headers = headers;</span>
1791
- <span class="cstat-no" title="statement not covered" > return this;</span>
1792
- }
1793
- &nbsp;
1794
- <span class="fstat-no" title="function not covered" > contentType(</span>type: string): this {
1795
- <span class="cstat-no" title="statement not covered" > this._headers['content-type'] = type;</span>
1796
- <span class="cstat-no" title="statement not covered" > return this;</span>
1797
- }
1798
- }
1799
- &nbsp;
1800
- export class HtmlResponse extends BaseResponse {
1801
- <span class="fstat-no" title="function not covered" > constructor(public <span class="cstat-no" title="statement not covered" >h</span>tml: string,</span> statusCode?: number) {
1802
- <span class="cstat-no" title="statement not covered" > super(statusCode);</span>
1803
- }
1804
- }
1805
- &nbsp;
1806
- export class JSONResponse extends BaseResponse {
1807
- <span class="fstat-no" title="function not covered" > constructor(public <span class="cstat-no" title="statement not covered" >j</span>son: any,</span> statusCode?: number) {
1808
- <span class="cstat-no" title="statement not covered" > super(statusCode);</span>
1809
- }
1810
- }
1811
- &nbsp;
1812
- export type SupportedHttpResult = undefined | null | number | string | JSONResponse | HtmlResponse | HttpResponse | ServerResponse | Redirect | Uint8Array | Error;
1813
- &nbsp;
1814
- export interface HttpResultFormatterContext {
1815
- request: HttpRequest;
1816
- response: HttpResponse;
1817
- route?: RouteConfig;
1818
- }
1819
- &nbsp;
1820
- export class HttpResultFormatter {
1821
- protected <span class="cstat-no" title="statement not covered" >jsonContentType: string = 'application/json; charset=utf-8';</span>
1822
- protected <span class="cstat-no" title="statement not covered" >htmlContentType: string = 'text/html; charset=utf-8';</span>
1823
- &nbsp;
1824
- <span class="fstat-no" title="function not covered" > constructor(protected <span class="cstat-no" title="statement not covered" >r</span>outer: Router)</span> {
1825
- }
1826
- &nbsp;
1827
- protected <span class="fstat-no" title="function not covered" >setContentTypeIfNotSetAlready(</span>response: HttpResponse, contentType: string): void {
1828
- <span class="cstat-no" title="statement not covered" > if (response.hasHeader('Content-Type')) <span class="cstat-no" title="statement not covered" >return;</span></span>
1829
- &nbsp;
1830
- <span class="cstat-no" title="statement not covered" > response.setHeader('Content-Type', contentType);</span>
1831
- }
1832
- &nbsp;
1833
- <span class="fstat-no" title="function not covered" > handleError(</span>error: Error, context: HttpResultFormatterContext): void {
1834
- &nbsp;
1835
- }
1836
- &nbsp;
1837
- <span class="fstat-no" title="function not covered" > handleUndefined(</span>result: undefined | null, context: HttpResultFormatterContext): void {
1838
- <span class="cstat-no" title="statement not covered" > context.response.end(result);</span>
1839
- }
1840
- &nbsp;
1841
- <span class="fstat-no" title="function not covered" > handleRedirect(</span>result: Redirect, context: HttpResultFormatterContext): void {
1842
- <span class="cstat-no" title="statement not covered" > if (result.routeName) {</span>
1843
- <span class="cstat-no" title="statement not covered" > context.response.writeHead(result.statusCode, {</span>
1844
- Location: this.router.resolveUrl(result.routeName, result.routeParameters)
1845
- });
1846
- } else {
1847
- <span class="cstat-no" title="statement not covered" > context.response.writeHead(result.statusCode, {</span>
1848
- Location: result.url
1849
- });
1850
- }
1851
- <span class="cstat-no" title="statement not covered" > context.response.end();</span>
1852
- }
1853
- &nbsp;
1854
- <span class="fstat-no" title="function not covered" > handleUnknown(</span>result: any, context: HttpResultFormatterContext): void {
1855
- <span class="cstat-no" title="statement not covered" > this.setContentTypeIfNotSetAlready(context.response, this.jsonContentType);</span>
1856
- &nbsp;
1857
- <span class="cstat-no" title="statement not covered" > context.response.end(JSON.stringify(result));</span>
1858
- }
1859
- &nbsp;
1860
- <span class="fstat-no" title="function not covered" > handleHtmlResponse(</span>result: HtmlResponse, context: HttpResultFormatterContext): void {
1861
- <span class="cstat-no" title="statement not covered" > this.setContentTypeIfNotSetAlready(context.response, this.htmlContentType);</span>
1862
- <span class="cstat-no" title="statement not covered" > context.response.writeHead(result._statusCode || 200, result._headers);</span>
1863
- <span class="cstat-no" title="statement not covered" > context.response.end(result.html);</span>
1864
- }
1865
- &nbsp;
1866
- <span class="fstat-no" title="function not covered" > handleJSONResponse(</span>result: JSONResponse, context: HttpResultFormatterContext): void {
1867
- <span class="cstat-no" title="statement not covered" > this.setContentTypeIfNotSetAlready(context.response, this.jsonContentType);</span>
1868
- <span class="cstat-no" title="statement not covered" > context.response.writeHead(result._statusCode || 200, result._headers);</span>
1869
- <span class="cstat-no" title="statement not covered" > context.response.end(JSON.stringify(result.json));</span>
1870
- }
1871
- &nbsp;
1872
- <span class="fstat-no" title="function not covered" > handleTypeEntity&lt;</span>T&gt;(classType: ClassType&lt;T&gt;, instance: T, context: HttpResultFormatterContext, route?: RouteConfig): void {
1873
- <span class="cstat-no" title="statement not covered" > this.setContentTypeIfNotSetAlready(context.response, this.jsonContentType);</span>
1874
- &nbsp;
1875
- const serializerToUse = <span class="cstat-no" title="statement not covered" >route &amp;&amp; route?.serializer ? route.serializer : serializer;</span>
1876
- &nbsp;
1877
- <span class="cstat-no" title="statement not covered" > context.response.end(JSON.stringify(serialize(instance, route ? route.serializationOptions : undefined, serializerToUse, resolveReceiveType(classType))));</span>
1878
- }
1879
- &nbsp;
1880
- <span class="fstat-no" title="function not covered" > handleBinary(</span>result: Uint8Array, context: HttpResultFormatterContext): void {
1881
- <span class="cstat-no" title="statement not covered" > context.response.end(result);</span>
1882
- }
1883
- &nbsp;
1884
- <span class="fstat-no" title="function not covered" > handleResponse(</span>context: HttpResultFormatterContext) {
1885
- }
1886
- &nbsp;
1887
- <span class="fstat-no" title="function not covered" > handle(</span>result: SupportedHttpResult, context: HttpResultFormatterContext): void {
1888
- <span class="cstat-no" title="statement not covered" > if (result === null || result === undefined) {</span>
1889
- <span class="cstat-no" title="statement not covered" > this.handleUndefined(result, context);</span>
1890
- } else <span class="cstat-no" title="statement not covered" >if (result instanceof Error) {</span>
1891
- <span class="cstat-no" title="statement not covered" > this.handleError(result, context);</span>
1892
- } else <span class="cstat-no" title="statement not covered" >if (result instanceof Redirect) {</span>
1893
- <span class="cstat-no" title="statement not covered" > this.handleRedirect(result, context);</span>
1894
- } else <span class="cstat-no" title="statement not covered" >if (result instanceof ServerResponse) {</span>
1895
- <span class="cstat-no" title="statement not covered" > this.handleResponse(context);</span>
1896
- } else <span class="cstat-no" title="statement not covered" >if (result instanceof HtmlResponse) {</span>
1897
- <span class="cstat-no" title="statement not covered" > this.handleHtmlResponse(result, context);</span>
1898
- } else <span class="cstat-no" title="statement not covered" >if (result instanceof Uint8Array) {</span>
1899
- <span class="cstat-no" title="statement not covered" > this.handleBinary(result, context);</span>
1900
- } else <span class="cstat-no" title="statement not covered" >if (result instanceof JSONResponse) {</span>
1901
- <span class="cstat-no" title="statement not covered" > this.handleJSONResponse(result, context);</span>
1902
- } else {
1903
- <span class="cstat-no" title="statement not covered" > if (isClassInstance(result)) {</span>
1904
- const classType = <span class="cstat-no" title="statement not covered" >getClassTypeFromInstance(result);</span>
1905
- <span class="cstat-no" title="statement not covered" > if (hasTypeInformation(classType)) {</span>
1906
- <span class="cstat-no" title="statement not covered" > this.handleTypeEntity(classType, result, context);</span>
1907
- <span class="cstat-no" title="statement not covered" > return;</span>
1908
- }
1909
- }
1910
- &nbsp;
1911
- <span class="cstat-no" title="statement not covered" > this.handleUnknown(result, context);</span>
1912
- }
1913
- }
1914
- }
1915
- &nbsp;
1916
- export class HttpListener {
1917
- <span class="fstat-no" title="function not covered" > constructor(</span>
1918
- protected <span class="cstat-no" title="statement not covered" >router: Router,</span>
1919
- protected <span class="cstat-no" title="statement not covered" >logger: Logger,</span>
1920
- protected <span class="cstat-no" title="statement not covered" >resultFormatter: HttpResultFormatter,</span>
1921
- protected <span class="cstat-no" title="statement not covered" >stopwatch?: Stopwatch,</span>
1922
- ) {
1923
- }
1924
- &nbsp;
1925
- @eventDispatcher.listen(httpWorkflow.onRequest, 100)
1926
- <span class="fstat-no" title="function not covered" > onRequest(</span>event: typeof httpWorkflow.<span class="cstat-no" title="statement not covered" ><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >onRequest.</span></span>event<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >)</span>: void {</span></span>
1927
- <span class="cstat-no" title="statement not covered" > if (event.sent) <span class="cstat-no" title="statement not covered" >return;</span></span>
1928
- <span class="cstat-no" title="statement not covered" > if (event.hasNext()) <span class="cstat-no" title="statement not covered" >return;</span></span>
1929
- &nbsp;
1930
- <span class="cstat-no" title="statement not covered" > event.next('route', new HttpRouteEvent(event.injectorContext, event.request, event.response,));</span>
1931
- }
1932
- &nbsp;
1933
- @eventDispatcher.listen(httpWorkflow.onRoute, 100)
1934
- <span class="fstat-no" title="function not covered" > async </span>onRoute(event: typeof httpWorkflow.onRoute.event<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >) {</span></span>
1935
- <span class="cstat-no" title="statement not covered" > if (event.sent) <span class="cstat-no" title="statement not covered" >return;</span></span>
1936
- <span class="cstat-no" title="statement not covered" > if (event.hasNext()) <span class="cstat-no" title="statement not covered" >return;</span></span>
1937
- const logger = <span class="cstat-no" title="statement not covered" >this.logger;</span>
1938
- &nbsp;
1939
- <span class="cstat-no" title="statement not covered" > try {</span>
1940
- const resolved = <span class="cstat-no" title="statement not covered" >this.router.resolveRequest(event.request);</span>
1941
- &nbsp;
1942
- <span class="cstat-no" title="statement not covered" > if (resolved) {</span>
1943
- <span class="cstat-no" title="statement not covered" > event.request.uploadedFiles = resolved.uploadedFiles;</span>
1944
- &nbsp;
1945
- //todo: embed that into the generated router code.
1946
- <span class="cstat-no" title="statement not covered" > if (resolved.middlewares) {</span>
1947
- const middlewares = <span class="cstat-no" title="statement not covered" >resolved.middlewares(event.injectorContext);</span>
1948
- <span class="cstat-no" title="statement not covered" > if (middlewares.length) {</span>
1949
- <span class="cstat-no" title="statement not covered" > await asyncOperation(<span class="fstat-no" title="function not covered" >async </span>(resolve, reject) =&gt; {</span>
1950
- let lastTimer: any = <span class="cstat-no" title="statement not covered" >undefined;</span>
1951
- &nbsp;
1952
- function <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >finish(</span>) {</span>
1953
- <span class="cstat-no" title="statement not covered" > clearTimeout(lastTimer);</span>
1954
- <span class="cstat-no" title="statement not covered" > resolve(undefined);</span>
1955
- //middleware finished the request. We end the workflow transition
1956
- }
1957
- &nbsp;
1958
- <span class="cstat-no" title="statement not covered" > event.response.once('finish', finish);</span>
1959
- let i = <span class="cstat-no" title="statement not covered" >-1;</span>
1960
- &nbsp;
1961
- async function <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >next(</span>) {</span>
1962
- <span class="cstat-no" title="statement not covered" > i++;</span>
1963
- <span class="cstat-no" title="statement not covered" > if (i &gt;= middlewares.length) {</span>
1964
- <span class="cstat-no" title="statement not covered" > event.response.off('finish', finish);</span>
1965
- <span class="cstat-no" title="statement not covered" > resolve(undefined);</span>
1966
- <span class="cstat-no" title="statement not covered" > return;</span>
1967
- }
1968
- &nbsp;
1969
- <span class="cstat-no" title="statement not covered" > lastTimer = setTimeout(<span class="fstat-no" title="function not covered" >() =</span>&gt; {</span>
1970
- <span class="cstat-no" title="statement not covered" > logger.warning(`Middleware timed out. Increase the timeout or fix the middleware. (${middlewares[i].fn})`);</span>
1971
- <span class="cstat-no" title="statement not covered" > next();</span>
1972
- }, middlewares[i].timeout);
1973
- &nbsp;
1974
- <span class="cstat-no" title="statement not covered" > try {</span>
1975
- <span class="cstat-no" title="statement not covered" > await middlewares[i].fn(event.request, event.response, <span class="fstat-no" title="function not covered" >(e</span>rror?: any) =&gt; {</span>
1976
- <span class="cstat-no" title="statement not covered" > clearTimeout(lastTimer);</span>
1977
- <span class="cstat-no" title="statement not covered" > if (error) {</span>
1978
- <span class="cstat-no" title="statement not covered" > event.response.off('finish', finish);</span>
1979
- <span class="cstat-no" title="statement not covered" > reject(error);</span>
1980
- } else {
1981
- <span class="cstat-no" title="statement not covered" > next();</span>
1982
- }
1983
- });
1984
- } catch (error) {
1985
- <span class="cstat-no" title="statement not covered" > reject(error);</span>
1986
- }
1987
- }
1988
- &nbsp;
1989
- <span class="cstat-no" title="statement not covered" > await next();</span>
1990
- });
1991
- }
1992
- }
1993
- &nbsp;
1994
- <span class="cstat-no" title="statement not covered" > event.routeFound(resolved.routeConfig, resolved.parameters);</span>
1995
- }
1996
- } catch (error) {
1997
- <span class="cstat-no" title="statement not covered" > this.logger.error('Could not resolve request', error);</span>
1998
- <span class="cstat-no" title="statement not covered" > event.notFound();</span>
1999
- }
2000
- }
2001
- &nbsp;
2002
- @eventDispatcher.listen(httpWorkflow.onRoute, 1000)
2003
- <span class="fstat-no" title="function not covered" > onRouteForward(</span>event: typeof httpWorkflow.onRoute.event<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >) {</span></span>
2004
- <span class="cstat-no" title="statement not covered" > if (event.sent) <span class="cstat-no" title="statement not covered" >return;</span></span>
2005
- <span class="cstat-no" title="statement not covered" > if (event.hasNext()) <span class="cstat-no" title="statement not covered" >return;</span></span>
2006
- &nbsp;
2007
- <span class="cstat-no" title="statement not covered" > if (!event.route) {</span>
2008
- <span class="cstat-no" title="statement not covered" > event.next('routeNotFound', new HttpRouteNotFoundEvent(event.injectorContext, event.request, event.response));</span>
2009
- }
2010
- }
2011
- &nbsp;
2012
- @eventDispatcher.listen(httpWorkflow.onRouteNotFound, 100)
2013
- <span class="fstat-no" title="function not covered" > async </span>routeNotFound(event: typeof httpWorkflow.onRouteNotFound.event<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >): Promise&lt;void&gt; {</span></span>
2014
- <span class="cstat-no" title="statement not covered" > if (event.sent) <span class="cstat-no" title="statement not covered" >return;</span></span>
2015
- <span class="cstat-no" title="statement not covered" > if (event.hasNext()) <span class="cstat-no" title="statement not covered" >return;</span></span>
2016
- &nbsp;
2017
- <span class="cstat-no" title="statement not covered" > event.send(new HtmlResponse('Not found', 404));</span>
2018
- }
2019
- &nbsp;
2020
- @eventDispatcher.listen(httpWorkflow.onAuth, 100)
2021
- <span class="fstat-no" title="function not covered" > onAuth(</span>event: typeof httpWorkflow.onAuth.event<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >): void {</span></span>
2022
- <span class="cstat-no" title="statement not covered" > if (event.sent) <span class="cstat-no" title="statement not covered" >return;</span></span>
2023
- <span class="cstat-no" title="statement not covered" > if (event.hasNext()) <span class="cstat-no" title="statement not covered" >return;</span></span>
2024
- &nbsp;
2025
- <span class="cstat-no" title="statement not covered" > event.next('resolveParameters', new HttpResolveParametersEvent(event.injectorContext, event.request, event.response, event.parameterResolver, event.route));</span>
2026
- }
2027
- &nbsp;
2028
- @eventDispatcher.listen(httpWorkflow.onResolveParameters, 100)
2029
- <span class="fstat-no" title="function not covered" > async </span>onResolveParameters(event: typeof httpWorkflow.onResolveParameters.event<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >) {</span></span>
2030
- <span class="cstat-no" title="statement not covered" > if (event.response.finished) <span class="cstat-no" title="statement not covered" >return;</span></span>
2031
- <span class="cstat-no" title="statement not covered" > if (event.hasNext()) <span class="cstat-no" title="statement not covered" >return;</span></span>
2032
- &nbsp;
2033
- <span class="cstat-no" title="statement not covered" > try {</span>
2034
- <span class="cstat-no" title="statement not covered" > event.parameters = await event.parameterResolver(event.injectorContext);</span>
2035
- <span class="cstat-no" title="statement not covered" > event.next('controller', new HttpControllerEvent(event.injectorContext, event.request, event.response, event.parameters, event.route));</span>
2036
- } catch (error: any) {
2037
- <span class="cstat-no" title="statement not covered" > event.next('parametersFailed', new HttpControllerErrorEvent(event.injectorContext, event.request, event.response, event.route, error));</span>
2038
- }
2039
- }
2040
- &nbsp;
2041
- @eventDispatcher.listen(httpWorkflow.onAccessDenied, 100)
2042
- <span class="fstat-no" title="function not covered" > onAccessDenied(</span>event: typeof httpWorkflow.onAccessDenied.event<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >): void {</span></span>
2043
- <span class="cstat-no" title="statement not covered" > if (event.sent) <span class="cstat-no" title="statement not covered" >return;</span></span>
2044
- <span class="cstat-no" title="statement not covered" > if (event.hasNext()) <span class="cstat-no" title="statement not covered" >return;</span></span>
2045
- &nbsp;
2046
- <span class="cstat-no" title="statement not covered" > event.send(new HtmlResponse('Access denied', 403));</span>
2047
- }
2048
- &nbsp;
2049
- @eventDispatcher.listen(httpWorkflow.onController, 100)
2050
- <span class="fstat-no" title="function not covered" > async </span>onController(event: typeof httpWorkflow.onController.event<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >) {</span></span>
2051
- <span class="cstat-no" title="statement not covered" > if (event.sent) <span class="cstat-no" title="statement not covered" >return;</span></span>
2052
- <span class="cstat-no" title="statement not covered" > if (event.hasNext()) <span class="cstat-no" title="statement not covered" >return;</span></span>
2053
- &nbsp;
2054
- const controllerInstance = <span class="cstat-no" title="statement not covered" >event.injectorContext.get(event.route.action.controller, event.route.action.module);</span>
2055
- &nbsp;
2056
- const start = <span class="cstat-no" title="statement not covered" >Date.now();</span>
2057
- const frame = <span class="cstat-no" title="statement not covered" >this.stopwatch ? this.stopwatch.start(getClassName(event.route.action.controller) + '.' + event.route.action.methodName, FrameCategory.httpController) : undefined;</span>
2058
- <span class="cstat-no" title="statement not covered" > try {</span>
2059
- const method = <span class="cstat-no" title="statement not covered" >controllerInstance[event.route.action.methodName];</span>
2060
- let result = <span class="cstat-no" title="statement not covered" >await method.apply(controllerInstance, event.parameters);</span>
2061
- &nbsp;
2062
- <span class="cstat-no" title="statement not covered" > if (isElementStruct(result)) {</span>
2063
- const html = <span class="cstat-no" title="statement not covered" >await getTemplateRender()(event.injectorContext.getRootInjector(), result, this.stopwatch ? this.stopwatch : undefined);</span>
2064
- <span class="cstat-no" title="statement not covered" > result = new HtmlResponse(html, 200).header('Content-Type', 'text/html; charset=utf-8');</span>
2065
- }
2066
- const responseEvent = <span class="cstat-no" title="statement not covered" >new HttpResponseEvent(event.injectorContext, event.request, event.response, result, event.route);</span>
2067
- <span class="cstat-no" title="statement not covered" > responseEvent.controllerActionTime = Date.now() - start;</span>
2068
- <span class="cstat-no" title="statement not covered" > event.next('response', responseEvent);</span>
2069
- } catch (error: any) {
2070
- <span class="cstat-no" title="statement not covered" > if (frame) <span class="cstat-no" title="statement not covered" >frame.end();</span></span>
2071
- <span class="cstat-no" title="statement not covered" > if (error instanceof HttpAccessDeniedError) {</span>
2072
- <span class="cstat-no" title="statement not covered" > event.next('accessDenied', new HttpAccessDeniedEvent(event.injectorContext, event.request, event.response, event.route));</span>
2073
- } else {
2074
- const errorEvent = <span class="cstat-no" title="statement not covered" >new HttpControllerErrorEvent(event.injectorContext, event.request, event.response, event.route, error);</span>
2075
- <span class="cstat-no" title="statement not covered" > errorEvent.controllerActionTime = Date.now() - start;</span>
2076
- <span class="cstat-no" title="statement not covered" > event.next('controllerError', errorEvent);</span>
2077
- }
2078
- } finally {
2079
- <span class="cstat-no" title="statement not covered" > if (frame) <span class="cstat-no" title="statement not covered" >frame.end();</span></span>
2080
- }
2081
- }
2082
- &nbsp;
2083
- @eventDispatcher.listen(httpWorkflow.onParametersFailed, 100)
2084
- <span class="fstat-no" title="function not covered" > onParametersFailed(</span>event: typeof httpWorkflow.onParametersFailed.event<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >): void {</span></span>
2085
- <span class="cstat-no" title="statement not covered" > if (event.response.finished) <span class="cstat-no" title="statement not covered" >return;</span></span>
2086
- <span class="cstat-no" title="statement not covered" > if (event.sent) <span class="cstat-no" title="statement not covered" >return;</span></span>
2087
- &nbsp;
2088
- <span class="cstat-no" title="statement not covered" > if (event.error instanceof SerializationError) {</span>
2089
- <span class="cstat-no" title="statement not covered" > event.send(new JSONResponse({</span>
2090
- message: event.error.message,
2091
- errors: [{
2092
- path: event.error.path,
2093
- code: 'serialization',
2094
- message: event.error.originalMessage,
2095
- }]
2096
- }, 400).disableAutoSerializing());
2097
- } else <span class="cstat-no" title="statement not covered" >if (event.error instanceof ValidationError) {</span>
2098
- <span class="cstat-no" title="statement not covered" > event.send(new JSONResponse({</span>
2099
- message: event.error.message,
2100
- errors: event.error.errors
2101
- }, 400).disableAutoSerializing());
2102
- } else {
2103
- <span class="cstat-no" title="statement not covered" > this.logger.error('Controller parameter resolving error:', event.error);</span>
2104
- &nbsp;
2105
- <span class="cstat-no" title="statement not covered" > event.send(new HtmlResponse('Internal error', 500));</span>
2106
- }
2107
- }
2108
- &nbsp;
2109
- @eventDispatcher.listen(httpWorkflow.onControllerError, 100)
2110
- <span class="fstat-no" title="function not covered" > onControllerError(</span>event: typeof httpWorkflow.onControllerError.event<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >): void {</span></span>
2111
- <span class="cstat-no" title="statement not covered" > if (event.response.finished) <span class="cstat-no" title="statement not covered" >return;</span></span>
2112
- <span class="cstat-no" title="statement not covered" > if (event.sent) <span class="cstat-no" title="statement not covered" >return;</span></span>
2113
- &nbsp;
2114
- <span class="cstat-no" title="statement not covered" > if (event.error instanceof ValidationError) {</span>
2115
- <span class="cstat-no" title="statement not covered" > event.send(new JSONResponse({</span>
2116
- message: event.error.message,
2117
- errors: event.error.errors
2118
- }, 400).disableAutoSerializing());
2119
- <span class="cstat-no" title="statement not covered" > return;</span>
2120
- } else <span class="cstat-no" title="statement not covered" >if (event.error instanceof HttpError) {</span>
2121
- <span class="cstat-no" title="statement not covered" > event.send(new JSONResponse({</span>
2122
- message: event.error.message
2123
- }, event.error.httpCode).disableAutoSerializing());
2124
- <span class="cstat-no" title="statement not covered" > return;</span>
2125
- }
2126
- &nbsp;
2127
- <span class="cstat-no" title="statement not covered" > this.logger.error('Controller error', event.error);</span>
2128
- &nbsp;
2129
- <span class="cstat-no" title="statement not covered" > event.send(new HtmlResponse('Internal error', 500));</span>
2130
- }
2131
- &nbsp;
2132
- /**
2133
- * This happens before the result is sent.
2134
- */
2135
- @eventDispatcher.listen(httpWorkflow.onResponse, -100)
2136
- <span class="fstat-no" title="function not covered" > async </span>onResultSerialization(event: typeof httpWorkflow.onResponse.event<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >) {</span></span>
2137
- <span class="cstat-no" title="statement not covered" > if (!event.route) <span class="cstat-no" title="statement not covered" >return;</span></span>
2138
- <span class="cstat-no" title="statement not covered" > if (event.response.headersSent) <span class="cstat-no" title="statement not covered" >return;</span></span>
2139
- <span class="cstat-no" title="statement not covered" > if (event.result === undefined || event.result === null) <span class="cstat-no" title="statement not covered" >return;</span></span>
2140
- &nbsp;
2141
- <span class="cstat-no" title="statement not covered" > if (event.result instanceof HtmlResponse || event.result instanceof ServerResponse || event.result instanceof Redirect) {</span>
2142
- // don't do anything
2143
- } else <span class="cstat-no" title="statement not covered" >if (event.result instanceof JSONResponse) {</span>
2144
- const schema = <span class="cstat-no" title="statement not covered" >(event.result._statusCode &amp;&amp; event.route.getSchemaForResponse(event.result._statusCode)) || event.route.returnType;</span>
2145
- &nbsp;
2146
- <span class="cstat-no" title="statement not covered" > if (!schema || !event.result.autoSerializing) <span class="cstat-no" title="statement not covered" >return;</span></span>
2147
- &nbsp;
2148
- const serializerToUse = <span class="cstat-no" title="statement not covered" >event.route &amp;&amp; event.route.serializer ? event.route.serializer : serializer;</span>
2149
- const serialize = <span class="cstat-no" title="statement not covered" >getSerializeFunction(schema, serializerToUse.serializeRegistry);</span>
2150
- <span class="cstat-no" title="statement not covered" > event.result.json = serialize(event.result.json, event.route.serializationOptions);</span>
2151
- } else <span class="cstat-no" title="statement not covered" >if (event.route.returnType &amp;&amp; event.route.returnType.kind !== ReflectionKind.any) {</span>
2152
- const serializerToUse = <span class="cstat-no" title="statement not covered" >event.route &amp;&amp; event.route.serializer ? event.route.serializer : serializer;</span>
2153
- const serialize = <span class="cstat-no" title="statement not covered" >getSerializeFunction(event.route.returnType, serializerToUse.serializeRegistry);</span>
2154
- <span class="cstat-no" title="statement not covered" > event.result = serialize(event.result, event.route.serializationOptions);</span>
2155
- } else {
2156
- const schema = <span class="cstat-no" title="statement not covered" >event.route.getSchemaForResponse(200);</span>
2157
- <span class="cstat-no" title="statement not covered" > if (!schema) <span class="cstat-no" title="statement not covered" >return;</span></span>
2158
- &nbsp;
2159
- const serializerToUse = <span class="cstat-no" title="statement not covered" >event.route &amp;&amp; event.route.serializer ? event.route.serializer : serializer;</span>
2160
- const serialize = <span class="cstat-no" title="statement not covered" >getSerializeFunction(schema, serializerToUse.serializeRegistry);</span>
2161
- <span class="cstat-no" title="statement not covered" > event.result = serialize(event.result, event.route.serializationOptions);</span>
2162
- }
2163
- }
2164
- &nbsp;
2165
- @eventDispatcher.listen(httpWorkflow.onResponse, 100)
2166
- <span class="fstat-no" title="function not covered" > async </span>onResponse(event: typeof httpWorkflow.onResponse.event) {
2167
- <span class="cstat-no" title="statement not covered" > if (event.response.headersSent) <span class="cstat-no" title="statement not covered" >return;</span></span>
2168
- &nbsp;
2169
- <span class="cstat-no" title="statement not covered" > this.resultFormatter.handle(event.result, event);</span>
2170
- }
2171
- }
2172
- &nbsp;</pre></td></tr></table></pre>
2173
-
2174
- <div class='push'></div><!-- for sticky footer -->
2175
- </div><!-- /wrapper -->
2176
- <div class='footer quiet pad2 space-top1 center small'>
2177
- Code coverage generated by
2178
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
2179
- at Wed Mar 02 2022 07:23:06 GMT+0100 (Central European Standard Time)
2180
- </div>
2181
- </div>
2182
- <script src="../prettify.js"></script>
2183
- <script>
2184
- window.onload = function () {
2185
- prettyPrint();
2186
- };
2187
- </script>
2188
- <script src="../sorter.js"></script>
2189
- <script src="../block-navigation.js"></script>
2190
- </body>
2191
- </html>
2192
-