qpp-style 9.24.3 → 9.24.4

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 (186) hide show
  1. package/components/Header/HeaderContainer.jsx +32 -23
  2. package/dist/browser.js +1 -1
  3. package/dist/browser.js.map +1 -1
  4. package/dist/index.js +1 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/react/index.js +1 -1
  7. package/dist/react/index.js.map +1 -1
  8. package/package.json +1 -1
  9. package/styles/qppds/components/_header.scss +7 -2
  10. package/coverage/clover.xml +0 -1464
  11. package/coverage/coverage-final.json +0 -73
  12. package/coverage/lcov-report/base.css +0 -224
  13. package/coverage/lcov-report/block-navigation.js +0 -87
  14. package/coverage/lcov-report/components/Accordion/index.html +0 -116
  15. package/coverage/lcov-report/components/Accordion/index.jsx.html +0 -364
  16. package/coverage/lcov-report/components/Button/index.html +0 -116
  17. package/coverage/lcov-report/components/Button/index.js.html +0 -355
  18. package/coverage/lcov-report/components/Error/Collapsible.jsx.html +0 -349
  19. package/coverage/lcov-report/components/Error/ErrorUI.jsx.html +0 -178
  20. package/coverage/lcov-report/components/Error/index.html +0 -131
  21. package/coverage/lcov-report/components/Footer/FooterUI.jsx.html +0 -721
  22. package/coverage/lcov-report/components/Footer/SocialLinks.jsx.html +0 -265
  23. package/coverage/lcov-report/components/Footer/Subscribe.jsx.html +0 -187
  24. package/coverage/lcov-report/components/Footer/index.html +0 -146
  25. package/coverage/lcov-report/components/GovBanner/index.html +0 -116
  26. package/coverage/lcov-report/components/GovBanner/index.js.html +0 -436
  27. package/coverage/lcov-report/components/Header/HeaderAccountMenu.jsx.html +0 -367
  28. package/coverage/lcov-report/components/Header/HeaderCancel.jsx.html +0 -133
  29. package/coverage/lcov-report/components/Header/HeaderContainer.jsx.html +0 -280
  30. package/coverage/lcov-report/components/Header/HeaderLogo.jsx.html +0 -211
  31. package/coverage/lcov-report/components/Header/HeaderMenuButton.js.html +0 -235
  32. package/coverage/lcov-report/components/Header/HeaderMenuItem.jsx.html +0 -802
  33. package/coverage/lcov-report/components/Header/HeaderMenuLink.js.html +0 -253
  34. package/coverage/lcov-report/components/Header/HeaderMenuSignOutButton.js.html +0 -271
  35. package/coverage/lcov-report/components/Header/HeaderMobileButton.js.html +0 -196
  36. package/coverage/lcov-report/components/Header/HeaderUI.jsx.html +0 -562
  37. package/coverage/lcov-report/components/Header/HelpIcon.jsx.html +0 -181
  38. package/coverage/lcov-report/components/Header/ImpersonatorBanner.jsx.html +0 -331
  39. package/coverage/lcov-report/components/Header/NavigationButtonIcon.jsx.html +0 -166
  40. package/coverage/lcov-report/components/Header/hooks.js.html +0 -283
  41. package/coverage/lcov-report/components/Header/index.html +0 -326
  42. package/coverage/lcov-report/components/Header/utag-helpers.js.html +0 -112
  43. package/coverage/lcov-report/components/Infotip/Infotip.jsx.html +0 -310
  44. package/coverage/lcov-report/components/Infotip/InfotipIcon.jsx.html +0 -208
  45. package/coverage/lcov-report/components/Infotip/index.html +0 -146
  46. package/coverage/lcov-report/components/Infotip/index.js.html +0 -94
  47. package/coverage/lcov-report/components/Modal/LegacyModal.jsx.html +0 -301
  48. package/coverage/lcov-report/components/Modal/Modal.jsx.html +0 -505
  49. package/coverage/lcov-report/components/Modal/index.html +0 -146
  50. package/coverage/lcov-report/components/Modal/index.jsx.html +0 -151
  51. package/coverage/lcov-report/components/NotificationBanner/CollapsedView.js.html +0 -202
  52. package/coverage/lcov-report/components/NotificationBanner/ExpandedView.js.html +0 -220
  53. package/coverage/lcov-report/components/NotificationBanner/index.html +0 -146
  54. package/coverage/lcov-report/components/NotificationBanner/index.js.html +0 -748
  55. package/coverage/lcov-report/components/SanitizedContent/index.html +0 -116
  56. package/coverage/lcov-report/components/SanitizedContent/index.jsx.html +0 -685
  57. package/coverage/lcov-report/components/SessionDialogUI.jsx.html +0 -868
  58. package/coverage/lcov-report/components/SideNav/Chart/ScoreChart.jsx.html +0 -889
  59. package/coverage/lcov-report/components/SideNav/Chart/index.html +0 -116
  60. package/coverage/lcov-report/components/SideNav/Content/SelectRole/index.html +0 -116
  61. package/coverage/lcov-report/components/SideNav/Content/SelectRole/utils.js.html +0 -505
  62. package/coverage/lcov-report/components/SideNav/helpers.js.html +0 -1138
  63. package/coverage/lcov-report/components/SideNav/index.html +0 -116
  64. package/coverage/lcov-report/components/Tooltip/Tooltip.jsx.html +0 -349
  65. package/coverage/lcov-report/components/Tooltip/index.html +0 -146
  66. package/coverage/lcov-report/components/Tooltip/index.js.html +0 -94
  67. package/coverage/lcov-report/components/Tooltip/position.js.html +0 -289
  68. package/coverage/lcov-report/components/hooks/index.html +0 -116
  69. package/coverage/lcov-report/components/hooks/useGetConfig.js.html +0 -310
  70. package/coverage/lcov-report/components/index.html +0 -116
  71. package/coverage/lcov-report/favicon.png +0 -0
  72. package/coverage/lcov-report/index.html +0 -491
  73. package/coverage/lcov-report/lib/Chevron.jsx.html +0 -181
  74. package/coverage/lcov-report/lib/SvgComponents.jsx.html +0 -1840
  75. package/coverage/lcov-report/lib/index.html +0 -131
  76. package/coverage/lcov-report/prettify.css +0 -1
  77. package/coverage/lcov-report/prettify.js +0 -2
  78. package/coverage/lcov-report/react/components/Accordion/index.html +0 -116
  79. package/coverage/lcov-report/react/components/Accordion/index.jsx.html +0 -364
  80. package/coverage/lcov-report/react/components/Button/index.html +0 -116
  81. package/coverage/lcov-report/react/components/Button/index.js.html +0 -355
  82. package/coverage/lcov-report/react/components/Dropdown/index.html +0 -116
  83. package/coverage/lcov-report/react/components/Dropdown/index.js.html +0 -340
  84. package/coverage/lcov-report/react/components/Error/Collapsible.jsx.html +0 -349
  85. package/coverage/lcov-report/react/components/Error/ErrorUI.jsx.html +0 -178
  86. package/coverage/lcov-report/react/components/Error/error.js.html +0 -163
  87. package/coverage/lcov-report/react/components/Error/index.html +0 -146
  88. package/coverage/lcov-report/react/components/Footer/FooterUI.jsx.html +0 -721
  89. package/coverage/lcov-report/react/components/Footer/LegacyFooterUI.jsx.html +0 -667
  90. package/coverage/lcov-report/react/components/Footer/SocialLinks.jsx.html +0 -265
  91. package/coverage/lcov-report/react/components/Footer/Subscribe.jsx.html +0 -187
  92. package/coverage/lcov-report/react/components/Footer/footer.js.html +0 -145
  93. package/coverage/lcov-report/react/components/Footer/index.html +0 -161
  94. package/coverage/lcov-report/react/components/GovBanner/index.html +0 -116
  95. package/coverage/lcov-report/react/components/GovBanner/index.js.html +0 -436
  96. package/coverage/lcov-report/react/components/Header/HeaderAccountMenu.jsx.html +0 -367
  97. package/coverage/lcov-report/react/components/Header/HeaderCancel.jsx.html +0 -133
  98. package/coverage/lcov-report/react/components/Header/HeaderContainer.jsx.html +0 -280
  99. package/coverage/lcov-report/react/components/Header/HeaderLogo.jsx.html +0 -211
  100. package/coverage/lcov-report/react/components/Header/HeaderMenuButton.js.html +0 -235
  101. package/coverage/lcov-report/react/components/Header/HeaderMenuItem.jsx.html +0 -802
  102. package/coverage/lcov-report/react/components/Header/HeaderMenuLink.js.html +0 -253
  103. package/coverage/lcov-report/react/components/Header/HeaderMenuSignOutButton.js.html +0 -271
  104. package/coverage/lcov-report/react/components/Header/HeaderMobileButton.js.html +0 -196
  105. package/coverage/lcov-report/react/components/Header/HeaderUI.jsx.html +0 -577
  106. package/coverage/lcov-report/react/components/Header/HelpIcon.jsx.html +0 -181
  107. package/coverage/lcov-report/react/components/Header/ImpersonatorBanner.jsx.html +0 -331
  108. package/coverage/lcov-report/react/components/Header/NavigationButtonIcon.jsx.html +0 -166
  109. package/coverage/lcov-report/react/components/Header/header.js.html +0 -205
  110. package/coverage/lcov-report/react/components/Header/hooks.js.html +0 -283
  111. package/coverage/lcov-report/react/components/Header/index.html +0 -341
  112. package/coverage/lcov-report/react/components/Header/utag-helpers.js.html +0 -112
  113. package/coverage/lcov-report/react/components/Infotip/Infotip.jsx.html +0 -310
  114. package/coverage/lcov-report/react/components/Infotip/InfotipContent.jsx.html +0 -223
  115. package/coverage/lcov-report/react/components/Infotip/InfotipIcon.jsx.html +0 -208
  116. package/coverage/lcov-report/react/components/Infotip/index.html +0 -146
  117. package/coverage/lcov-report/react/components/Infotip/index.js.html +0 -94
  118. package/coverage/lcov-report/react/components/Modal/LegacyModal.jsx.html +0 -301
  119. package/coverage/lcov-report/react/components/Modal/Modal.jsx.html +0 -505
  120. package/coverage/lcov-report/react/components/Modal/index.html +0 -146
  121. package/coverage/lcov-report/react/components/Modal/index.jsx.html +0 -151
  122. package/coverage/lcov-report/react/components/NotificationBanner/CollapsedView.js.html +0 -202
  123. package/coverage/lcov-report/react/components/NotificationBanner/ExpandedView.js.html +0 -220
  124. package/coverage/lcov-report/react/components/NotificationBanner/index.html +0 -146
  125. package/coverage/lcov-report/react/components/NotificationBanner/index.js.html +0 -748
  126. package/coverage/lcov-report/react/components/SanitizedContent/index.html +0 -116
  127. package/coverage/lcov-report/react/components/SanitizedContent/index.jsx.html +0 -685
  128. package/coverage/lcov-report/react/components/SessionDialog/index.html +0 -116
  129. package/coverage/lcov-report/react/components/SessionDialog/sessionDialog.js.html +0 -163
  130. package/coverage/lcov-report/react/components/SessionDialogUI.jsx.html +0 -868
  131. package/coverage/lcov-report/react/components/SideNav/AnimationGroup/AnimationGroup.jsx.html +0 -166
  132. package/coverage/lcov-report/react/components/SideNav/AnimationGroup/index.html +0 -116
  133. package/coverage/lcov-report/react/components/SideNav/Chart/ScoreChart.jsx.html +0 -889
  134. package/coverage/lcov-report/react/components/SideNav/Chart/index.html +0 -131
  135. package/coverage/lcov-report/react/components/SideNav/Chart/index.js.html +0 -94
  136. package/coverage/lcov-report/react/components/SideNav/Content/LevelOneContent.jsx.html +0 -682
  137. package/coverage/lcov-report/react/components/SideNav/Content/LevelTwoContent.jsx.html +0 -733
  138. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.html +0 -131
  139. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.js.html +0 -316
  140. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/utils.js.html +0 -505
  141. package/coverage/lcov-report/react/components/SideNav/Content/index.html +0 -146
  142. package/coverage/lcov-report/react/components/SideNav/Content/index.js.html +0 -97
  143. package/coverage/lcov-report/react/components/SideNav/Details/IndividualDetails.jsx.html +0 -139
  144. package/coverage/lcov-report/react/components/SideNav/Details/PracticeDetails.jsx.html +0 -220
  145. package/coverage/lcov-report/react/components/SideNav/Details/index.html +0 -146
  146. package/coverage/lcov-report/react/components/SideNav/Details/index.js.html +0 -97
  147. package/coverage/lcov-report/react/components/SideNav/Links/CmsSwitchLink.jsx.html +0 -208
  148. package/coverage/lcov-report/react/components/SideNav/Links/NavItemInline.jsx.html +0 -247
  149. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkContainer.jsx.html +0 -199
  150. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkDrawer.jsx.html +0 -913
  151. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkInline.jsx.html +0 -421
  152. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkToggle.jsx.html +0 -187
  153. package/coverage/lcov-report/react/components/SideNav/Links/index.html +0 -206
  154. package/coverage/lcov-report/react/components/SideNav/Links/index.js.html +0 -124
  155. package/coverage/lcov-report/react/components/SideNav/UI/SideNavUI.jsx.html +0 -1087
  156. package/coverage/lcov-report/react/components/SideNav/UI/index.html +0 -131
  157. package/coverage/lcov-report/react/components/SideNav/UI/index.js.html +0 -94
  158. package/coverage/lcov-report/react/components/SideNav/helpers.js.html +0 -1138
  159. package/coverage/lcov-report/react/components/SideNav/index.html +0 -131
  160. package/coverage/lcov-report/react/components/SideNav/index.js.html +0 -244
  161. package/coverage/lcov-report/react/components/Tooltip/Tooltip.jsx.html +0 -349
  162. package/coverage/lcov-report/react/components/Tooltip/index.html +0 -146
  163. package/coverage/lcov-report/react/components/Tooltip/index.js.html +0 -94
  164. package/coverage/lcov-report/react/components/Tooltip/position.js.html +0 -289
  165. package/coverage/lcov-report/react/components/hooks/index.html +0 -116
  166. package/coverage/lcov-report/react/components/hooks/useGetConfig.js.html +0 -310
  167. package/coverage/lcov-report/react/components/index.html +0 -116
  168. package/coverage/lcov-report/react/index.html +0 -116
  169. package/coverage/lcov-report/react/index.js.html +0 -178
  170. package/coverage/lcov-report/react/lib/Chevron.jsx.html +0 -181
  171. package/coverage/lcov-report/react/lib/SvgComponents.jsx.html +0 -1840
  172. package/coverage/lcov-report/react/lib/index.html +0 -131
  173. package/coverage/lcov-report/react/lib/svg-definitions.svg.html +0 -460
  174. package/coverage/lcov-report/react/session/index.html +0 -161
  175. package/coverage/lcov-report/react/session/index.js.html +0 -100
  176. package/coverage/lcov-report/react/session/logout.js.html +0 -307
  177. package/coverage/lcov-report/react/session/refresh.js.html +0 -232
  178. package/coverage/lcov-report/react/session/ttl.js.html +0 -196
  179. package/coverage/lcov-report/session/index.html +0 -161
  180. package/coverage/lcov-report/session/index.js.html +0 -100
  181. package/coverage/lcov-report/session/logout.js.html +0 -307
  182. package/coverage/lcov-report/session/refresh.js.html +0 -232
  183. package/coverage/lcov-report/session/ttl.js.html +0 -196
  184. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  185. package/coverage/lcov-report/sorter.js +0 -196
  186. package/coverage/lcov.info +0 -3218
