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

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 (204) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/angular.json +2 -1
  3. package/coverage/widget/base.css +224 -0
  4. package/coverage/widget/block-navigation.js +87 -0
  5. package/coverage/widget/favicon.png +0 -0
  6. package/coverage/widget/index.html +881 -0
  7. package/coverage/widget/lcov.info +10516 -0
  8. package/coverage/widget/polyfills.ts.html +277 -0
  9. package/coverage/widget/prettify.css +1 -0
  10. package/coverage/widget/prettify.js +2 -0
  11. package/coverage/widget/sort-arrow-sprite.png +0 -0
  12. package/coverage/widget/sorter.js +196 -0
  13. package/coverage/widget/src/app/app.component.ts.html +6328 -0
  14. package/coverage/widget/src/app/component/conversation-detail/conversation/conversation.component.ts.html +3871 -0
  15. package/coverage/widget/src/app/component/conversation-detail/conversation/index.html +116 -0
  16. package/coverage/widget/src/app/component/conversation-detail/conversation-content/conversation-content.component.ts.html +925 -0
  17. package/coverage/widget/src/app/component/conversation-detail/conversation-content/index.html +116 -0
  18. package/coverage/widget/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.ts.html +1816 -0
  19. package/coverage/widget/src/app/component/conversation-detail/conversation-footer/index.html +116 -0
  20. package/coverage/widget/src/app/component/conversation-detail/conversation-header/conversation-header.component.ts.html +811 -0
  21. package/coverage/widget/src/app/component/conversation-detail/conversation-header/index.html +116 -0
  22. package/coverage/widget/src/app/component/conversation-detail/conversation-internal-frame/conversation-internal-frame.component.ts.html +397 -0
  23. package/coverage/widget/src/app/component/conversation-detail/conversation-internal-frame/index.html +116 -0
  24. package/coverage/widget/src/app/component/conversation-detail/conversation-preview/conversation-preview.component.ts.html +991 -0
  25. package/coverage/widget/src/app/component/conversation-detail/conversation-preview/index.html +116 -0
  26. package/coverage/widget/src/app/component/eyeeye-catcher-card/eyeeye-catcher-card.component.ts.html +586 -0
  27. package/coverage/widget/src/app/component/eyeeye-catcher-card/index.html +116 -0
  28. package/coverage/widget/src/app/component/form/form-builder/form-builder.component.ts.html +664 -0
  29. package/coverage/widget/src/app/component/form/form-builder/index.html +116 -0
  30. package/coverage/widget/src/app/component/form/inputs/form-checkbox/form-checkbox.component.ts.html +208 -0
  31. package/coverage/widget/src/app/component/form/inputs/form-checkbox/index.html +116 -0
  32. package/coverage/widget/src/app/component/form/inputs/form-label/form-label.component.ts.html +157 -0
  33. package/coverage/widget/src/app/component/form/inputs/form-label/index.html +116 -0
  34. package/coverage/widget/src/app/component/form/inputs/form-radio-button/form-radio-button.component.ts.html +130 -0
  35. package/coverage/widget/src/app/component/form/inputs/form-radio-button/index.html +116 -0
  36. package/coverage/widget/src/app/component/form/inputs/form-select/form-select.component.ts.html +130 -0
  37. package/coverage/widget/src/app/component/form/inputs/form-select/index.html +116 -0
  38. package/coverage/widget/src/app/component/form/inputs/form-text/form-text.component.ts.html +301 -0
  39. package/coverage/widget/src/app/component/form/inputs/form-text/index.html +116 -0
  40. package/coverage/widget/src/app/component/form/inputs/form-textarea/form-textarea.component.ts.html +358 -0
  41. package/coverage/widget/src/app/component/form/inputs/form-textarea/index.html +116 -0
  42. package/coverage/widget/src/app/component/form/prechat-form/index.html +116 -0
  43. package/coverage/widget/src/app/component/form/prechat-form/prechat-form.component.ts.html +565 -0
  44. package/coverage/widget/src/app/component/home/home.component.ts.html +559 -0
  45. package/coverage/widget/src/app/component/home/index.html +116 -0
  46. package/coverage/widget/src/app/component/home-conversations/home-conversations.component.ts.html +985 -0
  47. package/coverage/widget/src/app/component/home-conversations/index.html +116 -0
  48. package/coverage/widget/src/app/component/last-message/index.html +116 -0
  49. package/coverage/widget/src/app/component/last-message/last-message.component.ts.html +484 -0
  50. package/coverage/widget/src/app/component/launcher-button/index.html +116 -0
  51. package/coverage/widget/src/app/component/launcher-button/launcher-button.component.ts.html +307 -0
  52. package/coverage/widget/src/app/component/list-all-conversations/index.html +116 -0
  53. package/coverage/widget/src/app/component/list-all-conversations/list-all-conversations.component.ts.html +676 -0
  54. package/coverage/widget/src/app/component/list-conversations/index.html +116 -0
  55. package/coverage/widget/src/app/component/list-conversations/list-conversations.component.ts.html +475 -0
  56. package/coverage/widget/src/app/component/menu-options/index.html +116 -0
  57. package/coverage/widget/src/app/component/menu-options/menu-options.component.ts.html +226 -0
  58. package/coverage/widget/src/app/component/message/avatar/avatar.component.ts.html +271 -0
  59. package/coverage/widget/src/app/component/message/avatar/index.html +116 -0
  60. package/coverage/widget/src/app/component/message/bubble-message/bubble-message.component.ts.html +655 -0
  61. package/coverage/widget/src/app/component/message/bubble-message/index.html +116 -0
  62. package/coverage/widget/src/app/component/message/buttons/action-button/action-button.component.ts.html +274 -0
  63. package/coverage/widget/src/app/component/message/buttons/action-button/index.html +116 -0
  64. package/coverage/widget/src/app/component/message/buttons/link-button/index.html +116 -0
  65. package/coverage/widget/src/app/component/message/buttons/link-button/link-button.component.ts.html +232 -0
  66. package/coverage/widget/src/app/component/message/buttons/text-button/index.html +116 -0
  67. package/coverage/widget/src/app/component/message/buttons/text-button/text-button.component.ts.html +235 -0
  68. package/coverage/widget/src/app/component/message/frame/frame.component.ts.html +199 -0
  69. package/coverage/widget/src/app/component/message/frame/index.html +116 -0
  70. package/coverage/widget/src/app/component/message/html/html.component.ts.html +184 -0
  71. package/coverage/widget/src/app/component/message/html/index.html +116 -0
  72. package/coverage/widget/src/app/component/message/image/image.component.ts.html +394 -0
  73. package/coverage/widget/src/app/component/message/image/index.html +116 -0
  74. package/coverage/widget/src/app/component/message/info-message/index.html +116 -0
  75. package/coverage/widget/src/app/component/message/info-message/info-message.component.ts.html +211 -0
  76. package/coverage/widget/src/app/component/message/like-unlike/index.html +116 -0
  77. package/coverage/widget/src/app/component/message/like-unlike/like-unlike.component.ts.html +151 -0
  78. package/coverage/widget/src/app/component/message/return-receipt/index.html +116 -0
  79. package/coverage/widget/src/app/component/message/return-receipt/return-receipt.component.ts.html +157 -0
  80. package/coverage/widget/src/app/component/message/text/index.html +116 -0
  81. package/coverage/widget/src/app/component/message/text/text.component.ts.html +190 -0
  82. package/coverage/widget/src/app/component/message-attachment/index.html +116 -0
  83. package/coverage/widget/src/app/component/message-attachment/message-attachment.component.ts.html +343 -0
  84. package/coverage/widget/src/app/component/selection-department/index.html +116 -0
  85. package/coverage/widget/src/app/component/selection-department/selection-department.component.ts.html +676 -0
  86. package/coverage/widget/src/app/component/send-button/index.html +116 -0
  87. package/coverage/widget/src/app/component/send-button/send-button.component.ts.html +154 -0
  88. package/coverage/widget/src/app/component/star-rating-widget/index.html +116 -0
  89. package/coverage/widget/src/app/component/star-rating-widget/star-rating-widget.component.ts.html +451 -0
  90. package/coverage/widget/src/app/directives/html-entities-encode.pipe.ts.html +136 -0
  91. package/coverage/widget/src/app/directives/index.html +146 -0
  92. package/coverage/widget/src/app/directives/marked.pipe.ts.html +166 -0
  93. package/coverage/widget/src/app/directives/safe-html.pipe.ts.html +136 -0
  94. package/coverage/widget/src/app/index.html +116 -0
  95. package/coverage/widget/src/app/providers/app-config.service.ts.html +247 -0
  96. package/coverage/widget/src/app/providers/global-settings.service.ts.html +5698 -0
  97. package/coverage/widget/src/app/providers/index.html +206 -0
  98. package/coverage/widget/src/app/providers/settings-saver.service.ts.html +253 -0
  99. package/coverage/widget/src/app/providers/star-rating-widget.service.ts.html +385 -0
  100. package/coverage/widget/src/app/providers/storage.service.ts.html +745 -0
  101. package/coverage/widget/src/app/providers/translator.service.ts.html +1498 -0
  102. package/coverage/widget/src/app/providers/waiting.service.ts.html +178 -0
  103. package/coverage/widget/src/app/utils/constants.ts.html +304 -0
  104. package/coverage/widget/src/app/utils/globals.ts.html +1939 -0
  105. package/coverage/widget/src/app/utils/index.html +146 -0
  106. package/coverage/widget/src/app/utils/utils.ts.html +1240 -0
  107. package/coverage/widget/src/chat21-core/models/conversation.ts.html +160 -0
  108. package/coverage/widget/src/chat21-core/models/index.html +146 -0
  109. package/coverage/widget/src/chat21-core/models/upload.ts.html +118 -0
  110. package/coverage/widget/src/chat21-core/models/user.ts.html +133 -0
  111. package/coverage/widget/src/chat21-core/providers/abstract/app-storage.service.ts.html +142 -0
  112. package/coverage/widget/src/chat21-core/providers/abstract/archivedconversations-handler.service.ts.html +184 -0
  113. package/coverage/widget/src/chat21-core/providers/abstract/conversation-handler-builder.service.ts.html +121 -0
  114. package/coverage/widget/src/chat21-core/providers/abstract/conversation-handler.service.ts.html +235 -0
  115. package/coverage/widget/src/chat21-core/providers/abstract/conversations-handler.service.ts.html +208 -0
  116. package/coverage/widget/src/chat21-core/providers/abstract/groups-handler.service.ts.html +160 -0
  117. package/coverage/widget/src/chat21-core/providers/abstract/image-repo.service.ts.html +169 -0
  118. package/coverage/widget/src/chat21-core/providers/abstract/index.html +296 -0
  119. package/coverage/widget/src/chat21-core/providers/abstract/logger.service.ts.html +136 -0
  120. package/coverage/widget/src/chat21-core/providers/abstract/messagingAuth.service.ts.html +238 -0
  121. package/coverage/widget/src/chat21-core/providers/abstract/notifications.service.ts.html +172 -0
  122. package/coverage/widget/src/chat21-core/providers/abstract/presence.service.ts.html +190 -0
  123. package/coverage/widget/src/chat21-core/providers/abstract/typing.service.ts.html +187 -0
  124. package/coverage/widget/src/chat21-core/providers/abstract/upload.service.ts.html +178 -0
  125. package/coverage/widget/src/chat21-core/providers/chat-manager.ts.html +895 -0
  126. package/coverage/widget/src/chat21-core/providers/custom-translate.service.ts.html +223 -0
  127. package/coverage/widget/src/chat21-core/providers/index.html +131 -0
  128. package/coverage/widget/src/chat21-core/providers/logger/customLogger.ts.html +265 -0
  129. package/coverage/widget/src/chat21-core/providers/logger/index.html +131 -0
  130. package/coverage/widget/src/chat21-core/providers/logger/loggerInstance.ts.html +142 -0
  131. package/coverage/widget/src/chat21-core/providers/tiledesk/index.html +131 -0
  132. package/coverage/widget/src/chat21-core/providers/tiledesk/tiledesk-auth.service.ts.html +655 -0
  133. package/coverage/widget/src/chat21-core/providers/tiledesk/tiledesk-requests.service.ts.html +241 -0
  134. package/coverage/widget/src/chat21-core/utils/constants.ts.html +409 -0
  135. package/coverage/widget/src/chat21-core/utils/index.html +176 -0
  136. package/coverage/widget/src/chat21-core/utils/triggerHandler.ts.html +1069 -0
  137. package/coverage/widget/src/chat21-core/utils/user-typing/index.html +116 -0
  138. package/coverage/widget/src/chat21-core/utils/user-typing/user-typing.component.ts.html +184 -0
  139. package/coverage/widget/src/chat21-core/utils/utils-message.ts.html +637 -0
  140. package/coverage/widget/src/chat21-core/utils/utils-user.ts.html +229 -0
  141. package/coverage/widget/src/chat21-core/utils/utils.ts.html +2221 -0
  142. package/coverage/widget/src/environments/environment.ts.html +205 -0
  143. package/coverage/widget/src/environments/index.html +116 -0
  144. package/coverage/widget/src/index.html +131 -0
  145. package/coverage/widget/src/models/index.html +116 -0
  146. package/coverage/widget/src/models/project.ts.html +319 -0
  147. package/coverage/widget/src/polyfills.ts.html +277 -0
  148. package/coverage/widget/src/test.ts.html +142 -0
  149. package/dist/assets/i18n/en.json +1 -1
  150. package/dist/assets/i18n/es.json +22 -9
  151. package/dist/assets/i18n/fr.json +20 -7
  152. package/dist/assets/i18n/it.json +24 -11
  153. package/dist/assets/twp/index-dev.html +1 -1
  154. package/dist/environments/real_data/widget-config-docker.json +0 -1
  155. package/dist/environments/real_data/widget-config-firebase.json +2 -2
  156. package/dist/environments/real_data/widget-config-native-mqtt.json +0 -1
  157. package/dist/iframe-style.css +8 -1
  158. package/dist/launch.js +1 -1
  159. package/dist/main.js +1 -1
  160. package/dist/vendor.js +1 -1
  161. package/package.json +1 -1
  162. package/src/app/app.component.scss +4 -3
  163. package/src/app/app.component.spec.ts +59 -18
  164. package/src/app/component/conversation-detail/conversation/conversation.component.spec.ts +12 -1
  165. package/src/app/component/conversation-detail/conversation/conversation.component.ts +4 -2
  166. package/src/app/component/conversation-detail/conversation-content/conversation-content.component.spec.ts +7 -4
  167. package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.spec.ts +11 -3
  168. package/src/app/component/conversation-detail/conversation-header/conversation-header.component.spec.ts +11 -4
  169. package/src/app/component/conversation-detail/conversation-preview/conversation-preview.component.spec.ts +9 -59
  170. package/src/app/component/form/form-builder/form-builder.component.spec.ts +9 -1
  171. package/src/app/component/form/inputs/form-textarea/form-textarea.component.html +5 -5
  172. package/src/app/component/form/inputs/form-textarea/form-textarea.component.spec.ts +1 -1
  173. package/src/app/component/form/inputs/form-textarea/form-textarea.component.ts +1 -1
  174. package/src/app/component/home/home.component.spec.ts +12 -3
  175. package/src/app/component/home-conversations/home-conversations.component.spec.ts +9 -1
  176. package/src/app/component/list-all-conversations/list-all-conversations.component.spec.ts +9 -11
  177. package/src/app/component/list-conversations/list-conversations.component.spec.ts +9 -1
  178. package/src/app/component/message/buttons/action-button/action-button.component.scss +1 -0
  179. package/src/app/component/message/buttons/link-button/link-button.component.scss +1 -0
  180. package/src/app/component/message/buttons/text-button/text-button.component.scss +1 -0
  181. package/src/app/component/message/frame/frame.component.spec.ts +16 -3
  182. package/src/app/component/message/frame/frame.component.ts +2 -2
  183. package/src/app/component/message/image/image.component.ts +46 -0
  184. package/src/app/component/message/info-message/info-message.component.spec.ts +9 -1
  185. package/src/app/component/message/return-receipt/return-receipt.component.spec.ts +17 -2
  186. package/src/app/component/message/text/text.component.spec.ts +2 -2
  187. package/src/app/providers/global-settings.service.ts +14 -0
  188. package/src/app/utils/globals.ts +4 -1
  189. package/src/assets/i18n/en.json +1 -1
  190. package/src/assets/i18n/es.json +22 -9
  191. package/src/assets/i18n/fr.json +20 -7
  192. package/src/assets/i18n/it.json +24 -11
  193. package/src/assets/twp/index-dev.html +1 -1
  194. package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +5 -3
  195. package/src/chat21-core/providers/mqtt/mqtt-conversation-handler.ts +5 -3
  196. package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.spec.ts +29 -19
  197. package/src/chat21-core/utils/utils-message.ts +1 -1
  198. package/src/chat21-core/utils/utils.ts +3 -3
  199. package/src/environments/real_data/widget-config-docker.json +0 -1
  200. package/src/environments/real_data/widget-config-firebase.json +2 -2
  201. package/src/environments/real_data/widget-config-native-mqtt.json +0 -1
  202. package/src/iframe-style.css +8 -1
  203. package/src/launch.js +1 -1
  204. package/e2e/protractor.conf.js +0 -32
