@layerzerolabs/protocol-stellar-v2 0.2.21 → 0.2.23

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 (328) hide show
  1. package/.turbo/turbo-build.log +347 -271
  2. package/.turbo/turbo-lint.log +277 -208
  3. package/.turbo/turbo-test.log +1700 -1370
  4. package/Cargo.lock +22 -51
  5. package/Cargo.toml +6 -1
  6. package/contracts/common-macros/src/auth.rs +10 -9
  7. package/contracts/common-macros/src/contract_ttl.rs +1 -4
  8. package/contracts/common-macros/src/error.rs +1 -3
  9. package/contracts/common-macros/src/lib.rs +65 -61
  10. package/contracts/common-macros/src/storage.rs +212 -65
  11. package/contracts/common-macros/src/tests/auth.rs +75 -6
  12. package/contracts/common-macros/src/tests/contract_ttl.rs +383 -350
  13. package/contracts/common-macros/src/tests/error.rs +9 -21
  14. package/contracts/common-macros/src/tests/lz_contract.rs +80 -0
  15. package/contracts/common-macros/src/tests/mod.rs +2 -0
  16. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_multisig_code.snap +20 -3
  17. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_ownable_code.snap +28 -1
  18. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_ttl__snapshot_generated_contractimpl_code.snap +8 -43
  19. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_ttl__snapshot_generated_contracttrait_code.snap +6 -29
  20. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__lz_contract__snapshot_generated_lz_contract_code.snap +31 -0
  21. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ttl_extendable__snapshot_generated_ttl_extendable_code.snap +8 -0
  22. package/contracts/common-macros/src/tests/storage/extract_fields.rs +87 -0
  23. package/contracts/common-macros/src/tests/storage/gen_accessor_methods.rs +223 -0
  24. package/contracts/common-macros/src/tests/storage/gen_args.rs +65 -0
  25. package/contracts/common-macros/src/tests/storage/gen_enum_variant.rs +78 -0
  26. package/contracts/common-macros/src/tests/storage/gen_key.rs +108 -0
  27. package/contracts/common-macros/src/tests/storage/gen_params.rs +105 -0
  28. package/contracts/common-macros/src/tests/{storage.rs → storage/generate_storage.rs} +54 -129
  29. package/contracts/common-macros/src/tests/storage/is_primitive_type.rs +48 -0
  30. package/contracts/common-macros/src/tests/storage/mod.rs +16 -0
  31. package/contracts/common-macros/src/tests/storage/parse_default.rs +164 -0
  32. package/contracts/common-macros/src/tests/storage/parse_name.rs +159 -0
  33. package/contracts/common-macros/src/tests/storage/parse_no_ttl_extension.rs +124 -0
  34. package/contracts/common-macros/src/tests/storage/parse_storage_type.rs +174 -0
  35. package/contracts/common-macros/src/tests/storage/snapshots/common_macros__tests__storage__generate_storage__snapshot_generated_storage_code.snap +412 -0
  36. package/contracts/common-macros/src/tests/storage/storage_kind.rs +39 -0
  37. package/contracts/common-macros/src/tests/storage/test_setup.rs +25 -0
  38. package/contracts/common-macros/src/tests/storage/validate_attrs.rs +138 -0
  39. package/contracts/common-macros/src/tests/storage/variant_config.rs +226 -0
  40. package/contracts/common-macros/src/tests/test_helpers.rs +4 -10
  41. package/contracts/common-macros/src/tests/ttl_configurable.rs +2 -2
  42. package/contracts/common-macros/src/tests/ttl_extendable.rs +32 -0
  43. package/contracts/common-macros/src/tests/upgradeable.rs +118 -2
  44. package/contracts/common-macros/src/ttl_configurable.rs +1 -4
  45. package/contracts/common-macros/src/upgradeable.rs +21 -3
  46. package/contracts/endpoint-v2/Cargo.toml +0 -4
  47. package/contracts/endpoint-v2/src/endpoint_v2.rs +37 -17
  48. package/contracts/endpoint-v2/src/errors.rs +26 -1
  49. package/contracts/endpoint-v2/src/interfaces/layerzero_endpoint_v2.rs +1 -1
  50. package/contracts/endpoint-v2/src/interfaces/message_lib_manager.rs +4 -4
  51. package/contracts/endpoint-v2/src/interfaces/messaging_composer.rs +2 -2
  52. package/contracts/endpoint-v2/src/lib.rs +0 -1
  53. package/contracts/endpoint-v2/src/message_lib_manager.rs +39 -8
  54. package/contracts/endpoint-v2/src/messaging_channel.rs +36 -4
  55. package/contracts/endpoint-v2/src/messaging_composer.rs +18 -4
  56. package/contracts/endpoint-v2/src/storage.rs +9 -1
  57. package/contracts/endpoint-v2/src/tests/endpoint_setup.rs +2 -2
  58. package/contracts/endpoint-v2/src/tests/endpoint_v2/pay_messaging_fees.rs +1 -1
  59. package/contracts/endpoint-v2/src/tests/endpoint_v2/require_oapp_auth.rs +2 -2
  60. package/contracts/endpoint-v2/src/tests/message_lib_manager/register_library.rs +3 -3
  61. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_receive_lib_for_eid.rs +5 -5
  62. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_registered.rs +2 -2
  63. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_send_lib_for_eid.rs +5 -5
  64. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_supported_eid.rs +3 -3
  65. package/contracts/endpoint-v2/src/tests/messaging_channel/nilify.rs +1 -1
  66. package/contracts/endpoint-v2/src/tests/messaging_composer/clear_compose.rs +4 -3
  67. package/contracts/endpoint-v2/src/tests/messaging_composer/lz_compose_alert.rs +7 -2
  68. package/contracts/endpoint-v2/src/tests/messaging_composer/mod.rs +4 -0
  69. package/contracts/endpoint-v2/src/tests/messaging_composer/send_compose.rs +7 -2
  70. package/contracts/layerzero-views/src/layerzero_view.rs +0 -1
  71. package/contracts/layerzero-views/src/tests/mod.rs +1 -0
  72. package/contracts/layerzero-views/src/tests/types_tests.rs +31 -0
  73. package/contracts/layerzero-views/src/types.rs +2 -3
  74. package/contracts/macro-integration-tests/tests/runtime/contract_ttl/constructor.rs +61 -0
  75. package/contracts/macro-integration-tests/tests/runtime/contract_ttl/contract_impl_ttl_extension.rs +97 -0
  76. package/contracts/macro-integration-tests/tests/runtime/contract_ttl/contract_trait_ttl_extension.rs +99 -0
  77. package/contracts/macro-integration-tests/tests/runtime/contract_ttl/mod.rs +3 -0
  78. package/contracts/macro-integration-tests/tests/runtime/lz_contract/mod.rs +5 -0
  79. package/contracts/macro-integration-tests/tests/runtime/lz_contract/wrapper_default.rs +86 -0
  80. package/contracts/macro-integration-tests/tests/runtime/lz_contract/wrapper_multisig.rs +47 -0
  81. package/contracts/macro-integration-tests/tests/runtime/lz_contract/wrapper_multisig_upgradeable.rs +77 -0
  82. package/contracts/macro-integration-tests/tests/runtime/lz_contract/wrapper_upgradeable.rs +114 -0
  83. package/contracts/macro-integration-tests/tests/runtime/lz_contract/wrapper_upgradeable_no_migration.rs +105 -0
  84. package/contracts/macro-integration-tests/tests/runtime/multisig/admin_entrypoints.rs +242 -0
  85. package/contracts/macro-integration-tests/tests/runtime/multisig/mod.rs +9 -0
  86. package/contracts/macro-integration-tests/tests/runtime/multisig/self_auth.rs +54 -0
  87. package/contracts/macro-integration-tests/tests/runtime/ownable/initialization.rs +13 -0
  88. package/contracts/macro-integration-tests/tests/runtime/ownable/mod.rs +1 -0
  89. package/contracts/macro-integration-tests/tests/runtime/ownable/ownership_transfer.rs +70 -1
  90. package/contracts/macro-integration-tests/tests/runtime/ownable/two_step_transfer.rs +219 -0
  91. package/contracts/macro-integration-tests/tests/runtime/storage/keyed_roundtrip.rs +41 -0
  92. package/contracts/macro-integration-tests/tests/runtime/storage/ttl_extension.rs +48 -16
  93. package/contracts/macro-integration-tests/tests/runtime/storage/unkeyed_roundtrip.rs +10 -0
  94. package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/configuration.rs +96 -3
  95. package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/freeze.rs +4 -0
  96. package/contracts/macro-integration-tests/tests/runtime/ttl_extendable/extend_instance_ttl.rs +64 -0
  97. package/contracts/macro-integration-tests/tests/runtime/ttl_extendable/mod.rs +16 -0
  98. package/contracts/macro-integration-tests/tests/runtime/upgradeable/migrate_guard_and_state.rs +305 -0
  99. package/contracts/macro-integration-tests/tests/runtime/upgradeable/mod.rs +3 -0
  100. package/contracts/macro-integration-tests/tests/runtime/upgradeable/no_migration.rs +59 -0
  101. package/contracts/macro-integration-tests/tests/runtime/upgradeable/upgrade_then_migrate.rs +88 -0
  102. package/contracts/macro-integration-tests/tests/runtime.rs +5 -0
  103. package/contracts/macro-integration-tests/tests/ui/contract_impl/fail/not_impl_item.rs +6 -0
  104. package/contracts/macro-integration-tests/tests/ui/contract_impl/fail/not_impl_item.stderr +7 -0
  105. package/contracts/macro-integration-tests/tests/ui/contract_impl/pass/basic.rs +102 -0
  106. package/contracts/macro-integration-tests/tests/ui/contract_trait/fail/not_a_trait.rs +6 -0
  107. package/contracts/macro-integration-tests/tests/ui/contract_trait/fail/not_a_trait.stderr +7 -0
  108. package/contracts/macro-integration-tests/tests/ui/contract_trait/pass/basic.rs +83 -0
  109. package/contracts/macro-integration-tests/tests/ui/error/fail/discriminant_too_large.rs +11 -0
  110. package/contracts/macro-integration-tests/tests/ui/error/fail/discriminant_too_large.stderr +7 -0
  111. package/contracts/macro-integration-tests/tests/ui/error/fail/non_enum_input.rs +11 -0
  112. package/contracts/macro-integration-tests/tests/ui/error/fail/non_enum_input.stderr +7 -0
  113. package/contracts/macro-integration-tests/tests/ui/error/pass/basic.rs +22 -0
  114. package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/invalid_option.rs +6 -0
  115. package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/invalid_option.stderr +7 -0
  116. package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/multisig_rejects_ownable_api.rs +20 -0
  117. package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/multisig_rejects_ownable_api.stderr +20 -0
  118. package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/not_a_struct.rs +8 -0
  119. package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/not_a_struct.stderr +7 -0
  120. package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/upgradeable_invalid_inner_option.rs +10 -0
  121. package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/upgradeable_invalid_inner_option.stderr +7 -0
  122. package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/upgradeable_missing_internal.rs +20 -0
  123. package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/upgradeable_missing_internal.stderr +86 -0
  124. package/contracts/macro-integration-tests/tests/ui/lz_contract/pass/basic.rs +45 -0
  125. package/contracts/macro-integration-tests/tests/ui/lz_contract/pass/multisig.rs +34 -0
  126. package/contracts/macro-integration-tests/tests/ui/lz_contract/pass/multisig_upgradeable.rs +30 -0
  127. package/contracts/macro-integration-tests/tests/ui/lz_contract/pass/upgradeable.rs +39 -0
  128. package/contracts/macro-integration-tests/tests/ui/lz_contract/pass/upgradeable_no_migration.rs +28 -0
  129. package/contracts/macro-integration-tests/tests/ui/multisig/fail/non_struct_input.rs +8 -0
  130. package/contracts/macro-integration-tests/tests/ui/multisig/fail/non_struct_input.stderr +7 -0
  131. package/contracts/macro-integration-tests/tests/ui/multisig/fail/rejects_ownable_api.rs +20 -0
  132. package/contracts/macro-integration-tests/tests/ui/multisig/fail/rejects_ownable_api.stderr +12 -0
  133. package/contracts/macro-integration-tests/tests/ui/multisig/fail/rejects_ownable_trait.rs +20 -0
  134. package/contracts/macro-integration-tests/tests/ui/multisig/fail/rejects_ownable_trait.stderr +5 -0
  135. package/contracts/macro-integration-tests/tests/ui/multisig/pass/basic.rs +49 -0
  136. package/contracts/macro-integration-tests/tests/ui/ownable/fail/non_struct_input.rs +8 -0
  137. package/contracts/macro-integration-tests/tests/ui/ownable/fail/non_struct_input.stderr +7 -0
  138. package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_auth_missing_auth.rs +19 -0
  139. package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_auth_missing_auth.stderr +12 -0
  140. package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_auth_missing_env.rs +1 -1
  141. package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_auth_missing_env.stderr +0 -8
  142. package/contracts/macro-integration-tests/tests/ui/ownable/pass/basic.rs +39 -0
  143. package/contracts/macro-integration-tests/tests/ui/ownable/pass/only_auth_env_param_variants.rs +7 -1
  144. package/contracts/macro-integration-tests/tests/ui/storage/fail/invalid_storage_type_param.stderr +1 -1
  145. package/contracts/macro-integration-tests/tests/ui/storage/fail/missing_storage_type_param.stderr +1 -1
  146. package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_default_values.rs +11 -0
  147. package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_default_values.stderr +7 -0
  148. package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_name_attrs.rs +11 -0
  149. package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_name_attrs.stderr +7 -0
  150. package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_no_ttl_extension.rs +11 -0
  151. package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_no_ttl_extension.stderr +7 -0
  152. package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_type_params.stderr +1 -1
  153. package/contracts/macro-integration-tests/tests/ui/storage/fail/no_ttl_extension_rejects_args.rs +13 -0
  154. package/contracts/macro-integration-tests/tests/ui/storage/fail/no_ttl_extension_rejects_args.stderr +7 -0
  155. package/contracts/macro-integration-tests/tests/ui/storage/pass/api_surface.rs +102 -0
  156. package/contracts/macro-integration-tests/tests/ui/storage/pass/basic.rs +43 -0
  157. package/contracts/macro-integration-tests/tests/ui/storage/pass/multi_key.rs +38 -0
  158. package/contracts/macro-integration-tests/tests/ui/ttl_configurable/fail/missing_auth_trait.rs +14 -0
  159. package/contracts/macro-integration-tests/tests/ui/ttl_configurable/fail/missing_auth_trait.stderr +71 -0
  160. package/contracts/macro-integration-tests/tests/ui/ttl_configurable/fail/non_struct_input.rs +8 -0
  161. package/contracts/macro-integration-tests/tests/ui/ttl_configurable/fail/non_struct_input.stderr +7 -0
  162. package/contracts/macro-integration-tests/tests/ui/ttl_configurable/pass/{minimal_contract.rs → basic.rs} +2 -0
  163. package/contracts/macro-integration-tests/tests/ui/ttl_configurable/pass/multisig_contract.rs +28 -0
  164. package/contracts/macro-integration-tests/tests/ui/ttl_configurable/pass/ownable_contract.rs +32 -0
  165. package/contracts/macro-integration-tests/tests/ui/ttl_extendable/fail/non_struct_input.rs +8 -0
  166. package/contracts/macro-integration-tests/tests/ui/ttl_extendable/fail/non_struct_input.stderr +7 -0
  167. package/contracts/macro-integration-tests/tests/ui/ttl_extendable/pass/basic.rs +23 -0
  168. package/contracts/macro-integration-tests/tests/ui/ttl_extendable/pass/no_user_contractimpl.rs +21 -0
  169. package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/attr_args.rs +11 -0
  170. package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/attr_args.stderr +29 -0
  171. package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/missing_auth_trait.rs +20 -0
  172. package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/missing_auth_trait.stderr +71 -0
  173. package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/missing_upgradeable_internal.rs +10 -0
  174. package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/missing_upgradeable_internal.stderr +79 -0
  175. package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/non_struct_input.rs +8 -0
  176. package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/non_struct_input.stderr +7 -0
  177. package/contracts/macro-integration-tests/tests/ui/upgradeable/pass/basic.rs +43 -0
  178. package/contracts/macro-integration-tests/tests/ui/upgradeable/pass/multisig_contract.rs +35 -0
  179. package/contracts/macro-integration-tests/tests/ui/upgradeable/pass/no_migration.rs +30 -0
  180. package/contracts/macro-integration-tests/tests/ui/upgradeable/pass/no_user_contractimpl.rs +29 -0
  181. package/contracts/macro-integration-tests/tests/ui_contract_impl.rs +12 -0
  182. package/contracts/macro-integration-tests/tests/ui_contract_trait.rs +12 -0
  183. package/contracts/macro-integration-tests/tests/ui_lz_contract.rs +11 -0
  184. package/contracts/macro-integration-tests/tests/ui_multisig.rs +11 -0
  185. package/contracts/macro-integration-tests/tests/ui_ttl_extendable.rs +12 -0
  186. package/contracts/macro-integration-tests/tests/ui_upgradeable.rs +11 -0
  187. package/contracts/message-libs/blocked-message-lib/Cargo.toml +1 -1
  188. package/contracts/message-libs/blocked-message-lib/src/lib.rs +4 -1
  189. package/contracts/message-libs/blocked-message-lib/src/tests/blocked_message_lib_tests.rs +108 -0
  190. package/contracts/message-libs/blocked-message-lib/src/tests/mod.rs +4 -0
  191. package/contracts/message-libs/blocked-message-lib/src/tests/setup.rs +40 -0
  192. package/contracts/message-libs/simple-message-lib/src/lib.rs +1 -1
  193. package/contracts/message-libs/simple-message-lib/src/tests/mod.rs +2 -0
  194. package/contracts/message-libs/simple-message-lib/src/tests/setup.rs +124 -0
  195. package/contracts/message-libs/simple-message-lib/src/tests/simple_message_lib_tests.rs +309 -0
  196. package/contracts/message-libs/uln-302/src/errors.rs +21 -0
  197. package/contracts/message-libs/uln-302/src/interfaces/receive_uln.rs +1 -1
  198. package/contracts/message-libs/uln-302/src/receive_uln.rs +6 -4
  199. package/contracts/message-libs/uln-302/src/send_uln.rs +15 -6
  200. package/contracts/message-libs/uln-302/src/storage.rs +5 -5
  201. package/contracts/message-libs/uln-302/src/tests/uln302/get_config.rs +71 -0
  202. package/contracts/message-libs/uln-302/src/tests/uln302/mod.rs +1 -0
  203. package/contracts/message-libs/uln-302/src/uln302.rs +3 -0
  204. package/contracts/oapps/counter/Cargo.toml +2 -0
  205. package/contracts/oapps/counter/integration_tests/mod.rs +1 -0
  206. package/contracts/oapps/counter/integration_tests/setup_sml.rs +6 -4
  207. package/contracts/oapps/counter/integration_tests/setup_uln.rs +12 -5
  208. package/contracts/oapps/counter/integration_tests/test_with_blocked.rs +67 -0
  209. package/contracts/oapps/counter/src/tests/mod.rs +1 -0
  210. package/contracts/oapps/counter/src/tests/test_u256_ext.rs +48 -0
  211. package/contracts/oapps/oapp/src/lib.rs +0 -3
  212. package/contracts/oapps/oapp/src/tests/mod.rs +1 -0
  213. package/contracts/oapps/oft/integration-tests/setup.rs +2 -3
  214. package/contracts/oapps/oft/src/lib.rs +3 -0
  215. package/contracts/oapps/oft/src/tests/extensions/mod.rs +3 -0
  216. package/contracts/oapps/oft/src/tests/extensions/oft_fee.rs +240 -0
  217. package/contracts/oapps/oft/src/tests/extensions/pausable.rs +141 -0
  218. package/contracts/oapps/oft/src/tests/extensions/rate_limiter.rs +447 -0
  219. package/contracts/oapps/oft/src/tests/mod.rs +2 -0
  220. package/contracts/oapps/oft/src/tests/oft_types/lock_unlock.rs +180 -0
  221. package/contracts/oapps/oft/src/tests/oft_types/mod.rs +1 -0
  222. package/contracts/oapps/oft-core/integration-tests/setup.rs +2 -3
  223. package/contracts/oapps/oft-core/src/lib.rs +2 -2
  224. package/contracts/oapps/oft-core/src/tests/mod.rs +1 -1
  225. package/contracts/oapps/oft-core/src/tests/{test_oft_version.rs → test_oft_version_and_approval.rs} +9 -0
  226. package/contracts/oapps/oft-core/src/tests/test_utils.rs +0 -43
  227. package/contracts/upgrader/src/tests/test_upgrader.rs +18 -0
  228. package/contracts/utils/src/auth.rs +2 -2
  229. package/contracts/utils/src/buffer_reader.rs +61 -10
  230. package/contracts/utils/src/buffer_writer.rs +35 -20
  231. package/contracts/utils/src/bytes_ext.rs +1 -2
  232. package/contracts/utils/src/errors.rs +5 -3
  233. package/contracts/utils/src/multisig.rs +59 -36
  234. package/contracts/utils/src/option_ext.rs +3 -3
  235. package/contracts/utils/src/ownable.rs +12 -6
  236. package/contracts/utils/src/tests/auth.rs +179 -0
  237. package/contracts/utils/src/tests/buffer_reader.rs +203 -1
  238. package/contracts/utils/src/tests/buffer_writer.rs +176 -5
  239. package/contracts/utils/src/tests/mod.rs +2 -0
  240. package/contracts/utils/src/tests/multisig.rs +170 -141
  241. package/contracts/utils/src/tests/option_ext.rs +1 -1
  242. package/contracts/utils/src/tests/ownable.rs +156 -161
  243. package/contracts/utils/src/tests/test_helper.rs +21 -1
  244. package/contracts/utils/src/tests/testing_utils.rs +84 -2
  245. package/contracts/utils/src/tests/ttl_configurable.rs +66 -86
  246. package/contracts/utils/src/tests/ttl_extendable.rs +64 -0
  247. package/contracts/utils/src/tests/upgradeable.rs +115 -6
  248. package/contracts/utils/src/ttl_configurable.rs +22 -12
  249. package/contracts/utils/src/ttl_extendable.rs +1 -3
  250. package/contracts/utils/src/upgradeable.rs +21 -24
  251. package/contracts/workers/dvn/src/auth.rs +1 -1
  252. package/contracts/workers/dvn/src/interfaces/dvn.rs +2 -2
  253. package/contracts/workers/dvn/src/storage.rs +1 -1
  254. package/contracts/workers/dvn/src/tests/auth.rs +136 -3
  255. package/contracts/workers/dvn/src/tests/mod.rs +0 -1
  256. package/contracts/workers/dvn/src/tests/setup.rs +4 -10
  257. package/contracts/workers/executor-helper/src/tests/executor_helper.rs +279 -0
  258. package/contracts/workers/executor-helper/src/tests/setup.rs +106 -1
  259. package/contracts/workers/worker/src/worker.rs +1 -1
  260. package/docs/oft-guide.md +5 -5
  261. package/package.json +5 -7
  262. package/sdk/.turbo/turbo-test.log +662 -466
  263. package/sdk/LICENSE +23 -0
  264. package/sdk/dist/generated/bml.d.ts +101 -106
  265. package/sdk/dist/generated/bml.js +108 -26
  266. package/sdk/dist/generated/counter.d.ts +123 -484
  267. package/sdk/dist/generated/counter.js +103 -25
  268. package/sdk/dist/generated/dvn.d.ts +141 -699
  269. package/sdk/dist/generated/dvn.js +106 -28
  270. package/sdk/dist/generated/dvn_fee_lib.d.ts +31 -248
  271. package/sdk/dist/generated/dvn_fee_lib.js +27 -24
  272. package/sdk/dist/generated/endpoint.d.ts +158 -836
  273. package/sdk/dist/generated/endpoint.js +107 -29
  274. package/sdk/dist/generated/executor.d.ts +139 -671
  275. package/sdk/dist/generated/executor.js +106 -28
  276. package/sdk/dist/generated/executor_fee_lib.d.ts +109 -264
  277. package/sdk/dist/generated/executor_fee_lib.js +106 -28
  278. package/sdk/dist/generated/executor_helper.d.ts +95 -92
  279. package/sdk/dist/generated/executor_helper.js +103 -25
  280. package/sdk/dist/generated/layerzero_view.d.ts +178 -335
  281. package/sdk/dist/generated/layerzero_view.js +172 -33
  282. package/sdk/dist/generated/oft.d.ts +137 -680
  283. package/sdk/dist/generated/oft.js +103 -25
  284. package/sdk/dist/generated/price_feed.d.ts +45 -444
  285. package/sdk/dist/generated/price_feed.js +27 -24
  286. package/sdk/dist/generated/sml.d.ts +119 -428
  287. package/sdk/dist/generated/sml.js +103 -25
  288. package/sdk/dist/generated/treasury.d.ts +109 -288
  289. package/sdk/dist/generated/treasury.js +103 -25
  290. package/sdk/dist/generated/uln302.d.ts +190 -527
  291. package/sdk/dist/generated/uln302.js +170 -31
  292. package/sdk/dist/generated/upgrader.d.ts +14 -34
  293. package/sdk/dist/generated/upgrader.js +24 -21
  294. package/sdk/package.json +3 -4
  295. package/sdk/test/counter-sml.test.ts +218 -142
  296. package/sdk/test/counter-uln.test.ts +189 -145
  297. package/sdk/test/oft-sml.test.ts +173 -156
  298. package/sdk/test/suites/constants.ts +7 -1
  299. package/sdk/test/suites/globalSetup.ts +140 -74
  300. package/sdk/turbo.json +1 -1
  301. package/tools/ts-bindings-gen/Cargo.toml +4 -4
  302. package/tools/ts-bindings-gen/src/main.rs +4 -0
  303. package/turbo.json +3 -0
  304. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__storage__snapshot_generated_storage_code.snap +0 -1072
  305. package/contracts/endpoint-v2/src/constants.rs +0 -52
  306. package/contracts/macro-integration-tests/tests/ui/error/fail/attr_not_empty.rs +0 -12
  307. package/contracts/macro-integration-tests/tests/ui/error/fail/attr_not_empty.stderr +0 -7
  308. package/contracts/macro-integration-tests/tests/ui/error/pass/attr_on_variant_allowed.rs +0 -20
  309. package/contracts/macro-integration-tests/tests/ui/error/pass/basic_auto_discriminants.rs +0 -15
  310. package/contracts/macro-integration-tests/tests/ui/error/pass/mixed_discriminants.rs +0 -16
  311. package/contracts/macro-integration-tests/tests/ui/ownable/pass/minimal_contract.rs +0 -26
  312. package/contracts/macro-integration-tests/tests/ui/ownable/pass/namespacing_and_imports.rs +0 -21
  313. package/contracts/macro-integration-tests/tests/ui/storage/fail/storage_attr_rejects_args.rs +0 -12
  314. package/contracts/macro-integration-tests/tests/ui/storage/fail/storage_attr_rejects_args.stderr +0 -7
  315. package/contracts/macro-integration-tests/tests/ui/storage/pass/default_value_on_variant.rs +0 -14
  316. package/contracts/macro-integration-tests/tests/ui/storage/pass/enum_instance_unit_basic.rs +0 -14
  317. package/contracts/macro-integration-tests/tests/ui/storage/pass/enum_persistent_named_fields_keyed.rs +0 -16
  318. package/contracts/macro-integration-tests/tests/ui/storage/pass/enum_temporary_unit_option.rs +0 -15
  319. package/contracts/macro-integration-tests/tests/ui/storage/pass/name_override.rs +0 -14
  320. package/contracts/macro-integration-tests/tests/ui/storage/pass/no_auto_ttl_extension.rs +0 -19
  321. package/contracts/macro-integration-tests/tests/ui/storage/pass/ttl_provider_basic.rs +0 -15
  322. package/contracts/message-libs/simple-message-lib/src/test.rs +0 -280
  323. package/contracts/oapps/oapp/src/macro_tests/mod.rs +0 -1
  324. package/contracts/workers/dvn/src/tests/multisig/mod.rs +0 -3
  325. package/contracts/workers/dvn/src/tests/multisig/set_signer.rs +0 -132
  326. package/contracts/workers/dvn/src/tests/multisig/set_threshold.rs +0 -109
  327. package/contracts/workers/dvn/src/tests/multisig/verify_signatures.rs +0 -106
  328. /package/contracts/oapps/oapp/src/{macro_tests → tests}/test_macros.rs +0 -0
@@ -6,14 +6,14 @@ export * as contract from '@stellar/stellar-sdk/contract';
6
6
  export * as rpc from '@stellar/stellar-sdk/rpc';
7
7
  /**
8
8
  * Embedded WASM bytecode (base64-encoded)
9
- * Size: 40336 bytes (39.39 KB)
9
+ * Size: 40680 bytes (39.73 KB)
10
10
  */
