@hsuite/native-connect-angular 1.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 (276) hide show
  1. package/README.md +48 -0
  2. package/USAGE_EXAMPLES.md +476 -0
  3. package/assets/wallets/extension.svg +7 -0
  4. package/assets/wallets/hashpack.svg +6 -0
  5. package/assets/wallets/hsuite.svg +11 -0
  6. package/assets/wallets/kabila.svg +11 -0
  7. package/assets/wallets/walletconnect.svg +13 -0
  8. package/coverage/base.css +224 -0
  9. package/coverage/block-navigation.js +87 -0
  10. package/coverage/coverage-summary.json +50 -0
  11. package/coverage/favicon.png +0 -0
  12. package/coverage/index.html +476 -0
  13. package/coverage/lcov-report/base.css +224 -0
  14. package/coverage/lcov-report/block-navigation.js +87 -0
  15. package/coverage/lcov-report/favicon.png +0 -0
  16. package/coverage/lcov-report/index.html +476 -0
  17. package/coverage/lcov-report/lib/components/account-selector/account-actions/account-actions.component.ts.html +868 -0
  18. package/coverage/lcov-report/lib/components/account-selector/account-actions/index.html +116 -0
  19. package/coverage/lcov-report/lib/components/account-selector/account-filter/account-filter.component.ts.html +1288 -0
  20. package/coverage/lcov-report/lib/components/account-selector/account-filter/index.html +116 -0
  21. package/coverage/lcov-report/lib/components/account-selector/account-formatting.service.ts.html +685 -0
  22. package/coverage/lcov-report/lib/components/account-selector/account-grouping.service.ts.html +766 -0
  23. package/coverage/lcov-report/lib/components/account-selector/account-list/account-list.component.ts.html +1495 -0
  24. package/coverage/lcov-report/lib/components/account-selector/account-list/index.html +116 -0
  25. package/coverage/lcov-report/lib/components/account-selector/account-selector.component.ts.html +1495 -0
  26. package/coverage/lcov-report/lib/components/account-selector/account-selector.service.ts.html +1588 -0
  27. package/coverage/lcov-report/lib/components/account-selector/index.html +161 -0
  28. package/coverage/lcov-report/lib/components/wallet-account-display/index.html +116 -0
  29. package/coverage/lcov-report/lib/components/wallet-account-display/wallet-account-display.component.ts.html +505 -0
  30. package/coverage/lcov-report/lib/components/wallet-connect-button/index.html +116 -0
  31. package/coverage/lcov-report/lib/components/wallet-connect-button/wallet-connect-button.component.ts.html +805 -0
  32. package/coverage/lcov-report/lib/components/wallet-connect-prompt/index.html +116 -0
  33. package/coverage/lcov-report/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts.html +409 -0
  34. package/coverage/lcov-report/lib/components/wallet-connected-guard/index.html +116 -0
  35. package/coverage/lcov-report/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts.html +304 -0
  36. package/coverage/lcov-report/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts.html +436 -0
  37. package/coverage/lcov-report/lib/components/wallet-connection-modal/connection-method-step/index.html +116 -0
  38. package/coverage/lcov-report/lib/components/wallet-connection-modal/index.html +116 -0
  39. package/coverage/lcov-report/lib/components/wallet-connection-modal/qr-pairing-step/index.html +116 -0
  40. package/coverage/lcov-report/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts.html +2287 -0
  41. package/coverage/lcov-report/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts.html +2275 -0
  42. package/coverage/lcov-report/lib/components/wallet-session-display/index.html +116 -0
  43. package/coverage/lcov-report/lib/components/wallet-session-display/wallet-session-display.component.ts.html +676 -0
  44. package/coverage/lcov-report/lib/components/wallet-transaction-status/index.html +116 -0
  45. package/coverage/lcov-report/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts.html +703 -0
  46. package/coverage/lcov-report/lib/directives/index.html +146 -0
  47. package/coverage/lcov-report/lib/directives/wallet-connected.directive.ts.html +670 -0
  48. package/coverage/lcov-report/lib/directives/wallet-context.directive.ts.html +547 -0
  49. package/coverage/lcov-report/lib/directives/wallet-events.directive.ts.html +781 -0
  50. package/coverage/lcov-report/lib/hsuite-wallet.module.ts.html +715 -0
  51. package/coverage/lcov-report/lib/index.html +116 -0
  52. package/coverage/lcov-report/lib/models/connection-config.model.ts.html +280 -0
  53. package/coverage/lcov-report/lib/models/index.html +131 -0
  54. package/coverage/lcov-report/lib/models/provider-types.ts.html +577 -0
  55. package/coverage/lcov-report/lib/providers/base-wallet-provider.ts.html +1138 -0
  56. package/coverage/lcov-report/lib/providers/hsuite-native/channel-client.service.ts.html +2671 -0
  57. package/coverage/lcov-report/lib/providers/hsuite-native/index.html +116 -0
  58. package/coverage/lcov-report/lib/providers/hsuite-native-provider.ts.html +2347 -0
  59. package/coverage/lcov-report/lib/providers/index.html +146 -0
  60. package/coverage/lcov-report/lib/providers/p2p-native/index.html +131 -0
  61. package/coverage/lcov-report/lib/providers/p2p-native/p2p-native.provider.ts.html +2254 -0
  62. package/coverage/lcov-report/lib/providers/p2p-native/p2p-session-manager.ts.html +2170 -0
  63. package/coverage/lcov-report/lib/providers/wallet-error-handler.ts.html +1132 -0
  64. package/coverage/lcov-report/lib/providers/walletconnect/core/index.html +176 -0
  65. package/coverage/lcov-report/lib/providers/walletconnect/core/session-health.ts.html +673 -0
  66. package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-client-manager.ts.html +1177 -0
  67. package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-provider.ts.html +2563 -0
  68. package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-session-store.ts.html +904 -0
  69. package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts.html +982 -0
  70. package/coverage/lcov-report/lib/providers/walletconnect/signers/hedera-signer.ts.html +1915 -0
  71. package/coverage/lcov-report/lib/providers/walletconnect/signers/index.html +146 -0
  72. package/coverage/lcov-report/lib/providers/walletconnect/signers/signer-factory.ts.html +445 -0
  73. package/coverage/lcov-report/lib/providers/walletconnect/signers/xrpl-signer.ts.html +1519 -0
  74. package/coverage/lcov-report/lib/services/index.html +191 -0
  75. package/coverage/lcov-report/lib/services/logger.service.ts.html +463 -0
  76. package/coverage/lcov-report/lib/services/transaction-builders/base-transaction-builder.service.ts.html +1840 -0
  77. package/coverage/lcov-report/lib/services/transaction-builders/hedera-amount-utils.ts.html +337 -0
  78. package/coverage/lcov-report/lib/services/transaction-builders/hedera-transaction-builder.service.ts.html +3940 -0
  79. package/coverage/lcov-report/lib/services/transaction-builders/index.html +161 -0
  80. package/coverage/lcov-report/lib/services/transaction-builders/xrpl-transaction-builder.service.ts.html +2581 -0
  81. package/coverage/lcov-report/lib/services/transaction.service.ts.html +1123 -0
  82. package/coverage/lcov-report/lib/services/unified-wallet.service.ts.html +2641 -0
  83. package/coverage/lcov-report/lib/services/wallet-context.service.ts.html +637 -0
  84. package/coverage/lcov-report/lib/services/wallet-event-bus.service.ts.html +643 -0
  85. package/coverage/lcov-report/lib/services/wallet-providers.service.ts.html +496 -0
  86. package/coverage/lcov-report/lib/transports/chrome-extension-transport.ts.html +823 -0
  87. package/coverage/lcov-report/lib/transports/index.html +116 -0
  88. package/coverage/lcov-report/lib/utils/index.html +116 -0
  89. package/coverage/lcov-report/lib/utils/ledger-icons.util.ts.html +319 -0
  90. package/coverage/lcov-report/prettify.css +1 -0
  91. package/coverage/lcov-report/prettify.js +2 -0
  92. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  93. package/coverage/lcov-report/sorter.js +210 -0
  94. package/coverage/lcov.info +19252 -0
  95. package/coverage/lib/components/account-selector/account-actions/account-actions.component.ts.html +868 -0
  96. package/coverage/lib/components/account-selector/account-actions/index.html +116 -0
  97. package/coverage/lib/components/account-selector/account-filter/account-filter.component.ts.html +1288 -0
  98. package/coverage/lib/components/account-selector/account-filter/index.html +116 -0
  99. package/coverage/lib/components/account-selector/account-formatting.service.ts.html +685 -0
  100. package/coverage/lib/components/account-selector/account-grouping.service.ts.html +766 -0
  101. package/coverage/lib/components/account-selector/account-list/account-list.component.ts.html +1495 -0
  102. package/coverage/lib/components/account-selector/account-list/index.html +116 -0
  103. package/coverage/lib/components/account-selector/account-selector.component.ts.html +1495 -0
  104. package/coverage/lib/components/account-selector/account-selector.service.ts.html +1588 -0
  105. package/coverage/lib/components/account-selector/index.html +161 -0
  106. package/coverage/lib/components/wallet-account-display/index.html +116 -0
  107. package/coverage/lib/components/wallet-account-display/wallet-account-display.component.ts.html +505 -0
  108. package/coverage/lib/components/wallet-connect-button/index.html +116 -0
  109. package/coverage/lib/components/wallet-connect-button/wallet-connect-button.component.ts.html +805 -0
  110. package/coverage/lib/components/wallet-connect-prompt/index.html +116 -0
  111. package/coverage/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts.html +409 -0
  112. package/coverage/lib/components/wallet-connected-guard/index.html +116 -0
  113. package/coverage/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts.html +304 -0
  114. package/coverage/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts.html +436 -0
  115. package/coverage/lib/components/wallet-connection-modal/connection-method-step/index.html +116 -0
  116. package/coverage/lib/components/wallet-connection-modal/index.html +116 -0
  117. package/coverage/lib/components/wallet-connection-modal/qr-pairing-step/index.html +116 -0
  118. package/coverage/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts.html +2287 -0
  119. package/coverage/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts.html +2275 -0
  120. package/coverage/lib/components/wallet-session-display/index.html +116 -0
  121. package/coverage/lib/components/wallet-session-display/wallet-session-display.component.ts.html +676 -0
  122. package/coverage/lib/components/wallet-transaction-status/index.html +116 -0
  123. package/coverage/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts.html +703 -0
  124. package/coverage/lib/directives/index.html +146 -0
  125. package/coverage/lib/directives/wallet-connected.directive.ts.html +670 -0
  126. package/coverage/lib/directives/wallet-context.directive.ts.html +547 -0
  127. package/coverage/lib/directives/wallet-events.directive.ts.html +781 -0
  128. package/coverage/lib/hsuite-wallet.module.ts.html +715 -0
  129. package/coverage/lib/index.html +116 -0
  130. package/coverage/lib/models/connection-config.model.ts.html +280 -0
  131. package/coverage/lib/models/index.html +131 -0
  132. package/coverage/lib/models/provider-types.ts.html +577 -0
  133. package/coverage/lib/providers/base-wallet-provider.ts.html +1138 -0
  134. package/coverage/lib/providers/hsuite-native/channel-client.service.ts.html +2671 -0
  135. package/coverage/lib/providers/hsuite-native/index.html +116 -0
  136. package/coverage/lib/providers/hsuite-native-provider.ts.html +2347 -0
  137. package/coverage/lib/providers/index.html +146 -0
  138. package/coverage/lib/providers/p2p-native/index.html +131 -0
  139. package/coverage/lib/providers/p2p-native/p2p-native.provider.ts.html +2254 -0
  140. package/coverage/lib/providers/p2p-native/p2p-session-manager.ts.html +2170 -0
  141. package/coverage/lib/providers/wallet-error-handler.ts.html +1132 -0
  142. package/coverage/lib/providers/walletconnect/core/index.html +176 -0
  143. package/coverage/lib/providers/walletconnect/core/session-health.ts.html +673 -0
  144. package/coverage/lib/providers/walletconnect/core/walletconnect-client-manager.ts.html +1177 -0
  145. package/coverage/lib/providers/walletconnect/core/walletconnect-provider.ts.html +2563 -0
  146. package/coverage/lib/providers/walletconnect/core/walletconnect-session-store.ts.html +904 -0
  147. package/coverage/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts.html +982 -0
  148. package/coverage/lib/providers/walletconnect/signers/hedera-signer.ts.html +1915 -0
  149. package/coverage/lib/providers/walletconnect/signers/index.html +146 -0
  150. package/coverage/lib/providers/walletconnect/signers/signer-factory.ts.html +445 -0
  151. package/coverage/lib/providers/walletconnect/signers/xrpl-signer.ts.html +1519 -0
  152. package/coverage/lib/services/index.html +191 -0
  153. package/coverage/lib/services/logger.service.ts.html +463 -0
  154. package/coverage/lib/services/transaction-builders/base-transaction-builder.service.ts.html +1840 -0
  155. package/coverage/lib/services/transaction-builders/hedera-amount-utils.ts.html +337 -0
  156. package/coverage/lib/services/transaction-builders/hedera-transaction-builder.service.ts.html +3940 -0
  157. package/coverage/lib/services/transaction-builders/index.html +161 -0
  158. package/coverage/lib/services/transaction-builders/xrpl-transaction-builder.service.ts.html +2581 -0
  159. package/coverage/lib/services/transaction.service.ts.html +1123 -0
  160. package/coverage/lib/services/unified-wallet.service.ts.html +2641 -0
  161. package/coverage/lib/services/wallet-context.service.ts.html +637 -0
  162. package/coverage/lib/services/wallet-event-bus.service.ts.html +643 -0
  163. package/coverage/lib/services/wallet-providers.service.ts.html +496 -0
  164. package/coverage/lib/transports/chrome-extension-transport.ts.html +823 -0
  165. package/coverage/lib/transports/index.html +116 -0
  166. package/coverage/lib/utils/index.html +116 -0
  167. package/coverage/lib/utils/ledger-icons.util.ts.html +319 -0
  168. package/coverage/prettify.css +1 -0
  169. package/coverage/prettify.js +2 -0
  170. package/coverage/sort-arrow-sprite.png +0 -0
  171. package/coverage/sorter.js +210 -0
  172. package/dist/README.md +48 -0
  173. package/dist/fesm2022/hsuite-native-connect-angular.mjs +14592 -0
  174. package/dist/fesm2022/hsuite-native-connect-angular.mjs.map +1 -0
  175. package/dist/index.d.ts +6949 -0
  176. package/examples/minimal-connect.ts +178 -0
  177. package/examples/multi-protocol.ts +495 -0
  178. package/examples/transaction-signing.ts +361 -0
  179. package/jest.config.json +45 -0
  180. package/karma.conf.js +42 -0
  181. package/ng-package.json +20 -0
  182. package/package.json +60 -0
  183. package/src/index.ts +203 -0
  184. package/src/lib/components/account-selector/account-actions/account-actions.component.ts +261 -0
  185. package/src/lib/components/account-selector/account-filter/account-filter.component.ts +401 -0
  186. package/src/lib/components/account-selector/account-formatting.service.ts +200 -0
  187. package/src/lib/components/account-selector/account-grouping.service.ts +227 -0
  188. package/src/lib/components/account-selector/account-list/account-list.component.ts +470 -0
  189. package/src/lib/components/account-selector/account-selector.component.html +135 -0
  190. package/src/lib/components/account-selector/account-selector.component.scss +2039 -0
  191. package/src/lib/components/account-selector/account-selector.component.ts +470 -0
  192. package/src/lib/components/account-selector/account-selector.service.ts +501 -0
  193. package/src/lib/components/wallet-account-display/wallet-account-display.component.html +34 -0
  194. package/src/lib/components/wallet-account-display/wallet-account-display.component.scss +99 -0
  195. package/src/lib/components/wallet-account-display/wallet-account-display.component.ts +140 -0
  196. package/src/lib/components/wallet-connect-button/wallet-connect-button.component.html +14 -0
  197. package/src/lib/components/wallet-connect-button/wallet-connect-button.component.scss +272 -0
  198. package/src/lib/components/wallet-connect-button/wallet-connect-button.component.ts +240 -0
  199. package/src/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.html +24 -0
  200. package/src/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.scss +50 -0
  201. package/src/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts +108 -0
  202. package/src/lib/components/wallet-connected-guard/wallet-connected-guard.component.html +24 -0
  203. package/src/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts +73 -0
  204. package/src/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.html +56 -0
  205. package/src/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.scss +218 -0
  206. package/src/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts +117 -0
  207. package/src/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.html +94 -0
  208. package/src/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.scss +272 -0
  209. package/src/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts +734 -0
  210. package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.html +197 -0
  211. package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.scss +678 -0
  212. package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts +730 -0
  213. package/src/lib/components/wallet-session-display/wallet-session-display.component.html +110 -0
  214. package/src/lib/components/wallet-session-display/wallet-session-display.component.scss +179 -0
  215. package/src/lib/components/wallet-session-display/wallet-session-display.component.ts +197 -0
  216. package/src/lib/components/wallet-transaction-status/wallet-transaction-status.component.html +65 -0
  217. package/src/lib/components/wallet-transaction-status/wallet-transaction-status.component.scss +254 -0
  218. package/src/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts +206 -0
  219. package/src/lib/directives/wallet-connected.directive.ts +195 -0
  220. package/src/lib/directives/wallet-context.directive.ts +154 -0
  221. package/src/lib/directives/wallet-events.directive.ts +232 -0
  222. package/src/lib/hsuite-wallet.module.ts +210 -0
  223. package/src/lib/models/connection-config.model.ts +65 -0
  224. package/src/lib/models/provider-types.ts +164 -0
  225. package/src/lib/models/unified-account.model.ts +76 -0
  226. package/src/lib/models/wallet-context.model.ts +121 -0
  227. package/src/lib/models/wallet-events.model.ts +158 -0
  228. package/src/lib/providers/base-wallet-provider.ts +351 -0
  229. package/src/lib/providers/hsuite-native/channel-client.service.spec.ts +73 -0
  230. package/src/lib/providers/hsuite-native/channel-client.service.ts +862 -0
  231. package/src/lib/providers/hsuite-native/index.ts +8 -0
  232. package/src/lib/providers/hsuite-native-provider.ts +754 -0
  233. package/src/lib/providers/mobile-native/mobile-native.provider.spec.ts +19 -0
  234. package/src/lib/providers/p2p-native/index.ts +30 -0
  235. package/src/lib/providers/p2p-native/p2p-native.provider.spec.ts +523 -0
  236. package/src/lib/providers/p2p-native/p2p-native.provider.ts +723 -0
  237. package/src/lib/providers/p2p-native/p2p-session-manager.ts +695 -0
  238. package/src/lib/providers/wallet-error-handler.ts +349 -0
  239. package/src/lib/providers/walletconnect/core/base-signer.interface.ts +122 -0
  240. package/src/lib/providers/walletconnect/core/session-health.ts +196 -0
  241. package/src/lib/providers/walletconnect/core/walletconnect-client-manager.ts +364 -0
  242. package/src/lib/providers/walletconnect/core/walletconnect-provider.integration.spec.ts +348 -0
  243. package/src/lib/providers/walletconnect/core/walletconnect-provider.ts +826 -0
  244. package/src/lib/providers/walletconnect/core/walletconnect-session-store.ts +273 -0
  245. package/src/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts +299 -0
  246. package/src/lib/providers/walletconnect/core/walletconnect-types.ts +48 -0
  247. package/src/lib/providers/walletconnect/index.ts +33 -0
  248. package/src/lib/providers/walletconnect/signers/hedera-signer.spec.ts +367 -0
  249. package/src/lib/providers/walletconnect/signers/hedera-signer.ts +610 -0
  250. package/src/lib/providers/walletconnect/signers/signer-factory.spec.ts +62 -0
  251. package/src/lib/providers/walletconnect/signers/signer-factory.ts +120 -0
  252. package/src/lib/providers/walletconnect/signers/xrpl-signer.spec.ts +296 -0
  253. package/src/lib/providers/walletconnect/signers/xrpl-signer.ts +478 -0
  254. package/src/lib/services/logger.service.ts +126 -0
  255. package/src/lib/services/transaction-builders/base-transaction-builder.service.ts +585 -0
  256. package/src/lib/services/transaction-builders/hedera-amount-utils.ts +84 -0
  257. package/src/lib/services/transaction-builders/hedera-transaction-builder.service.spec.ts +741 -0
  258. package/src/lib/services/transaction-builders/hedera-transaction-builder.service.ts +1285 -0
  259. package/src/lib/services/transaction-builders/index.ts +54 -0
  260. package/src/lib/services/transaction-builders/xrpl-transaction-builder.service.spec.ts +937 -0
  261. package/src/lib/services/transaction-builders/xrpl-transaction-builder.service.ts +832 -0
  262. package/src/lib/services/transaction.service.ts +346 -0
  263. package/src/lib/services/unified-wallet.service.spec.ts +1382 -0
  264. package/src/lib/services/unified-wallet.service.ts +852 -0
  265. package/src/lib/services/wallet-context.service.ts +184 -0
  266. package/src/lib/services/wallet-event-bus.service.ts +186 -0
  267. package/src/lib/services/wallet-providers.service.ts +137 -0
  268. package/src/lib/transports/chrome-extension-transport.ts +246 -0
  269. package/src/lib/utils/index.ts +14 -0
  270. package/src/lib/utils/ledger-icons.util.ts +78 -0
  271. package/test/test-setup.ts +21 -0
  272. package/test-setup.ts +63 -0
  273. package/tsconfig.build.json +11 -0
  274. package/tsconfig.json +29 -0
  275. package/tsconfig.spec.json +15 -0
  276. package/vitest.config.ts +48 -0
