@mtgame/core 0.2.25 → 2.0.0

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 (522) hide show
  1. package/api/basketball-game-api.d.ts +3 -0
  2. package/api/feedback-api.d.ts +5 -2
  3. package/api/file-api.d.ts +3 -0
  4. package/api/football-game-api.d.ts +3 -0
  5. package/api/game-base-api.d.ts +3 -0
  6. package/api/handball-game-api.d.ts +3 -0
  7. package/api/hockey-game-api.d.ts +3 -0
  8. package/api/league-api.d.ts +3 -0
  9. package/api/league-news-api.d.ts +3 -0
  10. package/api/league-player-api.d.ts +3 -0
  11. package/api/media-api.d.ts +5 -2
  12. package/api/notification-api.d.ts +3 -0
  13. package/api/notification-base-api.d.ts +3 -0
  14. package/api/org-notification-api.d.ts +3 -0
  15. package/api/public-team-api.d.ts +3 -2
  16. package/api/public-user-api.d.ts +3 -0
  17. package/api/reference-api.d.ts +3 -0
  18. package/api/rugby-game-api.d.ts +3 -0
  19. package/api/team-api.d.ts +4 -1
  20. package/api/team-event-api.d.ts +3 -0
  21. package/api/tournament-api.d.ts +3 -2
  22. package/api/tournament-join-api.d.ts +3 -0
  23. package/api/tournament-round-api.d.ts +3 -0
  24. package/api/tournament-season-api.d.ts +3 -0
  25. package/api/tournament-stage-api.d.ts +3 -0
  26. package/api/user-api.d.ts +5 -2
  27. package/api/volleyball-game-api.d.ts +3 -1
  28. package/api/waterpolo-game-api.d.ts +3 -0
  29. package/esm2020/api/basketball-game-api.mjs +44 -0
  30. package/esm2020/api/feedback-api.mjs +29 -0
  31. package/esm2020/api/file-api.mjs +41 -0
  32. package/esm2020/api/football-game-api.mjs +49 -0
  33. package/esm2020/api/game-base-api.mjs +40 -0
  34. package/esm2020/api/handball-game-api.mjs +49 -0
  35. package/esm2020/api/hockey-game-api.mjs +49 -0
  36. package/esm2020/api/league-api.mjs +119 -0
  37. package/esm2020/api/league-news-api.mjs +57 -0
  38. package/esm2020/api/league-player-api.mjs +31 -0
  39. package/esm2020/api/media-api.mjs +124 -0
  40. package/esm2020/api/notification-api.mjs +16 -0
  41. package/esm2020/api/notification-base-api.mjs +62 -0
  42. package/esm2020/api/org-notification-api.mjs +16 -0
  43. package/{esm2015/api/paginated-response.interface.js → esm2020/api/paginated-response.interface.mjs} +0 -0
  44. package/{esm2015/api/public-api.js → esm2020/api/public-api.mjs} +0 -0
  45. package/esm2020/api/public-team-api.mjs +28 -0
  46. package/esm2020/api/public-user-api.mjs +38 -0
  47. package/esm2020/api/reference-api.mjs +30 -0
  48. package/esm2020/api/rugby-game-api.mjs +47 -0
  49. package/esm2020/api/team-api.mjs +302 -0
  50. package/esm2020/api/team-event-api.mjs +61 -0
  51. package/esm2020/api/tournament-api.mjs +391 -0
  52. package/esm2020/api/tournament-join-api.mjs +55 -0
  53. package/esm2020/api/tournament-round-api.mjs +57 -0
  54. package/esm2020/api/tournament-season-api.mjs +92 -0
  55. package/esm2020/api/tournament-stage-api.mjs +48 -0
  56. package/esm2020/api/user-api.mjs +219 -0
  57. package/esm2020/api/volleyball-game-api.mjs +49 -0
  58. package/esm2020/api/waterpolo-game-api.mjs +49 -0
  59. package/esm2020/http-cookie.interceptor.mjs +38 -0
  60. package/{esm2015/localization/basketball-game-log-types.js → esm2020/localization/basketball-game-log-types.mjs} +0 -0
  61. package/{esm2015/localization/basketball-game-sub-log-types.js → esm2020/localization/basketball-game-sub-log-types.mjs} +2 -5
  62. package/{esm2015/localization/football-game-log-types.js → esm2020/localization/football-game-log-types.mjs} +0 -0
  63. package/{esm2015/localization/handball-game-log-types.js → esm2020/localization/handball-game-log-types.mjs} +0 -0
  64. package/{esm2015/localization/hockey-game-log-types.js → esm2020/localization/hockey-game-log-types.mjs} +2 -5
  65. package/esm2020/localization/hockey-penalty-types.mjs +50 -0
  66. package/{esm2015/localization/organization-statuses.js → esm2020/localization/organization-statuses.mjs} +0 -0
  67. package/{esm2015/localization/overtime-types.js → esm2020/localization/overtime-types.mjs} +0 -0
  68. package/{esm2015/localization/public-api.js → esm2020/localization/public-api.mjs} +0 -0
  69. package/{esm2015/localization/rugby-foul-game-stage.js → esm2020/localization/rugby-foul-game-stage.mjs} +0 -0
  70. package/{esm2015/localization/rugby-foul-sanction.js → esm2020/localization/rugby-foul-sanction.mjs} +0 -0
  71. package/{esm2015/localization/rugby-game-log-types.js → esm2020/localization/rugby-game-log-types.mjs} +0 -0
  72. package/{esm2015/localization/team-event-type.js → esm2020/localization/team-event-type.mjs} +0 -0
  73. package/{esm2015/localization/team-user-role.js → esm2020/localization/team-user-role.mjs} +0 -0
  74. package/{esm2015/localization/user-profile.js → esm2020/localization/user-profile.mjs} +0 -0
  75. package/{esm2015/localization/volleyball-game-log-types.js → esm2020/localization/volleyball-game-log-types.mjs} +0 -0
  76. package/{esm2015/localization/waterpolo-game-log-types.js → esm2020/localization/waterpolo-game-log-types.mjs} +3 -3
  77. package/esm2020/models/achievement.mjs +18 -0
  78. package/esm2020/models/base-statistic.mjs +4 -0
  79. package/esm2020/models/basketball-game-config.mjs +18 -0
  80. package/esm2020/models/basketball-game-log.mjs +158 -0
  81. package/esm2020/models/basketball-game-statistic.mjs +47 -0
  82. package/esm2020/models/basketball-game-team-statistic.mjs +15 -0
  83. package/esm2020/models/basketball-profile.mjs +27 -0
  84. package/esm2020/models/basketball-statistic.mjs +62 -0
  85. package/esm2020/models/city.mjs +9 -0
  86. package/esm2020/models/feedback.mjs +14 -0
  87. package/esm2020/models/file.mjs +31 -0
  88. package/esm2020/models/football-game-config.mjs +22 -0
  89. package/esm2020/models/football-game-log.mjs +83 -0
  90. package/esm2020/models/football-game-statistic.mjs +93 -0
  91. package/esm2020/models/football-game-team-statistic.mjs +15 -0
  92. package/esm2020/models/football-profile.mjs +27 -0
  93. package/esm2020/models/football-statistic.mjs +76 -0
  94. package/esm2020/models/game-bill.mjs +30 -0
  95. package/esm2020/models/game-config-base.mjs +4 -0
  96. package/esm2020/models/game-invite.mjs +22 -0
  97. package/esm2020/models/game-log-base.mjs +4 -0
  98. package/esm2020/models/game-statistic-base.mjs +7 -0
  99. package/{esm2015/models/game-team-statistic-base.js → esm2020/models/game-team-statistic-base.mjs} +0 -0
  100. package/esm2020/models/game-timeline-stages.mjs +19 -0
  101. package/esm2020/models/game-user-disqualification.mjs +14 -0
  102. package/esm2020/models/game-user-limitation.mjs +19 -0
  103. package/esm2020/models/game-user.mjs +20 -0
  104. package/esm2020/models/game.mjs +188 -0
  105. package/esm2020/models/handball-game-config.mjs +16 -0
  106. package/esm2020/models/handball-game-log.mjs +71 -0
  107. package/esm2020/models/handball-game-statistic.mjs +67 -0
  108. package/esm2020/models/handball-game-team-statistic.mjs +15 -0
  109. package/esm2020/models/handball-profile.mjs +23 -0
  110. package/esm2020/models/handball-statistic.mjs +37 -0
  111. package/esm2020/models/hockey-game-config.mjs +25 -0
  112. package/esm2020/models/hockey-game-log.mjs +102 -0
  113. package/esm2020/models/hockey-game-statistic.mjs +101 -0
  114. package/esm2020/models/hockey-game-team-statistic.mjs +15 -0
  115. package/esm2020/models/hockey-penalty-types.mjs +6 -0
  116. package/esm2020/models/hockey-profile.mjs +25 -0
  117. package/esm2020/models/hockey-statistic.mjs +49 -0
  118. package/esm2020/models/league-banner.mjs +21 -0
  119. package/esm2020/models/league-court.mjs +9 -0
  120. package/esm2020/models/league-document.mjs +14 -0
  121. package/esm2020/models/league-news.mjs +25 -0
  122. package/esm2020/models/league-partner.mjs +14 -0
  123. package/esm2020/models/league-player.mjs +81 -0
  124. package/esm2020/models/league-playlist.mjs +14 -0
  125. package/esm2020/models/league-user.mjs +38 -0
  126. package/esm2020/models/league.mjs +38 -0
  127. package/esm2020/models/media-item.mjs +20 -0
  128. package/esm2020/models/notification-settings.mjs +20 -0
  129. package/esm2020/models/notification.mjs +105 -0
  130. package/esm2020/models/organization-bill.mjs +31 -0
  131. package/esm2020/models/organization-statistic.mjs +9 -0
  132. package/esm2020/models/organization-tariff.mjs +16 -0
  133. package/esm2020/models/organization.mjs +21 -0
  134. package/esm2020/models/playoff.mjs +56 -0
  135. package/esm2020/models/poll.mjs +83 -0
  136. package/esm2020/models/public-api.mjs +110 -0
  137. package/esm2020/models/rugby-foul-type.mjs +39 -0
  138. package/esm2020/models/rugby-game-config.mjs +23 -0
  139. package/esm2020/models/rugby-game-log.mjs +120 -0
  140. package/esm2020/models/rugby-game-statistic.mjs +29 -0
  141. package/esm2020/models/rugby-game-team-statistic.mjs +15 -0
  142. package/esm2020/models/rugby-profile.mjs +22 -0
  143. package/esm2020/models/rugby-statistic.mjs +37 -0
  144. package/esm2020/models/season-tournament.mjs +9 -0
  145. package/esm2020/models/sport.mjs +96 -0
  146. package/esm2020/models/team-access.mjs +14 -0
  147. package/esm2020/models/team-achievement.mjs +18 -0
  148. package/esm2020/models/team-event-invite.mjs +18 -0
  149. package/{esm2015/models/team-event-type.js → esm2020/models/team-event-type.mjs} +0 -0
  150. package/esm2020/models/team-event.mjs +27 -0
  151. package/esm2020/models/team-invite-external.mjs +9 -0
  152. package/esm2020/models/team-invite.mjs +18 -0
  153. package/esm2020/models/team-permission.mjs +23 -0
  154. package/esm2020/models/team-user.mjs +30 -0
  155. package/esm2020/models/team.mjs +46 -0
  156. package/esm2020/models/teams-and-users.mjs +20 -0
  157. package/esm2020/models/tournament-disqualification.mjs +14 -0
  158. package/esm2020/models/tournament-division.mjs +14 -0
  159. package/esm2020/models/tournament-event.mjs +28 -0
  160. package/esm2020/models/tournament-group.mjs +9 -0
  161. package/esm2020/models/tournament-invite.mjs +21 -0
  162. package/esm2020/models/tournament-join-team.mjs +27 -0
  163. package/esm2020/models/tournament-join1x1-data.mjs +15 -0
  164. package/esm2020/models/tournament-news.mjs +17 -0
  165. package/esm2020/models/tournament-round-team.mjs +40 -0
  166. package/esm2020/models/tournament-round.mjs +22 -0
  167. package/esm2020/models/tournament-season.mjs +25 -0
  168. package/esm2020/models/tournament-stage-team.mjs +22 -0
  169. package/esm2020/models/tournament-stage.mjs +20 -0
  170. package/esm2020/models/tournament-team-user-invite.mjs +14 -0
  171. package/esm2020/models/tournament-team-user.mjs +20 -0
  172. package/esm2020/models/tournament-team.mjs +28 -0
  173. package/esm2020/models/tournament.mjs +153 -0
  174. package/esm2020/models/user-access.mjs +9 -0
  175. package/esm2020/models/user-permission.mjs +23 -0
  176. package/esm2020/models/user-profile.mjs +9 -0
  177. package/esm2020/models/user.mjs +55 -0
  178. package/esm2020/models/util.mjs +143 -0
  179. package/esm2020/models/volleyball-game-config.mjs +27 -0
  180. package/esm2020/models/volleyball-game-log.mjs +124 -0
  181. package/esm2020/models/volleyball-game-statistic.mjs +34 -0
  182. package/esm2020/models/volleyball-game-team-statistic.mjs +15 -0
  183. package/esm2020/models/volleyball-profile.mjs +27 -0
  184. package/esm2020/models/volleyball-statistic.mjs +44 -0
  185. package/esm2020/models/waterpolo-game-config.mjs +25 -0
  186. package/esm2020/models/waterpolo-game-log.mjs +142 -0
  187. package/esm2020/models/waterpolo-game-statistic.mjs +472 -0
  188. package/esm2020/models/waterpolo-game-team-statistic.mjs +15 -0
  189. package/esm2020/models/waterpolo-profile.mjs +26 -0
  190. package/esm2020/models/waterpolo-statistic.mjs +57 -0
  191. package/{esm2015/mtgame-core.js → esm2020/mtgame-core.mjs} +0 -0
  192. package/{esm2015/public-api.js → esm2020/public-api.mjs} +2 -1
  193. package/esm2020/services/base.controller.mjs +19 -0
  194. package/esm2020/services/base.service.mjs +18 -0
  195. package/esm2020/services/centrifugo.service.mjs +105 -0
  196. package/esm2020/services/config.service.mjs +44 -0
  197. package/{esm2015/services/public-api.js → esm2020/services/public-api.mjs} +2 -1
  198. package/esm2020/storage/local-storage-engine.mjs +18 -0
  199. package/esm2020/storage/new.mjs +46 -0
  200. package/esm2020/storage/old-local-storage-engine.mjs +18 -0
  201. package/esm2020/storage/old-storage-engine.mjs +49 -0
  202. package/esm2020/storage/public-api.mjs +7 -0
  203. package/esm2020/storage/storage-engine.mjs +47 -0
  204. package/{esm2015/storage/store.js → esm2020/storage/store.mjs} +1 -1
  205. package/{esm2015/utils/array.js → esm2020/utils/array.mjs} +0 -0
  206. package/esm2020/utils/component-destroyed.mjs +27 -0
  207. package/{esm2015/utils/cookie.js → esm2020/utils/cookie.mjs} +0 -0
  208. package/esm2020/utils/data.mjs +164 -0
  209. package/{esm2015/utils/date.js → esm2020/utils/date.mjs} +0 -0
  210. package/{esm2015/utils/device.js → esm2020/utils/device.mjs} +0 -0
  211. package/{esm2015/utils/enum.js → esm2020/utils/enum.mjs} +0 -0
  212. package/{esm2015/utils/errors.js → esm2020/utils/errors.mjs} +2 -4
  213. package/{esm2015/utils/favicon.js → esm2020/utils/favicon.mjs} +0 -0
  214. package/{esm2015/utils/form.js → esm2020/utils/form.mjs} +0 -0
  215. package/{esm2015/utils/public-api.js → esm2020/utils/public-api.mjs} +0 -0
  216. package/{esm2015/utils/validators.js → esm2020/utils/validators.mjs} +0 -0
  217. package/esm2020/websocket/game.websocket.mjs +61 -0
  218. package/esm2020/websocket/public-api.mjs +2 -0
  219. package/fesm2015/{mtgame-core.js → mtgame-core.mjs} +1665 -4848
  220. package/fesm2015/mtgame-core.mjs.map +1 -0
  221. package/fesm2020/mtgame-core.mjs +7270 -0
  222. package/fesm2020/mtgame-core.mjs.map +1 -0
  223. package/http-cookie.interceptor.d.ts +3 -0
  224. package/localization/basketball-game-sub-log-types.d.ts +0 -3
  225. package/localization/football-game-log-types.d.ts +29 -29
  226. package/localization/hockey-game-log-types.d.ts +0 -3
  227. package/localization/hockey-penalty-types.d.ts +2 -5
  228. package/models/achievement.d.ts +0 -2
  229. package/models/base-statistic.d.ts +2 -1
  230. package/models/basketball-game-config.d.ts +2 -4
  231. package/models/basketball-game-log.d.ts +2 -9
  232. package/models/basketball-game-statistic.d.ts +1 -4
  233. package/models/basketball-game-team-statistic.d.ts +0 -2
  234. package/models/basketball-profile.d.ts +0 -2
  235. package/models/basketball-statistic.d.ts +1 -4
  236. package/models/city.d.ts +0 -2
  237. package/models/feedback.d.ts +2 -3
  238. package/models/file.d.ts +2 -3
  239. package/models/football-game-config.d.ts +2 -4
  240. package/models/football-game-log.d.ts +30 -33
  241. package/models/football-game-statistic.d.ts +1 -4
  242. package/models/football-game-team-statistic.d.ts +0 -2
  243. package/models/football-profile.d.ts +0 -2
  244. package/models/football-statistic.d.ts +1 -4
  245. package/models/game-bill.d.ts +0 -2
  246. package/models/game-config-base.d.ts +3 -0
  247. package/models/game-invite.d.ts +0 -2
  248. package/models/game-log-base.d.ts +3 -2
  249. package/models/game-statistic-base.d.ts +3 -1
  250. package/models/game-timeline-stages.d.ts +1 -5
  251. package/models/game-user-disqualification.d.ts +0 -2
  252. package/models/game-user-limitation.d.ts +0 -4
  253. package/models/game-user.d.ts +0 -2
  254. package/models/game.d.ts +10 -21
  255. package/models/handball-game-config.d.ts +2 -4
  256. package/models/handball-game-log.d.ts +1 -4
  257. package/models/handball-game-statistic.d.ts +1 -4
  258. package/models/handball-game-team-statistic.d.ts +0 -2
  259. package/models/handball-profile.d.ts +0 -2
  260. package/models/handball-statistic.d.ts +1 -4
  261. package/models/hockey-game-config.d.ts +2 -4
  262. package/models/hockey-game-log.d.ts +4 -15
  263. package/models/hockey-game-statistic.d.ts +1 -18
  264. package/models/hockey-game-team-statistic.d.ts +0 -2
  265. package/models/hockey-penalty-types.d.ts +7 -0
  266. package/models/hockey-profile.d.ts +0 -2
  267. package/models/hockey-statistic.d.ts +1 -18
  268. package/models/league-banner.d.ts +0 -2
  269. package/models/league-court.d.ts +0 -2
  270. package/models/league-document.d.ts +0 -2
  271. package/models/league-news.d.ts +0 -2
  272. package/models/league-partner.d.ts +0 -2
  273. package/models/league-player.d.ts +2 -13
  274. package/models/league-playlist.d.ts +0 -2
  275. package/models/league-user.d.ts +0 -2
  276. package/models/league.d.ts +1 -6
  277. package/models/media-item.d.ts +0 -2
  278. package/models/notification-settings.d.ts +0 -2
  279. package/models/notification.d.ts +0 -2
  280. package/models/organization-bill.d.ts +0 -2
  281. package/models/organization-statistic.d.ts +0 -2
  282. package/models/organization-tariff.d.ts +0 -2
  283. package/models/organization.d.ts +0 -2
  284. package/models/playoff.d.ts +0 -4
  285. package/models/poll.d.ts +0 -6
  286. package/models/public-api.d.ts +0 -6
  287. package/models/rugby-foul-type.d.ts +0 -2
  288. package/models/rugby-game-config.d.ts +2 -4
  289. package/models/rugby-game-log.d.ts +1 -4
  290. package/models/rugby-game-statistic.d.ts +7 -10
  291. package/models/rugby-game-team-statistic.d.ts +0 -2
  292. package/models/rugby-profile.d.ts +0 -2
  293. package/models/rugby-statistic.d.ts +1 -4
  294. package/models/season-tournament.d.ts +0 -2
  295. package/models/sport.d.ts +0 -2
  296. package/models/team-access.d.ts +0 -2
  297. package/models/team-achievement.d.ts +0 -2
  298. package/models/team-event-invite.d.ts +2 -3
  299. package/models/team-event.d.ts +0 -2
  300. package/models/team-invite-external.d.ts +0 -2
  301. package/models/team-invite.d.ts +0 -2
  302. package/models/team-permission.d.ts +0 -2
  303. package/models/team-user.d.ts +0 -2
  304. package/models/team.d.ts +0 -2
  305. package/models/teams-and-users.d.ts +0 -2
  306. package/models/tournament-disqualification.d.ts +0 -2
  307. package/models/tournament-division.d.ts +0 -2
  308. package/models/tournament-event.d.ts +0 -2
  309. package/models/tournament-group.d.ts +0 -2
  310. package/models/tournament-invite.d.ts +0 -2
  311. package/models/tournament-join-team.d.ts +0 -4
  312. package/models/tournament-join1x1-data.d.ts +0 -2
  313. package/models/tournament-news.d.ts +0 -2
  314. package/models/tournament-round-team.d.ts +4 -14
  315. package/models/tournament-round.d.ts +0 -2
  316. package/models/tournament-season.d.ts +0 -2
  317. package/models/tournament-stage-team.d.ts +0 -2
  318. package/models/tournament-stage.d.ts +0 -2
  319. package/models/tournament-team-user-invite.d.ts +0 -2
  320. package/models/tournament-team-user.d.ts +0 -5
  321. package/models/tournament-team.d.ts +0 -16
  322. package/models/tournament.d.ts +5 -21
  323. package/models/user-access.d.ts +0 -2
  324. package/models/user-permission.d.ts +0 -2
  325. package/models/user-profile.d.ts +2 -3
  326. package/models/user.d.ts +2 -6
  327. package/models/util.d.ts +22 -46
  328. package/models/volleyball-game-config.d.ts +2 -4
  329. package/models/volleyball-game-log.d.ts +1 -4
  330. package/models/volleyball-game-statistic.d.ts +1 -4
  331. package/models/volleyball-game-team-statistic.d.ts +0 -2
  332. package/models/volleyball-profile.d.ts +0 -2
  333. package/models/volleyball-statistic.d.ts +1 -4
  334. package/models/waterpolo-game-config.d.ts +2 -4
  335. package/models/waterpolo-game-log.d.ts +1 -4
  336. package/models/waterpolo-game-statistic.d.ts +1 -4
  337. package/models/waterpolo-game-team-statistic.d.ts +0 -2
  338. package/models/waterpolo-profile.d.ts +0 -2
  339. package/models/waterpolo-statistic.d.ts +1 -4
  340. package/mtgame-core.d.ts +1 -0
  341. package/package.json +23 -10
  342. package/public-api.d.ts +1 -0
  343. package/services/base.controller.d.ts +12 -0
  344. package/services/base.service.d.ts +3 -0
  345. package/services/centrifugo.service.d.ts +6 -4
  346. package/services/config.service.d.ts +3 -0
  347. package/services/public-api.d.ts +1 -0
  348. package/storage/local-storage-engine.d.ts +2 -2
  349. package/storage/new.d.ts +17 -0
  350. package/storage/old-local-storage-engine.d.ts +6 -0
  351. package/storage/old-storage-engine.d.ts +24 -0
  352. package/storage/public-api.d.ts +5 -2
  353. package/storage/storage-engine.d.ts +25 -18
  354. package/storage/store.d.ts +3 -3
  355. package/utils/component-destroyed.d.ts +1 -1
  356. package/utils/data.d.ts +36 -6
  357. package/websocket/game.websocket.d.ts +24 -0
  358. package/websocket/public-api.d.ts +1 -0
  359. package/bundles/mtgame-core.umd.js +0 -14010
  360. package/bundles/mtgame-core.umd.js.map +0 -1
  361. package/esm2015/api/basketball-game-api.js +0 -61
  362. package/esm2015/api/feedback-api.js +0 -38
  363. package/esm2015/api/file-api.js +0 -49
  364. package/esm2015/api/football-game-api.js +0 -65
  365. package/esm2015/api/game-base-api.js +0 -54
  366. package/esm2015/api/handball-game-api.js +0 -65
  367. package/esm2015/api/hockey-game-api.js +0 -65
  368. package/esm2015/api/league-api.js +0 -151
  369. package/esm2015/api/league-news-api.js +0 -71
  370. package/esm2015/api/league-player-api.js +0 -34
  371. package/esm2015/api/media-api.js +0 -131
  372. package/esm2015/api/notification-api.js +0 -16
  373. package/esm2015/api/notification-base-api.js +0 -82
  374. package/esm2015/api/org-notification-api.js +0 -16
  375. package/esm2015/api/public-team-api.js +0 -41
  376. package/esm2015/api/public-user-api.js +0 -41
  377. package/esm2015/api/reference-api.js +0 -39
  378. package/esm2015/api/rugby-game-api.js +0 -63
  379. package/esm2015/api/team-api.js +0 -393
  380. package/esm2015/api/team-event-api.js +0 -80
  381. package/esm2015/api/tournament-api.js +0 -471
  382. package/esm2015/api/tournament-join-api.js +0 -72
  383. package/esm2015/api/tournament-round-api.js +0 -71
  384. package/esm2015/api/tournament-season-api.js +0 -112
  385. package/esm2015/api/tournament-stage-api.js +0 -63
  386. package/esm2015/api/user-api.js +0 -283
  387. package/esm2015/api/volleyball-game-api.js +0 -73
  388. package/esm2015/api/waterpolo-game-api.js +0 -65
  389. package/esm2015/http-cookie.interceptor.js +0 -37
  390. package/esm2015/localization/hockey-penalty-types.js +0 -50
  391. package/esm2015/models/achievement.js +0 -33
  392. package/esm2015/models/base-statistic.js +0 -2
  393. package/esm2015/models/basketball-game-config.js +0 -41
  394. package/esm2015/models/basketball-game-log.js +0 -192
  395. package/esm2015/models/basketball-game-statistic.js +0 -81
  396. package/esm2015/models/basketball-game-team-statistic.js +0 -27
  397. package/esm2015/models/basketball-profile.js +0 -43
  398. package/esm2015/models/basketball-statistic.js +0 -114
  399. package/esm2015/models/city.js +0 -22
  400. package/esm2015/models/feedback.js +0 -34
  401. package/esm2015/models/file.js +0 -54
  402. package/esm2015/models/football-game-config.js +0 -44
  403. package/esm2015/models/football-game-log.js +0 -104
  404. package/esm2015/models/football-game-statistic.js +0 -137
  405. package/esm2015/models/football-game-team-statistic.js +0 -27
  406. package/esm2015/models/football-profile.js +0 -43
  407. package/esm2015/models/football-statistic.js +0 -150
  408. package/esm2015/models/game-bill.js +0 -47
  409. package/esm2015/models/game-invite.js +0 -37
  410. package/esm2015/models/game-log-base.js +0 -2
  411. package/esm2015/models/game-statistic-base.js +0 -2
  412. package/esm2015/models/game-timeline-stages.js +0 -53
  413. package/esm2015/models/game-user-disqualification.js +0 -28
  414. package/esm2015/models/game-user-limitation.js +0 -51
  415. package/esm2015/models/game-user.js +0 -37
  416. package/esm2015/models/game.js +0 -281
  417. package/esm2015/models/handball-game-config.js +0 -34
  418. package/esm2015/models/handball-game-log.js +0 -92
  419. package/esm2015/models/handball-game-statistic.js +0 -101
  420. package/esm2015/models/handball-game-team-statistic.js +0 -27
  421. package/esm2015/models/handball-profile.js +0 -39
  422. package/esm2015/models/handball-statistic.js +0 -95
  423. package/esm2015/models/hockey-game-config.js +0 -48
  424. package/esm2015/models/hockey-game-log.js +0 -128
  425. package/esm2015/models/hockey-game-statistic.js +0 -159
  426. package/esm2015/models/hockey-game-team-statistic.js +0 -27
  427. package/esm2015/models/hockey-profile.js +0 -41
  428. package/esm2015/models/hockey-statistic.js +0 -143
  429. package/esm2015/models/league-banner.js +0 -39
  430. package/esm2015/models/league-court.js +0 -25
  431. package/esm2015/models/league-document.js +0 -26
  432. package/esm2015/models/league-field-base-value.js +0 -4
  433. package/esm2015/models/league-field-base.js +0 -25
  434. package/esm2015/models/league-news.js +0 -50
  435. package/esm2015/models/league-partner.js +0 -29
  436. package/esm2015/models/league-player-field-value.js +0 -32
  437. package/esm2015/models/league-player-field.js +0 -30
  438. package/esm2015/models/league-player.js +0 -116
  439. package/esm2015/models/league-playlist.js +0 -28
  440. package/esm2015/models/league-team-field.js +0 -30
  441. package/esm2015/models/league-user.js +0 -52
  442. package/esm2015/models/league.js +0 -71
  443. package/esm2015/models/media-item.js +0 -41
  444. package/esm2015/models/notification-settings.js +0 -35
  445. package/esm2015/models/notification.js +0 -134
  446. package/esm2015/models/organization-bill.js +0 -50
  447. package/esm2015/models/organization-statistic.js +0 -26
  448. package/esm2015/models/organization-tariff.js +0 -30
  449. package/esm2015/models/organization.js +0 -40
  450. package/esm2015/models/playoff.js +0 -91
  451. package/esm2015/models/poll.js +0 -132
  452. package/esm2015/models/public-api.js +0 -116
  453. package/esm2015/models/rugby-foul-type.js +0 -53
  454. package/esm2015/models/rugby-game-config.js +0 -42
  455. package/esm2015/models/rugby-game-log.js +0 -144
  456. package/esm2015/models/rugby-game-statistic.js +0 -89
  457. package/esm2015/models/rugby-game-team-statistic.js +0 -27
  458. package/esm2015/models/rugby-profile.js +0 -37
  459. package/esm2015/models/rugby-statistic.js +0 -123
  460. package/esm2015/models/season-tournament.js +0 -22
  461. package/esm2015/models/sport.js +0 -115
  462. package/esm2015/models/team-access.js +0 -45
  463. package/esm2015/models/team-achievement.js +0 -34
  464. package/esm2015/models/team-event-invite.js +0 -32
  465. package/esm2015/models/team-event.js +0 -45
  466. package/esm2015/models/team-invite-external.js +0 -25
  467. package/esm2015/models/team-invite.js +0 -41
  468. package/esm2015/models/team-permission.js +0 -38
  469. package/esm2015/models/team-user.js +0 -48
  470. package/esm2015/models/team.js +0 -71
  471. package/esm2015/models/teams-and-users.js +0 -32
  472. package/esm2015/models/tournament-disqualification.js +0 -30
  473. package/esm2015/models/tournament-division.js +0 -27
  474. package/esm2015/models/tournament-event.js +0 -45
  475. package/esm2015/models/tournament-group.js +0 -26
  476. package/esm2015/models/tournament-invite.js +0 -39
  477. package/esm2015/models/tournament-join-team.js +0 -55
  478. package/esm2015/models/tournament-join1x1-data.js +0 -32
  479. package/esm2015/models/tournament-news.js +0 -33
  480. package/esm2015/models/tournament-round-team.js +0 -95
  481. package/esm2015/models/tournament-round.js +0 -36
  482. package/esm2015/models/tournament-season.js +0 -45
  483. package/esm2015/models/tournament-stage-team.js +0 -47
  484. package/esm2015/models/tournament-stage.js +0 -35
  485. package/esm2015/models/tournament-team-field-value.js +0 -32
  486. package/esm2015/models/tournament-team-user-invite.js +0 -29
  487. package/esm2015/models/tournament-team-user.js +0 -39
  488. package/esm2015/models/tournament-team.js +0 -103
  489. package/esm2015/models/tournament.js +0 -266
  490. package/esm2015/models/user-access.js +0 -25
  491. package/esm2015/models/user-permission.js +0 -38
  492. package/esm2015/models/user-profile.js +0 -24
  493. package/esm2015/models/user.js +0 -91
  494. package/esm2015/models/util.js +0 -237
  495. package/esm2015/models/volleyball-game-config.js +0 -44
  496. package/esm2015/models/volleyball-game-log.js +0 -145
  497. package/esm2015/models/volleyball-game-statistic.js +0 -64
  498. package/esm2015/models/volleyball-game-team-statistic.js +0 -27
  499. package/esm2015/models/volleyball-profile.js +0 -43
  500. package/esm2015/models/volleyball-statistic.js +0 -92
  501. package/esm2015/models/waterpolo-game-config.js +0 -45
  502. package/esm2015/models/waterpolo-game-log.js +0 -167
  503. package/esm2015/models/waterpolo-game-statistic.js +0 -641
  504. package/esm2015/models/waterpolo-game-team-statistic.js +0 -27
  505. package/esm2015/models/waterpolo-profile.js +0 -42
  506. package/esm2015/models/waterpolo-statistic.js +0 -336
  507. package/esm2015/services/base.service.js +0 -16
  508. package/esm2015/services/centrifugo.service.js +0 -123
  509. package/esm2015/services/config.service.js +0 -37
  510. package/esm2015/storage/local-storage-engine.js +0 -18
  511. package/esm2015/storage/public-api.js +0 -4
  512. package/esm2015/storage/storage-engine.js +0 -61
  513. package/esm2015/utils/component-destroyed.js +0 -26
  514. package/esm2015/utils/data.js +0 -75
  515. package/fesm2015/mtgame-core.js.map +0 -1
  516. package/models/league-field-base-value.d.ts +0 -7
  517. package/models/league-field-base.d.ts +0 -24
  518. package/models/league-player-field-value.d.ts +0 -8
  519. package/models/league-player-field.d.ts +0 -5
  520. package/models/league-team-field.d.ts +0 -5
  521. package/models/tournament-team-field-value.d.ts +0 -8
  522. package/mtgame-core.metadata.json +0 -1