11
- export declare const WASM_BASE64 = "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IAKtQiCGQgSEEICAgIAAGgviAwIBfwJ+I4CAgIAAQTBrIgEkgICAgAACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAOBwABAgMEBQYACyABQQhqQYCAwIAAQQMQ1oCAgAAgASgCCA0IIAFBCGogASkDEBDXgICAAAwGCyABQSBqQYOAwIAAQRAQ1oCAgAAgASgCIA0HIAEgASkDKDcDCCABIAApAwg3AxggASAANQIEQiCGQgSENwMQIAFBIGogAUEIahDYgICAACABKQMoIQIgASkDICEDDAYLIAFBCGpBk4DAgABBDBDWgICAACABKAIIDQYgAUEIaiABKQMQENeAgIAADAQLIAFBCGpBn4DAgABBBRDWgICAACABKAIIDQUgAUEIaiABKQMQENeAgIAADAMLIAFBCGpBpIDAgABBDRDWgICAACABKAIIDQQgAUEIaiABKQMQENeAgIAADAILIAFBCGpBsYDAgABBDBDWgICAACABKAIIDQMgAUEIaiABKQMQIAA1AgRCIIZCBIQQ2YCAgAAMAQsgAUEIakG9gMCAAEENENaAgIAAIAEoAggNAiABQQhqIAEpAxAgADUCBEIghkIEhBDZgICAAAsgASkDECECIAEpAwghAwsgA1ANAQsACyABQTBqJICAgIAAIAILdAIBfwJ+I4CAgIAAQRBrIgIkgICAgABCACEDAkACQCABEKuAgIAAIgRCARCtgICAAEUNACACIARCARCBgICAABCugICAACACKAIAQQFGDQEgACACKQMINwMIQgEhAwsgACADNwMAIAJBEGokgICAgAAPCwALDwAgACABEKKAgIAAQgFRC10CAX8BfgJAAkAgAadB/wFxIgJBwABGDQACQCACQQZGDQBCASEDQoOQgICAASEBDAILIAFCCIghAUIAIQMMAQtCACEDIAEQlICAgAAhAQsgACADNwMAIAAgATcDCAsOACAAIAFCARCwgICAAAsbACAAEKuAgIAAIAEQsYCAgAAgAhCCgICAABoLQQEBfyOAgICAAEEQayIBJICAgIAAIAEgABCjgYCAAAJAIAEoAgBBAUcNAAALIAEpAwghACABQRBqJICAgIAAIAALdAIBfwJ+I4CAgIAAQRBrIgIkgICAgABCACEDAkACQCABEKuAgIAAIgRCAhCtgICAAEUNACACIARCAhCBgICAABCugICAACACKAIAQQFGDQEgACACKQMINwMIQgEhAwsgACADNwMAIAJBEGokgICAgAAPCwALDgAgACABQgIQsICAgAALnwUBAX8jgICAgABB8ABrIgokgICAgAAQtYCAgAAQtoCAgAAgBBC1gICAACAFIAYQqYCAgAACQAJAIAcgCIRCAFENACAKQcAAahC1gICAAEKO6PcfEIOAgIAAEISAgIAAELeAgIAAIAopA0AiBkICUQ0BAkAgBqdBAXFFDQAgCikDSCAEELWAgIAAIAcgCBCpgICAAAwBC0KDgICAsPoBELiAgIAAAAsgCkHAAGogARC5gICAACAKKQNIIQQgCikDQBC6gICAABC1gICAACEGEIWAgIAAIQUgCiAHQgBSIAhCAFUgCFAbOgAkIAogAzcDGCAKIAI3AxAgCiAENwMIIAogATYCICAKQQhqELuAgIAAIQggCiAJNwM4IAogCDcDMCAKIAU3AyhBACEBA0ACQCABQRhHDQBBACEBAkADQCABQRhGDQEgCkHAAGogAWogCkEoaiABaikDADcDACABQQhqIQEMAAsLIAZCjtKzlQ4gCkHAAGpBAxCngICAABCEgICAACEIQQAhAQJAA0AgAUEYRg0BIApBKGogAWpCAjcDACABQQhqIQEMAAsLIAhC/wGDQswAUg0CIAhB7IHAgABBAyAKQShqQQMQvICAgAAgCkHAAGogCikDKBC9gICAACAKKAJAQQFxDQIgCikDaCEIIAopA2AhByAKKQNYIQQgCikDUCEGIApBwABqIAopAzAQvoCAgAAgCigCQA0CIAopA0ghBSAKQcAAaiAKKQM4EK6AgIAAIAooAkBBAUYNAiAKKQNIIQkgACAHNwMQIAAgBjcDACAAIAk3AyggACAFNwMgIAAgCDcDGCAAIAQ3AwggCkHwAGokgICAgAAPCyAKQcAAaiABakICNwMAIAFBCGohAQwACwsQv4CAgAAAC4cBAgF/AX4jgICAgABBEGsiACSAgICAACAAQQRqEMGAgIAAAkAgACgCBEEBRw0AIAAoAgggACgCDBDCgICAAAsCQAJAQQAgABDGgICAACIBQgIQrYCAgABFDQAgAUICEIGAgIAAIgFC/wGDQs0AUQ0BAAsQyICAgAAACyAAQRBqJICAgIAAIAELNgACQCAAQYSCwIAAQQwQ84CAgAAQg4CAgAAQhICAgAAiAEL/AYNCzQBRDQAQv4CAgAAACyAACzkAAkAgAUICUQ0AAkAgAUL/AYNCzQBRDQAgAEICNwMADwsgACABNwMIIABCATcDAA8LIABCADcDAAsLACAAEKSAgIAAGgvGAQIBfwF+I4CAgIAAQRBrIgIkgICAgAAgAhDBgICAAAJAIAIoAgBBAUcNACACKAIEIAIoAggQwoCAgAALAkACQAJAQQEgARDGgICAACIDQgEQrYCAgABFDQAgAiADQgEQgYCAgAAQvoCAgAAgAigCAEEBRw0BAAsgAEIANwMADAELIAIpAwghAyAAQgE3AwAgACADNwMIIAIQxICAgAAgAigCAEEBRw0AIAEgAigCBCACKAIIEMeAgIAACyACQRBqJICAgIAACx4AAkAgAKdBAXFFDQAPC0KDgICAkPoBELiAgIAAAAtzAgF/AX4jgICAgABBMGsiASSAgICAACABIAApAwA3AyggASAAMQAcNwMgIAEgACkDEDcDGCABIAApAwg3AxAgASAANQIYQiCGQgSENwMIQeyAwIAAQQUgAUEIakEFEPWAgIAAIQIgAUEwaiSAgICAACACCzEAAkAgAiAERg0AAAsgACABrUIghkIEhCADrUIghkIEhCACrUIghkIEhBCdgICAABoL7wECAn8DfiOAgICAAEEwayICJICAgIAAQQAhAwJAA0AgA0EQRg0BIAIgA2pCAjcDACADQQhqIQMMAAsLQgAhBEIBIQUCQCABQv8Bg0LMAFINACABQdSBwIAAQQIgAkECELyAgIAAIAJBEGogAikDABCigYCAACACKAIQQQFGDQAgAikDKCEBIAIpAyAhBiACQRBqIAIpAwgQooGAgAAgAigCEEEBRg0AIAIpAyAhBCAAIAIpAyg3AyggACAENwMgIAAgATcDGCAAIAY3AxBCACEFQgAhBAsgACAFNwMAIAAgBDcDCCACQTBqJICAgIAAC0IBAX5CASECAkAgAUL/AYNCyABSDQAgARCIgICAAEKAgICAcINCgICAgIAEUg0AIAAgATcDCEIAIQILIAAgAjcDAAsJABDKgICAAAALvQEEAX8BfgF/AX4jgICAgABBEGsiAiSAgICAACACQQRqEMGAgIAAAkAgAigCBEEBRw0AIAIoAgggAigCDBDCgICAAAsCQAJAIAAgARDDgICAACIDQgEQrYCAgAAiBEUNACADQgEQgYCAgAAiBUL/AYNCyABSDQEgAkEEahDEgICAACACKAIEQQFHDQAgACABIAIoAgggAigCDBDFgICAAAsQhoCAgAAhAyACQRBqJICAgIAAIAUgAyAEGw8LAAsMACAAQQEQrIGAgAALGwAgAK1CIIZCBIQgAa1CIIZCBIQQo4CAgAAaC4oBAgF/AX4jgICAgABBMGsiAiSAgICAACACQSBqQYCDwIAAQQ8Q1oCAgAACQAJAIAIoAiANACACIAIpAyg3AwggAiABrUIghkIEhDcDGCACIACtQiCGQgSENwMQIAJBIGogAkEIahDYgICAACACKAIgRQ0BCwALIAIpAyghAyACQTBqJICAgIAAIAMLDAAgAEECEKyBgIAACycAIAAgARDDgICAAEIBIAKtQiCGQgSEIAOtQiCGQgSEEICAgIAAGgubAQIBfwF+I4CAgIAAQRBrIgIkgICAgAACQAJAAkACQCAAQQFxRQ0AIAJBvYLAgABBBBDWgICAACACKAIADQIgAiACKQMIIAGtQiCGQgSEENmAgIAADAELIAJBtYLAgABBCBDWgICAACACKAIADQEgAiACKQMIENeAgIAACyACKQMIIQMgAikDAFANAQsACyACQRBqJICAgIAAIAMLJwBBASAAEMaAgIAAQgEgAa1CIIZCBIQgAq1CIIZCBIQQgICAgAAaCwkAEL+AgIAAAAscAAJAIABBf2pB/wFxQQRJDQAQyoCAgAAACyAACwMAAAuLAQICfwF+I4CAgIAAQRBrIgAkgICAgAAgAEEEahDBgICAAAJAIAAoAgRBAUcNACAAKAIIIAAoAgwQwoCAgAALQQAhAQJAQQAQzICAgAAiAkICEK2AgIAARQ0AQQEhAQJAAkAgAkICEIGAgIAAp0H/AXEOAgECAAsAC0EAIQELIABBEGokgICAgAAgAQvCAQIBfwF+I4CAgIAAQRBrIgEkgICAgAACQAJAAkACQAJAAkAgAEH/AXEOAwABAgALIAFBwoXAgABBBhDWgICAACABKAIADQMgASABKQMIENeAgIAADAILIAFByIXAgABBCBDWgICAACABKAIADQIgASABKQMIENeAgIAADAELIAFB0IXAgABBChDWgICAACABKAIADQEgASABKQMIENeAgIAACyABKQMIIQIgASkDAFANAQsACyABQRBqJICAgIAAIAILDwAQzoCAgAAQh4CAgAAaC2YCAX8BfiOAgICAAEEQayIAJICAgIAAIAAQwYCAgAACQCAAKAIAQQFHDQAgACgCBCAAKAIIEMKAgIAACyAAENCAgIAAIAApAwghASAAKQMAQYoIENGAgIAAIABBEGokgICAgAAgAQtKAgF/AX4jgICAgABBEGsiACSAgICAACAAENCAgIAAIAApAwghASAAKQMAQYoIENGAgIAAIAEQh4CAgAAaIABBEGokgICAgAAgAQtQAQF/I4CAgIAAQRBrIgEkgICAgAAgAUEEahDBgICAAAJAIAEoAgRBAUcNACABKAIIIAEoAgwQwoCAgAALIAAQ1YCAgAAgAUEQaiSAgICAAAspAAJAIACnQQFxRQ0ADwsgAUH6d2qtQiCGQoOAgIDggAF8ELiAgIAAAAtCAQF/I4CAgIAAQRBrIgAkgICAgAAgABDTgICAAAJAIAApAwBQDQBCg4CAgLCBARC4gICAAAALIABBEGokgICAgAALkwECAX8CfiOAgICAAEEQayIBJICAgIAAIAFBBGoQwYCAgAACQCABKAIEQQFHDQAgASgCCCABKAIMEMKAgIAAC0IAIQICQAJAQQEQ1ICAgAAiA0IAEK2AgIAARQ0AIANCABCBgICAACICQv8Bg0LNAFINASAAIAI3AwhCASECCyAAIAI3AwAgAUEQaiSAgICAAA8LAAuSAQIBfwF+I4CAgIAAQRBrIgEkgICAgAACQAJAAkACQCAAQQFxRQ0AIAFB1YTAgABBDBDWgICAACABKAIADQIgASABKQMIENeAgIAADAELIAFB0ITAgABBBRDWgICAACABKAIADQEgASABKQMIENeAgIAACyABKQMIIQIgASkDAFANAQsACyABQRBqJICAgIAAIAILTQECfkIAIQECQAJAQQAQ1ICAgAAiAkICEK2AgIAARQ0AIAJCAhCBgICAACIBQv8Bg0LNAFINASAAIAE3AwhCASEBCyAAIAE3AwAPCwALUQIBfwF+I4CAgIAAQRBrIgMkgICAgAAgAyABIAIQqYGAgABCASEEAkAgAygCAA0AIAAgAykDCDcDCEIAIQQLIAAgBDcDACADQRBqJICAgIAAC0QBAX8jgICAgABBEGsiAiSAgICAACACIAE3AwggAkEIakEBEKeAgIAAIQEgAEIANwMAIAAgATcDCCACQRBqJICAgIAAC10CAX8BfiOAgICAAEEgayICJICAgIAAIAIgASkDEDcDGCACIAEpAwg3AxAgAiABKQMANwMIIAJBCGpBAxCngICAACEDIABCADcDACAAIAM3AwggAkEgaiSAgICAAAtIAQF/I4CAgIAAQRBrIgMkgICAgAAgAyACNwMIIAMgATcDACADQQIQp4CAgAAhAiAAQgA3AwAgACACNwMIIANBEGokgICAgAALnwECAX8BfiOAgICAAEEQayICJICAgIAAEIaAgIAAIQMgAiAAOgALIAMgAxCIgICAAEKAgICAcINCBIQgAkELakEBENuAgIAAIQMgAiABQRh0IAFBgP4DcUEIdHIgAUEIdkGA/gNxIAFBGHZycjYCDCADIAMQiICAgABCgICAgHCDQgSEIAJBDGpBBBDbgICAACEDIAJBEGokgICAgAAgAwseACAAIAEgAq1CIIZCBIQgA61CIIZCBIQQmoCAgAALMQACQCAAEIiAgIAAQv////8PVg0AEN2AgIAAAAsgAEIEEImAgIAAQiCIpxDJgICAAAsJABDKgICAAAALqQMCAX8CfiOAgICAAEEgayICJICAgIAAQgwhAwJAIAFBBSABEIiAgIAAQiCIpxDfgICAACIBEIiAgIAAQoCAgIAQVA0AIAEQioCAgAAhAwsgAkEPaiADEIuAgIAAIgFCBEKEgICAgAIQjICAgAAQ4ICAgAACQAJAIAItAA9BAUYNACACKQAYIQMgAikAECEEIAJBD2ogAUKEgICAgAJChICAgIAEEIyAgIAAEOCAgIAAIAItAA9BAUYNACAEIAOEQgBSDQEgAikAECIBQjiGIAFCgP4Dg0IohoQgAUKAgPwHg0IYhiABQoCAgPgPg0IIhoSEIAFCCIhCgICA+A+DIAFCGIhCgID8B4OEIAFCKIhCgP4DgyABQjiIhISEIgNCf1cNASAAIAIpABgiAUI4hiABQoD+A4NCKIaEIAFCgID8B4NCGIYgAUKAgID4D4NCCIaEhCABQgiIQoCAgPgPgyABQhiIQoCA/AeDhCABQiiIQoD+A4MgAUI4iISEhDcDACAAIAM3AwggAkEgaiSAgICAAA8LEL+AgIAAAAtCg4CAgCAQuICAgAAACxwAIAAgAa1CIIZCBIQgAq1CIIZCBIQQjICAgAAL2QECA38BfiOAgICAAEEQayICJICAgIAAQQEhAwJAIAEQiICAgABCgICAgHCDQoCAgICAAlINACACQQhqQgA3AwAgAkIANwMAIABBAWohBEEAIQMCQANAIAEQiICAgABCgICAgBBUDQEgARCfgICAACEFIAFBARCNgYCAACEBAkAgA0EQRg0AIAIgA2ogBUIgiDwAACADQQFqIQMMAQsLQRAQqIGAgAAACyAEIAIpAwA3AAAgBEEIaiACQQhqKQMANwAAQQAhAwsgACADOgAAIAJBEGokgICAgAAL7wICAX8BfiOAgICAAEEwayICJICAgIAAEIaAgIAAIQMgAkGABjsBECADIAMQiICAgABCgICAgHCDQgSEIAJBEGpBAhDbgICAAEKEgICAEBCNgICAACEDIAJCgICAgIDgwIbAADcDCCACQgA3AwAgAiAAQjiGNwMYIAJCADcDEAJAAkAgACABhEIAUg0AIAJBgCI7AS4gAyADEIiAgIAAQoCAgIBwg0IEhCACQS5qQQIQ24CAgABChICAgBAQjYCAgAAhACAAIAAQiICAgABCgICAgHCDQgSEIAJBEBDbgICAACEADAELIAJBgMIAOwEuIAMgAxCIgICAAEKAgICAcINCBIQgAkEuakECENuAgIAAQoSAgIAQEI2AgIAAIQAgACAAEIiAgIAAQoCAgIBwg0IEhCACQRAQ24CAgAAhACAAIAAQiICAgABCgICAgHCDQgSEIAJBEGpBEBDbgICAACEACyACQTBqJICAgIAAIAALXgIBfwF+I4CAgIAAQRBrIgIkgICAgAAgAiAAEN6AgIAAAkAgASkDACACKQMAWiABKQMIIgAgAikDCCIDWSAAIANRGw0AQoOAgIAwELiAgIAAAAsgAkEQaiSAgICAAAuFAQIBfwF+I4CAgIAAQTBrIgIkgICAgAAgAiABNwMIIAIgADYCBCACQQE2AgAgAkEQaiACEKyAgIAAAkAgAikDECIBUA0AIAJBJGoQxICAgAAgAigCJEUNACACIAIoAiggAigCLBCqgICAAAsgAikDGCEDIAJBMGokgICAgAAgA0IAIAGnGwtpAQF/I4CAgIAAQSBrIgMkgICAgAAgAyABNwMIIAMgADYCBCADQQE2AgAgAyACEK+AgIAAIANBFGoQxICAgAACQCADKAIUQQFHDQAgAyADKAIYIAMoAhwQqoCAgAALIANBIGokgICAgAALagICfwF+I4CAgIAAQRBrIgAkgICAgAAgAEECNgIAQQAhAQJAIAAQq4CAgAAiAkICEK2AgIAARQ0AQQEhAQJAAkAgAkICEIGAgIAAp0H/AXEOAgECAAsAC0EAIQELIABBEGokgICAgAAgAQtiAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEGNgIAIAIgADYCBCACIAEQr4CAgAAgAkEUahDEgICAAAJAIAIoAhRBAUcNACACIAIoAhggAigCHBCqgICAAAsgAkEgaiSAgICAAAsIABDOgICAAAs+AgF/AX4jgICAgABBEGsiACSAgICAACAAENCAgIAAIAApAwAgACkDCBDpgICAACEBIABBEGokgICAgAAgAQsNACABQgIgAKdBAXEbCz4CAX8BfiOAgICAAEEQayIAJICAgIAAIAAQ04CAgAAgACkDACAAKQMIEOmAgIAAIQEgAEEQaiSAgICAACABC30CAX8BfiOAgICAAEEQayIBJICAgIAAAkAgAEL/AYNCzQBSDQAgAUEEahDBgICAAAJAIAEoAgRBAUcNACABKAIIIAEoAgwQwoCAgAALEM+AgIAAIQIQ0oCAgAAgABDsgICAACACIAAQ7YCAgAAgAUEQaiSAgICAAEICDwsACw4AQQAgAEICEPKAgIAAC2ECAX8BfiOAgICAAEEQayICJICAgIAAQcmDwIAAQRUQ84CAgAAQ9ICAgAAhAyACIAA3AwggAiABNwMAIANB8IPAgABBAiACQQIQ9YCAgAAQjoCAgAAaIAJBEGokgICAgAAL3AICAX8CfiOAgICAAEEgayICJICAgIAAAkACQAJAIABC/wGDQs0AUg0AIAFC/wGDQgRSDQAgAkEIahDBgICAAAJAIAIoAghBAUcNACACKAIMIAIoAhAQwoCAgAALEM+AgIAAIQMCQAJAIAFC/////w9WDQAgAkEIahDTgICAACACKQMQIQEgAikDCEGICBDRgICAACABIAAQ74CAgABFDQMQ8ICAgAAMAQsQ8YCAgAAgAUIgiKdJDQNBASAAQgAQ8oCAgABBARDUgICAAEIAIAFChICAgHCDIgEgARCAgICAABpBgITAgABBFhDzgICAABD0gICAACEEIAIgATcDGCACIAM3AxAgAiAANwMIIARBnITAgABBAyACQQhqQQMQ9YCAgAAQjoCAgAAaCyACQSBqJICAgIAAQgIPCwALQoOAgIDggAEQuICAgAAAC0KDgICA8IABELiAgIAAAAsNACAAIAEQnoCAgABQCxMAQQEQ1ICAgABCABCPgICAABoLMwECfhCggICAACEAAkAQoYCAgABCIIgiASAAQiCIIgBUDQAgAacgAKdrDwsQv4CAgAAACxUAIAAQ1ICAgAAgASACEIKAgIAAGgtFAgF/AX4jgICAgABBEGsiAiSAgICAACACIAAgARCpgYCAAAJAIAIoAgBBAUcNAAALIAIpAwghAyACQRBqJICAgIAAIAMLYwMBfwF+AX8jgICAgABBEGsiASSAgICAACABIAA3AwBCAiECQQEhAwJAA0AgA0UNASADQX9qIQMgACECDAALCyABIAI3AwggAUEIakEBEKeAgIAAIQAgAUEQaiSAgICAACAACy4AAkAgASADRg0AAAsgAK1CIIZCBIQgAq1CIIZCBIQgAa1CIIZCBIQQnICAgAALpwECAX8CfiOAgICAAEEQayIAJICAgIAAIAAQwYCAgAACQCAAKAIAQQFHDQAgACgCBCAAKAIIEMKAgIAACyAAENOAgIAAIAApAwghASAAKQMAQYgIENGAgIAAIAEQh4CAgAAaIAAQ1YCAgAACQCAAKAIADQAQyICAgAAACyAAKQMIIQIQ8ICAgAAgARDsgICAACACIAEQ7YCAgAAgAEEQaiSAgICAAEICC6ABAgF/An4jgICAgABBEGsiACSAgICAACAAEMGAgIAAAkAgACgCAEEBRw0AIAAoAgQgACgCCBDCgICAAAsQz4CAgAAhARDSgICAAEEAENSAgIAAQgIQj4CAgAAaQbSEwIAAQRMQ84CAgAAQ9ICAgAAhAiAAIAE3AwAgAkHIhMCAAEEBIABBARD1gICAABCOgICAABogAEEQaiSAgICAAEICCzEAAkAgAEL/AYNCBFINACABQv8Bg0IEUg0AIABCIIinIAFCIIinEMKAgIAAQgIPCwAL3gQBBX8jgICAgABB0ABrIgIkgICAgAAgAkEoaiAAEPqAgIAAAkAgAigCKEECRg0AIAJBCGpBCGogAkEoakEIaiIDKAIANgIAIAIgAikCKDcDCCACQShqIAEQ+oCAgAAgAigCKEECRg0AIAJBGGpBCGogAygCADYCACACIAIpAig3AxggAkEoahDBgICAAAJAIAIoAihBAUcNACACKAIsIAIoAjAQwoCAgAALEM2AgIAAAkACQAJAEMuAgIAADQAQ8YCAgAAiA0GA+4ADIANBgPuAA0kbIQQgAiACQRhqNgIsIAIgAkEIajYCKEEAIQMDQCADQQhGDQMCQCACQShqIANqKAIAIgUoAgBBAXFFDQAgBSgCCCIGIARLDQMgBSgCBCAGSw0DCyADQQRqIQMMAAsLQoOAgIDQ/wAQuICAgAAAC0KDgICAwP8AELiAgIAAAAsCQAJAIAIoAghBAUcNACACKAIMIAIoAhAQ+4CAgAAMAQtBARDMgICAAEICEI+AgIAAGgsCQAJAIAIoAhhBAUcNACACKAIcIAIoAiAQ/ICAgAAMAQtBAhDMgICAAEICEI+AgIAAGgsgAkEoakEIaiACQQhqQQhqKAIANgIAIAJBPGogAkEYakEIaigCADYCACACIAIpAwg3AyggAiACKQMYNwI0QfyEwIAAQQ8Q84CAgAAQ9ICAgAAhACACQShqEP2AgIAAIQEgAiACQTRqEP2AgIAANwNIIAIgATcDQCAAQaCFwIAAQQIgAkHAAGpBAhD1gICAABCOgICAABogAkHQAGokgICAgABCAg8LAAtoAQF/I4CAgIAAQRBrIgIkgICAgAACQAJAIAFCAlENACACQQRqIAEQqoGAgAACQCACKAIERQ0AIABBAjYCAAwCCyAAIAIpAgg3AgQgAEEBNgIADAELIABBADYCAAsgAkEQaiSAgICAAAsOAEEBIAAgARCtgYCAAAsOAEECIAAgARCtgYCAAAtDAgF/AX4jgICAgABBEGsiASSAgICAACABIAAQ/4CAgAACQCABKAIAQQFHDQAACyABKQMIIQIgAUEQaiSAgICAACACC8IBAgJ/AX4jgICAgABBwABrIgAkgICAgAAgAEEIahDBgICAAAJAIAAoAghBAUcNACAAKAIMIAAoAhAQwoCAgAALIABBCGoQwYCAgAAgAEEUaiIBEMSAgIAAIABBMGogAEEIahD/gICAAAJAAkAgACgCMA0AIAApAzghAiAAQTBqIAEQ/4CAgAAgACgCMEEBRw0BCwALIAAgACkDODcDKCAAIAI3AyAgAEEgakECEKeAgIAAIQIgAEHAAGokgICAgAAgAgswAAJAIAEoAgBBAUcNACAAIAEoAgQgASgCCBCrgYCAAA8LIABCADcDACAAQgI3AwgLqgEBAX8jgICAgABBIGsiACSAgICAACAAQQxqEMGAgIAAAkAgACgCDEEBRw0AIAAoAhAgACgCFBDCgICAAAsQzYCAgAACQBDLgICAAEUNAEKDgICA4P8AELiAgIAAAAtBABDMgICAAEIBQgIQgoCAgAAaQbCFwIAAQRIQ84CAgAAQ9ICAgABBBEEAIABBGGpBABD1gICAABCOgICAABogAEEgaiSAgICAAEICCwkAEMuAgIAArQueAQIBfwF+I4CAgIAAQSBrIgAkgICAgAAgAEEQahDBgICAAAJAIAAoAhBBAUcNACAAKAIUIAAoAhgQwoCAgAALIABBEGoQg4GAgAACQAJAIAAoAhANACAAKQMYIQEgAEEQahCDgYCAACAAKAIQQQFHDQELAAsgACAAKQMYNwMIIAAgATcDACAAQQIQp4CAgAAhASAAQSBqJICAgIAAIAELDAAgAEIBEKOBgIAACwgAELWAgIAAC1EBAX8jgICAgABBEGsiASSAgICAAAJAIABC/wGDQgRRDQAACyABIABCIIinELmAgIAAIAEpAwAgASkDCBDpgICAACEAIAFBEGokgICAgAAgAAu6AgQBfwF+AX8BfiOAgICAAEEQayICJICAgIAAAkAgAEL/AYNCBFINAAJAAkAgAUICUg0AQgAhAQwBCyACIAEQvoCAgAAgAigCAEEBRg0BIAIpAwghA0IBIQELEM2AgIAAIAIQwYCAgAACQCACKAIAQQFHDQAgAigCBCACKAIIEMKAgIAAC0EBIABCIIinIgQQxoCAgAAhBQJAAkAgAVANACAFIANCARCCgICAABogAhDEgICAACACKAIAQQFHDQEgBCACKAIEIAIoAggQx4CAgAAMAQsgBUIBEI+AgIAAGgtCjvKqvPDWqusAEPSAgIAAIQUgAiABIAMQ6YCAgAA3AwggAiAAQoSAgIBwgzcDACAFQciCwIAAQQIgAkECEPWAgIAAEI6AgIAAGiACQRBqJICAgIAAQgIPCwALhwECAX8BfiOAgICAAEEQayIBJICAgIAAIAEgABC3gICAAAJAIAEpAwAiAEICUQ0AIAEpAwghAhDNgICAACABEMGAgIAAAkAgASgCAEEBRw0AIAEoAgQgASgCCBDCgICAAAsQtYCA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ARCsgICAAAJAIAEpAxAiAlANACABQSRqEMSAgIAAIAEoAiRBAUcNACABIAEoAiggASgCLBCqgICAAAsgASkDGCEDIAFBMGokgICAgAAgA0IAIAKnGwuLAQECfyOAgICAAEEQayIBJICAgIAAAkBBASAAp0H/AXEiAkEAR0EBdCACQQFGGyICQQJGDQAQzYCAgAAgARDBgICAAAJAIAEoAgBBAUcNACABKAIEIAEoAggQwoCAgAALIAFBAjYCACABEKuAgIAAIAKtQgIQgoCAgAAaIAFBEGokgICAgABCAg8LAAuVAwUBfwF+AX8BfgF/I4CAgIAAQdAAayIDJICAgIAAAkAgAEL/AYNCBFINACADQShqIAEQvoCAgAAgAygCKEEBRg0AIAMpAzAhASADQShqIAIQroCAgAAgAygCKEEBRg0AIABCIIghAiADKQMwIQQQzYCAgAAgA0EoahDBgICAAAJAIAMoAihBAUcNACADKAIsIAMoAjAQwoCAgAALIAKnIQUQhYCAgAAhAhC1gICAACEGIAMgBBCxgICAADcDICADIAE3AxggAyAAQoSAgIBwgzcDECADIAI3AwggAyACNwMAQQAhBwJAA0ACQCAHQShHDQBBACEHAkADQCAHQShGDQEgA0EoaiAHaiADIAdqKQMANwMAIAdBCGohBwwACwsgBkKO6q6YDiADQShqQQUQp4CAgAAQqICAgAACQBDlgICAAEUNACAFIAEQ44CAgABCAXwiAFANAyAFIAEgABDkgICAAAsgA0HQAGokgICAgABCAg8LIANBKGogB2pCAjcDACAHQQhqIQcMAAsLEL+AgIAAAAsACw8AEJCBgIAArUIghkIEhAsOABCYgYCAABCxgICAAAtzAgJ/AX4jgICAgABBIGsiACSAgICAACAAQRBqEMGAgIAAAkAgACgCEEEBRw0AIAAoAhQgACgCGBDCgICAAAsgAEEDNgIAIABBEGogABCygICAACAAKAIQIQEgACkDGCECIABBIGokgICAgAAgAkIAIAEbCw4AEJqBgIAAELGAgIAAC3MCAn8BfiOAgICAAEEgayIAJICAgIAAIABBEGoQwYCAgAACQCAAKAIQQQFHDQAgACgCFCAAKAIYEMKAgIAACyAAQQQ2AgAgAEEQaiAAELKAgIAAIAAoAhAhASAAKQMYIQIgAEEgaiSAgICAACACQgAgARsLIwACQCAAQv8Bg0IEUQ0AAAsgAEIgiKcQnIGAgAAQsYCAgAALqAECAX8CfiOAgICAAEEwayIBJICAgIAAIAFBEGoQwYCAgAACQCABKAIQQQFHDQAgASgCFCABKAIYEMKAgIAACyABQQU2AgAgASAANgIEIAFBEGogARCsgICAAAJAIAEpAxAiAlANACABQSRqEMSAgIAAIAEoAiRBAUcNACABIAEoAiggASgCLBCqgICAAAsgASkDGCEDIAFBMGokgICAgAAgA0IAIAKnGwsjAAJAIABC/wGDQgRRDQAACyAAQiCIpxCTgYCAABCxgICAAAuuAQIBfwF+I4CAgIAAQRBrIgIkgICAgAACQAJAIABC/wGDQgRSDQAgAiABEL6AgIAAIAIoAgBBAUYNACACKQMIIQMgAhDBgICAAAJAIAIoAgBBAUcNACACKAIEIAIoAggQwoCAgAALQgAhAQJAEOWAgIAARQ0AIABCIIinIAMQ44CAgABCAXwiAVANAgsgARCxgICAACEAIAJBEGokgICAgAAgAA8LAAsQv4CAgAAAC5sBAgJ/AX4jgICAgABBIGsiASSAgICAACABIAAQoIGAgAACQCABKAIAQQFGDQAgASgCGCECIAEpAwghAyABEMGAgIAAAkAgASgCAEEBRw0AIAEoAgQgASgCCBDCgICAAAsgASACELmAgIAAQgAhAAJAIAEoAgBBAUcNACABKQMIIAMQ74CAgACtIQALIAFBIGokgICAgAAgAA8LAAviAQICfwJ+I4CAgIAAQTBrIgIkgICAgABBACEDAkADQCADQRhGDQEgAkEIaiADakICNwMAIANBCGohAwwACwtCASEEAkAgAUL/AYNCzABSDQAgAUGogcCAAEEDIAJBCGpBAxC8gICAACACQSBqIAIpAwgQroCAgAAgAigCIA0AIAIpAyghASACQSBqIAIpAxAQvoCAgAAgAigCIA0AIAIpAxgiBUL/AYNCBFINACACKQMoIQQgACABNwMQIAAgBDcDCCAAIAVCIIg+AhhCACEECyAAIAQ3AwAgAkEwaiSAgICAAAv4CAMCfwN+AX8jgICAgABB8ABrIgYkgICAgAACQAJAAkACQCAAQv8Bg0LNAFINACAGQRBqIAEQoIGAgAAgBigCEEEBRg0AIAYoAighByAGKQMgIQggBikDGCEBIAZBEGogAhC+gICAACAGKAIQQQFGDQAgA0L/AYNCyABSDQAgBEL/AYNCyABSDQAgBikDGCEJIAZBEGogBRCigYCAACAGKAIQQQFGDQAgBikDKCECIAYpAyAhBCAGQRBqEMGAgIAAAkAgBigCEEEBRw0AIAYoAhQgBigCGBDCgICAAAsQhYCAgAAhBRC1gICAACEKIAAQh4CAgAAaAkAgBCAChEIAUQ0AIAoQtoCAgAAgACAFIAQgAhClgICAAAsgBkEQaiAHELmAgIAAAkAgBigCEEEBRw0AIAYpAxggARDvgICAAEUNACAGQcgAaiAIEKOBgIAAIAYoAkhBAUYNASAGKQNQIQAgBiABNwMYIAYgADcDECAGIAetQiCGQgSENwMgQaiBwIAAQQMgBkEQakEDEPWAgIAAIQAgBiADNwNoIAYgCTcDYCAGIAU3A1ggBiAANwNQIAYgBTcDSEEAIQsDQAJAIAtBKEcNAEEAIQsCQANAIAtBKEYNASAGQRBqIAtqIAZByABqIAtqKQMANwMAIAtBCGohCwwACwsgCkKO7qa1jAUgBkEQakEFEKeAgIAAEKiAgIAAIAYgAjcDCCAGIAQ3AwAgByABEOOAgIAAIQAQ5YCAgABFDQQgAEIBfCIFUA0FIAggBVENBEKDgICAEBC4gICAAAALIAZBEGogC2pCAjcDACALQQhqIQsMAAsLQoOAgICg+gEQuICAgAAACwALAkAgCCAAWA0AIAcgASAIEOSAgIAACxCFgICAACEBEJiBgIAAIQggBxCcgYCAACEAIAhCAXwiCFANACAGQQM2AhAgBkEQaiAIELOAgIAAIABCAXwiCFANACAGQQU2AhAgBiAHNgIUIAZBEGogCBCvgICAACAGQcgAahDEgICAAAJAIAYoAkhBAUcNACAGQRBqIAYoAkwgBigCUBCqgICAAAsCQAJAAkAgAxDcgICAAEH/AXFBf2oOBAEAAgABCxC1gICAACEIQZyCwIAAQQwQ84CAgAAhAiAGIAM3A2ggBkIENwNgIAYgCTcDWCAGIAE3A1AgBiABNwNIQQAhCwNAAkAgC0EoRw0AQQAhCwJAA0AgC0EoRg0BIAZBEGogC2ogBkHIAGogC2opAwA3AwAgC0EIaiELDAALCyAIIAIgBkEQakEFEKeAgIAAEKiAgIAADAULIAZBEGogC2pCAjcDACALQQhqIQsMAAsLIAMgBhDigICAAAwCCyADIAYQ4oCAgAAgBxCTgYCAAEIBfCIDUA0AIAcgAxDmgICAAEIKQgAQ4YCAgAAhAyAGQRBqIAdBARCQgYCAABDagICAAEKMFBCLgICAABCSgICAACADIAEgBCACQgBCACABELSAgIAADAELEL+AgIAAAAsgBkHwAGokgICAgABCAgt9AgF/AX4CQAJAAkACQCABp0H/AXEiAkHFAEYNACACQQtHDQIgACABQj+HNwMYIAAgAUIIhzcDEAwBCyABEJaAgIAAIQMgARCXgICAACEBIAAgAzcDGCAAIAE3AxALQgAhAQwBCyAAQoOQgICAATcDCEIBIQELIAAgATcDAAs7AAJAAkAgAUL//////////wBWDQAgAUIIhkIGhCEBDAELIAEQk4CAgAAhAQsgAEIANwMAIAAgATcDCAuJAQECfyOAgICAAEEgayIDJICAgIAAIAMgABCggYCAAAJAIAMoAgBBAUYNACABQv8Bg0LIAFINACACQv8Bg0LNAFINACADEMGAgIAAAkAgAygCAEEBRw0AIAMoAgQgAygCCBDCgICAAAsQhYCAgAAgAhDvgICAACEEIANBIGokgICAgAAgBK0PCwALgAYDAX8DfgF/I4CAgIAAQeAAayIHJICAgIAAAkACQCAAQv8Bg0LNAFINACABQv8Bg0LNAFINACAHIAIQvoCAgAAgBygCAEEBRg0AIANC/wGDQgRSDQAgBEL/AYNCyABSDQAgBUL/AYNCyABSDQAgBykDCCEIIAcgBhCigYCAACAHKAIAQQFGDQAgBykDGCECIAcpAxAhBSAHEMGAgIAAAkAgBygCAEEBRw0AIAcoAgQgBygCCBDCgICAAAsgABCHgICAABoQhYCAgAAhBhC1gICAACEJQaiCwIAAQQ0Q84CAgAAhCiAHIAQ3A1ggByADQoSAgIBwgzcDUCAHIAg3A0ggByABNwNAIAcgBjcDOEEAIQsCQAJAA0ACQCALQShHDQBBACELAkADQCALQShGDQEgByALaiAHQThqIAtqKQMANwMAIAtBCGohCwwACwsgCSAKIAdBBRCngICAABCogICAAAJAIAVQIAJCAFMgAlAbDQAgCRC2gICAACAAIAYgBSACEKWAgIAACwJAAkAgBBDcgICAACILQf8BcUF+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AJMCEAAKAAAAdHRsX2NvbmZpZ3NfZnJvemVuRnJvemVuSW5zdGFuY2VQZXJzaXN0ZW50AJueAQ5jb250cmFjdHNwZWN2MAAAAAQAAAAAAAAAAAAAAAxDb3VudGVyRXJyb3IAAAAEAAAAAAAAABBPQXBwSW52YWxpZE5vbmNlAAAAAQAAAAAAAAAPSW52YWxpZE1zZ1ZhbHVlAAAAAAIAAAAAAAAAEUluc3VmZmljaWVudFZhbHVlAAAAAAAAAwAAAAAAAAAOSW52YWxpZE1zZ1R5cGUAAAAAAAQAAAACAAAAAAAAAAAAAAAOQ291bnRlclN0b3JhZ2UAAAAAAAcAAAAAAAAAAAAAAANFSUQAAAAAAQAAAAAAAAAQTWF4UmVjZWl2ZWROb25jZQAAAAIAAAAEAAAD7gAAACAAAAAAAAAAAAAAAAxPcmRlcmVkTm9uY2UAAAAAAAAAAAAAAAVDb3VudAAAAAAAAAAAAAAAAAAADUNvbXBvc2VkQ291bnQAAAAAAAABAAAAAAAAAAxJbmJvdW5kQ291bnQAAAABAAAABAAAAAEAAAAAAAAADU91dGJvdW5kQ291bnQAAAAAAAABAAAABAAAAAAAAAAAAAAACmF1dGhvcml6ZXIAAAAAAAAAAAABAAAAEwAAAAAAAAA+UmV0dXJucyB0aGUgY3VycmVudCBvd25lciBhZGRyZXNzLCBvciBOb25lIGlmIG5vIG93bmVyIGlzIHNldC4AAAAAAAVvd25lcgAAAAAAAAAAAAABAAAD6AAAABMAAAAAAAAAWVJldHVybnMgdGhlIHBlbmRpbmcgb3duZXIgYWRkcmVzcyBmb3IgMi1zdGVwIHRyYW5zZmVyLCBvciBOb25lIGlmIG5vIHRyYW5zZmVyIGlzIHBlbmRpbmcuAAAAAAAADXBlbmRpbmdfb3duZXIAAAAAAAAAAAAAAQAAA+gAAAATAAAAAAAAAStUcmFuc2ZlcnMgb3duZXJzaGlwIGltbWVkaWF0ZWx5IHRvIGEgbmV3IGFkZHJlc3MuCgpVc2Ugd2l0aCBjYXV0aW9uIC0gaWYgeW91IHRyYW5zZmVyIHRvIGEgd3JvbmcgYWRkcmVzcywgb3duZXJzaGlwIGlzIGxvc3QgZm9yZXZlci4KQ29uc2lkZXIgdXNpbmcgYHByb3Bvc2Vfb3duZXJzaGlwX3RyYW5zZmVyYCBpbnN0ZWFkLgoKIyBQYW5pY3MKLSBgT3duZXJOb3RTZXRgIGlmIG5vIG93bmVyIGlzIGN1cnJlbnRseSBzZXQKLSBgVHJhbnNmZXJJblByb2dyZXNzYCBpZiBhIDItc3RlcCB0cmFuc2ZlciBpcyBpbiBwcm9ncmVzcwAAAAASdHJhbnNmZXJfb3duZXJzaGlwAAAAAAABAAAAAAAAAAluZXdfb3duZXIAAAAAAAATAAAAAAAAAAAAAAJcUHJvcG9zZXMgYW4gb3duZXJzaGlwIHRyYW5zZmVyIHRvIGEgbmV3IGFkZHJlc3MuCgpUaGUgbmV3IG93bmVyIG11c3QgY2FsbCBgYWNjZXB0X293bmVyc2hpcCgpYCB3aXRoaW4gYHR0bGAgbGVkZ2Vycwp0byBjb21wbGV0ZSB0aGUgdHJhbnNmZXIuIFRoZSBwZW5kaW5nIHRyYW5zZmVyIHdpbGwgYXV0b21hdGljYWxseSBleHBpcmUgYWZ0ZXIuCgojIEFyZ3VtZW50cwotIGBuZXdfb3duZXJgIC0gVGhlIHByb3Bvc2VkIG5ldyBvd25lcgotIGB0dGxgIC0gTnVtYmVyIG9mIGxlZGdlcnMgdGhlIG5ldyBvd25lciBoYXMgdG8gYWNjZXB0LgpVc2UgYDBgIHRvIGNhbmNlbCBhIHBlbmRpbmcgdHJhbnNmZXIgKG5ld19vd25lciBtdXN0IG1hdGNoIHBlbmRpbmcpLgoKIyBQYW5pY3MKLSBgT3duZXJOb3RTZXRgIGlmIG5vIG93bmVyIGlzIGN1cnJlbnRseSBzZXQKLSBgTm9QZW5kaW5nVHJhbnNmZXJgIHdoZW4gY2FuY2VsbGluZyBhbmQgbm8gcGVuZGluZyB0cmFuc2ZlciBleGlzdHMKLSBgSW52YWxpZFR0bGAgaWYgdHRsIGV4Y2VlZHMgbWF4IFRUTAotIGBJbnZhbGlkUGVuZGluZ093bmVyYCB3aGVuIGNhbmNlbGxpbmcgd2l0aCB3cm9uZyBuZXdfb3duZXIgYWRkcmVzcwAAABpwcm9wb3NlX293bmVyc2hpcF90cmFuc2ZlcgAAAAAAAgAAAAAAAAAJbmV3X293bmVyAAAAAAAAEwAAAAAAAAADdHRsAAAAAAQAAAAAAAAAAAAAALlBY2NlcHRzIGEgcGVuZGluZyAyLXN0ZXAgb3duZXJzaGlwIHRyYW5zZmVyLgoKTXVzdCBiZSBjYWxsZWQgYnkgdGhlIHBlbmRpbmcgb3duZXIgYmVmb3JlIHRoZSBUVEwgZXhwaXJlcy4KCiMgUGFuaWNzCi0gYE5vUGVuZGluZ1RyYW5zZmVyYCBpZiB0aGVyZSBpcyBubyBwZW5kaW5nIHRyYW5zZmVyIChvciBpdCBleHBpcmVkKQAAAAAAABBhY2NlcHRfb3duZXJzaGlwAAAAAAAAAAAAAAAAAAAApFBlcm1hbmVudGx5IHJlbm91bmNlcyBvd25lcnNoaXAuCgojIFBhbmljcwotIGBPd25lck5vdFNldGAgaWYgbm8gb3duZXIgaXMgY3VycmVudGx5IHNldAotIGBUcmFuc2ZlckluUHJvZ3Jlc3NgIGlmIGEgMi1zdGVwIHRyYW5zZmVyIGlzIGluIHByb2dyZXNzIChjYW5jZWwgaXQgZmlyc3QpAAAAEnJlbm91bmNlX293bmVyc2hpcAAAAAAAAAAAAAAAAAAAAAAApUV4dGVuZHMgdGhlIGluc3RhbmNlIFRUTC4KCiMgQXJndW1lbnRzCgoqIGB0aHJlc2hvbGRgIC0gVGhlIHRocmVzaG9sZCB0byBleHRlbmQgdGhlIFRUTCAoaWYgY3VycmVudCBUVEwgaXMgYmVsb3cgdGhpcywgZXh0ZW5kKS4KKiBgZXh0ZW5kX3RvYCAtIFRoZSBUVEwgdG8gZXh0ZW5kIHRvLgAAAAAAABNleHRlbmRfaW5zdGFuY2VfdHRsAAAAAAIAAAAAAAAACXRocmVzaG9sZAAAAAAAAAQAAAAAAAAACWV4dGVuZF90bwAAAAAAAAQAAAAAAAAAAAAAAY9TZXRzIFRUTCBjb25maWdzIGZvciBpbnN0YW5jZSBhbmQgcGVyc2lzdGVudCBzdG9yYWdlLgoKLSBgTm9uZWAgdmFsdWVzIHJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBjb25maWcgKGRpc2FibGVzIGF1dG8tZXh0ZW5zaW9uIGZvciB0aGF0IHR5cGUpCi0gVmFsaWRhdGVzIHRoYXQgYHRocmVzaG9sZCA8PSBleHRlbmRfdG8gPD0gTUFYX1RUTGAKCiMgQXJndW1lbnRzCi0gYGluc3RhbmNlYCAtIFRUTCBjb25maWcgZm9yIGluc3RhbmNlIHN0b3JhZ2UKLSBgcGVyc2lzdGVudGAgLSBUVEwgY29uZmlnIGZvciBwZXJzaXN0ZW50IHN0b3JhZ2UKCiMgUGFuaWNzCi0gYFR0bENvbmZpZ0Zyb3plbmAgaWYgY29uZmlncyBhcmUgZnJvemVuCi0gYEludmFsaWRUdGxDb25maWdgIGlmIHZhbGlkYXRpb24gZmFpbHMAAAAAD3NldF90dGxfY29uZmlncwAAAAACAAAAAAAAAAhpbnN0YW5jZQAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAAAKcGVyc2lzdGVudAAAAAAD6AAAB9AAAAAJVHRsQ29uZmlnAAAAAAAAAAAAAAAAAABIUmV0dXJucyB0aGUgY3VycmVudCBUVEwgY29uZmlncyBhcyAoaW5zdGFuY2VfY29uZmlnLCBwZXJzaXN0ZW50X2NvbmZpZykuAAAAC3R0bF9jb25maWdzAAAAAAAAAAABAAAD7QAAAAIAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAAAAAAA4VBlcm1hbmVudGx5IGZyZWV6ZXMgVFRMIGNvbmZpZ3MsIHByZXZlbnRpbmcgYW55IGZ1dHVyZSBtb2RpZmljYXRpb25zLgoKVGhpcyBpcyBpcnJldmVyc2libGUgYW5kIHByb3ZpZGVzIGltbXV0YWJpbGl0eSBndWFyYW50ZWVzIHRvIHVzZXJzLgpFbWl0cyBgVHRsQ29uZmlnc0Zyb3plbmAgZXZlbnQuCgojIFBhbmljcwotIGBUdGxDb25maWdBbHJlYWR5RnJvemVuYCBpZiBhbHJlYWR5IGZyb3plbgAAAAAAABJmcmVlemVfdHRsX2NvbmZpZ3MAAAAAAAAAAAAAAAAAAAAAACdSZXR1cm5zIHdoZXRoZXIgVFRMIGNvbmZpZ3MgYXJlIGZyb3plbi4AAAAAFWlzX3R0bF9jb25maWdzX2Zyb3plbgAAAAAAAAAAAAABAAAAAQAAAAAAAACuUmV0cmlldmVzIHRoZSBPQXBwIHZlcnNpb24gaW5mb3JtYXRpb24uCgojIFJldHVybnMKQSB0dXBsZSBjb250YWluaW5nOgotIGBzZW5kZXJfdmVyc2lvbmA6IFRoZSB2ZXJzaW9uIG9mIHRoZSBPQXBwU2VuZGVyCi0gYHJlY2VpdmVyX3ZlcnNpb25gOiBUaGUgdmVyc2lvbiBvZiB0aGUgT0FwcFJlY2VpdmVyAAAAAAAMb2FwcF92ZXJzaW9uAAAAAAAAAAEAAAPtAAAAAgAAAAYAAAAGAAAAAAAAAGxSZXRyaWV2ZXMgdGhlIExheWVyWmVybyBlbmRwb2ludCBhZGRyZXNzIGFzc29jaWF0ZWQgd2l0aCB0aGUgT0FwcC4KCiMgUmV0dXJucwpUaGUgTGF5ZXJaZXJvIGVuZHBvaW50IGFkZHJlc3MAAAAIZW5kcG9pbnQAAAAAAAAAAQAAABMAAAAAAAAAwVJldHJpZXZlcyB0aGUgcGVlciAoT0FwcCkgYXNzb2NpYXRlZCB3aXRoIGEgY29ycmVzcG9uZGluZyBlbmRwb2ludC4KCiMgQXJndW1lbnRzCiogYGVpZGAgLSBUaGUgZW5kcG9pbnQgSUQKCiMgUmV0dXJucwpUaGUgcGVlciBhZGRyZXNzIChPQXBwIGluc3RhbmNlKSBhc3NvY2lhdGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgZW5kcG9pbnQAAAAAAAAEcGVlcgAAAAEAAAAAAAAAA2VpZAAAAAAEAAAAAQAAA+gAAAPuAAAAIAAAAAAAAADlU2V0cyBvciByZW1vdmVzIHRoZSBwZWVyIGFkZHJlc3MgKE9BcHAgaW5zdGFuY2UpIGZvciBhIGNvcnJlc3BvbmRpbmcgZW5kcG9pbnQuCgojIEFyZ3VtZW50cwoqIGBlaWRgIC0gVGhlIGVuZHBvaW50IElECiogYHBlZXJgIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHBlZXIgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGVuZHBvaW50LCBvciBOb25lIHRvIHJlbW92ZSB0aGUgcGVlcgAAAAAAAAhzZXRfcGVlcgAAAAIAAAAAAAAAA2VpZAAAAAAEAAAAAAAAAARwZWVyAAAD6AAAA+4AAAAgAAAAAAAAAAAAAACOU2V0cyB0aGUgZGVsZWdhdGUgYWRkcmVzcyBmb3IgdGhlIE9BcHAgQ29yZS4KCiMgQXJndW1lbnRzCiogYGRlbGVnYXRlYCAtIFRoZSBhZGRyZXNzIG9mIHRoZSBkZWxlZ2F0ZSB0byBiZSBzZXQsIG9yIE5vbmUgdG8gcmVtb3ZlIHRoZSBkZWxlZ2F0ZQAAAAAADHNldF9kZWxlZ2F0ZQAAAAEAAAAAAAAACGRlbGVnYXRlAAAD6AAAABMAAAAAAAAAAAAAANlSZXRyaWV2ZXMgdGhlIGVuZm9yY2VkIG9wdGlvbnMgZm9yIGEgZ2l2ZW4gZW5kcG9pbnQgYW5kIG1lc3NhZ2UgdHlwZS4KCiMgQXJndW1lbnRzCiogYGVpZGAgLSBUaGUgZW5kcG9pbnQgSUQKKiBgbXNnX3R5cGVgIC0gVGhlIE9BcHAgbWVzc2FnZSB0eXBlCgojIFJldHVybnMKVGhlIGVuZm9yY2VkIG9wdGlvbnMgZm9yIHRoZSBnaXZlbiBlbmRwb2ludCBhbmQgbWVzc2FnZSB0eXBlAAAAAAAAEGVuZm9yY2VkX29wdGlvbnMAAAACAAAAAAAAAANlaWQAAAAABAAAAAAAAAAIbXNnX3R5cGUAAAAEAAAAAQAAAA4AAAAAAAACm1NldHMgdGhlIGVuZm9yY2VkIG9wdGlvbnMgZm9yIHNwZWNpZmljIGVuZHBvaW50IGFuZCBtZXNzYWdlIHR5cGUgY29tYmluYXRpb25zLgoKT25seSB0aGUgYGF1dGhvcml6ZXJgIG9mIHRoZSBPQXBwIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24uClByb3ZpZGVzIGEgd2F5IGZvciB0aGUgT0FwcCB0byBlbmZvcmNlIHRoaW5ncyBsaWtlIHBheWluZyBmb3IgUHJlQ3JpbWUsIEFORC9PUiBtaW5pbXVtIGRzdCBselJlY2VpdmUgZ2FzIGFtb3VudHMgZXRjLgpUaGVzZSBlbmZvcmNlZCBvcHRpb25zIGNhbiB2YXJ5IGFzIHRoZSBwb3RlbnRpYWwgb3B0aW9ucy9leGVjdXRpb24gb24gdGhlIHJlbW90ZSBtYXkgZGlmZmVyIGFzIHBlciB0aGUgbXNnX3R5cGUuCmUuZy4gQW1vdW50IG9mIGx6UmVjZWl2ZSgpIGdhcyBuZWNlc3NhcnkgdG8gZGVsaXZlciBhIGx6Q29tcG9zZSgpIG1lc3NhZ2UgYWRkcyBvdmVyaGVhZCB5b3UgZG9uJ3Qgd2FudCB0byBwYXkKaWYgeW91IGFyZSBvbmx5IG1ha2luZyBhIHN0YW5kYXJkIExheWVyWmVybyBtZXNzYWdlIGllLiBselJlY2VpdmUoKSBXSVRIT1VUIHNlbmRDb21wb3NlKCkuCgojIEFyZ3VtZW50cwoqIGBvcHRpb25zYCAtIEEgdmVjdG9yIG9mIEVuZm9yY2VkT3B0aW9uUGFyYW0gc3RydWN0dXJlcyBzcGVjaWZ5aW5nIGVuZm9yY2VkIG9wdGlvbnMAAAAAFHNldF9lbmZvcmNlZF9vcHRpb25zAAAAAQAAAAAAAAAHb3B0aW9ucwAAAAPqAAAH0AAAABNFbmZvcmNlZE9wdGlvblBhcmFtAAAAAAAAAAAAAAACekNvbWJpbmVzIG9wdGlvbnMgZm9yIGEgZ2l2ZW4gZW5kcG9pbnQgYW5kIG1lc3NhZ2UgdHlwZS4KCklmIHRoZXJlIGlzIGFuIGVuZm9yY2VkIGx6UmVjZWl2ZSBvcHRpb246Ci0ge2dhc19saW1pdDogMjAwaywgdmFsdWU6IDEgWExNfSBBTkQgYSBjYWxsZXIgc3VwcGxpZXMgYSBselJlY2VpdmUgb3B0aW9uOiB7Z2FzX2xpbWl0OiAxMDBrLCB2YWx1ZTogMC41IFhMTX0KLSBUaGUgcmVzdWx0aW5nIG9wdGlvbnMgd2lsbCBiZSB7Z2FzX2xpbWl0OiAzMDBrLCB2YWx1ZTogMS41IFhMTX0gd2hlbiB0aGUgbWVzc2FnZSBpcyBleGVjdXRlZCBvbiB0aGUgcmVtb3RlIGx6X3JlY2VpdmUoKSBmdW5jdGlvbi4KVGhlIHByZXNlbmNlIG9mIGR1cGxpY2F0ZWQgb3B0aW9ucyBpcyBoYW5kbGVkIG9mZi1jaGFpbiBpbiB0aGUgdmVyaWZpZXIvZXhlY3V0b3IuCgojIEFyZ3VtZW50cwoqIGBlaWRgIC0gVGhlIGVuZHBvaW50IElECiogYG1zZ190eXBlYCAtIFRoZSBPQXBwIG1lc3NhZ2UgdHlwZQoqIGBleHRyYV9vcHRpb25zYCAtIEFkZGl0aW9uYWwgb3B0aW9ucyBwYXNzZWQgYnkgdGhlIGNhbGxlcgoKIyBSZXR1cm5zClRoZSBjb21iaW5hdGlvbiBvZiBjYWxsZXIgc3BlY2lmaWVkIG9wdGlvbnMgQU5EIGVuZm9yY2VkIG9wdGlvbnMAAAAAAA9jb21iaW5lX29wdGlvbnMAAAAAAwAAAAAAAAADZWlkAAAAAAQAAAAAAAAACG1zZ190eXBlAAAABAAAAAAAAAANZXh0cmFfb3B0aW9ucwAAAAAAAA4AAAABAAAADgAAAAAAAAAAAAAADV9fY29uc3RydWN0b3IAAAAAAAADAAAAAAAAAAVvd25lcgAAAAAAABMAAAAAAAAACGVuZHBvaW50AAAAEwAAAAAAAAAIZGVsZWdhdGUAAAATAAAAAAAAAAAAAAAAAAAABXF1b3RlAAAAAAAABAAAAAAAAAAHZHN0X2VpZAAAAAAEAAAAAAAAAAhtc2dfdHlwZQAAAAQAAAAAAAAAB29wdGlvbnMAAAAADgAAAAAAAAAKcGF5X2luX3pybwAAAAAAAQAAAAEAAAfQAAAADE1lc3NhZ2luZ0ZlZQAAAAAAAAAAAAAACWluY3JlbWVudAAAAAAAAAUAAAAAAAAABmNhbGxlcgAAAAAAEwAAAAAAAAAHZHN0X2VpZAAAAAAEAAAAAAAAAAhtc2dfdHlwZQAAAAQAAAAAAAAAB29wdGlvbnMAAAAADgAAAAAAAAADZmVlAAAAB9AAAAAMTWVzc2FnaW5nRmVlAAAAAAAAAAAAAAAAAAAAEXNldF9vcmRlcmVkX25vbmNlAAAAAAAAAQAAAAAAAAANb3JkZXJlZF9ub25jZQAAAAAAAAEAAAAAAAAAAAAAAAAAAAASc2tpcF9pbmJvdW5kX25vbmNlAAAAAAADAAAAAAAAAAdzcmNfZWlkAAAAAAQAAAAAAAAABnNlbmRlcgAAAAAD7gAAACAAAAAAAAAABW5vbmNlAAAAAAAABgAAAAAAAAAAAAAAAAAAAANlaWQAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAFY291bnQAAAAAAAAAAAAAAQAAAAYAAAAAAAAAAAAAAA5jb21wb3NlZF9jb3VudAAAAAAAAAAAAAEAAAAGAAAAAAAAAAAAAAANaW5ib3VuZF9jb3VudAAAAAAAAAEAAAAAAAAAA2VpZAAAAAAEAAAAAQAAAAYAAAAAAAAAAAAAAA5vdXRib3VuZF9jb3VudAAAAAAAAQAAAAAAAAADZWlkAAAAAAQAAAABAAAABgAAAAAAAAAAAAAACm5leHRfbm9uY2UAAAAAAAIAAAAAAAAAB3NyY19laWQAAAAABAAAAAAAAAAGc2VuZGVyAAAAAAPuAAAAIAAAAAEAAAAGAAAAAAAAALdDaGVja3MgaWYgYSBtZXNzYWdpbmcgcGF0aCBjYW4gYmUgaW5pdGlhbGl6ZWQgZm9yIHRoZSBnaXZlbiBvcmlnaW4uCgojIEFyZ3VtZW50cwoqIGBvcmlnaW5gIC0gVGhlIG9yaWdpbiBvZiB0aGUgbWVzc2FnZQoKIyBSZXR1cm5zClRydWUgaWYgdGhlIHBhdGggY2FuIGJlIGluaXRpYWxpemVkLCBmYWxzZSBvdGhlcndpc2UAAAAAFWFsbG93X2luaXRpYWxpemVfcGF0aAAAAAAAAAEAAAAAAAAABm9yaWdpbgAAAAAH0AAAAAZPcmlnaW4AAAAAAAEAAAABAAAAAAAAAyNFbnRyeSBwb2ludCBmb3IgcmVjZWl2aW5nIG1lc3NhZ2VzIG9yIHBhY2tldHMgZnJvbSB0aGUgTGF5ZXJaZXJvIGVuZHBvaW50LgoKVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gY2FsbHMgYGNsZWFyX3BheWxvYWRfYW5kX3RyYW5zZmVyYCB0byB2YWxpZGF0ZSB0aGUgbWVzc2FnZQphbmQgY2xlYXIgaXQgZnJvbSB0aGUgZW5kcG9pbnQsIHRoZW4gZGVsZWdhdGVzIHRvIGBfX2x6X3JlY2VpdmVgIGZvciBhcHBsaWNhdGlvbiBsb2dpYy4KCiMgQXJndW1lbnRzCiogYGV4ZWN1dG9yYCAtIFRoZSBhZGRyZXNzIG9mIHRoZSBleGVjdXRvciBmb3IgdGhlIHJlY2VpdmVkIG1lc3NhZ2UKKiBgb3JpZ2luYCAtIFRoZSBvcmlnaW4gaW5mb3JtYXRpb24gY29udGFpbmluZyB0aGUgc291cmNlIGVuZHBvaW50IGFuZCBzZW5kZXIgYWRkcmVzczoKLSBgc3JjX2VpZGA6IFRoZSBzb3VyY2UgY2hhaW4gZW5kcG9pbnQgSUQKLSBgc2VuZGVyYDogVGhlIHNlbmRlciBhZGRyZXNzIG9uIHRoZSBzb3VyY2UgY2hhaW4KLSBgbm9uY2VgOiBUaGUgbm9uY2Ugb2YgdGhlIG1lc3NhZ2UKKiBgZ3VpZGAgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByZWNlaXZlZCBMYXllclplcm8gbWVzc2FnZQoqIGBtZXNzYWdlYCAtIFRoZSBwYXlsb2FkIG9mIHRoZSByZWNlaXZlZCBtZXNzYWdlCiogYGV4dHJhX2RhdGFgIC0gQWRkaXRpb25hbCBhcmJpdHJhcnkgZGF0YSBwcm92aWRlZCBieSB0aGUgY29ycmVzcG9uZGluZyBleGVjdXRvcgoqIGB2YWx1ZWAgLSBUaGUgbmF0aXZlIHRva2VuIHZhbHVlIHNlbnQgd2l0aCB0aGUgbWVzc2FnZQAAAAAKbHpfcmVjZWl2ZQAAAAAABgAAAAAAAAAIZXhlY3V0b3IAAAATAAAAAAAAAAZvcmlnaW4AAAAAB9AAAAAGT3JpZ2luAAAAAAAAAAAABGd1aWQAAAPuAAAAIAAAAAAAAAAHbWVzc2FnZQAAAAAOAAAAAAAAAApleHRyYV9kYXRhAAAAAAAOAAAAAAAAAAV2YWx1ZQAAAAAAAAsAAAAAAAAAAAAAAexJbmRpY2F0ZXMgd2hldGhlciBhbiBhZGRyZXNzIGlzIGFuIGFwcHJvdmVkIGNvbXBvc2VNc2cgc2VuZGVyIHRvIHRoZSBFbmRwb2ludC4KCkFwcGxpY2F0aW9ucyBjYW4gb3B0aW9uYWxseSBjaG9vc2UgdG8gaW1wbGVtZW50IHNlcGFyYXRlIGNvbXBvc2VNc2cgc2VuZGVycyB0aGF0IGFyZSBOT1QgdGhlIGJyaWRnaW5nIGxheWVyLgpUaGUgZGVmYXVsdCBzZW5kZXIgSVMgdGhlIE9BcHBSZWNlaXZlciBpbXBsZW1lbnRlci4KCiMgQXJndW1lbnRzCiogYG9yaWdpbmAgLSBUaGUgb3JpZ2luIGluZm9ybWF0aW9uIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBlbmRwb2ludCBhbmQgc2VuZGVyIGFkZHJlc3MKKiBgbWVzc2FnZWAgLSBUaGUgbHpSZWNlaXZlIHBheWxvYWQKKiBgc2VuZGVyYCAtIFRoZSBzZW5kZXIgYWRkcmVzcyB0byBjaGVjawoKIyBSZXR1cm5zClRydWUgaWYgdGhlIHNlbmRlciBpcyBhIHZhbGlkIGNvbXBvc2VNc2cgc2VuZGVyLCBmYWxzZSBvdGhlcndpc2UAAAAVaXNfY29tcG9zZV9tc2dfc2Vu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AAAAAAANSW52YWxpZEV4cGlyeQAAAAAAAAkAAAAAAAAADEludmFsaWRJbmRleAAAAAoAAAAAAAAADEludmFsaWROb25jZQAAAAsAAAAAAAAAEkludmFsaWRQYXlsb2FkSGFzaAAAAAAADAAAAAAAAAAVSW52YWxpZFJlY2VpdmVMaWJyYXJ5AAAAAAAADQAAAAAAAAART25seU5vbkRlZmF1bHRMaWIAAAAAAAAOAAAAAAAAAA5Pbmx5UmVjZWl2ZUxpYgAAAAAADwAAAAAAAAART25seVJlZ2lzdGVyZWRMaWIAAAAAAAAQAAAAAAAAAAtPbmx5U2VuZExpYgAAAAARAAAAAAAAABRQYXRoTm90SW5pdGlhbGl6YWJsZQAAABIAAAAAAAAAEVBhdGhOb3RWZXJpZmlhYmxlAAAAAAAAEwAAAAAAAAATUGF5bG9hZEhhc2hOb3RGb3VuZAAAAAAUAAAAAAAAAAlTYW1lVmFsdWUAAAAAAAAVAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAAWAAAAAAAAAA5VbnN1cHBvcnRlZEVpZAAAAAAAFwAAAAAAAAAKWmVyb1pyb0ZlZQAAAAAAGAAAAAAAAAAOWnJvVW5hdmFpbGFibGUAAAAAABkAAAABAAAALVBhcmFtZXRlcnMgZm9yIHNlbmRpbmcgYSBjcm9zcy1jaGFpbiBtZXNzYWdlLgAAAAAAAAAAAAAPTWVzc2FnaW5nUGFyYW1zAAAAAAUAAAArRGVzdGluYXRpb24gZW5kcG9pbnQgSUQgKGNoYWluIGlkZW50aWZpZXIpLgAAAAAHZHN0X2VpZAAAAAAEAAAAHFRoZSBtZXNzYWdlIHBheWxvYWQgdG8gc2VuZC4AAAAHbWVzc2FnZQAAAAAOAAAAIUVuY29kZWQgZXhlY3V0b3IgYW5kIERWTiBvcHRpb25zLgAAAAAAAAdvcHRpb25zAAAAAA4AAAA5V2hldGhlciB0byBwYXkgZmVlcyBpbiBaUk8gdG9rZW4gaW5zdGVhZCBvZiBuYXRpdmUgdG9rZW4uAAAAAAAACnBheV9pbl96cm8AAAAAAAEAAAA1UmVjZWl2ZXIgYWRkcmVzcyBvbiB0aGUgZGVzdGluYXRpb24gY2hhaW4gKDMyIGJ5dGVzKS4AAAAAAAAIcmVjZWl2ZXIAAAPuAAAAIAAAAAEAAABNU291cmNlIG1lc3NhZ2UgaW5mb3JtYXRpb24gaWRlbnRpZnlpbmcgd2hlcmUgYSBjcm9zcy1jaGFpbiBtZXNzYWdlIGNhbWUgZnJvbS4AAAAAAAAAAAAABk9yaWdpbgAAAAAAAwAAABdOb25jZSBmb3IgdGhpcyBwYXRod2F5LgAAAAAFbm9uY2UAAAAAAAAGAAAALlNlbmRlciBhZGRyZXNzIG9uIHRoZSBzb3VyY2UgY2hhaW4gKDMyIGJ5dGVzKS4AAAAAAAZzZW5kZXIAAAAAA+4AAAAgAAAAJlNvdXJjZSBlbmRwb2ludCBJRCAoY2hhaW4gaWRlbnRpZmllcikuAAAAAAAHc3JjX2VpZAAAAAAEAAAAAQAAAChGZWUgc3RydWN0dXJlIGZvciBjcm9zcy1jaGFpbiBtZXNzYWdpbmcuAAAAAAAAAAxNZXNzYWdpbmdGZWUAAAACAAAAH0ZlZSBwYWlkIGluIG5hdGl2ZSB0b2tlbiAoWExNKS4AAAAACm5hdGl2ZV9mZWUAAAAAAAsAAAAoRmVlIHBhaWQgaW4gWlJPIHRva2VuIChMYXllclplcm8gdG9rZW4pLgAAAAd6cm9fZmVlAAAAAAsAAAABAAAAQlJlY2VpcHQgcmV0dXJuZWQgYWZ0ZXIgc3VjY2Vzc2Z1bGx5IHNlbmRpbmcgYSBjcm9zcy1jaGFpbiBtZXNzYWdlLgAAAAAAAAAAABBNZXNzYWdpbmdSZWNlaXB0AAAAAwAAAClUaGUgZmVlcyBjaGFyZ2VkIGZvciBzZW5kaW5nIHRoZSBtZXNzYWdlLgAAAAAAAANmZWUAAAAH0AAAAAxNZXNzYWdpbmdGZWUAAAArR2xvYmFsbHkgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBtZXNzYWdlLgAAAAAEZ3VpZAAAA+4AAAAgAAAAJFRoZSBvdXRib3VuZCBub25jZSBmb3IgdGhpcyBwYXRod2F5LgAAAAVub25jZQAAAAAAAAYAAAACAAAAOFR5cGUgb2YgbWVzc2FnZSBsaWJyYXJ5IGluZGljYXRpbmcgc3VwcG9ydGVkIG9wZXJhdGlvbnMuAAAAAAAAAA5NZXNzYWdlTGliVHlwZQAAAAAAAwAAAAAAAAAfU3VwcG9ydHMgb25seSBzZW5kaW5nIG1lc3NhZ2VzLgAAAAAEU2VuZAAAAAAAAAAhU3VwcG9ydHMgb25seSByZWNlaXZpbmcgbWVzc2FnZXMuAAAAAAAAB1JlY2VpdmUAAAAAAAAAAC1TdXBwb3J0cyBib3RoIHNlbmRpbmcgYW5kIHJlY2VpdmluZyBtZXNzYWdlcy4AAAAAAAAOU2VuZEFuZFJlY2VpdmUAAAAAAAEAAAC3VmVyc2lvbiBpbmZvcm1hdGlvbiBmb3IgYSBtZXNzYWdlIGxpYnJhcnkuCgpOb3RlOiBgbWlub3JgIGFuZCBgZW5kcG9pbnRfdmVyc2lvbmAgdXNlIGB1MzJgIGluc3RlYWQgb2YgYHU4YCBiZWNhdXNlIFN0ZWxsYXIgZG9lcyBub3QKc3VwcG9ydCBgdThgIHR5cGVzIGluIGNvbnRyYWN0IGludGVyZmFjZSBmdW5jdGlvbnMuAAAAAAAAAAARTWVzc2FnZUxpYlZlcnNpb24AAAAAAAADAAAAM0VuZHBvaW50IHZlcnNpb24gKHNob3VsZCBub3QgZXhjZWVkIHU4OjpNQVggPSAyNTUpLgAAAAAQZW5kcG9pbnRfdmVyc2lvbgAAAAQAAAAVTWFqb3IgdmVyc2lvbiBudW1iZXIuAAAAAAAABW1ham9yAAAAAAAABgAAADdNaW5vciB2ZXJzaW9uIG51bWJlciAoc2hvdWxkIG5vdCBleGNlZWQgdTg6Ok1BWCA9IDI1NSkuAAAAAAVtaW5vcgAAAAAAAAQAAAABAAAANlRpbWVvdXQgY29uZmlndXJhdGlvbiBmb3IgcmVjZWl2ZSBsaWJyYXJ5IHRyYW5zaXRpb25zLgAAAAAAAAAAAAdUaW1lb3V0AAAAAAIAAAAoVW5peCB0aW1lc3RhbXAgd2hlbiB0aGUgdGltZW91dCBleHBpcmVzLgAAAAZleHBpcnkAAAAAAAYAAAApVGhlIG5ldyBsaWJyYXJ5IGFkZHJlc3MgdG8gdHJhbnNpdGlvbiB0by4AAAAAAAADbGliAAAAABMAAAABAAAANVBhcmFtZXRlcnMgZm9yIHNldHRpbmcgbWVzc2FnZSBsaWJyYXJ5IGNvbmZpZ3VyYXRpb24uAAAAAAAAAAAAAA5TZXRDb25maWdQYXJhbQAAAAAAAwAAAB9YRFItZW5jb2RlZCBjb25maWd1cmF0aW9uIGRhdGEuAAAAAAZjb25maWcAAAAAAA4AAAAwVGhlIHR5cGUgb2YgY29uZmlndXJhdGlvbiAoZS5nLiwgZXhlY3V0b3IsIFVMTikuAAAAC2NvbmZpZ190eXBlAAAAAAQAAAAnVGhlIGVuZHBvaW50IElEIHRoaXMgY29uZmlnIGFwcGxpZXMgdG8uAAAAAANlaWQAAAAABAAAAAEAAAAxUmVzb2x2ZWQgbGlicmFyeSBpbmZvcm1hdGlvbiB3aXRoIGRlZmF1bHQgc3RhdHVzLgAAAAAAAAAAAAAPUmVzb2x2ZWRMaWJyYXJ5AAAAAAIAAABEV2hldGhlciB0aGlzIGlzIHRoZSBkZWZhdWx0IGxpYnJhcnkgKHRydWUpIG9yIE9BcHAtc3BlY2lmaWMgKGZhbHNlKS4AAAAKaXNfZGVmYXVsdAAAAAAAAQAAAB1UaGUgcmVzb2x2ZWQgbGlicmFyeSBhZGRyZXNzLgAAAAAAAANsaWIAAAAAEwAAAAEAAABIT3V0Ym91bmQgcGFja2V0IGNvbnRhaW5pbmcgYWxsIGluZm9ybWF0aW9uIGZvciBjcm9zcy1jaGFpbiB0cmFuc21pc3Npb24uAAAAAAAAAA5PdXRib3VuZFBhY2tldAAAAAAABwAAABhEZXN0aW5hdGlvbiBlbmRwb2ludCBJRC4AAAAHZHN0X2VpZAAAAAAEAAAALEdsb2JhbGx5IHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIG1lc3NhZ2UuAAAABGd1aWQAAAPuAAAAIAAAABRUaGUgbWVzc2FnZSBwYXlsb2FkLgAAAAdtZXNzYWdlAAAAAA4AAAAgT3V0Ym91bmQgbm9uY2UgZm9yIHRoaXMgcGF0aHdheS4AAAAFbm9uY2UAAAAAAAAGAAAAMVJlY2VpdmVyIGFkZHJlc3Mgb24gZGVzdGluYXRpb24gY2hhaW4gKDMyIGJ5dGVzKS4AAAAAAAAIcmVjZWl2ZXIAAAPuAAAAIAAAAB9TZW5kZXIgYWRkcmVzcyBvbiBzb3VyY2UgY2hhaW4uAAAAAAZzZW5kZXIAAAAAABMAAAATU291cmNlIGVuZHBvaW50IElELgAAAAAHc3JjX2VpZAAAAAAEAAAAAQAAACtBIGZlZSByZWNpcGllbnQgd2l0aCB0aGUgYW1vdW50IHRvIGJlIHBhaWQuAAAAAAAAAAAMRmVlUmVjaXBpZW50AAAAAgAAABVBbW91bnQgb2YgZmVlIHRvIHBheS4AAAAAAAAGYW1vdW50AAAAAAALAAAAH1RoZSBhZGRyZXNzIHRvIHNlbmQgdGhlIGZlZSB0by4AAAAAAnRvAAAAAAATAAAAAQAAADxSZXN1bHQgb2Ygc2VuZCBvcGVyYXRpb24gY29udGFpbmluZyBmZWVzIGFuZCBlbmNvZGVkIHBhY2tldC4AAAAAAAAADUZlZXNBbmRQYWNrZXQAAAAAAAADAAAAKlRoZSBlbmNvZGVkIHBhY2tldCByZWFkeSBmb3IgdHJhbnNtaXNzaW9uLgAAAAAADmVuY29kZWRfcGFja2V0AAAAAAAOAAAAP0xpc3Qgb2YgbmF0aXZlIHRva2VuIGZlZSByZWNpcGllbnRzIChleGVjdXRvciwgRFZOcywgdHJlYXN1cnkpLgAAAAAVbmF0aXZlX2ZlZV9yZWNpcGllbnRzAAAAAAAD6gAAB9AAAAAMRmVlUmVjaXBpZW50AAAALExpc3Qgb2YgWlJPIHRva2VuIGZlZSByZWNpcGllbnRzICh0cmVhc3VyeSkuAAAAEnpyb19mZWVfcmVjaXBpZW50cwAAAAAD6gAAB9AAAAAMRmVlUmVjaXBpZW50AAAABAAAABRPQXBwRXJyb3I6IDIwMDAtMjA5OQAAAAAAAAAJT0FwcEVycm9yAAAAAAAABAAAAAAAAAAOSW52YWxpZE9wdGlvbnMAAAAAB9AAAAAAAAAABk5vUGVlcgAAAAAH0QAAAAAAAAAIT25seVBlZXIAAAfSAAAAAAAAABNacm9Ub2tlblVuYXZhaWxhYmxlAAAAB9MAAAACAAAAAAAAAAAAAAAPT0FwcENvcmVTdG9yYWdlAAAAAAIAAAAAAAAAAAAAAAhFbmRwb2ludAAAAAEAAAAAAAAABFBlZXIAAAABAAAABAAAAAUAAAAAAAAAAAAAAAdQZWVyU2V0AAAAAAEAAAAIcGVlcl9zZXQAAAACAAAAAAAAAANlaWQAAAAABAAAAAAAAAAAAAAABHBlZXIAAAPoAAAD7gAAACAAAAAAAAAAAgAAAAEAAAAAAAAAAAAAABNFbmZvcmNlZE9wdGlvblBhcmFtAAAAAAMAAAAAAAAAA2VpZAAAAAAEAAAAAAAAAAhtc2dfdHlwZQAAAAQAAAAAAAAAB29wdGlvbnMAAAAADgAAAAIAAAAAAAAAAAAAABdPQXBwT3B0aW9uc1R5cGUzU3RvcmFnZQAAAAABAAAAAQAAAAAAAAAPRW5mb3JjZWRPcHRpb25zAAAAAAIAAAAEAAAABAAAAAUAAAAAAAAAAAAAABFFbmZvcmNlZE9wdGlvblNldAAAAAAAAAEAAAATZW5mb3JjZWRfb3B0aW9uX3NldAAAAAABAAAAAAAAABZlbmZvcmNlZF9vcHRpb25fcGFyYW1zAAAAAAPqAAAH0AAAABNFbmZvcmNlZE9wdGlvblBhcmFtAAAAAAAAAAACAAAABAAAABxCdWZmZXJSZWFkZXJFcnJvcjogMTAwMC0xMDA5AAAAAAAAABFCdWZmZXJSZWFkZXJFcnJvcgAAAAAAAAIAAAAAAAAADUludmFsaWRMZW5ndGgAAAAAAAPoAAAAAAAAABVJbnZhbGlkQWRkcmVzc1BheWxvYWQAAAAAAAPpAAAABAAAABxCdWZmZXJXcml0ZXJFcnJvcjogMTAxMC0xMDE5AAAAAAAAABFCdWZmZXJXcml0ZXJFcnJvcgAAAAAAAAEAAAAAAAAAFUludmFsaWRBZGRyZXNzUGF5bG9hZAAAAAAAA/IAAAAEAAAAH1R0bENvbmZpZ3VyYWJsZUVycm9yOiAxMDIwLTEwMjkAAAAAAAAAABRUdGxDb25maWd1cmFibGVFcnJvcgAAAAMAAAAAAAAAEEludmFsaWRUdGxDb25maWcAAAP8AAAAAAAAAA9UdGxDb25maWdGcm96ZW4AAAAD/QAAAAAAAAAWVHRsQ29uZmlnQWxyZWFkeUZyb3plbgAAAAAD/gAAAAQAAAAXT3duYWJsZUVycm9yOiAxMDMwLTEwMzkAAAAAAAAAAAxPd25hYmxlRXJyb3IAAAAGAAAAAAAAABNJbnZhbGlkUGVuZGluZ093bmVyAAAABAYAAAAAAAAACkludmFsaWRUdGwAAAAABAcAAAAAAAAAEU5vUGVuZGluZ1RyYW5zZmVyAAAAAAAECAAAAAAAAAAPT3duZXJBbHJlYWR5U2V0AAAABAkAAAAAAAAAC093bmVyTm90U2V0AAAABAoAAAAAAAAAElRyYW5zZmVySW5Qcm9ncmVzcwAAAAAECwAAAAQAAAAYQnl0ZXNFeHRFcnJvcjogMTA0MC0xMDQ5AAAAAAAAAA1CeXRlc0V4dEVycm9yAAAAAAAAAQAAAAAAAAAOTGVuZ3RoTWlzbWF0Y2gAAAAABBAAAAAEAAAAG1VwZ3JhZGVhYmxlRXJyb3I6IDEwNTAtMTA1OQAAAAAAAAAAEFVwZ3JhZGVhYmxlRXJyb3IAAAADAAAAAAAAABRJbnZhbGlkTWlncmF0aW9uRGF0YQAABBoAAAAAAAAAE01pZ3JhdGlvbk5vdEFsbG93ZWQAAAAEGwAAAAAAAAAOVXBncmFkZXNGcm96ZW4AAAAABBwAAAAEAAAAGE11bHRpc2lnRXJyb3I6IDEwNjAtMTA2OQAAAAAAAAANTXVsdGlzaWdFcnJvcgAAAAAAAAgAAAAAAAAAEkFscmVhZHlJbml0aWFsaXplZAAAAAAEJAAAAAAAAAANSW52YWxpZFNpZ25lcgAAAAAABCUAAAAAAAAADlNpZ25hdHVyZUVycm9yAAAAAAQmAAAAAAAAABNTaWduZXJBbHJlYWR5RXhpc3RzAAAABCcAAAAAAAAADlNpZ25lck5vdEZvdW5kAAAAAAQoAAAAAAAAAB1Ub3RhbFNpZ25lcnNMZXNzVGhhblRocmVzaG9sZAAAAAAABCkAAAAAAAAAD1Vuc29ydGVkU2lnbmVycwAAAAQqAAAAAAAAAA1aZXJvVGhyZXNob2xkAAAAAAAEKwAAAAUAAAAwRXZlbnQgZW1pdHRlZCB3aGVuIGEgc2lnbmVyIGlzIGFkZGVkIG9yIHJlbW92ZWQuAAAAAAAAAAlTaWduZXJTZXQAAAAAAAABAAAACnNpZ25lcl9zZXQAAAAAAAIAAAAAAAAABnNpZ25lcgAAAAAD7gAAABQAAAABAAAAAAAAAAZhY3RpdmUAAAAAAAEAAAAAAAAAAgAAAAUAAAA2RXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzaWduYXR1cmUgdGhyZXNob2xkIGlzIGNoYW5nZWQuAAAAAAAAAAAADFRocmVzaG9sZFNldAAAAAEAAAANdGhyZXNob2xkX3NldAAAAAAAAAEAAAAAAAAACXRocmVzaG9sZAAAAAAAAAQAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAA9NdWx0aXNpZ1N0b3JhZ2UAAAAAAgAAAAAAAAAAAAAAB1NpZ25lcnMAAAAAAAAAAAAAAAAJVGhyZXNob2xkAAAAAAAABQAAAFdFdmVudCBlbWl0dGVkIHdoZW4gb3duZXJzaGlwIGlzIHRyYW5zZmVycmVkIChib3RoIHNpbmdsZS1zdGVwIGFuZCB0d28tc3RlcCBjb21wbGV0aW9uKS4AAAAAAAAAABRPd25lcnNoaXBUcmFuc2ZlcnJlZAAAAAEAAAAVb3duZXJzaGlwX3RyYW5zZmVycmVkAAAAAAAAAgAAAAAAAAAJb2xkX293bmVyAAAAAAAAEwAAAAAAAAAAAAAACW5ld19vd25lcgAAAAAAABMAAAAAAAAAAgAAAAUAAAA7RXZlbnQgZW1pdHRlZCB3aGVuIGEgMi1zdGVwIG93bmVyc2hpcCB0cmFuc2ZlciBpcyBwcm9wb3NlZC4AAAAAAAAAABVPd25lcnNoaXBUcmFuc2ZlcnJpbmcAAAAAAAABAAAAFm93bmVyc2hpcF90cmFuc2ZlcnJpbmcAAAAAAAMAAAAAAAAACW9sZF9vd25lcgAAAAAAABMAAAAAAAAAAAAAAAluZXdfb3duZXIAAAAAAAATAAAAAAAAAAAAAAADdHRsAAAAAAQAAAAAAAAAAgAAAAUAAAAqRXZlbnQgZW1pdHRlZCB3aGVuIG93bmVyc2hpcCBpcyByZW5vdW5jZWQuAAAAAAAAAAAAEk93bmVyc2hpcFJlbm91bmNlZAAAAAAAAQAAABNvd25lcnNoaXBfcmVub3VuY2VkAAAAAAEAAAAAAAAACW9sZF9vd25lcgAAAAAAABMAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAA5Pd25hYmxlU3RvcmFnZQAAAAAAAgAAAAAAAAAAAAAABU93bmVyAAAAAAAAAAAAAAAAAAAMUGVuZGluZ093bmVyAAAAAQAAAElUVEwgY29uZmlndXJhdGlvbjogdGhyZXNob2xkICh3aGVuIHRvIGV4dGVuZCkgYW5kIGV4dGVuZF90byAodGFyZ2V0IFRUTCkuAAAAAAAAAAAAAAlUdGxDb25maWcAAAAAAAACAAAAKFRhcmdldCBUVEwgYWZ0ZXIgZXh0ZW5zaW9uIChpbiBsZWRnZXJzKS4AAAAJZXh0ZW5kX3RvAAAAAAAABAAAADNUVEwgdGhyZXNob2xkIHRoYXQgdHJpZ2dlcnMgZXh0ZW5zaW9uIChpbiBsZWRnZXJzKS4AAAAACXRocmVzaG9sZAAAAAAAAAQAAAAFAAAAJ0V2ZW50IGVtaXR0ZWQgd2hlbiBUVEwgY29uZmlncyBhcmUgc2V0LgAAAAAAAAAADVR0bENvbmZpZ3NTZXQAAAAAAAABAAAAD3R0bF9jb25maWdzX3NldAAAAAACAAAAAAAAAAhpbnN0YW5jZQAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAAAAAAAACnBlcnNpc3RlbnQAAAAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAAACAAAABQAAACpFdmVudCBlbWl0dGVkIHdoZW4gVFRMIGNvbmZpZ3MgYXJlIGZyb3plbi4AAAAAAAAAAAAQVHRsQ29uZmlnc0Zyb3plbgAAAAEAAAASdHRsX2NvbmZpZ3NfZnJvemVuAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAABBUdGxDb25maWdTdG9yYWdlAAAAAwAAAAAAAAAAAAAABkZyb3plbgAAAAAAAAAAAAAAAAAISW5zdGFuY2UAAAAAAAAAAAAAAApQZXJzaXN0ZW50AAAAAAACAAAAAAAAAAAAAAASVXBncmFkZWFibGVTdG9yYWdlAAAAAAACAAAAAAAAAAAAAAAGRnJvemVuAAAAAAAAAAAAAAAAAAlNaWdyYXRpbmcAAAAAHhFjb250cmFjdGVudm1ldGF2MAAAAAAAAAAZAAAAAABvDmNvbnRyYWN0bWV0YXYwAAAAAAAAAAVyc3ZlcgAAAAAAAAYxLjkwLjAAAAAAAAAAAAAIcnNzZGt2ZXIAAAAvMjUuMC4xIzk0MTQ0ODA3OWVjY2Y5NTYyN2QyZmZlYTEzYmEyNjhlMzA1YTkwNzcAAFMOY29udHJhY3RtZXRhdjAAAAAAAAAABmNsaXZlcgAAAAAALzI1LjAuMCNhNjQ5MjVlOTM5MWMzZDNiM2VmOGU1M2RjNjBjMjNkYjllNmE4MmU0AA==";
11
+ export declare const WASM_BASE64 = "AGFzbQEAAAAB2gEiYAJ+fgF+YAN+fn4BfmAAAX5gBH5+fn4BfmABfgF+YAV+fn5+fgBgAn9/AX5gA35+fgBgAn9/AGABfwF+YAJ+fgF/YAJ/fgBgA39+fgBgCn9/fn5+fn5+fn4AYAF+AGAFfn9/f38AYAAAYAF/AGABfwF/YAABf2ACfn8AYAN/f38AYAR+fn9/AX5gAX4Bf2ADfn9/AX5gAn9+AX5gAn5+AGAEf39/fwF+YAR+fn5+AGACfn8BfmAFfn5+fn4BfmAGfn5+fn5+AX5gB35+fn5+fn4BfmADfn9/AALfASUBbAExAAABbAFfAAEBdgFfAAIBZAFfAAEBeAE3AAIBYgE0AAIBbAE3AAMBYQEwAAQBYgE4AAQBYgE2AAABaQFhAAQBaQFiAAQBYgFmAAEBYgE5AAABeAExAAABbAEyAAABdgEzAAQBdgExAAABYgFlAAABaQFfAAQBaQEwAAQBdgFnAAABaQE4AAQBaQE3AAQBaQE2AAABYgFqAAABYgEyAAMBYgExAAMBbQE5AAEBbQFhAAMBeAEwAAABYgFiAAQBeAEzAAIBeAE4AAIBbAEwAAABbAE4AAABeAE1AAQDjAGKAQUABgcFCAkKCwsMBAgLDQIECw4IDgkPCwsQBhAGCAYREBIQEwkRERACAhEUChARCREVCwgMBhYXEAsYCwAUGQwTCwICAAIEDhoAEAYEGxMMAgIACAALCAgJAhEIAgICEQIEAAQcAAQRAR0BAxMMHgkEAQICAgICBAkEAAQLHwsLASAhEBEVCxUIFQUDAQARBiEEfwFBgIDAAAt/AEHAg8AAC38AQaKGwAALfwBBsIbAAAsH/wQnBm1lbW9yeQIACmF1dGhvcml6ZXIAZwVvd25lcgBoDXBlbmRpbmdfb3duZXIAahJ0cmFuc2Zlcl9vd25lcnNoaXAAaxpwcm9wb3NlX293bmVyc2hpcF90cmFuc2ZlcgBuEGFjY2VwdF9vd25lcnNoaXAAdRJyZW5vdW5jZV9vd25lcnNoaXAAdhNleHRlbmRfaW5zdGFuY2VfdHRsAHcPc2V0X3R0bF9jb25maWdzAHkLdHRsX2NvbmZpZ3MAfhJmcmVlemVfdHRsX2NvbmZpZ3MAgQEVaXNfdHRsX2NvbmZpZ3NfZnJvemVuAIIBDG9hcHBfdmVyc2lvbgCDAQhlbmRwb2ludACFAQRwZWVyAIYBCHNldF9wZWVyAIcBDHNldF9kZWxlZ2F0ZQCIARBlbmZvcmNlZF9vcHRpb25zAIoBFHNldF9lbmZvcmNlZF9vcHRpb25zAIsBD2NvbWJpbmVfb3B0aW9ucwCNAQ1fX2NvbnN0cnVjdG9yAI8BBXF1b3RlAJABCWluY3JlbWVudACTARFzZXRfb3JkZXJlZF9ub25jZQCVARJza2lwX2luYm91bmRfbm9uY2UAlgEDZWlkAJcBBWNvdW50AJgBDmNvbXBvc2VkX2NvdW50AJoBDWluYm91bmRfY291bnQAnAEOb3V0Ym91bmRfY291bnQAngEKbmV4dF9ub25jZQCfARVhbGxvd19pbml0aWFsaXplX3BhdGgAoAEKbHpfcmVjZWl2ZQCiARVpc19jb21wb3NlX21zZ19zZW5kZXIApQEKbHpfY29tcG9zZQCmAQFfAwEKX19kYXRhX2VuZAMCC19faGVhcF9iYXNlAwMKyIEBigGxAQECfyOAgICAAEEwayIFJICAgIAAIAUgAyAEEKaAgIAANwMQIAUgAjcDCCAFIAE3AwBBACEGA0ACQCAGQRhHDQBBACEGAkADQCAGQRhGDQEgBUEYaiAGaiAFIAZqKQMANwMAIAZBCGohBgwACwsgAEKO7uqVvrbe8wAgBUEYakEDEKeAgIAAEKiAgIAAIAVBMGokgICAgAAPCyAFQRhqIAZqQgI3AwAgBkEIaiEGDAALC0MBAX8jgICAgABBEGsiAiSAgICAACACIAAgARCSgYCAAAJAIAIoAgBBAUcNAAALIAIpAwghASACQRBqJICAgIAAIAELGgAgAK1CIIZCBIQgAa1CIIZCBIQQlYCAgAALIQACQCAAIAEgAhCDgICAAEL/AYNCAlENABC+gICAAAALC7EBAQJ/I4CAgIAAQTBrIgUkgICAgAAgBSADIAQQpoCAgAA3AxAgBSACNwMIIAUgATcDAEEAIQYDQAJAIAZBGEcNAEEAIQYCQANAIAZBGEYNASAFQRhqIAZqIAUgBmopAwA3AwAgBkEIaiEGDAALCyAAQo7u6pW+tt7zACAFQRhqQQMQp4CAgAAQqICAgAAgBUEwaiSAgICAAA8LIAVBGGogBmpCAjcDACAGQQhqIQYMAAsLdAIBfwJ+I4CAgIAAQRBrIgIkgICAgABCACEDAkACQCABEKuAgIAAIgRCARCsgICAAEUNACACIARCARCAgICAABCtgICAACACKAIAQQFGDQEgACACKQMINwMIQgEhAwsgACADNwMAIAJBEGokgICAgAAPCwAL4gMCAX8CfiOAgICAAEEwayIBJICAgIAAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIADgcAAQIDBAUGAAsgAUEIakGAgMCAAEEDENaAgIAAIAEoAggNCCABQQhqIAEpAxAQ14CAgAAMBgsgAUEgakGDgMCAAEEQENaAgIAAIAEoAiANByABIAEpAyg3AwggASAAKQMINwMYIAEgADUCBEIghkIEhDcDECABQSBqIAFBCGoQ2ICAgAAgASkDKCECIAEpAyAhAwwGCyABQQhqQZOAwIAAQQwQ1oCAgAAgASgCCA0GIAFBCGogASkDEBDXgICAAAwECyABQQhqQZ+AwIAAQQUQ1oCAgAAgASgCCA0FIAFBCGogASkDEBDXgICAAAwDCyABQQhqQaSAwIAAQQ0Q1oCAgAAgASgCCA0EIAFBCGogASkDEBDXgICAAAwCCyABQQhqQbGAwIAAQQwQ1oCAgAAgASgCCA0DIAFBCGogASkDECAANQIEQiCGQgSEENmAgIAADAELIAFBCGpBvYDAgABBDRDWgICAACABKAIIDQIgAUEIaiABKQMQIAA1AgRCIIZCBIQQ2YCAgAALIAEpAxAhAiABKQMIIQMLIANQDQELAAsgAUEwaiSAgICAACACCw8AIAAgARCigICAAEIBUQtdAgF/AX4CQAJAIAGnQf8BcSICQcAARg0AAkAgAkEGRg0AQgEhA0KDkICAgAEhAQwCCyABQgiIIQFCACEDDAELQgAhAyABEJSAgIAAIQELIAAgAzcDACAAIAE3AwgLDgAgACABQgEQr4CAgAALGwAgABCrgICAACABELCAgIAAIAIQgYCAgAAaC0EBAX8jgICAgABBEGsiASSAgICAACABIAAQpIGAgAACQCABKAIAQQFHDQAACyABKQMIIQAgAUEQaiSAgICAACAAC3QCAX8CfiOAgICAAEEQayICJICAgIAAQgAhAwJAAkAgARCrgICAACIEQgIQrICAgABFDQAgAiAEQgIQgICAgAAQrYCAgAAgAigCAEEBRg0BIAAgAikDCDcDCEIBIQMLIAAgAzcDACACQRBqJICAgIAADwsACw4AIAAgAUICEK+AgIAAC58FAQF/I4CAgIAAQfAAayIKJICAgIAAELSAgIAAELWAgIAAIAQQtICAgAAgBSAGEKmAgIAAAkACQCAHIAiEQgBRDQAgCkHAAGoQtICAgABCjuj3HxCCgICAABCDgICAABC2gICAACAKKQNAIgZCAlENAQJAIAanQQFxRQ0AIAopA0ggBBC0gICAACAHIAgQqYCAgAAMAQtCg4CAgLD6ARC3gICAAAALIApBwABqIAEQuICAgAAgCikDSCEEIAopA0AQuYCAgAAQtICAgAAhBhCEgICAACEFIAogB0IAUiAIQgBVIAhQGzoAJCAKIAM3AxggCiACNwMQIAogBDcDCCAKIAE2AiAgCkEIahC6gICAACEIIAogCTcDOCAKIAg3AzAgCiAFNwMoQQAhAQNAAkAgAUEYRw0AQQAhAQJAA0AgAUEYRg0BIApBwABqIAFqIApBKGogAWopAwA3AwAgAUEIaiEBDAALCyAGQo7Ss5UOIApBwABqQQMQp4CAgAAQg4CAgAAhCEEAIQECQANAIAFBGEYNASAKQShqIAFqQgI3AwAgAUEIaiEBDAALCyAIQv8Bg0LMAFINAiAIQeyBwIAAQQMgCkEoakEDELuAgIAAIApBwABqIAopAygQvICAgAAgCigCQEEBcQ0CIAopA2ghCCAKKQNgIQcgCikDWCEEIAopA1AhBiAKQcAAaiAKKQMwEL2AgIAAIAooAkANAiAKKQNIIQUgCkHAAGogCikDOBCtgICAACAKKAJAQQFGDQIgCikDSCEJIAAgBzcDECAAIAY3AwAgACAJNwMoIAAgBTcDICAAIAg3AxggACAENwMIIApB8ABqJICAgIAADwsgCkHAAGogAWpCAjcDACABQQhqIQEMAAsLEL6AgIAAAAtJAgF/AX4QwICAgAACQAJAQQAgABDDgICAACIBQgIQrICAgABFDQAgAUICEICAgIAAIgFC/wGDQs0AUQ0BAAsQxYCAgAAACyABCzYAAkAgAEGEgsCAAEEMEPCAgIAAEIKAgIAAEIOAgIAAIgBC/wGDQs0AUQ0AEL6AgIAAAAsgAAs5AAJAIAFCAlENAAJAIAFC/wGDQs0AUQ0AIABCAjcDAA8LIAAgATcDCCAAQgE3AwAPCyAAQgA3AwALCwAgABCkgICAABoLiwECAX8BfiOAgICAAEEQayICJICAgIAAEMCAgIAAAkACQAJAQQEgARDDgICAACIDQgEQrICAgABFDQAgAiADQgEQgICAgAAQvYCAgAAgAigCAEEBRw0BAAsgAEIANwMADAELIAIpAwghAyAAQgE3AwAgACADNwMIIAEQxICAgAALIAJBEGokgICAgAALHgACQCAAp0EBcUUNAA8LQoOAgICQ+gEQt4CAgAAAC3MCAX8BfiOAgICAAEEwayIBJICAgIAAIAEgACkDADcDKCABIAAxABw3AyAgASAAKQMQNwMYIAEgACkDCDcDECABIAA1AhhCIIZCBIQ3AwhB7IDAgABBBSABQQhqQQUQ8oCAgAAhAiABQTBqJICAgIAAIAILMQACQCACIARGDQAACyAAIAGtQiCGQgSEIAOtQiCGQgSEIAKtQiCGQgSEEJ2AgIAAGgvvAQICfwN+I4CAgIAAQTBrIgIkgICAgABBACEDAkADQCADQRBGDQEgAiADakICNwMAIANBCGohAwwACwtCACEEQgEhBQJAIAFC/wGDQswAUg0AIAFB1IHAgABBAiACQQIQu4CAgAAgAkEQaiACKQMAEKOBgIAAIAIoAhBBAUYNACACKQMoIQEgAikDICEGIAJBEGogAikDCBCjgYCAACACKAIQQQFGDQAgAikDICEEIAAgAikDKDcDKCAAIAQ3AyAgACABNwMYIAAgBjcDEEIAIQVCACEECyAAIAU3AwAgACAENwMIIAJBMGokgICAgAALQgEBfkIBIQICQCABQv8Bg0LIAFINACABEIiAgIAAQoCAgIBwg0KAgICAgARSDQAgACABNwMIQgAhAgsgACACNwMACwkAEMeAgIAAAAtaAwF+AX8BfhDAgICAAAJAAkAgACABEMGAgIAAIgJCARCsgICAACIDRQ0AIAJCARCAgICAACIEQv8Bg0LIAFINASAAIAEQwoCAgAALIAQQhYCAgAAgAxsPCwALSAEBfyOAgICAAEEQayIAJICAgIAAIABBBGoQ/4CAgAACQCAAKAIEQQFHDQAgACgCCCAAKAIMEPiAgIAACyAAQRBqJICAgIAAC4oBAgF/AX4jgICAgABBMGsiAiSAgICAACACQSBqQYCDwIAAQQ8Q1oCAgAACQAJAIAIoAiANACACIAIpAyg3AwggAiABrUIghkIEhDcDGCACIACtQiCGQgSENwMQIAJBIGogAkEIahDYgICAACACKAIgRQ0BCwALIAIpAyghAyACQTBqJICAgIAAIAMLawIBfwJ+I4CAgIAAQRBrIgIkgICAgAAgAkEEahDLgICAAAJAIAIoAgRBAUcNACACNQIMIQMgAjUCCCEEIAAgARDBgICAAEIBIARCIIZCBIQgA0IghkIEhBCGgICAABoLIAJBEGokgICAgAALmwECAX8BfiOAgICAAEEQayICJICAgIAAAkACQAJAAkAgAEEBcUUNACACQb2CwIAAQQQQ1oCAgAAgAigCAA0CIAIgAikDCCABrUIghkIEhBDZgICAAAwBCyACQbWCwIAAQQgQ1oCAgAAgAigCAA0BIAIgAikDCBDXgICAAAsgAikDCCEDIAIpAwBQDQELAAsgAkEQaiSAgICAACADC2sCAX8CfiOAgICAAEEQayIBJICAgIAAIAFBBGoQy4CAgAACQCABKAIEQQFHDQAgATUCDCECIAE1AgghA0EBIAAQw4CAgABCASADQiCGQgSEIAJCIIZCBIQQhoCAgAAaCyABQRBqJICAgIAACwkAEL6AgIAAAAscAAJAIABBf2pB/wFxQQRJDQAQx4CAgAAACyAACwMAAAtNAgF/AX4QwICAgABBACEAAkBBABDJgICAACIBQgIQrICAgABFDQBBASEAAkACQCABQgIQgICAgACnQf8BcQ4CAQIACwALQQAhAAsgAAvCAQIBfwF+I4CAgIAAQRBrIgEkgICAgAACQAJAAkACQAJAAkAgAEH/AXEOAwABAgALIAFBiobAgABBBhDWgICAACABKAIADQMgASABKQMIENeAgIAADAILIAFBkIbAgABBCBDWgICAACABKAIADQIgASABKQMIENeAgIAADAELIAFBmIbAgABBChDWgICAACABKAIADQEgASABKQMIENeAgIAACyABKQMIIQIgASkDAFANAQsACyABQRBqJICAgIAAIAILaQIBfwJ+I4CAgIAAQRBrIgEkgICAgAAgAUEEahDLgICAAAJAIAEoAgRBAUcNACABNQIMIQIgATUCCCEDIAAQq4CAgABCASADQiCGQgSEIAJCIIZCBIQQhoCAgAAaCyABQRBqJICAgIAACwwAIABBAhCtgYCAAAsPABDNgICAABCHgICAABoLRwIBfwF+I4CAgIAAQRBrIgAkgICAgAAQwICAgAAgABDPgICAACAAKQMIIQEgACkDAEGLCBDQgICAACAAQRBqJICAgIAAIAELbAIBfwF+I4CAgIAAQRBrIgAkgICAgAAgABDPgICAACAAKQMIIQEgACkDAEGLCBDQgICAAAJAIAEQzYCAgAAQ0YCAgAANAEKDgICA4IABELeAgIAAAAsgARCHgICAABogAEEQaiSAgICAACABCxAAEMCAgIAAIAAQ1YCAgAALKQACQCAAp0EBcUUNAA8LIAFB+ndqrUIghkKDgICA4IABfBC3gICAAAALDQAgACABEJ6AgIAAUAtCAQF/I4CAgIAAQRBrIgAkgICAgAAgABDTgICAAAJAIAApAwBQDQBCg4CAgMCBARC3gICAAAALIABBEGokgICAgAALUwECfhDAgICAAEIAIQECQAJAQQEQ1ICAgAAiAkIAEKyAgIAARQ0AIAJCABCAgICAACIBQv8Bg0LNAFINASAAIAE3AwhCASEBCyAAIAE3AwAPCwALkgECAX8BfiOAgICAAEEQayIBJICAgIAAAkACQAJAAkAgAEEBcUUNACABQZ2FwIAAQQwQ1oCAgAAgASgCAA0CIAEgASkDCBDXgICAAAwBCyABQZiFwIAAQQUQ1oCAgAAgASgCAA0BIAEgASkDCBDXgICAAAsgASkDCCECIAEpAwBQDQELAAsgAUEQaiSAgICAACACC00BAn5CACEBAkACQEEAENSAgIAAIgJCAhCsgICAAEUNACACQgIQgICAgAAiAUL/AYNCzQBSDQEgACABNwMIQgEhAQsgACABNwMADwsAC1ECAX8BfiOAgICAAEEQayIDJICAgIAAIAMgASACEKqBgIAAQgEhBAJAIAMoAgANACAAIAMpAwg3AwhCACEECyAAIAQ3AwAgA0EQaiSAgICAAAtEAQF/I4CAgIAAQRBrIgIkgICAgAAgAiABNwMIIAJBCGpBARCngICAACEBIABCADcDACAAIAE3AwggAkEQaiSAgICAAAtdAgF/AX4jgICAgABBIGsiAiSAgICAACACIAEpAxA3AxggAiABKQMINwMQIAIgASkDADcDCCACQQhqQQMQp4CAgAAhAyAAQgA3AwAgACADNwMIIAJBIGokgICAgAALSAEBfyOAgICAAEEQayIDJICAgIAAIAMgAjcDCCADIAE3AwAgA0ECEKeAgIAAIQIgAEIANwMAIAAgAjcDCCADQRBqJICAgIAAC58BAgF/AX4jgICAgABBEGsiAiSAgICAABCFgICAACEDIAIgADoACyADIAMQiICAgABCgICAgHCDQgSEIAJBC2pBARDbgICAACEDIAIgAUEYdCABQYD+A3FBCHRyIAFBCHZBgP4DcSABQRh2cnI2AgwgAyADEIiAgIAAQoCAgIBwg0IEhCACQQxqQQQQ24CAgAAhAyACQRBqJICAgIAAIAMLHgAgACABIAKtQiCGQgSEIAOtQiCGQgSEEJqAgIAACzEAAkAgABCIgICAAEL/////D1YNABDdgICAAAALIABCBBCJgICAAEIgiKcQxoCAgAALCQAQx4CAgAAAC6kDAgF/An4jgICAgABBIGsiAiSAgICAAEIMIQMCQCABQQUgARCIgICAAEIgiKcQ34CAgAAiARCIgICAAEKAgICAEFQNACABEIqAgIAAIQMLIAJBD2ogAxCLgICAACIBQgRChICAgIACEIyAgIAAEOCAgIAAAkACQCACLQAPQQFGDQAgAikAGCEDIAIpABAhBCACQQ9qIAFChICAgIACQoSAgICABBCMgICAABDggICAACACLQAPQQFGDQAgBCADhEIAUg0BIAIpABAiAUI4hiABQoD+A4NCKIaEIAFCgID8B4NCGIYgAUKAgID4D4NCCIaEhCABQgiIQoCAgPgPgyABQhiIQoCA/AeDhCABQiiIQoD+A4MgAUI4iISEhCIDQn9XDQEgACACKQAYIgFCOIYgAUKA/gODQiiGhCABQoCA/AeDQhiGIAFCgICA+A+DQgiGhIQgAUIIiEKAgID4D4MgAUIYiEKAgPwHg4QgAUIoiEKA/gODIAFCOIiEhIQ3AwAgACADNwMIIAJBIGokgICAgAAPCxC+gICAAAALQoOAgIAgELeAgIAAAAscACAAIAGtQiCGQgSEIAKtQiCGQgSEEIyAgIAAC9kBAgN/AX4jgICAgABBEGsiAiSAgICAAEEBIQMCQCABEIiAgIAAQoCAgIBwg0KAgICAgAJSDQAgAkEIakIANwMAIAJCADcDACAAQQFqIQRBACEDAkADQCABEIiAgIAAQoCAgIAQVA0BIAEQn4CAgAAhBSABQQEQjoGAgAAhAQJAIANBEEYNACACIANqIAVCIIg8AAAgA0EBaiEDDAELC0EQEKmBgIAAAAsgBCACKQMANwAAIARBCGogAkEIaikDADcAAEEAIQMLIAAgAzoAACACQRBqJICAgIAAC+8CAgF/AX4jgICAgABBMGsiAiSAgICAABCFgICAACEDIAJBgAY7ARAgAyADEIiAgIAAQoCAgIBwg0IEhCACQRBqQQIQ24CAgABChICAgBAQjYCAgAAhAyACQoCAgICA4MCGwAA3AwggAkIANwMAIAIgAEI4hjcDGCACQgA3AxACQAJAIAAgAYRCAFINACACQYAiOwEuIAMgAxCIgICAAEKAgICAcINCBIQgAkEuakECENuAgIAAQoSAgIAQEI2AgIAAIQAgACAAEIiAgIAAQoCAgIBwg0IEhCACQRAQ24CAgAAhAAwBCyACQYDCADsBLiADIAMQiICAgABCgICAgHCDQgSEIAJBLmpBAhDbgICAAEKEgICAEBCNgICAACEAIAAgABCIgICAAEKAgICAcINCBIQgAkEQENuAgIAAIQAgACAAEIiAgIAAQoCAgIBwg0IEhCACQRBqQRAQ24CAgAAhAAsgAkEwaiSAgICAACAAC14CAX8BfiOAgICAAEEQayICJICAgIAAIAIgABDegICAAAJAIAEpAwAgAikDAFogASkDCCIAIAIpAwgiA1kgACADURsNAEKDgICAMBC3gICAAAALIAJBEGokgICAgAALaAIBfwF+I4CAgIAAQSBrIgIkgICAgAAgAiABNwMIIAIgADYCBCACQQE2AgAgAkEQaiACEKqAgIAAAkAgAikDECIBUA0AIAIQyoCAgAALIAIpAxghAyACQSBqJICAgIAAIANCACABpxsLRwEBfyOAgICAAEEQayIDJICAgIAAIAMgATcDCCADIAA2AgQgA0EBNgIAIAMgAhCugICAACADEMqAgIAAIANBEGokgICAgAALagICfwF+I4CAgIAAQRBrIgAkgICAgAAgAEECNgIAQQAhAQJAIAAQq4CAgAAiAkICEKyAgIAARQ0AQQEhAQJAAkAgAkICEICAgIAAp0H/AXEOAgECAAsAC0EAIQELIABBEGokgICAgAAgAQtAAQF/I4CAgIAAQRBrIgIkgICAgAAgAkEGNgIAIAIgADYCBCACIAEQroCAgAAgAhDKgICAACACQRBqJICAgIAACwgAEM2AgIAACz4CAX8BfiOAgICAAEEQayIAJICAgIAAIAAQz4CAgAAgACkDACAAKQMIEOmAgIAAIQEgAEEQaiSAgICAACABCw0AIAFCAiAAp0EBcRsLPgIBfwF+I4CAgIAAQRBrIgAkgICAgAAgABDTgICAACAAKQMAIAApAwgQ6YCAgAAhASAAQRBqJICAgIAAIAELPAEBfgJAIABC/wGDQs0AUQ0AAAsQwICAgAAQzoCAgAAhARDSgICAACAAEOyAgIAAIAEgABDtgICAAEICCw4AQQAgAEICEPSAgIAAC2ECAX8BfiOAgICAAEEQayICJICAgIAAQcmDwIAAQRUQ8ICAgAAQ8YCAgAAhAyACIAA3AwggAiABNwMAIANB8IPAgABBAiACQQIQ8oCAgAAQjoCAgAAaIAJBEGokgICAgAAL/AICAX8CfiOAgICAAEEgayICJICAgIAAAkACQAJAIABC/wGDQs0AUg0AIAFC/wGDQgRSDQAQwICAgAAQzoCAgAAhAwJAAkAgAUL/////D1YNACACQQhqENOAgIAAIAIpAxAhASACKQMIQYkIENCAgIAAIAEgABDRgICAAEUNAxDvgICAAEG0hMCAAEEcEPCAgIAAEPGAgIAAIQAgAiADNwMQIAIgATcDCCAAQeyEwIAAQQIgAkEIakECEPKAgIAAEI6AgIAAGgwBCxDzgICAACABQiCIp0kNA0EBIABCABD0gICAAEEBENSAgIAAQgAgAUKEgICAcIMiASABEIaAgIAAGkGAhMCAAEEWEPCAgIAAEPGAgIAAIQQgAiABNwMYIAIgAzcDECACIAA3AwggBEGchMCAAEEDIAJBCGpBAxDygICAABCOgICAABoLIAJBIGokgICAgABCAg8LAAtCg4CAgPCAARC3gICAAAALQoOAgICAgQEQt4CAgAAACxMAQQEQ1ICAgABCABCPgICAABoLRQIBfwF+I4CAgIAAQRBrIgIkgICAgAAgAiAAIAEQqoGAgAACQCACKAIAQQFHDQAACyACKQMIIQMgAkEQaiSAgICAACADC2MDAX8BfgF/I4CAgIAAQRBrIgEkgICAgAAgASAANwMAQgIhAkEBIQMCQANAIANFDQEgA0F/aiEDIAAhAgwACwsgASACNwMIIAFBCGpBARCngICAACEAIAFBEGokgICAgAAgAAsuAAJAIAEgA0YNAAALIACtQiCGQgSEIAKtQiCGQgSEIAGtQiCGQgSEEJyAgIAACzMBAn4QoICAgAAhAAJAEKGAgIAAQiCIIgEgAEIgiCIAVA0AIAGnIACnaw8LEL6AgIAAAAsVACAAENSAgIAAIAEgAhCBgICAABoLiAECAX8CfiOAgICAAEEQayIAJICAgIAAEMCAgIAAIAAQ04CAgAAgACkDCCEBIAApAwBBiQgQ0ICAgAAgARCHgICAABogABDVgICAAAJAIAAoAgANABDFgICAAAALIAApAwghAhDvgICAACABEOyAgIAAIAIgARDtgICAACAAQRBqJICAgIAAQgILhAECAX8CfiOAgICAAEEQayIAJICAgIAAEMCAgIAAEM6AgIAAIQEQ0oCAgABBABDUgICAAEICEI+AgIAAGkH8hMCAAEETEPCAgIAAEPGAgIAAIQIgACABNwMIIAJBkIXAgABBASAAQQhqQQEQ8oCAgAAQjoCAgAAaIABBEGokgICAgABCAgsxAAJAIABC/wGDQgRSDQAgAUL/AYNCBFINACAAQiCIpyABQiCIpxD4gICAAEICDwsACxsAIACtQiCGQgSEIAGtQiCGQgSEEKOAgIAAGgu8BAEFfyOAgICAAEHQAGsiAiSAgICAACACQShqIAAQ+oCAgAACQCACKAIoQQJGDQAgAkEIakEIaiACQShqQQhqIgMoAgA2AgAgAiACKQIoNwMIIAJBKGogARD6gICAACACKAIoQQJGDQAgAkEYakEIaiADKAIANgIAIAIgAikCKDcDGBDMgICAABDAgICAAAJAAkACQBDIgICAAA0AEPOAgIAAIgNBgPuAAyADQYD7gANJGyEEIAIgAkEYajYCLCACIAJBCGo2AihBACEDA0AgA0EIRg0DAkAgAkEoaiADaigCACIFKAIAQQFxRQ0AIAUoAggiBiAESw0DIAUoAgQgBksNAwsgA0EEaiEDDAALC0KDgICA0P8AELeAgIAAAAtCg4CAgMD/ABC3gICAAAALAkACQCACKAIIQQFHDQAgAigCDCACKAIQEPuAgIAADAELQQEQyYCAgABCAhCPgICAABoLAkACQCACKAIYQQFHDQAgAigCHCACKAIgEPyAgIAADAELQQIQyYCAgABCAhCPgICAABoLIAJBKGpBCGogAkEIakEIaigCADYCACACQTxqIAJBGGpBCGooAgA2AgAgAiACKQMINwMoIAIgAikDGDcCNEHEhcCAAEEPEPCAgIAAEPGAgIAAIQAgAkEoahD9gICAACEBIAIgAkE0ahD9gICAADcDSCACIAE3A0AgAEHohcCAAEECIAJBwABqQQIQ8oCAgAAQjoCAgAAaIAJB0ABqJICAgIAAQgIPCwALaAEBfyOAgICAAEEQayICJICAgIAAAkACQCABQgJRDQAgAkEEaiABEKuBgIAAAkAgAigCBEUNACAAQQI2AgAMAgsgACACKQIINwIEIABBATYCAAwBCyAAQQA2AgALIAJBEGokgICAgAALDgBBASAAIAEQroGAgAALDgBBAiAAIAEQroGAgAALQwIBfwF+I4CAgIAAQRBrIgEkgICAgAAgASAAEICBgIAAAkAgASgCAEEBRw0AAAsgASkDCCECIAFBEGokgICAgAAgAgugAQICfwF+I4CAgIAAQcAAayIAJICAgIAAEMCAgIAAIABBCGoQ/4CAgAAgAEEUaiIBEMuAgIAAIABBMGogAEEIahCAgYCAAAJAAkAgACgCMA0AIAApAzghAiAAQTBqIAEQgIGAgAAgACgCMEEBRw0BCwALIAAgACkDODcDKCAAIAI3AyAgAEEgakECEKeAgIAAIQIgAEHAAGokgICAgAAgAgsMACAAQQEQrYGAgAALMAACQCABKAIAQQFHDQAgACABKAIEIAEoAggQrIGAgAAPCyAAQgA3AwAgAEICNwMIC4gBAQF/I4CAgIAAQRBrIgAkgICAgAAQzICAgAAQwICAgAACQBDIgICAAEUNAEKDgICA4P8AELeAgIAAAAtBABDJgICAAEIBQgIQgYCAgAAaQfiFwIAAQRIQ8ICAgAAQ8YCAgABBBEEAIABBCGpBABDygICAABCOgICAABogAEEQaiSAgICAAEICCwkAEMiAgIAArQt8AgF/AX4jgICAgABBIGsiACSAgICAABDAgICAACAAQRBqEISBgIAAAkACQCAAKAIQDQAgACkDGCEBIABBEGoQhIGAgAAgACgCEEEBRw0BCwALIAAgACkDGDcDCCAAIAE3AwAgAEECEKeAgIAAIQEgAEEgaiSAgICAACABCwwAIABCARCkgYCAAAsIABC0gICAAAtRAQF/I4CAgIAAQRBrIgEkgICAgAACQCAAQv8Bg0IEUQ0AAAsgASAAQiCIpxC4gICAACABKQMAIAEpAwgQ6YCAgAAhACABQRBqJICAgIAAIAAL/wEEAX8BfgF/AX4jgICAgABBEGsiAiSAgICAAAJAIABC/wGDQgRSDQACQAJAIAFCAlINAEIAIQEMAQsgAiABEL2AgIAAIAIoAgBBAUYNASACKQMIIQNCASEBCxDMgICAABDAgICAAEEBIABCIIinIgQQw4CAgAAhBQJAAkAgAVANACAFIANCARCBgICAABogBBDEgICAAAwBCyAFQgEQj4CAgAAaC0KO8qq88Naq6wAQ8YCAgAAhBSACIAEgAxDpgICAADcDCCACIABChICAgHCDNwMAIAVByILAgABBAiACQQIQ8oCAgAAQjoCAgAAaIAJBEGokgICAgABCAg8LAAtnAgF/AX4jgICAgABBEGsiASSAgICAACABIAAQtoCAgAACQCABKQMAIgBCAlINAAALIAEpAwghAhDMgICAABDAgICAABC0gICAABCEgICAACAAIAIQiYGAgAAgAUEQaiSAgICAAEICC7YBAwF/AX4BfyOAgICAAEEgayIEJICAgIAAQZCCwIAAQQwQ8ICAgAAhBSAEIAIgAxDpgICAADcDCCAEIAE3AwBBACEGA0ACQCAGQRBHDQBBACEGAkADQCAGQRBGDQEgBEEQaiAGaiAEIAZqKQMANwMAIAZBCGohBgwACwsgACAFIARBEGpBAhCngICAABCogICAACAEQSBqJICAgIAADwsgBEEQaiAGakICNwMAIAZBCGohBgwACwsvAAJAIABC/wGDQgRSDQAgAUL/AYNCBFINACAAQiCIpyABQiCIpxC/gICAAA8LAAu6AwcBfwN+AX8BfgF/AX4BfyOAgICAAEEgayIBJICAgIAAAkACQCAAQv8Bg0LLAFINABDMgICAABDAgICAACAAEJCAgIAAQiCIIQJCACEDAkADQCADIAJRDQEgACADQiCGQgSEEJGAgIAAIQRBACEFAkADQCAFQRhGDQEgAUEIaiAFakICNwMAIAVBCGohBQwACwtBASEFAkAgBEL/AYNCzABSDQAgBEHogsCAAEEDIAFBCGpBAxC7gICAACABKQMIIgRC/wGDQgRSDQAgASkDECIGQv8Bg0IEUg0AIAcgBkIgiKcgASkDGCIGQv8Bg0LIAFIiBRshByAIIAYgBRshCCAJIARCIIinIAUbIQkLIANC/////w9RDQMgBQ0DIAEgBzYCFCABIAk2AhAgASAINwMIIAFBCGoQjIGAgAAgCSAHEMGAgIAAIAhCARCBgICAABogCSAHEMKAgIAAIANCAXwhAwwACwtBj4PAgABBExDwgICAABDxgICAACEDIAEgADcDCCADQbiDwIAAQQEgAUEIakEBEPKAgIAAEI6AgIAAGiABQSBqJICAgIAAQgIPCwALEL6AgIAAAAvWAQIBfwF+I4CAgIAAQRBrIgEkgICAgAACQAJAAkACQCAAKQMAIgIQiICAgABC/////x9YDQAgAkEAQQIQ34CAgAAiAhCIgICAAEKAgICAcINCgICAgCBSDQEgAUEAOwEOIAIQiICAgABCgICAgHCDQoCAgIAgUg0CIAIgAUEOakECEKeBgIAAIAEvAQ5BgAZHDQMgAUEQaiSAgICAAA8LQoOAgICA/QAQt4CAgAAAC0KDgICAgIIBELeAgIAAAAsQqIGAgAAAC0KDgICAgPoBELeAgIAAAAvYAQEBfyOAgICAAEEQayIDJICAgIAAAkACQCAAQv8Bg0IEUg0AIAFC/wGDQgRSDQAgAkL/AYNCyABSDQAgAyACNwMIEMCAgIAAAkAgAEIgiKcgAUIgiKcQv4CAgAAiABCIgICAAEKAgICAEFQNAAJAIAIQiICAgABCgICAgBBaDQAgACECDAELIAIQiICAgABC/////x9YDQIgA0EIahCMgYCAACAAIAJBAhCOgYCAABCSgICAACECCyADQRBqJICAgIAAIAIPCwALQoOAgICA+gEQt4CAgAAACyUAIAAgAa1CIIZCBIQgABCIgICAAEKAgICAcINCBIQQjICAgAALgwIBAX8jgICAgABBEGsiAySAgICAAAJAAkACQCAAQv8Bg0LNAFINACABQv8Bg0LNAFINACACQv8Bg0LNAFINAEGAyx5BgNIfEPuAgIAAQYDLHkGA0h8Q/ICAgABBABDUgICAAEICEKyAgIAADQEgABDsgICAAEEAIAMQw4CAgAAgAUICEIGAgIAAGiABEISAgIAAQgEgAhCJgYCAACABQo7SrhUQgoCAgAAQg4CAgAAiAUL/AYNCBFINAiADQQA2AgAgAxCrgICAACABQoSAgIBwg0ICEIGAgIAAGiADQRBqJICAgIAAQgIPCwALQoOAgICggQEQt4CAgAAACxC+gICAAAAL/QMCBH8BfiOAgICAAEHgAGsiBCSAgICAAAJAIABC/wGDQgRSDQAgAUL/AYNCBFINACACQv8Bg0LIAFINAEEAIQVBASADp0H/AXEiBkEAR0EBdCAGQQFGGyIGQQJGDQAQwICAgAAgAUIgiKcQxoCAgAAQkYGAgAAQ2oCAgAAhASAEQTBqIABCIIinIgcQuICAgAAgBCkDOCEAIAQpAzAQuYCAgAAQtICAgAAhAxCEgICAACEIIAQgBjoAHCAEIAI3AxAgBCABNwMIIAQgADcDACAEIAc2AhggBCAEELqAgIAANwMoIAQgCDcDIAJAAkADQAJAIAVBEEcNAEEAIQUCQANAIAVBEEYNASAEQTBqIAVqIARBIGogBWopAwA3AwAgBUEIaiEFDAALCyAEQTBqIANCjtS52u4GIARBMGpBAhCngICAABCDgICAABC8gICAACAEKAIwQQFxDQIgBCkDWCEAIAQpA1AhASAEQTBqIAQpA0AgBCkDSBCSgYCAACAEKAIwDQQgBCkDOCECIARBMGogASAAEJKBgIAAIAQoAjBBAUcNAwwECyAEQTBqIAVqQgI3AwAgBUEIaiEFDAALCxC+gICAAAALIAQgBCkDODcDCCAEIAI3AwBB1IHAgABBAiAEQQIQ8oCAgAAhACAEQeAAaiSAgICAACAADwsAC20CAX8BfiOAgICAAEEQayIAJICAgIAAEMCAgIAAIABBADYCAAJAAkAgABCrgICAACIBQgIQrICAgABFDQAgAUICEICAgIAAIgFC/wGDQgRRDQEACxDFgICAAAALIABBEGokgICAgAAgAUIgiKcLWwACQAJAIAFCgICAgICAgMAAfEL//////////wBWDQAgASABhSACIAFCP4eFhEIAUg0AIAFCCIZCC4QhAQwBCyACIAEQmICAgAAhAQsgAEIANwMAIAAgATcDCAv0AQMBfwN+AX8jgICAgABBMGsiBSSAgICAAAJAAkAgAEL/AYNCzQBSDQAgAUL/AYNCBFINACACQv8Bg0IEUg0AIANC/wGDQsgAUg0AIAUgBBC8gICAACAFKAIAQQFxDQAgBSkDKCEEIAUpAyAhBiAFKQMYIQcgBSkDECEIEMCAgIAAIAAQh4CAgAAaIAFCIIinIgkQlIGAgABCAXwiAUIAUQ0BIAkgARDmgICAACAFIAkgAkIgiKcQxoCAgAAQkYGAgAAQ2oCAgAAgAyAAIAggByAGIAQgABCzgICAACAFQTBqJICAgIAAQgIPCwALEL6AgIAAAAtnAgF/An4jgICAgABBIGsiASSAgICAABDAgICAACABQQY2AgAgASAANgIEIAFBEGogARCqgICAAAJAIAEpAxAiAlANACABEMqAgIAACyABKQMYIQMgAUEgaiSAgICAACADQgAgAqcbC2sBAn8jgICAgABBEGsiASSAgICAAAJAQQEgAKdB/wFxIgJBAEdBAXQgAkEBRhsiAkECRw0AAAsQzICAgAAQwICAgAAgAUECNgIAIAEQq4CAgAAgAq1CAhCBgICAABogAUEQaiSAgICAAEICC+sCAwJ/An4BfyOAgICAAEHQAGsiAySAgICAAAJAIABC/wGDQgRSDQAgA0EoaiABEL2AgIAAIAMoAihBAUYNACADKQMwIQEgA0EoaiACEK2AgIAAIAMoAihBAUYNACAAQiCIpyEEIAMpAzAhBRDMgICAABDAgICAABCEgICAACECELSAgIAAIQYgAyAFELCAgIAANwMgIAMgATcDGCADIABChICAgHCDNwMQIAMgAjcDCCADIAI3AwBBACEHAkADQAJAIAdBKEcNAEEAIQcCQANAIAdBKEYNASADQShqIAdqIAMgB2opAwA3AwAgB0EIaiEHDAALCyAGQo7qrpgOIANBKGpBBRCngICAABCogICAAAJAEOWAgIAARQ0AIAQgARDjgICAAEIBfCIAUA0DIAQgASAAEOSAgIAACyADQdAAaiSAgICAAEICDwsgA0EoaiAHakICNwMAIAdBCGohBwwACwsQvoCAgAAACwALDwAQkYGAgACtQiCGQgSECw4AEJmBgIAAELCAgIAAC1ECAn8BfiOAgICAAEEgayIAJICAgIAAEMCAgIAAIABBAzYCACAAQRBqIAAQsYCAgAAgACgCECEBIAApAxghAiAAQSBqJICAgIAAIAJCACABGwsOABCbgYCAABCwgICAAAtRAgJ/AX4jgICAgABBIGsiACSAgICAABDAgICAACAAQQQ2AgAgAEEQaiAAELGAgIAAIAAoAhAhASAAKQMYIQIgAEEgaiSAgICAACACQgAgARsLIwACQCAAQv8Bg0IEUQ0AAAsgAEIgiKcQnYGAgAAQsICAgAALZwIBfwJ+I4CAgIAAQSBrIgEkgICAgAAQwICAgAAgAUEFNgIAIAEgADYCBCABQRBqIAEQqoCAgAACQCABKQMQIgJQDQAgARDKgICAAAsgASkDGCEDIAFBIGokgICAgAAgA0IAIAKnGwsjAAJAIABC/wGDQgRRDQAACyAAQiCIpxCUgYCAABCwgICAAAuPAQIBfwF+I4CAgIAAQRBrIgIkgICAgAACQAJAIABC/wGDQgRSDQAgAiABEL2AgIAAIAIoAgBBAUYNACACKQMIIQMQwICAgABCACEBAkAQ5YCAgABFDQAgAEIgiKcgAxDjgICAAEIBfCIBUA0CCyABELCAgIAAIQAgAkEQaiSAgICAACAADwsACxC+gICAAAALfgMBfwF+AX8jgICAgABBIGsiASSAgICAACABIAAQoYGAgAACQCABKAIAQQFGDQAgASkDCCECIAEoAhghAxDAgICAACABIAMQuICAgABCACEAAkAgASgCAEEBRw0AIAEpAwggAhDRgICAAK0hAAsgAUEgaiSAgICAACAADwsAC+IBAgJ/An4jgICAgABBMGsiAiSAgICAAEEAIQMCQANAIANBGEYNASACQQhqIANqQgI3AwAgA0EIaiEDDAALC0IBIQQCQCABQv8Bg0LMAFINACABQaiBwIAAQQMgAkEIakEDELuAgIAAIAJBIGogAikDCBCtgICAACACKAIgDQAgAikDKCEBIAJBIGogAikDEBC9gICAACACKAIgDQAgAikDGCIFQv8Bg0IEUg0AIAIpAyghBCAAIAE3AxAgACAENwMIIAAgBUIgiD4CGEIAIQQLIAAgBDcDACACQTBqJICAgIAAC7MIAwJ/A34BfyOAgICAAEHwAGsiBiSAgICAAAJAAkACQAJAIABC/wGDQs0AUg0AIAZBEGogARChgYCAACAGKAIQQQFGDQAgBigCKCEHIAYpAyAhCCAGKQMYIQEgBkEQaiACEL2AgIAAIAYoAhBBAUYNACADQv8Bg0LIAFINACAEQv8Bg0LIAFINACAGKQMYIQkgBkEQaiAFEKOBgIAAIAYoAhBBAUYNACAGKQMoIQIgBikDICEEEMCAgIAAEISAgIAAIQUQtICAgAAhCiAAEIeAgIAAGgJAIAQgAoRCAFENACAKELWAgIAAIAAgBSAEIAIQpYCAgAALIAZBEGogBxC4gICAAAJAIAYoAhBBAUcNACAGKQMYIAEQ0YCAgABFDQAgBkHIAGogCBCkgYCAACAGKAJIQQFGDQEgBikDUCEAIAYgATcDGCAGIAA3AxAgBiAHrUIghkIEhDcDIEGogcCAAEEDIAZBEGpBAxDygICAACEAIAYgAzcDaCAGIAk3A2AgBiAFNwNYIAYgADcDUCAGIAU3A0hBACELA0ACQCALQShHDQBBACELAkADQCALQShGDQEgBkEQaiALaiAGQcgAaiALaikDADcDACALQQhqIQsMAAsLIApCju6mtYwFIAZBEGpBBRCngICAABCogICAACAGIAI3AwggBiAENwMAIAcgARDjgICAACEAEOWAgIAARQ0EIABCAXwiBVANBSAIIAVRDQRCg4CAgBAQt4CAgAAACyAGQRBqIAtqQgI3AwAgC0EIaiELDAALC0KDgICAoPoBELeAgIAAAAsACwJAIAggAFgNACAHIAEgCBDkgICAAAsQhICAgAAhARCZgYCAACEIIAcQnYGAgAAhACAIQgF8IghQDQAgBkEDNgIQIAZBEGogCBCygICAACAAQgF8IghQDQAgBkEFNgIQIAYgBzYCFCAGQRBqIAgQroCAgAAgBkEQahDKgICAAAJAAkACQCADENyAgIAAQf8BcUF/ag4EAQACAAELELSAgIAAIQhBnILAgABBDBDwgICAACECIAYgAzcDaCAGQgQ3A2AgBiAJNwNYIAYgATcDUCAGIAE3A0hBACELA0ACQCALQShHDQBBACELAkADQCALQShGDQEgBkEQaiALaiAGQcgAaiALaikDADcDACALQQhqIQsMAAsLIAggAiAGQRBqQQUQp4CAgAAQqICAgAAMBQsgBkEQaiALakICNwMAIAtBCGohCwwACwsgAyAGEOKAgIAADAILIAMgBhDigICAACAHEJSBgIAAQgF8IgNQDQAgByADEOaAgIAAQgpCABDhgICAACEDIAZBEGogB0EBEJGBgIAAENqAgIAAQowUEIuAgIAAEJKAgIAAIAMgASAEIAJCAEIAIAEQs4CAgAAMAQsQvoCAgAAACyAGQfAAaiSAgICAAEICC30CAX8BfgJAAkACQAJAIAGnQf8BcSICQcUARg0AIAJBC0cNAiAAIAFCP4c3AxggACABQgiHNwMQDAELIAEQloCAgAAhAyABEJeAgIAAIQEgACADNwMYIAAgATcDEAtCACEBDAELIABCg5CAgIABNwMIQgEhAQsgACABNwMACzsAAkACQCABQv//////////AFYNACABQgiGQgaEIQEMAQsgARCTgICAACEBCyAAQgA3AwAgACABNwMIC2oBAn8jgICAgABBIGsiAySAgICAACADIAAQoYGAgAACQCADKAIAQQFGDQAgAUL/AYNCyABSDQAgAkL/AYNCzQBSDQAQwICAgAAQhICAgAAgAhDRgICAACEEIANBIGokgICAgAAgBK0PCwAL4QUDAX8DfgF/I4CAgIAAQeAAayIHJICAgIAAAkACQCAAQv8Bg0LNAFINACABQv8Bg0LNAFINACAHIAIQvYCAgAAgBygCAEEBRg0AIANC/wGDQgRSDQAgBEL/AYNCyABSDQAgBUL/AYNCyABSDQAgBykDCCEIIAcgBhCjgYCAACAHKAIAQQFGDQAgBykDGCECIAcpAxAhBRDAgICAACAAEIeAgIAAGhCEgICAACEGELSAgIAAIQlBqILAgABBDRDwgICAACEKIAcgBDcDWCAHIANChICAgHCDNwNQIAcgCDcDSCAHIAE3A0AgByAGNwM4QQAhCwJAAkADQAJAIAtBKEcNAEEAIQsCQANAIAtBKEYNASAHIAtqIAdBOGogC2opAwA3AwAgC0EIaiELDAALCyAJIAogB0EFEKeAgIAAEKiAgIAAAkAgBVAgAkIAUyACUBsNACAJELWAgIAAIAAgBiAFIAIQpYCAgAALAkACQCAEENyAgIAAIgtB/wFxQX5qDgMBAAEAC0KDgICAwAAQt4CAgAAACyAHIAQQ3oCAgAAgBSAHKQMAVCACIAcpAwgiAFMgAiAAURsNBRCbgYCAAEIBfCIAUA0DIAdBBDYCACAHIAAQsoCAgAACQCALQf8BcUEERw0AIAdBADYCACAEQoSAgIAQQoSAgIDQABCMgICAACIEEIiAgIAAQoCAgIBwg0KAgICAwABSDQMgBCAHQQQQp4GAgAAgBygCACILQRh0IAtBgP4DcUEIdHIgC0EIdkGA/gNxIAtBGHZyciILEJSBgIAAQgF8IgRQDQQgCyAEEOaAgIAAEISAgIAAIQQgByALQQEQkYGAgAAQ2oCAgABCAEIAEOGAgIAAIAQgBSACQgBCACAEELOAgIAACyAHQeAAaiSAgICAAEICDwsgByALakICNwMAIAtBCGohCwwACwsQqIGAgAAACxC+gICAAAALAAtCg4CAgDAQt4CAgAAACx8AIABCBCABrUIghkIEhCACrUIghkIEhBCbgICAABoLCQAQvoCAgAAACwkAEMeAgIAAAAvbAQIBfgR/AkACQCACQQlLDQBCACEDIAIhBCABIQUDQAJAIAQNACADQgiGQg6EIQMMAwtBASEGAkAgBS0AACIHQd8ARg0AAkAgB0FQakH/AXFBCkkNAAJAIAdBv39qQf8BcUEaSQ0AIAdBn39qQf8BcUEZSw0EIAdBRWohBgwCCyAHQUtqIQYMAQsgB0FSaiEGCyADQgaGIAatQv8Bg4QhAyAEQX9qIQQgBUEBaiEFDAALCyABrUIghkIEhCACrUIghkIEhBCZgICAACEDCyAAQgA3AwAgACADNwMIC60BAgJ/AX4jgICAgABBEGsiAiSAgICAAEEAIQMCQANAIANBEEYNASACIANqQgI3AwAgA0EIaiEDDAALC0EBIQMCQCABQv8Bg0LMAFINACABQbSFwIAAQQIgAkECELuAgIAAIAIpAwAiAUL/AYNCBFINACACKQMIIgRC/wGDQgRSDQAgACABQiCIpzYCCCAAIARCIIg+AgRBACEDCyAAIAM2AgAgAkEQaiSAgICAAAtgAgF/AX4jgICAgABBEGsiAySAgICAACADIAGtQiCGQgSENwMIIAMgAq1CIIZCBIQ3AwBBtIXAgABBAiADQQIQ8oCAgAAhBCAAQgA3AwAgACAENwMIIANBEGokgICAgAALdwICfwF+I4CAgIAAQRBrIgIkgICAgABBACEDAkACQCABEMmAgIAAIgRCAhCsgICAAEUNACACQQRqIARCAhCAgICAABCrgYCAAEEBIQMgAigCBEEBRg0BIAAgAikCCDcCBAsgACADNgIAIAJBEGokgICAgAAPCwALVgIBfwF+I4CAgIAAQRBrIgMkgICAgAAgABDJgICAACEEIAMgASACEKyBgIAAAkAgAygCAEEBRw0AAAsgBCADKQMIQgIQgYCAgAAaIANBEGokgICAgAALC6wGAQBBgIDAAAuiBkVJRE1heFJlY2VpdmVkTm9uY2VPcmRlcmVkTm9uY2VDb3VudENvbXBvc2VkQ291bnRJbmJvdW5kQ291bnRPdXRib3VuZENvdW50bWVzc2FnZWRzdF9laWRwYXlfaW5fenJvcmVjZWl2ZXIAAFEAEAAHAAAASgAQAAcAAABgARAABwAAAFgAEAAKAAAAYgAQAAgAAABub25jZXNlbmRlcnNyY19laWQAAJQAEAAFAAAAmQAQAAYAAACfABAABwAAAG5hdGl2ZV9mZWV6cm9fZmVlAAAAwAAQAAoAAADKABAABwAAAGZlZWd1aWQA5AAQAAMAAADnABAABAAAAJQAEAAFAAAAbmF0aXZlX3Rva2Vuc2V0X2RlbGVnYXRlc2VuZF9jb21wb3NlY2xlYXJfY29tcG9zZUVuZHBvaW50UGVlcmVpZHBlZXJBARAAAwAAAEQBEAAEAAAAbXNnX3R5cGVvcHRpb25zAEEBEAADAAAAWAEQAAgAAABgARAABwAAAEVuZm9yY2VkT3B0aW9uc2VuZm9yY2VkX29wdGlvbl9zZXRlbmZvcmNlZF9vcHRpb25fcGFyYW1zogEQABYAAAB0aHJlc2hvbGRvd25lcnNoaXBfdHJhbnNmZXJyZWRuZXdfb3duZXJvbGRfb3duZXLeARAACQAAAOcBEAAJAAAAb3duZXJzaGlwX3RyYW5zZmVycmluZ3R0bAAAAN4BEAAJAAAA5wEQAAkAAAAWAhAAAwAAAG93bmVyc2hpcF90cmFuc2Zlcl9jYW5jZWxsZWRjYW5jZWxsZWRfcGVuZGluZ19vd25lcm93bmVyUAIQABcAAABnAhAABQAAAG93bmVyc2hpcF9yZW5vdW5jZWQA5wEQAAkAAABPd25lclBlbmRpbmdPd25lcmV4dGVuZF90bwAAqQIQAAkAAADAARAACQAAAHR0bF9jb25maWdzX3NldGluc3RhbmNlcGVyc2lzdGVudAAAANMCEAAIAAAA2wIQAAoAAAB0dGxfY29uZmlnc19mcm96ZW5Gcm96ZW5JbnN0YW5jZVBlcnNpc3RlbnQAg6oBDmNvbnRyYWN0c3BlY3YwAAAABAAAAAAAAAAAAAAADENvdW50ZXJFcnJvcgAAAAQAAAAAAAAAEE9BcHBJbnZhbGlkTm9uY2UAAAABAAAAAAAAAA9JbnZhbGlkTXNnVmFsdWUAAAAAAgAAAAAAAAARSW5zdWZmaWNpZW50VmFsdWUAAAAAAAADAAAAAAAAAA5JbnZhbGlkTXNnVHlwZQAAAAAABAAAAAIAAAAAAAAAAAAAAA5Db3VudGVyU3RvcmFnZQAAAAAABwAAAAAAAAAAAAAAA0VJRAAAAAABAAAAAAAAABBNYXhSZWNlaXZlZE5vbmNlAAAAAgAAAAQAAAPuAAAAIAAAAAAAAAAAAAAADE9yZGVyZWROb25jZQAAAAAAAAAAAAAABUNvdW50AAAAAAAAAAAAAAAAAAANQ29tcG9zZWRDb3VudAAAAAAAAAEAAAAAAAAADEluYm91bmRDb3VudAAAAAEAAAAEAAAAAQAAAAAAAAANT3V0Ym91bmRDb3VudAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAKYXV0aG9yaXplcgAAAAAAAAAAAAEAAAATAAAAAAAAAD5SZXR1cm5zIHRoZSBjdXJyZW50IG93bmVyIGFkZHJlc3MsIG9yIE5vbmUgaWYgbm8gb3duZXIgaXMgc2V0LgAAAAAABW93bmVyAAAAAAAAAAAAAAEAAAPoAAAAEwAAAAAAAABZUmV0dXJucyB0aGUgcGVuZGluZyBvd25lciBhZGRyZXNzIGZvciAyLXN0ZXAgdHJhbnNmZXIsIG9yIE5vbmUgaWYgbm8gdHJhbnNmZXIgaXMgcGVuZGluZy4AAAAAAAANcGVuZGluZ19vd25lcgAAAAAAAAAAAAABAAAD6AAAABMAAAAAAAABK1RyYW5zZmVycyBvd25lcnNoaXAgaW1tZWRpYXRlbHkgdG8gYSBuZXcgYWRkcmVzcy4KClVzZSB3aXRoIGNhdXRpb24gLSBpZiB5b3UgdHJhbnNmZXIgdG8gYSB3cm9uZyBhZGRyZXNzLCBvd25lcnNoaXAgaXMgbG9zdCBmb3JldmVyLgpDb25zaWRlciB1c2luZyBgcHJvcG9zZV9vd25lcnNoaXBfdHJhbnNmZXJgIGluc3RlYWQuCgojIFBhbmljcwotIGBPd25lck5vdFNldGAgaWYgbm8gb3duZXIgaXMgY3VycmVudGx5IHNldAotIGBUcmFuc2ZlckluUHJvZ3Jlc3NgIGlmIGEgMi1zdGVwIHRyYW5zZmVyIGlzIGluIHByb2dyZXNzAAAAABJ0cmFuc2Zlcl9vd25lcnNoaXAAAAAAAAEAAAAAAAAACW5ld19vd25lcgAAAAAAABMAAAAAAAAAAAAAAlxQcm9wb3NlcyBhbiBvd25lcnNoaXAgdHJhbnNmZXIgdG8gYSBuZXcgYWRkcmVzcy4KClRoZSBuZXcgb3duZXIgbXVzdCBjYWxsIGBhY2NlcHRfb3duZXJzaGlwKClgIHdpdGhpbiBgdHRsYCBsZWRnZXJzCnRvIGNvbXBsZXRlIHRoZSB0cmFuc2Zlci4gVGhlIHBlbmRpbmcgdHJhbnNmZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGV4cGlyZSBhZnRlci4KCiMgQXJndW1lbnRzCi0gYG5ld19vd25lcmAgLSBUaGUgcHJvcG9zZWQgbmV3IG93bmVyCi0gYHR0bGAgLSBOdW1iZXIgb2YgbGVkZ2VycyB0aGUgbmV3IG93bmVyIGhhcyB0byBhY2NlcHQuClVzZSBgMGAgdG8gY2FuY2VsIGEgcGVuZGluZyB0cmFuc2ZlciAobmV3X293bmVyIG11c3QgbWF0Y2ggcGVuZGluZykuCgojIFBhbmljcwotIGBPd25lck5vdFNldGAgaWYgbm8gb3duZXIgaXMgY3VycmVudGx5IHNldAotIGBOb1BlbmRpbmdUcmFuc2ZlcmAgd2hlbiBjYW5jZWxsaW5nIGFuZCBubyBwZW5kaW5nIHRyYW5zZmVyIGV4aXN0cwotIGBJbnZhbGlkVHRsYCBpZiB0dGwgZXhjZWVkcyBtYXggVFRMCi0gYEludmFsaWRQZW5kaW5nT3duZXJgIHdoZW4gY2FuY2VsbGluZyB3aXRoIHdyb25nIG5ld19vd25lciBhZGRyZXNzAAAAGnByb3Bvc2Vfb3duZXJzaGlwX3RyYW5zZmVyAAAAAAACAAAAAAAAAAluZXdfb3duZXIAAAAAAAATAAAAAAAAAAN0dGwAAAAABAAAAAAAAAAAAAAAuUFjY2VwdHMgYSBwZW5kaW5nIDItc3RlcCBvd25lcnNoaXAgdHJhbnNmZXIuCgpNdXN0IGJlIGNhbGxlZCBieSB0aGUgcGVuZGluZyBvd25lciBiZWZvcmUgdGhlIFRUTCBleHBpcmVzLgoKIyBQYW5pY3MKLSBgTm9QZW5kaW5nVHJhbnNmZXJgIGlmIHRoZXJlIGlzIG5vIHBlbmRpbmcgdHJhbnNmZXIgKG9yIGl0IGV4cGlyZWQpAAAAAAAAEGFjY2VwdF9vd25lcnNoaXAAAAAAAAAAAAAAAAAAAACkUGVybWFuZW50bHkgcmVub3VuY2VzIG93bmVyc2hpcC4KCiMgUGFuaWNzCi0gYE93bmVyTm90U2V0YCBpZiBubyBvd25lciBpcyBjdXJyZW50bHkgc2V0Ci0gYFRyYW5zZmVySW5Qcm9ncmVzc2AgaWYgYSAyLXN0ZXAgdHJhbnNmZXIgaXMgaW4gcHJvZ3Jlc3MgKGNhbmNlbCBpdCBmaXJzdCkAAAAScmVub3VuY2Vfb3duZXJzaGlwAAAAAAAAAAAAAAAAAAAAAAClRXh0ZW5kcyB0aGUgaW5zdGFuY2UgVFRMLgoKIyBBcmd1bWVudHMKCiogYHRocmVzaG9sZGAgLSBUaGUgdGhyZXNob2xkIHRvIGV4dGVuZCB0aGUgVFRMIChpZiBjdXJyZW50IFRUTCBpcyBiZWxvdyB0aGlzLCBleHRlbmQpLgoqIGBleHRlbmRfdG9gIC0gVGhlIFRUTCB0byBleHRlbmQgdG8uAAAAAAAAE2V4dGVuZF9pbnN0YW5jZV90dGwAAAAAAgAAAAAAAAAJdGhyZXNob2xkAAAAAAAABAAAAAAAAAAJZXh0ZW5kX3RvAAAAAAAABAAAAAAAAAAAAAABj1NldHMgVFRMIGNvbmZpZ3MgZm9yIGluc3RhbmNlIGFuZCBwZXJzaXN0ZW50IHN0b3JhZ2UuCgotIGBOb25lYCB2YWx1ZXMgcmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIGNvbmZpZyAoZGlzYWJsZXMgYXV0by1leHRlbnNpb24gZm9yIHRoYXQgdHlwZSkKLSBWYWxpZGF0ZXMgdGhhdCBgdGhyZXNob2xkIDw9IGV4dGVuZF90byA8PSBNQVhfVFRMYAoKIyBBcmd1bWVudHMKLSBgaW5zdGFuY2VgIC0gVFRMIGNvbmZpZyBmb3IgaW5zdGFuY2Ugc3RvcmFnZQotIGBwZXJzaXN0ZW50YCAtIFRUTCBjb25maWcgZm9yIHBlcnNpc3RlbnQgc3RvcmFnZQoKIyBQYW5pY3MKLSBgVHRsQ29uZmlnRnJvemVuYCBpZiBjb25maWdzIGFyZSBmcm96ZW4KLSBgSW52YWxpZFR0bENvbmZpZ2AgaWYgdmFsaWRhdGlvbiBmYWlscwAAAAAPc2V0X3R0bF9jb25maWdzAAAAAAIAAAAAAAAACGluc3RhbmNlAAAD6AAAB9AAAAAJVHRsQ29uZmlnAAAAAAAAAAAAAApwZXJzaXN0ZW50AAAAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAAAAAAAAAAAAEhSZXR1cm5zIHRoZSBjdXJyZW50IFRUTCBjb25maWdzIGFzIChpbnN0YW5jZV9jb25maWcsIHBlcnNpc3RlbnRfY29uZmlnKS4AAAALdHRsX2NvbmZpZ3MAAAAAAAAAAAEAAAPtAAAAAgAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAADhUGVybWFuZW50bHkgZnJlZXplcyBUVEwgY29uZmlncywgcHJldmVudGluZyBhbnkgZnV0dXJlIG1vZGlmaWNhdGlvbnMuCgpUaGlzIGlzIGlycmV2ZXJzaWJsZSBhbmQgcHJvdmlkZXMgaW1tdXRhYmlsaXR5IGd1YXJhbnRlZXMgdG8gdXNlcnMuCkVtaXRzIGBUdGxDb25maWdzRnJvemVuYCBldmVudC4KCiMgUGFuaWNzCi0gYFR0bENvbmZpZ0FscmVhZHlGcm96ZW5gIGlmIGFscmVhZHkgZnJvemVuAAAAAAAAEmZyZWV6ZV90dGxfY29uZmlncwAAAAAAAAAAAAAAAAAAAAAAJ1JldHVybnMgd2hldGhlciBUVEwgY29uZmlncyBhcmUgZnJvemVuLgAAAAAVaXNfdHRsX2NvbmZpZ3NfZnJvemVuAAAAAAAAAAAAAAEAAAABAAAAAAAAAK5SZXRyaWV2ZXMgdGhlIE9BcHAgdmVyc2lvbiBpbmZvcm1hdGlvbi4KCiMgUmV0dXJucwpBIHR1cGxlIGNvbnRhaW5pbmc6Ci0gYHNlbmRlcl92ZXJzaW9uYDogVGhlIHZlcnNpb24gb2YgdGhlIE9BcHBTZW5kZXIKLSBgcmVjZWl2ZXJfdmVyc2lvbmA6IFRoZSB2ZXJzaW9uIG9mIHRoZSBPQXBwUmVjZWl2ZXIAAAAAAAxvYXBwX3ZlcnNpb24AAAAAAAAAAQAAA+0AAAACAAAABgAAAAYAAAAAAAAAbFJldHJpZXZlcyB0aGUgTGF5ZXJaZXJvIGVuZHBvaW50IGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBPQXBwLgoKIyBSZXR1cm5zClRoZSBMYXllclplcm8gZW5kcG9pbnQgYWRkcmVzcwAAAAhlbmRwb2ludAAAAAAAAAABAAAAEwAAAAAAAADBUmV0cmlldmVzIHRoZSBwZWVyIChPQXBwKSBhc3NvY2lhdGVkIHdpdGggYSBjb3JyZXNwb25kaW5nIGVuZHBvaW50LgoKIyBBcmd1bWVudHMKKiBgZWlkYCAtIFRoZSBlbmRwb2ludCBJRAoKIyBSZXR1cm5zClRoZSBwZWVyIGFkZHJlc3MgKE9BcHAgaW5zdGFuY2UpIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBlbmRwb2ludAAAAAAAAARwZWVyAAAAAQAAAAAAAAADZWlkAAAAAAQAAAABAAAD6AAAA+4AAAAgAAAAAAAAAOVTZXRzIG9yIHJlbW92ZXMgdGhlIHBlZXIgYWRkcmVzcyAoT0FwcCBpbnN0YW5jZSkgZm9yIGEgY29ycmVzcG9uZGluZyBlbmRwb2ludC4KCiMgQXJndW1lbnRzCiogYGVpZGAgLSBUaGUgZW5kcG9pbnQgSUQKKiBgcGVlcmAgLSBUaGUgYWRkcmVzcyBvZiB0aGUgcGVlciB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgZW5kcG9pbnQsIG9yIE5vbmUgdG8gcmVtb3ZlIHRoZSBwZWVyAAAAAAAACHNldF9wZWVyAAAAAgAAAAAAAAADZWlkAAAAAAQAAAAAAAAABHBlZXIAAAPoAAAD7gAAACAAAAAAAAAAAAAAAI5TZXRzIHRoZSBkZWxlZ2F0ZSBhZGRyZXNzIGZvciB0aGUgT0FwcCBDb3JlLgoKIyBBcmd1bWVudHMKKiBgZGVsZWdhdGVgIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIGRlbGVnYXRlIHRvIGJlIHNldCwgb3IgTm9uZSB0byByZW1vdmUgdGhlIGRlbGVnYXRlAAAAAAAMc2V0X2RlbGVnYXRlAAAAAQAAAAAAAAAIZGVsZWdhdGUAAAPoAAAAEwAAAAAAAAAAAAAA2VJldHJpZXZlcyB0aGUgZW5mb3JjZWQgb3B0aW9ucyBmb3IgYSBnaXZlbiBlbmRwb2ludCBhbmQgbWVzc2FnZSB0eXBlLgoKIyBBcmd1bWVudHMKKiBgZWlkYCAtIFRoZSBlbmRwb2ludCBJRAoqIGBtc2dfdHlwZWAgLSBUaGUgT0FwcCBtZXNzYWdlIHR5cGUKCiMgUmV0dXJucwpUaGUgZW5mb3JjZWQgb3B0aW9ucyBmb3IgdGhlIGdpdmVuIGVuZHBvaW50IGFuZCBtZXNzYWdlIHR5cGUAAAAAAAAQZW5mb3JjZWRfb3B0aW9ucwAAAAIAAAAAAAAAA2VpZAAAAAAEAAAAAAAAAAhtc2dfdHlwZQAAAAQAAAABAAAADgAAAAAAAAKbU2V0cyB0aGUgZW5mb3JjZWQgb3B0aW9ucyBmb3Igc3BlY2lmaWMgZW5kcG9pbnQgYW5kIG1lc3NhZ2UgdHlwZSBjb21iaW5hdGlvbnMuCgpPbmx5IHRoZSBgYXV0aG9yaXplcmAgb2YgdGhlIE9BcHAgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbi4KUHJvdmlkZXMgYSB3YXkgZm9yIHRoZSBPQXBwIHRvIGVuZm9yY2UgdGhpbmdzIGxpa2UgcGF5aW5nIGZvciBQcmVDcmltZSwgQU5EL09SIG1pbmltdW0gZHN0IGx6UmVjZWl2ZSBnYXMgYW1vdW50cyBldGMuClRoZXNlIGVuZm9yY2VkIG9wdGlvbnMgY2FuIHZhcnkgYXMgdGhlIHBvdGVudGlhbCBvcHRpb25zL2V4ZWN1dGlvbiBvbiB0aGUgcmVtb3RlIG1heSBkaWZmZXIgYXMgcGVyIHRoZSBtc2dfdHlwZS4KZS5nLiBBbW91bnQgb2YgbHpSZWNlaXZlKCkgZ2FzIG5lY2Vzc2FyeSB0byBkZWxpdmVyIGEgbHpDb21wb3NlKCkgbWVzc2FnZSBhZGRzIG92ZXJoZWFkIHlvdSBkb24ndCB3YW50IHRvIHBheQppZiB5b3UgYXJlIG9ubHkgbWFraW5nIGEgc3RhbmRhcmQgTGF5ZXJaZXJvIG1lc3NhZ2UgaWUuIGx6UmVjZWl2ZSgpIFdJVEhPVVQgc2VuZENvbXBvc2UoKS4KCiMgQXJndW1lbnRzCiogYG9wdGlvbnNgIC0gQSB2ZWN0b3Igb2YgRW5mb3JjZWRPcHRpb25QYXJhbSBzdHJ1Y3R1cmVzIHNwZWNpZnlpbmcgZW5mb3JjZWQgb3B0aW9ucwAAAAAUc2V0X2VuZm9yY2VkX29wdGlvbnMAAAABAAAAAAAAAAdvcHRpb25zAAAAA+oAAAfQAAAAE0VuZm9yY2VkT3B0aW9uUGFyYW0AAAAAAAAAAAAAAAJ6Q29tYmluZXMgb3B0aW9ucyBmb3IgYSBnaXZlbiBlbmRwb2ludCBhbmQgbWVzc2FnZSB0eXBlLgoKSWYgdGhlcmUgaXMgYW4gZW5mb3JjZWQgbHpSZWNlaXZlIG9wdGlvbjoKLSB7Z2FzX2xpbWl0OiAyMDBrLCB2YWx1ZTogMSBYTE19IEFORCBhIGNhbGxlciBzdXBwbGllcyBhIGx6UmVjZWl2ZSBvcHRpb246IHtnYXNfbGltaXQ6IDEwMGssIHZhbHVlOiAwLjUgWExNfQotIFRoZSByZXN1bHRpbmcgb3B0aW9ucyB3aWxsIGJlIHtnYXNfbGltaXQ6IDMwMGssIHZhbHVlOiAxLjUgWExNfSB3aGVuIHRoZSBtZXNzYWdlIGlzIGV4ZWN1dGVkIG9uIHRoZSByZW1vdGUgbHpfcmVjZWl2ZSgpIGZ1bmN0aW9uLgpUaGUgcHJlc2VuY2Ugb2YgZHVwbGljYXRlZCBvcHRpb25zIGlzIGhhbmRsZWQgb2ZmLWNoYWluIGluIHRoZSB2ZXJpZmllci9leGVjdXRvci4KCiMgQXJndW1lbnRzCiogYGVpZGAgLSBUaGUgZW5kcG9pbnQgSUQKKiBgbXNnX3R5cGVgIC0gVGhlIE9BcHAgbWVzc2FnZSB0eXBlCiogYGV4dHJhX29wdGlvbnNgIC0gQWRkaXRpb25hbCBvcHRpb25zIHBhc3NlZCBieSB0aGUgY2FsbGVyCgojIFJldHVybnMKVGhlIGNvbWJpbmF0aW9uIG9mIGNhbGxlciBzcGVjaWZpZWQgb3B0aW9ucyBBTkQgZW5mb3JjZWQgb3B0aW9ucwAAAAAAD2NvbWJpbmVfb3B0aW9ucwAAAAADAAAAAAAAAANlaWQAAAAABAAAAAAAAAAIbXNnX3R5cGUAAAAEAAAAAAAAAA1leHRyYV9vcHRpb25zAAAAAAAADgAAAAEAAAAOAAAAAAAAAAAAAAANX19jb25zdHJ1Y3RvcgAAAAAAAAMAAAAAAAAABW93bmVyAAAAAAAAEwAAAAAAAAAIZW5kcG9pbnQAAAATAAAAAAAAAAhkZWxlZ2F0ZQAAABMAAAAAAAAAAAAAAAAAAAAFcXVvdGUAAAAAAAAEAAAAAAAAAAdkc3RfZWlkAAAAAAQAAAAAAAAACG1zZ190eXBlAAAABAAAAAAAAAAHb3B0aW9ucwAAAAAOAAAAAAAAAApwYXlfaW5fenJvAAAAAAABAAAAAQAAB9AAAAAMTWVzc2FnaW5nRmVlAAAAAAAAAAAAAAAJaW5jcmVtZW50AAAAAAAABQAAAAAAAAAGY2FsbGVyAAAAAAATAAAAAAAAAAdkc3RfZWlkAAAAAAQAAAAAAAAACG1zZ190eXBlAAAABAAAAAAAAAAHb3B0aW9ucwAAAAAOAAAAAAAAAANmZWUAAAAH0AAAAAxNZXNzYWdpbmdGZWUAAAAAAAAAAAAAAAAAAAARc2V0X29yZGVyZWRfbm9uY2UAAAAAAAABAAAAAAAAAA1vcmRlcmVkX25vbmNlAAAAAAAAAQAAAAAAAAAAAAAAAAAAABJza2lwX2luYm91bmRfbm9uY2UAAAAAAAMAAAAAAAAAB3NyY19laWQAAAAABAAAAAAAAAAGc2VuZGVyAAAAAAPuAAAAIAAAAAAAAAAFbm9uY2UAAAAAAAAGAAAAAAAAAAAAAAAAAAAAA2VpZAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAVjb3VudAAAAAAAAAAAAAABAAAABgAAAAAAAAAAAAAADmNvbXBvc2VkX2NvdW50AAAAAAAAAAAAAQAAAAYAAAAAAAAAAAAAAA1pbmJvdW5kX2NvdW50AAAAAAAAAQAAAAAAAAADZWlkAAAAAAQAAAABAAAABgAAAAAAAAAAAAAADm91dGJvdW5kX2NvdW50AAAAAAABAAAAAAAAAANlaWQAAAAABAAAAAEAAAAGAAAAAAAAAAAAAAAKbmV4dF9ub25jZQAAAAAAAgAAAAAAAAAHc3JjX2VpZAAAAAAEAAAAAAAAAAZzZW5kZXIAAAAAA+4AAAAgAAAAAQAAAAYAAAAAAAAAt0NoZWNrcyBpZiBhIG1lc3NhZ2luZyBwYXRoIGNhbiBiZSBpbml0aWFsaXplZCBmb3IgdGhlIGdpdmVuIG9yaWdpbi4KCiMgQXJndW1lbnRzCiogYG9yaWdpbmAgLSBUaGUgb3JpZ2luIG9mIHRoZSBtZXNzYWdlCgojIFJldHVybnMKVHJ1ZSBpZiB0aGUgcGF0aCBjYW4gYmUgaW5pdGlhbGl6ZWQsIGZhbHNlIG90aGVyd2lzZQAAAAAVYWxsb3dfaW5pdGlhbGl6ZV9wYXRoAAAAAAAAAQAAAAAAAAAGb3JpZ2luAAAAAAfQAAAABk9yaWdpbgAAAAAAAQAAAAEAAAAAAAADI0VudHJ5IHBvaW50IGZvciByZWNlaXZpbmcgbWVzc2FnZXMgb3IgcGFja2V0cyBmcm9tIHRoZSBMYXllclplcm8gZW5kcG9pbnQuCgpUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjYWxscyBgY2xlYXJfcGF5bG9hZF9hbmRfdHJhbnNmZXJgIHRvIHZhbGlkYXRlIHRoZSBtZXNzYWdlCmFuZCBjbGVhciBpdCBmcm9tIHRoZSBlbmRwb2ludCwgdGhlbiBkZWxlZ2F0ZXMgdG8gYF9fbHpfcmVjZWl2ZWAgZm9yIGFwcGxpY2F0aW9uIGxvZ2ljLgoKIyBBcmd1bWVudHMKKiBgZXhlY3V0b3JgIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIGV4ZWN1dG9yIGZvciB0aGUgcmVjZWl2ZWQgbWVzc2FnZQoqIGBvcmlnaW5gIC0gVGhlIG9yaWdpbiBpbmZvcm1hdGlvbiBjb250YWluaW5nIHRoZSBzb3VyY2UgZW5kcG9pbnQgYW5kIHNlbmRlciBhZGRyZXNzOgotIGBzcmNfZWlkYDogVGhlIHNvdXJjZSBjaGFpbiBlbmRwb2ludCBJRAotIGBzZW5kZXJgOiBUaGUgc2VuZGVyIGFkZHJlc3Mgb24gdGhlIHNvdXJjZSBjaGFpbgotIGBub25jZWA6IFRoZSBub25jZSBvZiB0aGUgbWVzc2FnZQoqIGBndWlkYCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJlY2VpdmVkIExheWVyWmVybyBtZXNzYWdlCiogYG1lc3NhZ2VgIC0gVGhlIHBheWxvYWQgb2YgdGhlIHJlY2VpdmVkIG1lc3NhZ2UKKiBgZXh0cmFfZGF0YWAgLSBBZGRpdGlvbmFsIGFyYml0cmFyeSBkYXRhIHByb3ZpZGVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIGV4ZWN1dG9yCiogYHZhbHVlYCAtIFRoZSBuYXRpdmUgdG9rZW4gdmFsdWUgc2VudCB3aXRoIHRoZSBtZXNzYWdlAAAAAApsel9yZWNlaXZlAAAAAAAGAAAAAAAAAAhleGVjdXRvcgAAABMAAAAAAAAABm9yaWdpbgAAAAAH0AAAAAZPcmlnaW4AAAAAAAAAAAAEZ3VpZAAAA+4AAAAgAAAAAAAAAAdtZXNzYWdlAAAAAA4AAAAAAAAACmV4dHJhX2RhdGEAAAAAAA4AAAAAAAAABXZhbHVlAAAAAAAACwAAAAAAAAAAAAAB7EluZGljYXRlcyB3aGV0aGVyIGFuIGFkZHJlc3MgaXMgYW4gYXBwcm92ZWQgY29tcG9zZU1zZyBzZW5kZXIgdG8gdGhlIEVuZHBvaW50LgoKQXBwbGljYXRpb25zIGNhbiBvcHRpb25hbGx5IGNob29zZSB0byBpbXBsZW1lbnQgc2VwYXJhdGUgY29tcG9zZU1zZyBzZW5kZXJzIHRoYXQgYXJlIE5PVCB0aGUgYnJpZGdpbmcgbGF5ZXIuClRoZSBkZWZhdWx0IHNlbmRlciBJUyB0aGUgT0FwcFJlY2VpdmVyIGltcGxlbWVudGVyLgoKIyBBcmd1bWVudHMKKiBgb3JpZ2luYCAtIFRoZSBvcmlnaW4gaW5mb3JtYXRpb24gY29udGFpbmluZyB0aGUgc291cmNlIGVuZHBvaW50IGFuZCBzZW5kZXIgYWRkcmVzcwoqIGBtZXNzYWdlYCAtIFRoZSBselJlY2VpdmUgcGF5bG9hZAoqIGBzZW5kZXJgIC0gVGhlIHNlbmRlciBhZGRyZXNzIHRvIGNoZWNrCgojIFJldHVybnMKVHJ1ZSBpZiB0aGUgc2VuZGVyIGlzIGEgdmFsaWQgY29tcG9zZU1zZyBzZW5kZXIsIGZhbHNlIG90aGVyd2lzZQAAABVpc19jb21wb3NlX21zZ19zZW5kZXIAAAAAAAADAAAAAAAAAAZvcmlnaW4AAAAAB9AAAAAGT3JpZ2luAAAAAAAAAAAAB21lc3NhZ2UAAAAADgAAAAAAAAAGc2VuZGVyAAAAAAATAAAAAQAAAAEAAAAAAAAAAAAAAApsel9jb21wb3NlAAAAAAAHAAAAAAAAAAhleGVjdXRvcgAAABMAAAAAAAAABGZyb20AAAATAAAAAAAAAARndWlkAAAD7gAAACAAAAAAAAAABWluZGV4AAAAAAAABAAAAAAAAAAHbWVzc2FnZQAAAAAOAAAAAAAAAApleHRyYV9kYXRhAAAAAAAOAAAAAAAAAAV2YWx1ZQAAAAAAAAsAAAAAAAAABQAAAAAAAAAAAAAAClBhY2tldFNlbnQAAAAAAAEAAAALcGFja2V0X3NlbnQAAAAAAwAAAAAAAAAOZW5jb2RlZF9wYWNrZXQAAAAAAA4AAAAAAAAAAAAAAAdvcHRpb25zAAAAAA4AAAAAAAAAAAAAAAxzZW5kX2xpYnJhcnkAAAATAAAAAAAAAAIAAAAFAAAAAAAAAAAAAAAOUGFja2V0VmVyaWZpZWQAAAAAAAEAAAAPcGFja2V0X3ZlcmlmaWVkAAAAAAMAAAAAAAAABm9yaWdpbgAAAAAH0AAAAAZPcmlnaW4AAAAAAAEAAAAAAAAACHJlY2VpdmVyAAAAEwAAAAEAAAAAAAAADHBheWxvYWRfaGFzaAAAA+4AAAAgAAAAAAAAAAIAAAAFAAAAAAAAAAAAAAAPUGFja2V0RGVsaXZlcmVkAAAAAAEAAAAQcGFja2V0X2RlbGl2ZXJlZAAAAAIAAAAAAAAABm9yaWdpbgAAAAAH0AAAAAZPcmlnaW4AAAAAAAEAAAAAAAAACHJlY2VpdmVyAAAAEwAAAAEAAAACAAAABQAAAAAAAAAAAAAADkx6UmVjZWl2ZUFsZXJ0AAAAAAABAAAAEGx6X3JlY2VpdmVfYWxlcnQAAAAJAAAAAAAAAAhyZWNlaXZlcgAAABMAAAABAAAAAAAAAAhleGVjdXRvcgAAABMAAAABAAAAAAAAAAZvcmlnaW4AAAAAB9AAAAAGT3JpZ2luAAAAAAABAAAAAAAAAARndWlkAAAD7gAAACAAAAABAAAAAAAAAANnYXMAAAAACwAAAAAAAAAAAAAABXZhbHVlAAAAAAAACwAAAAAAAAAAAAAAB21lc3NhZ2UAAAAADgAAAAAAAAAAAAAACmV4dHJhX2RhdGEAAAAAAA4AAAAAAAAAAAAAAAZyZWFzb24AAAAAAA4AAAAAAAAAAgAAAAUAAAAAAAAAAAAAAAZacm9TZXQAAAAAAAEAAAAHenJvX3NldAAAAAABAAAAAAAAAAN6cm8AAAAAEwAAAAAAAAACAAAABQAAAAAAAAAAAAAAC0RlbGVnYXRlU2V0AAAAAAEAAAAMZGVsZWdhdGVfc2V0AAAAAgAAAAAAAAAEb2FwcAAAABMAAAABAAAAAAAAAAhkZWxlZ2F0ZQAAA+gAAAATAAAAAAAAAAIAAAAFAAAAAAAAAAAAAAATSW5ib3VuZE5vbmNlU2tpcHBlZAAAAAABAAAAFWluYm91bmRfbm9uY2Vfc2tpcHBlZAAAAAAAAAQAAAAAAAAAB3NyY19laWQAAAAABAAAAAEAAAAAAAAABnNlbmRlcgAAAAAD7gAAACAAAAABAAAAAAAAAAhyZWNlaXZlcgAAABMAAAABAAAAAAAAAAVub25jZQAAAAAAAAYAAAABAAAAAgAAAAUAAAAAAAAAAAAAAA5QYWNrZXROaWxpZmllZAAAAAAAAQAAAA9wYWNrZXRfbmlsaWZpZWQAAAAABQAAAAAAAAAHc3JjX2VpZAAAAAAEAAAAAQAAAAAAAAAGc2VuZGVyAAAAAAPuAAAAIAAAAAEAAAAAAAAACHJlY2VpdmVyAAAAEwAAAAEAAAAAAAAABW5vbmNlAAAAAAAABgAAAAEAAAAAAAAADHBheWxvYWRfaGFzaAAAA+gAAAPuAAAAIAAAAAAAAAACAAAABQAAAAAAAAAAAAAAC1BhY2tldEJ1cm50AAAAAAEAAAAMcGFja2V0X2J1cm50AAAABQAAAAAAAAAHc3JjX2VpZAAAAAAEAAAAAQAAAAAAAAAGc2VuZGVyAAAAAAPuAAAAIAAAAAEAAAAAAAAACHJlY2VpdmVyAAAAEwAAAAEAAAAAAAAABW5vbmNlAAAAAAAABgAAAAEAAAAAAAAADHBheWxvYWRfaGFzaAAAA+4AAAAgAAAAAAAAAAIAAAAFAAAAAAAAAAAAAAARTGlicmFyeVJlZ2lzdGVyZWQAAAAAAAABAAAAEmxpYnJhcnlfcmVnaXN0ZXJlZAAAAAAAAQAAAAAAAAAHbmV3X2xpYgAAAAATAAAAAAAAAAIAAAAFAAAAAAAAAAAAAAAVRGVmYXVsdFNlbmRMaWJyYXJ5U2V0AAAAAAAAAQAAABhkZWZhdWx0X3NlbmRfbGlicmFyeV9zZXQAAAACAAAAAAAAAAdkc3RfZWlkAAAAAAQAAAABAAAAAAAAAAduZXdfbGliAAAAABMAAAAAAAAAAgAAAAUAAAAAAAAAAAAAABhEZWZhdWx0UmVjZWl2ZUxpYnJhcnlTZXQAAAABAAAAG2RlZmF1bHRfcmVjZWl2ZV9saWJyYXJ5X3NldAAAAAACAAAAAAAAAAdzcmNfZWlkAAAAAAQAAAABAAAAAAAAAAduZXdfbGliAAAAABMAAAAAAAAAAgAAAAUAAAAAAAAAAAAAABtEZWZhdWx0UmVjZWl2ZUxpYlRpbWVvdXRTZXQAAAAAAQAAAB9kZWZhdWx0X3JlY2VpdmVfbGliX3RpbWVvdXRfc2V0AAAAAAIAAAAAAAAAB3NyY19laWQAAAAABAAAAAEAAAAAAAAAB3RpbWVvdXQAAAAD6AAAB9AAAAAHVGltZW91dAAAAAAAAAAAAgAAAAUAAAAAAAAAAAAAAA5TZW5kTGlicmFyeVNldAAAAAAAAQAAABBzZW5kX2xpYnJhcnlfc2V0AAAAAwAAAAAAAAAGc2VuZGVyAAAAAAATAAAAAQAAAAAAAAAHZHN0X2VpZAAAAAAEAAAAAQAAAAAAAAAHbmV3X2xpYgAAAAPoAAAAEwAAAAAAAAACAAAABQAAAAAAAAAAAAAAEVJlY2VpdmVMaWJyYXJ5U2V0AAAAAAAAAQAAABNyZWNlaXZlX2xpYnJhcnlfc2V0AAAAAAMAAAAAAAAACHJlY2VpdmVyAAAAEwAAAAEAAAAAAAAAB3NyY19laWQAAAAABAAAAAEAAAAAAAAAB25ld19saWIAAAAD6AAAABMAAAAAAAAAAgAAAAUAAAAAAAAAAAAAABhSZWNlaXZlTGlicmFyeVRpbWVvdXRTZXQAAAABAAAAG3JlY2VpdmVfbGlicmFyeV90aW1lb3V0X3NldAAAAAADAAAAAAAAAAhyZWNlaXZlcgAAABMAAAABAAAAAAAAAANlaWQAAAAABAAAAAEAAAAAAAAAB3RpbWVvdXQAAAAD6AAAB9AAAAAHVGltZW91dAAAAAAAAAAAAgAAAAUAAAAAAAAAAAAAAAtDb21wb3NlU2VudAAAAAABAAAADGNvbXBvc2Vfc2VudAAAAAUAAAAAAAAABGZyb20AAAATAAAAAQAAAAAAAAACdG8AAAAAABMAAAABAAAAAAAAAARndWlkAAAD7gAAACAAAAABAAAAAAAAAAVpbmRleAAAAAAAAAQAAAABAAAAAAAAAAdtZXNzYWdlAAAAAA4AAAAAAAAAAgAAAAUAAAAAAAAAAAAAABBDb21wb3NlRGVsaXZlcmVkAAAAAQAAABFjb21wb3NlX2RlbGl2ZXJlZAAAAAAAAAQAAAAAAAAABGZyb20AAAATAAAAAQAAAAAAAAACdG8AAAAAABMAAAABAAAAAAAAAARndWlkAAAD7gAAACAAAAABAAAAAAAAAAVpbmRleAAAAAAAAAQAAAABAAAAAgAAAAUAAAAAAAAAAAAAAA5MekNvbXBvc2VBbGVydAAAAAAAAQAAABBsel9jb21wb3NlX2FsZXJ0AAAACgAAAAAAAAAEZnJvbQAAABMAAAABAAAAAAAAAAJ0bwAAAAAAEwAAAAEAAAAAAAAACGV4ZWN1dG9yAAAAEwAAAAEAAAAAAAAABGd1aWQAAAPuAAAAIAAAAAEAAAAAAAAABWluZGV4AAAAAAAABAAAAAEAAAAAAAAAA2dhcwAAAAALAAAAAAAAAAAAAAAFdmFsdWUAAAAAAAALAAAAAAAAAAAAAAAHbWVzc2FnZQAAAAAOAAAAAAAAAAAAAAAKZXh0cmFfZGF0YQAAAAAADgAAAAAAAAAAAAAABnJlYXNvbgAAAAAADgAAAAAAAAACAAAABAAAAAAAAAAAAAAADUVuZHBvaW50RXJyb3IAAAAAAAAZAAAAL0xpYnJhcnkgaXMgYWxyZWFkeSByZWdpc3RlcmVkIHdpdGggdGhlIGVuZHBvaW50AAAAABFBbHJlYWR5UmVnaXN0ZXJlZAAAAAAAAAEAAAA2Q29tcG9zZSBtZXNzYWdlIGFscmVhZHkgZXhpc3RzIGZvciB0aGlzIEdVSUQgYW5kIGluZGV4AAAAAAANQ29tcG9zZUV4aXN0cwAAAAAAAAIAAAA2Q29tcG9zZSBtZXNzYWdlIG5vdCBmb3VuZCBmb3IgdGhlIGdpdmVuIEdVSUQgYW5kIGluZGV4AAAAAAAPQ29tcG9zZU5vdEZvdW5kAAAAAAMAAAA6RGVmYXVsdCByZWNlaXZlIGxpYnJhcnkgaXMgbm90IHNldCBmb3IgdGhlIHNvdXJjZSBlbmRwb2ludAAAAAAAHERlZmF1bHRSZWNlaXZlTGliVW5hdmFpbGFibGUAAAAEAAAAPERlZmF1bHQgc2VuZCBsaWJyYXJ5IGlzIG5vdCBzZXQgZm9yIHRoZSBkZXN0aW5hdGlvbiBlbmRwb2ludAAAABlEZWZhdWx0U2VuZExpYlVuYXZhaWxhYmxlAAAAAAAABQAAAC9TdXBwbGllZCBuYXRpdmUgdG9rZW4gZmVlIGlzIGxlc3MgdGhhbiByZXF1aXJlZAAAAAAVSW5zdWZmaWNpZW50TmF0aXZlRmVlAAAAAAAABgAAACxTdXBwbGllZCBaUk8gdG9rZW4gZmVlIGlzIGxlc3MgdGhhbiByZXF1aXJlZAAAABJJbnN1ZmZpY2llbnRacm9GZWUAAAAAAAcAAAArVGltZW91dCBleHBpcnkgaXMgaW52YWxpZCAoYWxyZWFkeSBleHBpcmVkKQAAAAANSW52YWxpZEV4cGlyeQAAAAAAAAgAAAAgRmVlIGFtb3VudCBpcyBpbnZhbGlkIChuZWdhdGl2ZSkAAAAQSW52YWxpZEZlZUFtb3VudAAAAAkAAAArQ29tcG9zZSBpbmRleCBleGNlZWRzIG1heGltdW0gYWxsb3dlZCB2YWx1ZQAAAAAMSW52YWxpZEluZGV4AAAACgAAACxOb25jZSBpcyBpbnZhbGlkIGZvciB0aGUgcmVxdWVzdGVkIG9wZXJhdGlvbgAAAAxJbnZhbGlkTm9uY2UAAAALAAAAMFBheWxvYWQgaGFzaCBpcyBpbnZhbGlkIChlbXB0eSBoYXNoIG5vdCBhbGxvd2VkKQAAABJJbnZhbGlkUGF5bG9hZEhhc2gAAAAAAAwAAABBUmVjZWl2ZSBsaWJyYXJ5IGlzIG5vdCB2YWxpZCBmb3IgdGhlIHJlY2VpdmVyIGFuZCBzb3VyY2UgZW5kcG9pbnQAAAAAAAAVSW52YWxpZFJlY2VpdmVMaWJyYXJ5AAAAAAAADQAAADFPcGVyYXRpb24gcmVxdWlyZXMgYSBub24tZGVmYXVsdCAoY3VzdG9tKSBsaWJyYXJ5AAAAAAAAEU9ubHlOb25EZWZhdWx0TGliAAAAAAAADgAAACdMaWJyYXJ5IG11c3Qgc3VwcG9ydCByZWNlaXZpbmcgbWVzc2FnZXMAAAAADk9ubHlSZWNlaXZlTGliAAAAAAAPAAAALExpYnJhcnkgbXVzdCBiZSByZWdpc3RlcmVkIHdpdGggdGhlIGVuZHBvaW50AAAAEU9ubHlSZWdpc3RlcmVkTGliAAAAAAAAEAAAACVMaWJyYXJ5IG11c3Qgc3VwcG9ydCBzZW5kaW5nIG1lc3NhZ2VzAAAAAAAAC09ubHlTZW5kTGliAAAAABEAAAA5TWVzc2FnaW5nIHBhdGggY2Fubm90IGJlIGluaXRpYWxpemVkIGZvciB0aGUgZ2l2ZW4gb3JpZ2luAAAAAAAAFFBhdGhOb3RJbml0aWFsaXphYmxlAAAAEgAAAC9NZXNzYWdlIGNhbm5vdCBiZSB2ZXJpZmllZCBmb3IgdGhlIGdpdmVuIG9yaWdpbgAAAAARUGF0aE5vdFZlcmlmaWFibGUAAAAAAAATAAAAK1BheWxvYWQgaGFzaCBkb2VzIG5vdCBtYXRjaCB0aGUgc3RvcmVkIGhhc2gAAAAAE1BheWxvYWRIYXNoTm90Rm91bmQAAAAAFAAAACdOZXcgdmFsdWUgaXMgdGhlIHNhbWUgYXMgZXhpc3RpbmcgdmFsdWUAAAAACVNhbWVWYWx1ZQAAAAAAABUAAAAvQ2FsbGVyIGlzIG5vdCBhdXRob3JpemVkIChub3QgT0FwcCBvciBkZWxlZ2F0ZSkAAAAADFVuYXV0aG9yaXplZAAAABYAAAArRW5kcG9pbnQgSUQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgbGlicmFyeQAAAAAOVW5zdXBwb3J0ZWRFaWQAAAAAABcAAAA5WlJPIGZlZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvIHdoZW4gcGF5X2luX3pybyBpcyB0cnVlAAAAAAAAClplcm9acm9GZWUAAAAAABgAAAAcWlJPIHRva2VuIGFkZHJlc3MgaXMgbm90IHNldAAAAA5acm9VbmF2YWlsYWJsZQAAAAAAGQAAAAEAAAAtUGFyYW1ldGVycyBmb3Igc2VuZGluZyBhIGNyb3NzLWNoYWluIG1lc3NhZ2UuAAAAAAAAAAAAAA9NZXNzYWdpbmdQYXJhbXMAAAAABQAAACtEZXN0aW5hdGlvbiBlbmRwb2ludCBJRCAoY2hhaW4gaWRlbnRpZmllcikuAAAAAAdkc3RfZWlkAAAAAAQAAAAcVGhlIG1lc3NhZ2UgcGF5bG9hZCB0byBzZW5kLgAAAAdtZXNzYWdlAAAAAA4AAAAhRW5jb2RlZCBleGVjdXRvciBhbmQgRFZOIG9wdGlvbnMuAAAAAAAAB29wdGlvbnMAAAAADgAAADlXaGV0aGVyIHRvIHBheSBmZWVzIGluIFpSTyB0b2tlbiBpbnN0ZWFkIG9mIG5hdGl2ZSB0b2tlbi4AAAAAAAAKcGF5X2luX3pybwAAAAAAAQAAADVSZWNlaXZlciBhZGRyZXNzIG9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiAoMzIgYnl0ZXMpLgAAAAAAAAhyZWNlaXZlcgAAA+4AAAAgAAAAAQAAAE1Tb3VyY2UgbWVzc2FnZSBpbmZvcm1hdGlvbiBpZGVudGlmeWluZyB3aGVyZSBhIGNyb3NzLWNoYWluIG1lc3NhZ2UgY2FtZSBmcm9tLgAAAAAAAAAAAAAGT3JpZ2luAAAAAAADAAAAF05vbmNlIGZvciB0aGlzIHBhdGh3YXkuAAAAAAVub25jZQAAAAAAAAYAAAAuU2VuZGVyIGFkZHJlc3Mgb24gdGhlIHNvdXJjZSBjaGFpbiAoMzIgYnl0ZXMpLgAAAAAABnNlbmRlcgAAAAAD7gAAACAAAAAmU291cmNlIGVuZHBvaW50IElEIChjaGFpbiBpZGVudGlmaWVyKS4AAAAAAAdzcmNfZWlkAAAAAAQAAAABAAAAKEZlZSBzdHJ1Y3R1cmUgZm9yIGNyb3NzLWNoYWluIG1lc3NhZ2luZy4AAAAAAAAADE1lc3NhZ2luZ0ZlZQAAAAIAAAAfRmVlIHBhaWQgaW4gbmF0aXZlIHRva2VuIChYTE0pLgAAAAAKbmF0aXZlX2ZlZQAAAAAACwAAAChGZWUgcGFpZCBpbiBaUk8gdG9rZW4gKExheWVyWmVybyB0b2tlbikuAAAAB3pyb19mZWUAAAAACwAAAAEAAABCUmVjZWlwdCByZXR1cm5lZCBhZnRlciBzdWNjZXNzZnVsbHkgc2VuZGluZyBhIGNyb3NzLWNoYWluIG1lc3NhZ2UuAAAAAAAAAAAAEE1lc3NhZ2luZ1JlY2VpcHQAAAADAAAAKVRoZSBmZWVzIGNoYXJnZWQgZm9yIHNlbmRpbmcgdGhlIG1lc3NhZ2UuAAAAAAAAA2ZlZQAAAAfQAAAADE1lc3NhZ2luZ0ZlZQAAACtHbG9iYWxseSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIG1lc3NhZ2UuAAAAAARndWlkAAAD7gAAACAAAAAkVGhlIG91dGJvdW5kIG5vbmNlIGZvciB0aGlzIHBhdGh3YXkuAAAABW5vbmNlAAAAAAAABgAAAAIAAAA4VHlwZSBvZiBtZXNzYWdlIGxpYnJhcnkgaW5kaWNhdGluZyBzdXBwb3J0ZWQgb3BlcmF0aW9ucy4AAAAAAAAADk1lc3NhZ2VMaWJUeXBlAAAAAAADAAAAAAAAAB9TdXBwb3J0cyBvbmx5IHNlbmRpbmcgbWVzc2FnZXMuAAAAAARTZW5kAAAAAAAAACFTdXBwb3J0cyBvbmx5IHJlY2VpdmluZyBtZXNzYWdlcy4AAAAAAAAHUmVjZWl2ZQAAAAAAAAAALVN1cHBvcnRzIGJvdGggc2VuZGluZyBhbmQgcmVjZWl2aW5nIG1lc3NhZ2VzLgAAAAAAAA5TZW5kQW5kUmVjZWl2ZQAAAAAAAQAAALdWZXJzaW9uIGluZm9ybWF0aW9uIGZvciBhIG1lc3NhZ2UgbGlicmFyeS4KCk5vdGU6IGBtaW5vcmAgYW5kIGBlbmRwb2ludF92ZXJzaW9uYCB1c2UgYHUzMmAgaW5zdGVhZCBvZiBgdThgIGJlY2F1c2UgU3RlbGxhciBkb2VzIG5vdApzdXBwb3J0IGB1OGAgdHlwZXMgaW4gY29udHJhY3QgaW50ZXJmYWNlIGZ1bmN0aW9ucy4AAAAAAAAAABFNZXNzYWdlTGliVmVyc2lvbgAAAAAAAAMAAAAzRW5kcG9pbnQgdmVyc2lvbiAoc2hvdWxkIG5vdCBleGNlZWQgdTg6Ok1BWCA9IDI1NSkuAAAAABBlbmRwb2ludF92ZXJzaW9uAAAABAAAABVNYWpvciB2ZXJzaW9uIG51bWJlci4AAAAAAAAFbWFqb3IAAAAAAAAGAAAAN01pbm9yIHZlcnNpb24gbnVtYmVyIChzaG91bGQgbm90IGV4Y2VlZCB1ODo6TUFYID0gMjU1KS4AAAAABW1pbm9yAAAAAAAABAAAAAEAAAA2VGltZW91dCBjb25maWd1cmF0aW9uIGZvciByZWNlaXZlIGxpYnJhcnkgdHJhbnNpdGlvbnMuAAAAAAAAAAAAB1RpbWVvdXQAAAAAAgAAADNVbml4IHRpbWVzdGFtcCBpbiBzZWNvbmRzIHdoZW4gdGhlIHRpbWVvdXQgZXhwaXJlcy4AAAAABmV4cGlyeQAAAAAABgAAAENUaGUgb2xkIGxpYnJhcnkgYWRkcmVzcyB0aGF0IHJlbWFpbnMgdmFsaWQgZHVyaW5nIHRoZSBncmFjZSBwZXJpb2QuAAAAAANsaWIAAAAAEwAAAAEAAAA1UGFyYW1ldGVycyBmb3Igc2V0dGluZyBtZXNzYWdlIGxpYnJhcnkgY29uZmlndXJhdGlvbi4AAAAAAAAAAAAADlNldENvbmZpZ1BhcmFtAAAAAAADAAAAH1hEUi1lbmNvZGVkIGNvbmZpZ3VyYXRpb24gZGF0YS4AAAAABmNvbmZpZwAAAAAADgAAADBUaGUgdHlwZSBvZiBjb25maWd1cmF0aW9uIChlLmcuLCBleGVjdXRvciwgVUxOKS4AAAALY29uZmlnX3R5cGUAAAAABAAAACdUaGUgZW5kcG9pbnQgSUQgdGhpcyBjb25maWcgYXBwbGllcyB0by4AAAAAA2VpZAAAAAAEAAAAAQAAADFSZXNvbHZlZCBsaWJyYXJ5IGluZm9ybWF0aW9uIHdpdGggZGVmYXVsdCBzdGF0dXMuAAAAAAAAAAAAAA9SZXNvbHZlZExpYnJhcnkAAAAAAgAAAERXaGV0aGVyIHRoaXMgaXMgdGhlIGRlZmF1bHQgbGlicmFyeSAodHJ1ZSkgb3IgT0FwcC1zcGVjaWZpYyAoZmFsc2UpLgAAAAppc19kZWZhdWx0AAAAAAABAAAAHVRoZSByZXNvbHZlZCBsaWJyYXJ5IGFkZHJlc3MuAAAAAAAAA2xpYgAAAAATAAAAAQAAAEhPdXRib3VuZCBwYWNrZXQgY29udGFpbmluZyBhbGwgaW5mb3JtYXRpb24gZm9yIGNyb3NzLWNoYWluIHRyYW5zbWlzc2lvbi4AAAAAAAAADk91dGJvdW5kUGFja2V0AAAAAAAHAAAAGERlc3RpbmF0aW9uIGVuZHBvaW50IElELgAAAAdkc3RfZWlkAAAAAAQAAAAsR2xvYmFsbHkgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgbWVzc2FnZS4AAAAEZ3VpZAAAA+4AAAAgAAAAFFRoZSBtZXNzYWdlIHBheWxvYWQuAAAAB21lc3NhZ2UAAAAADgAAACBPdXRib3VuZCBub25jZSBmb3IgdGhpcyBwYXRod2F5LgAAAAVub25jZQAAAAAAAAYAAAAxUmVjZWl2ZXIgYWRkcmVzcyBvbiBkZXN0aW5hdGlvbiBjaGFpbiAoMzIgYnl0ZXMpLgAAAAAAAAhyZWNlaXZlcgAAA+4AAAAgAAAAH1NlbmRlciBhZGRyZXNzIG9uIHNvdXJjZSBjaGFpbi4AAAAABnNlbmRlcgAAAAAAEwAAABNTb3VyY2UgZW5kcG9pbnQgSUQuAAAAAAdzcmNfZWlkAAAAAAQAAAABAAAAK0EgZmVlIHJlY2lwaWVudCB3aXRoIHRoZSBhbW91bnQgdG8gYmUgcGFpZC4AAAAAAAAAAAxGZWVSZWNpcGllbnQAAAACAAAAFUFtb3VudCBvZiBmZWUgdG8gcGF5LgAAAAAAAAZhbW91bnQAAAAAAAsAAAAfVGhlIGFkZHJlc3MgdG8gc2VuZCB0aGUgZmVlIHRvLgAAAAACdG8AAAAAABMAAAABAAAAPFJlc3VsdCBvZiBzZW5kIG9wZXJhdGlvbiBjb250YWluaW5nIGZlZXMgYW5kIGVuY29kZWQgcGFja2V0LgAAAAAAAAANRmVlc0FuZFBhY2tldAAAAAAAAAMAAAAqVGhlIGVuY29kZWQgcGFja2V0IHJlYWR5IGZvciB0cmFuc21pc3Npb24uAAAAAAAOZW5jb2RlZF9wYWNrZXQAAAAAAA4AAAA/TGlzdCBvZiBuYXRpdmUgdG9rZW4gZmVlIHJlY2lwaWVudHMgKGV4ZWN1dG9yLCBEVk5zLCB0cmVhc3VyeSkuAAAAABVuYXRpdmVfZmVlX3JlY2lwaWVudHMAAAAAAAPqAAAH0AAAAAxGZWVSZWNpcGllbnQAAAAsTGlzdCBvZiBaUk8gdG9rZW4gZmVlIHJlY2lwaWVudHMgKHRyZWFzdXJ5KS4AAAASenJvX2ZlZV9yZWNpcGllbnRzAAAAAAPqAAAH0AAAAAxGZWVSZWNpcGllbnQAAAAEAAAAFE9BcHBFcnJvcjogMjAwMC0yMDk5AAAAAAAAAAlPQXBwRXJyb3IAAAAAAAAEAAAAAAAAAA5JbnZhbGlkT3B0aW9ucwAAAAAH0AAAAAAAAAAGTm9QZWVyAAAAAAfRAAAAAAAAAAhPbmx5UGVlcgAAB9IAAAAAAAAAE1pyb1Rva2VuVW5hdmFpbGFibGUAAAAH0wAAAAIAAAAAAAAAAAAAAA9PQXBwQ29yZVN0b3JhZ2UAAAAAAgAAAAAAAAAAAAAACEVuZHBvaW50AAAAAQAAAAAAAAAEUGVlcgAAAAEAAAAEAAAABQAAAAAAAAAAAAAAB1BlZXJTZXQAAAAAAQAAAAhwZWVyX3NldAAAAAIAAAAAAAAAA2VpZAAAAAAEAAAAAAAAAAAAAAAEcGVlcgAAA+gAAAPuAAAAIAAAAAAAAAACAAAAAQAAAAAAAAAAAAAAE0VuZm9yY2VkT3B0aW9uUGFyYW0AAAAAAwAAAAAAAAADZWlkAAAAAAQAAAAAAAAACG1zZ190eXBlAAAABAAAAAAAAAAHb3B0aW9ucwAAAAAOAAAAAgAAAAAAAAAAAAAAF09BcHBPcHRpb25zVHlwZTNTdG9yYWdlAAAAAAEAAAABAAAAAAAAAA9FbmZvcmNlZE9wdGlvbnMAAAAAAgAAAAQAAAAEAAAABQAAAAAAAAAAAAAAEUVuZm9yY2VkT3B0aW9uU2V0AAAAAAAAAQAAABNlbmZvcmNlZF9vcHRpb25fc2V0AAAAAAEAAAAAAAAAFmVuZm9yY2VkX29wdGlvbl9wYXJhbXMAAAAAA+oAAAfQAAAAE0VuZm9yY2VkT3B0aW9uUGFyYW0AAAAAAAAAAAIAAAAEAAAAHEJ1ZmZlclJlYWRlckVycm9yOiAxMDAwLTEwMDkAAAAAAAAAEUJ1ZmZlclJlYWRlckVycm9yAAAAAAAAAgAAAAAAAAANSW52YWxpZExlbmd0aAAAAAAAA+gAAAAAAAAAFUludmFsaWRBZGRyZXNzUGF5bG9hZAAAAAAAA+kAAAAEAAAAHEJ1ZmZlcldyaXRlckVycm9yOiAxMDEwLTEwMTkAAAAAAAAAEUJ1ZmZlcldyaXRlckVycm9yAAAAAAAAAQAAAAAAAAAVSW52YWxpZEFkZHJlc3NQYXlsb2FkAAAAAAAD8gAAAAQAAAAfVHRsQ29uZmlndXJhYmxlRXJyb3I6IDEwMjAtMTAyOQAAAAAAAAAAFFR0bENvbmZpZ3VyYWJsZUVycm9yAAAAAwAAAAAAAAAQSW52YWxpZFR0bENvbmZpZwAAA/wAAAAAAAAAD1R0bENvbmZpZ0Zyb3plbgAAAAP9AAAAAAAAABZUdGxDb25maWdBbHJlYWR5RnJvemVuAAAAAAP+AAAABAAAABdPd25hYmxlRXJyb3I6IDEwMzAtMTAzOQAAAAAAAAAADE93bmFibGVFcnJvcgAAAAcAAAAAAAAAEUludmFsaWRBdXRob3JpemVyAAAAAAAEBgAAAAAAAAATSW52YWxpZFBlbmRpbmdPd25lcgAAAAQHAAAAAAAAAApJbnZhbGlkVHRsAAAAAAQIAAAAAAAAABFOb1BlbmRpbmdUcmFuc2ZlcgAAAAAABAkAAAAAAAAAD093bmVyQWxyZWFkeVNldAAAAAQKAAAAAAAAAAtPd25lck5vdFNldAAAAAQLAAAAAAAAABJUcmFuc2ZlckluUHJvZ3Jlc3MAAAAABAwAAAAEAAAAGEJ5dGVzRXh0RXJyb3I6IDEwNDAtMTA0OQAAAAAAAAANQnl0ZXNFeHRFcnJvcgAAAAAAAAEAAAAAAAAADkxlbmd0aE1pc21hdGNoAAAAAAQQAAAABAAAABtVcGdyYWRlYWJsZUVycm9yOiAxMDUwLTEwNTkAAAAAAAAAABBVcGdyYWRlYWJsZUVycm9yAAAAAwAAAAAAAAAUSW52YWxpZE1pZ3JhdGlvbkRhdGEAAAQaAAAAAAAAABNNaWdyYXRpb25Ob3RBbGxvd2VkAAAABBsAAAAAAAAADlVwZ3JhZGVzRnJvemVuAAAAAAQcAAAABAAAABhNdWx0aVNpZ0Vycm9yOiAxMDYwLTEwNjkAAAAAAAAADU11bHRpU2lnRXJyb3IAAAAAAAAJAAAAAAAAABJBbHJlYWR5SW5pdGlhbGl6ZWQAAAAABCQAAAAAAAAAEUludmFsaWRBdXRob3JpemVyAAAAAAAEJQAAAAAAAAANSW52YWxpZFNpZ25lcgAAAAAABCYAAAAAAAAADlNpZ25hdHVyZUVycm9yAAAAAAQnAAAAAAAAABNTaWduZXJBbHJlYWR5RXhpc3RzAAAABCgAAAAAAAAADlNpZ25lck5vdEZvdW5kAAAAAAQpAAAAAAAAAB1Ub3RhbFNpZ25lcnNMZXNzVGhhblRocmVzaG9sZAAAAAAABCoAAAAAAAAAD1Vuc29ydGVkU2lnbmVycwAAAAQrAAAAAAAAAA1aZXJvVGhyZXNob2xkAAAAAAAELAAAAAUAAAAwRXZlbnQgZW1pdHRlZCB3aGVuIGEgc2lnbmVyIGlzIGFkZGVkIG9yIHJlbW92ZWQuAAAAAAAAAAlTaWduZXJTZXQAAAAAAAABAAAACnNpZ25lcl9zZXQAAAAAAAIAAAAAAAAABnNpZ25lcgAAAAAD7gAAABQAAAABAAAAAAAAAAZhY3RpdmUAAAAAAAEAAAAAAAAAAgAAAAUAAAA2RXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzaWduYXR1cmUgdGhyZXNob2xkIGlzIGNoYW5nZWQuAAAAAAAAAAAADFRocmVzaG9sZFNldAAAAAEAAAANdGhyZXNob2xkX3NldAAAAAAAAAEAAAAAAAAACXRocmVzaG9sZAAAAAAAAAQAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAA9NdWx0aVNpZ1N0b3JhZ2UAAAAAAgAAAAAAAAAAAAAAB1NpZ25lcnMAAAAAAAAAAAAAAAAJVGhyZXNob2xkAAAAAAAABQAAAFdFdmVudCBlbWl0dGVkIHdoZW4gb3duZXJzaGlwIGlzIHRyYW5zZmVycmVkIChib3RoIHNpbmdsZS1zdGVwIGFuZCB0d28tc3RlcCBjb21wbGV0aW9uKS4AAAAAAAAAABRPd25lcnNoaXBUcmFuc2ZlcnJlZAAAAAEAAAAVb3duZXJzaGlwX3RyYW5zZmVycmVkAAAAAAAAAgAAAAAAAAAJb2xkX293bmVyAAAAAAAAEwAAAAAAAAAAAAAACW5ld19vd25lcgAAAAAAABMAAAAAAAAAAgAAAAUAAAA7RXZlbnQgZW1pdHRlZCB3aGVuIGEgMi1zdGVwIG93bmVyc2hpcCB0cmFuc2ZlciBpcyBwcm9wb3NlZC4AAAAAAAAAABVPd25lcnNoaXBUcmFuc2ZlcnJpbmcAAAAAAAABAAAAFm93bmVyc2hpcF90cmFuc2ZlcnJpbmcAAAAAAAMAAAAAAAAACW9sZF9vd25lcgAAAAAAABMAAAAAAAAAAAAAAAluZXdfb3duZXIAAAAAAAATAAAAAAAAAAAAAAADdHRsAAAAAAQAAAAAAAAAAgAAAAUAAAA8RXZlbnQgZW1pdHRlZCB3aGVuIGEgMi1zdGVwIG93bmVyc2hpcCB0cmFuc2ZlciBpcyBjYW5jZWxsZWQuAAAAAAAAABpPd25lcnNoaXBUcmFuc2ZlckNhbmNlbGxlZAAAAAAAAQAAABxvd25lcnNoaXBfdHJhbnNmZXJfY2FuY2VsbGVkAAAAAgAAAAAAAAAFb3duZXIAAAAAAAATAAAAAAAAAAAAAAAXY2FuY2VsbGVkX3BlbmRpbmdfb3duZXIAAAAAEwAAAAAAAAACAAAABQAAACpFdmVudCBlbWl0dGVkIHdoZW4gb3duZXJzaGlwIGlzIHJlbm91bmNlZC4AAAAAAAAAAAAST3duZXJzaGlwUmVub3VuY2VkAAAAAAABAAAAE293bmVyc2hpcF9yZW5vdW5jZWQAAAAAAQAAAAAAAAAJb2xkX293bmVyAAAAAAAAEwAAAAAAAAACAAAAAgAAAAAAAAAAAAAADk93bmFibGVTdG9yYWdlAAAAAAACAAAAAAAAAAAAAAAFT3duZXIAAAAAAAAAAAAAAAAAAAxQZW5kaW5nT3duZXIAAAABAAAASVRUTCBjb25maWd1cmF0aW9uOiB0aHJlc2hvbGQgKHdoZW4gdG8gZXh0ZW5kKSBhbmQgZXh0ZW5kX3RvICh0YXJnZXQgVFRMKS4AAAAAAAAAAAAACVR0bENvbmZpZwAAAAAAAAIAAAAoVGFyZ2V0IFRUTCBhZnRlciBleHRlbnNpb24gKGluIGxlZGdlcnMpLgAAAAlleHRlbmRfdG8AAAAAAAAEAAAAM1RUTCB0aHJlc2hvbGQgdGhhdCB0cmlnZ2VycyBleHRlbnNpb24gKGluIGxlZGdlcnMpLgAAAAAJdGhyZXNob2xkAAAAAAAABAAAAAUAAAAnRXZlbnQgZW1pdHRlZCB3aGVuIFRUTCBjb25maWdzIGFyZSBzZXQuAAAAAAAAAAANVHRsQ29uZmlnc1NldAAAAAAAAAEAAAAPdHRsX2NvbmZpZ3Nfc2V0AAAAAAIAAAAAAAAACGluc3RhbmNlAAAD6AAAB9AAAAAJVHRsQ29uZmlnAAAAAAAAAAAAAAAAAAAKcGVyc2lzdGVudAAAAAAD6AAAB9AAAAAJVHRsQ29uZmlnAAAAAAAAAAAAAAIAAAAFAAAAKkV2ZW50IGVtaXR0ZWQgd2hlbiBUVEwgY29uZmlncyBhcmUgZnJvemVuLgAAAAAAAAAAABBUdGxDb25maWdzRnJvemVuAAAAAQAAABJ0dGxfY29uZmlnc19mcm96ZW4AAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAAEFR0bENvbmZpZ1N0b3JhZ2UAAAADAAAAAAAAAAAAAAAGRnJvemVuAAAAAAAAAAAAAAAAAAhJbnN0YW5jZQAAAAAAAAAAAAAAClBlcnNpc3RlbnQAAAAAAAIAAAAAAAAAAAAAABJVcGdyYWRlYWJsZVN0b3JhZ2UAAAAAAAIAAAAAAAAAAAAAAAZGcm96ZW4AAAAAAAAAAAAAAAAACU1pZ3JhdGluZwAAAAAeEWNvbnRyYWN0ZW52bWV0YXYwAAAAAAAAABkAAAAAAG8OY29udHJhY3RtZXRhdjAAAAAAAAAABXJzdmVyAAAAAAAABjEuOTAuMAAAAAAAAAAAAAhyc3Nka3ZlcgAAAC8yNS4xLjAjODZjNTBhMWVhNGY4N2I0MGFkZDMwNjRmZjlkZjk1Yzc1NTM1NjVjNQAAUw5jb250cmFjdG1ldGF2MAAAAAAAAAAGY2xpdmVyAAAAAAAvMjUuMC4wI2E2NDkyNWU5MzkxYzNkM2IzZWY4ZTUzZGM2MGMyM2RiOWU2YTgyZTQA";
12
12
  /**
13
13
  * Pre-computed WASM hash (SHA-256)
14
14
  * Use this when the WASM is already uploaded on-chain
15
15
  */