@@ -0,0 +1,3940 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for lib/services/transaction-builders/hedera-transaction-builder.service.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../../prettify.css" />
9
+ <link rel="stylesheet" href="../../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../../index.html">All files</a> / <a href="index.html">lib/services/transaction-builders</a> hedera-transaction-builder.service.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">81.4% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>1046/1285</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">73.63% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>81/110</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">80% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>20/25</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">81.4% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>1046/1285</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a>
199
+ <a name='L134'></a><a href='#L134'>134</a>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a>
202
+ <a name='L137'></a><a href='#L137'>137</a>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a>
244
+ <a name='L179'></a><a href='#L179'>179</a>
245
+ <a name='L180'></a><a href='#L180'>180</a>
246
+ <a name='L181'></a><a href='#L181'>181</a>
247
+ <a name='L182'></a><a href='#L182'>182</a>
248
+ <a name='L183'></a><a href='#L183'>183</a>
249
+ <a name='L184'></a><a href='#L184'>184</a>
250
+ <a name='L185'></a><a href='#L185'>185</a>
251
+ <a name='L186'></a><a href='#L186'>186</a>
252
+ <a name='L187'></a><a href='#L187'>187</a>
253
+ <a name='L188'></a><a href='#L188'>188</a>
254
+ <a name='L189'></a><a href='#L189'>189</a>
255
+ <a name='L190'></a><a href='#L190'>190</a>
256
+ <a name='L191'></a><a href='#L191'>191</a>
257
+ <a name='L192'></a><a href='#L192'>192</a>
258
+ <a name='L193'></a><a href='#L193'>193</a>
259
+ <a name='L194'></a><a href='#L194'>194</a>
260
+ <a name='L195'></a><a href='#L195'>195</a>
261
+ <a name='L196'></a><a href='#L196'>196</a>
262
+ <a name='L197'></a><a href='#L197'>197</a>
263
+ <a name='L198'></a><a href='#L198'>198</a>
264
+ <a name='L199'></a><a href='#L199'>199</a>
265
+ <a name='L200'></a><a href='#L200'>200</a>
266
+ <a name='L201'></a><a href='#L201'>201</a>
267
+ <a name='L202'></a><a href='#L202'>202</a>
268
+ <a name='L203'></a><a href='#L203'>203</a>
269
+ <a name='L204'></a><a href='#L204'>204</a>
270
+ <a name='L205'></a><a href='#L205'>205</a>
271
+ <a name='L206'></a><a href='#L206'>206</a>
272
+ <a name='L207'></a><a href='#L207'>207</a>
273
+ <a name='L208'></a><a href='#L208'>208</a>
274
+ <a name='L209'></a><a href='#L209'>209</a>
275
+ <a name='L210'></a><a href='#L210'>210</a>
276
+ <a name='L211'></a><a href='#L211'>211</a>
277
+ <a name='L212'></a><a href='#L212'>212</a>
278
+ <a name='L213'></a><a href='#L213'>213</a>
279
+ <a name='L214'></a><a href='#L214'>214</a>
280
+ <a name='L215'></a><a href='#L215'>215</a>
281
+ <a name='L216'></a><a href='#L216'>216</a>
282
+ <a name='L217'></a><a href='#L217'>217</a>
283
+ <a name='L218'></a><a href='#L218'>218</a>
284
+ <a name='L219'></a><a href='#L219'>219</a>
285
+ <a name='L220'></a><a href='#L220'>220</a>
286
+ <a name='L221'></a><a href='#L221'>221</a>
287
+ <a name='L222'></a><a href='#L222'>222</a>
288
+ <a name='L223'></a><a href='#L223'>223</a>
289
+ <a name='L224'></a><a href='#L224'>224</a>
290
+ <a name='L225'></a><a href='#L225'>225</a>
291
+ <a name='L226'></a><a href='#L226'>226</a>
292
+ <a name='L227'></a><a href='#L227'>227</a>
293
+ <a name='L228'></a><a href='#L228'>228</a>
294
+ <a name='L229'></a><a href='#L229'>229</a>
295
+ <a name='L230'></a><a href='#L230'>230</a>
296
+ <a name='L231'></a><a href='#L231'>231</a>
297
+ <a name='L232'></a><a href='#L232'>232</a>
298
+ <a name='L233'></a><a href='#L233'>233</a>
299
+ <a name='L234'></a><a href='#L234'>234</a>
300
+ <a name='L235'></a><a href='#L235'>235</a>
301
+ <a name='L236'></a><a href='#L236'>236</a>
302
+ <a name='L237'></a><a href='#L237'>237</a>
303
+ <a name='L238'></a><a href='#L238'>238</a>
304
+ <a name='L239'></a><a href='#L239'>239</a>
305
+ <a name='L240'></a><a href='#L240'>240</a>
306
+ <a name='L241'></a><a href='#L241'>241</a>
307
+ <a name='L242'></a><a href='#L242'>242</a>
308
+ <a name='L243'></a><a href='#L243'>243</a>
309
+ <a name='L244'></a><a href='#L244'>244</a>
310
+ <a name='L245'></a><a href='#L245'>245</a>
311
+ <a name='L246'></a><a href='#L246'>246</a>
312
+ <a name='L247'></a><a href='#L247'>247</a>
313
+ <a name='L248'></a><a href='#L248'>248</a>
314
+ <a name='L249'></a><a href='#L249'>249</a>
315
+ <a name='L250'></a><a href='#L250'>250</a>
316
+ <a name='L251'></a><a href='#L251'>251</a>
317
+ <a name='L252'></a><a href='#L252'>252</a>
318
+ <a name='L253'></a><a href='#L253'>253</a>
319
+ <a name='L254'></a><a href='#L254'>254</a>
320
+ <a name='L255'></a><a href='#L255'>255</a>
321
+ <a name='L256'></a><a href='#L256'>256</a>
322
+ <a name='L257'></a><a href='#L257'>257</a>
323
+ <a name='L258'></a><a href='#L258'>258</a>
324
+ <a name='L259'></a><a href='#L259'>259</a>
325
+ <a name='L260'></a><a href='#L260'>260</a>
326
+ <a name='L261'></a><a href='#L261'>261</a>
327
+ <a name='L262'></a><a href='#L262'>262</a>
328
+ <a name='L263'></a><a href='#L263'>263</a>
329
+ <a name='L264'></a><a href='#L264'>264</a>
330
+ <a name='L265'></a><a href='#L265'>265</a>
331
+ <a name='L266'></a><a href='#L266'>266</a>
332
+ <a name='L267'></a><a href='#L267'>267</a>
333
+ <a name='L268'></a><a href='#L268'>268</a>
334
+ <a name='L269'></a><a href='#L269'>269</a>
335
+ <a name='L270'></a><a href='#L270'>270</a>
336
+ <a name='L271'></a><a href='#L271'>271</a>
337
+ <a name='L272'></a><a href='#L272'>272</a>
338
+ <a name='L273'></a><a href='#L273'>273</a>
339
+ <a name='L274'></a><a href='#L274'>274</a>
340
+ <a name='L275'></a><a href='#L275'>275</a>
341
+ <a name='L276'></a><a href='#L276'>276</a>
342
+ <a name='L277'></a><a href='#L277'>277</a>
343
+ <a name='L278'></a><a href='#L278'>278</a>
344
+ <a name='L279'></a><a href='#L279'>279</a>
345
+ <a name='L280'></a><a href='#L280'>280</a>
346
+ <a name='L281'></a><a href='#L281'>281</a>
347
+ <a name='L282'></a><a href='#L282'>282</a>
348
+ <a name='L283'></a><a href='#L283'>283</a>
349
+ <a name='L284'></a><a href='#L284'>284</a>
350
+ <a name='L285'></a><a href='#L285'>285</a>
351
+ <a name='L286'></a><a href='#L286'>286</a>
352
+ <a name='L287'></a><a href='#L287'>287</a>
353
+ <a name='L288'></a><a href='#L288'>288</a>
354
+ <a name='L289'></a><a href='#L289'>289</a>
355
+ <a name='L290'></a><a href='#L290'>290</a>
356
+ <a name='L291'></a><a href='#L291'>291</a>
357
+ <a name='L292'></a><a href='#L292'>292</a>
358
+ <a name='L293'></a><a href='#L293'>293</a>
359
+ <a name='L294'></a><a href='#L294'>294</a>
360
+ <a name='L295'></a><a href='#L295'>295</a>
361
+ <a name='L296'></a><a href='#L296'>296</a>
362
+ <a name='L297'></a><a href='#L297'>297</a>
363
+ <a name='L298'></a><a href='#L298'>298</a>
364
+ <a name='L299'></a><a href='#L299'>299</a>
365
+ <a name='L300'></a><a href='#L300'>300</a>
366
+ <a name='L301'></a><a href='#L301'>301</a>
367
+ <a name='L302'></a><a href='#L302'>302</a>
368
+ <a name='L303'></a><a href='#L303'>303</a>
369
+ <a name='L304'></a><a href='#L304'>304</a>
370
+ <a name='L305'></a><a href='#L305'>305</a>
371
+ <a name='L306'></a><a href='#L306'>306</a>
372
+ <a name='L307'></a><a href='#L307'>307</a>
373
+ <a name='L308'></a><a href='#L308'>308</a>
374
+ <a name='L309'></a><a href='#L309'>309</a>
375
+ <a name='L310'></a><a href='#L310'>310</a>
376
+ <a name='L311'></a><a href='#L311'>311</a>
377
+ <a name='L312'></a><a href='#L312'>312</a>
378
+ <a name='L313'></a><a href='#L313'>313</a>
379
+ <a name='L314'></a><a href='#L314'>314</a>
380
+ <a name='L315'></a><a href='#L315'>315</a>
381
+ <a name='L316'></a><a href='#L316'>316</a>
382
+ <a name='L317'></a><a href='#L317'>317</a>
383
+ <a name='L318'></a><a href='#L318'>318</a>
384
+ <a name='L319'></a><a href='#L319'>319</a>
385
+ <a name='L320'></a><a href='#L320'>320</a>
386
+ <a name='L321'></a><a href='#L321'>321</a>
387
+ <a name='L322'></a><a href='#L322'>322</a>
388
+ <a name='L323'></a><a href='#L323'>323</a>
389
+ <a name='L324'></a><a href='#L324'>324</a>
390
+ <a name='L325'></a><a href='#L325'>325</a>
391
+ <a name='L326'></a><a href='#L326'>326</a>
392
+ <a name='L327'></a><a href='#L327'>327</a>
393
+ <a name='L328'></a><a href='#L328'>328</a>
394
+ <a name='L329'></a><a href='#L329'>329</a>
395
+ <a name='L330'></a><a href='#L330'>330</a>
396
+ <a name='L331'></a><a href='#L331'>331</a>
397
+ <a name='L332'></a><a href='#L332'>332</a>
398
+ <a name='L333'></a><a href='#L333'>333</a>
399
+ <a name='L334'></a><a href='#L334'>334</a>
400
+ <a name='L335'></a><a href='#L335'>335</a>
401
+ <a name='L336'></a><a href='#L336'>336</a>
402
+ <a name='L337'></a><a href='#L337'>337</a>
403
+ <a name='L338'></a><a href='#L338'>338</a>
404
+ <a name='L339'></a><a href='#L339'>339</a>
405
+ <a name='L340'></a><a href='#L340'>340</a>
406
+ <a name='L341'></a><a href='#L341'>341</a>
407
+ <a name='L342'></a><a href='#L342'>342</a>
408
+ <a name='L343'></a><a href='#L343'>343</a>
409
+ <a name='L344'></a><a href='#L344'>344</a>
410
+ <a name='L345'></a><a href='#L345'>345</a>
411
+ <a name='L346'></a><a href='#L346'>346</a>
412
+ <a name='L347'></a><a href='#L347'>347</a>
413
+ <a name='L348'></a><a href='#L348'>348</a>
414
+ <a name='L349'></a><a href='#L349'>349</a>
415
+ <a name='L350'></a><a href='#L350'>350</a>
416
+ <a name='L351'></a><a href='#L351'>351</a>
417
+ <a name='L352'></a><a href='#L352'>352</a>
418
+ <a name='L353'></a><a href='#L353'>353</a>
419
+ <a name='L354'></a><a href='#L354'>354</a>
420
+ <a name='L355'></a><a href='#L355'>355</a>
421
+ <a name='L356'></a><a href='#L356'>356</a>
422
+ <a name='L357'></a><a href='#L357'>357</a>
423
+ <a name='L358'></a><a href='#L358'>358</a>
424
+ <a name='L359'></a><a href='#L359'>359</a>
425
+ <a name='L360'></a><a href='#L360'>360</a>
426
+ <a name='L361'></a><a href='#L361'>361</a>
427
+ <a name='L362'></a><a href='#L362'>362</a>
428
+ <a name='L363'></a><a href='#L363'>363</a>
429
+ <a name='L364'></a><a href='#L364'>364</a>
430
+ <a name='L365'></a><a href='#L365'>365</a>
431
+ <a name='L366'></a><a href='#L366'>366</a>
432
+ <a name='L367'></a><a href='#L367'>367</a>
433
+ <a name='L368'></a><a href='#L368'>368</a>
434
+ <a name='L369'></a><a href='#L369'>369</a>
435
+ <a name='L370'></a><a href='#L370'>370</a>
436
+ <a name='L371'></a><a href='#L371'>371</a>
437
+ <a name='L372'></a><a href='#L372'>372</a>
438
+ <a name='L373'></a><a href='#L373'>373</a>
439
+ <a name='L374'></a><a href='#L374'>374</a>
440
+ <a name='L375'></a><a href='#L375'>375</a>
441
+ <a name='L376'></a><a href='#L376'>376</a>
442
+ <a name='L377'></a><a href='#L377'>377</a>
443
+ <a name='L378'></a><a href='#L378'>378</a>
444
+ <a name='L379'></a><a href='#L379'>379</a>
445
+ <a name='L380'></a><a href='#L380'>380</a>
446
+ <a name='L381'></a><a href='#L381'>381</a>
447
+ <a name='L382'></a><a href='#L382'>382</a>
448
+ <a name='L383'></a><a href='#L383'>383</a>
449
+ <a name='L384'></a><a href='#L384'>384</a>
450
+ <a name='L385'></a><a href='#L385'>385</a>
451
+ <a name='L386'></a><a href='#L386'>386</a>
452
+ <a name='L387'></a><a href='#L387'>387</a>
453
+ <a name='L388'></a><a href='#L388'>388</a>
454
+ <a name='L389'></a><a href='#L389'>389</a>
455
+ <a name='L390'></a><a href='#L390'>390</a>
456
+ <a name='L391'></a><a href='#L391'>391</a>
457
+ <a name='L392'></a><a href='#L392'>392</a>
458
+ <a name='L393'></a><a href='#L393'>393</a>
459
+ <a name='L394'></a><a href='#L394'>394</a>
460
+ <a name='L395'></a><a href='#L395'>395</a>
461
+ <a name='L396'></a><a href='#L396'>396</a>
462
+ <a name='L397'></a><a href='#L397'>397</a>
463
+ <a name='L398'></a><a href='#L398'>398</a>
464
+ <a name='L399'></a><a href='#L399'>399</a>
465
+ <a name='L400'></a><a href='#L400'>400</a>
466
+ <a name='L401'></a><a href='#L401'>401</a>
467
+ <a name='L402'></a><a href='#L402'>402</a>
468
+ <a name='L403'></a><a href='#L403'>403</a>
469
+ <a name='L404'></a><a href='#L404'>404</a>
470
+ <a name='L405'></a><a href='#L405'>405</a>
471
+ <a name='L406'></a><a href='#L406'>406</a>
472
+ <a name='L407'></a><a href='#L407'>407</a>
473
+ <a name='L408'></a><a href='#L408'>408</a>
474
+ <a name='L409'></a><a href='#L409'>409</a>
475
+ <a name='L410'></a><a href='#L410'>410</a>
476
+ <a name='L411'></a><a href='#L411'>411</a>
477
+ <a name='L412'></a><a href='#L412'>412</a>
478
+ <a name='L413'></a><a href='#L413'>413</a>
479
+ <a name='L414'></a><a href='#L414'>414</a>
480
+ <a name='L415'></a><a href='#L415'>415</a>
481
+ <a name='L416'></a><a href='#L416'>416</a>
482
+ <a name='L417'></a><a href='#L417'>417</a>
483
+ <a name='L418'></a><a href='#L418'>418</a>
484
+ <a name='L419'></a><a href='#L419'>419</a>
485
+ <a name='L420'></a><a href='#L420'>420</a>
486
+ <a name='L421'></a><a href='#L421'>421</a>
487
+ <a name='L422'></a><a href='#L422'>422</a>
488
+ <a name='L423'></a><a href='#L423'>423</a>
489
+ <a name='L424'></a><a href='#L424'>424</a>
490
+ <a name='L425'></a><a href='#L425'>425</a>
491
+ <a name='L426'></a><a href='#L426'>426</a>
492
+ <a name='L427'></a><a href='#L427'>427</a>
493
+ <a name='L428'></a><a href='#L428'>428</a>
494
+ <a name='L429'></a><a href='#L429'>429</a>
495
+ <a name='L430'></a><a href='#L430'>430</a>
496
+ <a name='L431'></a><a href='#L431'>431</a>
497
+ <a name='L432'></a><a href='#L432'>432</a>
498
+ <a name='L433'></a><a href='#L433'>433</a>
499
+ <a name='L434'></a><a href='#L434'>434</a>
500
+ <a name='L435'></a><a href='#L435'>435</a>
501
+ <a name='L436'></a><a href='#L436'>436</a>
502
+ <a name='L437'></a><a href='#L437'>437</a>
503
+ <a name='L438'></a><a href='#L438'>438</a>
504
+ <a name='L439'></a><a href='#L439'>439</a>
505
+ <a name='L440'></a><a href='#L440'>440</a>
506
+ <a name='L441'></a><a href='#L441'>441</a>
507
+ <a name='L442'></a><a href='#L442'>442</a>
508
+ <a name='L443'></a><a href='#L443'>443</a>
509
+ <a name='L444'></a><a href='#L444'>444</a>
510
+ <a name='L445'></a><a href='#L445'>445</a>
511
+ <a name='L446'></a><a href='#L446'>446</a>
512
+ <a name='L447'></a><a href='#L447'>447</a>
513
+ <a name='L448'></a><a href='#L448'>448</a>
514
+ <a name='L449'></a><a href='#L449'>449</a>
515
+ <a name='L450'></a><a href='#L450'>450</a>
516
+ <a name='L451'></a><a href='#L451'>451</a>
517
+ <a name='L452'></a><a href='#L452'>452</a>
518
+ <a name='L453'></a><a href='#L453'>453</a>
519
+ <a name='L454'></a><a href='#L454'>454</a>
520
+ <a name='L455'></a><a href='#L455'>455</a>
521
+ <a name='L456'></a><a href='#L456'>456</a>
522
+ <a name='L457'></a><a href='#L457'>457</a>
523
+ <a name='L458'></a><a href='#L458'>458</a>
524
+ <a name='L459'></a><a href='#L459'>459</a>
525
+ <a name='L460'></a><a href='#L460'>460</a>
526
+ <a name='L461'></a><a href='#L461'>461</a>
527
+ <a name='L462'></a><a href='#L462'>462</a>
528
+ <a name='L463'></a><a href='#L463'>463</a>
529
+ <a name='L464'></a><a href='#L464'>464</a>
530
+ <a name='L465'></a><a href='#L465'>465</a>
531
+ <a name='L466'></a><a href='#L466'>466</a>
532
+ <a name='L467'></a><a href='#L467'>467</a>
533
+ <a name='L468'></a><a href='#L468'>468</a>
534
+ <a name='L469'></a><a href='#L469'>469</a>
535
+ <a name='L470'></a><a href='#L470'>470</a>
536
+ <a name='L471'></a><a href='#L471'>471</a>
537
+ <a name='L472'></a><a href='#L472'>472</a>
538
+ <a name='L473'></a><a href='#L473'>473</a>
539
+ <a name='L474'></a><a href='#L474'>474</a>
540
+ <a name='L475'></a><a href='#L475'>475</a>
541
+ <a name='L476'></a><a href='#L476'>476</a>
542
+ <a name='L477'></a><a href='#L477'>477</a>
543
+ <a name='L478'></a><a href='#L478'>478</a>
544
+ <a name='L479'></a><a href='#L479'>479</a>
545
+ <a name='L480'></a><a href='#L480'>480</a>
546
+ <a name='L481'></a><a href='#L481'>481</a>
547
+ <a name='L482'></a><a href='#L482'>482</a>
548
+ <a name='L483'></a><a href='#L483'>483</a>
549
+ <a name='L484'></a><a href='#L484'>484</a>
550
+ <a name='L485'></a><a href='#L485'>485</a>
551
+ <a name='L486'></a><a href='#L486'>486</a>
552
+ <a name='L487'></a><a href='#L487'>487</a>
553
+ <a name='L488'></a><a href='#L488'>488</a>
554
+ <a name='L489'></a><a href='#L489'>489</a>
555
+ <a name='L490'></a><a href='#L490'>490</a>
556
+ <a name='L491'></a><a href='#L491'>491</a>
557
+ <a name='L492'></a><a href='#L492'>492</a>
558
+ <a name='L493'></a><a href='#L493'>493</a>
559
+ <a name='L494'></a><a href='#L494'>494</a>
560
+ <a name='L495'></a><a href='#L495'>495</a>
561
+ <a name='L496'></a><a href='#L496'>496</a>
562
+ <a name='L497'></a><a href='#L497'>497</a>
563
+ <a name='L498'></a><a href='#L498'>498</a>
564
+ <a name='L499'></a><a href='#L499'>499</a>
565
+ <a name='L500'></a><a href='#L500'>500</a>
566
+ <a name='L501'></a><a href='#L501'>501</a>
567
+ <a name='L502'></a><a href='#L502'>502</a>
568
+ <a name='L503'></a><a href='#L503'>503</a>
569
+ <a name='L504'></a><a href='#L504'>504</a>
570
+ <a name='L505'></a><a href='#L505'>505</a>
571
+ <a name='L506'></a><a href='#L506'>506</a>
572
+ <a name='L507'></a><a href='#L507'>507</a>
573
+ <a name='L508'></a><a href='#L508'>508</a>
574
+ <a name='L509'></a><a href='#L509'>509</a>
575
+ <a name='L510'></a><a href='#L510'>510</a>
576
+ <a name='L511'></a><a href='#L511'>511</a>
577
+ <a name='L512'></a><a href='#L512'>512</a>
578
+ <a name='L513'></a><a href='#L513'>513</a>
579
+ <a name='L514'></a><a href='#L514'>514</a>
580
+ <a name='L515'></a><a href='#L515'>515</a>
581
+ <a name='L516'></a><a href='#L516'>516</a>
582
+ <a name='L517'></a><a href='#L517'>517</a>
583
+ <a name='L518'></a><a href='#L518'>518</a>
584
+ <a name='L519'></a><a href='#L519'>519</a>
585
+ <a name='L520'></a><a href='#L520'>520</a>
586
+ <a name='L521'></a><a href='#L521'>521</a>
587
+ <a name='L522'></a><a href='#L522'>522</a>
588
+ <a name='L523'></a><a href='#L523'>523</a>
589
+ <a name='L524'></a><a href='#L524'>524</a>
590
+ <a name='L525'></a><a href='#L525'>525</a>
591
+ <a name='L526'></a><a href='#L526'>526</a>
592
+ <a name='L527'></a><a href='#L527'>527</a>
593
+ <a name='L528'></a><a href='#L528'>528</a>
594
+ <a name='L529'></a><a href='#L529'>529</a>
595
+ <a name='L530'></a><a href='#L530'>530</a>
596
+ <a name='L531'></a><a href='#L531'>531</a>
597
+ <a name='L532'></a><a href='#L532'>532</a>
598
+ <a name='L533'></a><a href='#L533'>533</a>
599
+ <a name='L534'></a><a href='#L534'>534</a>
600
+ <a name='L535'></a><a href='#L535'>535</a>
601
+ <a name='L536'></a><a href='#L536'>536</a>
602
+ <a name='L537'></a><a href='#L537'>537</a>
603
+ <a name='L538'></a><a href='#L538'>538</a>
604
+ <a name='L539'></a><a href='#L539'>539</a>
605
+ <a name='L540'></a><a href='#L540'>540</a>
606
+ <a name='L541'></a><a href='#L541'>541</a>
607
+ <a name='L542'></a><a href='#L542'>542</a>
608
+ <a name='L543'></a><a href='#L543'>543</a>
609
+ <a name='L544'></a><a href='#L544'>544</a>
610
+ <a name='L545'></a><a href='#L545'>545</a>
611
+ <a name='L546'></a><a href='#L546'>546</a>
612
+ <a name='L547'></a><a href='#L547'>547</a>
613
+ <a name='L548'></a><a href='#L548'>548</a>
614
+ <a name='L549'></a><a href='#L549'>549</a>
615
+ <a name='L550'></a><a href='#L550'>550</a>
616
+ <a name='L551'></a><a href='#L551'>551</a>
617
+ <a name='L552'></a><a href='#L552'>552</a>
618
+ <a name='L553'></a><a href='#L553'>553</a>
619
+ <a name='L554'></a><a href='#L554'>554</a>
620
+ <a name='L555'></a><a href='#L555'>555</a>
621
+ <a name='L556'></a><a href='#L556'>556</a>
622
+ <a name='L557'></a><a href='#L557'>557</a>
623
+ <a name='L558'></a><a href='#L558'>558</a>
624
+ <a name='L559'></a><a href='#L559'>559</a>
625
+ <a name='L560'></a><a href='#L560'>560</a>
626
+ <a name='L561'></a><a href='#L561'>561</a>
627
+ <a name='L562'></a><a href='#L562'>562</a>
628
+ <a name='L563'></a><a href='#L563'>563</a>
629
+ <a name='L564'></a><a href='#L564'>564</a>
630
+ <a name='L565'></a><a href='#L565'>565</a>
631
+ <a name='L566'></a><a href='#L566'>566</a>
632
+ <a name='L567'></a><a href='#L567'>567</a>
633
+ <a name='L568'></a><a href='#L568'>568</a>
634
+ <a name='L569'></a><a href='#L569'>569</a>
635
+ <a name='L570'></a><a href='#L570'>570</a>
636
+ <a name='L571'></a><a href='#L571'>571</a>
637
+ <a name='L572'></a><a href='#L572'>572</a>
638
+ <a name='L573'></a><a href='#L573'>573</a>
639
+ <a name='L574'></a><a href='#L574'>574</a>
640
+ <a name='L575'></a><a href='#L575'>575</a>
641
+ <a name='L576'></a><a href='#L576'>576</a>
642
+ <a name='L577'></a><a href='#L577'>577</a>
643
+ <a name='L578'></a><a href='#L578'>578</a>
644
+ <a name='L579'></a><a href='#L579'>579</a>
645
+ <a name='L580'></a><a href='#L580'>580</a>
646
+ <a name='L581'></a><a href='#L581'>581</a>
647
+ <a name='L582'></a><a href='#L582'>582</a>
648
+ <a name='L583'></a><a href='#L583'>583</a>
649
+ <a name='L584'></a><a href='#L584'>584</a>
650
+ <a name='L585'></a><a href='#L585'>585</a>
651
+ <a name='L586'></a><a href='#L586'>586</a>
652
+ <a name='L587'></a><a href='#L587'>587</a>
653
+ <a name='L588'></a><a href='#L588'>588</a>
654
+ <a name='L589'></a><a href='#L589'>589</a>
655
+ <a name='L590'></a><a href='#L590'>590</a>
656
+ <a name='L591'></a><a href='#L591'>591</a>
657
+ <a name='L592'></a><a href='#L592'>592</a>
658
+ <a name='L593'></a><a href='#L593'>593</a>
659
+ <a name='L594'></a><a href='#L594'>594</a>
660
+ <a name='L595'></a><a href='#L595'>595</a>
661
+ <a name='L596'></a><a href='#L596'>596</a>
662
+ <a name='L597'></a><a href='#L597'>597</a>
663
+ <a name='L598'></a><a href='#L598'>598</a>
664
+ <a name='L599'></a><a href='#L599'>599</a>
665
+ <a name='L600'></a><a href='#L600'>600</a>
666
+ <a name='L601'></a><a href='#L601'>601</a>
667
+ <a name='L602'></a><a href='#L602'>602</a>
668
+ <a name='L603'></a><a href='#L603'>603</a>
669
+ <a name='L604'></a><a href='#L604'>604</a>
670
+ <a name='L605'></a><a href='#L605'>605</a>
671
+ <a name='L606'></a><a href='#L606'>606</a>
672
+ <a name='L607'></a><a href='#L607'>607</a>
673
+ <a name='L608'></a><a href='#L608'>608</a>
674
+ <a name='L609'></a><a href='#L609'>609</a>
675
+ <a name='L610'></a><a href='#L610'>610</a>
676
+ <a name='L611'></a><a href='#L611'>611</a>
677
+ <a name='L612'></a><a href='#L612'>612</a>
678
+ <a name='L613'></a><a href='#L613'>613</a>
679
+ <a name='L614'></a><a href='#L614'>614</a>
680
+ <a name='L615'></a><a href='#L615'>615</a>
681
+ <a name='L616'></a><a href='#L616'>616</a>
682
+ <a name='L617'></a><a href='#L617'>617</a>
683
+ <a name='L618'></a><a href='#L618'>618</a>
684
+ <a name='L619'></a><a href='#L619'>619</a>
685
+ <a name='L620'></a><a href='#L620'>620</a>
686
+ <a name='L621'></a><a href='#L621'>621</a>
687
+ <a name='L622'></a><a href='#L622'>622</a>
688
+ <a name='L623'></a><a href='#L623'>623</a>
689
+ <a name='L624'></a><a href='#L624'>624</a>
690
+ <a name='L625'></a><a href='#L625'>625</a>
691
+ <a name='L626'></a><a href='#L626'>626</a>
692
+ <a name='L627'></a><a href='#L627'>627</a>
693
+ <a name='L628'></a><a href='#L628'>628</a>
694
+ <a name='L629'></a><a href='#L629'>629</a>
695
+ <a name='L630'></a><a href='#L630'>630</a>
696
+ <a name='L631'></a><a href='#L631'>631</a>
697
+ <a name='L632'></a><a href='#L632'>632</a>
698
+ <a name='L633'></a><a href='#L633'>633</a>
699
+ <a name='L634'></a><a href='#L634'>634</a>
700
+ <a name='L635'></a><a href='#L635'>635</a>
701
+ <a name='L636'></a><a href='#L636'>636</a>
702
+ <a name='L637'></a><a href='#L637'>637</a>
703
+ <a name='L638'></a><a href='#L638'>638</a>
704
+ <a name='L639'></a><a href='#L639'>639</a>
705
+ <a name='L640'></a><a href='#L640'>640</a>
706
+ <a name='L641'></a><a href='#L641'>641</a>
707
+ <a name='L642'></a><a href='#L642'>642</a>
708
+ <a name='L643'></a><a href='#L643'>643</a>
709
+ <a name='L644'></a><a href='#L644'>644</a>
710
+ <a name='L645'></a><a href='#L645'>645</a>
711
+ <a name='L646'></a><a href='#L646'>646</a>
712
+ <a name='L647'></a><a href='#L647'>647</a>
713
+ <a name='L648'></a><a href='#L648'>648</a>
714
+ <a name='L649'></a><a href='#L649'>649</a>
715
+ <a name='L650'></a><a href='#L650'>650</a>
716
+ <a name='L651'></a><a href='#L651'>651</a>
717
+ <a name='L652'></a><a href='#L652'>652</a>
718
+ <a name='L653'></a><a href='#L653'>653</a>
719
+ <a name='L654'></a><a href='#L654'>654</a>
720
+ <a name='L655'></a><a href='#L655'>655</a>
721
+ <a name='L656'></a><a href='#L656'>656</a>
722
+ <a name='L657'></a><a href='#L657'>657</a>
723
+ <a name='L658'></a><a href='#L658'>658</a>
724
+ <a name='L659'></a><a href='#L659'>659</a>
725
+ <a name='L660'></a><a href='#L660'>660</a>
726
+ <a name='L661'></a><a href='#L661'>661</a>
727
+ <a name='L662'></a><a href='#L662'>662</a>
728
+ <a name='L663'></a><a href='#L663'>663</a>
729
+ <a name='L664'></a><a href='#L664'>664</a>
730
+ <a name='L665'></a><a href='#L665'>665</a>
731
+ <a name='L666'></a><a href='#L666'>666</a>
732
+ <a name='L667'></a><a href='#L667'>667</a>
733
+ <a name='L668'></a><a href='#L668'>668</a>
734
+ <a name='L669'></a><a href='#L669'>669</a>
735
+ <a name='L670'></a><a href='#L670'>670</a>
736
+ <a name='L671'></a><a href='#L671'>671</a>
737
+ <a name='L672'></a><a href='#L672'>672</a>
738
+ <a name='L673'></a><a href='#L673'>673</a>
739
+ <a name='L674'></a><a href='#L674'>674</a>
740
+ <a name='L675'></a><a href='#L675'>675</a>
741
+ <a name='L676'></a><a href='#L676'>676</a>
742
+ <a name='L677'></a><a href='#L677'>677</a>
743
+ <a name='L678'></a><a href='#L678'>678</a>
744
+ <a name='L679'></a><a href='#L679'>679</a>
745
+ <a name='L680'></a><a href='#L680'>680</a>
746
+ <a name='L681'></a><a href='#L681'>681</a>
747
+ <a name='L682'></a><a href='#L682'>682</a>
748
+ <a name='L683'></a><a href='#L683'>683</a>
749
+ <a name='L684'></a><a href='#L684'>684</a>
750
+ <a name='L685'></a><a href='#L685'>685</a>
751
+ <a name='L686'></a><a href='#L686'>686</a>
752
+ <a name='L687'></a><a href='#L687'>687</a>
753
+ <a name='L688'></a><a href='#L688'>688</a>
754
+ <a name='L689'></a><a href='#L689'>689</a>
755
+ <a name='L690'></a><a href='#L690'>690</a>
756
+ <a name='L691'></a><a href='#L691'>691</a>
757
+ <a name='L692'></a><a href='#L692'>692</a>
758
+ <a name='L693'></a><a href='#L693'>693</a>
759
+ <a name='L694'></a><a href='#L694'>694</a>
760
+ <a name='L695'></a><a href='#L695'>695</a>
761
+ <a name='L696'></a><a href='#L696'>696</a>
762
+ <a name='L697'></a><a href='#L697'>697</a>
763
+ <a name='L698'></a><a href='#L698'>698</a>
764
+ <a name='L699'></a><a href='#L699'>699</a>
765
+ <a name='L700'></a><a href='#L700'>700</a>
766
+ <a name='L701'></a><a href='#L701'>701</a>
767
+ <a name='L702'></a><a href='#L702'>702</a>
768
+ <a name='L703'></a><a href='#L703'>703</a>
769
+ <a name='L704'></a><a href='#L704'>704</a>
770
+ <a name='L705'></a><a href='#L705'>705</a>
771
+ <a name='L706'></a><a href='#L706'>706</a>
772
+ <a name='L707'></a><a href='#L707'>707</a>
773
+ <a name='L708'></a><a href='#L708'>708</a>
774
+ <a name='L709'></a><a href='#L709'>709</a>
775
+ <a name='L710'></a><a href='#L710'>710</a>
776
+ <a name='L711'></a><a href='#L711'>711</a>
777
+ <a name='L712'></a><a href='#L712'>712</a>
778
+ <a name='L713'></a><a href='#L713'>713</a>
779
+ <a name='L714'></a><a href='#L714'>714</a>
780
+ <a name='L715'></a><a href='#L715'>715</a>
781
+ <a name='L716'></a><a href='#L716'>716</a>
782
+ <a name='L717'></a><a href='#L717'>717</a>
783
+ <a name='L718'></a><a href='#L718'>718</a>
784
+ <a name='L719'></a><a href='#L719'>719</a>
785
+ <a name='L720'></a><a href='#L720'>720</a>
786
+ <a name='L721'></a><a href='#L721'>721</a>
787
+ <a name='L722'></a><a href='#L722'>722</a>
788
+ <a name='L723'></a><a href='#L723'>723</a>
789
+ <a name='L724'></a><a href='#L724'>724</a>
790
+ <a name='L725'></a><a href='#L725'>725</a>
791
+ <a name='L726'></a><a href='#L726'>726</a>
792
+ <a name='L727'></a><a href='#L727'>727</a>
793
+ <a name='L728'></a><a href='#L728'>728</a>
794
+ <a name='L729'></a><a href='#L729'>729</a>
795
+ <a name='L730'></a><a href='#L730'>730</a>
796
+ <a name='L731'></a><a href='#L731'>731</a>
797
+ <a name='L732'></a><a href='#L732'>732</a>
798
+ <a name='L733'></a><a href='#L733'>733</a>
799
+ <a name='L734'></a><a href='#L734'>734</a>
800
+ <a name='L735'></a><a href='#L735'>735</a>
801
+ <a name='L736'></a><a href='#L736'>736</a>
802
+ <a name='L737'></a><a href='#L737'>737</a>
803
+ <a name='L738'></a><a href='#L738'>738</a>
804
+ <a name='L739'></a><a href='#L739'>739</a>
805
+ <a name='L740'></a><a href='#L740'>740</a>
806
+ <a name='L741'></a><a href='#L741'>741</a>
807
+ <a name='L742'></a><a href='#L742'>742</a>
808
+ <a name='L743'></a><a href='#L743'>743</a>
809
+ <a name='L744'></a><a href='#L744'>744</a>
810
+ <a name='L745'></a><a href='#L745'>745</a>
811
+ <a name='L746'></a><a href='#L746'>746</a>
812
+ <a name='L747'></a><a href='#L747'>747</a>
813
+ <a name='L748'></a><a href='#L748'>748</a>
814
+ <a name='L749'></a><a href='#L749'>749</a>
815
+ <a name='L750'></a><a href='#L750'>750</a>
816
+ <a name='L751'></a><a href='#L751'>751</a>
817
+ <a name='L752'></a><a href='#L752'>752</a>
818
+ <a name='L753'></a><a href='#L753'>753</a>
819
+ <a name='L754'></a><a href='#L754'>754</a>
820
+ <a name='L755'></a><a href='#L755'>755</a>
821
+ <a name='L756'></a><a href='#L756'>756</a>
822
+ <a name='L757'></a><a href='#L757'>757</a>
823
+ <a name='L758'></a><a href='#L758'>758</a>
824
+ <a name='L759'></a><a href='#L759'>759</a>
825
+ <a name='L760'></a><a href='#L760'>760</a>
826
+ <a name='L761'></a><a href='#L761'>761</a>
827
+ <a name='L762'></a><a href='#L762'>762</a>
828
+ <a name='L763'></a><a href='#L763'>763</a>
829
+ <a name='L764'></a><a href='#L764'>764</a>
830
+ <a name='L765'></a><a href='#L765'>765</a>
831
+ <a name='L766'></a><a href='#L766'>766</a>
832
+ <a name='L767'></a><a href='#L767'>767</a>
833
+ <a name='L768'></a><a href='#L768'>768</a>
834
+ <a name='L769'></a><a href='#L769'>769</a>
835
+ <a name='L770'></a><a href='#L770'>770</a>
836
+ <a name='L771'></a><a href='#L771'>771</a>
837
+ <a name='L772'></a><a href='#L772'>772</a>
838
+ <a name='L773'></a><a href='#L773'>773</a>
839
+ <a name='L774'></a><a href='#L774'>774</a>
840
+ <a name='L775'></a><a href='#L775'>775</a>
841
+ <a name='L776'></a><a href='#L776'>776</a>
842
+ <a name='L777'></a><a href='#L777'>777</a>
843
+ <a name='L778'></a><a href='#L778'>778</a>
844
+ <a name='L779'></a><a href='#L779'>779</a>
845
+ <a name='L780'></a><a href='#L780'>780</a>
846
+ <a name='L781'></a><a href='#L781'>781</a>
847
+ <a name='L782'></a><a href='#L782'>782</a>
848
+ <a name='L783'></a><a href='#L783'>783</a>
849
+ <a name='L784'></a><a href='#L784'>784</a>
850
+ <a name='L785'></a><a href='#L785'>785</a>
851
+ <a name='L786'></a><a href='#L786'>786</a>
852
+ <a name='L787'></a><a href='#L787'>787</a>
853
+ <a name='L788'></a><a href='#L788'>788</a>
854
+ <a name='L789'></a><a href='#L789'>789</a>
855
+ <a name='L790'></a><a href='#L790'>790</a>
856
+ <a name='L791'></a><a href='#L791'>791</a>
857
+ <a name='L792'></a><a href='#L792'>792</a>
858
+ <a name='L793'></a><a href='#L793'>793</a>
859
+ <a name='L794'></a><a href='#L794'>794</a>
860
+ <a name='L795'></a><a href='#L795'>795</a>
861
+ <a name='L796'></a><a href='#L796'>796</a>
862
+ <a name='L797'></a><a href='#L797'>797</a>
863
+ <a name='L798'></a><a href='#L798'>798</a>
864
+ <a name='L799'></a><a href='#L799'>799</a>
865
+ <a name='L800'></a><a href='#L800'>800</a>
866
+ <a name='L801'></a><a href='#L801'>801</a>
867
+ <a name='L802'></a><a href='#L802'>802</a>
868
+ <a name='L803'></a><a href='#L803'>803</a>
869
+ <a name='L804'></a><a href='#L804'>804</a>
870
+ <a name='L805'></a><a href='#L805'>805</a>
871
+ <a name='L806'></a><a href='#L806'>806</a>
872
+ <a name='L807'></a><a href='#L807'>807</a>
873
+ <a name='L808'></a><a href='#L808'>808</a>
874
+ <a name='L809'></a><a href='#L809'>809</a>
875
+ <a name='L810'></a><a href='#L810'>810</a>
876
+ <a name='L811'></a><a href='#L811'>811</a>
877
+ <a name='L812'></a><a href='#L812'>812</a>
878
+ <a name='L813'></a><a href='#L813'>813</a>
879
+ <a name='L814'></a><a href='#L814'>814</a>
880
+ <a name='L815'></a><a href='#L815'>815</a>
881
+ <a name='L816'></a><a href='#L816'>816</a>
882
+ <a name='L817'></a><a href='#L817'>817</a>
883
+ <a name='L818'></a><a href='#L818'>818</a>
884
+ <a name='L819'></a><a href='#L819'>819</a>
885
+ <a name='L820'></a><a href='#L820'>820</a>
886
+ <a name='L821'></a><a href='#L821'>821</a>
887
+ <a name='L822'></a><a href='#L822'>822</a>
888
+ <a name='L823'></a><a href='#L823'>823</a>
889
+ <a name='L824'></a><a href='#L824'>824</a>
890
+ <a name='L825'></a><a href='#L825'>825</a>
891
+ <a name='L826'></a><a href='#L826'>826</a>
892
+ <a name='L827'></a><a href='#L827'>827</a>
893
+ <a name='L828'></a><a href='#L828'>828</a>
894
+ <a name='L829'></a><a href='#L829'>829</a>
895
+ <a name='L830'></a><a href='#L830'>830</a>
896
+ <a name='L831'></a><a href='#L831'>831</a>
897
+ <a name='L832'></a><a href='#L832'>832</a>
898
+ <a name='L833'></a><a href='#L833'>833</a>
899
+ <a name='L834'></a><a href='#L834'>834</a>
900
+ <a name='L835'></a><a href='#L835'>835</a>
901
+ <a name='L836'></a><a href='#L836'>836</a>
902
+ <a name='L837'></a><a href='#L837'>837</a>
903
+ <a name='L838'></a><a href='#L838'>838</a>
904
+ <a name='L839'></a><a href='#L839'>839</a>
905
+ <a name='L840'></a><a href='#L840'>840</a>
906
+ <a name='L841'></a><a href='#L841'>841</a>
907
+ <a name='L842'></a><a href='#L842'>842</a>
908
+ <a name='L843'></a><a href='#L843'>843</a>
909
+ <a name='L844'></a><a href='#L844'>844</a>
910
+ <a name='L845'></a><a href='#L845'>845</a>
911
+ <a name='L846'></a><a href='#L846'>846</a>
912
+ <a name='L847'></a><a href='#L847'>847</a>
913
+ <a name='L848'></a><a href='#L848'>848</a>
914
+ <a name='L849'></a><a href='#L849'>849</a>
915
+ <a name='L850'></a><a href='#L850'>850</a>
916
+ <a name='L851'></a><a href='#L851'>851</a>
917
+ <a name='L852'></a><a href='#L852'>852</a>
918
+ <a name='L853'></a><a href='#L853'>853</a>
919
+ <a name='L854'></a><a href='#L854'>854</a>
920
+ <a name='L855'></a><a href='#L855'>855</a>
921
+ <a name='L856'></a><a href='#L856'>856</a>
922
+ <a name='L857'></a><a href='#L857'>857</a>
923
+ <a name='L858'></a><a href='#L858'>858</a>
924
+ <a name='L859'></a><a href='#L859'>859</a>
925
+ <a name='L860'></a><a href='#L860'>860</a>
926
+ <a name='L861'></a><a href='#L861'>861</a>
927
+ <a name='L862'></a><a href='#L862'>862</a>
928
+ <a name='L863'></a><a href='#L863'>863</a>
929
+ <a name='L864'></a><a href='#L864'>864</a>
930
+ <a name='L865'></a><a href='#L865'>865</a>
931
+ <a name='L866'></a><a href='#L866'>866</a>
932
+ <a name='L867'></a><a href='#L867'>867</a>
933
+ <a name='L868'></a><a href='#L868'>868</a>
934
+ <a name='L869'></a><a href='#L869'>869</a>
935
+ <a name='L870'></a><a href='#L870'>870</a>
936
+ <a name='L871'></a><a href='#L871'>871</a>
937
+ <a name='L872'></a><a href='#L872'>872</a>
938
+ <a name='L873'></a><a href='#L873'>873</a>
939
+ <a name='L874'></a><a href='#L874'>874</a>
940
+ <a name='L875'></a><a href='#L875'>875</a>
941
+ <a name='L876'></a><a href='#L876'>876</a>
942
+ <a name='L877'></a><a href='#L877'>877</a>
943
+ <a name='L878'></a><a href='#L878'>878</a>
944
+ <a name='L879'></a><a href='#L879'>879</a>
945
+ <a name='L880'></a><a href='#L880'>880</a>
946
+ <a name='L881'></a><a href='#L881'>881</a>
947
+ <a name='L882'></a><a href='#L882'>882</a>
948
+ <a name='L883'></a><a href='#L883'>883</a>
949
+ <a name='L884'></a><a href='#L884'>884</a>
950
+ <a name='L885'></a><a href='#L885'>885</a>
951
+ <a name='L886'></a><a href='#L886'>886</a>
952
+ <a name='L887'></a><a href='#L887'>887</a>
953
+ <a name='L888'></a><a href='#L888'>888</a>
954
+ <a name='L889'></a><a href='#L889'>889</a>
955
+ <a name='L890'></a><a href='#L890'>890</a>
956
+ <a name='L891'></a><a href='#L891'>891</a>
957
+ <a name='L892'></a><a href='#L892'>892</a>
958
+ <a name='L893'></a><a href='#L893'>893</a>
959
+ <a name='L894'></a><a href='#L894'>894</a>
960
+ <a name='L895'></a><a href='#L895'>895</a>
961
+ <a name='L896'></a><a href='#L896'>896</a>
962
+ <a name='L897'></a><a href='#L897'>897</a>
963
+ <a name='L898'></a><a href='#L898'>898</a>
964
+ <a name='L899'></a><a href='#L899'>899</a>
965
+ <a name='L900'></a><a href='#L900'>900</a>
966
+ <a name='L901'></a><a href='#L901'>901</a>
967
+ <a name='L902'></a><a href='#L902'>902</a>
968
+ <a name='L903'></a><a href='#L903'>903</a>
969
+ <a name='L904'></a><a href='#L904'>904</a>
970
+ <a name='L905'></a><a href='#L905'>905</a>
971
+ <a name='L906'></a><a href='#L906'>906</a>
972
+ <a name='L907'></a><a href='#L907'>907</a>
973
+ <a name='L908'></a><a href='#L908'>908</a>
974
+ <a name='L909'></a><a href='#L909'>909</a>
975
+ <a name='L910'></a><a href='#L910'>910</a>
976
+ <a name='L911'></a><a href='#L911'>911</a>
977
+ <a name='L912'></a><a href='#L912'>912</a>
978
+ <a name='L913'></a><a href='#L913'>913</a>
979
+ <a name='L914'></a><a href='#L914'>914</a>
980
+ <a name='L915'></a><a href='#L915'>915</a>
981
+ <a name='L916'></a><a href='#L916'>916</a>
982
+ <a name='L917'></a><a href='#L917'>917</a>
983
+ <a name='L918'></a><a href='#L918'>918</a>
984
+ <a name='L919'></a><a href='#L919'>919</a>
985
+ <a name='L920'></a><a href='#L920'>920</a>
986
+ <a name='L921'></a><a href='#L921'>921</a>
987
+ <a name='L922'></a><a href='#L922'>922</a>
988
+ <a name='L923'></a><a href='#L923'>923</a>
989
+ <a name='L924'></a><a href='#L924'>924</a>
990
+ <a name='L925'></a><a href='#L925'>925</a>
991
+ <a name='L926'></a><a href='#L926'>926</a>
992
+ <a name='L927'></a><a href='#L927'>927</a>
993
+ <a name='L928'></a><a href='#L928'>928</a>
994
+ <a name='L929'></a><a href='#L929'>929</a>
995
+ <a name='L930'></a><a href='#L930'>930</a>
996
+ <a name='L931'></a><a href='#L931'>931</a>
997
+ <a name='L932'></a><a href='#L932'>932</a>
998
+ <a name='L933'></a><a href='#L933'>933</a>
999
+ <a name='L934'></a><a href='#L934'>934</a>
1000
+ <a name='L935'></a><a href='#L935'>935</a>
1001
+ <a name='L936'></a><a href='#L936'>936</a>
1002
+ <a name='L937'></a><a href='#L937'>937</a>
1003
+ <a name='L938'></a><a href='#L938'>938</a>
1004
+ <a name='L939'></a><a href='#L939'>939</a>
1005
+ <a name='L940'></a><a href='#L940'>940</a>
1006
+ <a name='L941'></a><a href='#L941'>941</a>
1007
+ <a name='L942'></a><a href='#L942'>942</a>
1008
+ <a name='L943'></a><a href='#L943'>943</a>
1009
+ <a name='L944'></a><a href='#L944'>944</a>
1010
+ <a name='L945'></a><a href='#L945'>945</a>
1011
+ <a name='L946'></a><a href='#L946'>946</a>
1012
+ <a name='L947'></a><a href='#L947'>947</a>
1013
+ <a name='L948'></a><a href='#L948'>948</a>
1014
+ <a name='L949'></a><a href='#L949'>949</a>
1015
+ <a name='L950'></a><a href='#L950'>950</a>
1016
+ <a name='L951'></a><a href='#L951'>951</a>
1017
+ <a name='L952'></a><a href='#L952'>952</a>
1018
+ <a name='L953'></a><a href='#L953'>953</a>
1019
+ <a name='L954'></a><a href='#L954'>954</a>
1020
+ <a name='L955'></a><a href='#L955'>955</a>
1021
+ <a name='L956'></a><a href='#L956'>956</a>
1022
+ <a name='L957'></a><a href='#L957'>957</a>
1023
+ <a name='L958'></a><a href='#L958'>958</a>
1024
+ <a name='L959'></a><a href='#L959'>959</a>
1025
+ <a name='L960'></a><a href='#L960'>960</a>
1026
+ <a name='L961'></a><a href='#L961'>961</a>
1027
+ <a name='L962'></a><a href='#L962'>962</a>
1028
+ <a name='L963'></a><a href='#L963'>963</a>
1029
+ <a name='L964'></a><a href='#L964'>964</a>
1030
+ <a name='L965'></a><a href='#L965'>965</a>
1031
+ <a name='L966'></a><a href='#L966'>966</a>
1032
+ <a name='L967'></a><a href='#L967'>967</a>
1033
+ <a name='L968'></a><a href='#L968'>968</a>
1034
+ <a name='L969'></a><a href='#L969'>969</a>
1035
+ <a name='L970'></a><a href='#L970'>970</a>
1036
+ <a name='L971'></a><a href='#L971'>971</a>
1037
+ <a name='L972'></a><a href='#L972'>972</a>
1038
+ <a name='L973'></a><a href='#L973'>973</a>
1039
+ <a name='L974'></a><a href='#L974'>974</a>
1040
+ <a name='L975'></a><a href='#L975'>975</a>
1041
+ <a name='L976'></a><a href='#L976'>976</a>
1042
+ <a name='L977'></a><a href='#L977'>977</a>
1043
+ <a name='L978'></a><a href='#L978'>978</a>
1044
+ <a name='L979'></a><a href='#L979'>979</a>
1045
+ <a name='L980'></a><a href='#L980'>980</a>
1046
+ <a name='L981'></a><a href='#L981'>981</a>
1047
+ <a name='L982'></a><a href='#L982'>982</a>
1048
+ <a name='L983'></a><a href='#L983'>983</a>
1049
+ <a name='L984'></a><a href='#L984'>984</a>
1050
+ <a name='L985'></a><a href='#L985'>985</a>
1051
+ <a name='L986'></a><a href='#L986'>986</a>
1052
+ <a name='L987'></a><a href='#L987'>987</a>
1053
+ <a name='L988'></a><a href='#L988'>988</a>
1054
+ <a name='L989'></a><a href='#L989'>989</a>
1055
+ <a name='L990'></a><a href='#L990'>990</a>
1056
+ <a name='L991'></a><a href='#L991'>991</a>
1057
+ <a name='L992'></a><a href='#L992'>992</a>
1058
+ <a name='L993'></a><a href='#L993'>993</a>
1059
+ <a name='L994'></a><a href='#L994'>994</a>
1060
+ <a name='L995'></a><a href='#L995'>995</a>
1061
+ <a name='L996'></a><a href='#L996'>996</a>
1062
+ <a name='L997'></a><a href='#L997'>997</a>
1063
+ <a name='L998'></a><a href='#L998'>998</a>
1064
+ <a name='L999'></a><a href='#L999'>999</a>
1065
+ <a name='L1000'></a><a href='#L1000'>1000</a>
1066
+ <a name='L1001'></a><a href='#L1001'>1001</a>
1067
+ <a name='L1002'></a><a href='#L1002'>1002</a>
1068
+ <a name='L1003'></a><a href='#L1003'>1003</a>
1069
+ <a name='L1004'></a><a href='#L1004'>1004</a>
1070
+ <a name='L1005'></a><a href='#L1005'>1005</a>
1071
+ <a name='L1006'></a><a href='#L1006'>1006</a>
1072
+ <a name='L1007'></a><a href='#L1007'>1007</a>
1073
+ <a name='L1008'></a><a href='#L1008'>1008</a>
1074
+ <a name='L1009'></a><a href='#L1009'>1009</a>
1075
+ <a name='L1010'></a><a href='#L1010'>1010</a>
1076
+ <a name='L1011'></a><a href='#L1011'>1011</a>
1077
+ <a name='L1012'></a><a href='#L1012'>1012</a>
1078
+ <a name='L1013'></a><a href='#L1013'>1013</a>
1079
+ <a name='L1014'></a><a href='#L1014'>1014</a>
1080
+ <a name='L1015'></a><a href='#L1015'>1015</a>
1081
+ <a name='L1016'></a><a href='#L1016'>1016</a>
1082
+ <a name='L1017'></a><a href='#L1017'>1017</a>
1083
+ <a name='L1018'></a><a href='#L1018'>1018</a>
1084
+ <a name='L1019'></a><a href='#L1019'>1019</a>
1085
+ <a name='L1020'></a><a href='#L1020'>1020</a>
1086
+ <a name='L1021'></a><a href='#L1021'>1021</a>
1087
+ <a name='L1022'></a><a href='#L1022'>1022</a>
1088
+ <a name='L1023'></a><a href='#L1023'>1023</a>
1089
+ <a name='L1024'></a><a href='#L1024'>1024</a>
1090
+ <a name='L1025'></a><a href='#L1025'>1025</a>
1091
+ <a name='L1026'></a><a href='#L1026'>1026</a>
1092
+ <a name='L1027'></a><a href='#L1027'>1027</a>
1093
+ <a name='L1028'></a><a href='#L1028'>1028</a>
1094
+ <a name='L1029'></a><a href='#L1029'>1029</a>
1095
+ <a name='L1030'></a><a href='#L1030'>1030</a>
1096
+ <a name='L1031'></a><a href='#L1031'>1031</a>
1097
+ <a name='L1032'></a><a href='#L1032'>1032</a>
1098
+ <a name='L1033'></a><a href='#L1033'>1033</a>
1099
+ <a name='L1034'></a><a href='#L1034'>1034</a>
1100
+ <a name='L1035'></a><a href='#L1035'>1035</a>
1101
+ <a name='L1036'></a><a href='#L1036'>1036</a>
1102
+ <a name='L1037'></a><a href='#L1037'>1037</a>
1103
+ <a name='L1038'></a><a href='#L1038'>1038</a>
1104
+ <a name='L1039'></a><a href='#L1039'>1039</a>
1105
+ <a name='L1040'></a><a href='#L1040'>1040</a>
1106
+ <a name='L1041'></a><a href='#L1041'>1041</a>
1107
+ <a name='L1042'></a><a href='#L1042'>1042</a>
1108
+ <a name='L1043'></a><a href='#L1043'>1043</a>
1109
+ <a name='L1044'></a><a href='#L1044'>1044</a>
1110
+ <a name='L1045'></a><a href='#L1045'>1045</a>
1111
+ <a name='L1046'></a><a href='#L1046'>1046</a>
1112
+ <a name='L1047'></a><a href='#L1047'>1047</a>
1113
+ <a name='L1048'></a><a href='#L1048'>1048</a>
1114
+ <a name='L1049'></a><a href='#L1049'>1049</a>
1115
+ <a name='L1050'></a><a href='#L1050'>1050</a>
1116
+ <a name='L1051'></a><a href='#L1051'>1051</a>
1117
+ <a name='L1052'></a><a href='#L1052'>1052</a>
1118
+ <a name='L1053'></a><a href='#L1053'>1053</a>
1119
+ <a name='L1054'></a><a href='#L1054'>1054</a>
1120
+ <a name='L1055'></a><a href='#L1055'>1055</a>
1121
+ <a name='L1056'></a><a href='#L1056'>1056</a>
1122
+ <a name='L1057'></a><a href='#L1057'>1057</a>
1123
+ <a name='L1058'></a><a href='#L1058'>1058</a>
1124
+ <a name='L1059'></a><a href='#L1059'>1059</a>
1125
+ <a name='L1060'></a><a href='#L1060'>1060</a>
1126
+ <a name='L1061'></a><a href='#L1061'>1061</a>
1127
+ <a name='L1062'></a><a href='#L1062'>1062</a>
1128
+ <a name='L1063'></a><a href='#L1063'>1063</a>
1129
+ <a name='L1064'></a><a href='#L1064'>1064</a>
1130
+ <a name='L1065'></a><a href='#L1065'>1065</a>
1131
+ <a name='L1066'></a><a href='#L1066'>1066</a>
1132
+ <a name='L1067'></a><a href='#L1067'>1067</a>
1133
+ <a name='L1068'></a><a href='#L1068'>1068</a>
1134
+ <a name='L1069'></a><a href='#L1069'>1069</a>
1135
+ <a name='L1070'></a><a href='#L1070'>1070</a>
1136
+ <a name='L1071'></a><a href='#L1071'>1071</a>
1137
+ <a name='L1072'></a><a href='#L1072'>1072</a>
1138
+ <a name='L1073'></a><a href='#L1073'>1073</a>
1139
+ <a name='L1074'></a><a href='#L1074'>1074</a>
1140
+ <a name='L1075'></a><a href='#L1075'>1075</a>
1141
+ <a name='L1076'></a><a href='#L1076'>1076</a>
1142
+ <a name='L1077'></a><a href='#L1077'>1077</a>
1143
+ <a name='L1078'></a><a href='#L1078'>1078</a>
1144
+ <a name='L1079'></a><a href='#L1079'>1079</a>
1145
+ <a name='L1080'></a><a href='#L1080'>1080</a>
1146
+ <a name='L1081'></a><a href='#L1081'>1081</a>
1147
+ <a name='L1082'></a><a href='#L1082'>1082</a>
1148
+ <a name='L1083'></a><a href='#L1083'>1083</a>
1149
+ <a name='L1084'></a><a href='#L1084'>1084</a>
1150
+ <a name='L1085'></a><a href='#L1085'>1085</a>
1151
+ <a name='L1086'></a><a href='#L1086'>1086</a>
1152
+ <a name='L1087'></a><a href='#L1087'>1087</a>
1153
+ <a name='L1088'></a><a href='#L1088'>1088</a>
1154
+ <a name='L1089'></a><a href='#L1089'>1089</a>
1155
+ <a name='L1090'></a><a href='#L1090'>1090</a>
1156
+ <a name='L1091'></a><a href='#L1091'>1091</a>
1157
+ <a name='L1092'></a><a href='#L1092'>1092</a>
1158
+ <a name='L1093'></a><a href='#L1093'>1093</a>
1159
+ <a name='L1094'></a><a href='#L1094'>1094</a>
1160
+ <a name='L1095'></a><a href='#L1095'>1095</a>
1161
+ <a name='L1096'></a><a href='#L1096'>1096</a>
1162
+ <a name='L1097'></a><a href='#L1097'>1097</a>
1163
+ <a name='L1098'></a><a href='#L1098'>1098</a>
1164
+ <a name='L1099'></a><a href='#L1099'>1099</a>
1165
+ <a name='L1100'></a><a href='#L1100'>1100</a>
1166
+ <a name='L1101'></a><a href='#L1101'>1101</a>
1167
+ <a name='L1102'></a><a href='#L1102'>1102</a>
1168
+ <a name='L1103'></a><a href='#L1103'>1103</a>
1169
+ <a name='L1104'></a><a href='#L1104'>1104</a>
1170
+ <a name='L1105'></a><a href='#L1105'>1105</a>
1171
+ <a name='L1106'></a><a href='#L1106'>1106</a>
1172
+ <a name='L1107'></a><a href='#L1107'>1107</a>
1173
+ <a name='L1108'></a><a href='#L1108'>1108</a>
1174
+ <a name='L1109'></a><a href='#L1109'>1109</a>
1175
+ <a name='L1110'></a><a href='#L1110'>1110</a>
1176
+ <a name='L1111'></a><a href='#L1111'>1111</a>
1177
+ <a name='L1112'></a><a href='#L1112'>1112</a>
1178
+ <a name='L1113'></a><a href='#L1113'>1113</a>
1179
+ <a name='L1114'></a><a href='#L1114'>1114</a>
1180
+ <a name='L1115'></a><a href='#L1115'>1115</a>
1181
+ <a name='L1116'></a><a href='#L1116'>1116</a>
1182
+ <a name='L1117'></a><a href='#L1117'>1117</a>
1183
+ <a name='L1118'></a><a href='#L1118'>1118</a>
1184
+ <a name='L1119'></a><a href='#L1119'>1119</a>
1185
+ <a name='L1120'></a><a href='#L1120'>1120</a>
1186
+ <a name='L1121'></a><a href='#L1121'>1121</a>
1187
+ <a name='L1122'></a><a href='#L1122'>1122</a>
1188
+ <a name='L1123'></a><a href='#L1123'>1123</a>
1189
+ <a name='L1124'></a><a href='#L1124'>1124</a>
1190
+ <a name='L1125'></a><a href='#L1125'>1125</a>
1191
+ <a name='L1126'></a><a href='#L1126'>1126</a>
1192
+ <a name='L1127'></a><a href='#L1127'>1127</a>
1193
+ <a name='L1128'></a><a href='#L1128'>1128</a>
1194
+ <a name='L1129'></a><a href='#L1129'>1129</a>
1195
+ <a name='L1130'></a><a href='#L1130'>1130</a>
1196
+ <a name='L1131'></a><a href='#L1131'>1131</a>
1197
+ <a name='L1132'></a><a href='#L1132'>1132</a>
1198
+ <a name='L1133'></a><a href='#L1133'>1133</a>
1199
+ <a name='L1134'></a><a href='#L1134'>1134</a>
1200
+ <a name='L1135'></a><a href='#L1135'>1135</a>
1201
+ <a name='L1136'></a><a href='#L1136'>1136</a>
1202
+ <a name='L1137'></a><a href='#L1137'>1137</a>
1203
+ <a name='L1138'></a><a href='#L1138'>1138</a>
1204
+ <a name='L1139'></a><a href='#L1139'>1139</a>
1205
+ <a name='L1140'></a><a href='#L1140'>1140</a>
1206
+ <a name='L1141'></a><a href='#L1141'>1141</a>
1207
+ <a name='L1142'></a><a href='#L1142'>1142</a>
1208
+ <a name='L1143'></a><a href='#L1143'>1143</a>
1209
+ <a name='L1144'></a><a href='#L1144'>1144</a>
1210
+ <a name='L1145'></a><a href='#L1145'>1145</a>
1211
+ <a name='L1146'></a><a href='#L1146'>1146</a>
1212
+ <a name='L1147'></a><a href='#L1147'>1147</a>
1213
+ <a name='L1148'></a><a href='#L1148'>1148</a>
1214
+ <a name='L1149'></a><a href='#L1149'>1149</a>
1215
+ <a name='L1150'></a><a href='#L1150'>1150</a>
1216
+ <a name='L1151'></a><a href='#L1151'>1151</a>
1217
+ <a name='L1152'></a><a href='#L1152'>1152</a>
1218
+ <a name='L1153'></a><a href='#L1153'>1153</a>
1219
+ <a name='L1154'></a><a href='#L1154'>1154</a>
1220
+ <a name='L1155'></a><a href='#L1155'>1155</a>
1221
+ <a name='L1156'></a><a href='#L1156'>1156</a>
1222
+ <a name='L1157'></a><a href='#L1157'>1157</a>
1223
+ <a name='L1158'></a><a href='#L1158'>1158</a>
1224
+ <a name='L1159'></a><a href='#L1159'>1159</a>
1225
+ <a name='L1160'></a><a href='#L1160'>1160</a>
1226
+ <a name='L1161'></a><a href='#L1161'>1161</a>
1227
+ <a name='L1162'></a><a href='#L1162'>1162</a>
1228
+ <a name='L1163'></a><a href='#L1163'>1163</a>
1229
+ <a name='L1164'></a><a href='#L1164'>1164</a>
1230
+ <a name='L1165'></a><a href='#L1165'>1165</a>
1231
+ <a name='L1166'></a><a href='#L1166'>1166</a>
1232
+ <a name='L1167'></a><a href='#L1167'>1167</a>
1233
+ <a name='L1168'></a><a href='#L1168'>1168</a>
1234
+ <a name='L1169'></a><a href='#L1169'>1169</a>
1235
+ <a name='L1170'></a><a href='#L1170'>1170</a>
1236
+ <a name='L1171'></a><a href='#L1171'>1171</a>
1237
+ <a name='L1172'></a><a href='#L1172'>1172</a>
1238
+ <a name='L1173'></a><a href='#L1173'>1173</a>
1239
+ <a name='L1174'></a><a href='#L1174'>1174</a>
1240
+ <a name='L1175'></a><a href='#L1175'>1175</a>
1241
+ <a name='L1176'></a><a href='#L1176'>1176</a>
1242
+ <a name='L1177'></a><a href='#L1177'>1177</a>
1243
+ <a name='L1178'></a><a href='#L1178'>1178</a>
1244
+ <a name='L1179'></a><a href='#L1179'>1179</a>
1245
+ <a name='L1180'></a><a href='#L1180'>1180</a>
1246
+ <a name='L1181'></a><a href='#L1181'>1181</a>
1247
+ <a name='L1182'></a><a href='#L1182'>1182</a>
1248
+ <a name='L1183'></a><a href='#L1183'>1183</a>
1249
+ <a name='L1184'></a><a href='#L1184'>1184</a>
1250
+ <a name='L1185'></a><a href='#L1185'>1185</a>
1251
+ <a name='L1186'></a><a href='#L1186'>1186</a>
1252
+ <a name='L1187'></a><a href='#L1187'>1187</a>
1253
+ <a name='L1188'></a><a href='#L1188'>1188</a>
1254
+ <a name='L1189'></a><a href='#L1189'>1189</a>
1255
+ <a name='L1190'></a><a href='#L1190'>1190</a>
1256
+ <a name='L1191'></a><a href='#L1191'>1191</a>
1257
+ <a name='L1192'></a><a href='#L1192'>1192</a>
1258
+ <a name='L1193'></a><a href='#L1193'>1193</a>
1259
+ <a name='L1194'></a><a href='#L1194'>1194</a>
1260
+ <a name='L1195'></a><a href='#L1195'>1195</a>
1261
+ <a name='L1196'></a><a href='#L1196'>1196</a>
1262
+ <a name='L1197'></a><a href='#L1197'>1197</a>
1263
+ <a name='L1198'></a><a href='#L1198'>1198</a>
1264
+ <a name='L1199'></a><a href='#L1199'>1199</a>
1265
+ <a name='L1200'></a><a href='#L1200'>1200</a>
1266
+ <a name='L1201'></a><a href='#L1201'>1201</a>
1267
+ <a name='L1202'></a><a href='#L1202'>1202</a>
1268
+ <a name='L1203'></a><a href='#L1203'>1203</a>
1269
+ <a name='L1204'></a><a href='#L1204'>1204</a>
1270
+ <a name='L1205'></a><a href='#L1205'>1205</a>
1271
+ <a name='L1206'></a><a href='#L1206'>1206</a>
1272
+ <a name='L1207'></a><a href='#L1207'>1207</a>
1273
+ <a name='L1208'></a><a href='#L1208'>1208</a>
1274
+ <a name='L1209'></a><a href='#L1209'>1209</a>
1275
+ <a name='L1210'></a><a href='#L1210'>1210</a>
1276
+ <a name='L1211'></a><a href='#L1211'>1211</a>
1277
+ <a name='L1212'></a><a href='#L1212'>1212</a>
1278
+ <a name='L1213'></a><a href='#L1213'>1213</a>
1279
+ <a name='L1214'></a><a href='#L1214'>1214</a>
1280
+ <a name='L1215'></a><a href='#L1215'>1215</a>
1281
+ <a name='L1216'></a><a href='#L1216'>1216</a>
1282
+ <a name='L1217'></a><a href='#L1217'>1217</a>
1283
+ <a name='L1218'></a><a href='#L1218'>1218</a>
1284
+ <a name='L1219'></a><a href='#L1219'>1219</a>
1285
+ <a name='L1220'></a><a href='#L1220'>1220</a>
1286
+ <a name='L1221'></a><a href='#L1221'>1221</a>
1287
+ <a name='L1222'></a><a href='#L1222'>1222</a>
1288
+ <a name='L1223'></a><a href='#L1223'>1223</a>
1289
+ <a name='L1224'></a><a href='#L1224'>1224</a>
1290
+ <a name='L1225'></a><a href='#L1225'>1225</a>
1291
+ <a name='L1226'></a><a href='#L1226'>1226</a>
1292
+ <a name='L1227'></a><a href='#L1227'>1227</a>
1293
+ <a name='L1228'></a><a href='#L1228'>1228</a>
1294
+ <a name='L1229'></a><a href='#L1229'>1229</a>
1295
+ <a name='L1230'></a><a href='#L1230'>1230</a>
1296
+ <a name='L1231'></a><a href='#L1231'>1231</a>
1297
+ <a name='L1232'></a><a href='#L1232'>1232</a>
1298
+ <a name='L1233'></a><a href='#L1233'>1233</a>
1299
+ <a name='L1234'></a><a href='#L1234'>1234</a>
1300
+ <a name='L1235'></a><a href='#L1235'>1235</a>
1301
+ <a name='L1236'></a><a href='#L1236'>1236</a>
1302
+ <a name='L1237'></a><a href='#L1237'>1237</a>
1303
+ <a name='L1238'></a><a href='#L1238'>1238</a>
1304
+ <a name='L1239'></a><a href='#L1239'>1239</a>
1305
+ <a name='L1240'></a><a href='#L1240'>1240</a>
1306
+ <a name='L1241'></a><a href='#L1241'>1241</a>
1307
+ <a name='L1242'></a><a href='#L1242'>1242</a>
1308
+ <a name='L1243'></a><a href='#L1243'>1243</a>
1309
+ <a name='L1244'></a><a href='#L1244'>1244</a>
1310
+ <a name='L1245'></a><a href='#L1245'>1245</a>
1311
+ <a name='L1246'></a><a href='#L1246'>1246</a>
1312
+ <a name='L1247'></a><a href='#L1247'>1247</a>
1313
+ <a name='L1248'></a><a href='#L1248'>1248</a>
1314
+ <a name='L1249'></a><a href='#L1249'>1249</a>
1315
+ <a name='L1250'></a><a href='#L1250'>1250</a>
1316
+ <a name='L1251'></a><a href='#L1251'>1251</a>
1317
+ <a name='L1252'></a><a href='#L1252'>1252</a>
1318
+ <a name='L1253'></a><a href='#L1253'>1253</a>
1319
+ <a name='L1254'></a><a href='#L1254'>1254</a>
1320
+ <a name='L1255'></a><a href='#L1255'>1255</a>
1321
+ <a name='L1256'></a><a href='#L1256'>1256</a>
1322
+ <a name='L1257'></a><a href='#L1257'>1257</a>
1323
+ <a name='L1258'></a><a href='#L1258'>1258</a>
1324
+ <a name='L1259'></a><a href='#L1259'>1259</a>
1325
+ <a name='L1260'></a><a href='#L1260'>1260</a>
1326
+ <a name='L1261'></a><a href='#L1261'>1261</a>
1327
+ <a name='L1262'></a><a href='#L1262'>1262</a>
1328
+ <a name='L1263'></a><a href='#L1263'>1263</a>
1329
+ <a name='L1264'></a><a href='#L1264'>1264</a>
1330
+ <a name='L1265'></a><a href='#L1265'>1265</a>
1331
+ <a name='L1266'></a><a href='#L1266'>1266</a>
1332
+ <a name='L1267'></a><a href='#L1267'>1267</a>
1333
+ <a name='L1268'></a><a href='#L1268'>1268</a>
1334
+ <a name='L1269'></a><a href='#L1269'>1269</a>
1335
+ <a name='L1270'></a><a href='#L1270'>1270</a>
1336
+ <a name='L1271'></a><a href='#L1271'>1271</a>
1337
+ <a name='L1272'></a><a href='#L1272'>1272</a>
1338
+ <a name='L1273'></a><a href='#L1273'>1273</a>
1339
+ <a name='L1274'></a><a href='#L1274'>1274</a>
1340
+ <a name='L1275'></a><a href='#L1275'>1275</a>
1341
+ <a name='L1276'></a><a href='#L1276'>1276</a>
1342
+ <a name='L1277'></a><a href='#L1277'>1277</a>
1343
+ <a name='L1278'></a><a href='#L1278'>1278</a>
1344
+ <a name='L1279'></a><a href='#L1279'>1279</a>
1345
+ <a name='L1280'></a><a href='#L1280'>1280</a>
1346
+ <a name='L1281'></a><a href='#L1281'>1281</a>
1347
+ <a name='L1282'></a><a href='#L1282'>1282</a>
1348
+ <a name='L1283'></a><a href='#L1283'>1283</a>
1349
+ <a name='L1284'></a><a href='#L1284'>1284</a>
1350
+ <a name='L1285'></a><a href='#L1285'>1285</a>
1351
+ <a name='L1286'></a><a href='#L1286'>1286</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
1352
+ <span class="cline-any cline-yes">1x</span>
1353
+ <span class="cline-any cline-yes">1x</span>
1354
+ <span class="cline-any cline-yes">1x</span>
1355
+ <span class="cline-any cline-yes">1x</span>
1356
+ <span class="cline-any cline-yes">1x</span>
1357
+ <span class="cline-any cline-yes">1x</span>
1358
+ <span class="cline-any cline-yes">1x</span>
1359
+ <span class="cline-any cline-yes">1x</span>
1360
+ <span class="cline-any cline-yes">1x</span>
1361
+ <span class="cline-any cline-yes">1x</span>
1362
+ <span class="cline-any cline-yes">1x</span>
1363
+ <span class="cline-any cline-yes">1x</span>
1364
+ <span class="cline-any cline-yes">1x</span>
1365
+ <span class="cline-any cline-yes">1x</span>
1366
+ <span class="cline-any cline-yes">1x</span>
1367
+ <span class="cline-any cline-yes">1x</span>
1368
+ <span class="cline-any cline-yes">1x</span>
1369
+ <span class="cline-any cline-yes">1x</span>
1370
+ <span class="cline-any cline-yes">1x</span>
1371
+ <span class="cline-any cline-yes">1x</span>
1372
+ <span class="cline-any cline-yes">1x</span>
1373
+ <span class="cline-any cline-yes">1x</span>
1374
+ <span class="cline-any cline-yes">1x</span>
1375
+ <span class="cline-any cline-yes">1x</span>
1376
+ <span class="cline-any cline-yes">1x</span>
1377
+ <span class="cline-any cline-yes">1x</span>
1378
+ <span class="cline-any cline-yes">1x</span>
1379
+ <span class="cline-any cline-yes">1x</span>
1380
+ <span class="cline-any cline-yes">1x</span>
1381
+ <span class="cline-any cline-yes">1x</span>
1382
+ <span class="cline-any cline-yes">1x</span>
1383
+ <span class="cline-any cline-yes">1x</span>
1384
+ <span class="cline-any cline-yes">1x</span>
1385
+ <span class="cline-any cline-yes">1x</span>
1386
+ <span class="cline-any cline-yes">1x</span>
1387
+ <span class="cline-any cline-yes">1x</span>
1388
+ <span class="cline-any cline-yes">1x</span>
1389
+ <span class="cline-any cline-yes">1x</span>
1390
+ <span class="cline-any cline-yes">1x</span>
1391
+ <span class="cline-any cline-yes">1x</span>
1392
+ <span class="cline-any cline-yes">1x</span>
1393
+ <span class="cline-any cline-yes">1x</span>
1394
+ <span class="cline-any cline-yes">1x</span>
1395
+ <span class="cline-any cline-yes">1x</span>
1396
+ <span class="cline-any cline-yes">1x</span>
1397
+ <span class="cline-any cline-yes">1x</span>
1398
+ <span class="cline-any cline-yes">1x</span>
1399
+ <span class="cline-any cline-yes">1x</span>
1400
+ <span class="cline-any cline-yes">1x</span>
1401
+ <span class="cline-any cline-yes">1x</span>
1402
+ <span class="cline-any cline-yes">1x</span>
1403
+ <span class="cline-any cline-yes">1x</span>
1404
+ <span class="cline-any cline-yes">1x</span>
1405
+ <span class="cline-any cline-yes">1x</span>
1406
+ <span class="cline-any cline-yes">1x</span>
1407
+ <span class="cline-any cline-yes">1x</span>
1408
+ <span class="cline-any cline-yes">1x</span>
1409
+ <span class="cline-any cline-yes">1x</span>
1410
+ <span class="cline-any cline-yes">1x</span>
1411
+ <span class="cline-any cline-yes">1x</span>
1412
+ <span class="cline-any cline-yes">1x</span>
1413
+ <span class="cline-any cline-yes">1x</span>
1414
+ <span class="cline-any cline-yes">1x</span>
1415
+ <span class="cline-any cline-yes">1x</span>
1416
+ <span class="cline-any cline-yes">1x</span>
1417
+ <span class="cline-any cline-yes">1x</span>
1418
+ <span class="cline-any cline-yes">1x</span>
1419
+ <span class="cline-any cline-yes">1x</span>
1420
+ <span class="cline-any cline-yes">1x</span>
1421
+ <span class="cline-any cline-yes">1x</span>
1422
+ <span class="cline-any cline-yes">1x</span>
1423
+ <span class="cline-any cline-yes">1x</span>
1424
+ <span class="cline-any cline-yes">1x</span>
1425
+ <span class="cline-any cline-yes">1x</span>
1426
+ <span class="cline-any cline-yes">1x</span>
1427
+ <span class="cline-any cline-yes">1x</span>
1428
+ <span class="cline-any cline-yes">1x</span>
1429
+ <span class="cline-any cline-yes">1x</span>
1430
+ <span class="cline-any cline-yes">1x</span>
1431
+ <span class="cline-any cline-yes">1x</span>
1432
+ <span class="cline-any cline-yes">1x</span>
1433
+ <span class="cline-any cline-yes">1x</span>
1434
+ <span class="cline-any cline-yes">1x</span>
1435
+ <span class="cline-any cline-yes">1x</span>
1436
+ <span class="cline-any cline-yes">1x</span>
1437
+ <span class="cline-any cline-yes">1x</span>
1438
+ <span class="cline-any cline-yes">1x</span>
1439
+ <span class="cline-any cline-yes">1x</span>
1440
+ <span class="cline-any cline-yes">1x</span>
1441
+ <span class="cline-any cline-yes">1x</span>
1442
+ <span class="cline-any cline-yes">1x</span>
1443
+ <span class="cline-any cline-yes">1x</span>
1444
+ <span class="cline-any cline-yes">1x</span>
1445
+ <span class="cline-any cline-yes">1x</span>
1446
+ <span class="cline-any cline-yes">1x</span>
1447
+ <span class="cline-any cline-yes">1x</span>
1448
+ <span class="cline-any cline-yes">1x</span>
1449
+ <span class="cline-any cline-yes">1x</span>
1450
+ <span class="cline-any cline-yes">1x</span>
1451
+ <span class="cline-any cline-yes">1x</span>
1452
+ <span class="cline-any cline-yes">1x</span>
1453
+ <span class="cline-any cline-yes">1x</span>
1454
+ <span class="cline-any cline-yes">1x</span>
1455
+ <span class="cline-any cline-yes">1x</span>
1456
+ <span class="cline-any cline-yes">1x</span>
1457
+ <span class="cline-any cline-yes">1x</span>
1458
+ <span class="cline-any cline-yes">1x</span>
1459
+ <span class="cline-any cline-yes">1x</span>
1460
+ <span class="cline-any cline-yes">1x</span>
1461
+ <span class="cline-any cline-yes">1x</span>
1462
+ <span class="cline-any cline-yes">1x</span>
1463
+ <span class="cline-any cline-yes">1x</span>
1464
+ <span class="cline-any cline-yes">1x</span>
1465
+ <span class="cline-any cline-yes">1x</span>
1466
+ <span class="cline-any cline-yes">1x</span>
1467
+ <span class="cline-any cline-yes">1x</span>
1468
+ <span class="cline-any cline-yes">1x</span>
1469
+ <span class="cline-any cline-yes">1x</span>
1470
+ <span class="cline-any cline-yes">1x</span>
1471
+ <span class="cline-any cline-yes">1x</span>
1472
+ <span class="cline-any cline-yes">1x</span>
1473
+ <span class="cline-any cline-yes">1x</span>
1474
+ <span class="cline-any cline-yes">1x</span>
1475
+ <span class="cline-any cline-yes">1x</span>
1476
+ <span class="cline-any cline-yes">1x</span>
1477
+ <span class="cline-any cline-yes">1x</span>
1478
+ <span class="cline-any cline-yes">1x</span>
1479
+ <span class="cline-any cline-yes">1x</span>
1480
+ <span class="cline-any cline-yes">1x</span>
1481
+ <span class="cline-any cline-yes">1x</span>
1482
+ <span class="cline-any cline-yes">1x</span>
1483
+ <span class="cline-any cline-yes">1x</span>
1484
+ <span class="cline-any cline-yes">1x</span>
1485
+ <span class="cline-any cline-yes">1x</span>
1486
+ <span class="cline-any cline-yes">1x</span>
1487
+ <span class="cline-any cline-yes">1x</span>
1488
+ <span class="cline-any cline-yes">1x</span>
1489
+ <span class="cline-any cline-yes">1x</span>
1490
+ <span class="cline-any cline-yes">1x</span>
1491
+ <span class="cline-any cline-yes">1x</span>
1492
+ <span class="cline-any cline-yes">1x</span>
1493
+ <span class="cline-any cline-yes">1x</span>
1494
+ <span class="cline-any cline-yes">1x</span>
1495
+ <span class="cline-any cline-yes">1x</span>
1496
+ <span class="cline-any cline-yes">1x</span>
1497
+ <span class="cline-any cline-yes">1x</span>
1498
+ <span class="cline-any cline-yes">1x</span>
1499
+ <span class="cline-any cline-yes">1x</span>
1500
+ <span class="cline-any cline-yes">1x</span>
1501
+ <span class="cline-any cline-yes">1x</span>
1502
+ <span class="cline-any cline-yes">1x</span>
1503
+ <span class="cline-any cline-yes">1x</span>
1504
+ <span class="cline-any cline-yes">1x</span>
1505
+ <span class="cline-any cline-yes">1x</span>
1506
+ <span class="cline-any cline-yes">1x</span>
1507
+ <span class="cline-any cline-yes">1x</span>
1508
+ <span class="cline-any cline-yes">1x</span>
1509
+ <span class="cline-any cline-yes">1x</span>
1510
+ <span class="cline-any cline-yes">1x</span>
1511
+ <span class="cline-any cline-yes">1x</span>
1512
+ <span class="cline-any cline-yes">1x</span>
1513
+ <span class="cline-any cline-yes">1x</span>
1514
+ <span class="cline-any cline-yes">1x</span>
1515
+ <span class="cline-any cline-yes">1x</span>
1516
+ <span class="cline-any cline-yes">1x</span>
1517
+ <span class="cline-any cline-yes">1x</span>
1518
+ <span class="cline-any cline-yes">1x</span>
1519
+ <span class="cline-any cline-yes">1x</span>
1520
+ <span class="cline-any cline-yes">1x</span>
1521
+ <span class="cline-any cline-yes">1x</span>
1522
+ <span class="cline-any cline-yes">1x</span>
1523
+ <span class="cline-any cline-yes">1x</span>
1524
+ <span class="cline-any cline-yes">1x</span>
1525
+ <span class="cline-any cline-yes">1x</span>
1526
+ <span class="cline-any cline-yes">1x</span>
1527
+ <span class="cline-any cline-yes">1x</span>
1528
+ <span class="cline-any cline-yes">1x</span>
1529
+ <span class="cline-any cline-yes">1x</span>
1530
+ <span class="cline-any cline-yes">1x</span>
1531
+ <span class="cline-any cline-yes">1x</span>
1532
+ <span class="cline-any cline-yes">1x</span>
1533
+ <span class="cline-any cline-yes">1x</span>
1534
+ <span class="cline-any cline-yes">1x</span>
1535
+ <span class="cline-any cline-yes">1x</span>
1536
+ <span class="cline-any cline-yes">1x</span>
1537
+ <span class="cline-any cline-yes">1x</span>
1538
+ <span class="cline-any cline-yes">1x</span>
1539
+ <span class="cline-any cline-yes">1x</span>
1540
+ <span class="cline-any cline-yes">1x</span>
1541
+ <span class="cline-any cline-yes">1x</span>
1542
+ <span class="cline-any cline-yes">1x</span>
1543
+ <span class="cline-any cline-yes">1x</span>
1544
+ <span class="cline-any cline-yes">1x</span>
1545
+ <span class="cline-any cline-yes">1x</span>
1546
+ <span class="cline-any cline-yes">1x</span>
1547
+ <span class="cline-any cline-yes">1x</span>
1548
+ <span class="cline-any cline-yes">1x</span>
1549
+ <span class="cline-any cline-yes">1x</span>
1550
+ <span class="cline-any cline-yes">1x</span>
1551
+ <span class="cline-any cline-yes">1x</span>
1552
+ <span class="cline-any cline-yes">1x</span>
1553
+ <span class="cline-any cline-yes">1x</span>
1554
+ <span class="cline-any cline-yes">1x</span>
1555
+ <span class="cline-any cline-yes">1x</span>
1556
+ <span class="cline-any cline-yes">1x</span>
1557
+ <span class="cline-any cline-yes">1x</span>
1558
+ <span class="cline-any cline-yes">1x</span>
1559
+ <span class="cline-any cline-yes">1x</span>
1560
+ <span class="cline-any cline-yes">1x</span>
1561
+ <span class="cline-any cline-yes">1x</span>
1562
+ <span class="cline-any cline-yes">1x</span>
1563
+ <span class="cline-any cline-yes">1x</span>
1564
+ <span class="cline-any cline-yes">1x</span>
1565
+ <span class="cline-any cline-yes">1x</span>
1566
+ <span class="cline-any cline-yes">1x</span>
1567
+ <span class="cline-any cline-yes">1x</span>
1568
+ <span class="cline-any cline-yes">1x</span>
1569
+ <span class="cline-any cline-yes">1x</span>
1570
+ <span class="cline-any cline-yes">1x</span>
1571
+ <span class="cline-any cline-yes">1x</span>
1572
+ <span class="cline-any cline-yes">1x</span>
1573
+ <span class="cline-any cline-yes">1x</span>
1574
+ <span class="cline-any cline-yes">1x</span>
1575
+ <span class="cline-any cline-yes">1x</span>
1576
+ <span class="cline-any cline-yes">1x</span>
1577
+ <span class="cline-any cline-yes">1x</span>
1578
+ <span class="cline-any cline-yes">1x</span>
1579
+ <span class="cline-any cline-yes">1x</span>
1580
+ <span class="cline-any cline-yes">1x</span>
1581
+ <span class="cline-any cline-yes">1x</span>
1582
+ <span class="cline-any cline-yes">1x</span>
1583
+ <span class="cline-any cline-yes">1x</span>
1584
+ <span class="cline-any cline-yes">1x</span>
1585
+ <span class="cline-any cline-yes">1x</span>
1586
+ <span class="cline-any cline-yes">1x</span>
1587
+ <span class="cline-any cline-yes">1x</span>
1588
+ <span class="cline-any cline-yes">1x</span>
1589
+ <span class="cline-any cline-yes">1x</span>
1590
+ <span class="cline-any cline-yes">1x</span>
1591
+ <span class="cline-any cline-yes">1x</span>
1592
+ <span class="cline-any cline-yes">1x</span>
1593
+ <span class="cline-any cline-yes">1x</span>
1594
+ <span class="cline-any cline-yes">1x</span>
1595
+ <span class="cline-any cline-yes">1x</span>
1596
+ <span class="cline-any cline-yes">1x</span>
1597
+ <span class="cline-any cline-yes">1x</span>
1598
+ <span class="cline-any cline-yes">1x</span>
1599
+ <span class="cline-any cline-yes">1x</span>
1600
+ <span class="cline-any cline-yes">1x</span>
1601
+ <span class="cline-any cline-yes">1x</span>
1602
+ <span class="cline-any cline-yes">1x</span>
1603
+ <span class="cline-any cline-yes">1x</span>
1604
+ <span class="cline-any cline-yes">1x</span>
1605
+ <span class="cline-any cline-yes">1x</span>
1606
+ <span class="cline-any cline-yes">1x</span>
1607
+ <span class="cline-any cline-yes">1x</span>
1608
+ <span class="cline-any cline-yes">1x</span>
1609
+ <span class="cline-any cline-yes">1x</span>
1610
+ <span class="cline-any cline-yes">1x</span>
1611
+ <span class="cline-any cline-yes">1x</span>
1612
+ <span class="cline-any cline-yes">1x</span>
1613
+ <span class="cline-any cline-yes">1x</span>
1614
+ <span class="cline-any cline-yes">1x</span>
1615
+ <span class="cline-any cline-yes">1x</span>
1616
+ <span class="cline-any cline-yes">1x</span>
1617
+ <span class="cline-any cline-yes">1x</span>
1618
+ <span class="cline-any cline-yes">1x</span>
1619
+ <span class="cline-any cline-yes">1x</span>
1620
+ <span class="cline-any cline-yes">1x</span>
1621
+ <span class="cline-any cline-yes">1x</span>
1622
+ <span class="cline-any cline-yes">1x</span>
1623
+ <span class="cline-any cline-yes">45x</span>
1624
+ <span class="cline-any cline-yes">45x</span>
1625
+ <span class="cline-any cline-yes">45x</span>
1626
+ <span class="cline-any cline-yes">45x</span>
1627
+ <span class="cline-any cline-yes">45x</span>
1628
+ <span class="cline-any cline-yes">45x</span>
1629
+ <span class="cline-any cline-yes">45x</span>
1630
+ <span class="cline-any cline-yes">45x</span>
1631
+ <span class="cline-any cline-yes">45x</span>
1632
+ <span class="cline-any cline-yes">45x</span>
1633
+ <span class="cline-any cline-yes">45x</span>
1634
+ <span class="cline-any cline-yes">45x</span>
1635
+ <span class="cline-any cline-yes">45x</span>
1636
+ <span class="cline-any cline-yes">45x</span>
1637
+ <span class="cline-any cline-yes">45x</span>
1638
+ <span class="cline-any cline-yes">45x</span>
1639
+ <span class="cline-any cline-yes">42x</span>
1640
+ <span class="cline-any cline-yes">42x</span>
1641
+ <span class="cline-any cline-yes">42x</span>
1642
+ <span class="cline-any cline-yes">45x</span>
1643
+ <span class="cline-any cline-yes">45x</span>
1644
+ <span class="cline-any cline-yes">45x</span>
1645
+ <span class="cline-any cline-yes">45x</span>
1646
+ <span class="cline-any cline-yes">45x</span>
1647
+ <span class="cline-any cline-yes">45x</span>
1648
+ <span class="cline-any cline-yes">45x</span>
1649
+ <span class="cline-any cline-yes">45x</span>
1650
+ <span class="cline-any cline-yes">45x</span>
1651
+ <span class="cline-any cline-yes">45x</span>
1652
+ <span class="cline-any cline-yes">45x</span>
1653
+ <span class="cline-any cline-yes">67x</span>
1654
+ <span class="cline-any cline-yes">40x</span>
1655
+ <span class="cline-any cline-yes">40x</span>
1656
+ <span class="cline-any cline-yes">27x</span>
1657
+ <span class="cline-any cline-yes">27x</span>
1658
+ <span class="cline-any cline-yes">67x</span>
1659
+ <span class="cline-any cline-yes">3x</span>
1660
+ <span class="cline-any cline-yes">3x</span>
1661
+ <span class="cline-any cline-yes">3x</span>
1662
+ <span class="cline-any cline-yes">3x</span>
1663
+ <span class="cline-any cline-yes">3x</span>
1664
+ <span class="cline-any cline-yes">3x</span>
1665
+ <span class="cline-any cline-yes">3x</span>
1666
+ <span class="cline-any cline-yes">3x</span>
1667
+ <span class="cline-any cline-yes">24x</span>
1668
+ <span class="cline-any cline-yes">24x</span>
1669
+ <span class="cline-any cline-yes">24x</span>
1670
+ <span class="cline-any cline-yes">24x</span>
1671
+ <span class="cline-any cline-yes">24x</span>
1672
+ <span class="cline-any cline-yes">24x</span>
1673
+ <span class="cline-any cline-yes">24x</span>
1674
+ <span class="cline-any cline-no">&nbsp;</span>
1675
+ <span class="cline-any cline-no">&nbsp;</span>
1676
+ <span class="cline-any cline-yes">67x</span>
1677
+ <span class="cline-any cline-yes">45x</span>
1678
+ <span class="cline-any cline-yes">45x</span>
1679
+ <span class="cline-any cline-yes">45x</span>
1680
+ <span class="cline-any cline-yes">45x</span>
1681
+ <span class="cline-any cline-yes">45x</span>
1682
+ <span class="cline-any cline-yes">45x</span>
1683
+ <span class="cline-any cline-yes">45x</span>
1684
+ <span class="cline-any cline-yes">45x</span>
1685
+ <span class="cline-any cline-yes">45x</span>
1686
+ <span class="cline-any cline-yes">45x</span>
1687
+ <span class="cline-any cline-yes">45x</span>
1688
+ <span class="cline-any cline-yes">45x</span>
1689
+ <span class="cline-any cline-yes">45x</span>
1690
+ <span class="cline-any cline-yes">16x</span>
1691
+ <span class="cline-any cline-yes">16x</span>
1692
+ <span class="cline-any cline-no">&nbsp;</span>
1693
+ <span class="cline-any cline-no">&nbsp;</span>
1694
+ <span class="cline-any cline-no">&nbsp;</span>
1695
+ <span class="cline-any cline-yes">16x</span>
1696
+ <span class="cline-any cline-yes">16x</span>
1697
+ <span class="cline-any cline-yes">16x</span>
1698
+ <span class="cline-any cline-yes">16x</span>
1699
+ <span class="cline-any cline-yes">16x</span>
1700
+ <span class="cline-any cline-yes">1x</span>
1701
+ <span class="cline-any cline-yes">1x</span>
1702
+ <span class="cline-any cline-yes">1x</span>
1703
+ <span class="cline-any cline-yes">1x</span>
1704
+ <span class="cline-any cline-yes">1x</span>
1705
+ <span class="cline-any cline-yes">1x</span>
1706
+ <span class="cline-any cline-yes">1x</span>
1707
+ <span class="cline-any cline-yes">1x</span>
1708
+ <span class="cline-any cline-yes">1x</span>
1709
+ <span class="cline-any cline-yes">1x</span>
1710
+ <span class="cline-any cline-no">&nbsp;</span>
1711
+ <span class="cline-any cline-no">&nbsp;</span>
1712
+ <span class="cline-any cline-no">&nbsp;</span>
1713
+ <span class="cline-any cline-no">&nbsp;</span>
1714
+ <span class="cline-any cline-yes">15x</span>
1715
+ <span class="cline-any cline-yes">15x</span>
1716
+ <span class="cline-any cline-yes">15x</span>
1717
+ <span class="cline-any cline-yes">16x</span>
1718
+ <span class="cline-any cline-yes">15x</span>
1719
+ <span class="cline-any cline-yes">15x</span>
1720
+ <span class="cline-any cline-yes">15x</span>
1721
+ <span class="cline-any cline-no">&nbsp;</span>
1722
+ <span class="cline-any cline-no">&nbsp;</span>
1723
+ <span class="cline-any cline-no">&nbsp;</span>
1724
+ <span class="cline-any cline-yes">16x</span>
1725
+ <span class="cline-any cline-yes">45x</span>
1726
+ <span class="cline-any cline-yes">45x</span>
1727
+ <span class="cline-any cline-yes">45x</span>
1728
+ <span class="cline-any cline-yes">45x</span>
1729
+ <span class="cline-any cline-yes">45x</span>
1730
+ <span class="cline-any cline-yes">45x</span>
1731
+ <span class="cline-any cline-yes">45x</span>
1732
+ <span class="cline-any cline-yes">45x</span>
1733
+ <span class="cline-any cline-yes">45x</span>
1734
+ <span class="cline-any cline-yes">45x</span>
1735
+ <span class="cline-any cline-yes">45x</span>
1736
+ <span class="cline-any cline-yes">45x</span>
1737
+ <span class="cline-any cline-yes">45x</span>
1738
+ <span class="cline-any cline-yes">45x</span>
1739
+ <span class="cline-any cline-yes">45x</span>
1740
+ <span class="cline-any cline-yes">45x</span>
1741
+ <span class="cline-any cline-yes">45x</span>
1742
+ <span class="cline-any cline-yes">5x</span>
1743
+ <span class="cline-any cline-yes">5x</span>
1744
+ <span class="cline-any cline-yes">5x</span>
1745
+ <span class="cline-any cline-yes">5x</span>
1746
+ <span class="cline-any cline-yes">5x</span>
1747
+ <span class="cline-any cline-yes">5x</span>
1748
+ <span class="cline-any cline-yes">45x</span>
1749
+ <span class="cline-any cline-yes">45x</span>
1750
+ <span class="cline-any cline-yes">45x</span>
1751
+ <span class="cline-any cline-yes">45x</span>
1752
+ <span class="cline-any cline-yes">45x</span>
1753
+ <span class="cline-any cline-yes">45x</span>
1754
+ <span class="cline-any cline-yes">45x</span>
1755
+ <span class="cline-any cline-yes">45x</span>
1756
+ <span class="cline-any cline-yes">45x</span>
1757
+ <span class="cline-any cline-yes">45x</span>
1758
+ <span class="cline-any cline-yes">45x</span>
1759
+ <span class="cline-any cline-yes">45x</span>
1760
+ <span class="cline-any cline-yes">45x</span>
1761
+ <span class="cline-any cline-yes">45x</span>
1762
+ <span class="cline-any cline-yes">45x</span>
1763
+ <span class="cline-any cline-yes">45x</span>
1764
+ <span class="cline-any cline-yes">45x</span>
1765
+ <span class="cline-any cline-yes">45x</span>
1766
+ <span class="cline-any cline-yes">45x</span>
1767
+ <span class="cline-any cline-yes">2x</span>
1768
+ <span class="cline-any cline-yes">2x</span>
1769
+ <span class="cline-any cline-yes">2x</span>
1770
+ <span class="cline-any cline-yes">2x</span>
1771
+ <span class="cline-any cline-yes">2x</span>
1772
+ <span class="cline-any cline-yes">2x</span>
1773
+ <span class="cline-any cline-yes">2x</span>
1774
+ <span class="cline-any cline-yes">2x</span>
1775
+ <span class="cline-any cline-yes">2x</span>
1776
+ <span class="cline-any cline-yes">2x</span>
1777
+ <span class="cline-any cline-yes">2x</span>
1778
+ <span class="cline-any cline-yes">2x</span>
1779
+ <span class="cline-any cline-yes">2x</span>
1780
+ <span class="cline-any cline-yes">2x</span>
1781
+ <span class="cline-any cline-yes">2x</span>
1782
+ <span class="cline-any cline-yes">2x</span>
1783
+ <span class="cline-any cline-yes">2x</span>
1784
+ <span class="cline-any cline-yes">2x</span>
1785
+ <span class="cline-any cline-yes">2x</span>
1786
+ <span class="cline-any cline-yes">2x</span>
1787
+ <span class="cline-any cline-yes">45x</span>
1788
+ <span class="cline-any cline-yes">45x</span>
1789
+ <span class="cline-any cline-yes">45x</span>
1790
+ <span class="cline-any cline-yes">45x</span>
1791
+ <span class="cline-any cline-yes">45x</span>
1792
+ <span class="cline-any cline-yes">45x</span>
1793
+ <span class="cline-any cline-yes">45x</span>
1794
+ <span class="cline-any cline-yes">45x</span>
1795
+ <span class="cline-any cline-yes">45x</span>
1796
+ <span class="cline-any cline-yes">45x</span>
1797
+ <span class="cline-any cline-yes">45x</span>
1798
+ <span class="cline-any cline-yes">45x</span>
1799
+ <span class="cline-any cline-yes">45x</span>
1800
+ <span class="cline-any cline-yes">45x</span>
1801
+ <span class="cline-any cline-yes">45x</span>
1802
+ <span class="cline-any cline-yes">45x</span>
1803
+ <span class="cline-any cline-yes">45x</span>
1804
+ <span class="cline-any cline-yes">45x</span>
1805
+ <span class="cline-any cline-yes">1x</span>
1806
+ <span class="cline-any cline-yes">1x</span>
1807
+ <span class="cline-any cline-yes">1x</span>
1808
+ <span class="cline-any cline-yes">1x</span>
1809
+ <span class="cline-any cline-yes">1x</span>
1810
+ <span class="cline-any cline-yes">1x</span>
1811
+ <span class="cline-any cline-yes">1x</span>
1812
+ <span class="cline-any cline-yes">1x</span>
1813
+ <span class="cline-any cline-yes">1x</span>
1814
+ <span class="cline-any cline-yes">1x</span>
1815
+ <span class="cline-any cline-yes">1x</span>
1816
+ <span class="cline-any cline-yes">1x</span>
1817
+ <span class="cline-any cline-yes">1x</span>
1818
+ <span class="cline-any cline-yes">1x</span>
1819
+ <span class="cline-any cline-yes">1x</span>
1820
+ <span class="cline-any cline-yes">45x</span>
1821
+ <span class="cline-any cline-yes">45x</span>
1822
+ <span class="cline-any cline-yes">45x</span>
1823
+ <span class="cline-any cline-yes">45x</span>
1824
+ <span class="cline-any cline-yes">45x</span>
1825
+ <span class="cline-any cline-yes">45x</span>
1826
+ <span class="cline-any cline-yes">45x</span>
1827
+ <span class="cline-any cline-yes">45x</span>
1828
+ <span class="cline-any cline-yes">45x</span>
1829
+ <span class="cline-any cline-yes">45x</span>
1830
+ <span class="cline-any cline-yes">45x</span>
1831
+ <span class="cline-any cline-yes">45x</span>
1832
+ <span class="cline-any cline-yes">45x</span>
1833
+ <span class="cline-any cline-yes">45x</span>
1834
+ <span class="cline-any cline-yes">45x</span>
1835
+ <span class="cline-any cline-yes">45x</span>
1836
+ <span class="cline-any cline-yes">45x</span>
1837
+ <span class="cline-any cline-yes">2x</span>
1838
+ <span class="cline-any cline-yes">2x</span>
1839
+ <span class="cline-any cline-yes">2x</span>
1840
+ <span class="cline-any cline-yes">2x</span>
1841
+ <span class="cline-any cline-yes">2x</span>
1842
+ <span class="cline-any cline-yes">2x</span>
1843
+ <span class="cline-any cline-yes">2x</span>
1844
+ <span class="cline-any cline-yes">2x</span>
1845
+ <span class="cline-any cline-yes">45x</span>
1846
+ <span class="cline-any cline-yes">45x</span>
1847
+ <span class="cline-any cline-yes">45x</span>
1848
+ <span class="cline-any cline-yes">45x</span>
1849
+ <span class="cline-any cline-yes">45x</span>
1850
+ <span class="cline-any cline-yes">45x</span>
1851
+ <span class="cline-any cline-yes">45x</span>
1852
+ <span class="cline-any cline-yes">45x</span>
1853
+ <span class="cline-any cline-yes">45x</span>
1854
+ <span class="cline-any cline-yes">45x</span>
1855
+ <span class="cline-any cline-yes">45x</span>
1856
+ <span class="cline-any cline-yes">45x</span>
1857
+ <span class="cline-any cline-yes">45x</span>
1858
+ <span class="cline-any cline-yes">45x</span>
1859
+ <span class="cline-any cline-yes">45x</span>
1860
+ <span class="cline-any cline-yes">45x</span>
1861
+ <span class="cline-any cline-yes">45x</span>
1862
+ <span class="cline-any cline-yes">1x</span>
1863
+ <span class="cline-any cline-yes">1x</span>
1864
+ <span class="cline-any cline-yes">1x</span>
1865
+ <span class="cline-any cline-yes">1x</span>
1866
+ <span class="cline-any cline-yes">1x</span>
1867
+ <span class="cline-any cline-yes">1x</span>
1868
+ <span class="cline-any cline-yes">1x</span>
1869
+ <span class="cline-any cline-yes">1x</span>
1870
+ <span class="cline-any cline-yes">45x</span>
1871
+ <span class="cline-any cline-yes">45x</span>
1872
+ <span class="cline-any cline-yes">45x</span>
1873
+ <span class="cline-any cline-yes">45x</span>
1874
+ <span class="cline-any cline-yes">45x</span>
1875
+ <span class="cline-any cline-yes">45x</span>
1876
+ <span class="cline-any cline-yes">45x</span>
1877
+ <span class="cline-any cline-yes">45x</span>
1878
+ <span class="cline-any cline-yes">45x</span>
1879
+ <span class="cline-any cline-yes">2x</span>
1880
+ <span class="cline-any cline-yes">2x</span>
1881
+ <span class="cline-any cline-yes">2x</span>
1882
+ <span class="cline-any cline-yes">2x</span>
1883
+ <span class="cline-any cline-yes">2x</span>
1884
+ <span class="cline-any cline-yes">2x</span>
1885
+ <span class="cline-any cline-yes">2x</span>
1886
+ <span class="cline-any cline-yes">2x</span>
1887
+ <span class="cline-any cline-yes">2x</span>
1888
+ <span class="cline-any cline-yes">2x</span>
1889
+ <span class="cline-any cline-yes">2x</span>
1890
+ <span class="cline-any cline-yes">2x</span>
1891
+ <span class="cline-any cline-yes">2x</span>
1892
+ <span class="cline-any cline-yes">1x</span>
1893
+ <span class="cline-any cline-yes">1x</span>
1894
+ <span class="cline-any cline-yes">2x</span>
1895
+ <span class="cline-any cline-yes">2x</span>
1896
+ <span class="cline-any cline-yes">2x</span>
1897
+ <span class="cline-any cline-yes">45x</span>
1898
+ <span class="cline-any cline-yes">45x</span>
1899
+ <span class="cline-any cline-yes">45x</span>
1900
+ <span class="cline-any cline-yes">45x</span>
1901
+ <span class="cline-any cline-yes">45x</span>
1902
+ <span class="cline-any cline-yes">45x</span>
1903
+ <span class="cline-any cline-yes">45x</span>
1904
+ <span class="cline-any cline-yes">1x</span>
1905
+ <span class="cline-any cline-yes">1x</span>
1906
+ <span class="cline-any cline-yes">45x</span>
1907
+ <span class="cline-any cline-yes">45x</span>
1908
+ <span class="cline-any cline-yes">45x</span>
1909
+ <span class="cline-any cline-yes">45x</span>
1910
+ <span class="cline-any cline-yes">45x</span>
1911
+ <span class="cline-any cline-yes">45x</span>
1912
+ <span class="cline-any cline-yes">45x</span>
1913
+ <span class="cline-any cline-yes">4x</span>
1914
+ <span class="cline-any cline-yes">4x</span>
1915
+ <span class="cline-any cline-yes">4x</span>
1916
+ <span class="cline-any cline-yes">4x</span>
1917
+ <span class="cline-any cline-yes">4x</span>
1918
+ <span class="cline-any cline-yes">4x</span>
1919
+ <span class="cline-any cline-yes">4x</span>
1920
+ <span class="cline-any cline-yes">4x</span>
1921
+ <span class="cline-any cline-yes">4x</span>
1922
+ <span class="cline-any cline-yes">4x</span>
1923
+ <span class="cline-any cline-yes">1x</span>
1924
+ <span class="cline-any cline-yes">1x</span>
1925
+ <span class="cline-any cline-yes">3x</span>
1926
+ <span class="cline-any cline-yes">3x</span>
1927
+ <span class="cline-any cline-yes">3x</span>
1928
+ <span class="cline-any cline-yes">3x</span>
1929
+ <span class="cline-any cline-yes">4x</span>
1930
+ <span class="cline-any cline-yes">5x</span>
1931
+ <span class="cline-any cline-yes">3x</span>
1932
+ <span class="cline-any cline-yes">3x</span>
1933
+ <span class="cline-any cline-yes">3x</span>
1934
+ <span class="cline-any cline-yes">5x</span>
1935
+ <span class="cline-any cline-yes">2x</span>
1936
+ <span class="cline-any cline-yes">2x</span>
1937
+ <span class="cline-any cline-yes">2x</span>
1938
+ <span class="cline-any cline-yes">2x</span>
1939
+ <span class="cline-any cline-yes">2x</span>
1940
+ <span class="cline-any cline-yes">2x</span>
1941
+ <span class="cline-any cline-yes">2x</span>
1942
+ <span class="cline-any cline-yes">2x</span>
1943
+ <span class="cline-any cline-yes">2x</span>
1944
+ <span class="cline-any cline-yes">2x</span>
1945
+ <span class="cline-any cline-yes">2x</span>
1946
+ <span class="cline-any cline-yes">2x</span>
1947
+ <span class="cline-any cline-yes">5x</span>
1948
+ <span class="cline-any cline-yes">3x</span>
1949
+ <span class="cline-any cline-yes">3x</span>
1950
+ <span class="cline-any cline-yes">4x</span>
1951
+ <span class="cline-any cline-yes">45x</span>
1952
+ <span class="cline-any cline-yes">45x</span>
1953
+ <span class="cline-any cline-yes">45x</span>
1954
+ <span class="cline-any cline-yes">45x</span>
1955
+ <span class="cline-any cline-yes">45x</span>
1956
+ <span class="cline-any cline-yes">45x</span>
1957
+ <span class="cline-any cline-yes">45x</span>
1958
+ <span class="cline-any cline-yes">45x</span>
1959
+ <span class="cline-any cline-yes">45x</span>
1960
+ <span class="cline-any cline-yes">45x</span>
1961
+ <span class="cline-any cline-yes">45x</span>
1962
+ <span class="cline-any cline-yes">45x</span>
1963
+ <span class="cline-any cline-yes">45x</span>
1964
+ <span class="cline-any cline-yes">45x</span>
1965
+ <span class="cline-any cline-yes">45x</span>
1966
+ <span class="cline-any cline-yes">45x</span>
1967
+ <span class="cline-any cline-yes">45x</span>
1968
+ <span class="cline-any cline-yes">45x</span>
1969
+ <span class="cline-any cline-yes">45x</span>
1970
+ <span class="cline-any cline-yes">45x</span>
1971
+ <span class="cline-any cline-yes">45x</span>
1972
+ <span class="cline-any cline-yes">8x</span>
1973
+ <span class="cline-any cline-yes">8x</span>
1974
+ <span class="cline-any cline-yes">8x</span>
1975
+ <span class="cline-any cline-yes">8x</span>
1976
+ <span class="cline-any cline-yes">8x</span>
1977
+ <span class="cline-any cline-yes">8x</span>
1978
+ <span class="cline-any cline-yes">8x</span>
1979
+ <span class="cline-any cline-yes">8x</span>
1980
+ <span class="cline-any cline-yes">8x</span>
1981
+ <span class="cline-any cline-yes">8x</span>
1982
+ <span class="cline-any cline-yes">1x</span>
1983
+ <span class="cline-any cline-yes">1x</span>
1984
+ <span class="cline-any cline-yes">1x</span>
1985
+ <span class="cline-any cline-yes">1x</span>
1986
+ <span class="cline-any cline-yes">1x</span>
1987
+ <span class="cline-any cline-yes">1x</span>
1988
+ <span class="cline-any cline-yes">1x</span>
1989
+ <span class="cline-any cline-yes">7x</span>
1990
+ <span class="cline-any cline-yes">8x</span>
1991
+ <span class="cline-any cline-yes">8x</span>
1992
+ <span class="cline-any cline-yes">8x</span>
1993
+ <span class="cline-any cline-yes">8x</span>
1994
+ <span class="cline-any cline-yes">8x</span>
1995
+ <span class="cline-any cline-yes">8x</span>
1996
+ <span class="cline-any cline-yes">8x</span>
1997
+ <span class="cline-any cline-yes">8x</span>
1998
+ <span class="cline-any cline-yes">8x</span>
1999
+ <span class="cline-any cline-yes">8x</span>
2000
+ <span class="cline-any cline-yes">8x</span>
2001
+ <span class="cline-any cline-yes">8x</span>
2002
+ <span class="cline-any cline-yes">8x</span>
2003
+ <span class="cline-any cline-yes">8x</span>
2004
+ <span class="cline-any cline-yes">1x</span>
2005
+ <span class="cline-any cline-yes">1x</span>
2006
+ <span class="cline-any cline-yes">8x</span>
2007
+ <span class="cline-any cline-yes">8x</span>
2008
+ <span class="cline-any cline-yes">8x</span>
2009
+ <span class="cline-any cline-yes">1x</span>
2010
+ <span class="cline-any cline-yes">1x</span>
2011
+ <span class="cline-any cline-yes">8x</span>
2012
+ <span class="cline-any cline-yes">8x</span>
2013
+ <span class="cline-any cline-yes">8x</span>
2014
+ <span class="cline-any cline-yes">8x</span>
2015
+ <span class="cline-any cline-yes">8x</span>
2016
+ <span class="cline-any cline-yes">8x</span>
2017
+ <span class="cline-any cline-yes">8x</span>
2018
+ <span class="cline-any cline-yes">8x</span>
2019
+ <span class="cline-any cline-yes">8x</span>
2020
+ <span class="cline-any cline-yes">8x</span>
2021
+ <span class="cline-any cline-yes">8x</span>
2022
+ <span class="cline-any cline-yes">8x</span>
2023
+ <span class="cline-any cline-yes">8x</span>
2024
+ <span class="cline-any cline-yes">8x</span>
2025
+ <span class="cline-any cline-yes">8x</span>
2026
+ <span class="cline-any cline-yes">8x</span>
2027
+ <span class="cline-any cline-yes">8x</span>
2028
+ <span class="cline-any cline-yes">8x</span>
2029
+ <span class="cline-any cline-yes">8x</span>
2030
+ <span class="cline-any cline-yes">8x</span>
2031
+ <span class="cline-any cline-yes">8x</span>
2032
+ <span class="cline-any cline-yes">8x</span>
2033
+ <span class="cline-any cline-yes">8x</span>
2034
+ <span class="cline-any cline-yes">8x</span>
2035
+ <span class="cline-any cline-yes">8x</span>
2036
+ <span class="cline-any cline-yes">8x</span>
2037
+ <span class="cline-any cline-no">&nbsp;</span>
2038
+ <span class="cline-any cline-no">&nbsp;</span>
2039
+ <span class="cline-any cline-no">&nbsp;</span>
2040
+ <span class="cline-any cline-yes">8x</span>
2041
+ <span class="cline-any cline-yes">8x</span>
2042
+ <span class="cline-any cline-yes">8x</span>
2043
+ <span class="cline-any cline-yes">8x</span>
2044
+ <span class="cline-any cline-no">&nbsp;</span>
2045
+ <span class="cline-any cline-no">&nbsp;</span>
2046
+ <span class="cline-any cline-no">&nbsp;</span>
2047
+ <span class="cline-any cline-yes">8x</span>
2048
+ <span class="cline-any cline-yes">8x</span>
2049
+ <span class="cline-any cline-yes">8x</span>
2050
+ <span class="cline-any cline-yes">8x</span>
2051
+ <span class="cline-any cline-no">&nbsp;</span>
2052
+ <span class="cline-any cline-no">&nbsp;</span>
2053
+ <span class="cline-any cline-no">&nbsp;</span>
2054
+ <span class="cline-any cline-yes">8x</span>
2055
+ <span class="cline-any cline-yes">8x</span>
2056
+ <span class="cline-any cline-yes">8x</span>
2057
+ <span class="cline-any cline-yes">8x</span>
2058
+ <span class="cline-any cline-no">&nbsp;</span>
2059
+ <span class="cline-any cline-no">&nbsp;</span>
2060
+ <span class="cline-any cline-no">&nbsp;</span>
2061
+ <span class="cline-any cline-yes">8x</span>
2062
+ <span class="cline-any cline-yes">8x</span>
2063
+ <span class="cline-any cline-yes">8x</span>
2064
+ <span class="cline-any cline-yes">8x</span>
2065
+ <span class="cline-any cline-no">&nbsp;</span>
2066
+ <span class="cline-any cline-no">&nbsp;</span>
2067
+ <span class="cline-any cline-no">&nbsp;</span>
2068
+ <span class="cline-any cline-yes">8x</span>
2069
+ <span class="cline-any cline-yes">8x</span>
2070
+ <span class="cline-any cline-yes">8x</span>
2071
+ <span class="cline-any cline-yes">45x</span>
2072
+ <span class="cline-any cline-yes">45x</span>
2073
+ <span class="cline-any cline-yes">45x</span>
2074
+ <span class="cline-any cline-yes">45x</span>
2075
+ <span class="cline-any cline-yes">45x</span>
2076
+ <span class="cline-any cline-yes">45x</span>
2077
+ <span class="cline-any cline-yes">45x</span>
2078
+ <span class="cline-any cline-yes">45x</span>
2079
+ <span class="cline-any cline-yes">45x</span>
2080
+ <span class="cline-any cline-no">&nbsp;</span>
2081
+ <span class="cline-any cline-no">&nbsp;</span>
2082
+ <span class="cline-any cline-no">&nbsp;</span>
2083
+ <span class="cline-any cline-no">&nbsp;</span>
2084
+ <span class="cline-any cline-no">&nbsp;</span>
2085
+ <span class="cline-any cline-no">&nbsp;</span>
2086
+ <span class="cline-any cline-yes">45x</span>
2087
+ <span class="cline-any cline-yes">45x</span>
2088
+ <span class="cline-any cline-yes">45x</span>
2089
+ <span class="cline-any cline-yes">45x</span>
2090
+ <span class="cline-any cline-yes">45x</span>
2091
+ <span class="cline-any cline-yes">45x</span>
2092
+ <span class="cline-any cline-yes">45x</span>
2093
+ <span class="cline-any cline-yes">45x</span>
2094
+ <span class="cline-any cline-yes">45x</span>
2095
+ <span class="cline-any cline-no">&nbsp;</span>
2096
+ <span class="cline-any cline-no">&nbsp;</span>
2097
+ <span class="cline-any cline-no">&nbsp;</span>
2098
+ <span class="cline-any cline-no">&nbsp;</span>
2099
+ <span class="cline-any cline-no">&nbsp;</span>
2100
+ <span class="cline-any cline-no">&nbsp;</span>
2101
+ <span class="cline-any cline-yes">45x</span>
2102
+ <span class="cline-any cline-yes">45x</span>
2103
+ <span class="cline-any cline-yes">45x</span>
2104
+ <span class="cline-any cline-yes">45x</span>
2105
+ <span class="cline-any cline-yes">45x</span>
2106
+ <span class="cline-any cline-yes">45x</span>
2107
+ <span class="cline-any cline-yes">45x</span>
2108
+ <span class="cline-any cline-yes">45x</span>
2109
+ <span class="cline-any cline-yes">45x</span>
2110
+ <span class="cline-any cline-yes">45x</span>
2111
+ <span class="cline-any cline-yes">45x</span>
2112
+ <span class="cline-any cline-yes">45x</span>
2113
+ <span class="cline-any cline-yes">45x</span>
2114
+ <span class="cline-any cline-yes">45x</span>
2115
+ <span class="cline-any cline-yes">45x</span>
2116
+ <span class="cline-any cline-yes">45x</span>
2117
+ <span class="cline-any cline-yes">3x</span>
2118
+ <span class="cline-any cline-yes">3x</span>
2119
+ <span class="cline-any cline-yes">3x</span>
2120
+ <span class="cline-any cline-yes">3x</span>
2121
+ <span class="cline-any cline-yes">3x</span>
2122
+ <span class="cline-any cline-yes">3x</span>
2123
+ <span class="cline-any cline-yes">3x</span>
2124
+ <span class="cline-any cline-yes">3x</span>
2125
+ <span class="cline-any cline-yes">3x</span>
2126
+ <span class="cline-any cline-yes">3x</span>
2127
+ <span class="cline-any cline-yes">3x</span>
2128
+ <span class="cline-any cline-yes">3x</span>
2129
+ <span class="cline-any cline-yes">3x</span>
2130
+ <span class="cline-any cline-yes">3x</span>
2131
+ <span class="cline-any cline-yes">3x</span>
2132
+ <span class="cline-any cline-yes">3x</span>
2133
+ <span class="cline-any cline-yes">3x</span>
2134
+ <span class="cline-any cline-yes">3x</span>
2135
+ <span class="cline-any cline-yes">3x</span>
2136
+ <span class="cline-any cline-yes">3x</span>
2137
+ <span class="cline-any cline-yes">3x</span>
2138
+ <span class="cline-any cline-yes">3x</span>
2139
+ <span class="cline-any cline-yes">3x</span>
2140
+ <span class="cline-any cline-yes">3x</span>
2141
+ <span class="cline-any cline-yes">3x</span>
2142
+ <span class="cline-any cline-yes">3x</span>
2143
+ <span class="cline-any cline-yes">3x</span>
2144
+ <span class="cline-any cline-yes">3x</span>
2145
+ <span class="cline-any cline-yes">3x</span>
2146
+ <span class="cline-any cline-yes">3x</span>
2147
+ <span class="cline-any cline-yes">3x</span>
2148
+ <span class="cline-any cline-yes">3x</span>
2149
+ <span class="cline-any cline-yes">3x</span>
2150
+ <span class="cline-any cline-yes">3x</span>
2151
+ <span class="cline-any cline-yes">3x</span>
2152
+ <span class="cline-any cline-yes">3x</span>
2153
+ <span class="cline-any cline-yes">3x</span>
2154
+ <span class="cline-any cline-yes">3x</span>
2155
+ <span class="cline-any cline-yes">3x</span>
2156
+ <span class="cline-any cline-yes">3x</span>
2157
+ <span class="cline-any cline-yes">1x</span>
2158
+ <span class="cline-any cline-yes">1x</span>
2159
+ <span class="cline-any cline-yes">3x</span>
2160
+ <span class="cline-any cline-yes">3x</span>
2161
+ <span class="cline-any cline-yes">3x</span>
2162
+ <span class="cline-any cline-yes">45x</span>
2163
+ <span class="cline-any cline-yes">45x</span>
2164
+ <span class="cline-any cline-yes">45x</span>
2165
+ <span class="cline-any cline-yes">45x</span>
2166
+ <span class="cline-any cline-yes">45x</span>
2167
+ <span class="cline-any cline-yes">45x</span>
2168
+ <span class="cline-any cline-yes">45x</span>
2169
+ <span class="cline-any cline-yes">45x</span>
2170
+ <span class="cline-any cline-yes">45x</span>
2171
+ <span class="cline-any cline-no">&nbsp;</span>
2172
+ <span class="cline-any cline-no">&nbsp;</span>
2173
+ <span class="cline-any cline-no">&nbsp;</span>
2174
+ <span class="cline-any cline-no">&nbsp;</span>
2175
+ <span class="cline-any cline-no">&nbsp;</span>
2176
+ <span class="cline-any cline-no">&nbsp;</span>
2177
+ <span class="cline-any cline-no">&nbsp;</span>
2178
+ <span class="cline-any cline-no">&nbsp;</span>
2179
+ <span class="cline-any cline-yes">45x</span>
2180
+ <span class="cline-any cline-yes">45x</span>
2181
+ <span class="cline-any cline-yes">45x</span>
2182
+ <span class="cline-any cline-yes">45x</span>
2183
+ <span class="cline-any cline-yes">45x</span>
2184
+ <span class="cline-any cline-yes">45x</span>
2185
+ <span class="cline-any cline-yes">45x</span>
2186
+ <span class="cline-any cline-yes">45x</span>
2187
+ <span class="cline-any cline-yes">45x</span>
2188
+ <span class="cline-any cline-yes">45x</span>
2189
+ <span class="cline-any cline-yes">45x</span>
2190
+ <span class="cline-any cline-yes">45x</span>
2191
+ <span class="cline-any cline-yes">45x</span>
2192
+ <span class="cline-any cline-yes">45x</span>
2193
+ <span class="cline-any cline-yes">45x</span>
2194
+ <span class="cline-any cline-yes">5x</span>
2195
+ <span class="cline-any cline-yes">5x</span>
2196
+ <span class="cline-any cline-yes">5x</span>
2197
+ <span class="cline-any cline-yes">5x</span>
2198
+ <span class="cline-any cline-yes">5x</span>
2199
+ <span class="cline-any cline-yes">5x</span>
2200
+ <span class="cline-any cline-no">&nbsp;</span>
2201
+ <span class="cline-any cline-yes">5x</span>
2202
+ <span class="cline-any cline-yes">5x</span>
2203
+ <span class="cline-any cline-yes">5x</span>
2204
+ <span class="cline-any cline-yes">5x</span>
2205
+ <span class="cline-any cline-yes">5x</span>
2206
+ <span class="cline-any cline-yes">5x</span>
2207
+ <span class="cline-any cline-yes">5x</span>
2208
+ <span class="cline-any cline-yes">5x</span>
2209
+ <span class="cline-any cline-yes">5x</span>
2210
+ <span class="cline-any cline-yes">5x</span>
2211
+ <span class="cline-any cline-yes">5x</span>
2212
+ <span class="cline-any cline-yes">5x</span>
2213
+ <span class="cline-any cline-yes">5x</span>
2214
+ <span class="cline-any cline-yes">5x</span>
2215
+ <span class="cline-any cline-yes">5x</span>
2216
+ <span class="cline-any cline-yes">5x</span>
2217
+ <span class="cline-any cline-yes">5x</span>
2218
+ <span class="cline-any cline-yes">5x</span>
2219
+ <span class="cline-any cline-yes">5x</span>
2220
+ <span class="cline-any cline-yes">5x</span>
2221
+ <span class="cline-any cline-no">&nbsp;</span>
2222
+ <span class="cline-any cline-no">&nbsp;</span>
2223
+ <span class="cline-any cline-no">&nbsp;</span>
2224
+ <span class="cline-any cline-no">&nbsp;</span>
2225
+ <span class="cline-any cline-no">&nbsp;</span>
2226
+ <span class="cline-any cline-no">&nbsp;</span>
2227
+ <span class="cline-any cline-no">&nbsp;</span>
2228
+ <span class="cline-any cline-yes">5x</span>
2229
+ <span class="cline-any cline-yes">5x</span>
2230
+ <span class="cline-any cline-yes">5x</span>
2231
+ <span class="cline-any cline-yes">1x</span>
2232
+ <span class="cline-any cline-yes">1x</span>
2233
+ <span class="cline-any cline-yes">5x</span>
2234
+ <span class="cline-any cline-yes">5x</span>
2235
+ <span class="cline-any cline-yes">5x</span>
2236
+ <span class="cline-any cline-yes">1x</span>
2237
+ <span class="cline-any cline-yes">1x</span>
2238
+ <span class="cline-any cline-yes">5x</span>
2239
+ <span class="cline-any cline-yes">5x</span>
2240
+ <span class="cline-any cline-yes">5x</span>
2241
+ <span class="cline-any cline-yes">1x</span>
2242
+ <span class="cline-any cline-yes">1x</span>
2243
+ <span class="cline-any cline-yes">5x</span>
2244
+ <span class="cline-any cline-yes">5x</span>
2245
+ <span class="cline-any cline-yes">5x</span>
2246
+ <span class="cline-any cline-yes">45x</span>
2247
+ <span class="cline-any cline-yes">45x</span>
2248
+ <span class="cline-any cline-yes">45x</span>
2249
+ <span class="cline-any cline-yes">45x</span>
2250
+ <span class="cline-any cline-yes">45x</span>
2251
+ <span class="cline-any cline-yes">45x</span>
2252
+ <span class="cline-any cline-yes">45x</span>
2253
+ <span class="cline-any cline-yes">45x</span>
2254
+ <span class="cline-any cline-yes">3x</span>
2255
+ <span class="cline-any cline-yes">3x</span>
2256
+ <span class="cline-any cline-yes">3x</span>
2257
+ <span class="cline-any cline-yes">3x</span>
2258
+ <span class="cline-any cline-yes">3x</span>
2259
+ <span class="cline-any cline-yes">3x</span>
2260
+ <span class="cline-any cline-yes">45x</span>
2261
+ <span class="cline-any cline-yes">45x</span>
2262
+ <span class="cline-any cline-yes">45x</span>
2263
+ <span class="cline-any cline-yes">45x</span>
2264
+ <span class="cline-any cline-yes">45x</span>
2265
+ <span class="cline-any cline-yes">45x</span>
2266
+ <span class="cline-any cline-yes">45x</span>
2267
+ <span class="cline-any cline-yes">45x</span>
2268
+ <span class="cline-any cline-no">&nbsp;</span>
2269
+ <span class="cline-any cline-no">&nbsp;</span>
2270
+ <span class="cline-any cline-no">&nbsp;</span>
2271
+ <span class="cline-any cline-no">&nbsp;</span>
2272
+ <span class="cline-any cline-no">&nbsp;</span>
2273
+ <span class="cline-any cline-no">&nbsp;</span>
2274
+ <span class="cline-any cline-no">&nbsp;</span>
2275
+ <span class="cline-any cline-no">&nbsp;</span>
2276
+ <span class="cline-any cline-no">&nbsp;</span>
2277
+ <span class="cline-any cline-no">&nbsp;</span>
2278
+ <span class="cline-any cline-no">&nbsp;</span>
2279
+ <span class="cline-any cline-no">&nbsp;</span>
2280
+ <span class="cline-any cline-no">&nbsp;</span>
2281
+ <span class="cline-any cline-no">&nbsp;</span>
2282
+ <span class="cline-any cline-no">&nbsp;</span>
2283
+ <span class="cline-any cline-no">&nbsp;</span>
2284
+ <span class="cline-any cline-no">&nbsp;</span>
2285
+ <span class="cline-any cline-no">&nbsp;</span>
2286
+ <span class="cline-any cline-no">&nbsp;</span>
2287
+ <span class="cline-any cline-no">&nbsp;</span>
2288
+ <span class="cline-any cline-no">&nbsp;</span>
2289
+ <span class="cline-any cline-no">&nbsp;</span>
2290
+ <span class="cline-any cline-no">&nbsp;</span>
2291
+ <span class="cline-any cline-no">&nbsp;</span>
2292
+ <span class="cline-any cline-no">&nbsp;</span>
2293
+ <span class="cline-any cline-no">&nbsp;</span>
2294
+ <span class="cline-any cline-no">&nbsp;</span>
2295
+ <span class="cline-any cline-no">&nbsp;</span>
2296
+ <span class="cline-any cline-no">&nbsp;</span>
2297
+ <span class="cline-any cline-no">&nbsp;</span>
2298
+ <span class="cline-any cline-no">&nbsp;</span>
2299
+ <span class="cline-any cline-no">&nbsp;</span>
2300
+ <span class="cline-any cline-no">&nbsp;</span>
2301
+ <span class="cline-any cline-no">&nbsp;</span>
2302
+ <span class="cline-any cline-no">&nbsp;</span>
2303
+ <span class="cline-any cline-no">&nbsp;</span>
2304
+ <span class="cline-any cline-no">&nbsp;</span>
2305
+ <span class="cline-any cline-no">&nbsp;</span>
2306
+ <span class="cline-any cline-no">&nbsp;</span>
2307
+ <span class="cline-any cline-no">&nbsp;</span>
2308
+ <span class="cline-any cline-no">&nbsp;</span>
2309
+ <span class="cline-any cline-no">&nbsp;</span>
2310
+ <span class="cline-any cline-no">&nbsp;</span>
2311
+ <span class="cline-any cline-no">&nbsp;</span>
2312
+ <span class="cline-any cline-no">&nbsp;</span>
2313
+ <span class="cline-any cline-no">&nbsp;</span>
2314
+ <span class="cline-any cline-no">&nbsp;</span>
2315
+ <span class="cline-any cline-no">&nbsp;</span>
2316
+ <span class="cline-any cline-no">&nbsp;</span>
2317
+ <span class="cline-any cline-no">&nbsp;</span>
2318
+ <span class="cline-any cline-no">&nbsp;</span>
2319
+ <span class="cline-any cline-no">&nbsp;</span>
2320
+ <span class="cline-any cline-no">&nbsp;</span>
2321
+ <span class="cline-any cline-no">&nbsp;</span>
2322
+ <span class="cline-any cline-no">&nbsp;</span>
2323
+ <span class="cline-any cline-no">&nbsp;</span>
2324
+ <span class="cline-any cline-no">&nbsp;</span>
2325
+ <span class="cline-any cline-no">&nbsp;</span>
2326
+ <span class="cline-any cline-no">&nbsp;</span>
2327
+ <span class="cline-any cline-no">&nbsp;</span>
2328
+ <span class="cline-any cline-no">&nbsp;</span>
2329
+ <span class="cline-any cline-no">&nbsp;</span>
2330
+ <span class="cline-any cline-no">&nbsp;</span>
2331
+ <span class="cline-any cline-no">&nbsp;</span>
2332
+ <span class="cline-any cline-no">&nbsp;</span>
2333
+ <span class="cline-any cline-no">&nbsp;</span>
2334
+ <span class="cline-any cline-no">&nbsp;</span>
2335
+ <span class="cline-any cline-no">&nbsp;</span>
2336
+ <span class="cline-any cline-no">&nbsp;</span>
2337
+ <span class="cline-any cline-no">&nbsp;</span>
2338
+ <span class="cline-any cline-no">&nbsp;</span>
2339
+ <span class="cline-any cline-no">&nbsp;</span>
2340
+ <span class="cline-any cline-no">&nbsp;</span>
2341
+ <span class="cline-any cline-no">&nbsp;</span>
2342
+ <span class="cline-any cline-no">&nbsp;</span>
2343
+ <span class="cline-any cline-no">&nbsp;</span>
2344
+ <span class="cline-any cline-no">&nbsp;</span>
2345
+ <span class="cline-any cline-no">&nbsp;</span>
2346
+ <span class="cline-any cline-no">&nbsp;</span>
2347
+ <span class="cline-any cline-yes">45x</span>
2348
+ <span class="cline-any cline-yes">45x</span>
2349
+ <span class="cline-any cline-yes">45x</span>
2350
+ <span class="cline-any cline-yes">45x</span>
2351
+ <span class="cline-any cline-yes">45x</span>
2352
+ <span class="cline-any cline-yes">45x</span>
2353
+ <span class="cline-any cline-yes">45x</span>
2354
+ <span class="cline-any cline-yes">45x</span>
2355
+ <span class="cline-any cline-yes">45x</span>
2356
+ <span class="cline-any cline-yes">7x</span>
2357
+ <span class="cline-any cline-yes">7x</span>
2358
+ <span class="cline-any cline-yes">7x</span>
2359
+ <span class="cline-any cline-yes">7x</span>
2360
+ <span class="cline-any cline-yes">7x</span>
2361
+ <span class="cline-any cline-yes">7x</span>
2362
+ <span class="cline-any cline-yes">7x</span>
2363
+ <span class="cline-any cline-yes">7x</span>
2364
+ <span class="cline-any cline-yes">7x</span>
2365
+ <span class="cline-any cline-yes">7x</span>
2366
+ <span class="cline-any cline-no">&nbsp;</span>
2367
+ <span class="cline-any cline-no">&nbsp;</span>
2368
+ <span class="cline-any cline-yes">7x</span>
2369
+ <span class="cline-any cline-yes">7x</span>
2370
+ <span class="cline-any cline-yes">7x</span>
2371
+ <span class="cline-any cline-yes">7x</span>
2372
+ <span class="cline-any cline-yes">7x</span>
2373
+ <span class="cline-any cline-yes">9x</span>
2374
+ <span class="cline-any cline-yes">9x</span>
2375
+ <span class="cline-any cline-yes">9x</span>
2376
+ <span class="cline-any cline-yes">9x</span>
2377
+ <span class="cline-any cline-yes">9x</span>
2378
+ <span class="cline-any cline-yes">9x</span>
2379
+ <span class="cline-any cline-yes">3x</span>
2380
+ <span class="cline-any cline-yes">3x</span>
2381
+ <span class="cline-any cline-yes">3x</span>
2382
+ <span class="cline-any cline-yes">3x</span>
2383
+ <span class="cline-any cline-yes">3x</span>
2384
+ <span class="cline-any cline-yes">3x</span>
2385
+ <span class="cline-any cline-yes">3x</span>
2386
+ <span class="cline-any cline-yes">3x</span>
2387
+ <span class="cline-any cline-yes">3x</span>
2388
+ <span class="cline-any cline-yes">3x</span>
2389
+ <span class="cline-any cline-yes">9x</span>
2390
+ <span class="cline-any cline-yes">9x</span>
2391
+ <span class="cline-any cline-yes">1x</span>
2392
+ <span class="cline-any cline-yes">1x</span>
2393
+ <span class="cline-any cline-yes">1x</span>
2394
+ <span class="cline-any cline-yes">1x</span>
2395
+ <span class="cline-any cline-yes">1x</span>
2396
+ <span class="cline-any cline-yes">1x</span>
2397
+ <span class="cline-any cline-yes">1x</span>
2398
+ <span class="cline-any cline-yes">1x</span>
2399
+ <span class="cline-any cline-yes">1x</span>
2400
+ <span class="cline-any cline-yes">1x</span>
2401
+ <span class="cline-any cline-yes">1x</span>
2402
+ <span class="cline-any cline-yes">9x</span>
2403
+ <span class="cline-any cline-yes">9x</span>
2404
+ <span class="cline-any cline-no">&nbsp;</span>
2405
+ <span class="cline-any cline-no">&nbsp;</span>
2406
+ <span class="cline-any cline-no">&nbsp;</span>
2407
+ <span class="cline-any cline-no">&nbsp;</span>
2408
+ <span class="cline-any cline-no">&nbsp;</span>
2409
+ <span class="cline-any cline-no">&nbsp;</span>
2410
+ <span class="cline-any cline-no">&nbsp;</span>
2411
+ <span class="cline-any cline-no">&nbsp;</span>
2412
+ <span class="cline-any cline-no">&nbsp;</span>
2413
+ <span class="cline-any cline-no">&nbsp;</span>
2414
+ <span class="cline-any cline-yes">9x</span>
2415
+ <span class="cline-any cline-yes">9x</span>
2416
+ <span class="cline-any cline-yes">2x</span>
2417
+ <span class="cline-any cline-yes">2x</span>
2418
+ <span class="cline-any cline-yes">2x</span>
2419
+ <span class="cline-any cline-yes">2x</span>
2420
+ <span class="cline-any cline-yes">2x</span>
2421
+ <span class="cline-any cline-yes">2x</span>
2422
+ <span class="cline-any cline-yes">2x</span>
2423
+ <span class="cline-any cline-yes">9x</span>
2424
+ <span class="cline-any cline-yes">9x</span>
2425
+ <span class="cline-any cline-no">&nbsp;</span>
2426
+ <span class="cline-any cline-no">&nbsp;</span>
2427
+ <span class="cline-any cline-no">&nbsp;</span>
2428
+ <span class="cline-any cline-no">&nbsp;</span>
2429
+ <span class="cline-any cline-no">&nbsp;</span>
2430
+ <span class="cline-any cline-no">&nbsp;</span>
2431
+ <span class="cline-any cline-no">&nbsp;</span>
2432
+ <span class="cline-any cline-yes">9x</span>
2433
+ <span class="cline-any cline-yes">9x</span>
2434
+ <span class="cline-any cline-no">&nbsp;</span>
2435
+ <span class="cline-any cline-no">&nbsp;</span>
2436
+ <span class="cline-any cline-no">&nbsp;</span>
2437
+ <span class="cline-any cline-no">&nbsp;</span>
2438
+ <span class="cline-any cline-no">&nbsp;</span>
2439
+ <span class="cline-any cline-no">&nbsp;</span>
2440
+ <span class="cline-any cline-no">&nbsp;</span>
2441
+ <span class="cline-any cline-no">&nbsp;</span>
2442
+ <span class="cline-any cline-no">&nbsp;</span>
2443
+ <span class="cline-any cline-no">&nbsp;</span>
2444
+ <span class="cline-any cline-no">&nbsp;</span>
2445
+ <span class="cline-any cline-no">&nbsp;</span>
2446
+ <span class="cline-any cline-no">&nbsp;</span>
2447
+ <span class="cline-any cline-no">&nbsp;</span>
2448
+ <span class="cline-any cline-no">&nbsp;</span>
2449
+ <span class="cline-any cline-no">&nbsp;</span>
2450
+ <span class="cline-any cline-no">&nbsp;</span>
2451
+ <span class="cline-any cline-no">&nbsp;</span>
2452
+ <span class="cline-any cline-no">&nbsp;</span>
2453
+ <span class="cline-any cline-no">&nbsp;</span>
2454
+ <span class="cline-any cline-no">&nbsp;</span>
2455
+ <span class="cline-any cline-yes">9x</span>
2456
+ <span class="cline-any cline-yes">9x</span>
2457
+ <span class="cline-any cline-yes">2x</span>
2458
+ <span class="cline-any cline-yes">2x</span>
2459
+ <span class="cline-any cline-yes">2x</span>
2460
+ <span class="cline-any cline-yes">2x</span>
2461
+ <span class="cline-any cline-yes">2x</span>
2462
+ <span class="cline-any cline-yes">2x</span>
2463
+ <span class="cline-any cline-yes">1x</span>
2464
+ <span class="cline-any cline-yes">1x</span>
2465
+ <span class="cline-any cline-no">&nbsp;</span>
2466
+ <span class="cline-any cline-yes">1x</span>
2467
+ <span class="cline-any cline-yes">1x</span>
2468
+ <span class="cline-any cline-yes">1x</span>
2469
+ <span class="cline-any cline-yes">1x</span>
2470
+ <span class="cline-any cline-yes">1x</span>
2471
+ <span class="cline-any cline-yes">1x</span>
2472
+ <span class="cline-any cline-yes">2x</span>
2473
+ <span class="cline-any cline-yes">2x</span>
2474
+ <span class="cline-any cline-yes">1x</span>
2475
+ <span class="cline-any cline-yes">1x</span>
2476
+ <span class="cline-any cline-yes">2x</span>
2477
+ <span class="cline-any cline-yes">2x</span>
2478
+ <span class="cline-any cline-yes">9x</span>
2479
+ <span class="cline-any cline-yes">9x</span>
2480
+ <span class="cline-any cline-no">&nbsp;</span>
2481
+ <span class="cline-any cline-no">&nbsp;</span>
2482
+ <span class="cline-any cline-no">&nbsp;</span>
2483
+ <span class="cline-any cline-no">&nbsp;</span>
2484
+ <span class="cline-any cline-no">&nbsp;</span>
2485
+ <span class="cline-any cline-no">&nbsp;</span>
2486
+ <span class="cline-any cline-no">&nbsp;</span>
2487
+ <span class="cline-any cline-no">&nbsp;</span>
2488
+ <span class="cline-any cline-no">&nbsp;</span>
2489
+ <span class="cline-any cline-no">&nbsp;</span>
2490
+ <span class="cline-any cline-no">&nbsp;</span>
2491
+ <span class="cline-any cline-no">&nbsp;</span>
2492
+ <span class="cline-any cline-no">&nbsp;</span>
2493
+ <span class="cline-any cline-no">&nbsp;</span>
2494
+ <span class="cline-any cline-no">&nbsp;</span>
2495
+ <span class="cline-any cline-yes">9x</span>
2496
+ <span class="cline-any cline-yes">9x</span>
2497
+ <span class="cline-any cline-no">&nbsp;</span>
2498
+ <span class="cline-any cline-no">&nbsp;</span>
2499
+ <span class="cline-any cline-no">&nbsp;</span>
2500
+ <span class="cline-any cline-no">&nbsp;</span>
2501
+ <span class="cline-any cline-no">&nbsp;</span>
2502
+ <span class="cline-any cline-no">&nbsp;</span>
2503
+ <span class="cline-any cline-no">&nbsp;</span>
2504
+ <span class="cline-any cline-no">&nbsp;</span>
2505
+ <span class="cline-any cline-no">&nbsp;</span>
2506
+ <span class="cline-any cline-no">&nbsp;</span>
2507
+ <span class="cline-any cline-yes">9x</span>
2508
+ <span class="cline-any cline-yes">9x</span>
2509
+ <span class="cline-any cline-no">&nbsp;</span>
2510
+ <span class="cline-any cline-no">&nbsp;</span>
2511
+ <span class="cline-any cline-no">&nbsp;</span>
2512
+ <span class="cline-any cline-no">&nbsp;</span>
2513
+ <span class="cline-any cline-no">&nbsp;</span>
2514
+ <span class="cline-any cline-no">&nbsp;</span>
2515
+ <span class="cline-any cline-no">&nbsp;</span>
2516
+ <span class="cline-any cline-yes">9x</span>
2517
+ <span class="cline-any cline-yes">9x</span>
2518
+ <span class="cline-any cline-no">&nbsp;</span>
2519
+ <span class="cline-any cline-no">&nbsp;</span>
2520
+ <span class="cline-any cline-no">&nbsp;</span>
2521
+ <span class="cline-any cline-no">&nbsp;</span>
2522
+ <span class="cline-any cline-no">&nbsp;</span>
2523
+ <span class="cline-any cline-no">&nbsp;</span>
2524
+ <span class="cline-any cline-no">&nbsp;</span>
2525
+ <span class="cline-any cline-no">&nbsp;</span>
2526
+ <span class="cline-any cline-no">&nbsp;</span>
2527
+ <span class="cline-any cline-no">&nbsp;</span>
2528
+ <span class="cline-any cline-no">&nbsp;</span>
2529
+ <span class="cline-any cline-yes">9x</span>
2530
+ <span class="cline-any cline-yes">9x</span>
2531
+ <span class="cline-any cline-no">&nbsp;</span>
2532
+ <span class="cline-any cline-no">&nbsp;</span>
2533
+ <span class="cline-any cline-no">&nbsp;</span>
2534
+ <span class="cline-any cline-no">&nbsp;</span>
2535
+ <span class="cline-any cline-no">&nbsp;</span>
2536
+ <span class="cline-any cline-no">&nbsp;</span>
2537
+ <span class="cline-any cline-no">&nbsp;</span>
2538
+ <span class="cline-any cline-no">&nbsp;</span>
2539
+ <span class="cline-any cline-no">&nbsp;</span>
2540
+ <span class="cline-any cline-no">&nbsp;</span>
2541
+ <span class="cline-any cline-no">&nbsp;</span>
2542
+ <span class="cline-any cline-no">&nbsp;</span>
2543
+ <span class="cline-any cline-no">&nbsp;</span>
2544
+ <span class="cline-any cline-no">&nbsp;</span>
2545
+ <span class="cline-any cline-yes">9x</span>
2546
+ <span class="cline-any cline-yes">9x</span>
2547
+ <span class="cline-any cline-yes">1x</span>
2548
+ <span class="cline-any cline-yes">9x</span>
2549
+ <span class="cline-any cline-yes">8x</span>
2550
+ <span class="cline-any cline-yes">8x</span>
2551
+ <span class="cline-any cline-yes">8x</span>
2552
+ <span class="cline-any cline-yes">8x</span>
2553
+ <span class="cline-any cline-yes">8x</span>
2554
+ <span class="cline-any cline-yes">8x</span>
2555
+ <span class="cline-any cline-yes">8x</span>
2556
+ <span class="cline-any cline-yes">8x</span>
2557
+ <span class="cline-any cline-yes">8x</span>
2558
+ <span class="cline-any cline-yes">8x</span>
2559
+ <span class="cline-any cline-yes">8x</span>
2560
+ <span class="cline-any cline-yes">8x</span>
2561
+ <span class="cline-any cline-yes">8x</span>
2562
+ <span class="cline-any cline-yes">8x</span>
2563
+ <span class="cline-any cline-yes">8x</span>
2564
+ <span class="cline-any cline-yes">9x</span>
2565
+ <span class="cline-any cline-yes">1x</span>
2566
+ <span class="cline-any cline-yes">1x</span>
2567
+ <span class="cline-any cline-yes">1x</span>
2568
+ <span class="cline-any cline-yes">9x</span>
2569
+ <span class="cline-any cline-yes">6x</span>
2570
+ <span class="cline-any cline-yes">6x</span>
2571
+ <span class="cline-any cline-yes">7x</span>
2572
+ <span class="cline-any cline-yes">45x</span>
2573
+ <span class="cline-any cline-yes">45x</span>
2574
+ <span class="cline-any cline-yes">45x</span>
2575
+ <span class="cline-any cline-yes">45x</span>
2576
+ <span class="cline-any cline-yes">45x</span>
2577
+ <span class="cline-any cline-yes">45x</span>
2578
+ <span class="cline-any cline-yes">45x</span>
2579
+ <span class="cline-any cline-yes">35x</span>
2580
+ <span class="cline-any cline-yes">35x</span>
2581
+ <span class="cline-any cline-yes">35x</span>
2582
+ <span class="cline-any cline-yes">1x</span>
2583
+ <span class="cline-any cline-yes">1x</span>
2584
+ <span class="cline-any cline-yes">34x</span>
2585
+ <span class="cline-any cline-yes">34x</span>
2586
+ <span class="cline-any cline-yes">34x</span>
2587
+ <span class="cline-any cline-yes">34x</span>
2588
+ <span class="cline-any cline-yes">34x</span>
2589
+ <span class="cline-any cline-yes">34x</span>
2590
+ <span class="cline-any cline-yes">34x</span>
2591
+ <span class="cline-any cline-yes">35x</span>
2592
+ <span class="cline-any cline-yes">45x</span>
2593
+ <span class="cline-any cline-yes">45x</span>
2594
+ <span class="cline-any cline-yes">45x</span>
2595
+ <span class="cline-any cline-yes">45x</span>
2596
+ <span class="cline-any cline-yes">45x</span>
2597
+ <span class="cline-any cline-yes">45x</span>
2598
+ <span class="cline-any cline-yes">41x</span>
2599
+ <span class="cline-any cline-yes">41x</span>
2600
+ <span class="cline-any cline-yes">41x</span>
2601
+ <span class="cline-any cline-yes">41x</span>
2602
+ <span class="cline-any cline-yes">1x</span>
2603
+ <span class="cline-any cline-yes">41x</span>
2604
+ <span class="cline-any cline-yes">39x</span>
2605
+ <span class="cline-any cline-yes">41x</span>
2606
+ <span class="cline-any cline-yes">1x</span>
2607
+ <span class="cline-any cline-yes">1x</span>
2608
+ <span class="cline-any cline-yes">41x</span>
2609
+ <span class="cline-any cline-yes">41x</span>
2610
+ <span class="cline-any cline-yes">45x</span>
2611
+ <span class="cline-any cline-yes">45x</span>
2612
+ <span class="cline-any cline-yes">45x</span>
2613
+ <span class="cline-any cline-yes">45x</span>
2614
+ <span class="cline-any cline-yes">45x</span>
2615
+ <span class="cline-any cline-yes">45x</span>
2616
+ <span class="cline-any cline-yes">42x</span>
2617
+ <span class="cline-any cline-yes">42x</span>
2618
+ <span class="cline-any cline-yes">168x</span>
2619
+ <span class="cline-any cline-yes">168x</span>
2620
+ <span class="cline-any cline-yes">42x</span>
2621
+ <span class="cline-any cline-yes">42x</span>
2622
+ <span class="cline-any cline-yes">45x</span>
2623
+ <span class="cline-any cline-yes">45x</span>
2624
+ <span class="cline-any cline-yes">45x</span>
2625
+ <span class="cline-any cline-yes">45x</span>
2626
+ <span class="cline-any cline-yes">45x</span>
2627
+ <span class="cline-any cline-yes">45x</span>
2628
+ <span class="cline-any cline-no">&nbsp;</span>
2629
+ <span class="cline-any cline-no">&nbsp;</span>
2630
+ <span class="cline-any cline-no">&nbsp;</span>
2631
+ <span class="cline-any cline-no">&nbsp;</span>
2632
+ <span class="cline-any cline-no">&nbsp;</span>
2633
+ <span class="cline-any cline-no">&nbsp;</span>
2634
+ <span class="cline-any cline-no">&nbsp;</span>
2635
+ <span class="cline-any cline-yes">45x</span>
2636
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/**
2637
+ * HSuite Native Connect
2638
+ * Copyright 2024-2025 HSuite (https://hsuite.finance)
2639
+ *
2640
+ * SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
2641
+ *
2642
+ * This file is part of HSuite Native Connect. For commercial licensing,
2643
+ * visit https://hsuite.finance/licensing
2644
+ */
2645
+ &nbsp;
2646
+ /**
2647
+ * @file Service for building Hedera transactions using the Hashgraph SDK.
2648
+ *
2649
+ * @module services/transaction-builders/hedera
2650
+ *
2651
+ * @description
2652
+ * HederaTransactionBuilderService provides methods to construct various Hedera transaction
2653
+ * types and serialize them to base64 payloads ready for signing. It uses the @hashgraph/sdk
2654
+ * library for proper transaction construction and automatically freezes transactions with
2655
+ * the correct network client.
2656
+ *
2657
+ * **Supported Transaction Types:**
2658
+ * - HBAR transfers (single and atomic multi-transfer)
2659
+ * - Fungible token transfers
2660
+ * - NFT transfers
2661
+ * - Token association/dissociation
2662
+ * - Token creation (with auto key configuration)
2663
+ * - Token minting/burning
2664
+ * - Topic creation (with auto key configuration)
2665
+ * - Topic message submission
2666
+ * - Account creation (with multisig support)
2667
+ * - Account updates
2668
+ * - Batch transactions
2669
+ *
2670
+ * **Auto-Key Configuration:**
2671
+ * When creating entities (topics, tokens, accounts), the builder automatically
2672
+ * inherits the key structure from the active account:
2673
+ * - Single-sig accounts -&gt; entity uses account's public key
2674
+ * - Multisig accounts -&gt; entity uses threshold key with all signers
2675
+ */
2676
+ &nbsp;
2677
+ import { Injectable, inject } from '@angular/core';
2678
+ import {
2679
+ TransferTransaction,
2680
+ TokenAssociateTransaction,
2681
+ TokenDissociateTransaction,
2682
+ TokenCreateTransaction,
2683
+ TokenMintTransaction,
2684
+ TokenBurnTransaction,
2685
+ TopicCreateTransaction,
2686
+ TopicMessageSubmitTransaction,
2687
+ AccountCreateTransaction,
2688
+ AccountUpdateTransaction,
2689
+ ScheduleCreateTransaction,
2690
+ BatchTransaction,
2691
+ Transaction,
2692
+ Hbar,
2693
+ AccountId,
2694
+ TokenId,
2695
+ NftId,
2696
+ TransactionId,
2697
+ Client,
2698
+ PrivateKey,
2699
+ PublicKey,
2700
+ TokenType,
2701
+ TokenSupplyType,
2702
+ KeyList,
2703
+ Key,
2704
+ } from '@hashgraph/sdk';
2705
+ &nbsp;
2706
+ import { LoggerService } from '../logger.service';
2707
+ import { UnifiedWalletService } from '../unified-wallet.service';
2708
+ &nbsp;
2709
+ import { scaleHederaAmountToBaseUnits, assertSafeInteger } from './hedera-amount-utils';
2710
+ &nbsp;
2711
+ /**
2712
+ * Supported inner transaction types for batch transactions.
2713
+ * Excludes 'batch-transaction' since batches cannot be nested.
2714
+ */
2715
+ export type BatchInnerTransactionType =
2716
+ | 'send-hbar'
2717
+ | 'send-token'
2718
+ | 'send-nft'
2719
+ | 'token-associate'
2720
+ | 'token-dissociate'
2721
+ | 'token-create'
2722
+ | 'token-mint'
2723
+ | 'token-burn'
2724
+ | 'topic-create'
2725
+ | 'topic-message'
2726
+ | 'account-create'
2727
+ | 'account-update';
2728
+ &nbsp;
2729
+ /**
2730
+ * Inner transaction descriptor for batch transactions.
2731
+ * Contains all possible fields for different transaction types.
2732
+ */
2733
+ export interface BatchInnerTransaction {
2734
+ /** Type of transaction */
2735
+ type: BatchInnerTransactionType;
2736
+ &nbsp;
2737
+ // Transfer fields (send-hbar, send-token, send-nft)
2738
+ /** Recipient account */
2739
+ toAccount?: string;
2740
+ /** Amount for HBAR (tinybars) or token transfers */
2741
+ amount?: number;
2742
+ /** Token ID for token operations */
2743
+ tokenId?: string;
2744
+ /** Serial number for NFT transfers */
2745
+ serialNumber?: number;
2746
+ &nbsp;
2747
+ // Token create fields
2748
+ /** Token name for creation */
2749
+ tokenName?: string;
2750
+ /** Token symbol for creation */
2751
+ tokenSymbol?: string;
2752
+ /** Token decimals for creation */
2753
+ decimals?: number;
2754
+ /** Initial supply for fungible tokens */
2755
+ initialSupply?: number;
2756
+ /** Max supply (0 = infinite) */
2757
+ maxSupply?: number;
2758
+ /** Whether supply is finite or infinite */
2759
+ supplyType?: 'finite' | 'infinite';
2760
+ &nbsp;
2761
+ // Token mint/burn fields
2762
+ /** Metadata for NFT minting (array for multiple NFTs) */
2763
+ metadata?: string | string[];
2764
+ &nbsp;
2765
+ // Topic fields
2766
+ /** Topic ID for message submission */
2767
+ topicId?: string;
2768
+ /** Message content for topic submission */
2769
+ message?: string;
2770
+ /** Topic memo for creation */
2771
+ topicMemo?: string;
2772
+ &nbsp;
2773
+ // Account fields
2774
+ /** Initial balance for account creation (tinybars) */
2775
+ initialBalance?: number;
2776
+ /** Memo for account update */
2777
+ memo?: string;
2778
+ /** Max auto associations for account */
2779
+ maxAutoAssociations?: number;
2780
+ }
2781
+ &nbsp;
2782
+ /**
2783
+ * Key configuration for entity creation transactions.
2784
+ *
2785
+ * For single-sig accounts: provide a single publicKey string
2786
+ * For multisig accounts: provide signerPublicKeys array + threshold
2787
+ */
2788
+ export interface HederaKeyConfig {
2789
+ /**
2790
+ * Single public key (hex/DER encoded) for single-sig accounts.
2791
+ * If provided alone, this key is used directly.
2792
+ */
2793
+ publicKey?: string;
2794
+ &nbsp;
2795
+ /**
2796
+ * Array of public keys for multisig (threshold key) configuration.
2797
+ * Requires threshold to be set.
2798
+ */
2799
+ signerPublicKeys?: string[];
2800
+ &nbsp;
2801
+ /**
2802
+ * Threshold for multisig - number of signatures required.
2803
+ * Only used when signerPublicKeys is provided.
2804
+ */
2805
+ threshold?: number;
2806
+ }
2807
+ &nbsp;
2808
+ /**
2809
+ * Extended options for topic creation with key configuration.
2810
+ */
2811
+ export interface TopicCreateOptions {
2812
+ /** Topic memo/description */
2813
+ memo?: string;
2814
+ /** Admin key - can update/delete the topic. Uses creator's key if not specified. */
2815
+ adminKey?: HederaKeyConfig;
2816
+ /** Submit key - required to submit messages. If not set, anyone can submit. */
2817
+ submitKey?: HederaKeyConfig;
2818
+ /** Auto-renew account for fees */
2819
+ autoRenewAccountId?: string;
2820
+ }
2821
+ &nbsp;
2822
+ /**
2823
+ * Extended options for token creation with key configuration.
2824
+ */
2825
+ export interface TokenCreateOptions {
2826
+ /** Token name */
2827
+ name: string;
2828
+ /** Token symbol */
2829
+ symbol: string;
2830
+ /** Decimal places (0 for NFTs) */
2831
+ decimals: number;
2832
+ /** Initial supply (0 for NFTs) */
2833
+ initialSupply: number;
2834
+ /** Token type: FUNGIBLE or NFT */
2835
+ tokenType?: 'FUNGIBLE' | 'NFT';
2836
+ /** Admin key - can update/delete token */
2837
+ adminKey?: HederaKeyConfig;
2838
+ /** Supply key - can mint/burn tokens */
2839
+ supplyKey?: HederaKeyConfig;
2840
+ /** Freeze key - can freeze/unfreeze accounts */
2841
+ freezeKey?: HederaKeyConfig;
2842
+ /** Wipe key - can wipe token balance from accounts */
2843
+ wipeKey?: HederaKeyConfig;
2844
+ /** Pause key - can pause/unpause token operations */
2845
+ pauseKey?: HederaKeyConfig;
2846
+ /** KYC key - can grant/revoke KYC */
2847
+ kycKey?: HederaKeyConfig;
2848
+ /** Fee schedule key - can update custom fees */
2849
+ feeScheduleKey?: HederaKeyConfig;
2850
+ /** Token memo */
2851
+ memo?: string;
2852
+ /** Max supply (for finite tokens) */
2853
+ maxSupply?: number;
2854
+ }
2855
+ &nbsp;
2856
+ /**
2857
+ * Extended options for account creation with key configuration.
2858
+ */
2859
+ export interface AccountCreateOptions {
2860
+ /** Initial HBAR balance */
2861
+ initialBalance: number;
2862
+ /**
2863
+ * Key configuration for the new account.
2864
+ * For single-sig: provide publicKey
2865
+ * For multisig: provide signerPublicKeys + threshold
2866
+ */
2867
+ key?: HederaKeyConfig;
2868
+ /** Account memo */
2869
+ memo?: string;
2870
+ /** Max automatic token associations */
2871
+ maxAutomaticTokenAssociations?: number;
2872
+ /** Receiver signature required */
2873
+ receiverSignatureRequired?: boolean;
2874
+ }
2875
+ &nbsp;
2876
+ /**
2877
+ * Service for building Hedera transactions using the Hashgraph SDK.
2878
+ *
2879
+ * @service HederaTransactionBuilderService
2880
+ *
2881
+ * @description
2882
+ * Provides methods to construct various Hedera transaction types and serialize them
2883
+ * to base64 payloads ready for signing. Transactions are automatically frozen with
2884
+ * the correct network client (mainnet/testnet) based on the active wallet session.
2885
+ *
2886
+ * All build methods return a base64-encoded string that can be passed to
2887
+ * UnifiedWalletService.signTransaction() or submitTransaction().
2888
+ *
2889
+ * @providedIn root
2890
+ *
2891
+ * @Component({ ... })
2892
+ * export class SendPage {
2893
+ * private builder = inject(HederaTransactionBuilderService);
2894
+ * private wallet = inject(UnifiedWalletService);
2895
+ *
2896
+ * async sendHbar(to: string, amount: number) {
2897
+ * const from = this.wallet.activeAccount()?.address;
2898
+ * const payload = await this.builder.buildSendHbar(from!, to, amount);
2899
+ * return this.wallet.submitTransaction({ payload });
2900
+ * }
2901
+ * }
2902
+ * ```
2903
+ */
2904
+ @Injectable({
2905
+ providedIn: 'root',
2906
+ })
2907
+ export class HederaTransactionBuilderService {
2908
+ private readonly wallet = inject(UnifiedWalletService);
2909
+ private readonly logger = inject(LoggerService).scoped('HederaTransactionBuilder');
2910
+ &nbsp;
2911
+ /**
2912
+ * Gets the network ID from the active wallet account.
2913
+ *
2914
+ * @description
2915
+ * Extracts the network identifier (e.g., 'hedera:mainnet', 'hedera:testnet')
2916
+ * from the currently active account. Used to create the appropriate Hedera
2917
+ * client for transaction freezing.
2918
+ *
2919
+ * @returns Network ID string, or undefined if no active account
2920
+ *
2921
+ * @throws {Error} When used in methods that require a network, if no account is active
2922
+ */
2923
+ private getNetworkId(): string | undefined {
2924
+ const activeAccount = this.wallet.activeAccount();
2925
+ return activeAccount?.networkId;
2926
+ }
2927
+ &nbsp;
2928
+ /**
2929
+ * Build a Hedera Key from configuration.
2930
+ *
2931
+ * For single-sig: returns PublicKey directly
2932
+ * For multisig: returns KeyList (threshold key) with all signer public keys
2933
+ *
2934
+ * @param config - Key configuration (single key or threshold key)
2935
+ * @returns Hedera Key object or undefined if config is empty
2936
+ */
2937
+ private buildKeyFromConfig(config?: HederaKeyConfig): Key | undefined {
2938
+ if (!config) {
2939
+ return undefined;
2940
+ }
2941
+ &nbsp;
2942
+ // Multisig: threshold key with multiple signers
2943
+ if (config.signerPublicKeys &amp;&amp; config.signerPublicKeys.length &gt; 0 &amp;&amp; config.threshold) {
2944
+ const publicKeys = config.signerPublicKeys.map((pk) =&gt; PublicKey.fromString(pk));
2945
+ const keyList = new KeyList(publicKeys, config.threshold);
2946
+ this.logger.debug('Built threshold key', {
2947
+ signerCount: publicKeys.length,
2948
+ threshold: config.threshold,
2949
+ });
2950
+ return keyList;
2951
+ }
2952
+ &nbsp;
2953
+ // Single-sig: direct public key
2954
+ if (config.publicKey) {
2955
+ const key = PublicKey.fromString(config.publicKey);
2956
+ this.logger.debug('Built single public key');
2957
+ return key;
2958
+ <span class="branch-0 cbranch-no" title="branch not covered" > }</span>
2959
+ <span class="cstat-no" title="statement not covered" ></span>
2960
+ <span class="cstat-no" title="statement not covered" > return undefined;</span>
2961
+ }
2962
+ &nbsp;
2963
+ /**
2964
+ * Get the key configuration for the active account.
2965
+ *
2966
+ * For single-sig: returns { publicKey: '...' }
2967
+ * For multisig: returns { signerPublicKeys: [...], threshold: N }
2968
+ *
2969
+ * This allows automatic key configuration for entity creation (topics, tokens, etc.)
2970
+ * so that entities inherit the same key structure as the creating account.
2971
+ *
2972
+ * @returns Key configuration or undefined if no active account
2973
+ */
2974
+ private getActiveAccountKeyConfig(): HederaKeyConfig | undefined {
2975
+ const activeAccount = this.wallet.activeAccount();
2976
+ if (!activeAccount) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
2977
+ <span class="cstat-no" title="statement not covered" > this.logger.debug('No active account for key config');</span>
2978
+ <span class="cstat-no" title="statement not covered" > return undefined;</span>
2979
+ <span class="cstat-no" title="statement not covered" > }</span>
2980
+ &nbsp;
2981
+ const metadata = activeAccount.metadata;
2982
+ &nbsp;
2983
+ // Check if this is a multisig account
2984
+ if (metadata?.['isMultisig'] === true) {
2985
+ const signerPublicKeys = metadata['signerPublicKeys'] as string[] | undefined;
2986
+ const threshold = metadata['threshold'] as number | undefined;
2987
+ &nbsp;
2988
+ if (signerPublicKeys &amp;&amp; signerPublicKeys.length &gt; 0 &amp;&amp; threshold) {
2989
+ this.logger.debug('Active account is multisig', {
2990
+ threshold,
2991
+ signerCount: signerPublicKeys.length,
2992
+ });
2993
+ return { signerPublicKeys, threshold };
2994
+ <span class="branch-0 cbranch-no" title="branch not covered" > }</span>
2995
+ <span class="cstat-no" title="statement not covered" ></span>
2996
+ <span class="cstat-no" title="statement not covered" > this.logger.warn('Multisig account missing signer keys or threshold in metadata');</span>
2997
+ <span class="cstat-no" title="statement not covered" > return undefined;</span>
2998
+ <span class="cstat-no" title="statement not covered" > }</span>
2999
+ &nbsp;
3000
+ // Single-sig account - get public key from metadata
3001
+ const publicKey = metadata?.['publicKey'] as string | undefined;
3002
+ if (publicKey) {
3003
+ this.logger.debug('Active account is single-sig');
3004
+ return { publicKey };
3005
+ <span class="branch-0 cbranch-no" title="branch not covered" > }</span>
3006
+ <span class="cstat-no" title="statement not covered" ></span>
3007
+ <span class="cstat-no" title="statement not covered" > this.logger.debug('No public key in active account metadata');</span>
3008
+ <span class="cstat-no" title="statement not covered" > return undefined;</span>
3009
+ }
3010
+ &nbsp;
3011
+ /**
3012
+ * Builds a simple HBAR transfer transaction.
3013
+ *
3014
+ * @description
3015
+ * Creates a TransferTransaction that moves HBAR from one account to another.
3016
+ * The transaction is automatically frozen with the appropriate network client.
3017
+ *
3018
+ * @param fromAccount - Sender account ID (e.g., "0.0.12345")
3019
+ * @param toAccount - Recipient account ID
3020
+ * @param amount - Amount in HBAR (e.g., 1.5 for 1.5 HBAR)
3021
+ *
3022
+ * @returns Base64 encoded transaction bytes
3023
+ *
3024
+ * @throws {Error} If no active wallet session
3025
+ */
3026
+ async buildSendHbar(fromAccount: string, toAccount: string, amount: number): Promise&lt;string&gt; {
3027
+ const transaction = new TransferTransaction()
3028
+ .addHbarTransfer(AccountId.fromString(fromAccount), new Hbar(-amount))
3029
+ .addHbarTransfer(AccountId.fromString(toAccount), new Hbar(amount));
3030
+ &nbsp;
3031
+ return this.serializeTransaction(transaction, fromAccount);
3032
+ }
3033
+ &nbsp;
3034
+ /**
3035
+ * Builds a fungible token transfer transaction.
3036
+ *
3037
+ * @description
3038
+ * Creates a TransferTransaction that moves fungible tokens between accounts.
3039
+ * The amount is automatically converted to the smallest unit based on decimals.
3040
+ *
3041
+ * @param fromAccount - Sender account ID
3042
+ * @param toAccount - Recipient account ID
3043
+ * @param tokenId - Token ID (e.g., "0.0.98765")
3044
+ * @param amount - Token amount in display units (e.g., 100 tokens)
3045
+ * @param decimals - Token decimals for conversion (default 0)
3046
+ *
3047
+ * @returns Base64 encoded transaction bytes
3048
+ *
3049
+ * @throws {Error} If no active wallet session
3050
+ */
3051
+ async buildSendToken(
3052
+ fromAccount: string,
3053
+ toAccount: string,
3054
+ tokenId: string,
3055
+ amount: number,
3056
+ decimals = 0,
3057
+ ): Promise&lt;string&gt; {
3058
+ const token = TokenId.fromString(tokenId);
3059
+ // bigint scaling avoids the silent precision loss that
3060
+ // `amount * Math.pow(10, decimals)` exhibits past Number.MAX_SAFE_INTEGER
3061
+ // (Hedera supports up to 18 decimals). Narrow once at the SDK boundary
3062
+ // with an explicit overflow assertion.
3063
+ const scaled = scaleHederaAmountToBaseUnits(amount, decimals);
3064
+ const actualAmount = assertSafeInteger(scaled, `buildSendToken tokenId=${tokenId}`);
3065
+ &nbsp;
3066
+ const transaction = new TransferTransaction()
3067
+ .addTokenTransfer(token, AccountId.fromString(fromAccount), -actualAmount)
3068
+ .addTokenTransfer(token, AccountId.fromString(toAccount), actualAmount);
3069
+ &nbsp;
3070
+ return this.serializeTransaction(transaction, fromAccount);
3071
+ }
3072
+ &nbsp;
3073
+ /**
3074
+ * Builds an NFT transfer transaction.
3075
+ *
3076
+ * @description
3077
+ * Creates a TransferTransaction that moves an NFT (identified by token ID
3078
+ * and serial number) from one account to another.
3079
+ *
3080
+ * @param fromAccount - Sender account ID
3081
+ * @param toAccount - Recipient account ID
3082
+ * @param tokenId - NFT token ID (e.g., "0.0.98765")
3083
+ * @param serialNumber - NFT serial number (e.g., 1, 2, 3)
3084
+ *
3085
+ * @returns Base64 encoded transaction bytes
3086
+ *
3087
+ * @throws {Error} If no active wallet session
3088
+ */
3089
+ async buildSendNft(
3090
+ fromAccount: string,
3091
+ toAccount: string,
3092
+ tokenId: string,
3093
+ serialNumber: number,
3094
+ ): Promise&lt;string&gt; {
3095
+ const nftId = new NftId(TokenId.fromString(tokenId), serialNumber);
3096
+ &nbsp;
3097
+ const transaction = new TransferTransaction().addNftTransfer(
3098
+ nftId,
3099
+ AccountId.fromString(fromAccount),
3100
+ AccountId.fromString(toAccount),
3101
+ );
3102
+ &nbsp;
3103
+ return this.serializeTransaction(transaction, fromAccount);
3104
+ }
3105
+ &nbsp;
3106
+ /**
3107
+ * Builds a token association transaction.
3108
+ *
3109
+ * @description
3110
+ * Creates a TokenAssociateTransaction that associates one or more tokens
3111
+ * with an account. This is required before an account can receive tokens
3112
+ * on Hedera.
3113
+ *
3114
+ * @param account - Account to associate tokens with
3115
+ * @param tokenIds - Array of token IDs to associate
3116
+ *
3117
+ * @returns Base64 encoded transaction bytes
3118
+ *
3119
+ * @throws {Error} If no active wallet session
3120
+ */
3121
+ async buildAssociateToken(account: string, tokenIds: string[]): Promise&lt;string&gt; {
3122
+ const tokens = tokenIds.map((id) =&gt; TokenId.fromString(id));
3123
+ &nbsp;
3124
+ const transaction = new TokenAssociateTransaction()
3125
+ .setAccountId(AccountId.fromString(account))
3126
+ .setTokenIds(tokens);
3127
+ &nbsp;
3128
+ return this.serializeTransaction(transaction, account);
3129
+ }
3130
+ &nbsp;
3131
+ /**
3132
+ * Builds a token dissociation transaction.
3133
+ *
3134
+ * @description
3135
+ * Creates a TokenDissociateTransaction that removes the association between
3136
+ * an account and one or more tokens. The account must have zero balance of
3137
+ * each token before dissociating.
3138
+ *
3139
+ * @param account - Account to dissociate tokens from
3140
+ * @param tokenIds - Array of token IDs to dissociate
3141
+ *
3142
+ * @returns Base64 encoded transaction bytes
3143
+ *
3144
+ * @throws {Error} If no active wallet session
3145
+ */
3146
+ async buildDissociateToken(account: string, tokenIds: string[]): Promise&lt;string&gt; {
3147
+ const tokens = tokenIds.map((id) =&gt; TokenId.fromString(id));
3148
+ &nbsp;
3149
+ const transaction = new TokenDissociateTransaction()
3150
+ .setAccountId(AccountId.fromString(account))
3151
+ .setTokenIds(tokens);
3152
+ &nbsp;
3153
+ return this.serializeTransaction(transaction, account);
3154
+ }
3155
+ &nbsp;
3156
+ /**
3157
+ * Build a scheduled transaction
3158
+ * @param innerTransactionBytes - Base64 encoded inner transaction
3159
+ * @param payerAccount - Payer account for the scheduled transaction (required)
3160
+ * @param memo - Optional memo
3161
+ * @returns Base64 encoded scheduled transaction bytes
3162
+ */
3163
+ async buildScheduledTransaction(
3164
+ innerTransactionBytes: string,
3165
+ payerAccount: string,
3166
+ memo?: string,
3167
+ ): Promise&lt;string&gt; {
3168
+ const exampleInnerTx = new TransferTransaction()
3169
+ .addHbarTransfer(AccountId.fromString(payerAccount), new Hbar(-1))
3170
+ .addHbarTransfer(AccountId.fromString('0.0.3'), new Hbar(1));
3171
+ &nbsp;
3172
+ const transaction = new ScheduleCreateTransaction()
3173
+ .setScheduledTransaction(exampleInnerTx)
3174
+ .setPayerAccountId(AccountId.fromString(payerAccount));
3175
+ &nbsp;
3176
+ if (memo) {
3177
+ transaction.setScheduleMemo(memo);
3178
+ }
3179
+ &nbsp;
3180
+ return this.serializeTransaction(transaction, payerAccount);
3181
+ }
3182
+ &nbsp;
3183
+ /**
3184
+ * Build a batch of transactions with the same payer
3185
+ * @param transactions - Array of base64 encoded transactions
3186
+ * @returns Array of base64 encoded transactions (ready for batch submission)
3187
+ */
3188
+ async buildBatchTransactions(transactions: string[]): Promise&lt;string[]&gt; {
3189
+ return transactions;
3190
+ }
3191
+ &nbsp;
3192
+ /**
3193
+ * Build a complex atomic transaction (multiple transfers in one transaction)
3194
+ * @param transfers - Array of transfer operations
3195
+ * @returns Base64 encoded transaction bytes
3196
+ */
3197
+ async buildAtomicTransaction(
3198
+ transfers: Array&lt;{
3199
+ type: 'hbar' | 'token';
3200
+ fromAccount: string;
3201
+ toAccount: string;
3202
+ amount: number;
3203
+ tokenId?: string;
3204
+ decimals?: number;
3205
+ }&gt;,
3206
+ ): Promise&lt;string&gt; {
3207
+ if (transfers.length === 0) {
3208
+ throw new Error('At least one transfer is required for an atomic transaction');
3209
+ }
3210
+ &nbsp;
3211
+ const transaction = new TransferTransaction();
3212
+ const payerAccount = transfers[0].fromAccount;
3213
+ &nbsp;
3214
+ for (const transfer of transfers) {
3215
+ if (transfer.type === 'hbar') {
3216
+ transaction
3217
+ .addHbarTransfer(AccountId.fromString(transfer.fromAccount), new Hbar(-transfer.amount))
3218
+ .addHbarTransfer(AccountId.fromString(transfer.toAccount), new Hbar(transfer.amount));
3219
+ } else if (transfer.type === 'token' &amp;&amp; transfer.tokenId) {
3220
+ const token = TokenId.fromString(transfer.tokenId);
3221
+ const decimals = transfer.decimals || 0;
3222
+ const scaled = scaleHederaAmountToBaseUnits(transfer.amount, decimals);
3223
+ const actualAmount = assertSafeInteger(
3224
+ scaled,
3225
+ `atomicTransaction token=${transfer.tokenId}`,
3226
+ );
3227
+ &nbsp;
3228
+ transaction
3229
+ .addTokenTransfer(token, AccountId.fromString(transfer.fromAccount), -actualAmount)
3230
+ .addTokenTransfer(token, AccountId.fromString(transfer.toAccount), actualAmount);
3231
+ }
3232
+ }
3233
+ &nbsp;
3234
+ return this.serializeTransaction(transaction, payerAccount);
3235
+ }
3236
+ &nbsp;
3237
+ /**
3238
+ * Build a token creation transaction with automatic key configuration.
3239
+ *
3240
+ * **Auto-key behavior**: If no adminKey/supplyKey is provided, the token will automatically
3241
+ * inherit the creating account's key structure:
3242
+ * - Single-sig account → token keys = account's public key
3243
+ * - Multisig account → token keys = threshold key with all signers
3244
+ *
3245
+ * This ensures tokens created from multisig accounts are also controlled by the multisig.
3246
+ *
3247
+ * @param treasuryAccount - Account that will hold the tokens
3248
+ * @param options - Token creation options (keys auto-detected if not provided)
3249
+ * @param optionsOrName
3250
+ * @param symbol
3251
+ * @param decimals
3252
+ * @param initialSupply
3253
+ * @param tokenType
3254
+ * @returns Base64 encoded transaction bytes
3255
+ */
3256
+ async buildTokenCreate(
3257
+ treasuryAccount: string,
3258
+ optionsOrName: TokenCreateOptions | string,
3259
+ symbol?: string,
3260
+ decimals?: number,
3261
+ initialSupply?: number,
3262
+ tokenType: 'FUNGIBLE' | 'NFT' = 'FUNGIBLE',
3263
+ ): Promise&lt;string&gt; {
3264
+ // Support both object and positional arguments
3265
+ const opts: TokenCreateOptions =
3266
+ typeof optionsOrName === 'string'
3267
+ ? {
3268
+ name: optionsOrName,
3269
+ symbol: symbol!,
3270
+ decimals: decimals!,
3271
+ initialSupply: initialSupply!,
3272
+ tokenType,
3273
+ }
3274
+ : optionsOrName;
3275
+ &nbsp;
3276
+ const transaction = new TokenCreateTransaction()
3277
+ .setTokenName(opts.name)
3278
+ .setTokenSymbol(opts.symbol)
3279
+ .setDecimals(opts.decimals)
3280
+ .setInitialSupply(opts.initialSupply)
3281
+ .setTreasuryAccountId(AccountId.fromString(treasuryAccount))
3282
+ .setTokenType(
3283
+ opts.tokenType === 'NFT' ? TokenType.NonFungibleUnique : TokenType.FungibleCommon,
3284
+ )
3285
+ .setSupplyType(opts.maxSupply ? TokenSupplyType.Finite : TokenSupplyType.Infinite);
3286
+ &nbsp;
3287
+ // Set max supply if finite
3288
+ if (opts.maxSupply) {
3289
+ transaction.setMaxSupply(opts.maxSupply);
3290
+ }
3291
+ &nbsp;
3292
+ // Set memo if provided
3293
+ if (opts.memo) {
3294
+ transaction.setTokenMemo(opts.memo);
3295
+ }
3296
+ &nbsp;
3297
+ // Auto-detect key config from active account if not explicitly provided
3298
+ const autoKeyConfig = this.getActiveAccountKeyConfig();
3299
+ const isAutoDetected = !!autoKeyConfig;
3300
+ &nbsp;
3301
+ // Set admin key - use provided or auto-detected
3302
+ const adminKeyConfig = opts.adminKey ?? autoKeyConfig;
3303
+ const adminKey = this.buildKeyFromConfig(adminKeyConfig);
3304
+ if (adminKey) {
3305
+ transaction.setAdminKey(adminKey);
3306
+ this.logger.debug('Token admin key set', { autoDetected: !opts.adminKey &amp;&amp; isAutoDetected });
3307
+ }
3308
+ &nbsp;
3309
+ // Set supply key - use provided or auto-detected
3310
+ const supplyKeyConfig = opts.supplyKey ?? autoKeyConfig;
3311
+ const supplyKey = this.buildKeyFromConfig(supplyKeyConfig);
3312
+ if (supplyKey) {
3313
+ transaction.setSupplyKey(supplyKey);
3314
+ this.logger.debug('Token supply key set', {
3315
+ autoDetected: !opts.supplyKey &amp;&amp; isAutoDetected,
3316
+ });
3317
+ }
3318
+ &nbsp;
3319
+ // Set freeze key - only if explicitly provided (not auto-set)
3320
+ const freezeKey = this.buildKeyFromConfig(opts.freezeKey);
3321
+ if (freezeKey) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
3322
+ <span class="cstat-no" title="statement not covered" > transaction.setFreezeKey(freezeKey);</span>
3323
+ <span class="cstat-no" title="statement not covered" > this.logger.debug('Token freeze key set');</span>
3324
+ <span class="cstat-no" title="statement not covered" > }</span>
3325
+ &nbsp;
3326
+ // Set wipe key - only if explicitly provided (not auto-set)
3327
+ const wipeKey = this.buildKeyFromConfig(opts.wipeKey);
3328
+ if (wipeKey) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
3329
+ <span class="cstat-no" title="statement not covered" > transaction.setWipeKey(wipeKey);</span>
3330
+ <span class="cstat-no" title="statement not covered" > this.logger.debug('Token wipe key set');</span>
3331
+ <span class="cstat-no" title="statement not covered" > }</span>
3332
+ &nbsp;
3333
+ // Set pause key - only if explicitly provided (not auto-set)
3334
+ const pauseKey = this.buildKeyFromConfig(opts.pauseKey);
3335
+ if (pauseKey) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
3336
+ <span class="cstat-no" title="statement not covered" > transaction.setPauseKey(pauseKey);</span>
3337
+ <span class="cstat-no" title="statement not covered" > this.logger.debug('Token pause key set');</span>
3338
+ <span class="cstat-no" title="statement not covered" > }</span>
3339
+ &nbsp;
3340
+ // Set KYC key - only if explicitly provided (not auto-set)
3341
+ const kycKey = this.buildKeyFromConfig(opts.kycKey);
3342
+ if (kycKey) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
3343
+ <span class="cstat-no" title="statement not covered" > transaction.setKycKey(kycKey);</span>
3344
+ <span class="cstat-no" title="statement not covered" > this.logger.debug('Token KYC key set');</span>
3345
+ <span class="cstat-no" title="statement not covered" > }</span>
3346
+ &nbsp;
3347
+ // Set fee schedule key - only if explicitly provided (not auto-set)
3348
+ const feeScheduleKey = this.buildKeyFromConfig(opts.feeScheduleKey);
3349
+ if (feeScheduleKey) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
3350
+ <span class="cstat-no" title="statement not covered" > transaction.setFeeScheduleKey(feeScheduleKey);</span>
3351
+ <span class="cstat-no" title="statement not covered" > this.logger.debug('Token fee schedule key set');</span>
3352
+ <span class="cstat-no" title="statement not covered" > }</span>
3353
+ &nbsp;
3354
+ return this.serializeTransaction(transaction, treasuryAccount);
3355
+ }
3356
+ &nbsp;
3357
+ /**
3358
+ * Build a token mint transaction
3359
+ * @param tokenId - Token ID to mint
3360
+ * @param amount - Amount to mint
3361
+ * @param account - Account performing the mint
3362
+ * @returns Base64 encoded transaction bytes
3363
+ */
3364
+ <span class="fstat-no" title="function not covered" > async buildTokenMint(tokenId: string, amount: number, account: string): Promise&lt;string&gt; {</span>
3365
+ <span class="cstat-no" title="statement not covered" > const transaction = new TokenMintTransaction()</span>
3366
+ <span class="cstat-no" title="statement not covered" > .setTokenId(TokenId.fromString(tokenId))</span>
3367
+ <span class="cstat-no" title="statement not covered" > .setAmount(amount);</span>
3368
+ <span class="cstat-no" title="statement not covered" ></span>
3369
+ <span class="cstat-no" title="statement not covered" > return this.serializeTransaction(transaction, account);</span>
3370
+ <span class="cstat-no" title="statement not covered" > }</span>
3371
+ &nbsp;
3372
+ /**
3373
+ * Build a token burn transaction
3374
+ * @param tokenId - Token ID to burn
3375
+ * @param amount - Amount to burn
3376
+ * @param account - Account performing the burn
3377
+ * @returns Base64 encoded transaction bytes
3378
+ */
3379
+ <span class="fstat-no" title="function not covered" > async buildTokenBurn(tokenId: string, amount: number, account: string): Promise&lt;string&gt; {</span>
3380
+ <span class="cstat-no" title="statement not covered" > const transaction = new TokenBurnTransaction()</span>
3381
+ <span class="cstat-no" title="statement not covered" > .setTokenId(TokenId.fromString(tokenId))</span>
3382
+ <span class="cstat-no" title="statement not covered" > .setAmount(amount);</span>
3383
+ <span class="cstat-no" title="statement not covered" ></span>
3384
+ <span class="cstat-no" title="statement not covered" > return this.serializeTransaction(transaction, account);</span>
3385
+ <span class="cstat-no" title="statement not covered" > }</span>
3386
+ &nbsp;
3387
+ /**
3388
+ * Build a topic creation transaction with automatic key configuration.
3389
+ *
3390
+ * **Auto-key behavior**: If no adminKey is provided, the topic will automatically
3391
+ * inherit the creating account's key structure:
3392
+ * - Single-sig account → topic adminKey = account's public key
3393
+ * - Multisig account → topic adminKey = threshold key with all signers
3394
+ *
3395
+ * This ensures topics created from multisig accounts are also controlled by the multisig.
3396
+ *
3397
+ * @param account - Account creating the topic
3398
+ * @param options - Topic creation options (keys auto-detected if not provided)
3399
+ * @returns Base64 encoded transaction bytes
3400
+ */
3401
+ async buildTopicCreate(
3402
+ account: string,
3403
+ options?: TopicCreateOptions | string, // string treated as memo
3404
+ ): Promise&lt;string&gt; {
3405
+ const transaction = new TopicCreateTransaction();
3406
+ &nbsp;
3407
+ // Support both object and string (memo shorthand)
3408
+ const opts: TopicCreateOptions =
3409
+ typeof options === 'string' ? { memo: options } : (<span class="branch-0 cbranch-no" title="branch not covered" >options ?? {});</span>
3410
+ &nbsp;
3411
+ if (opts.memo) {
3412
+ transaction.setTopicMemo(opts.memo);
3413
+ }
3414
+ &nbsp;
3415
+ // Auto-detect key config from active account if not explicitly provided
3416
+ const autoKeyConfig = this.getActiveAccountKeyConfig();
3417
+ &nbsp;
3418
+ // Set admin key - use provided or auto-detected
3419
+ const adminKeyConfig = opts.adminKey ?? autoKeyConfig;
3420
+ const adminKey = this.buildKeyFromConfig(adminKeyConfig);
3421
+ if (adminKey) {
3422
+ transaction.setAdminKey(adminKey);
3423
+ this.logger.debug('Topic admin key set', {
3424
+ isThreshold: adminKeyConfig?.<span class="branch-0 cbranch-no" title="branch not covered" >signerPublicKeys ? true : f</span>alse,
3425
+ autoDetected: !opts.adminKey &amp;&amp; !!autoKeyConfig,
3426
+ });
3427
+ }
3428
+ &nbsp;
3429
+ // Set submit key - use provided or auto-detected (same as admin by default)
3430
+ const submitKeyConfig = opts.submitKey ?? autoKeyConfig;
3431
+ const submitKey = this.buildKeyFromConfig(submitKeyConfig);
3432
+ if (submitKey) {
3433
+ transaction.setSubmitKey(submitKey);
3434
+ this.logger.debug('Topic submit key set', {
3435
+ isThreshold: submitKeyConfig?.<span class="branch-0 cbranch-no" title="branch not covered" >signerPublicKeys ? true : f</span>alse,
3436
+ autoDetected: !opts.submitKey &amp;&amp; !!autoKeyConfig,
3437
+ });
3438
+ }
3439
+ &nbsp;
3440
+ // Set auto-renew account if provided
3441
+ if (opts.autoRenewAccountId) {
3442
+ transaction.setAutoRenewAccountId(AccountId.fromString(opts.autoRenewAccountId));
3443
+ }
3444
+ &nbsp;
3445
+ return this.serializeTransaction(transaction, account);
3446
+ }
3447
+ &nbsp;
3448
+ /**
3449
+ * Build a topic message submit transaction
3450
+ * @param topicId - Topic ID (e.g., "0.0.12345")
3451
+ * @param message - Message to submit
3452
+ * @param account - Account submitting the message
3453
+ * @returns Base64 encoded transaction bytes
3454
+ */
3455
+ <span class="fstat-no" title="function not covered" > async buildTopicMessageSubmit(</span>
3456
+ <span class="cstat-no" title="statement not covered" > topicId: string,</span>
3457
+ <span class="cstat-no" title="statement not covered" > message: string,</span>
3458
+ <span class="cstat-no" title="statement not covered" > account: string,</span>
3459
+ <span class="cstat-no" title="statement not covered" > ): Promise&lt;string&gt; {</span>
3460
+ <span class="cstat-no" title="statement not covered" > const transaction = new TopicMessageSubmitTransaction().setTopicId(topicId).setMessage(message);</span>
3461
+ <span class="cstat-no" title="statement not covered" ></span>
3462
+ <span class="cstat-no" title="statement not covered" > return this.serializeTransaction(transaction, account);</span>
3463
+ <span class="cstat-no" title="statement not covered" > }</span>
3464
+ &nbsp;
3465
+ /**
3466
+ * Build an account creation transaction with key configuration.
3467
+ *
3468
+ * For single-sig accounts: pass { publicKey: '...' }
3469
+ * For multisig accounts: pass { signerPublicKeys: [...], threshold: N }
3470
+ *
3471
+ * If no key is provided, a random key is generated (NOT RECOMMENDED for production).
3472
+ *
3473
+ * @param creatorAccount - Account creating the new account
3474
+ * @param options - Account creation options including key config
3475
+ * @param optionsOrBalance
3476
+ * @returns Base64 encoded transaction bytes
3477
+ */
3478
+ async buildAccountCreate(
3479
+ creatorAccount: string,
3480
+ optionsOrBalance: AccountCreateOptions | number,
3481
+ ): Promise&lt;string&gt; {
3482
+ // Support both object and number (initial balance shorthand)
3483
+ const opts: AccountCreateOptions =
3484
+ typeof optionsOrBalance === <span class="branch-0 cbranch-no" title="branch not covered" >'number'</span>
3485
+ <span class="cstat-no" title="statement not covered" > ? { initialBalance: optionsOrBalance }</span>
3486
+ : optionsOrBalance;
3487
+ &nbsp;
3488
+ const transaction = new AccountCreateTransaction().setInitialBalance(
3489
+ new Hbar(opts.initialBalance),
3490
+ );
3491
+ &nbsp;
3492
+ // Auto-detect key config from active account if not explicitly provided
3493
+ // This ensures accounts created from multisig wallets inherit the multisig key structure
3494
+ const autoKeyConfig = this.getActiveAccountKeyConfig();
3495
+ const keyConfig = opts.key ?? autoKeyConfig;
3496
+ &nbsp;
3497
+ // Set account key - use provided or auto-detected
3498
+ const accountKey = this.buildKeyFromConfig(keyConfig);
3499
+ if (accountKey) {
3500
+ transaction.setKey(accountKey);
3501
+ this.logger.debug('Account key set', {
3502
+ isThreshold: keyConfig?.signerPublicKeys ? true : false,
3503
+ autoDetected: !opts.key &amp;&amp; !!autoKeyConfig,
3504
+ });
3505
+ <span class="branch-0 cbranch-no" title="branch not covered" > } else {</span>
3506
+ <span class="cstat-no" title="statement not covered" > // Fallback: generate random key (not recommended for production)</span>
3507
+ <span class="cstat-no" title="statement not covered" > const newKey = PrivateKey.generateED25519();</span>
3508
+ <span class="cstat-no" title="statement not covered" > transaction.setKey(newKey.publicKey);</span>
3509
+ <span class="cstat-no" title="statement not covered" > this.logger.warn(</span>
3510
+ <span class="cstat-no" title="statement not covered" > 'Generated random key for new account - provide key config for production use',</span>
3511
+ <span class="cstat-no" title="statement not covered" > );</span>
3512
+ <span class="cstat-no" title="statement not covered" > }</span>
3513
+ &nbsp;
3514
+ // Set memo if provided
3515
+ if (opts.memo) {
3516
+ transaction.setAccountMemo(opts.memo);
3517
+ }
3518
+ &nbsp;
3519
+ // Set max automatic token associations
3520
+ if (opts.maxAutomaticTokenAssociations !== undefined) {
3521
+ transaction.setMaxAutomaticTokenAssociations(opts.maxAutomaticTokenAssociations);
3522
+ }
3523
+ &nbsp;
3524
+ // Set receiver signature required
3525
+ if (opts.receiverSignatureRequired !== undefined) {
3526
+ transaction.setReceiverSignatureRequired(opts.receiverSignatureRequired);
3527
+ }
3528
+ &nbsp;
3529
+ return this.serializeTransaction(transaction, creatorAccount);
3530
+ }
3531
+ &nbsp;
3532
+ /**
3533
+ * Build an account update transaction
3534
+ * @param accountId - Account to update
3535
+ * @param memo - New account memo
3536
+ * @returns Base64 encoded transaction bytes
3537
+ */
3538
+ async buildAccountUpdate(accountId: string, memo: string): Promise&lt;string&gt; {
3539
+ const transaction = new AccountUpdateTransaction()
3540
+ .setAccountId(AccountId.fromString(accountId))
3541
+ .setAccountMemo(memo);
3542
+ &nbsp;
3543
+ return this.serializeTransaction(transaction, accountId);
3544
+ }
3545
+ &nbsp;
3546
+ /**
3547
+ * Build a batch transaction with multiple inner transactions
3548
+ * @param innerTransactions - Array of transaction descriptors
3549
+ * @param payerAccount - Account paying for the batch transaction
3550
+ * @returns Base64 encoded batch transaction bytes
3551
+ */
3552
+ <span class="fstat-no" title="function not covered" > async buildBatchTransaction(</span>
3553
+ <span class="cstat-no" title="statement not covered" > innerTransactions: Array&lt;{</span>
3554
+ <span class="cstat-no" title="statement not covered" > type: 'send-hbar' | 'send-token' | 'token-mint';</span>
3555
+ <span class="cstat-no" title="statement not covered" > toAccount?: string;</span>
3556
+ <span class="cstat-no" title="statement not covered" > amount: number;</span>
3557
+ <span class="cstat-no" title="statement not covered" > tokenId?: string;</span>
3558
+ <span class="cstat-no" title="statement not covered" > }&gt;,</span>
3559
+ <span class="cstat-no" title="statement not covered" > payerAccount: string,</span>
3560
+ <span class="cstat-no" title="statement not covered" > ): Promise&lt;string&gt; {</span>
3561
+ <span class="cstat-no" title="statement not covered" > const networkId = this.getNetworkId();</span>
3562
+ <span class="cstat-no" title="statement not covered" ></span>
3563
+ <span class="cstat-no" title="statement not covered" > if (!networkId) {</span>
3564
+ <span class="cstat-no" title="statement not covered" > throw new Error('No active wallet session. Please connect your wallet first.');</span>
3565
+ <span class="cstat-no" title="statement not covered" > }</span>
3566
+ <span class="cstat-no" title="statement not covered" ></span>
3567
+ <span class="cstat-no" title="statement not covered" > const client = this.createClientForNetwork(networkId);</span>
3568
+ <span class="cstat-no" title="statement not covered" > const batchKey = PrivateKey.generateED25519();</span>
3569
+ <span class="cstat-no" title="statement not covered" > const batchPublicKey = batchKey.publicKey;</span>
3570
+ <span class="cstat-no" title="statement not covered" > const preparedTransactions = [];</span>
3571
+ <span class="cstat-no" title="statement not covered" ></span>
3572
+ <span class="cstat-no" title="statement not covered" > for (const tx of innerTransactions) {</span>
3573
+ <span class="cstat-no" title="statement not covered" > let transaction;</span>
3574
+ <span class="cstat-no" title="statement not covered" ></span>
3575
+ <span class="cstat-no" title="statement not covered" > switch (tx.type) {</span>
3576
+ <span class="cstat-no" title="statement not covered" > case 'send-hbar':</span>
3577
+ <span class="cstat-no" title="statement not covered" > transaction = new TransferTransaction()</span>
3578
+ <span class="cstat-no" title="statement not covered" > .addHbarTransfer(AccountId.fromString(payerAccount), new Hbar(-tx.amount))</span>
3579
+ <span class="cstat-no" title="statement not covered" > .addHbarTransfer(AccountId.fromString(tx.toAccount!), new Hbar(tx.amount))</span>
3580
+ <span class="cstat-no" title="statement not covered" > .setTransactionId(TransactionId.generate(AccountId.fromString(payerAccount)))</span>
3581
+ <span class="cstat-no" title="statement not covered" > .setBatchKey(batchPublicKey);</span>
3582
+ <span class="cstat-no" title="statement not covered" > break;</span>
3583
+ <span class="cstat-no" title="statement not covered" ></span>
3584
+ <span class="cstat-no" title="statement not covered" > case 'send-token':</span>
3585
+ <span class="cstat-no" title="statement not covered" > transaction = new TransferTransaction()</span>
3586
+ <span class="cstat-no" title="statement not covered" > .addTokenTransfer(</span>
3587
+ <span class="cstat-no" title="statement not covered" > TokenId.fromString(tx.tokenId!),</span>
3588
+ <span class="cstat-no" title="statement not covered" > AccountId.fromString(payerAccount),</span>
3589
+ <span class="cstat-no" title="statement not covered" > -tx.amount,</span>
3590
+ <span class="cstat-no" title="statement not covered" > )</span>
3591
+ <span class="cstat-no" title="statement not covered" > .addTokenTransfer(</span>
3592
+ <span class="cstat-no" title="statement not covered" > TokenId.fromString(tx.tokenId!),</span>
3593
+ <span class="cstat-no" title="statement not covered" > AccountId.fromString(tx.toAccount!),</span>
3594
+ <span class="cstat-no" title="statement not covered" > tx.amount,</span>
3595
+ <span class="cstat-no" title="statement not covered" > )</span>
3596
+ <span class="cstat-no" title="statement not covered" > .setTransactionId(TransactionId.generate(AccountId.fromString(payerAccount)))</span>
3597
+ <span class="cstat-no" title="statement not covered" > .setBatchKey(batchPublicKey);</span>
3598
+ <span class="cstat-no" title="statement not covered" > break;</span>
3599
+ <span class="cstat-no" title="statement not covered" ></span>
3600
+ <span class="cstat-no" title="statement not covered" > case 'token-mint':</span>
3601
+ <span class="cstat-no" title="statement not covered" > transaction = new TokenMintTransaction()</span>
3602
+ <span class="cstat-no" title="statement not covered" > .setTokenId(TokenId.fromString(tx.tokenId!))</span>
3603
+ <span class="cstat-no" title="statement not covered" > .setAmount(tx.amount)</span>
3604
+ <span class="cstat-no" title="statement not covered" > .setTransactionId(TransactionId.generate(AccountId.fromString(payerAccount)))</span>
3605
+ <span class="cstat-no" title="statement not covered" > .setBatchKey(batchPublicKey);</span>
3606
+ <span class="cstat-no" title="statement not covered" > break;</span>
3607
+ <span class="cstat-no" title="statement not covered" ></span>
3608
+ <span class="cstat-no" title="statement not covered" > default:</span>
3609
+ <span class="cstat-no" title="statement not covered" > continue;</span>
3610
+ <span class="cstat-no" title="statement not covered" > }</span>
3611
+ <span class="cstat-no" title="statement not covered" ></span>
3612
+ <span class="cstat-no" title="statement not covered" > if (transaction) {</span>
3613
+ <span class="cstat-no" title="statement not covered" > const frozen = await transaction.freezeWith(client);</span>
3614
+ <span class="cstat-no" title="statement not covered" > preparedTransactions.push(frozen);</span>
3615
+ <span class="cstat-no" title="statement not covered" > }</span>
3616
+ <span class="cstat-no" title="statement not covered" > }</span>
3617
+ <span class="cstat-no" title="statement not covered" ></span>
3618
+ <span class="cstat-no" title="statement not covered" > const batchTransaction = new BatchTransaction().setTransactionId(</span>
3619
+ <span class="cstat-no" title="statement not covered" > TransactionId.generate(AccountId.fromString(payerAccount)),</span>
3620
+ <span class="cstat-no" title="statement not covered" > );</span>
3621
+ <span class="cstat-no" title="statement not covered" ></span>
3622
+ <span class="cstat-no" title="statement not covered" > for (const tx of preparedTransactions) {</span>
3623
+ <span class="cstat-no" title="statement not covered" > batchTransaction.addInnerTransaction(tx);</span>
3624
+ <span class="cstat-no" title="statement not covered" > }</span>
3625
+ <span class="cstat-no" title="statement not covered" ></span>
3626
+ <span class="cstat-no" title="statement not covered" > const frozenBatch = await batchTransaction.freezeWith(client);</span>
3627
+ <span class="cstat-no" title="statement not covered" > const signedBatch = await frozenBatch.sign(batchKey);</span>
3628
+ <span class="cstat-no" title="statement not covered" > const bytes = signedBatch.toBytes();</span>
3629
+ <span class="cstat-no" title="statement not covered" ></span>
3630
+ <span class="cstat-no" title="statement not covered" > return this.uint8ArrayToBase64(bytes);</span>
3631
+ <span class="cstat-no" title="statement not covered" > }</span>
3632
+ &nbsp;
3633
+ /**
3634
+ * Build inner transactions for batch (unsigned, with batchKey set)
3635
+ * @param account - Account executing the batch
3636
+ * @param batchKey - Public key for batch transactions
3637
+ * @param innerTransactions - Array of transaction descriptors
3638
+ * @returns Array of base64 encoded unsigned inner transactions
3639
+ */
3640
+ async buildBatchInnerTransactions(
3641
+ account: string,
3642
+ batchKey: string,
3643
+ innerTransactions: Array&lt;BatchInnerTransaction&gt;,
3644
+ ): Promise&lt;Array&lt;{ payload: string; description: string }&gt;&gt; {
3645
+ const accountId = AccountId.fromString(account);
3646
+ const batchPublicKey = PublicKey.fromString(batchKey);
3647
+ &nbsp;
3648
+ const networkId = this.getNetworkId();
3649
+ &nbsp;
3650
+ if (!networkId) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
3651
+ <span class="cstat-no" title="statement not covered" > throw new Error('No active wallet session. Please connect your wallet first.');</span>
3652
+ <span class="cstat-no" title="statement not covered" > }</span>
3653
+ &nbsp;
3654
+ const client = this.createClientForNetwork(networkId);
3655
+ const results: Array&lt;{ payload: string; description: string }&gt; = [];
3656
+ &nbsp;
3657
+ for (const tx of innerTransactions) {
3658
+ let transaction: Transaction;
3659
+ let description: string;
3660
+ &nbsp;
3661
+ try {
3662
+ switch (tx.type) {
3663
+ case 'send-hbar':
3664
+ transaction = new TransferTransaction()
3665
+ .setTransactionId(TransactionId.generate(accountId))
3666
+ .addHbarTransfer(accountId, Hbar.fromTinybars(-(tx.<span class="branch-0 cbranch-no" title="branch not covered" >amount || 0))</span>)
3667
+ .addHbarTransfer(
3668
+ AccountId.fromString(tx.toAccount!),
3669
+ Hbar.fromTinybars(tx.<span class="branch-0 cbranch-no" title="branch not covered" >amount || 0)</span>,
3670
+ )
3671
+ .setBatchKey(batchPublicKey);
3672
+ description = `Send ${tx.amount} tinybar to ${tx.toAccount}`;
3673
+ break;
3674
+ &nbsp;
3675
+ case 'send-token':
3676
+ transaction = new TransferTransaction()
3677
+ .setTransactionId(TransactionId.generate(accountId))
3678
+ .addTokenTransfer(TokenId.fromString(tx.tokenId!), accountId, -(tx.<span class="branch-0 cbranch-no" title="branch not covered" >amount || 0))</span>
3679
+ .addTokenTransfer(
3680
+ TokenId.fromString(tx.tokenId!),
3681
+ AccountId.fromString(tx.toAccount!),
3682
+ tx.<span class="branch-0 cbranch-no" title="branch not covered" >amount || 0,</span>
3683
+ )
3684
+ .setBatchKey(batchPublicKey);
3685
+ description = `Send ${tx.amount} of token ${tx.tokenId} to ${tx.toAccount}`;
3686
+ break;
3687
+ &nbsp;
3688
+ <span class="branch-0 cbranch-no" title="branch not covered" > case 'send-nft':</span>
3689
+ <span class="cstat-no" title="statement not covered" > transaction = new TransferTransaction()</span>
3690
+ <span class="cstat-no" title="statement not covered" > .setTransactionId(TransactionId.generate(accountId))</span>
3691
+ <span class="cstat-no" title="statement not covered" > .addNftTransfer(</span>
3692
+ <span class="cstat-no" title="statement not covered" > new NftId(TokenId.fromString(tx.tokenId!), tx.serialNumber || 1),</span>
3693
+ <span class="cstat-no" title="statement not covered" > accountId,</span>
3694
+ <span class="cstat-no" title="statement not covered" > AccountId.fromString(tx.toAccount!),</span>
3695
+ <span class="cstat-no" title="statement not covered" > )</span>
3696
+ <span class="cstat-no" title="statement not covered" > .setBatchKey(batchPublicKey);</span>
3697
+ <span class="cstat-no" title="statement not covered" > description = `Send NFT ${tx.tokenId}#${tx.serialNumber} to ${tx.toAccount}`;</span>
3698
+ <span class="cstat-no" title="statement not covered" > break;</span>
3699
+ &nbsp;
3700
+ case 'token-associate':
3701
+ transaction = new TokenAssociateTransaction()
3702
+ .setTransactionId(TransactionId.generate(accountId))
3703
+ .setAccountId(accountId)
3704
+ .setTokenIds([TokenId.fromString(tx.tokenId!)])
3705
+ .setBatchKey(batchPublicKey);
3706
+ description = `Associate token ${tx.tokenId}`;
3707
+ break;
3708
+ &nbsp;
3709
+ <span class="branch-0 cbranch-no" title="branch not covered" > case 'token-dissociate':</span>
3710
+ <span class="cstat-no" title="statement not covered" > transaction = new TokenDissociateTransaction()</span>
3711
+ <span class="cstat-no" title="statement not covered" > .setTransactionId(TransactionId.generate(accountId))</span>
3712
+ <span class="cstat-no" title="statement not covered" > .setAccountId(accountId)</span>
3713
+ <span class="cstat-no" title="statement not covered" > .setTokenIds([TokenId.fromString(tx.tokenId!)])</span>
3714
+ <span class="cstat-no" title="statement not covered" > .setBatchKey(batchPublicKey);</span>
3715
+ <span class="cstat-no" title="statement not covered" > description = `Dissociate token ${tx.tokenId}`;</span>
3716
+ <span class="cstat-no" title="statement not covered" > break;</span>
3717
+ &nbsp;
3718
+ <span class="branch-0 cbranch-no" title="branch not covered" > case 'token-create': {</span>
3719
+ <span class="cstat-no" title="statement not covered" > const createTx = new TokenCreateTransaction()</span>
3720
+ <span class="cstat-no" title="statement not covered" > .setTransactionId(TransactionId.generate(accountId))</span>
3721
+ <span class="cstat-no" title="statement not covered" > .setTokenName(tx.tokenName || 'Token')</span>
3722
+ <span class="cstat-no" title="statement not covered" > .setTokenSymbol(tx.tokenSymbol || 'TKN')</span>
3723
+ <span class="cstat-no" title="statement not covered" > .setDecimals(tx.decimals ?? 0)</span>
3724
+ <span class="cstat-no" title="statement not covered" > .setInitialSupply(tx.initialSupply ?? 0)</span>
3725
+ <span class="cstat-no" title="statement not covered" > .setTreasuryAccountId(accountId)</span>
3726
+ <span class="cstat-no" title="statement not covered" > .setTokenType(</span>
3727
+ <span class="cstat-no" title="statement not covered" > tx.decimals === 0 ? TokenType.NonFungibleUnique : TokenType.FungibleCommon,</span>
3728
+ <span class="cstat-no" title="statement not covered" > )</span>
3729
+ <span class="cstat-no" title="statement not covered" > .setSupplyType(</span>
3730
+ <span class="cstat-no" title="statement not covered" > tx.supplyType === 'finite' ? TokenSupplyType.Finite : TokenSupplyType.Infinite,</span>
3731
+ <span class="cstat-no" title="statement not covered" > )</span>
3732
+ <span class="cstat-no" title="statement not covered" > .setBatchKey(batchPublicKey);</span>
3733
+ <span class="cstat-no" title="statement not covered" > if (tx.maxSupply &amp;&amp; tx.supplyType === 'finite') {</span>
3734
+ <span class="cstat-no" title="statement not covered" > createTx.setMaxSupply(tx.maxSupply);</span>
3735
+ <span class="cstat-no" title="statement not covered" > }</span>
3736
+ <span class="cstat-no" title="statement not covered" > transaction = createTx;</span>
3737
+ <span class="cstat-no" title="statement not covered" > description = `Create token ${tx.tokenName} (${tx.tokenSymbol})`;</span>
3738
+ <span class="cstat-no" title="statement not covered" > break;</span>
3739
+ <span class="cstat-no" title="statement not covered" > }</span>
3740
+ &nbsp;
3741
+ case 'token-mint': {
3742
+ const mintTx = new TokenMintTransaction()
3743
+ .setTransactionId(TransactionId.generate(accountId))
3744
+ .setTokenId(TokenId.fromString(tx.tokenId!))
3745
+ .setBatchKey(batchPublicKey);
3746
+ // Handle NFT metadata (array) vs fungible amount
3747
+ if (tx.metadata) {
3748
+ const encoder = new TextEncoder();
3749
+ if (Array.isArray(tx.metadata)) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
3750
+ <span class="cstat-no" title="statement not covered" > mintTx.setMetadata(tx.metadata.map((m) =&gt; encoder.encode(m)));</span>
3751
+ } else {
3752
+ mintTx.setMetadata([encoder.encode(tx.metadata)]);
3753
+ }
3754
+ } else {
3755
+ mintTx.setAmount(tx.<span class="branch-0 cbranch-no" title="branch not covered" >amount || 1)</span>;
3756
+ }
3757
+ transaction = mintTx;
3758
+ description = tx.metadata
3759
+ ? `Mint NFT for token ${tx.tokenId}`
3760
+ : `Mint ${tx.amount} of token ${tx.tokenId}`;
3761
+ break;
3762
+ }
3763
+ &nbsp;
3764
+ <span class="branch-0 cbranch-no" title="branch not covered" > case 'token-burn': {</span>
3765
+ <span class="cstat-no" title="statement not covered" > const burnTx = new TokenBurnTransaction()</span>
3766
+ <span class="cstat-no" title="statement not covered" > .setTransactionId(TransactionId.generate(accountId))</span>
3767
+ <span class="cstat-no" title="statement not covered" > .setTokenId(TokenId.fromString(tx.tokenId!))</span>
3768
+ <span class="cstat-no" title="statement not covered" > .setBatchKey(batchPublicKey);</span>
3769
+ <span class="cstat-no" title="statement not covered" > if (tx.serialNumber) {</span>
3770
+ <span class="cstat-no" title="statement not covered" > burnTx.setSerials([tx.serialNumber]);</span>
3771
+ <span class="cstat-no" title="statement not covered" > } else {</span>
3772
+ <span class="cstat-no" title="statement not covered" > burnTx.setAmount(tx.amount || 1);</span>
3773
+ <span class="cstat-no" title="statement not covered" > }</span>
3774
+ <span class="cstat-no" title="statement not covered" > transaction = burnTx;</span>
3775
+ <span class="cstat-no" title="statement not covered" > description = tx.serialNumber</span>
3776
+ <span class="cstat-no" title="statement not covered" > ? `Burn NFT ${tx.tokenId}#${tx.serialNumber}`</span>
3777
+ <span class="cstat-no" title="statement not covered" > : `Burn ${tx.amount} of token ${tx.tokenId}`;</span>
3778
+ <span class="cstat-no" title="statement not covered" > break;</span>
3779
+ <span class="cstat-no" title="statement not covered" > }</span>
3780
+ &nbsp;
3781
+ <span class="branch-0 cbranch-no" title="branch not covered" > case 'topic-create': {</span>
3782
+ <span class="cstat-no" title="statement not covered" > const topicTx = new TopicCreateTransaction()</span>
3783
+ <span class="cstat-no" title="statement not covered" > .setTransactionId(TransactionId.generate(accountId))</span>
3784
+ <span class="cstat-no" title="statement not covered" > .setBatchKey(batchPublicKey);</span>
3785
+ <span class="cstat-no" title="statement not covered" > if (tx.topicMemo) {</span>
3786
+ <span class="cstat-no" title="statement not covered" > topicTx.setTopicMemo(tx.topicMemo);</span>
3787
+ <span class="cstat-no" title="statement not covered" > }</span>
3788
+ <span class="cstat-no" title="statement not covered" > transaction = topicTx;</span>
3789
+ <span class="cstat-no" title="statement not covered" > description = tx.topicMemo ? `Create topic: ${tx.topicMemo}` : 'Create topic';</span>
3790
+ <span class="cstat-no" title="statement not covered" > break;</span>
3791
+ <span class="cstat-no" title="statement not covered" > }</span>
3792
+ &nbsp;
3793
+ <span class="branch-0 cbranch-no" title="branch not covered" > case 'topic-message':</span>
3794
+ <span class="cstat-no" title="statement not covered" > transaction = new TopicMessageSubmitTransaction()</span>
3795
+ <span class="cstat-no" title="statement not covered" > .setTransactionId(TransactionId.generate(accountId))</span>
3796
+ <span class="cstat-no" title="statement not covered" > .setTopicId(tx.topicId!)</span>
3797
+ <span class="cstat-no" title="statement not covered" > .setMessage(tx.message || '')</span>
3798
+ <span class="cstat-no" title="statement not covered" > .setBatchKey(batchPublicKey);</span>
3799
+ <span class="cstat-no" title="statement not covered" > description = `Submit message to topic ${tx.topicId}`;</span>
3800
+ <span class="cstat-no" title="statement not covered" > break;</span>
3801
+ &nbsp;
3802
+ <span class="branch-0 cbranch-no" title="branch not covered" > case 'account-create': {</span>
3803
+ <span class="cstat-no" title="statement not covered" > const acctTx = new AccountCreateTransaction()</span>
3804
+ <span class="cstat-no" title="statement not covered" > .setTransactionId(TransactionId.generate(accountId))</span>
3805
+ <span class="cstat-no" title="statement not covered" > .setInitialBalance(Hbar.fromTinybars(tx.initialBalance || 0))</span>
3806
+ <span class="cstat-no" title="statement not covered" > .setBatchKey(batchPublicKey);</span>
3807
+ <span class="cstat-no" title="statement not covered" > if (tx.maxAutoAssociations !== undefined) {</span>
3808
+ <span class="cstat-no" title="statement not covered" > acctTx.setMaxAutomaticTokenAssociations(tx.maxAutoAssociations);</span>
3809
+ <span class="cstat-no" title="statement not covered" > }</span>
3810
+ <span class="cstat-no" title="statement not covered" > transaction = acctTx;</span>
3811
+ <span class="cstat-no" title="statement not covered" > description = `Create account with ${tx.initialBalance} tinybar`;</span>
3812
+ <span class="cstat-no" title="statement not covered" > break;</span>
3813
+ <span class="cstat-no" title="statement not covered" > }</span>
3814
+ &nbsp;
3815
+ <span class="branch-0 cbranch-no" title="branch not covered" > case 'account-update': {</span>
3816
+ <span class="cstat-no" title="statement not covered" > const updateTx = new AccountUpdateTransaction()</span>
3817
+ <span class="cstat-no" title="statement not covered" > .setTransactionId(TransactionId.generate(accountId))</span>
3818
+ <span class="cstat-no" title="statement not covered" > .setAccountId(accountId)</span>
3819
+ <span class="cstat-no" title="statement not covered" > .setBatchKey(batchPublicKey);</span>
3820
+ <span class="cstat-no" title="statement not covered" > if (tx.memo !== undefined) {</span>
3821
+ <span class="cstat-no" title="statement not covered" > updateTx.setAccountMemo(tx.memo);</span>
3822
+ <span class="cstat-no" title="statement not covered" > }</span>
3823
+ <span class="cstat-no" title="statement not covered" > if (tx.maxAutoAssociations !== undefined) {</span>
3824
+ <span class="cstat-no" title="statement not covered" > updateTx.setMaxAutomaticTokenAssociations(tx.maxAutoAssociations);</span>
3825
+ <span class="cstat-no" title="statement not covered" > }</span>
3826
+ <span class="cstat-no" title="statement not covered" > transaction = updateTx;</span>
3827
+ <span class="cstat-no" title="statement not covered" > description = `Update account ${account}`;</span>
3828
+ <span class="cstat-no" title="statement not covered" > break;</span>
3829
+ <span class="cstat-no" title="statement not covered" > }</span>
3830
+ &nbsp;
3831
+ default:
3832
+ throw new Error(`Unknown transaction type: ${(tx as any).type}`);
3833
+ }
3834
+ &nbsp;
3835
+ this.logger.debug('Freezing transaction', { type: tx.type });
3836
+ const frozen = await transaction.freezeWith(client);
3837
+ &nbsp;
3838
+ this.logger.debug('Frozen transaction, serializing', { type: tx.type });
3839
+ const bytes = frozen.toBytes();
3840
+ &nbsp;
3841
+ this.logger.debug('Serialized transaction', { type: tx.type, length: bytes.length });
3842
+ &nbsp;
3843
+ results.push({
3844
+ payload: this.uint8ArrayToBase64(bytes),
3845
+ description,
3846
+ });
3847
+ &nbsp;
3848
+ this.logger.debug('Successfully processed transaction', { type: tx.type });
3849
+ } catch (error) {
3850
+ this.logger.error('Failed to process transaction', { type: tx.type, error });
3851
+ throw new Error(`Failed to build ${tx.type} transaction: ${error}`);
3852
+ }
3853
+ }
3854
+ &nbsp;
3855
+ return results;
3856
+ }
3857
+ &nbsp;
3858
+ /**
3859
+ * Serialize a transaction to base64 encoded bytes
3860
+ * @param transaction
3861
+ * @param payerAccountId
3862
+ */
3863
+ private async serializeTransaction(transaction: any, payerAccountId: string): Promise&lt;string&gt; {
3864
+ const networkId = this.getNetworkId();
3865
+ &nbsp;
3866
+ if (!networkId) {
3867
+ throw new Error('No active wallet session. Please connect your wallet first.');
3868
+ }
3869
+ &nbsp;
3870
+ transaction.setTransactionId(TransactionId.generate(AccountId.fromString(payerAccountId)));
3871
+ const client = this.createClientForNetwork(networkId);
3872
+ const frozen = await transaction.freezeWith(client);
3873
+ const bytes = frozen.toBytes();
3874
+ &nbsp;
3875
+ return this.uint8ArrayToBase64(bytes);
3876
+ }
3877
+ &nbsp;
3878
+ /**
3879
+ * Create a Hedera client for the specified network
3880
+ * @param networkId
3881
+ */
3882
+ private createClientForNetwork(networkId: string): Client {
3883
+ const network = networkId.split(':')[1]?.toLowerCase();
3884
+ &nbsp;
3885
+ switch (network) {
3886
+ case 'mainnet':
3887
+ return Client.forMainnet();
3888
+ case 'testnet':
3889
+ return Client.forTestnet();
3890
+ default:
3891
+ this.logger.warn('Unknown Hedera network, defaulting to testnet', { network });
3892
+ return Client.forTestnet();
3893
+ }
3894
+ }
3895
+ &nbsp;
3896
+ /**
3897
+ * Convert Uint8Array to base64 string
3898
+ * @param bytes
3899
+ */
3900
+ private uint8ArrayToBase64(bytes: Uint8Array): string {
3901
+ let binary = '';
3902
+ for (let i = 0; i &lt; bytes.length; i++) {
3903
+ binary += String.fromCharCode(bytes[i]);
3904
+ }
3905
+ return btoa(binary);
3906
+ }
3907
+ &nbsp;
3908
+ /**
3909
+ * Convert base64 string to Uint8Array
3910
+ * @param base64
3911
+ */
3912
+ private <span class="fstat-no" title="function not covered" >base64ToUint8Array(base64: string): Uint8Array {</span>
3913
+ <span class="cstat-no" title="statement not covered" > const binary = atob(base64);</span>
3914
+ <span class="cstat-no" title="statement not covered" > const bytes = new Uint8Array(binary.length);</span>
3915
+ <span class="cstat-no" title="statement not covered" > for (let i = 0; i &lt; binary.length; i++) {</span>
3916
+ <span class="cstat-no" title="statement not covered" > bytes[i] = binary.charCodeAt(i);</span>
3917
+ <span class="cstat-no" title="statement not covered" > }</span>
3918
+ <span class="cstat-no" title="statement not covered" > return bytes;</span>
3919
+ <span class="cstat-no" title="statement not covered" > }</span>
3920
+ }
3921
+ &nbsp;</pre></td></tr></table></pre>
3922
+
3923
+ <div class='push'></div><!-- for sticky footer -->
3924
+ </div><!-- /wrapper -->
3925
+ <div class='footer quiet pad2 space-top1 center small'>
3926
+ Code coverage generated by
3927
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
3928
+ at 2026-06-02T14:30:38.372Z
3929
+ </div>
3930
+ <script src="../../../prettify.js"></script>
3931
+ <script>
3932
+ window.onload = function () {
3933
+ prettyPrint();
3934
+ };
3935
+ </script>
3936
+ <script src="../../../sorter.js"></script>
3937
+ <script src="../../../block-navigation.js"></script>
3938
+ </body>
3939
+ </html>
3940
+