@chat21/chat21-web-widget 5.0.46-rc.3 → 5.0.46

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 (161) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/assets/twp/index-dev.html +16 -0
  3. package/dist/environments/real_data/widget-config-docker.json +1 -0
  4. package/dist/environments/real_data/widget-config-firebase.json +2 -2
  5. package/dist/environments/real_data/widget-config-native-mqtt.json +1 -0
  6. package/dist/main.js +1 -1
  7. package/dist/vendor.js +1 -1
  8. package/e2e/protractor.conf.js +32 -0
  9. package/package.json +1 -1
  10. package/src/app/component/conversation-detail/conversation-preview/conversation-preview.component.scss +13 -8
  11. package/src/app/utils/globals.ts +46 -26
  12. package/src/assets/twp/index-dev.html +16 -0
  13. package/src/environments/real_data/widget-config-docker.json +1 -0
  14. package/src/environments/real_data/widget-config-firebase.json +2 -2
  15. package/src/environments/real_data/widget-config-native-mqtt.json +1 -0
  16. package/coverage/widget/base.css +0 -224
  17. package/coverage/widget/block-navigation.js +0 -87
  18. package/coverage/widget/favicon.png +0 -0
  19. package/coverage/widget/index.html +0 -881
  20. package/coverage/widget/lcov.info +0 -10516
  21. package/coverage/widget/polyfills.ts.html +0 -277
  22. package/coverage/widget/prettify.css +0 -1
  23. package/coverage/widget/prettify.js +0 -2
  24. package/coverage/widget/sort-arrow-sprite.png +0 -0
  25. package/coverage/widget/sorter.js +0 -196
  26. package/coverage/widget/src/app/app.component.ts.html +0 -6328
  27. package/coverage/widget/src/app/component/conversation-detail/conversation/conversation.component.ts.html +0 -3871
  28. package/coverage/widget/src/app/component/conversation-detail/conversation/index.html +0 -116
  29. package/coverage/widget/src/app/component/conversation-detail/conversation-content/conversation-content.component.ts.html +0 -925
  30. package/coverage/widget/src/app/component/conversation-detail/conversation-content/index.html +0 -116
  31. package/coverage/widget/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.ts.html +0 -1816
  32. package/coverage/widget/src/app/component/conversation-detail/conversation-footer/index.html +0 -116
  33. package/coverage/widget/src/app/component/conversation-detail/conversation-header/conversation-header.component.ts.html +0 -811
  34. package/coverage/widget/src/app/component/conversation-detail/conversation-header/index.html +0 -116
  35. package/coverage/widget/src/app/component/conversation-detail/conversation-internal-frame/conversation-internal-frame.component.ts.html +0 -397
  36. package/coverage/widget/src/app/component/conversation-detail/conversation-internal-frame/index.html +0 -116
  37. package/coverage/widget/src/app/component/conversation-detail/conversation-preview/conversation-preview.component.ts.html +0 -991
  38. package/coverage/widget/src/app/component/conversation-detail/conversation-preview/index.html +0 -116
  39. package/coverage/widget/src/app/component/eyeeye-catcher-card/eyeeye-catcher-card.component.ts.html +0 -586
  40. package/coverage/widget/src/app/component/eyeeye-catcher-card/index.html +0 -116
  41. package/coverage/widget/src/app/component/form/form-builder/form-builder.component.ts.html +0 -664
  42. package/coverage/widget/src/app/component/form/form-builder/index.html +0 -116
  43. package/coverage/widget/src/app/component/form/inputs/form-checkbox/form-checkbox.component.ts.html +0 -208
  44. package/coverage/widget/src/app/component/form/inputs/form-checkbox/index.html +0 -116
  45. package/coverage/widget/src/app/component/form/inputs/form-label/form-label.component.ts.html +0 -157
  46. package/coverage/widget/src/app/component/form/inputs/form-label/index.html +0 -116
  47. package/coverage/widget/src/app/component/form/inputs/form-radio-button/form-radio-button.component.ts.html +0 -130
  48. package/coverage/widget/src/app/component/form/inputs/form-radio-button/index.html +0 -116
  49. package/coverage/widget/src/app/component/form/inputs/form-select/form-select.component.ts.html +0 -130
  50. package/coverage/widget/src/app/component/form/inputs/form-select/index.html +0 -116
  51. package/coverage/widget/src/app/component/form/inputs/form-text/form-text.component.ts.html +0 -301
  52. package/coverage/widget/src/app/component/form/inputs/form-text/index.html +0 -116
  53. package/coverage/widget/src/app/component/form/inputs/form-textarea/form-textarea.component.ts.html +0 -358
  54. package/coverage/widget/src/app/component/form/inputs/form-textarea/index.html +0 -116
  55. package/coverage/widget/src/app/component/form/prechat-form/index.html +0 -116
  56. package/coverage/widget/src/app/component/form/prechat-form/prechat-form.component.ts.html +0 -565
  57. package/coverage/widget/src/app/component/home/home.component.ts.html +0 -559
  58. package/coverage/widget/src/app/component/home/index.html +0 -116
  59. package/coverage/widget/src/app/component/home-conversations/home-conversations.component.ts.html +0 -985
  60. package/coverage/widget/src/app/component/home-conversations/index.html +0 -116
  61. package/coverage/widget/src/app/component/last-message/index.html +0 -116
  62. package/coverage/widget/src/app/component/last-message/last-message.component.ts.html +0 -484
  63. package/coverage/widget/src/app/component/launcher-button/index.html +0 -116
  64. package/coverage/widget/src/app/component/launcher-button/launcher-button.component.ts.html +0 -307
  65. package/coverage/widget/src/app/component/list-all-conversations/index.html +0 -116
  66. package/coverage/widget/src/app/component/list-all-conversations/list-all-conversations.component.ts.html +0 -676
  67. package/coverage/widget/src/app/component/list-conversations/index.html +0 -116
  68. package/coverage/widget/src/app/component/list-conversations/list-conversations.component.ts.html +0 -475
  69. package/coverage/widget/src/app/component/menu-options/index.html +0 -116
  70. package/coverage/widget/src/app/component/menu-options/menu-options.component.ts.html +0 -226
  71. package/coverage/widget/src/app/component/message/avatar/avatar.component.ts.html +0 -271
  72. package/coverage/widget/src/app/component/message/avatar/index.html +0 -116
  73. package/coverage/widget/src/app/component/message/bubble-message/bubble-message.component.ts.html +0 -655
  74. package/coverage/widget/src/app/component/message/bubble-message/index.html +0 -116
  75. package/coverage/widget/src/app/component/message/buttons/action-button/action-button.component.ts.html +0 -274
  76. package/coverage/widget/src/app/component/message/buttons/action-button/index.html +0 -116
  77. package/coverage/widget/src/app/component/message/buttons/link-button/index.html +0 -116
  78. package/coverage/widget/src/app/component/message/buttons/link-button/link-button.component.ts.html +0 -232
  79. package/coverage/widget/src/app/component/message/buttons/text-button/index.html +0 -116
  80. package/coverage/widget/src/app/component/message/buttons/text-button/text-button.component.ts.html +0 -235
  81. package/coverage/widget/src/app/component/message/frame/frame.component.ts.html +0 -199
  82. package/coverage/widget/src/app/component/message/frame/index.html +0 -116
  83. package/coverage/widget/src/app/component/message/html/html.component.ts.html +0 -184
  84. package/coverage/widget/src/app/component/message/html/index.html +0 -116
  85. package/coverage/widget/src/app/component/message/image/image.component.ts.html +0 -394
  86. package/coverage/widget/src/app/component/message/image/index.html +0 -116
  87. package/coverage/widget/src/app/component/message/info-message/index.html +0 -116
  88. package/coverage/widget/src/app/component/message/info-message/info-message.component.ts.html +0 -211
  89. package/coverage/widget/src/app/component/message/like-unlike/index.html +0 -116
  90. package/coverage/widget/src/app/component/message/like-unlike/like-unlike.component.ts.html +0 -151
  91. package/coverage/widget/src/app/component/message/return-receipt/index.html +0 -116
  92. package/coverage/widget/src/app/component/message/return-receipt/return-receipt.component.ts.html +0 -157
  93. package/coverage/widget/src/app/component/message/text/index.html +0 -116
  94. package/coverage/widget/src/app/component/message/text/text.component.ts.html +0 -190
  95. package/coverage/widget/src/app/component/message-attachment/index.html +0 -116
  96. package/coverage/widget/src/app/component/message-attachment/message-attachment.component.ts.html +0 -343
  97. package/coverage/widget/src/app/component/selection-department/index.html +0 -116
  98. package/coverage/widget/src/app/component/selection-department/selection-department.component.ts.html +0 -676
  99. package/coverage/widget/src/app/component/send-button/index.html +0 -116
  100. package/coverage/widget/src/app/component/send-button/send-button.component.ts.html +0 -154
  101. package/coverage/widget/src/app/component/star-rating-widget/index.html +0 -116
  102. package/coverage/widget/src/app/component/star-rating-widget/star-rating-widget.component.ts.html +0 -451
  103. package/coverage/widget/src/app/directives/html-entities-encode.pipe.ts.html +0 -136
  104. package/coverage/widget/src/app/directives/index.html +0 -146
  105. package/coverage/widget/src/app/directives/marked.pipe.ts.html +0 -166
  106. package/coverage/widget/src/app/directives/safe-html.pipe.ts.html +0 -136
  107. package/coverage/widget/src/app/index.html +0 -116
  108. package/coverage/widget/src/app/providers/app-config.service.ts.html +0 -247
  109. package/coverage/widget/src/app/providers/global-settings.service.ts.html +0 -5698
  110. package/coverage/widget/src/app/providers/index.html +0 -206
  111. package/coverage/widget/src/app/providers/settings-saver.service.ts.html +0 -253
  112. package/coverage/widget/src/app/providers/star-rating-widget.service.ts.html +0 -385
  113. package/coverage/widget/src/app/providers/storage.service.ts.html +0 -745
  114. package/coverage/widget/src/app/providers/translator.service.ts.html +0 -1498
  115. package/coverage/widget/src/app/providers/waiting.service.ts.html +0 -178
  116. package/coverage/widget/src/app/utils/constants.ts.html +0 -304
  117. package/coverage/widget/src/app/utils/globals.ts.html +0 -1939
  118. package/coverage/widget/src/app/utils/index.html +0 -146
  119. package/coverage/widget/src/app/utils/utils.ts.html +0 -1240
  120. package/coverage/widget/src/chat21-core/models/conversation.ts.html +0 -160
  121. package/coverage/widget/src/chat21-core/models/index.html +0 -146
  122. package/coverage/widget/src/chat21-core/models/upload.ts.html +0 -118
  123. package/coverage/widget/src/chat21-core/models/user.ts.html +0 -133
  124. package/coverage/widget/src/chat21-core/providers/abstract/app-storage.service.ts.html +0 -142
  125. package/coverage/widget/src/chat21-core/providers/abstract/archivedconversations-handler.service.ts.html +0 -184
  126. package/coverage/widget/src/chat21-core/providers/abstract/conversation-handler-builder.service.ts.html +0 -121
  127. package/coverage/widget/src/chat21-core/providers/abstract/conversation-handler.service.ts.html +0 -235
  128. package/coverage/widget/src/chat21-core/providers/abstract/conversations-handler.service.ts.html +0 -208
  129. package/coverage/widget/src/chat21-core/providers/abstract/groups-handler.service.ts.html +0 -160
  130. package/coverage/widget/src/chat21-core/providers/abstract/image-repo.service.ts.html +0 -169
  131. package/coverage/widget/src/chat21-core/providers/abstract/index.html +0 -296
  132. package/coverage/widget/src/chat21-core/providers/abstract/logger.service.ts.html +0 -136
  133. package/coverage/widget/src/chat21-core/providers/abstract/messagingAuth.service.ts.html +0 -238
  134. package/coverage/widget/src/chat21-core/providers/abstract/notifications.service.ts.html +0 -172
  135. package/coverage/widget/src/chat21-core/providers/abstract/presence.service.ts.html +0 -190
  136. package/coverage/widget/src/chat21-core/providers/abstract/typing.service.ts.html +0 -187
  137. package/coverage/widget/src/chat21-core/providers/abstract/upload.service.ts.html +0 -178
  138. package/coverage/widget/src/chat21-core/providers/chat-manager.ts.html +0 -895
  139. package/coverage/widget/src/chat21-core/providers/custom-translate.service.ts.html +0 -223
  140. package/coverage/widget/src/chat21-core/providers/index.html +0 -131
  141. package/coverage/widget/src/chat21-core/providers/logger/customLogger.ts.html +0 -265
  142. package/coverage/widget/src/chat21-core/providers/logger/index.html +0 -131
  143. package/coverage/widget/src/chat21-core/providers/logger/loggerInstance.ts.html +0 -142
  144. package/coverage/widget/src/chat21-core/providers/tiledesk/index.html +0 -131
  145. package/coverage/widget/src/chat21-core/providers/tiledesk/tiledesk-auth.service.ts.html +0 -655
  146. package/coverage/widget/src/chat21-core/providers/tiledesk/tiledesk-requests.service.ts.html +0 -241
  147. package/coverage/widget/src/chat21-core/utils/constants.ts.html +0 -409
  148. package/coverage/widget/src/chat21-core/utils/index.html +0 -176
  149. package/coverage/widget/src/chat21-core/utils/triggerHandler.ts.html +0 -1069
  150. package/coverage/widget/src/chat21-core/utils/user-typing/index.html +0 -116
  151. package/coverage/widget/src/chat21-core/utils/user-typing/user-typing.component.ts.html +0 -184
  152. package/coverage/widget/src/chat21-core/utils/utils-message.ts.html +0 -637
  153. package/coverage/widget/src/chat21-core/utils/utils-user.ts.html +0 -229
  154. package/coverage/widget/src/chat21-core/utils/utils.ts.html +0 -2221
  155. package/coverage/widget/src/environments/environment.ts.html +0 -205
  156. package/coverage/widget/src/environments/index.html +0 -116
  157. package/coverage/widget/src/index.html +0 -131
  158. package/coverage/widget/src/models/index.html +0 -116
  159. package/coverage/widget/src/models/project.ts.html +0 -319
  160. package/coverage/widget/src/polyfills.ts.html +0 -277
  161. package/coverage/widget/src/test.ts.html +0 -142