16
- export declare const WASM_HASH = "21be5b9ff062d6e92fce084fdb0a3b5b2281f4f79b292eb1e533528e9a394aac";
16
+ export declare const WASM_HASH = "e031afc9dc07436fdb36aac32169ea184720496f3c7a9890aec65f777258336d";
17
17
  /**
18
18
  * Get the WASM bytecode as a Buffer
19
19
  * Use this to upload the WASM to the network
@@ -56,78 +56,153 @@ export type CounterStorage = {
56
56
  values: readonly [u32];
57
57
  };
58
58
  export declare const EndpointError: {
59
+ /**
60
+ * Library is already registered with the endpoint
61
+ */
59
62
  1: {
60
63
  message: string;
61
64
  };
65
+ /**
66
+ * Compose message already exists for this GUID and index
67
+ */
62
68
  2: {
63
69
  message: string;
64
70
  };
71
+ /**
72
+ * Compose message not found for the given GUID and index
73
+ */
65
74
  3: {
66
75
  message: string;
67
76
  };
77
+ /**
78
+ * Default receive library is not set for the source endpoint
79
+ */
68
80
  4: {
69
81
  message: string;
70
82
  };
83
+ /**
84
+ * Default send library is not set for the destination endpoint
85
+ */
71
86
  5: {
72
87
  message: string;
73
88
  };