@@ -0,0 +1,1939 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/app/utils/globals.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/utils</a> globals.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">73.33% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>121/165</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">15.38% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>6/39</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">30.77% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>4/13</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">73.17% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>120/164</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line medium'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a>
199
+ <a name='L134'></a><a href='#L134'>134</a>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a>
202
+ <a name='L137'></a><a href='#L137'>137</a>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a>
244
+ <a name='L179'></a><a href='#L179'>179</a>
245
+ <a name='L180'></a><a href='#L180'>180</a>
246
+ <a name='L181'></a><a href='#L181'>181</a>
247
+ <a name='L182'></a><a href='#L182'>182</a>
248
+ <a name='L183'></a><a href='#L183'>183</a>
249
+ <a name='L184'></a><a href='#L184'>184</a>
250
+ <a name='L185'></a><a href='#L185'>185</a>
251
+ <a name='L186'></a><a href='#L186'>186</a>
252
+ <a name='L187'></a><a href='#L187'>187</a>
253
+ <a name='L188'></a><a href='#L188'>188</a>
254
+ <a name='L189'></a><a href='#L189'>189</a>
255
+ <a name='L190'></a><a href='#L190'>190</a>
256
+ <a name='L191'></a><a href='#L191'>191</a>
257
+ <a name='L192'></a><a href='#L192'>192</a>
258
+ <a name='L193'></a><a href='#L193'>193</a>
259
+ <a name='L194'></a><a href='#L194'>194</a>
260
+ <a name='L195'></a><a href='#L195'>195</a>
261
+ <a name='L196'></a><a href='#L196'>196</a>
262
+ <a name='L197'></a><a href='#L197'>197</a>
263
+ <a name='L198'></a><a href='#L198'>198</a>
264
+ <a name='L199'></a><a href='#L199'>199</a>
265
+ <a name='L200'></a><a href='#L200'>200</a>
266
+ <a name='L201'></a><a href='#L201'>201</a>
267
+ <a name='L202'></a><a href='#L202'>202</a>
268
+ <a name='L203'></a><a href='#L203'>203</a>
269
+ <a name='L204'></a><a href='#L204'>204</a>
270
+ <a name='L205'></a><a href='#L205'>205</a>
271
+ <a name='L206'></a><a href='#L206'>206</a>
272
+ <a name='L207'></a><a href='#L207'>207</a>
273
+ <a name='L208'></a><a href='#L208'>208</a>
274
+ <a name='L209'></a><a href='#L209'>209</a>
275
+ <a name='L210'></a><a href='#L210'>210</a>
276
+ <a name='L211'></a><a href='#L211'>211</a>
277
+ <a name='L212'></a><a href='#L212'>212</a>
278
+ <a name='L213'></a><a href='#L213'>213</a>
279
+ <a name='L214'></a><a href='#L214'>214</a>
280
+ <a name='L215'></a><a href='#L215'>215</a>
281
+ <a name='L216'></a><a href='#L216'>216</a>
282
+ <a name='L217'></a><a href='#L217'>217</a>
283
+ <a name='L218'></a><a href='#L218'>218</a>
284
+ <a name='L219'></a><a href='#L219'>219</a>
285
+ <a name='L220'></a><a href='#L220'>220</a>
286
+ <a name='L221'></a><a href='#L221'>221</a>
287
+ <a name='L222'></a><a href='#L222'>222</a>
288
+ <a name='L223'></a><a href='#L223'>223</a>
289
+ <a name='L224'></a><a href='#L224'>224</a>
290
+ <a name='L225'></a><a href='#L225'>225</a>
291
+ <a name='L226'></a><a href='#L226'>226</a>
292
+ <a name='L227'></a><a href='#L227'>227</a>
293
+ <a name='L228'></a><a href='#L228'>228</a>
294
+ <a name='L229'></a><a href='#L229'>229</a>
295
+ <a name='L230'></a><a href='#L230'>230</a>
296
+ <a name='L231'></a><a href='#L231'>231</a>
297
+ <a name='L232'></a><a href='#L232'>232</a>
298
+ <a name='L233'></a><a href='#L233'>233</a>
299
+ <a name='L234'></a><a href='#L234'>234</a>
300
+ <a name='L235'></a><a href='#L235'>235</a>
301
+ <a name='L236'></a><a href='#L236'>236</a>
302
+ <a name='L237'></a><a href='#L237'>237</a>
303
+ <a name='L238'></a><a href='#L238'>238</a>
304
+ <a name='L239'></a><a href='#L239'>239</a>
305
+ <a name='L240'></a><a href='#L240'>240</a>
306
+ <a name='L241'></a><a href='#L241'>241</a>
307
+ <a name='L242'></a><a href='#L242'>242</a>
308
+ <a name='L243'></a><a href='#L243'>243</a>
309
+ <a name='L244'></a><a href='#L244'>244</a>
310
+ <a name='L245'></a><a href='#L245'>245</a>
311
+ <a name='L246'></a><a href='#L246'>246</a>
312
+ <a name='L247'></a><a href='#L247'>247</a>
313
+ <a name='L248'></a><a href='#L248'>248</a>
314
+ <a name='L249'></a><a href='#L249'>249</a>
315
+ <a name='L250'></a><a href='#L250'>250</a>
316
+ <a name='L251'></a><a href='#L251'>251</a>
317
+ <a name='L252'></a><a href='#L252'>252</a>
318
+ <a name='L253'></a><a href='#L253'>253</a>
319
+ <a name='L254'></a><a href='#L254'>254</a>
320
+ <a name='L255'></a><a href='#L255'>255</a>
321
+ <a name='L256'></a><a href='#L256'>256</a>
322
+ <a name='L257'></a><a href='#L257'>257</a>
323
+ <a name='L258'></a><a href='#L258'>258</a>
324
+ <a name='L259'></a><a href='#L259'>259</a>
325
+ <a name='L260'></a><a href='#L260'>260</a>
326
+ <a name='L261'></a><a href='#L261'>261</a>
327
+ <a name='L262'></a><a href='#L262'>262</a>
328
+ <a name='L263'></a><a href='#L263'>263</a>
329
+ <a name='L264'></a><a href='#L264'>264</a>
330
+ <a name='L265'></a><a href='#L265'>265</a>
331
+ <a name='L266'></a><a href='#L266'>266</a>
332
+ <a name='L267'></a><a href='#L267'>267</a>
333
+ <a name='L268'></a><a href='#L268'>268</a>
334
+ <a name='L269'></a><a href='#L269'>269</a>
335
+ <a name='L270'></a><a href='#L270'>270</a>
336
+ <a name='L271'></a><a href='#L271'>271</a>
337
+ <a name='L272'></a><a href='#L272'>272</a>
338
+ <a name='L273'></a><a href='#L273'>273</a>
339
+ <a name='L274'></a><a href='#L274'>274</a>
340
+ <a name='L275'></a><a href='#L275'>275</a>
341
+ <a name='L276'></a><a href='#L276'>276</a>
342
+ <a name='L277'></a><a href='#L277'>277</a>
343
+ <a name='L278'></a><a href='#L278'>278</a>
344
+ <a name='L279'></a><a href='#L279'>279</a>
345
+ <a name='L280'></a><a href='#L280'>280</a>
346
+ <a name='L281'></a><a href='#L281'>281</a>
347
+ <a name='L282'></a><a href='#L282'>282</a>
348
+ <a name='L283'></a><a href='#L283'>283</a>
349
+ <a name='L284'></a><a href='#L284'>284</a>
350
+ <a name='L285'></a><a href='#L285'>285</a>
351
+ <a name='L286'></a><a href='#L286'>286</a>
352
+ <a name='L287'></a><a href='#L287'>287</a>
353
+ <a name='L288'></a><a href='#L288'>288</a>
354
+ <a name='L289'></a><a href='#L289'>289</a>
355
+ <a name='L290'></a><a href='#L290'>290</a>
356
+ <a name='L291'></a><a href='#L291'>291</a>
357
+ <a name='L292'></a><a href='#L292'>292</a>
358
+ <a name='L293'></a><a href='#L293'>293</a>
359
+ <a name='L294'></a><a href='#L294'>294</a>
360
+ <a name='L295'></a><a href='#L295'>295</a>
361
+ <a name='L296'></a><a href='#L296'>296</a>
362
+ <a name='L297'></a><a href='#L297'>297</a>
363
+ <a name='L298'></a><a href='#L298'>298</a>
364
+ <a name='L299'></a><a href='#L299'>299</a>
365
+ <a name='L300'></a><a href='#L300'>300</a>
366
+ <a name='L301'></a><a href='#L301'>301</a>
367
+ <a name='L302'></a><a href='#L302'>302</a>
368
+ <a name='L303'></a><a href='#L303'>303</a>
369
+ <a name='L304'></a><a href='#L304'>304</a>
370
+ <a name='L305'></a><a href='#L305'>305</a>
371
+ <a name='L306'></a><a href='#L306'>306</a>
372
+ <a name='L307'></a><a href='#L307'>307</a>
373
+ <a name='L308'></a><a href='#L308'>308</a>
374
+ <a name='L309'></a><a href='#L309'>309</a>
375
+ <a name='L310'></a><a href='#L310'>310</a>
376
+ <a name='L311'></a><a href='#L311'>311</a>
377
+ <a name='L312'></a><a href='#L312'>312</a>
378
+ <a name='L313'></a><a href='#L313'>313</a>
379
+ <a name='L314'></a><a href='#L314'>314</a>
380
+ <a name='L315'></a><a href='#L315'>315</a>
381
+ <a name='L316'></a><a href='#L316'>316</a>
382
+ <a name='L317'></a><a href='#L317'>317</a>
383
+ <a name='L318'></a><a href='#L318'>318</a>
384
+ <a name='L319'></a><a href='#L319'>319</a>
385
+ <a name='L320'></a><a href='#L320'>320</a>
386
+ <a name='L321'></a><a href='#L321'>321</a>
387
+ <a name='L322'></a><a href='#L322'>322</a>
388
+ <a name='L323'></a><a href='#L323'>323</a>
389
+ <a name='L324'></a><a href='#L324'>324</a>
390
+ <a name='L325'></a><a href='#L325'>325</a>
391
+ <a name='L326'></a><a href='#L326'>326</a>
392
+ <a name='L327'></a><a href='#L327'>327</a>
393
+ <a name='L328'></a><a href='#L328'>328</a>
394
+ <a name='L329'></a><a href='#L329'>329</a>
395
+ <a name='L330'></a><a href='#L330'>330</a>
396
+ <a name='L331'></a><a href='#L331'>331</a>
397
+ <a name='L332'></a><a href='#L332'>332</a>
398
+ <a name='L333'></a><a href='#L333'>333</a>
399
+ <a name='L334'></a><a href='#L334'>334</a>
400
+ <a name='L335'></a><a href='#L335'>335</a>
401
+ <a name='L336'></a><a href='#L336'>336</a>
402
+ <a name='L337'></a><a href='#L337'>337</a>
403
+ <a name='L338'></a><a href='#L338'>338</a>
404
+ <a name='L339'></a><a href='#L339'>339</a>
405
+ <a name='L340'></a><a href='#L340'>340</a>
406
+ <a name='L341'></a><a href='#L341'>341</a>
407
+ <a name='L342'></a><a href='#L342'>342</a>
408
+ <a name='L343'></a><a href='#L343'>343</a>
409
+ <a name='L344'></a><a href='#L344'>344</a>
410
+ <a name='L345'></a><a href='#L345'>345</a>
411
+ <a name='L346'></a><a href='#L346'>346</a>
412
+ <a name='L347'></a><a href='#L347'>347</a>
413
+ <a name='L348'></a><a href='#L348'>348</a>
414
+ <a name='L349'></a><a href='#L349'>349</a>
415
+ <a name='L350'></a><a href='#L350'>350</a>
416
+ <a name='L351'></a><a href='#L351'>351</a>
417
+ <a name='L352'></a><a href='#L352'>352</a>
418
+ <a name='L353'></a><a href='#L353'>353</a>
419
+ <a name='L354'></a><a href='#L354'>354</a>
420
+ <a name='L355'></a><a href='#L355'>355</a>
421
+ <a name='L356'></a><a href='#L356'>356</a>
422
+ <a name='L357'></a><a href='#L357'>357</a>
423
+ <a name='L358'></a><a href='#L358'>358</a>
424
+ <a name='L359'></a><a href='#L359'>359</a>
425
+ <a name='L360'></a><a href='#L360'>360</a>
426
+ <a name='L361'></a><a href='#L361'>361</a>
427
+ <a name='L362'></a><a href='#L362'>362</a>
428
+ <a name='L363'></a><a href='#L363'>363</a>
429
+ <a name='L364'></a><a href='#L364'>364</a>
430
+ <a name='L365'></a><a href='#L365'>365</a>
431
+ <a name='L366'></a><a href='#L366'>366</a>
432
+ <a name='L367'></a><a href='#L367'>367</a>
433
+ <a name='L368'></a><a href='#L368'>368</a>
434
+ <a name='L369'></a><a href='#L369'>369</a>
435
+ <a name='L370'></a><a href='#L370'>370</a>
436
+ <a name='L371'></a><a href='#L371'>371</a>
437
+ <a name='L372'></a><a href='#L372'>372</a>
438
+ <a name='L373'></a><a href='#L373'>373</a>
439
+ <a name='L374'></a><a href='#L374'>374</a>
440
+ <a name='L375'></a><a href='#L375'>375</a>
441
+ <a name='L376'></a><a href='#L376'>376</a>
442
+ <a name='L377'></a><a href='#L377'>377</a>
443
+ <a name='L378'></a><a href='#L378'>378</a>
444
+ <a name='L379'></a><a href='#L379'>379</a>
445
+ <a name='L380'></a><a href='#L380'>380</a>
446
+ <a name='L381'></a><a href='#L381'>381</a>
447
+ <a name='L382'></a><a href='#L382'>382</a>
448
+ <a name='L383'></a><a href='#L383'>383</a>
449
+ <a name='L384'></a><a href='#L384'>384</a>
450
+ <a name='L385'></a><a href='#L385'>385</a>
451
+ <a name='L386'></a><a href='#L386'>386</a>
452
+ <a name='L387'></a><a href='#L387'>387</a>
453
+ <a name='L388'></a><a href='#L388'>388</a>
454
+ <a name='L389'></a><a href='#L389'>389</a>
455
+ <a name='L390'></a><a href='#L390'>390</a>
456
+ <a name='L391'></a><a href='#L391'>391</a>
457
+ <a name='L392'></a><a href='#L392'>392</a>
458
+ <a name='L393'></a><a href='#L393'>393</a>
459
+ <a name='L394'></a><a href='#L394'>394</a>
460
+ <a name='L395'></a><a href='#L395'>395</a>
461
+ <a name='L396'></a><a href='#L396'>396</a>
462
+ <a name='L397'></a><a href='#L397'>397</a>
463
+ <a name='L398'></a><a href='#L398'>398</a>
464
+ <a name='L399'></a><a href='#L399'>399</a>
465
+ <a name='L400'></a><a href='#L400'>400</a>
466
+ <a name='L401'></a><a href='#L401'>401</a>
467
+ <a name='L402'></a><a href='#L402'>402</a>
468
+ <a name='L403'></a><a href='#L403'>403</a>
469
+ <a name='L404'></a><a href='#L404'>404</a>
470
+ <a name='L405'></a><a href='#L405'>405</a>
471
+ <a name='L406'></a><a href='#L406'>406</a>
472
+ <a name='L407'></a><a href='#L407'>407</a>
473
+ <a name='L408'></a><a href='#L408'>408</a>
474
+ <a name='L409'></a><a href='#L409'>409</a>
475
+ <a name='L410'></a><a href='#L410'>410</a>
476
+ <a name='L411'></a><a href='#L411'>411</a>
477
+ <a name='L412'></a><a href='#L412'>412</a>
478
+ <a name='L413'></a><a href='#L413'>413</a>
479
+ <a name='L414'></a><a href='#L414'>414</a>
480
+ <a name='L415'></a><a href='#L415'>415</a>
481
+ <a name='L416'></a><a href='#L416'>416</a>
482
+ <a name='L417'></a><a href='#L417'>417</a>
483
+ <a name='L418'></a><a href='#L418'>418</a>
484
+ <a name='L419'></a><a href='#L419'>419</a>
485
+ <a name='L420'></a><a href='#L420'>420</a>
486
+ <a name='L421'></a><a href='#L421'>421</a>
487
+ <a name='L422'></a><a href='#L422'>422</a>
488
+ <a name='L423'></a><a href='#L423'>423</a>
489
+ <a name='L424'></a><a href='#L424'>424</a>
490
+ <a name='L425'></a><a href='#L425'>425</a>
491
+ <a name='L426'></a><a href='#L426'>426</a>
492
+ <a name='L427'></a><a href='#L427'>427</a>
493
+ <a name='L428'></a><a href='#L428'>428</a>
494
+ <a name='L429'></a><a href='#L429'>429</a>
495
+ <a name='L430'></a><a href='#L430'>430</a>
496
+ <a name='L431'></a><a href='#L431'>431</a>
497
+ <a name='L432'></a><a href='#L432'>432</a>
498
+ <a name='L433'></a><a href='#L433'>433</a>
499
+ <a name='L434'></a><a href='#L434'>434</a>
500
+ <a name='L435'></a><a href='#L435'>435</a>
501
+ <a name='L436'></a><a href='#L436'>436</a>
502
+ <a name='L437'></a><a href='#L437'>437</a>
503
+ <a name='L438'></a><a href='#L438'>438</a>
504
+ <a name='L439'></a><a href='#L439'>439</a>
505
+ <a name='L440'></a><a href='#L440'>440</a>
506
+ <a name='L441'></a><a href='#L441'>441</a>
507
+ <a name='L442'></a><a href='#L442'>442</a>
508
+ <a name='L443'></a><a href='#L443'>443</a>
509
+ <a name='L444'></a><a href='#L444'>444</a>
510
+ <a name='L445'></a><a href='#L445'>445</a>
511
+ <a name='L446'></a><a href='#L446'>446</a>
512
+ <a name='L447'></a><a href='#L447'>447</a>
513
+ <a name='L448'></a><a href='#L448'>448</a>
514
+ <a name='L449'></a><a href='#L449'>449</a>
515
+ <a name='L450'></a><a href='#L450'>450</a>
516
+ <a name='L451'></a><a href='#L451'>451</a>
517
+ <a name='L452'></a><a href='#L452'>452</a>
518
+ <a name='L453'></a><a href='#L453'>453</a>
519
+ <a name='L454'></a><a href='#L454'>454</a>
520
+ <a name='L455'></a><a href='#L455'>455</a>
521
+ <a name='L456'></a><a href='#L456'>456</a>
522
+ <a name='L457'></a><a href='#L457'>457</a>
523
+ <a name='L458'></a><a href='#L458'>458</a>
524
+ <a name='L459'></a><a href='#L459'>459</a>
525
+ <a name='L460'></a><a href='#L460'>460</a>
526
+ <a name='L461'></a><a href='#L461'>461</a>
527
+ <a name='L462'></a><a href='#L462'>462</a>
528
+ <a name='L463'></a><a href='#L463'>463</a>
529
+ <a name='L464'></a><a href='#L464'>464</a>
530
+ <a name='L465'></a><a href='#L465'>465</a>
531
+ <a name='L466'></a><a href='#L466'>466</a>
532
+ <a name='L467'></a><a href='#L467'>467</a>
533
+ <a name='L468'></a><a href='#L468'>468</a>
534
+ <a name='L469'></a><a href='#L469'>469</a>
535
+ <a name='L470'></a><a href='#L470'>470</a>
536
+ <a name='L471'></a><a href='#L471'>471</a>
537
+ <a name='L472'></a><a href='#L472'>472</a>
538
+ <a name='L473'></a><a href='#L473'>473</a>
539
+ <a name='L474'></a><a href='#L474'>474</a>
540
+ <a name='L475'></a><a href='#L475'>475</a>
541
+ <a name='L476'></a><a href='#L476'>476</a>
542
+ <a name='L477'></a><a href='#L477'>477</a>
543
+ <a name='L478'></a><a href='#L478'>478</a>
544
+ <a name='L479'></a><a href='#L479'>479</a>
545
+ <a name='L480'></a><a href='#L480'>480</a>
546
+ <a name='L481'></a><a href='#L481'>481</a>
547
+ <a name='L482'></a><a href='#L482'>482</a>
548
+ <a name='L483'></a><a href='#L483'>483</a>
549
+ <a name='L484'></a><a href='#L484'>484</a>
550
+ <a name='L485'></a><a href='#L485'>485</a>
551
+ <a name='L486'></a><a href='#L486'>486</a>
552
+ <a name='L487'></a><a href='#L487'>487</a>
553
+ <a name='L488'></a><a href='#L488'>488</a>
554
+ <a name='L489'></a><a href='#L489'>489</a>
555
+ <a name='L490'></a><a href='#L490'>490</a>
556
+ <a name='L491'></a><a href='#L491'>491</a>
557
+ <a name='L492'></a><a href='#L492'>492</a>
558
+ <a name='L493'></a><a href='#L493'>493</a>
559
+ <a name='L494'></a><a href='#L494'>494</a>
560
+ <a name='L495'></a><a href='#L495'>495</a>
561
+ <a name='L496'></a><a href='#L496'>496</a>
562
+ <a name='L497'></a><a href='#L497'>497</a>
563
+ <a name='L498'></a><a href='#L498'>498</a>
564
+ <a name='L499'></a><a href='#L499'>499</a>
565
+ <a name='L500'></a><a href='#L500'>500</a>
566
+ <a name='L501'></a><a href='#L501'>501</a>
567
+ <a name='L502'></a><a href='#L502'>502</a>
568
+ <a name='L503'></a><a href='#L503'>503</a>
569
+ <a name='L504'></a><a href='#L504'>504</a>
570
+ <a name='L505'></a><a href='#L505'>505</a>
571
+ <a name='L506'></a><a href='#L506'>506</a>
572
+ <a name='L507'></a><a href='#L507'>507</a>
573
+ <a name='L508'></a><a href='#L508'>508</a>
574
+ <a name='L509'></a><a href='#L509'>509</a>
575
+ <a name='L510'></a><a href='#L510'>510</a>
576
+ <a name='L511'></a><a href='#L511'>511</a>
577
+ <a name='L512'></a><a href='#L512'>512</a>
578
+ <a name='L513'></a><a href='#L513'>513</a>
579
+ <a name='L514'></a><a href='#L514'>514</a>
580
+ <a name='L515'></a><a href='#L515'>515</a>
581
+ <a name='L516'></a><a href='#L516'>516</a>
582
+ <a name='L517'></a><a href='#L517'>517</a>
583
+ <a name='L518'></a><a href='#L518'>518</a>
584
+ <a name='L519'></a><a href='#L519'>519</a>
585
+ <a name='L520'></a><a href='#L520'>520</a>
586
+ <a name='L521'></a><a href='#L521'>521</a>
587
+ <a name='L522'></a><a href='#L522'>522</a>
588
+ <a name='L523'></a><a href='#L523'>523</a>
589
+ <a name='L524'></a><a href='#L524'>524</a>
590
+ <a name='L525'></a><a href='#L525'>525</a>
591
+ <a name='L526'></a><a href='#L526'>526</a>
592
+ <a name='L527'></a><a href='#L527'>527</a>
593
+ <a name='L528'></a><a href='#L528'>528</a>
594
+ <a name='L529'></a><a href='#L529'>529</a>
595
+ <a name='L530'></a><a href='#L530'>530</a>
596
+ <a name='L531'></a><a href='#L531'>531</a>
597
+ <a name='L532'></a><a href='#L532'>532</a>
598
+ <a name='L533'></a><a href='#L533'>533</a>
599
+ <a name='L534'></a><a href='#L534'>534</a>
600
+ <a name='L535'></a><a href='#L535'>535</a>
601
+ <a name='L536'></a><a href='#L536'>536</a>
602
+ <a name='L537'></a><a href='#L537'>537</a>
603
+ <a name='L538'></a><a href='#L538'>538</a>
604
+ <a name='L539'></a><a href='#L539'>539</a>
605
+ <a name='L540'></a><a href='#L540'>540</a>
606
+ <a name='L541'></a><a href='#L541'>541</a>
607
+ <a name='L542'></a><a href='#L542'>542</a>
608
+ <a name='L543'></a><a href='#L543'>543</a>
609
+ <a name='L544'></a><a href='#L544'>544</a>
610
+ <a name='L545'></a><a href='#L545'>545</a>
611
+ <a name='L546'></a><a href='#L546'>546</a>
612
+ <a name='L547'></a><a href='#L547'>547</a>
613
+ <a name='L548'></a><a href='#L548'>548</a>
614
+ <a name='L549'></a><a href='#L549'>549</a>
615
+ <a name='L550'></a><a href='#L550'>550</a>
616
+ <a name='L551'></a><a href='#L551'>551</a>
617
+ <a name='L552'></a><a href='#L552'>552</a>
618
+ <a name='L553'></a><a href='#L553'>553</a>
619
+ <a name='L554'></a><a href='#L554'>554</a>
620
+ <a name='L555'></a><a href='#L555'>555</a>
621
+ <a name='L556'></a><a href='#L556'>556</a>
622
+ <a name='L557'></a><a href='#L557'>557</a>
623
+ <a name='L558'></a><a href='#L558'>558</a>
624
+ <a name='L559'></a><a href='#L559'>559</a>
625
+ <a name='L560'></a><a href='#L560'>560</a>
626
+ <a name='L561'></a><a href='#L561'>561</a>
627
+ <a name='L562'></a><a href='#L562'>562</a>
628
+ <a name='L563'></a><a href='#L563'>563</a>
629
+ <a name='L564'></a><a href='#L564'>564</a>
630
+ <a name='L565'></a><a href='#L565'>565</a>
631
+ <a name='L566'></a><a href='#L566'>566</a>
632
+ <a name='L567'></a><a href='#L567'>567</a>
633
+ <a name='L568'></a><a href='#L568'>568</a>
634
+ <a name='L569'></a><a href='#L569'>569</a>
635
+ <a name='L570'></a><a href='#L570'>570</a>
636
+ <a name='L571'></a><a href='#L571'>571</a>
637
+ <a name='L572'></a><a href='#L572'>572</a>
638
+ <a name='L573'></a><a href='#L573'>573</a>
639
+ <a name='L574'></a><a href='#L574'>574</a>
640
+ <a name='L575'></a><a href='#L575'>575</a>
641
+ <a name='L576'></a><a href='#L576'>576</a>
642
+ <a name='L577'></a><a href='#L577'>577</a>
643
+ <a name='L578'></a><a href='#L578'>578</a>
644
+ <a name='L579'></a><a href='#L579'>579</a>
645
+ <a name='L580'></a><a href='#L580'>580</a>
646
+ <a name='L581'></a><a href='#L581'>581</a>
647
+ <a name='L582'></a><a href='#L582'>582</a>
648
+ <a name='L583'></a><a href='#L583'>583</a>
649
+ <a name='L584'></a><a href='#L584'>584</a>
650
+ <a name='L585'></a><a href='#L585'>585</a>
651
+ <a name='L586'></a><a href='#L586'>586</a>
652
+ <a name='L587'></a><a href='#L587'>587</a>
653
+ <a name='L588'></a><a href='#L588'>588</a>
654
+ <a name='L589'></a><a href='#L589'>589</a>
655
+ <a name='L590'></a><a href='#L590'>590</a>
656
+ <a name='L591'></a><a href='#L591'>591</a>
657
+ <a name='L592'></a><a href='#L592'>592</a>
658
+ <a name='L593'></a><a href='#L593'>593</a>
659
+ <a name='L594'></a><a href='#L594'>594</a>
660
+ <a name='L595'></a><a href='#L595'>595</a>
661
+ <a name='L596'></a><a href='#L596'>596</a>
662
+ <a name='L597'></a><a href='#L597'>597</a>
663
+ <a name='L598'></a><a href='#L598'>598</a>
664
+ <a name='L599'></a><a href='#L599'>599</a>
665
+ <a name='L600'></a><a href='#L600'>600</a>
666
+ <a name='L601'></a><a href='#L601'>601</a>
667
+ <a name='L602'></a><a href='#L602'>602</a>
668
+ <a name='L603'></a><a href='#L603'>603</a>
669
+ <a name='L604'></a><a href='#L604'>604</a>
670
+ <a name='L605'></a><a href='#L605'>605</a>
671
+ <a name='L606'></a><a href='#L606'>606</a>
672
+ <a name='L607'></a><a href='#L607'>607</a>
673
+ <a name='L608'></a><a href='#L608'>608</a>
674
+ <a name='L609'></a><a href='#L609'>609</a>
675
+ <a name='L610'></a><a href='#L610'>610</a>
676
+ <a name='L611'></a><a href='#L611'>611</a>
677
+ <a name='L612'></a><a href='#L612'>612</a>
678
+ <a name='L613'></a><a href='#L613'>613</a>
679
+ <a name='L614'></a><a href='#L614'>614</a>
680
+ <a name='L615'></a><a href='#L615'>615</a>
681
+ <a name='L616'></a><a href='#L616'>616</a>
682
+ <a name='L617'></a><a href='#L617'>617</a>
683
+ <a name='L618'></a><a href='#L618'>618</a>
684
+ <a name='L619'></a><a href='#L619'>619</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
685
+ <span class="cline-any cline-neutral">&nbsp;</span>
686
+ <span class="cline-any cline-neutral">&nbsp;</span>
687
+ <span class="cline-any cline-neutral">&nbsp;</span>
688
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
695
+ <span class="cline-any cline-neutral">&nbsp;</span>
696
+ <span class="cline-any cline-neutral">&nbsp;</span>
697
+ <span class="cline-any cline-neutral">&nbsp;</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">1x</span>
705
+ <span class="cline-any cline-neutral">&nbsp;</span>
706
+ <span class="cline-any cline-yes">27x</span>
707
+ <span class="cline-any cline-yes">27x</span>
708
+ <span class="cline-any cline-neutral">&nbsp;</span>
709
+ <span class="cline-any cline-yes">27x</span>
710
+ <span class="cline-any cline-yes">27x</span>
711
+ <span class="cline-any cline-yes">27x</span>
712
+ <span class="cline-any cline-yes">27x</span>
713
+ <span class="cline-any cline-neutral">&nbsp;</span>
714
+ <span class="cline-any cline-neutral">&nbsp;</span>
715
+ <span class="cline-any cline-neutral">&nbsp;</span>
716
+ <span class="cline-any cline-yes">27x</span>
717
+ <span class="cline-any cline-neutral">&nbsp;</span>
718
+ <span class="cline-any cline-neutral">&nbsp;</span>
719
+ <span class="cline-any cline-yes">27x</span>
720
+ <span class="cline-any cline-neutral">&nbsp;</span>
721
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
725
+ <span class="cline-any cline-neutral">&nbsp;</span>
726
+ <span class="cline-any cline-neutral">&nbsp;</span>
727
+ <span class="cline-any cline-neutral">&nbsp;</span>
728
+ <span class="cline-any cline-neutral">&nbsp;</span>
729
+ <span class="cline-any cline-neutral">&nbsp;</span>
730
+ <span class="cline-any cline-yes">27x</span>
731
+ <span class="cline-any cline-yes">27x</span>
732
+ <span class="cline-any cline-neutral">&nbsp;</span>
733
+ <span class="cline-any cline-neutral">&nbsp;</span>
734
+ <span class="cline-any cline-neutral">&nbsp;</span>
735
+ <span class="cline-any cline-neutral">&nbsp;</span>
736
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
744
+ <span class="cline-any cline-neutral">&nbsp;</span>
745
+ <span class="cline-any cline-neutral">&nbsp;</span>
746
+ <span class="cline-any cline-neutral">&nbsp;</span>
747
+ <span class="cline-any cline-neutral">&nbsp;</span>
748
+ <span class="cline-any cline-neutral">&nbsp;</span>
749
+ <span class="cline-any cline-neutral">&nbsp;</span>
750
+ <span class="cline-any cline-neutral">&nbsp;</span>
751
+ <span class="cline-any cline-neutral">&nbsp;</span>
752
+ <span class="cline-any cline-yes">27x</span>
753
+ <span class="cline-any cline-neutral">&nbsp;</span>
754
+ <span class="cline-any cline-neutral">&nbsp;</span>
755
+ <span class="cline-any cline-neutral">&nbsp;</span>
756
+ <span class="cline-any cline-yes">27x</span>
757
+ <span class="cline-any cline-yes">27x</span>
758
+ <span class="cline-any cline-yes">27x</span>
759
+ <span class="cline-any cline-yes">27x</span>
760
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
764
+ <span class="cline-any cline-neutral">&nbsp;</span>
765
+ <span class="cline-any cline-neutral">&nbsp;</span>
766
+ <span class="cline-any cline-neutral">&nbsp;</span>
767
+ <span class="cline-any cline-neutral">&nbsp;</span>
768
+ <span class="cline-any cline-neutral">&nbsp;</span>
769
+ <span class="cline-any cline-neutral">&nbsp;</span>
770
+ <span class="cline-any cline-neutral">&nbsp;</span>
771
+ <span class="cline-any cline-neutral">&nbsp;</span>
772
+ <span class="cline-any cline-neutral">&nbsp;</span>
773
+ <span class="cline-any cline-neutral">&nbsp;</span>
774
+ <span class="cline-any cline-neutral">&nbsp;</span>
775
+ <span class="cline-any cline-neutral">&nbsp;</span>
776
+ <span class="cline-any cline-neutral">&nbsp;</span>
777
+ <span class="cline-any cline-neutral">&nbsp;</span>
778
+ <span class="cline-any cline-neutral">&nbsp;</span>
779
+ <span class="cline-any cline-neutral">&nbsp;</span>
780
+ <span class="cline-any cline-neutral">&nbsp;</span>
781
+ <span class="cline-any cline-neutral">&nbsp;</span>
782
+ <span class="cline-any cline-neutral">&nbsp;</span>
783
+ <span class="cline-any cline-neutral">&nbsp;</span>
784
+ <span class="cline-any cline-neutral">&nbsp;</span>
785
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
789
+ <span class="cline-any cline-neutral">&nbsp;</span>
790
+ <span class="cline-any cline-neutral">&nbsp;</span>
791
+ <span class="cline-any cline-neutral">&nbsp;</span>
792
+ <span class="cline-any cline-neutral">&nbsp;</span>
793
+ <span class="cline-any cline-neutral">&nbsp;</span>
794
+ <span class="cline-any cline-neutral">&nbsp;</span>
795
+ <span class="cline-any cline-neutral">&nbsp;</span>
796
+ <span class="cline-any cline-neutral">&nbsp;</span>
797
+ <span class="cline-any cline-neutral">&nbsp;</span>
798
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
803
+ <span class="cline-any cline-neutral">&nbsp;</span>
804
+ <span class="cline-any cline-neutral">&nbsp;</span>
805
+ <span class="cline-any cline-neutral">&nbsp;</span>
806
+ <span class="cline-any cline-neutral">&nbsp;</span>
807
+ <span class="cline-any cline-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-neutral">&nbsp;</span>
812
+ <span class="cline-any cline-neutral">&nbsp;</span>
813
+ <span class="cline-any cline-neutral">&nbsp;</span>
814
+ <span class="cline-any cline-neutral">&nbsp;</span>
815
+ <span class="cline-any cline-neutral">&nbsp;</span>
816
+ <span class="cline-any cline-neutral">&nbsp;</span>
817
+ <span class="cline-any cline-neutral">&nbsp;</span>
818
+ <span class="cline-any cline-neutral">&nbsp;</span>
819
+ <span class="cline-any cline-neutral">&nbsp;</span>
820
+ <span class="cline-any cline-neutral">&nbsp;</span>
821
+ <span class="cline-any cline-neutral">&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-neutral">&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-neutral">&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-neutral">&nbsp;</span>
843
+ <span class="cline-any cline-neutral">&nbsp;</span>
844
+ <span class="cline-any cline-neutral">&nbsp;</span>
845
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
853
+ <span class="cline-any cline-neutral">&nbsp;</span>
854
+ <span class="cline-any cline-neutral">&nbsp;</span>
855
+ <span class="cline-any cline-neutral">&nbsp;</span>
856
+ <span class="cline-any cline-neutral">&nbsp;</span>
857
+ <span class="cline-any cline-neutral">&nbsp;</span>
858
+ <span class="cline-any cline-neutral">&nbsp;</span>
859
+ <span class="cline-any cline-neutral">&nbsp;</span>
860
+ <span class="cline-any cline-neutral">&nbsp;</span>
861
+ <span class="cline-any cline-neutral">&nbsp;</span>
862
+ <span class="cline-any cline-neutral">&nbsp;</span>
863
+ <span class="cline-any cline-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-neutral">&nbsp;</span>
884
+ <span class="cline-any cline-neutral">&nbsp;</span>
885
+ <span class="cline-any cline-neutral">&nbsp;</span>
886
+ <span class="cline-any cline-neutral">&nbsp;</span>
887
+ <span class="cline-any cline-neutral">&nbsp;</span>
888
+ <span class="cline-any cline-neutral">&nbsp;</span>
889
+ <span class="cline-any cline-neutral">&nbsp;</span>
890
+ <span class="cline-any cline-neutral">&nbsp;</span>
891
+ <span class="cline-any cline-neutral">&nbsp;</span>
892
+ <span class="cline-any cline-neutral">&nbsp;</span>
893
+ <span class="cline-any cline-neutral">&nbsp;</span>
894
+ <span class="cline-any cline-neutral">&nbsp;</span>
895
+ <span class="cline-any cline-neutral">&nbsp;</span>
896
+ <span class="cline-any cline-neutral">&nbsp;</span>
897
+ <span class="cline-any cline-neutral">&nbsp;</span>
898
+ <span class="cline-any cline-neutral">&nbsp;</span>
899
+ <span class="cline-any cline-neutral">&nbsp;</span>
900
+ <span class="cline-any cline-neutral">&nbsp;</span>
901
+ <span class="cline-any cline-neutral">&nbsp;</span>
902
+ <span class="cline-any cline-neutral">&nbsp;</span>
903
+ <span class="cline-any cline-neutral">&nbsp;</span>
904
+ <span class="cline-any cline-neutral">&nbsp;</span>
905
+ <span class="cline-any cline-neutral">&nbsp;</span>
906
+ <span class="cline-any cline-neutral">&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-yes">1x</span>
911
+ <span class="cline-any cline-neutral">&nbsp;</span>
912
+ <span class="cline-any cline-yes">2x</span>
913
+ <span class="cline-any cline-yes">2x</span>
914
+ <span class="cline-any cline-neutral">&nbsp;</span>
915
+ <span class="cline-any cline-yes">2x</span>
916
+ <span class="cline-any cline-neutral">&nbsp;</span>
917
+ <span class="cline-any cline-yes">2x</span>
918
+ <span class="cline-any cline-no">&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-yes">2x</span>
922
+ <span class="cline-any cline-yes">2x</span>
923
+ <span class="cline-any cline-no">&nbsp;</span>
924
+ <span class="cline-any cline-neutral">&nbsp;</span>
925
+ <span class="cline-any cline-neutral">&nbsp;</span>
926
+ <span class="cline-any cline-neutral">&nbsp;</span>
927
+ <span class="cline-any cline-yes">2x</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-yes">2x</span>
931
+ <span class="cline-any cline-yes">2x</span>
932
+ <span class="cline-any cline-yes">2x</span>
933
+ <span class="cline-any cline-neutral">&nbsp;</span>
934
+ <span class="cline-any cline-yes">2x</span>
935
+ <span class="cline-any cline-neutral">&nbsp;</span>
936
+ <span class="cline-any cline-yes">2x</span>
937
+ <span class="cline-any cline-neutral">&nbsp;</span>
938
+ <span class="cline-any cline-yes">2x</span>
939
+ <span class="cline-any cline-neutral">&nbsp;</span>
940
+ <span class="cline-any cline-yes">2x</span>
941
+ <span class="cline-any cline-neutral">&nbsp;</span>
942
+ <span class="cline-any cline-yes">2x</span>
943
+ <span class="cline-any cline-neutral">&nbsp;</span>
944
+ <span class="cline-any cline-yes">2x</span>
945
+ <span class="cline-any cline-neutral">&nbsp;</span>
946
+ <span class="cline-any cline-neutral">&nbsp;</span>
947
+ <span class="cline-any cline-yes">2x</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-neutral">&nbsp;</span>
951
+ <span class="cline-any cline-yes">2x</span>
952
+ <span class="cline-any cline-neutral">&nbsp;</span>
953
+ <span class="cline-any cline-neutral">&nbsp;</span>
954
+ <span class="cline-any cline-yes">2x</span>
955
+ <span class="cline-any cline-neutral">&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-yes">2x</span>
959
+ <span class="cline-any cline-neutral">&nbsp;</span>
960
+ <span class="cline-any cline-yes">2x</span>
961
+ <span class="cline-any cline-neutral">&nbsp;</span>
962
+ <span class="cline-any cline-yes">2x</span>
963
+ <span class="cline-any cline-neutral">&nbsp;</span>
964
+ <span class="cline-any cline-yes">2x</span>
965
+ <span class="cline-any cline-neutral">&nbsp;</span>
966
+ <span class="cline-any cline-neutral">&nbsp;</span>
967
+ <span class="cline-any cline-yes">2x</span>
968
+ <span class="cline-any cline-neutral">&nbsp;</span>
969
+ <span class="cline-any cline-neutral">&nbsp;</span>
970
+ <span class="cline-any cline-yes">2x</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-yes">2x</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-yes">2x</span>
979
+ <span class="cline-any cline-neutral">&nbsp;</span>
980
+ <span class="cline-any cline-neutral">&nbsp;</span>
981
+ <span class="cline-any cline-yes">2x</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-yes">2x</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-yes">2x</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-yes">2x</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-yes">2x</span>
997
+ <span class="cline-any cline-neutral">&nbsp;</span>
998
+ <span class="cline-any cline-neutral">&nbsp;</span>
999
+ <span class="cline-any cline-neutral">&nbsp;</span>
1000
+ <span class="cline-any cline-yes">2x</span>
1001
+ <span class="cline-any cline-neutral">&nbsp;</span>
1002
+ <span class="cline-any cline-yes">2x</span>
1003
+ <span class="cline-any cline-neutral">&nbsp;</span>
1004
+ <span class="cline-any cline-yes">2x</span>
1005
+ <span class="cline-any cline-neutral">&nbsp;</span>
1006
+ <span class="cline-any cline-yes">2x</span>
1007
+ <span class="cline-any cline-neutral">&nbsp;</span>
1008
+ <span class="cline-any cline-yes">2x</span>
1009
+ <span class="cline-any cline-neutral">&nbsp;</span>
1010
+ <span class="cline-any cline-yes">2x</span>
1011
+ <span class="cline-any cline-neutral">&nbsp;</span>
1012
+ <span class="cline-any cline-yes">2x</span>
1013
+ <span class="cline-any cline-neutral">&nbsp;</span>
1014
+ <span class="cline-any cline-yes">2x</span>
1015
+ <span class="cline-any cline-neutral">&nbsp;</span>
1016
+ <span class="cline-any cline-yes">2x</span>
1017
+ <span class="cline-any cline-neutral">&nbsp;</span>
1018
+ <span class="cline-any cline-yes">2x</span>
1019
+ <span class="cline-any cline-neutral">&nbsp;</span>
1020
+ <span class="cline-any cline-yes">2x</span>
1021
+ <span class="cline-any cline-neutral">&nbsp;</span>
1022
+ <span class="cline-any cline-yes">2x</span>
1023
+ <span class="cline-any cline-neutral">&nbsp;</span>
1024
+ <span class="cline-any cline-yes">2x</span>
1025
+ <span class="cline-any cline-neutral">&nbsp;</span>
1026
+ <span class="cline-any cline-yes">2x</span>
1027
+ <span class="cline-any cline-neutral">&nbsp;</span>
1028
+ <span class="cline-any cline-yes">2x</span>
1029
+ <span class="cline-any cline-neutral">&nbsp;</span>
1030
+ <span class="cline-any cline-yes">2x</span>
1031
+ <span class="cline-any cline-neutral">&nbsp;</span>
1032
+ <span class="cline-any cline-yes">2x</span>
1033
+ <span class="cline-any cline-neutral">&nbsp;</span>
1034
+ <span class="cline-any cline-yes">2x</span>
1035
+ <span class="cline-any cline-neutral">&nbsp;</span>
1036
+ <span class="cline-any cline-yes">2x</span>
1037
+ <span class="cline-any cline-neutral">&nbsp;</span>
1038
+ <span class="cline-any cline-yes">2x</span>
1039
+ <span class="cline-any cline-neutral">&nbsp;</span>
1040
+ <span class="cline-any cline-yes">2x</span>
1041
+ <span class="cline-any cline-neutral">&nbsp;</span>
1042
+ <span class="cline-any cline-yes">2x</span>
1043
+ <span class="cline-any cline-neutral">&nbsp;</span>
1044
+ <span class="cline-any cline-yes">2x</span>
1045
+ <span class="cline-any cline-neutral">&nbsp;</span>
1046
+ <span class="cline-any cline-yes">2x</span>
1047
+ <span class="cline-any cline-neutral">&nbsp;</span>
1048
+ <span class="cline-any cline-yes">2x</span>
1049
+ <span class="cline-any cline-neutral">&nbsp;</span>
1050
+ <span class="cline-any cline-yes">2x</span>
1051
+ <span class="cline-any cline-neutral">&nbsp;</span>
1052
+ <span class="cline-any cline-yes">2x</span>
1053
+ <span class="cline-any cline-neutral">&nbsp;</span>
1054
+ <span class="cline-any cline-yes">2x</span>
1055
+ <span class="cline-any cline-neutral">&nbsp;</span>
1056
+ <span class="cline-any cline-yes">2x</span>
1057
+ <span class="cline-any cline-neutral">&nbsp;</span>
1058
+ <span class="cline-any cline-yes">2x</span>
1059
+ <span class="cline-any cline-neutral">&nbsp;</span>
1060
+ <span class="cline-any cline-yes">2x</span>
1061
+ <span class="cline-any cline-neutral">&nbsp;</span>
1062
+ <span class="cline-any cline-yes">2x</span>
1063
+ <span class="cline-any cline-neutral">&nbsp;</span>
1064
+ <span class="cline-any cline-yes">2x</span>
1065
+ <span class="cline-any cline-neutral">&nbsp;</span>
1066
+ <span class="cline-any cline-yes">2x</span>
1067
+ <span class="cline-any cline-neutral">&nbsp;</span>
1068
+ <span class="cline-any cline-yes">2x</span>
1069
+ <span class="cline-any cline-neutral">&nbsp;</span>
1070
+ <span class="cline-any cline-yes">2x</span>
1071
+ <span class="cline-any cline-neutral">&nbsp;</span>
1072
+ <span class="cline-any cline-neutral">&nbsp;</span>
1073
+ <span class="cline-any cline-yes">2x</span>
1074
+ <span class="cline-any cline-neutral">&nbsp;</span>
1075
+ <span class="cline-any cline-yes">2x</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-yes">2x</span>
1079
+ <span class="cline-any cline-neutral">&nbsp;</span>
1080
+ <span class="cline-any cline-yes">2x</span>
1081
+ <span class="cline-any cline-yes">2x</span>
1082
+ <span class="cline-any cline-neutral">&nbsp;</span>
1083
+ <span class="cline-any cline-yes">2x</span>
1084
+ <span class="cline-any cline-yes">2x</span>
1085
+ <span class="cline-any cline-yes">2x</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-neutral">&nbsp;</span>
1089
+ <span class="cline-any cline-neutral">&nbsp;</span>
1090
+ <span class="cline-any cline-neutral">&nbsp;</span>
1091
+ <span class="cline-any cline-yes">2x</span>
1092
+ <span class="cline-any cline-neutral">&nbsp;</span>
1093
+ <span class="cline-any cline-neutral">&nbsp;</span>
1094
+ <span class="cline-any cline-neutral">&nbsp;</span>
1095
+ <span class="cline-any cline-neutral">&nbsp;</span>
1096
+ <span class="cline-any cline-neutral">&nbsp;</span>
1097
+ <span class="cline-any cline-neutral">&nbsp;</span>
1098
+ <span class="cline-any cline-yes">2x</span>
1099
+ <span class="cline-any cline-neutral">&nbsp;</span>
1100
+ <span class="cline-any cline-neutral">&nbsp;</span>
1101
+ <span class="cline-any cline-neutral">&nbsp;</span>
1102
+ <span class="cline-any cline-yes">2x</span>
1103
+ <span class="cline-any cline-neutral">&nbsp;</span>
1104
+ <span class="cline-any cline-neutral">&nbsp;</span>
1105
+ <span class="cline-any cline-yes">2x</span>
1106
+ <span class="cline-any cline-neutral">&nbsp;</span>
1107
+ <span class="cline-any cline-neutral">&nbsp;</span>
1108
+ <span class="cline-any cline-neutral">&nbsp;</span>
1109
+ <span class="cline-any cline-yes">2x</span>
1110
+ <span class="cline-any cline-neutral">&nbsp;</span>
1111
+ <span class="cline-any cline-neutral">&nbsp;</span>
1112
+ <span class="cline-any cline-neutral">&nbsp;</span>
1113
+ <span class="cline-any cline-yes">2x</span>
1114
+ <span class="cline-any cline-neutral">&nbsp;</span>
1115
+ <span class="cline-any cline-neutral">&nbsp;</span>
1116
+ <span class="cline-any cline-neutral">&nbsp;</span>
1117
+ <span class="cline-any cline-yes">2x</span>
1118
+ <span class="cline-any cline-neutral">&nbsp;</span>
1119
+ <span class="cline-any cline-neutral">&nbsp;</span>
1120
+ <span class="cline-any cline-neutral">&nbsp;</span>
1121
+ <span class="cline-any cline-neutral">&nbsp;</span>
1122
+ <span class="cline-any cline-yes">2x</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-yes">2x</span>
1127
+ <span class="cline-any cline-neutral">&nbsp;</span>
1128
+ <span class="cline-any cline-neutral">&nbsp;</span>
1129
+ <span class="cline-any cline-neutral">&nbsp;</span>
1130
+ <span class="cline-any cline-yes">2x</span>
1131
+ <span class="cline-any cline-neutral">&nbsp;</span>
1132
+ <span class="cline-any cline-neutral">&nbsp;</span>
1133
+ <span class="cline-any cline-neutral">&nbsp;</span>
1134
+ <span class="cline-any cline-yes">2x</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-yes">2x</span>
1139
+ <span class="cline-any cline-neutral">&nbsp;</span>
1140
+ <span class="cline-any cline-neutral">&nbsp;</span>
1141
+ <span class="cline-any cline-neutral">&nbsp;</span>
1142
+ <span class="cline-any cline-neutral">&nbsp;</span>
1143
+ <span class="cline-any cline-yes">2x</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-yes">2x</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-neutral">&nbsp;</span>
1155
+ <span class="cline-any cline-neutral">&nbsp;</span>
1156
+ <span class="cline-any cline-yes">1x</span>
1157
+ <span class="cline-any cline-no">&nbsp;</span>
1158
+ <span class="cline-any cline-no">&nbsp;</span>
1159
+ <span class="cline-any cline-no">&nbsp;</span>
1160
+ <span class="cline-any cline-no">&nbsp;</span>
1161
+ <span class="cline-any cline-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-yes">1x</span>
1165
+ <span class="cline-any cline-no">&nbsp;</span>
1166
+ <span class="cline-any cline-no">&nbsp;</span>
1167
+ <span class="cline-any cline-no">&nbsp;</span>
1168
+ <span class="cline-any cline-neutral">&nbsp;</span>
1169
+ <span class="cline-any cline-no">&nbsp;</span>
1170
+ <span class="cline-any cline-neutral">&nbsp;</span>
1171
+ <span class="cline-any cline-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-neutral">&nbsp;</span>
1179
+ <span class="cline-any cline-neutral">&nbsp;</span>
1180
+ <span class="cline-any cline-neutral">&nbsp;</span>
1181
+ <span class="cline-any cline-neutral">&nbsp;</span>
1182
+ <span class="cline-any cline-neutral">&nbsp;</span>
1183
+ <span class="cline-any cline-yes">1x</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-neutral">&nbsp;</span>
1189
+ <span class="cline-any cline-neutral">&nbsp;</span>
1190
+ <span class="cline-any cline-neutral">&nbsp;</span>
1191
+ <span class="cline-any cline-neutral">&nbsp;</span>
1192
+ <span class="cline-any cline-neutral">&nbsp;</span>
1193
+ <span class="cline-any cline-neutral">&nbsp;</span>
1194
+ <span class="cline-any cline-neutral">&nbsp;</span>
1195
+ <span class="cline-any cline-neutral">&nbsp;</span>
1196
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1204
+ <span class="cline-any cline-neutral">&nbsp;</span>
1205
+ <span class="cline-any cline-neutral">&nbsp;</span>
1206
+ <span class="cline-any cline-neutral">&nbsp;</span>
1207
+ <span class="cline-any cline-neutral">&nbsp;</span>
1208
+ <span class="cline-any cline-neutral">&nbsp;</span>
1209
+ <span class="cline-any cline-neutral">&nbsp;</span>
1210
+ <span class="cline-any cline-neutral">&nbsp;</span>
1211
+ <span class="cline-any cline-neutral">&nbsp;</span>
1212
+ <span class="cline-any cline-neutral">&nbsp;</span>
1213
+ <span class="cline-any cline-neutral">&nbsp;</span>
1214
+ <span class="cline-any cline-neutral">&nbsp;</span>
1215
+ <span class="cline-any cline-neutral">&nbsp;</span>
1216
+ <span class="cline-any cline-neutral">&nbsp;</span>
1217
+ <span class="cline-any cline-yes">1x</span>
1218
+ <span class="cline-any cline-no">&nbsp;</span>
1219
+ <span class="cline-any cline-no">&nbsp;</span>
1220
+ <span class="cline-any cline-no">&nbsp;</span>
1221
+ <span class="cline-any cline-neutral">&nbsp;</span>
1222
+ <span class="cline-any cline-neutral">&nbsp;</span>
1223
+ <span class="cline-any cline-neutral">&nbsp;</span>
1224
+ <span class="cline-any cline-yes">1x</span>
1225
+ <span class="cline-any cline-no">&nbsp;</span>
1226
+ <span class="cline-any cline-neutral">&nbsp;</span>
1227
+ <span class="cline-any cline-neutral">&nbsp;</span>
1228
+ <span class="cline-any cline-no">&nbsp;</span>
1229
+ <span class="cline-any cline-no">&nbsp;</span>
1230
+ <span class="cline-any cline-no">&nbsp;</span>
1231
+ <span class="cline-any cline-no">&nbsp;</span>
1232
+ <span class="cline-any cline-no">&nbsp;</span>
1233
+ <span class="cline-any cline-neutral">&nbsp;</span>
1234
+ <span class="cline-any cline-no">&nbsp;</span>
1235
+ <span class="cline-any cline-no">&nbsp;</span>
1236
+ <span class="cline-any cline-no">&nbsp;</span>
1237
+ <span class="cline-any cline-no">&nbsp;</span>
1238
+ <span class="cline-any cline-neutral">&nbsp;</span>
1239
+ <span class="cline-any cline-neutral">&nbsp;</span>
1240
+ <span class="cline-any cline-neutral">&nbsp;</span>
1241
+ <span class="cline-any cline-yes">1x</span>
1242
+ <span class="cline-any cline-no">&nbsp;</span>
1243
+ <span class="cline-any cline-no">&nbsp;</span>
1244
+ <span class="cline-any cline-neutral">&nbsp;</span>
1245
+ <span class="cline-any cline-neutral">&nbsp;</span>
1246
+ <span class="cline-any cline-no">&nbsp;</span>
1247
+ <span class="cline-any cline-no">&nbsp;</span>
1248
+ <span class="cline-any cline-no">&nbsp;</span>
1249
+ <span class="cline-any cline-no">&nbsp;</span>
1250
+ <span class="cline-any cline-neutral">&nbsp;</span>
1251
+ <span class="cline-any cline-no">&nbsp;</span>
1252
+ <span class="cline-any cline-no">&nbsp;</span>
1253
+ <span class="cline-any cline-no">&nbsp;</span>
1254
+ <span class="cline-any cline-neutral">&nbsp;</span>
1255
+ <span class="cline-any cline-neutral">&nbsp;</span>
1256
+ <span class="cline-any cline-neutral">&nbsp;</span>
1257
+ <span class="cline-any cline-neutral">&nbsp;</span>
1258
+ <span class="cline-any cline-no">&nbsp;</span>
1259
+ <span class="cline-any cline-no">&nbsp;</span>
1260
+ <span class="cline-any cline-no">&nbsp;</span>
1261
+ <span class="cline-any cline-no">&nbsp;</span>
1262
+ <span class="cline-any cline-neutral">&nbsp;</span>
1263
+ <span class="cline-any cline-neutral">&nbsp;</span>
1264
+ <span class="cline-any cline-neutral">&nbsp;</span>
1265
+ <span class="cline-any cline-neutral">&nbsp;</span>
1266
+ <span class="cline-any cline-neutral">&nbsp;</span>
1267
+ <span class="cline-any cline-neutral">&nbsp;</span>
1268
+ <span class="cline-any cline-neutral">&nbsp;</span>
1269
+ <span class="cline-any cline-neutral">&nbsp;</span>
1270
+ <span class="cline-any cline-yes">1x</span>
1271
+ <span class="cline-any cline-neutral">&nbsp;</span>
1272
+ <span class="cline-any cline-no">&nbsp;</span>
1273
+ <span class="cline-any cline-no">&nbsp;</span>
1274
+ <span class="cline-any cline-no">&nbsp;</span>
1275
+ <span class="cline-any cline-no">&nbsp;</span>
1276
+ <span class="cline-any cline-neutral">&nbsp;</span>
1277
+ <span class="cline-any cline-neutral">&nbsp;</span>
1278
+ <span class="cline-any cline-neutral">&nbsp;</span>
1279
+ <span class="cline-any cline-neutral">&nbsp;</span>
1280
+ <span class="cline-any cline-neutral">&nbsp;</span>
1281
+ <span class="cline-any cline-neutral">&nbsp;</span>
1282
+ <span class="cline-any cline-neutral">&nbsp;</span>
1283
+ <span class="cline-any cline-yes">1x</span>
1284
+ <span class="cline-any cline-neutral">&nbsp;</span>
1285
+ <span class="cline-any cline-yes">1x</span>
1286
+ <span class="cline-any cline-yes">1x</span>
1287
+ <span class="cline-any cline-yes">1x</span>
1288
+ <span class="cline-any cline-no">&nbsp;</span>
1289
+ <span class="cline-any cline-neutral">&nbsp;</span>
1290
+ <span class="cline-any cline-neutral">&nbsp;</span>
1291
+ <span class="cline-any cline-neutral">&nbsp;</span>
1292
+ <span class="cline-any cline-neutral">&nbsp;</span>
1293
+ <span class="cline-any cline-neutral">&nbsp;</span>
1294
+ <span class="cline-any cline-neutral">&nbsp;</span>
1295
+ <span class="cline-any cline-neutral">&nbsp;</span>
1296
+ <span class="cline-any cline-neutral">&nbsp;</span>
1297
+ <span class="cline-any cline-yes">1x</span>
1298
+ <span class="cline-any cline-no">&nbsp;</span>
1299
+ <span class="cline-any cline-no">&nbsp;</span>
1300
+ <span class="cline-any cline-neutral">&nbsp;</span>
1301
+ <span class="cline-any cline-neutral">&nbsp;</span>
1302
+ <span class="cline-any cline-yes">1x</span></td><td class="text"><pre class="prettyprint lang-js">import { Injectable } from '@angular/core';
1303
+ import { environment } from '../../environments/environment';
1304
+ import { BehaviorSubject } from 'rxjs';
1305
+ &nbsp;
1306
+ /** CONSTANTS */
1307
+ import { CHANNEL_TYPE_GROUP } from 'src/chat21-core/utils/constants';
1308
+ &nbsp;
1309
+ /** MODELS */
1310
+ import { ProjectModel } from 'src/models/project';
1311
+ import { UserAgent } from 'src/models/userAgent';
1312
+ import { DepartmentModel } from 'src/models/department';
1313
+ &nbsp;
1314
+ /** UTILS FUNCTIONS */
1315
+ import { avatarPlaceholder, detectIfIsMobile, getParameterByName, setColorFromString } from 'src/app/utils/utils';
1316
+ import { ConversationModel } from 'src/chat21-core/models/conversation';
1317
+ import { convertColorToRGBA } from 'src/chat21-core/utils/utils';
1318
+ &nbsp;
1319
+ @Injectable({
1320
+ providedIn: 'root'
1321
+ })
1322
+ export class Globals {
1323
+ &nbsp;
1324
+ obsObjChanged = new BehaviorSubject&lt;any&gt;(null);
1325
+ obsIsOpen = new BehaviorSubject&lt;boolean&gt;(null);
1326
+ &nbsp;
1327
+ BASE_LOCATION = 'https://widget.tiledesk.com/v2';
1328
+ POWERED_BY ='&lt;a tabindex="-1" target="_blank" href="http://www.tiledesk.com/"&gt;&lt;img src="https://support-pre.tiledesk.com/dashboard/assets/img/logos/tiledesk-logo_new_gray.svg"/&gt;&lt;/a&gt;'
1329
+ DEFAULT_LOGO_CHAT = '/assets/images/tiledesk_logo_white_small.svg';
1330
+ WIDGET_TITLE = 'Tiledesk';
1331
+ &nbsp;
1332
+ // ============ BEGIN: SET FUNCTION BY UTILS ==============//
1333
+ // getParameterByName = getParameterByName;
1334
+ convertColorToRGBA = convertColorToRGBA;
1335
+ // ============ BEGIN: SET INTERNAL PARAMETERS ==============//
1336
+ &nbsp;
1337
+ project = new ProjectModel();
1338
+ senderId: string;
1339
+ tenant: string;
1340
+ channelType: string;
1341
+ default_settings: any;
1342
+ isMobile: boolean;
1343
+ isLogged: boolean;
1344
+ soundEnabled: boolean;
1345
+ BUILD_VERSION: String;
1346
+ filterSystemMsg: boolean; /** se è true i messaggi inviati da system non vengono visualizzati */
1347
+ baseLocation: string;
1348
+ availableAgents: Array&lt;UserAgent&gt; = [];
1349
+ isLogout = false; /** indica se ho appena fotto il logout */
1350
+ &nbsp;
1351
+ attributes: any;
1352
+ preChatFormJson: any; // ******* new ********
1353
+ token: string;
1354
+ tiledeskToken: string;
1355
+ firebaseToken: string;
1356
+ lang: string;
1357
+ conversationsBadge: number;
1358
+ /**@deprecated */
1359
+ activeConversation: ConversationModel;
1360
+
1361
+ isOpenStartRating: boolean;
1362
+ departments: DepartmentModel[];
1363
+ departmentSelected: DepartmentModel;
1364
+ departmentDefault: any;
1365
+ isOpenMenuOptions: boolean;
1366
+ isOpenPrechatForm: boolean;
1367
+ &nbsp;
1368
+ // areAgentsAvailable = false;
1369
+ areAgentsAvailableText: string;
1370
+ availableAgentsStatus = false; // indica quando è impostato lo stato degli agenti nel subscribe
1371
+ signInWithCustomToken: boolean;
1372
+ displayEyeCatcherCard: string;
1373
+ &nbsp;
1374
+ firstOpen = true;
1375
+ departmentID = null;
1376
+ privacyApproved = false;
1377
+ startedAt = new Date();
1378
+ &nbsp;
1379
+ // ============ BEGIN: LABELS ==============//
1380
+ LABEL_TU: string;
1381
+ LABEL_PLACEHOLDER: string;
1382
+ LABEL_START_NW_CONV: string;
1383
+ LABEL_FIRST_MSG: string;
1384
+ LABEL_FIRST_MSG_NO_AGENTS: string;
1385
+ LABEL_SELECT_TOPIC: string;
1386
+ LABEL_COMPLETE_FORM: string;
1387
+ LABEL_FIELD_NAME: string;
1388
+ LABEL_ERROR_FIELD_NAME: string;
1389
+ LABEL_FIELD_EMAIL: string;
1390
+ LABEL_ERROR_FIELD_EMAIL: string;
1391
+ LABEL_WRITING: string;
1392
+ LABEL_SEND_NEW_MESSAGE: string;
1393
+ AGENT_NOT_AVAILABLE: string;
1394
+ AGENT_AVAILABLE: string;
1395
+ GUEST_LABEL: string;
1396
+ ALL_AGENTS_OFFLINE_LABEL: string;
1397
+ CALLOUT_TITLE_PLACEHOLDER: string;
1398
+ CALLOUT_MSG_PLACEHOLDER: string;
1399
+ ALERT_LEAVE_CHAT: string;
1400
+ YES: string;
1401
+ NO: string;
1402
+ BUTTON_CLOSE_TO_ICON: string;
1403
+ BUTTON_EDIT_PROFILE: string;
1404
+ DOWNLOAD_TRANSCRIPT: string;
1405
+ RATE_CHAT: string;
1406
+ WELCOME_TITLE: string;
1407
+ WELCOME_MSG: string;
1408
+ WELCOME: string;
1409
+ OPTIONS: string;
1410
+ SOUND_ON: string;
1411
+ SOUND_OFF: string;
1412
+ LOGOUT: string;
1413
+ CUSTOMER_SATISFACTION: string;
1414
+ YOUR_OPINION_ON_OUR_CUSTOMER_SERVICE: string;
1415
+ YOUR_RATING: string;
1416
+ WRITE_YOUR_OPINION: string;
1417
+ SUBMIT: string;
1418
+ THANK_YOU_FOR_YOUR_EVALUATION: string;
1419
+ YOUR_RATING_HAS_BEEN_RECEIVED: string;
1420
+ CLOSE: string;
1421
+ PREV_CONVERSATIONS: string;
1422
+ YOU: string;
1423
+ SHOW_ALL_CONV: string;
1424
+ START_A_CONVERSATION: string;
1425
+ NO_CONVERSATION: string;
1426
+ SEE_PREVIOUS: string;
1427
+ WAITING_TIME_FOUND: string;
1428
+ WAITING_TIME_NOT_FOUND: string;
1429
+ CLOSED: string;
1430
+ LABEL_PREVIEW: string;
1431
+ &nbsp;
1432
+ // ============ BEGIN: EXTERNAL PARAMETERS ==============//
1433
+ globalsParameters: any;
1434
+ autoStart: boolean;
1435
+ startHidden: boolean;
1436
+ isShown: boolean;
1437
+ isOpen: boolean;
1438
+ startFromHome: boolean;
1439
+ projectid: string;
1440
+ preChatForm: boolean;
1441
+ align: string;
1442
+ calloutTimer: number;
1443
+ calloutTitle: string;
1444
+ calloutMsg: string;
1445
+ calloutStaus: boolean;
1446
+ userFullname: string;
1447
+ userEmail: string;
1448
+ widgetTitle: string;
1449
+ fullscreenMode: boolean;
1450
+ hideHeaderCloseButton: boolean;
1451
+ themeColor: string;
1452
+ themeColorOpacity: number;
1453
+ themeForegroundColor: string;
1454
+ colorGradient: string;
1455
+ colorGradient180: string;
1456
+ allowTranscriptDownload: boolean;
1457
+ poweredBy: string;
1458
+ logoChat: string;
1459
+ welcomeTitle: string;
1460
+ welcomeMsg: string;
1461
+ recipientId: string;
1462
+ newConversationStart: boolean;
1463
+ recipientFullname: string;
1464
+ // userId: string;
1465
+ // userToken: string;
1466
+ marginX: string;
1467
+ marginY: string;
1468
+ mobileMarginX: string;
1469
+ mobileMarginY: string;
1470
+ launcherWidth: string;
1471
+ launcherHeight: string;
1472
+ baloonImage: string;
1473
+ baloonShape: string;
1474
+ isLogEnabled: boolean;
1475
+ openExternalLinkButton: boolean;
1476
+ hideHeaderConversationOptionsMenu: boolean;
1477
+ hideCloseConversationOptionMenu: boolean;
1478
+ hideRestartConversationOptionsMenu: boolean;
1479
+ hideSettings: boolean;
1480
+ filterByRequester: boolean;
1481
+ persistence;
1482
+ windowContext;
1483
+ &nbsp;
1484
+ showWaitTime: boolean;
1485
+ showAvailableAgents: boolean;
1486
+ showLogoutOption: boolean;
1487
+ supportMode: boolean;
1488
+ &nbsp;
1489
+ online_msg: string;
1490
+ offline_msg: string;
1491
+ &nbsp;
1492
+ customAttributes: any;
1493
+ showAttachmentButton: boolean;
1494
+ showAllConversations: boolean;
1495
+ // privacyField: string;
1496
+ jwt: string;
1497
+ &nbsp;
1498
+ isOpenNewMessage: boolean;
1499
+ dynamicWaitTimeReply: boolean; // ******* new ********
1500
+ logLevel: string; // ******* new ********
1501
+ &nbsp;
1502
+ bubbleSentBackground: string; // ******* new ********
1503
+ bubbleSentTextColor: string; // ******* new ********
1504
+ bubbleReceivedBackground: string; // ******* new ********
1505
+ bubbleReceivedTextColor: string; // ******* new ********
1506
+ fontSize: string; // ******* new ********
1507
+ fontFamily: string; // ******* new ********
1508
+ buttonFontSize: string; // ******* new ********
1509
+ buttonBackgroundColor: string // ******* new ********
1510
+ buttonTextColor: string // ******* new ********
1511
+ buttonHoverBackgroundColor: string // ******* new ********
1512
+ buttonHoverTextColor: string // ******* new ********
1513
+ singleConversation: boolean; // ******* new ********
1514
+ nativeRating: boolean; // ******* new ********
1515
+ showInfoMessage: Array&lt;string&gt;; // ******* new ********
1516
+ typingLocation: string; // ******* new ********
1517
+ allowReopen: boolean; // ******* new ********
1518
+ continueConversationBeforeTime: number; // ******* new ********
1519
+ constructor(
1520
+ ) {
1521
+ // console.log(' ---------------- 1: initDefafultParameters ---------------- ');
1522
+ }
1523
+ &nbsp;
1524
+ &nbsp;
1525
+ /**
1526
+ * 1: initParameters
1527
+ */
1528
+ initDefafultParameters() {
1529
+ // console.log('initDefafultParameters, ', window, window.frameElement);
1530
+ this.globalsParameters = {};
1531
+ this.filterSystemMsg = true;
1532
+ &nbsp;
1533
+ let wContext: any = window;
1534
+ // console.log('windowContext 0', wContext);
1535
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (window.frameElement &amp;&amp; window.frameElement.getAttribute('tiledesk_context') === 'parent') {
1536
+ <span class="cstat-no" title="statement not covered" > wContext = window.parent;</span>
1537
+ }
1538
+ // console.log('windowContext 1', wContext);
1539
+ const windowcontextFromWindow = getParameterByName(window, 'windowcontext');
1540
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (windowcontextFromWindow !== null &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >windowcontextFromWindow === 'window.parent')</span> {
1541
+ <span class="cstat-no" title="statement not covered" > wContext = window.parent;</span>
1542
+ }
1543
+ // console.log('windowContext 2', wContext);
1544
+ // this.parameters['windowContext'] = windowContext;
1545
+ this.windowContext = wContext;
1546
+ &nbsp;
1547
+ // ============ BEGIN: SET EXTERNAL PARAMETERS ==============//
1548
+ this.baseLocation = this.BASE_LOCATION;
1549
+ this.autoStart = true;
1550
+ this.startHidden = false;
1551
+ /** start Authentication and startUI */
1552
+ this.isShown = true;
1553
+ /** show/hide all widget -&gt; js call: showAllWidget */
1554
+ this.isOpen = false;
1555
+ /** show/hide window widget -&gt; js call: hideAllWidget */
1556
+ this.startFromHome = true;
1557
+ /** start from Home or Conversation */
1558
+ this.isOpenPrechatForm = true;
1559
+ /** check open/close modal prechatform if g.preChatForm is true */
1560
+ this.isOpenStartRating = false;
1561
+ /** show/hide all rating chat */
1562
+ this.projectid = '';
1563
+ /** The TileDesk project id. Find your TileDesk ProjectID in the
1564
+ TileDesk Dashboard under the Widget menu. */
1565
+ this.preChatForm = false;
1566
+ /** You can require customers to enter information like name and email
1567
+ before sending a chat message by enabling the Pre-Chat form. Permitted
1568
+ values: true, false. The default value is false. */
1569
+ this.align = '';
1570
+ /** if it is true, the chat window is automatically open when the
1571
+ widget is loaded. Permitted values: true, false. Default value : false */
1572
+ this.calloutTimer = -1;
1573
+ /** Proactively open the chat windows to increase the customer engagement.
1574
+ Permitted values: -1 (Disabled), 0 (Immediatly) or a positive integer value.
1575
+ For exmaple: 5 (After 5 seconds), 10 (After 10 seconds). */
1576
+ this.calloutTitle = '';
1577
+ /** title box callout */
1578
+ this.calloutMsg = '';
1579
+ /** stato callout (shown only first time) */
1580
+ this.calloutStaus = true;
1581
+ /** message box callout */
1582
+ this.userFullname = '';
1583
+ /** userFullname: Current user fullname. Set this parameter to specify
1584
+ the visitor fullname. */
1585
+ this.userEmail = '';
1586
+ /** Current user email address. Set this parameter to specify the visitor
1587
+ email address. */
1588
+ this.widgetTitle = '';
1589
+ /** Set the widget title label shown in the widget header. Value type : string.
1590
+ The default value is Tiledesk. */
1591
+ this.dynamicWaitTimeReply = true;
1592
+ /** The user can decide whether or not to share the
1593
+ * average response time of his team (if 'dynamicWaitTimeReply' is
1594
+ * false the WAITING_TIME_NOT_FOUND will always be displayed)
1595
+ * is set to true for backward compatibility with old projects */
1596
+ this.hideHeaderCloseButton = false;
1597
+ /** Hide the close button in the widget header. Permitted values: true,
1598
+ false. The default value is false. */
1599
+ this.fullscreenMode = false;
1600
+ /** if it is true, the chat window is open in fullscreen mode. Permitted
1601
+ values: true, false. Default value : false */
1602
+ this.themeColor = convertColorToRGBA('#2a6ac1', 100);
1603
+ /** allows you to change the main widget's color
1604
+ (color of the header, color of the launcher button,
1605
+ other minor elements). Permitted values: Hex color
1606
+ codes, e.g. #87BC65 and RGB color codes, e.g. rgb(135,188,101) */
1607
+ this.themeColorOpacity = 50
1608
+ /**allows you to change opacity in background headers component
1609
+ * Permitted values: [0..1] */
1610
+ this.themeForegroundColor = convertColorToRGBA('#ffffff', 100);
1611
+ /** allows you to change text and icons' color.
1612
+ Permitted values: Hex color codes, e.g. #425635 and RGB color
1613
+ codes, e.g. rgb(66,86,53) */
1614
+ this.allowTranscriptDownload = false;
1615
+ /** allows the user to download the chat transcript. The download button appears
1616
+ when the chat is closed by the operator. Permitter values: true, false.
1617
+ Default value: false */
1618
+ this.poweredBy = this.POWERED_BY;
1619
+ /** link nel footer widget */
1620
+ this.logoChat = this.BASE_LOCATION + this.DEFAULT_LOGO_CHAT;
1621
+ /** url img logo */
1622
+ this.marginX = '20px';
1623
+ /** set margin left or rigth widget */
1624
+ this.marginY = '20px';
1625
+ /** set margin bottom widget */
1626
+ this.mobileMarginX = '0px';
1627
+ /** set margin left or rigth widget for mobile */
1628
+ this.mobileMarginY = '0px';
1629
+ /** set margin bottom widget for mobile*/
1630
+ this.launcherWidth = '60px'
1631
+ /** set launcher width widget */
1632
+ this.launcherHeight = '60px'
1633
+ /** set launcher height widget */
1634
+ this.baloonImage='';
1635
+ /** set launcher baloon widget image: require SVG url */
1636
+ this.baloonShape = '50%';
1637
+ /** set launcher balon widget shape: can set corner by corner */
1638
+ this.isLogEnabled = false;
1639
+ // this.parameters['isLogEnabled'] = false;
1640
+ this.openExternalLinkButton = true;
1641
+ /** enable to hide/show upper-right header conversation options menu */
1642
+ this.hideHeaderConversationOptionsMenu = false;
1643
+ /** enable to close a conversation from upper-right header menu */
1644
+ this.hideCloseConversationOptionMenu = false;
1645
+ /** enable to hide/show options menu in conversation detail header */
1646
+ this.hideRestartConversationOptionsMenu = false;
1647
+ /** enable to hide/show options menu in conversation detail header */
1648
+ this.hideSettings = false;
1649
+ /** enable to hide/show options menu in home component */
1650
+ this.filterByRequester = false;
1651
+ /** show conversations with conversation.attributes.requester_id == user.uid */
1652
+ this.persistence = 'local';
1653
+ /** set the auth persistence */
1654
+ this.preChatFormJson = [{name: "userFullname", type:"text", mandatory:true, label:"LABEL_FIELD_NAME"},{name:"userEmail", type:"text", mandatory:true, regex:"/^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&amp;'*+/0-9=?A-Z^_`a-z{|}~]+(.[-!#$%&amp;'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)+$/", label:"LABEL_FIELD_EMAIL", errorLabel:"LABEL_ERROR_FIELD_EMAIL"}]
1655
+ /** set the preChatForm Json as default if preChatFormCustomFieldsEnabled is false or not exist */
1656
+ this.bubbleSentBackground = convertColorToRGBA('#2a6ac1', 100); //'#62a8ea'
1657
+ /** set the background of bubble sent message */
1658
+ this.bubbleSentTextColor = convertColorToRGBA('#ffffff', 100); //'#ffffff'
1659
+ /** set the text color of bubble sent message */
1660
+ this.bubbleReceivedBackground= convertColorToRGBA('#f0f2f7', 100); //#f7f7f7;
1661
+ /** set the background of bubble received message */
1662
+ this.bubbleReceivedTextColor = convertColorToRGBA('#06132b', 100); //#1a1a1a
1663
+ /** set the text color of bubble received message */
1664
+ this.fontSize = '1.4em'
1665
+ /** set the text size of bubble messages */
1666
+ this.fontFamily = "'Roboto','Google Sans', Helvetica, Arial, sans-serif'"
1667
+ /** set the text family of bubble messages */
1668
+ this.buttonFontSize = '15px'
1669
+ /** set the text size of attachment-buttons */
1670
+ this.buttonBackgroundColor = convertColorToRGBA('#ffffff', 100)
1671
+ /** set the backgroundColor of attachment-buttons */
1672
+ this.buttonTextColor = convertColorToRGBA('#2a6ac1', 100)
1673
+ /** set the text color of attachment-buttons */
1674
+ this.buttonHoverBackgroundColor = convertColorToRGBA('#2a6ac1', 100)
1675
+ /** set the text size of attachment-buttons */
1676
+ this.buttonHoverTextColor = convertColorToRGBA('#ffffff', 100);
1677
+ /** set the text size of attachment-buttons */
1678
+ this.singleConversation = false;
1679
+ /** set the single conversation mode for the widget */
1680
+ this.nativeRating = true;
1681
+ /** set if native rating componet has to be shown */
1682
+ this.showInfoMessage = 'MEMBER_JOINED_GROUP'.split(',').map(key =&gt; { return key.trim()});
1683
+ /** disable or show bubble info message 'MEMBER_JOINED_CHAT' */
1684
+ this.typingLocation = 'content'
1685
+ /** set the location of typing indicator (header or content) */
1686
+ this.allowReopen = false;
1687
+ /** enable the user to reopen a closed conversation */
1688
+ this.continueConversationBeforeTime = 48;
1689
+ /** enable user to continue archived confersation before the value time from last timeout message */
1690
+ &nbsp;
1691
+ this.showWaitTime = true;
1692
+ &nbsp;
1693
+ this.showAvailableAgents = true;
1694
+ // this.parameters['availableAgents'] = [];
1695
+ &nbsp;
1696
+ this.showLogoutOption = false;
1697
+ &nbsp;
1698
+ this.offline_msg = this.LABEL_FIRST_MSG_NO_AGENTS;
1699
+ this.online_msg = this.LABEL_FIRST_MSG;
1700
+ &nbsp;
1701
+ this.isOpenNewMessage = false;
1702
+ this.showAttachmentButton = true;
1703
+ this.showAllConversations = true;
1704
+ &nbsp;
1705
+ // ============ END: SET EXTERNAL PARAMETERS ==============//
1706
+ &nbsp;
1707
+ &nbsp;
1708
+ // ============ BEGIN: SET INTERNAL PARAMETERS ==============//
1709
+ this.tenant = environment.firebaseConfig.tenant;
1710
+ // this.parameters['tenant'] = environment.tenant;
1711
+ // this.parameters.push({'tenant': environment.tenant});
1712
+ &nbsp;
1713
+ /** Set the widget title label shown in the widget header. Value type : string.
1714
+ The default value is Tiledesk. */
1715
+ /** name tenant ex: tilechat */
1716
+ this.channelType = CHANNEL_TYPE_GROUP;
1717
+ // this.parameters['channelType'] = CHANNEL_TYPE_GROUP;
1718
+ // this.parameters.push({'channelType': CHANNEL_TYPE_GROUP});
1719
+ /** channelType: group/direct */
1720
+ this.default_settings = {};
1721
+ // this.parameters.push({'default_settings': '' });
1722
+ /** settings for pass variables to js */
1723
+ this.isMobile = false;
1724
+ // this.parameters['isMobile'] = false;
1725
+ // this.parameters.push({'isMobile': false}); /** detect is mobile : detectIfIsMobile() */
1726
+ &nbsp;
1727
+ this.isLogged = false;
1728
+ // this.parameters['isLogged'] = false;
1729
+ // this.parameters.push({'isLogged': false}); /** detect is logged */
1730
+ &nbsp;
1731
+ this.BUILD_VERSION = 'v.' + environment.version;
1732
+ // this.parameters['BUILD_VERSION'] = 'v.' + environment.version;
1733
+ // this.parameters.push({'BUILD_VERSION': 'v.' + environment.version});
1734
+ &nbsp;
1735
+ this.filterSystemMsg = true;
1736
+ /** ???? scolpito in MessagingService. se è true i messaggi inviati da system non vengono visualizzati */
1737
+ // this.parameters['filterSystemMsg'] = true;
1738
+ // this.parameters.push({'filterSystemMsg': true});
1739
+ &nbsp;
1740
+ this.soundEnabled = true;
1741
+ // this.parameters['soundEnabled'] = true;
1742
+ // this.parameters.push({'soundEnabled': true});
1743
+ &nbsp;
1744
+ this.conversationsBadge = 0;
1745
+ // this.parameters['conversationsBadge'] = 0;
1746
+ // this.parameters.push({'conversationsBadge': 0});
1747
+ &nbsp;
1748
+ this.isOpenMenuOptions = false;
1749
+ // this.parameters['isOpenMenuOptions'] = false;
1750
+ // this.parameters.push({'isOpenMenuOptions': false});
1751
+ /** open/close menu options */
1752
+ this.signInWithCustomToken = false;
1753
+ // this.parameters['signInWithCustomToken'] = false;
1754
+ // this.parameters.push({'signInWithCustomToken': false});
1755
+ &nbsp;
1756
+ this.displayEyeCatcherCard = 'none';
1757
+ // this.parameters['displayEyeCatcherCard'] = 'none';
1758
+ // this.parameters.push({'displayEyeCatcherCard': 'none'});
1759
+ // ============ END: SET INTERNAL PARAMETERS ==============//
1760
+ &nbsp;
1761
+ this.supportMode = true;
1762
+ // this.parameters['supportMode'] = true;
1763
+ // this.parameters.push({'supportMode': true});
1764
+ &nbsp;
1765
+ this.newConversationStart = true;
1766
+ &nbsp;
1767
+ &nbsp;
1768
+ }
1769
+ &nbsp;
1770
+ &nbsp;
1771
+ /**
1772
+ * @param attributes
1773
+ */
1774
+ <span class="fstat-no" title="function not covered" > initialize(</span>) {
1775
+ <span class="cstat-no" title="statement not covered" > this.createDefaultSettingsObject();</span>
1776
+ <span class="cstat-no" title="statement not covered" > this.setParameter('isMobile', detectIfIsMobile(this.windowContext));</span>
1777
+ <span class="cstat-no" title="statement not covered" > this.setParameter('attributes', this.attributes);</span>
1778
+ <span class="cstat-no" title="statement not covered" > this.setProjectParameters();</span>
1779
+ }
1780
+ &nbsp;
1781
+ /** */
1782
+ <span class="fstat-no" title="function not covered" > public s</span>etProjectParameters() {
1783
+ let projectName = <span class="cstat-no" title="statement not covered" >this.project.name;</span>
1784
+ <span class="cstat-no" title="statement not covered" > if (this.widgetTitle &amp;&amp; this.widgetTitle !== '') {</span>
1785
+ <span class="cstat-no" title="statement not covered" > projectName = this.widgetTitle;</span>
1786
+ }
1787
+ <span class="cstat-no" title="statement not covered" > this.project.customization(</span>
1788
+ projectName,
1789
+ this.logoChat,
1790
+ avatarPlaceholder(projectName),
1791
+ setColorFromString(projectName),
1792
+ this.welcomeTitle,
1793
+ this.welcomeMsg
1794
+ );
1795
+ // console.log('this.project::::: ', this.project);
1796
+ }
1797
+ &nbsp;
1798
+ /**
1799
+ * 1: setDefaultSettings
1800
+ */
1801
+ <span class="fstat-no" title="function not covered" > createDefaultSettingsObject(</span>) {
1802
+ <span class="cstat-no" title="statement not covered" > this.default_settings = {</span>
1803
+ 'tenant': this.tenant, 'recipientId': this.recipientId,
1804
+ 'projectid': this.projectid, 'widgetTitle': this.widgetTitle,
1805
+ 'poweredBy': this.poweredBy, 'userEmail': this.userEmail, //'userId': this.userId,
1806
+ 'userFullname': this.userFullname, 'preChatForm': this.preChatForm, 'preChatFormJson': this.preChatFormJson,
1807
+ 'isOpen': this.isOpen, 'channelType': this.channelType,
1808
+ 'lang': this.lang, 'calloutTimer': this.calloutTimer, 'calloutStaus': this.calloutStaus,
1809
+ 'align': this.align,'welcomeMsg': this.welcomeMsg, 'calloutTitle': this.calloutTitle,
1810
+ 'calloutMsg': this.calloutMsg, 'fullscreenMode': this.fullscreenMode, 'hideHeaderCloseButton': this.hideHeaderCloseButton,
1811
+ 'themeColor': this.themeColor, 'themeColorOpacity': this.themeColorOpacity, 'themeForegroundColor': this.themeForegroundColor,
1812
+ 'allowTranscriptDownload': this.allowTranscriptDownload, //'userToken': this.userToken,
1813
+ 'autoStart': this.autoStart, 'startHidden': this.startHidden, 'isShown': this.isShown,
1814
+ 'startFromHome': this.startFromHome, 'logoChat': this.logoChat,
1815
+ 'welcomeTitle': this.welcomeTitle, 'marginX': this.marginX,
1816
+ 'marginY': this.marginY, 'lancherWidth': this.launcherWidth, 'lancherHeight': this.launcherHeight,
1817
+ 'baloonImage': this.baloonImage, 'baloonShape': this.baloonShape, 'isLogEnabled': this.isLogEnabled,
1818
+ 'openExternalLinkButton': this.openExternalLinkButton, 'hideHeaderConversationOptionsMenu': this.hideHeaderConversationOptionsMenu,
1819
+ 'hideCloseConversationOptionMenu': this.hideCloseConversationOptionMenu, 'hideRestartConversationOptionsMenu': this.hideRestartConversationOptionsMenu,
1820
+ 'showInfoMessage': this.showInfoMessage, 'typingLocation': this.typingLocation, 'allowReopen': this.allowReopen,
1821
+ 'hideSettings': this.hideSettings,'filterByRequester': this.filterByRequester,
1822
+ 'persistence': this.persistence,'showWaitTime': this.showWaitTime, 'showAvailableAgents': this.showAvailableAgents,
1823
+ 'showLogoutOption': this.showLogoutOption, 'showAttachmentButton': this.showAttachmentButton,
1824
+ 'showAllConversations': this.showAllConversations, 'jwt': this.jwt,
1825
+ 'dynamicWaitTimeReply': this.dynamicWaitTimeReply, 'soundEnabled': this.soundEnabled, 'logLevel': this.logLevel,
1826
+ 'bubbleSentBackground' : this.bubbleSentBackground, 'bubbleSentTextColor': this.bubbleSentTextColor,
1827
+ 'bubbleReceivedBackground': this.bubbleReceivedBackground, 'bubbleReceivedTextColor': this.bubbleReceivedTextColor,
1828
+ 'fontSize': this.fontSize, 'fontFamily': this.fontFamily, 'buttonFontSize': this.buttonFontSize,
1829
+ 'buttonBackgroundColor': this.buttonBackgroundColor, 'buttonTextColor': this.buttonTextColor,
1830
+ 'buttonHoverBackgroundColor': this.buttonHoverBackgroundColor, 'buttonHoverTextColor': this.buttonHoverTextColor
1831
+ };
1832
+ }
1833
+ &nbsp;
1834
+ &nbsp;
1835
+ <span class="fstat-no" title="function not covered" > setColorWithGradient(</span>) {
1836
+ <span class="cstat-no" title="statement not covered" > this.colorGradient = 'linear-gradient(' + this.themeColor + ', ' + convertColorToRGBA(this.themeColor, this.themeColorOpacity) + ')';</span>
1837
+ <span class="cstat-no" title="statement not covered" > this.colorGradient180 = 'linear-gradient( 180grad, ' + this.themeColor + ', ' + convertColorToRGBA(this.themeColor, this.themeColorOpacity) + ')';</span>
1838
+ <span class="cstat-no" title="statement not covered" > this.bubbleSentBackground = 'linear-gradient( 135grad, ' + this.bubbleSentBackground + ', ' + convertColorToRGBA(this.bubbleSentBackground, 80) + ')';</span>
1839
+ }
1840
+ &nbsp;
1841
+ &nbsp;
1842
+ <span class="fstat-no" title="function not covered" > setParentBodyStyleMobile(</span>isOpen: boolean, isMobile: boolean){
1843
+ <span class="cstat-no" title="statement not covered" > if(isOpen &amp;&amp; isMobile){</span>
1844
+ //block body scroll
1845
+ // window.parent.document.body.style.height = '100vh';
1846
+ <span class="cstat-no" title="statement not covered" > window.parent.document.body.style.height = '0';</span>
1847
+ <span class="cstat-no" title="statement not covered" > window.parent.document.body.style.width = '100%';</span>
1848
+ <span class="cstat-no" title="statement not covered" > window.parent.document.body.style.overflowY = 'hidden'</span>
1849
+ <span class="cstat-no" title="statement not covered" > window.parent.document.body.style.position = 'fixed';</span>
1850
+ }else <span class="cstat-no" title="statement not covered" >if(!isOpen &amp;&amp; isMobile){</span>
1851
+ //reset body style
1852
+ <span class="cstat-no" title="statement not covered" > window.parent.document.body.style.removeProperty('height')</span>
1853
+ <span class="cstat-no" title="statement not covered" > window.parent.document.body.style.removeProperty('width')</span>
1854
+ <span class="cstat-no" title="statement not covered" > window.parent.document.body.style.removeProperty('overflow-y')</span>
1855
+ <span class="cstat-no" title="statement not covered" > window.parent.document.body.style.removeProperty('position')</span>
1856
+ }
1857
+ }
1858
+ &nbsp;
1859
+ <span class="fstat-no" title="function not covered" > setElementStyle(</span>isOpen: boolean){
1860
+ const divTiledeskWidget = <span class="cstat-no" title="statement not covered" >this.windowContext.document.getElementById('tiledeskdiv');</span>
1861
+ const chat21conversationsEL = <span class="cstat-no" title="statement not covered" >document.getElementById('chat21-conversations')</span>
1862
+ &nbsp;
1863
+ //customize shadow for 'tiledeskdiv' and 'chat21-conversations'
1864
+ <span class="cstat-no" title="statement not covered" > if(isOpen &amp;&amp; divTiledeskWidget){</span>
1865
+ <span class="cstat-no" title="statement not covered" > setTimeout(<span class="fstat-no" title="function not covered" >() =&gt; {</span></span>
1866
+ <span class="cstat-no" title="statement not covered" > divTiledeskWidget.classList.add('shadow')</span>
1867
+ <span class="cstat-no" title="statement not covered" > chat21conversationsEL.classList.add('shadow')</span>
1868
+ }, 1000);
1869
+ } else <span class="cstat-no" title="statement not covered" >if(!isOpen &amp;&amp; divTiledeskWidget){</span>
1870
+ <span class="cstat-no" title="statement not covered" > divTiledeskWidget.classList.remove('shadow')</span>
1871
+ <span class="cstat-no" title="statement not covered" > chat21conversationsEL.classList.remove('shadow')</span>
1872
+ }
1873
+ &nbsp;
1874
+ &nbsp;
1875
+ //customize border-radius for 'chat21-conversations'
1876
+ <span class="cstat-no" title="statement not covered" > if(isOpen &amp;&amp; this.isMobile &amp;&amp; chat21conversationsEL){</span>
1877
+ <span class="cstat-no" title="statement not covered" > chat21conversationsEL.classList.add('isMobile')</span>
1878
+ } else <span class="cstat-no" title="statement not covered" >if(!isOpen &amp;&amp; chat21conversationsEL){</span>
1879
+ <span class="cstat-no" title="statement not covered" > chat21conversationsEL.classList.remove('isMobile')</span>
1880
+ }
1881
+ }
1882
+ &nbsp;
1883
+ &nbsp;
1884
+ /**
1885
+ *
1886
+ * @param val
1887
+ */
1888
+ <span class="fstat-no" title="function not covered" > public s</span>etIsOpen(val: boolean) {
1889
+ // console.log('setIsOpen', val);
1890
+ <span class="cstat-no" title="statement not covered" > this.isOpen = val;</span>
1891
+ <span class="cstat-no" title="statement not covered" > this.setParentBodyStyleMobile(val, this.isMobile)</span>
1892
+ <span class="cstat-no" title="statement not covered" > this.setElementStyle(val)</span>
1893
+ <span class="cstat-no" title="statement not covered" > this.obsIsOpen.next(val);</span>
1894
+ }
1895
+ &nbsp;
1896
+ /**
1897
+ *
1898
+ * @param key
1899
+ * @param val
1900
+ */
1901
+ public setParameter(key: string, val: any, storage?: boolean) {
1902
+ // storage = true;
1903
+ this[key] = val;
1904
+ const obj = {'key': key, 'val': val};
1905
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (storage === true) {
1906
+ <span class="cstat-no" title="statement not covered" > this.obsObjChanged.next(obj);</span>
1907
+ }
1908
+ }
1909
+ &nbsp;
1910
+ /**
1911
+ *
1912
+ * @param key
1913
+ * @param val
1914
+ */
1915
+ <span class="fstat-no" title="function not covered" > public s</span>etAttributeParameter(key: string, val: any) {
1916
+ <span class="cstat-no" title="statement not covered" > this.attributes[key] = val;</span>
1917
+ <span class="cstat-no" title="statement not covered" > this.setParameter('attributes', this.attributes, true);</span>
1918
+ }
1919
+ &nbsp;
1920
+ }</pre></td></tr></table></pre>
1921
+
1922
+ <div class='push'></div><!-- for sticky footer -->
1923
+ </div><!-- /wrapper -->
1924
+ <div class='footer quiet pad2 space-top1 center small'>
1925
+ Code coverage generated by
1926
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1927
+ at Tue Nov 29 2022 09:13:07 GMT+0100 (Ora standard dell’Europa centrale)
1928
+ </div>
1929
+ <script src="../../../prettify.js"></script>
1930
+ <script>
1931
+ window.onload = function () {
1932
+ prettyPrint();
1933
+ };
1934
+ </script>
1935
+ <script src="../../../sorter.js"></script>
1936
+ <script src="../../../block-navigation.js"></script>
1937
+ </body>
1938
+ </html>
1939
+