@@ -1,1816 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/app/component/conversation-detail/conversation-footer/conversation-footer.component.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/app/component/conversation-detail/conversation-footer</a> conversation-footer.component.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">16.98% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>45/265</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/118</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">10.71% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>3/28</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">17.86% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>45/252</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input oninput="onInput()" type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line low'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a>
323
- <a name='L258'></a><a href='#L258'>258</a>
324
- <a name='L259'></a><a href='#L259'>259</a>
325
- <a name='L260'></a><a href='#L260'>260</a>
326
- <a name='L261'></a><a href='#L261'>261</a>
327
- <a name='L262'></a><a href='#L262'>262</a>
328
- <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a>
331
- <a name='L266'></a><a href='#L266'>266</a>
332
- <a name='L267'></a><a href='#L267'>267</a>
333
- <a name='L268'></a><a href='#L268'>268</a>
334
- <a name='L269'></a><a href='#L269'>269</a>
335
- <a name='L270'></a><a href='#L270'>270</a>
336
- <a name='L271'></a><a href='#L271'>271</a>
337
- <a name='L272'></a><a href='#L272'>272</a>
338
- <a name='L273'></a><a href='#L273'>273</a>
339
- <a name='L274'></a><a href='#L274'>274</a>
340
- <a name='L275'></a><a href='#L275'>275</a>
341
- <a name='L276'></a><a href='#L276'>276</a>
342
- <a name='L277'></a><a href='#L277'>277</a>
343
- <a name='L278'></a><a href='#L278'>278</a>
344
- <a name='L279'></a><a href='#L279'>279</a>
345
- <a name='L280'></a><a href='#L280'>280</a>
346
- <a name='L281'></a><a href='#L281'>281</a>
347
- <a name='L282'></a><a href='#L282'>282</a>
348
- <a name='L283'></a><a href='#L283'>283</a>
349
- <a name='L284'></a><a href='#L284'>284</a>
350
- <a name='L285'></a><a href='#L285'>285</a>
351
- <a name='L286'></a><a href='#L286'>286</a>
352
- <a name='L287'></a><a href='#L287'>287</a>
353
- <a name='L288'></a><a href='#L288'>288</a>
354
- <a name='L289'></a><a href='#L289'>289</a>
355
- <a name='L290'></a><a href='#L290'>290</a>
356
- <a name='L291'></a><a href='#L291'>291</a>
357
- <a name='L292'></a><a href='#L292'>292</a>
358
- <a name='L293'></a><a href='#L293'>293</a>
359
- <a name='L294'></a><a href='#L294'>294</a>
360
- <a name='L295'></a><a href='#L295'>295</a>
361
- <a name='L296'></a><a href='#L296'>296</a>
362
- <a name='L297'></a><a href='#L297'>297</a>
363
- <a name='L298'></a><a href='#L298'>298</a>
364
- <a name='L299'></a><a href='#L299'>299</a>
365
- <a name='L300'></a><a href='#L300'>300</a>
366
- <a name='L301'></a><a href='#L301'>301</a>
367
- <a name='L302'></a><a href='#L302'>302</a>
368
- <a name='L303'></a><a href='#L303'>303</a>
369
- <a name='L304'></a><a href='#L304'>304</a>
370
- <a name='L305'></a><a href='#L305'>305</a>
371
- <a name='L306'></a><a href='#L306'>306</a>
372
- <a name='L307'></a><a href='#L307'>307</a>
373
- <a name='L308'></a><a href='#L308'>308</a>
374
- <a name='L309'></a><a href='#L309'>309</a>
375
- <a name='L310'></a><a href='#L310'>310</a>
376
- <a name='L311'></a><a href='#L311'>311</a>
377
- <a name='L312'></a><a href='#L312'>312</a>
378
- <a name='L313'></a><a href='#L313'>313</a>
379
- <a name='L314'></a><a href='#L314'>314</a>
380
- <a name='L315'></a><a href='#L315'>315</a>
381
- <a name='L316'></a><a href='#L316'>316</a>
382
- <a name='L317'></a><a href='#L317'>317</a>
383
- <a name='L318'></a><a href='#L318'>318</a>
384
- <a name='L319'></a><a href='#L319'>319</a>
385
- <a name='L320'></a><a href='#L320'>320</a>
386
- <a name='L321'></a><a href='#L321'>321</a>
387
- <a name='L322'></a><a href='#L322'>322</a>
388
- <a name='L323'></a><a href='#L323'>323</a>
389
- <a name='L324'></a><a href='#L324'>324</a>
390
- <a name='L325'></a><a href='#L325'>325</a>
391
- <a name='L326'></a><a href='#L326'>326</a>
392
- <a name='L327'></a><a href='#L327'>327</a>
393
- <a name='L328'></a><a href='#L328'>328</a>
394
- <a name='L329'></a><a href='#L329'>329</a>
395
- <a name='L330'></a><a href='#L330'>330</a>
396
- <a name='L331'></a><a href='#L331'>331</a>
397
- <a name='L332'></a><a href='#L332'>332</a>
398
- <a name='L333'></a><a href='#L333'>333</a>
399
- <a name='L334'></a><a href='#L334'>334</a>
400
- <a name='L335'></a><a href='#L335'>335</a>
401
- <a name='L336'></a><a href='#L336'>336</a>
402
- <a name='L337'></a><a href='#L337'>337</a>
403
- <a name='L338'></a><a href='#L338'>338</a>
404
- <a name='L339'></a><a href='#L339'>339</a>
405
- <a name='L340'></a><a href='#L340'>340</a>
406
- <a name='L341'></a><a href='#L341'>341</a>
407
- <a name='L342'></a><a href='#L342'>342</a>
408
- <a name='L343'></a><a href='#L343'>343</a>
409
- <a name='L344'></a><a href='#L344'>344</a>
410
- <a name='L345'></a><a href='#L345'>345</a>
411
- <a name='L346'></a><a href='#L346'>346</a>
412
- <a name='L347'></a><a href='#L347'>347</a>
413
- <a name='L348'></a><a href='#L348'>348</a>
414
- <a name='L349'></a><a href='#L349'>349</a>
415
- <a name='L350'></a><a href='#L350'>350</a>
416
- <a name='L351'></a><a href='#L351'>351</a>
417
- <a name='L352'></a><a href='#L352'>352</a>
418
- <a name='L353'></a><a href='#L353'>353</a>
419
- <a name='L354'></a><a href='#L354'>354</a>
420
- <a name='L355'></a><a href='#L355'>355</a>
421
- <a name='L356'></a><a href='#L356'>356</a>
422
- <a name='L357'></a><a href='#L357'>357</a>
423
- <a name='L358'></a><a href='#L358'>358</a>
424
- <a name='L359'></a><a href='#L359'>359</a>
425
- <a name='L360'></a><a href='#L360'>360</a>
426
- <a name='L361'></a><a href='#L361'>361</a>
427
- <a name='L362'></a><a href='#L362'>362</a>
428
- <a name='L363'></a><a href='#L363'>363</a>
429
- <a name='L364'></a><a href='#L364'>364</a>
430
- <a name='L365'></a><a href='#L365'>365</a>
431
- <a name='L366'></a><a href='#L366'>366</a>
432
- <a name='L367'></a><a href='#L367'>367</a>
433
- <a name='L368'></a><a href='#L368'>368</a>
434
- <a name='L369'></a><a href='#L369'>369</a>
435
- <a name='L370'></a><a href='#L370'>370</a>
436
- <a name='L371'></a><a href='#L371'>371</a>
437
- <a name='L372'></a><a href='#L372'>372</a>
438
- <a name='L373'></a><a href='#L373'>373</a>
439
- <a name='L374'></a><a href='#L374'>374</a>
440
- <a name='L375'></a><a href='#L375'>375</a>
441
- <a name='L376'></a><a href='#L376'>376</a>
442
- <a name='L377'></a><a href='#L377'>377</a>
443
- <a name='L378'></a><a href='#L378'>378</a>
444
- <a name='L379'></a><a href='#L379'>379</a>
445
- <a name='L380'></a><a href='#L380'>380</a>
446
- <a name='L381'></a><a href='#L381'>381</a>
447
- <a name='L382'></a><a href='#L382'>382</a>
448
- <a name='L383'></a><a href='#L383'>383</a>
449
- <a name='L384'></a><a href='#L384'>384</a>
450
- <a name='L385'></a><a href='#L385'>385</a>
451
- <a name='L386'></a><a href='#L386'>386</a>
452
- <a name='L387'></a><a href='#L387'>387</a>
453
- <a name='L388'></a><a href='#L388'>388</a>
454
- <a name='L389'></a><a href='#L389'>389</a>
455
- <a name='L390'></a><a href='#L390'>390</a>
456
- <a name='L391'></a><a href='#L391'>391</a>
457
- <a name='L392'></a><a href='#L392'>392</a>
458
- <a name='L393'></a><a href='#L393'>393</a>
459
- <a name='L394'></a><a href='#L394'>394</a>
460
- <a name='L395'></a><a href='#L395'>395</a>
461
- <a name='L396'></a><a href='#L396'>396</a>
462
- <a name='L397'></a><a href='#L397'>397</a>
463
- <a name='L398'></a><a href='#L398'>398</a>
464
- <a name='L399'></a><a href='#L399'>399</a>
465
- <a name='L400'></a><a href='#L400'>400</a>
466
- <a name='L401'></a><a href='#L401'>401</a>
467
- <a name='L402'></a><a href='#L402'>402</a>
468
- <a name='L403'></a><a href='#L403'>403</a>
469
- <a name='L404'></a><a href='#L404'>404</a>
470
- <a name='L405'></a><a href='#L405'>405</a>
471
- <a name='L406'></a><a href='#L406'>406</a>
472
- <a name='L407'></a><a href='#L407'>407</a>
473
- <a name='L408'></a><a href='#L408'>408</a>
474
- <a name='L409'></a><a href='#L409'>409</a>
475
- <a name='L410'></a><a href='#L410'>410</a>
476
- <a name='L411'></a><a href='#L411'>411</a>
477
- <a name='L412'></a><a href='#L412'>412</a>
478
- <a name='L413'></a><a href='#L413'>413</a>
479
- <a name='L414'></a><a href='#L414'>414</a>
480
- <a name='L415'></a><a href='#L415'>415</a>
481
- <a name='L416'></a><a href='#L416'>416</a>
482
- <a name='L417'></a><a href='#L417'>417</a>
483
- <a name='L418'></a><a href='#L418'>418</a>
484
- <a name='L419'></a><a href='#L419'>419</a>
485
- <a name='L420'></a><a href='#L420'>420</a>
486
- <a name='L421'></a><a href='#L421'>421</a>
487
- <a name='L422'></a><a href='#L422'>422</a>
488
- <a name='L423'></a><a href='#L423'>423</a>
489
- <a name='L424'></a><a href='#L424'>424</a>
490
- <a name='L425'></a><a href='#L425'>425</a>
491
- <a name='L426'></a><a href='#L426'>426</a>
492
- <a name='L427'></a><a href='#L427'>427</a>
493
- <a name='L428'></a><a href='#L428'>428</a>
494
- <a name='L429'></a><a href='#L429'>429</a>
495
- <a name='L430'></a><a href='#L430'>430</a>
496
- <a name='L431'></a><a href='#L431'>431</a>
497
- <a name='L432'></a><a href='#L432'>432</a>
498
- <a name='L433'></a><a href='#L433'>433</a>
499
- <a name='L434'></a><a href='#L434'>434</a>
500
- <a name='L435'></a><a href='#L435'>435</a>
501
- <a name='L436'></a><a href='#L436'>436</a>
502
- <a name='L437'></a><a href='#L437'>437</a>
503
- <a name='L438'></a><a href='#L438'>438</a>
504
- <a name='L439'></a><a href='#L439'>439</a>
505
- <a name='L440'></a><a href='#L440'>440</a>
506
- <a name='L441'></a><a href='#L441'>441</a>
507
- <a name='L442'></a><a href='#L442'>442</a>
508
- <a name='L443'></a><a href='#L443'>443</a>
509
- <a name='L444'></a><a href='#L444'>444</a>
510
- <a name='L445'></a><a href='#L445'>445</a>
511
- <a name='L446'></a><a href='#L446'>446</a>
512
- <a name='L447'></a><a href='#L447'>447</a>
513
- <a name='L448'></a><a href='#L448'>448</a>
514
- <a name='L449'></a><a href='#L449'>449</a>
515
- <a name='L450'></a><a href='#L450'>450</a>
516
- <a name='L451'></a><a href='#L451'>451</a>
517
- <a name='L452'></a><a href='#L452'>452</a>
518
- <a name='L453'></a><a href='#L453'>453</a>
519
- <a name='L454'></a><a href='#L454'>454</a>
520
- <a name='L455'></a><a href='#L455'>455</a>
521
- <a name='L456'></a><a href='#L456'>456</a>
522
- <a name='L457'></a><a href='#L457'>457</a>
523
- <a name='L458'></a><a href='#L458'>458</a>
524
- <a name='L459'></a><a href='#L459'>459</a>
525
- <a name='L460'></a><a href='#L460'>460</a>
526
- <a name='L461'></a><a href='#L461'>461</a>
527
- <a name='L462'></a><a href='#L462'>462</a>
528
- <a name='L463'></a><a href='#L463'>463</a>
529
- <a name='L464'></a><a href='#L464'>464</a>
530
- <a name='L465'></a><a href='#L465'>465</a>
531
- <a name='L466'></a><a href='#L466'>466</a>
532
- <a name='L467'></a><a href='#L467'>467</a>
533
- <a name='L468'></a><a href='#L468'>468</a>
534
- <a name='L469'></a><a href='#L469'>469</a>
535
- <a name='L470'></a><a href='#L470'>470</a>
536
- <a name='L471'></a><a href='#L471'>471</a>
537
- <a name='L472'></a><a href='#L472'>472</a>
538
- <a name='L473'></a><a href='#L473'>473</a>
539
- <a name='L474'></a><a href='#L474'>474</a>
540
- <a name='L475'></a><a href='#L475'>475</a>
541
- <a name='L476'></a><a href='#L476'>476</a>
542
- <a name='L477'></a><a href='#L477'>477</a>
543
- <a name='L478'></a><a href='#L478'>478</a>
544
- <a name='L479'></a><a href='#L479'>479</a>
545
- <a name='L480'></a><a href='#L480'>480</a>
546
- <a name='L481'></a><a href='#L481'>481</a>
547
- <a name='L482'></a><a href='#L482'>482</a>
548
- <a name='L483'></a><a href='#L483'>483</a>
549
- <a name='L484'></a><a href='#L484'>484</a>
550
- <a name='L485'></a><a href='#L485'>485</a>
551
- <a name='L486'></a><a href='#L486'>486</a>
552
- <a name='L487'></a><a href='#L487'>487</a>
553
- <a name='L488'></a><a href='#L488'>488</a>
554
- <a name='L489'></a><a href='#L489'>489</a>
555
- <a name='L490'></a><a href='#L490'>490</a>
556
- <a name='L491'></a><a href='#L491'>491</a>
557
- <a name='L492'></a><a href='#L492'>492</a>
558
- <a name='L493'></a><a href='#L493'>493</a>
559
- <a name='L494'></a><a href='#L494'>494</a>
560
- <a name='L495'></a><a href='#L495'>495</a>
561
- <a name='L496'></a><a href='#L496'>496</a>
562
- <a name='L497'></a><a href='#L497'>497</a>
563
- <a name='L498'></a><a href='#L498'>498</a>
564
- <a name='L499'></a><a href='#L499'>499</a>
565
- <a name='L500'></a><a href='#L500'>500</a>
566
- <a name='L501'></a><a href='#L501'>501</a>
567
- <a name='L502'></a><a href='#L502'>502</a>
568
- <a name='L503'></a><a href='#L503'>503</a>
569
- <a name='L504'></a><a href='#L504'>504</a>
570
- <a name='L505'></a><a href='#L505'>505</a>
571
- <a name='L506'></a><a href='#L506'>506</a>
572
- <a name='L507'></a><a href='#L507'>507</a>
573
- <a name='L508'></a><a href='#L508'>508</a>
574
- <a name='L509'></a><a href='#L509'>509</a>
575
- <a name='L510'></a><a href='#L510'>510</a>
576
- <a name='L511'></a><a href='#L511'>511</a>
577
- <a name='L512'></a><a href='#L512'>512</a>
578
- <a name='L513'></a><a href='#L513'>513</a>
579
- <a name='L514'></a><a href='#L514'>514</a>
580
- <a name='L515'></a><a href='#L515'>515</a>
581
- <a name='L516'></a><a href='#L516'>516</a>
582
- <a name='L517'></a><a href='#L517'>517</a>
583
- <a name='L518'></a><a href='#L518'>518</a>
584
- <a name='L519'></a><a href='#L519'>519</a>
585
- <a name='L520'></a><a href='#L520'>520</a>
586
- <a name='L521'></a><a href='#L521'>521</a>
587
- <a name='L522'></a><a href='#L522'>522</a>
588
- <a name='L523'></a><a href='#L523'>523</a>
589
- <a name='L524'></a><a href='#L524'>524</a>
590
- <a name='L525'></a><a href='#L525'>525</a>
591
- <a name='L526'></a><a href='#L526'>526</a>
592
- <a name='L527'></a><a href='#L527'>527</a>
593
- <a name='L528'></a><a href='#L528'>528</a>
594
- <a name='L529'></a><a href='#L529'>529</a>
595
- <a name='L530'></a><a href='#L530'>530</a>
596
- <a name='L531'></a><a href='#L531'>531</a>
597
- <a name='L532'></a><a href='#L532'>532</a>
598
- <a name='L533'></a><a href='#L533'>533</a>
599
- <a name='L534'></a><a href='#L534'>534</a>
600
- <a name='L535'></a><a href='#L535'>535</a>
601
- <a name='L536'></a><a href='#L536'>536</a>
602
- <a name='L537'></a><a href='#L537'>537</a>
603
- <a name='L538'></a><a href='#L538'>538</a>
604
- <a name='L539'></a><a href='#L539'>539</a>
605
- <a name='L540'></a><a href='#L540'>540</a>
606
- <a name='L541'></a><a href='#L541'>541</a>
607
- <a name='L542'></a><a href='#L542'>542</a>
608
- <a name='L543'></a><a href='#L543'>543</a>
609
- <a name='L544'></a><a href='#L544'>544</a>
610
- <a name='L545'></a><a href='#L545'>545</a>
611
- <a name='L546'></a><a href='#L546'>546</a>
612
- <a name='L547'></a><a href='#L547'>547</a>
613
- <a name='L548'></a><a href='#L548'>548</a>
614
- <a name='L549'></a><a href='#L549'>549</a>
615
- <a name='L550'></a><a href='#L550'>550</a>
616
- <a name='L551'></a><a href='#L551'>551</a>
617
- <a name='L552'></a><a href='#L552'>552</a>
618
- <a name='L553'></a><a href='#L553'>553</a>
619
- <a name='L554'></a><a href='#L554'>554</a>
620
- <a name='L555'></a><a href='#L555'>555</a>
621
- <a name='L556'></a><a href='#L556'>556</a>
622
- <a name='L557'></a><a href='#L557'>557</a>
623
- <a name='L558'></a><a href='#L558'>558</a>
624
- <a name='L559'></a><a href='#L559'>559</a>
625
- <a name='L560'></a><a href='#L560'>560</a>
626
- <a name='L561'></a><a href='#L561'>561</a>
627
- <a name='L562'></a><a href='#L562'>562</a>
628
- <a name='L563'></a><a href='#L563'>563</a>
629
- <a name='L564'></a><a href='#L564'>564</a>
630
- <a name='L565'></a><a href='#L565'>565</a>
631
- <a name='L566'></a><a href='#L566'>566</a>
632
- <a name='L567'></a><a href='#L567'>567</a>
633
- <a name='L568'></a><a href='#L568'>568</a>
634
- <a name='L569'></a><a href='#L569'>569</a>
635
- <a name='L570'></a><a href='#L570'>570</a>
636
- <a name='L571'></a><a href='#L571'>571</a>
637
- <a name='L572'></a><a href='#L572'>572</a>
638
- <a name='L573'></a><a href='#L573'>573</a>
639
- <a name='L574'></a><a href='#L574'>574</a>
640
- <a name='L575'></a><a href='#L575'>575</a>
641
- <a name='L576'></a><a href='#L576'>576</a>
642
- <a name='L577'></a><a href='#L577'>577</a>
643
- <a name='L578'></a><a href='#L578'>578</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
644
- <span class="cline-any cline-neutral">&nbsp;</span>
645
- <span class="cline-any cline-neutral">&nbsp;</span>
646
- <span class="cline-any cline-neutral">&nbsp;</span>
647
- <span class="cline-any cline-neutral">&nbsp;</span>
648
- <span class="cline-any cline-neutral">&nbsp;</span>
649
- <span class="cline-any cline-neutral">&nbsp;</span>
650
- <span class="cline-any cline-neutral">&nbsp;</span>
651
- <span class="cline-any cline-neutral">&nbsp;</span>
652
- <span class="cline-any cline-neutral">&nbsp;</span>
653
- <span class="cline-any cline-neutral">&nbsp;</span>
654
- <span class="cline-any cline-neutral">&nbsp;</span>
655
- <span class="cline-any cline-neutral">&nbsp;</span>
656
- <span class="cline-any cline-neutral">&nbsp;</span>
657
- <span class="cline-any cline-neutral">&nbsp;</span>
658
- <span class="cline-any cline-neutral">&nbsp;</span>
659
- <span class="cline-any cline-neutral">&nbsp;</span>
660
- <span class="cline-any cline-neutral">&nbsp;</span>
661
- <span class="cline-any cline-yes">1x</span>
662
- <span class="cline-any cline-neutral">&nbsp;</span>
663
- <span class="cline-any cline-neutral">&nbsp;</span>
664
- <span class="cline-any cline-neutral">&nbsp;</span>
665
- <span class="cline-any cline-neutral">&nbsp;</span>
666
- <span class="cline-any cline-neutral">&nbsp;</span>
667
- <span class="cline-any cline-neutral">&nbsp;</span>
668
- <span class="cline-any cline-neutral">&nbsp;</span>
669
- <span class="cline-any cline-neutral">&nbsp;</span>
670
- <span class="cline-any cline-neutral">&nbsp;</span>
671
- <span class="cline-any cline-neutral">&nbsp;</span>
672
- <span class="cline-any cline-neutral">&nbsp;</span>
673
- <span class="cline-any cline-neutral">&nbsp;</span>
674
- <span class="cline-any cline-neutral">&nbsp;</span>
675
- <span class="cline-any cline-neutral">&nbsp;</span>
676
- <span class="cline-any cline-neutral">&nbsp;</span>
677
- <span class="cline-any cline-neutral">&nbsp;</span>
678
- <span class="cline-any cline-neutral">&nbsp;</span>
679
- <span class="cline-any cline-neutral">&nbsp;</span>
680
- <span class="cline-any cline-neutral">&nbsp;</span>
681
- <span class="cline-any cline-neutral">&nbsp;</span>
682
- <span class="cline-any cline-yes">6x</span>
683
- <span class="cline-any cline-yes">6x</span>
684
- <span class="cline-any cline-yes">6x</span>
685
- <span class="cline-any cline-yes">6x</span>
686
- <span class="cline-any cline-yes">6x</span>
687
- <span class="cline-any cline-yes">6x</span>
688
- <span class="cline-any cline-yes">6x</span>
689
- <span class="cline-any cline-neutral">&nbsp;</span>
690
- <span class="cline-any cline-neutral">&nbsp;</span>
691
- <span class="cline-any cline-neutral">&nbsp;</span>
692
- <span class="cline-any cline-neutral">&nbsp;</span>
693
- <span class="cline-any cline-neutral">&nbsp;</span>
694
- <span class="cline-any cline-yes">6x</span>
695
- <span class="cline-any cline-yes">6x</span>
696
- <span class="cline-any cline-yes">6x</span>
697
- <span class="cline-any cline-yes">6x</span>
698
- <span class="cline-any cline-neutral">&nbsp;</span>
699
- <span class="cline-any cline-neutral">&nbsp;</span>
700
- <span class="cline-any cline-neutral">&nbsp;</span>
701
- <span class="cline-any cline-neutral">&nbsp;</span>
702
- <span class="cline-any cline-neutral">&nbsp;</span>
703
- <span class="cline-any cline-neutral">&nbsp;</span>
704
- <span class="cline-any cline-yes">6x</span>
705
- <span class="cline-any cline-yes">6x</span>
706
- <span class="cline-any cline-neutral">&nbsp;</span>
707
- <span class="cline-any cline-neutral">&nbsp;</span>
708
- <span class="cline-any cline-neutral">&nbsp;</span>
709
- <span class="cline-any cline-neutral">&nbsp;</span>
710
- <span class="cline-any cline-neutral">&nbsp;</span>
711
- <span class="cline-any cline-neutral">&nbsp;</span>
712
- <span class="cline-any cline-neutral">&nbsp;</span>
713
- <span class="cline-any cline-neutral">&nbsp;</span>
714
- <span class="cline-any cline-yes">6x</span>
715
- <span class="cline-any cline-yes">6x</span>
716
- <span class="cline-any cline-yes">6x</span>
717
- <span class="cline-any cline-yes">6x</span>
718
- <span class="cline-any cline-yes">6x</span>
719
- <span class="cline-any cline-yes">6x</span>
720
- <span class="cline-any cline-neutral">&nbsp;</span>
721
- <span class="cline-any cline-yes">1x</span>
722
- <span class="cline-any cline-neutral">&nbsp;</span>
723
- <span class="cline-any cline-neutral">&nbsp;</span>
724
- <span class="cline-any cline-yes">1x</span>
725
- <span class="cline-any cline-no">&nbsp;</span>
726
- <span class="cline-any cline-no">&nbsp;</span>
727
- <span class="cline-any cline-neutral">&nbsp;</span>
728
- <span class="cline-any cline-no">&nbsp;</span>
729
- <span class="cline-any cline-no">&nbsp;</span>
730
- <span class="cline-any cline-neutral">&nbsp;</span>
731
- <span class="cline-any cline-neutral">&nbsp;</span>
732
- <span class="cline-any cline-neutral">&nbsp;</span>
733
- <span class="cline-any cline-yes">1x</span>
734
- <span class="cline-any cline-yes">6x</span>
735
- <span class="cline-any cline-neutral">&nbsp;</span>
736
- <span class="cline-any cline-yes">6x</span>
737
- <span class="cline-any cline-neutral">&nbsp;</span>
738
- <span class="cline-any cline-neutral">&nbsp;</span>
739
- <span class="cline-any cline-neutral">&nbsp;</span>
740
- <span class="cline-any cline-neutral">&nbsp;</span>
741
- <span class="cline-any cline-neutral">&nbsp;</span>
742
- <span class="cline-any cline-neutral">&nbsp;</span>
743
- <span class="cline-any cline-yes">1x</span>
744
- <span class="cline-any cline-no">&nbsp;</span>
745
- <span class="cline-any cline-neutral">&nbsp;</span>
746
- <span class="cline-any cline-no">&nbsp;</span>
747
- <span class="cline-any cline-no">&nbsp;</span>
748
- <span class="cline-any cline-no">&nbsp;</span>
749
- <span class="cline-any cline-neutral">&nbsp;</span>
750
- <span class="cline-any cline-no">&nbsp;</span>
751
- <span class="cline-any cline-no">&nbsp;</span>
752
- <span class="cline-any cline-neutral">&nbsp;</span>
753
- <span class="cline-any cline-no">&nbsp;</span>
754
- <span class="cline-any cline-neutral">&nbsp;</span>
755
- <span class="cline-any cline-no">&nbsp;</span>
756
- <span class="cline-any cline-no">&nbsp;</span>
757
- <span class="cline-any cline-no">&nbsp;</span>
758
- <span class="cline-any cline-no">&nbsp;</span>
759
- <span class="cline-any cline-neutral">&nbsp;</span>
760
- <span class="cline-any cline-no">&nbsp;</span>
761
- <span class="cline-any cline-neutral">&nbsp;</span>
762
- <span class="cline-any cline-neutral">&nbsp;</span>
763
- <span class="cline-any cline-no">&nbsp;</span>
764
- <span class="cline-any cline-no">&nbsp;</span>
765
- <span class="cline-any cline-no">&nbsp;</span>
766
- <span class="cline-any cline-no">&nbsp;</span>
767
- <span class="cline-any cline-no">&nbsp;</span>
768
- <span class="cline-any cline-no">&nbsp;</span>
769
- <span class="cline-any cline-no">&nbsp;</span>
770
- <span class="cline-any cline-no">&nbsp;</span>
771
- <span class="cline-any cline-no">&nbsp;</span>
772
- <span class="cline-any cline-neutral">&nbsp;</span>
773
- <span class="cline-any cline-no">&nbsp;</span>
774
- <span class="cline-any cline-no">&nbsp;</span>
775
- <span class="cline-any cline-no">&nbsp;</span>
776
- <span class="cline-any cline-no">&nbsp;</span>
777
- <span class="cline-any cline-no">&nbsp;</span>
778
- <span class="cline-any cline-no">&nbsp;</span>
779
- <span class="cline-any cline-no">&nbsp;</span>
780
- <span class="cline-any cline-neutral">&nbsp;</span>
781
- <span class="cline-any cline-no">&nbsp;</span>
782
- <span class="cline-any cline-no">&nbsp;</span>
783
- <span class="cline-any cline-no">&nbsp;</span>
784
- <span class="cline-any cline-neutral">&nbsp;</span>
785
- <span class="cline-any cline-no">&nbsp;</span>
786
- <span class="cline-any cline-neutral">&nbsp;</span>
787
- <span class="cline-any cline-neutral">&nbsp;</span>
788
- <span class="cline-any cline-no">&nbsp;</span>
789
- <span class="cline-any cline-no">&nbsp;</span>
790
- <span class="cline-any cline-neutral">&nbsp;</span>
791
- <span class="cline-any cline-neutral">&nbsp;</span>
792
- <span class="cline-any cline-neutral">&nbsp;</span>
793
- <span class="cline-any cline-neutral">&nbsp;</span>
794
- <span class="cline-any cline-no">&nbsp;</span>
795
- <span class="cline-any cline-no">&nbsp;</span>
796
- <span class="cline-any cline-no">&nbsp;</span>
797
- <span class="cline-any cline-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-neutral">&nbsp;</span>
802
- <span class="cline-any cline-no">&nbsp;</span>
803
- <span class="cline-any cline-no">&nbsp;</span>
804
- <span class="cline-any cline-no">&nbsp;</span>
805
- <span class="cline-any cline-neutral">&nbsp;</span>
806
- <span class="cline-any cline-neutral">&nbsp;</span>
807
- <span class="cline-any cline-neutral">&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-yes">1x</span>
812
- <span class="cline-any cline-no">&nbsp;</span>
813
- <span class="cline-any cline-neutral">&nbsp;</span>
814
- <span class="cline-any cline-no">&nbsp;</span>
815
- <span class="cline-any cline-no">&nbsp;</span>
816
- <span class="cline-any cline-no">&nbsp;</span>
817
- <span class="cline-any cline-no">&nbsp;</span>
818
- <span class="cline-any cline-no">&nbsp;</span>
819
- <span class="cline-any cline-no">&nbsp;</span>
820
- <span class="cline-any cline-no">&nbsp;</span>
821
- <span class="cline-any cline-no">&nbsp;</span>
822
- <span class="cline-any cline-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-neutral">&nbsp;</span>
826
- <span class="cline-any cline-neutral">&nbsp;</span>
827
- <span class="cline-any cline-neutral">&nbsp;</span>
828
- <span class="cline-any cline-neutral">&nbsp;</span>
829
- <span class="cline-any cline-neutral">&nbsp;</span>
830
- <span class="cline-any cline-no">&nbsp;</span>
831
- <span class="cline-any cline-neutral">&nbsp;</span>
832
- <span class="cline-any cline-neutral">&nbsp;</span>
833
- <span class="cline-any cline-neutral">&nbsp;</span>
834
- <span class="cline-any cline-neutral">&nbsp;</span>
835
- <span class="cline-any cline-neutral">&nbsp;</span>
836
- <span class="cline-any cline-neutral">&nbsp;</span>
837
- <span class="cline-any cline-no">&nbsp;</span>
838
- <span class="cline-any cline-neutral">&nbsp;</span>
839
- <span class="cline-any cline-neutral">&nbsp;</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-no">&nbsp;</span>
843
- <span class="cline-any cline-no">&nbsp;</span>
844
- <span class="cline-any cline-no">&nbsp;</span>
845
- <span class="cline-any cline-no">&nbsp;</span>
846
- <span class="cline-any cline-neutral">&nbsp;</span>
847
- <span class="cline-any cline-neutral">&nbsp;</span>
848
- <span class="cline-any cline-neutral">&nbsp;</span>
849
- <span class="cline-any cline-neutral">&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-yes">1x</span>
853
- <span class="cline-any cline-no">&nbsp;</span>
854
- <span class="cline-any cline-no">&nbsp;</span>
855
- <span class="cline-any cline-no">&nbsp;</span>
856
- <span class="cline-any cline-no">&nbsp;</span>
857
- <span class="cline-any cline-neutral">&nbsp;</span>
858
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
864
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
872
- <span class="cline-any cline-neutral">&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-neutral">&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-no">&nbsp;</span>
888
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
892
- <span class="cline-any cline-no">&nbsp;</span>
893
- <span class="cline-any cline-neutral">&nbsp;</span>
894
- <span class="cline-any cline-no">&nbsp;</span>
895
- <span class="cline-any cline-no">&nbsp;</span>
896
- <span class="cline-any cline-no">&nbsp;</span>
897
- <span class="cline-any cline-neutral">&nbsp;</span>
898
- <span class="cline-any cline-no">&nbsp;</span>
899
- <span class="cline-any cline-no">&nbsp;</span>
900
- <span class="cline-any cline-no">&nbsp;</span>
901
- <span class="cline-any cline-neutral">&nbsp;</span>
902
- <span class="cline-any cline-no">&nbsp;</span>
903
- <span class="cline-any cline-neutral">&nbsp;</span>
904
- <span class="cline-any cline-no">&nbsp;</span>
905
- <span class="cline-any cline-no">&nbsp;</span>
906
- <span class="cline-any cline-no">&nbsp;</span>
907
- <span class="cline-any cline-neutral">&nbsp;</span>
908
- <span class="cline-any cline-neutral">&nbsp;</span>
909
- <span class="cline-any cline-neutral">&nbsp;</span>
910
- <span class="cline-any cline-no">&nbsp;</span>
911
- <span class="cline-any cline-no">&nbsp;</span>
912
- <span class="cline-any cline-neutral">&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-neutral">&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-neutral">&nbsp;</span>
920
- <span class="cline-any cline-neutral">&nbsp;</span>
921
- <span class="cline-any cline-neutral">&nbsp;</span>
922
- <span class="cline-any cline-neutral">&nbsp;</span>
923
- <span class="cline-any cline-yes">1x</span>
924
- <span class="cline-any cline-no">&nbsp;</span>
925
- <span class="cline-any cline-no">&nbsp;</span>
926
- <span class="cline-any cline-no">&nbsp;</span>
927
- <span class="cline-any cline-no">&nbsp;</span>
928
- <span class="cline-any cline-neutral">&nbsp;</span>
929
- <span class="cline-any cline-neutral">&nbsp;</span>
930
- <span class="cline-any cline-neutral">&nbsp;</span>
931
- <span class="cline-any cline-neutral">&nbsp;</span>
932
- <span class="cline-any cline-neutral">&nbsp;</span>
933
- <span class="cline-any cline-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-no">&nbsp;</span>
938
- <span class="cline-any cline-no">&nbsp;</span>
939
- <span class="cline-any cline-no">&nbsp;</span>
940
- <span class="cline-any cline-no">&nbsp;</span>
941
- <span class="cline-any cline-neutral">&nbsp;</span>
942
- <span class="cline-any cline-neutral">&nbsp;</span>
943
- <span class="cline-any cline-no">&nbsp;</span>
944
- <span class="cline-any cline-no">&nbsp;</span>
945
- <span class="cline-any cline-no">&nbsp;</span>
946
- <span class="cline-any cline-neutral">&nbsp;</span>
947
- <span class="cline-any cline-neutral">&nbsp;</span>
948
- <span class="cline-any cline-neutral">&nbsp;</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-no">&nbsp;</span>
956
- <span class="cline-any cline-neutral">&nbsp;</span>
957
- <span class="cline-any cline-neutral">&nbsp;</span>
958
- <span class="cline-any cline-no">&nbsp;</span>
959
- <span class="cline-any cline-no">&nbsp;</span>
960
- <span class="cline-any cline-no">&nbsp;</span>
961
- <span class="cline-any cline-no">&nbsp;</span>
962
- <span class="cline-any cline-no">&nbsp;</span>
963
- <span class="cline-any cline-no">&nbsp;</span>
964
- <span class="cline-any cline-neutral">&nbsp;</span>
965
- <span class="cline-any cline-no">&nbsp;</span>
966
- <span class="cline-any cline-neutral">&nbsp;</span>
967
- <span class="cline-any cline-neutral">&nbsp;</span>
968
- <span class="cline-any cline-no">&nbsp;</span>
969
- <span class="cline-any cline-neutral">&nbsp;</span>
970
- <span class="cline-any cline-neutral">&nbsp;</span>
971
- <span class="cline-any cline-neutral">&nbsp;</span>
972
- <span class="cline-any cline-neutral">&nbsp;</span>
973
- <span class="cline-any cline-neutral">&nbsp;</span>
974
- <span class="cline-any cline-neutral">&nbsp;</span>
975
- <span class="cline-any cline-neutral">&nbsp;</span>
976
- <span class="cline-any cline-neutral">&nbsp;</span>
977
- <span class="cline-any cline-neutral">&nbsp;</span>
978
- <span class="cline-any cline-neutral">&nbsp;</span>
979
- <span class="cline-any cline-neutral">&nbsp;</span>
980
- <span class="cline-any cline-no">&nbsp;</span>
981
- <span class="cline-any cline-neutral">&nbsp;</span>
982
- <span class="cline-any cline-neutral">&nbsp;</span>
983
- <span class="cline-any cline-neutral">&nbsp;</span>
984
- <span class="cline-any cline-neutral">&nbsp;</span>
985
- <span class="cline-any cline-neutral">&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-neutral">&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-no">&nbsp;</span>
993
- <span class="cline-any cline-neutral">&nbsp;</span>
994
- <span class="cline-any cline-neutral">&nbsp;</span>
995
- <span class="cline-any cline-neutral">&nbsp;</span>
996
- <span class="cline-any cline-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-neutral">&nbsp;</span>
1002
- <span class="cline-any cline-no">&nbsp;</span>
1003
- <span class="cline-any cline-neutral">&nbsp;</span>
1004
- <span class="cline-any cline-no">&nbsp;</span>
1005
- <span class="cline-any cline-neutral">&nbsp;</span>
1006
- <span class="cline-any cline-neutral">&nbsp;</span>
1007
- <span class="cline-any cline-neutral">&nbsp;</span>
1008
- <span class="cline-any cline-yes">1x</span>
1009
- <span class="cline-any cline-neutral">&nbsp;</span>
1010
- <span class="cline-any cline-no">&nbsp;</span>
1011
- <span class="cline-any cline-no">&nbsp;</span>
1012
- <span class="cline-any cline-no">&nbsp;</span>
1013
- <span class="cline-any cline-no">&nbsp;</span>
1014
- <span class="cline-any cline-no">&nbsp;</span>
1015
- <span class="cline-any cline-no">&nbsp;</span>
1016
- <span class="cline-any cline-no">&nbsp;</span>
1017
- <span class="cline-any cline-no">&nbsp;</span>
1018
- <span class="cline-any cline-neutral">&nbsp;</span>
1019
- <span class="cline-any cline-no">&nbsp;</span>
1020
- <span class="cline-any cline-neutral">&nbsp;</span>
1021
- <span class="cline-any cline-no">&nbsp;</span>
1022
- <span class="cline-any cline-neutral">&nbsp;</span>
1023
- <span class="cline-any cline-neutral">&nbsp;</span>
1024
- <span class="cline-any cline-neutral">&nbsp;</span>
1025
- <span class="cline-any cline-neutral">&nbsp;</span>
1026
- <span class="cline-any cline-neutral">&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-yes">1x</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-neutral">&nbsp;</span>
1033
- <span class="cline-any cline-neutral">&nbsp;</span>
1034
- <span class="cline-any cline-no">&nbsp;</span>
1035
- <span class="cline-any cline-no">&nbsp;</span>
1036
- <span class="cline-any cline-no">&nbsp;</span>
1037
- <span class="cline-any cline-no">&nbsp;</span>
1038
- <span class="cline-any cline-no">&nbsp;</span>
1039
- <span class="cline-any cline-no">&nbsp;</span>
1040
- <span class="cline-any cline-no">&nbsp;</span>
1041
- <span class="cline-any cline-no">&nbsp;</span>
1042
- <span class="cline-any cline-no">&nbsp;</span>
1043
- <span class="cline-any cline-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-no">&nbsp;</span>
1048
- <span class="cline-any cline-neutral">&nbsp;</span>
1049
- <span class="cline-any cline-no">&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-yes">1x</span>
1054
- <span class="cline-any cline-no">&nbsp;</span>
1055
- <span class="cline-any cline-no">&nbsp;</span>
1056
- <span class="cline-any cline-neutral">&nbsp;</span>
1057
- <span class="cline-any cline-neutral">&nbsp;</span>
1058
- <span class="cline-any cline-yes">1x</span>
1059
- <span class="cline-any cline-no">&nbsp;</span>
1060
- <span class="cline-any cline-no">&nbsp;</span>
1061
- <span class="cline-any cline-no">&nbsp;</span>
1062
- <span class="cline-any cline-no">&nbsp;</span>
1063
- <span class="cline-any cline-no">&nbsp;</span>
1064
- <span class="cline-any cline-neutral">&nbsp;</span>
1065
- <span class="cline-any cline-no">&nbsp;</span>
1066
- <span class="cline-any cline-no">&nbsp;</span>
1067
- <span class="cline-any cline-neutral">&nbsp;</span>
1068
- <span class="cline-any cline-no">&nbsp;</span>
1069
- <span class="cline-any cline-neutral">&nbsp;</span>
1070
- <span class="cline-any cline-no">&nbsp;</span>
1071
- <span class="cline-any cline-no">&nbsp;</span>
1072
- <span class="cline-any cline-neutral">&nbsp;</span>
1073
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
1077
- <span class="cline-any cline-neutral">&nbsp;</span>
1078
- <span class="cline-any cline-neutral">&nbsp;</span>
1079
- <span class="cline-any cline-no">&nbsp;</span>
1080
- <span class="cline-any cline-neutral">&nbsp;</span>
1081
- <span class="cline-any cline-neutral">&nbsp;</span>
1082
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1087
- <span class="cline-any cline-neutral">&nbsp;</span>
1088
- <span class="cline-any cline-yes">1x</span>
1089
- <span class="cline-any cline-neutral">&nbsp;</span>
1090
- <span class="cline-any cline-no">&nbsp;</span>
1091
- <span class="cline-any cline-neutral">&nbsp;</span>
1092
- <span class="cline-any cline-neutral">&nbsp;</span>
1093
- <span class="cline-any cline-yes">1x</span>
1094
- <span class="cline-any cline-no">&nbsp;</span>
1095
- <span class="cline-any cline-no">&nbsp;</span>
1096
- <span class="cline-any cline-no">&nbsp;</span>
1097
- <span class="cline-any cline-neutral">&nbsp;</span>
1098
- <span class="cline-any cline-neutral">&nbsp;</span>
1099
- <span class="cline-any cline-neutral">&nbsp;</span>
1100
- <span class="cline-any cline-yes">1x</span>
1101
- <span class="cline-any cline-no">&nbsp;</span>
1102
- <span class="cline-any cline-neutral">&nbsp;</span>
1103
- <span class="cline-any cline-neutral">&nbsp;</span>
1104
- <span class="cline-any cline-yes">1x</span>
1105
- <span class="cline-any cline-no">&nbsp;</span>
1106
- <span class="cline-any cline-no">&nbsp;</span>
1107
- <span class="cline-any cline-no">&nbsp;</span>
1108
- <span class="cline-any cline-neutral">&nbsp;</span>
1109
- <span class="cline-any cline-neutral">&nbsp;</span>
1110
- <span class="cline-any cline-yes">1x</span>
1111
- <span class="cline-any cline-no">&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-yes">1x</span>
1115
- <span class="cline-any cline-no">&nbsp;</span>
1116
- <span class="cline-any cline-no">&nbsp;</span>
1117
- <span class="cline-any cline-no">&nbsp;</span>
1118
- <span class="cline-any cline-no">&nbsp;</span>
1119
- <span class="cline-any cline-neutral">&nbsp;</span>
1120
- <span class="cline-any cline-no">&nbsp;</span>
1121
- <span class="cline-any cline-no">&nbsp;</span>
1122
- <span class="cline-any cline-neutral">&nbsp;</span>
1123
- <span class="cline-any cline-neutral">&nbsp;</span>
1124
- <span class="cline-any cline-neutral">&nbsp;</span>
1125
- <span class="cline-any cline-neutral">&nbsp;</span>
1126
- <span class="cline-any cline-neutral">&nbsp;</span>
1127
- <span class="cline-any cline-neutral">&nbsp;</span>
1128
- <span class="cline-any cline-yes">1x</span>
1129
- <span class="cline-any cline-no">&nbsp;</span>
1130
- <span class="cline-any cline-no">&nbsp;</span>
1131
- <span class="cline-any cline-no">&nbsp;</span>
1132
- <span class="cline-any cline-neutral">&nbsp;</span>
1133
- <span class="cline-any cline-neutral">&nbsp;</span>
1134
- <span class="cline-any cline-neutral">&nbsp;</span>
1135
- <span class="cline-any cline-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-neutral">&nbsp;</span>
1139
- <span class="cline-any cline-yes">1x</span>
1140
- <span class="cline-any cline-neutral">&nbsp;</span>
1141
- <span class="cline-any cline-no">&nbsp;</span>
1142
- <span class="cline-any cline-neutral">&nbsp;</span>
1143
- <span class="cline-any cline-neutral">&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-neutral">&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-neutral">&nbsp;</span>
1152
- <span class="cline-any cline-neutral">&nbsp;</span>
1153
- <span class="cline-any cline-neutral">&nbsp;</span>
1154
- <span class="cline-any cline-yes">1x</span>
1155
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
1164
- <span class="cline-any cline-neutral">&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-no">&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-neutral">&nbsp;</span>
1172
- <span class="cline-any cline-neutral">&nbsp;</span>
1173
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1178
- <span class="cline-any cline-yes">1x</span>
1179
- <span class="cline-any cline-no">&nbsp;</span>
1180
- <span class="cline-any cline-neutral">&nbsp;</span>
1181
- <span class="cline-any cline-no">&nbsp;</span>
1182
- <span class="cline-any cline-no">&nbsp;</span>
1183
- <span class="cline-any cline-no">&nbsp;</span>
1184
- <span class="cline-any cline-no">&nbsp;</span>
1185
- <span class="cline-any cline-neutral">&nbsp;</span>
1186
- <span class="cline-any cline-neutral">&nbsp;</span>
1187
- <span class="cline-any cline-neutral">&nbsp;</span>
1188
- <span class="cline-any cline-yes">1x</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-neutral">&nbsp;</span>
1198
- <span class="cline-any cline-neutral">&nbsp;</span>
1199
- <span class="cline-any cline-neutral">&nbsp;</span>
1200
- <span class="cline-any cline-neutral">&nbsp;</span>
1201
- <span class="cline-any cline-neutral">&nbsp;</span>
1202
- <span class="cline-any cline-neutral">&nbsp;</span>
1203
- <span class="cline-any cline-no">&nbsp;</span>
1204
- <span class="cline-any cline-no">&nbsp;</span>
1205
- <span class="cline-any cline-neutral">&nbsp;</span>
1206
- <span class="cline-any cline-no">&nbsp;</span>
1207
- <span class="cline-any cline-neutral">&nbsp;</span>
1208
- <span class="cline-any cline-neutral">&nbsp;</span>
1209
- <span class="cline-any cline-no">&nbsp;</span>
1210
- <span class="cline-any cline-no">&nbsp;</span>
1211
- <span class="cline-any cline-no">&nbsp;</span>
1212
- <span class="cline-any cline-no">&nbsp;</span>
1213
- <span class="cline-any cline-no">&nbsp;</span>
1214
- <span class="cline-any cline-no">&nbsp;</span>
1215
- <span class="cline-any cline-no">&nbsp;</span>
1216
- <span class="cline-any cline-neutral">&nbsp;</span>
1217
- <span class="cline-any cline-neutral">&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-yes">1x</span></td><td class="text"><pre class="prettyprint lang-js">import { ConversationHandlerService } from 'src/chat21-core/providers/abstract/conversation-handler.service';
1221
- import { TypingService } from 'src/chat21-core/providers/abstract/typing.service';
1222
- import { TYPE_MSG_TEXT, TYPE_MSG_IMAGE, TYPE_MSG_FILE } from 'src/chat21-core/utils/constants';
1223
- import { Globals } from 'src/app/utils/globals';
1224
- import { Component, ElementRef, EventEmitter, Input, OnInit, Output, SimpleChanges, OnChanges, ViewChild } from '@angular/core';
1225
- import { UploadModel } from 'src/chat21-core/models/upload';
1226
- import { convertColorToRGBA } from 'src/chat21-core/utils/utils';
1227
- import { UploadService } from 'src/chat21-core/providers/abstract/upload.service';
1228
- import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
1229
- import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
1230
- import { ChatManager } from 'src/chat21-core/providers/chat-manager';
1231
- import { MessageModel } from 'src/chat21-core/models/message';
1232
- &nbsp;
1233
- @Component({
1234
- selector: 'chat-conversation-footer',
1235
- templateUrl: './conversation-footer.component.html',
1236
- styleUrls: ['./conversation-footer.component.scss']
1237
- })
1238
- export class ConversationFooterComponent implements OnInit, OnChanges {
1239
- &nbsp;
1240
- @Input() conversationWith: string;
1241
- @Input() attributes: string;
1242
- @Input() senderId: string;
1243
- @Input() tenant: string;
1244
- @Input() projectid: string;
1245
- @Input() channelType: string;
1246
- @Input() userFullname: string;
1247
- @Input() userEmail: string;
1248
- @Input() showAttachmentButton: boolean;
1249
- @Input() showContinueConversationButton: boolean;
1250
- @Input() isConversationArchived: boolean;
1251
- @Input() hideTextAreaContent: boolean;
1252
- @Input() hideTextReply: boolean;
1253
- @Input() isMobile: boolean;
1254
- @Input() isEmojiiPickerShow: boolean;
1255
- @Input() footerMessagePlaceholder: string;
1256
- @Input() fileUploadAccept: string;
1257
- @Input() stylesMap: Map&lt;string, string&gt;
1258
- @Input() translationMap: Map&lt; string, string&gt;;
1259
- @Output() onEmojiiPickerShow = new EventEmitter&lt;boolean&gt;();
1260
- @Output() onBeforeMessageSent = new EventEmitter();
1261
- @Output() onAfterSendMessage = new EventEmitter&lt;MessageModel&gt;();
1262
- @Output() onChangeTextArea = new EventEmitter&lt;any&gt;();
1263
- @Output() onAttachmentFileButtonClicked = new EventEmitter&lt;any&gt;();
1264
- @Output() onNewConversationButtonClicked = new EventEmitter();
1265
- @Output() onBackButton = new EventEmitter()
1266
- &nbsp;
1267
- @ViewChild('chat21_file') public chat21_file: ElementRef;
1268
- &nbsp;
1269
- // ========= begin:: send image ======= //
1270
- selectedFiles: FileList;
1271
- isFilePendingToUpload: Boolean = false;
1272
- arrayFilesLoad: Array&lt;any&gt; = [];
1273
- isFileSelected: Boolean = false;
1274
- HEIGHT_DEFAULT = '20px';
1275
- // ========= end:: send image ========= //
1276
- &nbsp;
1277
- // isNewConversation = true;
1278
- textInputTextArea: string;
1279
- conversationHandlerService: ConversationHandlerService
1280
- &nbsp;
1281
- showEmojiPicker: boolean = false; //To show/hide emoji picker
1282
- emojiiOptions = {
1283
- emojiPerLine : 9,
1284
- totalFrequentLines: 1,
1285
- showPreview: false,
1286
- darkMode: false,
1287
- enableSearch: false,
1288
- include: [ 'recent', 'people', 'nature', 'activity']
1289
- }
1290
- &nbsp;
1291
- convertColorToRGBA = convertColorToRGBA;
1292
- private logger: LoggerService = LoggerInstance.getInstance()
1293
- constructor(public g: Globals,
1294
- private chatManager: ChatManager,
1295
- private typingService: TypingService,
1296
- private uploadService: UploadService) { }
1297
- &nbsp;
1298
- ngOnInit() {
1299
- }
1300
- &nbsp;
1301
- <span class="fstat-no" title="function not covered" > ngOnChanges(</span>changes: SimpleChanges){
1302
- <span class="cstat-no" title="statement not covered" > if(changes['conversationWith'] &amp;&amp; changes['conversationWith'].currentValue !== undefined){</span>
1303
- <span class="cstat-no" title="statement not covered" > this.conversationHandlerService = this.chatManager.getConversationHandlerByConversationId(this.conversationWith);</span>
1304
- }
1305
- <span class="cstat-no" title="statement not covered" > if(changes['hideTextReply'] &amp;&amp; changes['hideTextReply'].currentValue !== undefined){</span>
1306
- <span class="cstat-no" title="statement not covered" > this.restoreTextArea();</span>
1307
- }
1308
- }
1309
-
1310
- ngAfterViewInit() {
1311
- this.logger.debug('[CONV-FOOTER] --------ngAfterViewInit: conversation-footer-------- ');
1312
- // setTimeout(() =&gt; {
1313
- this.showEmojiPicker = true
1314
- // }, 500);
1315
- }
1316
- &nbsp;
1317
- // ========= begin:: functions send image ======= //
1318
- // START LOAD IMAGE //
1319
- /** load the selected image locally and open the pop up preview */
1320
- <span class="fstat-no" title="function not covered" > detectFiles(</span>event) {
1321
- <span class="cstat-no" title="statement not covered" > this.logger.debug('[CONV-FOOTER] detectFiles: ', event);</span>
1322
- &nbsp;
1323
- <span class="cstat-no" title="statement not covered" > if (event) {</span>
1324
- <span class="cstat-no" title="statement not covered" > this.selectedFiles = event.target.files;</span>
1325
- <span class="cstat-no" title="statement not covered" > this.logger.debug('[CONV-FOOTER] AppComponent:detectFiles::selectedFiles', this.selectedFiles);</span>
1326
- // this.onAttachmentButtonClicked.emit(this.selectedFiles)
1327
- <span class="cstat-no" title="statement not covered" > if (this.selectedFiles == null) {</span>
1328
- <span class="cstat-no" title="statement not covered" > this.isFilePendingToUpload = false;</span>
1329
- } else {
1330
- <span class="cstat-no" title="statement not covered" > this.isFilePendingToUpload = true;</span>
1331
- }
1332
- <span class="cstat-no" title="statement not covered" > this.logger.debug('[CONV-FOOTER] AppComponent:detectFiles::selectedFiles::isFilePendingToUpload', this.isFilePendingToUpload);</span>
1333
- <span class="cstat-no" title="statement not covered" > this.logger.debug('[CONV-FOOTER] fileChange: ', event.target.files);</span>
1334
- <span class="cstat-no" title="statement not covered" > if (event.target.files.length &lt;= 0) {</span>
1335
- <span class="cstat-no" title="statement not covered" > this.isFilePendingToUpload = false;</span>
1336
- } else {
1337
- <span class="cstat-no" title="statement not covered" > this.isFilePendingToUpload = true;</span>
1338
- }
1339
-
1340
- const that = <span class="cstat-no" title="statement not covered" >this;</span>
1341
- <span class="cstat-no" title="statement not covered" > if (event.target.files &amp;&amp; event.target.files[0]) {</span>
1342
- const nameFile = <span class="cstat-no" title="statement not covered" >event.target.files[0].name;</span>
1343
- const typeFile = <span class="cstat-no" title="statement not covered" >event.target.files[0].type;</span>
1344
- const reader = <span class="cstat-no" title="statement not covered" >new FileReader();</span>
1345
- <span class="cstat-no" title="statement not covered" > that.logger.debug('[CONV-FOOTER] OK preload: ', nameFile, typeFile, reader);</span>
1346
- <span class="cstat-no" title="statement not covered" > reader.addEventListener('load', <span class="fstat-no" title="function not covered" >function () {</span></span>
1347
- <span class="cstat-no" title="statement not covered" > that.logger.debug('[CONV-FOOTER] addEventListener load', reader.result);</span>
1348
- <span class="cstat-no" title="statement not covered" > that.isFileSelected = true;</span>
1349
- // se inizia con image
1350
- <span class="cstat-no" title="statement not covered" > if (typeFile.startsWith('image') &amp;&amp; !typeFile.includes('svg')) {</span>
1351
- const imageXLoad = <span class="cstat-no" title="statement not covered" >new Image;</span>
1352
- <span class="cstat-no" title="statement not covered" > that.logger.debug('[CONV-FOOTER] onload ', imageXLoad);</span>
1353
- <span class="cstat-no" title="statement not covered" > imageXLoad.src = reader.result.toString();</span>
1354
- <span class="cstat-no" title="statement not covered" > imageXLoad.title = nameFile;</span>
1355
- <span class="cstat-no" title="statement not covered" > imageXLoad.onload = <span class="fstat-no" title="function not covered" >function () {</span></span>
1356
- <span class="cstat-no" title="statement not covered" > that.logger.debug('[CONV-FOOTER] onload image');</span>
1357
- // that.arrayFilesLoad.push(imageXLoad);
1358
- const uid = <span class="cstat-no" title="statement not covered" >(new Date().getTime()).toString(36);</span> // imageXLoad.src.substring(imageXLoad.src.length - 16);
1359
- <span class="cstat-no" title="statement not covered" > that.arrayFilesLoad[0] = { uid: uid, file: imageXLoad, type: typeFile };</span>
1360
- <span class="cstat-no" title="statement not covered" > that.logger.debug('[CONV-FOOTER] OK: ', that.arrayFilesLoad[0]);</span>
1361
- // SEND MESSAGE
1362
- <span class="cstat-no" title="statement not covered" > that.loadFile();</span>
1363
- };
1364
- } else {
1365
- <span class="cstat-no" title="statement not covered" > that.logger.debug('[CONV-FOOTER] onload file');</span>
1366
- const fileXLoad = <span class="cstat-no" title="statement not covered" >{</span>
1367
- src: reader.result.toString(),
1368
- title: nameFile
1369
- };
1370
- // that.arrayFilesLoad.push(imageXLoad);
1371
- const uid = <span class="cstat-no" title="statement not covered" >(new Date().getTime()).toString(36);</span> // imageXLoad.src.substring(imageXLoad.src.length - 16);
1372
- <span class="cstat-no" title="statement not covered" > that.arrayFilesLoad[0] = { uid: uid, file: fileXLoad, type: typeFile };</span>
1373
- <span class="cstat-no" title="statement not covered" > that.logger.debug('[CONV-FOOTER] OK: ', that.arrayFilesLoad[0]);</span>
1374
- // SEND MESSAGE
1375
- <span class="cstat-no" title="statement not covered" > that.loadFile();</span>
1376
- }
1377
- }, false);
1378
- &nbsp;
1379
- <span class="cstat-no" title="statement not covered" > if (event.target.files[0]) {</span>
1380
- <span class="cstat-no" title="statement not covered" > reader.readAsDataURL(event.target.files[0]);</span>
1381
- <span class="cstat-no" title="statement not covered" > that.logger.debug('[CONV-FOOTER] reader-result: ', event.target.files[0]);</span>
1382
- }
1383
- }
1384
- }
1385
- }
1386
- &nbsp;
1387
- &nbsp;
1388
- <span class="fstat-no" title="function not covered" > loadFile(</span>) {
1389
- <span class="cstat-no" title="statement not covered" > this.logger.debug('[CONV-FOOTER] that.fileXLoad: ', this.arrayFilesLoad);</span>
1390
- // at the moment I only manage the upload of one image at a time
1391
- <span class="cstat-no" title="statement not covered" > if (this.arrayFilesLoad[0] &amp;&amp; this.arrayFilesLoad[0].file) {</span>
1392
- const fileXLoad = <span class="cstat-no" title="statement not covered" >this.arrayFilesLoad[0].file;</span>
1393
- const uid = <span class="cstat-no" title="statement not covered" >this.arrayFilesLoad[0].uid;</span>
1394
- const type = <span class="cstat-no" title="statement not covered" >this.arrayFilesLoad[0].type;</span>
1395
- <span class="cstat-no" title="statement not covered" > this.logger.debug('[CONV-FOOTER] that.fileXLoad: ', type);</span>
1396
- let metadata<span class="cstat-no" title="statement not covered" >;</span>
1397
- <span class="cstat-no" title="statement not covered" > if (type.startsWith('image') &amp;&amp; !type.includes('svg')) {</span>
1398
- <span class="cstat-no" title="statement not covered" > metadata = {</span>
1399
- 'name': fileXLoad.title,
1400
- 'src': fileXLoad.src,
1401
- 'width': fileXLoad.width,
1402
- 'height': fileXLoad.height,
1403
- 'type': type,
1404
- 'uid': uid
1405
- };
1406
- } else {
1407
- <span class="cstat-no" title="statement not covered" > metadata = {</span>
1408
- 'name': fileXLoad.title,
1409
- 'src': fileXLoad.src,
1410
- 'type': type,
1411
- 'uid': uid
1412
- };
1413
- }
1414
- <span class="cstat-no" title="statement not covered" > this.logger.debug('[CONV-FOOTER] metadata -------&gt; ', metadata);</span>
1415
- // this.scrollToBottom();
1416
- // 1 - aggiungo messaggio localmente
1417
- // this.addLocalMessageImage(metadata);
1418
- // 2 - carico immagine
1419
- const file = <span class="cstat-no" title="statement not covered" >this.selectedFiles.item(0);</span>
1420
- <span class="cstat-no" title="statement not covered" > this.onAttachmentFileButtonClicked.emit({attachments: [{metadata, file}], message: this.textInputTextArea}) /</span>/GABBBBBBBB
1421
- <span class="cstat-no" title="statement not covered" > this.restoreTextArea();</span>
1422
- <span class="cstat-no" title="statement not covered" > this.chat21_file.nativeElement.value = ''; </span>//BUG-FIXED: allow you to re-load the same previous file
1423
- // this.uploadSingle(metadata, file);
1424
- // this.isSelected = false;
1425
- }
1426
- }
1427
- &nbsp;
1428
- &nbsp;
1429
- <span class="fstat-no" title="function not covered" > uploadSingle(</span>metadata, file, messageText?: string) {
1430
- const that = <span class="cstat-no" title="statement not covered" >this;</span>
1431
- const send_order_btn = &lt;HTMLInputElement&gt;<span class="cstat-no" title="statement not covered" >document.getElementById('chat21-start-upload-doc');</span>
1432
- <span class="cstat-no" title="statement not covered" > send_order_btn.disabled = true;</span>
1433
- <span class="cstat-no" title="statement not covered" > that.logger.debug('[CONV-FOOTER] AppComponent::uploadSingle::', metadata, file);</span>
1434
- // const file = this.selectedFiles.item(0);
1435
- const currentUpload = <span class="cstat-no" title="statement not covered" >new UploadModel(file);</span>
1436
- &nbsp;
1437
- // const uploadTask = this.upSvc.pushUpload(currentUpload);
1438
- // uploadTask.then(snapshot =&gt; {
1439
- // return snapshot.ref.getDownloadURL(); // Will return a promise with the download link
1440
- // }).then(downloadURL =&gt; {
1441
- // that.logger.debug('[CONV-FOOTER] AppComponent::uploadSingle:: downloadURL', downloadURL]);
1442
- // that.g.wdLog([`Successfully uploaded file and got download link - ${downloadURL}`]);
1443
- &nbsp;
1444
- // metadata.src = downloadURL;
1445
- // let type_message = TYPE_MSG_TEXT;
1446
- // let message = 'File: ' + metadata.src;
1447
- // if (metadata.type.startsWith('image')) {
1448
- // type_message = TYPE_MSG_IMAGE;
1449
- // message = ''; // 'Image: ' + metadata.src;
1450
- // }
1451
- // that.sendMessage(message, type_message, metadata);
1452
- // that.isFilePendingToUpload = false;
1453
- // // return downloadURL;
1454
- // }).catch(error =&gt; {
1455
- // // Use to signal error if something goes wrong.
1456
- // console.error(`AppComponent::uploadSingle:: Failed to upload file and get link - ${error}`);
1457
- // });
1458
- // this.resetLoadImage();
1459
-
1460
- <span class="cstat-no" title="statement not covered" > this.uploadService.upload(this.senderId, currentUpload).then(<span class="fstat-no" title="function not covered" >downloadURL </span>=&gt; {</span>
1461
- <span class="cstat-no" title="statement not covered" > that.logger.debug('[CONV-FOOTER] AppComponent::uploadSingle:: downloadURL', downloadURL);</span>
1462
- <span class="cstat-no" title="statement not covered" > that.logger.debug(`[CONV-FOOTER] Successfully uploaded file and got download link - ${downloadURL}`);</span>
1463
- &nbsp;
1464
- <span class="cstat-no" title="statement not covered" > metadata.src = downloadURL;</span>
1465
- let type_message = <span class="cstat-no" title="statement not covered" >TYPE_MSG_TEXT;</span>
1466
- // let message = 'File: ' + metadata.src;
1467
- let message = <span class="cstat-no" title="statement not covered" >`[${metadata.name}](${metadata.src})`</span>
1468
- <span class="cstat-no" title="statement not covered" > if (metadata.type.startsWith('image') &amp;&amp; !metadata.type.includes('svg')) {</span>
1469
- <span class="cstat-no" title="statement not covered" > type_message = TYPE_MSG_IMAGE;</span>
1470
- // message = '';
1471
- <span class="cstat-no" title="statement not covered" > message = messageText </span>
1472
- } else <span class="cstat-no" title="statement not covered" >if ((metadata.type.startsWith('image') &amp;&amp; metadata.type.includes('svg')) || !metadata.type.startsWith('image')){</span>
1473
- <span class="cstat-no" title="statement not covered" > type_message = TYPE_MSG_FILE</span>
1474
- // type_message = metadata.type
1475
- <span class="cstat-no" title="statement not covered" > message = message + '\n' + messageText</span>
1476
- } else <span class="cstat-no" title="statement not covered" >if (!metadata.type.startsWith('image')){</span>
1477
- <span class="cstat-no" title="statement not covered" > type_message = TYPE_MSG_FILE</span>
1478
- // type_message = metadata.type
1479
- <span class="cstat-no" title="statement not covered" > message = message + '\n' + messageText</span>
1480
- }
1481
- <span class="cstat-no" title="statement not covered" > that.sendMessage(message, type_message, metadata);</span>
1482
- <span class="cstat-no" title="statement not covered" > that.chat21_file.nativeElement.value = ''; </span>//BUG-FIXED: allow you to re-load the same previous file
1483
- <span class="cstat-no" title="statement not covered" > that.isFilePendingToUpload = false;</span>
1484
- // return downloadURL;
1485
- }).catch(<span class="fstat-no" title="function not covered" >error </span>=&gt; {
1486
- // Use to signal error if something goes wrong.
1487
- <span class="cstat-no" title="statement not covered" > that.logger.error(`[CONV-FOOTER] uploadSingle:: Failed to upload file and get link - ${error}`);</span>
1488
- <span class="cstat-no" title="statement not covered" > that.isFilePendingToUpload = false;</span>
1489
- });
1490
- <span class="cstat-no" title="statement not covered" > that.logger.debug('[CONV-FOOTER] reader-result: ', file);</span>
1491
- }
1492
- &nbsp;
1493
- /**
1494
- * sending message
1495
- * @param msg
1496
- * @param type
1497
- * @param metadata
1498
- * @param additional_attributes
1499
- */
1500
- <span class="fstat-no" title="function not covered" > sendMessage(</span>msg: string, type: string, metadata?: any, additional_attributes?: any) { // sponziello
1501
- <span class="cstat-no" title="statement not covered" > (metadata) ? metadata = metadata : metadata = '';</span>
1502
- <span class="cstat-no" title="statement not covered" > this.onEmojiiPickerShow.emit(false)</span>
1503
- <span class="cstat-no" title="statement not covered" > this.logger.debug('[CONV-FOOTER] SEND MESSAGE: ', msg, type, metadata, additional_attributes);</span>
1504
- <span class="cstat-no" title="statement not covered" > if (msg &amp;&amp; msg.trim() !== '' || type === TYPE_MSG_IMAGE || type === TYPE_MSG_FILE ) {</span>
1505
- &nbsp;
1506
- // msg = htmlEntities(msg);
1507
- // msg = replaceEndOfLine(msg);
1508
- // msg = msg.trim();
1509
- &nbsp;
1510
- let recipientFullname = <span class="cstat-no" title="statement not covered" >this.translationMap.get('GUEST_LABEL');</span>
1511
- // sponziello: adds ADDITIONAL ATTRIBUTES TO THE MESSAGE
1512
- const g_attributes = <span class="cstat-no" title="statement not covered" >this.attributes;</span>
1513
- // added &lt;any&gt; to resolve the Error occurred during the npm installation: Property 'userFullname' does not exist on type '{}'
1514
- const attributes = &lt;any&gt;<span class="cstat-no" title="statement not covered" >{};</span>
1515
- <span class="cstat-no" title="statement not covered" > if (g_attributes) {</span>
1516
- <span class="cstat-no" title="statement not covered" > for (const <span class="cstat-no" title="statement not covered" >[k</span>ey<span class="cstat-no" title="statement not covered" >, v</span>alue<span class="cstat-no" title="statement not covered" >] </span>of <span class="cstat-no" title="statement not covered" >Object.entries(g_attributes)<span class="cstat-no" title="statement not covered" >) {</span></span></span>
1517
- <span class="cstat-no" title="statement not covered" > attributes[key] = value;</span>
1518
- }
1519
- }
1520
- <span class="cstat-no" title="statement not covered" > if (additional_attributes) {</span>
1521
- <span class="cstat-no" title="statement not covered" > for (const <span class="cstat-no" title="statement not covered" >[k</span>ey<span class="cstat-no" title="statement not covered" >, v</span>alue<span class="cstat-no" title="statement not covered" >] </span>of <span class="cstat-no" title="statement not covered" >Object.entries(additional_attributes)<span class="cstat-no" title="statement not covered" >) {</span></span></span>
1522
- <span class="cstat-no" title="statement not covered" > attributes[key] = value;</span>
1523
- }
1524
- }
1525
- // fine-sponziello
1526
- // this.conversationHandlerService = this.chatManager.getConversationHandlerByConversationId(this.conversationWith)
1527
- const senderId = <span class="cstat-no" title="statement not covered" >this.senderId;</span>
1528
- const projectid = <span class="cstat-no" title="statement not covered" >this.projectid;</span>
1529
- const channelType = <span class="cstat-no" title="statement not covered" >this.channelType;</span>
1530
- const userFullname = <span class="cstat-no" title="statement not covered" >this.userFullname;</span>
1531
- const userEmail = <span class="cstat-no" title="statement not covered" >this.userEmail;</span>
1532
- const conversationWith = <span class="cstat-no" title="statement not covered" >this.conversationWith;</span>
1533
-
1534
- &nbsp;
1535
- <span class="cstat-no" title="statement not covered" > if (userFullname) {</span>
1536
- <span class="cstat-no" title="statement not covered" > recipientFullname = userFullname;</span>
1537
- } else <span class="cstat-no" title="statement not covered" >if (userEmail) {</span>
1538
- <span class="cstat-no" title="statement not covered" > recipientFullname = userEmail;</span>
1539
- } else <span class="cstat-no" title="statement not covered" >if (attributes &amp;&amp; attributes['userFullname']) {</span>
1540
- <span class="cstat-no" title="statement not covered" > recipientFullname = attributes['userFullname'];</span>
1541
- } else {
1542
- <span class="cstat-no" title="statement not covered" > recipientFullname = this.translationMap.get('GUEST_LABEL');</span>
1543
- }
1544
- &nbsp;
1545
- <span class="cstat-no" title="statement not covered" > this.onBeforeMessageSent.emit({</span>
1546
- senderFullname: recipientFullname,
1547
- text: msg,
1548
- type: type,
1549
- metadata: metadata,
1550
- conversationWith: conversationWith,
1551
- recipientFullname: recipientFullname,
1552
- attributes : attributes,
1553
- projectid: projectid,
1554
- channelType: channelType
1555
- })
1556
-
1557
- const messageSent = <span class="cstat-no" title="statement not covered" >this.conversationHandlerService.sendMessage(</span>
1558
- msg,
1559
- type,
1560
- metadata,
1561
- conversationWith,
1562
- recipientFullname,
1563
- senderId,
1564
- recipientFullname,
1565
- channelType ,
1566
- attributes
1567
- );
1568
- &nbsp;
1569
- <span class="cstat-no" title="statement not covered" > this.onAfterSendMessage.emit(messageSent)</span>
1570
- // this.isNewConversation = false;
1571
- &nbsp;
1572
- //TODO-GAB: da rivedere
1573
- <span class="cstat-no" title="statement not covered" > try {</span>
1574
- const target = <span class="cstat-no" title="statement not covered" >document.getElementById('chat21-main-message-context') as HTMLInputElement;</span>
1575
- <span class="cstat-no" title="statement not covered" > target.value = '';</span>
1576
- <span class="cstat-no" title="statement not covered" > target.style.height = this.HEIGHT_DEFAULT;</span>
1577
- // console.log('target.style.height: ', target.style.height);
1578
- } catch (e) {
1579
- <span class="cstat-no" title="statement not covered" > this.logger.error('[CONV-FOOTER] &gt; Error :' + e);</span>
1580
- }
1581
- <span class="cstat-no" title="statement not covered" > this.restoreTextArea();</span>
1582
- }
1583
- }
1584
- &nbsp;
1585
- <span class="fstat-no" title="function not covered" > private r</span>estoreTextArea() {
1586
- // that.logger.debug('[CONV-FOOTER] AppComponent:restoreTextArea::restoreTextArea');
1587
- <span class="cstat-no" title="statement not covered" > this.resizeInputField();</span>
1588
- const textArea = (&lt;HTMLInputElement&gt;<span class="cstat-no" title="statement not covered" >document.getElementById('chat21-main-message-context'));</span>
1589
- <span class="cstat-no" title="statement not covered" > this.textInputTextArea = ''; </span>// clear the textarea
1590
- <span class="cstat-no" title="statement not covered" > if (textArea) {</span>
1591
- <span class="cstat-no" title="statement not covered" > textArea.value = ''; </span> // clear the textarea
1592
- <span class="cstat-no" title="statement not covered" > textArea.placeholder = this.translationMap.get('LABEL_PLACEHOLDER'); </span> // restore the placholder
1593
- <span class="cstat-no" title="statement not covered" > if(textArea.style.height &gt; this.HEIGHT_DEFAULT){</span>
1594
- <span class="cstat-no" title="statement not covered" > document.getElementById('chat21-button-send').style.removeProperty('right')</span>
1595
- }
1596
- <span class="cstat-no" title="statement not covered" > this.logger.debug('[CONV-FOOTER] AppComponent:restoreTextArea::restoreTextArea::textArea:', 'restored');</span>
1597
- }
1598
- <span class="cstat-no" title="statement not covered" > this.setFocusOnId('chat21-main-message-context');</span>
1599
- }
1600
- &nbsp;
1601
- /**
1602
- * resize the textarea
1603
- * called whenever the content of the textarea changes
1604
- * set 'typing' state
1605
- */
1606
- <span class="fstat-no" title="function not covered" > resizeInputField(</span>) {
1607
- <span class="cstat-no" title="statement not covered" > try {</span>
1608
- const target = <span class="cstat-no" title="statement not covered" >document.getElementById('chat21-main-message-context') as HTMLInputElement;</span>
1609
- // tslint:disable-next-line:max-line-length
1610
- // that.logger.debug('[CONV-FOOTER] H:: this.textInputTextArea', (document.getElementById('chat21-main-message-context') as HTMLInputElement).value , target.style.height, target.scrollHeight, target.offsetHeight, target.clientHeight);
1611
- <span class="cstat-no" title="statement not covered" > target? target.style.height = '100%': null;</span>
1612
- <span class="cstat-no" title="statement not covered" > if (target &amp;&amp; target.value === '\n') {</span>
1613
- <span class="cstat-no" title="statement not covered" > target.value = '';</span>
1614
- <span class="cstat-no" title="statement not covered" > target.style.height = this.HEIGHT_DEFAULT;</span>
1615
- } else <span class="cstat-no" title="statement not covered" >if (target &amp;&amp; target.scrollHeight &gt; target.offsetHeight) {</span>
1616
- <span class="cstat-no" title="statement not covered" > target.style.height = target.scrollHeight + 2 + 'px';</span>
1617
- <span class="cstat-no" title="statement not covered" > target.style.minHeight = this.HEIGHT_DEFAULT;</span>
1618
- } else <span class="cstat-no" title="statement not covered" >if (target) {</span>
1619
- <span class="cstat-no" title="statement not covered" > target.style.height = this.HEIGHT_DEFAULT;</span>
1620
- // segno sto scrivendo
1621
- // target.offsetHeight - 15 + 'px';
1622
- }
1623
- //this.setWritingMessages(target.value);
1624
- <span class="cstat-no" title="statement not covered" > this.onChangeTextArea.emit({textAreaEl: target, minHeightDefault: this.HEIGHT_DEFAULT})</span>
1625
- } catch (e) {
1626
- <span class="cstat-no" title="statement not covered" > this.logger.error('[CONV-FOOTER] &gt; Error :' + e);</span>
1627
- }
1628
- }
1629
- &nbsp;
1630
- <span class="fstat-no" title="function not covered" > onTextAreaChange(</span>){
1631
- <span class="cstat-no" title="statement not covered" > this.resizeInputField()</span>
1632
- <span class="cstat-no" title="statement not covered" > this.setWritingMessages(this.textInputTextArea)</span>
1633
- }
1634
- &nbsp;
1635
- <span class="fstat-no" title="function not covered" > onSendPressed(</span>event) {
1636
- <span class="cstat-no" title="statement not covered" > this.logger.debug('[CONV-FOOTER] onSendPressed:event', event);</span>
1637
- <span class="cstat-no" title="statement not covered" > event.preventDefault();</span>
1638
- <span class="cstat-no" title="statement not covered" > this.logger.debug('[CONV-FOOTER] AppComponent::onSendPressed::isFilePendingToUpload:', this.isFilePendingToUpload);</span>
1639
- <span class="cstat-no" title="statement not covered" > if (this.isFilePendingToUpload) {</span>
1640
- <span class="cstat-no" title="statement not covered" > this.logger.debug('[CONV-FOOTER] AppComponent::onSendPressed', 'is a file');</span>
1641
- // its a file
1642
- <span class="cstat-no" title="statement not covered" > this.loadFile();</span>
1643
- <span class="cstat-no" title="statement not covered" > this.isFilePendingToUpload = false;</span>
1644
- // disabilito pulsanti
1645
- <span class="cstat-no" title="statement not covered" > this.logger.debug('[CONV-FOOTER] AppComponent::onSendPressed::isFilePendingToUpload:', this.isFilePendingToUpload);</span>
1646
- } else {
1647
- <span class="cstat-no" title="statement not covered" > if ( this.textInputTextArea &amp;&amp; this.textInputTextArea.length &gt; 0 ) {</span>
1648
- <span class="cstat-no" title="statement not covered" > this.logger.debug('[CONV-FOOTER] AppComponent::onSendPressed', 'is a message');</span>
1649
- // its a message
1650
- <span class="cstat-no" title="statement not covered" > if (this.textInputTextArea.trim() !== '') {</span>
1651
- // that.logger.debug('[CONV-FOOTER] sendMessage -&gt; ', this.textInputTextArea);
1652
- // this.resizeInputField();
1653
- // this.messagingService.sendMessage(msg, TYPE_MSG_TEXT);
1654
- // this.setDepartment();
1655
- // this.textInputTextArea = replaceBr(this.textInputTextArea);
1656
- <span class="cstat-no" title="statement not covered" > this.sendMessage(this.textInputTextArea, TYPE_MSG_TEXT);</span>
1657
- // this.restoreTextArea();
1658
- }
1659
- // restore the text area
1660
- // this.restoreTextArea();
1661
- }
1662
- }
1663
- }
1664
- &nbsp;
1665
- <span class="fstat-no" title="function not covered" > onEmojiiPickerClicked(</span>){
1666
- //OPEN EMOJII PICKER
1667
- <span class="cstat-no" title="statement not covered" > this.onEmojiiPickerShow.emit(!this.isEmojiiPickerShow)</span>
1668
- }
1669
- &nbsp;
1670
- <span class="fstat-no" title="function not covered" > addEmoji(</span>event){
1671
- <span class="cstat-no" title="statement not covered" > this.onEmojiiPickerShow.emit(false); </span>//de-activate emojii picker on select
1672
- <span class="cstat-no" title="statement not covered" > this.textInputTextArea = this.textInputTextArea.trimStart() + event.emoji.native + " "</span>
1673
- <span class="cstat-no" title="statement not covered" > this.setFocusOnId('chat21-main-message-context')</span>
1674
- }
1675
- &nbsp;
1676
- &nbsp;
1677
- <span class="fstat-no" title="function not covered" > openNewConversation(</span>){
1678
- <span class="cstat-no" title="statement not covered" > this.onNewConversationButtonClicked.emit();</span>
1679
- }
1680
- &nbsp;
1681
- <span class="fstat-no" title="function not covered" > onContinueConversation(</span>){
1682
- <span class="cstat-no" title="statement not covered" > this.hideTextAreaContent = false;</span>
1683
- <span class="cstat-no" title="statement not covered" > this.onBackButton.emit(false)</span>
1684
- <span class="cstat-no" title="statement not covered" > this.restoreTextArea()</span>
1685
- }
1686
- &nbsp;
1687
- <span class="fstat-no" title="function not covered" > onBackButtonFN(</span>){
1688
- <span class="cstat-no" title="statement not covered" > this.onBackButton.emit(false)</span>
1689
- }
1690
- &nbsp;
1691
- <span class="fstat-no" title="function not covered" > setFocusOnId(</span>id) {
1692
- <span class="cstat-no" title="statement not covered" > if(!this.isMobile){</span>
1693
- <span class="cstat-no" title="statement not covered" > setTimeout(<span class="fstat-no" title="function not covered" >function () {</span></span>
1694
- const textarea = <span class="cstat-no" title="statement not covered" >document.getElementById(id);</span>
1695
- <span class="cstat-no" title="statement not covered" > if (textarea) {</span>
1696
- // that.logger.debug('[CONV-FOOTER] 1--------&gt; FOCUSSSSSS : ', textarea);
1697
- <span class="cstat-no" title="statement not covered" > textarea.setAttribute('value', ' ');</span>
1698
- <span class="cstat-no" title="statement not covered" > textarea.focus();</span>
1699
- }
1700
- }, 500);
1701
- }
1702
-
1703
- }
1704
- &nbsp;
1705
- <span class="fstat-no" title="function not covered" > removeFocusOnId(</span>id){
1706
- const textarea = <span class="cstat-no" title="statement not covered" >document.getElementById(id);</span>
1707
- <span class="cstat-no" title="statement not covered" > if (textarea) {</span>
1708
- <span class="cstat-no" title="statement not covered" > textarea.blur()</span>
1709
- }
1710
- }
1711
- &nbsp;
1712
- /**
1713
- *
1714
- * @param str
1715
- */
1716
- <span class="fstat-no" title="function not covered" > setWritingMessages(</span>str) {
1717
- //this.messagingService.setWritingMessages(str, this.g.channelType);
1718
- <span class="cstat-no" title="statement not covered" > this.typingService.setTyping(this.conversationWith, str, this.senderId, this.userFullname )</span>
1719
- }
1720
- &nbsp;
1721
- /**
1722
- * when I press a key I call this method which:
1723
- * check if 'enter' has been pressed
1724
- * if you clear text
1725
- * set field height as min by default
1726
- * takes out the focus and resets it after a few moments
1727
- * (this is a patch to keep the focus and eliminate the br of the send !!!)
1728
- * send message
1729
- * @param event
1730
- */
1731
- <span class="fstat-no" title="function not covered" > onkeypress(</span>event) {
1732
- const keyCode = <span class="cstat-no" title="statement not covered" >event.which || event.keyCode;</span>
1733
- // console.log('keycode', keyCode)
1734
- <span class="cstat-no" title="statement not covered" > this.textInputTextArea = ((document.getElementById('chat21-main-message-context') as HTMLInputElement).value);</span>
1735
- <span class="cstat-no" title="statement not covered" > if (keyCode === 13) { // ENTER pressed</span>
1736
- <span class="cstat-no" title="statement not covered" > if (this.textInputTextArea &amp;&amp; this.textInputTextArea.trim() !== '') {</span>
1737
- // that.logger.debug('[CONV-FOOTER] sendMessage -&gt; ', this.textInputTextArea);
1738
- // this.resizeInputField();
1739
- // this.messagingService.sendMessage(msg, TYPE_MSG_TEXT);
1740
- // this.setDepartment();
1741
- // this.textInputTextArea = replaceBr(this.textInputTextArea);
1742
- <span class="cstat-no" title="statement not covered" > this.sendMessage(this.textInputTextArea, TYPE_MSG_TEXT);</span>
1743
- // this.restoreTextArea();
1744
- }
1745
- } else <span class="cstat-no" title="statement not covered" >if (keyCode === 9) { // TAB pressed</span>
1746
- <span class="cstat-no" title="statement not covered" > event.preventDefault();</span>
1747
- }
1748
- }
1749
- &nbsp;
1750
-
1751
- /**
1752
- * HANDLE: cmd+enter, shiftKey+enter, alt+enter, ctrl+enter
1753
- * @param event
1754
- */
1755
- <span class="fstat-no" title="function not covered" > onkeydown(</span>event){
1756
- const keyCode = <span class="cstat-no" title="statement not covered" >event.which || event.keyCode;</span>
1757
- // metaKey -&gt; COMMAND , shiftKey -&gt; SHIFT, altKey -&gt; ALT, ctrlKey -&gt; CONTROL
1758
- <span class="cstat-no" title="statement not covered" > if( (event.metaKey || event.shiftKey || event.altKey || event.ctrlKey) &amp;&amp; keyCode===13){ </span>
1759
- <span class="cstat-no" title="statement not covered" > event.preventDefault();</span>
1760
- <span class="cstat-no" title="statement not covered" > this.textInputTextArea += '\r\n';</span>
1761
- <span class="cstat-no" title="statement not covered" > this.resizeInputField();</span>
1762
- }
1763
- }
1764
-
1765
- <span class="fstat-no" title="function not covered" > onPaste(</span>event){
1766
- <span class="cstat-no" title="statement not covered" > this.resizeInputField()</span>
1767
- const items = <span class="cstat-no" title="statement not covered" >(event.clipboardData || event.originalEvent.clipboardData).items;</span>
1768
- let file = <span class="cstat-no" title="statement not covered" >null;</span>
1769
- <span class="cstat-no" title="statement not covered" > this.logger.debug('[CONV-FOOTER] onPaste items ', items);</span>
1770
- <span class="cstat-no" title="statement not covered" > for (const item<span class="cstat-no" title="statement not covered" > of <span class="cstat-no" title="statement not covered" >i</span>tems<span class="cstat-no" title="statement not covered" >) {</span></span></span>
1771
- <span class="cstat-no" title="statement not covered" > this.logger.debug('[CONV-FOOTER] onPaste item ', item);</span>
1772
- <span class="cstat-no" title="statement not covered" > this.logger.debug('[CONV-FOOTER] onPaste item.type ', item.type);</span>
1773
- <span class="cstat-no" title="statement not covered" > if (item.type.startsWith("image")) {</span>
1774
- // SEND TEXT MESSAGE IF EXIST
1775
- // if(this.textInputTextArea){
1776
- // this.logger.debug('[CONV-FOOTER] onPaste texttt ', this.textInputTextArea);
1777
- // this.sendMessage(this.textInputTextArea, TYPE_MSG_TEXT)
1778
- // }
1779
- &nbsp;
1780
- <span class="cstat-no" title="statement not covered" > try {</span>
1781
- <span class="cstat-no" title="statement not covered" > this.restoreTextArea();</span>
1782
- } catch(e) {
1783
- <span class="cstat-no" title="statement not covered" > this.logger.error('[CONV-FOOTER] onPaste - error while restoring textArea:',e)</span>
1784
- }
1785
-
1786
- <span class="cstat-no" title="statement not covered" > this.logger.debug('[CONV-FOOTER] onPaste item.type', item.type);</span>
1787
- <span class="cstat-no" title="statement not covered" > file = item.getAsFile();</span>
1788
- const data = <span class="cstat-no" title="statement not covered" >{target: new ClipboardEvent('').clipboardData || new DataTransfer()};</span>
1789
- <span class="cstat-no" title="statement not covered" > data.target.items.add(new File([file], file.name, { type: file.type }));</span>
1790
- <span class="cstat-no" title="statement not covered" > this.logger.debug('[CONV-FOOTER] onPaste data', data);</span>
1791
- <span class="cstat-no" title="statement not covered" > this.logger.debug('[CONV-FOOTER] onPaste file ', file);</span>
1792
- <span class="cstat-no" title="statement not covered" > this.detectFiles(data)</span>
1793
- }
1794
- }
1795
- }
1796
- &nbsp;
1797
- }</pre></td></tr></table></pre>
1798
-
1799
- <div class='push'></div><!-- for sticky footer -->
1800
- </div><!-- /wrapper -->
1801
- <div class='footer quiet pad2 space-top1 center small'>
1802
- Code coverage generated by
1803
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1804
- at Tue Nov 29 2022 09:13:07 GMT+0100 (Ora standard dell’Europa centrale)
1805
- </div>
1806
- <script src="../../../../../prettify.js"></script>
1807
- <script>
1808
- window.onload = function () {
1809
- prettyPrint();
1810
- };
1811
- </script>
1812
- <script src="../../../../../sorter.js"></script>
1813
- <script src="../../../../../block-navigation.js"></script>
1814
- </body>
1815
- </html>
1816
-