89
+ /**
90
+ * Supplied native token fee is less than required
91
+ */
74
92
  6: {
75
93
  message: string;
76
94
  };
95
+ /**
96
+ * Supplied ZRO token fee is less than required
97
+ */
77
98
  7: {
78
99
  message: string;
79
100
  };
101
+ /**
102
+ * Timeout expiry is invalid (already expired)
103
+ */
80
104
  8: {
81
105
  message: string;
82
106
  };
107
+ /**
108
+ * Fee amount is invalid (negative)
109
+ */
83
110
  9: {
84
111
  message: string;
85
112
  };
113
+ /**
114
+ * Compose index exceeds maximum allowed value
115
+ */
86
116
  10: {
87
117
  message: string;
88
118
  };
119
+ /**
120
+ * Nonce is invalid for the requested operation
121
+ */
89
122
  11: {
90
123
  message: string;
91
124
  };
125
+ /**
126
+ * Payload hash is invalid (empty hash not allowed)
127
+ */
92
128
  12: {
93
129
  message: string;
94
130
  };
131
+ /**
132
+ * Receive library is not valid for the receiver and source endpoint
133
+ */
95
134
  13: {
96
135
  message: string;
97
136
  };
137
+ /**
138
+ * Operation requires a non-default (custom) library
139
+ */
98
140
  14: {
99
141
  message: string;
100
142
  };