@@ -1,1138 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for components/SideNav/helpers.js</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../prettify.css" />
9
- <link rel="stylesheet" href="../../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../../index.html">All files</a> / <a href="index.html">components/SideNav</a> helpers.js</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">32.92% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>27/82</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>0/31</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>0/17</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">33.75% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>27/80</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input oninput="onInput()" type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line low'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a>
323
- <a name='L258'></a><a href='#L258'>258</a>
324
- <a name='L259'></a><a href='#L259'>259</a>
325
- <a name='L260'></a><a href='#L260'>260</a>
326
- <a name='L261'></a><a href='#L261'>261</a>
327
- <a name='L262'></a><a href='#L262'>262</a>
328
- <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a>
331
- <a name='L266'></a><a href='#L266'>266</a>
332
- <a name='L267'></a><a href='#L267'>267</a>
333
- <a name='L268'></a><a href='#L268'>268</a>
334
- <a name='L269'></a><a href='#L269'>269</a>
335
- <a name='L270'></a><a href='#L270'>270</a>
336
- <a name='L271'></a><a href='#L271'>271</a>
337
- <a name='L272'></a><a href='#L272'>272</a>
338
- <a name='L273'></a><a href='#L273'>273</a>
339
- <a name='L274'></a><a href='#L274'>274</a>
340
- <a name='L275'></a><a href='#L275'>275</a>
341
- <a name='L276'></a><a href='#L276'>276</a>
342
- <a name='L277'></a><a href='#L277'>277</a>
343
- <a name='L278'></a><a href='#L278'>278</a>
344
- <a name='L279'></a><a href='#L279'>279</a>
345
- <a name='L280'></a><a href='#L280'>280</a>
346
- <a name='L281'></a><a href='#L281'>281</a>
347
- <a name='L282'></a><a href='#L282'>282</a>
348
- <a name='L283'></a><a href='#L283'>283</a>
349
- <a name='L284'></a><a href='#L284'>284</a>
350
- <a name='L285'></a><a href='#L285'>285</a>
351
- <a name='L286'></a><a href='#L286'>286</a>
352
- <a name='L287'></a><a href='#L287'>287</a>
353
- <a name='L288'></a><a href='#L288'>288</a>
354
- <a name='L289'></a><a href='#L289'>289</a>
355
- <a name='L290'></a><a href='#L290'>290</a>
356
- <a name='L291'></a><a href='#L291'>291</a>
357
- <a name='L292'></a><a href='#L292'>292</a>
358
- <a name='L293'></a><a href='#L293'>293</a>
359
- <a name='L294'></a><a href='#L294'>294</a>
360
- <a name='L295'></a><a href='#L295'>295</a>
361
- <a name='L296'></a><a href='#L296'>296</a>
362
- <a name='L297'></a><a href='#L297'>297</a>
363
- <a name='L298'></a><a href='#L298'>298</a>
364
- <a name='L299'></a><a href='#L299'>299</a>
365
- <a name='L300'></a><a href='#L300'>300</a>
366
- <a name='L301'></a><a href='#L301'>301</a>
367
- <a name='L302'></a><a href='#L302'>302</a>
368
- <a name='L303'></a><a href='#L303'>303</a>
369
- <a name='L304'></a><a href='#L304'>304</a>
370
- <a name='L305'></a><a href='#L305'>305</a>
371
- <a name='L306'></a><a href='#L306'>306</a>
372
- <a name='L307'></a><a href='#L307'>307</a>
373
- <a name='L308'></a><a href='#L308'>308</a>
374
- <a name='L309'></a><a href='#L309'>309</a>
375
- <a name='L310'></a><a href='#L310'>310</a>
376
- <a name='L311'></a><a href='#L311'>311</a>
377
- <a name='L312'></a><a href='#L312'>312</a>
378
- <a name='L313'></a><a href='#L313'>313</a>
379
- <a name='L314'></a><a href='#L314'>314</a>
380
- <a name='L315'></a><a href='#L315'>315</a>
381
- <a name='L316'></a><a href='#L316'>316</a>
382
- <a name='L317'></a><a href='#L317'>317</a>
383
- <a name='L318'></a><a href='#L318'>318</a>
384
- <a name='L319'></a><a href='#L319'>319</a>
385
- <a name='L320'></a><a href='#L320'>320</a>
386
- <a name='L321'></a><a href='#L321'>321</a>
387
- <a name='L322'></a><a href='#L322'>322</a>
388
- <a name='L323'></a><a href='#L323'>323</a>
389
- <a name='L324'></a><a href='#L324'>324</a>
390
- <a name='L325'></a><a href='#L325'>325</a>
391
- <a name='L326'></a><a href='#L326'>326</a>
392
- <a name='L327'></a><a href='#L327'>327</a>
393
- <a name='L328'></a><a href='#L328'>328</a>
394
- <a name='L329'></a><a href='#L329'>329</a>
395
- <a name='L330'></a><a href='#L330'>330</a>
396
- <a name='L331'></a><a href='#L331'>331</a>
397
- <a name='L332'></a><a href='#L332'>332</a>
398
- <a name='L333'></a><a href='#L333'>333</a>
399
- <a name='L334'></a><a href='#L334'>334</a>
400
- <a name='L335'></a><a href='#L335'>335</a>
401
- <a name='L336'></a><a href='#L336'>336</a>
402
- <a name='L337'></a><a href='#L337'>337</a>
403
- <a name='L338'></a><a href='#L338'>338</a>
404
- <a name='L339'></a><a href='#L339'>339</a>
405
- <a name='L340'></a><a href='#L340'>340</a>
406
- <a name='L341'></a><a href='#L341'>341</a>
407
- <a name='L342'></a><a href='#L342'>342</a>
408
- <a name='L343'></a><a href='#L343'>343</a>
409
- <a name='L344'></a><a href='#L344'>344</a>
410
- <a name='L345'></a><a href='#L345'>345</a>
411
- <a name='L346'></a><a href='#L346'>346</a>
412
- <a name='L347'></a><a href='#L347'>347</a>
413
- <a name='L348'></a><a href='#L348'>348</a>
414
- <a name='L349'></a><a href='#L349'>349</a>
415
- <a name='L350'></a><a href='#L350'>350</a>
416
- <a name='L351'></a><a href='#L351'>351</a>
417
- <a name='L352'></a><a href='#L352'>352</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
418
- <span class="cline-any cline-neutral">&nbsp;</span>
419
- <span class="cline-any cline-neutral">&nbsp;</span>
420
- <span class="cline-any cline-neutral">&nbsp;</span>
421
- <span class="cline-any cline-neutral">&nbsp;</span>
422
- <span class="cline-any cline-neutral">&nbsp;</span>
423
- <span class="cline-any cline-neutral">&nbsp;</span>
424
- <span class="cline-any cline-neutral">&nbsp;</span>
425
- <span class="cline-any cline-neutral">&nbsp;</span>
426
- <span class="cline-any cline-neutral">&nbsp;</span>
427
- <span class="cline-any cline-neutral">&nbsp;</span>
428
- <span class="cline-any cline-neutral">&nbsp;</span>
429
- <span class="cline-any cline-neutral">&nbsp;</span>
430
- <span class="cline-any cline-neutral">&nbsp;</span>
431
- <span class="cline-any cline-neutral">&nbsp;</span>
432
- <span class="cline-any cline-neutral">&nbsp;</span>
433
- <span class="cline-any cline-neutral">&nbsp;</span>
434
- <span class="cline-any cline-neutral">&nbsp;</span>
435
- <span class="cline-any cline-neutral">&nbsp;</span>
436
- <span class="cline-any cline-neutral">&nbsp;</span>
437
- <span class="cline-any cline-neutral">&nbsp;</span>
438
- <span class="cline-any cline-yes">1x</span>
439
- <span class="cline-any cline-yes">1x</span>
440
- <span class="cline-any cline-yes">1x</span>
441
- <span class="cline-any cline-yes">1x</span>
442
- <span class="cline-any cline-yes">1x</span>
443
- <span class="cline-any cline-yes">1x</span>
444
- <span class="cline-any cline-yes">1x</span>
445
- <span class="cline-any cline-yes">1x</span>
446
- <span class="cline-any cline-yes">1x</span>
447
- <span class="cline-any cline-yes">1x</span>
448
- <span class="cline-any cline-neutral">&nbsp;</span>
449
- <span class="cline-any cline-yes">1x</span>
450
- <span class="cline-any cline-no">&nbsp;</span>
451
- <span class="cline-any cline-no">&nbsp;</span>
452
- <span class="cline-any cline-neutral">&nbsp;</span>
453
- <span class="cline-any cline-no">&nbsp;</span>
454
- <span class="cline-any cline-neutral">&nbsp;</span>
455
- <span class="cline-any cline-neutral">&nbsp;</span>
456
- <span class="cline-any cline-neutral">&nbsp;</span>
457
- <span class="cline-any cline-yes">1x</span>
458
- <span class="cline-any cline-no">&nbsp;</span>
459
- <span class="cline-any cline-neutral">&nbsp;</span>
460
- <span class="cline-any cline-neutral">&nbsp;</span>
461
- <span class="cline-any cline-yes">1x</span>
462
- <span class="cline-any cline-no">&nbsp;</span>
463
- <span class="cline-any cline-no">&nbsp;</span>
464
- <span class="cline-any cline-no">&nbsp;</span>
465
- <span class="cline-any cline-no">&nbsp;</span>
466
- <span class="cline-any cline-no">&nbsp;</span>
467
- <span class="cline-any cline-neutral">&nbsp;</span>
468
- <span class="cline-any cline-no">&nbsp;</span>
469
- <span class="cline-any cline-neutral">&nbsp;</span>
470
- <span class="cline-any cline-neutral">&nbsp;</span>
471
- <span class="cline-any cline-neutral">&nbsp;</span>
472
- <span class="cline-any cline-neutral">&nbsp;</span>
473
- <span class="cline-any cline-neutral">&nbsp;</span>
474
- <span class="cline-any cline-neutral">&nbsp;</span>
475
- <span class="cline-any cline-neutral">&nbsp;</span>
476
- <span class="cline-any cline-neutral">&nbsp;</span>
477
- <span class="cline-any cline-neutral">&nbsp;</span>
478
- <span class="cline-any cline-neutral">&nbsp;</span>
479
- <span class="cline-any cline-neutral">&nbsp;</span>
480
- <span class="cline-any cline-neutral">&nbsp;</span>
481
- <span class="cline-any cline-neutral">&nbsp;</span>
482
- <span class="cline-any cline-neutral">&nbsp;</span>
483
- <span class="cline-any cline-yes">1x</span>
484
- <span class="cline-any cline-no">&nbsp;</span>
485
- <span class="cline-any cline-neutral">&nbsp;</span>
486
- <span class="cline-any cline-neutral">&nbsp;</span>
487
- <span class="cline-any cline-neutral">&nbsp;</span>
488
- <span class="cline-any cline-neutral">&nbsp;</span>
489
- <span class="cline-any cline-neutral">&nbsp;</span>
490
- <span class="cline-any cline-neutral">&nbsp;</span>
491
- <span class="cline-any cline-neutral">&nbsp;</span>
492
- <span class="cline-any cline-neutral">&nbsp;</span>
493
- <span class="cline-any cline-neutral">&nbsp;</span>
494
- <span class="cline-any cline-neutral">&nbsp;</span>
495
- <span class="cline-any cline-neutral">&nbsp;</span>
496
- <span class="cline-any cline-neutral">&nbsp;</span>
497
- <span class="cline-any cline-neutral">&nbsp;</span>
498
- <span class="cline-any cline-neutral">&nbsp;</span>
499
- <span class="cline-any cline-neutral">&nbsp;</span>
500
- <span class="cline-any cline-neutral">&nbsp;</span>
501
- <span class="cline-any cline-neutral">&nbsp;</span>
502
- <span class="cline-any cline-neutral">&nbsp;</span>
503
- <span class="cline-any cline-neutral">&nbsp;</span>
504
- <span class="cline-any cline-neutral">&nbsp;</span>
505
- <span class="cline-any cline-neutral">&nbsp;</span>
506
- <span class="cline-any cline-neutral">&nbsp;</span>
507
- <span class="cline-any cline-neutral">&nbsp;</span>
508
- <span class="cline-any cline-neutral">&nbsp;</span>
509
- <span class="cline-any cline-neutral">&nbsp;</span>
510
- <span class="cline-any cline-neutral">&nbsp;</span>
511
- <span class="cline-any cline-no">&nbsp;</span>
512
- <span class="cline-any cline-no">&nbsp;</span>
513
- <span class="cline-any cline-neutral">&nbsp;</span>
514
- <span class="cline-any cline-neutral">&nbsp;</span>
515
- <span class="cline-any cline-yes">1x</span>
516
- <span class="cline-any cline-neutral">&nbsp;</span>
517
- <span class="cline-any cline-neutral">&nbsp;</span>
518
- <span class="cline-any cline-neutral">&nbsp;</span>
519
- <span class="cline-any cline-neutral">&nbsp;</span>
520
- <span class="cline-any cline-neutral">&nbsp;</span>
521
- <span class="cline-any cline-neutral">&nbsp;</span>
522
- <span class="cline-any cline-neutral">&nbsp;</span>
523
- <span class="cline-any cline-neutral">&nbsp;</span>
524
- <span class="cline-any cline-neutral">&nbsp;</span>
525
- <span class="cline-any cline-neutral">&nbsp;</span>
526
- <span class="cline-any cline-neutral">&nbsp;</span>
527
- <span class="cline-any cline-yes">1x</span>
528
- <span class="cline-any cline-neutral">&nbsp;</span>
529
- <span class="cline-any cline-neutral">&nbsp;</span>
530
- <span class="cline-any cline-neutral">&nbsp;</span>
531
- <span class="cline-any cline-neutral">&nbsp;</span>
532
- <span class="cline-any cline-yes">1x</span>
533
- <span class="cline-any cline-no">&nbsp;</span>
534
- <span class="cline-any cline-no">&nbsp;</span>
535
- <span class="cline-any cline-neutral">&nbsp;</span>
536
- <span class="cline-any cline-neutral">&nbsp;</span>
537
- <span class="cline-any cline-neutral">&nbsp;</span>
538
- <span class="cline-any cline-no">&nbsp;</span>
539
- <span class="cline-any cline-neutral">&nbsp;</span>
540
- <span class="cline-any cline-neutral">&nbsp;</span>
541
- <span class="cline-any cline-neutral">&nbsp;</span>
542
- <span class="cline-any cline-neutral">&nbsp;</span>
543
- <span class="cline-any cline-neutral">&nbsp;</span>
544
- <span class="cline-any cline-neutral">&nbsp;</span>
545
- <span class="cline-any cline-neutral">&nbsp;</span>
546
- <span class="cline-any cline-neutral">&nbsp;</span>
547
- <span class="cline-any cline-neutral">&nbsp;</span>
548
- <span class="cline-any cline-neutral">&nbsp;</span>
549
- <span class="cline-any cline-neutral">&nbsp;</span>
550
- <span class="cline-any cline-no">&nbsp;</span>
551
- <span class="cline-any cline-neutral">&nbsp;</span>
552
- <span class="cline-any cline-neutral">&nbsp;</span>
553
- <span class="cline-any cline-neutral">&nbsp;</span>
554
- <span class="cline-any cline-neutral">&nbsp;</span>
555
- <span class="cline-any cline-neutral">&nbsp;</span>
556
- <span class="cline-any cline-neutral">&nbsp;</span>
557
- <span class="cline-any cline-neutral">&nbsp;</span>
558
- <span class="cline-any cline-neutral">&nbsp;</span>
559
- <span class="cline-any cline-neutral">&nbsp;</span>
560
- <span class="cline-any cline-yes">1x</span>
561
- <span class="cline-any cline-no">&nbsp;</span>
562
- <span class="cline-any cline-no">&nbsp;</span>
563
- <span class="cline-any cline-no">&nbsp;</span>
564
- <span class="cline-any cline-neutral">&nbsp;</span>
565
- <span class="cline-any cline-neutral">&nbsp;</span>
566
- <span class="cline-any cline-no">&nbsp;</span>
567
- <span class="cline-any cline-no">&nbsp;</span>
568
- <span class="cline-any cline-no">&nbsp;</span>
569
- <span class="cline-any cline-neutral">&nbsp;</span>
570
- <span class="cline-any cline-no">&nbsp;</span>
571
- <span class="cline-any cline-neutral">&nbsp;</span>
572
- <span class="cline-any cline-neutral">&nbsp;</span>
573
- <span class="cline-any cline-neutral">&nbsp;</span>
574
- <span class="cline-any cline-neutral">&nbsp;</span>
575
- <span class="cline-any cline-neutral">&nbsp;</span>
576
- <span class="cline-any cline-neutral">&nbsp;</span>
577
- <span class="cline-any cline-neutral">&nbsp;</span>
578
- <span class="cline-any cline-yes">1x</span>
579
- <span class="cline-any cline-no">&nbsp;</span>
580
- <span class="cline-any cline-no">&nbsp;</span>
581
- <span class="cline-any cline-neutral">&nbsp;</span>
582
- <span class="cline-any cline-neutral">&nbsp;</span>
583
- <span class="cline-any cline-neutral">&nbsp;</span>
584
- <span class="cline-any cline-neutral">&nbsp;</span>
585
- <span class="cline-any cline-neutral">&nbsp;</span>
586
- <span class="cline-any cline-neutral">&nbsp;</span>
587
- <span class="cline-any cline-neutral">&nbsp;</span>
588
- <span class="cline-any cline-neutral">&nbsp;</span>
589
- <span class="cline-any cline-neutral">&nbsp;</span>
590
- <span class="cline-any cline-yes">1x</span>
591
- <span class="cline-any cline-no">&nbsp;</span>
592
- <span class="cline-any cline-no">&nbsp;</span>
593
- <span class="cline-any cline-no">&nbsp;</span>
594
- <span class="cline-any cline-no">&nbsp;</span>
595
- <span class="cline-any cline-no">&nbsp;</span>
596
- <span class="cline-any cline-neutral">&nbsp;</span>
597
- <span class="cline-any cline-neutral">&nbsp;</span>
598
- <span class="cline-any cline-no">&nbsp;</span>
599
- <span class="cline-any cline-no">&nbsp;</span>
600
- <span class="cline-any cline-neutral">&nbsp;</span>
601
- <span class="cline-any cline-neutral">&nbsp;</span>
602
- <span class="cline-any cline-neutral">&nbsp;</span>
603
- <span class="cline-any cline-neutral">&nbsp;</span>
604
- <span class="cline-any cline-neutral">&nbsp;</span>
605
- <span class="cline-any cline-no">&nbsp;</span>
606
- <span class="cline-any cline-no">&nbsp;</span>
607
- <span class="cline-any cline-no">&nbsp;</span>
608
- <span class="cline-any cline-neutral">&nbsp;</span>
609
- <span class="cline-any cline-no">&nbsp;</span>
610
- <span class="cline-any cline-neutral">&nbsp;</span>
611
- <span class="cline-any cline-neutral">&nbsp;</span>
612
- <span class="cline-any cline-no">&nbsp;</span>
613
- <span class="cline-any cline-neutral">&nbsp;</span>
614
- <span class="cline-any cline-neutral">&nbsp;</span>
615
- <span class="cline-any cline-neutral">&nbsp;</span>
616
- <span class="cline-any cline-neutral">&nbsp;</span>
617
- <span class="cline-any cline-neutral">&nbsp;</span>
618
- <span class="cline-any cline-neutral">&nbsp;</span>
619
- <span class="cline-any cline-neutral">&nbsp;</span>
620
- <span class="cline-any cline-yes">1x</span>
621
- <span class="cline-any cline-neutral">&nbsp;</span>
622
- <span class="cline-any cline-neutral">&nbsp;</span>
623
- <span class="cline-any cline-neutral">&nbsp;</span>
624
- <span class="cline-any cline-neutral">&nbsp;</span>
625
- <span class="cline-any cline-neutral">&nbsp;</span>
626
- <span class="cline-any cline-neutral">&nbsp;</span>
627
- <span class="cline-any cline-neutral">&nbsp;</span>
628
- <span class="cline-any cline-no">&nbsp;</span>
629
- <span class="cline-any cline-no">&nbsp;</span>
630
- <span class="cline-any cline-neutral">&nbsp;</span>
631
- <span class="cline-any cline-neutral">&nbsp;</span>
632
- <span class="cline-any cline-neutral">&nbsp;</span>
633
- <span class="cline-any cline-neutral">&nbsp;</span>
634
- <span class="cline-any cline-neutral">&nbsp;</span>
635
- <span class="cline-any cline-neutral">&nbsp;</span>
636
- <span class="cline-any cline-neutral">&nbsp;</span>
637
- <span class="cline-any cline-neutral">&nbsp;</span>
638
- <span class="cline-any cline-neutral">&nbsp;</span>
639
- <span class="cline-any cline-neutral">&nbsp;</span>
640
- <span class="cline-any cline-neutral">&nbsp;</span>
641
- <span class="cline-any cline-neutral">&nbsp;</span>
642
- <span class="cline-any cline-yes">1x</span>
643
- <span class="cline-any cline-neutral">&nbsp;</span>
644
- <span class="cline-any cline-neutral">&nbsp;</span>
645
- <span class="cline-any cline-neutral">&nbsp;</span>
646
- <span class="cline-any cline-neutral">&nbsp;</span>
647
- <span class="cline-any cline-neutral">&nbsp;</span>
648
- <span class="cline-any cline-neutral">&nbsp;</span>
649
- <span class="cline-any cline-neutral">&nbsp;</span>
650
- <span class="cline-any cline-neutral">&nbsp;</span>
651
- <span class="cline-any cline-neutral">&nbsp;</span>
652
- <span class="cline-any cline-neutral">&nbsp;</span>
653
- <span class="cline-any cline-neutral">&nbsp;</span>
654
- <span class="cline-any cline-neutral">&nbsp;</span>
655
- <span class="cline-any cline-neutral">&nbsp;</span>
656
- <span class="cline-any cline-neutral">&nbsp;</span>
657
- <span class="cline-any cline-neutral">&nbsp;</span>
658
- <span class="cline-any cline-neutral">&nbsp;</span>
659
- <span class="cline-any cline-neutral">&nbsp;</span>
660
- <span class="cline-any cline-neutral">&nbsp;</span>
661
- <span class="cline-any cline-neutral">&nbsp;</span>
662
- <span class="cline-any cline-neutral">&nbsp;</span>
663
- <span class="cline-any cline-neutral">&nbsp;</span>
664
- <span class="cline-any cline-neutral">&nbsp;</span>
665
- <span class="cline-any cline-neutral">&nbsp;</span>
666
- <span class="cline-any cline-neutral">&nbsp;</span>
667
- <span class="cline-any cline-neutral">&nbsp;</span>
668
- <span class="cline-any cline-neutral">&nbsp;</span>
669
- <span class="cline-any cline-neutral">&nbsp;</span>
670
- <span class="cline-any cline-neutral">&nbsp;</span>
671
- <span class="cline-any cline-neutral">&nbsp;</span>
672
- <span class="cline-any cline-neutral">&nbsp;</span>
673
- <span class="cline-any cline-neutral">&nbsp;</span>
674
- <span class="cline-any cline-neutral">&nbsp;</span>
675
- <span class="cline-any cline-yes">1x</span>
676
- <span class="cline-any cline-no">&nbsp;</span>
677
- <span class="cline-any cline-neutral">&nbsp;</span>
678
- <span class="cline-any cline-neutral">&nbsp;</span>
679
- <span class="cline-any cline-neutral">&nbsp;</span>
680
- <span class="cline-any cline-neutral">&nbsp;</span>
681
- <span class="cline-any cline-neutral">&nbsp;</span>
682
- <span class="cline-any cline-neutral">&nbsp;</span>
683
- <span class="cline-any cline-neutral">&nbsp;</span>
684
- <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-yes">1x</span>
689
- <span class="cline-any cline-no">&nbsp;</span>
690
- <span class="cline-any cline-no">&nbsp;</span>
691
- <span class="cline-any cline-no">&nbsp;</span>
692
- <span class="cline-any cline-no">&nbsp;</span>
693
- <span class="cline-any cline-neutral">&nbsp;</span>
694
- <span class="cline-any cline-no">&nbsp;</span>
695
- <span class="cline-any cline-no">&nbsp;</span>
696
- <span class="cline-any cline-neutral">&nbsp;</span>
697
- <span class="cline-any cline-neutral">&nbsp;</span>
698
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
705
- <span class="cline-any cline-neutral">&nbsp;</span>
706
- <span class="cline-any cline-yes">1x</span>
707
- <span class="cline-any cline-no">&nbsp;</span>
708
- <span class="cline-any cline-neutral">&nbsp;</span>
709
- <span class="cline-any cline-neutral">&nbsp;</span>
710
- <span class="cline-any cline-neutral">&nbsp;</span>
711
- <span class="cline-any cline-neutral">&nbsp;</span>
712
- <span class="cline-any cline-neutral">&nbsp;</span>
713
- <span class="cline-any cline-neutral">&nbsp;</span>
714
- <span class="cline-any cline-neutral">&nbsp;</span>
715
- <span class="cline-any cline-neutral">&nbsp;</span>
716
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</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-no">&nbsp;</span>
729
- <span class="cline-any cline-neutral">&nbsp;</span>
730
- <span class="cline-any cline-neutral">&nbsp;</span>
731
- <span class="cline-any cline-neutral">&nbsp;</span>
732
- <span class="cline-any cline-neutral">&nbsp;</span>
733
- <span class="cline-any cline-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-yes">1x</span>
742
- <span class="cline-any cline-no">&nbsp;</span>
743
- <span class="cline-any cline-no">&nbsp;</span>
744
- <span class="cline-any cline-no">&nbsp;</span>
745
- <span class="cline-any cline-neutral">&nbsp;</span>
746
- <span class="cline-any cline-neutral">&nbsp;</span>
747
- <span class="cline-any cline-yes">1x</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-neutral">&nbsp;</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-neutral">&nbsp;</span>
757
- <span class="cline-any cline-neutral">&nbsp;</span>
758
- <span class="cline-any cline-neutral">&nbsp;</span>
759
- <span class="cline-any cline-neutral">&nbsp;</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></td><td class="text"><pre class="prettyprint lang-js">import cookie from 'cookie';
769
- import {
770
- AccountHomeIcon,
771
- DashboardIcon,
772
- FacilityBasedPreviewIcon,
773
- HardshipIcon,
774
- HelpSupportIcon,
775
- ManageUsersIcon,
776
- MyApplicationsIcon,
777
- MyTestDataIcon,
778
- PaymentIcon,
779
- PhysicianCompareIcon,
780
- StarIcon,
781
- TargetIcon,
782
- IndividualReporting,
783
- ManageDocumentsIcon,
784
- AuthorContentIcon,
785
- RegistrationIcon,
786
- } from '../../lib/SvgComponents';
787
- import { isReviewerRole } from './Content/SelectRole/utils';
788
- &nbsp;
789
- const submissionsUrl = '/user/submissions';
790
- const dashboardUrl = '/user/dashboard';
791
- const manageUrl = '/user/manage-access';
792
- const feedbackUrl = `${submissionsUrl}/feedback`;
793
- const physicianCompareUrl = `${submissionsUrl}/doctors-clinicians-preview`;
794
- const reportsPortalUrl = `${submissionsUrl}/reports`;
795
- const facilityBasedPreviewBaseUrl = `${submissionsUrl}/facility-based-preview`;
796
- const viewingToolUrl = '/user/helpdesk-viewing-tool';
797
- const contentMgrDashboardUrl = '/user/content-management';
798
- const registrationUrl = '/user/registration/';
799
- &nbsp;
800
- const performanceFeedbackUrl = <span class="fstat-no" title="function not covered" >(p</span>erformanceYear) =&gt; {
801
- <span class="cstat-no" title="statement not covered" > if (performanceYear) {</span>
802
- <span class="cstat-no" title="statement not covered" > return `${feedbackUrl}/${performanceYear}`;</span>
803
- } else {
804
- <span class="cstat-no" title="statement not covered" > return feedbackUrl;</span>
805
- }
806
- };
807
- &nbsp;
808
- const facilityBasedPreviewUrl = <span class="fstat-no" title="function not covered" >(p</span>erformanceYear) =&gt; {
809
- <span class="cstat-no" title="statement not covered" > return `${facilityBasedPreviewBaseUrl}/${performanceYear}`;</span>
810
- };
811
- &nbsp;
812
- const handleNavigation = <span class="fstat-no" title="function not covered" >(e</span>, linkCallbackFunction, label) =&gt; {
813
- <span class="cstat-no" title="statement not covered" > if (linkCallbackFunction) {</span>
814
- const { pathname, hash, search } = <span class="cstat-no" title="statement not covered" >e.currentTarget;</span>
815
- <span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
816
- <span class="cstat-no" title="statement not covered" > e.stopPropagation();</span>
817
- <span class="cstat-no" title="statement not covered" > linkCallbackFunction(`${pathname}${hash}${search}`);</span>
818
- }
819
- <span class="cstat-no" title="statement not covered" > window?.utag?.link({</span>
820
- ga_event_category: 'side navbar',
821
- ga_event_action: 'click',
822
- ga_event_label: label,
823
- page_title: `${window.document.title}`,
824
- page_url: `${window.location.pathname}`,
825
- event: 'trackEvent',
826
- });
827
- };
828
- &nbsp;
829
- /**
830
- * Load icon by url
831
- * @param {string} url
832
- * @returns svg icon
833
- */
834
- const getIcon = <span class="fstat-no" title="function not covered" >(u</span>rl, linkLabel) =&gt; {
835
- const icons = <span class="cstat-no" title="statement not covered" >{</span>
836
- [dashboardUrl]: DashboardIcon,
837
- [feedbackUrl]: StarIcon,
838
- [manageUrl]: ManageUsersIcon,
839
- [physicianCompareUrl]: PhysicianCompareIcon,
840
- [reportsPortalUrl]: HardshipIcon,
841
- [submissionsUrl]: AccountHomeIcon,
842
- [facilityBasedPreviewBaseUrl]: FacilityBasedPreviewIcon,
843
- [registrationUrl]: RegistrationIcon,
844
- '/developers': HelpSupportIcon,
845
- '/resources/help-and-support': HelpSupportIcon,
846
- '/user/apm-incentive-payments': PaymentIcon,
847
- '/user/applications': MyApplicationsIcon,
848
- '/user/exception/#/landing': HardshipIcon,
849
- '/user/targeted-review/#/landing': TargetIcon,
850
- '/user/test-data': MyTestDataIcon,
851
- '/user/self-nomination/#/landing': IndividualReporting,
852
- '/user/reviewers': AccountHomeIcon,
853
- '/reviewer/exception': HardshipIcon,
854
- '/reviewer/targeted-review': TargetIcon,
855
- '/self-nomination': IndividualReporting,
856
- '/case-management': FacilityBasedPreviewIcon,
857
- [contentMgrDashboardUrl]: AccountHomeIcon,
858
- 'Manage Documents': ManageDocumentsIcon,
859
- 'Author Content': AuthorContentIcon,
860
- };
861
- &nbsp;
862
- <span class="cstat-no" title="statement not covered" > if (linkLabel) <span class="cstat-no" title="statement not covered" >return icons[linkLabel];</span></span>
863
- <span class="cstat-no" title="statement not covered" > return icons[url];</span>
864
- };
865
- &nbsp;
866
- const singleRoleContentMap = {
867
- 'QPP Content Management - Author': 'contentManager',
868
- 'QPP Content Management - Approver': 'contentManager',
869
- 'QPP Content Management - Admin': 'contentManager',
870
- 'QPP Front-end - Author': 'contentManager',
871
- 'QPP Self-Nomination': 'internalReviewers',
872
- 'QPP Targeted Review &amp; Exceptions': 'internalReviewers',
873
- 'QPP Case Management - PIMMS Reviewer': 'internalReviewers',
874
- 'QPP Case Management - ACO PAC Reviewer': 'internalReviewers',
875
- 'QPP Case Management - CMS Reviewer': 'internalReviewers',
876
- };
877
- &nbsp;
878
- const multiRoleContentMap = {
879
- Reviewer: 'internalReviewers',
880
- 'Content Manager': 'contentManager',
881
- };
882
- &nbsp;
883
- const replaceDefaultContentMgrLinks = <span class="fstat-no" title="function not covered" >(d</span>efaultContent) =&gt; {
884
- const host = <span class="cstat-no" title="statement not covered" >window.location.host;</span>
885
- const updatedDefaultContent = <span class="cstat-no" title="statement not covered" >{</span>
886
- ...defaultContent,
887
- contentManager: [
888
- defaultContent.contentManager.find(
889
- <span class="fstat-no" title="function not covered" > (o</span>bj) =&gt; <span class="cstat-no" title="statement not covered" >obj.label === 'Dashboard Home'</span>
890
- ),
891
- {
892
- url: `${host}.qpp.cms.gov/cm/`,
893
- label: 'Manage Documents',
894
- },
895
- {
896
- url: `${host}.qpp.cms.gov/content-management/`,
897
- label: 'Author Content',
898
- },
899
- ],
900
- };
901
- <span class="cstat-no" title="statement not covered" > return updatedDefaultContent;</span>
902
- };
903
- &nbsp;
904
- /**
905
- * Load the side nav content for the given role
906
- * @param {string} roleName role of given user from internalReviewerNames
907
- * @param {object} navContent object of side nav links by role (levelOneContent &amp; defaultContent)
908
- * @returns {array} returns an array of objects (side nav menu links) from levelOneContent
909
- * || defaultContent
910
- */
911
- const loadSideNavContent = <span class="fstat-no" title="function not covered" >(r</span>oleName, navContent, isMultiRoleUser = <span class="branch-0 cbranch-no" title="branch not covered" >false)</span> =&gt; {
912
- const { levelOneContent, defaultContent } = <span class="cstat-no" title="statement not covered" >navContent;</span>
913
- const updatedDefaultContent = <span class="cstat-no" title="statement not covered" >replaceDefaultContentMgrLinks(defaultContent);</span>
914
- const roleContentMap = <span class="cstat-no" title="statement not covered" >isMultiRoleUser</span>
915
- ? multiRoleContentMap
916
- : singleRoleContentMap;
917
- const contentByRole = <span class="cstat-no" title="statement not covered" >roleContentMap[roleName];</span>
918
- <span class="cstat-no" title="statement not covered" > if (levelOneContent) {</span>
919
- <span class="cstat-no" title="statement not covered" > return levelOneContent[contentByRole] || levelOneContent.default;</span>
920
- }
921
- <span class="cstat-no" title="statement not covered" > return updatedDefaultContent[contentByRole] || updatedDefaultContent.default;</span>
922
- };
923
- &nbsp;
924
- /**
925
- * Check if user is currently impersonating
926
- * @param {string} docCookie document cookie
927
- * @returns {boolean}
928
- */
929
- const isImpersonating = <span class="fstat-no" title="function not covered" >(d</span>ocCookie) =&gt; {
930
- const parsedCookies = <span class="cstat-no" title="statement not covered" >cookie.parse(docCookie);</span>
931
- <span class="cstat-no" title="statement not covered" > return (</span>
932
- parsedCookies.qpp_can_impersonate &amp;&amp; parsedCookies.qpp_impersonated_user
933
- );
934
- };
935
- &nbsp;
936
- /**
937
- * Check if user has multiple roles, used to display Select Role dropdown
938
- * @param {string} docCookie document cookie
939
- * @returns {boolean}
940
- */
941
- const isMultiRoleUser = <span class="fstat-no" title="function not covered" >(d</span>ocCookie) =&gt; {
942
- const activeRoles = <span class="cstat-no" title="statement not covered" >new Set();</span>
943
- const { qpp_cms_internal_authorized } = <span class="cstat-no" title="statement not covered" >cookie.parse(docCookie);</span>
944
- let internalAuthz = <span class="cstat-no" title="statement not covered" >[];</span>
945
- <span class="cstat-no" title="statement not covered" > if (qpp_cms_internal_authorized) {</span>
946
- <span class="cstat-no" title="statement not covered" > internalAuthz = JSON.parse(qpp_cms_internal_authorized);</span>
947
- }
948
- // Filter out test internalCms authz
949
- const filteredInternalAuthz = <span class="cstat-no" title="statement not covered" >internalAuthz.filter(<span class="fstat-no" title="function not covered" >(i</span>nternalAuth) =&gt; {</span>
950
- <span class="cstat-no" title="statement not covered" > return (</span>
951
- internalAuth !== 'Test internalCms Resource' &amp;&amp;
952
- internalAuth !== 'Test internalCms Resource 2'
953
- );
954
- });
955
- &nbsp;
956
- <span class="cstat-no" title="statement not covered" > filteredInternalAuthz.forEach(<span class="fstat-no" title="function not covered" >(e</span>lement) =&gt; {</span>
957
- <span class="cstat-no" title="statement not covered" > if (isReviewerRole(element)) {</span>
958
- <span class="cstat-no" title="statement not covered" > return activeRoles.add('reviewer');</span>
959
- }
960
- <span class="cstat-no" title="statement not covered" > return activeRoles.add(element);</span>
961
- });
962
- &nbsp;
963
- <span class="cstat-no" title="statement not covered" > return activeRoles.size &gt; 1;</span>
964
- };
965
- &nbsp;
966
- /**
967
- * Transform cookie values to permissions object
968
- * @param {object} cookies parsed document.cookie values
969
- * @returns {object}
970
- */
971
- const transformCookieValues = <span class="fstat-no" title="function not covered" >(c</span>ookies) =&gt; {
972
- const {
973
- qpp_can_impersonate,
974
- qpp_has_authorizations,
975
- user_has_apm_payments,
976
- qpp_cms_internal_authorized,
977
- qpp_ehr_authorized,
978
- qpp_has_non_registry_authorizations,
979
- } = <span class="cstat-no" title="statement not covered" >cookies;</span>
980
- <span class="cstat-no" title="statement not covered" > return {</span>
981
- canImpersonate: qpp_can_impersonate === 'true',
982
- hasAuthorizations: qpp_has_authorizations === 'true',
983
- hasApmPayments: user_has_apm_payments === 'true',
984
- internalReviewerNames: qpp_cms_internal_authorized
985
- ? JSON.parse(qpp_cms_internal_authorized)
986
- : [],
987
- ehrAuthorized: qpp_ehr_authorized === 'true',
988
- hasNonRegistryAuthorizations:
989
- qpp_has_non_registry_authorizations === 'true',
990
- };
991
- };
992
- &nbsp;
993
- const permissionsByRole = {
994
- 'QPP User': {
995
- canImpersonate: false,
996
- hasAuthorizations: true,
997
- hasApmPayments: true,
998
- },
999
- Reviewer: {
1000
- hasAuthorizations: false,
1001
- hasApmPaymentss: false,
1002
- },
1003
- 'Helpdesk Viewer': {
1004
- hasAuthorizations: false,
1005
- hasApmPayments: false,
1006
- hasNonRegistryAuthorizations: false,
1007
- internalReviewerNames: ['QPP Helpdesk'],
1008
- },
1009
- // Helpdesk role &amp;&amp; impersonating (use impersonated user authz values)
1010
- Impersonation: {
1011
- internalReviewerNames: ['QPP Helpdesk'],
1012
- },
1013
- 'Content Manager': {
1014
- hasAuthorizations: false,
1015
- hasApmPaymentss: false,
1016
- hasNonRegistryAuthorizations: false,
1017
- },
1018
- };
1019
- &nbsp;
1020
- /**
1021
- * Return permissions by role
1022
- * @param {string} selectedRole selected user role
1023
- * @param {object} permissionValues default permission values from transformed parsed cookie
1024
- * @returns {object}
1025
- */
1026
- const loadUserPermissionsByRole = <span class="fstat-no" title="function not covered" >(s</span>electedRole, permissionValues) =&gt; {
1027
- <span class="cstat-no" title="statement not covered" > return {</span>
1028
- ...permissionValues,
1029
- ...permissionsByRole[selectedRole],
1030
- };
1031
- };
1032
- &nbsp;
1033
- /**
1034
- * Helper fn to return user permissions/properties from cookies set on login
1035
- * @param {string} docCookie cookie values set on login
1036
- * @param {string} selectedRole string of selected role if user has multiple roles
1037
- * @returns {object}
1038
- */
1039
- const loadUserPermissions = <span class="fstat-no" title="function not covered" >(d</span>ocCookie, selectedRole) =&gt; {
1040
- const parsedCookies = <span class="cstat-no" title="statement not covered" >cookie.parse(docCookie);</span>
1041
- const permissionValues = <span class="cstat-no" title="statement not covered" >transformCookieValues(parsedCookies);</span>
1042
- const impersonating = <span class="cstat-no" title="statement not covered" >isImpersonating(docCookie);</span>
1043
- const role = <span class="cstat-no" title="statement not covered" >impersonating ? 'Impersonation' : selectedRole;</span>
1044
- &nbsp;
1045
- <span class="cstat-no" title="statement not covered" > if (role) {</span>
1046
- <span class="cstat-no" title="statement not covered" > return loadUserPermissionsByRole(role, permissionValues);</span>
1047
- }
1048
- &nbsp;
1049
- <span class="cstat-no" title="statement not covered" > return permissionValues;</span>
1050
- };
1051
- &nbsp;
1052
- /**
1053
- * Return map of link conditionals based on user cookies for side nav
1054
- * @param {object} userPermissions user permissions/properties derived from cookies set on login
1055
- * @returns {object}
1056
- */
1057
- const getUrlConditionMap = <span class="fstat-no" title="function not covered" >(u</span>serPermissions) =&gt; {
1058
- <span class="cstat-no" title="statement not covered" > return {</span>
1059
- [dashboardUrl]: userPermissions.hasAuthorizations,
1060
- [feedbackUrl]: userPermissions.hasAuthorizations,
1061
- '/user/apm-incentive-payments': userPermissions.hasApmPayments,
1062
- [physicianCompareUrl]: userPermissions.hasNonRegistryAuthorizations,
1063
- [registrationUrl]: userPermissions.hasAuthorizations,
1064
- [reportsPortalUrl]: userPermissions.hasAuthorizations,
1065
- [facilityBasedPreviewBaseUrl]: userPermissions.hasAuthorizations,
1066
- '/user/helpdesk-viewing-tool': userPermissions.canImpersonate,
1067
- '/reviewer/exception': userPermissions.internalReviewerNames?.includes(
1068
- 'QPP Targeted Review &amp; Exceptions'
1069
- ),
1070
- '/reviewer/targeted-review':
1071
- userPermissions.internalReviewerNames?.includes(
1072
- 'QPP Targeted Review &amp; Exceptions'
1073
- ),
1074
- '/self-nomination': userPermissions.internalReviewerNames?.includes(
1075
- 'QPP Self-Nomination'
1076
- ),
1077
- &nbsp;
1078
- '/case-management': userPermissions.internalReviewerNames?.some(<span class="fstat-no" title="function not covered" >(v</span>al) =&gt;
1079
- <span class="cstat-no" title="statement not covered" > [</span>
1080
- 'QPP Case Management - PIMMS Reviewer',
1081
- 'QPP Case Management - ACO PAC Reviewer',
1082
- 'QPP Case Management - CMS Reviewer',
1083
- ].includes(val)
1084
- ),
1085
- &nbsp;
1086
- // dev pre
1087
- '/user/applications': userPermissions.ehrAuthorized,
1088
- '/user/test-data': userPermissions.ehrAuthorized,
1089
- };
1090
- };
1091
- &nbsp;
1092
- const isImpersonationLink = <span class="fstat-no" title="function not covered" >(d</span>ocCookie, linkLabel) =&gt; {
1093
- <span class="cstat-no" title="statement not covered" > if (!isImpersonating(docCookie)) <span class="cstat-no" title="statement not covered" >return;</span></span>
1094
- const helpdeskLinks = <span class="cstat-no" title="statement not covered" >['Account Home', 'Manage Access', 'Help and Support'];</span>
1095
- <span class="cstat-no" title="statement not covered" > return !helpdeskLinks.includes(linkLabel);</span>
1096
- };
1097
- &nbsp;
1098
- module.exports = {
1099
- submissionsUrl,
1100
- dashboardUrl,
1101
- feedbackUrl,
1102
- manageUrl,
1103
- physicianCompareUrl,
1104
- registrationUrl,
1105
- performanceFeedbackUrl,
1106
- facilityBasedPreviewUrl,
1107
- handleNavigation,
1108
- reportsPortalUrl,
1109
- facilityBasedPreviewBaseUrl,
1110
- viewingToolUrl,
1111
- loadUserPermissions,
1112
- getUrlConditionMap,
1113
- isMultiRoleUser,
1114
- getIcon,
1115
- isImpersonating,
1116
- isImpersonationLink,
1117
- loadSideNavContent,
1118
- };
1119
- &nbsp;</pre></td></tr></table></pre>
1120
-
1121
- <div class='push'></div><!-- for sticky footer -->
1122
- </div><!-- /wrapper -->
1123
- <div class='footer quiet pad2 space-top1 center small'>
1124
- Code coverage generated by
1125
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1126
- at Thu Feb 02 2023 11:23:00 GMT-0800 (Pacific Standard Time)
1127
- </div>
1128
- <script src="../../prettify.js"></script>
1129
- <script>
1130
- window.onload = function () {
1131
- prettyPrint();
1132
- };
1133
- </script>
1134
- <script src="../../sorter.js"></script>
1135
- <script src="../../block-navigation.js"></script>
1136
- </body>
1137
- </html>
1138
-