harperdb 3.2.1 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (578) hide show
  1. package/README.md +20 -11
  2. package/bin/BinObjects.jsc +0 -0
  3. package/bin/harperdb.jsc +0 -0
  4. package/bin/install.jsc +0 -0
  5. package/bin/register.jsc +0 -0
  6. package/bin/run.jsc +0 -0
  7. package/bin/stop.jsc +0 -0
  8. package/bin/upgrade.jsc +0 -0
  9. package/bin/utility.jsc +0 -0
  10. package/bin/version.jsc +0 -0
  11. package/coverage/lcov.info +7142 -6704
  12. package/data_layer/CreateAttributeObject.jsc +0 -0
  13. package/data_layer/CreateTableObject.jsc +0 -0
  14. package/data_layer/DataLayerObjects.jsc +0 -0
  15. package/data_layer/DeleteBeforeObject.jsc +0 -0
  16. package/data_layer/DeleteObject.jsc +0 -0
  17. package/data_layer/DropAttributeObject.jsc +0 -0
  18. package/data_layer/InsertObject.jsc +0 -0
  19. package/data_layer/ReadTransactionLogObject.jsc +0 -0
  20. package/data_layer/SQLSearch.jsc +0 -0
  21. package/data_layer/SearchByConditionsObject.jsc +0 -0
  22. package/data_layer/SearchByHashObject.jsc +0 -0
  23. package/data_layer/SearchObject.jsc +0 -0
  24. package/data_layer/SqlSearchObject.jsc +0 -0
  25. package/data_layer/UpdateObject.jsc +0 -0
  26. package/data_layer/UpsertObject.jsc +0 -0
  27. package/data_layer/bulkLoad.jsc +0 -0
  28. package/data_layer/data_objects/BulkLoadObjects.jsc +0 -0
  29. package/data_layer/data_objects/UpsertObject.jsc +0 -0
  30. package/data_layer/delete.jsc +0 -0
  31. package/data_layer/export.jsc +0 -0
  32. package/data_layer/harperBridge/BridgeMethods.jsc +0 -0
  33. package/data_layer/harperBridge/bridgeUtility/checkForNewAttr.jsc +0 -0
  34. package/data_layer/harperBridge/bridgeUtility/convertOperationToTransaction.jsc +0 -0
  35. package/data_layer/harperBridge/bridgeUtility/evaluateTableGetAttributes.jsc +0 -0
  36. package/data_layer/harperBridge/bridgeUtility/insertUpdateReturnObj.jsc +0 -0
  37. package/data_layer/harperBridge/bridgeUtility/insertUpdateValidate.jsc +0 -0
  38. package/data_layer/harperBridge/harperBridge.jsc +0 -0
  39. package/data_layer/harperBridge/lmdbBridge/LMDBBridge.jsc +0 -0
  40. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/DeleteTransactionsBeforeResults.jsc +0 -0
  41. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.jsc +0 -0
  42. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.jsc +0 -0
  43. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateSchema.jsc +0 -0
  44. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateTable.jsc +0 -0
  45. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteRecords.jsc +0 -0
  46. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteRecordsBefore.jsc +0 -0
  47. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteTransactionLogsBefore.jsc +0 -0
  48. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.jsc +0 -0
  49. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropSchema.jsc +0 -0
  50. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropTable.jsc +0 -0
  51. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByHash.jsc +0 -0
  52. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByValue.jsc +0 -0
  53. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbReadTransactionLog.jsc +0 -0
  54. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.jsc +0 -0
  55. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByHash.jsc +0 -0
  56. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.jsc +0 -0
  57. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpdateRecords.jsc +0 -0
  58. package/data_layer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.jsc +0 -0
  59. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.jsc +0 -0
  60. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/LMDBDeleteTransactionObject.jsc +0 -0
  61. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/LMDBInsertTransactionObject.jsc +0 -0
  62. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/LMDBTransactionObject.jsc +0 -0
  63. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/LMDBUpdateTransactionObject.jsc +0 -0
  64. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/LMDBUpsertTransactionObject.jsc +0 -0
  65. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/TableSizeObject.jsc +0 -0
  66. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/ThreadSearchObject.jsc +0 -0
  67. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/initializeHashSearch.jsc +0 -0
  68. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.jsc +0 -0
  69. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/lmdbCheckForNewAttributes.jsc +0 -0
  70. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsEnvironment.jsc +0 -0
  71. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/lmdbDropAllAttributes.jsc +0 -0
  72. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/lmdbGetTableSize.jsc +0 -0
  73. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.jsc +0 -0
  74. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/lmdbSearch.jsc +0 -0
  75. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/lmdbThreadSearch.jsc +0 -0
  76. package/data_layer/harperBridge/lmdbBridge/lmdbUtility/lmdbWriteTransaction.jsc +0 -0
  77. package/data_layer/hdbInfoController.jsc +0 -0
  78. package/data_layer/insert.jsc +0 -0
  79. package/data_layer/readTransactionLog.jsc +0 -0
  80. package/data_layer/schema.jsc +0 -0
  81. package/data_layer/schemaDescribe.jsc +0 -0
  82. package/data_layer/search.jsc +0 -0
  83. package/data_layer/update.jsc +0 -0
  84. package/events/ClusterStatusEmitter.jsc +0 -0
  85. package/events/SioServerStoppedEvent.jsc +0 -0
  86. package/events/SocketClusterStatusEmitter.jsc +0 -0
  87. package/license/LICENSE +91 -1
  88. package/node_modules/@msgpackr-extract/msgpackr-extract-linux-x64/README.md +1 -0
  89. package/node_modules/{node-addon-api/src/nothing.c → @msgpackr-extract/msgpackr-extract-linux-x64/index.js} +0 -0
  90. package/node_modules/@msgpackr-extract/msgpackr-extract-linux-x64/node.abi93.glibc.node +0 -0
  91. package/node_modules/@msgpackr-extract/msgpackr-extract-linux-x64/node.abi93.musl.node +0 -0
  92. package/node_modules/@msgpackr-extract/msgpackr-extract-linux-x64/node.napi.glibc.node +0 -0
  93. package/node_modules/@msgpackr-extract/msgpackr-extract-linux-x64/node.napi.musl.node +0 -0
  94. package/node_modules/@msgpackr-extract/msgpackr-extract-linux-x64/package.json +53 -0
  95. package/node_modules/{msgpackr-extract → lmdb-store}/.github/workflows/prebuild.yml +9 -10
  96. package/node_modules/lmdb-store/.idea/lmdb-store.iml +12 -0
  97. package/node_modules/lmdb-store/.idea/misc.xml +6 -0
  98. package/node_modules/lmdb-store/.idea/modules.xml +8 -0
  99. package/node_modules/lmdb-store/.idea/workspace.xml +4 -0
  100. package/node_modules/lmdb-store/README.md +393 -388
  101. package/node_modules/lmdb-store/benchmark/index.js +162 -162
  102. package/node_modules/lmdb-store/binding.gyp +79 -88
  103. package/node_modules/lmdb-store/caching.js +113 -113
  104. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/COPYRIGHT +20 -20
  105. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/Doxyfile +1631 -1631
  106. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/LICENSE +47 -47
  107. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/chacha8.c +183 -183
  108. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/chacha8.h +14 -14
  109. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/crypto.c +121 -121
  110. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/intro.doc +192 -192
  111. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mdb.c +12125 -12125
  112. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mdb_copy.1 +74 -74
  113. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mdb_copy.c +106 -106
  114. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mdb_drop.1 +53 -53
  115. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mdb_drop.c +154 -154
  116. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mdb_dump.1 +94 -94
  117. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mdb_dump.c +333 -333
  118. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mdb_load.1 +97 -97
  119. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mdb_load.c +530 -530
  120. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mdb_stat.1 +83 -83
  121. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mdb_stat.c +276 -276
  122. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/midl.c +452 -452
  123. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/midl.h +208 -208
  124. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/module.c +101 -101
  125. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/module.h +16 -16
  126. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mtest.c +178 -178
  127. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mtest2.c +124 -124
  128. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mtest3.c +133 -133
  129. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mtest4.c +168 -168
  130. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mtest5.c +135 -135
  131. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mtest6.c +141 -141
  132. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mtest_enc.c +190 -190
  133. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mtest_enc2.c +189 -189
  134. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/mtest_remap.c +177 -177
  135. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/sample-bdb.txt +73 -73
  136. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/sample-mdb.txt +62 -62
  137. package/node_modules/lmdb-store/dependencies/lmdb/libraries/liblmdb/tooltag +27 -27
  138. package/node_modules/lmdb-store/dependencies/lz4/LICENSE +11 -11
  139. package/node_modules/lmdb-store/dependencies/lz4/lib/README.md +137 -137
  140. package/node_modules/lmdb-store/dependencies/lz4/lib/dll/example/README.md +69 -69
  141. package/node_modules/lmdb-store/dependencies/lz4/lib/lz4frame.c +1899 -1899
  142. package/node_modules/lmdb-store/dependencies/lz4/lib/xxhash.c +1030 -1030
  143. package/node_modules/lmdb-store/dependencies/lz4/lib/xxhash.h +328 -328
  144. package/node_modules/lmdb-store/dist/index.cjs +2591 -0
  145. package/node_modules/lmdb-store/dist/index.cjs.map +1 -0
  146. package/node_modules/lmdb-store/index.d.ts +323 -323
  147. package/node_modules/lmdb-store/index.js +1274 -1274
  148. package/node_modules/lmdb-store/index.mjs +3 -3
  149. package/node_modules/lmdb-store/package.json +16 -11
  150. package/node_modules/lmdb-store/prebuilds/darwin-arm64/electron.abi98.node +0 -0
  151. package/node_modules/lmdb-store/prebuilds/darwin-arm64/node.abi83.node +0 -0
  152. package/node_modules/lmdb-store/prebuilds/darwin-arm64/node.abi93.node +0 -0
  153. package/node_modules/lmdb-store/prebuilds/darwin-x64/electron.abi98.node +0 -0
  154. package/node_modules/lmdb-store/prebuilds/darwin-x64/node.abi83.node +0 -0
  155. package/node_modules/lmdb-store/prebuilds/darwin-x64/node.abi93.node +0 -0
  156. package/node_modules/lmdb-store/prebuilds/linux-arm64/electron.abi98.node +0 -0
  157. package/node_modules/lmdb-store/prebuilds/linux-arm64/node.abi83.node +0 -0
  158. package/node_modules/lmdb-store/prebuilds/linux-arm64/node.abi93.node +0 -0
  159. package/node_modules/lmdb-store/prebuilds/linux-x64/electron.abi98.node +0 -0
  160. package/node_modules/lmdb-store/prebuilds/linux-x64/node.abi83.musl.node +0 -0
  161. package/node_modules/lmdb-store/prebuilds/linux-x64/node.abi83.node +0 -0
  162. package/node_modules/lmdb-store/prebuilds/linux-x64/node.abi93.musl.node +0 -0
  163. package/node_modules/lmdb-store/prebuilds/linux-x64/node.abi93.node +0 -0
  164. package/node_modules/lmdb-store/prebuilds/win32-x64/electron.abi98.node +0 -0
  165. package/node_modules/lmdb-store/prebuilds/win32-x64/node.abi83.node +0 -0
  166. package/node_modules/lmdb-store/prebuilds/win32-x64/node.abi93.node +0 -0
  167. package/node_modules/lmdb-store/src/compression.cpp +181 -181
  168. package/node_modules/lmdb-store/src/cursor.cpp +407 -407
  169. package/node_modules/lmdb-store/src/dbi.cpp +354 -354
  170. package/node_modules/lmdb-store/src/env.cpp +1134 -1134
  171. package/node_modules/lmdb-store/src/misc.cpp +528 -528
  172. package/node_modules/lmdb-store/src/node-lmdb.cpp +44 -44
  173. package/node_modules/lmdb-store/src/node-lmdb.h +965 -965
  174. package/node_modules/lmdb-store/src/ordered-binary.cpp +337 -337
  175. package/node_modules/lmdb-store/src/txn.cpp +513 -513
  176. package/node_modules/lmdb-store/src/v8-fast-api-calls.h +419 -419
  177. package/node_modules/lmdb-store/src/windows.c +30 -30
  178. package/node_modules/lmdb-store/test/index.test.js +584 -584
  179. package/node_modules/lmdb-store/test/node-lmdb.test.js +1525 -1525
  180. package/node_modules/lmdb-store/test/threads.js +100 -100
  181. package/node_modules/lmdb-store/util/ArrayLikeIterable.js +136 -136
  182. package/node_modules/lmdb-store/util/WeakValueMap.js +40 -40
  183. package/node_modules/lmdb-store/util/upgrade-lmdb.js +46 -46
  184. package/node_modules/lmdb-store/util/when.js +8 -8
  185. package/node_modules/microtime/.github/workflows/release.yml +76 -0
  186. package/node_modules/microtime/.github/workflows/test.yml +46 -0
  187. package/node_modules/microtime/README.md +0 -2
  188. package/node_modules/microtime/binding.gyp +28 -10
  189. package/node_modules/microtime/package.json +25 -20
  190. package/node_modules/microtime/prebuilds/darwin-x64+arm64/electron.napi.node +0 -0
  191. package/node_modules/microtime/prebuilds/darwin-x64+arm64/node.napi.node +0 -0
  192. package/node_modules/microtime/prebuilds/linux-arm/node.napi.armv7.node +0 -0
  193. package/node_modules/microtime/prebuilds/linux-arm64/node.napi.armv8.node +0 -0
  194. package/node_modules/microtime/prebuilds/linux-x64/electron.napi.node +0 -0
  195. package/node_modules/microtime/prebuilds/linux-x64/node.napi.node +0 -0
  196. package/node_modules/microtime/prebuilds/win32-ia32/electron.napi.node +0 -0
  197. package/node_modules/microtime/prebuilds/win32-ia32/node.napi.node +0 -0
  198. package/node_modules/microtime/prebuilds/win32-x64/electron.napi.node +0 -0
  199. package/node_modules/microtime/prebuilds/win32-x64/node.napi.node +0 -0
  200. package/node_modules/msgpackr/dist/index.js +1929 -1917
  201. package/node_modules/msgpackr/dist/index.min.js +67 -68
  202. package/node_modules/msgpackr/dist/node.cjs +1994 -1980
  203. package/node_modules/msgpackr/dist/test.js +683 -1235
  204. package/node_modules/msgpackr/index.d.ts +23 -12
  205. package/node_modules/msgpackr/node-index.js +23 -21
  206. package/node_modules/msgpackr/pack.js +935 -931
  207. package/node_modules/msgpackr/package.json +24 -12
  208. package/node_modules/msgpackr/unpack.d.ts +52 -50
  209. package/node_modules/msgpackr/unpack.js +1061 -1053
  210. package/node_modules/msgpackr-extract/bin/download-prebuilds.js +11 -0
  211. package/node_modules/msgpackr-extract/binding.gyp +22 -5
  212. package/node_modules/msgpackr-extract/index.js +1 -1
  213. package/node_modules/msgpackr-extract/package.json +46 -21
  214. package/node_modules/msgpackr-extract/src/.vs/ProjectSettings.json +3 -0
  215. package/node_modules/msgpackr-extract/src/.vs/VSWorkspaceState.json +7 -0
  216. package/node_modules/msgpackr-extract/src/.vs/slnx.sqlite +0 -0
  217. package/node_modules/msgpackr-extract/src/.vs/src/v16/.suo +0 -0
  218. package/node_modules/msgpackr-extract/src/.vs/src/v16/Browse.VC.db +0 -0
  219. package/node_modules/msgpackr-extract/{prebuilds/darwin-x64/node.abi72.node → src/.vs/src/v16/Browse.VC.db-shm} +0 -0
  220. package/node_modules/msgpackr-extract/src/.vs/src/v16/Browse.VC.db-wal +0 -0
  221. package/node_modules/msgpackr-extract/src/extract.cpp +272 -269
  222. package/node_modules/nan/package.json +0 -1
  223. package/node_modules/node-addon-api/README.md +146 -53
  224. package/node_modules/node-addon-api/common.gypi +21 -0
  225. package/node_modules/node-addon-api/except.gypi +25 -0
  226. package/node_modules/node-addon-api/index.js +7 -41
  227. package/node_modules/node-addon-api/napi-inl.deprecated.h +8 -8
  228. package/node_modules/node-addon-api/napi-inl.h +2795 -633
  229. package/node_modules/node-addon-api/napi.h +1547 -597
  230. package/node_modules/node-addon-api/node_api.gyp +9 -0
  231. package/node_modules/node-addon-api/noexcept.gypi +26 -0
  232. package/node_modules/node-addon-api/nothing.c +0 -0
  233. package/node_modules/node-addon-api/package-support.json +21 -0
  234. package/node_modules/node-addon-api/package.json +203 -13
  235. package/node_modules/node-addon-api/tools/README.md +12 -6
  236. package/node_modules/node-addon-api/tools/clang-format.js +71 -0
  237. package/node_modules/node-addon-api/tools/conversion.js +4 -8
  238. package/node_modules/node-addon-api/tools/eslint-format.js +71 -0
  239. package/node_modules/node-gyp-build/README.md +17 -14
  240. package/node_modules/node-gyp-build/bin.js +28 -15
  241. package/node_modules/node-gyp-build/index.js +145 -34
  242. package/node_modules/node-gyp-build/package.json +18 -15
  243. package/node_modules/{lmdb-store/node_modules/node-gyp-build → node-gyp-build-optional-packages}/LICENSE +0 -0
  244. package/node_modules/{lmdb-store/node_modules/node-gyp-build → node-gyp-build-optional-packages}/README.md +0 -0
  245. package/node_modules/{lmdb-store/node_modules/node-gyp-build → node-gyp-build-optional-packages}/bin.js +1 -1
  246. package/node_modules/{lmdb-store/node_modules/node-gyp-build → node-gyp-build-optional-packages}/build-test.js +0 -0
  247. package/node_modules/{lmdb-store/node_modules/node-gyp-build → node-gyp-build-optional-packages}/index.js +17 -11
  248. package/node_modules/{lmdb-store/node_modules/node-gyp-build → node-gyp-build-optional-packages}/optional.js +0 -0
  249. package/node_modules/{msgpackr-extract/node_modules/node-gyp-build → node-gyp-build-optional-packages}/package.json +17 -17
  250. package/package.json +12 -11
  251. package/security/JWTObjects.jsc +0 -0
  252. package/security/auth.jsc +0 -0
  253. package/security/cryptoHash.jsc +0 -0
  254. package/security/data_objects/PermissionAttributeResponseObject.jsc +0 -0
  255. package/security/data_objects/PermissionResponseObject.jsc +0 -0
  256. package/security/data_objects/PermissionTableResponseObject.jsc +0 -0
  257. package/security/permissionsTranslator.jsc +0 -0
  258. package/security/role.jsc +0 -0
  259. package/security/tokenAuthentication.jsc +0 -0
  260. package/security/user.jsc +0 -0
  261. package/server/ClusteringOriginObject.jsc +0 -0
  262. package/server/JobObject.jsc +0 -0
  263. package/server/clustering/ClusterStatusObject.jsc +0 -0
  264. package/server/clustering/NodeObject.jsc +0 -0
  265. package/server/clustering/clusterUtilities.jsc +0 -0
  266. package/server/configuration.jsc +0 -0
  267. package/server/customFunctions/customFunctionsServer.jsc +0 -0
  268. package/server/customFunctions/helpers/getCORSOptions.jsc +0 -0
  269. package/server/customFunctions/helpers/getHeaderTimeoutConfig.jsc +0 -0
  270. package/server/customFunctions/helpers/getServerOptions.jsc +0 -0
  271. package/server/customFunctions/operations.jsc +0 -0
  272. package/server/customFunctions/operationsValidation.jsc +0 -0
  273. package/server/harperdb/hdbServer.jsc +0 -0
  274. package/server/ipc/IPCClient.jsc +0 -0
  275. package/server/ipc/hdbIpcServer.jsc +0 -0
  276. package/server/ipc/serverHandlers.jsc +0 -0
  277. package/server/ipc/utility/IPCEventObject.jsc +0 -0
  278. package/server/ipc/utility/ipcUtils.jsc +0 -0
  279. package/server/jobRunner.jsc +0 -0
  280. package/server/jobThread.jsc +0 -0
  281. package/server/jobs.jsc +0 -0
  282. package/server/serverHelpers/OperationFunctionObject.jsc +0 -0
  283. package/server/serverHelpers/requestTimePlugin.jsc +0 -0
  284. package/server/serverHelpers/serverHandlers.jsc +0 -0
  285. package/server/serverHelpers/serverUtilities.jsc +0 -0
  286. package/server/socketcluster/Server.jsc +0 -0
  287. package/server/socketcluster/broker.jsc +0 -0
  288. package/server/socketcluster/connector/HDBSocketConnector.jsc +0 -0
  289. package/server/socketcluster/connector/InterNodeSocketConnector.jsc +0 -0
  290. package/server/socketcluster/connector/SocketConnector.jsc +0 -0
  291. package/server/socketcluster/connector/spawnSCConnection.jsc +0 -0
  292. package/server/socketcluster/decisionMatrix/CoreDecisionMatrix.jsc +0 -0
  293. package/server/socketcluster/decisionMatrix/DecisionMatrixIF.jsc +0 -0
  294. package/server/socketcluster/decisionMatrix/rules/AssignToHdbChildWorkerRule.jsc +0 -0
  295. package/server/socketcluster/decisionMatrix/rules/CallRoomMsgHandlerRule.jsc +0 -0
  296. package/server/socketcluster/decisionMatrix/rules/CleanDataObjectRule.jsc +0 -0
  297. package/server/socketcluster/decisionMatrix/rules/CommandCollection.jsc +0 -0
  298. package/server/socketcluster/decisionMatrix/rules/DummyRule.jsc +0 -0
  299. package/server/socketcluster/decisionMatrix/rules/RulesIF.jsc +0 -0
  300. package/server/socketcluster/decisionMatrix/rules/StripHdbHeaderRule.jsc +0 -0
  301. package/server/socketcluster/decisionMatrix/rules/TestRule.jsc +0 -0
  302. package/server/socketcluster/handlers/NodeConnectionsHandler.jsc +0 -0
  303. package/server/socketcluster/handlers/SCServer.jsc +0 -0
  304. package/server/socketcluster/handlers/ServerSocket.jsc +0 -0
  305. package/server/socketcluster/interNodeConnectionLauncher.jsc +0 -0
  306. package/server/socketcluster/messageQueue/MessageQueueIF.jsc +0 -0
  307. package/server/socketcluster/middleware/AuthMiddleware.jsc +0 -0
  308. package/server/socketcluster/middleware/ConnectionNameCheckMiddleware.jsc +0 -0
  309. package/server/socketcluster/middleware/GenericMiddleware.jsc +0 -0
  310. package/server/socketcluster/middleware/MessagePrepMiddleware.jsc +0 -0
  311. package/server/socketcluster/middleware/MiddlewareFactory.jsc +0 -0
  312. package/server/socketcluster/middleware/MiddlewareIF.jsc +0 -0
  313. package/server/socketcluster/middleware/OriginatorCheckMiddleware.jsc +0 -0
  314. package/server/socketcluster/middleware/RequestDataValidMiddleware.jsc +0 -0
  315. package/server/socketcluster/middleware/StampOriginatorMiddleware.jsc +0 -0
  316. package/server/socketcluster/middleware/StampRequestMiddleware.jsc +0 -0
  317. package/server/socketcluster/observer/EventableIF.jsc +0 -0
  318. package/server/socketcluster/room/AddUserRoom.jsc +0 -0
  319. package/server/socketcluster/room/AlterUserRoom.jsc +0 -0
  320. package/server/socketcluster/room/CoreRoom.jsc +0 -0
  321. package/server/socketcluster/room/CreateAttributeRoom.jsc +0 -0
  322. package/server/socketcluster/room/CreateSchemaRoom.jsc +0 -0
  323. package/server/socketcluster/room/CreateTableRoom.jsc +0 -0
  324. package/server/socketcluster/room/DropUserRoom.jsc +0 -0
  325. package/server/socketcluster/room/HDBNodeRoom.jsc +0 -0
  326. package/server/socketcluster/room/RoomIF.jsc +0 -0
  327. package/server/socketcluster/room/RoomMessageObjects.jsc +0 -0
  328. package/server/socketcluster/room/UsersRoom.jsc +0 -0
  329. package/server/socketcluster/room/WatchHDBWorkersRoom.jsc +0 -0
  330. package/server/socketcluster/room/WorkerRoom.jsc +0 -0
  331. package/server/socketcluster/room/roomFactory.jsc +0 -0
  332. package/server/socketcluster/socketClusterObjects.jsc +0 -0
  333. package/server/socketcluster/types.jsc +0 -0
  334. package/server/socketcluster/util/clusterData.jsc +0 -0
  335. package/server/socketcluster/util/socketClusterUtils.jsc +0 -0
  336. package/server/socketcluster/worker/ClusterWorker.jsc +0 -0
  337. package/server/socketcluster/worker/WorkerIF.jsc +0 -0
  338. package/server/socketcluster/worker/WorkerObjects.jsc +0 -0
  339. package/server/transactToClusteringUtilities.jsc +0 -0
  340. package/sqlTranslator/SelectValidator.jsc +0 -0
  341. package/sqlTranslator/alasqlFunctionImporter.jsc +0 -0
  342. package/sqlTranslator/conditionPatterns.jsc +0 -0
  343. package/sqlTranslator/deleteTranslator.jsc +0 -0
  344. package/sqlTranslator/index.jsc +0 -0
  345. package/sqlTranslator/sql_statement_bucket.jsc +0 -0
  346. package/upgrade/EnvironmentVariable.jsc +0 -0
  347. package/upgrade/UpgradeDirective.jsc +0 -0
  348. package/upgrade/UpgradeObjects.jsc +0 -0
  349. package/upgrade/directives/3-0-0.jsc +0 -0
  350. package/upgrade/directives/3-1-0.jsc +0 -0
  351. package/upgrade/directives/directivesController.jsc +0 -0
  352. package/upgrade/directives/upgrade_scripts/3_0_0_reindex_script.jsc +0 -0
  353. package/upgrade/directivesManager.jsc +0 -0
  354. package/upgrade/lmdb/nodeLMDB/DBIDefinition.jsc +0 -0
  355. package/upgrade/lmdb/nodeLMDB/OpenDBIObject.jsc +0 -0
  356. package/upgrade/lmdb/nodeLMDB/OpenEnvironmentObject.jsc +0 -0
  357. package/upgrade/lmdb/nodeLMDB/commonErrors.jsc +0 -0
  358. package/upgrade/lmdb/nodeLMDB/commonUtility.jsc +0 -0
  359. package/upgrade/lmdb/nodeLMDB/environmentUtility.jsc +0 -0
  360. package/upgrade/lmdb/nodeLMDB/terms.jsc +0 -0
  361. package/upgrade/upgradePrompt.jsc +0 -0
  362. package/upgrade/upgradeUtilities.jsc +0 -0
  363. package/utility/AWS/AWSConnector.jsc +0 -0
  364. package/utility/OperationFunctionCaller.jsc +0 -0
  365. package/utility/common_utils.jsc +0 -0
  366. package/utility/environment/SystemInformationObject.jsc +0 -0
  367. package/utility/environment/SystemInformationOperation.jsc +0 -0
  368. package/utility/environment/environmentManager.jsc +0 -0
  369. package/utility/environment/systemInformation.jsc +0 -0
  370. package/utility/errors/commonErrors.jsc +0 -0
  371. package/utility/errors/hdbError.jsc +0 -0
  372. package/utility/functions/date/dateFunctions.jsc +0 -0
  373. package/utility/functions/geo.jsc +0 -0
  374. package/utility/functions/math/avg.jsc +0 -0
  375. package/utility/functions/math/count.jsc +0 -0
  376. package/utility/functions/sql/alaSQLExtension.jsc +0 -0
  377. package/utility/functions/string/compare.jsc +0 -0
  378. package/utility/globalSchema.jsc +0 -0
  379. package/utility/hdbTerms.jsc +0 -0
  380. package/utility/install/checkJWTTokensExist.jsc +0 -0
  381. package/utility/install/installer.jsc +0 -0
  382. package/utility/install_user_permission.jsc +0 -0
  383. package/utility/lmdb/DBIDefinition.jsc +0 -0
  384. package/utility/lmdb/DeleteRecordsResponseObject.jsc +0 -0
  385. package/utility/lmdb/InsertRecordsResponseObject.jsc +0 -0
  386. package/utility/lmdb/OpenDBIObject.jsc +0 -0
  387. package/utility/lmdb/OpenEnvironmentObject.jsc +0 -0
  388. package/utility/lmdb/UpdateRecordsResponseObject.jsc +0 -0
  389. package/utility/lmdb/UpsertRecordsResponseObject.jsc +0 -0
  390. package/utility/lmdb/cleanLMDBMap.jsc +0 -0
  391. package/utility/lmdb/commonUtility.jsc +0 -0
  392. package/utility/lmdb/deleteUtility.jsc +0 -0
  393. package/utility/lmdb/environmentUtility.jsc +0 -0
  394. package/utility/lmdb/searchCursorFunctions.jsc +0 -0
  395. package/utility/lmdb/searchUtility.jsc +0 -0
  396. package/utility/lmdb/terms.jsc +0 -0
  397. package/utility/lmdb/writeUtility.jsc +0 -0
  398. package/utility/logging/harper_logger.jsc +0 -0
  399. package/utility/mount_hdb.jsc +0 -0
  400. package/utility/npmUtilities.jsc +0 -0
  401. package/utility/operation_authorization.jsc +0 -0
  402. package/utility/password.jsc +0 -0
  403. package/utility/pm2/servicesConfig.jsc +0 -0
  404. package/utility/pm2/utilityFunctions.jsc +0 -0
  405. package/utility/psList.jsc +0 -0
  406. package/utility/registration/hdb_license.jsc +0 -0
  407. package/utility/registration/licenseObjects.jsc +0 -0
  408. package/utility/registration/registrationHandler.jsc +0 -0
  409. package/utility/scripts/restartHdb.jsc +0 -0
  410. package/utility/signalling.jsc +0 -0
  411. package/utility/system_info.jsc +0 -0
  412. package/validation/bulkDeleteValidator.jsc +0 -0
  413. package/validation/check_permissions.jsc +0 -0
  414. package/validation/clustering/configureValidator.jsc +0 -0
  415. package/validation/common_validators.jsc +0 -0
  416. package/validation/conditionalDeleteValidator.jsc +0 -0
  417. package/validation/deleteValidator.jsc +0 -0
  418. package/validation/fileLoadValidator.jsc +0 -0
  419. package/validation/insertValidator.jsc +0 -0
  420. package/validation/nodeSubscriptionValidator.jsc +0 -0
  421. package/validation/nodeValidator.jsc +0 -0
  422. package/validation/readLogValidator.jsc +0 -0
  423. package/validation/registration/license_key_object.jsc +0 -0
  424. package/validation/role_validation.jsc +0 -0
  425. package/validation/schemaMetadataValidator.jsc +0 -0
  426. package/validation/schema_validator.jsc +0 -0
  427. package/validation/searchValidator.jsc +0 -0
  428. package/validation/user_validation.jsc +0 -0
  429. package/validation/validationWrapper.jsc +0 -0
  430. package/node_modules/lmdb-store/build/Makefile +0 -324
  431. package/node_modules/lmdb-store/build/Release/.deps/Release/lmdb-store.node.d +0 -1
  432. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store/dependencies/lmdb/libraries/liblmdb/chacha8.o.d +0 -6
  433. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store/dependencies/lmdb/libraries/liblmdb/mdb.o.d +0 -8
  434. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store/dependencies/lmdb/libraries/liblmdb/midl.o.d +0 -8
  435. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store/dependencies/lz4/lib/lz4.o.d +0 -5
  436. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store/src/compression.o.d +0 -72
  437. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store/src/cursor.o.d +0 -73
  438. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store/src/dbi.o.d +0 -73
  439. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store/src/env.o.d +0 -73
  440. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store/src/misc.o.d +0 -73
  441. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store/src/node-lmdb.o.d +0 -73
  442. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store/src/ordered-binary.o.d +0 -73
  443. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store/src/txn.o.d +0 -73
  444. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store/src/windows.o.d +0 -3
  445. package/node_modules/lmdb-store/build/Release/.deps/Release/obj.target/lmdb-store.node.d +0 -1
  446. package/node_modules/lmdb-store/build/Release/lmdb-store.node +0 -0
  447. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store/dependencies/lmdb/libraries/liblmdb/chacha8.o +0 -0
  448. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store/dependencies/lmdb/libraries/liblmdb/mdb.o +0 -0
  449. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store/dependencies/lmdb/libraries/liblmdb/midl.o +0 -0
  450. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store/dependencies/lz4/lib/lz4.o +0 -0
  451. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store/src/compression.o +0 -0
  452. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store/src/cursor.o +0 -0
  453. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store/src/dbi.o +0 -0
  454. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store/src/env.o +0 -0
  455. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store/src/misc.o +0 -0
  456. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store/src/node-lmdb.o +0 -0
  457. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store/src/ordered-binary.o +0 -0
  458. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store/src/txn.o +0 -0
  459. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store/src/windows.o +0 -0
  460. package/node_modules/lmdb-store/build/Release/obj.target/lmdb-store.node +0 -0
  461. package/node_modules/lmdb-store/build/binding.Makefile +0 -6
  462. package/node_modules/lmdb-store/build/config.gypi +0 -426
  463. package/node_modules/lmdb-store/build/lmdb-store.target.mk +0 -206
  464. package/node_modules/lmdb-store/node_modules/node-gyp-build/package.json +0 -60
  465. package/node_modules/lmdb-store/prebuilds/darwin-x64/electron.abi87.node +0 -0
  466. package/node_modules/lmdb-store/prebuilds/darwin-x64/node.abi72.node +0 -0
  467. package/node_modules/lmdb-store/prebuilds/darwin-x64/node.abi88.node +0 -0
  468. package/node_modules/lmdb-store/prebuilds/win32-x64/electron.abi87.node +0 -0
  469. package/node_modules/lmdb-store/prebuilds/win32-x64/node.abi72.node +0 -0
  470. package/node_modules/lmdb-store/prebuilds/win32-x64/node.abi88.node +0 -0
  471. package/node_modules/microtime/prebuilds/darwin-x64/electron-napi.node +0 -0
  472. package/node_modules/microtime/prebuilds/darwin-x64/node-napi.node +0 -0
  473. package/node_modules/microtime/prebuilds/linux-arm/electron-napi.node +0 -0
  474. package/node_modules/microtime/prebuilds/linux-arm/node-napi.node +0 -0
  475. package/node_modules/microtime/prebuilds/linux-x64/electron-napi.node +0 -0
  476. package/node_modules/microtime/prebuilds/linux-x64/node-napi.node +0 -0
  477. package/node_modules/microtime/prebuilds/win32-x64/electron-napi.node +0 -0
  478. package/node_modules/microtime/prebuilds/win32-x64/node-napi.node +0 -0
  479. package/node_modules/msgpackr-extract/.circleci/config.yml +0 -19
  480. package/node_modules/msgpackr-extract/.travis.yml +0 -30
  481. package/node_modules/msgpackr-extract/node_modules/node-gyp-build/LICENSE +0 -21
  482. package/node_modules/msgpackr-extract/node_modules/node-gyp-build/README.md +0 -58
  483. package/node_modules/msgpackr-extract/node_modules/node-gyp-build/bin.js +0 -77
  484. package/node_modules/msgpackr-extract/node_modules/node-gyp-build/build-test.js +0 -19
  485. package/node_modules/msgpackr-extract/node_modules/node-gyp-build/index.js +0 -202
  486. package/node_modules/msgpackr-extract/node_modules/node-gyp-build/optional.js +0 -7
  487. package/node_modules/msgpackr-extract/prebuilds/darwin-arm64/electron.abi98.node +0 -0
  488. package/node_modules/msgpackr-extract/prebuilds/darwin-arm64/node.abi102.node +0 -0
  489. package/node_modules/msgpackr-extract/prebuilds/darwin-arm64/node.abi83.node +0 -0
  490. package/node_modules/msgpackr-extract/prebuilds/darwin-arm64/node.abi93.node +0 -0
  491. package/node_modules/msgpackr-extract/prebuilds/darwin-x64/electron.abi98.node +0 -0
  492. package/node_modules/msgpackr-extract/prebuilds/darwin-x64/node.abi102.node +0 -0
  493. package/node_modules/msgpackr-extract/prebuilds/darwin-x64/node.abi83.node +0 -0
  494. package/node_modules/msgpackr-extract/prebuilds/darwin-x64/node.abi88.node +0 -0
  495. package/node_modules/msgpackr-extract/prebuilds/darwin-x64/node.abi93.node +0 -0
  496. package/node_modules/msgpackr-extract/prebuilds/linux-arm64/electron.abi98.node +0 -0
  497. package/node_modules/msgpackr-extract/prebuilds/linux-arm64/node.abi102.node +0 -0
  498. package/node_modules/msgpackr-extract/prebuilds/linux-arm64/node.abi83.node +0 -0
  499. package/node_modules/msgpackr-extract/prebuilds/linux-arm64/node.abi93.node +0 -0
  500. package/node_modules/msgpackr-extract/prebuilds/linux-x64/electron.abi98.node +0 -0
  501. package/node_modules/msgpackr-extract/prebuilds/linux-x64/node.abi102.musl.node +0 -0
  502. package/node_modules/msgpackr-extract/prebuilds/linux-x64/node.abi102.node +0 -0
  503. package/node_modules/msgpackr-extract/prebuilds/linux-x64/node.abi72.musl.node +0 -0
  504. package/node_modules/msgpackr-extract/prebuilds/linux-x64/node.abi72.node +0 -0
  505. package/node_modules/msgpackr-extract/prebuilds/linux-x64/node.abi83.musl.node +0 -0
  506. package/node_modules/msgpackr-extract/prebuilds/linux-x64/node.abi83.node +0 -0
  507. package/node_modules/msgpackr-extract/prebuilds/linux-x64/node.abi88.node +0 -0
  508. package/node_modules/msgpackr-extract/prebuilds/linux-x64/node.abi93.musl.node +0 -0
  509. package/node_modules/msgpackr-extract/prebuilds/linux-x64/node.abi93.node +0 -0
  510. package/node_modules/msgpackr-extract/prebuilds/win32-x64/electron.abi98.node +0 -0
  511. package/node_modules/msgpackr-extract/prebuilds/win32-x64/node.abi102.node +0 -0
  512. package/node_modules/msgpackr-extract/prebuilds/win32-x64/node.abi72.node +0 -0
  513. package/node_modules/msgpackr-extract/prebuilds/win32-x64/node.abi83.node +0 -0
  514. package/node_modules/msgpackr-extract/prebuilds/win32-x64/node.abi88.node +0 -0
  515. package/node_modules/msgpackr-extract/prebuilds/win32-x64/node.abi93.node +0 -0
  516. package/node_modules/node-addon-api/.editorconfig +0 -8
  517. package/node_modules/node-addon-api/.travis.yml +0 -65
  518. package/node_modules/node-addon-api/CHANGELOG.md +0 -325
  519. package/node_modules/node-addon-api/CODE_OF_CONDUCT.md +0 -4
  520. package/node_modules/node-addon-api/CONTRIBUTING.md +0 -66
  521. package/node_modules/node-addon-api/appveyor.yml +0 -48
  522. package/node_modules/node-addon-api/doc/Doxyfile +0 -2450
  523. package/node_modules/node-addon-api/doc/array_buffer.md +0 -129
  524. package/node_modules/node-addon-api/doc/async_context.md +0 -76
  525. package/node_modules/node-addon-api/doc/async_operations.md +0 -31
  526. package/node_modules/node-addon-api/doc/async_worker.md +0 -397
  527. package/node_modules/node-addon-api/doc/basic_types.md +0 -415
  528. package/node_modules/node-addon-api/doc/bigint.md +0 -92
  529. package/node_modules/node-addon-api/doc/boolean.md +0 -64
  530. package/node_modules/node-addon-api/doc/buffer.md +0 -140
  531. package/node_modules/node-addon-api/doc/callback_scope.md +0 -54
  532. package/node_modules/node-addon-api/doc/callbackinfo.md +0 -97
  533. package/node_modules/node-addon-api/doc/checker-tool.md +0 -32
  534. package/node_modules/node-addon-api/doc/class_property_descriptor.md +0 -118
  535. package/node_modules/node-addon-api/doc/cmake-js.md +0 -19
  536. package/node_modules/node-addon-api/doc/conversion-tool.md +0 -28
  537. package/node_modules/node-addon-api/doc/creating_a_release.md +0 -62
  538. package/node_modules/node-addon-api/doc/dataview.md +0 -244
  539. package/node_modules/node-addon-api/doc/env.md +0 -63
  540. package/node_modules/node-addon-api/doc/error.md +0 -115
  541. package/node_modules/node-addon-api/doc/error_handling.md +0 -186
  542. package/node_modules/node-addon-api/doc/escapable_handle_scope.md +0 -82
  543. package/node_modules/node-addon-api/doc/external.md +0 -59
  544. package/node_modules/node-addon-api/doc/function.md +0 -294
  545. package/node_modules/node-addon-api/doc/function_reference.md +0 -238
  546. package/node_modules/node-addon-api/doc/generator.md +0 -13
  547. package/node_modules/node-addon-api/doc/handle_scope.md +0 -65
  548. package/node_modules/node-addon-api/doc/memory_management.md +0 -27
  549. package/node_modules/node-addon-api/doc/node-gyp.md +0 -82
  550. package/node_modules/node-addon-api/doc/number.md +0 -163
  551. package/node_modules/node-addon-api/doc/object.md +0 -202
  552. package/node_modules/node-addon-api/doc/object_lifetime_management.md +0 -83
  553. package/node_modules/node-addon-api/doc/object_reference.md +0 -117
  554. package/node_modules/node-addon-api/doc/object_wrap.md +0 -546
  555. package/node_modules/node-addon-api/doc/prebuild_tools.md +0 -16
  556. package/node_modules/node-addon-api/doc/promises.md +0 -74
  557. package/node_modules/node-addon-api/doc/property_descriptor.md +0 -231
  558. package/node_modules/node-addon-api/doc/range_error.md +0 -59
  559. package/node_modules/node-addon-api/doc/reference.md +0 -111
  560. package/node_modules/node-addon-api/doc/setup.md +0 -82
  561. package/node_modules/node-addon-api/doc/string.md +0 -89
  562. package/node_modules/node-addon-api/doc/symbol.md +0 -44
  563. package/node_modules/node-addon-api/doc/threadsafe_function.md +0 -303
  564. package/node_modules/node-addon-api/doc/type_error.md +0 -59
  565. package/node_modules/node-addon-api/doc/typed_array.md +0 -74
  566. package/node_modules/node-addon-api/doc/typed_array_of.md +0 -133
  567. package/node_modules/node-addon-api/doc/value.md +0 -269
  568. package/node_modules/node-addon-api/doc/version_management.md +0 -43
  569. package/node_modules/node-addon-api/doc/working_with_javascript_values.md +0 -14
  570. package/node_modules/node-addon-api/external-napi/node_api.h +0 -7
  571. package/node_modules/node-addon-api/src/node_api.cc +0 -3655
  572. package/node_modules/node-addon-api/src/node_api.gyp +0 -21
  573. package/node_modules/node-addon-api/src/node_api.h +0 -588
  574. package/node_modules/node-addon-api/src/node_api_types.h +0 -115
  575. package/node_modules/node-addon-api/src/node_internals.cc +0 -142
  576. package/node_modules/node-addon-api/src/node_internals.h +0 -157
  577. package/node_modules/node-addon-api/src/util-inl.h +0 -38
  578. package/node_modules/node-addon-api/src/util.h +0 -7
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../native.js","../util/when.js","../write.js","../util/RangeIterable.js","../keys.js","../read.js","../caching.js","../open.js","../level.js","../index.js","../node-index.js"],"sourcesContent":["import { dirname, join, default as pathModule } from 'path';\nimport { fileURLToPath } from 'url';\nimport loadNAPI from 'node-gyp-build-optional-packages';\nexport let Env, Txn, Dbi, Compression, Cursor, getAddress, createBufferForAddress, clearKeptObjects, globalBuffer, setGlobalBuffer, arch, fs, os, onExit, tmpdir, lmdbError, path, EventEmitter, orderedBinary, MsgpackrEncoder, WeakLRUCache, setEnvMap, getEnvMap, getByBinary, detachBuffer, write, position, iterate, prefetch, resetTxn, getCurrentValue, getCurrentShared, getStringByBinary, getSharedByBinary, getSharedBuffer, compress;\n\npath = pathModule;\nlet dirName = (typeof __dirname == 'string' ? __dirname : // for bun, which doesn't have fileURLToPath\n\tdirname(fileURLToPath(import.meta.url))).replace(/dist$/, ''); // for node, which doesn't have __dirname in ESM\nexport let nativeAddon = loadNAPI(dirName);\n\nif (process.isBun) {\n\tconst { linkSymbols, FFIType } = require('bun:ffi');\n\tlet lmdbLib = linkSymbols({\n\t\tgetByBinary: {\n\t\t\targs: [FFIType.f64, FFIType.u32],\n\t\t\treturns: FFIType.u32,\n\t\t\tptr: nativeAddon.getByBinaryPtr\n\t\t},\n\t\titerate: {\n\t\t\targs: [FFIType.f64],\n\t\t\treturns: FFIType.i32,\n\t\t\tptr: nativeAddon.iteratePtr,\n\t\t},\n\t\tposition: {\n\t\t\targs: [FFIType.f64, FFIType.u32, FFIType.u32, FFIType.u32, FFIType.f64],\n\t\t\treturns: FFIType.i32,\n\t\t\tptr: nativeAddon.positionPtr,\n\t\t},\n\t\twrite: {\n\t\t\targs: [FFIType.f64, FFIType.f64],\n\t\t\treturns: FFIType.i32,\n\t\t\tptr: nativeAddon.writePtr,\n\t\t},\n\t\tresetTxn: {\n\t\t\targs: [FFIType.f64],\n\t\t\treturns: FFIType.void,\n\t\t\tptr: nativeAddon.resetTxnPtr,\n\t\t}\n\t});\n\tfor (let key in lmdbLib.symbols) {\n\t\tnativeAddon[key] = lmdbLib.symbols[key].native;\n\t}\n}\nsetNativeFunctions(nativeAddon);\n\t\nexport function setNativeFunctions(externals) {\n\tEnv = externals.Env;\n\tTxn = externals.Txn;\n\tDbi = externals.Dbi;\n\tCompression = externals.Compression;\n\tgetAddress = externals.getAddress;\n\tcreateBufferForAddress = externals.createBufferForAddress;\n\tclearKeptObjects = externals.clearKeptObjects || function() {};\n\tgetByBinary = externals.getByBinary;\n\tdetachBuffer = externals.detachBuffer;\n\tsetGlobalBuffer = externals.setGlobalBuffer;\n\tglobalBuffer = externals.globalBuffer;\n\tgetSharedBuffer = externals.getSharedBuffer;\n\tprefetch = externals.prefetch;\n\titerate = externals.iterate;\n\tposition = externals.position;\n\tresetTxn = externals.resetTxn;\n\tgetCurrentValue = externals.getCurrentValue;\n\tgetCurrentShared = externals.getCurrentShared;\n\tgetStringByBinary = externals.getStringByBinary;\n\tgetSharedByBinary = externals.getSharedByBinary;\n\twrite = externals.write;\n\tcompress = externals.compress;\n\tCursor = externals.Cursor;\n\tlmdbError = externals.lmdbError;\n\tif (externals.tmpdir)\n tmpdir = externals.tmpdir\n}\nexport function setExternals(externals) {\n\tarch = externals.arch;\n\tfs = externals.fs;\n\tEventEmitter = externals.EventEmitter;\n\torderedBinary = externals.orderedBinary;\n\tMsgpackrEncoder = externals.MsgpackrEncoder;\n\tWeakLRUCache = externals.WeakLRUCache;\n\ttmpdir = externals.tmpdir;\n os = externals.os;\n\tonExit = externals.onExit;\n}\n","export function when(promise, callback, errback) {\r\n if (promise && promise.then) {\r\n return errback ?\r\n promise.then(callback, errback) :\r\n promise.then(callback);\r\n }\r\n return callback(promise);\r\n}\r\n","import { getAddress, write, compress } from './native.js';\nimport { when } from './util/when.js';\nvar backpressureArray;\n\nconst WAITING_OPERATION = 0x2000000;\nconst BACKPRESSURE_THRESHOLD = 100000;\nconst TXN_DELIMITER = 0x8000000;\nconst TXN_COMMITTED = 0x10000000;\nconst TXN_FLUSHED = 0x20000000;\nconst TXN_FAILED = 0x40000000;\nexport const FAILED_CONDITION = 0x4000000;\nconst REUSE_BUFFER_MODE = 512;\nconst RESET_BUFFER_MODE = 1024;\nconst NO_RESOLVE = 16;\nconst HAS_TXN = 8;\nconst CONDITIONAL_VERSION_LESS_THAN = 0x800;\nconst CONDITIONAL_ALLOW_NOTFOUND = 0x800;\n\nconst SYNC_PROMISE_SUCCESS = Promise.resolve(true);\nconst SYNC_PROMISE_FAIL = Promise.resolve(false);\nSYNC_PROMISE_SUCCESS.isSync = true;\nSYNC_PROMISE_FAIL.isSync = true;\nconst PROMISE_SUCCESS = Promise.resolve(true);\nexport const ABORT = {};\nexport const IF_EXISTS = 3.542694326329068e-103;\nconst CALLBACK_THREW = {};\nconst LocalSharedArrayBuffer = typeof Deno != 'undefined' ? ArrayBuffer : SharedArrayBuffer; // Deno can't handle SharedArrayBuffer as an FFI argument due to https://github.com/denoland/deno/issues/12678\nconst ByteArray = typeof Buffer != 'undefined' ? function(buffer) { return Buffer.from(buffer) } : Uint8Array;\nconst queueTask = typeof setImmediate != 'undefined' ? setImmediate : setTimeout; // TODO: Or queueMicrotask?\n//let debugLog = []\nconst WRITE_BUFFER_SIZE = 0x10000;\nvar log = [];\nexport function addWriteMethods(LMDBStore, { env, fixedBuffer, resetReadTxn, useWritemap, maxKeySize,\n\teventTurnBatching, txnStartThreshold, batchStartThreshold, overlappingSync, commitDelay, separateFlushed, maxFlushDelay }) {\n\t// stands for write instructions\n\tvar dynamicBytes;\n\tfunction allocateInstructionBuffer() {\n\t\t// Must use a shared buffer on older node in order to use Atomics, and it is also more correct since we are \n\t\t// indeed accessing and modifying it from another thread (in C). However, Deno can't handle it for\n\t\t// FFI so aliased above\n\t\tlet buffer = new LocalSharedArrayBuffer(WRITE_BUFFER_SIZE);\n\t\tdynamicBytes = new ByteArray(buffer);\n\t\tlet uint32 = dynamicBytes.uint32 = new Uint32Array(buffer, 0, WRITE_BUFFER_SIZE >> 2);\n\t\tuint32[0] = 0;\n\t\tdynamicBytes.float64 = new Float64Array(buffer, 0, WRITE_BUFFER_SIZE >> 3);\n\t\tbuffer.address = getAddress(dynamicBytes);\n\t\tuint32.address = buffer.address + uint32.byteOffset;\n\t\tdynamicBytes.position = 0;\n\t\treturn dynamicBytes;\n\t}\n\tvar newBufferThreshold = (WRITE_BUFFER_SIZE - maxKeySize - 64) >> 3; // need to reserve more room if we do inline values\n\tvar outstandingWriteCount = 0;\n\tvar startAddress = 0;\n\tvar writeTxn = null;\n\tvar committed;\n\tvar abortedNonChildTransactionWarn;\n\tvar nextTxnCallbacks = [];\n\tvar commitPromise, flushPromise, flushResolvers = [];\n\tcommitDelay = commitDelay || 0;\n\teventTurnBatching = eventTurnBatching === false ? false : true;\n\tvar enqueuedCommit;\n\tvar afterCommitCallbacks = [];\n\tvar beforeCommitCallbacks = [];\n\tvar enqueuedEventTurnBatch;\n\tvar batchDepth = 0;\n\tvar lastWritePromise;\n\tvar writeBatchStart, outstandingBatchCount, lastSyncTxnFlush, lastFlushTimeout, lastFlushCallback;\n\ttxnStartThreshold = txnStartThreshold || 5;\n\tbatchStartThreshold = batchStartThreshold || 1000;\n\tmaxFlushDelay = maxFlushDelay || 500;\n\n\tallocateInstructionBuffer();\n\tdynamicBytes.uint32[0] = TXN_DELIMITER | TXN_COMMITTED | TXN_FLUSHED;\n\tvar txnResolution, lastQueuedResolution, nextResolution = {\n\t\tuint32: dynamicBytes.uint32, flagPosition: 0, flag: 0, valueBuffer: null, next: null, meta: null };\n\tvar uncommittedResolution = {\n\t\tuint32: null, flagPosition: 0, flag: 0, valueBuffer: null, next: nextResolution, meta: null };\n\tvar unwrittenResolution = nextResolution;\n\tvar lastPromisedResolution = uncommittedResolution;\n\tlet lastValue, valueBuffer;\n\tfunction writeInstructions(flags, store, key, value, version, ifVersion) {\n\t\tlet writeStatus;\n\t\tlet targetBytes, position, encoder;\n\t\tlet valueSize, valueBufferStart;\n\t\tif (flags & 2) {\n\t\t\t// encode first in case we have to write a shared structure\n\t\t\tencoder = store.encoder;\n\t\t\tif (typeof value !== 'object' && value && value === lastValue && !store.compression) {\n\t\t\t\t// reuse last valueBuffer\n\t\t\t} else if (value && value['\\x10binary-data\\x02'])\n\t\t\t\tvalueBuffer = value['\\x10binary-data\\x02'];\n\t\t\telse if (encoder) {\n\t\t\t\tif (encoder.copyBuffers) // use this as indicator for support buffer reuse for now\n\t\t\t\t\tvalueBuffer = encoder.encode(value, REUSE_BUFFER_MODE | (writeTxn ? RESET_BUFFER_MODE : 0)); // in addition, if we are writing sync, after using, we can immediately reset the encoder's position to reuse that space, which can improve performance\n\t\t\t\telse { // various other encoders, including JSON.stringify, that might serialize to a string\n\t\t\t\t\tvalueBuffer = encoder.encode(value);\n\t\t\t\t\tif (typeof valueBuffer == 'string')\n\t\t\t\t\t\tvalueBuffer = Buffer.from(valueBuffer); // TODO: Would be nice to write strings inline in the instructions\n\t\t\t\t}\n\t\t\t} else if (typeof value == 'string') {\n\t\t\t\tvalueBuffer = Buffer.from(value); // TODO: Would be nice to write strings inline in the instructions\n\t\t\t} else if (value instanceof Uint8Array)\n\t\t\t\tvalueBuffer = value;\n\t\t\telse\n\t\t\t\tthrow new Error('Invalid value to put in database ' + value + ' (' + (typeof value) +'), consider using encoder');\n\t\t\tlastValue = (writeTxn || store.compression) ? null : value; // can't reuse values from write txns because we reset the buffer\n\t\t\tvalueBufferStart = valueBuffer.start;\n\t\t\tif (valueBufferStart > -1) // if we have buffers with start/end position\n\t\t\t\tvalueSize = valueBuffer.end - valueBufferStart; // size\n\t\t\telse\n\t\t\t\tvalueSize = valueBuffer.length;\n\t\t\tif (store.dupSort && valueSize > maxKeySize)\n\t\t\t\tthrow new Error('The value is larger than the maximum size (' + maxKeySize + ') for a value in a dupSort database');\n\t\t} else\n\t\t\tvalueSize = 0;\n\t\tif (writeTxn) {\n\t\t\ttargetBytes = fixedBuffer;\n\t\t\tposition = 0;\n\t\t} else {\n\t\t\tif (eventTurnBatching && !enqueuedEventTurnBatch && batchDepth == 0) {\n\t\t\t\tenqueuedEventTurnBatch = queueTask(() => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor (let i = 0, l = beforeCommitCallbacks.length; i < l; i++) {\n\t\t\t\t\t\t\tbeforeCommitCallbacks[i]();\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch(error) {\n\t\t\t\t\t\tconsole.error(error);\n\t\t\t\t\t}\n\t\t\t\t\tenqueuedEventTurnBatch = null;\n\t\t\t\t\tbatchDepth--;\n\t\t\t\t\tfinishBatch();\n\t\t\t\t\tif (writeBatchStart)\n\t\t\t\t\t\twriteBatchStart(); // TODO: When we support delay start of batch, optionally don't delay this\n\t\t\t\t});\n\t\t\t\tcommitPromise = null; // reset the commit promise, can't know if it is really a new transaction prior to finishWrite being called\n\t\t\t\tflushPromise = null;\n\t\t\t\twriteBatchStart = writeInstructions(1, store);\n\t\t\t\toutstandingBatchCount = 0;\n\t\t\t\tbatchDepth++;\n\t\t\t}\n\t\t\ttargetBytes = dynamicBytes;\n\t\t\tposition = targetBytes.position;\n\t\t}\n\t\tlet uint32 = targetBytes.uint32, float64 = targetBytes.float64;\n\t\tlet flagPosition = position << 1; // flagPosition is the 32-bit word starting position\n\n\t\t// don't increment position until we are sure we don't have any key writing errors\n\t\tif (!uint32) {\n\t\t\tthrow new Error('Internal buffers have been corrupted');\n\t\t}\n\t\tuint32[flagPosition + 1] = store.db.dbi;\n\t\tif (flags & 4) {\n\t\t\tlet keyStartPosition = (position << 3) + 12;\n\t\t\tlet endPosition;\n\t\t\ttry {\n\t\t\t\tendPosition = store.writeKey(key, targetBytes, keyStartPosition);\n\t\t\t\tif (!(keyStartPosition < endPosition) && (flags & 0xf) != 12)\n\t\t\t\t\tthrow new Error('Invalid key or zero length key is not allowed in LMDB')\n\t\t\t} catch(error) {\n\t\t\t\ttargetBytes.fill(0, keyStartPosition);\n\t\t\t\tif (error.name == 'RangeError')\n\t\t\t\t\terror = new Error('Key size is larger than the maximum key size (' + maxKeySize + ')');\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tlet keySize = endPosition - keyStartPosition;\n\t\t\tif (keySize > maxKeySize) {\n\t\t\t\ttargetBytes.fill(0, keyStartPosition); // restore zeros\n\t\t\t\tthrow new Error('Key size is larger than the maximum key size (' + maxKeySize + ')');\n\t\t\t}\n\t\t\tuint32[flagPosition + 2] = keySize;\n\t\t\tposition = (endPosition + 16) >> 3;\n\t\t\tif (flags & 2) {\n\t\t\t\tlet mustCompress;\n\t\t\t\tif (valueBufferStart > -1) { // if we have buffers with start/end position\n\t\t\t\t\t// record pointer to value buffer\n\t\t\t\t\tfloat64[position] = (valueBuffer.address ||\n\t\t\t\t\t\t(valueBuffer.address = getAddress(valueBuffer))) + valueBufferStart;\n\t\t\t\t\tmustCompress = valueBuffer[valueBufferStart] >= 250; // this is the compression indicator, so we must compress\n\t\t\t\t} else {\n\t\t\t\t\tlet valueArrayBuffer = valueBuffer.buffer;\n\t\t\t\t\t// record pointer to value buffer\n\t\t\t\t\tlet address = (valueArrayBuffer.address ||\n\t\t\t\t\t\t(valueBuffer.length === 0 ? 0 : // externally allocated buffers of zero-length with the same non-null-pointer can crash node, #161\n\t\t\t\t\t\t(valueArrayBuffer.address = (getAddress(valueBuffer) - valueBuffer.byteOffset))))\n\t\t\t\t\t\t\t+ valueBuffer.byteOffset;\n\t\t\t\t\tif (address <= 0 && valueBuffer.length > 0)\n\t\t\t\t\t\tconsole.error('Supplied buffer had an invalid address', address);\n\t\t\t\t\tfloat64[position] = address;\n\t\t\t\t\tmustCompress = valueBuffer[0] >= 250; // this is the compression indicator, so we must compress\n\t\t\t\t}\n\t\t\t\tuint32[(position++ << 1) - 1] = valueSize;\n\t\t\t\tif (store.compression && (valueSize >= store.compression.threshold || mustCompress)) {\n\t\t\t\t\tflags |= 0x100000;\n\t\t\t\t\tfloat64[position] = store.compression.address;\n\t\t\t\t\tif (!writeTxn)\n\t\t\t\t\t\tcompress(env.address, uint32.address + (position << 3), () => {\n\t\t\t\t\t\t\t// this is never actually called in NodeJS, just use to pin the buffer in memory until it is finished\n\t\t\t\t\t\t\t// and is a no-op in Deno\n\t\t\t\t\t\t\tif (!float64)\n\t\t\t\t\t\t\t\tthrow new Error('No float64 available');\n\t\t\t\t\t\t});\n\t\t\t\t\tposition++;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (ifVersion !== undefined) {\n\t\t\t\tif (ifVersion === null)\n\t\t\t\t\tflags |= 0x10; // if it does not exist, MDB_NOOVERWRITE\n\t\t\t\telse {\n\t\t\t\t\tflags |= 0x100;\n\t\t\t\t\tfloat64[position++] = ifVersion;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (version !== undefined) {\n\t\t\t\tflags |= 0x200;\n\t\t\t\tfloat64[position++] = version || 0;\n\t\t\t}\n\t\t} else\n\t\t\tposition++;\n\t\ttargetBytes.position = position;\n\t\tif (writeTxn) {\n\t\t\tuint32[0] = flags;\n\t\t\twrite(env.address, uint32.address);\n\t\t\treturn () => (uint32[0] & FAILED_CONDITION) ? SYNC_PROMISE_FAIL : SYNC_PROMISE_SUCCESS;\n\t\t}\n\t\t// if we ever use buffers that haven't been zero'ed, need to clear out the next slot like this:\n\t\t// uint32[position << 1] = 0 // clear out the next slot\n\t\tlet nextUint32;\n\t\tif (position > newBufferThreshold) {\n\t\t\t// make new buffer and make pointer to it\n\t\t\tlet lastPosition = position;\n\t\t\ttargetBytes = allocateInstructionBuffer();\n\t\t\tposition = targetBytes.position;\n\t\t\tfloat64[lastPosition + 1] = targetBytes.uint32.address + position;\n\t\t\tuint32[lastPosition << 1] = 3; // pointer instruction\n\t\t\tnextUint32 = targetBytes.uint32;\n\t\t} else\n\t\t\tnextUint32 = uint32;\n\t\tlet resolution = nextResolution;\n\t\t// create the placeholder next resolution\n\t\tnextResolution = resolution.next = { // we try keep resolutions exactly the same object type\n\t\t\tuint32: nextUint32,\n\t\t\tflagPosition: position << 1,\n\t\t\tflag: 0, // TODO: eventually eliminate this, as we can probably signify HAS_TXN/NO_RESOLVE/FAILED_CONDITION in upper bits\n\t\t\tvalueBuffer: fixedBuffer, // these are all just placeholders so that we have the right hidden class initially allocated\n\t\t\tnext: null,\n\t\t\tmeta: null,\n\t\t};\n\t\tlet writtenBatchDepth = batchDepth;\n\n\t\treturn (callback) => {\n\t\t\tif (writtenBatchDepth) {\n\t\t\t\t// if we are in a batch, the transaction can't close, so we do the faster,\n\t\t\t\t// but non-deterministic updates, knowing that the write thread can\n\t\t\t\t// just poll for the status change if we miss a status update\n\t\t\t\twriteStatus = uint32[flagPosition];\n\t\t\t\tuint32[flagPosition] = flags;\n\t\t\t\t//writeStatus = Atomics.or(uint32, flagPosition, flags)\n\t\t\t\tif (writeBatchStart && !writeStatus) {\n\t\t\t\t\toutstandingBatchCount += 1 + (valueSize >> 12);\n\t\t\t\t\tif (outstandingBatchCount > batchStartThreshold) {\n\t\t\t\t\t\toutstandingBatchCount = 0;\n\t\t\t\t\t\twriteBatchStart();\n\t\t\t\t\t\twriteBatchStart = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else // otherwise the transaction could end at any time and we need to know the\n\t\t\t\t// deterministically if it is ending, so we can reset the commit promise\n\t\t\t\t// so we use the slower atomic operation\n\t\t\t\twriteStatus = Atomics.or(uint32, flagPosition, flags);\n\t\n\t\t\toutstandingWriteCount++;\n\t\t\tif (writeStatus & TXN_DELIMITER) {\n\t\t\t\tcommitPromise = null; // TODO: Don't reset these if this comes from the batch start operation on an event turn batch\n\t\t\t\tflushPromise = null;\n\t\t\t\tqueueCommitResolution(resolution);\n\t\t\t\tif (!startAddress) {\n\t\t\t\t\tstartAddress = uint32.address + (flagPosition << 2);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!flushPromise && overlappingSync)\n\t\t\t\tflushPromise = new Promise(resolve => flushResolvers.push(resolve));\n\t\t\tif (writeStatus & WAITING_OPERATION) { // write thread is waiting\n\t\t\t\twrite(env.address, 0);\n\t\t\t}\n\t\t\tif (outstandingWriteCount > BACKPRESSURE_THRESHOLD && !writeBatchStart) {\n\t\t\t\tif (!backpressureArray)\n\t\t\t\t\tbackpressureArray = new Int32Array(new SharedArrayBuffer(4), 0, 1);\n\t\t\t\tAtomics.wait(backpressureArray, 0, 0, Math.round(outstandingWriteCount / BACKPRESSURE_THRESHOLD));\n\t\t\t}\n\t\t\tif (startAddress) {\n\t\t\t\tif (eventTurnBatching)\n\t\t\t\t\tstartWriting(); // start writing immediately because this has already been batched/queued\n\t\t\t\telse if (!enqueuedCommit && txnStartThreshold) {\n\t\t\t\t\tenqueuedCommit = (commitDelay == 0 && typeof setImmediate != 'undefined') ? setImmediate(() => startWriting()) : setTimeout(() => startWriting(), commitDelay);\n\t\t\t\t} else if (outstandingWriteCount > txnStartThreshold)\n\t\t\t\t\tstartWriting();\n\t\t\t}\n\n\t\t\tif ((outstandingWriteCount & 7) === 0)\n\t\t\t\tresolveWrites();\n\t\t\t\n\t\t\tif (store.cache) {\n\t\t\t\tresolution.meta = {\n\t\t\t\t\tkey,\n\t\t\t\t\tstore,\n\t\t\t\t\tvalueSize: valueBuffer ? valueBuffer.length : 0,\n\t\t\t\t};\n\t\t\t}\n\t\t\tresolution.valueBuffer = valueBuffer;\n\t\t\tlastQueuedResolution = resolution;\n\n\t\t\tif (callback) {\n\t\t\t\tif (callback === IF_EXISTS)\n\t\t\t\t\tifVersion = IF_EXISTS;\n\t\t\t\telse {\n\t\t\t\t\tlet meta = resolution.meta || (resolution.meta = {});\n\t\t\t\t\tmeta.reject = callback;\n\t\t\t\t\tmeta.resolve = (value) => callback(null, value);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (ifVersion === undefined) {\n\t\t\t\tif (writtenBatchDepth > 1) {\n\t\t\t\t\tif (!resolution.flag && !store.cache)\n\t\t\t\t\t\tresolution.flag = NO_RESOLVE;\n\t\t\t\t\treturn PROMISE_SUCCESS; // or return undefined?\n\t\t\t\t}\n\t\t\t\tif (commitPromise) {\n\t\t\t\t\tif (!resolution.flag)\n\t\t\t\t\t\tresolution.flag = NO_RESOLVE;\n\t\t\t\t} else {\n\t\t\t\t\tcommitPromise = new Promise((resolve, reject) => {\n\t\t\t\t\t\tlet meta = resolution.meta || (resolution.meta = {});\n\t\t\t\t\t\tmeta.resolve = resolve;\n\t\t\t\t\t\tresolve.unconditional = true;\n\t\t\t\t\t\tmeta.reject = reject;\n\t\t\t\t\t});\n\t\t\t\t\tif (separateFlushed)\n\t\t\t\t\t\tcommitPromise.flushed = overlappingSync ? flushPromise : commitPromise;\n\t\t\t\t}\n\t\t\t\treturn commitPromise;\n\t\t\t}\n\t\t\tlastWritePromise = new Promise((resolve, reject) => {\n\t\t\t\tlet meta = resolution.meta || (resolution.meta = {});\n\t\t\t\tmeta.resolve = resolve;\n\t\t\t\tmeta.reject = reject;\n\t\t\t});\n\t\t\tif (separateFlushed)\n\t\t\t\tlastWritePromise.flushed = overlappingSync ? flushPromise : lastWritePromise;\n\t\t\treturn lastWritePromise;\n\t\t};\n\t}\n\tlet committedFlushResolvers, lastSync = Promise.resolve()\n\tfunction startWriting() {\n\t\tif (enqueuedCommit) {\n\t\t\tclearImmediate(enqueuedCommit);\n\t\t\tenqueuedCommit = null;\n\t\t}\n\t\tlet resolvers = flushResolvers;\n\t\tflushResolvers = [];\n\t\tlet start = Date.now();\n\t\tenv.startWriting(startAddress, (status) => {\n\t\t\tif (dynamicBytes.uint32[dynamicBytes.position << 1] & TXN_DELIMITER)\n\t\t\t\tqueueCommitResolution(nextResolution);\n\n\t\t\tresolveWrites(true);\n\t\t\tswitch (status) {\n\t\t\t\tcase 0:\n\t\t\t\t\tif (resolvers.length > 0) {\n\t\t\t\t\t\tlet delay = Date.now() - start\n\t\t\t\t\t\tscheduleFlush(resolvers, Math.min((flushPromise && flushPromise.hasCallbacks ? delay >> 1 : delay) + 1, maxFlushDelay))\n\t\t\t\t\t}\n\t\t\t\tcase 1:\n\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\texecuteTxnCallbacks();\n\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\tconsole.error(status);\n\t\t\t\tif (commitRejectPromise) {\n\t\t\t\t\tcommitRejectPromise.reject(status);\n\t\t\t\t\tcommitRejectPromise = null;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tstartAddress = 0;\n\t}\n\tfunction scheduleFlush(resolvers, delay) {\n\t\tif (committedFlushResolvers)\n\t\t\tcommittedFlushResolvers.push(...resolvers)\n\t\telse {\n\t\t\tcommittedFlushResolvers = resolvers\n\t\t\tlastFlushTimeout = setTimeout(lastFlushCallback = () => {\n\t\t\t\tlastFlushTimeout = null;\n\t\t\t\tlastSync.then(() => {\n\t\t\t\t\tlet resolvers = committedFlushResolvers || [];\n\t\t\t\t\tcommittedFlushResolvers = null;\n\t\t\t\t\tlastSync = new Promise((resolve) => {\n\t\t\t\t\t\tenv.sync(() => {\n\t\t\t\t\t\t\tfor (let i = 0; i < resolvers.length; i++)\n\t\t\t\t\t\t\t\tresolvers[i]();\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}, delay || 0);\n\t\t}\n\t}\n\tfunction expediteFlush() {\n\t\tif (lastFlushTimeout) {\n\t\t\tclearTimeout(lastFlushTimeout);\n\t\t\tlastFlushCallback();\n\t\t}\n\t}\n\n\tfunction queueCommitResolution(resolution) {\n\t\tif (!(resolution.flag & HAS_TXN)) {\n\t\t\tresolution.flag = HAS_TXN;\n\t\t\tif (txnResolution) {\n\t\t\t\ttxnResolution.nextTxn = resolution;\n\t\t\t\t//outstandingWriteCount = 0\n\t\t\t}\n\t\t\telse\n\t\t\t\ttxnResolution = resolution;\n\t\t}\n\t}\n\tvar TXN_DONE = TXN_COMMITTED | TXN_FAILED;\n\tfunction resolveWrites(async) {\n\t\t// clean up finished instructions\n\t\tlet instructionStatus;\n\t\twhile ((instructionStatus = unwrittenResolution.uint32[unwrittenResolution.flagPosition])\n\t\t\t\t& 0x1000000) {\n\t\t\tif (unwrittenResolution.callbacks) {\n\t\t\t\tnextTxnCallbacks.push(unwrittenResolution.callbacks);\n\t\t\t\tunwrittenResolution.callbacks = null;\n\t\t\t}\n\t\t\toutstandingWriteCount--;\n\t\t\tif (unwrittenResolution.flag !== HAS_TXN) {\n\t\t\t\tif (unwrittenResolution.flag === NO_RESOLVE && !unwrittenResolution.store) {\n\t\t\t\t\t// in this case we can completely remove from the linked list, clearing more memory\n\t\t\t\t\tlastPromisedResolution.next = unwrittenResolution = unwrittenResolution.next;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tunwrittenResolution.uint32 = null;\n\t\t\t}\n\t\t\tunwrittenResolution.valueBuffer = null;\n\t\t\tunwrittenResolution.flag = instructionStatus;\n\t\t\tlastPromisedResolution = unwrittenResolution;\n\t\t\tunwrittenResolution = unwrittenResolution.next;\n\t\t}\n\t\twhile (txnResolution &&\n\t\t\t(instructionStatus = txnResolution.uint32[txnResolution.flagPosition] & TXN_DONE)) {\n\t\t\tif (instructionStatus & TXN_FAILED)\n\t\t\t\trejectCommit();\n\t\t\telse\n\t\t\t\tresolveCommit(async);\n\t\t}\n\t}\n\n\tfunction resolveCommit(async) {\n\t\tafterCommit(txnResolution.uint32[txnResolution.flagPosition + 1]);\n\t\tif (async)\n\t\t\tresetReadTxn();\n\t\telse\n\t\t\tqueueMicrotask(resetReadTxn); // TODO: only do this if there are actually committed writes?\n\t\tdo {\n\t\t\tif (uncommittedResolution.meta && uncommittedResolution.meta.resolve) {\n\t\t\t\tlet resolve = uncommittedResolution.meta.resolve;\n\t\t\t\tif (uncommittedResolution.flag & FAILED_CONDITION && !resolve.unconditional)\n\t\t\t\t\tresolve(false);\n\t\t\t\telse\n\t\t\t\t\tresolve(true);\n\t\t\t}\n\t\t} while((uncommittedResolution = uncommittedResolution.next) && uncommittedResolution != txnResolution)\n\t\ttxnResolution = txnResolution.nextTxn;\n\t}\n\tvar commitRejectPromise;\n\tfunction rejectCommit() {\n\t\tafterCommit();\n\t\tif (!commitRejectPromise) {\n\t\t\tlet rejectFunction;\n\t\t\tcommitRejectPromise = new Promise((resolve, reject) => rejectFunction = reject);\n\t\t\tcommitRejectPromise.reject = rejectFunction;\n\t\t}\n\t\tdo {\n\t\t\tif (uncommittedResolution.meta && uncommittedResolution.meta.reject) {\n\t\t\t\tlet flag = uncommittedResolution.flag & 0xf;\n\t\t\t\tlet error = new Error(\"Commit failed (see commitError for details)\");\n\t\t\t\terror.commitError = commitRejectPromise;\n\t\t\t\tuncommittedResolution.meta.reject(error);\n\t\t\t}\n\t\t} while((uncommittedResolution = uncommittedResolution.next) && uncommittedResolution != txnResolution)\n\t\ttxnResolution = txnResolution.nextTxn;\n\t}\n\tfunction atomicStatus(uint32, flagPosition, newStatus) {\n\t\tif (batchDepth) {\n\t\t\t// if we are in a batch, the transaction can't close, so we do the faster,\n\t\t\t// but non-deterministic updates, knowing that the write thread can\n\t\t\t// just poll for the status change if we miss a status update\n\t\t\tlet writeStatus = uint32[flagPosition];\n\t\t\tuint32[flagPosition] = newStatus;\n\t\t\treturn writeStatus;\n\t\t\t//return Atomics.or(uint32, flagPosition, newStatus)\n\t\t} else // otherwise the transaction could end at any time and we need to know the\n\t\t\t// deterministically if it is ending, so we can reset the commit promise\n\t\t\t// so we use the slower atomic operation\n\t\t\treturn Atomics.or(uint32, flagPosition, newStatus);\n\t}\n\tfunction afterCommit(txnId) {\n\t\tfor (let i = 0, l = afterCommitCallbacks.length; i < l; i++) {\n\t\t\tafterCommitCallbacks[i]({ next: uncommittedResolution, last: unwrittenResolution, txnId });\n\t\t}\n\t}\n\tasync function executeTxnCallbacks() {\n\t\tenv.writeTxn = writeTxn = { write: true };\n\t\t//this.emit('begin-transaction');\n\t\tlet promises;\n\t\tlet txnCallbacks;\n\t\tfor (let i = 0, l = nextTxnCallbacks.length; i < l; i++) {\n\t\t\ttxnCallbacks = nextTxnCallbacks[i];\n\t\t\tfor (let i = 0, l = txnCallbacks.length; i < l; i++) {\n\t\t\t\tlet userTxnCallback = txnCallbacks[i];\n\t\t\t\tlet asChild = userTxnCallback.asChild;\n\t\t\t\tif (asChild) {\n\t\t\t\t\tif (promises) {\n\t\t\t\t\t\t// must complete any outstanding transactions before proceeding\n\t\t\t\t\t\tawait Promise.all(promises);\n\t\t\t\t\t\tpromises = null;\n\t\t\t\t\t}\n\t\t\t\t\tenv.beginTxn(1); // abortable\n\t\t\t\t\tlet parentTxn = writeTxn;\n\t\t\t\t\tenv.writeTxn = writeTxn = { write: true };\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet result = userTxnCallback.callback();\n\t\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\t\tawait result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (result === ABORT)\n\t\t\t\t\t\t\tenv.abortTxn();\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tenv.commitTxn();\n\t\t\t\t\t\tclearWriteTxn(parentTxn);\n\t\t\t\t\t\ttxnCallbacks[i] = result;\n\t\t\t\t\t} catch(error) {\n\t\t\t\t\t\tclearWriteTxn(parentTxn);\n\t\t\t\t\t\tenv.abortTxn();\n\t\t\t\t\t\ttxnError(error, i);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet result = userTxnCallback();\n\t\t\t\t\t\ttxnCallbacks[i] = result;\n\t\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\t\tif (!promises)\n\t\t\t\t\t\t\t\tpromises = [];\n\t\t\t\t\t\t\tpromises.push(result.catch(() => {}));\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch(error) {\n\t\t\t\t\t\ttxnError(error, i);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tnextTxnCallbacks = [];\n\t\tif (promises) { // finish any outstanding commit functions\n\t\t\tawait Promise.all(promises);\n\t\t}\n\t\tclearWriteTxn(null);\n\t\tfunction txnError(error, i) {\n\t\t\t(txnCallbacks.errors || (txnCallbacks.errors = []))[i] = error;\n\t\t\ttxnCallbacks[i] = CALLBACK_THREW;\n\t\t}\n\t}\n\tfunction finishBatch() {\n\t\tdynamicBytes.uint32[(dynamicBytes.position + 1) << 1] = 0; // clear out the next slot\n\t\tlet writeStatus = atomicStatus(dynamicBytes.uint32, (dynamicBytes.position++) << 1, 2); // atomically write the end block\n\t\tnextResolution.flagPosition += 2;\n\t\tif (writeStatus & WAITING_OPERATION) {\n\t\t\twrite(env.address, 0);\n\t\t}\n\t}\n\tfunction clearWriteTxn(parentTxn) {\n\t\t// TODO: We might actually want to track cursors in a write txn and manually\n\t\t// close them.\n\t\tif (writeTxn.refCount > 0)\n\t\t\twriteTxn.isDone = true;\n\t\tenv.writeTxn = writeTxn = parentTxn || null;\n\t}\n\tObject.assign(LMDBStore.prototype, {\n\t\tput(key, value, versionOrOptions, ifVersion) {\n\t\t\tlet callback, flags = 15, type = typeof versionOrOptions;\n\t\t\tif (type == 'object') {\n\t\t\t\tif (versionOrOptions.noOverwrite)\n\t\t\t\t\tflags |= 0x10;\n\t\t\t\tif (versionOrOptions.noDupData)\n\t\t\t\t\tflags |= 0x20;\n\t\t\t\tif (versionOrOptions.append)\n\t\t\t\t\tflags |= 0x20000;\n\t\t\t\tif (versionOrOptions.ifVersion != undefined)\n\t\t\t\t\tifVersion = versionsOrOptions.ifVersion;\n\t\t\t\tversionOrOptions = versionOrOptions.version;\n\t\t\t\tif (typeof ifVersion == 'function')\n\t\t\t\t\tcallback = ifVersion;\n\t\t\t} else if (type == 'function') {\n\t\t\t\tcallback = versionOrOptions;\n\t\t\t}\n\t\t\treturn writeInstructions(flags, this, key, value, this.useVersions ? versionOrOptions || 0 : undefined, ifVersion)(callback);\n\t\t},\n\t\tremove(key, ifVersionOrValue, callback) {\n\t\t\tlet flags = 13;\n\t\t\tlet ifVersion, value;\n\t\t\tif (ifVersionOrValue !== undefined) {\n\t\t\t\tif (typeof ifVersionOrValue == 'function')\n\t\t\t\t\tcallback = ifVersionOrValue;\n\t\t\t\telse if (ifVersionOrValue === IF_EXISTS && !callback)\n\t\t\t\t\t// we have a handler for IF_EXISTS in the callback handler for remove\n\t\t\t\t\tcallback = ifVersionOrValue;\n\t\t\t\telse if (this.useVersions)\n\t\t\t\t\tifVersion = ifVersionOrValue;\n\t\t\t\telse {\n\t\t\t\t\tflags = 14;\n\t\t\t\t\tvalue = ifVersionOrValue;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn writeInstructions(flags, this, key, value, undefined, ifVersion)(callback);\n\t\t},\n\t\tdel(key, options, callback) {\n\t\t\treturn this.remove(key, options, callback);\n\t\t},\n\t\tifNoExists(key, callback) {\n\t\t\treturn this.ifVersion(key, null, callback);\n\t\t},\n\t\tifVersion(key, version, callback, options) {\n\t\t\tif (!callback) {\n\t\t\t\treturn new Batch((operations, callback) => {\n\t\t\t\t\tlet promise = this.ifVersion(key, version, operations, options);\n\t\t\t\t\tif (callback)\n\t\t\t\t\t\tpromise.then(callback);\n\t\t\t\t\treturn promise;\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (writeTxn) {\n\t\t\t\tif (version === undefined || this.doesExist(key, version)) {\n\t\t\t\t\tcallback();\n\t\t\t\t\treturn SYNC_PROMISE_SUCCESS;\n\t\t\t\t}\n\t\t\t\treturn SYNC_PROMISE_FAIL;\n\t\t\t}\n\t\t\tlet flags = key === undefined || version === undefined ? 1 : 4;\n\t\t\tif (options?.ifLessThan)\n\t\t\t\tflags |= CONDITIONAL_VERSION_LESS_THAN;\n\t\t\tif (options?.allowNotFound)\n\t\t\t\tflags |= CONDITIONAL_ALLOW_NOTFOUND;\n\t\t\tlet finishStartWrite = writeInstructions(flags, this, key, undefined, undefined, version);\n\t\t\tlet promise;\n\t\t\tbatchDepth += 2;\n\t\t\tif (batchDepth > 2)\n\t\t\t\tpromise = finishStartWrite();\n\t\t\telse {\n\t\t\t\twriteBatchStart = () => {\n\t\t\t\t\tpromise = finishStartWrite();\n\t\t\t\t};\n\t\t\t\toutstandingBatchCount = 0;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tif (typeof callback === 'function') {\n\t\t\t\t\tcallback();\n\t\t\t\t} else {\n\t\t\t\t\tfor (let i = 0, l = callback.length; i < l; i++) {\n\t\t\t\t\t\tlet operation = callback[i];\n\t\t\t\t\t\tthis[operation.type](operation.key, operation.value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tif (!promise) {\n\t\t\t\t\tfinishBatch();\n\t\t\t\t\tbatchDepth -= 2;\n\t\t\t\t\tpromise = finishStartWrite(); // finish write once all the operations have been written (and it hasn't been written prematurely)\n\t\t\t\t\twriteBatchStart = null;\n\t\t\t\t} else {\n\t\t\t\t\tbatchDepth -= 2;\n\t\t\t\t\tfinishBatch();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn promise;\n\t\t},\n\t\tbatch(callbackOrOperations) {\n\t\t\treturn this.ifVersion(undefined, undefined, callbackOrOperations);\n\t\t},\n\t\tdrop(callback) {\n\t\t\treturn writeInstructions(1024 + 12, this, undefined, undefined, undefined, undefined)(callback);\n\t\t},\n\t\tclearAsync(callback) {\n\t\t\tif (this.encoder) {\n\t\t\t\tif (this.encoder.clearSharedData)\n\t\t\t\t\tthis.encoder.clearSharedData()\n\t\t\t\telse if (this.encoder.structures)\n\t\t\t\t\tthis.encoder.structures = []\n\t\t\t}\n\t\t\treturn writeInstructions(12, this, undefined, undefined, undefined, undefined)(callback);\n\t\t},\n\t\t_triggerError() {\n\t\t\tfinishBatch();\n\t\t},\n\n\t\tputSync(key, value, versionOrOptions, ifVersion) {\n\t\t\tif (writeTxn)\n\t\t\t\treturn this.put(key, value, versionOrOptions, ifVersion);\n\t\t\telse\n\t\t\t\treturn this.transactionSync(() =>\n\t\t\t\t\tthis.put(key, value, versionOrOptions, ifVersion) == SYNC_PROMISE_SUCCESS, overlappingSync? 0x10002 : 2); // non-abortable, async flush\n\t\t},\n\t\tremoveSync(key, ifVersionOrValue) {\n\t\t\tif (writeTxn)\n\t\t\t\treturn this.remove(key, ifVersionOrValue);\n\t\t\telse\n\t\t\t\treturn this.transactionSync(() =>\n\t\t\t\t\tthis.remove(key, ifVersionOrValue) == SYNC_PROMISE_SUCCESS, overlappingSync? 0x10002 : 2); // non-abortable, async flush\n\t\t},\n\t\ttransaction(callback) {\n\t\t\tif (writeTxn) {\n\t\t\t\t// already nested in a transaction, just execute and return\n\t\t\t\treturn callback();\n\t\t\t}\n\t\t\treturn this.transactionAsync(callback);\n\t\t},\n\t\tchildTransaction(callback) {\n\t\t\tif (useWritemap)\n\t\t\t\tthrow new Error('Child transactions are not supported in writemap mode');\n\t\t\tif (writeTxn) {\n\t\t\t\tlet parentTxn = writeTxn;\n\t\t\t\tenv.writeTxn = writeTxn = { write: true };\n\t\t\t\tenv.beginTxn(1); // abortable\n\t\t\t\tlet callbackDone;\n\t\t\t\ttry {\n\t\t\t\t\treturn when(callback(), (result) => {\n\t\t\t\t\t\tcallbackDone = true;\n\t\t\t\t\t\tif (result === ABORT)\n\t\t\t\t\t\t\tenv.abortTxn();\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tenv.commitTxn();\n\t\t\t\t\t\tclearWriteTxn(parentTxn);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}, (error) => {\n\t\t\t\t\t\tenv.abortTxn();\n\t\t\t\t\t\tclearWriteTxn(parentTxn);\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t});\n\t\t\t\t} catch(error) {\n\t\t\t\t\tif (!callbackDone)\n\t\t\t\t\t\tenv.abortTxn();\n\t\t\t\t\tclearWriteTxn(parentTxn);\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.transactionAsync(callback, true);\n\t\t},\n\t\ttransactionAsync(callback, asChild) {\n\t\t\tlet txnIndex;\n\t\t\tlet txnCallbacks;\n\t\t\tif (!nextResolution.callbacks) {\n\t\t\t\ttxnCallbacks = [asChild ? { callback, asChild } : callback];\n\t\t\t\tnextResolution.callbacks = txnCallbacks;\n\t\t\t\ttxnCallbacks.results = writeInstructions(8 | (this.strictAsyncOrder ? 0x100000 : 0), this)();\n\t\t\t\ttxnIndex = 0;\n\t\t\t} else {\n\t\t\t\ttxnCallbacks = lastQueuedResolution.callbacks;\n\t\t\t\ttxnIndex = txnCallbacks.push(asChild ? { callback, asChild } : callback) - 1;\n\t\t\t}\n\t\t\treturn txnCallbacks.results.then((results) => {\n\t\t\t\tlet result = txnCallbacks[txnIndex];\n\t\t\t\tif (result === CALLBACK_THREW)\n\t\t\t\t\tthrow txnCallbacks.errors[txnIndex];\n\t\t\t\treturn result;\n\t\t\t});\n\t\t},\n\t\ttransactionSync(callback, flags) {\n\t\t\tif (writeTxn) {\n\t\t\t\tif (!useWritemap && !this.isCaching) // can't use child transactions in write maps or caching stores\n\t\t\t\t\t// already nested in a transaction, execute as child transaction (if possible) and return\n\t\t\t\t\treturn this.childTransaction(callback);\n\t\t\t\tlet result = callback(); // else just run in current transaction\n\t\t\t\tif (result == ABORT && !abortedNonChildTransactionWarn) {\n\t\t\t\t\tconsole.warn('Can not abort a transaction inside another transaction with ' + (this.cache ? 'caching enabled' : 'useWritemap enabled'));\n\t\t\t\t\tabortedNonChildTransactionWarn = true;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tlet callbackDone;\n\t\t\tthis.transactions++;\n\t\t\tenv.beginTxn(flags == undefined ? 3 : flags);\n\t\t\twriteTxn = env.writeTxn = { write: true };\n\t\t\ttry {\n\t\t\t\tthis.emit('begin-transaction');\n\t\t\t\treturn when(callback(), (result) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tcallbackDone = true;\n\t\t\t\t\t\tif (result === ABORT)\n\t\t\t\t\t\t\tenv.abortTxn();\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tenv.commitTxn();\n\t\t\t\t\t\t\tresetReadTxn();\n\t\t\t\t\t\t\tif ((flags & 0x10000) && overlappingSync) // if it is no-sync in overlapping-sync mode, need to schedule flush for it to be marked as persisted\n\t\t\t\t\t\t\t\tlastSyncTxnFlush = new Promise(resolve => scheduleFlush([resolve]))\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tclearWriteTxn(null);\n\t\t\t\t\t}\n\t\t\t\t}, (error) => {\n\t\t\t\t\ttry { env.abortTxn(); } catch(e) {}\n\t\t\t\t\tclearWriteTxn(null);\n\t\t\t\t\tthrow error;\n\t\t\t\t});\n\t\t\t} catch(error) {\n\t\t\t\tif (!callbackDone)\n\t\t\t\t\ttry { env.abortTxn(); } catch(e) {}\n\t\t\t\tclearWriteTxn(null);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\ttransactionSyncStart(callback) {\n\t\t\treturn this.transactionSync(callback, 0);\n\t\t},\n\t\t// make the db a thenable/promise-like for when the last commit is committed\n\t\tcommitted: committed = {\n\t\t\tthen(onfulfilled, onrejected) {\n\t\t\t\tif (commitPromise)\n\t\t\t\t\treturn commitPromise.then(onfulfilled, onrejected);\n\t\t\t\tif (lastWritePromise) // always resolve to true\n\t\t\t\t\treturn lastWritePromise.then(() => onfulfilled(true), onrejected);\n\t\t\t\treturn SYNC_PROMISE_SUCCESS.then(onfulfilled, onrejected);\n\t\t\t}\n\t\t},\n\t\tflushed: {\n\t\t\t// make this a thenable for when the commit is flushed to disk\n\t\t\tthen(onfulfilled, onrejected) {\n\t\t\t\tif (flushPromise)\n\t\t\t\t\tflushPromise.hasCallbacks = true\n\t\t\t\treturn Promise.all([flushPromise || committed, lastSyncTxnFlush]).then(onfulfilled, onrejected);\n\t\t\t}\n\t\t},\n\t\t_endWrites(resolvedPromise, resolvedSyncPromise) {\n\t\t\tthis.put = this.remove = this.del = this.batch = this.removeSync = this.putSync = this.transactionAsync = this.drop = this.clearAsync = () => { throw new Error('Database is closed') };\n\t\t\t// wait for all txns to finish, checking again after the current txn is done\n\t\t\tlet finalPromise = flushPromise || commitPromise || lastWritePromise;\n\t\t\tif (flushPromise)\n\t\t\t\tflushPromise.hasCallbacks = true\n\t\t\tif (lastFlushTimeout)\n\t\t\t\texpediteFlush();\n\t\t\tlet finalSyncPromise = lastSyncTxnFlush;\n\t\t\tif (finalPromise && resolvedPromise != finalPromise ||\n\t\t\t\t\tfinalSyncPromise && resolvedSyncPromise != finalSyncPromise) {\n\t\t\t\treturn Promise.all([finalPromise, finalSyncPromise]).then(() => this._endWrites(finalPromise, finalSyncPromise), () => this._endWrites(finalPromise, finalSyncPromise));\n\t\t\t}\n\t\t\tObject.defineProperty(env, 'sync', { value: null });\n\t\t},\n\t\ton(event, callback) {\n\t\t\tif (event == 'beforecommit') {\n\t\t\t\teventTurnBatching = true;\n\t\t\t\tbeforeCommitCallbacks.push(callback);\n\t\t\t} else if (event == 'aftercommit')\n\t\t\t\tafterCommitCallbacks.push(callback);\n\t\t\telse\n\t\t\t\tsuper.on(event, callback);\n\t\t}\n\t});\n}\n\nclass Batch extends Array {\n\tconstructor(callback) {\n\t\tsuper();\n\t\tthis.callback = callback;\n\t}\n\tput(key, value) {\n\t\tthis.push({ type: 'put', key, value });\n\t}\n\tdel(key) {\n\t\tthis.push({ type: 'del', key });\n\t}\n\tclear() {\n\t\tthis.splice(0, this.length);\n\t}\n\twrite(callback) {\n\t\treturn this.callback(this, callback);\n\t}\n}\nexport function asBinary(buffer) {\n\treturn {\n\t\t['\\x10binary-data\\x02']: buffer\n\t};\n}\n","const SKIP = {};\nif (!Symbol.asyncIterator) {\n\tSymbol.asyncIterator = Symbol.for('Symbol.asyncIterator');\n}\n\nexport class RangeIterable {\n\tconstructor(sourceArray) {\n\t\tif (sourceArray) {\n\t\t\tthis.iterate = sourceArray[Symbol.iterator].bind(sourceArray);\n\t\t}\n\t}\n\tmap(func) {\n\t\tlet source = this;\n\t\tlet result = new RangeIterable();\n\t\tresult.iterate = (async) => {\n\t\t\tlet iterator = source[Symbol.iterator](async);\n\t\t\treturn {\n\t\t\t\tnext(resolvedResult) {\n\t\t\t\t\tlet result;\n\t\t\t\t\tdo {\n\t\t\t\t\t\tlet iteratorResult;\n\t\t\t\t\t\tif (resolvedResult) {\n\t\t\t\t\t\t\titeratorResult = resolvedResult;\n\t\t\t\t\t\t\tresolvedResult = null; // don't go in this branch on next iteration\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titeratorResult = iterator.next();\n\t\t\t\t\t\t\tif (iteratorResult.then) {\n\t\t\t\t\t\t\t\treturn iteratorResult.then(iteratorResult => this.next(iteratorResult));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (iteratorResult.done === true) {\n\t\t\t\t\t\t\tthis.done = true;\n\t\t\t\t\t\t\treturn iteratorResult;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresult = func(iteratorResult.value);\n\t\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\t\treturn result.then(result =>\n\t\t\t\t\t\t\t\tresult == SKIP ?\n\t\t\t\t\t\t\t\t\tthis.next() :\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tvalue: result\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} while(result == SKIP)\n\t\t\t\t\treturn {\n\t\t\t\t\t\tvalue: result\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\treturn() {\n\t\t\t\t\treturn iterator.return();\n\t\t\t\t},\n\t\t\t\tthrow() {\n\t\t\t\t\treturn iterator.throw();\n\t\t\t\t}\n\t\t\t};\n\t\t};\n\t\treturn result;\n\t}\n\t[Symbol.asyncIterator]() {\n\t\treturn this.iterator = this.iterate();\n\t}\n\t[Symbol.iterator]() {\n\t\treturn this.iterator = this.iterate();\n\t}\n\tfilter(func) {\n\t\treturn this.map(element => func(element) ? element : SKIP);\n\t}\n\n\tforEach(callback) {\n\t\tlet iterator = this.iterator = this.iterate();\n\t\tlet result;\n\t\twhile ((result = iterator.next()).done !== true) {\n\t\t\tcallback(result.value);\n\t\t}\n\t}\n\tconcat(secondIterable) {\n\t\tlet concatIterable = new RangeIterable();\n\t\tconcatIterable.iterate = (async) => {\n\t\t\tlet iterator = this.iterator = this.iterate();\n\t\t\tlet isFirst = true;\n\t\t\tlet concatIterator = {\n\t\t\t\tnext() {\n\t\t\t\t\tlet result = iterator.next();\n\t\t\t\t\tif (isFirst && result.done) {\n\t\t\t\t\t\tisFirst = false;\n\t\t\t\t\t\titerator = secondIterable[Symbol.iterator](async);\n\t\t\t\t\t\treturn iterator.next();\n\t\t\t\t\t}\n\t\t\t\t\treturn result;\n\t\t\t\t},\n\t\t\t\treturn() {\n\t\t\t\t\treturn iterator.return();\n\t\t\t\t},\n\t\t\t\tthrow() {\n\t\t\t\t\treturn iterator.throw();\n\t\t\t\t}\n\t\t\t};\n\t\t\treturn concatIterator;\n\t\t};\n\t\treturn concatIterable;\n\t}\n\tnext() {\n\t\tif (!this.iterator)\n\t\t\tthis.iterator = this.iterate();\n\t\treturn this.iterator.next();\n\t}\n\ttoJSON() {\n\t\tif (this.asArray && this.asArray.forEach) {\n\t\t\treturn this.asArray;\n\t\t}\n\t\tthrow new Error('Can not serialize async iteratables without first calling resolveJSON');\n\t\t//return Array.from(this)\n\t}\n\tget asArray() {\n\t\tif (this._asArray)\n\t\t\treturn this._asArray;\n\t\tlet promise = new Promise((resolve, reject) => {\n\t\t\tlet iterator = this.iterate();\n\t\t\tlet array = [];\n\t\t\tlet iterable = this;\n\t\t\tObject.defineProperty(array, 'iterable', { value: iterable });\n\t\t\tfunction next(result) {\n\t\t\t\twhile (result.done !== true) {\n\t\t\t\t\tif (result.then) {\n\t\t\t\t\t\treturn result.then(next);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tarray.push(result.value);\n\t\t\t\t\t}\n\t\t\t\t\tresult = iterator.next();\n\t\t\t\t}\n\t\t\t\tresolve(iterable._asArray = array);\n\t\t\t}\n\t\t\tnext(iterator.next());\n\t\t});\n\t\tpromise.iterable = this;\n\t\treturn this._asArray || (this._asArray = promise);\n\t}\n\tresolveData() {\n\t\treturn this.asArray;\n\t}\n}\n","import { getAddress, orderedBinary } from './native.js';\n\nconst writeUint32Key = (key, target, start) => {\n\t(target.dataView || (target.dataView = new DataView(target.buffer, 0, target.length))).setUint32(start, key, true);\n\treturn start + 4;\n};\nconst readUint32Key = (target, start) => {\n\treturn (target.dataView || (target.dataView = new DataView(target.buffer, 0, target.length))).getUint32(start, true);\n};\nconst writeBufferKey = (key, target, start) => {\n\ttarget.set(key, start);\n\treturn key.length + start;\n};\nconst Uint8ArraySlice = Uint8Array.prototype.slice;\nconst readBufferKey = (target, start, end) => {\n\treturn Uint8ArraySlice.call(target, start, end);\n};\n\nexport function applyKeyHandling(store) {\n \tif (store.encoding == 'ordered-binary') {\n\t\tstore.encoder = store.decoder = {\n\t\t\twriteKey: orderedBinary.writeKey,\n\t\t\treadKey: orderedBinary.readKey,\n\t\t};\n\t}\n\tif (store.encoder && store.encoder.writeKey && !store.encoder.encode) {\n\t\tstore.encoder.encode = function(value) {\n\t\t\treturn saveKey(value, this.writeKey, false, store.maxKeySize);\n\t\t};\n\t}\n\tif (store.decoder && store.decoder.readKey && !store.decoder.decode) {\n\t\tstore.decoder.decode = function(buffer) { return this.readKey(buffer, 0, buffer.length); };\n\t\tstore.decoderCopies = true;\n\t}\n\tif (store.keyIsUint32 || store.keyEncoding == 'uint32') {\n\t\tstore.writeKey = writeUint32Key;\n\t\tstore.readKey = readUint32Key;\n\t} else if (store.keyIsBuffer || store.keyEncoding == 'binary') {\n\t\tstore.writeKey = writeBufferKey;\n\t\tstore.readKey = readBufferKey;\n\t} else if (store.keyEncoder) {\n\t\tstore.writeKey = store.keyEncoder.writeKey;\n\t\tstore.readKey = store.keyEncoder.readKey;\n\t} else {\n\t\tstore.writeKey = orderedBinary.writeKey;\n\t\tstore.readKey = orderedBinary.readKey;\n\t}\n}\n\nlet saveBuffer, uint32, saveDataView = { setFloat64() {}, setUint32() {} }, saveDataAddress;\nlet savePosition = 8000;\nlet DYNAMIC_KEY_BUFFER_SIZE = 8192;\nfunction allocateSaveBuffer() {\n\tsaveBuffer = typeof Buffer != 'undefined' ? Buffer.alloc(DYNAMIC_KEY_BUFFER_SIZE) : new Uint8Array(DYNAMIC_KEY_BUFFER_SIZE);\n\tuint32 = null;\n\tsaveBuffer.buffer.address = getAddress(saveBuffer);\n\tsaveDataAddress = saveBuffer.buffer.address;\n\t// TODO: Conditionally only do this for key sequences?\n\tsaveDataView.setUint32(savePosition, 0xffffffff);\n\tsaveDataView.setFloat64(savePosition + 4, saveDataAddress, true); // save a pointer from the old buffer to the new address for the sake of the prefetch sequences\n\tsaveBuffer.dataView = saveDataView = new DataView(saveBuffer.buffer, saveBuffer.byteOffset, saveBuffer.byteLength);\n\tsavePosition = 0;\n}\nexport function saveKey(key, writeKey, saveTo, maxKeySize, skip) {\n\tif (savePosition > 7800) {\n\t\tallocateSaveBuffer();\n\t}\n\tif (skip > 0)\n\t\tsavePosition += skip;\n\tlet start = savePosition;\n\ttry {\n\t\tsavePosition = key === undefined ? start + 4 :\n\t\t\twriteKey(key, saveBuffer, start + 4);\n\t} catch (error) {\n\t\tsaveBuffer.fill(0, start + 4); // restore zeros\n\t\tif (error.name == 'RangeError') {\n\t\t\tif (8180 - start < maxKeySize) {\n\t\t\t\tallocateSaveBuffer(); // try again:\n\t\t\t\treturn saveKey(key, writeKey, saveTo, maxKeySize);\n\t\t\t}\n\t\t\tthrow new Error('Key was too large, max key size is ' + maxKeySize);\n\t\t} else\n\t\t\tthrow error;\n\t}\n\tlet length = savePosition - start - 4;\n\tif (length > maxKeySize) {\n\t\tthrow new Error('Key of size ' + length + ' was too large, max key size is ' + maxKeySize);\n\t}\n\tif (savePosition >= 8160) { // need to reserve enough room at the end for pointers\n\t\tsavePosition = start // reset position\n\t\tallocateSaveBuffer(); // try again:\n\t\treturn saveKey(key, writeKey, saveTo, maxKeySize);\n\t}\n\tif (saveTo) {\n\t\tsaveDataView.setUint32(start, length, true); // save the length\n\t\tsaveTo.saveBuffer = saveBuffer;\n\t\tsavePosition = (savePosition + 12) & 0xfffffc;\n\t\treturn start + saveDataAddress;\n\t} else {\n\t\tsaveBuffer.start = start + 4;\n\t\tsaveBuffer.end = savePosition;\n\t\tsavePosition = (savePosition + 7) & 0xfffff8; // full 64-bit word alignment since these are usually copied\n\t\treturn saveBuffer;\n\t}\n}\nexport function saveRead(txn, dbi, key, writeKey, saveTo, maxKeySize) {\n\tlet start = savePosition;\n\tsaveKey(key, writeKey, saveTo, maxKeySize, 12);\n\tif (start > savePosition)\n\t\tstart = 0;\n\tif (!uint32)\n\t\tuint32 = new Uint32Array(saveBuffer.buffer, 0, saveBuffer.buffer.byteLength >> 2);\n\tsaveDataView.setFloat64(start, txn.address, true);\n\tif (Atomics.or(uint32, (start >> 2) + 2, dbi)) {\n\t\treturn start + saveDataAddress;\n\t}\n}","import { RangeIterable } from './util/RangeIterable.js';\nimport { getAddress, Cursor, Txn, orderedBinary, lmdbError, getByBinary, detachBuffer, setGlobalBuffer, prefetch, iterate, position as doPosition, resetTxn, getCurrentValue, getCurrentShared, getStringByBinary, globalBuffer, getSharedBuffer } from './native.js';\nimport { saveKey } from './keys.js';\nconst ITERATOR_DONE = { done: true, value: undefined };\nconst Uint8ArraySlice = Uint8Array.prototype.slice;\nconst Uint8A = typeof Buffer != 'undefined' ? Buffer.allocUnsafeSlow : Uint8Array\nlet getValueBytes = globalBuffer;\nif (!getValueBytes.maxLength) {\n\t getValueBytes.maxLength = getValueBytes.length;\n\t Object.defineProperty(getValueBytes, 'length', { value: getValueBytes.length, writable: true, configurable: true });\n}\nconst START_ADDRESS_POSITION = 4064;\nconst NEW_BUFFER_THRESHOLD = 0x8000;\nexport const UNMODIFIED = {};\n\nexport function addReadMethods(LMDBStore, {\n\tmaxKeySize, env, keyBytes, keyBytesView, getLastVersion, getLastTxnId\n}) {\n\tlet readTxn, readTxnRenewed, asSafeBuffer = false;\n\tlet renewId = 1;\n\tlet mmaps = [];\n\tObject.assign(LMDBStore.prototype, {\n\t\tgetString(id) {\n\t\t\t(env.writeTxn || (readTxnRenewed ? readTxn : renewReadTxn(this)));\n\t\t\tlet string = getStringByBinary(this.dbAddress, this.writeKey(id, keyBytes, 0));\n\t\t\tif (typeof string === 'number') { // indicates the buffer wasn't large enough\n\t\t\t\tthis._allocateGetBuffer(string);\n\t\t\t\t// and then try again\n\t\t\t\tstring = getStringByBinary(this.dbAddress, this.writeKey(id, keyBytes, 0));\n\t\t\t}\n\t\t\tif (string)\n\t\t\t\tthis.lastSize = string.length;\n\t\t\treturn string;\n\t\t},\n\t\tgetBinaryFast(id, options) {\n\t\t\tlet rc\n\t\t\tif (options?.txn?.address)\n\t\t\t\trc = this.lastSize = getByBinary(this.dbAddress, this.writeKey(id, keyBytes, 0), options.ifNotTxnId || 0, options.txn.address);\n\t\t\telse {\n\t\t\t\t(env.writeTxn || (readTxnRenewed ? readTxn : renewReadTxn(this)));\n\t\t\t\trc = this.lastSize = getByBinary(this.dbAddress, this.writeKey(id, keyBytes, 0), options?.ifNotTxnId || 0, 0);\n\t\t\t}\n\t\t\tif (rc < 0) {\n\t\t\t\tif (rc == -30798) // MDB_NOTFOUND\n\t\t\t\t\treturn; // undefined\n\t\t\t\tif (rc == -30004) // txn id matched\n\t\t\t\t\treturn UNMODIFIED;\n\t\t\t\tif (rc == -30781 /*MDB_BAD_VALSIZE*/ && this.writeKey(id, keyBytes, 0) == 0)\n\t\t\t\t\tthrow new Error(id === undefined ?\n\t\t\t\t\t'A key is required for get, but is undefined' :\n\t\t\t\t\t'Zero length key is not allowed in LMDB');\n\t\t\t\tif (rc == -30000) // int32 overflow, read uint32\n\t\t\t\t\trc = this.lastSize = keyBytesView.getUint32(0, true);\n\t\t\t\telse if (rc == -30001) {// shared buffer\n\t\t\t\t\tthis.lastSize = keyBytesView.getUint32(0, true);\n\t\t\t\t\tlet bufferId = keyBytesView.getUint32(4, true);\n\t\t\t\t\treturn getMMapBuffer(bufferId, this.lastSize);\n\t\t\t\t} else\n\t\t\t\t\tthrow lmdbError(rc);\n\t\t\t}\n\t\t\tlet compression = this.compression;\n\t\t\tlet bytes = compression ? compression.getValueBytes : getValueBytes;\n\t\t\tif (rc > bytes.maxLength) {\n\t\t\t\t// this means the target buffer wasn't big enough, so the get failed to copy all the data from the database, need to either grow or use special buffer\n\t\t\t\treturn this._returnLargeBuffer(\n\t\t\t\t\t() => getByBinary(this.dbAddress, this.writeKey(id, keyBytes, 0), 0, 0));\n\t\t\t}\n\t\t\tbytes.length = this.lastSize;\n\t\t\treturn bytes;\n\t\t},\n\t\tgetBFAsync(id, callback, options) {\n\t\t\tsaveKey(id, writeKey, {})\n\t\t},\n\t\tretainBinary(buffer) {\n\t\t\tif (!buffer)\n\t\t\t\treturn\n\t\t\tif (!buffer.isGlobal && !env.writeTxn) {\n\t\t\t\tbuffer.txn = readTxn;\n\t\t\t\treadTxn.refCount = (readTxn.refCount || 0) + 1;\n\t\t\t\treturn buffer;\n\t\t\t} else {\n\t\t\t\treturn Uint8ArraySlice.call(buffer, 0, this.lastSize);\n\t\t\t}\n\t\t},\n\t\t_returnLargeBuffer(getFast) {\n\t\t\tlet bytes;\n\t\t\tlet compression = this.compression;\n\t\t\tif (asSafeBuffer && this.lastSize > NEW_BUFFER_THRESHOLD) {\n\t\t\t\t// used by getBinary to indicate it should create a dedicated buffer to receive this\n\t\t\t\tlet bytesToRestore\n\t\t\t\ttry {\n\t\t\t\t\tif (compression) {\n\t\t\t\t\t\tbytesToRestore = compression.getValueBytes;\n\t\t\t\t\t\tlet dictionary = compression.dictionary || [];\n\t\t\t\t\t\tlet dictLength = (dictionary.length >> 3) << 3;// make sure it is word-aligned\n\t\t\t\t\t\tbytes = makeReusableBuffer(this.lastSize);\n\t\t\t\t\t\tcompression.setBuffer(bytes, this.lastSize, dictionary, dictLength);\n\t\t\t\t\t\tcompression.getValueBytes = bytes;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbytesToRestore = getValueBytes;\n\t\t\t\t\t\tsetGlobalBuffer(bytes = getValueBytes = makeReusableBuffer(this.lastSize));\n\t\t\t\t\t}\n\t\t\t\t\tgetFast();\n\t\t\t\t} finally {\n\t\t\t\t\tif (compression) {\n\t\t\t\t\t\tlet dictLength = (compression.dictionary.length >> 3) << 3;\n\t\t\t\t\t\tcompression.setBuffer(bytesToRestore, bytesToRestore.maxLength, compression.dictionary, dictLength);\n\t\t\t\t\t\tcompression.getValueBytes = bytesToRestore;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetGlobalBuffer(bytesToRestore);\n\t\t\t\t\t\tgetValueBytes = bytesToRestore;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn bytes;\n\t\t\t}\n\t\t\t// grow our shared/static buffer to accomodate the size of the data\n\t\t\tbytes = this._allocateGetBuffer(this.lastSize);\n\t\t\t// and try again\n\t\t\tgetFast();\n\t\t\tbytes.length = this.lastSize;\n\t\t\treturn bytes;\n\t\t},\n\t\t_allocateGetBuffer(lastSize) {\n\t\t\tlet newLength = Math.min(Math.max(lastSize * 2, 0x1000), 0xfffffff8);\n\t\t\tlet bytes;\n\t\t\tif (this.compression) {\n\t\t\t\tlet dictionary = this.compression.dictionary || new Uint8A(0);\n\t\t\t\tlet dictLength = (dictionary.length >> 3) << 3;// make sure it is word-aligned\n\t\t\t\tbytes = new Uint8A(newLength + dictLength);\n\t\t\t\tbytes.set(dictionary) // copy dictionary into start\n\t\t\t\t// the section after the dictionary is the target area for get values\n\t\t\t\tbytes = bytes.subarray(dictLength);\n\t\t\t\tthis.compression.setBuffer(bytes, newLength, dictionary, dictLength);\n\t\t\t\tbytes.maxLength = newLength;\n\t\t\t\tObject.defineProperty(bytes, 'length', { value: newLength, writable: true, configurable: true });\n\t\t\t\tthis.compression.getValueBytes = bytes;\n\t\t\t} else {\n\t\t\t\tconsole.log('should not get here', newLength)\n\t\t\t\tbytes = makeReusableBuffer(newLength);\n\t\t\t\tsetGlobalBuffer(getValueBytes = bytes);\n\t\t\t}\n\t\t\tbytes.isGlobal = true;\n\t\t\treturn bytes;\n\t\t},\n\t\tgetBinary(id) {\n\t\t\ttry {\n\t\t\t\tasSafeBuffer = true;\n\t\t\t\tlet fastBuffer = this.getBinaryFast(id);\n\t\t\t\treturn fastBuffer && (fastBuffer.isGlobal ? Uint8ArraySlice.call(fastBuffer, 0, this.lastSize) : fastBuffer);\n\t\t\t} finally {\n\t\t\t\tasSafeBuffer = false;\n\t\t\t}\n\t\t},\n\t\tgetSharedBinary(id) {\n\t\t\tlet fastBuffer = this.getBinaryFast(id);\n\t\t\tif (fastBuffer) {\n\t\t\t\tif (fastBuffer.isGlobal || writeTxn)\n\t\t\t\t\treturn Uint8ArraySlice.call(fastBuffer, 0, this.lastSize)\n\t\t\t\tfastBuffer.txn = readTxn;\n\t\t\t\treadTxn.refCount = (readTxn.refCount || 0) + 1;\n\t\t\t\treturn fastBuffer;\n\t\t\t}\n\t\t},\n\t\tget(id, options) {\n\t\t\tif (this.decoderCopies) {\n\t\t\t\t// the decoder copies any data, so we can use the fast binary retrieval that overwrites the same buffer space\n\t\t\t\tlet bytes = this.getBinaryFast(id, options);\n\t\t\t\treturn bytes && (bytes == UNMODIFIED ? UNMODIFIED : this.decoder.decode(bytes));\n\t\t\t}\n\t\t\tif (this.encoding == 'binary')\n\t\t\t\treturn this.getBinary(id, options);\n\t\t\tif (this.decoder) {\n\t\t\t\t// the decoder potentially uses the data from the buffer in the future and needs a stable buffer\n\t\t\t\tlet bytes = this.getBinary(id);\n\t\t\t\treturn bytes && (bytes == UNMODIFIED ? UNMODIFIED : this.decoder.decode(bytes));\n\t\t\t}\n\n\t\t\tlet result = this.getString(id);\n\t\t\tif (result) {\n\t\t\t\tif (this.encoding == 'json')\n\t\t\t\t\treturn JSON.parse(result);\n\t\t\t}\n\t\t\treturn result;\n\t\t},\n\t\tgetEntry(id) {\n\t\t\tlet value = this.get(id);\n\t\t\tif (value !== undefined) {\n\t\t\t\tif (this.useVersions)\n\t\t\t\t\treturn {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tversion: getLastVersion(),\n\t\t\t\t\t\t//size: this.lastSize\n\t\t\t\t\t};\n\t\t\t\telse\n\t\t\t\t\treturn {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t//size: this.lastSize\n\t\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tresetReadTxn() {\n\t\t\tresetReadTxn();\n\t\t},\n\t\t_commitReadTxn() {\n\t\t\tif (readTxn) {\n\t\t\t\treadTxn.isCommitted = true\n\t\t\t\treadTxn.commit();\n\t\t\t}\n\t\t\tlastReadTxnRef = null;\n\t\t\treadTxnRenewed = null;\n\t\t\treadTxn = null;\n\t\t},\n\t\tensureReadTxn() {\n\t\t\tif (!env.writeTxn && !readTxnRenewed)\n\t\t\t\trenewReadTxn(this);\n\t\t},\n\t\tdoesExist(key, versionOrValue) {\n\t\t\tif (!env.writeTxn)\n\t\t\t\treadTxnRenewed ? readTxn : renewReadTxn(this);\n\t\t\tif (versionOrValue == null) {\n\t\t\t\t// undefined means the entry exists, null is used specifically to check for the entry *not* existing\n\t\t\t\treturn (this.getBinaryFast(key) === undefined) == (versionOrValue === null);\n\t\t\t}\n\t\t\telse if (this.useVersions) {\n\t\t\t\tthis.getBinaryFast(key);\n\t\t\t\treturn this.getBinaryFast(key) !== undefined && getLastVersion() === versionOrValue;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (versionOrValue && versionOrValue['\\x10binary-data\\x02'])\n\t\t\t\t\tversionOrValue = versionOrValue['\\x10binary-data\\x02'];\n\t\t\t\telse if (this.encoder)\n\t\t\t\t\tversionOrValue = this.encoder.encode(versionOrValue);\n\t\t\t\tif (typeof versionOrValue == 'string')\n\t\t\t\t\tversionOrValue = Buffer.from(versionOrValue);\n\t\t\t\treturn this.getValuesCount(key, { start: versionOrValue, exactMatch: true}) > 0;\n\t\t\t}\n\t\t},\n\t\tgetValues(key, options) {\n\t\t\tlet defaultOptions = {\n\t\t\t\tkey,\n\t\t\t\tvaluesForKey: true\n\t\t\t};\n\t\t\tif (options && options.snapshot === false)\n\t\t\t\tthrow new Error('Can not disable snapshots for getValues');\n\t\t\treturn this.getRange(options ? Object.assign(defaultOptions, options) : defaultOptions);\n\t\t},\n\t\tgetKeys(options) {\n\t\t\tif (!options)\n\t\t\t\toptions = {};\n\t\t\toptions.values = false;\n\t\t\treturn this.getRange(options);\n\t\t},\n\t\tgetCount(options) {\n\t\t\tif (!options)\n\t\t\t\toptions = {};\n\t\t\toptions.onlyCount = true;\n\t\t\treturn this.getRange(options).iterate();\n\t\t},\n\t\tgetKeysCount(options) {\n\t\t\tif (!options)\n\t\t\t\toptions = {};\n\t\t\toptions.onlyCount = true;\n\t\t\toptions.values = false;\n\t\t\treturn this.getRange(options).iterate();\n\t\t},\n\t\tgetValuesCount(key, options) {\n\t\t\tif (!options)\n\t\t\t\toptions = {};\n\t\t\toptions.key = key;\n\t\t\toptions.valuesForKey = true;\n\t\t\toptions.onlyCount = true;\n\t\t\treturn this.getRange(options).iterate();\n\t\t},\n\t\tgetRange(options) {\n\t\t\tlet iterable = new RangeIterable();\n\t\t\tif (!options)\n\t\t\t\toptions = {};\n\t\t\tlet includeValues = options.values !== false;\n\t\t\tlet includeVersions = options.versions;\n\t\t\tlet valuesForKey = options.valuesForKey;\n\t\t\tlet limit = options.limit;\n\t\t\tlet db = this.db;\n\t\t\tlet snapshot = options.snapshot;\n\t\t\tlet compression = this.compression;\n\t\t\titerable.iterate = () => {\n\t\t\t\tlet currentKey = valuesForKey ? options.key : options.start;\n\t\t\t\tconst reverse = options.reverse;\n\t\t\t\tlet count = 0;\n\t\t\t\tlet cursor, cursorRenewId, cursorAddress;\n\t\t\t\tlet txn;\n\t\t\t\tlet flags = (includeValues ? 0x100 : 0) | (reverse ? 0x400 : 0) |\n\t\t\t\t\t(valuesForKey ? 0x800 : 0) | (options.exactMatch ? 0x4000 : 0) |\n\t\t\t\t\t(options.inclusiveEnd ? 0x8000 : 0) |\n\t\t\t\t\t(options.exclusiveStart ? 0x10000 : 0);\n\t\t\t\tlet store = this;\n\t\t\t\tfunction resetCursor() {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (cursor)\n\t\t\t\t\t\t\tfinishCursor();\n\t\t\t\t\t\tlet writeTxn = env.writeTxn;\n\t\t\t\t\t\tif (writeTxn)\n\t\t\t\t\t\t\tsnapshot = false;\n\t\t\t\t\t\ttxn = writeTxn || (readTxnRenewed ? readTxn : renewReadTxn(store));\n\t\t\t\t\t\tcursor = !writeTxn && db.availableCursor;\n\t\t\t\t\t\tif (cursor) {\n\t\t\t\t\t\t\tdb.availableCursor = null;\n\t\t\t\t\t\t\tflags |= 0x2000;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcursor = new Cursor(db);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcursorAddress = cursor.address;\n\t\t\t\t\t\ttxn.refCount = (txn.refCount || 0) + 1; // track transaction so we always use the same one\n\t\t\t\t\t\tif (snapshot === false) {\n\t\t\t\t\t\t\tcursorRenewId = renewId; // use shared read transaction\n\t\t\t\t\t\t\ttxn.renewingrefCount = (txn.renewingrefCount || 0) + 1; // need to know how many are renewing cursors\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch(error) {\n\t\t\t\t\t\tif (cursor) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tcursor.close();\n\t\t\t\t\t\t\t} catch(error) { }\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresetCursor();\n\t\t\t\tif (options.onlyCount) {\n\t\t\t\t\tflags |= 0x1000;\n\t\t\t\t\tlet count = position(options.offset);\n\t\t\t\t\tif (count < 0)\n\t\t\t\t\t\tlmdbError(count);\n\t\t\t\t\tfinishCursor();\n\t\t\t\t\treturn count;\n\t\t\t\t}\n\t\t\t\tfunction position(offset) {\n\t\t\t\t\tlet keySize = currentKey === undefined ? 0 : store.writeKey(currentKey, keyBytes, 0);\n\t\t\t\t\tlet endAddress;\n\t\t\t\t\tif (valuesForKey) {\n\t\t\t\t\t\tif (options.start === undefined && options.end === undefined)\n\t\t\t\t\t\t\tendAddress = 0;\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlet startAddress;\n\t\t\t\t\t\t\tif (store.encoder.writeKey) {\n\t\t\t\t\t\t\t\tstartAddress = saveKey(options.start, store.encoder.writeKey, iterable, maxKeySize);\n\t\t\t\t\t\t\t\tkeyBytesView.setFloat64(START_ADDRESS_POSITION, startAddress, true);\n\t\t\t\t\t\t\t\tendAddress = saveKey(options.end, store.encoder.writeKey, iterable, maxKeySize);\n\t\t\t\t\t\t\t} else if ((!options.start || options.start instanceof Uint8Array) && (!options.end || options.end instanceof Uint8Array)) {\n\t\t\t\t\t\t\t\tstartAddress = saveKey(options.start, orderedBinary.writeKey, iterable, maxKeySize);\n\t\t\t\t\t\t\t\tkeyBytesView.setFloat64(START_ADDRESS_POSITION, startAddress, true);\n\t\t\t\t\t\t\t\tendAddress = saveKey(options.end, orderedBinary.writeKey, iterable, maxKeySize);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthrow new Error('Only key-based encoding is supported for start/end values');\n\t\t\t\t\t\t\t\tlet encoded = store.encoder.encode(options.start);\n\t\t\t\t\t\t\t\tlet bufferAddress = encoded.buffer.address || (encoded.buffer.address = getAddress(encoded) - encoded.byteOffset);\n\t\t\t\t\t\t\t\tstartAddress = bufferAddress + encoded.byteOffset;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else\n\t\t\t\t\t\tendAddress = saveKey(options.end, store.writeKey, iterable, maxKeySize);\n\t\t\t\t\treturn doPosition(cursorAddress, flags, offset || 0, keySize, endAddress);\n\t\t\t\t}\n\n\t\t\t\tfunction finishCursor() {\n\t\t\t\t\tif (txn.isDone)\n\t\t\t\t\t\treturn;\n\t\t\t\t\tif (cursorRenewId)\n\t\t\t\t\t\ttxn.renewingrefCount--;\n\t\t\t\t\tif (--txn.refCount <= 0 && txn.onlyCursor) {\n\t\t\t\t\t\tcursor.close();\n\t\t\t\t\t\ttxn.abort(); // this is no longer main read txn, abort it now that we are done\n\t\t\t\t\t\ttxn.isDone = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (db.availableCursor || txn != readTxn) {\n\t\t\t\t\t\t\tcursor.close();\n\t\t\t\t\t\t} else { // try to reuse it\n\t\t\t\t\t\t\tdb.availableCursor = cursor;\n\t\t\t\t\t\t\tdb.cursorTxn = txn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tnext() {\n\t\t\t\t\t\tlet keySize, lastSize;\n\t\t\t\t\t\tif (cursorRenewId && (cursorRenewId != renewId || txn.isDone)) {\n\t\t\t\t\t\t\tresetCursor();\n\t\t\t\t\t\t\tkeySize = position(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (count === 0) { // && includeValues) // on first entry, get current value if we need to\n\t\t\t\t\t\t\tkeySize = position(options.offset);\n\t\t\t\t\t\t} else\n\t\t\t\t\t\t\tkeySize = iterate(cursorAddress);\n\t\t\t\t\t\tif (keySize <= 0 ||\n\t\t\t\t\t\t\t\t(count++ >= limit)) {\n\t\t\t\t\t\t\tif (count < 0)\n\t\t\t\t\t\t\t\tlmdbError(count);\n\t\t\t\t\t\t\tfinishCursor();\n\t\t\t\t\t\t\treturn ITERATOR_DONE;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!valuesForKey || snapshot === false) {\n\t\t\t\t\t\t\tif (keySize > 20000) {\n\t\t\t\t\t\t\t\tif (keySize > 0x1000000)\n\t\t\t\t\t\t\t\t\tlmdbError(keySize - 0x100000000)\n\t\t\t\t\t\t\t\tthrow new Error('Invalid key size ' + keySize.toString(16))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcurrentKey = store.readKey(keyBytes, 32, keySize + 32);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (includeValues) {\n\t\t\t\t\t\t\tlet value;\n\t\t\t\t\t\t\tlastSize = keyBytesView.getUint32(0, true);\n\t\t\t\t\t\t\tlet bufferId = keyBytesView.getUint32(4, true);\n\t\t\t\t\t\t\tlet bytes;\n\t\t\t\t\t\t\tif (bufferId) {\n\t\t\t\t\t\t\t\tbytes = getMMapBuffer(bufferId, lastSize);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tbytes = compression ? compression.getValueBytes : getValueBytes;\n\t\t\t\t\t\t\t\tif (lastSize > bytes.maxLength) {\n\t\t\t\t\t\t\t\t\tstore.lastSize = lastSize;\n\t\t\t\t\t\t\t\t\tasSafeBuffer = store.encoding == 'binary';\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tbytes = store._returnLargeBuffer(() => getCurrentValue(cursorAddress));\n\t\t\t\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\t\t\t\tasSafeBuffer = false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else\n\t\t\t\t\t\t\t\t\tbytes.length = lastSize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (store.decoder) {\n\t\t\t\t\t\t\t\tvalue = store.decoder.decode(bytes, lastSize);\n\t\t\t\t\t\t\t} else if (store.encoding == 'binary')\n\t\t\t\t\t\t\t\tvalue = bytes.isGlobal ? Uint8ArraySlice.call(bytes, 0, lastSize) : bytes;\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tvalue = bytes.toString('utf8', 0, lastSize);\n\t\t\t\t\t\t\t\tif (store.encoding == 'json' && value)\n\t\t\t\t\t\t\t\t\tvalue = JSON.parse(value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (includeVersions)\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\tkey: currentKey,\n\t\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\t\tversion: getLastVersion()\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n \t\t\t\t\t\t\telse if (valuesForKey)\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\tkey: currentKey,\n\t\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else if (includeVersions) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\tkey: currentKey,\n\t\t\t\t\t\t\t\t\tversion: getLastVersion()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tvalue: currentKey\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\treturn() {\n\t\t\t\t\t\tfinishCursor();\n\t\t\t\t\t\treturn ITERATOR_DONE;\n\t\t\t\t\t},\n\t\t\t\t\tthrow() {\n\t\t\t\t\t\tfinishCursor();\n\t\t\t\t\t\treturn ITERATOR_DONE;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t\treturn iterable;\n\t\t},\n\n\t\tgetMany(keys, callback) {\n\t\t\t// this is an asynchronous get for multiple keys. It actually works by prefetching asynchronously,\n\t\t\t// allowing a separate to absorb the potentially largest cost: hard page faults (and disk I/O).\n\t\t\t// And then we just do standard sync gets (to deserialized data) to fulfil the callback/promise\n\t\t\t// once the prefetch occurs\n\t\t\tlet promise = callback ? undefined : new Promise(resolve => callback = (error, results) => resolve(results));\n\t\t\tthis.prefetch(keys, () => {\n\t\t\t\tlet results = new Array(keys.length);\n\t\t\t\tfor (let i = 0, l = keys.length; i < l; i++) {\n\t\t\t\t\tresults[i] = get.call(this, keys[i]);\n\t\t\t\t}\n\t\t\t\tcallback(null, results);\n\t\t\t});\n\t\t\treturn promise;\n\t\t},\n\t\tgetSharedBufferForGet(id) {\n\t\t\tlet txn = (env.writeTxn || (readTxnRenewed ? readTxn : renewReadTxn(this)));\n\t\t\tthis.lastSize = this.keyIsCompatibility ? txn.getBinaryShared(id) : this.db.get(this.writeKey(id, keyBytes, 0));\n\t\t\tif (this.lastSize === -30798) { // not found code\n\t\t\t\treturn; //undefined\n\t\t\t}\n\t\t\treturn this.lastSize;\n\t\t\tthis.lastSize = keyBytesView.getUint32(0, true);\n\t\t\tlet bufferIndex = keyBytesView.getUint32(12, true);\n\t\t\tlastOffset = keyBytesView.getUint32(8, true);\n\t\t\tlet buffer = buffers[bufferIndex];\n\t\t\tlet startOffset;\n\t\t\tif (!buffer || lastOffset < (startOffset = buffer.startOffset) || (lastOffset + this.lastSize > startOffset + 0x100000000)) {\n\t\t\t\tif (buffer)\n\t\t\t\t\tenv.detachBuffer(buffer.buffer);\n\t\t\t\tstartOffset = (lastOffset >>> 16) * 0x10000;\n\t\t\t\tconsole.log('make buffer for address', bufferIndex * 0x100000000 + startOffset);\n\t\t\t\tbuffer = buffers[bufferIndex] = Buffer.from(getBufferForAddress(bufferIndex * 0x100000000 + startOffset));\n\t\t\t\tbuffer.startOffset = startOffset;\n\t\t\t}\n\t\t\tlastOffset -= startOffset;\n\t\t\treturn buffer;\n\t\t\treturn buffer.slice(lastOffset, lastOffset + this.lastSize);/*Uint8ArraySlice.call(buffer, lastOffset, lastOffset + this.lastSize)*/\n\t\t},\n\t\tprefetch(keys, callback) {\n\t\t\tif (!keys)\n\t\t\t\tthrow new Error('An array of keys must be provided');\n\t\t\tif (!keys.length) {\n\t\t\t\tif (callback) {\n\t\t\t\t\tcallback(null);\n\t\t\t\t\treturn;\n\t\t\t\t} else\n\t\t\t\t\treturn Promise.resolve();\n\t\t\t}\n\t\t\tlet buffers = [];\n\t\t\tlet startPosition;\n\t\t\tlet bufferHolder = {};\n\t\t\tlet lastBuffer;\n\t\t\tfor (let key of keys) {\n\t\t\t\tlet position = saveKey(key, this.writeKey, bufferHolder, maxKeySize);\n\t\t\t\tif (!startPosition)\n\t\t\t\t\tstartPosition = position;\n\t\t\t\tif (bufferHolder.saveBuffer != lastBuffer) {\n\t\t\t\t\tbuffers.push(bufferHolder);\n\t\t\t\t\tlastBuffer = bufferHolder.saveBuffer;\n\t\t\t\t\tbufferHolder = { saveBuffer: lastBuffer };\n\t\t\t\t}\n\t\t\t}\n\t\t\tsaveKey(undefined, this.writeKey, bufferHolder, maxKeySize);\n\t\t\tprefetch(this.dbAddress, startPosition, (error) => {\n\t\t\t\tif (error)\n\t\t\t\t\tconsole.error('Error with prefetch', buffers, bufferHolder); // partly exists to keep the buffers pinned in memory\n\t\t\t\telse\n\t\t\t\t\tcallback(null);\n\t\t\t});\n\t\t\tif (!callback)\n\t\t\t\treturn new Promise(resolve => callback = resolve);\n\t\t},\n\t\tuseReadTxn() {\n\t\t\tlet txn = readTxnRenewed ? readTxn : renewReadTxn(this);\n\t\t\ttxn.refCount = (txn.refCount || 0) + 1;\n\t\t},\n\t\tclose(callback) {\n\t\t\tthis.status = 'closing';\n\t\t\tif (this.isRoot) {\n\t\t\t\tif (readTxn) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\treadTxn.abort();\n\t\t\t\t\t} catch(error) {}\n\t\t\t\t}\n\t\t\t\treadTxn = {\n\t\t\t\t\trenew() {\n\t\t\t\t\t\tthrow new Error('Can not read from a closed database');\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\treadTxnRenewed = null;\n\t\t\t}\n\t\t\tlet txnPromise = this._endWrites();\n\t\t\tconst doClose = () => {\n\t\t\t\tif (this.isRoot)\n\t\t\t\t\tenv.close();\n\t\t\t\telse\n\t\t\t\t\tthis.db.close();\n\t\t\t\tthis.status = 'closed';\n\t\t\t\tif (callback)\n\t\t\t\t\tcallback();\n\t\t\t}\n\t\t\tif (txnPromise)\n\t\t\t\treturn txnPromise.then(doClose);\n\t\t\telse {\n\t\t\t\tdoClose();\n\t\t\t\treturn Promise.resolve();\n\t\t\t}\n\t\t},\n\t\tgetStats() {\n\t\t\t(env.writeTxn || (readTxnRenewed ? readTxn : renewReadTxn(this)));\n\t\t\tlet dbStats = this.db.stat();\n\t\t\tdbStats.root = env.stat();\n\t\t\tdbStats.env = env.info();\n\t\t\tdbStats.free = env.freeStat();\n\t\t\treturn dbStats;\n\t\t},\n\t});\n\tlet get = LMDBStore.prototype.get;\n\tlet lastReadTxnRef;\n\tfunction getMMapBuffer(bufferId, size) {\n\t\tlet buffer = mmaps[bufferId];\n\t\tif (!buffer) {\n\t\t\tbuffer = mmaps[bufferId] = getSharedBuffer(bufferId, env.address);\n\t\t}\n\t\tlet offset = keyBytesView.getUint32(8, true);\n\t\treturn new Uint8Array(buffer, offset, size);\n\t}\n\tfunction renewReadTxn(store) {\n\t\tif (!readTxn) {\n\t\t\tlet retries = 0;\n\t\t\tlet waitArray;\n\t\t\tdo {\n\t\t\t\ttry {\n\t\t\t\t\tlet lastReadTxn = lastReadTxnRef && lastReadTxnRef.deref();\n\t\t\t\t\treadTxn = new Txn(env, 0x20000, lastReadTxn && !lastReadTxn.isDone && lastReadTxn);\n\t\t\t\t\tif (readTxn.address == 0) {\n\t\t\t\t\t\treadTxn = lastReadTxn;\n\t\t\t\t\t\tif (readTxn.onlyCursor)\n\t\t\t\t\t\t\treadTxn.onlyCursor = false;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (error.message.includes('temporarily')) {\n\t\t\t\t\t\tif (!waitArray)\n\t\t\t\t\t\t\twaitArray = new Int32Array(new SharedArrayBuffer(4), 0, 1);\n\t\t\t\t\t\tAtomics.wait(waitArray, 0, 0, retries * 2);\n\t\t\t\t\t} else\n\t\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t} while (retries++ < 100);\n\t\t}\n\t\t// we actually don't renew here, we let the renew take place in the next \n\t\t// lmdb native read/call so as to avoid an extra native call\n\t\treadTxnRenewed = setTimeout(resetReadTxn, 0);\n\t\tstore.emit('begin-transaction');\n\t\treturn readTxn;\n\t}\n\tfunction resetReadTxn(hardReset) {\n\t\trenewId++;\n\t\tif (readTxnRenewed) {\n\t\t\treadTxnRenewed = null;\n\t\t\tif (readTxn.refCount - (readTxn.renewingrefCount || 0) > 0) {\n\t\t\t\treadTxn.onlyCursor = true;\n\t\t\t\tlastReadTxnRef = new WeakRef(readTxn);\n\t\t\t\treadTxn = null;\n\t\t\t} else\n\t\t\t\tresetTxn(readTxn.address);\n\t\t}\n\t}\n}\nexport function makeReusableBuffer(size) {\n\tlet bytes = typeof Buffer != 'undefined' ? Buffer.alloc(size) : new Uint8Array(size);\n\tbytes.maxLength = size;\n\tObject.defineProperty(bytes, 'length', { value: size, writable: true, configurable: true });\n\treturn bytes;\n}\n\nTxn.prototype.done = function() {\n\tthis.refCount--;\n\tif (this.refCount == 0 && this.onlyCursor) {\n\t\tthis.abort();\n\t\tthis.isDone = true;\n\t}\n}\n","import { WeakLRUCache, clearKeptObjects } from './native.js';\nimport { FAILED_CONDITION, ABORT } from './write.js';\nimport { UNMODIFIED } from './read.js';\nimport { when } from './util/when.js';\n\nlet getLastVersion, getLastTxnId;\nconst mapGet = Map.prototype.get;\nexport const CachingStore = (Store, env) => {\n\tlet childTxnChanges\n\treturn class extends Store {\n\tconstructor(dbName, options) {\n\t\tsuper(dbName, options);\n\t\tif (!env.cacheCommitter) {\n\t\t\tenv.cacheCommitter = true;\n\t\t\tthis.on('aftercommit', ({ next, last, txnId }) => {\n\t\t\t\tdo {\n\t\t\t\t\tlet meta = next.meta;\n\t\t\t\t\tlet store = meta && meta.store;\n\t\t\t\t\tif (store) {\n\t\t\t\t\t\tif (next.flag & FAILED_CONDITION)\n\t\t\t\t\t\t\tstore.cache.delete(meta.key); // just delete it from the map\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlet expirationPriority = meta.valueSize >> 10;\n\t\t\t\t\t\t\tlet cache = store.cache;\n\t\t\t\t\t\t\tlet entry = mapGet.call(cache, meta.key);\n\t\t\t\t\t\t\tif (entry) {\n\t\t\t\t\t\t\t\tentry.txnId = txnId;\n\t\t\t\t\t\t\t\tcache.used(entry, expirationPriority + 4); // this will enter it into the LRFU (with a little lower priority than a read)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} while (next != last && (next = next.next))\n\t\t\t});\n\t\t}\n\t\tthis.db.cachingDb = this;\n\t\tif (options.cache.clearKeptInterval)\n\t\t\toptions.cache.clearKeptObjects = clearKeptObjects;\n\t\tthis.cache = new WeakLRUCache(options.cache);\n\t\tif (options.cache.validated)\n\t\t\tthis.cache.validated = true;\n\t}\n\tget isCaching() {\n\t\treturn true\n\t}\n\tget(id, cacheMode) {\n\t\tlet value;\n\t\tif (this.cache.validated) {\n\t\t\tlet entry = this.cache.get(id);\n\t\t\tif (entry) {\n\t\t\t\tlet cachedValue = entry.value;\n\t\t\t\tif (entry.txnId) {\n\t\t\t\t\tvalue = super.get(id, { ifNotTxnId: entry.txnId });\n\t\t\t\t\tif (value === UNMODIFIED)\n\t\t\t\t\t\treturn cachedValue;\n\t\t\t\t} else // with no txn id we do not validate; this is the state of a cached value after a write before it transacts\n\t\t\t\t\tvalue = cachedValue;\n\t\t\t} else\n\t\t\t\tvalue = super.get(id);\n\t\t} else {\n\t\t\tvalue = this.cache.getValue(id);\n\t\t\tif (value !== undefined) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tvalue = super.get(id);\n\t\t}\n\t\tif (value && typeof value === 'object' && !cacheMode && typeof id !== 'object') {\n\t\t\tlet entry = this.cache.setValue(id, value, this.lastSize >> 10);\n\t\t\tif (this.useVersions) {\n\t\t\t\tentry.version = getLastVersion();\n\t\t\t}\n\t\t\tif (this.cache.validated)\n\t\t\t\tentry.txnId = getLastTxnId();\n\t\t}\n\t\treturn value;\n\t}\n\tgetEntry(id, cacheMode) {\n\t\tlet entry = this.cache.get(id);\n\t\tif (entry)\n\t\t\treturn entry;\n\t\tlet value = super.get(id);\n\t\tif (value === undefined)\n\t\t\treturn;\n\t\tif (value && typeof value === 'object' && !cacheMode && typeof id !== 'object') {\n\t\t\tentry = this.cache.setValue(id, value, this.lastSize >> 10);\n\t\t} else {\n\t\t\tentry = { value };\n\t\t}\n\t\tif (this.useVersions) {\n\t\t\tentry.version = getLastVersion();\n\t\t}\n\t\treturn entry;\n\t}\n\tputEntry(id, entry, ifVersion) {\n\t\tlet result = super.put(id, entry.value, entry.version, ifVersion);\n\t\tif (typeof id === 'object')\n\t\t\treturn result;\n\t\tif (result && result.then)\n\t\t\tthis.cache.setManually(id, entry); // set manually so we can keep it pinned in memory until it is committed\n\t\telse // sync operation, immediately add to cache\n\t\t\tthis.cache.set(id, entry);\n\t}\n\tput(id, value, version, ifVersion) {\n\t\tlet result = super.put(id, value, version, ifVersion);\n\t\tif (typeof id !== 'object') {\n\t\t\tif (value && value['\\x10binary-data\\x02']) {\n\t\t\t\t// don't cache binary data, since it will be decoded on get\n\t\t\t\tthis.cache.delete(id);\n\t\t\t\treturn result;\n\t\t\t}\t\n\t\t\t// sync operation, immediately add to cache, otherwise keep it pinned in memory until it is committed\n\t\t\tlet entry = this.cache.setValue(id, value, !result || result.isSync ? 0 : -1);\n\t\t\tif (childTxnChanges)\n\t\t\t\tchildTxnChanges.add(id);\n\t\t\tif (version !== undefined)\n\t\t\t\tentry.version = typeof version === 'object' ? version.version : version;\n\t\t}\n\t\treturn result;\n\t}\n\tputSync(id, value, version, ifVersion) {\n\t\tif (id !== 'object') {\n\t\t\t// sync operation, immediately add to cache, otherwise keep it pinned in memory until it is committed\n\t\t\tif (value && typeof value === 'object') {\n\t\t\t\tlet entry = this.cache.setValue(id, value);\n\t\t\t\tif (childTxnChanges)\n\t\t\t\t\tchildTxnChanges.add(id);\n\t\t\t\tif (version !== undefined) {\n\t\t\t\t\tentry.version = typeof version === 'object' ? version.version : version;\n\t\t\t\t}\n\t\t\t} else // it is possible that a value used to exist here\n\t\t\t\tthis.cache.delete(id);\n\t\t}\n\t\treturn super.putSync(id, value, version, ifVersion);\n\t}\n\tremove(id, ifVersion) {\n\t\tthis.cache.delete(id);\n\t\treturn super.remove(id, ifVersion);\n\t}\n\tremoveSync(id, ifVersion) {\n\t\tthis.cache.delete(id);\n\t\treturn super.removeSync(id, ifVersion);\n\t}\n\tclearAsync(callback) {\n\t\tthis.cache.clear();\n\t\treturn super.clearAsync(callback);\n\t}\n\tclearSync() {\n\t\tthis.cache.clear();\n\t\tsuper.clearSync();\n\t}\n\tchildTransaction(callback) {\n\t\treturn super.childTransaction(() => {\n\t\t\tlet cache = this.cache;\n\t\t\tlet previousChanges = childTxnChanges;\n\t\t\ttry {\n\t\t\t\tchildTxnChanges = new Set();\n\t\t\t\treturn when(callback(), (result) => {\n\t\t\t\t\tif (result === ABORT)\n\t\t\t\t\t\treturn abort();\n\t\t\t\t\tchildTxnChanges = previousChanges;\n\t\t\t\t\treturn result;\n\t\t\t\t}, abort);\n\t\t\t} catch(error) {\n\t\t\t\tabort(error);\n\t\t\t}\n\t\t\tfunction abort(error) {\n\t\t\t\t// if the transaction was aborted, remove all affected entries from cache\n\t\t\t\tfor (let id of childTxnChanges)\n\t\t\t\t\tcache.delete(id);\n\t\t\t\tchildTxnChanges = previousChanges;\n\t\t\t\tif (error)\n\t\t\t\t\tthrow error;\n\t\t\t}\n\t\t});\n\t}\n\t};\n};\nexport function setGetLastVersion(get, getTxnId) {\n\tgetLastVersion = get;\n\tgetLastTxnId = getTxnId;\n}\n","import { Compression, getAddress, arch, fs, path as pathModule, lmdbError, EventEmitter, MsgpackrEncoder, Env, Dbi, tmpdir, os, nativeAddon } from './native.js';\nimport { CachingStore, setGetLastVersion } from './caching.js';\nimport { addReadMethods, makeReusableBuffer } from './read.js';\nimport { addWriteMethods } from './write.js';\nimport { applyKeyHandling } from './keys.js';\nlet moduleRequire = typeof require == 'function' && require;\nexport function setRequire(require) {\n\tmoduleRequire = require;\n}\n\nsetGetLastVersion(getLastVersion, getLastTxnId);\nlet keyBytes, keyBytesView;\nconst buffers = [];\nconst { onExit, getEnvsPointer, setEnvsPointer, getEnvFlags, setJSFlags } = nativeAddon;\nif (globalThis.__lmdb_envs__)\n\tsetEnvsPointer(globalThis.__lmdb_envs__);\nelse\n\tglobalThis.__lmdb_envs__ = getEnvsPointer();\n\n// this is hard coded as an upper limit because it is important assumption of the fixed buffers in writing instructions\n// this corresponds to the max key size for 8KB pages\nconst MAX_KEY_SIZE = 4026;\n// this is used as the key size by default because default page size is OS page size, which is usually\n// 4KB (but is 16KB on M-series MacOS), and this keeps a consistent max key size when no page size specified.\nconst DEFAULT_MAX_KEY_SIZE = 1978;\nconst DEFAULT_COMMIT_DELAY = 0;\n\nexport const allDbs = new Map();\nlet defaultCompression;\nlet lastSize;\nlet hasRegisteredOnExit;\nexport function open(path, options) {\n\tif (!keyBytes) // TODO: Consolidate get buffer and key buffer (don't think we need both)\n\t\tallocateFixedBuffer();\n\tif (typeof path == 'object' && !options) {\n\t\toptions = path;\n\t\tpath = options.path;\n\t}\n\toptions = options || {};\n\tlet userOptions = options;\n\tif (!path) {\n\t\toptions = Object.assign({\n\t\t\tdeleteOnClose: true,\n\t\t\tnoSync: true,\n\t\t}, options);\n\t\tpath = tmpdir() + '/' + Math.floor(Math.random() * 2821109907455).toString(36) + '.mdb'\n\t} else if (!options)\n\t\toptions = {};\n\tlet extension = pathModule.extname(path);\n\tlet name = pathModule.basename(path, extension);\n\tlet is32Bit = arch().endsWith('32');\n\tlet remapChunks = options.remapChunks || options.encryptionKey || (options.mapSize ?\n\t\t(is32Bit && options.mapSize > 0x100000000) : // larger than fits in address space, must use dynamic maps\n\t\tis32Bit); // without a known map size, we default to being able to handle large data correctly/well*/\n\toptions = Object.assign({\n\t\tpath,\n\t\tnoSubdir: Boolean(extension),\n\t\tisRoot: true,\n\t\tmaxDbs: 12,\n\t\tremapChunks,\n\t\tkeyBytes,\n\t\toverlappingSync: (options.noSync || options.readOnly) ? false : (os != 'win32'),\n\t\t// default map size limit of 4 exabytes when using remapChunks, since it is not preallocated and we can\n\t\t// make it super huge.\n\t\tmapSize: remapChunks ? 0x10000000000000 :\n\t\t\t0x20000, // Otherwise we start small with 128KB\n\t\tsafeRestore: process.env.LMDB_RESTORE == 'safe',\n\t}, options);\n\tif (options.asyncTransactionOrder == 'strict') {\n\t\toptions.strictAsyncOrder = true;\n\t}\n\n\tif (!exists(options.noSubdir ? pathModule.dirname(path) : path))\n\t\tfs.mkdirSync(options.noSubdir ? pathModule.dirname(path) : path, { recursive: true }\n\t\t);\n\tfunction makeCompression(compressionOptions) {\n\t\tif (compressionOptions instanceof Compression)\n\t\t\treturn compressionOptions;\n\t\tlet useDefault = typeof compressionOptions != 'object';\n\t\tif (useDefault && defaultCompression)\n\t\t\treturn defaultCompression;\n\t\tcompressionOptions = Object.assign({\n\t\t\tthreshold: 1000,\n\t\t\tdictionary: fs.readFileSync(new URL('./dict/dict.txt', import.meta.url.replace(/dist[\\\\\\/]index.cjs$/, ''))),\n\t\t\tgetValueBytes: makeReusableBuffer(0),\n\t\t}, compressionOptions);\n\t\tlet compression = Object.assign(new Compression(compressionOptions), compressionOptions);\n\t\tif (useDefault)\n\t\t\tdefaultCompression = compression;\n\t\treturn compression;\n\t}\n\n\tif (options.compression)\n\t\toptions.compression = makeCompression(options.compression);\n\tlet flags =\n\t\t(options.overlappingSync ? 0x1000 : 0) |\n\t\t(options.noSubdir ? 0x4000 : 0) |\n\t\t(options.noSync ? 0x10000 : 0) |\n\t\t(options.readOnly ? 0x20000 : 0) |\n\t\t(options.noMetaSync ? 0x40000 : 0) |\n\t\t(options.useWritemap ? 0x80000 : 0) |\n\t\t(options.mapAsync ? 0x100000 : 0) |\n\t\t(options.noReadAhead ? 0x800000 : 0) |\n\t\t(options.noMemInit ? 0x1000000 : 0) |\n\t\t(options.usePreviousSnapshot ? 0x2000000 : 0) |\n\t\t(options.remapChunks ? 0x4000000 : 0) |\n\t\t(options.safeRestore ? 0x8000000 : 0);\n\n\tlet env = new Env();\n\tlet jsFlags = (options.overlappingSync ? 0x1000 : 0) |\n\t\t(options.separateFlushed ? 1 : 0) |\n\t\t(options.deleteOnClose ? 2 : 0)\n\tlet rc = env.open(options, flags, jsFlags);\n if (rc)\n\t\tlmdbError(rc);\n\tdelete options.keyBytes // no longer needed, don't copy to stores\n\tlet maxKeySize = env.getMaxKeySize();\n\tmaxKeySize = Math.min(maxKeySize, options.pageSize ? MAX_KEY_SIZE : DEFAULT_MAX_KEY_SIZE);\n\tflags = getEnvFlags(env.address); // re-retrieve them, they are not necessarily the same if we are connecting to an existing env\n\tif (flags & 0x1000) {\n\t\tif (userOptions.noSync) {\n\t\t\tenv.close();\n\t\t\tthrow new Error('Can not set noSync on a database that was opened with overlappingSync');\n\t\t}\n\t} else if (options.overlappingSync) {\n\t\tif (userOptions.overlappingSync) {\n\t\t\tenv.close();\n\t\t\tthrow new Error('Can not enable overlappingSync on a database that was opened without this flag');\n\t\t}\n\t\toptions.overlappingSync = false;\n\t\tjsFlags = jsFlags & 0xff; // clear overlapping sync\n\t\tsetJSFlags(env.address, jsFlags);\n\t}\n\n\tenv.readerCheck(); // clear out any stale entries\n\tlet stores = [];\n\tif ((options.overlappingSync || options.deleteOnClose) && !hasRegisteredOnExit && process.on) {\n\t\thasRegisteredOnExit = true;\n\t\tprocess.on('exit', onExit);\n\t}\n\n\tclass LMDBStore extends EventEmitter {\n\t\tconstructor(dbName, dbOptions) {\n\t\t\tsuper();\n\t\t\tif (dbName === undefined)\n\t\t\t\tthrow new Error('Database name must be supplied in name property (may be null for root database)');\n\n\t\t\tif (options.compression && dbOptions.compression !== false && typeof dbOptions.compression != 'object')\n\t\t\t\tdbOptions.compression = options.compression; // use the parent compression if available\n\t\t\telse if (dbOptions.compression)\n\t\t\t\tdbOptions.compression = makeCompression(dbOptions.compression);\n\n\t\t\tif (dbOptions.dupSort && (dbOptions.useVersions || dbOptions.cache)) {\n\t\t\t\tthrow new Error('The dupSort flag can not be combined with versions or caching');\n\t\t\t}\n\t\t\tlet keyIsBuffer = dbOptions.keyIsBuffer\n\t\t\tif (dbOptions.keyEncoding == 'uint32') {\n\t\t\t\tdbOptions.keyIsUint32 = true;\n\t\t\t} else if (dbOptions.keyEncoder) {\n\t\t\t\tif (dbOptions.keyEncoder.enableNullTermination) {\n\t\t\t\t\tdbOptions.keyEncoder.enableNullTermination()\n\t\t\t\t} else\n\t\t\t\t\tkeyIsBuffer = true;\n\t\t\t} else if (dbOptions.keyEncoding == 'binary') {\n\t\t\t\tkeyIsBuffer = true;\n\t\t\t}\n\t\t\tlet flags = (dbOptions.reverseKey ? 0x02 : 0) |\n\t\t\t\t(dbOptions.dupSort ? 0x04 : 0) |\n\t\t\t\t(dbOptions.dupFixed ? 0x10 : 0) |\n\t\t\t\t(dbOptions.integerDup ? 0x20 : 0) |\n\t\t\t\t(dbOptions.reverseDup ? 0x40 : 0) |\n\t\t\t\t(!options.readOnly && dbOptions.create !== false ? 0x40000 : 0) |\n\t\t\t\t(dbOptions.useVersions ? 0x100 : 0);\n\t\t\tlet keyType = (dbOptions.keyIsUint32 || dbOptions.keyEncoding == 'uint32') ? 2 : keyIsBuffer ? 3 : 0;\n\t\t\tif (keyType == 2)\n\t\t\t\tflags |= 0x08; // integer key\n\n\t\t\tif (options.readOnly) {\n\t\t\t\t// in read-only mode we use a read-only txn to open the database\n\t\t\t\t// TODO: LMDB is actually not entirely thread-safe when it comes to opening databases with\n\t\t\t\t// read-only transactions since there is a race condition on setting the update dbis that\n\t\t\t\t// occurs outside the lock\n\t\t\t\t// make sure we are using a fresh read txn, so we don't want to share with a cursor txn\n\t\t\t\tthis.resetReadTxn();\n\t\t\t\tthis.ensureReadTxn();\n\t\t\t\tthis.db = new Dbi(env, flags, dbName, keyType, dbOptions.compression);\n\t\t\t} else {\n\t\t\t\tthis.transactionSync(() => {\n\t\t\t\t\tthis.db = new Dbi(env, flags, dbName, keyType, dbOptions.compression);\n\t\t\t\t}, options.overlappingSync ? 0x10002 : 2); // no flush-sync, but synchronously commit\n\t\t\t}\n\t\t\tthis._commitReadTxn(); // current read transaction becomes invalid after opening another db\n\t\t\tif (!this.db || this.db.dbi == 0xffffffff) {// not found\n\t\t\t\tthrow new Error('Database not found')\n\t\t\t}\n\t\t\tthis.dbAddress = this.db.address\n\t\t\tthis.db.name = dbName || null;\n\t\t\tthis.name = dbName;\n\t\t\tthis.status = 'open';\n\t\t\tthis.env = env;\n\t\t\tthis.reads = 0;\n\t\t\tthis.writes = 0;\n\t\t\tthis.transactions = 0;\n\t\t\tthis.averageTransactionTime = 5;\n\t\t\tif (dbOptions.syncBatchThreshold)\n\t\t\t\tconsole.warn('syncBatchThreshold is no longer supported');\n\t\t\tif (dbOptions.immediateBatchThreshold)\n\t\t\t\tconsole.warn('immediateBatchThreshold is no longer supported');\n\t\t\tthis.commitDelay = DEFAULT_COMMIT_DELAY;\n\t\t\tObject.assign(this, { // these are the options that are inherited\n\t\t\t\tpath: options.path,\n\t\t\t\tencoding: options.encoding,\n\t\t\t\tstrictAsyncOrder: options.strictAsyncOrder,\n\t\t\t}, dbOptions);\n\t\t\tlet Encoder;\n\t\t\tif (this.encoder && this.encoder.Encoder) {\n\t\t\t\tEncoder = this.encoder.Encoder;\n\t\t\t\tthis.encoder = null; // don't copy everything from the module\n\t\t\t}\n\t\t\tif (!Encoder && !(this.encoder && this.encoder.encode) && (!this.encoding || this.encoding == 'msgpack' || this.encoding == 'cbor')) {\n\t\t\t\tEncoder = (this.encoding == 'cbor' ? moduleRequire('cbor-x').Encoder : MsgpackrEncoder);\n\t\t\t}\n\t\t\tif (Encoder) {\n\t\t\t\tthis.encoder = new Encoder(Object.assign(\n\t\t\t\t\tassignConstrainedProperties(['copyBuffers', 'getStructures', 'saveStructures', 'useFloat32', 'useRecords', 'structuredClone', 'variableMapSize', 'useTimestamp32', 'largeBigIntToFloat', 'encodeUndefinedAsNil', 'int64AsNumber', 'onInvalidDate', 'mapsAsObjects', 'useTag259ForMaps', 'pack', 'maxSharedStructures', 'shouldShareStructure'],\n\t\t\t\t\tthis.sharedStructuresKey ? this.setupSharedStructures() : {\n\t\t\t\t\t\tcopyBuffers: true, // need to copy any embedded buffers that are found since we use unsafe buffers\n\t\t\t\t\t}, options, dbOptions), this.encoder));\n\t\t\t}\n\t\t\tif (this.encoding == 'json') {\n\t\t\t\tthis.encoder = {\n\t\t\t\t\tencode: JSON.stringify,\n\t\t\t\t};\n\t\t\t} else if (this.encoder) {\n\t\t\t\tthis.decoder = this.encoder;\n\t\t\t\tthis.decoderCopies = !this.encoder.needsStableBuffer\n\t\t\t}\n\t\t\tthis.maxKeySize = maxKeySize;\n\t\t\tapplyKeyHandling(this);\n\t\t\tallDbs.set(dbName ? name + '-' + dbName : name, this);\n\t\t\tstores.push(this);\n\t\t}\n\t\topenDB(dbName, dbOptions) {\n\t\t\tif (this.dupSort && this.name == null)\n\t\t\t\tthrow new Error('Can not open named databases if the main database is dupSort')\n\t\t\tif (typeof dbName == 'object' && !dbOptions) {\n\t\t\t\tdbOptions = dbName;\n\t\t\t\tdbName = dbOptions.name;\n\t\t\t} else\n\t\t\t\tdbOptions = dbOptions || {};\n\t\t\ttry {\n\t\t\t\treturn dbOptions.cache ?\n\t\t\t\t\tnew (CachingStore(LMDBStore, env))(dbName, dbOptions) :\n\t\t\t\t\tnew LMDBStore(dbName, dbOptions);\n\t\t\t} catch(error) {\n\t\t\t\tif (error.message == 'Database not found')\n\t\t\t\t\treturn; // return undefined to indicate db not found\n\t\t\t\tif (error.message.indexOf('MDB_DBS_FULL') > -1) {\n\t\t\t\t\terror.message += ' (increase your maxDbs option)';\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t\topen(dbOptions, callback) {\n\t\t\tlet db = this.openDB(dbOptions);\n\t\t\tif (callback)\n\t\t\t\tcallback(null, db);\n\t\t\treturn db;\n\t\t}\n\t\tbackup(path, compact) {\n\t\t\tfs.mkdirSync(pathModule.dirname(path), { recursive: true });\n\t\t\treturn new Promise((resolve, reject) => env.copy(path, compact, (error) => {\n\t\t\t\tif (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t} else {\n\t\t\t\t\tresolve();\n\t\t\t\t}\n\t\t\t}));\n\t\t}\n\t\tisOperational() {\n\t\t\treturn this.status == 'open';\n\t\t}\n\t\tsync(callback) {\n\t\t\treturn env.sync(callback || function(error) {\n\t\t\t\tif (error) {\n\t\t\t\t\tconsole.error(error);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tdeleteDB() {\n\t\t\tconsole.warn('deleteDB() is deprecated, use drop or dropSync instead');\n\t\t\treturn this.dropSync();\n\t\t}\n\t\tdropSync() {\n\t\t\tthis.transactionSync(() =>\n\t\t\t\tthis.db.drop({\n\t\t\t\t\tjustFreePages: false\n\t\t\t\t}), options.overlappingSync ? 0x10002 : 2);\n\t\t}\n\t\tclear(callback) {\n\t\t\tif (typeof callback == 'function')\n\t\t\t\treturn this.clearAsync(callback);\n\t\t\tconsole.warn('clear() is deprecated, use clearAsync or clearSync instead');\n\t\t\tthis.clearSync();\n\t\t}\n\t\tclearSync() {\n\t\t\tif (this.encoder) {\n\t\t\t\tif (this.encoder.clearSharedData)\n\t\t\t\t\tthis.encoder.clearSharedData()\n\t\t\t\telse if (this.encoder.structures)\n\t\t\t\t\tthis.encoder.structures = []\n\t\t\t}\n\t\t\tthis.transactionSync(() =>\n\t\t\t\tthis.db.drop({\n\t\t\t\t\tjustFreePages: true\n\t\t\t\t}), options.overlappingSync ? 0x10002 : 2);\n\t\t}\n\t\treaderCheck() {\n\t\t\treturn env.readerCheck();\n\t\t}\n\t\treaderList() {\n\t\t\treturn env.readerList().join('');\n\t\t}\n\t\tsetupSharedStructures() {\n\t\t\tconst getStructures = () => {\n\t\t\t\tlet lastVersion; // because we are doing a read here, we may need to save and restore the lastVersion from the last read\n\t\t\t\tif (this.useVersions)\n\t\t\t\t\tlastVersion = getLastVersion();\n\t\t\t\tlet buffer = this.getBinary(this.sharedStructuresKey);\n\t\t\t\tif (this.useVersions)\n\t\t\t\t\tsetLastVersion(lastVersion);\n\t\t\t\treturn buffer && this.decoder.decode(buffer);\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tsaveStructures: (structures, isCompatible) => {\n\t\t\t\t\treturn this.transactionSync(() => {\n\t\t\t\t\t\tlet existingStructuresBuffer = this.getBinary(this.sharedStructuresKey);\n\t\t\t\t\t\tlet existingStructures = existingStructuresBuffer && this.decoder.decode(existingStructuresBuffer);\n\t\t\t\t\t\tif (typeof isCompatible == 'function' ?\n\t\t\t\t\t\t\t\t!isCompatible(existingStructures) :\n\t\t\t\t\t\t\t\t(existingStructures && existingStructures.length != isCompatible))\n\t\t\t\t\t\t\treturn false; // it changed, we need to indicate that we couldn't update\n\t\t\t\t\t\tthis.put(this.sharedStructuresKey, structures);\n\t\t\t\t\t}, options.overlappingSync ? 0x10000 : 0);\n\t\t\t\t},\n\t\t\t\tgetStructures,\n\t\t\t\tcopyBuffers: true, // need to copy any embedded buffers that are found since we use unsafe buffers\n\t\t\t};\n\t\t}\n\t}\n\t// if caching class overrides putSync, don't want to double call the caching code\n\tconst putSync = LMDBStore.prototype.putSync;\n\tconst removeSync = LMDBStore.prototype.removeSync;\n\taddReadMethods(LMDBStore, { env, maxKeySize, keyBytes, keyBytesView, getLastVersion });\n\tif (!options.readOnly)\n\t\taddWriteMethods(LMDBStore, { env, maxKeySize, fixedBuffer: keyBytes,\n\t\t\tresetReadTxn: LMDBStore.prototype.resetReadTxn, ...options });\n\tLMDBStore.prototype.supports = {\n\t\tpermanence: true,\n\t\tbufferKeys: true,\n\t\tpromises: true,\n\t\tsnapshots: true,\n\t\tclear: true,\n\t\tstatus: true,\n\t\tdeferredOpen: true,\n\t\topenCallback: true,\t\n\t};\n\tlet Class = options.cache ? CachingStore(LMDBStore, env) : LMDBStore;\n\treturn options.asClass ? Class : new Class(options.name || null, options);\n}\nexport function openAsClass(path, options) {\n\tif (typeof path == 'object' && !options) {\n\t\toptions = path;\n\t\tpath = options.path;\n\t}\n\toptions = options || {};\n\toptions.asClass = true;\n\treturn open(path, options);\n}\n\nexport function getLastVersion() {\n\treturn keyBytesView.getFloat64(16, true);\n}\nexport function setLastVersion(version) {\n\treturn keyBytesView.setFloat64(16, version, true);\n}\n\nexport function getLastTxnId() {\n\treturn keyBytesView.getUint32(32, true);\n}\n\nconst KEY_BUFFER_SIZE = 4096;\nfunction allocateFixedBuffer() {\n\tkeyBytes = typeof Buffer != 'undefined' ? Buffer.allocUnsafeSlow(KEY_BUFFER_SIZE) : new Uint8Array(KEY_BUFFER_SIZE);\n\tconst keyBuffer = keyBytes.buffer;\n\tkeyBytesView = keyBytes.dataView || (keyBytes.dataView = new DataView(keyBytes.buffer, 0, KEY_BUFFER_SIZE)); // max key size is actually 4026\n\tkeyBytes.uint32 = new Uint32Array(keyBuffer, 0, KEY_BUFFER_SIZE >> 2);\n\tkeyBytes.float64 = new Float64Array(keyBuffer, 0, KEY_BUFFER_SIZE >> 3);\n\tkeyBytes.uint32.address = keyBytes.address = keyBuffer.address = getAddress(keyBytes);\n}\n\nfunction exists(path) {\n\tif (fs.existsSync)\n\t\treturn fs.existsSync(path);\n\ttry {\n\t\treturn fs.statSync(path);\n\t} catch (error) {\n\t\treturn false\n\t}\n}\n\nfunction assignConstrainedProperties(allowedProperties, target) {\n\tfor (let i = 2; i < arguments.length; i++) {\n\t\tlet source = arguments[i];\n\t\tfor (let key in source) {\n\t\t\tif (allowedProperties.includes(key))\n\t\t\t\ttarget[key] = source[key];\n\t\t}\n\t}\n\treturn target;\n}\n","export function levelup(store) {\r\n\treturn Object.assign(Object.create(store), {\r\n\t\tget(key, options, callback) {\r\n\t\t\tlet result = store.get(key);\r\n\t\t\tif (typeof options == 'function')\r\n\t\t\t\tcallback = options;\r\n\t\t\tif (callback) {\r\n\t\t\t\tif (result === undefined)\r\n\t\t\t\t\tcallback(new NotFoundError());\r\n\t\t\t\telse\r\n\t\t\t\t\tcallback(null, result);\r\n\t\t\t} else {\r\n\t\t\t\tif (result === undefined)\r\n\t\t\t\t\treturn Promise.reject(new NotFoundError());\r\n\t\t\t\telse\r\n\t\t\t\t\treturn Promise.resolve(result);\r\n\t\t\t}\r\n\t\t},\r\n\t});\r\n}\r\nclass NotFoundError extends Error {\r\n\tconstructor(message) {\r\n\t\tsuper(message);\r\n\t\tthis.name = 'NotFoundError';\r\n\t\tthis.notFound = true;\r\n\t}\r\n}","import { EventEmitter } from 'events';\r\nimport { setExternals, setNativeFunctions, Dbi } from './native.js';\r\nimport { arch, tmpdir, platform } from 'os';\r\nimport fs from 'fs';\r\nimport { Encoder as MsgpackrEncoder } from 'msgpackr';\r\nimport { WeakLRUCache } from 'weak-lru-cache';\r\nimport * as orderedBinary from 'ordered-binary';\r\n\r\n\r\norderedBinary.enableNullTermination();\r\nsetExternals({\r\n\tarch, fs, tmpdir, MsgpackrEncoder, WeakLRUCache, orderedBinary,\r\n\tEventEmitter, os: platform(), onExit(callback) {\r\n\t\tif (process.getMaxListeners() < process.listenerCount('exit') + 8)\r\n\t\t\tprocess.setMaxListeners(process.listenerCount('exit') + 8);\r\n\t\tprocess.on('exit', callback);\r\n\t},\r\n});\r\nexport { toBufferKey as keyValueToBuffer, compareKeys, compareKeys as compareKey, fromBufferKey as bufferToKeyValue } from 'ordered-binary';\r\nexport { ABORT, IF_EXISTS, asBinary } from './write.js';\r\nimport { ABORT, IF_EXISTS, asBinary } from './write.js';\r\nexport { levelup } from './level.js';\r\nimport { levelup } from './level.js';\r\nexport { clearKeptObjects } from './native.js';\r\nimport { nativeAddon } from './native.js';\r\nexport let { noop } = nativeAddon;\r\nexport { open, openAsClass, getLastVersion, allDbs } from './open.js';\r\nimport { toBufferKey as keyValueToBuffer, compareKeys as compareKey, fromBufferKey as bufferToKeyValue } from 'ordered-binary';\r\nimport { open, openAsClass, getLastVersion } from './open.js';\r\nexport const TransactionFlags = {\r\n\tABORTABLE: 1,\r\n\tSYNCHRONOUS_COMMIT: 2,\r\n\tNO_SYNC_FLUSH: 0x10000,\r\n};\r\nexport default {\r\n\topen, openAsClass, getLastVersion, compareKey, keyValueToBuffer, bufferToKeyValue, ABORT, IF_EXISTS, asBinary, levelup, TransactionFlags\r\n};\r\n","import { createRequire } from 'module';\nimport { setRequire } from './open.js';\nimport { nativeAddon, setNativeFunctions } from './native.js';\nexport { nativeAddon } from './native.js'\nimport { setFlagsFromString } from 'v8';\nsetRequire(createRequire(import.meta.url));\nexport let v8AccelerationEnabled = false\n\nlet versions = process.versions;\nlet [ majorVersion, minorVersion ] = versions.node.split('.')\n\nif (versions.v8 && +majorVersion == nativeAddon.version.nodeCompiledVersion) {\n\tlet v8Funcs = {};\n\tlet fastApiCalls = (majorVersion == 17 || majorVersion == 18 || majorVersion == 16 && minorVersion > 6) && !process.env.DISABLE_TURBO_CALLS;\n\tif (fastApiCalls)\n\t\tsetFlagsFromString('--turbo-fast-api-calls')\n\tnativeAddon.enableDirectV8(v8Funcs, fastApiCalls);\n\tObject.assign(nativeAddon, v8Funcs);\n\tv8AccelerationEnabled = true;\n} else if (majorVersion == 14) {\n\t// node v14 only has ABI compatibility with node v16 for zero-arg clearKeptObjects\n\tlet v8Funcs = {};\n\tnativeAddon.enableDirectV8(v8Funcs, false);\n\tnativeAddon.clearKeptObjects = v8Funcs.clearKeptObjects;\n}\nsetNativeFunctions(nativeAddon);\n\nexport * from './index.js'\nexport { default } from './index.js'\n"],"names":["clearKeptObjects","pathModule","dirname","fileURLToPath","loadNAPI","Uint8ArraySlice","position","doPosition","getLastVersion","getLastTxnId","path","orderedBinary","arch","fs","tmpdir","MsgpackrEncoder","WeakLRUCache","EventEmitter","platform","compareKey","keyValueToBuffer","bufferToKeyValue","createRequire","v8AccelerationEnabled","setFlagsFromString"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGU,IAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAyBA,iCAAgB,CAAC,KAAC,YAAY,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAS,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,CAAuB,WAAW,CAAC,CAAe,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAmB,iBAAiB,CAAC,CAAoB,eAAe,CAAC,CAAC,SAAS;AACjb;AACA,IAAI,GAAGC,8BAAU,CAAC;AAClB,IAAI,OAAO,GAAG,CAAC,OAAO,SAAS,IAAI,QAAQ,GAAG,SAAS;AACvD,CAACC,kBAAO,CAACC,iBAAa,CAAC,oMAAe,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACrD,IAAC,WAAW,GAAGC,4BAAQ,CAAC,OAAO,EAAE;AAC3C;AACA,IAAI,OAAO,CAAC,KAAK,EAAE;AACnB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AACrD,CAAC,IAAI,OAAO,GAAG,WAAW,CAAC;AAC3B,EAAE,WAAW,EAAE;AACf,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;AACnC,GAAG,OAAO,EAAE,OAAO,CAAC,GAAG;AACvB,GAAG,GAAG,EAAE,WAAW,CAAC,cAAc;AAClC,GAAG;AACH,EAAE,OAAO,EAAE;AACX,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;AACtB,GAAG,OAAO,EAAE,OAAO,CAAC,GAAG;AACvB,GAAG,GAAG,EAAE,WAAW,CAAC,UAAU;AAC9B,GAAG;AACH,EAAE,QAAQ,EAAE;AACZ,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;AAC1E,GAAG,OAAO,EAAE,OAAO,CAAC,GAAG;AACvB,GAAG,GAAG,EAAE,WAAW,CAAC,WAAW;AAC/B,GAAG;AACH,EAAE,KAAK,EAAE;AACT,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;AACnC,GAAG,OAAO,EAAE,OAAO,CAAC,GAAG;AACvB,GAAG,GAAG,EAAE,WAAW,CAAC,QAAQ;AAC5B,GAAG;AACH,EAAE,QAAQ,EAAE;AACZ,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;AACtB,GAAG,OAAO,EAAE,OAAO,CAAC,IAAI;AACxB,GAAG,GAAG,EAAE,WAAW,CAAC,WAAW;AAC/B,GAAG;AACH,EAAE,CAAC,CAAC;AACJ,CAAC,KAAK,IAAI,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE;AAClC,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AACjD,EAAE;AACF,CAAC;AACD,kBAAkB,CAAC,WAAW,CAAC,CAAC;AAChC;AACO,SAAS,kBAAkB,CAAC,SAAS,EAAE;AAC9C,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;AACrB,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;AACrB,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;AACrB,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;AACrC,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;AAEnC,CAACJ,wBAAgB,GAAG,SAAS,CAAC,gBAAgB,IAAI,WAAW,EAAE,CAAC;AAChE,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;AAErC,CAAC,eAAe,GAAG,SAAS,CAAC,eAAe,CAAC;AAC7C,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;AACvC,CAAC,eAAe,GAAG,SAAS,CAAC,eAAe,CAAC;AAC7C,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;AAC/B,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;AAC7B,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;AAC/B,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;AAC/B,CAAC,eAAe,GAAG,SAAS,CAAC,eAAe,CAAC;AAE7C,CAAC,iBAAiB,GAAG,SAAS,CAAC,iBAAiB,CAAC;AAEjD,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;AACzB,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;AAC/B,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAC3B,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;AACjC,CAAC,IAAI,SAAS,CAAC,MAAM;AACrB,QAAQ,MAAM,GAAG,SAAS,CAAC,OAAM;AACjC,CAAC;AACM,SAAS,YAAY,CAAC,SAAS,EAAE;AACxC,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;AACvB,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;AACnB,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;AACvC,CAAC,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;AACzC,CAAC,eAAe,GAAG,SAAS,CAAC,eAAe,CAAC;AAC7C,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;AACvC,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAC3B,GAAG,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;AAErB;;ACnFO,SAAS,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;AACjD,EAAE,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE;AAC/B,IAAI,OAAO,OAAO;AAClB,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACrC,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7B,GAAG;AACH,EAAE,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC3B;;ACLA,IAAI,iBAAiB,CAAC;AACtB;AACA,MAAM,iBAAiB,GAAG,SAAS,CAAC;AACpC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AACtC,MAAM,aAAa,GAAG,SAAS,CAAC;AAChC,MAAM,aAAa,GAAG,UAAU,CAAC;AACjC,MAAM,WAAW,GAAG,UAAU,CAAC;AAC/B,MAAM,UAAU,GAAG,UAAU,CAAC;AACvB,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAC1C,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,MAAM,OAAO,GAAG,CAAC,CAAC;AAClB,MAAM,6BAA6B,GAAG,KAAK,CAAC;AAC5C,MAAM,0BAA0B,GAAG,KAAK,CAAC;AACzC;AACA,MAAM,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACnD,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACjD,oBAAoB,CAAC,MAAM,GAAG,IAAI,CAAC;AACnC,iBAAiB,CAAC,MAAM,GAAG,IAAI,CAAC;AAChC,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAClC,MAAC,KAAK,GAAG,GAAG;AACZ,MAAC,SAAS,GAAG,uBAAuB;AAChD,MAAM,cAAc,GAAG,EAAE,CAAC;AAC1B,MAAM,sBAAsB,GAAG,OAAO,IAAI,IAAI,WAAW,GAAG,WAAW,GAAG,iBAAiB,CAAC;AAC5F,MAAM,SAAS,GAAG,OAAO,MAAM,IAAI,WAAW,GAAG,SAAS,MAAM,EAAE,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,UAAU,CAAC;AAC9G,MAAM,SAAS,GAAG,OAAO,YAAY,IAAI,WAAW,GAAG,YAAY,GAAG,UAAU,CAAC;AACjF;AACA,MAAM,iBAAiB,GAAG,OAAO,CAAC;AAE3B,SAAS,eAAe,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU;AACpG,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,EAAE;AAC5H;AACA,CAAC,IAAI,YAAY,CAAC;AAClB,CAAC,SAAS,yBAAyB,GAAG;AACtC;AACA;AACA;AACA,EAAE,IAAI,MAAM,GAAG,IAAI,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;AAC7D,EAAE,YAAY,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;AACvC,EAAE,IAAI,MAAM,GAAG,YAAY,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,iBAAiB,IAAI,CAAC,CAAC,CAAC;AACxF,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAChB,EAAE,YAAY,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,iBAAiB,IAAI,CAAC,CAAC,CAAC;AAC7E,EAAE,MAAM,CAAC,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;AAC5C,EAAE,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;AACtD,EAAE,YAAY,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC5B,EAAE,OAAO,YAAY,CAAC;AACtB,EAAE;AACF,CAAC,IAAI,kBAAkB,GAAG,CAAC,iBAAiB,GAAG,UAAU,GAAG,EAAE,KAAK,CAAC,CAAC;AACrE,CAAC,IAAI,qBAAqB,GAAG,CAAC,CAAC;AAC/B,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC;AACtB,CAAC,IAAI,QAAQ,GAAG,IAAI,CAAC;AACrB,CAAC,IAAI,SAAS,CAAC;AACf,CAAC,IAAI,8BAA8B,CAAC;AACpC,CAAC,IAAI,gBAAgB,GAAG,EAAE,CAAC;AAC3B,CAAC,IAAI,aAAa,EAAE,YAAY,EAAE,cAAc,GAAG,EAAE,CAAC;AACtD,CAAC,WAAW,GAAG,WAAW,IAAI,CAAC,CAAC;AAChC,CAAC,iBAAiB,GAAG,iBAAiB,KAAK,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;AAChE,CAAC,IAAI,cAAc,CAAC;AACpB,CAAC,IAAI,oBAAoB,GAAG,EAAE,CAAC;AAC/B,CAAC,IAAI,qBAAqB,GAAG,EAAE,CAAC;AAChC,CAAC,IAAI,sBAAsB,CAAC;AAC5B,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC;AACpB,CAAC,IAAI,gBAAgB,CAAC;AACtB,CAAC,IAAI,eAAe,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,CAAC;AACnG,CAAC,iBAAiB,GAAG,iBAAiB,IAAI,CAAC,CAAC;AAC5C,CAAC,mBAAmB,GAAG,mBAAmB,IAAI,IAAI,CAAC;AACnD,CAAC,aAAa,GAAG,aAAa,IAAI,GAAG,CAAC;AACtC;AACA,CAAC,yBAAyB,EAAE,CAAC;AAC7B,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,aAAa,GAAG,aAAa,GAAG,WAAW,CAAC;AACtE,CAAC,IAAI,aAAa,EAAE,oBAAoB,EAAE,cAAc,GAAG;AAC3D,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACrG,CAAC,IAAI,qBAAqB,GAAG;AAC7B,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAChG,CAAC,IAAI,mBAAmB,GAAG,cAAc,CAAC;AAC1C,CAAC,IAAI,sBAAsB,GAAG,qBAAqB,CAAC;AACpD,CAAC,IAAI,SAAS,EAAE,WAAW,CAAC;AAC5B,CAAC,SAAS,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE;AAC1E,EAAE,IAAI,WAAW,CAAC;AAClB,EAAE,IAAI,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC;AACrC,EAAE,IAAI,SAAS,EAAE,gBAAgB,CAAC;AAClC,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE;AACjB;AACA,GAAG,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC3B,GAAG,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAEpF,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,qBAAqB,CAAC;AACnD,IAAI,WAAW,GAAG,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAC/C,QAAQ,IAAI,OAAO,EAAE;AACrB,IAAI,IAAI,OAAO,CAAC,WAAW;AAC3B,KAAK,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,iBAAiB,IAAI,QAAQ,GAAG,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC;AACjG,SAAS;AACT,KAAK,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzC,KAAK,IAAI,OAAO,WAAW,IAAI,QAAQ;AACvC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7C,KAAK;AACL,IAAI,MAAM,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE;AACxC,IAAI,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,IAAI,MAAM,IAAI,KAAK,YAAY,UAAU;AACzC,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB;AACA,IAAI,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,KAAK,GAAG,IAAI,IAAI,OAAO,KAAK,CAAC,EAAE,2BAA2B,CAAC,CAAC;AACtH,GAAG,SAAS,GAAG,CAAC,QAAQ,IAAI,KAAK,CAAC,WAAW,IAAI,IAAI,GAAG,KAAK,CAAC;AAC9D,GAAG,gBAAgB,GAAG,WAAW,CAAC,KAAK,CAAC;AACxC,GAAG,IAAI,gBAAgB,GAAG,CAAC,CAAC;AAC5B,IAAI,SAAS,GAAG,WAAW,CAAC,GAAG,GAAG,gBAAgB,CAAC;AACnD;AACA,IAAI,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC;AACnC,GAAG,IAAI,KAAK,CAAC,OAAO,IAAI,SAAS,GAAG,UAAU;AAC9C,IAAI,MAAM,IAAI,KAAK,CAAC,6CAA6C,GAAG,UAAU,GAAG,qCAAqC,CAAC,CAAC;AACxH,GAAG;AACH,GAAG,SAAS,GAAG,CAAC,CAAC;AACjB,EAAE,IAAI,QAAQ,EAAE;AAChB,GAAG,WAAW,GAAG,WAAW,CAAC;AAC7B,GAAG,QAAQ,GAAG,CAAC,CAAC;AAChB,GAAG,MAAM;AACT,GAAG,IAAI,iBAAiB,IAAI,CAAC,sBAAsB,IAAI,UAAU,IAAI,CAAC,EAAE;AACxE,IAAI,sBAAsB,GAAG,SAAS,CAAC,MAAM;AAC7C,KAAK,IAAI;AACT,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,qBAAqB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACpE,OAAO,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;AAClC,OAAO;AACP,MAAM,CAAC,MAAM,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3B,MAAM;AACN,KAAK,sBAAsB,GAAG,IAAI,CAAC;AACnC,KAAK,UAAU,EAAE,CAAC;AAClB,KAAK,WAAW,EAAE,CAAC;AACnB,KAAK,IAAI,eAAe;AACxB,MAAM,eAAe,EAAE,CAAC;AACxB,KAAK,CAAC,CAAC;AACP,IAAI,aAAa,GAAG,IAAI,CAAC;AACzB,IAAI,YAAY,GAAG,IAAI,CAAC;AACxB,IAAI,eAAe,GAAG,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAClD,IAAI,qBAAqB,GAAG,CAAC,CAAC;AAC9B,IAAI,UAAU,EAAE,CAAC;AACjB,IAAI;AACJ,GAAG,WAAW,GAAG,YAAY,CAAC;AAC9B,GAAG,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;AACnC,GAAG;AACH,EAAE,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;AACjE,EAAE,IAAI,YAAY,GAAG,QAAQ,IAAI,CAAC,CAAC;AACnC;AACA;AACA,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,GAAG,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;AAC3D,GAAG;AACH,EAAE,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC;AAC1C,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE;AACjB,GAAG,IAAI,gBAAgB,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;AAC/C,GAAG,IAAI,WAAW,CAAC;AACnB,GAAG,IAAI;AACP,IAAI,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;AACrE,IAAI,IAAI,EAAE,gBAAgB,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,KAAK,EAAE;AAChE,KAAK,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC;AAC7E,IAAI,CAAC,MAAM,KAAK,EAAE;AAClB,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;AAC1C,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,YAAY;AAClC,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC,gDAAgD,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC;AAC5F,IAAI,MAAM,KAAK,CAAC;AAChB,IAAI;AACJ,GAAG,IAAI,OAAO,GAAG,WAAW,GAAG,gBAAgB,CAAC;AAChD,GAAG,IAAI,OAAO,GAAG,UAAU,EAAE;AAC7B,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;AAC1C,IAAI,MAAM,IAAI,KAAK,CAAC,gDAAgD,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC;AACzF,IAAI;AACJ,GAAG,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;AACtC,GAAG,QAAQ,GAAG,CAAC,WAAW,GAAG,EAAE,KAAK,CAAC,CAAC;AACtC,GAAG,IAAI,KAAK,GAAG,CAAC,EAAE;AAClB,IAAI,IAAI,YAAY,CAAC;AACrB,IAAI,IAAI,gBAAgB,GAAG,CAAC,CAAC,EAAE;AAC/B;AACA,KAAK,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO;AAC7C,OAAO,WAAW,CAAC,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,gBAAgB,CAAC;AAC1E,KAAK,YAAY,GAAG,WAAW,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC;AACzD,KAAK,MAAM;AACX,KAAK,IAAI,gBAAgB,GAAG,WAAW,CAAC,MAAM,CAAC;AAC/C;AACA,KAAK,IAAI,OAAO,GAAG,CAAC,gBAAgB,CAAC,OAAO;AAC5C,OAAO,WAAW,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC;AACnC,OAAO,gBAAgB,CAAC,OAAO,IAAI,UAAU,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;AACtF,SAAS,WAAW,CAAC,UAAU,CAAC;AAChC,KAAK,IAAI,OAAO,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;AAC/C,MAAM,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,OAAO,CAAC,CAAC;AACvE,KAAK,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;AACjC,KAAK,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAC1C,KAAK;AACL,IAAI,MAAM,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;AAC9C,IAAI,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,WAAW,CAAC,SAAS,IAAI,YAAY,CAAC,EAAE;AACzF,KAAK,KAAK,IAAI,QAAQ,CAAC;AACvB,KAAK,OAAO,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;AACnD,KAAK,IAAI,CAAC,QAAQ;AAClB,MAAM,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,QAAQ,IAAI,CAAC,CAAC,EAAE,MAAM;AACpE;AACA;AACA,OAAO,IAAI,CAAC,OAAO;AACnB,QAAQ,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAChD,OAAO,CAAC,CAAC;AACT,KAAK,QAAQ,EAAE,CAAC;AAChB,KAAK;AACL,IAAI;AACJ,GAAG,IAAI,SAAS,KAAK,SAAS,EAAE;AAChC,IAAI,IAAI,SAAS,KAAK,IAAI;AAC1B,KAAK,KAAK,IAAI,IAAI,CAAC;AACnB,SAAS;AACT,KAAK,KAAK,IAAI,KAAK,CAAC;AACpB,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,SAAS,CAAC;AACrC,KAAK;AACL,IAAI;AACJ,GAAG,IAAI,OAAO,KAAK,SAAS,EAAE;AAC9B,IAAI,KAAK,IAAI,KAAK,CAAC;AACnB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;AACvC,IAAI;AACJ,GAAG;AACH,GAAG,QAAQ,EAAE,CAAC;AACd,EAAE,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAClC,EAAE,IAAI,QAAQ,EAAE;AAChB,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AACrB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;AACtC,GAAG,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,gBAAgB,IAAI,iBAAiB,GAAG,oBAAoB,CAAC;AAC1F,GAAG;AACH;AACA;AACA,EAAE,IAAI,UAAU,CAAC;AACjB,EAAE,IAAI,QAAQ,GAAG,kBAAkB,EAAE;AACrC;AACA,GAAG,IAAI,YAAY,GAAG,QAAQ,CAAC;AAC/B,GAAG,WAAW,GAAG,yBAAyB,EAAE,CAAC;AAC7C,GAAG,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;AACnC,GAAG,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC;AACrE,GAAG,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACjC,GAAG,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC;AACnC,GAAG;AACH,GAAG,UAAU,GAAG,MAAM,CAAC;AACvB,EAAE,IAAI,UAAU,GAAG,cAAc,CAAC;AAClC;AACA,EAAE,cAAc,GAAG,UAAU,CAAC,IAAI,GAAG;AACrC,GAAG,MAAM,EAAE,UAAU;AACrB,GAAG,YAAY,EAAE,QAAQ,IAAI,CAAC;AAC9B,GAAG,IAAI,EAAE,CAAC;AACV,GAAG,WAAW,EAAE,WAAW;AAC3B,GAAG,IAAI,EAAE,IAAI;AACb,GAAG,IAAI,EAAE,IAAI;AACb,GAAG,CAAC;AACJ,EAAE,IAAI,iBAAiB,GAAG,UAAU,CAAC;AACrC;AACA,EAAE,OAAO,CAAC,QAAQ,KAAK;AACvB,GAAG,IAAI,iBAAiB,EAAE;AAC1B;AACA;AACA;AACA,IAAI,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AACvC,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC;AACjC;AACA,IAAI,IAAI,eAAe,IAAI,CAAC,WAAW,EAAE;AACzC,KAAK,qBAAqB,IAAI,CAAC,IAAI,SAAS,IAAI,EAAE,CAAC,CAAC;AACpD,KAAK,IAAI,qBAAqB,GAAG,mBAAmB,EAAE;AACtD,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAChC,MAAM,eAAe,EAAE,CAAC;AACxB,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM;AACN,KAAK;AACL,IAAI;AACJ;AACA;AACA,IAAI,WAAW,GAAG,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;AAC1D;AACA,GAAG,qBAAqB,EAAE,CAAC;AAC3B,GAAG,IAAI,WAAW,GAAG,aAAa,EAAE;AACpC,IAAI,aAAa,GAAG,IAAI,CAAC;AACzB,IAAI,YAAY,GAAG,IAAI,CAAC;AACxB,IAAI,qBAAqB,CAAC,UAAU,CAAC,CAAC;AACtC,IAAI,IAAI,CAAC,YAAY,EAAE;AACvB,KAAK,YAAY,GAAG,MAAM,CAAC,OAAO,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC;AACzD,KAAK;AACL,IAAI;AACJ,GAAG,IAAI,CAAC,YAAY,IAAI,eAAe;AACvC,IAAI,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACxE,GAAG,IAAI,WAAW,GAAG,iBAAiB,EAAE;AACxC,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC1B,IAAI;AACJ,GAAG,IAAI,qBAAqB,GAAG,sBAAsB,IAAI,CAAC,eAAe,EAAE;AAC3E,IAAI,IAAI,CAAC,iBAAiB;AAC1B,KAAK,iBAAiB,GAAG,IAAI,UAAU,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxE,IAAI,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,sBAAsB,CAAC,CAAC,CAAC;AACtG,IAAI;AACJ,GAAG,IAAI,YAAY,EAAE;AACrB,IAAI,IAAI,iBAAiB;AACzB,KAAK,YAAY,EAAE,CAAC;AACpB,SAAS,IAAI,CAAC,cAAc,IAAI,iBAAiB,EAAE;AACnD,KAAK,cAAc,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,OAAO,YAAY,IAAI,WAAW,IAAI,YAAY,CAAC,MAAM,YAAY,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,YAAY,EAAE,EAAE,WAAW,CAAC,CAAC;AACpK,KAAK,MAAM,IAAI,qBAAqB,GAAG,iBAAiB;AACxD,KAAK,YAAY,EAAE,CAAC;AACpB,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,qBAAqB,GAAG,CAAC,MAAM,CAAC;AACxC,IAAI,aAAa,EAAE,CAAC;AACpB;AACA,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACpB,IAAI,UAAU,CAAC,IAAI,GAAG;AACtB,KAAK,GAAG;AACR,KAAK,KAAK;AACV,KAAK,SAAS,EAAE,WAAW,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC;AACpD,KAAK,CAAC;AACN,IAAI;AACJ,GAAG,UAAU,CAAC,WAAW,GAAG,WAAW,CAAC;AACxC,GAAG,oBAAoB,GAAG,UAAU,CAAC;AACrC;AACA,GAAG,IAAI,QAAQ,EAAE;AACjB,IAAI,IAAI,QAAQ,KAAK,SAAS;AAC9B,KAAK,SAAS,GAAG,SAAS,CAAC;AAC3B,SAAS;AACT,KAAK,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;AAC1D,KAAK,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;AAC5B,KAAK,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACrD,KAAK,OAAO;AACZ,KAAK;AACL,IAAI;AACJ,GAAG,IAAI,SAAS,KAAK,SAAS,EAAE;AAChC,IAAI,IAAI,iBAAiB,GAAG,CAAC,EAAE;AAC/B,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK;AACzC,MAAM,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC;AACnC,KAAK,OAAO,eAAe,CAAC;AAC5B,KAAK;AACL,IAAI,IAAI,aAAa,EAAE;AACvB,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI;AACzB,MAAM,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC;AACnC,KAAK,MAAM;AACX,KAAK,aAAa,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACtD,MAAM,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;AAC3D,MAAM,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC7B,MAAM,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;AACnC,MAAM,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC3B,MAAM,CAAC,CAAC;AACR,KAAK,IAAI,eAAe;AACxB,MAAM,aAAa,CAAC,OAAO,GAAG,eAAe,GAAG,YAAY,GAAG,aAAa,CAAC;AAC7E,KAAK;AACL,IAAI,OAAO,aAAa,CAAC;AACzB,IAAI;AACJ,GAAG,gBAAgB,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACvD,IAAI,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;AACzD,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC3B,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB,IAAI,CAAC,CAAC;AACN,GAAG,IAAI,eAAe;AACtB,IAAI,gBAAgB,CAAC,OAAO,GAAG,eAAe,GAAG,YAAY,GAAG,gBAAgB,CAAC;AACjF,GAAG,OAAO,gBAAgB,CAAC;AAC3B,GAAG,CAAC;AACJ,EAAE;AACF,CAAC,IAAI,uBAAuB,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAE;AAC1D,CAAC,SAAS,YAAY,GAAG;AACzB,EAAE,IAAI,cAAc,EAAE;AACtB,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;AAClC,GAAG,cAAc,GAAG,IAAI,CAAC;AACzB,GAAG;AACH,EAAE,IAAI,SAAS,GAAG,cAAc,CAAC;AACjC,EAAE,cAAc,GAAG,EAAE,CAAC;AACtB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACzB,EAAE,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,MAAM,KAAK;AAC7C,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,aAAa;AACtE,IAAI,qBAAqB,CAAC,cAAc,CAAC,CAAC;AAC1C;AACA,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;AACvB,GAAG,QAAQ,MAAM;AACjB,IAAI,KAAK,CAAC;AACV,KAAK,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAK;AACpC,MAAM,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,IAAI,YAAY,CAAC,YAAY,GAAG,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,aAAa,CAAC,EAAC;AAC7H,MAAM;AACN,IAAI,KAAK,CAAC;AACV,IAAI,MAAM;AACV,IAAI,KAAK,CAAC;AACV,KAAK,mBAAmB,EAAE,CAAC;AAC3B,IAAI,MAAM;AACV,IAAI;AACJ,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC1B,IAAI,IAAI,mBAAmB,EAAE;AAC7B,KAAK,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACxC,KAAK,mBAAmB,GAAG,IAAI,CAAC;AAChC,KAAK;AACL,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE,YAAY,GAAG,CAAC,CAAC;AACnB,EAAE;AACF,CAAC,SAAS,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE;AAC1C,EAAE,IAAI,uBAAuB;AAC7B,GAAG,uBAAuB,CAAC,IAAI,CAAC,GAAG,SAAS,EAAC;AAC7C,OAAO;AACP,GAAG,uBAAuB,GAAG,UAAS;AACtC,GAAG,gBAAgB,GAAG,UAAU,CAAC,iBAAiB,GAAG,MAAM;AAC3D,IAAI,gBAAgB,GAAG,IAAI,CAAC;AAC5B,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM;AACxB,KAAK,IAAI,SAAS,GAAG,uBAAuB,IAAI,EAAE,CAAC;AACnD,KAAK,uBAAuB,GAAG,IAAI,CAAC;AACpC,KAAK,QAAQ,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;AACzC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM;AACrB,OAAO,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE;AAChD,QAAQ,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;AACvB,OAAO,OAAO,EAAE,CAAC;AACjB,OAAO,CAAC,CAAC;AACT,MAAM,CAAC,CAAC;AACR,KAAK,CAAC,CAAC;AACP,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;AAClB,GAAG;AACH,EAAE;AACF,CAAC,SAAS,aAAa,GAAG;AAC1B,EAAE,IAAI,gBAAgB,EAAE;AACxB,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC;AAClC,GAAG,iBAAiB,EAAE,CAAC;AACvB,GAAG;AACH,EAAE;AACF;AACA,CAAC,SAAS,qBAAqB,CAAC,UAAU,EAAE;AAC5C,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC,EAAE;AACpC,GAAG,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC;AAC7B,GAAG,IAAI,aAAa,EAAE;AACtB,IAAI,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC;AACvC;AACA,IAAI;AACJ;AACA,IAAI,aAAa,GAAG,UAAU,CAAC;AAC/B,GAAG;AACH,EAAE;AACF,CAAC,IAAI,QAAQ,GAAG,aAAa,GAAG,UAAU,CAAC;AAC3C,CAAC,SAAS,aAAa,CAAC,KAAK,EAAE;AAC/B;AACA,EAAE,IAAI,iBAAiB,CAAC;AACxB,EAAE,OAAO,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC;AAC1F,MAAM,SAAS,EAAE;AACjB,GAAG,IAAI,mBAAmB,CAAC,SAAS,EAAE;AACtC,IAAI,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;AACzD,IAAI,mBAAmB,CAAC,SAAS,GAAG,IAAI,CAAC;AACzC,IAAI;AACJ,GAAG,qBAAqB,EAAE,CAAC;AAC3B,GAAG,IAAI,mBAAmB,CAAC,IAAI,KAAK,OAAO,EAAE;AAC7C,IAAI,IAAI,mBAAmB,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE;AAC/E;AACA,KAAK,sBAAsB,CAAC,IAAI,GAAG,mBAAmB,GAAG,mBAAmB,CAAC,IAAI,CAAC;AAClF,KAAK,SAAS;AACd,KAAK;AACL,IAAI,mBAAmB,CAAC,MAAM,GAAG,IAAI,CAAC;AACtC,IAAI;AACJ,GAAG,mBAAmB,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1C,GAAG,mBAAmB,CAAC,IAAI,GAAG,iBAAiB,CAAC;AAChD,GAAG,sBAAsB,GAAG,mBAAmB,CAAC;AAChD,GAAG,mBAAmB,GAAG,mBAAmB,CAAC,IAAI,CAAC;AAClD,GAAG;AACH,EAAE,OAAO,aAAa;AACtB,IAAI,iBAAiB,GAAG,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,EAAE;AACtF,GAAG,IAAI,iBAAiB,GAAG,UAAU;AACrC,IAAI,YAAY,EAAE,CAAC;AACnB;AACA,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;AACzB,GAAG;AACH,EAAE;AACF;AACA,CAAC,SAAS,aAAa,CAAC,KAAK,EAAE;AAC/B,EAAE,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;AACpE,EAAE,IAAI,KAAK;AACX,GAAG,YAAY,EAAE,CAAC;AAClB;AACA,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;AAChC,EAAE,GAAG;AACL,GAAG,IAAI,qBAAqB,CAAC,IAAI,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE;AACzE,IAAI,IAAI,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC;AACrD,IAAI,IAAI,qBAAqB,CAAC,IAAI,GAAG,gBAAgB,IAAI,CAAC,OAAO,CAAC,aAAa;AAC/E,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;AACpB;AACA,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AACnB,IAAI;AACJ,GAAG,OAAO,CAAC,qBAAqB,GAAG,qBAAqB,CAAC,IAAI,KAAK,qBAAqB,IAAI,aAAa,CAAC;AACzG,EAAE,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC;AACxC,EAAE;AACF,CAAC,IAAI,mBAAmB,CAAC;AACzB,CAAC,SAAS,YAAY,GAAG;AACzB,EAAE,WAAW,EAAE,CAAC;AAChB,EAAE,IAAI,CAAC,mBAAmB,EAAE;AAC5B,GAAG,IAAI,cAAc,CAAC;AACtB,GAAG,mBAAmB,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,cAAc,GAAG,MAAM,CAAC,CAAC;AACnF,GAAG,mBAAmB,CAAC,MAAM,GAAG,cAAc,CAAC;AAC/C,GAAG;AACH,EAAE,GAAG;AACL,GAAG,IAAI,qBAAqB,CAAC,IAAI,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE;AACxE,IAAe,qBAAqB,CAAC,IAAI,GAAG,IAAI;AAChD,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;AACzE,IAAI,KAAK,CAAC,WAAW,GAAG,mBAAmB,CAAC;AAC5C,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7C,IAAI;AACJ,GAAG,OAAO,CAAC,qBAAqB,GAAG,qBAAqB,CAAC,IAAI,KAAK,qBAAqB,IAAI,aAAa,CAAC;AACzG,EAAE,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC;AACxC,EAAE;AACF,CAAC,SAAS,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE;AACxD,EAAE,IAAI,UAAU,EAAE;AAClB;AACA;AACA;AACA,GAAG,IAAI,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAC1C,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC;AACpC,GAAG,OAAO,WAAW,CAAC;AACtB;AACA,GAAG;AACH;AACA;AACA,GAAG,OAAO,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;AACtD,EAAE;AACF,CAAC,SAAS,WAAW,CAAC,KAAK,EAAE;AAC7B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC/D,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAC;AAC9F,GAAG;AACH,EAAE;AACF,CAAC,eAAe,mBAAmB,GAAG;AACtC,EAAE,GAAG,CAAC,QAAQ,GAAG,QAAQ,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC5C;AACA,EAAE,IAAI,QAAQ,CAAC;AACf,EAAE,IAAI,YAAY,CAAC;AACnB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC3D,GAAG,YAAY,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACtC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,IAAI,IAAI,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAC1C,IAAI,IAAI,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC;AAC1C,IAAI,IAAI,OAAO,EAAE;AACjB,KAAK,IAAI,QAAQ,EAAE;AACnB;AACA,MAAM,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAClC,MAAM,QAAQ,GAAG,IAAI,CAAC;AACtB,MAAM;AACN,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrB,KAAK,IAAI,SAAS,GAAG,QAAQ,CAAC;AAC9B,KAAK,GAAG,CAAC,QAAQ,GAAG,QAAQ,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC/C,KAAK,IAAI;AACT,MAAM,IAAI,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAC;AAC9C,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE;AACjC,OAAO,MAAM,MAAM,CAAC;AACpB,OAAO;AACP,MAAM,IAAI,MAAM,KAAK,KAAK;AAC1B,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACtB;AACA,OAAO,GAAG,CAAC,SAAS,EAAE,CAAC;AACvB,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;AAC/B,MAAM,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAC/B,MAAM,CAAC,MAAM,KAAK,EAAE;AACpB,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;AAC/B,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC;AACrB,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACzB,MAAM;AACN,KAAK,MAAM;AACX,KAAK,IAAI;AACT,MAAM,IAAI,MAAM,GAAG,eAAe,EAAE,CAAC;AACrC,MAAM,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAC/B,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE;AACjC,OAAO,IAAI,CAAC,QAAQ;AACpB,QAAQ,QAAQ,GAAG,EAAE,CAAC;AACtB,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC7C,OAAO;AACP,MAAM,CAAC,MAAM,KAAK,EAAE;AACpB,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACzB,MAAM;AACN,KAAK;AACL,IAAI;AACJ,GAAG;AACH,EAAE,gBAAgB,GAAG,EAAE,CAAC;AACxB,EAAE,IAAI,QAAQ,EAAE;AAChB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/B,GAAG;AACH,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;AACtB,EAAE,SAAS,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE;AAC9B,GAAG,CAAC,YAAY,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;AAClE,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC;AACpC,GAAG;AACH,EAAE;AACF,CAAC,SAAS,WAAW,GAAG;AACxB,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5D,EAAE,IAAI,WAAW,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACzF,EAAE,cAAc,CAAC,YAAY,IAAI,CAAC,CAAC;AACnC,EAAE,IAAI,WAAW,GAAG,iBAAiB,EAAE;AACvC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACzB,GAAG;AACH,EAAE;AACF,CAAC,SAAS,aAAa,CAAC,SAAS,EAAE;AACnC;AACA;AACA,EAAE,IAAI,QAAQ,CAAC,QAAQ,GAAG,CAAC;AAC3B,GAAG,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;AAC1B,EAAE,GAAG,CAAC,QAAQ,GAAG,QAAQ,GAAG,SAAS,IAAI,IAAI,CAAC;AAC9C,EAAE;AACF,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;AACpC,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE;AAC/C,GAAG,IAAI,QAAQ,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,GAAG,OAAO,gBAAgB,CAAC;AAC5D,GAAG,IAAI,IAAI,IAAI,QAAQ,EAAE;AACzB,IAAI,IAAI,gBAAgB,CAAC,WAAW;AACpC,KAAK,KAAK,IAAI,IAAI,CAAC;AACnB,IAAI,IAAI,gBAAgB,CAAC,SAAS;AAClC,KAAK,KAAK,IAAI,IAAI,CAAC;AACnB,IAAI,IAAI,gBAAgB,CAAC,MAAM;AAC/B,KAAK,KAAK,IAAI,OAAO,CAAC;AACtB,IAAI,IAAI,gBAAgB,CAAC,SAAS,IAAI,SAAS;AAC/C,KAAK,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC;AAC7C,IAAI,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAChD,IAAI,IAAI,OAAO,SAAS,IAAI,UAAU;AACtC,KAAK,QAAQ,GAAG,SAAS,CAAC;AAC1B,IAAI,MAAM,IAAI,IAAI,IAAI,UAAU,EAAE;AAClC,IAAI,QAAQ,GAAG,gBAAgB,CAAC;AAChC,IAAI;AACJ,GAAG,OAAO,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,GAAG,gBAAgB,IAAI,CAAC,GAAG,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;AAChI,GAAG;AACH,EAAE,MAAM,CAAC,GAAG,EAAE,gBAAgB,EAAE,QAAQ,EAAE;AAC1C,GAAG,IAAI,KAAK,GAAG,EAAE,CAAC;AAClB,GAAG,IAAI,SAAS,EAAE,KAAK,CAAC;AACxB,GAAG,IAAI,gBAAgB,KAAK,SAAS,EAAE;AACvC,IAAI,IAAI,OAAO,gBAAgB,IAAI,UAAU;AAC7C,KAAK,QAAQ,GAAG,gBAAgB,CAAC;AACjC,SAAS,IAAI,gBAAgB,KAAK,SAAS,IAAI,CAAC,QAAQ;AACxD;AACA,KAAK,QAAQ,GAAG,gBAAgB,CAAC;AACjC,SAAS,IAAI,IAAI,CAAC,WAAW;AAC7B,KAAK,SAAS,GAAG,gBAAgB,CAAC;AAClC,SAAS;AACT,KAAK,KAAK,GAAG,EAAE,CAAC;AAChB,KAAK,KAAK,GAAG,gBAAgB,CAAC;AAC9B,KAAK;AACL,IAAI;AACJ,GAAG,OAAO,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;AACrF,GAAG;AACH,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC9B,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC9C,GAAG;AACH,EAAE,UAAU,CAAC,GAAG,EAAE,QAAQ,EAAE;AAC5B,GAAG,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC9C,GAAG;AACH,EAAE,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;AAC7C,GAAG,IAAI,CAAC,QAAQ,EAAE;AAClB,IAAI,OAAO,IAAI,KAAK,CAAC,CAAC,UAAU,EAAE,QAAQ,KAAK;AAC/C,KAAK,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AACrE,KAAK,IAAI,QAAQ;AACjB,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7B,KAAK,OAAO,OAAO,CAAC;AACpB,KAAK,CAAC,CAAC;AACP,IAAI;AACJ,GAAG,IAAI,QAAQ,EAAE;AACjB,IAAI,IAAI,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE;AAC/D,KAAK,QAAQ,EAAE,CAAC;AAChB,KAAK,OAAO,oBAAoB,CAAC;AACjC,KAAK;AACL,IAAI,OAAO,iBAAiB,CAAC;AAC7B,IAAI;AACJ,GAAG,IAAI,KAAK,GAAG,GAAG,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;AAClE,GAAG,IAAI,OAAO,EAAE,UAAU;AAC1B,IAAI,KAAK,IAAI,6BAA6B,CAAC;AAC3C,GAAG,IAAI,OAAO,EAAE,aAAa;AAC7B,IAAI,KAAK,IAAI,0BAA0B,CAAC;AACxC,GAAG,IAAI,gBAAgB,GAAG,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAC7F,GAAG,IAAI,OAAO,CAAC;AACf,GAAG,UAAU,IAAI,CAAC,CAAC;AACnB,GAAG,IAAI,UAAU,GAAG,CAAC;AACrB,IAAI,OAAO,GAAG,gBAAgB,EAAE,CAAC;AACjC,QAAQ;AACR,IAAI,eAAe,GAAG,MAAM;AAC5B,KAAK,OAAO,GAAG,gBAAgB,EAAE,CAAC;AAClC,KAAK,CAAC;AACN,IAAI,qBAAqB,GAAG,CAAC,CAAC;AAC9B,IAAI;AACJ,GAAG,IAAI;AACP,IAAI,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AACxC,KAAK,QAAQ,EAAE,CAAC;AAChB,KAAK,MAAM;AACX,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACtD,MAAM,IAAI,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;AAC3D,MAAM;AACN,KAAK;AACL,IAAI,SAAS;AACb,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,KAAK,WAAW,EAAE,CAAC;AACnB,KAAK,UAAU,IAAI,CAAC,CAAC;AACrB,KAAK,OAAO,GAAG,gBAAgB,EAAE,CAAC;AAClC,KAAK,eAAe,GAAG,IAAI,CAAC;AAC5B,KAAK,MAAM;AACX,KAAK,UAAU,IAAI,CAAC,CAAC;AACrB,KAAK,WAAW,EAAE,CAAC;AACnB,KAAK;AACL,IAAI;AACJ,GAAG,OAAO,OAAO,CAAC;AAClB,GAAG;AACH,EAAE,KAAK,CAAC,oBAAoB,EAAE;AAC9B,GAAG,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;AACrE,GAAG;AACH,EAAE,IAAI,CAAC,QAAQ,EAAE;AACjB,GAAG,OAAO,iBAAiB,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;AACnG,GAAG;AACH,EAAE,UAAU,CAAC,QAAQ,EAAE;AACvB,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE;AACrB,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe;AACpC,KAAK,IAAI,CAAC,OAAO,CAAC,eAAe,GAAE;AACnC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU;AACpC,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,GAAE;AACjC,IAAI;AACJ,GAAG,OAAO,iBAAiB,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC5F,GAAG;AACH,EAAE,aAAa,GAAG;AAClB,GAAG,WAAW,EAAE,CAAC;AACjB,GAAG;AACH;AACA,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE;AACnD,GAAG,IAAI,QAAQ;AACf,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;AAC7D;AACA,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC;AAChC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,CAAC,IAAI,oBAAoB,EAAE,eAAe,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;AAC9G,GAAG;AACH,EAAE,UAAU,CAAC,GAAG,EAAE,gBAAgB,EAAE;AACpC,GAAG,IAAI,QAAQ;AACf,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;AAC9C;AACA,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC;AAChC,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,gBAAgB,CAAC,IAAI,oBAAoB,EAAE,eAAe,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;AAC/F,GAAG;AACH,EAAE,WAAW,CAAC,QAAQ,EAAE;AACxB,GAAG,IAAI,QAAQ,EAAE;AACjB;AACA,IAAI,OAAO,QAAQ,EAAE,CAAC;AACtB,IAAI;AACJ,GAAG,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AAC1C,GAAG;AACH,EAAE,gBAAgB,CAAC,QAAQ,EAAE;AAC7B,GAAG,IAAI,WAAW;AAClB,IAAI,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;AAC7E,GAAG,IAAI,QAAQ,EAAE;AACjB,IAAI,IAAI,SAAS,GAAG,QAAQ,CAAC;AAC7B,IAAI,GAAG,CAAC,QAAQ,GAAG,QAAQ,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC9C,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACpB,IAAI,IAAI,YAAY,CAAC;AACrB,IAAI,IAAI;AACR,KAAK,OAAO,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,KAAK;AACzC,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,KAAK,KAAK;AAC1B,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACtB;AACA,OAAO,GAAG,CAAC,SAAS,EAAE,CAAC;AACvB,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;AAC/B,MAAM,OAAO,MAAM,CAAC;AACpB,MAAM,EAAE,CAAC,KAAK,KAAK;AACnB,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC;AACrB,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;AAC/B,MAAM,MAAM,KAAK,CAAC;AAClB,MAAM,CAAC,CAAC;AACR,KAAK,CAAC,MAAM,KAAK,EAAE;AACnB,KAAK,IAAI,CAAC,YAAY;AACtB,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC;AACrB,KAAK,aAAa,CAAC,SAAS,CAAC,CAAC;AAC9B,KAAK,MAAM,KAAK,CAAC;AACjB,KAAK;AACL,IAAI;AACJ,GAAG,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAChD,GAAG;AACH,EAAE,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE;AACtC,GAAG,IAAI,QAAQ,CAAC;AAChB,GAAG,IAAI,YAAY,CAAC;AACpB,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE;AAClC,IAAI,YAAY,GAAG,CAAC,OAAO,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC;AAChE,IAAI,cAAc,CAAC,SAAS,GAAG,YAAY,CAAC;AAC5C,IAAI,YAAY,CAAC,OAAO,GAAG,iBAAiB,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,GAAG,QAAQ,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;AACjG,IAAI,QAAQ,GAAG,CAAC,CAAC;AACjB,IAAI,MAAM;AACV,IAAI,YAAY,GAAG,oBAAoB,CAAC,SAAS,CAAC;AAClD,IAAI,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;AACjF,IAAI;AACJ,GAAG,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK;AACjD,IAAI,IAAI,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;AACxC,IAAI,IAAI,MAAM,KAAK,cAAc;AACjC,KAAK,MAAM,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACzC,IAAI,OAAO,MAAM,CAAC;AAClB,IAAI,CAAC,CAAC;AACN,GAAG;AACH,EAAE,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE;AACnC,GAAG,IAAI,QAAQ,EAAE;AACjB,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS;AACvC;AACA,KAAK,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AAC5C,IAAI,IAAI,MAAM,GAAG,QAAQ,EAAE,CAAC;AAC5B,IAAI,IAAI,MAAM,IAAI,KAAK,IAAI,CAAC,8BAA8B,EAAE;AAC5D,KAAK,OAAO,CAAC,IAAI,CAAC,8DAA8D,IAAI,IAAI,CAAC,KAAK,GAAG,iBAAiB,GAAG,qBAAqB,CAAC,CAAC,CAAC;AAC7I,KAAK,8BAA8B,GAAG,IAAI,CAAC;AAC3C,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,IAAI;AACJ,GAAG,IAAI,YAAY,CAAC;AACpB,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;AAChD,GAAG,QAAQ,GAAG,GAAG,CAAC,QAAQ,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7C,GAAG,IAAI;AACP,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACnC,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,KAAK;AACxC,KAAK,IAAI;AACT,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,MAAM,KAAK,KAAK;AAC1B,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACtB,WAAW;AACX,OAAO,GAAG,CAAC,SAAS,EAAE,CAAC;AACvB,OAAO,YAAY,EAAE,CAAC;AACtB,OAAO,IAAI,CAAC,KAAK,GAAG,OAAO,KAAK,eAAe;AAC/C,QAAQ,gBAAgB,GAAG,IAAI,OAAO,CAAC,OAAO,IAAI,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,EAAC;AAC3E,OAAO;AACP,MAAM,OAAO,MAAM,CAAC;AACpB,MAAM,SAAS;AACf,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;AAC1B,MAAM;AACN,KAAK,EAAE,CAAC,KAAK,KAAK;AAClB,KAAK,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE;AACxC,KAAK,aAAa,CAAC,IAAI,CAAC,CAAC;AACzB,KAAK,MAAM,KAAK,CAAC;AACjB,KAAK,CAAC,CAAC;AACP,IAAI,CAAC,MAAM,KAAK,EAAE;AAClB,IAAI,IAAI,CAAC,YAAY;AACrB,KAAK,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE;AACxC,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;AACxB,IAAI,MAAM,KAAK,CAAC;AAChB,IAAI;AACJ,GAAG;AACH,EAAE,oBAAoB,CAAC,QAAQ,EAAE;AACjC,GAAG,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC5C,GAAG;AACH;AACA,EAAE,SAAS,EAAE,SAAS,GAAG;AACzB,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE;AACjC,IAAI,IAAI,aAAa;AACrB,KAAK,OAAO,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AACxD,IAAI,IAAI,gBAAgB;AACxB,KAAK,OAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;AACvE,IAAI,OAAO,oBAAoB,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AAC9D,IAAI;AACJ,GAAG;AACH,EAAE,OAAO,EAAE;AACX;AACA,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE;AACjC,IAAI,IAAI,YAAY;AACpB,KAAK,YAAY,CAAC,YAAY,GAAG,KAAI;AACrC,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,IAAI,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AACpG,IAAI;AACJ,GAAG;AACH,EAAE,UAAU,CAAC,eAAe,EAAE,mBAAmB,EAAE;AACnD,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC;AAC3L;AACA,GAAG,IAAI,YAAY,GAAG,YAAY,IAAI,aAAa,IAAI,gBAAgB,CAAC;AACxE,GAAG,IAAI,YAAY;AACnB,IAAI,YAAY,CAAC,YAAY,GAAG,KAAI;AACpC,GAAG,IAAI,gBAAgB;AACvB,IAAI,aAAa,EAAE,CAAC;AACpB,GAAG,IAAI,gBAAgB,GAAG,gBAAgB,CAAC;AAC3C,GAAG,IAAI,YAAY,IAAI,eAAe,IAAI,YAAY;AACtD,KAAK,gBAAgB,IAAI,mBAAmB,IAAI,gBAAgB,EAAE;AAClE,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAC5K,IAAI;AACJ,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACvD,GAAG;AACH,EAAE,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE;AACtB,GAAG,IAAI,KAAK,IAAI,cAAc,EAAE;AAChC,IAAI,iBAAiB,GAAG,IAAI,CAAC;AAC7B,IAAI,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzC,IAAI,MAAM,IAAI,KAAK,IAAI,aAAa;AACpC,IAAI,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxC;AACA,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC9B,GAAG;AACH,EAAE,CAAC,CAAC;AACJ,CAAC;AACD;AACA,MAAM,KAAK,SAAS,KAAK,CAAC;AAC1B,CAAC,WAAW,CAAC,QAAQ,EAAE;AACvB,EAAE,KAAK,EAAE,CAAC;AACV,EAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC3B,EAAE;AACF,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE;AACjB,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;AACzC,EAAE;AACF,CAAC,GAAG,CAAC,GAAG,EAAE;AACV,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAClC,EAAE;AACF,CAAC,KAAK,GAAG;AACT,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,EAAE;AACF,CAAC,KAAK,CAAC,QAAQ,EAAE;AACjB,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACvC,EAAE;AACF,CAAC;AACM,SAAS,QAAQ,CAAC,MAAM,EAAE;AACjC,CAAC,OAAO;AACR,EAAE,CAAC,qBAAqB,GAAG,MAAM;AACjC,EAAE,CAAC;AACH;;AC33BA,MAAM,IAAI,GAAG,EAAE,CAAC;AAChB,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;AAC3B,CAAC,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AAC3D,CAAC;AACD;AACO,MAAM,aAAa,CAAC;AAC3B,CAAC,WAAW,CAAC,WAAW,EAAE;AAC1B,EAAE,IAAI,WAAW,EAAE;AACnB,GAAG,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACjE,GAAG;AACH,EAAE;AACF,CAAC,GAAG,CAAC,IAAI,EAAE;AACX,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC;AACpB,EAAE,IAAI,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;AACnC,EAAE,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK;AAC9B,GAAG,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC;AACjD,GAAG,OAAO;AACV,IAAI,IAAI,CAAC,cAAc,EAAE;AACzB,KAAK,IAAI,MAAM,CAAC;AAChB,KAAK,GAAG;AACR,MAAM,IAAI,cAAc,CAAC;AACzB,MAAM,IAAI,cAAc,EAAE;AAC1B,OAAO,cAAc,GAAG,cAAc,CAAC;AACvC,OAAO,cAAc,GAAG,IAAI,CAAC;AAC7B,OAAO,MAAM;AACb,OAAO,cAAc,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;AACxC,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE;AAChC,QAAQ,OAAO,cAAc,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;AAChF,QAAQ;AACR,OAAO;AACP,MAAM,IAAI,cAAc,CAAC,IAAI,KAAK,IAAI,EAAE;AACxC,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACxB,OAAO,OAAO,cAAc,CAAC;AAC7B,OAAO;AACP,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC1C,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE;AACjC,OAAO,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM;AAChC,QAAQ,MAAM,IAAI,IAAI;AACtB,SAAS,IAAI,CAAC,IAAI,EAAE;AACpB,SAAS;AACT,UAAU,KAAK,EAAE,MAAM;AACvB,UAAU,CAAC,CAAC;AACZ,OAAO;AACP,MAAM,OAAO,MAAM,IAAI,IAAI,CAAC;AAC5B,KAAK,OAAO;AACZ,MAAM,KAAK,EAAE,MAAM;AACnB,MAAM,CAAC;AACP,KAAK;AACL,IAAI,MAAM,GAAG;AACb,KAAK,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC9B,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,KAAK,OAAO,QAAQ,CAAC,KAAK,EAAE,CAAC;AAC7B,KAAK;AACL,IAAI,CAAC;AACL,GAAG,CAAC;AACJ,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG;AAC1B,EAAE,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AACxC,EAAE;AACF,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG;AACrB,EAAE,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AACxC,EAAE;AACF,CAAC,MAAM,CAAC,IAAI,EAAE;AACd,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;AAC7D,EAAE;AACF;AACA,CAAC,OAAO,CAAC,QAAQ,EAAE;AACnB,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAChD,EAAE,IAAI,MAAM,CAAC;AACb,EAAE,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,KAAK,IAAI,EAAE;AACnD,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1B,GAAG;AACH,EAAE;AACF,CAAC,MAAM,CAAC,cAAc,EAAE;AACxB,EAAE,IAAI,cAAc,GAAG,IAAI,aAAa,EAAE,CAAC;AAC3C,EAAE,cAAc,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK;AACtC,GAAG,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AACjD,GAAG,IAAI,OAAO,GAAG,IAAI,CAAC;AACtB,GAAG,IAAI,cAAc,GAAG;AACxB,IAAI,IAAI,GAAG;AACX,KAAK,IAAI,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;AAClC,KAAK,IAAI,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE;AACjC,MAAM,OAAO,GAAG,KAAK,CAAC;AACtB,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC;AACxD,MAAM,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC7B,MAAM;AACN,KAAK,OAAO,MAAM,CAAC;AACnB,KAAK;AACL,IAAI,MAAM,GAAG;AACb,KAAK,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC9B,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,KAAK,OAAO,QAAQ,CAAC,KAAK,EAAE,CAAC;AAC7B,KAAK;AACL,IAAI,CAAC;AACL,GAAG,OAAO,cAAc,CAAC;AACzB,GAAG,CAAC;AACJ,EAAE,OAAO,cAAc,CAAC;AACxB,EAAE;AACF,CAAC,IAAI,GAAG;AACR,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;AACpB,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAClC,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC9B,EAAE;AACF,CAAC,MAAM,GAAG;AACV,EAAE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AAC5C,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC;AACvB,GAAG;AACH,EAAE,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;AAC3F;AACA,EAAE;AACF,CAAC,IAAI,OAAO,GAAG;AACf,EAAE,IAAI,IAAI,CAAC,QAAQ;AACnB,GAAG,OAAO,IAAI,CAAC,QAAQ,CAAC;AACxB,EAAE,IAAI,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACjD,GAAG,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AACjC,GAAG,IAAI,KAAK,GAAG,EAAE,CAAC;AAClB,GAAG,IAAI,QAAQ,GAAG,IAAI,CAAC;AACvB,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AACjE,GAAG,SAAS,IAAI,CAAC,MAAM,EAAE;AACzB,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE;AACjC,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE;AACtB,MAAM,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,MAAM,MAAM;AACZ,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,MAAM;AACN,KAAK,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC9B,KAAK;AACL,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;AACvC,IAAI;AACJ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACzB,GAAG,CAAC,CAAC;AACL,EAAE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC1B,EAAE,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC;AACpD,EAAE;AACF,CAAC,WAAW,GAAG;AACf,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,EAAE;AACF;;AC1IA,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,KAAK;AAC/C,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACpH,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC;AAClB,CAAC,CAAC;AACF,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,KAAK,KAAK;AACzC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACtH,CAAC,CAAC;AACF,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,KAAK;AAC/C,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACxB,CAAC,OAAO,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;AAC3B,CAAC,CAAC;AACF,MAAMK,iBAAe,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;AACnD,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK;AAC9C,CAAC,OAAOA,iBAAe,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AACjD,CAAC,CAAC;AACF;AACO,SAAS,gBAAgB,CAAC,KAAK,EAAE;AACxC,EAAE,IAAI,KAAK,CAAC,QAAQ,IAAI,gBAAgB,EAAE;AAC1C,EAAE,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG;AAClC,GAAG,QAAQ,EAAE,aAAa,CAAC,QAAQ;AACnC,GAAG,OAAO,EAAE,aAAa,CAAC,OAAO;AACjC,GAAG,CAAC;AACJ,EAAE;AACF,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE;AACvE,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE;AACzC,GAAG,OAAO,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AACjE,GAAG,CAAC;AACJ,EAAE;AACF,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE;AACtE,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;AAC7F,EAAE,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;AAC7B,EAAE;AACF,CAAC,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,IAAI,QAAQ,EAAE;AACzD,EAAE,KAAK,CAAC,QAAQ,GAAG,cAAc,CAAC;AAClC,EAAE,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC;AAChC,EAAE,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,IAAI,QAAQ,EAAE;AAChE,EAAE,KAAK,CAAC,QAAQ,GAAG,cAAc,CAAC;AAClC,EAAE,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC;AAChC,EAAE,MAAM,IAAI,KAAK,CAAC,UAAU,EAAE;AAC9B,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC;AAC7C,EAAE,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;AAC3C,EAAE,MAAM;AACR,EAAE,KAAK,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;AAC1C,EAAE,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC;AACxC,EAAE;AACF,CAAC;AACD;AACG,IAAC,UAAU,CAAC,CAAS,YAAY,GAAG,EAAE,UAAU,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE,CAAC,CAAC,gBAAgB;AAC5F,IAAI,YAAY,GAAG,IAAI,CAAC;AACxB,IAAI,uBAAuB,GAAG,IAAI,CAAC;AACnC,SAAS,kBAAkB,GAAG;AAC9B,CAAC,UAAU,GAAG,OAAO,MAAM,IAAI,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,GAAG,IAAI,UAAU,CAAC,uBAAuB,CAAC,CAAC;AAE7H,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;AACpD,CAAC,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;AAC7C;AACA,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAClD,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,GAAG,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;AAClE,CAAC,UAAU,CAAC,QAAQ,GAAG,YAAY,GAAG,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;AACpH,CAAC,YAAY,GAAG,CAAC,CAAC;AAClB,CAAC;AACM,SAAS,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE;AACjE,CAAC,IAAI,YAAY,GAAG,IAAI,EAAE;AAC1B,EAAE,kBAAkB,EAAE,CAAC;AACvB,EAAE;AACF,CAAC,IAAI,IAAI,GAAG,CAAC;AACb,EAAE,YAAY,IAAI,IAAI,CAAC;AACvB,CAAC,IAAI,KAAK,GAAG,YAAY,CAAC;AAC1B,CAAC,IAAI;AACL,EAAE,YAAY,GAAG,GAAG,KAAK,SAAS,GAAG,KAAK,GAAG,CAAC;AAC9C,GAAG,QAAQ,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AACxC,EAAE,CAAC,OAAO,KAAK,EAAE;AACjB,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AAChC,EAAE,IAAI,KAAK,CAAC,IAAI,IAAI,YAAY,EAAE;AAClC,GAAG,IAAI,IAAI,GAAG,KAAK,GAAG,UAAU,EAAE;AAClC,IAAI,kBAAkB,EAAE,CAAC;AACzB,IAAI,OAAO,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AACtD,IAAI;AACJ,GAAG,MAAM,IAAI,KAAK,CAAC,qCAAqC,GAAG,UAAU,CAAC,CAAC;AACvE,GAAG;AACH,GAAG,MAAM,KAAK,CAAC;AACf,EAAE;AACF,CAAC,IAAI,MAAM,GAAG,YAAY,GAAG,KAAK,GAAG,CAAC,CAAC;AACvC,CAAC,IAAI,MAAM,GAAG,UAAU,EAAE;AAC1B,EAAE,MAAM,IAAI,KAAK,CAAC,cAAc,GAAG,MAAM,GAAG,kCAAkC,GAAG,UAAU,CAAC,CAAC;AAC7F,EAAE;AACF,CAAC,IAAI,YAAY,IAAI,IAAI,EAAE;AAC3B,EAAE,YAAY,GAAG,MAAK;AACtB,EAAE,kBAAkB,EAAE,CAAC;AACvB,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AACpD,EAAE;AACF,CAAC,IAAI,MAAM,EAAE;AACb,EAAE,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC9C,EAAE,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;AACjC,EAAE,YAAY,GAAG,CAAC,YAAY,GAAG,EAAE,IAAI,QAAQ,CAAC;AAChD,EAAE,OAAO,KAAK,GAAG,eAAe,CAAC;AACjC,EAAE,MAAM;AACR,EAAE,UAAU,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;AAC/B,EAAE,UAAU,CAAC,GAAG,GAAG,YAAY,CAAC;AAChC,EAAE,YAAY,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,QAAQ,CAAC;AAC/C,EAAE,OAAO,UAAU,CAAC;AACpB,EAAE;AACF;;ACrGA,MAAM,aAAa,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AACvD,MAAM,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;AACnD,MAAM,MAAM,GAAG,OAAO,MAAM,IAAI,WAAW,GAAG,MAAM,CAAC,eAAe,GAAG,WAAU;AACjF,IAAI,aAAa,GAAG,YAAY,CAAC;AACjC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;AAC9B,EAAE,aAAa,CAAC,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC;AACjD,EAAE,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;AACtH,CAAC;AACD,MAAM,sBAAsB,GAAG,IAAI,CAAC;AACpC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAC7B,MAAM,UAAU,GAAG,EAAE,CAAC;AAC7B;AACO,SAAS,cAAc,CAAC,SAAS,EAAE;AAC1C,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY;AACtE,CAAC,EAAE;AACH,CAAC,IAAI,OAAO,EAAE,cAAc,EAAE,YAAY,GAAG,KAAK,CAAC;AACnD,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC;AACjB,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;AAChB,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;AACpC,EAAE,SAAS,CAAC,EAAE,EAAE;AAChB,GAAG,CAAC,GAAG,CAAC,QAAQ,KAAK,cAAc,GAAG,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE;AACrE,GAAG,IAAI,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;AAClF,GAAG,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACnC,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACpC;AACA,IAAI,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/E,IAAI;AACJ,GAAG,IAAI,MAAM;AACb,IAAI,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;AAClC,GAAG,OAAO,MAAM,CAAC;AACjB,GAAG;AACH,EAAE,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE;AAC7B,GAAG,IAAI,GAAE;AACT,GAAG,IAAI,OAAO,EAAE,GAAG,EAAE,OAAO;AAC5B,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,IAAI,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACnI,QAAQ;AACR,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,cAAc,GAAG,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE;AACtE,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAClH,IAAI;AACJ,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE;AACf,IAAI,IAAI,EAAE,IAAI,CAAC,KAAK;AACpB,KAAK,OAAO;AACZ,IAAI,IAAI,EAAE,IAAI,CAAC,KAAK;AACpB,KAAK,OAAO,UAAU,CAAC;AACvB,IAAI,IAAI,EAAE,IAAI,CAAC,KAAK,wBAAwB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC;AAC/E,KAAK,MAAM,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS;AACrC,KAAK,6CAA6C;AAClD,KAAK,wCAAwC,CAAC,CAAC;AAC/C,IAAI,IAAI,EAAE,IAAI,CAAC,KAAK;AACpB,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC1D,SAAS,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE;AAC3B,KAAK,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACrD,KAAK,IAAI,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACpD,KAAK,OAAO,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnD,KAAK;AACL,KAAK,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC;AACzB,IAAI;AACJ,GAAG,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACtC,GAAG,IAAI,KAAK,GAAG,WAAW,GAAG,WAAW,CAAC,aAAa,GAAG,aAAa,CAAC;AACvE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE;AAC7B;AACA,IAAI,OAAO,IAAI,CAAC,kBAAkB;AAClC,KAAK,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9E,IAAI;AACJ,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;AAChC,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;AACpC,GAAG,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAC;AAC5B,GAAG;AACH,EAAE,YAAY,CAAC,MAAM,EAAE;AACvB,GAAG,IAAI,CAAC,MAAM;AACd,IAAI,MAAM;AACV,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;AAC1C,IAAI,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC;AACzB,IAAI,OAAO,CAAC,QAAQ,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC;AACnD,IAAI,OAAO,MAAM,CAAC;AAClB,IAAI,MAAM;AACV,IAAI,OAAO,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1D,IAAI;AACJ,GAAG;AACH,EAAE,kBAAkB,CAAC,OAAO,EAAE;AAC9B,GAAG,IAAI,KAAK,CAAC;AACb,GAAG,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACtC,GAAG,IAAI,YAAY,IAAI,IAAI,CAAC,QAAQ,GAAG,oBAAoB,EAAE;AAC7D;AACA,IAAI,IAAI,eAAc;AACtB,IAAI,IAAI;AACR,KAAK,IAAI,WAAW,EAAE;AACtB,MAAM,cAAc,GAAG,WAAW,CAAC,aAAa,CAAC;AACjD,MAAM,IAAI,UAAU,GAAG,WAAW,CAAC,UAAU,IAAI,EAAE,CAAC;AACpD,MAAM,IAAI,UAAU,GAAG,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;AACrD,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChD,MAAM,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC1E,MAAM,WAAW,CAAC,aAAa,GAAG,KAAK,CAAC;AACxC,MAAM,MAAM;AACZ,MAAM,cAAc,GAAG,aAAa,CAAC;AACrC,MAAM,eAAe,CAAC,KAAK,GAAG,aAAa,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjF,MAAM;AACN,KAAK,OAAO,EAAE,CAAC;AACf,KAAK,SAAS;AACd,KAAK,IAAI,WAAW,EAAE;AACtB,MAAM,IAAI,UAAU,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;AACjE,MAAM,WAAW,CAAC,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAC1G,MAAM,WAAW,CAAC,aAAa,GAAG,cAAc,CAAC;AACjD,MAAM,MAAM;AACZ,MAAM,eAAe,CAAC,cAAc,CAAC,CAAC;AACtC,MAAM,aAAa,GAAG,cAAc,CAAC;AACrC,MAAM;AACN,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,IAAI;AACJ;AACA,GAAG,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClD;AACA,GAAG,OAAO,EAAE,CAAC;AACb,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;AAChC,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE,kBAAkB,CAAC,QAAQ,EAAE;AAC/B,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;AACxE,GAAG,IAAI,KAAK,CAAC;AACb,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE;AACzB,IAAI,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAClE,IAAI,IAAI,UAAU,GAAG,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;AACnD,IAAI,KAAK,GAAG,IAAI,MAAM,CAAC,SAAS,GAAG,UAAU,CAAC,CAAC;AAC/C,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,EAAC;AACzB;AACA,IAAI,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACvC,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AACzE,IAAI,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;AAChC,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;AACrG,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3C,IAAI,MAAM;AACV,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,SAAS,EAAC;AACjD,IAAI,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAC1C,IAAI,eAAe,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC;AAC3C,IAAI;AACJ,GAAG,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;AACzB,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE,SAAS,CAAC,EAAE,EAAE;AAChB,GAAG,IAAI;AACP,IAAI,YAAY,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AAC5C,IAAI,OAAO,UAAU,KAAK,UAAU,CAAC,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC,CAAC;AACjH,IAAI,SAAS;AACb,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,IAAI;AACJ,GAAG;AACH,EAAE,eAAe,CAAC,EAAE,EAAE;AACtB,GAAG,IAAI,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AAC3C,GAAG,IAAI,UAAU,EAAE;AACnB,IAAI,IAAI,UAAU,CAAC,QAAQ,IAAI,QAAQ;AACvC,KAAK,OAAO,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;AAC9D,IAAI,UAAU,CAAC,GAAG,GAAG,OAAO,CAAC;AAC7B,IAAI,OAAO,CAAC,QAAQ,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC;AACnD,IAAI,OAAO,UAAU,CAAC;AACtB,IAAI;AACJ,GAAG;AACH,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE;AACnB,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE;AAC3B;AACA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAChD,IAAI,OAAO,KAAK,KAAK,KAAK,IAAI,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACpF,IAAI;AACJ,GAAG,IAAI,IAAI,CAAC,QAAQ,IAAI,QAAQ;AAChC,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AACvC,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE;AACrB;AACA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AACnC,IAAI,OAAO,KAAK,KAAK,KAAK,IAAI,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACpF,IAAI;AACJ;AACA,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AACnC,GAAG,IAAI,MAAM,EAAE;AACf,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,MAAM;AAC/B,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC/B,IAAI;AACJ,GAAG,OAAO,MAAM,CAAC;AACjB,GAAG;AACH,EAAE,QAAQ,CAAC,EAAE,EAAE;AACf,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC5B,GAAG,IAAI,KAAK,KAAK,SAAS,EAAE;AAC5B,IAAI,IAAI,IAAI,CAAC,WAAW;AACxB,KAAK,OAAO;AACZ,MAAM,KAAK;AACX,MAAM,OAAO,EAAE,cAAc,EAAE;AAC/B;AACA,MAAM,CAAC;AACP;AACA,KAAK,OAAO;AACZ,MAAM,KAAK;AACX;AACA,MAAM,CAAC;AACP,IAAI;AACJ,GAAG;AACH,EAAE,YAAY,GAAG;AACjB,GAAG,YAAY,EAAE,CAAC;AAClB,GAAG;AACH,EAAE,cAAc,GAAG;AACnB,GAAG,IAAI,OAAO,EAAE;AAChB,IAAI,OAAO,CAAC,WAAW,GAAG,KAAI;AAC9B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;AACrB,IAAI;AACJ,GAAG,cAAc,GAAG,IAAI,CAAC;AACzB,GAAG,cAAc,GAAG,IAAI,CAAC;AACzB,GAAG,OAAO,GAAG,IAAI,CAAC;AAClB,GAAG;AACH,EAAE,aAAa,GAAG;AAClB,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,cAAc;AACvC,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;AACvB,GAAG;AACH,EAAE,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE;AACjC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ;AACpB,IAAI,cAAc,GAAG,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;AAClD,GAAG,IAAI,cAAc,IAAI,IAAI,EAAE;AAC/B;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,SAAS,MAAM,cAAc,KAAK,IAAI,CAAC,CAAC;AAChF,IAAI;AACJ,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;AAC9B,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAC5B,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,cAAc,EAAE,KAAK,cAAc,CAAC;AACxF,IAAI;AACJ,QAAQ;AACR,IAAI,IAAI,cAAc,IAAI,cAAc,CAAC,qBAAqB,CAAC;AAC/D,KAAK,cAAc,GAAG,cAAc,CAAC,qBAAqB,CAAC,CAAC;AAC5D,SAAS,IAAI,IAAI,CAAC,OAAO;AACzB,KAAK,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAC1D,IAAI,IAAI,OAAO,cAAc,IAAI,QAAQ;AACzC,KAAK,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAClD,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACpF,IAAI;AACJ,GAAG;AACH,EAAE,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE;AAC1B,GAAG,IAAI,cAAc,GAAG;AACxB,IAAI,GAAG;AACP,IAAI,YAAY,EAAE,IAAI;AACtB,IAAI,CAAC;AACL,GAAG,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK;AAC5C,IAAI,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;AAC/D,GAAG,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,cAAc,CAAC,CAAC;AAC3F,GAAG;AACH,EAAE,OAAO,CAAC,OAAO,EAAE;AACnB,GAAG,IAAI,CAAC,OAAO;AACf,IAAI,OAAO,GAAG,EAAE,CAAC;AACjB,GAAG,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;AAC1B,GAAG,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACjC,GAAG;AACH,EAAE,QAAQ,CAAC,OAAO,EAAE;AACpB,GAAG,IAAI,CAAC,OAAO;AACf,IAAI,OAAO,GAAG,EAAE,CAAC;AACjB,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;AAC5B,GAAG,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;AAC3C,GAAG;AACH,EAAE,YAAY,CAAC,OAAO,EAAE;AACxB,GAAG,IAAI,CAAC,OAAO;AACf,IAAI,OAAO,GAAG,EAAE,CAAC;AACjB,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;AAC5B,GAAG,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;AAC1B,GAAG,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;AAC3C,GAAG;AACH,EAAE,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE;AAC/B,GAAG,IAAI,CAAC,OAAO;AACf,IAAI,OAAO,GAAG,EAAE,CAAC;AACjB,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AACrB,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;AAC/B,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;AAC5B,GAAG,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;AAC3C,GAAG;AACH,EAAE,QAAQ,CAAC,OAAO,EAAE;AACpB,GAAG,IAAI,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;AACtC,GAAG,IAAI,CAAC,OAAO;AACf,IAAI,OAAO,GAAG,EAAE,CAAC;AACjB,GAAG,IAAI,aAAa,GAAG,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC;AAChD,GAAG,IAAI,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;AAC1C,GAAG,IAAI,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;AAC3C,GAAG,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC7B,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AACpB,GAAG,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AACnC,GAAG,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACtC,GAAG,QAAQ,CAAC,OAAO,GAAG,MAAM;AAC5B,IAAI,IAAI,UAAU,GAAG,YAAY,GAAG,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;AAChE,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AACpC,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,IAAI,IAAI,MAAM,EAAE,aAAa,EAAE,aAAa,CAAC;AAC7C,IAAI,IAAI,GAAG,CAAC;AACZ,IAAI,IAAI,KAAK,GAAG,CAAC,aAAa,GAAG,KAAK,GAAG,CAAC,KAAK,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC;AACnE,MAAM,YAAY,GAAG,KAAK,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,UAAU,GAAG,MAAM,GAAG,CAAC,CAAC;AACnE,MAAM,OAAO,CAAC,YAAY,GAAG,MAAM,GAAG,CAAC,CAAC;AACxC,MAAM,OAAO,CAAC,cAAc,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC;AAC5C,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC;AACrB,IAAI,SAAS,WAAW,GAAG;AAC3B,KAAK,IAAI;AACT,MAAM,IAAI,MAAM;AAChB,OAAO,YAAY,EAAE,CAAC;AACtB,MAAM,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AAClC,MAAM,IAAI,QAAQ;AAClB,OAAO,QAAQ,GAAG,KAAK,CAAC;AACxB,MAAM,GAAG,GAAG,QAAQ,KAAK,cAAc,GAAG,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AACzE,MAAM,MAAM,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,eAAe,CAAC;AAC/C,MAAM,IAAI,MAAM,EAAE;AAClB,OAAO,EAAE,CAAC,eAAe,GAAG,IAAI,CAAC;AACjC,OAAO,KAAK,IAAI,MAAM,CAAC;AACvB,OAAO,MAAM;AACb,OAAO,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;AAC/B,OAAO;AACP,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;AACrC,MAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,MAAM,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC9B,OAAO,aAAa,GAAG,OAAO,CAAC;AAC/B,OAAO,GAAG,CAAC,gBAAgB,GAAG,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9D,OAAO;AACP,MAAM,CAAC,MAAM,KAAK,EAAE;AACpB,MAAM,IAAI,MAAM,EAAE;AAClB,OAAO,IAAI;AACX,QAAQ,MAAM,CAAC,KAAK,EAAE,CAAC;AACvB,QAAQ,CAAC,MAAM,KAAK,EAAE,GAAG;AACzB,OAAO;AACP,MAAM,MAAM,KAAK,CAAC;AAClB,MAAM;AACN,KAAK;AACL,IAAI,WAAW,EAAE,CAAC;AAClB,IAAI,IAAI,OAAO,CAAC,SAAS,EAAE;AAC3B,KAAK,KAAK,IAAI,MAAM,CAAC;AACrB,KAAK,IAAI,KAAK,GAAGC,UAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC1C,KAAK,IAAI,KAAK,GAAG,CAAC;AAClB,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;AACvB,KAAK,YAAY,EAAE,CAAC;AACpB,KAAK,OAAO,KAAK,CAAC;AAClB,KAAK;AACL,IAAI,SAASA,UAAQ,CAAC,MAAM,EAAE;AAC9B,KAAK,IAAI,OAAO,GAAG,UAAU,KAAK,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC1F,KAAK,IAAI,UAAU,CAAC;AACpB,KAAK,IAAI,YAAY,EAAE;AACvB,MAAM,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS;AAClE,OAAO,UAAU,GAAG,CAAC,CAAC;AACtB,WAAW;AACX,OAAO,IAAI,YAAY,CAAC;AACxB,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE;AACnC,QAAQ,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC5F,QAAQ,YAAY,CAAC,UAAU,CAAC,sBAAsB,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;AAC5E,QAAQ,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACxF,QAAQ,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,YAAY,UAAU,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,YAAY,UAAU,CAAC,EAAE;AAClI,QAAQ,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC5F,QAAQ,YAAY,CAAC,UAAU,CAAC,sBAAsB,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;AAC5E,QAAQ,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACxF,QAAQ,MAAM;AACd,QAAQ,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;AAIrF,QAAQ;AACR,OAAO;AACP,MAAM;AACN,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC9E,KAAK,OAAOC,QAAU,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AAC/E,KAAK;AACL;AACA,IAAI,SAAS,YAAY,GAAG;AAC5B,KAAK,IAAI,GAAG,CAAC,MAAM;AACnB,MAAM,OAAO;AACb,KAAK,IAAI,aAAa;AACtB,MAAM,GAAG,CAAC,gBAAgB,EAAE,CAAC;AAC7B,KAAK,IAAI,EAAE,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE;AAChD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;AACrB,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;AAClB,MAAM,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;AACxB,MAAM,MAAM;AACZ,MAAM,IAAI,EAAE,CAAC,eAAe,IAAI,GAAG,IAAI,OAAO,EAAE;AAChD,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;AACtB,OAAO,MAAM;AACb,OAAO,EAAE,CAAC,eAAe,GAAG,MAAM,CAAC;AACnC,OAAO,EAAE,CAAC,SAAS,GAAG,GAAG,CAAC;AAC1B,OAAO;AACP,MAAM;AACN,KAAK;AACL,IAAI,OAAO;AACX,KAAK,IAAI,GAAG;AACZ,MAAM,IAAI,OAAO,EAAE,QAAQ,CAAC;AAC5B,MAAM,IAAI,aAAa,KAAK,aAAa,IAAI,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE;AACrE,OAAO,WAAW,EAAE,CAAC;AACrB,OAAO,OAAO,GAAGD,UAAQ,CAAC,CAAC,CAAC,CAAC;AAC7B,OAAO;AACP,MAAM,IAAI,KAAK,KAAK,CAAC,EAAE;AACvB,OAAO,OAAO,GAAGA,UAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC1C,OAAO;AACP,OAAO,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AACxC,MAAM,IAAI,OAAO,IAAI,CAAC;AACtB,SAAS,KAAK,EAAE,IAAI,KAAK,CAAC,EAAE;AAC5B,OAAO,IAAI,KAAK,GAAG,CAAC;AACpB,QAAQ,SAAS,CAAC,KAAK,CAAC,CAAC;AACzB,OAAO,YAAY,EAAE,CAAC;AACtB,OAAO,OAAO,aAAa,CAAC;AAC5B,OAAO;AACP,MAAM,IAAI,CAAC,YAAY,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC/C,OAAO,IAAI,OAAO,GAAG,KAAK,EAAE;AAC5B,QAAQ,IAAI,OAAO,GAAG,SAAS;AAC/B,SAAS,SAAS,CAAC,OAAO,GAAG,WAAW,EAAC;AACzC,QAAQ,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnE,QAAQ;AACR,OAAO,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,OAAO,GAAG,EAAE,CAAC,CAAC;AAC9D,OAAO;AACP,MAAM,IAAI,aAAa,EAAE;AACzB,OAAO,IAAI,KAAK,CAAC;AACjB,OAAO,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAClD,OAAO,IAAI,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACtD,OAAO,IAAI,KAAK,CAAC;AACjB,OAAO,IAAI,QAAQ,EAAE;AACrB,QAAQ,KAAK,GAAG,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAClD,QAAQ,MAAM;AACd,QAAQ,KAAK,GAAG,WAAW,GAAG,WAAW,CAAC,aAAa,GAAG,aAAa,CAAC;AACxE,QAAQ,IAAI,QAAQ,GAAG,KAAK,CAAC,SAAS,EAAE;AACxC,SAAS,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACnC,SAAS,YAAY,GAAG,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC;AACnD,SAAS,IAAI;AACb,UAAU,KAAK,GAAG,KAAK,CAAC,kBAAkB,CAAC,MAAM,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC;AACjF,UAAU,SAAS;AACnB,UAAU,YAAY,GAAG,KAAK,CAAC;AAC/B,UAAU;AACV,SAAS;AACT,SAAS,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;AACjC,QAAQ;AACR,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;AAC1B,QAAQ,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACtD,QAAQ,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,QAAQ;AAC5C,QAAQ,KAAK,GAAG,KAAK,CAAC,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC;AAClF,YAAY;AACZ,QAAQ,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;AACpD,QAAQ,IAAI,KAAK,CAAC,QAAQ,IAAI,MAAM,IAAI,KAAK;AAC7C,SAAS,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACnC,QAAQ;AACR,OAAO,IAAI,eAAe;AAC1B,QAAQ,OAAO;AACf,SAAS,KAAK,EAAE;AAChB,UAAU,GAAG,EAAE,UAAU;AACzB,UAAU,KAAK;AACf,UAAU,OAAO,EAAE,cAAc,EAAE;AACnC,UAAU;AACV,SAAS,CAAC;AACV,aAAa,IAAI,YAAY;AAC7B,QAAQ,OAAO;AACf,SAAS,KAAK;AACd,SAAS,CAAC;AACV;AACA,QAAQ,OAAO;AACf,SAAS,KAAK,EAAE;AAChB,UAAU,GAAG,EAAE,UAAU;AACzB,UAAU,KAAK;AACf,UAAU;AACV,SAAS,CAAC;AACV,OAAO,MAAM,IAAI,eAAe,EAAE;AAClC,OAAO,OAAO;AACd,QAAQ,KAAK,EAAE;AACf,SAAS,GAAG,EAAE,UAAU;AACxB,SAAS,OAAO,EAAE,cAAc,EAAE;AAClC,SAAS;AACT,QAAQ,CAAC;AACT,OAAO,MAAM;AACb,OAAO,OAAO;AACd,QAAQ,KAAK,EAAE,UAAU;AACzB,QAAQ,CAAC;AACT,OAAO;AACP,MAAM;AACN,KAAK,MAAM,GAAG;AACd,MAAM,YAAY,EAAE,CAAC;AACrB,MAAM,OAAO,aAAa,CAAC;AAC3B,MAAM;AACN,KAAK,KAAK,GAAG;AACb,MAAM,YAAY,EAAE,CAAC;AACrB,MAAM,OAAO,aAAa,CAAC;AAC3B,MAAM;AACN,KAAK,CAAC;AACN,IAAI,CAAC;AACL,GAAG,OAAO,QAAQ,CAAC;AACnB,GAAG;AACH;AACA,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE;AAC1B;AACA;AACA;AACA;AACA,GAAG,IAAI,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,OAAO,CAAC,OAAO,IAAI,QAAQ,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAChH,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM;AAC7B,IAAI,IAAI,OAAO,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACzC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACjD,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5B,IAAI,CAAC,CAAC;AACN,GAAG,OAAO,OAAO,CAAC;AAClB,GAAG;AACH,EAAE,qBAAqB,CAAC,EAAE,EAAE;AAC5B,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,cAAc,GAAG,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/E,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;AACnH,GAAG,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,KAAK,EAAE;AACjC,IAAI,OAAO;AACX,IAAI;AACJ,GAAG,OAAO,IAAI,CAAC,QAAQ,CAAC;AAiBxB,GAAG;AACH,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE;AAC3B,GAAG,IAAI,CAAC,IAAI;AACZ,IAAI,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;AACzD,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACrB,IAAI,IAAI,QAAQ,EAAE;AAClB,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC;AACpB,KAAK,OAAO;AACZ,KAAK;AACL,KAAK,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC9B,IAAI;AACJ,GAAG,IAAI,OAAO,GAAG,EAAE,CAAC;AACpB,GAAG,IAAI,aAAa,CAAC;AACrB,GAAG,IAAI,YAAY,GAAG,EAAE,CAAC;AACzB,GAAG,IAAI,UAAU,CAAC;AAClB,GAAG,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;AACzB,IAAI,IAAI,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;AACzE,IAAI,IAAI,CAAC,aAAa;AACtB,KAAK,aAAa,GAAG,QAAQ,CAAC;AAC9B,IAAI,IAAI,YAAY,CAAC,UAAU,IAAI,UAAU,EAAE;AAC/C,KAAK,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAChC,KAAK,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;AAC1C,KAAK,YAAY,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AAC/C,KAAK;AACL,IAAI;AACJ,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;AAC/D,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC,KAAK,KAAK;AACtD,IAAI,IAAI,KAAK;AACb,KAAK,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;AACjE;AACA,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC;AACpB,IAAI,CAAC,CAAC;AACN,GAAG,IAAI,CAAC,QAAQ;AAChB,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,QAAQ,GAAG,OAAO,CAAC,CAAC;AACtD,GAAG;AACH,EAAE,UAAU,GAAG;AACf,GAAG,IAAI,GAAG,GAAG,cAAc,GAAG,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;AAC3D,GAAG,GAAG,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,GAAG;AACH,EAAE,KAAK,CAAC,QAAQ,EAAE;AAClB,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AAC3B,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE;AACpB,IAAI,IAAI,OAAO,EAAE;AACjB,KAAK,IAAI;AACT,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;AACtB,MAAM,CAAC,MAAM,KAAK,EAAE,EAAE;AACtB,KAAK;AACL,IAAI,OAAO,GAAG;AACd,KAAK,KAAK,GAAG;AACb,MAAM,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;AAC7D,MAAM;AACN,KAAK,CAAC;AACN,IAAI,cAAc,GAAG,IAAI,CAAC;AAC1B,IAAI;AACJ,GAAG,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AACtC,GAAG,MAAM,OAAO,GAAG,MAAM;AACzB,IAAI,IAAI,IAAI,CAAC,MAAM;AACnB,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC;AACjB;AACA,KAAK,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;AACrB,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;AAC3B,IAAI,IAAI,QAAQ;AAChB,KAAK,QAAQ,EAAE,CAAC;AAChB,KAAI;AACJ,GAAG,IAAI,UAAU;AACjB,IAAI,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpC,QAAQ;AACR,IAAI,OAAO,EAAE,CAAC;AACd,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC7B,IAAI;AACJ,GAAG;AACH,EAAE,QAAQ,GAAG;AACb,GAAG,CAAC,GAAG,CAAC,QAAQ,KAAK,cAAc,GAAG,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE;AACrE,GAAG,IAAI,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;AAChC,GAAG,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;AAC7B,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;AAC5B,GAAG,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;AACjC,GAAG,OAAO,OAAO,CAAC;AAClB,GAAG;AACH,EAAE,CAAC,CAAC;AACJ,CAAC,IAAI,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC;AACnC,CAAC,IAAI,cAAc,CAAC;AACpB,CAAC,SAAS,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE;AACxC,EAAE,IAAI,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC/B,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,GAAG,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AACrE,GAAG;AACH,EAAE,IAAI,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC/C,EAAE,OAAO,IAAI,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC9C,EAAE;AACF,CAAC,SAAS,YAAY,CAAC,KAAK,EAAE;AAC9B,EAAE,IAAI,CAAC,OAAO,EAAE;AAChB,GAAG,IAAI,OAAO,GAAG,CAAC,CAAC;AACnB,GAAG,IAAI,SAAS,CAAC;AACjB,GAAG,GAAG;AACN,IAAI,IAAI;AACR,KAAK,IAAI,WAAW,GAAG,cAAc,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC;AAChE,KAAK,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,CAAC;AACxF,KAAK,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,EAAE;AAC/B,MAAM,OAAO,GAAG,WAAW,CAAC;AAC5B,MAAM,IAAI,OAAO,CAAC,UAAU;AAC5B,OAAO,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC;AAClC,MAAM;AACN,KAAK,MAAM;AACX,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AAChD,MAAM,IAAI,CAAC,SAAS;AACpB,OAAO,SAAS,GAAG,IAAI,UAAU,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClE,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;AACjD,MAAM;AACN,MAAM,MAAM,KAAK,CAAC;AAClB,KAAK;AACL,IAAI,QAAQ,OAAO,EAAE,GAAG,GAAG,EAAE;AAC7B,GAAG;AACH;AACA;AACA,EAAE,cAAc,GAAG,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AAC/C,EAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAClC,EAAE,OAAO,OAAO,CAAC;AACjB,EAAE;AACF,CAAC,SAAS,YAAY,CAAC,SAAS,EAAE;AAClC,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE,IAAI,cAAc,EAAE;AACtB,GAAG,cAAc,GAAG,IAAI,CAAC;AACzB,GAAG,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,gBAAgB,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE;AAC/D,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;AAC9B,IAAI,cAAc,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;AAC1C,IAAI,OAAO,GAAG,IAAI,CAAC;AACnB,IAAI;AACJ,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC9B,GAAG;AACH,EAAE;AACF,CAAC;AACM,SAAS,kBAAkB,CAAC,IAAI,EAAE;AACzC,CAAC,IAAI,KAAK,GAAG,OAAO,MAAM,IAAI,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AACtF,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;AACxB,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7F,CAAC,OAAO,KAAK,CAAC;AACd,CAAC;AACD;AACA,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,WAAW;AAChC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AACjB,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE;AAC5C,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AACf,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACrB,EAAE;AACF;;ACnpBA,IAAIE,gBAAc,EAAEC,cAAY,CAAC;AACjC,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC;AAC1B,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK;AAC5C,CAAC,IAAI,gBAAe;AACpB,CAAC,OAAO,cAAc,KAAK,CAAC;AAC5B,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE;AAC9B,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACzB,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE;AAC3B,GAAG,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC;AAC7B,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK;AACrD,IAAI,GAAG;AACP,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC1B,KAAK,IAAI,KAAK,GAAG,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC;AACpC,KAAK,IAAI,KAAK,EAAE;AAChB,MAAM,IAAI,IAAI,CAAC,IAAI,GAAG,gBAAgB;AACtC,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC,WAAW;AACX,OAAO,IAAI,kBAAkB,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;AACrD,OAAO,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAC/B,OAAO,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,OAAO,IAAI,KAAK,EAAE;AAClB,QAAQ,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AAC5B,QAAQ,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,GAAG,CAAC,CAAC,CAAC;AAClD,QAAQ;AACR,OAAO;AACP,MAAM;AACN,KAAK,QAAQ,IAAI,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,IAAI,CAAC,CAAC;AACN,GAAG;AACH,EAAE,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC;AAC3B,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,iBAAiB;AACrC,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAGT,wBAAgB,CAAC;AACrD,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/C,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS;AAC7B,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;AAC/B,EAAE;AACF,CAAC,IAAI,SAAS,GAAG;AACjB,EAAE,OAAO,IAAI;AACb,EAAE;AACF,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE;AACpB,EAAE,IAAI,KAAK,CAAC;AACZ,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AAC5B,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClC,GAAG,IAAI,KAAK,EAAE;AACd,IAAI,IAAI,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC;AAClC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACrB,KAAK,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;AACxD,KAAK,IAAI,KAAK,KAAK,UAAU;AAC7B,MAAM,OAAO,WAAW,CAAC;AACzB,KAAK;AACL,KAAK,KAAK,GAAG,WAAW,CAAC;AACzB,IAAI;AACJ,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC1B,GAAG,MAAM;AACT,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnC,GAAG,IAAI,KAAK,KAAK,SAAS,EAAE;AAC5B,IAAI,OAAO,KAAK,CAAC;AACjB,IAAI;AACJ,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACzB,GAAG;AACH,EAAE,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,SAAS,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;AAClF,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;AACnE,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE;AACzB,IAAI,KAAK,CAAC,OAAO,GAAGQ,gBAAc,EAAE,CAAC;AACrC,IAAI;AACJ,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS;AAC3B,IAAI,KAAK,CAAC,KAAK,GAAGC,cAAY,EAAE,CAAC;AACjC,GAAG;AACH,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE;AACzB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACjC,EAAE,IAAI,KAAK;AACX,GAAG,OAAO,KAAK,CAAC;AAChB,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC5B,EAAE,IAAI,KAAK,KAAK,SAAS;AACzB,GAAG,OAAO;AACV,EAAE,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,SAAS,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;AAClF,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;AAC/D,GAAG,MAAM;AACT,GAAG,KAAK,GAAG,EAAE,KAAK,EAAE,CAAC;AACrB,GAAG;AACH,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE;AACxB,GAAG,KAAK,CAAC,OAAO,GAAGD,gBAAc,EAAE,CAAC;AACpC,GAAG;AACH,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;AAChC,EAAE,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACpE,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ;AAC5B,GAAG,OAAO,MAAM,CAAC;AACjB,EAAE,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI;AAC3B,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACrC;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC7B,EAAE;AACF,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE;AACpC,EAAE,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AACxD,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;AAC9B,GAAG,IAAI,KAAK,IAAI,KAAK,CAAC,qBAAqB,CAAC,EAAE;AAC9C;AACA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC1B,IAAI,OAAO,MAAM,CAAC;AAClB,IAAI;AACJ;AACA,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACjF,GAAG,IAAI,eAAe;AACtB,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC5B,GAAG,IAAI,OAAO,KAAK,SAAS;AAC5B,IAAI,KAAK,CAAC,OAAO,GAAG,OAAO,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;AAC5E,GAAG;AACH,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE;AACxC,EAAE,IAAI,EAAE,KAAK,QAAQ,EAAE;AACvB;AACA,GAAG,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3C,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC/C,IAAI,IAAI,eAAe;AACvB,KAAK,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC7B,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE;AAC/B,KAAK,KAAK,CAAC,OAAO,GAAG,OAAO,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;AAC7E,KAAK;AACL,IAAI;AACJ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC1B,GAAG;AACH,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AACtD,EAAE;AACF,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE;AACvB,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACxB,EAAE,OAAO,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AACrC,EAAE;AACF,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE;AAC3B,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACxB,EAAE,OAAO,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AACzC,EAAE;AACF,CAAC,UAAU,CAAC,QAAQ,EAAE;AACtB,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AACrB,EAAE,OAAO,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACpC,EAAE;AACF,CAAC,SAAS,GAAG;AACb,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AACrB,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;AACpB,EAAE;AACF,CAAC,gBAAgB,CAAC,QAAQ,EAAE;AAC5B,EAAE,OAAO,KAAK,CAAC,gBAAgB,CAAC,MAAM;AACtC,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AAC1B,GAAG,IAAI,eAAe,GAAG,eAAe,CAAC;AACzC,GAAG,IAAI;AACP,IAAI,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;AAChC,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,KAAK;AACxC,KAAK,IAAI,MAAM,KAAK,KAAK;AACzB,MAAM,OAAO,KAAK,EAAE,CAAC;AACrB,KAAK,eAAe,GAAG,eAAe,CAAC;AACvC,KAAK,OAAO,MAAM,CAAC;AACnB,KAAK,EAAE,KAAK,CAAC,CAAC;AACd,IAAI,CAAC,MAAM,KAAK,EAAE;AAClB,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;AACjB,IAAI;AACJ,GAAG,SAAS,KAAK,CAAC,KAAK,EAAE;AACzB;AACA,IAAI,KAAK,IAAI,EAAE,IAAI,eAAe;AAClC,KAAK,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACtB,IAAI,eAAe,GAAG,eAAe,CAAC;AACtC,IAAI,IAAI,KAAK;AACb,KAAK,MAAM,KAAK,CAAC;AACjB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF,EAAE,CAAC;AACH,CAAC,CAAC;AACK,SAAS,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE;AACjD,CAACA,gBAAc,GAAG,GAAG,CAAC;AACtB,CAACC,cAAY,GAAG,QAAQ,CAAC;AACzB;;AC9KA,IAAI,aAAa,GAAG,OAAO,OAAO,IAAI,UAAU,IAAI,OAAO,CAAC;AACrD,SAAS,UAAU,CAAC,OAAO,EAAE;AACpC,CAAC,aAAa,GAAG,OAAO,CAAC;AACzB,CAAC;AACD;AACA,iBAAiB,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;AAChD,IAAI,QAAQ,EAAE,YAAY,CAAC;AAE3B,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC;AACxF,IAAI,UAAU,CAAC,aAAa;AAC5B,CAAC,cAAc,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAC1C;AACA,CAAC,UAAU,CAAC,aAAa,GAAG,cAAc,EAAE,CAAC;AAC7C;AACA;AACA;AACA,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B;AACA;AACA,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAClC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B;AACY,MAAC,MAAM,GAAG,IAAI,GAAG,GAAG;AAChC,IAAI,kBAAkB,CAAC;AAEvB,IAAI,mBAAmB,CAAC;AACjB,SAAS,IAAI,CAACC,MAAI,EAAE,OAAO,EAAE;AACpC,CAAC,IAAI,CAAC,QAAQ;AACd,EAAE,mBAAmB,EAAE,CAAC;AACxB,CAAC,IAAI,OAAOA,MAAI,IAAI,QAAQ,IAAI,CAAC,OAAO,EAAE;AAC1C,EAAE,OAAO,GAAGA,MAAI,CAAC;AACjB,EAAEA,MAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AACtB,EAAE;AACF,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;AACzB,CAAC,IAAI,WAAW,GAAG,OAAO,CAAC;AAC3B,CAAC,IAAI,CAACA,MAAI,EAAE;AACZ,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AAC1B,GAAG,aAAa,EAAE,IAAI;AACtB,GAAG,MAAM,EAAE,IAAI;AACf,GAAG,EAAE,OAAO,CAAC,CAAC;AACd,EAAEA,MAAI,GAAG,MAAM,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,OAAM;AACzF,EAAE,MAAM,IAAI,CAAC,OAAO;AACpB,EAAE,OAAO,GAAG,EAAE,CAAC;AACf,CAAC,IAAI,SAAS,GAAGT,IAAU,CAAC,OAAO,CAACS,MAAI,CAAC,CAAC;AAC1C,CAAC,IAAI,IAAI,GAAGT,IAAU,CAAC,QAAQ,CAACS,MAAI,EAAE,SAAS,CAAC,CAAC;AACjD,CAAC,IAAI,OAAO,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC,IAAI,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,aAAa,KAAK,OAAO,CAAC,OAAO;AACnF,GAAG,OAAO,IAAI,OAAO,CAAC,OAAO,GAAG,WAAW;AAC3C,EAAE,OAAO,CAAC,CAAC;AACX,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AACzB,QAAEA,MAAI;AACN,EAAE,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC;AAC9B,EAAE,MAAM,EAAE,IAAI;AACd,EAAE,MAAM,EAAE,EAAE;AACZ,EAAE,WAAW;AACb,EAAE,QAAQ;AACV,EAAE,eAAe,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,IAAI,KAAK,IAAI,EAAE,IAAI,OAAO,CAAC;AACjF;AACA;AACA,EAAE,OAAO,EAAE,WAAW,GAAG,gBAAgB;AACzC,GAAG,OAAO;AACV,EAAE,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,MAAM;AACjD,EAAE,EAAE,OAAO,CAAC,CAAC;AACb,CAAC,IAAI,OAAO,CAAC,qBAAqB,IAAI,QAAQ,EAAE;AAChD,EAAE,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAClC,EAAE;AACF;AACA,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,GAAGT,IAAU,CAAC,OAAO,CAACS,MAAI,CAAC,GAAGA,MAAI,CAAC;AAChE,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,GAAGT,IAAU,CAAC,OAAO,CAACS,MAAI,CAAC,GAAGA,MAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;AACtF,GAAG,CAAC;AACJ,CAAC,SAAS,eAAe,CAAC,kBAAkB,EAAE;AAC9C,EAAE,IAAI,kBAAkB,YAAY,WAAW;AAC/C,GAAG,OAAO,kBAAkB,CAAC;AAC7B,EAAE,IAAI,UAAU,GAAG,OAAO,kBAAkB,IAAI,QAAQ,CAAC;AACzD,EAAE,IAAI,UAAU,IAAI,kBAAkB;AACtC,GAAG,OAAO,kBAAkB,CAAC;AAC7B,EAAE,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC;AACrC,GAAG,SAAS,EAAE,IAAI;AAClB,GAAG,UAAU,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,oMAAe,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/G,GAAG,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC;AACvC,GAAG,EAAE,kBAAkB,CAAC,CAAC;AACzB,EAAE,IAAI,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC,CAAC;AAC3F,EAAE,IAAI,UAAU;AAChB,GAAG,kBAAkB,GAAG,WAAW,CAAC;AACpC,EAAE,OAAO,WAAW,CAAC;AACrB,EAAE;AACF;AACA,CAAC,IAAI,OAAO,CAAC,WAAW;AACxB,EAAE,OAAO,CAAC,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAC7D,CAAC,IAAI,KAAK;AACV,EAAE,CAAC,OAAO,CAAC,eAAe,GAAG,MAAM,GAAG,CAAC;AACvC,GAAG,OAAO,CAAC,QAAQ,GAAG,MAAM,GAAG,CAAC,CAAC;AACjC,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,GAAG,CAAC,CAAC;AAChC,GAAG,OAAO,CAAC,QAAQ,GAAG,OAAO,GAAG,CAAC,CAAC;AAClC,GAAG,OAAO,CAAC,UAAU,GAAG,OAAO,GAAG,CAAC,CAAC;AACpC,GAAG,OAAO,CAAC,WAAW,GAAG,OAAO,GAAG,CAAC,CAAC;AACrC,GAAG,OAAO,CAAC,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;AACnC,GAAG,OAAO,CAAC,WAAW,GAAG,QAAQ,GAAG,CAAC,CAAC;AACtC,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,GAAG,CAAC,CAAC;AACrC,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,GAAG,CAAC,CAAC;AAC/C,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,GAAG,CAAC,CAAC;AACvC,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC;AACxC;AACA,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;AACrB,CAAC,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,eAAe,GAAG,MAAM,GAAG,CAAC;AACpD,GAAG,OAAO,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,CAAC;AACnC,GAAG,OAAO,CAAC,aAAa,GAAG,CAAC,GAAG,CAAC,EAAC;AACjC,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAC5C,GAAG,IAAI,EAAE;AACT,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AAChB,CAAC,OAAO,OAAO,CAAC,SAAQ;AACxB,CAAC,IAAI,UAAU,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC;AACtC,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,GAAG,YAAY,GAAG,oBAAoB,CAAC,CAAC;AAC3F,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC,IAAI,KAAK,GAAG,MAAM,EAAE;AACrB,EAAE,IAAI,WAAW,CAAC,MAAM,EAAE;AAC1B,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AACf,GAAG,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;AAC5F,GAAG;AACH,EAAE,MAAM,IAAI,OAAO,CAAC,eAAe,EAAE;AACrC,EAAE,IAAI,WAAW,CAAC,eAAe,EAAE;AACnC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AACf,GAAG,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;AACrG,GAAG;AACH,EAAE,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC;AAClC,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC;AAC3B,EAAE,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACnC,EAAE;AACF;AACA,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;AAEnB,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,aAAa,KAAK,CAAC,mBAAmB,IAAI,OAAO,CAAC,EAAE,EAAE;AAC/F,EAAE,mBAAmB,GAAG,IAAI,CAAC;AAC7B,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7B,EAAE;AACF;AACA,CAAC,MAAM,SAAS,SAAS,YAAY,CAAC;AACtC,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE;AACjC,GAAG,KAAK,EAAE,CAAC;AACX,GAAG,IAAI,MAAM,KAAK,SAAS;AAC3B,IAAI,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;AACvG;AACA,GAAG,IAAI,OAAO,CAAC,WAAW,IAAI,SAAS,CAAC,WAAW,KAAK,KAAK,IAAI,OAAO,SAAS,CAAC,WAAW,IAAI,QAAQ;AACzG,IAAI,SAAS,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;AAChD,QAAQ,IAAI,SAAS,CAAC,WAAW;AACjC,IAAI,SAAS,CAAC,WAAW,GAAG,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AACnE;AACA,GAAG,IAAI,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;AACxE,IAAI,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;AACrF,IAAI;AACJ,GAAG,IAAI,WAAW,GAAG,SAAS,CAAC,YAAW;AAC1C,GAAG,IAAI,SAAS,CAAC,WAAW,IAAI,QAAQ,EAAE;AAC1C,IAAI,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC;AACjC,IAAI,MAAM,IAAI,SAAS,CAAC,UAAU,EAAE;AACpC,IAAI,IAAI,SAAS,CAAC,UAAU,CAAC,qBAAqB,EAAE;AACpD,KAAK,SAAS,CAAC,UAAU,CAAC,qBAAqB,GAAE;AACjD,KAAK;AACL,KAAK,WAAW,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM,IAAI,SAAS,CAAC,WAAW,IAAI,QAAQ,EAAE;AACjD,IAAI,WAAW,GAAG,IAAI,CAAC;AACvB,IAAI;AACJ,GAAG,IAAI,KAAK,GAAG,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,GAAG,CAAC;AAC/C,KAAK,SAAS,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC;AAClC,KAAK,SAAS,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC;AACnC,KAAK,SAAS,CAAC,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC;AACrC,KAAK,SAAS,CAAC,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC;AACrC,KAAK,CAAC,OAAO,CAAC,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,KAAK,GAAG,OAAO,GAAG,CAAC,CAAC;AACnE,KAAK,SAAS,CAAC,WAAW,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AACxC,GAAG,IAAI,OAAO,GAAG,CAAC,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,WAAW,IAAI,QAAQ,IAAI,CAAC,GAAG,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC;AACxG,GAAG,IAAI,OAAO,IAAI,CAAC;AACnB,IAAI,KAAK,IAAI,IAAI,CAAC;AAClB;AACA,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;AACxB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;AACzB,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;AAC1E,IAAI,MAAM;AACV,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM;AAC/B,KAAK,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;AAC3E,KAAK,EAAE,OAAO,CAAC,eAAe,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC;AAC9C,IAAI;AACJ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACzB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,UAAU,EAAE;AAC9C,IAAI,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC;AACzC,IAAI;AACJ,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,QAAO;AACnC,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,MAAM,IAAI,IAAI,CAAC;AACjC,GAAG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;AACtB,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACxB,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AAClB,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AAClB,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACnB,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AACzB,GAAG,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC;AACnC,GAAG,IAAI,SAAS,CAAC,kBAAkB;AACnC,IAAI,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;AAC9D,GAAG,IAAI,SAAS,CAAC,uBAAuB;AACxC,IAAI,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;AACnE,GAAG,IAAI,CAAC,WAAW,GAAG,oBAAoB,CAAC;AAC3C,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AACvB,IAAI,IAAI,EAAE,OAAO,CAAC,IAAI;AACtB,IAAI,QAAQ,EAAE,OAAO,CAAC,QAAQ;AAC9B,IAAI,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;AAC9C,IAAI,EAAE,SAAS,CAAC,CAAC;AACjB,GAAG,IAAI,OAAO,CAAC;AACf,GAAG,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AAC7C,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AACnC,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACxB,IAAI;AACJ,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,SAAS,IAAI,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,EAAE;AACxI,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,OAAO,GAAG,eAAe,CAAC,CAAC;AAC5F,IAAI;AACJ,GAAG,IAAI,OAAO,EAAE;AAChB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM;AAC5C,KAAK,2BAA2B,CAAC,CAAC,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,EAAE,qBAAqB,EAAE,sBAAsB,CAAC;AACnV,KAAK,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,qBAAqB,EAAE,GAAG;AAC/D,MAAM,WAAW,EAAE,IAAI;AACvB,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5C,IAAI;AACJ,GAAG,IAAI,IAAI,CAAC,QAAQ,IAAI,MAAM,EAAE;AAChC,IAAI,IAAI,CAAC,OAAO,GAAG;AACnB,KAAK,MAAM,EAAE,IAAI,CAAC,SAAS;AAC3B,KAAK,CAAC;AACN,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;AAC5B,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAChC,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAiB;AACxD,IAAI;AACJ,GAAG,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAChC,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC1B,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,GAAG,GAAG,GAAG,MAAM,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;AAEzD,GAAG;AACH,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE;AAC5B,GAAG,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI;AACxC,IAAI,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC;AACnF,GAAG,IAAI,OAAO,MAAM,IAAI,QAAQ,IAAI,CAAC,SAAS,EAAE;AAChD,IAAI,SAAS,GAAG,MAAM,CAAC;AACvB,IAAI,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;AAC5B,IAAI;AACJ,IAAI,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC;AAChC,GAAG,IAAI;AACP,IAAI,OAAO,SAAS,CAAC,KAAK;AAC1B,KAAK,KAAK,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC;AAC1D,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACtC,IAAI,CAAC,MAAM,KAAK,EAAE;AAClB,IAAI,IAAI,KAAK,CAAC,OAAO,IAAI,oBAAoB;AAC7C,KAAK,OAAO;AACZ,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE;AACpD,KAAK,KAAK,CAAC,OAAO,IAAI,gCAAgC,CAAC;AACvD,KAAK;AACL,IAAI,MAAM,KAAK,CAAC;AAChB,IAAI;AACJ,GAAG;AACH,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE;AAC5B,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACnC,GAAG,IAAI,QAAQ;AACf,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACvB,GAAG,OAAO,EAAE,CAAC;AACb,GAAG;AACH,EAAE,MAAM,CAACA,MAAI,EAAE,OAAO,EAAE;AACxB,GAAG,EAAE,CAAC,SAAS,CAACT,IAAU,CAAC,OAAO,CAACS,MAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/D,GAAG,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,GAAG,CAAC,IAAI,CAACA,MAAI,EAAE,OAAO,EAAE,CAAC,KAAK,KAAK;AAC9E,IAAI,IAAI,KAAK,EAAE;AACf,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,KAAK,MAAM;AACX,KAAK,OAAO,EAAE,CAAC;AACf,KAAK;AACL,IAAI,CAAC,CAAC,CAAC;AACP,GAAG;AACH,EAAE,aAAa,GAAG;AAClB,GAAG,OAAO,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC;AAChC,GAAG;AACH,EAAE,IAAI,CAAC,QAAQ,EAAE;AACjB,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,SAAS,KAAK,EAAE;AAC/C,IAAI,IAAI,KAAK,EAAE;AACf,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1B,KAAK;AACL,IAAI,CAAC,CAAC;AACN,GAAG;AACH,EAAE,QAAQ,GAAG;AACb,GAAG,OAAO,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;AAC1E,GAAG,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC1B,GAAG;AACH,EAAE,QAAQ,GAAG;AACb,GAAG,IAAI,CAAC,eAAe,CAAC;AACxB,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;AACjB,KAAK,aAAa,EAAE,KAAK;AACzB,KAAK,CAAC,EAAE,OAAO,CAAC,eAAe,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC;AAC/C,GAAG;AACH,EAAE,KAAK,CAAC,QAAQ,EAAE;AAClB,GAAG,IAAI,OAAO,QAAQ,IAAI,UAAU;AACpC,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACrC,GAAG,OAAO,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;AAC9E,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AACpB,GAAG;AACH,EAAE,SAAS,GAAG;AACd,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE;AACrB,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe;AACpC,KAAK,IAAI,CAAC,OAAO,CAAC,eAAe,GAAE;AACnC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU;AACpC,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,GAAE;AACjC,IAAI;AACJ,GAAG,IAAI,CAAC,eAAe,CAAC;AACxB,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;AACjB,KAAK,aAAa,EAAE,IAAI;AACxB,KAAK,CAAC,EAAE,OAAO,CAAC,eAAe,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC;AAC/C,GAAG;AACH,EAAE,WAAW,GAAG;AAChB,GAAG,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;AAC5B,GAAG;AACH,EAAE,UAAU,GAAG;AACf,GAAG,OAAO,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpC,GAAG;AACH,EAAE,qBAAqB,GAAG;AAC1B,GAAG,MAAM,aAAa,GAAG,MAAM;AAC/B,IAAI,IAAI,WAAW,CAAC;AACpB,IAAI,IAAI,IAAI,CAAC,WAAW;AACxB,KAAK,WAAW,GAAG,cAAc,EAAE,CAAC;AACpC,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC1D,IAAI,IAAI,IAAI,CAAC,WAAW;AACxB,KAAK,cAAc,CAAC,WAAW,CAAC,CAAC;AACjC,IAAI,OAAO,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACjD,IAAI,CAAC;AACL,GAAG,OAAO;AACV,IAAI,cAAc,EAAE,CAAC,UAAU,EAAE,YAAY,KAAK;AAClD,KAAK,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM;AACvC,MAAM,IAAI,wBAAwB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC9E,MAAM,IAAI,kBAAkB,GAAG,wBAAwB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;AACzG,MAAM,IAAI,OAAO,YAAY,IAAI,UAAU;AAC3C,QAAQ,CAAC,YAAY,CAAC,kBAAkB,CAAC;AACzC,SAAS,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,IAAI,YAAY,CAAC;AACzE,OAAO,OAAO,KAAK,CAAC;AACpB,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;AACrD,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,aAAa;AACjB,IAAI,WAAW,EAAE,IAAI;AACrB,IAAI,CAAC;AACL,GAAG;AACH,EAAE;AACF;AACA,CAAiB,SAAS,CAAC,SAAS,CAAC,QAAQ;AAC7C,CAAoB,SAAS,CAAC,SAAS,CAAC,WAAW;AACnD,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC;AACxF,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;AACtB,EAAE,eAAe,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ;AACrE,GAAG,YAAY,EAAE,SAAS,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AACjE,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAG;AAChC,EAAE,UAAU,EAAE,IAAI;AAClB,EAAE,UAAU,EAAE,IAAI;AAClB,EAAE,QAAQ,EAAE,IAAI;AAChB,EAAE,SAAS,EAAE,IAAI;AACjB,EAAE,KAAK,EAAE,IAAI;AACb,EAAE,MAAM,EAAE,IAAI;AACd,EAAE,YAAY,EAAE,IAAI;AACpB,EAAE,YAAY,EAAE,IAAI;AACpB,EAAE,CAAC;AACH,CAAC,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;AACtE,CAAC,OAAO,OAAO,CAAC,OAAO,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE,OAAO,CAAC,CAAC;AAC3E,CAAC;AACM,SAAS,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE;AAC3C,CAAC,IAAI,OAAO,IAAI,IAAI,QAAQ,IAAI,CAAC,OAAO,EAAE;AAC1C,EAAE,OAAO,GAAG,IAAI,CAAC;AACjB,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AACtB,EAAE;AACF,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;AACzB,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;AACxB,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5B,CAAC;AACD;AACO,SAAS,cAAc,GAAG;AACjC,CAAC,OAAO,YAAY,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC;AACM,SAAS,cAAc,CAAC,OAAO,EAAE;AACxC,CAAC,OAAO,YAAY,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AACnD,CAAC;AACD;AACO,SAAS,YAAY,GAAG;AAC/B,CAAC,OAAO,YAAY,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACzC,CAAC;AACD;AACA,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,SAAS,mBAAmB,GAAG;AAC/B,CAAC,QAAQ,GAAG,OAAO,MAAM,IAAI,WAAW,GAAG,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,GAAG,IAAI,UAAU,CAAC,eAAe,CAAC,CAAC;AACrH,CAAC,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC;AACnC,CAAC,YAAY,GAAG,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;AAC7G,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC,EAAE,eAAe,IAAI,CAAC,CAAC,CAAC;AACvE,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,eAAe,IAAI,CAAC,CAAC,CAAC;AACzE,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACvF,CAAC;AACD;AACA,SAAS,MAAM,CAAC,IAAI,EAAE;AACtB,CAAC,IAAI,EAAE,CAAC,UAAU;AAClB,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC,IAAI;AACL,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC3B,EAAE,CAAC,OAAO,KAAK,EAAE;AACjB,EAAE,OAAO,KAAK;AACd,EAAE;AACF,CAAC;AACD;AACA,SAAS,2BAA2B,CAAC,iBAAiB,EAAE,MAAM,EAAE;AAChE,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,EAAE,IAAI,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE;AAC1B,GAAG,IAAI,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC;AACtC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9B,GAAG;AACH,EAAE;AACF,CAAC,OAAO,MAAM,CAAC;AACf;;ACpaO,SAAS,OAAO,CAAC,KAAK,EAAE;AAC/B,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAC5C,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC9B,GAAG,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/B,GAAG,IAAI,OAAO,OAAO,IAAI,UAAU;AACnC,IAAI,QAAQ,GAAG,OAAO,CAAC;AACvB,GAAG,IAAI,QAAQ,EAAE;AACjB,IAAI,IAAI,MAAM,KAAK,SAAS;AAC5B,KAAK,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;AACnC;AACA,KAAK,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC5B,IAAI,MAAM;AACV,IAAI,IAAI,MAAM,KAAK,SAAS;AAC5B,KAAK,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;AAChD;AACA,KAAK,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACpC,IAAI;AACJ,GAAG;AACH,EAAE,CAAC,CAAC;AACJ,CAAC;AACD,MAAM,aAAa,SAAS,KAAK,CAAC;AAClC,CAAC,WAAW,CAAC,OAAO,EAAE;AACtB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AACjB,EAAE,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;AAC9B,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACvB,EAAE;AACF;;ACjBAC,wBAAa,CAAC,qBAAqB,EAAE,CAAC;AACtC,YAAY,CAAC;AACb,OAACC,SAAI,MAAEC,sBAAE,UAAEC,WAAM,mBAAEC,gBAAe,gBAAEC,yBAAY,iBAAEL,wBAAa;AAC/D,eAACM,mBAAY,EAAE,EAAE,EAAEC,aAAQ,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE;AAChD,EAAE,IAAI,OAAO,CAAC,eAAe,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC;AACnE,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC/B,EAAE;AACF,CAAC,CAAC,CAAC;AAQO,IAAC,EAAE,IAAI,EAAE,GAAG,YAAY;AAItB,MAAC,gBAAgB,GAAG;AAChC,CAAC,SAAS,EAAE,CAAC;AACb,CAAC,kBAAkB,EAAE,CAAC;AACtB,CAAC,aAAa,EAAE,OAAO;AACvB,EAAE;AACF,YAAe;AACf,CAAC,IAAI,EAAE,WAAW,EAAE,cAAc,cAAEC,2BAAU,oBAAEC,2BAAgB,oBAAEC,6BAAgB,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB;AACzI,CAAC;;AC/BD,UAAU,CAACC,sBAAa,CAAC,oMAAe,CAAC,CAAC,CAAC;AAChCC,6BAAqB,GAAG,MAAK;AACxC;AACA,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AAChC,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAC;AAC7D;AACA,IAAI,QAAQ,CAAC,EAAE,IAAI,CAAC,YAAY,IAAI,WAAW,CAAC,OAAO,CAAC,mBAAmB,EAAE;AAC7E,CAAC,IAAI,OAAO,GAAG,EAAE,CAAC;AAClB,CAAC,IAAI,YAAY,GAAG,CAAC,YAAY,IAAI,EAAE,IAAI,YAAY,IAAI,EAAE,IAAI,YAAY,IAAI,EAAE,IAAI,YAAY,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAC7I,CAAC,IAAI,YAAY;AACjB,EAAEC,qBAAkB,CAAC,wBAAwB,EAAC;AAC9C,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AACnD,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACrC,CAACD,6BAAqB,GAAG,IAAI,CAAC;AAC9B,CAAC,MAAM,IAAI,YAAY,IAAI,EAAE,EAAE;AAC/B;AACA,CAAC,IAAI,OAAO,GAAG,EAAE,CAAC;AAClB,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC,WAAW,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;AACzD,CAAC;AACD,kBAAkB,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}