143
+ /**
144
+ * Library must support receiving messages
145
+ */
101
146
  15: {
102
147
  message: string;
103
148
  };
149
+ /**
150
+ * Library must be registered with the endpoint
151
+ */
104
152
  16: {
105
153
  message: string;
106
154
  };
155
+ /**
156
+ * Library must support sending messages
157
+ */
107
158
  17: {
108
159
  message: string;
109
160
  };
161
+ /**
162
+ * Messaging path cannot be initialized for the given origin
163
+ */
110
164
  18: {
111
165
  message: string;
112
166
  };
167
+ /**
168
+ * Message cannot be verified for the given origin
169
+ */
113
170
  19: {
114
171
  message: string;
115
172
  };
173
+ /**
174
+ * Payload hash does not match the stored hash
175
+ */
116
176
  20: {
117
177
  message: string;
118
178
  };
179
+ /**
180
+ * New value is the same as existing value
181
+ */
119
182
  21: {
120
183
  message: string;
121
184
  };
185
+ /**
186
+ * Caller is not authorized (not OApp or delegate)
187
+ */
122
188
  22: {
123
189
  message: string;
124
190
  };
191
+ /**
192
+ * Endpoint ID is not supported by the library
193
+ */
125
194
  23: {
126
195
  message: string;
127
196
  };