@@ -1,641 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { ModelInstance, BaseModel, ToFrontHook, ToBackHook, DateTimeField } from './util';
3
- let WaterpoloGameStatistic = class WaterpoloGameStatistic extends BaseModel {
4
- get id() {
5
- return this.gameUserId;
6
- }
7
- get gameMinutes() {
8
- return Math.floor(this.gameTime / 60);
9
- }
10
- get penaltyTime() {
11
- if (!this.penaltyMinutes) {
12
- return '00:00';
13
- }
14
- const minutes = Math.floor(this.penaltyMinutes / 60);
15
- const seconds = Math.floor(this.penaltyMinutes - minutes * 60);
16
- return `${minutes < 10 ? 0 : ''}${minutes}:${seconds < 10 ? 0 : ''}${seconds}`;
17
- }
18
- get assists() {
19
- return (this.ppAssists || 0) + (this.shAssists || 0) + (this.evAssists || 0);
20
- }
21
- get totalCounterAttackGoals() {
22
- return (this.ppCounterAttackGoals || 0) + (this.evCounterAttackGoals || 0) + (this.shCounterAttackGoals || 0);
23
- }
24
- get ppCounterAttackShots() {
25
- return (this.ppCounterAttackOnGoals || 0) + (this.ppCounterAttackMisses || 0) + (this.ppCounterAttackShotsBlocked || 0);
26
- }
27
- get shCounterAttackShots() {
28
- return (this.shCounterAttackOnGoals || 0) + (this.shCounterAttackMisses || 0) + (this.shCounterAttackShotsBlocked || 0);
29
- }
30
- get evCounterAttackShots() {
31
- return (this.evCounterAttackOnGoals || 0) + (this.evCounterAttackMisses || 0) + (this.evCounterAttackShotsBlocked || 0);
32
- }
33
- get counterAttackShotMisses() {
34
- return (this.ppCounterAttackMisses || 0) + (this.shCounterAttackMisses || 0) + (this.evCounterAttackMisses || 0);
35
- }
36
- get counterAttackShotOnGoals() {
37
- return (this.ppCounterAttackOnGoals || 0) + (this.shCounterAttackOnGoals || 0) + (this.evCounterAttackOnGoals || 0);
38
- }
39
- get counterAttackShotsBlocked() {
40
- return (this.ppCounterAttackShotsBlocked || 0) + (this.shCounterAttackShotsBlocked || 0) + (this.evCounterAttackShotsBlocked || 0);
41
- }
42
- get counterAttackShots() {
43
- return this.counterAttackShotMisses + this.counterAttackShotOnGoals + this.counterAttackShotsBlocked;
44
- }
45
- get counterAttackGoalsPercent() {
46
- if (!this.totalCounterAttackGoals || !this.counterAttackShots) {
47
- return 0;
48
- }
49
- return Math.round(1000 * this.totalCounterAttackGoals / this.counterAttackShots) / 10;
50
- }
51
- get totalManeuverGoals() {
52
- return (this.ppManeuverGoals || 0) + (this.shManeuverGoals || 0) + (this.evManeuverGoals || 0);
53
- }
54
- get ppManeuverShots() {
55
- return (this.ppManeuverOnGoals || 0) + (this.ppManeuverMisses || 0) + (this.ppManeuverShotsBlocked || 0);
56
- }
57
- get shManeuverShots() {
58
- return (this.shManeuverOnGoals || 0) + (this.shManeuverMisses || 0) + (this.shManeuverShotsBlocked || 0);
59
- }
60
- get evManeuverShots() {
61
- return (this.evManeuverOnGoals || 0) + (this.evManeuverMisses || 0) + (this.evManeuverShotsBlocked || 0);
62
- }
63
- get maneuverShotMisses() {
64
- return (this.ppManeuverMisses || 0) + (this.shManeuverMisses || 0) + (this.evManeuverMisses || 0);
65
- }
66
- get maneuverShotOnGoals() {
67
- return (this.ppManeuverOnGoals || 0) + (this.shManeuverOnGoals || 0) + (this.evManeuverOnGoals || 0);
68
- }
69
- get maneuverShotsBlocked() {
70
- return (this.ppManeuverShotsBlocked || 0) + (this.shManeuverShotsBlocked || 0) + (this.evManeuverShotsBlocked || 0);
71
- }
72
- get maneuverShots() {
73
- return this.maneuverShotMisses + this.maneuverShotOnGoals + this.maneuverShotsBlocked;
74
- }
75
- get maneuverGoalsPercent() {
76
- if (!this.totalManeuverGoals || !this.maneuverShots) {
77
- return 0;
78
- }
79
- return Math.round(1000 * this.totalManeuverGoals / this.maneuverShots) / 10;
80
- }
81
- get totalCenterForwardGoals() {
82
- return (this.ppCenterForwardGoals || 0) + (this.shCenterForwardGoals || 0) + (this.evCenterForwardGoals || 0);
83
- }
84
- get ppCenterForwardShots() {
85
- return (this.ppCenterForwardOnGoals || 0) + (this.ppCenterForwardMisses || 0) + (this.ppCenterForwardShotsBlocked || 0);
86
- }
87
- get shCenterForwardShots() {
88
- return (this.shCenterForwardOnGoals || 0) + (this.shCenterForwardMisses || 0) + (this.shCenterForwardShotsBlocked || 0);
89
- }
90
- get evCenterForwardShots() {
91
- return (this.evCenterForwardOnGoals || 0) + (this.evCenterForwardMisses || 0) + (this.evCenterForwardShotsBlocked || 0);
92
- }
93
- get centerForwardShotMisses() {
94
- return (this.ppCenterForwardMisses || 0) + (this.shCenterForwardMisses || 0) + (this.evCenterForwardMisses || 0);
95
- }
96
- get centerForwardShotOnGoals() {
97
- return (this.ppCenterForwardOnGoals || 0) + (this.shCenterForwardOnGoals || 0) + (this.evCenterForwardOnGoals || 0);
98
- }
99
- get centerForwardShotsBlocked() {
100
- return (this.ppCenterForwardShotsBlocked || 0) + (this.shCenterForwardShotsBlocked || 0) + (this.evCenterForwardShotsBlocked || 0);
101
- }
102
- get centerForwardShots() {
103
- return this.centerForwardShotMisses + this.centerForwardShotOnGoals + this.centerForwardShotsBlocked;
104
- }
105
- get centerForwardGoalsPercent() {
106
- if (!this.totalCenterForwardGoals || !this.centerForwardShots) {
107
- return 0;
108
- }
109
- return Math.round(1000 * this.totalCenterForwardGoals / this.centerForwardShots) / 10;
110
- }
111
- get ppShots() {
112
- return (this.ppShotMisses || 0) + (this.ppShotsOnGoal || 0) + (this.ppShotsBlocked || 0) +
113
- (this.ppFreeKickMisses || 0) + (this.ppFreeKickOnGoals || 0) + (this.ppFreeKickShotsBlocked || 0) +
114
- (this.ppCornerMisses || 0) + (this.ppCornerOnGoals || 0) + (this.ppCornerShotsBlocked || 0) +
115
- this.ppCounterAttackShots + this.ppManeuverShots + this.ppCenterForwardShots;
116
- }
117
- get evShots() {
118
- return (this.evShotMisses || 0) + (this.evShotsOnGoal || 0) + (this.evShotsBlocked || 0) +
119
- (this.evFreeKickMisses || 0) + (this.evFreeKickOnGoals || 0) + (this.evFreeKickShotsBlocked || 0) +
120
- (this.evCornerMisses || 0) + (this.evCornerOnGoals || 0) + (this.evCornerShotsBlocked || 0) +
121
- this.evCounterAttackShots + this.evManeuverShots + this.evCenterForwardShots;
122
- }
123
- get shShots() {
124
- return (this.shShotMisses || 0) + (this.shShotsOnGoal || 0) + (this.shShotsBlocked || 0) +
125
- (this.shFreeKickMisses || 0) + (this.shFreeKickOnGoals || 0) + (this.shFreeKickShotsBlocked || 0) +
126
- (this.shCornerMisses || 0) + (this.shCornerOnGoals || 0) + (this.shCornerShotsBlocked || 0) +
127
- this.shCounterAttackShots + this.shManeuverShots + this.shCenterForwardShots;
128
- }
129
- get totalShGoals() {
130
- return (this.shGoals || 0) + (this.shFreeKickGoals || 0) + (this.shCornerGoals || 0) +
131
- (this.shCounterAttackGoals || 0) + (this.shManeuverGoals || 0) + (this.shCenterForwardGoals || 0);
132
- }
133
- get totalEvGoals() {
134
- return (this.evGoals || 0) + (this.evFreeKickGoals || 0) + (this.evCornerGoals || 0) +
135
- (this.evCounterAttackGoals || 0) + (this.evManeuverGoals || 0) + (this.evCenterForwardGoals || 0);
136
- }
137
- get totalPpGoals() {
138
- return (this.ppGoals || 0) + (this.ppFreeKickGoals || 0) + (this.ppCornerGoals || 0) +
139
- (this.ppCounterAttackGoals || 0) + (this.ppManeuverGoals || 0) + (this.ppCenterForwardGoals || 0);
140
- }
141
- get goals() {
142
- return this.totalShGoals + this.totalEvGoals + this.totalPpGoals;
143
- }
144
- get totalGoals() {
145
- return this.goals + (this.shootoutGoals || 0);
146
- }
147
- get shootoutShots() {
148
- return (this.shootoutGoals || 0) + (this.shootoutAttempts || 0);
149
- }
150
- get inGameShotMisses() {
151
- return (this.ppShotMisses || 0) + (this.evShotMisses || 0) + (this.shShotMisses || 0) +
152
- this.counterAttackShotMisses + this.maneuverShotMisses + this.centerForwardShotMisses;
153
- }
154
- get shotMisses() {
155
- return (this.ppFreeKickMisses || 0) + (this.evFreeKickMisses || 0) + (this.shFreeKickMisses || 0) +
156
- (this.ppCornerMisses || 0) + (this.evCornerMisses || 0) + (this.shCornerMisses || 0) +
157
- this.inGameShotMisses;
158
- }
159
- get totalPpShotMisses() {
160
- return (this.ppShotMisses || 0) + (this.ppFreeKickMisses || 0) + (this.ppCornerMisses || 0) +
161
- (this.ppCounterAttackMisses || 0) + (this.ppManeuverMisses || 0) + (this.ppCenterForwardMisses || 0);
162
- }
163
- get shotsOnGoal() {
164
- return (this.ppShotsOnGoal || 0) + (this.evShotsOnGoal || 0) + (this.shShotsOnGoal || 0) +
165
- (this.ppFreeKickOnGoals || 0) + (this.evFreeKickOnGoals || 0) + (this.shFreeKickOnGoals || 0) +
166
- (this.ppCornerOnGoals || 0) + (this.evCornerOnGoals || 0) + (this.shCornerOnGoals || 0) +
167
- this.counterAttackShotOnGoals + this.maneuverShotOnGoals + this.centerForwardShotOnGoals;
168
- }
169
- get totalPpShotsOnGoal() {
170
- return (this.ppShotsOnGoal || 0) + (this.ppFreeKickOnGoals || 0) + (this.ppCornerOnGoals || 0) +
171
- (this.ppCounterAttackOnGoals || 0) + (this.ppManeuverOnGoals || 0) + (this.ppCenterForwardOnGoals || 0);
172
- }
173
- get inGameShotsOnGoals() {
174
- return (this.ppShotsOnGoal || 0) + (this.evShotsOnGoal || 0) + (this.shShotsOnGoal || 0) +
175
- this.counterAttackShotOnGoals + this.maneuverShotOnGoals + this.centerForwardShotOnGoals;
176
- }
177
- get shots() {
178
- return this.ppShots + this.evShots + this.shShots;
179
- }
180
- get totalShots() {
181
- return this.shots + this.shootoutShots;
182
- }
183
- get faceOffs() {
184
- return (this.faceOffWins || 0) + (this.faceOffLosses || 0);
185
- }
186
- get freeKickShotMisses() {
187
- return (this.ppFreeKickMisses || 0) + (this.evFreeKickMisses || 0) + (this.shFreeKickMisses || 0);
188
- }
189
- get freeKickShotsBlocked() {
190
- return (this.ppFreeKickShotsBlocked || 0) + (this.evFreeKickShotsBlocked || 0) + (this.shFreeKickShotsBlocked || 0);
191
- }
192
- get freeKickOnGoals() {
193
- return (this.ppFreeKickOnGoals || 0) + (this.evFreeKickOnGoals || 0) + (this.shFreeKickOnGoals || 0);
194
- }
195
- get totalFreeKickGoals() {
196
- return (this.ppFreeKickGoals || 0) + (this.shFreeKickGoals || 0) + (this.evFreeKickGoals || 0);
197
- }
198
- get totalFreeKicks() {
199
- return (this.freeKickSelfs || 0) + (this.freeKickPasses || 0) +
200
- this.freeKickShotMisses + this.freeKickOnGoals + this.totalFreeKickGoals + this.freeKickShotsBlocked;
201
- }
202
- get freeKickGoalsPercent() {
203
- if (!this.totalFreeKickGoals || !this.totalFreeKicks) {
204
- return 0;
205
- }
206
- return Math.round(1000 * this.totalFreeKickGoals / this.totalFreeKicks) / 10;
207
- }
208
- get totalCornerGoals() {
209
- return (this.ppCornerGoals || 0) + (this.shCornerGoals || 0) + (this.evCornerGoals || 0);
210
- }
211
- get cornerShotMisses() {
212
- return (this.ppCornerMisses || 0) + (this.shCornerMisses || 0) + (this.evCornerMisses || 0);
213
- }
214
- get cornerOnGoals() {
215
- return (this.ppCornerOnGoals || 0) + (this.shCornerOnGoals || 0) + (this.evCornerOnGoals || 0);
216
- }
217
- get cornerShotsBlocked() {
218
- return (this.ppCornerShotsBlocked || 0) + (this.shCornerShotsBlocked || 0) + (this.evCornerShotsBlocked || 0);
219
- }
220
- get totalCorners() {
221
- return (this.cornerSelfs || 0) + (this.cornerPasses || 0) + this.cornerShotsBlocked +
222
- this.cornerOnGoals + this.cornerShotMisses + this.totalCornerGoals;
223
- }
224
- get shotsBlocked() {
225
- return (this.ppShotsBlocked || 0) + (this.evShotsBlocked || 0) + (this.shShotsBlocked || 0) +
226
- this.counterAttackShotsBlocked + this.maneuverShotsBlocked + this.centerForwardShotsBlocked +
227
- this.freeKickShotsBlocked + this.cornerShotsBlocked;
228
- }
229
- get totalFouls() {
230
- return (this.fouls || 0) + (this.personalFouls || 0);
231
- }
232
- get totalPenalties() {
233
- return (this.minorPenalties || 0) + (this.majorPenalties || 0) + (this.matchPenalties || 0);
234
- }
235
- get positionAttackGoals() {
236
- return (this.shGoals || 0) + (this.evGoals || 0) + (this.ppGoals || 0);
237
- }
238
- get positionAttackShotsOnGoal() {
239
- return (this.ppShotsOnGoal || 0) + (this.evShotsOnGoal || 0) + (this.shShotsOnGoal || 0);
240
- }
241
- get positionAttackShotsMiss() {
242
- return (this.ppShotMisses || 0) + (this.evShotMisses || 0) + (this.shShotMisses || 0);
243
- }
244
- get positionAttackShots() {
245
- return this.positionAttackShotsOnGoal + this.positionAttackShotsMiss;
246
- }
247
- get positionAttackGoalsPercent() {
248
- if (!this.positionAttackGoals || !this.positionAttackShots) {
249
- return 0;
250
- }
251
- return Math.round(1000 * this.positionAttackGoals / this.positionAttackShots) / 10;
252
- }
253
- get totalInGameGoals() {
254
- return this.totalCenterForwardGoals + this.totalManeuverGoals + this.totalCounterAttackGoals + this.positionAttackGoals;
255
- }
256
- get ppGoalsPercent() {
257
- if (!this.totalPpGoals || !this.ppShots) {
258
- return 0;
259
- }
260
- return Math.round(1000 * this.totalPpGoals / this.ppShots) / 10;
261
- }
262
- get evGoalsPercent() {
263
- if (!this.totalEvGoals || !this.evShots) {
264
- return 0;
265
- }
266
- return Math.round(1000 * this.totalEvGoals / this.evShots) / 10;
267
- }
268
- get shGoalsPercent() {
269
- if (!this.totalShGoals || !this.shShots) {
270
- return 0;
271
- }
272
- return Math.round(1000 * this.totalShGoals / this.shShots) / 10;
273
- }
274
- get shotsOnGoalPercent() {
275
- if (!this.shotsOnGoal || !this.shots) {
276
- return 0;
277
- }
278
- return Math.round(1000 * this.shotsOnGoal / this.shots) / 10;
279
- }
280
- get goalsPercent() {
281
- if (!this.goals || !this.shots) {
282
- return 0;
283
- }
284
- return Math.round(1000 * this.goals / this.shots) / 10;
285
- }
286
- get totalGoalsPercent() {
287
- if (!this.totalGoals || !this.totalShots) {
288
- return 0;
289
- }
290
- return Math.round(1000 * this.totalGoals / this.totalShots) / 10;
291
- }
292
- get faceOffPercent() {
293
- if (!this.faceOffWins || !this.faceOffs) {
294
- return 0;
295
- }
296
- return Math.round(1000 * this.faceOffWins / this.faceOffs) / 10;
297
- }
298
- get shootoutGoalsPercent() {
299
- if (!this.shootoutGoals || !this.shootoutShots) {
300
- return 0;
301
- }
302
- return Math.round(1000 * this.shootoutGoals / this.shootoutShots) / 10;
303
- }
304
- get goalpass() {
305
- return (this.totalGoals || 0) + (this.assists || 0);
306
- }
307
- /*goalie stat */
308
- get positionAttackSaves() {
309
- return (this.ppSaves || 0) + (this.shSaves || 0) + (this.evSaves || 0);
310
- }
311
- get positionAttackShotsAgainst() {
312
- return this.positionAttackSaves + (this.goalsAgainst || 0);
313
- }
314
- get positionAttackSavesPercent() {
315
- if (!this.positionAttackSaves || !this.positionAttackShotsAgainst) {
316
- return 0;
317
- }
318
- return Math.round(1000 * this.positionAttackSaves / this.positionAttackShotsAgainst) / 10;
319
- }
320
- get counterAttackSaves() {
321
- return (this.ppCounterAttackSaves || 0) + (this.shCounterAttackSaves || 0) + (this.evCounterAttackSaves || 0);
322
- }
323
- get counterAttackShotsAgainst() {
324
- return this.counterAttackSaves + (this.counterAttackGoalsAgainst || 0);
325
- }
326
- get counterAttackSavesPercent() {
327
- if (!this.counterAttackSaves || !this.counterAttackShotsAgainst) {
328
- return 0;
329
- }
330
- return Math.round(1000 * this.counterAttackSaves / this.counterAttackShotsAgainst) / 10;
331
- }
332
- get centerForwardSaves() {
333
- return (this.ppCenterForwardSaves || 0) + (this.shCenterForwardSaves || 0) + (this.evCenterForwardSaves || 0);
334
- }
335
- get centerForwardShotsAgainst() {
336
- return this.centerForwardSaves + (this.centerForwardGoalsAgainst || 0);
337
- }
338
- get centerForwardSavesPercent() {
339
- if (!this.centerForwardSaves || !this.centerForwardShotsAgainst) {
340
- return 0;
341
- }
342
- return Math.round(1000 * this.centerForwardSaves / this.centerForwardShotsAgainst) / 10;
343
- }
344
- get maneuverSaves() {
345
- return (this.ppManeuverSaves || 0) + (this.shManeuverSaves || 0) + (this.evManeuverSaves || 0);
346
- }
347
- get maneuverShotsAgainst() {
348
- return this.maneuverSaves + (this.maneuverGoalsAgainst || 0);
349
- }
350
- get maneuverSavesPercent() {
351
- if (!this.maneuverSaves || !this.maneuverShotsAgainst) {
352
- return 0;
353
- }
354
- return Math.round(1000 * this.maneuverSaves / this.maneuverShotsAgainst) / 10;
355
- }
356
- get freeKickSaves() {
357
- return (this.ppFreeKickSaves || 0) + (this.shFreeKickSaves || 0) + (this.evFreeKickSaves || 0);
358
- }
359
- get freeKickShotsAgainst() {
360
- return this.freeKickSaves + (this.freeKickGoalsAgainst || 0);
361
- }
362
- get freeKickSavesPercent() {
363
- if (!this.freeKickSaves || !this.freeKickShotsAgainst) {
364
- return 0;
365
- }
366
- return Math.round(1000 * this.freeKickSaves / this.freeKickShotsAgainst) / 10;
367
- }
368
- get cornerSaves() {
369
- return (this.ppCornerSaves || 0) + (this.shCornerSaves || 0) + (this.evCornerSaves || 0);
370
- }
371
- get cornerShotsAgainst() {
372
- return this.cornerSaves + (this.cornerGoalsAgainst || 0);
373
- }
374
- get cornerSavesPercent() {
375
- if (!this.cornerSaves || !this.cornerShotsAgainst) {
376
- return 0;
377
- }
378
- return Math.round(1000 * this.cornerSaves / this.cornerShotsAgainst) / 10;
379
- }
380
- get inGameSaves() {
381
- return (this.shSaves || 0) + (this.evSaves || 0) + (this.ppSaves || 0) +
382
- this.counterAttackSaves + this.maneuverSaves + this.centerForwardSaves;
383
- }
384
- get saves() {
385
- return this.inGameSaves + this.freeKickSaves + this.cornerSaves;
386
- }
387
- get totalSaves() {
388
- return this.saves + (this.shootoutSaves || 0);
389
- }
390
- get inGameGoalsAgainst() {
391
- return (this.goalsAgainst || 0) + (this.counterAttackGoalsAgainst || 0) + (this.maneuverGoalsAgainst || 0) +
392
- (this.centerForwardGoalsAgainst || 0);
393
- }
394
- get shootoutShotsAgainst() {
395
- return (this.shootoutSaves || 0) + (this.shootoutGoalsAgainst || 0);
396
- }
397
- get gameGoalsAgainst() {
398
- return this.inGameGoalsAgainst + (this.freeKickGoalsAgainst || 0) + (this.cornerGoalsAgainst || 0);
399
- }
400
- get totalGoalsAgainst() {
401
- return this.gameGoalsAgainst + (this.shootoutGoalsAgainst || 0);
402
- }
403
- get gameShotsAgainst() {
404
- return this.saves + this.gameGoalsAgainst;
405
- }
406
- get totalShotsAgainst() {
407
- return this.gameShotsAgainst + this.shootoutShotsAgainst;
408
- }
409
- get shootoutSavesPercent() {
410
- if (!this.shootoutSaves || !this.shootoutShotsAgainst) {
411
- return 0;
412
- }
413
- return Math.round(1000 * this.shootoutSaves / this.shootoutShotsAgainst) / 10;
414
- }
415
- get savesPercent() {
416
- if (!this.saves || !this.gameShotsAgainst) {
417
- return 0;
418
- }
419
- return Math.round(1000 * this.saves / this.gameShotsAgainst) / 10;
420
- }
421
- get totalSavesPercent() {
422
- if (!this.totalSaves || !this.totalShotsAgainst) {
423
- return 0;
424
- }
425
- return Math.round(1000 * this.totalSaves / this.totalShotsAgainst) / 10;
426
- }
427
- get totalShSaves() {
428
- return (this.shCounterAttackSaves || 0) + (this.shManeuverSaves || 0) + (this.shCenterForwardSaves || 0) +
429
- (this.shSaves || 0) + (this.shFreeKickSaves || 0) + (this.shCornerSaves || 0);
430
- }
431
- get totalShGoalsAgainst() {
432
- return (this.shGoalsAgainst || 0) + (this.shFreeKickGoalsAgainst || 0) + (this.shCornerGoalsAgainst || 0) +
433
- (this.shCounterAttackGoalsAgainst || 0) + (this.shManeuverGoalsAgainst || 0) + (this.shCenterForwardGoalsAgainst || 0);
434
- }
435
- get totalShShotsAgainst() {
436
- return this.totalShSaves + this.totalShGoalsAgainst;
437
- }
438
- get totalShSavesPercent() {
439
- if (!this.totalShSaves || !this.totalShShotsAgainst) {
440
- return 0;
441
- }
442
- return Math.round(1000 * this.totalShSaves / this.totalShShotsAgainst) / 10;
443
- }
444
- get totalEvSaves() {
445
- return (this.evCounterAttackSaves || 0) + (this.evManeuverSaves || 0) + (this.evCenterForwardSaves || 0) +
446
- (this.evSaves || 0) + (this.evFreeKickSaves || 0) + (this.evCornerSaves || 0);
447
- }
448
- get totalEvGoalsAgainst() {
449
- return (this.evGoalsAgainst || 0) + (this.evFreeKickGoalsAgainst || 0) + (this.evCornerGoalsAgainst || 0) +
450
- (this.evCounterAttackGoalsAgainst || 0) + (this.evManeuverGoalsAgainst || 0) + (this.evCenterForwardGoalsAgainst || 0);
451
- }
452
- get totalEvShotsAgainst() {
453
- return this.totalEvSaves + this.totalEvGoalsAgainst;
454
- }
455
- get totalEvSavesPercent() {
456
- if (!this.totalEvSaves || !this.totalEvShotsAgainst) {
457
- return 0;
458
- }
459
- return Math.round(1000 * this.totalEvSaves / this.totalEvShotsAgainst) / 10;
460
- }
461
- static toFront(data) { }
462
- static toBack(data) { }
463
- };
464
- __decorate([
465
- ToFrontHook
466
- ], WaterpoloGameStatistic, "toFront", null);
467
- __decorate([
468
- ToBackHook
469
- ], WaterpoloGameStatistic, "toBack", null);
470
- WaterpoloGameStatistic = __decorate([
471
- ModelInstance({
472
- mappingFields: {
473
- game_user_id: 'gameUserId',
474
- updated_at: 'updatedAt',
475
- points: 'points',
476
- pp_shot_misses: 'ppShotMisses',
477
- pp_shots_on_goal: 'ppShotsOnGoal',
478
- pp_shots_blocked: 'ppShotsBlocked',
479
- ev_shot_misses: 'evShotMisses',
480
- ev_shots_on_goal: 'evShotsOnGoal',
481
- ev_shots_blocked: 'evShotsBlocked',
482
- sh_shot_misses: 'shShotMisses',
483
- sh_shots_on_goal: 'shShotsOnGoal',
484
- sh_shots_blocked: 'shShotsBlocked',
485
- pp_total_shots_on_goal: 'ppTotalShotsOnGoal',
486
- ev_total_shots_on_goal: 'evTotalShotsOnGoal',
487
- sh_total_shots_on_goal: 'shTotalShotsOnGoal',
488
- pp_goals: 'ppGoals',
489
- ev_goals: 'evGoals',
490
- sh_goals: 'shGoals',
491
- pp_counterattack_goals: 'ppCounterAttackGoals',
492
- pp_counterattack_on_goals: 'ppCounterAttackOnGoals',
493
- pp_counterattack_misses: 'ppCounterAttackMisses',
494
- pp_counterattack_shots_blocked: 'ppCounterAttackShotsBlocked',
495
- ev_counterattack_goals: 'evCounterAttackGoals',
496
- ev_counterattack_on_goals: 'evCounterAttackOnGoals',
497
- ev_counterattack_misses: 'evCounterAttackMisses',
498
- ev_counterattack_shots_blocked: 'evCounterAttackShotsBlocked',
499
- sh_counterattack_goals: 'shCounterAttackGoals',
500
- sh_counterattack_on_goals: 'shCounterAttackOnGoals',
501
- sh_counterattack_misses: 'shCounterAttackMisses',
502
- sh_counterattack_shots_blocked: 'shCounterAttackShotsBlocked',
503
- pp_maneuver_goals: 'ppManeuverGoals',
504
- pp_maneuver_on_goals: 'ppManeuverOnGoals',
505
- pp_maneuver_misses: 'ppManeuverMisses',
506
- pp_maneuver_shots_blocked: 'ppManeuverShotsBlocked',
507
- ev_maneuver_goals: 'evManeuverGoals',
508
- ev_maneuver_on_goals: 'evManeuverOnGoals',
509
- ev_maneuver_misses: 'evManeuverMisses',
510
- ev_maneuver_shots_blocked: 'evManeuverShotsBlocked',
511
- sh_maneuver_goals: 'shManeuverGoals',
512
- sh_maneuver_on_goals: 'shManeuverOnGoals',
513
- sh_maneuver_misses: 'shManeuverMisses',
514
- sh_maneuver_shots_blocked: 'shManeuverShotsBlocked',
515
- pp_center_forward_goals: 'ppCenterForwardGoals',
516
- pp_center_forward_on_goals: 'ppCenterForwardOnGoals',
517
- pp_center_forward_misses: 'ppCenterForwardMisses',
518
- pp_center_forward_shots_blocked: 'ppCenterForwardShotsBlocked',
519
- ev_center_forward_goals: 'evCenterForwardGoals',
520
- ev_center_forward_on_goals: 'evCenterForwardOnGoals',
521
- ev_center_forward_misses: 'evCenterForwardMisses',
522
- ev_center_forward_shots_blocked: 'evCenterForwardShotsBlocked',
523
- sh_center_forward_goals: 'shCenterForwardGoals',
524
- sh_center_forward_on_goals: 'shCenterForwardOnGoals',
525
- sh_center_forward_misses: 'shCenterForwardMisses',
526
- sh_center_forward_shots_blocked: 'shCenterForwardShotsBlocked',
527
- pp_assists: 'ppAssists',
528
- ev_assists: 'evAssists',
529
- sh_assists: 'shAssists',
530
- shootout_attempts: 'shootoutAttempts',
531
- shootout_goals: 'shootoutGoals',
532
- after_game_shootout_attempts: 'afterGameShootoutAttempts',
533
- after_game_shootout_goals: 'afterGameShootoutGoals',
534
- block_shots: 'blockShots',
535
- face_off_losses: 'faceOffLosses',
536
- face_off_wins: 'faceOffWins',
537
- pp_saves: 'ppSaves',
538
- sh_saves: 'shSaves',
539
- ev_saves: 'evSaves',
540
- pp_counterattack_saves: 'ppCounterAttackSaves',
541
- sh_counterattack_saves: 'shCounterAttackSaves',
542
- ev_counterattack_saves: 'evCounterAttackSaves',
543
- pp_maneuver_saves: 'ppManeuverSaves',
544
- sh_maneuver_saves: 'shManeuverSaves',
545
- ev_maneuver_saves: 'evManeuverSaves',
546
- pp_center_forward_saves: 'ppCenterForwardSaves',
547
- sh_center_forward_saves: 'shCenterForwardSaves',
548
- ev_center_forward_saves: 'evCenterForwardSaves',
549
- pp_free_kick_saves: 'ppFreeKickSaves',
550
- sh_free_kick_saves: 'shFreeKickSaves',
551
- ev_free_kick_saves: 'evFreeKickSaves',
552
- pp_corner_saves: 'ppCornerSaves',
553
- sh_corner_saves: 'shCornerSaves',
554
- ev_corner_saves: 'evCornerSaves',
555
- pp_total_game_saves: 'ppTotalGameSaves',
556
- sh_total_game_saves: 'shTotalGameSaves',
557
- ev_total_game_saves: 'evTotalGameSaves',
558
- shootout_saves: 'shootoutSaves',
559
- after_game_shootout_saves: 'afterGameShootoutSaves',
560
- pp_goals_against: 'ppGoalsAgainst',
561
- sh_goals_against: 'shGoalsAgainst',
562
- ev_goals_against: 'evGoalsAgainst',
563
- goals_against: 'goalsAgainst',
564
- pp_counterattack_goals_against: 'ppCounterAttackGoalsAgainst',
565
- sh_counterattack_goals_against: 'shCounterAttackGoalsAgainst',
566
- ev_counterattack_goals_against: 'evCounterAttackGoalsAgainst',
567
- counterattack_goals_against: 'counterAttackGoalsAgainst',
568
- pp_maneuver_goals_against: 'ppManeuverGoalsAgainst',
569
- sh_maneuver_goals_against: 'shManeuverGoalsAgainst',
570
- ev_maneuver_goals_against: 'evManeuverGoalsAgainst',
571
- maneuver_goals_against: 'maneuverGoalsAgainst',
572
- pp_center_forward_goals_against: 'ppCenterForwardGoalsAgainst',
573
- sh_center_forward_goals_against: 'shCenterForwardGoalsAgainst',
574
- ev_center_forward_goals_against: 'evCenterForwardGoalsAgainst',
575
- center_forward_goals_against: 'centerForwardGoalsAgainst',
576
- pp_free_kick_goals_against: 'ppFreeKickGoalsAgainst',
577
- sh_free_kick_goals_against: 'shFreeKickGoalsAgainst',
578
- ev_free_kick_goals_against: 'evFreeKickGoalsAgainst',
579
- free_kick_goals_against: 'freeKickGoalsAgainst',
580
- pp_corner_goals_against: 'ppCornerGoalsAgainst',
581
- sh_corner_goals_against: 'shCornerGoalsAgainst',
582
- ev_corner_goals_against: 'evCornerGoalsAgainst',
583
- corner_goals_against: 'cornerGoalsAgainst',
584
- shootout_goals_against: 'shootoutGoalsAgainst',
585
- after_game_shootout_goals_against: 'afterGameShootoutGoalsAgainst',
586
- safety_rate: 'safetyRate',
587
- penalty_minutes: 'penaltyMinutes',
588
- game_time: 'gameTime',
589
- plus_minus: 'plusMinus',
590
- fouls: 'fouls',
591
- minor_penalties: 'minorPenalties',
592
- major_penalties: 'majorPenalties',
593
- match_penalties: 'matchPenalties',
594
- penalty_fouls: 'penaltyFouls',
595
- turnovers: 'turnovers',
596
- attack_fouls: 'attackFouls',
597
- personal_fouls: 'personalFouls',
598
- drawn_fouls: 'drawnFouls',
599
- drawn_turnovers: 'drawnTurnovers',
600
- yellow_cards: 'yellowCards',
601
- red_cards: 'redCards',
602
- losses: 'losses',
603
- steals: 'steals',
604
- pp_free_kick_goals: 'ppFreeKickGoals',
605
- pp_free_kick_on_goals: 'ppFreeKickOnGoals',
606
- pp_free_kick_misses: 'ppFreeKickMisses',
607
- pp_free_kick_shots_blocked: 'ppFreeKickShotsBlocked',
608
- sh_free_kick_goals: 'shFreeKickGoals',
609
- sh_free_kick_on_goals: 'shFreeKickOnGoals',
610
- sh_free_kick_misses: 'shFreeKickMisses',
611
- sh_free_kick_shots_blocked: 'shFreeKickShotsBlocked',
612
- ev_free_kick_goals: 'evFreeKickGoals',
613
- ev_free_kick_on_goals: 'evFreeKickOnGoals',
614
- ev_free_kick_misses: 'evFreeKickMisses',
615
- ev_free_kick_shots_blocked: 'evFreeKickShotsBlocked',
616
- free_kick_passes: 'freeKickPasses',
617
- free_kick_selfs: 'freeKickSelfs',
618
- pp_corner_goals: 'ppCornerGoals',
619
- pp_corner_on_goals: 'ppCornerOnGoals',
620
- pp_corner_misses: 'ppCornerMisses',
621
- pp_corner_shots_blocked: 'ppCornerShotsBlocked',
622
- sh_corner_goals: 'shCornerGoals',
623
- sh_corner_on_goals: 'shCornerOnGoals',
624
- sh_corner_misses: 'shCornerMisses',
625
- sh_corner_shots_blocked: 'shCornerShotsBlocked',
626
- ev_corner_goals: 'evCornerGoals',
627
- ev_corner_on_goals: 'evCornerOnGoals',
628
- ev_corner_misses: 'evCornerMisses',
629
- ev_corner_shots_blocked: 'evCornerShotsBlocked',
630
- corner_passes: 'cornerPasses',
631
- corner_selfs: 'cornerSelfs',
632
- tackles: 'tackles',
633
- player_efficiency: 'playerEfficiency'
634
- },
635
- relation: {
636
- updatedAt: DateTimeField,
637
- }
638
- })
639
- ], WaterpoloGameStatistic);
640
- export { WaterpoloGameStatistic };
641
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0ZXJwb2xvLWdhbWUtc3RhdGlzdGljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbW9kZWxzL3dhdGVycG9sby1nYW1lLXN0YXRpc3RpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsTUFBTSxRQUFRLENBQUM7SUEySzdFLHNCQUFzQixTQUF0QixzQkFBdUIsU0FBUSxTQUFTO0lBbUtuRCxJQUFJLEVBQUU7UUFDSixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN4QixPQUFPLE9BQU8sQ0FBQztTQUNoQjtRQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNyRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELE9BQU8sR0FBRyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7SUFDakYsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsR0FBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVELElBQUksdUJBQXVCO1FBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDLEdBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakgsQ0FBQztJQUVELElBQUksb0JBQW9CO1FBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDMUgsQ0FBQztJQUVELElBQUksb0JBQW9CO1FBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDMUgsQ0FBQztJQUVELElBQUksb0JBQW9CO1FBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDMUgsQ0FBQztJQUVELElBQUksdUJBQXVCO1FBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMscUJBQXFCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLElBQUks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RSx3QkFBd0I7WUFDcEQsZ0JBQWdCLEVBQUUsZ0JBQWdCO1lBQ2xDLGVBQWUsRUFBRSxlQUFlO1lBQ2hDLGVBQWUsRUFBRSxlQUFlO1lBQ2hDLGtCQUFrQixFQUFFLGlCQUFpQjtZQUNyQyxnQkFBZ0IsRUFBRSxnQkFBZ0I7WUFDbEMsdUJBQXVCLEVBQUUsc0JBQXNCO1lBQy9DLGVBQWUsRUFBRSxlQUFlO1lBQ2hDLGtCQUFrQixFQUFFLGlCQUFpQjtZQUNyQyxnQkFBZ0IsRUFBRSxnQkFBZ0I7WUFDbEMsdUJBQXVCLEVBQUUsc0JBQXNCO1lBQy9DLGVBQWUsRUFBRSxlQUFlO1lBQ2hDLGtCQUFrQixFQUFFLGlCQUFpQjtZQUNyQyxnQkFBZ0IsRUFBRSxnQkFBZ0I7WUFDbEMsdUJBQXVCLEVBQUUsc0JBQXNCO1lBQy9DLGFBQWEsRUFBRSxjQUFjO1lBQzdCLFlBQVksRUFBRSxhQUFhO1lBQzNCLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLGlCQUFpQixFQUFFLGtCQUFrQjtTQUN0QztRQUNELFFBQVEsRUFBRTtZQUNSLFNBQVMsRUFBRSxhQUFhO1NBQ3pCO0tBQ0YsQ0FBQztHQUNXLHNCQUFzQixDQXN1QmxDO1NBdHVCWSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RlbEluc3RhbmNlLCBCYXNlTW9kZWwsIFRvRnJvbnRIb29rLCBUb0JhY2tIb29rLCBEYXRlVGltZUZpZWxkIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IEdhbWVTdGF0aXN0aWNCYXNlIH0gZnJvbSAnLi9nYW1lLXN0YXRpc3RpYy1iYXNlJztcblxuQE1vZGVsSW5zdGFuY2Uoe1xuICBtYXBwaW5nRmllbGRzOiB7XG4gICAgZ2FtZV91c2VyX2lkOiAnZ2FtZVVzZXJJZCcsXG4gICAgdXBkYXRlZF9hdDogJ3VwZGF0ZWRBdCcsXG4gICAgcG9pbnRzOiAncG9pbnRzJyxcbiAgICBwcF9zaG90X21pc3NlczogJ3BwU2hvdE1pc3NlcycsXG4gICAgcHBfc2hvdHNfb25fZ29hbDogJ3BwU2hvdHNPbkdvYWwnLFxuICAgIHBwX3Nob3RzX2Jsb2NrZWQ6ICdwcFNob3RzQmxvY2tlZCcsXG4gICAgZXZfc2hvdF9taXNzZXM6ICdldlNob3RNaXNzZXMnLFxuICAgIGV2X3Nob3RzX29uX2dvYWw6ICdldlNob3RzT25Hb2FsJyxcbiAgICBldl9zaG90c19ibG9ja2VkOiAnZXZTaG90c0Jsb2NrZWQnLFxuICAgIHNoX3Nob3RfbWlzc2VzOiAnc2hTaG90TWlzc2VzJyxcbiAgICBzaF9zaG90c19vbl9nb2FsOiAnc2hTaG90c09uR29hbCcsXG4gICAgc2hfc2hvdHNfYmxvY2tlZDogJ3NoU2hvdHNCbG9ja2VkJyxcbiAgICBwcF90b3RhbF9zaG90c19vbl9nb2FsOiAncHBUb3RhbFNob3RzT25Hb2FsJyxcbiAgICBldl90b3RhbF9zaG90c19vbl9nb2FsOiAnZXZUb3RhbFNob3RzT25Hb2FsJyxcbiAgICBzaF90b3RhbF9zaG90c19vbl9nb2FsOiAnc2hUb3RhbFNob3RzT25Hb2FsJyxcbiAgICBwcF9nb2FsczogJ3BwR29hbHMnLFxuICAgIGV2X2dvYWxzOiAnZXZHb2FscycsXG4gICAgc2hfZ29hbHM6ICdzaEdvYWxzJyxcbiAgICBwcF9jb3VudGVyYXR0YWNrX2dvYWxzOiAncHBDb3VudGVyQXR0YWNrR29hbHMnLFxuICAgIHBwX2NvdW50ZXJhdHRhY2tfb25fZ29hbHM6ICdwcENvdW50ZXJBdHRhY2tPbkdvYWxzJyxcbiAgICBwcF9jb3VudGVyYXR0YWNrX21pc3NlczogJ3BwQ291bnRlckF0dGFja01pc3NlcycsXG4gICAgcHBfY291bnRlcmF0dGFja19zaG90c19ibG9ja2VkOiAncHBDb3VudGVyQXR0YWNrU2hvdHNCbG9ja2VkJyxcbiAgICBldl9jb3VudGVyYXR0YWNrX2dvYWxzOiAnZXZDb3VudGVyQXR0YWNrR29hbHMnLFxuICAgIGV2X2NvdW50ZXJhdHRhY2tfb25fZ29hbHM6ICdldkNvdW50ZXJBdHRhY2tPbkdvYWxzJyxcbiAgICBldl9jb3VudGVyYXR0YWNrX21pc3NlczogJ2V2Q291bnRlckF0dGFja01pc3NlcycsXG4gICAgZXZfY291bnRlcmF0dGFja19zaG90c19ibG9ja2VkOiAnZXZDb3VudGVyQXR0YWNrU2hvdHNCbG9ja2VkJyxcbiAgICBzaF9jb3VudGVyYXR0YWNrX2dvYWxzOiAnc2hDb3VudGVyQXR0YWNrR29hbHMnLFxuICAgIHNoX2NvdW50ZXJhdHRhY2tfb25fZ29hbHM6ICdzaENvdW50ZXJBdHRhY2tPbkdvYWxzJyxcbiAgICBzaF9jb3VudGVyYXR0YWNrX21pc3NlczogJ3NoQ291bnRlckF0dGFja01pc3NlcycsXG4gICAgc2hfY291bnRlcmF0dGFja19zaG90c19ibG9ja2VkOiAnc2hDb3VudGVyQXR0YWNrU2hvdHNCbG9ja2VkJyxcbiAgICBwcF9tYW5ldXZlcl9nb2FsczogJ3BwTWFuZXV2ZXJHb2FscycsXG4gICAgcHBfbWFuZXV2ZXJfb25fZ29hbHM6ICdwcE1hbmV1dmVyT25Hb2FscycsXG4gICAgcHBfbWFuZXV2ZXJfbWlzc2VzOiAncHBNYW5ldXZlck1pc3NlcycsXG4gICAgcHBfbWFuZXV2ZXJfc2hvdHNfYmxvY2tlZDogJ3BwTWFuZXV2ZXJTaG90c0Jsb2NrZWQnLFxuICAgIGV2X21hbmV1dmVyX2dvYWxzOiAnZXZNYW5ldXZlckdvYWxzJyxcbiAgICBldl9tYW5ldXZlcl9vbl9nb2FsczogJ2V2TWFuZXV2ZXJPbkdvYWxzJyxcbiAgICBldl9tYW5ldXZlcl9taXNzZXM6ICdldk1hbmV1dmVyTWlzc2VzJyxcbiAgICBldl9tYW5ldXZlcl9zaG90c19ibG9ja2VkOiAnZXZNYW5ldXZlclNob3RzQmxvY2tlZCcsXG4gICAgc2hfbWFuZXV2ZXJfZ29hbHM6ICdzaE1hbmV1dmVyR29hbHMnLFxuICAgIHNoX21hbmV1dmVyX29uX2dvYWxzOiAnc2hNYW5ldXZlck9uR29hbHMnLFxuICAgIHNoX21hbmV1dmVyX21pc3NlczogJ3NoTWFuZXV2ZXJNaXNzZXMnLFxuICAgIHNoX21hbmV1dmVyX3Nob3RzX2Jsb2NrZWQ6ICdzaE1hbmV1dmVyU2hvdHNCbG9ja2VkJyxcbiAgICBwcF9jZW50ZXJfZm9yd2FyZF9nb2FsczogJ3BwQ2VudGVyRm9yd2FyZEdvYWxzJyxcbiAgICBwcF9jZW50ZXJfZm9yd2FyZF9vbl9nb2FsczogJ3BwQ2VudGVyRm9yd2FyZE9uR29hbHMnLFxuICAgIHBwX2NlbnRlcl9mb3J3YXJkX21pc3NlczogJ3BwQ2VudGVyRm9yd2FyZE1pc3NlcycsXG4gICAgcHBfY2VudGVyX2ZvcndhcmRfc2hvdHNfYmxvY2tlZDogJ3BwQ2VudGVyRm9yd2FyZFNob3RzQmxvY2tlZCcsXG4gICAgZXZfY2VudGVyX2ZvcndhcmRfZ29hbHM6ICdldkNlbnRlckZvcndhcmRHb2FscycsXG4gICAgZXZfY2VudGVyX2ZvcndhcmRfb25fZ29hbHM6ICdldkNlbnRlckZvcndhcmRPbkdvYWxzJyxcbiAgICBldl9jZW50ZXJfZm9yd2FyZF9taXNzZXM6ICdldkNlbnRlckZvcndhcmRNaXNzZXMnLFxuICAgIGV2X2NlbnRlcl9mb3J3YXJkX3Nob3RzX2Jsb2NrZWQ6ICdldkNlbnRlckZvcndhcmRTaG90c0Jsb2NrZWQnLFxuICAgIHNoX2NlbnRlcl9mb3J3YXJkX2dvYWxzOiAnc2hDZW50ZXJGb3J3YXJkR29hbHMnLFxuICAgIHNoX2NlbnRlcl9mb3J3YXJkX29uX2dvYWxzOiAnc2hDZW50ZXJGb3J3YXJkT25Hb2FscycsXG4gICAgc2hfY2VudGVyX2ZvcndhcmRfbWlzc2VzOiAnc2hDZW50ZXJGb3J3YXJkTWlzc2VzJyxcbiAgICBzaF9jZW50ZXJfZm9yd2FyZF9zaG90c19ibG9ja2VkOiAnc2hDZW50ZXJGb3J3YXJkU2hvdHNCbG9ja2VkJyxcbiAgICBwcF9hc3Npc3RzOiAncHBBc3Npc3RzJyxcbiAgICBldl9hc3Npc3RzOiAnZXZBc3Npc3RzJyxcbiAgICBzaF9hc3Npc3RzOiAnc2hBc3Npc3RzJyxcbiAgICBzaG9vdG91dF9hdHRlbXB0czogJ3Nob290b3V0QXR0ZW1wdHMnLFxuICAgIHNob290b3V0X2dvYWxzOiAnc2hvb3RvdXRHb2FscycsXG4gICAgYWZ0ZXJfZ2FtZV9zaG9vdG91dF9hdHRlbXB0czogJ2FmdGVyR2FtZVNob290b3V0QXR0ZW1wdHMnLFxuICAgIGFmdGVyX2dhbWVfc2hvb3RvdXRfZ29hbHM6ICdhZnRlckdhbWVTaG9vdG91dEdvYWxzJyxcbiAgICBibG9ja19zaG90czogJ2Jsb2NrU2hvdHMnLFxuICAgIGZhY2Vfb2ZmX2xvc3NlczogJ2ZhY2VPZmZMb3NzZXMnLFxuICAgIGZhY2Vfb2ZmX3dpbnM6ICdmYWNlT2ZmV2lucycsXG4gICAgcHBfc2F2ZXM6ICdwcFNhdmVzJyxcbiAgICBzaF9zYXZlczogJ3NoU2F2ZXMnLFxuICAgIGV2X3NhdmVzOiAnZXZTYXZlcycsXG4gICAgcHBfY291bnRlcmF0dGFja19zYXZlczogJ3BwQ291bnRlckF0dGFja1NhdmVzJyxcbiAgICBzaF9jb3VudGVyYXR0YWNrX3NhdmVzOiAnc2hDb3VudGVyQXR0YWNrU2F2ZXMnLFxuICAgIGV2X2NvdW50ZXJhdHRhY2tfc2F2ZXM6ICdldkNvdW50ZXJBdHRhY2tTYXZlcycsXG4gICAgcHBfbWFuZXV2ZXJfc2F2ZXM6ICdwcE1hbmV1dmVyU2F2ZXMnLFxuICAgIHNoX21hbmV1dmVyX3NhdmVzOiAnc2hNYW5ldXZlclNhdmVzJyxcbiAgICBldl9tYW5ldXZlcl9zYXZlczogJ2V2TWFuZXV2ZXJTYXZlcycsXG4gICAgcHBfY2VudGVyX2ZvcndhcmRfc2F2ZXM6ICdwcENlbnRlckZvcndhcmRTYXZlcycsXG4gICAgc2hfY2VudGVyX2ZvcndhcmRfc2F2ZXM6ICdzaENlbnRlckZvcndhcmRTYXZlcycsXG4gICAgZXZfY2VudGVyX2ZvcndhcmRfc2F2ZXM6ICdldkNlbnRlckZvcndhcmRTYXZlcycsXG4gICAgcHBfZnJlZV9raWNrX3NhdmVzOiAncHBGcmVlS2lja1NhdmVzJyxcbiAgICBzaF9mcmVlX2tpY2tfc2F2ZXM6ICdzaEZyZWVLaWNrU2F2ZXMnLFxuICAgIGV2X2ZyZWVfa2lja19zYXZlczogJ2V2RnJlZUtpY2tTYXZlcycsXG4gICAgcHBfY29ybmVyX3NhdmVzOiAncHBDb3JuZXJTYXZlcycsXG4gICAgc2hfY29ybmVyX3NhdmVzOiAnc2hDb3JuZXJTYXZlcycsXG4gICAgZXZfY29ybmVyX3NhdmVzOiAnZXZDb3JuZXJTYXZlcycsXG4gICAgcHBfdG90YWxfZ2FtZV9zYXZlczogJ3BwVG90YWxHYW1lU2F2ZXMnLFxuICAgIHNoX3RvdGFsX2dhbWVfc2F2ZXM6ICdzaFRvdGFsR2FtZVNhdmVzJyxcbiAgICBldl90b3RhbF9nYW1lX3NhdmVzOiAnZXZUb3RhbEdhbWVTYXZlcycsXG4gICAgc2hvb3RvdXRfc2F2ZXM6ICdzaG9vdG91dFNhdmVzJyxcbiAgICBhZnRlcl9nYW1lX3Nob290b3V0X3NhdmVzOiAnYWZ0ZXJHYW1lU2hvb3RvdXRTYXZlcycsXG4gICAgcHBfZ29hbHNfYWdhaW5zdDogJ3BwR29hbHNBZ2FpbnN0JyxcbiAgICBzaF9nb2Fsc19hZ2FpbnN0OiAnc2hHb2Fsc0FnYWluc3QnLFxuICAgIGV2X2dvYWxzX2FnYWluc3Q6ICdldkdvYWxzQWdhaW5zdCcsXG4gICAgZ29hbHNfYWdhaW5zdDogJ2dvYWxzQWdhaW5zdCcsXG4gICAgcHBfY291bnRlcmF0dGFja19nb2Fsc19hZ2FpbnN0OiAncHBDb3VudGVyQXR0YWNrR29hbHNBZ2FpbnN0JyxcbiAgICBzaF9jb3VudGVyYXR0YWNrX2dvYWxzX2FnYWluc3Q6ICdzaENvdW50ZXJBdHRhY2tHb2Fsc0FnYWluc3QnLFxuICAgIGV2X2NvdW50ZXJhdHRhY2tfZ29hbHNfYWdhaW5zdDogJ2V2Q291bnRlckF0dGFja0dvYWxzQWdhaW5zdCcsXG4gICAgY291bnRlcmF0dGFja19nb2Fsc19hZ2FpbnN0OiAnY291bnRlckF0dGFja0dvYWxzQWdhaW5zdCcsXG4gICAgcHBfbWFuZXV2ZXJfZ29hbHNfYWdhaW5zdDogJ3BwTWFuZXV2ZXJHb2Fsc0FnYWluc3QnLFxuICAgIHNoX21hbmV1dmVyX2dvYWxzX2FnYWluc3Q6ICdzaE1hbmV1dmVyR29hbHNBZ2FpbnN0JyxcbiAgICBldl9tYW5ldXZlcl9nb2Fsc19hZ2FpbnN0OiAnZXZNYW5ldXZlckdvYWxzQWdhaW5zdCcsXG4gICAgbWFuZXV2ZXJfZ29hbHNfYWdhaW5zdDogJ21hbmV1dmVyR29hbHNBZ2FpbnN0JyxcbiAgICBwcF9jZW50ZXJfZm9yd2FyZF9nb2Fsc19hZ2FpbnN0OiAncHBDZW50ZXJGb3J3YXJkR29hbHNBZ2FpbnN0JyxcbiAgICBzaF9jZW50ZXJfZm9yd2FyZF9nb2Fsc19hZ2FpbnN0OiAnc2hDZW50ZXJGb3J3YXJkR29hbHNBZ2FpbnN0JyxcbiAgICBldl9jZW50ZXJfZm9yd2FyZF9nb2Fsc19hZ2FpbnN0OiAnZXZDZW50ZXJGb3J3YXJkR29hbHNBZ2FpbnN0JyxcbiAgICBjZW50ZXJfZm9yd2FyZF9nb2Fsc19hZ2FpbnN0OiAnY2VudGVyRm9yd2FyZEdvYWxzQWdhaW5zdCcsXG4gICAgcHBfZnJlZV9raWNrX2dvYWxzX2FnYWluc3Q6ICdwcEZyZWVLaWNrR29hbHNBZ2FpbnN0JyxcbiAgICBzaF9mcmVlX2tpY2tfZ29hbHNfYWdhaW5zdDogJ3NoRnJlZUtpY2tHb2Fsc0FnYWluc3QnLFxuICAgIGV2X2ZyZWVfa2lja19nb2Fsc19hZ2FpbnN0OiAnZXZGcmVlS2lja0dvYWxzQWdhaW5zdCcsXG4gICAgZnJlZV9raWNrX2dvYWxzX2FnYWluc3Q6ICdmcmVlS2lja0dvYWxzQWdhaW5zdCcsXG4gICAgcHBfY29ybmVyX2dvYWxzX2FnYWluc3Q6ICdwcENvcm5lckdvYWxzQWdhaW5zdCcsXG4gICAgc2hfY29ybmVyX2dvYWxzX2FnYWluc3Q6ICdzaENvcm5lckdvYWxzQWdhaW5zdCcsXG4gICAgZXZfY29ybmVyX2dvYWxzX2FnYWluc3Q6ICdldkNvcm5lckdvYWxzQWdhaW5zdCcsXG4gICAgY29ybmVyX2dvYWxzX2FnYWluc3Q6ICdjb3JuZXJHb2Fsc0FnYWluc3QnLFxuICAgIHNob290b3V0X2dvYWxzX2FnYWluc3Q6ICdzaG9vdG91dEdvYWxzQWdhaW5zdCcsXG4gICAgYWZ0ZXJfZ2FtZV9zaG9vdG91dF9nb2Fsc19hZ2FpbnN0OiAnYWZ0ZXJHYW1lU2hvb3RvdXRHb2Fsc0FnYWluc3QnLFxuICAgIHNhZmV0eV9yYXRlOiAnc2FmZXR5UmF0ZScsXG4gICAgcGVuYWx0eV9taW51dGVzOiAncGVuYWx0eU1pbnV0ZXMnLFxuICAgIGdhbWVfdGltZTogJ2dhbWVUaW1lJyxcbiAgICBwbHVzX21pbnVzOiAncGx1c01pbnVzJyxcbiAgICBmb3VsczogJ2ZvdWxzJyxcbiAgICBtaW5vcl9wZW5hbHRpZXM6ICdtaW5vclBlbmFsdGllcycsXG4gICAgbWFqb3JfcGVuYWx0aWVzOiAnbWFqb3JQZW5hbHRpZXMnLFxuICAgIG1hdGNoX3BlbmFsdGllczogJ21hdGNoUGVuYWx0aWVzJyxcbiAgICBwZW5hbHR5X2ZvdWxzOiAncGVuYWx0eUZvdWxzJyxcbiAgICB0dXJub3ZlcnM6ICd0dXJub3ZlcnMnLFxuICAgIGF0dGFja19mb3VsczogJ2F0dGFja0ZvdWxzJyxcbiAgICBwZXJzb25hbF9mb3VsczogJ3BlcnNvbmFsRm91bHMnLFxuICAgIGRyYXduX2ZvdWxzOiAnZHJhd25Gb3VscycsXG4gICAgZHJhd25fdHVybm92ZXJzOiAnZHJhd25UdXJub3ZlcnMnLFxuICAgIHllbGxvd19jYXJkczogJ3llbGxvd0NhcmRzJyxcbiAgICByZWRfY2FyZHM6ICdyZWRDYXJkcycsXG4gICAgbG9zc2VzOiAnbG9zc2VzJyxcbiAgICBzdGVhbHM6ICdzdGVhbHMnLFxuICAgIHBwX2ZyZWVfa2lja19nb2FsczogJ3BwRnJlZUtpY2tHb2FscycsXG4gICAgcHBfZnJlZV9raWNrX29uX2dvYWxzOiAncHBGcmVlS2lja09uR29hbHMnLFxuICAgIHBwX2ZyZWVfa2lja19taXNzZXM6ICdwcEZyZWVLaWNrTWlzc2VzJyxcbiAgICBwcF9mcmVlX2tpY2tfc2hvdHNfYmxvY2tlZDogJ3BwRnJlZUtpY2tTaG90c0Jsb2NrZWQnLFxuICAgIHNoX2ZyZWVfa2lja19nb2FsczogJ3NoRnJlZUtpY2tHb2FscycsXG4gICAgc2hfZnJlZV9raWNrX29uX2dvYWxzOiAnc2hGcmVlS2lja09uR29hbHMnLFxuICAgIHNoX2ZyZWVfa2lja19taXNzZXM6ICdzaEZyZWVLaWNrTWlzc2VzJyxcbiAgICBzaF9mcmVlX2tpY2tfc2hvdHNfYmxvY2tlZDogJ3NoRnJlZUtpY2tTaG90c0Jsb2NrZWQnLFxuICAgIGV2X2ZyZWVfa2lja19nb2FsczogJ2V2RnJlZUtpY2tHb2FscycsXG4gICAgZXZfZnJlZV9raWNrX29uX2dvYWxzOiAnZXZGcmVlS2lja09uR29hbHMnLFxuICAgIGV2X2ZyZWVfa2lja19taXNzZXM6ICdldkZyZWVLaWNrTWlzc2VzJyxcbiAgICBldl9mcmVlX2tpY2tfc2hvdHNfYmxvY2tlZDogJ2V2RnJlZUtpY2tTaG90c0Jsb2NrZWQnLFxuICAgIGZyZWVfa2lja19wYXNzZXM6ICdmcmVlS2lja1Bhc3NlcycsXG4gICAgZnJlZV9raWNrX3NlbGZzOiAnZnJlZUtpY2tTZWxmcycsXG4gICAgcHBfY29ybmVyX2dvYWxzOiAncHBDb3JuZXJHb2FscycsXG4gICAgcHBfY29ybmVyX29uX2dvYWxzOiAncHBDb3JuZXJPbkdvYWxzJyxcbiAgICBwcF9jb3JuZXJfbWlzc2VzOiAncHBDb3JuZXJNaXNzZXMnLFxuICAgIHBwX2Nvcm5lcl9zaG90c19ibG9ja2VkOiAncHBDb3JuZXJTaG90c0Jsb2NrZWQnLFxuICAgIHNoX2Nvcm5lcl9nb2FsczogJ3NoQ29ybmVyR29hbHMnLFxuICAgIHNoX2Nvcm5lcl9vbl9nb2FsczogJ3NoQ29ybmVyT25Hb2FscycsXG4gICAgc2hfY29ybmVyX21pc3NlczogJ3NoQ29ybmVyTWlzc2VzJyxcbiAgICBzaF9jb3JuZXJfc2hvdHNfYmxvY2tlZDogJ3NoQ29ybmVyU2hvdHNCbG9ja2VkJyxcbiAgICBldl9jb3JuZXJfZ29hbHM6ICdldkNvcm5lckdvYWxzJyxcbiAgICBldl9jb3JuZXJfb25fZ29hbHM6ICdldkNvcm5lck9uR29hbHMnLFxuICAgIGV2X2Nvcm5lcl9taXNzZXM6ICdldkNvcm5lck1pc3NlcycsXG4gICAgZXZfY29ybmVyX3Nob3RzX2Jsb2NrZWQ6ICdldkNvcm5lclNob3RzQmxvY2tlZCcsXG4gICAgY29ybmVyX3Bhc3NlczogJ2Nvcm5lclBhc3NlcycsXG4gICAgY29ybmVyX3NlbGZzOiAnY29ybmVyU2VsZnMnLFxuICAgIHRhY2tsZXM6ICd0YWNrbGVzJyxcbiAgICBwbGF5ZXJfZWZmaWNpZW5jeTogJ3BsYXllckVmZmljaWVuY3knXG4gIH0sXG4gIHJlbGF0aW9uOiB7XG4gICAgdXBkYXRlZEF0OiBEYXRlVGltZUZpZWxkLFxuICB9XG59KVxuZXhwb3J0IGNsYXNzIFdhdGVycG9sb0dhbWVTdGF0aXN0aWMgZXh0ZW5kcyBCYXNlTW9kZWwgaW1wbGVtZW50cyBHYW1lU3RhdGlzdGljQmFzZSB7XG4gIGdhbWVVc2VySWQ6IG51bWJlcjtcbiAgcG9pbnRzOiBudW1iZXI7XG4gIHBwU2hvdE1pc3NlczogbnVtYmVyO1xuICBwcFNob3RzT25Hb2FsOiBudW1iZXI7XG4gIHBwU2hvdHNCbG9ja2VkOiBudW1iZXI7XG4gIGV2U2hvdE1pc3NlczogbnVtYmVyO1xuICBldlNob3RzT25Hb2FsOiBudW1iZXI7XG4gIGV2U2hvdHNCbG9ja2VkOiBudW1iZXI7XG4gIHNoU2hvdE1pc3NlczogbnVtYmVyO1xuICBzaFNob3RzT25Hb2FsOiBudW1iZXI7XG4gIHNoU2hvdHNCbG9ja2VkOiBudW1iZXI7XG4gIHBwVG90YWxTaG90c09uR29hbDogbnVtYmVyO1xuICBldlRvdGFsU2hvdHNPbkdvYWw6IG51bWJlcjtcbiAgc2hUb3RhbFNob3RzT25Hb2FsOiBudW1iZXI7XG4gIHBwR29hbHM6IG51bWJlcjtcbiAgZXZHb2FsczogbnVtYmVyO1xuICBzaEdvYWxzOiBudW1iZXI7XG4gIHBwQ291bnRlckF0dGFja0dvYWxzOiBudW1iZXI7XG4gIHBwQ291bnRlckF0dGFja09uR29hbHM6IG51bWJlcjtcbiAgcHBDb3VudGVyQXR0YWNrTWlzc2VzOiBudW1iZXI7XG4gIHBwQ291bnRlckF0dGFja1Nob3RzQmxvY2tlZDogbnVtYmVyO1xuICBldkNvdW50ZXJBdHRhY2tHb2FsczogbnVtYmVyO1xuICBldkNvdW50ZXJBdHRhY2tPbkdvYWxzOiBudW1iZXI7XG4gIGV2Q291bnRlckF0dGFja01pc3NlczogbnVtYmVyO1xuICBldkNvdW50ZXJBdHRhY2tTaG90c0Jsb2NrZWQ6IG51bWJlcjtcbiAgc2hDb3VudGVyQXR0YWNrR29hbHM6IG51bWJlcjtcbiAgc2hDb3VudGVyQXR0YWNrT25Hb2FsczogbnVtYmVyO1xuICBzaENvdW50ZXJBdHRhY2tNaXNzZXM6IG51bWJlcjtcbiAgc2hDb3VudGVyQXR0YWNrU2hvdHNCbG9ja2VkOiBudW1iZXI7XG4gIHBwTWFuZXV2ZXJHb2FsczogbnVtYmVyO1xuICBwcE1hbmV1dmVyT25Hb2FsczogbnVtYmVyO1xuICBwcE1hbmV1dmVyTWlzc2VzOiBudW1iZXI7XG4gIHBwTWFuZXV2ZXJTaG90c0Jsb2NrZWQ6IG51bWJlcjtcbiAgZXZNYW5ldXZlckdvYWxzOiBudW1iZXI7XG4gIGV2TWFuZXV2ZXJPbkdvYWxzOiBudW1iZXI7XG4gIGV2TWFuZXV2ZXJNaXNzZXM6IG51bWJlcjtcbiAgZXZNYW5ldXZlclNob3RzQmxvY2tlZDogbnVtYmVyO1xuICBzaE1hbmV1dmVyR29hbHM6IG51bWJlcjtcbiAgc2hNYW5ldXZlck9uR29hbHM6IG51bWJlcjtcbiAgc2hNYW5ldXZlck1pc3NlczogbnVtYmVyO1xuICBzaE1hbmV1dmVyU2hvdHNCbG9ja2VkOiBudW1iZXI7XG4gIHBwQ2VudGVyRm9yd2FyZEdvYWxzOiBudW1iZXI7XG4gIHBwQ2VudGVyRm9yd2FyZE9uR29hbHM6IG51bWJlcjtcbiAgcHBDZW50ZXJGb3J3YXJkTWlzc2VzOiBudW1iZXI7XG4gIHBwQ2VudGVyRm9yd2FyZFNob3RzQmxvY2tlZDogbnVtYmVyO1xuICBldkNlbnRlckZvcndhcmRHb2FsczogbnVtYmVyO1xuICBldkNlbnRlckZvcndhcmRPbkdvYWxzOiBudW1iZXI7XG4gIGV2Q2VudGVyRm9yd2FyZE1pc3NlczogbnVtYmVyO1xuICBldkNlbnRlckZvcndhcmRTaG90c0Jsb2NrZWQ6IG51bWJlcjtcbiAgc2hDZW50ZXJGb3J3YXJkR29hbHM6IG51bWJlcjtcbiAgc2hDZW50ZXJGb3J3YXJkT25Hb2FsczogbnVtYmVyO1xuICBzaENlbnRlckZvcndhcmRNaXNzZXM6IG51bWJlcjtcbiAgc2hDZW50ZXJGb3J3YXJkU2hvdHNCbG9ja2VkOiBudW1iZXI7XG4gIHBwQXNzaXN0czogbnVtYmVyO1xuICBldkFzc2lzdHM6IG51bWJlcjtcbiAgc2hBc3Npc3RzOiBudW1iZXI7XG4gIHNob290b3V0QXR0ZW1wdHM6IG51bWJlcjtcbiAgc2hvb3RvdXRHb2FsczogbnVtYmVyO1xuICBhZnRlckdhbWVTaG9vdG91dEF0dGVtcHRzOiBudW1iZXI7XG4gIGFmdGVyR2FtZVNob290b3V0R29hbHM6IG51bWJlcjtcbiAgYmxvY2tTaG90czogbnVtYmVyO1xuICBmYWNlT2ZmTG9zc2VzOiBudW1iZXI7XG4gIGZhY2VPZmZXaW5zOiBudW1iZXI7XG4gIHBwU2F2ZXM6IG51bWJlcjtcbiAgc2hTYXZlczogbnVtYmVyO1xuICBldlNhdmVzOiBudW1iZXI7XG4gIHBwQ291bnRlckF0dGFja1NhdmVzOiBudW1iZXI7XG4gIHNoQ291bnRlckF0dGFja1NhdmVzOiBudW1iZXI7XG4gIGV2Q291bnRlckF0dGFja1NhdmVzOiBudW1iZXI7XG4gIHBwTWFuZXV2ZXJTYXZlczogbnVtYmVyO1xuICBzaE1hbmV1dmVyU2F2ZXM6IG51bWJlcjtcbiAgZXZNYW5ldXZlclNhdmVzOiBudW1iZXI7XG4gIHBwQ2VudGVyRm9yd2FyZFNhdmVzOiBudW1iZXI7XG4gIHNoQ2VudGVyRm9yd2FyZFNhdmVzOiBudW1iZXI7XG4gIGV2Q2VudGVyRm9yd2FyZFNhdmVzOiBudW1iZXI7XG4gIHBwRnJlZUtpY2tTYXZlczogbnVtYmVyO1xuICBzaEZyZWVLaWNrU2F2ZXM6IG51bWJlcjtcbiAgZXZGcmVlS2lja1NhdmVzOiBudW1iZXI7XG4gIHBwQ29ybmVyU2F2ZXM6IG51bWJlcjtcbiAgc2hDb3JuZXJTYXZlczogbnVtYmVyO1xuICBldkNvcm5lclNhdmVzOiBudW1iZXI7XG4gIHBwVG90YWxHYW1lU2F2ZXM6IG51bWJlcjtcbiAgc2hUb3RhbEdhbWVTYXZlczogbnVtYmVyO1xuICBldlRvdGFsR2FtZVNhdmVzOiBudW1iZXI7XG4gIHNob290b3V0U2F2ZXM6IG51bWJlcjtcbiAgYWZ0ZXJHYW1lU2hvb3RvdXRTYXZlczogbnVtYmVyO1xuICBwcEdvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBzaEdvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBldkdvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBnb2Fsc0FnYWluc3Q6IG51bWJlcjtcbiAgcHBDb3VudGVyQXR0YWNrR29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIHNoQ291bnRlckF0dGFja0dvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBldkNvdW50ZXJBdHRhY2tHb2Fsc0FnYWluc3Q6IG51bWJlcjtcbiAgY291bnRlckF0dGFja0dvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBwcE1hbmV1dmVyR29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIHNoTWFuZXV2ZXJHb2Fsc0FnYWluc3Q6IG51bWJlcjtcbiAgZXZNYW5ldXZlckdvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBtYW5ldXZlckdvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBwcENlbnRlckZvcndhcmRHb2Fsc0FnYWluc3Q6IG51bWJlcjtcbiAgc2hDZW50ZXJGb3J3YXJkR29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIGV2Q2VudGVyRm9yd2FyZEdvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBjZW50ZXJGb3J3YXJkR29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIHBwRnJlZUtpY2tHb2Fsc0FnYWluc3Q6IG51bWJlcjtcbiAgc2hGcmVlS2lja0dvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBldkZyZWVLaWNrR29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIGZyZWVLaWNrR29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIHBwQ29ybmVyR29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIHNoQ29ybmVyR29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIGV2Q29ybmVyR29hbHNBZ2FpbnN0OiBudW1iZXI7XG4gIGNvcm5lckdvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBzaG9vdG91dEdvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBhZnRlckdhbWVTaG9vdG91dEdvYWxzQWdhaW5zdDogbnVtYmVyO1xuICBzYWZldHlSYXRlOiBudW1iZXI7XG4gIHBlbmFsdHlNaW51dGVzOiBudW1iZXI7XG4gIGdhbWVUaW1lOiBudW1iZXI7XG4gIHBsdXNNaW51czogbnVtYmVyO1xuICBmb3VsczogbnVtYmVyO1xuICBtaW5vclBlbmFsdGllczogbnVtYmVyO1xuICBtYWpvclBlbmFsdGllczogbnVtYmVyO1xuICBtYXRjaFBlbmFsdGllczogbnVtYmVyO1xuICBwZW5hbHR5Rm91bHM6IG51bWJlcjtcbiAgdHVybm92ZXJzOiBudW1iZXI7XG4gIGF0dGFja0ZvdWxzOiBudW1iZXI7XG4gIHBlcnNvbmFsRm91bHM6IG51bWJlcjtcbiAgZHJhd25Gb3VsczogbnVtYmVyO1xuICBkcmF3blR1cm5vdmVyczogbnVtYmVyO1xuICB5ZWxsb3dDYXJkczogbnVtYmVyO1xuICByZWRDYXJkczogbnVtYmVyO1xuICBsb3NzZXM6IG51bWJlcjtcbiAgc3RlYWxzOiBudW1iZXI7XG4gIHBwRnJlZUtpY2tHb2FsczogbnVtYmVyO1xuICBwcEZyZWVLaWNrT25Hb2FsczogbnVtYmVyO1xuICBwcEZyZWVLaWNrTWlzc2VzOiBudW1iZXI7XG4gIHBwRnJlZUtpY2tTaG90c0Jsb2NrZWQ6IG51bWJlcjtcbiAgc2hGcmVlS2lja0dvYWxzOiBudW1iZXI7XG4gIHNoRnJlZUtpY2tPbkdvYWxzOiBudW1iZXI7XG4gIHNoRnJlZUtpY2tNaXNzZXM6IG51bWJlcjtcbiAgc2hGcmVlS2lja1Nob3RzQmxvY2tlZDogbnVtYmVyO1xuICBldkZyZWVLaWNrR29hbHM6IG51bWJlcjtcbiAgZXZGcmVlS2lja09uR29hbHM6IG51bWJlcjtcbiAgZXZGcmVlS2lja01pc3NlczogbnVtYmVyO1xuICBldkZyZWVLaWNrU2hvdHNCbG9ja2VkOiBudW1iZXI7XG4gIGZyZWVLaWNrUGFzc2VzOiBudW1iZXI7XG4gIGZyZWVLaWNrU2VsZnM6IG51bWJlcjtcbiAgcHBDb3JuZXJHb2FsczogbnVtYmVyO1xuICBwcENvcm5lck9uR29hbHM6IG51bWJlcjtcbiAgcHBDb3JuZXJNaXNzZXM6IG51bWJlcjtcbiAgcHBDb3JuZXJTaG90c0Jsb2NrZWQ6IG51bWJlcjtcbiAgc2hDb3JuZXJHb2FsczogbnVtYmVyO1xuICBzaENvcm5lck9uR29hbHM6IG51bWJlcjtcbiAgc2hDb3JuZXJNaXNzZXM6IG51bWJlcjtcbiAgc2hDb3JuZXJTaG90c0Jsb2NrZWQ6IG51bWJlcjtcbiAgZXZDb3JuZXJHb2FsczogbnVtYmVyO1xuICBldkNvcm5lck9uR29hbHM6IG51bWJlcjtcbiAgZXZDb3JuZXJNaXNzZXM6IG51bWJlcjtcbiAgZXZDb3JuZXJTaG90c0Jsb2NrZWQ6IG51bWJlcjtcbiAgY29ybmVyUGFzc2VzOiBudW1iZXI7XG4gIGNvcm5lclNlbGZzOiBudW1iZXI7XG4gIHRhY2tsZXM6IG51bWJlcjtcbiAgcGxheWVyRWZmaWNpZW5jeTogbnVtYmVyO1xuICB1cGRhdGVkQXQ6IERhdGU7XG5cbiAgZ2V0IGlkKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2FtZVVzZXJJZDtcbiAgfVxuXG4gIGdldCBnYW1lTWludXRlcygpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLmZsb29yKHRoaXMuZ2FtZVRpbWUgLyA2MCk7XG4gIH1cblxuICBnZXQgcGVuYWx0eVRpbWUoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMucGVuYWx0eU1pbnV0ZXMpIHtcbiAgICAgIHJldHVybiAnMDA6MDAnO1xuICAgIH1cbiAgICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcih0aGlzLnBlbmFsdHlNaW51dGVzIC8gNjApO1xuICAgIGNvbnN0IHNlY29uZHMgPSBNYXRoLmZsb29yKHRoaXMucGVuYWx0eU1pbnV0ZXMgLSBtaW51dGVzICogNjApO1xuICAgIHJldHVybiBgJHttaW51dGVzIDwgMTAgPyAwIDogJyd9JHttaW51dGVzfToke3NlY29uZHMgPCAxMCA/IDAgOiAnJ30ke3NlY29uZHN9YDtcbiAgfVxuXG4gIGdldCBhc3Npc3RzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwQXNzaXN0cyB8fCAwKSArICh0aGlzLnNoQXNzaXN0cyB8fCAwKSAgKyAodGhpcy5ldkFzc2lzdHMgfHwgMCk7XG4gIH1cblxuICBnZXQgdG90YWxDb3VudGVyQXR0YWNrR29hbHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBDb3VudGVyQXR0YWNrR29hbHMgfHwgMCkgKyAodGhpcy5ldkNvdW50ZXJBdHRhY2tHb2FscyB8fCAwKSAgKyAodGhpcy5zaENvdW50ZXJBdHRhY2tHb2FscyB8fCAwKTtcbiAgfVxuXG4gIGdldCBwcENvdW50ZXJBdHRhY2tTaG90cygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcENvdW50ZXJBdHRhY2tPbkdvYWxzIHx8IDApICsgKHRoaXMucHBDb3VudGVyQXR0YWNrTWlzc2VzIHx8IDApICsgKHRoaXMucHBDb3VudGVyQXR0YWNrU2hvdHNCbG9ja2VkIHx8IDApO1xuICB9XG5cbiAgZ2V0IHNoQ291bnRlckF0dGFja1Nob3RzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnNoQ291bnRlckF0dGFja09uR29hbHMgfHwgMCkgKyAodGhpcy5zaENvdW50ZXJBdHRhY2tNaXNzZXMgfHwgMCkgKyAodGhpcy5zaENvdW50ZXJBdHRhY2tTaG90c0Jsb2NrZWQgfHwgMCk7XG4gIH1cblxuICBnZXQgZXZDb3VudGVyQXR0YWNrU2hvdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuZXZDb3VudGVyQXR0YWNrT25Hb2FscyB8fCAwKSArICh0aGlzLmV2Q291bnRlckF0dGFja01pc3NlcyB8fCAwKSArICh0aGlzLmV2Q291bnRlckF0dGFja1Nob3RzQmxvY2tlZCB8fCAwKTtcbiAgfVxuXG4gIGdldCBjb3VudGVyQXR0YWNrU2hvdE1pc3NlcygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcENvdW50ZXJBdHRhY2tNaXNzZXMgfHwgMCkgKyAodGhpcy5zaENvdW50ZXJBdHRhY2tNaXNzZXMgfHwgMCkgKyAodGhpcy5ldkNvdW50ZXJBdHRhY2tNaXNzZXMgfHwgMCk7XG4gIH1cblxuICBnZXQgY291bnRlckF0dGFja1Nob3RPbkdvYWxzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwQ291bnRlckF0dGFja09uR29hbHMgfHwgMCkgKyAodGhpcy5zaENvdW50ZXJBdHRhY2tPbkdvYWxzIHx8IDApICsgKHRoaXMuZXZDb3VudGVyQXR0YWNrT25Hb2FscyB8fCAwKTtcbiAgfVxuXG4gIGdldCBjb3VudGVyQXR0YWNrU2hvdHNCbG9ja2VkKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwQ291bnRlckF0dGFja1Nob3RzQmxvY2tlZCB8fCAwKSArICh0aGlzLnNoQ291bnRlckF0dGFja1Nob3RzQmxvY2tlZCB8fCAwKSArICh0aGlzLmV2Q291bnRlckF0dGFja1Nob3RzQmxvY2tlZCB8fCAwKTtcbiAgfVxuXG4gIGdldCBjb3VudGVyQXR0YWNrU2hvdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jb3VudGVyQXR0YWNrU2hvdE1pc3NlcyArIHRoaXMuY291bnRlckF0dGFja1Nob3RPbkdvYWxzICsgdGhpcy5jb3VudGVyQXR0YWNrU2hvdHNCbG9ja2VkO1xuICB9XG5cbiAgZ2V0IGNvdW50ZXJBdHRhY2tHb2Fsc1BlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMudG90YWxDb3VudGVyQXR0YWNrR29hbHMgfHwgIXRoaXMuY291bnRlckF0dGFja1Nob3RzKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoMTAwMCAqIHRoaXMudG90YWxDb3VudGVyQXR0YWNrR29hbHMgLyB0aGlzLmNvdW50ZXJBdHRhY2tTaG90cykgLyAxMDtcbiAgfVxuXG4gIGdldCB0b3RhbE1hbmV1dmVyR29hbHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBNYW5ldXZlckdvYWxzIHx8IDApICsgKHRoaXMuc2hNYW5ldXZlckdvYWxzIHx8IDApICsgKHRoaXMuZXZNYW5ldXZlckdvYWxzIHx8IDApO1xuICB9XG5cbiAgZ2V0IHBwTWFuZXV2ZXJTaG90cygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcE1hbmV1dmVyT25Hb2FscyB8fCAwKSArICh0aGlzLnBwTWFuZXV2ZXJNaXNzZXMgfHwgMCkgKyAodGhpcy5wcE1hbmV1dmVyU2hvdHNCbG9ja2VkIHx8IDApO1xuICB9XG5cbiAgZ2V0IHNoTWFuZXV2ZXJTaG90cygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5zaE1hbmV1dmVyT25Hb2FscyB8fCAwKSArICh0aGlzLnNoTWFuZXV2ZXJNaXNzZXMgfHwgMCkgKyAodGhpcy5zaE1hbmV1dmVyU2hvdHNCbG9ja2VkIHx8IDApO1xuICB9XG5cbiAgZ2V0IGV2TWFuZXV2ZXJTaG90cygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5ldk1hbmV1dmVyT25Hb2FscyB8fCAwKSArICh0aGlzLmV2TWFuZXV2ZXJNaXNzZXMgfHwgMCkgKyAodGhpcy5ldk1hbmV1dmVyU2hvdHNCbG9ja2VkIHx8IDApO1xuICB9XG5cbiAgZ2V0IG1hbmV1dmVyU2hvdE1pc3NlcygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcE1hbmV1dmVyTWlzc2VzIHx8IDApICsgKHRoaXMuc2hNYW5ldXZlck1pc3NlcyB8fCAwKSArICAodGhpcy5ldk1hbmV1dmVyTWlzc2VzIHx8IDApO1xuICB9XG5cbiAgZ2V0IG1hbmV1dmVyU2hvdE9uR29hbHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBNYW5ldXZlck9uR29hbHMgfHwgMCkgKyAodGhpcy5zaE1hbmV1dmVyT25Hb2FscyB8fCAwKSArICAodGhpcy5ldk1hbmV1dmVyT25Hb2FscyB8fCAwKTtcbiAgfVxuXG4gIGdldCBtYW5ldXZlclNob3RzQmxvY2tlZCgpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcE1hbmV1dmVyU2hvdHNCbG9ja2VkIHx8IDApICsgKHRoaXMuc2hNYW5ldXZlclNob3RzQmxvY2tlZCB8fCAwKSArICAodGhpcy5ldk1hbmV1dmVyU2hvdHNCbG9ja2VkIHx8IDApO1xuICB9XG5cbiAgZ2V0IG1hbmV1dmVyU2hvdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5tYW5ldXZlclNob3RNaXNzZXMgKyB0aGlzLm1hbmV1dmVyU2hvdE9uR29hbHMgKyB0aGlzLm1hbmV1dmVyU2hvdHNCbG9ja2VkO1xuICB9XG5cbiAgZ2V0IG1hbmV1dmVyR29hbHNQZXJjZW50KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnRvdGFsTWFuZXV2ZXJHb2FscyB8fCAhdGhpcy5tYW5ldXZlclNob3RzKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoMTAwMCAqIHRoaXMudG90YWxNYW5ldXZlckdvYWxzIC8gdGhpcy5tYW5ldXZlclNob3RzKSAvIDEwO1xuICB9XG5cbiAgZ2V0IHRvdGFsQ2VudGVyRm9yd2FyZEdvYWxzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwQ2VudGVyRm9yd2FyZEdvYWxzIHx8IDApICsgKHRoaXMuc2hDZW50ZXJGb3J3YXJkR29hbHMgfHwgMCkgKyAgKHRoaXMuZXZDZW50ZXJGb3J3YXJkR29hbHMgfHwgMCk7XG4gIH1cblxuICBnZXQgcHBDZW50ZXJGb3J3YXJkU2hvdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBDZW50ZXJGb3J3YXJkT25Hb2FscyB8fCAwKSArICh0aGlzLnBwQ2VudGVyRm9yd2FyZE1pc3NlcyB8fCAwKSArICh0aGlzLnBwQ2VudGVyRm9yd2FyZFNob3RzQmxvY2tlZCB8fCAwKTtcbiAgfVxuXG4gIGdldCBzaENlbnRlckZvcndhcmRTaG90cygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5zaENlbnRlckZvcndhcmRPbkdvYWxzIHx8IDApICsgKHRoaXMuc2hDZW50ZXJGb3J3YXJkTWlzc2VzIHx8IDApICsgKHRoaXMuc2hDZW50ZXJGb3J3YXJkU2hvdHNCbG9ja2VkIHx8IDApO1xuICB9XG5cbiAgZ2V0IGV2Q2VudGVyRm9yd2FyZFNob3RzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLmV2Q2VudGVyRm9yd2FyZE9uR29hbHMgfHwgMCkgKyAodGhpcy5ldkNlbnRlckZvcndhcmRNaXNzZXMgfHwgMCkgKyAodGhpcy5ldkNlbnRlckZvcndhcmRTaG90c0Jsb2NrZWQgfHwgMCk7XG4gIH1cblxuICBnZXQgY2VudGVyRm9yd2FyZFNob3RNaXNzZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBDZW50ZXJGb3J3YXJkTWlzc2VzIHx8IDApICsgKHRoaXMuc2hDZW50ZXJGb3J3YXJkTWlzc2VzIHx8IDApICsgKHRoaXMuZXZDZW50ZXJGb3J3YXJkTWlzc2VzIHx8IDApO1xuICB9XG5cbiAgZ2V0IGNlbnRlckZvcndhcmRTaG90T25Hb2FscygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcENlbnRlckZvcndhcmRPbkdvYWxzIHx8IDApICsgKHRoaXMuc2hDZW50ZXJGb3J3YXJkT25Hb2FscyB8fCAwKSArICh0aGlzLmV2Q2VudGVyRm9yd2FyZE9uR29hbHMgfHwgMCk7XG4gIH1cblxuICBnZXQgY2VudGVyRm9yd2FyZFNob3RzQmxvY2tlZCgpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcENlbnRlckZvcndhcmRTaG90c0Jsb2NrZWQgfHwgMCkgKyAodGhpcy5zaENlbnRlckZvcndhcmRTaG90c0Jsb2NrZWQgfHwgMCkgKyAodGhpcy5ldkNlbnRlckZvcndhcmRTaG90c0Jsb2NrZWQgfHwgMCk7XG4gIH1cblxuICBnZXQgY2VudGVyRm9yd2FyZFNob3RzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY2VudGVyRm9yd2FyZFNob3RNaXNzZXMgKyB0aGlzLmNlbnRlckZvcndhcmRTaG90T25Hb2FscyArIHRoaXMuY2VudGVyRm9yd2FyZFNob3RzQmxvY2tlZDtcbiAgfVxuXG4gIGdldCBjZW50ZXJGb3J3YXJkR29hbHNQZXJjZW50KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnRvdGFsQ2VudGVyRm9yd2FyZEdvYWxzIHx8ICF0aGlzLmNlbnRlckZvcndhcmRTaG90cykge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJvdW5kKDEwMDAgKiB0aGlzLnRvdGFsQ2VudGVyRm9yd2FyZEdvYWxzIC8gdGhpcy5jZW50ZXJGb3J3YXJkU2hvdHMpIC8gMTA7XG4gIH1cblxuICBnZXQgcHBTaG90cygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcFNob3RNaXNzZXMgfHwgMCkgKyAodGhpcy5wcFNob3RzT25Hb2FsIHx8IDApICsgKHRoaXMucHBTaG90c0Jsb2NrZWQgfHwgMCkgK1xuICAgICAgKHRoaXMucHBGcmVlS2lja01pc3NlcyB8fCAwKSArICh0aGlzLnBwRnJlZUtpY2tPbkdvYWxzIHx8IDApICsgKHRoaXMucHBGcmVlS2lja1Nob3RzQmxvY2tlZCB8fCAwKSArXG4gICAgICAodGhpcy5wcENvcm5lck1pc3NlcyB8fCAwKSArICh0aGlzLnBwQ29ybmVyT25Hb2FscyB8fCAwKSArICh0aGlzLnBwQ29ybmVyU2hvdHNCbG9ja2VkIHx8IDApICtcbiAgICAgIHRoaXMucHBDb3VudGVyQXR0YWNrU2hvdHMgKyB0aGlzLnBwTWFuZXV2ZXJTaG90cyArIHRoaXMucHBDZW50ZXJGb3J3YXJkU2hvdHM7XG4gIH1cblxuICBnZXQgZXZTaG90cygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5ldlNob3RNaXNzZXMgfHwgMCkgKyAodGhpcy5ldlNob3RzT25Hb2FsIHx8IDApICsgKHRoaXMuZXZTaG90c0Jsb2NrZWQgfHwgMCkgK1xuICAgICAgKHRoaXMuZXZGcmVlS2lja01pc3NlcyB8fCAwKSArICh0aGlzLmV2RnJlZUtpY2tPbkdvYWxzIHx8IDApICsgKHRoaXMuZXZGcmVlS2lja1Nob3RzQmxvY2tlZCB8fCAwKSArXG4gICAgICAodGhpcy5ldkNvcm5lck1pc3NlcyB8fCAwKSArICh0aGlzLmV2Q29ybmVyT25Hb2FscyB8fCAwKSArICh0aGlzLmV2Q29ybmVyU2hvdHNCbG9ja2VkIHx8IDApICArXG4gICAgICB0aGlzLmV2Q291bnRlckF0dGFja1Nob3RzICsgdGhpcy5ldk1hbmV1dmVyU2hvdHMgKyB0aGlzLmV2Q2VudGVyRm9yd2FyZFNob3RzO1xuICB9XG5cbiAgZ2V0IHNoU2hvdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuc2hTaG90TWlzc2VzIHx8IDApICsgKHRoaXMuc2hTaG90c09uR29hbCB8fCAwKSArICh0aGlzLnNoU2hvdHNCbG9ja2VkIHx8IDApICtcbiAgICAgICh0aGlzLnNoRnJlZUtpY2tNaXNzZXMgfHwgMCkgKyAodGhpcy5zaEZyZWVLaWNrT25Hb2FscyB8fCAwKSArICh0aGlzLnNoRnJlZUtpY2tTaG90c0Jsb2NrZWQgfHwgMCkgK1xuICAgICAgKHRoaXMuc2hDb3JuZXJNaXNzZXMgfHwgMCkgKyAodGhpcy5zaENvcm5lck9uR29hbHMgfHwgMCkgKyAodGhpcy5zaENvcm5lclNob3RzQmxvY2tlZCB8fCAwKSArXG4gICAgICB0aGlzLnNoQ291bnRlckF0dGFja1Nob3RzICsgdGhpcy5zaE1hbmV1dmVyU2hvdHMgKyB0aGlzLnNoQ2VudGVyRm9yd2FyZFNob3RzO1xuICB9XG5cbiAgZ2V0IHRvdGFsU2hHb2FscygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5zaEdvYWxzIHx8IDApICsgKHRoaXMuc2hGcmVlS2lja0dvYWxzIHx8IDApICsgKHRoaXMuc2hDb3JuZXJHb2FscyB8fCAwKSArXG4gICAgICAodGhpcy5zaENvdW50ZXJBdHRhY2tHb2FscyB8fCAwKSArICh0aGlzLnNoTWFuZXV2ZXJHb2FscyB8fCAwKSArICh0aGlzLnNoQ2VudGVyRm9yd2FyZEdvYWxzIHx8IDApO1xuICB9XG5cbiAgZ2V0IHRvdGFsRXZHb2FscygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5ldkdvYWxzIHx8IDApICsgKHRoaXMuZXZGcmVlS2lja0dvYWxzIHx8IDApICsgKHRoaXMuZXZDb3JuZXJHb2FscyB8fCAwKSArXG4gICAgICAodGhpcy5ldkNvdW50ZXJBdHRhY2tHb2FscyB8fCAwKSArICh0aGlzLmV2TWFuZXV2ZXJHb2FscyB8fCAwKSArICh0aGlzLmV2Q2VudGVyRm9yd2FyZEdvYWxzIHx8IDApO1xuICB9XG5cbiAgZ2V0IHRvdGFsUHBHb2FscygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcEdvYWxzIHx8IDApICsgKHRoaXMucHBGcmVlS2lja0dvYWxzIHx8IDApICsgKHRoaXMucHBDb3JuZXJHb2FscyB8fCAwKSArXG4gICAgICAodGhpcy5wcENvdW50ZXJBdHRhY2tHb2FscyB8fCAwKSArICh0aGlzLnBwTWFuZXV2ZXJHb2FscyB8fCAwKSArICh0aGlzLnBwQ2VudGVyRm9yd2FyZEdvYWxzIHx8IDApO1xuICB9XG5cbiAgZ2V0IGdvYWxzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudG90YWxTaEdvYWxzICsgdGhpcy50b3RhbEV2R29hbHMgKyB0aGlzLnRvdGFsUHBHb2FscztcbiAgfVxuXG4gIGdldCB0b3RhbEdvYWxzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZ29hbHMgKyAodGhpcy5zaG9vdG91dEdvYWxzIHx8IDApO1xuICB9XG5cbiAgZ2V0IHNob290b3V0U2hvdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuc2hvb3RvdXRHb2FscyB8fCAwKSArICh0aGlzLnNob290b3V0QXR0ZW1wdHMgfHwgMCk7XG4gIH1cblxuICBnZXQgaW5HYW1lU2hvdE1pc3NlcygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcFNob3RNaXNzZXMgfHwgMCkgKyAodGhpcy5ldlNob3RNaXNzZXMgfHwgMCkgKyAodGhpcy5zaFNob3RNaXNzZXMgfHwgMCkgK1xuICAgICAgdGhpcy5jb3VudGVyQXR0YWNrU2hvdE1pc3NlcyArIHRoaXMubWFuZXV2ZXJTaG90TWlzc2VzICsgdGhpcy5jZW50ZXJGb3J3YXJkU2hvdE1pc3NlcztcbiAgfVxuXG4gIGdldCBzaG90TWlzc2VzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwRnJlZUtpY2tNaXNzZXMgfHwgMCkgKyAodGhpcy5ldkZyZWVLaWNrTWlzc2VzIHx8IDApICsgKHRoaXMuc2hGcmVlS2lja01pc3NlcyB8fCAwKSArXG4gICAgICAodGhpcy5wcENvcm5lck1pc3NlcyB8fCAwKSArICh0aGlzLmV2Q29ybmVyTWlzc2VzIHx8IDApICsgKHRoaXMuc2hDb3JuZXJNaXNzZXMgfHwgMCkgK1xuICAgICAgdGhpcy5pbkdhbWVTaG90TWlzc2VzO1xuICB9XG5cbiAgZ2V0IHRvdGFsUHBTaG90TWlzc2VzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwU2hvdE1pc3NlcyB8fCAwKSArICh0aGlzLnBwRnJlZUtpY2tNaXNzZXMgfHwgMCkgKyAodGhpcy5wcENvcm5lck1pc3NlcyB8fCAwKSArXG4gICAgICAodGhpcy5wcENvdW50ZXJBdHRhY2tNaXNzZXMgfHwgMCkgKyAodGhpcy5wcE1hbmV1dmVyTWlzc2VzIHx8IDApICsgKHRoaXMucHBDZW50ZXJGb3J3YXJkTWlzc2VzIHx8IDApO1xuICB9XG5cbiAgZ2V0IHNob3RzT25Hb2FsKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwU2hvdHNPbkdvYWwgfHwgMCkgKyAodGhpcy5ldlNob3RzT25Hb2FsIHx8IDApICsgKHRoaXMuc2hTaG90c09uR29hbCB8fCAwKSArXG4gICAgICAodGhpcy5wcEZyZWVLaWNrT25Hb2FscyB8fCAwKSArICh0aGlzLmV2RnJlZUtpY2tPbkdvYWxzIHx8IDApICsgKHRoaXMuc2hGcmVlS2lja09uR29hbHMgfHwgMCkgK1xuICAgICAgKHRoaXMucHBDb3JuZXJPbkdvYWxzIHx8IDApICsgKHRoaXMuZXZDb3JuZXJPbkdvYWxzIHx8IDApICsgKHRoaXMuc2hDb3JuZXJPbkdvYWxzIHx8IDApICtcbiAgICAgIHRoaXMuY291bnRlckF0dGFja1Nob3RPbkdvYWxzICsgdGhpcy5tYW5ldXZlclNob3RPbkdvYWxzICsgdGhpcy5jZW50ZXJGb3J3YXJkU2hvdE9uR29hbHM7XG4gIH1cblxuICBnZXQgdG90YWxQcFNob3RzT25Hb2FsKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwU2hvdHNPbkdvYWwgfHwgMCkgKyAodGhpcy5wcEZyZWVLaWNrT25Hb2FscyB8fCAwKSArICh0aGlzLnBwQ29ybmVyT25Hb2FscyB8fCAwKSArXG4gICAgICAodGhpcy5wcENvdW50ZXJBdHRhY2tPbkdvYWxzIHx8IDApICsgKHRoaXMucHBNYW5ldXZlck9uR29hbHMgfHwgMCkgKyAodGhpcy5wcENlbnRlckZvcndhcmRPbkdvYWxzIHx8IDApO1xuICB9XG5cbiAgZ2V0IGluR2FtZVNob3RzT25Hb2FscygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcFNob3RzT25Hb2FsIHx8IDApICsgKHRoaXMuZXZTaG90c09uR29hbCB8fCAwKSArICh0aGlzLnNoU2hvdHNPbkdvYWwgfHwgMCkgK1xuICAgICAgdGhpcy5jb3VudGVyQXR0YWNrU2hvdE9uR29hbHMgKyB0aGlzLm1hbmV1dmVyU2hvdE9uR29hbHMgKyB0aGlzLmNlbnRlckZvcndhcmRTaG90T25Hb2FscztcbiAgfVxuXG4gIGdldCBzaG90cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBwU2hvdHMgKyB0aGlzLmV2U2hvdHMgKyB0aGlzLnNoU2hvdHM7XG4gIH1cblxuICBnZXQgdG90YWxTaG90cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnNob3RzICsgdGhpcy5zaG9vdG91dFNob3RzO1xuICB9XG5cbiAgZ2V0IGZhY2VPZmZzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLmZhY2VPZmZXaW5zIHx8IDApICsgKHRoaXMuZmFjZU9mZkxvc3NlcyB8fCAwKTtcbiAgfVxuXG4gIGdldCBmcmVlS2lja1Nob3RNaXNzZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBGcmVlS2lja01pc3NlcyB8fCAwKSArICh0aGlzLmV2RnJlZUtpY2tNaXNzZXMgfHwgMCkgKyAodGhpcy5zaEZyZWVLaWNrTWlzc2VzIHx8IDApO1xuICB9XG5cbiAgZ2V0IGZyZWVLaWNrU2hvdHNCbG9ja2VkKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwRnJlZUtpY2tTaG90c0Jsb2NrZWQgfHwgMCkgKyAodGhpcy5ldkZyZWVLaWNrU2hvdHNCbG9ja2VkIHx8IDApICsgKHRoaXMuc2hGcmVlS2lja1Nob3RzQmxvY2tlZCB8fCAwKTtcbiAgfVxuXG4gIGdldCBmcmVlS2lja09uR29hbHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBGcmVlS2lja09uR29hbHMgfHwgMCkgKyAodGhpcy5ldkZyZWVLaWNrT25Hb2FscyB8fCAwKSArICh0aGlzLnNoRnJlZUtpY2tPbkdvYWxzIHx8IDApO1xuICB9XG5cbiAgZ2V0IHRvdGFsRnJlZUtpY2tHb2FscygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcEZyZWVLaWNrR29hbHMgfHwgMCkgKyAodGhpcy5zaEZyZWVLaWNrR29hbHMgfHwgMCkgKyAodGhpcy5ldkZyZWVLaWNrR29hbHMgfHwgMCk7XG4gIH1cblxuICBnZXQgdG90YWxGcmVlS2lja3MoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuZnJlZUtpY2tTZWxmcyB8fCAwKSArICh0aGlzLmZyZWVLaWNrUGFzc2VzIHx8IDApICtcbiAgICAgIHRoaXMuZnJlZUtpY2tTaG90TWlzc2VzICsgdGhpcy5mcmVlS2lja09uR29hbHMgKyB0aGlzLnRvdGFsRnJlZUtpY2tHb2FscyArIHRoaXMuZnJlZUtpY2tTaG90c0Jsb2NrZWQ7XG4gIH1cblxuICBnZXQgZnJlZUtpY2tHb2Fsc1BlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMudG90YWxGcmVlS2lja0dvYWxzIHx8ICF0aGlzLnRvdGFsRnJlZUtpY2tzKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoMTAwMCAqIHRoaXMudG90YWxGcmVlS2lja0dvYWxzIC8gdGhpcy50b3RhbEZyZWVLaWNrcykgLyAxMDtcbiAgfVxuXG4gIGdldCB0b3RhbENvcm5lckdvYWxzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwQ29ybmVyR29hbHMgfHwgMCkgKyAodGhpcy5zaENvcm5lckdvYWxzIHx8IDApICsgKHRoaXMuZXZDb3JuZXJHb2FscyB8fCAwKTtcbiAgfVxuXG4gIGdldCBjb3JuZXJTaG90TWlzc2VzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwQ29ybmVyTWlzc2VzIHx8IDApICsgKHRoaXMuc2hDb3JuZXJNaXNzZXMgfHwgMCkgKyAodGhpcy5ldkNvcm5lck1pc3NlcyB8fCAwKTtcbiAgfVxuXG4gIGdldCBjb3JuZXJPbkdvYWxzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwQ29ybmVyT25Hb2FscyB8fCAwKSArICh0aGlzLnNoQ29ybmVyT25Hb2FscyB8fCAwKSArICh0aGlzLmV2Q29ybmVyT25Hb2FscyB8fCAwKTtcbiAgfVxuXG4gIGdldCBjb3JuZXJTaG90c0Jsb2NrZWQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBDb3JuZXJTaG90c0Jsb2NrZWQgfHwgMCkgKyAodGhpcy5zaENvcm5lclNob3RzQmxvY2tlZCB8fCAwKSArICh0aGlzLmV2Q29ybmVyU2hvdHNCbG9ja2VkIHx8IDApO1xuICB9XG5cbiAgZ2V0IHRvdGFsQ29ybmVycygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5jb3JuZXJTZWxmcyB8fCAwKSArICh0aGlzLmNvcm5lclBhc3NlcyB8fCAwKSArIHRoaXMuY29ybmVyU2hvdHNCbG9ja2VkICtcbiAgICAgIHRoaXMuY29ybmVyT25Hb2FscyArIHRoaXMuY29ybmVyU2hvdE1pc3NlcyArIHRoaXMudG90YWxDb3JuZXJHb2FscztcbiAgfVxuXG4gIGdldCBzaG90c0Jsb2NrZWQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBTaG90c0Jsb2NrZWQgfHwgMCkgKyAodGhpcy5ldlNob3RzQmxvY2tlZCB8fCAwKSArICh0aGlzLnNoU2hvdHNCbG9ja2VkIHx8IDApICtcbiAgICAgIHRoaXMuY291bnRlckF0dGFja1Nob3RzQmxvY2tlZCArIHRoaXMubWFuZXV2ZXJTaG90c0Jsb2NrZWQgKyB0aGlzLmNlbnRlckZvcndhcmRTaG90c0Jsb2NrZWQgK1xuICAgICAgdGhpcy5mcmVlS2lja1Nob3RzQmxvY2tlZCArIHRoaXMuY29ybmVyU2hvdHNCbG9ja2VkO1xuICB9XG5cbiAgZ2V0IHRvdGFsRm91bHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuZm91bHMgfHwgMCkgKyAodGhpcy5wZXJzb25hbEZvdWxzIHx8IDApO1xuICB9XG5cbiAgZ2V0IHRvdGFsUGVuYWx0aWVzKCk6IG51bWJlciB7XG4gICAgICByZXR1cm4gKHRoaXMubWlub3JQZW5hbHRpZXMgfHwgMCkgKyAodGhpcy5tYWpvclBlbmFsdGllcyB8fCAwKSArICh0aGlzLm1hdGNoUGVuYWx0aWVzIHx8IDApO1xuICB9XG5cbiAgZ2V0IHBvc2l0aW9uQXR0YWNrR29hbHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuc2hHb2FscyB8fCAwKSArICh0aGlzLmV2R29hbHMgfHwgMCkgKyAodGhpcy5wcEdvYWxzIHx8IDApO1xuICB9XG5cbiAgZ2V0IHBvc2l0aW9uQXR0YWNrU2hvdHNPbkdvYWwoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMucHBTaG90c09uR29hbCB8fCAwKSArICh0aGlzLmV2U2hvdHNPbkdvYWwgfHwgMCkgKyAodGhpcy5zaFNob3RzT25Hb2FsIHx8IDApO1xuICB9XG5cbiAgZ2V0IHBvc2l0aW9uQXR0YWNrU2hvdHNNaXNzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwU2hvdE1pc3NlcyB8fCAwKSArICh0aGlzLmV2U2hvdE1pc3NlcyB8fCAwKSArICh0aGlzLnNoU2hvdE1pc3NlcyB8fCAwKTtcbiAgfVxuXG4gIGdldCBwb3NpdGlvbkF0dGFja1Nob3RzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucG9zaXRpb25BdHRhY2tTaG90c09uR29hbCArIHRoaXMucG9zaXRpb25BdHRhY2tTaG90c01pc3M7XG4gIH1cblxuICBnZXQgcG9zaXRpb25BdHRhY2tHb2Fsc1BlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMucG9zaXRpb25BdHRhY2tHb2FscyB8fCAhdGhpcy5wb3NpdGlvbkF0dGFja1Nob3RzKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoMTAwMCAqIHRoaXMucG9zaXRpb25BdHRhY2tHb2FscyAvIHRoaXMucG9zaXRpb25BdHRhY2tTaG90cykgLyAxMDtcbiAgfVxuXG4gIGdldCB0b3RhbEluR2FtZUdvYWxzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudG90YWxDZW50ZXJGb3J3YXJkR29hbHMgKyB0aGlzLnRvdGFsTWFuZXV2ZXJHb2FscyArIHRoaXMudG90YWxDb3VudGVyQXR0YWNrR29hbHMgKyB0aGlzLnBvc2l0aW9uQXR0YWNrR29hbHM7XG4gIH1cblxuICBnZXQgcHBHb2Fsc1BlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMudG90YWxQcEdvYWxzIHx8ICF0aGlzLnBwU2hvdHMpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZCgxMDAwICogdGhpcy50b3RhbFBwR29hbHMgLyB0aGlzLnBwU2hvdHMpIC8gMTA7XG4gIH1cblxuICBnZXQgZXZHb2Fsc1BlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMudG90YWxFdkdvYWxzIHx8ICF0aGlzLmV2U2hvdHMpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZCgxMDAwICogdGhpcy50b3RhbEV2R29hbHMgLyB0aGlzLmV2U2hvdHMpIC8gMTA7XG4gIH1cblxuICBnZXQgc2hHb2Fsc1BlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMudG90YWxTaEdvYWxzIHx8ICF0aGlzLnNoU2hvdHMpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZCgxMDAwICogdGhpcy50b3RhbFNoR29hbHMgLyB0aGlzLnNoU2hvdHMpIC8gMTA7XG4gIH1cblxuICBnZXQgc2hvdHNPbkdvYWxQZXJjZW50KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnNob3RzT25Hb2FsIHx8ICF0aGlzLnNob3RzKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoMTAwMCAqIHRoaXMuc2hvdHNPbkdvYWwgLyB0aGlzLnNob3RzKSAvIDEwO1xuICB9XG5cbiAgZ2V0IGdvYWxzUGVyY2VudCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5nb2FscyB8fCAhdGhpcy5zaG90cykge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJvdW5kKDEwMDAgKiB0aGlzLmdvYWxzIC8gdGhpcy5zaG90cykgLyAxMDtcbiAgfVxuXG4gIGdldCB0b3RhbEdvYWxzUGVyY2VudCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy50b3RhbEdvYWxzIHx8ICF0aGlzLnRvdGFsU2hvdHMpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZCgxMDAwICogdGhpcy50b3RhbEdvYWxzIC8gdGhpcy50b3RhbFNob3RzKSAvIDEwO1xuICB9XG5cbiAgZ2V0IGZhY2VPZmZQZXJjZW50KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLmZhY2VPZmZXaW5zIHx8ICF0aGlzLmZhY2VPZmZzKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoMTAwMCAqIHRoaXMuZmFjZU9mZldpbnMgLyB0aGlzLmZhY2VPZmZzKSAvIDEwO1xuICB9XG5cbiAgZ2V0IHNob290b3V0R29hbHNQZXJjZW50KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnNob290b3V0R29hbHMgfHwgIXRoaXMuc2hvb3RvdXRTaG90cykge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJvdW5kKDEwMDAgKiB0aGlzLnNob290b3V0R29hbHMgLyB0aGlzLnNob290b3V0U2hvdHMpIC8gMTA7XG4gIH1cblxuICBnZXQgZ29hbHBhc3MoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMudG90YWxHb2FscyB8fCAwKSArICh0aGlzLmFzc2lzdHMgfHwgMCk7XG4gIH1cblxuICAvKmdvYWxpZSBzdGF0ICovXG4gIGdldCBwb3NpdGlvbkF0dGFja1NhdmVzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwU2F2ZXMgfHwgMCkgKyAodGhpcy5zaFNhdmVzIHx8IDApICsgKHRoaXMuZXZTYXZlcyB8fCAwKTtcbiAgfVxuXG4gIGdldCBwb3NpdGlvbkF0dGFja1Nob3RzQWdhaW5zdCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBvc2l0aW9uQXR0YWNrU2F2ZXMgKyAodGhpcy5nb2Fsc0FnYWluc3QgfHwgMCk7XG4gIH1cblxuICBnZXQgcG9zaXRpb25BdHRhY2tTYXZlc1BlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMucG9zaXRpb25BdHRhY2tTYXZlcyB8fCAhdGhpcy5wb3NpdGlvbkF0dGFja1Nob3RzQWdhaW5zdCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJvdW5kKDEwMDAgKiB0aGlzLnBvc2l0aW9uQXR0YWNrU2F2ZXMgLyB0aGlzLnBvc2l0aW9uQXR0YWNrU2hvdHNBZ2FpbnN0KSAvIDEwO1xuICB9XG5cbiAgZ2V0IGNvdW50ZXJBdHRhY2tTYXZlcygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcENvdW50ZXJBdHRhY2tTYXZlcyB8fCAwKSArICh0aGlzLnNoQ291bnRlckF0dGFja1NhdmVzIHx8IDApICsgKHRoaXMuZXZDb3VudGVyQXR0YWNrU2F2ZXMgfHwgMCk7XG4gIH1cblxuICBnZXQgY291bnRlckF0dGFja1Nob3RzQWdhaW5zdCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNvdW50ZXJBdHRhY2tTYXZlcyArICh0aGlzLmNvdW50ZXJBdHRhY2tHb2Fsc0FnYWluc3QgfHwgMCk7XG4gIH1cblxuICBnZXQgY291bnRlckF0dGFja1NhdmVzUGVyY2VudCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5jb3VudGVyQXR0YWNrU2F2ZXMgfHwgIXRoaXMuY291bnRlckF0dGFja1Nob3RzQWdhaW5zdCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJvdW5kKDEwMDAgKiB0aGlzLmNvdW50ZXJBdHRhY2tTYXZlcyAvIHRoaXMuY291bnRlckF0dGFja1Nob3RzQWdhaW5zdCkgLyAxMDtcbiAgfVxuXG5cbiAgZ2V0IGNlbnRlckZvcndhcmRTYXZlcygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcENlbnRlckZvcndhcmRTYXZlcyB8fCAwKSArICh0aGlzLnNoQ2VudGVyRm9yd2FyZFNhdmVzIHx8IDApICsgKHRoaXMuZXZDZW50ZXJGb3J3YXJkU2F2ZXMgfHwgMCk7XG4gIH1cblxuICBnZXQgY2VudGVyRm9yd2FyZFNob3RzQWdhaW5zdCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNlbnRlckZvcndhcmRTYXZlcyArICh0aGlzLmNlbnRlckZvcndhcmRHb2Fsc0FnYWluc3QgfHwgMCk7XG4gIH1cblxuICBnZXQgY2VudGVyRm9yd2FyZFNhdmVzUGVyY2VudCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5jZW50ZXJGb3J3YXJkU2F2ZXMgfHwgIXRoaXMuY2VudGVyRm9yd2FyZFNob3RzQWdhaW5zdCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJvdW5kKDEwMDAgKiB0aGlzLmNlbnRlckZvcndhcmRTYXZlcyAvIHRoaXMuY2VudGVyRm9yd2FyZFNob3RzQWdhaW5zdCkgLyAxMDtcbiAgfVxuXG4gIGdldCBtYW5ldXZlclNhdmVzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwTWFuZXV2ZXJTYXZlcyB8fCAwKSArICh0aGlzLnNoTWFuZXV2ZXJTYXZlcyB8fCAwKSArICh0aGlzLmV2TWFuZXV2ZXJTYXZlcyB8fCAwKTtcbiAgfVxuXG4gIGdldCBtYW5ldXZlclNob3RzQWdhaW5zdCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm1hbmV1dmVyU2F2ZXMgKyAodGhpcy5tYW5ldXZlckdvYWxzQWdhaW5zdCB8fCAwKTtcbiAgfVxuXG4gIGdldCBtYW5ldXZlclNhdmVzUGVyY2VudCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5tYW5ldXZlclNhdmVzIHx8ICF0aGlzLm1hbmV1dmVyU2hvdHNBZ2FpbnN0KSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoMTAwMCAqIHRoaXMubWFuZXV2ZXJTYXZlcyAvIHRoaXMubWFuZXV2ZXJTaG90c0FnYWluc3QpIC8gMTA7XG4gIH1cblxuICBnZXQgZnJlZUtpY2tTYXZlcygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5wcEZyZWVLaWNrU2F2ZXMgfHwgMCkgKyAodGhpcy5zaEZyZWVLaWNrU2F2ZXMgfHwgMCkgKyAodGhpcy5ldkZyZWVLaWNrU2F2ZXMgfHwgMCk7XG4gIH1cblxuICBnZXQgZnJlZUtpY2tTaG90c0FnYWluc3QoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5mcmVlS2lja1NhdmVzICsgKHRoaXMuZnJlZUtpY2tHb2Fsc0FnYWluc3QgfHwgMCk7XG4gIH1cblxuICBnZXQgZnJlZUtpY2tTYXZlc1BlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuZnJlZUtpY2tTYXZlcyB8fCAhdGhpcy5mcmVlS2lja1Nob3RzQWdhaW5zdCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJvdW5kKDEwMDAgKiB0aGlzLmZyZWVLaWNrU2F2ZXMgLyB0aGlzLmZyZWVLaWNrU2hvdHNBZ2FpbnN0KSAvIDEwO1xuICB9XG5cbiAgZ2V0IGNvcm5lclNhdmVzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnBwQ29ybmVyU2F2ZXMgfHwgMCkgKyAodGhpcy5zaENvcm5lclNhdmVzIHx8IDApICsgKHRoaXMuZXZDb3JuZXJTYXZlcyB8fCAwKTtcbiAgfVxuXG4gIGdldCBjb3JuZXJTaG90c0FnYWluc3QoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jb3JuZXJTYXZlcyArICh0aGlzLmNvcm5lckdvYWxzQWdhaW5zdCB8fCAwKTtcbiAgfVxuXG4gIGdldCBjb3JuZXJTYXZlc1BlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuY29ybmVyU2F2ZXMgfHwgIXRoaXMuY29ybmVyU2hvdHNBZ2FpbnN0KSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoMTAwMCAqIHRoaXMuY29ybmVyU2F2ZXMgLyB0aGlzLmNvcm5lclNob3RzQWdhaW5zdCkgLyAxMDtcbiAgfVxuXG4gIGdldCBpbkdhbWVTYXZlcygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5zaFNhdmVzIHx8IDApICsgKHRoaXMuZXZTYXZlcyB8fCAwKSArICh0aGlzLnBwU2F2ZXMgfHwgMCkgK1xuICAgICAgdGhpcy5jb3VudGVyQXR0YWNrU2F2ZXMgKyB0aGlzLm1hbmV1dmVyU2F2ZXMgKyB0aGlzLmNlbnRlckZvcndhcmRTYXZlcztcbiAgfVxuXG4gIGdldCBzYXZlcygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmluR2FtZVNhdmVzICsgdGhpcy5mcmVlS2lja1NhdmVzICsgdGhpcy5jb3JuZXJTYXZlcztcbiAgfVxuXG4gIGdldCB0b3RhbFNhdmVzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2F2ZXMgKyAodGhpcy5zaG9vdG91dFNhdmVzIHx8IDApO1xuICB9XG5cbiAgZ2V0IGluR2FtZUdvYWxzQWdhaW5zdCgpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5nb2Fsc0FnYWluc3QgfHwgMCkgKyAodGhpcy5jb3VudGVyQXR0YWNrR29hbHNBZ2FpbnN0IHx8IDApICsgKHRoaXMubWFuZXV2ZXJHb2Fsc0FnYWluc3QgfHwgMCkgK1xuICAgICAgKHRoaXMuY2VudGVyRm9yd2FyZEdvYWxzQWdhaW5zdCB8fCAwKTtcbiAgfVxuXG4gIGdldCBzaG9vdG91dFNob3RzQWdhaW5zdCgpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5zaG9vdG91dFNhdmVzIHx8IDApICsgKHRoaXMuc2hvb3RvdXRHb2Fsc0FnYWluc3QgfHwgMCk7XG4gIH1cblxuICBnZXQgZ2FtZUdvYWxzQWdhaW5zdCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmluR2FtZUdvYWxzQWdhaW5zdCArICh0aGlzLmZyZWVLaWNrR29hbHNBZ2FpbnN0IHx8IDApICsgKHRoaXMuY29ybmVyR29hbHNBZ2FpbnN0IHx8IDApO1xuICB9XG5cbiAgZ2V0IHRvdGFsR29hbHNBZ2FpbnN0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2FtZUdvYWxzQWdhaW5zdCArICh0aGlzLnNob290b3V0R29hbHNBZ2FpbnN0IHx8IDApO1xuICB9XG5cbiAgZ2V0IGdhbWVTaG90c0FnYWluc3QoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zYXZlcyArIHRoaXMuZ2FtZUdvYWxzQWdhaW5zdDtcbiAgfVxuXG4gIGdldCB0b3RhbFNob3RzQWdhaW5zdCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdhbWVTaG90c0FnYWluc3QgKyB0aGlzLnNob290b3V0U2hvdHNBZ2FpbnN0O1xuICB9XG5cbiAgZ2V0IHNob290b3V0U2F2ZXNQZXJjZW50KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnNob290b3V0U2F2ZXMgfHwgIXRoaXMuc2hvb3RvdXRTaG90c0FnYWluc3QpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZCgxMDAwICogdGhpcy5zaG9vdG91dFNhdmVzIC8gdGhpcy5zaG9vdG91dFNob3RzQWdhaW5zdCkgLyAxMDtcbiAgfVxuXG4gIGdldCBzYXZlc1BlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuc2F2ZXMgfHwgIXRoaXMuZ2FtZVNob3RzQWdhaW5zdCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJvdW5kKDEwMDAgKiB0aGlzLnNhdmVzIC8gdGhpcy5nYW1lU2hvdHNBZ2FpbnN0KSAvIDEwO1xuICB9XG5cbiAgZ2V0IHRvdGFsU2F2ZXNQZXJjZW50KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnRvdGFsU2F2ZXMgfHwgIXRoaXMudG90YWxTaG90c0FnYWluc3QpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZCgxMDAwICogdGhpcy50b3RhbFNhdmVzIC8gdGhpcy50b3RhbFNob3RzQWdhaW5zdCkgLyAxMDtcbiAgfVxuXG4gIGdldCB0b3RhbFNoU2F2ZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuc2hDb3VudGVyQXR0YWNrU2F2ZXMgfHwgMCkgKyAodGhpcy5zaE1hbmV1dmVyU2F2ZXMgfHwgMCkgKyAodGhpcy5zaENlbnRlckZvcndhcmRTYXZlcyB8fCAwKSArXG4gICAgICAodGhpcy5zaFNhdmVzIHx8IDApICsgKHRoaXMuc2hGcmVlS2lja1NhdmVzIHx8IDApICsgKHRoaXMuc2hDb3JuZXJTYXZlcyB8fCAwKTtcbiAgfVxuXG4gIGdldCB0b3RhbFNoR29hbHNBZ2FpbnN0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLnNoR29hbHNBZ2FpbnN0IHx8IDApICsgKHRoaXMuc2hGcmVlS2lja0dvYWxzQWdhaW5zdCB8fCAwKSArICh0aGlzLnNoQ29ybmVyR29hbHNBZ2FpbnN0IHx8IDApICtcbiAgICAgICh0aGlzLnNoQ291bnRlckF0dGFja0dvYWxzQWdhaW5zdCB8fCAwKSArICh0aGlzLnNoTWFuZXV2ZXJHb2Fsc0FnYWluc3QgfHwgMCkgKyAodGhpcy5zaENlbnRlckZvcndhcmRHb2Fsc0FnYWluc3QgfHwgMCk7XG4gIH1cblxuICBnZXQgdG90YWxTaFNob3RzQWdhaW5zdCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRvdGFsU2hTYXZlcyArIHRoaXMudG90YWxTaEdvYWxzQWdhaW5zdDtcbiAgfVxuXG4gIGdldCB0b3RhbFNoU2F2ZXNQZXJjZW50KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnRvdGFsU2hTYXZlcyB8fCAhdGhpcy50b3RhbFNoU2hvdHNBZ2FpbnN0KSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoMTAwMCAqIHRoaXMudG90YWxTaFNhdmVzIC8gdGhpcy50b3RhbFNoU2hvdHNBZ2FpbnN0KSAvIDEwO1xuICB9XG5cbiAgZ2V0IHRvdGFsRXZTYXZlcygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5ldkNvdW50ZXJBdHRhY2tTYXZlcyB8fCAwKSArICh0aGlzLmV2TWFuZXV2ZXJTYXZlcyB8fCAwKSArICh0aGlzLmV2Q2VudGVyRm9yd2FyZFNhdmVzIHx8IDApICtcbiAgICAgICh0aGlzLmV2U2F2ZXMgfHwgMCkgKyAodGhpcy5ldkZyZWVLaWNrU2F2ZXMgfHwgMCkgKyAodGhpcy5ldkNvcm5lclNhdmVzIHx8IDApO1xuICB9XG5cbiAgZ2V0IHRvdGFsRXZHb2Fsc0FnYWluc3QoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuZXZHb2Fsc0FnYWluc3QgfHwgMCkgKyAodGhpcy5ldkZyZWVLaWNrR29hbHNBZ2FpbnN0IHx8IDApICsgKHRoaXMuZXZDb3JuZXJHb2Fsc0FnYWluc3QgfHwgMCkgK1xuICAgICAgKHRoaXMuZXZDb3VudGVyQXR0YWNrR29hbHNBZ2FpbnN0IHx8IDApICsgKHRoaXMuZXZNYW5ldXZlckdvYWxzQWdhaW5zdCB8fCAwKSArICh0aGlzLmV2Q2VudGVyRm9yd2FyZEdvYWxzQWdhaW5zdCB8fCAwKTtcbiAgfVxuXG4gIGdldCB0b3RhbEV2U2hvdHNBZ2FpbnN0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudG90YWxFdlNhdmVzICsgdGhpcy50b3RhbEV2R29hbHNBZ2FpbnN0O1xuICB9XG5cbiAgZ2V0IHRvdGFsRXZTYXZlc1BlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMudG90YWxFdlNhdmVzIHx8ICF0aGlzLnRvdGFsRXZTaG90c0FnYWluc3QpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZCgxMDAwICogdGhpcy50b3RhbEV2U2F2ZXMgLyB0aGlzLnRvdGFsRXZTaG90c0FnYWluc3QpIC8gMTA7XG4gIH1cblxuICBAVG9Gcm9udEhvb2tcbiAgc3RhdGljIHRvRnJvbnQoZGF0YTogYW55KTogYW55IHt9XG5cbiAgQFRvQmFja0hvb2tcbiAgc3RhdGljIHRvQmFjayhkYXRhOiBhbnkpOiBhbnkge31cbn1cbiJdfQ==