197
+ /**
198
+ * ZRO fee must be greater than zero when pay_in_zro is true
199
+ */
128
200
  24: {
129
201
  message: string;
130
202
  };
203
+ /**
204
+ * ZRO token address is not set
205
+ */
131
206
  25: {
132
207
  message: string;
133
208
  };
@@ -242,11 +317,11 @@ export interface MessageLibVersion {
242
317
  */
243
318
  export interface Timeout {
244
319
  /**
245
- * Unix timestamp when the timeout expires.
320
+ * Unix timestamp in seconds when the timeout expires.
246
321
  */
247
322
  expiry: u64;
248
323
  /**
249
- * The new library address to transition to.
324
+ * The old library address that remains valid during the grace period.
250
325
  */
251
326
  lib: string;
252
327
  }
@@ -431,6 +506,9 @@ export declare const OwnableError: {
431
506
  1035: {
432
507
  message: string;
433
508
  };
509
+ 1036: {
510
+ message: string;
511
+ };
434
512
  };
435
513
  /**
436
514
  * BytesExtError: 1040-1049
@@ -455,9 +533,9 @@ export declare const UpgradeableError: {
455
533
  };
456
534
  };
457
535
  /**
458
- * MultisigError: 1060-1069
536
+ * MultiSigError: 1060-1069
459
537
  */
460
- export declare const MultisigError: {
538
+ export declare const MultiSigError: {
461
539
  1060: {
462
540
  message: string;
463
541
  };
@@ -482,8 +560,11 @@ export declare const MultisigError: {
482
560
  1067: {
483
561
  message: string;
484
562
  };
563
+ 1068: {
564
+ message: string;
565
+ };
485
566
  };
486
- export type MultisigStorage = {
567
+ export type MultiSigStorage = {
487
568
  tag: "Signers";
488
569
  values: void;
489
570
  } | {
@@ -531,56 +612,17 @@ export interface Client {
531
612
  /**
532
613
  * Construct and simulate a authorizer transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
533
614
  */
534
- authorizer: (txnOptions?: {
535
- /**
536
- * The fee to pay for the transaction. Default: BASE_FEE
537
- */
538
- fee?: number;
539
- /**
540
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
541
- */
542
- timeoutInSeconds?: number;
543
- /**
544
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
545
- */
546
- simulate?: boolean;
547
- }) => Promise<AssembledTransaction<string>>;
615
+ authorizer: (options?: MethodOptions) => Promise<AssembledTransaction<string>>;
548
616
  /**
549
617
  * Construct and simulate a owner transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
550
618
  * Returns the current owner address, or None if no owner is set.
551
619
  */
552
- owner: (txnOptions?: {
553
- /**
554
- * The fee to pay for the transaction. Default: BASE_FEE
555
- */
556
- fee?: number;
557
- /**
558
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
559
- */
560
- timeoutInSeconds?: number;
561
- /**
562
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
563
- */
564
- simulate?: boolean;
565
- }) => Promise<AssembledTransaction<Option<string>>>;
620
+ owner: (options?: MethodOptions) => Promise<AssembledTransaction<Option<string>>>;
566
621
  /**
567
622
  * Construct and simulate a pending_owner transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
568
623
  * Returns the pending owner address for 2-step transfer, or None if no transfer is pending.
569
624
  */
570
- pending_owner: (txnOptions?: {
571
- /**
572
- * The fee to pay for the transaction. Default: BASE_FEE
573
- */
574
- fee?: number;
575
- /**
576
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
577
- */
578
- timeoutInSeconds?: number;
579
- /**
580
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
581
- */
582
- simulate?: boolean;
583
- }) => Promise<AssembledTransaction<Option<string>>>;
625
+ pending_owner: (options?: MethodOptions) => Promise<AssembledTransaction<Option<string>>>;
584
626
  /**
585
627
  * Construct and simulate a transfer_ownership transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
586
628
  * Transfers ownership immediately to a new address.
@@ -594,20 +636,7 @@ export interface Client {
594
636
  */
595
637
  transfer_ownership: ({ new_owner }: {
596
638
  new_owner: string;
597
- }, txnOptions?: {
598
- /**
599
- * The fee to pay for the transaction. Default: BASE_FEE
600
- */
601
- fee?: number;
602
- /**
603
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
604
- */
605
- timeoutInSeconds?: number;
606
- /**
607
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
608
- */
609
- simulate?: boolean;
610
- }) => Promise<AssembledTransaction<null>>;
639
+ }, txnOptions?: MethodOptions) => Promise<AssembledTransaction<null>>;
611
640
  /**
612
641
  * Construct and simulate a propose_ownership_transfer transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
613
642
  * Proposes an ownership transfer to a new address.
@@ -629,20 +658,7 @@ export interface Client {
629
658
  propose_ownership_transfer: ({ new_owner, ttl }: {
630
659
  new_owner: string;
631
660
  ttl: u32;
632
- }, txnOptions?: {
633
- /**
634
- * The fee to pay for the transaction. Default: BASE_FEE
635
- */
636
- fee?: number;
637
- /**
638
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
639
- */
640
- timeoutInSeconds?: number;
641
- /**
642
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
643
- */
644
- simulate?: boolean;
645
- }) => Promise<AssembledTransaction<null>>;
661
+ }, txnOptions?: MethodOptions) => Promise<AssembledTransaction<null>>;
646
662
  /**
647
663
  * Construct and simulate a accept_ownership transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
648
664
  * Accepts a pending 2-step ownership transfer.
@@ -652,20 +668,7 @@ export interface Client {
652
668
  * # Panics
653
669
  * - `NoPendingTransfer` if there is no pending transfer (or it expired)
654
670
  */
655
- accept_ownership: (txnOptions?: {
656
- /**
657
- * The fee to pay for the transaction. Default: BASE_FEE
658
- */
659
- fee?: number;
660
- /**
661
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
662
- */
663
- timeoutInSeconds?: number;
664
- /**
665
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
666
- */
667
- simulate?: boolean;
668
- }) => Promise<AssembledTransaction<null>>;
671
+ accept_ownership: (options?: MethodOptions) => Promise<AssembledTransaction<null>>;
669
672
  /**
670
673
  * Construct and simulate a renounce_ownership transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
671
674
  * Permanently renounces ownership.
@@ -674,20 +677,7 @@ export interface Client {
674
677
  * - `OwnerNotSet` if no owner is currently set
675
678
  * - `TransferInProgress` if a 2-step transfer is in progress (cancel it first)
676
679
  */
677
- renounce_ownership: (txnOptions?: {
678
- /**
679
- * The fee to pay for the transaction. Default: BASE_FEE
680
- */
681
- fee?: number;
682
- /**
683
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
684
- */
685
- timeoutInSeconds?: number;
686
- /**
687
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
688
- */
689
- simulate?: boolean;
690
- }) => Promise<AssembledTransaction<null>>;
680
+ renounce_ownership: (options?: MethodOptions) => Promise<AssembledTransaction<null>>;
691
681
  /**
692
682
  * Construct and simulate a extend_instance_ttl transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
693
683
  * Extends the instance TTL.
@@ -700,20 +690,7 @@ export interface Client {
700
690
  extend_instance_ttl: ({ threshold, extend_to }: {
701
691
  threshold: u32;
702
692
  extend_to: u32;
703
- }, txnOptions?: {
704
- /**
705
- * The fee to pay for the transaction. Default: BASE_FEE
706
- */
707
- fee?: number;
708
- /**
709
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
710
- */
711
- timeoutInSeconds?: number;
712
- /**
713
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
714
- */
715
- simulate?: boolean;
716
- }) => Promise<AssembledTransaction<null>>;
693
+ }, txnOptions?: MethodOptions) => Promise<AssembledTransaction<null>>;
717
694
  /**
718
695
  * Construct and simulate a set_ttl_configs transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
719
696
  * Sets TTL configs for instance and persistent storage.
@@ -732,38 +709,12 @@ export interface Client {
732
709
  set_ttl_configs: ({ instance, persistent }: {
733
710
  instance: Option<TtlConfig>;
734
711
  persistent: Option<TtlConfig>;
735
- }, txnOptions?: {
736
- /**
737
- * The fee to pay for the transaction. Default: BASE_FEE
738
- */
739
- fee?: number;
740
- /**
741
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
742
- */
743
- timeoutInSeconds?: number;
744
- /**
745
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
746
- */
747
- simulate?: boolean;
748
- }) => Promise<AssembledTransaction<null>>;
712
+ }, txnOptions?: MethodOptions) => Promise<AssembledTransaction<null>>;
749
713
  /**
750
714
  * Construct and simulate a ttl_configs transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
751
715
  * Returns the current TTL configs as (instance_config, persistent_config).
752
716
  */
753
- ttl_configs: (txnOptions?: {
754
- /**
755
- * The fee to pay for the transaction. Default: BASE_FEE
756
- */
757
- fee?: number;
758
- /**
759
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
760
- */
761
- timeoutInSeconds?: number;
762
- /**
763
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
764
- */
765
- simulate?: boolean;
766
- }) => Promise<AssembledTransaction<readonly [Option<TtlConfig>, Option<TtlConfig>]>>;
717
+ ttl_configs: (options?: MethodOptions) => Promise<AssembledTransaction<readonly [Option<TtlConfig>, Option<TtlConfig>]>>;
767
718
  /**
768
719
  * Construct and simulate a freeze_ttl_configs transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
769
720
  * Permanently freezes TTL configs, preventing any future modifications.
@@ -774,38 +725,12 @@ export interface Client {
774
725
  * # Panics
775
726
  * - `TtlConfigAlreadyFrozen` if already frozen
776
727
  */
777
- freeze_ttl_configs: (txnOptions?: {
778
- /**
779
- * The fee to pay for the transaction. Default: BASE_FEE
780
- */
781
- fee?: number;
782
- /**
783
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
784
- */
785
- timeoutInSeconds?: number;
786
- /**
787
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
788
- */
789
- simulate?: boolean;
790
- }) => Promise<AssembledTransaction<null>>;
728
+ freeze_ttl_configs: (options?: MethodOptions) => Promise<AssembledTransaction<null>>;
791
729
  /**
792
730
  * Construct and simulate a is_ttl_configs_frozen transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
793
731
  * Returns whether TTL configs are frozen.
794
732
  */
795
- is_ttl_configs_frozen: (txnOptions?: {
796
- /**
797
- * The fee to pay for the transaction. Default: BASE_FEE
798
- */
799
- fee?: number;
800
- /**
801
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
802
- */
803
- timeoutInSeconds?: number;
804
- /**
805
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
806
- */
807
- simulate?: boolean;
808
- }) => Promise<AssembledTransaction<boolean>>;
733
+ is_ttl_configs_frozen: (options?: MethodOptions) => Promise<AssembledTransaction<boolean>>;
809
734
  /**
810
735
  * Construct and simulate a oapp_version transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
811
736
  * Retrieves the OApp version information.
@@ -815,20 +740,7 @@ export interface Client {
815
740
  * - `sender_version`: The version of the OAppSender
816
741
  * - `receiver_version`: The version of the OAppReceiver
817
742
  */
818
- oapp_version: (txnOptions?: {
819
- /**
820
- * The fee to pay for the transaction. Default: BASE_FEE
821
- */
822
- fee?: number;
823
- /**
824
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
825
- */
826
- timeoutInSeconds?: number;
827
- /**
828
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
829
- */
830
- simulate?: boolean;
831
- }) => Promise<AssembledTransaction<readonly [u64, u64]>>;
743
+ oapp_version: (options?: MethodOptions) => Promise<AssembledTransaction<readonly [u64, u64]>>;
832
744
  /**
833
745
  * Construct and simulate a endpoint transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
834
746
  * Retrieves the LayerZero endpoint address associated with the OApp.
@@ -836,20 +748,7 @@ export interface Client {
836
748
  * # Returns
837
749
  * The LayerZero endpoint address
838
750
  */
839
- endpoint: (txnOptions?: {
840
- /**
841
- * The fee to pay for the transaction. Default: BASE_FEE
842
- */
843
- fee?: number;
844
- /**
845
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
846
- */
847
- timeoutInSeconds?: number;
848
- /**
849
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
850
- */
851
- simulate?: boolean;
852
- }) => Promise<AssembledTransaction<string>>;
751
+ endpoint: (options?: MethodOptions) => Promise<AssembledTransaction<string>>;
853
752
  /**
854
753
  * Construct and simulate a peer transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
855
754
  * Retrieves the peer (OApp) associated with a corresponding endpoint.
@@ -862,20 +761,7 @@ export interface Client {
862
761
  */
863
762
  peer: ({ eid }: {
864
763
  eid: u32;
865
- }, txnOptions?: {
866
- /**
867
- * The fee to pay for the transaction. Default: BASE_FEE
868
- */
869
- fee?: number;
870
- /**
871
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
872
- */
873
- timeoutInSeconds?: number;
874
- /**
875
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
876
- */
877
- simulate?: boolean;
878
- }) => Promise<AssembledTransaction<Option<Buffer>>>;
764
+ }, txnOptions?: MethodOptions) => Promise<AssembledTransaction<Option<Buffer>>>;
879
765
  /**
880
766
  * Construct and simulate a set_peer transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
881
767
  * Sets or removes the peer address (OApp instance) for a corresponding endpoint.
@@ -887,20 +773,7 @@ export interface Client {
887
773
  set_peer: ({ eid, peer }: {
888
774
  eid: u32;
889
775
  peer: Option<Buffer>;
890
- }, txnOptions?: {
891
- /**
892
- * The fee to pay for the transaction. Default: BASE_FEE
893
- */
894
- fee?: number;
895
- /**
896
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
897
- */
898
- timeoutInSeconds?: number;
899
- /**
900
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
901
- */
902
- simulate?: boolean;
903
- }) => Promise<AssembledTransaction<null>>;
776
+ }, txnOptions?: MethodOptions) => Promise<AssembledTransaction<null>>;
904
777
  /**
905
778
  * Construct and simulate a set_delegate transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
906
779
  * Sets the delegate address for the OApp Core.
@@ -910,20 +783,7 @@ export interface Client {
910
783
  */
911
784
  set_delegate: ({ delegate }: {
912
785
  delegate: Option<string>;
913
- }, txnOptions?: {
914
- /**
915
- * The fee to pay for the transaction. Default: BASE_FEE
916
- */
917
- fee?: number;
918
- /**
919
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
920
- */
921
- timeoutInSeconds?: number;
922
- /**
923
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
924
- */
925
- simulate?: boolean;
926
- }) => Promise<AssembledTransaction<null>>;
786
+ }, txnOptions?: MethodOptions) => Promise<AssembledTransaction<null>>;
927
787
  /**
928
788
  * Construct and simulate a enforced_options transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
929
789
  * Retrieves the enforced options for a given endpoint and message type.
@@ -938,20 +798,7 @@ export interface Client {
938
798
  enforced_options: ({ eid, msg_type }: {
939
799
  eid: u32;
940
800
  msg_type: u32;
941
- }, txnOptions?: {
942
- /**
943
- * The fee to pay for the transaction. Default: BASE_FEE
944
- */
945
- fee?: number;
946
- /**
947
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
948
- */
949
- timeoutInSeconds?: number;
950
- /**
951
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
952
- */
953
- simulate?: boolean;
954
- }) => Promise<AssembledTransaction<Buffer>>;
801
+ }, txnOptions?: MethodOptions) => Promise<AssembledTransaction<Buffer>>;
955
802
  /**
956
803
  * Construct and simulate a set_enforced_options transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
957
804
  * Sets the enforced options for specific endpoint and message type combinations.
@@ -967,20 +814,7 @@ export interface Client {
967
814
  */
968
815
  set_enforced_options: ({ options }: {
969
816
  options: Array<EnforcedOptionParam>;
970
- }, txnOptions?: {
971
- /**
972
- * The fee to pay for the transaction. Default: BASE_FEE
973
- */
974
- fee?: number;
975
- /**
976
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
977
- */
978
- timeoutInSeconds?: number;
979
- /**
980
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
981
- */
982
- simulate?: boolean;
983
- }) => Promise<AssembledTransaction<null>>;
817
+ }, txnOptions?: MethodOptions) => Promise<AssembledTransaction<null>>;
984
818
  /**
985
819
  * Construct and simulate a combine_options transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
986
820
  * Combines options for a given endpoint and message type.
@@ -1002,20 +836,7 @@ export interface Client {
1002
836
  eid: u32;
1003
837
  msg_type: u32;
1004
838
  extra_options: Buffer;
1005
- }, txnOptions?: {
1006
- /**
1007
- * The fee to pay for the transaction. Default: BASE_FEE
1008
- */
1009
- fee?: number;
1010
- /**
1011
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1012
- */
1013
- timeoutInSeconds?: number;
1014
- /**
1015
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1016
- */
1017
- simulate?: boolean;
1018
- }) => Promise<AssembledTransaction<Buffer>>;
839
+ }, txnOptions?: MethodOptions) => Promise<AssembledTransaction<Buffer>>;
1019
840
  /**
1020
841
  * Construct and simulate a quote transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1021
842
  */
@@ -1024,20 +845,7 @@ export interface Client {
1024
845
  msg_type: u32;
1025
846
  options: Buffer;
1026
847
  pay_in_zro: boolean;
1027
- }, txnOptions?: {
1028
- /**
1029
- * The fee to pay for the transaction. Default: BASE_FEE
1030
- */
1031
- fee?: number;
1032
- /**
1033
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1034
- */
1035
- timeoutInSeconds?: number;
1036
- /**
1037
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1038
- */
1039
- simulate?: boolean;
1040
- }) => Promise<AssembledTransaction<MessagingFee>>;
848
+ }, txnOptions?: MethodOptions) => Promise<AssembledTransaction<MessagingFee>>;
1041
849
  /**
1042
850
  * Construct and simulate a increment transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1043
851
  */
@@ -1047,39 +855,13 @@ export interface Client {
1047
855
  msg_type: u32;
1048
856
  options: Buffer;
1049
857
  fee: MessagingFee;
1050
- }, txnOptions?: {
1051
- /**
1052
- * The fee to pay for the transaction. Default: BASE_FEE
1053
- */
1054
- fee?: number;
1055
- /**
1056
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1057
- */
1058
- timeoutInSeconds?: number;
1059
- /**
1060
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1061
- */
1062
- simulate?: boolean;
1063
- }) => Promise<AssembledTransaction<null>>;
858
+ }, txnOptions?: MethodOptions) => Promise<AssembledTransaction<null>>;
1064
859
  /**
1065
860
  * Construct and simulate a set_ordered_nonce transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1066
861
  */
1067
862
  set_ordered_nonce: ({ ordered_nonce }: {
1068
863
  ordered_nonce: boolean;
1069
- }, txnOptions?: {
1070
- /**
1071
- * The fee to pay for the transaction. Default: BASE_FEE
1072
- */
1073
- fee?: number;
1074
- /**
1075
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1076
- */
1077
- timeoutInSeconds?: number;
1078
- /**
1079
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1080
- */
1081
- simulate?: boolean;
1082
- }) => Promise<AssembledTransaction<null>>;
864
+ }, txnOptions?: MethodOptions) => Promise<AssembledTransaction<null>>;
1083
865
  /**
1084
866
  * Construct and simulate a skip_inbound_nonce transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1085
867
  */
@@ -1087,129 +869,38 @@ export interface Client {
1087
869
  src_eid: u32;
1088
870
  sender: Buffer;
1089
871
  nonce: u64;
1090
- }, txnOptions?: {
1091
- /**
1092
- * The fee to pay for the transaction. Default: BASE_FEE
1093
- */
1094
- fee?: number;
1095
- /**
1096
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1097
- */
1098
- timeoutInSeconds?: number;
1099
- /**
1100
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1101
- */
1102
- simulate?: boolean;
1103
- }) => Promise<AssembledTransaction<null>>;
872
+ }, txnOptions?: MethodOptions) => Promise<AssembledTransaction<null>>;
1104
873
  /**
1105
874
  * Construct and simulate a eid transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1106
875
  */
1107
- eid: (txnOptions?: {
1108
- /**
1109
- * The fee to pay for the transaction. Default: BASE_FEE
1110
- */
1111
- fee?: number;
1112
- /**
1113
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1114
- */
1115
- timeoutInSeconds?: number;
1116
- /**
1117
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1118
- */
1119
- simulate?: boolean;
1120
- }) => Promise<AssembledTransaction<u32>>;
876
+ eid: (options?: MethodOptions) => Promise<AssembledTransaction<u32>>;
1121
877
  /**
1122
878
  * Construct and simulate a count transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1123
879
  */
1124
- count: (txnOptions?: {
1125
- /**
1126
- * The fee to pay for the transaction. Default: BASE_FEE
1127
- */
1128
- fee?: number;
1129
- /**
1130
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1131
- */
1132
- timeoutInSeconds?: number;
1133
- /**
1134
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1135
- */
1136
- simulate?: boolean;
1137
- }) => Promise<AssembledTransaction<u64>>;
880
+ count: (options?: MethodOptions) => Promise<AssembledTransaction<u64>>;
1138
881
  /**
1139
882
  * Construct and simulate a composed_count transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1140
883
  */
1141
- composed_count: (txnOptions?: {
1142
- /**
1143
- * The fee to pay for the transaction. Default: BASE_FEE
1144
- */
1145
- fee?: number;
1146
- /**
1147
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1148
- */
1149
- timeoutInSeconds?: number;
1150
- /**
1151
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1152
- */
1153
- simulate?: boolean;
1154
- }) => Promise<AssembledTransaction<u64>>;
884
+ composed_count: (options?: MethodOptions) => Promise<AssembledTransaction<u64>>;
1155
885
  /**
1156
886
  * Construct and simulate a inbound_count transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1157
887
  */
1158
888
  inbound_count: ({ eid }: {
1159
889
  eid: u32;
1160
- }, txnOptions?: {
1161
- /**
1162
- * The fee to pay for the transaction. Default: BASE_FEE
1163
- */
1164
- fee?: number;
1165
- /**
1166
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1167
- */
1168
- timeoutInSeconds?: number;
1169
- /**
1170
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1171
- */
1172
- simulate?: boolean;
1173
- }) => Promise<AssembledTransaction<u64>>;
890
+ }, txnOptions?: MethodOptions) => Promise<AssembledTransaction<u64>>;
1174
891
  /**
1175
892
  * Construct and simulate a outbound_count transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1176
893
  */
1177
894
  outbound_count: ({ eid }: {
1178
895
  eid: u32;
1179
- }, txnOptions?: {
1180
- /**
1181
- * The fee to pay for the transaction. Default: BASE_FEE
1182
- */
1183
- fee?: number;
1184
- /**
1185
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1186
- */
1187
- timeoutInSeconds?: number;
1188
- /**
1189
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1190
- */
1191
- simulate?: boolean;
1192
- }) => Promise<AssembledTransaction<u64>>;
896
+ }, txnOptions?: MethodOptions) => Promise<AssembledTransaction<u64>>;
1193
897
  /**
1194
898
  * Construct and simulate a next_nonce transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1195
899
  */
1196
900
  next_nonce: ({ src_eid, sender }: {
1197
901
  src_eid: u32;
1198
902
  sender: Buffer;
1199
- }, txnOptions?: {
1200
- /**
1201
- * The fee to pay for the transaction. Default: BASE_FEE
1202
- */
1203
- fee?: number;
1204
- /**
1205
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1206
- */
1207
- timeoutInSeconds?: number;
1208
- /**
1209
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1210
- */
1211
- simulate?: boolean;
1212
- }) => Promise<AssembledTransaction<u64>>;
903
+ }, txnOptions?: MethodOptions) => Promise<AssembledTransaction<u64>>;
1213
904
  /**
1214
905
  * Construct and simulate a allow_initialize_path transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1215
906
  * Checks if a messaging path can be initialized for the given origin.
@@ -1222,20 +913,7 @@ export interface Client {
1222
913
  */
1223
914
  allow_initialize_path: ({ origin }: {
1224
915
  origin: Origin;
1225
- }, txnOptions?: {
1226
- /**
1227
- * The fee to pay for the transaction. Default: BASE_FEE
1228
- */
1229
- fee?: number;
1230
- /**
1231
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1232
- */
1233
- timeoutInSeconds?: number;
1234
- /**
1235
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1236
- */
1237
- simulate?: boolean;
1238
- }) => Promise<AssembledTransaction<boolean>>;
916
+ }, txnOptions?: MethodOptions) => Promise<AssembledTransaction<boolean>>;
1239
917
  /**
1240
918
  * Construct and simulate a lz_receive transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1241
919
  * Entry point for receiving messages or packets from the LayerZero endpoint.
@@ -1261,20 +939,7 @@ export interface Client {
1261
939
  message: Buffer;
1262
940
  extra_data: Buffer;
1263
941
  value: i128;
1264
- }, txnOptions?: {
1265
- /**
1266
- * The fee to pay for the transaction. Default: BASE_FEE
1267
- */
1268
- fee?: number;
1269
- /**
1270
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1271
- */
1272
- timeoutInSeconds?: number;
1273
- /**
1274
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1275
- */
1276
- simulate?: boolean;
1277
- }) => Promise<AssembledTransaction<null>>;
942
+ }, txnOptions?: MethodOptions) => Promise<AssembledTransaction<null>>;
1278
943
  /**
1279
944
  * Construct and simulate a is_compose_msg_sender transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1280
945
  * Indicates whether an address is an approved composeMsg sender to the Endpoint.
@@ -1294,20 +959,7 @@ export interface Client {
1294
959
  origin: Origin;
1295
960
  message: Buffer;
1296
961
  sender: string;
1297
- }, txnOptions?: {
1298
- /**
1299
- * The fee to pay for the transaction. Default: BASE_FEE
1300
- */
1301
- fee?: number;
1302
- /**
1303
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1304
- */
1305
- timeoutInSeconds?: number;
1306
- /**
1307
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1308
- */
1309
- simulate?: boolean;
1310
- }) => Promise<AssembledTransaction<boolean>>;
962
+ }, txnOptions?: MethodOptions) => Promise<AssembledTransaction<boolean>>;
1311
963
  /**
1312
964
  * Construct and simulate a lz_compose transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1313
965
  */
@@ -1319,20 +971,7 @@ export interface Client {
1319
971
  message: Buffer;
1320
972
  extra_data: Buffer;
1321
973
  value: i128;
1322
- }, txnOptions?: {
1323
- /**
1324
- * The fee to pay for the transaction. Default: BASE_FEE
1325
- */
1326
- fee?: number;
1327
- /**
1328
- * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1329
- */
1330
- timeoutInSeconds?: number;
1331
- /**
1332
- * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1333
- */
1334
- simulate?: boolean;
1335
- }) => Promise<AssembledTransaction<null>>;
974
+ }, txnOptions?: MethodOptions) => Promise<AssembledTransaction<null>>;
1336
975
  }
1337
976
  export declare class Client extends ContractClient {
1338
977
  readonly options: ContractClientOptions;