@restforgejs/platform 5.3.5 → 5.3.7

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 (172) hide show
  1. package/bin/restforge-designer-linux +0 -0
  2. package/bin/restforge-designer.exe +0 -0
  3. package/build-info.json +2 -2
  4. package/cli/consumer-deploy.js +1 -1
  5. package/cli/consumer.js +1 -1
  6. package/cli/designer.js +3 -0
  7. package/generators/cli/fast-track.js +105 -34
  8. package/generators/lib/templates/dashboard-catalog.js +1 -1
  9. package/generators/lib/templates/db-connection-env.js +1 -1
  10. package/generators/lib/templates/dbschema-catalog.js +1 -1
  11. package/generators/lib/templates/field-validation-catalog.js +1 -1
  12. package/generators/lib/templates/mysql-template.js +1 -1
  13. package/generators/lib/templates/oracle-template.js +1 -1
  14. package/generators/lib/templates/postgres-template.js +1 -1
  15. package/generators/lib/templates/query-declarative-catalog.js +1 -1
  16. package/generators/lib/templates/sqlite-template.js +1 -1
  17. package/integrity-manifest.json +18 -18
  18. package/package.json +3 -2
  19. package/scripts/verify-integrity.js +1 -1
  20. package/server.js +1 -1
  21. package/src/components/handlers/adjust_handler.js +1 -1
  22. package/src/components/handlers/audit_handler.js +1 -1
  23. package/src/components/handlers/delete_handler.js +1 -1
  24. package/src/components/handlers/export_handler.js +1 -1
  25. package/src/components/handlers/import_handler.js +1 -1
  26. package/src/components/handlers/insert_handler.js +1 -1
  27. package/src/components/handlers/update_handler.js +1 -1
  28. package/src/components/handlers/upload_handler.js +1 -1
  29. package/src/components/handlers/workflow_handler.js +1 -1
  30. package/src/components/integrations/webhook.js +1 -1
  31. package/src/consumers/baseConsumer.js +1 -1
  32. package/src/consumers/declarativeMapper.js +1 -1
  33. package/src/consumers/handlers/apiHandler.js +1 -1
  34. package/src/consumers/handlers/consoleHandler.js +1 -1
  35. package/src/consumers/handlers/databaseHandler.js +1 -1
  36. package/src/consumers/handlers/index.js +1 -1
  37. package/src/consumers/handlers/kafkaHandler.js +1 -1
  38. package/src/consumers/index.js +1 -1
  39. package/src/consumers/messageTransformer.js +1 -1
  40. package/src/consumers/validator.js +1 -1
  41. package/src/core/db/dialect/base-dialect.js +1 -1
  42. package/src/core/db/dialect/index.js +1 -1
  43. package/src/core/db/dialect/mysql-dialect.js +1 -1
  44. package/src/core/db/dialect/oracle-dialect.js +1 -1
  45. package/src/core/db/dialect/postgres-dialect.js +1 -1
  46. package/src/core/db/dialect/sqlite-dialect.js +1 -1
  47. package/src/core/db/flatten-helper.js +1 -1
  48. package/src/core/db/query-builder-error.js +1 -1
  49. package/src/core/db/query-builder.js +1 -1
  50. package/src/core/db/relation-helper.js +1 -1
  51. package/src/core/handlers/delete_handler.js +1 -1
  52. package/src/core/handlers/insert_handler.js +1 -1
  53. package/src/core/handlers/update_handler.js +1 -1
  54. package/src/core/models/base-model.js +1 -1
  55. package/src/core/utils/cache-manager.js +1 -1
  56. package/src/core/utils/component-engine.js +1 -1
  57. package/src/core/utils/context-builder.js +1 -1
  58. package/src/core/utils/datetime-formatter.js +1 -1
  59. package/src/core/utils/datetime-parser.js +1 -1
  60. package/src/core/utils/db.js +1 -1
  61. package/src/core/utils/logger.js +1 -1
  62. package/src/core/utils/payload-loader.js +1 -1
  63. package/src/core/utils/security-checks.js +1 -1
  64. package/src/middleware/body-options.js +1 -1
  65. package/src/middleware/cors.js +1 -1
  66. package/src/middleware/idempotency.js +1 -1
  67. package/src/middleware/rate-limiter.js +1 -1
  68. package/src/middleware/request-logger.js +1 -1
  69. package/src/middleware/security-headers.js +1 -1
  70. package/src/models/base-model-mysql.js +1 -1
  71. package/src/models/base-model-oracle.js +1 -1
  72. package/src/models/base-model-sqlite.js +1 -1
  73. package/src/models/base-model.js +1 -1
  74. package/src/pro/caching/redis-client.js +1 -1
  75. package/src/pro/caching/redis-helper.js +1 -1
  76. package/src/pro/consumers/baseConsumer.js +1 -1
  77. package/src/pro/consumers/declarativeMapper.js +1 -1
  78. package/src/pro/consumers/handlers/apiHandler.js +1 -1
  79. package/src/pro/consumers/handlers/consoleHandler.js +1 -1
  80. package/src/pro/consumers/handlers/databaseHandler.js +1 -1
  81. package/src/pro/consumers/handlers/index.js +1 -1
  82. package/src/pro/consumers/handlers/kafkaHandler.js +1 -1
  83. package/src/pro/consumers/index.js +1 -1
  84. package/src/pro/consumers/messageTransformer.js +1 -1
  85. package/src/pro/consumers/validator.js +1 -1
  86. package/src/pro/database/base-model-mysql.js +1 -1
  87. package/src/pro/database/base-model-oracle.js +1 -1
  88. package/src/pro/database/base-model-sqlite.js +1 -1
  89. package/src/pro/database/db-mysql.js +1 -1
  90. package/src/pro/database/db-oracle.js +1 -1
  91. package/src/pro/database/db-sqlite.js +1 -1
  92. package/src/pro/excel/excel-generator.js +1 -1
  93. package/src/pro/excel/excel-parser.js +1 -1
  94. package/src/pro/excel/export-service.js +1 -1
  95. package/src/pro/excel/export_handler.js +1 -1
  96. package/src/pro/excel/import-service.js +1 -1
  97. package/src/pro/excel/import-validator.js +1 -1
  98. package/src/pro/excel/import_handler.js +1 -1
  99. package/src/pro/excel/upsert-builder.js +1 -1
  100. package/src/pro/idgen/idgen-routes.js +1 -1
  101. package/src/pro/integrations/lookup-resolver.js +1 -1
  102. package/src/pro/integrations/upload-handler-v2.js +1 -1
  103. package/src/pro/integrations/upload-handler.js +1 -1
  104. package/src/pro/integrations/webhook.js +1 -1
  105. package/src/pro/locking/lock-routes.js +1 -1
  106. package/src/pro/locking/resource-lock-manager.js +1 -1
  107. package/src/pro/messaging/kafkaConsumerService.js +1 -1
  108. package/src/pro/messaging/kafkaService.js +1 -1
  109. package/src/pro/messaging/messagehubService.js +1 -1
  110. package/src/pro/messaging/rabbitmqService.js +1 -1
  111. package/src/pro/scheduler/job-manager.js +1 -1
  112. package/src/pro/scheduler/job-routes.js +1 -1
  113. package/src/pro/scheduler/job-validator.js +1 -1
  114. package/src/pro/storage/base-storage-provider.js +1 -1
  115. package/src/pro/storage/file-metadata-helper.js +1 -1
  116. package/src/pro/storage/index.js +1 -1
  117. package/src/pro/storage/local-storage-provider.js +1 -1
  118. package/src/pro/storage/s3-storage-provider.js +1 -1
  119. package/src/pro/storage/upload-cleanup-job.js +1 -1
  120. package/src/pro/storage/upload-cleanup-scheduler.js +1 -1
  121. package/src/pro/storage/upload-pending-tracker.js +1 -1
  122. package/src/pro/websocket/broadcast-helper.js +1 -1
  123. package/src/pro/websocket/index.js +1 -1
  124. package/src/pro/websocket/livesync-server.js +1 -1
  125. package/src/pro/websocket/ws-broadcaster.js +1 -1
  126. package/src/services/export-service.js +1 -1
  127. package/src/services/import-service.js +1 -1
  128. package/src/services/kafkaConsumerService.js +1 -1
  129. package/src/services/kafkaService.js +1 -1
  130. package/src/services/messagehubService.js +1 -1
  131. package/src/services/rabbitmqService.js +1 -1
  132. package/src/utils/cache-invalidation-registry.js +1 -1
  133. package/src/utils/cache-manager.js +1 -1
  134. package/src/utils/component-engine.js +1 -1
  135. package/src/utils/config-extractor.js +1 -1
  136. package/src/utils/consumerLogger.js +1 -1
  137. package/src/utils/context-builder.js +1 -1
  138. package/src/utils/dashboard-helpers.js +1 -1
  139. package/src/utils/dateHelper.js +1 -1
  140. package/src/utils/datetime-formatter.js +1 -1
  141. package/src/utils/datetime-parser.js +1 -1
  142. package/src/utils/db-bootstrap.js +1 -1
  143. package/src/utils/db-mysql.js +1 -1
  144. package/src/utils/db-oracle.js +1 -1
  145. package/src/utils/db-sqlite.js +1 -1
  146. package/src/utils/db.js +1 -1
  147. package/src/utils/demo-generator.js +1 -1
  148. package/src/utils/excel-generator.js +1 -1
  149. package/src/utils/excel-parser.js +1 -1
  150. package/src/utils/file-watcher.js +1 -1
  151. package/src/utils/id-generator.js +1 -1
  152. package/src/utils/idempotency-manager.js +1 -1
  153. package/src/utils/import-validator.js +1 -1
  154. package/src/utils/license-client.js +1 -1
  155. package/src/utils/lock-manager.js +1 -1
  156. package/src/utils/logger.js +1 -1
  157. package/src/utils/lookup-resolver.js +1 -1
  158. package/src/utils/payload-loader.js +1 -1
  159. package/src/utils/processor-response.js +1 -1
  160. package/src/utils/rabbitmq.js +1 -1
  161. package/src/utils/redis-client.js +1 -1
  162. package/src/utils/redis-helper.js +1 -1
  163. package/src/utils/request-scope.js +1 -1
  164. package/src/utils/security-checks.js +1 -1
  165. package/src/utils/service-resolver.js +1 -1
  166. package/src/utils/shutdown-coordinator.js +1 -1
  167. package/src/utils/soft-delete-dashboard-guard.js +1 -1
  168. package/src/utils/sql-table-extractor.js +1 -1
  169. package/src/utils/trusted-keys.js +1 -1
  170. package/src/utils/upload-handler.js +1 -1
  171. package/src/utils/upsert-builder.js +1 -1
  172. package/src/utils/workflow-hook-executor.js +1 -1
@@ -1 +1 @@
1
- function a0_0x5d30(_0x452540,_0xa0c7fc){_0x452540=_0x452540-0xe6;const _0x11061a=a0_0x1106();let _0x5d30a9=_0x11061a[_0x452540];if(a0_0x5d30['BxyErQ']===undefined){var _0x1037dd=function(_0x21c4ee){const _0x2bd488='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x109b7f='',_0x2dfb79='';for(let _0x369def=0x0,_0x4d16c7,_0x34b5c6,_0x4e02d9=0x0;_0x34b5c6=_0x21c4ee['charAt'](_0x4e02d9++);~_0x34b5c6&&(_0x4d16c7=_0x369def%0x4?_0x4d16c7*0x40+_0x34b5c6:_0x34b5c6,_0x369def++%0x4)?_0x109b7f+=String['fromCharCode'](0xff&_0x4d16c7>>(-0x2*_0x369def&0x6)):0x0){_0x34b5c6=_0x2bd488['indexOf'](_0x34b5c6);}for(let _0x2225d4=0x0,_0x78dd82=_0x109b7f['length'];_0x2225d4<_0x78dd82;_0x2225d4++){_0x2dfb79+='%'+('00'+_0x109b7f['charCodeAt'](_0x2225d4)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2dfb79);};a0_0x5d30['pOAIKu']=_0x1037dd,a0_0x5d30['YXSCTW']={},a0_0x5d30['BxyErQ']=!![];}const _0x4cb99b=_0x11061a[0x0],_0x3b842c=_0x452540+_0x4cb99b,_0x287d20=a0_0x5d30['YXSCTW'][_0x3b842c];return!_0x287d20?(_0x5d30a9=a0_0x5d30['pOAIKu'](_0x5d30a9),a0_0x5d30['YXSCTW'][_0x3b842c]=_0x5d30a9):_0x5d30a9=_0x287d20,_0x5d30a9;}(function(_0x581eb3,_0x1e0d16){const _0x3bfeb5=a0_0x5d30,_0x14c524=_0x581eb3();while(!![]){try{const _0x5ec587=-parseInt(_0x3bfeb5(0x137))/0x1*(-parseInt(_0x3bfeb5(0x20e))/0x2)+parseInt(_0x3bfeb5(0x175))/0x3+-parseInt(_0x3bfeb5(0x19e))/0x4*(-parseInt(_0x3bfeb5(0x20c))/0x5)+parseInt(_0x3bfeb5(0xf7))/0x6*(-parseInt(_0x3bfeb5(0x16d))/0x7)+parseInt(_0x3bfeb5(0x136))/0x8*(parseInt(_0x3bfeb5(0x129))/0x9)+-parseInt(_0x3bfeb5(0x168))/0xa*(parseInt(_0x3bfeb5(0x12d))/0xb)+-parseInt(_0x3bfeb5(0x10c))/0xc;if(_0x5ec587===_0x1e0d16)break;else _0x14c524['push'](_0x14c524['shift']());}catch(_0x866a9a){_0x14c524['push'](_0x14c524['shift']());}}}(a0_0x1106,0x2f9bf));function toCamelCase(_0x32d070){const _0xc91a86=a0_0x5d30,_0x5383f0={'IdeRb':function(_0x9212ce,_0x420b6c){return _0x9212ce===_0x420b6c;}};if(!_0x32d070||typeof _0x32d070!==_0xc91a86(0x186))return'';return _0x32d070[_0xc91a86(0x149)](/(?:^\w|[A-Z]|\b\w)/g,(_0x2e51b8,_0x440fbc)=>{return _0x5383f0['IdeRb'](_0x440fbc,0x0)?_0x2e51b8['toLowerCase']():_0x2e51b8['toUpperCase']();})[_0xc91a86(0x149)](/\s+/g,'')[_0xc91a86(0x149)](/[-_]/g,'');}function toPascalCase(_0x178009){const _0x44bc5d=a0_0x5d30,_0x4e029f={'eXyBT':'string','FZJBG':function(_0x4a3967,_0x3f0214){return _0x4a3967(_0x3f0214);}};if(!_0x178009||typeof _0x178009!==_0x4e029f[_0x44bc5d(0x208)])return'';const _0x319181=_0x4e029f[_0x44bc5d(0x167)](toCamelCase,_0x178009);return _0x319181['charAt'](0x0)['toUpperCase']()+_0x319181[_0x44bc5d(0xec)](0x1);}function assertNoFileReferenceLeftover(_0x265642){const _0x2effda=a0_0x5d30,_0x350fa4={'OGgIs':'datatablesQuery','lGFNi':'string','JQiTt':_0x2effda(0x1d1)},_0x184505=[[_0x350fa4['OGgIs'],_0x265642['datatablesQuery']],['viewQuery',_0x265642[_0x2effda(0x13a)]],['masterDetail.detailConfig.detailQuery',_0x265642['masterDetail']&&_0x265642[_0x2effda(0x216)]['detailConfig']&&_0x265642['masterDetail']['detailConfig'][_0x2effda(0x123)]]];for(const [_0x1486c4,_0x3fe42a]of _0x184505){if(typeof _0x3fe42a===_0x350fa4[_0x2effda(0x16c)]&&_0x3fe42a[_0x2effda(0x1b3)](_0x350fa4[_0x2effda(0x153)]))throw new Error(_0x2effda(0x198)+_0x1486c4+'\x20still\x20contains\x20\x22file:\x22\x20reference\x20('+_0x3fe42a+').\x20'+_0x2effda(0x14e));}}function detectTextColumn(_0x280b32){const _0x1d1189=a0_0x5d30,_0x40ad1c={'kxhcH':'name','ypGXP':_0x1d1189(0x192),'JEQmT':'judul','WrvDg':_0x1d1189(0x1cf),'ZWBkQ':_0x1d1189(0x1d9)},_0x3c7ec0=[_0x40ad1c['kxhcH'],_0x1d1189(0x165),_0x40ad1c['ypGXP'],_0x40ad1c[_0x1d1189(0x1ed)],_0x40ad1c['WrvDg'],_0x1d1189(0x1d3),_0x40ad1c[_0x1d1189(0x1ce)],'kode'];for(const _0x3431b5 of _0x3c7ec0){const _0x4055d4=_0x280b32['find'](_0xabfb9d=>_0xabfb9d[_0x1d1189(0x1ea)]()['includes'](_0x3431b5));if(_0x4055d4)return _0x4055d4;}return _0x280b32[_0x1d1189(0x164)](_0x2d0ba4=>_0x2d0ba4!=='id')||_0x280b32[0x0]||'nama';}function createSqliteMainModuleTemplate(_0x2296ef){const _0x52cf8d=a0_0x5d30,_0x19fae6=toPascalCase(_0x2296ef);return _0x52cf8d(0x213)+_0x2296ef+_0x52cf8d(0x142)+_0x19fae6+_0x52cf8d(0x103)+_0x2296ef+'\x27;\x0a\x20\x20\x20\x20const\x20pluginPath\x20=\x20path.join(__dirname,\x20\x27..\x27,\x20\x27plugins\x27,\x20`${moduleName}-plugin.js`);\x0a\x20\x20\x20\x20let\x20plugin\x20=\x20null;\x0a\x20\x20\x20\x20if\x20(fs.existsSync(pluginPath))\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20plugin\x20=\x20require(pluginPath);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(plugin.onBeforeEndpointsLoad)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20plugin.onBeforeEndpointsLoad(app,\x20config);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20logger.info({\x20event:\x20\x27plugin_loaded\x27,\x20plugin:\x20`${moduleName}-plugin`\x20},\x20`Plugin\x20loaded:\x20${moduleName}-plugin.js`);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(pluginError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20logger.error({\x20event:\x20\x27plugin_load_error\x27,\x20error:\x20pluginError.message\x20},\x20`Failed\x20to\x20load\x20plugin:\x20${moduleName}-plugin.js`);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Health\x20check\x20endpoint\x0a\x20\x20\x20\x20app.get(\x27/api/'+_0x2296ef+_0x52cf8d(0x135)+_0x2296ef+_0x52cf8d(0x151)+_0x2296ef+'\x0a\x20\x20\x20\x20const\x20modulesDir\x20=\x20path.join(__dirname,\x20\x27'+_0x2296ef+'\x27);\x0a\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(!fs.existsSync(modulesDir))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20fs.mkdirSync(modulesDir,\x20{\x20recursive:\x20true\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(`Directory\x20${modulesDir}\x20created\x20successfully`);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20files\x20=\x20fs.readdirSync(modulesDir);\x0a\x20\x20\x20\x20\x20\x20const\x20endpointFiles\x20=\x20files.filter(file\x20=>\x20file.endsWith(\x27.js\x27));\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(endpointFiles.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(`No\x20endpoint\x20files\x20found\x20in\x20${modulesDir}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(`Add\x20endpoint\x20files\x20to\x20enable\x20API\x20functionality`);\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20logger.info({\x20event:\x20\x27endpoints_loading\x27,\x20count:\x20endpointFiles.length\x20},\x20`Loading\x20${endpointFiles.length}\x20endpoint(s)`);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20file\x20of\x20endpointFiles)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20endpointName\x20=\x20path.basename(file,\x20\x27.js\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20endpointPath\x20=\x20path.join(modulesDir,\x20file);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Clear\x20module\x20cache\x20untuk\x20development\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(require.cache[endpointPath])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20delete\x20require.cache[endpointPath];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20moduleRoutes\x20=\x20require(endpointPath);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20endpointPrefix\x20=\x20`/api/'+_0x2296ef+'/${endpointName}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20app.use(endpointPrefix,\x20moduleRoutes);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logEndpointRegistered(endpointName,\x20endpointPrefix);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Register\x20export\x20routes\x20via\x20centralized\x20handler\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20exportConfig\x20=\x20extractExportConfigFromEndpoint(endpointPath);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(exportConfig)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ExportHandler.registerRoutes(app,\x20\x27'+_0x2296ef+_0x52cf8d(0x1e7)+_0x2296ef+_0x52cf8d(0x1ec)+_0x2296ef+'\x27,\x20endpointName,\x20uploadConfig);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logger.info({\x20event:\x20\x27upload_routes_registered\x27,\x20endpoint:\x20endpointName,\x20fields:\x20Object.keys(uploadConfig.fields\x20||\x20{})\x20},\x20`Upload\x20routes\x20registered\x20for\x20${endpointName}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(uploadError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logger.error({\x20event:\x20\x27upload_registration_error\x27,\x20endpoint:\x20endpointName,\x20error:\x20uploadError.message\x20},\x20`Upload\x20registration\x20failed\x20for\x20${endpointName}:\x20${uploadError.message}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(`Error\x20loading\x20module\x20${file}\x20from\x20'+_0x2296ef+_0x52cf8d(0x1a7)+_0x2296ef+'\x20API\x20(SQLite\x20Database)\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27running\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20database:\x20\x27sqlite\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Error\x20handling\x20middleware\x0a\x20\x20\x20\x20\x20\x20app.use((err,\x20req,\x20res,\x20next)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27Error:\x27,\x20err);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(err\x20instanceof\x20SyntaxError\x20&&\x20err.status\x20===\x20400\x20&&\x20\x27body\x27\x20in\x20err\x20&&\x20!res.headersSent)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20JSON\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27The\x20payload\x20sent\x20is\x20not\x20a\x20valid\x20JSON\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20details:\x20err.message\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!res.headersSent)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20on\x20the\x20server\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20details:\x20err.message\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20next(err);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20app.use((req,\x20res)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20res.status(403).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Forbidden\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Access\x20to\x20the\x20requested\x20resource\x20is\x20forbidden\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20server\x20=\x20app.listen(port,\x20serverAddress,\x20(err)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(err)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(`Failed\x20to\x20start\x20${moduleNameCapitalized}\x20server:`,\x20err);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Determine\x20display\x20URL\x20based\x20on\x20serverAddress\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20displayHost\x20=\x20(serverAddress\x20===\x20\x270.0.0.0\x27\x20||\x20!serverAddress)\x20?\x20\x27localhost\x27\x20:\x20serverAddress;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20logServerReady({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20port,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20module:\x20\x27'+_0x2296ef+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20healthCheck:\x20`http://${displayHost}:${port}/api/'+_0x2296ef+_0x52cf8d(0x1ac)+_0x2296ef+'/info`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20baseUrl:\x20`http://${displayHost}:${port}`\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Execute\x20plugin\x20onAfterServerStart\x20hook\x20(jika\x20ada)\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(plugin\x20&&\x20plugin.onAfterServerStart)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20plugin.onAfterServerStart(app,\x20config);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(pluginError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logger.error({\x20event:\x20\x27plugin_after_start_error\x27,\x20error:\x20pluginError.message\x20},\x20\x27Plugin\x20onAfterServerStart\x20failed\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20process.on(\x27SIGINT\x27,\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27Menerima\x20sinyal\x20SIGINT,\x20shutting\x20down...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20process.exit(0);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20process.on(\x27SIGTERM\x27,\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27Menerima\x20sinyal\x20SIGTERM,\x20shutting\x20down...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20process.exit(0);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20process.on(\x27uncaughtException\x27,\x20(error)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27Uncaught\x20Exception:\x27,\x20error);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20process.on(\x27unhandledRejection\x27,\x20(reason,\x20promise)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27Unhandled\x20Rejection\x20at:\x27,\x20promise,\x20\x27reason:\x27,\x20reason);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20console.error(\x27Error\x20saat\x20menjalankan\x20modul\x20'+_0x2296ef+':\x27,\x20error);\x0a\x20\x20\x20\x20\x20\x20resolve();\x0a\x20\x20\x20\x20}\x0a\x20\x20});\x0a}\x0a\x0amodule.exports\x20=\x20{\x20execute\x20};';}function buildDefaultScopeSQL(_0x56be0a,_0x42e903=''){const _0x14d520=a0_0x5d30,_0x2d79ec={'FeoPX':function(_0x51bf6c,_0x34ab6d){return _0x51bf6c!==_0x34ab6d;},'AEKwX':_0x14d520(0x171),'sTfmv':_0x14d520(0x186),'Beagr':function(_0xea0561,_0x25550d){return _0xea0561===_0x25550d;},'iUEEe':_0x14d520(0x1dd)};if(!_0x56be0a||_0x2d79ec['FeoPX'](typeof _0x56be0a,'object'))return'';const _0x3ca000=[];for(const [_0x417974,_0x34b2be]of Object['entries'](_0x56be0a)){if(typeof _0x34b2be===_0x2d79ec[_0x14d520(0x207)])_0x3ca000['push'](''+_0x42e903+_0x417974+'\x20=\x20\x27'+_0x34b2be+'\x27');else{if(typeof _0x34b2be===_0x2d79ec['sTfmv'])_0x3ca000[_0x14d520(0x161)](''+_0x42e903+_0x417974+_0x14d520(0x112)+_0x34b2be['replace'](/'/g,'\x27\x27')+'\x27');else _0x2d79ec['Beagr'](typeof _0x34b2be,'number')&&_0x3ca000[_0x14d520(0x161)](''+_0x42e903+_0x417974+_0x14d520(0x19f)+_0x34b2be);}}return _0x3ca000['join'](_0x2d79ec[_0x14d520(0xf1)]);}function buildRequestScopeMiddleware(_0x2f2778,_0x122bd5){const _0x2e9f25=a0_0x5d30,_0x301abe={'OCkEB':function(_0x17658b,_0x1fb8a4){return _0x17658b||_0x1fb8a4;}};if(!_0x2f2778[_0x2e9f25(0x1d4)])return'';const {column:_0x447768,source:_0x50b8a6,bypassRoles:_0x493220}=_0x2f2778[_0x2e9f25(0x1d4)],_0x2afc39=JSON[_0x2e9f25(0x102)](_0x493220||[]),_0x45ae1e=_0x301abe['OCkEB'](_0x122bd5,'')['replace'](/-/g,'_');return _0x2e9f25(0x15e)+_0x447768+'\x27\x20from\x20'+_0x50b8a6+_0x2e9f25(0x154)+_0x2afc39+';\x0a\x20\x20if\x20(bypassRoles.length\x20>\x200\x20&&\x20bypassRoles.some(role\x20=>\x20userRoles.includes(role)))\x20{\x0a\x20\x20\x20\x20return\x20next();\x0a\x20\x20}\x0a\x0a\x20\x20//\x20Read\x20scope\x20value\x20from\x20user\x20context\x0a\x20\x20const\x20scopeValue\x20=\x20'+_0x50b8a6+';\x0a\x20\x20if\x20(scopeValue\x20===\x20undefined\x20||\x20scopeValue\x20===\x20null)\x20{\x0a\x20\x20\x20\x20return\x20res.status(403).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Forbidden\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27Request\x20scope\x20value\x20not\x20available\x20in\x20user\x20context\x27,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20Expose\x20scope\x20info\x20for\x20route\x20handlers\x20(ownership\x20verification\x20in\x20/first,\x20/update,\x20/update-composite)\x0a\x20\x20req._requestScope\x20=\x20{\x20column:\x20\x27'+_0x447768+'\x27,\x20value:\x20scopeValue\x20};\x0a\x0a\x20\x20const\x20endpoint\x20=\x20req.path.substring(1);\x0a\x20\x20const\x20scopeCondition\x20=\x20{\x20key:\x20\x27'+_0x447768+'\x27,\x20value:\x20scopeValue\x20};\x0a\x0a\x20\x20//\x20READ\x20operations:\x20inject\x20scope\x20into\x20req.body.where\x0a\x20\x20if\x20([\x27datatables\x27,\x20\x27read\x27,\x20\x27lookup\x27,\x20\x27read-composite\x27].includes(endpoint))\x20{\x0a\x20\x20\x20\x20if\x20(!req.body.where)\x20{\x0a\x20\x20\x20\x20\x20\x20req.body.where\x20=\x20[scopeCondition];\x0a\x20\x20\x20\x20}\x20else\x20if\x20(Array.isArray(req.body.where))\x20{\x0a\x20\x20\x20\x20\x20\x20req.body.where.unshift(scopeCondition);\x0a\x20\x20\x20\x20}\x20else\x20if\x20(req.body.where.conditions\x20&&\x20Array.isArray(req.body.where.conditions))\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20originalLogic\x20=\x20req.body.where.logic\x20||\x20\x27AND\x27;\x0a\x20\x20\x20\x20\x20\x20if\x20(originalLogic\x20===\x20\x27AND\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20req.body.where.conditions.unshift(scopeCondition);\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20req.body.where\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logic:\x20\x27AND\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conditions:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20scopeCondition,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20logic:\x20originalLogic,\x20conditions:\x20req.body.where.conditions\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20//\x20DELETE:\x20prepend\x20scope\x20condition\x20to\x20where\x20array\x0a\x20\x20if\x20(endpoint\x20===\x20\x27delete\x27)\x20{\x0a\x20\x20\x20\x20if\x20(req.body.where)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(Array.isArray(req.body.where))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20req.body.where.unshift(scopeCondition);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20//\x20CREATE\x20/\x20ADD:\x20force\x20scope\x20column\x20value\x0a\x20\x20if\x20(endpoint\x20===\x20\x27add\x27\x20||\x20endpoint\x20===\x20\x27create\x27)\x20{\x0a\x20\x20\x20\x20req.body[\x27'+_0x447768+_0x2e9f25(0xfa)+_0x447768+_0x2e9f25(0x1b2)+_0x45ae1e+'\x27]\x20||\x20req.body;\x0a\x20\x20\x20\x20masterBody[\x27'+_0x447768+_0x2e9f25(0x174);}function a0_0x1106(){const _0x45100c=['DxbKyxrLx2v4Axn0Aw5N','l2HLywX0AgaScIaGicaGicaGicbZzxj2AwnLsw5MBZOGygH0Dha6lY8KE2rPC3bSyxLiB3n0FtOKE3bVCNr9l2fWAs8','BwfW','cIaGicaGih07cIaGicaGigLMicHPDgvTlG','zxHWB3j0uxvLCNK','yxv0B0nHBgn1Bgf0zuzPzwXKCW','jYWkicaGicaGicaGigfKzgL0Aw9UywXdB250zxH0oIb7cIaGicaGicaGicaGihvZzxjFAwq6ihjLCs5OzwfKzxjZwYD1C2vYlwLKj10GFhWGCMvXlMHLywrLCNnBj3GTDxnLCI1PzcDDihX8icDZExn0zw0NlaOGicaGicaGicaGicbVChrPB25ZoIbYzxeUyM9KEu9WDgLVBNmGFhWGE30ScIaGicaGicaGicaGihjLCxvLC3rjzdOGCMvXlMLKihX8ig51BgWkicaGicaGicaGih0kicaGicaGicb9oWOGicaGicaGihzHCIbYzxn1BhqGpsbHD2fPDca','j10GpsbZy29WzvzHBhvLoWOGih0kcIaGlY8Gq1jfqvrflunptvbpu0LursaVifvqrefurs1dt01qt1njveu6igzVCMnLihnJB3bLignVBhvTBIbPBNnPzguGBwfZDgvYigjVzhKUcIaGlY8GtwfZDgvYigLZihDYyxbWzwqGyxqGCMvXlMjVzhLBCM9VDeTLEv07igrLDgfPBcbYB3DZigLUAgvYAxqGC2nVCguGDhjHBNnPDgL2zwX5cIaGlY8GDMLHig1HC3rLCIbVD25LCNnOAxaGkg5VigrPCMvJDcbZy29WzsbJB2X1Bw4GB24Gzgv0ywLSihrHyMXLks4kicbPzIaOzw5KCg9PBNqGpt09icDJCMvHDguTy29TCg9ZAxrLjYb8FcbLBMrWB2LUDca9pt0Gj3vWzgf0zs1JB21WB3nPDguNksb7cIaGicbJB25ZDcbTyxn0zxjcB2r5id0GCMvXlMjVzhLBjW','C3rHCNrZv2L0Aa','laOGigfKANvZDenVBMzPzZOG','x2zPzwXKuhjVAMvJDgLVBNm','iICScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGDMfYigrHDgeGpsbYzxeUyM9KEs4','AwyGkgHLywrLCKnHBgmUDg90ywXFyw1VDw50ksb7cIaGicaGigrHDgeUDg90ywXFyw1VDw50id0Gzgf0ys4','cGOGicaGlY8Gtg9Nihn1y2nLC3nMDwWGB3bLCMf0Aw9UcIaGicbJB25ZB2XLlMXVzYHG','tw9KzwW','y29TCg9Uzw50CW','y29UC3qGqMfZzu1VzgvSid0GCMvXDwLYzsGNqhjLC3rMB3jNzwPZl3bSyxrMB3jTl3nYyY9TB2rLBhmVyMfZzs1TB2rLBc1ZCwXPDguNktSky29UC3qGzgiGpsbYzxf1AxjLkcDaCMvZDgzVCMDLANmVCgXHDgzVCM0VC3jJl3v0AwXZl2rIlxnXBgL0zsCPoWPJB25ZDcbMCYa9ihjLCxvPCMuOj2zZjYK7cMnVBNn0ihbHDgGGpsbYzxf1AxjLkcDWyxrOjYK7cGOVkIOkkIa','iezst00GjhT0AgLZlMDLDfrHyMXLu291CMnLkcDYzwfKjYL9ifDirvjfia','jYWkicbMAwvSze5HBwu6ia','cGOGihjLDhvYBIb0zw1WBgf0zxm7cN0kcI8QkGOGkIbpDMvYCMLKzsbNzxrmAxn0uxvLCNKGDw50DwSGu1fmAxrLihn5BNrHEaOGkI8kz2v0tgLZDff1zxj5kg9WDgLVBNmGpsb7FsKGEWO','iIa9pt0Gj3n0CMLUzYCGjIyGiG','Eerovhy','ignVBxbVC2L0zsbYzwfKihn1y2nLC3nMDwW6icCGkYaOCMvZDwX0lMnVDw50ihX8idaPicSGjYbYzwnVCMqOCYKNktSkcIaGicbYzxr1CM4GCMvZlMPZB24OEWOGicaGicaUlI5Yzxn1BhqScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGC2fHDcbJB21WB3nPDguGCMvHzca','tw9KzwWOktS','tgnkCKq','cGOGicaGzM9YicHJB25ZDcbOzwfKzxiGB2yGAgvHzgvYuMvZDwX0CYKGEWOGicaGicbJB25ZDcbWA1zHBhvLid0GAgvHzgvYw3rOAxmUChjPBwfYEuTLEv07cIaGicaGignVBNn0igrLDgfPBfjLC3vSDhmGpsbHD2fPDcbKyI5LEgvJDxrLuxvLCNKOzgv0ywLSu3fSlcbBCgTwywX1zv0PoWOGicaGicbJB21WB3nPDgvszxn1BhrZlNb1C2GOEWOGicaGicaGic4UlMHLywrLCIWkicaGicaGicbBzgv0ywLSs2v5xtOGzgv0ywLSuMvZDwX0CYb8FcbBxqOGicaGicb9ktSkicaGih0kcIaGicbYzxr1CM4GEWOGicaGicbZDwnJzxnZoIb0CNvLlaOGicaGicbJB3vUDdOGy29TCg9ZAxrLuMvZDwX0CY5Szw5NDgGScIaGicaGigrHDge6ignVBxbVC2L0zvjLC3vSDhmkicaGih07cIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOj0vYCM9YigLUihjLywrdB21WB3nPDgu6jYWGzxjYB3iPoWOGicaGDgHYB3CGzxjYB3i7cIaGFqP9cG','iIWGiNzHBhvLiJOGiNLVDxiTDMfSDwuIih1DcIaGicaGicaGicb9laOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGy29UC29Szs5LCNjVCIHGrxjYB3iGDMfSAwrHDgLUzYbtuuXPDguGCgf5Bg9HzcbMB3iGjhTYzxeUCgf0Ah06ycWGzxjYB3iPoWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicbTzxnZywDLoIaNsw52ywXPzcbWyxLSB2fKigzVCM1HDcCScIaGicaGicaGzgv0ywLSCZOGzxjYB3iUBwvZC2fNzsWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kicb9cIaGBMv4DcGPoWP9ktSkcG','zw50CMLLCW','y3jLyxrL','cIaGxtSkicbJB25ZDcbZy2HLBwfgAwvSzhmGpsbBcIaGica','AgvHzgvYq2fSy3vSyxrPB25Z','iIbTDxn0igjLigeGBM9UlwvTChr5igfYCMf5jYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGica','jYWkicaGigzPzwXKq291BNq6ia','cIaGicaVlYbjBNrLz3jHDgvKihrYyw5Zywn0Aw9UigrLBMDHBIbLDMvUDcbSAwzLy3LJBgukicaGihrYEsb7cIaGicaGignVBNn0igv2zw50q29UDgv4Dca9ihSkicaGicaGicbJB21WB25LBNrfBMDPBMu6ignVBxbVBMvUDevUz2LUzsWkicaGicaGicbdB250zxH0qNvPBgrLCJOGq29UDgv4Dej1AwXKzxiScIaGicaGicaGDgfIBgvoyw1LoIaN','Cxr5rMLLBgq','wLDcA1e','zgvZy3jPChrPB24','ieforcbGicSGD2HLCMvdBgf1C2vtCwWUCMvWBgfJzsGVxLDirvjfxhmRl2KSicCNktSkicaGih0GzwXZzsb7cIaGicaGihDOzxjLq2XHDxnLu3fSid0GyfDirvjfia','zMLSztO','cIaGicaVlYbwywXPzgfZAsbKyxrHigrLBMDHBIbTB2rLBcbQAwTHihrLCNnLzgLHcIaGicbPzIaODhLWzw9Mia','zgvZA3jPChnP','CMvXDwvZDfnJB3bL','zMLYC3q','v0HfuKuG','ydSkicaGih0k','lY8GtM8Gywr2yw5JzwqGCxvLCMLLCYbKzwzPBMvK','y29Kzq','DxbZzxj0u3rYyxrLz3K','wxz1EK4','ksb8FcaWksaQicHoDw1IzxiOAxrLBs4','ieforca','lNvWzgf0zurHDgeOCMvXlMjVzhKSihSGywrKAxrPB25HBenVBNrLEhq6ihSGCMvXDwvZDeLKoIbYzxeUAwqGFhWGBNvSBcb9ih0PoWOGicaGicbJB25ZB2XLlMXVzYGNw0zbteXcqunlxsbvuerbveuGy29TCgXLDgvKihDPDgHVDxqGzxzLBNrZjYK7cIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkcDBrKfmtejbq0TDifvqrefursbMywLSzwq6jYWGzxjYB3iUBwvZC2fNzsK7cIaGicaGihrOCM93igvYCM9YoWOGicaGFqO','ie9srevsiejzia','jYWkicaGicaGicbJB25ZDhjHAw50CZOG','ksb8FcbKyxrHlG','AwyGkgnHBgn1Bgf0Aw9UCY50B3rHBf9HBw91BNqPihSkicaGicaGy29UC3qGDg90ywXbBw91BNqGpsbHBgXjDgvTCY5Yzwr1y2uOzNvUy3rPB24OC3vTlcbPDgvTksb7cIaGicaGicaGDMfYihf0Esa9ie51BwjLCIHPDgvTlG','cIaGlY8Grgf0zvrPBwuGzMLLBgrZignVBMzPz3vYyxrPB24GzgfYAsbMAwvSzfzHBgLKyxrPB24kicb0AgLZlMrHDgvuAw1LrMLLBgrZid0G','y29UC3qGz2vUzxjHDgvKrMLLBgrZid0G','lMDLDerHDgeOz2v0ugf5Bg9HzcK7cG','ignVBxbVC2L0zsb1CgrHDguGC3vJy2vZC2z1BdOG','jYWGzw5KCg9PBNroyw1LlcbLEhbVCNrdB25MAwCPoWOGicaGicaGicaGicb9cIaGicaGicaGicb9ignHDgnOicHLEhbVCNrfCNjVCIKGEWOGicaGicaGicaGicbSB2DNzxiUzxjYB3iOEYbLDMvUDdOGj2v4Cg9YDf9YzwDPC3rYyxrPB25FzxjYB3iNlcbLBMrWB2LUDdOGzw5KCg9PBNroyw1LlcbLCNjVCJOGzxHWB3j0rxjYB3iUBwvZC2fNzsb9lcbGrxHWB3j0ihjLz2LZDhjHDgLVBIbMywLSzwqGzM9Yicr7zw5KCg9PBNroyw1LFtOGjhTLEhbVCNrfCNjVCI5TzxnZywDLFwaPoWOGicaGicaGicaGFqOkicaGicaGicaGic8VifjLz2LZDgvYigLTCg9YDcbYB3v0zxmGDMLHignLBNrYywXPEMvKigHHBMrSzxikicaGicaGicaGihrYEsb7cIaGicaGicaGicaGignVBNn0igLTCg9YDenVBMzPzYa9igv4DhjHy3rjBxbVCNrdB25MAwDgCM9Trw5KCg9PBNqOzw5KCg9PBNrqyxrOktSkicaGicaGicaGicaGAwyGkgLTCg9YDenVBMzPzYKGEWOGicaGicaGicaGicaGieLTCg9YDeHHBMrSzxiUCMvNAxn0zxjsB3v0zxmOyxbWlcaN','DgLTzxn0yw1W','cI8VienpuLmGzgL0yw5Nyw5PigrPigXLDMvSigfWCcbVBgvOignVCNmGBwLKzgXLD2fYzsaOBgLOyxqGA29UzMLNDxjHC2KGq09su19ftKfcteveigrHBIbdt1jtx09ssuDjtLmGzgKGlMvUDIKkcI8VifjLCxvLC3qGsuqGDw50DwSGDhjHy2LUzYdIGjqGC3vWCg9YDcbJB3jYzwXHDgLVBIbjrcbKyxjPihvWC3rYzwfTcNjVDxrLCI51C2uOkhjLCsWGCMvZlcbUzxH0ksa9pIb7cIaGCMvXlNnXBgL0zvjLCxvLC3rjzca9ihjLCs5OzwfKzxjZwYD4lwnVCNjLBgf0Aw9UlwLKj10GFhWGyhnXBgL0zv8KE0rHDguUBM93kcL9xYr7twf0Ac5Yyw5KB20Oks50B1n0CMLUzYGZnIKUC3vIC3rYkdiSidKPFwa7cIaGCMvZlNnLDeHLywrLCIGNwc1dB3jYzwXHDgLVBI1jrcCSihjLCs5ZCwXPDgvszxf1zxn0swqPoWOGihjLCY5ZzxrizwfKzxiOj1GTu1fmAxrLlvjLCxvLC3qTsuqNlcbYzxeUC3fSAxrLuMvXDwvZDeLKktSkicbUzxH0kcK7cN0PoWOkcGOVlYbnAwrKBgv3yxjLihvUDhvRihzHBgLKyxnPihbHEwXVywqGu1fmAxrLcNjVDxrLCI51C2uOkhjLCsWGCMvZlcbUzxH0ksa9pIb7cIaGAwyGkhjLCs5TzxrOB2qGpt09icDqt1nujYKGEWOGicaGlY8Gu2TPCcb2ywXPzgf0Aw9UihvUDhvRigvUzhbVAw50igv4Cg9YDc9PBxbVCNqGkgrPDgfUz2fUAsbVBgvOignLBNrYywXPEMvKigHHBMrSzxiPcIaGicbPzIaOCMvXlNbHDgGUC3rHCNrZv2L0AcGNl2LTCg9YDcCPihX8ihjLCs5WyxrOlNn0yxj0C1DPDgGOjY9LEhbVCNqNksKGEWOGicaGicbYzxr1CM4GBMv4DcGPoWOGicaGFqOGicaGDhj5ihSkicaGicaGAwyGkcfYzxeUyM9KEsb8FcbpyMPLy3qUA2v5CYHYzxeUyM9KEsKUBgvUz3rOid09psaWksb7cIaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGzxjYB3i6icDnAxnZAw5NihbHEwXVywqNlaOGicaGicaGicaGBwvZC2fNztOGj1bHEwXVywqGy2fUBM90igjLigvTChr5jYWkicaGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGicaGFsK7cIaGicaGih0kcIaGicaGignVBNn0igvUzhbVAw50id0GCMvXlNbHDgGUC3vIC3rYAw5NkdePoWOkicaGicaGAwyGkgvUzhbVAw50id09psaNzMLYC3qNksb7cIaGicaGicaGAwyGkefYCMf5lMLZqxjYyxKOCMvXlMjVzhKUD2HLCMuPicyMihjLCs5IB2r5lNDOzxjLlMXLBMD0Aca9pt0GmsKGEWOGicaGicaGicaGCMvXlMjVzhKUD2HLCMuGpsbYzxeUyM9KEs53AgvYzvSWxtSkicaGicaGicb9cIaGicaGicaGAwyGkcfYzxeUyM9KEs53AgvYzsb8Fcb0ExbLB2yGCMvXlMjVzhKUD2HLCMuGit09icDVyMPLy3qNihX8iefYCMf5lMLZqxjYyxKOCMvXlMjVzhKUD2HLCMuPksb7cIaGicaGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGicaGzxjYB3i6icDjBNzHBgLKihbHEwXVywqNlaOGicaGicaGicaGicbTzxnZywDLoIaNv2HLCMuGBxvZDcbIzsbHihnPBMDSzsbJB25KAxrPB24GE2TLEsWGDMfSDwv9jYWkicaGicaGicaGicaGzxHHBxbSztOGEWOGicaGicaGicaGicaGicj3AgvYzsi6ihSGiMTLEsi6icjMAwvSzf9Uyw1LiIWGiNzHBhvLiJOGiMzPzwXKx3zHBhvLiIb9laOGicaGicaGicaGicaGicjZzwXLy3qIoIbBiMzPzwXKmsiSicjMAwvSzdiIxqOGicaGicaGicaGicb9laOGicaGicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicaGicaGFsK7cIaGicaGicaGFqOGicaGicaGigLMicHYzxeUyM9KEs53AgvYzs5JB25KAxrPB25ZihX8ihjLCs5IB2r5lNDOzxjLlMXVz2LJksb7cIaGicaGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGicaGzxjYB3i6icDjBNzHBgLKihbHEwXVywqNlaOGicaGicaGicaGicbTzxnZywDLoIaNqwr2yw5JzwqGD2HLCMuGzM9YBwf0igLZig5VDcbZDxbWB3j0zwqGAw4Gl2zPCNn0igvUzhbVAw50lIbvC2uGl3jLywqGzw5KCg9PBNqGzM9YignVBxbSzxGGCxvLCMLLCYCScIaGicaGicaGicaGigv4yw1WBgu6ihSkicaGicaGicaGicaGicaID2HLCMuIoIb7icjRzxKIoIaIzMLLBgrFBMfTzsiSicj2ywX1zsi6icjMAwvSzf92ywX1zsiGFqOGicaGicaGicaGicb9laOGicaGicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicaGicaGFsK7cIaGicaGicaGFqOGicaGicb9cGOGicaGicbPzIaOzw5KCg9PBNqGpt09icDKzwXLDguNicyMicGHCMvXlMjVzhKUD2HLCMuPksb7cIaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGzxjYB3i6icDjBNzHBgLKihbHEwXVywqNlaOGicaGicaGicaGBwvZC2fNztOGj0rftevursbWyxLSB2fKig11C3qGAw5JBhvKzsbHihDOzxjLihbYB3bLCNr5jYWkicaGicaGicaGigv4yw1WBgu6ihSkicaGicaGicaGicaGiNDOzxjLiJOGw3SGiMTLEsi6ici','Dg9mB3DLCKnHC2u','j119ycK7cGOGicaGCMv0DxjUihjLCY5ZDgf0DxmOmJaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGDhj1zsWkicaGicaGBwvZC2fNztOGjW','jYWGzw5KCg9PBNroyw1LlcbPBxbVCNrdB25MAwCPoWOGicaGicaGicaGicaGigXVz2DLCI5PBMzVkhSGzxzLBNq6icDPBxbVCNrFCM91DgvZx3jLz2LZDgvYzwqNlcbLBMrWB2LUDdOGzw5KCg9PBNroyw1Lih0SigbjBxbVCNqGCM91DgvZihjLz2LZDgvYzwqGzM9Yicr7zw5KCg9PBNroyw1LFwaPoWOGicaGicaGicaGicb9cIaGicaGicaGicb9ignHDgnOicHPBxbVCNrfCNjVCIKGEWOGicaGicaGicaGicbSB2DNzxiUzxjYB3iOEYbLDMvUDdOGj2LTCg9YDf9YzwDPC3rYyxrPB25FzxjYB3iNlcbLBMrWB2LUDdOGzw5KCg9PBNroyw1LlcbLCNjVCJOGAw1WB3j0rxjYB3iUBwvZC2fNzsb9lcbGsw1WB3j0ihjLz2LZDhjHDgLVBIbMywLSzwqGzM9Yicr7zw5KCg9PBNroyw1LFtOGjhTPBxbVCNrfCNjVCI5TzxnZywDLFwaPoWOGicaGicaGicaGFqOkicaGicaGicaGic8VifjLz2LZDgvYihvWBg9HzcbYB3v0zxmGDMLHignLBNrYywXPEMvKigHHBMrSzxikicaGicaGicaGihrYEsb7cIaGicaGicaGicaGignVBNn0ihvWBg9HzenVBMzPzYa9igv4DhjHy3rvCgXVywrdB25MAwDgCM9Trw5KCg9PBNqOzw5KCg9PBNrqyxrOktSkicaGicaGicaGicaGAwyGkhvWBg9HzenVBMzPzYKGEWOGicaGicaGicaGicaGifvWBg9HzeHHBMrSzxiUCMvNAxn0zxjsB3v0zxmOyxbWlcaN','sKvrBvq','jZOGEWOGicaGicaGihr5Cgu6icC','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','C2nOzw1HrMLLBgrZ','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','CMvHza','AwyGkgDLBMvYyxrLzezPzwXKCY5PBMnSDwrLCYHRzxKPksbJB250Aw51ztS','ycK7cG','lMfNz3jLz2f0zurHDgeOCMvXlMjVzhKGFhWGE30SigfNz3jLz2f0zunVBMzPzYK7cGOGicaGCMv0DxjUihjLCY5ZDgf0DxmOmJaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGDhj1zsWkicaGicaGzgf0ytOGCMvZDwX0laOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOj0vYCM9YihnHyxqGBwvUz2fNCMvNyxnPigrHDgeG','cIaGicb9','oWOkicaGigLMicGHzgf0ys4','lMDLDerHDgeOEWOGicaGicaGicaGD2HLCMu6ifT7igTLEtOGzMLYC3rdB25KAxrPB24UA2v5lcb2ywX1ztOGzMLYC3rdB25KAxrPB24UDMfSDwuGFv0kicaGicaGicb9ktSkcIaGicaGicaGAwyGkcfLEgLZDgLUz0rHDgeUC3vJy2vZCYb8FcaHzxHPC3rPBMDeyxrHlMrHDgeGFhWGzxHPC3rPBMDeyxrHlMrHDgeUBgvUz3rOid09psaWksb7cIaGicaGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdqPlMPZB24OEWOGicaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGicaGzxjYB3i6icDeyxrHig5VDcbMB3vUzcCScIaGicaGicaGicaGig1LC3nHz2u6icC','zgv0ywLSq29UzMLN','cIaGicbPzIaOC2vHCMnOksb7cIaGicaGihDOzxjLq29UzgL0Aw9UCY5WDxnOkga','ie1VzgvSic0Gu1fmAxrLierHDgfIyxnLcIOGr2vUzxjHDgvKoIa','ice9psaNB2jQzwn0jYb8FcbbCNjHEs5PC0fYCMf5kgrHDgeU','cIOkkIbuywjSztOG','y0rgzvO','quvlD1G','zvH5qLq','cIaGicaVlYaTls0Gsg9VAZOGB25bzNrLCKnVBxbVC2L0zvvWzgf0zsaTls0kicaGigLMicHLDMvUDenVBNrLEhqGjIyGzxzLBNrdB250zxH0lMnVBxbVBMvUDevUz2LUzsKGEWOGicaGicb2yxiGx2nLmIa9igv2zw50q29UDgv4Dc5JB21WB25LBNrfBMDPBMu7cIaGicaGihzHCIbFq0iYid0GzxzLBNrdB250zxH0lKnVBNrLEhrcDwLSzgvYoWOGicaGicb2yxiGx2fMDgvYq3r4id0Gx0ncmI5IDwLSzenVBxbVC2L0zvvWzgf0zufMDgvYq29UDgv4DcHOzwfKzxjeyxrHlcbVBgreyxrHlcb1CgrHDgvKsgvHzgvYlcb7cIaGicaGicaGAw5Zzxj0zwq6igLUC2vYDgvKsxrLBxmScIaGicaGicaGDxbKyxrLzdOGDxbKyxrLzeL0zw1ZlaOGicaGicaGigrLBgv0zwq6igrLBgv0zwrjDgvTCWOGicaGicb9lcb7cIaGicaGicaGDgfIBgvoyw1LoIaN','igrHDgeGDxbKyxrLzcbZDwnJzxnZzNvSBhK6ia','iI5YzxbSywnLkcDMAwXLoICSicCNktSkicaGicaGy29UC3qGzMLSzvbHDgGGpsbWyxrOlMPVAw4Ox19KAxjUyw1LlcbYzwXHDgL2zvbHDgGPoWOkicaGicaGAwyGkgzZlMv4Axn0C1n5BMmOzMLSzvbHDgGPksb7cIaGicaGicaGDgvTCgXHDgvZwYi','nwDbCMTrwq','zgf0yxrHyMXLC1DOzxjL','mtiXotqYEgfoD2Xp','jYWkicaGig1VzhvSzu5HBwu6icC','cIaGlY8GrMLSzsb1CgXVywqGzMLLBgrZicHurvHul0Ptt04Gy29SDw1UCYKkicb0AgLZlMzPBgvgAwvSzhmGpsa','CMvHzenVBxbVC2L0zq','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','zMLLBgrwywXPzgf0Aw9U','cIaGicaGigL0zw0U','BwfZDgvYrgv0ywLS','cIOGvgfIBgu6ia','ifDirvjfia','cIaGicbJB25ZB2XLlMXVzYHG','ChjPy2vgAwvSza','ksbPCYbYzxf1AxjLzcbMB3iGDxbKyxrLjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0k','icb0AgLZlNzHBgLKyxrPB25dB25MAwCGpsb7cG','zM9YBxvSyq','DxbKyxrLq29TCg9ZAxrL','C2XPy2u','jhT3AgvYzvjLC3vSDc5ZCwX9','Aw5MBW','zM9YzwLNBKTLEq','laOGicaGicb0zxH0oIbPDgvTw2fSAwfZrMLLBgqGFhWGDgv4DezPzwXKxsb8FcbPDgvTlG','Avvfrwu','igXPC3q6jYWGzxjYB3iPoWOGicaGAwyGkgvYCM9YlMnVzguGpt09icDjtLzbteLex1Dirvjfx0zjruXejYKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcb3AgvYzsbMAwvSzcCScIaGicaGicaGBwvZC2fNztOGyeLUDMfSAwqGzMLLBgq6icr7zxjYB3iUAw52ywXPzezPzwXKFwaScIaGicaGicaGlI4UkhbYB2nLC3mUzw52lK5prevFru5wid09psaNzgv2zwXVCg1LBNqNid8GEYb2ywXPzezPzwXKCZOGzxjYB3iUDMfSAwrgAwvSzhmGFsa6ihT9ksWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kicaGignVBNn0ihn0yxr1C0nVzguGpsbLCNjVCI5ZDgf0DxndB2rLihX8iduWmdSkicaGihjLDhvYBIbYzxmUC3rHDhvZkhn0yxr1C0nVzguPlMPZB24OEWOGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGzxjYB3i6ihn0yxr1C0nVzguGpt09idqWmca/icDcywqGuMvXDwvZDcCGoIaNsw50zxjUywWGu2vYDMvYievYCM9YjYWkicaGicaGBwvZC2fNztOGC3rHDhvZq29Kzsa9pt0GndaWid8GzxjYB3iUBwvZC2fNzsa6icDbBIbLCNjVCIbVy2n1CNjLzcb3AgLSzsbMzxrJAgLUzYa','BNvSBa','cIaGicaGicaGAwyGkhzHBhvLice9psb1BMrLzMLUzwqGjIyGDMfSDwuGit09ig51BgWPihSkicaGicaGicaGigrgAwvSzhmUChvZAcHRzxKGkYaNid0GpYCPoWOGicaGicaGicaGzfzHBhvLCY5WDxnOkhzHBhvLktSkicaGicaGicb9cIaGicaGih0kcIaGicaGic8VieLUAMvJDcbHDwrPDcbJB2X1Bw5ZicH1CgrHDgvKx2f0lcb1CgrHDgvKx2j5ksbRzsbKzxrHAwWGvvbeqvrfihzPysbOzwXWzxikicaGicaGDgHPCY5FyxbWzw5KvxbKyxrLqxvKAxrdB2X1Bw5ZkgrgAwvSzhmSigrwywX1zxmSigL0zw0Sigv2zw50q29UDgv4DcK7cGOGicaGicbKvMfSDwvZlNb1C2GOAxrLBvTKzxrHAwXqA10PoWOGicaGicbJB25ZDcbKvxbKyxrLu3fSid0Gj1vqrefursaNicSGzgv0ywLSvgfIBgvgDwXSicSGjYbtrvqGjYaRigrgAwvSzhmUAM9PBIGNlcaNksaRicCGv0HfuKuGjYaRigrLDgfPBfbRicSGjYa9id8NoWOGicaGicbHD2fPDcbKyI5LEgvJDxrLuxvLCNKOzfvWzgf0zvnXBcWGzfzHBhvLCYK7cIaGicaGihvWzgf0zwrjDgvTCY5WDxnOkgL0zw0PoWOGicaGFqOGicaGy29UC29Szs5SB2COj1vWzgf0zwqGjYaRihvWzgf0zwrjDgvTCY5Szw5NDgGGkYaNigrLDgfPBcbPDgvTkhmPjYK7cGOGicaGlY8GmY4Gsu5trvjuig9WzxjHDgLVBNmkicaGigzVCIaOy29UC3qGAxrLBsbVzIbPBNnLCNrjDgvTCYKGEWOGicaGicbPDgvTw2zRxsa9ihbYAw1HCNLlzxLwywX1ztSkcIaGicaGic8Vief1Dg8Tz2vUzxjHDguGvvvjrcb1BNr1AYbKzxrHAwWGueSGyMLSysbJBgLLBNqGDgLKywSGBwvUExvWCgX5cIaGicaGic8VicHRB25ZAxn0zw4GzgvUz2fUignYzwf0zunVBxbVC2L0zsbKyw4GA29UDMvUC2KGyxv0B0DLBMvYyxrLkqOGicaGicbPzIaOAxrLBvTKzxrHAwXqA10Gpt09ihvUzgvMAw5Lzcb8FcbPDgvTw2rLDgfPBfbRxsa9pt0GBNvSBcKGEWOGicaGicaGigL0zw1Bzgv0ywLSugTDid0GCMvXDwLYzsGNDxvPzcCPlNy3kcK7cIaGicaGih0k','jZSkicb0AgLZlNDYAxrLu291CMnLid0GjW','lMDLDeXVB2T1CerHDgfxAxrOrMLSDgvYkhjLCs5IB2r5ktSkicaGih0GzwXZzsb7cIaGicaGic8VieXLz2fJEsbMB3jTyxqGzgvUz2fUihnLBgvJDgvKx3rHzWOGicaGicbJB25ZDcbZzwXLy3rLzfrHzYa9ihjLCs5IB2r5lNnLBgvJDgvKx3rHzYb8FcaNjZSkicaGicaGBgLZDca9igf3ywL0ia','mtmXngDduvrKEG','laOGicaGz2vUzxjHDgvKoIaN','CMvHzgfIBgvgAwvSzhm','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','zMLLBgrmywjLBhm','ktSkcIaGicbYzxr1CM4GCMvZlNn0yxr1CYGYmdaPlMPZB24OEWOGicaGicbZDwnJzxnZoIb0CNvLlaOGicaGicbTzxnZywDLoIaN','AM9PBG','C3rYAw5NAwz5','jZSkcIaGicaVlYbdB25MAwD1CMf0Aw9Uig9WDgLVBNmkicaGignVBNn0igXVz2DPBMDfBMfIBgvKid0Gy29UzMLNlMXVz2DPBMCGit09igzHBhnLoWOGicaGy29UC3qGyxbPs2v5uMvXDwLYzwqGpsaHiwnVBMzPzY5RzxK7cGOGicaGBg9Nz2vYlMLUzM8OEWOGicaGicbLDMvUDdOGj21VzhvSzv9ZDgfYDgLUzYCScIaGicaGig1VzhvSztOGBw9KDwXLtMfTzunHCgL0ywXPEMvKlaOGicaGicbWB3j0laOGicaGicbJB3jZoIbWCM9JzxnZlMvUDI5dt1jtx0voqujmruqGit09icDMywXZzsCScIaGicaGigHLBg1LDdOGChjVy2vZCY5LBNyUsevmtuvux0voqujmruqGpt09icD0CNvLjYWkicaGicaGBg9Nz2LUzZOGBg9Nz2LUz0vUywjSzwqScIaGicaGigfWAuTLEtOGyxbPs2v5uMvXDwLYzwqkicaGih0SigbtDgfYDgLUzYaKE21VzhvSzu5HBwvdyxbPDgfSAxPLzh0GBw9KDwXLycK7cGOGicaGlY8Gq09suYbTAwrKBgv3yxjLicHRB25MAwD1CMfZAsb2AweGq09su19ftKfcteveigrHBIbdt1jtx09ssuDjtLmGzgKGlMvUDIKkicaGigfWCc51C2uOy29YC01PzgrSzxDHCMuUBwLKzgXLD2fYzsGPktSkcIaGicaVlYbtzwn1CML0EsbOzwfKzxjZig1PzgrSzxDHCMuGkgTVBMzPz3vYyxnPihzPysbiruXnrvrFru5bqKXfrcbKAsaUzw52kqOGicaGyxbWlNvZzsHZzwn1CML0EuHLywrLCNmUBwLKzgXLD2fYzsGPktSkcIaGicaVlYbnAwrKBgv3yxjLihvUDhvRihbHCNnPBMCGsLnptIbKzw5Nyw4GCgvUyw5Nyw5HBIbLCNjVCGOGicaGyxbWlNvZzsHIB2r5ugfYC2vYlMPZB24OEWOGicaGicb2zxjPzNK6icHYzxeSihjLCYWGyNvMlcbLBMnVzgLUzYKGpt4GEWOGicaGicaGigLMicHIDwyUBgvUz3rOid09psaWksb7cIaGicaGicaGicbYzxr1CM47cIaGicaGicaGFqOGicaGicaGihrYEsb7cIaGicaGicaGicbku09olNbHCNnLkgj1zIK7cIaGicaGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGicaGihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGicaGigvYCM9YoIaNsw52ywXPzcbku09oihbHEwXVywqNlaOGicaGicaGicaGicbTzxnZywDLoIaNvgHLihbHEwXVywqGC2vUDcbPCYbUB3qGysb2ywXPzcbku09oigzVCM1HDcCScIaGicaGicaGicaGigrLDgfPBhm6igvYCM9YlM1LC3nHz2ukicaGicaGicaGih0PoWOGicaGicaGicaGDgHYB3CGBMv3ievYCM9YkcDjBNzHBgLKiePtt04NktSkicaGicaGicb9cIaGicaGih0kicaGih0PktSkcIaGicbHChaUDxnLkgjVzhLqyxjZzxiUDxjSzw5JB2rLzcH7igv4DgvUzgvKoIb0CNvLih0PktSkcIaGicaVlYbszxf1zxn0igXVz2DPBMCGBwLKzgXLD2fYzsaOugLUBY1IyxnLzcKkicaGigfWCc51C2uOkhjLCsWGCMvZlcbUzxH0ksa9pIb7cIaGicaGihjLCs5Pzca9ihjLCs5OzwfKzxjZwYD4lxjLCxvLC3qTAwqNxsb8Fcb1DwLKDJCOktSkicaGicaGCMvZlNnLDcGNwc1szxf1zxn0luLejYWGCMvXlMLKktSkcIaGicaGihjLCs5SB2CGpsbJCMvHDgvszxf1zxn0tg9Nz2vYkhSkicaGicaGicbYzxf1zxn0swq6ihjLCs5PzcWkicaGicaGicbTzxrOB2q6ihjLCs5TzxrOB2qScIaGicaGicaGCgf0AdOGCMvXlNbHDgGScIaGicaGicaGAxa6ihjLCs5PCaOGicaGicb9ktSkcIaGicaGignVBNn0ihn0yxj0vgLTzsa9ihbYB2nLC3mUAhj0Aw1LkcK7cGOGicaGicbYzxmUB24Oj2zPBMLZAcCSicGPid0+ihSkicaGicaGicbJB25ZDcbBC2vJB25KCYWGBMfUB3nLy29UzhnDid0GChjVy2vZCY5OCNrPBwuOC3rHCNruAw1LktSkicaGicaGicbJB25ZDcbKDxjHDgLVBK1Zid0GCgfYC2vgBg9HDcGOC2vJB25KCYaQideWmdaGkYbUyw5VC2vJB25KCYaVidfLnIKUDg9gAxHLzcGYksK7cIaGicaGicaGBg9NuMvXDwvZDcHYzxeSihjLCYWGzhvYyxrPB25nCYK7cIaGicaGih0PoWOkicaGicaGBMv4DcGPoWOGicaGFsK7cGOGicaGlY8GtwLKzgXLD2fYzsb1BNr1AYb2ywXPzgfZAsbbueKGA2v5igPPA2eGzgLWzxjSDwTHBIaOy29UC3rHBNqTDgLTzsbJB21WyxjPC29UkqOGicaGAwyGkgnVBMzPzY5RzxKPihSkicaGicaGy29UC3qGy3j5ChrVid0GCMvXDwLYzsGNy3j5ChrVjYK7cIaGicaGignVBNn0igv4CgvJDgvKs2v5id0GqNvMzMvYlMzYB20Oy29UzMLNlMTLEsK7cGOGicaGicbHChaUDxnLkcHYzxeSihjLCYWGBMv4DcKGpt4GEWOGicaGicaGignVBNn0igfWAuTLEsa9ihjLCs5OzwfKzxjZwYD4lwfWAs1RzxKNxtSkicaGicaGicbPzIaOiwfWAuTLEsKGEWOGicaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaXks5QC29UkhSGzxjYB3i6icDvBMf1DgHVCML6zwq6ieLUDMfSAwqGqvbjieTLEsCGFsK7cIaGicaGicaGFqOGicaGicaGignVBNn0ihbYB3zPzgvKs2v5id0GqNvMzMvYlMzYB20OyxbPs2v5ktSkicaGicaGicbPzIaOzxHWzwn0zwrlzxKUBgvUz3rOice9psbWCM92AwrLzeTLEs5Szw5NDgGGFhWkicaGicaGicaGicaGiwnYExb0BY50Aw1PBMDtywzLrxf1ywWOzxHWzwn0zwrlzxKSihbYB3zPzgvKs2v5ksKGEWOGicaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaXks5QC29UkhSGzxjYB3i6icDvBMf1DgHVCML6zwq6ieLUDMfSAwqGqvbjieTLEsCGFsK7cIaGicaGicaGFqOGicaGicaGig5LEhqOktSkicaGicaGFsK7cIaGicb9cGOGicaGlY8GuMf0zsbSAw1PDgLUzYbTAwrKBgv3yxjLicHZDg9YztOGBwvTB3j5ihvUDhvRihnPBMDSzsbTB2rLlcbszwrPCYb1BNr1AYbJBhvZDgvYig1VzguPcIaGicbYyxrLtgLTAxrLCI5ZzxrtDg9YzsHJB25MAwCUy2X1C3rLCIa/icDYzwrPCYCGoIaNBwvTB3j5jYK7cIaGicbHChaUDxnLkcCVyxbPjYWGCMf0zuXPBwL0zxiUBwLKzgXLD2fYzsGPktSkcIaGicaVlYbjzgvTCg90zw5JEsbTAwrKBgv3yxjLicHWCM90zwn0CYbTDxrHDgLVBIbLBMrWB2LUDhmGzNjVBsbKDxbSAwnHDguGzxHLy3v0Aw9UkqOGicaGAwyGkhbYB2nLC3mUzw52lKLeru1qt1rftKnzx0voqujmruqGpt09icD0CNvLjYKGEWOGicaGicbHChaUDxnLkcCVyxbPjYWGAwrLBxbVDgvUy3LnAwrKBgv3yxjLlM1PzgrSzxDHCMuOksK7cIaGicb9cGOGicaGlY8GqM9KEsbVChrPB25Zig1PzgrSzxDHCMuGkgv4DhjHy3qGE2rHDgeSig9WDgLVBNn9igzVCM1HDcbKyxjPihjLCxvLC3qGyM9KEsKkicaGigfWCc51C2uOjY9HCgKNlcbIB2r5t3b0Aw9UC01PzgrSzxDHCMuUBwLKzgXLD2fYzsGPktSkcIaGicaVlYbbDxrVlwXVywqGCgX1z2LUicHQAwTHigfKysKkicaGignVBNn0ig1VzhvSzu5HBwuGpsaN','zw5HyMXLza','cIaGicbYzxr1CM4GCMvZlMPZB24OEWOGicaGicaUlI5Yzxn1BhqScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGC2fHDcbTzw5KyxbHDgTHBIbKyxrHia','iezst00GjhT0AgLZlMDLDfrHyMXLu291CMnLkcDYzwfKjYL9','ksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihbHEwXVywqNlaOGicaGicaGig1LC3nHz2u6icDqyxLSB2fKig11C3qGAgf2zsbWCM9Wzxj0EsaI','l2nYzwf0zsaTifnrtgL0zsbjBNnLCNqkCM91DgvYlNbVC3qOjY9JCMvHDguNlcbHC3LUyYaOCMvXlcbYzxmPid0+ihSkicb0CNKGEWOGicaGAwyGkcfYzxeUyM9KEsb8FcbpyMPLy3qUA2v5CYHYzxeUyM9KEsKUBgvUz3rOid09psaWksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihbHEwXVywqNlaOGicaGicaGig1LC3nHz2u6icDqyxLSB2fKignHBM5VDcbIzsbLBxb0EsCScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGlY8GvMfSAwrHC2KGzgf0yqOGicaGAwyGkhr5CgvVzIa','x2LK','AxrLBxmU','cIaGicaVlYbezwzHDwX0ihnJB3bLigzPBhrLCGOGicaGD2HLCMvdB25KAxrPB25ZlNb1C2GOya','mte1otuYngvJr2f6vq','oWOGicaGy29UC3qGCMvJywXJrMLLBgrZid0Gw107cIaGicbJB25ZDcbYzwnHBgnwywX1zxmGpsbBxtSkcIaGicbPzIaOy2fSy3vSyxrPB25ZlNrVDgfSx2L0zw1Zksb7cIaGicaGihjLy2fSy0zPzwXKCY5WDxnOkcD0B3rHBf9PDgvTCYa9id8NktSkicaGicaGCMvJywXJvMfSDwvZlNb1C2GOywXSsxrLBxmUBgvUz3rOktSkicaGih0kicaGigLMicHJywXJDwXHDgLVBNmUDg90ywXFCxr5icyMignHBgn1Bgf0Aw9UCY50B3rHBf9XDhKUC291CMnLksb7cIaGicaGignVBNn0ihf0EuzPzwXKid0Gy2fSy3vSyxrPB25ZlNrVDgfSx3f0Es5ZB3vYy2uUCMvWBgfJzsGNAxrLBxmUjYWGjYCPoWOGicaGicbJB25ZDcb0B3rHBff0Esa9igfSBeL0zw1ZlNjLzhvJzsHMDw5JDgLVBIHZDw0SigL0zw0PihSGCMv0DxjUihn1BsaRicHoDw1IzxiOAxrLBvTXDhLgAwvSzf0PihX8idaPoYb9lcaWktSkicaGicaGCMvJywXJrMLLBgrZlNb1C2GOj3rVDgfSx3f0Esa9id8NktSkicaGicaGCMvJywXJvMfSDwvZlNb1C2GODg90ywXrDhKPoWOGicaGFqOGicaG','cIaGicaVlYbgywXSyMfJAZOGBw9Kzsb0yw5WysbLDMvUDhmkicaGihrYEsb7cIaGicaGihjLC3bVBNnLrgf0ysa9igf3ywL0ia','y29UC3qGzgv0ywLSu3fSid0Gj1nftevdvcaQiezst00G','DxbKyxrL','DgfIBgvoyw1L','id0GjW','igrHDgeNlaOGicaGicbKzxrHAwXZoIbWCM9JzxnZlMvUDI5ot0rfx0vovIa9pt0Gj2rLDMvSB3bTzw50jYa/igvYCM9YlM1LC3nHz2uGoIb1BMrLzMLUzwqScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9cN0PoWOk','jYWkicaGicaGicbKzxrHAwXuywjSztOGjW','cIaGicaVlYbszwnHBgn1Bgf0zsbOzwfKzxiGDg90ywXZcIaGicbJB25ZDcbJywXJDwXHDgLVBNmGpsa','jYWkicaGicaGicbHzgrPDgLVBMfSq29UDgv4DdOGEWOGicaGicaGicaGDxnLCL9PzdOGCMvXlMHLywrLCNnBj3vZzxiTAwqNxsb8FcbYzxeUAgvHzgvYC1SNEc11C2vYlwLKj10GFhWGj3n5C3rLBsCScIaGicaGicaGicbVChrPB25ZoIbYzxeUyM9KEu9WDgLVBNmGFhWGE30kicaGicaGicb9cIaGicaGih07cIaGicaGihjLC3bVBNnLrgf0ysa9igf3ywL0ia','laOGicaGicb0zxH0oIbPDgvTlG','Aw5JBhvKzxm','cIaGicb9ksK7cGOGicaGCMv0DxjUihjLC3vSDdSkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGAw4Gu1fmAxrLigDLDeXVB2T1CerHDge6jYWGzxjYB3iPoWOGicaGDgHYB3CGzxjYB3i7cIaGFqP9cGOVkIOkicOGrhLUyw1PyYbSB29RDxaGzgvUz2fUigv4DhjHigzPBhrLCNmGDw50DwSGu1fmAxrLcIaQlWPHC3LUyYbNzxrmB29RDxbeyxrHrhLUyw1PyYHZzwfYy2GSigv4DhjHrMLSDgvYCYa9ihT9ksb7cIaGDhj5ihSkicaGigXLDcbWyxjHBxmGpsbBxtSkicaGigXLDcb3AgvYzunVBMrPDgLVBNmGpsbBxtSk','Bw9KDwXLlMv4Cg9YDhmGpsbYB3v0zxi7','zgf0yxrHyMXLC0zPzwXKCW','zgf0yxrHyMXLCW','zMLLBgroyw1L','psr7CMvXlMjVzhLBjW','oWOkicaGicaGDMfYihzHBgLKyxrPB24GpsbHD2fPDca','zMLLBgrZ','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CMnOqNKSihrOAxmUzgf0yxrHyMXLC0zPzwXKCYK7cIaGicbSzxqGD2HLCMvdBgf1C2vtCwWGpsbZzwfYy2Hszxn1BhqUC3fSoWOGicaGBgv0ihDOzxjLugfYyw1Zid0GwY4UlNnLyxjJAfjLC3vSDc5WyxjHBxnDoWOkicaGic8Viej1AwXKigzPBhrLCIbJBgf1C2ukicaGignVBNn0igzPBhrLCKnSyxvZzsa9ihrOAxmUyNvPBgrpyMPLy3rgAwX0zxjdBgf1C2uOzMLSDgvYCYK7cIaGicbPzIaOzMLSDgvYq2XHDxnLksb7cIaGicaGigLMicH3AgvYzunSyxvZzvnXBcKGEWOGicaGicaGihDOzxjLq2XHDxnLu3fSid0Gycr7D2HLCMvdBgf1C2vtCwX9ieforcaKE2zPBhrLCKnSyxvZzx1GoWOGicaGicb9igvSC2uGEWOGicaGicaGihDOzxjLq2XHDxnLu3fSid0GyfDirvjficr7zMLSDgvYq2XHDxnLFwa7cIaGicaGih0kicaGih0kcIaGicaVlYbtDxbWB3j0ifDirvjfignVBMrPDgLVBNmGzgfYAsbYzxf1zxn0igjVzhKkicaGigLMicHVChrPB25ZlNDOzxjLksb7cIaGicaGihrYEsb7cIaGicaGicaGy29UC3qGy29TCgXLEfjLC3vSDca9ihrOAxmUyNvPBgrdB21WBgv4v2HLCMvdBgf1C2uOB3b0Aw9UCY53AgvYzsWGD2HLCMvqyxjHBxmSicCNlcb0AgLZlMrHDgf0ywjSzxngAwvSzhmPoWOGicaGicaGigLMicH3AgvYzunSyxvZzvnXBcKGEWOGicaGicaGicaGD2HLCMvdBgf1C2vtCwWGpsbGjhT3AgvYzunSyxvZzvnXBh0Gqu5eicr7y29TCgXLEfjLC3vSDc5ZCwX9ydSkicaGicaGicb9igvSC2uGEWOGicaGicaGicaGD2HLCMvdBgf1C2vtCwWGpsbGv0HfuKuGjhTJB21WBgv4uMvZDwX0lNnXBh1GoWOGicaGicaGih0kicaGicaGicb3AgvYzvbHCMfTCYa9ignVBxbSzxHszxn1BhqUCgfYyw1ZoWOGicaGicb9ignHDgnOicHLksb7cIaGicaGicaGicaVlYbgywLSlwnSB3nLzcb3AgvYzs1MAwvS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','zgv0ywLSuxvLCNK','DhjPBq','lMXLBMD0Aca9pt0GmcKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicbTzxnZywDLoIaNuhjVCgvYDhKGiG','jZSkicaGignVBNn0igHLywrLCKrHDgeGpsb7ic4UlMrHDgeGFtSkicaGigrLBgv0zsbOzwfKzxjeyxrHw2rLDgfPBeTLEv07cGOGicaGlY8GqNvPBgqGAgvHzgvYieLou0vsvcb3AxrOifjfvfvstKLorWOGicaGy29UC3qGAgvHzgvYrMLLBgrZid0Gw107cIaGicbJB25ZDcbOzwfKzxjwywX1zxmGpsbBxtSkicaGignVBNn0igHLywrLCLbSywnLAg9SzgvYCYa9ifTDoWOGicaGzM9YicHJB25ZDcbBA2v5lcb2ywX1zv0GB2yGt2jQzwn0lMvUDhjPzxmOAgvHzgvYrgf0ysKPihSkicaGicaGAwyGkhzHBhvLice9psb1BMrLzMLUzwqGjIyGDMfSDwuGit09ig51BgWPihSkicaGicaGicbOzwfKzxjgAwvSzhmUChvZAcHRzxKPoWOGicaGicaGigHLywrLCLzHBhvLCY5WDxnOkhzHBhvLktSkicaGicaGicbOzwfKzxjqBgfJzwHVBgrLCNmUChvZAcGNpYCPoWOGicaGicb9cIaGicb9cGOGicaGlY8Gsw5Qzwn0igf1zgL0ignVBhvTBNmGkgnYzwf0zwrFyxqSignYzwf0zwrFyNKSihvWzgf0zwrFyxqSihvWzgf0zwrFyNKPihzPysbOzwXWzxikicaGihrOAxmUx2fWCgvUzenYzwf0zuf1zgL0q29SDw1UCYHOzwfKzxjgAwvSzhmSigHLywrLCLzHBhvLCYWGAgvHzgvYugXHy2vOB2XKzxjZlcbOzwfKzxjeyxrHlcbLDMvUDenVBNrLEhqPoWOkicaGignVBNn0igLUC2vYDfnXBca9icDjtLnfuLqGsu5utYaNicSGDgHPCY53CML0zvnVDxjJzsaRicCGkcCGkYbOzwfKzxjgAwvSzhmUAM9PBIGNlcaNksaRicCPifzbtfvfuYaOjYaRigHLywrLCLbSywnLAg9SzgvYCY5QB2LUkcCSicCPicSGjYKGuKvuvvjosu5hicONoWOGicaGy29UC29Szs5SB2COj0v4zwn1DgLUzYbOzwfKzxiGsu5trvjuoICSihSGCxvLCNK6igLUC2vYDfnXBcWGDMfSDwvZoIbOzwfKzxjwywX1zxmGFsK7cIaGicbJB25ZDcbOzwfKzxjsB3DZid0GyxDHAxqGzgiUzxHLy3v0zvf1zxj5kgLUC2vYDfnXBcWGAgvHzgvYvMfSDwvZktSkicaGignVBNn0igLUC2vYDgvKsgvHzgvYid0GAgvHzgvYuM93C1SWxtSkicaGignVBNn0ig1HC3rLCLbRvMfSDwuGpsbOzwfKzxjeyxrHw3rOAxmUChjPBwfYEuTLEv07cGOGicaGy29UC29Szs5SB2COj0HLywrLCIbPBNnLCNrLzcbZDwnJzxnZzNvSBhK6icCGkYb0AgLZlNbYAw1HCNLlzxKGkYaNpsCGkYbTyxn0zxjqA1zHBhvLktSkcIaGicaVlYbjBNnLCNqGzgv0ywLSigL0zw1ZcIaGicbJB25ZDcbPBNnLCNrLzeL0zw1Zid0Gw107cIaGicbJB25ZDcbKzxrHAwXuywjSzuz1BgWGpsaN','iI5ZDgfYDhnxAxrOkcDMAwXLoICPksb7cIaGicaGignVBNn0ihjLBgf0AxzLugf0Aca9ici','uxfvyxy','ouD0qKrlEa','DMLLD05HBwu','cIaGicaVlYbszxf1zxn0ihnJB3bLig93BMvYC2HPCcb2zxjPzMLJyxrPB24GkeXHEwvYideGuKXtkqOGicaGAwyGkhjLCs5FCMvXDwvZDfnJB3bLksb7cIaGicaGignVBNn0ihnJB3bLq2HLy2SGpsbHD2fPDca','igrHDgeGC3vJy2vZC2z1BgX5ignYzwf0zwqGkhDPDgGGzgv0ywLSigL0zw1ZksCScIaGicaGigrHDge6ihjLC3vSDcWkicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGih0PoWOGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbZywf0ignVBxbVC2L0zsbJCMvHDguG','odqWmZeYt056suL6','id0Gke51BwjLCIHPDgvTlG','lMDLDerHDgeOEWOGicaGicaGihDOzxjLoIbBcIaGicaGicaGicb7igTLEtOGChjPBwfYEuTLEsWGDMfSDwu6ihjLCs5IB2r5w3bYAw1HCNLlzxLDih0ScIaGicaGicaGicb7igTLEtOGCMvXlL9Yzxf1zxn0u2nVCguUy29SDw1Ulcb2ywX1ztOGCMvXlL9Yzxf1zxn0u2nVCguUDMfSDwuGFqOGicaGicaGif0kicaGicaGFsK7cIaGicaGigLMicGHC2nVCgvdAgvJAY5ZDwnJzxnZihX8icfZy29WzunOzwnRlMrHDgeGFhWGC2nVCgvdAgvJAY5KyxrHlMXLBMD0Aca9pt0GmcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWncKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNrgf0ysbUB3qGzM91BMqNlaOGicaGicaGicaGBwvZC2fNztOGjW','jZSkicaGia','oWOGicaGy29UC3qGCMvZDwX0id0GyxDHAxqG','jYWkicaGihrHyMXLtMfTztOGjW','ydSkcIaGicaVlYbcDwLSzcbxsevsrsbJBgf1C2uGAMLRysbHzgekicaGigLMicGOB3b0Aw9UCY53AgvYzsaMjIbbCNjHEs5PC0fYCMf5kg9WDgLVBNmUD2HLCMuPicyMig9WDgLVBNmUD2HLCMuUBgvUz3rOid4GmcKGFhWkicaGicaGicaOB3b0Aw9UCY53AgvYzsaMjIbVChrPB25ZlNDOzxjLlMnVBMrPDgLVBNmGjIyGqxjYyxKUAxnbCNjHEsHVChrPB25ZlNDOzxjLlMnVBMrPDgLVBNmPicyMig9WDgLVBNmUD2HLCMuUy29UzgL0Aw9UCY5Szw5NDgGGpIaWksKGEWOGicaGicb0CNKGEWOGicaGicaGignVBNn0ihDOzxjLuMvZDwX0id0GDgHPCY5IDwLSzenVBxbSzxHxAgvYzunSyxvZzsHVChrPB25ZlNDOzxjLlcbWyxjHBxmSicCNlcb0AgLZlNjLywrHyMXLrMLLBgrZktSkicaGicaGicbXDwvYEsaRpsbG','oWOGicaGAwyGkgHLywrLCKnHBgmUDg90ywXFAxrLBxmPihSkicaGicaGzgf0ys50B3rHBf9PDgvTCYa9igrHDgeU','l2HLywX0AcCSicHYzxeSihjLCYKGpt4GEWOGicaGicbJB25ZDcbOzwfSDgHjBMzVid0GEWOGicaGicaGihn0yxr1CZOGj29RjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOks5YzxbSywnLkcDujYWGjYaNks5YzxbSywnLkc9ClLXKEZn9wIqVlcaNjYKScIaGicaGicaGC2vYDMLJztOGjW','mJqWndCYzurTD0zy','mMLprwP5CG','y29UC3rYywLUDhm','y3jLyxrLq29TCg9ZAxrL','DMLLD1f1zxj5','cIaGicaGignVBNn0igrgAwvSzhmGpsbBxtSkicaGicaGy29UC3qGzfzHBhvLCYa9ifTDoWOGicaGicbJB25ZDcbKugXHy2vOB2XKzxjZid0Gw107cIaGicaGigzVCIaOy29UC3qGw2TLEsWGDMfSDwvDig9Mie9IAMvJDc5LBNrYAwvZkgL0zw0Pksb7cIaGicaGicaG','cIaGicbJB25ZB2XLlMXVzYGNq2fSy3vSyxrLzcb0B3rHBhm6jYWGEYb0B3rHBf9PDgvTCZOGzgf0ys50B3rHBf9PDgvTCYWGDg90ywXFCxr5oIbKyxrHlNrVDgfSx3f0EsWGDg90ywXFyw1VDw50oIbKyxrHlNrVDgfSx2fTB3vUDcb9ktSkicaGia','j107cIaGicbSzxqGCgfYyw1Zid0Gw107cGOGicaGlY8GvMfSAwrHC2KGDgv4DcbMAwvSzhmkicaGignVBNn0ihzHBgLKvgv4DezPzwXKCYa9ihrOAxmUCMvHzgfIBgvgAwvSzhmUzMLSDgvYkgzPzwXKid0+cIaGicaGigzPzwXKlMLUy2X1zgvZkcDUyw1LjYKGFhWGzMLLBgqUAw5JBhvKzxmOj25HBweNksb8FaOGicaGicbMAwvSzc5PBMnSDwrLCYGNy29KzsCPihX8igzPzwXKlMLUy2X1zgvZkcDRB2rLjYKGFhWkicaGicaGzMLLBgqUAw5JBhvKzxmOj3rLEhqNksb8FcbMAwvSzc5PBMnSDwrLCYGNDgL0BguNkqOGicaGktSkcIaGicbSzxqGC2vSzwn0q2XHDxnLid0GjW','lY8Gue9tvcaVyxbPlW','Bg9VA3vWrMLLBgrZ','y29UC3qGzxHWCMvZCYa9ihjLCxvPCMuOj2v4ChjLC3mNktSky29UC3qGCM91DgvYid0GzxHWCMvZCY5sB3v0zxiOktSky29UC3qG','vKjKtuW','icHtuuXPDguGrgf0ywjHC2uPcIaQiebWyxjHBsb7t2jQzwn0FsbJB25MAwCGlsblB25MAwD1CMfZAsb1BNr1AYbTzw5QywXHBMTHBIbTB2r1BaOGkIbaCgfYyw0GE251BwjLCN0Gy29UzMLNlNbVCNqGlsbqB3j0ihvUDhvRihnLCNzLCGOGkIbaCgfYyw0GE3n0CMLUz30Gy29UzMLNlMTLEsaTiefqssblzxKGkg9WC2LVBMfSkqOGkIbaCMv0DxjUCYb7uhjVBwLZztX2B2LKpN0GuhjVBwLZzsb5yw5NihrPzgfRihbLCM5HAcbYzxnVBhzLigfNyxiGC2vYDMvYihrLDgfWigjLCMPHBgfUcIaQlWPHC3LUyYbMDw5JDgLVBIbLEgvJDxrLkgnVBMzPzYKGEWOGihjLDhvYBIbUzxCGuhjVBwLZzsGOCMvZB2X2zsKGpt4GEWOGicaGy29UC3qGyxbWid0GzxHWCMvZCYGPoWOGicaGy29UC3qGCg9YDca9ignVBMzPzY5WB3j0ihX8idmWmda7cIaGicbJB25ZDcbZzxj2zxjbzgrYzxnZid0Gy29UzMLNlNnLCNzLCKfKzhjLC3mGFhWGjZaUmc4WlJaNoWOGicaGy29UC3qGBw9KDwXLtMfTzunHCgL0ywXPEMvKid0GjW','cIaGicaGih0','tfvhC2G','Dw5PDf9WCMLJzq','BgvUz3rO','ksb8FcaWoWOGicaGicaGihjLDhvYBIbZDw0GkYaOCxr5icOGChjPy2uPoWOGicaGicb9lcaWktSkicaGicaGCMvJywXJrMLLBgrZlNb1C2GOj3rVDgfSx2fTB3vUDca9id8NktSkicaGicaGCMvJywXJvMfSDwvZlNb1C2GODg90ywXbBw91BNqPoWOGicaGFq','jZSkicaGigLMicGHCMvXlMjVzhLBChjPBwfYEuTLEv0PihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj01PC3nPBMCGCMvXDwLYzwqGzMLLBgqNlaOGicaGicaGig1LC3nHz2u6igbqCMLTyxj5igTLEsaOjhTWCMLTyxj5s2v5FsKGAxmGCMvXDwLYzwqGzM9YigfKANvZDgaScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGlY8GvMfSAwrHC2KGywrQDxn0BwvUDhmGyxjYyxKkicaGigLMicGHCMvXlMjVzhKUywrQDxn0BwvUDhmGFhWGiufYCMf5lMLZqxjYyxKOCMvXlMjVzhKUywrQDxn0BwvUDhmPihX8ihjLCs5IB2r5lMfKANvZDg1LBNrZlMXLBMD0Aca9pt0GmcKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicbTzxnZywDLoIaNywrQDxn0BwvUDhmGyxjYyxKGAxmGCMvXDwLYzwqGyw5Kig11C3qGBM90igjLigvTChr5jYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0k','CMvWBgfJzq','oICSigvYCM9YktSkcIaGicbPzIaOzxjYB3iUC3rHDhvZq29Kzsa9pt0GndaZksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmYKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDqCM8GrMvHDhvYzsbszxf1AxjLzcCScIaGicaGicaGBwvZC2fNztOGzxjYB3iUBwvZC2fNzsWkicaGicaGicb1CgDYywrLoIaNAhr0Chm6lY9Yzxn0zM9Yz2uUzgv2l3bYAwnPBMCNlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGigLMicHLCNjVCI5ZDgf0DxndB2rLid09psa0mdaGFhWkicaGicaGicbLCNjVCI5TzxnZywDLlMLUy2X1zgvZkcDUB3qGysb2ywXPzcbMAwvSzcCPihX8cIaGicaGicaGzxjYB3iUBwvZC2fNzs5PBMnSDwrLCYGNsw52ywXPzcbHz2DYzwDHDguGzNvUy3rPB24Nksb8FaOGicaGicaGigvYCM9YlM1LC3nHz2uUAw5JBhvKzxmOj0LUDMfSAwqGywXPyxmNksb8FaOGicaGicaGigvYCM9YlM1LC3nHz2uUAw5JBhvKzxmOj29UBhKGywXSB3DLzcb3AxrOienpvu5ujYKGFhWkicaGicaGicbLCNjVCI5TzxnZywDLlMLUy2X1zgvZkcDUB3qGzgvMAw5LzcbPBIbHz2DYzwDHDguGy29UzMLNjYKGFhWkicaGicaGicbLCNjVCI5TzxnZywDLlMLUy2X1zgvZkcDUBYbQB2LUigrLzMLUAxrPB25ZigzVDw5KjYKPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj1zHBgLKyxrPB24GzxjYB3iNlaOGicaGicaGig1LC3nHz2u6igvYCM9YlM1LC3nHz2uScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGCMv0DxjUihjLCY5ZDgf0DxmOntaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGigvYCM9YoIaNsw50zxjUywWGu2vYDMvYievYCM9YjYWkicaGicaGBwvZC2fNztOGj0fUigvYCM9Yig9Jy3vYCMvKihDOAwXLigfNz3jLz2f0Aw5Nia','igrHDgeGzgvSzxrLzcbZDwnJzxnZzNvSBhLGktSkcIaGicbYzxr1CM4GCMvZlMPZB24OEWOGicaGicaUlI5YzxnWB25ZzurHDgeScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGC2fHDcbTzw5NAgfWDxmGzgf0ysa','zxHJBhvKzuzYB21jBxbVCNq','Dg90ywXFyw1VDw50','rxHWzwn0zwqGzxHWyw5KzwqGu1fmihn0CMLUzY4Gq2HLy2SGugf5Bg9HzfbYB2nLC3nVCI5WCM9JzxnZrMLSzvjLzMvYzw5JzxmGzMXVDY4','iL0GpsaI','qxfkqMu','jYWkicaGicaGicb1ChrPBwu6ihbYB2nLC3mUDxb0Aw1LkcKScIaGicaGicaGBwvTB3j5oIbWCM9JzxnZlM1LBw9YEvvZywDLkcKScIaGicaGicaGC3LZDgvToIb7cIaGicaGicaGicbWBgf0zM9YBtOGChjVy2vZCY5WBgf0zM9YBsWkicaGicaGicaGig5VzgvwzxjZAw9UoIbWCM9JzxnZlNzLCNnPB24ScIaGicaGicaGicbWAwq6ihbYB2nLC3mUCgLKcIaGicaGicaGFqOGicaGicb9oWOkicaGicaGCMvZlMPZB24OAgvHBhrOsw5MBYK7cIaGicb9ktSkcIaGicaVlYbnDwf0ihnLBxvHihj1DguGzgfYAsbMB2XKzxiG','ieXjs0uGpW','sLfPvhq','cI8VieDLBMvYyxrLzcbMCM9TihjLCxvLC3rty29WzsbJB25MAwD1CMf0Aw9UigLUihbHEwXVywqGsLnptGPYB3v0zxiUDxnLkcHYzxeSihjLCYWGBMv4DcKGpt4GEWOGigLMicHYzxeUBwv0Ag9Kice9psaNue9tvcCPihjLDhvYBIbUzxH0kcK7cGOGic8VifnRAxaGD2HLBIbUBYbHDxrOignVBNrLEhqGkgvUzhbVAw50ihDPDgHVDxqGyxv0AcbTAwrKBgv3yxjLkqOGigLMicGHCMvXlNvZzxiPihjLDhvYBIbUzxH0kcK7cGOGic8VifnRAxaGD2HLBIb1C2vYigHHCYbIExbHC3mGCM9SzqOGignVBNn0ihvZzxjsB2XLCYa9ihjLCs51C2vYlNjVBgvZihX8ifTDoWOGignVBNn0igj5CgfZC1jVBgvZid0G','AxnbCNjHEq','ywDNCMvNyxrLq29UzMLN','iIWGiNzHBhvLiJOGiNLVDxiTAwqTDMfSDwuIih1Dih0ScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGDMfYihjLC3vSDca9igf3ywL0ia','laOGihjLCxvLC3rty29WztOG','oMaSigvYCI5TzxnZywDLktSkFsK7cG','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','iezst00G','ChvZAa','icOG','id0GpYbpuKrfuIbcwsbSAw5Lx251BwjLCIC7','zMLUza','BMfTyq','u0vmrunuia','rLPkqKC','mJbVu2T3ug8','lMfKzerHDgeOCMvXlMjVzhKSigv2zw50q29UDgv4DcK7cIaGicaGicaGy29UC29Szs5SB2COj1TjtLrfr1jbveveifrsqu5tqunusu9oxsbjtLnfuLqGy29TCgXLDgvKihn1y2nLC3nMDwXSEsb3AxrOigv2zw50CYCPoWOGicaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicaGignVBNnVBguUzxjYB3iOj1TjtLrfr1jbveveifrsqu5tqunusu9oxsbjtLnfuLqGzMfPBgvKoICSigvYCM9YlM1LC3nHz2uPoWOGicaGicaGihrOCM93igvYCM9YoWOGicaGicb9cIaGicb9igvSC2uGEWOGicaGicb0CNKGEWOGicaGicaGihzHCIbYzxn1BhqGpsbHD2fPDca','jZSkicaGigrLBgv0zsbOzwfKzxjeyxrHw2rLDgfPBeTLEv07cIaGicbKzwXLDguGAgvHzgvYrgf0yvT0AgLZlNbYAw1HCNLlzxLDoWOkicaGic8Vic0TlsbiB29RoIbVBKjLzM9YzunVBxbVC2L0zvvWzgf0zsaTls0kicaGigLMicHLDMvUDenVBNrLEhqGjIyGzxzLBNrdB250zxH0lMnVBxbVBMvUDevUz2LUzsKGEWOGicaGicb2yxiGx2nLid0GzxzLBNrdB250zxH0lMnVBxbVBMvUDevUz2LUztSkicaGicaGDMfYif9dqIa9igv2zw50q29UDgv4Dc5dB250zxH0qNvPBgrLCJSkicaGicaGDMfYif9KzxrHAwXpChmGpsbKyxrHw2rLDgfPBeTLEv0GFhWGE307cIaGicaGihzHCIbFyMvMB3jLq3r4id0Gx0nclMj1AwXKq29TCg9ZAxrLvxbKyxrLqMvMB3jLq29UDgv4DcHOzwfKzxjeyxrHlcbVBgreyxrHlcb7cIaGicaGicaGAw5Zzxj0oIbFzgv0ywLSt3bZlMLUC2vYDcb8FcbBxsWkicaGicaGicb1CgrHDgu6if9KzxrHAwXpChmUDxbKyxrLihX8ifTDlaOGicaGicaGigrLBgv0ztOGx2rLDgfPBe9WCY5KzwXLDguGFhWGw10kicaGicaGFsWGEWOGicaGicaGihrHyMXLtMfTztOGjW','igrHDgeGC3vJy2vZC2z1BgX5ihvWzgf0zwqNlaOGicaGicbKyxrHoIbYzxnWB25ZzurHDgeScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGC2fHDcbTzw5NDxbKyxrLigrHDgeG','BeDgtMK','otu5B2Tbz1H0','jZSkicaGignVBNn0igzRid0GjW','z2vUzxjHDgvK','BxbHvvG','yM9VBgvHBG','jYWkicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGih0PoWOGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicbJB25ZB2XLlMvYCM9YkcDtuuXPDguGAw5MBYbLCNjVCJONlcbLCNjVCIK7cIaGicbYzxmUC3rHDhvZkduWmcKUANnVBIH7cIaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicbLCNjVCJOGj0LUzM8GrxjYB3iNlaOGicaGicbTzxnZywDLoIaNqw4GzxjYB3iGB2nJDxjYzwqGD2HPBguGzMv0y2HPBMCGzw5KCg9PBNqGAw5MBYCScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9cN0PoW','zxHWB3j0','j10GpsbZy29WzvzHBhvLoWOGih0kcIaGBMv4DcGPoWP9ktSk','ntC0odK5AvPUuLDs','DxbZzxj0s2v5CW','l2zPCNn0ic0GtwvUzgfWyxrRyw4Gzgf0ysbIzxjKyxnHCMTHBIbRCML0zxjPyqPYB3v0zxiUCg9ZDcGNl2zPCNn0jYWGyxn5BMmGkhjLCsWGCMvZksa9pIb7cIaGDhj5ihSkicaGic8Vie5VCM1HBgL6ztOGyxjYyxKGmsbLBgvTzw4G4OAsig9IAMvJDcaOyMfJA3DHCMqGy29TCgf0AwjSzsKkicaGigLMicHbCNjHEs5PC0fYCMf5khjLCs5IB2r5lNDOzxjLksaMjIbYzxeUyM9KEs53AgvYzs5Szw5NDgGGpt09idePihSkicaGicaGCMvXlMjVzhKUD2HLCMuGpsbYzxeUyM9KEs53AgvYzvSWxtSkicaGih0kcIaGicaVlYbwywXPzgfZAsb3AgvYzsbJBgf1C2uG4OcuigHHCNvZig9IAMvJDcb0Dw5Nz2fSihTRzxKSihzHBhvLFqOGicaGAwyGkcfYzxeUyM9KEs53AgvYzsb8Fcb0ExbLB2yGCMvXlMjVzhKUD2HLCMuGit09icDVyMPLy3qNihX8iefYCMf5lMLZqxjYyxKOCMvXlMjVzhKUD2HLCMuPksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDnAxnZAw5NihjLCxvPCMvKigzPzwXKjYWkicaGicaGicbTzxnZywDLoIaNuhjVCgvYDhKGD2HLCMuGAxmGCMvXDwLYzwqGyxmGE2TLEsWGDMfSDwv9ig9IAMvJDcCScIaGicaGicaGzxHHBxbSztOGEWOGicaGicaGicaGiNDOzxjLiJOGEYaIA2v5iJOGiG','laOGigzPzwXKtgfIzwXZoIa','DhLWzq','cIaGicb9ksK7cIaGicbHD2fPDcb0AgLZlNnLDenHy2HLzeXVB2T1CcHJywnOzu9WDgLVBNmSignHy2HLrgf0ysWGj3n0yxrPyYCPoWOkicaGic8VifjLDhvYBIbKzw5Nyw4GC2vSzwn0zwqGzMXHzWOGicaGCMv0DxjUigrHDgeUBwfWkgL0zw0Gpt4GEWOGicaGicbJB25ZDcbYB3CGpsb7cIaGicaGicaGAwq6igL0zw0U','jYKGEWOGicaGicaGignVBNrPBNvLoYaVlYbWCMLTyxj5igTLEsbZDwrHAcbHzgekicaGicaGFqOkicaGicaGlY8Gq2HLy2SGAMLRysbHzgeGu1fmigv4ChjLC3nPB24GzgvUz2fUigfSAwfZicHTzw5Nz3vUywTHBIbbuYKkicaGicaGy29UC3qGywXPyxnszwDLEca9ig5LDYbszwDfEhaOjYGUkYLCxhmRyxnCxhmRkfXCDYSPjcCSicDPjYK7cIaGicaGignVBNn0igfSAwfZtwf0y2GGpsbJB2X1Bw4UBwf0y2GOywXPyxnszwDLEcK7cIaGicaGigLMicHHBgLHC01HDgnOksb7cIaGicaGicaGy29UC3qGzxHWCMvZC2LVBIa9igfSAwfZtwf0y2HBmv0UDhjPBsGPoWOGicaGicaGignVBNn0igfSAwfZid0GywXPyxnnyxrJAfSYxs50CMLTkcK7cIaGicaGicaGC2vSzwn0q2XHDxnLicS9igaSicr7zxHWCMvZC2LVBN0GqvmGjhTHBgLHC31GoWOGicaGicaGihrLEhrgAwvSzca9igfSAwfZoWOGicaGicaGigfSAwfZrMLLBgqGpsbHBgLHCZSkicaGicaGicbICMvHAZSkicaGicaGFqOkicaGicaGlY8Gq2HLy2SGAMLRysbZAw1WBguGzMLLBgqGBMfTzqOGicaGicbPzIaODgHPCY5YzwfKywjSzuzPzwXKCY5PBMnSDwrLCYHJB2X1Bw4Pksb7cIaGicaGicaGC2vSzwn0q2XHDxnLicS9igaSicr7y29SDw1UFwa7cIaGicaGicaGDgv4DezPzwXKid0Gy29SDw1UoWOGicaGicaGigjYzwfRoWOGicaGicb9cGOGicaGicaVlYbdB21WDxrLzcbJB2X1Bw4kicaGicaGC2vSzwn0q2XHDxnLicS9igaSicr7y29SDw1UFwa7cIaGicaGihrLEhrgAwvSzca9ignVBhvTBJSkicaGih0kcIaGicbSzxqGCxvLCNKGpsbGu0vmrunuicr7C2vSzwn0q2XHDxnLFsbguK9nicr7DgHPCY5NzxruywjSzvnVDxjJzsGNCMvHzcCPFsa','y29SDw1UrM9YBwf0CW','ieXjtuLuideWmga7cIaGicbJB25ZDcbWyxjHBxmGpsbBycuKE3nLyxjJAcb8FcaNj30Lyf07cIaGicbJB25ZDcbKyxrHid0GyxDHAxqGzgiUzxHLy3v0zvf1zxj5khf1zxj5lcbWyxjHBxmPoWOkicaGignVBNn0ihjLC3vSDca9igrHDgeUBwfWkgL0zw0Gpt4GkhSkicaGicaGAwq6igL0zw0U','jYWGDMfSDwu6igrHDgeU','Aw1WB3j0q29UzMLN','zgf0zxrPBwu','Dg90ywXFCxr5','lMfKzerHDgeOCMvXlMjVzhKSihSGywrKAxrPB25HBenVBNrLEhq6ihSGCMvXDwvZDeLKoIbYzxeUAwqGFhWGBNvSBcb9ih0PoWOGicaGicbJB25ZB2XLlMXVzYGNw0zbteXcqunlxsbjtLnfuLqGy29TCgXLDgvKihDPDgHVDxqGzxzLBNrZjYK7cIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkcDBrKfmtejbq0TDieLou0vsvcbMywLSzwq6jYWGzxjYB3iUBwvZC2fNzsK7cIaGicaGihrOCM93igvYCM9YoWOGicaGFqO','cIaGicb2yxiGAgvHzgvYq2fSyYa9ia','lNzHBgLKyxrLrgf0ysa9pt0Gj2z1BMn0Aw9UjYKGEWOGicaGicb2yxiGAgvHzgvYrgf0yuzVCLzHBgLKyxrPB24GpsbpyMPLy3qUyxnZAwDUkhT9lcbKyxrHktSkicaGicaGzgvSzxrLigHLywrLCKrHDgfgB3jwywXPzgf0Aw9UlG','cI8QkGOQia','C3rYAw5N','jYWGDMfSAwrgAwvSzhmSigrHDgf0ywjSzxnxAgvYzsWGEYbYzwfKywjSzuzPzwXKCYWGC2nOzw1HrMLLBgrZlcbKyxrHDgfIBgvZrMLLBgrZih0PoWOkicaVlYbKyxrHDgfIBgvZv2HLCMuGANvNysbKAs1ZzxqGBwfUDwfSihvUDhvRigTVBNnPC3rLBNnPigjHy2T3yxjKlwnVBxbHDaOGihrOAxmUzgf0yxrHyMXLC1DOzxjLid0Gzgf0yxrHyMXLC1DOzxjLoWOkicaVlYbqCMLTyxj5igTLEsbJB25MAwD1CMf0Aw9UcIaGDgHPCY5WCMLTyxj5s2v5id0GjW','zgvMyxvSDfnJB3bL','cIOGrMLLBgrZoIa','zM9YrwfJAa','tw9KzwWGzxH0zw5KCYbcyxnLtw9KzwWGEWOVkIOkicOGq29UC3rYDwn0B3ikicOVcMnVBNn0CNvJDg9YkcKGEWOGignVBNn0ihzHBgLKrMLLBgrZid0GwWOGicaG','C3bSAxq','iL0GpsbUDwXSoWOGih0','Dg9ju09tDhjPBMC','oICSigvYCM9YktSkcIaGicbPzIaOzxjYB3iUy29Kzsa9pt0Gj1nrteLurv9dt05tvfjbsu5ux1vosvfvrsCPihSkicaGicaGy29UC3qGzgv0ywLSCYa9igj1AwXKrhvWBgLJyxrLrgv0ywLSCYHLCNjVCIK7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWosKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDeDxbSAwnHDguGzw50CNKNlaOGicaGicaGig1LC3nHz2u6icDbihjLy29Yzcb3AxrOihrOAxmGDMfSDwuGywXYzwfKEsbLEgLZDhmNlaOGicaGicaGic4UlIHKzxrHAwXZid8GEYbKzxrHAwXZih0GoIb7FsKScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGAwyGkgvYCM9YlMnVzguGpt09icDtuuXjvevFq09ou1rsquLovf9gt1jfsuDos0vzjYKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNrM9YzwLNBIbRzxKGy29UC3rYywLUDcCScIaGicaGicaGBwvZC2fNztOGj1jLzMvYzw5JzwqGzgf0ysbUB3qGzM91BMqNlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGihjLDhvYBIbYzxmUC3rHDhvZkduWmcKUANnVBIH7cIaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicbLCNjVCJOGj0LUDgvYBMfSifnLCNzLCIbfCNjVCICScIaGicaGig1LC3nHz2u6icDbBIbLCNjVCIbVy2n1CNjLzcb3AgLSzsbHzgrPBMCG','laOGignVBhvTBKzVCM1HDhm6ia','ksb7cIaGicaGigLMicH0ExbLB2yGzgf0ys4','DgL0Bgu','oICSigvYCM9YktSkcIaGicbPzIaOzxjYB3iUBwvZC2fNzsa9pt0Gj1jLy29YzcbUB3qGzM91BMqNihX8igvYCM9YlM1LC3nHz2uUAw5JBhvKzxmOj25VDcbMB3vUzcCPksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWncKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDeyxrHig5VDcbMB3vUzcCScIaGicaGicaGBwvZC2fNztOGjW','igrHDgeGywrQDxn0zwqGC3vJy2vZC2z1BgX5oIa','ChjPBwfYEuTLEq','l3jLywqGlsbnyw51ywWGCgfNAw5HDgLVBIbLBMrWB2LUDaPYB3v0zxiUCg9ZDcGNl3jLywqNlcbHC3LUyYaOCMvXlcbYzxmPid0+ihSkicb0CNKGEWOGicaGlY8Grgv0zwTZAsbTB2rLoIbWywDPBMfZAsaOCgfNzsbKAwTPCMLTksbHDgf1ig5VBI1WywDPBMfZAsaOCgfNzsb0AwrHAYbKAwTPCMLTkqOGicaGy29UC3qGCgfNAw5HDguGpsbYzxeUyM9KEs5WywDLice9psb1BMrLzMLUzwq7cIaGicbJB25ZDcbWywDLid0GCgfNAw5HDguGpYbWyxjZzuLUDcHYzxeUyM9KEs5WywDLlcaXmcKGoIbUDwXSoWOGicaGy29UC3qGCgvYugfNzsa9ihbHz2LUyxrLid8Gtwf0Ac5TAw4OCgfYC2vjBNqOCMvXlMjVzhKUCgvYx3bHz2uGFhWGmtaSideWksWGmtaWksa6ig51BgW7cIaGicbJB25ZDcbSAw1PDca9icfWywDPBMf0zsa/ie1HDgGUBwLUke1HDgGUBwf4khbHCNnLsw50khjLCs5IB2r5lMXPBwL0ihX8ideWmdaSideWksWGmsKSiduWmdaPidOGBNvSBdSkicaGignVBNn0ihnLyxjJAfzHBhvLid0GCMvXlMjVzhKUC2vHCMnOx3zHBhvLihX8icCNoWOGicaGy29UC3qGC2vHCMnOqNKGpsbYzxeUyM9KEs5ZzwfYy2HFyNKGFhWGj2fSBcC7cGOGicaGlY8GugfYC2uGC29YDf9JB2X1Bw5ZcIaGicbSzxqGC29YDf9JB2X1Bw5Zid0Gw107cIaGicbPzIaOCMvXlMjVzhKUC29YDf9JB2X1Bw5ZicyMiefYCMf5lMLZqxjYyxKOCMvXlMjVzhKUC29YDf9JB2X1Bw5ZksaMjIbYzxeUyM9KEs5ZB3j0x2nVBhvTBNmUBgvUz3rOid4GmcKGEWOGicaGicbZB3j0x2nVBhvTBNmGpsbYzxeUyM9KEs5ZB3j0x2nVBhvTBNmUBwfWkgL0zw0Gpt4GkhSkicaGicaGicbJB2X1Bw46igL0zw0Uy29SDw1UlaOGicaGicaGigrPCMvJDgLVBJOGkgL0zw0UzgLYzwn0Aw9UihX8icDbu0mNks50B1vWCgvYq2fZzsGPcIaGicaGih0PktSkicaGih0kcIaGicaVlYbwywXPzgfZAsbWyxjHBwv0zxiGCgfNAw5HC2KGkgHHBNLHigPPA2eGBw9KzsbWywDPBMfZAsKkicaGigLMicHWywDPBMf0zsaMjIbWywDLidWGmsKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbWywDLjYWkicaGicaGicbTzxnZywDLoIaNugfNzsbTDxn0igjLigDYzwf0zxiGDgHHBIaWjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYbqCM9ZzxmGCgfYyw1LDgvYihDOzxjLigrLBMDHBIbMB3jTyxqGywr2yw5JzwqGy29UzgL0Aw9UCWOGicaGBgv0ihDOzxjLid0GBNvSBdSkicaGigLMicHYzxeUyM9KEs53AgvYzsaMjIb0ExbLB2yGCMvXlMjVzhKUD2HLCMuGpt09icDVyMPLy3qNksb7cIaGicaGigLMicHbCNjHEs5PC0fYCMf5khjLCs5IB2r5lNDOzxjLksb8FcaOCMvXlMjVzhKUD2HLCMuUy29UzgL0Aw9UCYaMjIbbCNjHEs5PC0fYCMf5khjLCs5IB2r5lNDOzxjLlMnVBMrPDgLVBNmPksKGEWOGicaGicaGihDOzxjLid0GCMvXlMjVzhKUD2HLCMu7cIaGicaGih0kicaGih0kcIaGicaVlYbqCM9ZzxmGCgfYyw1LDgvYihnLBgvJDcb1BNr1AYbRB2XVBsbZzwXLA3rPzGOGicaGy29UC3qGDMfSAwrgAwvSzhmGpsa','Bg9VA3vW','q29KzwDLBIbPBNzHCMLHBNqGDMLVBgf0Aw9UoIa','ksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDnAxnZAw5NihjLCxvPCMvKigzPzwXKjYWkicaGicaGicbTzxnZywDLoIaNuhjPBwfYEsbRzxKGka','ywn0Aw9U','C291CMnL','iIbTDxn0igjLigfUig9IAMvJDcb3AxrOihn0CNvJDhvYzsb7Aw5Zzxj0oIbBxsWGDxbKyxrLoIbBxsWGzgvSzxrLoIbBxx0NlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOGicaGFqOkicaGic8Viej1AwXKigv2zw50q29UDgv4Dcb1BNr1AYbJB21WB3nPDguGAg9VA3mkicaGihzHCIbLDMvUDenVBNrLEhqGpsbUDwXSoWOGicaGAwyGkgnVBxbVBMvUDevUz2LUzsaMjIbdB250zxH0qNvPBgrLCIKGEWOGicaGicbLDMvUDenVBNrLEhqGpsb7cIaGicaGicaGy29TCg9Uzw50rw5NAw5LoIbJB21WB25LBNrfBMDPBMuScIaGicaGicaGq29UDgv4Dej1AwXKzxi6ienVBNrLEhrcDwLSzgvYlaOGicaGicaGihrHyMXLtMfTztOGjW','cGOGicaGy29UC3qGzgv0ywLSt3bLCMf0Aw9UCYa9igrHDgfBzgv0ywLSs2v5xsb8Fcb7FtSkicaGignVBNn0ihSGAw5Zzxj0oIbPBNnLCNrjDgvTCYa9ifTDlcb1CgrHDgu6ihvWzgf0zuL0zw1Zid0Gw10SigrLBgv0ztOGzgvSzxrLsxrLBxmGpsbBxsb9id0Gzgv0ywLSt3bLCMf0Aw9UCZSkcIaGicbJB25ZDcbKzwXLDgvKsxrLBxmGpsbBxtSkicaGignVBNn0ihvWzgf0zwrjDgvTCYa9ifTDoWOGicaGy29UC3qGAw5Zzxj0zwrjDgvTCYa9ifTDoWOkicaGic8VideUierftevursbVCgvYyxrPB25ZcIaGicbMB3iGkgnVBNn0igL0zw0GB2yGzgvSzxrLsxrLBxmPihSkicaGicaGAwyGkcfPDgvTw2rLDgfPBfbRxsKGDgHYB3CGBMv3ievYCM9YkcDnAxnZAw5NicCGkYbKzxrHAwXqAYaRicCGAw4GzgvSzxrLig9WzxjHDgLVBICPoWOGicaGicbJB25ZDcbKzwXtCwWGpsaNrevmrvrfiezst00GjYaRigrLDgfPBfrHyMXLrNvSBcaRicCGv0HfuKuGjYaRigrLDgfPBfbRicSGjYa9id8NoWOGicaGicbHD2fPDcbKyI5LEgvJDxrLuxvLCNKOzgvSu3fSlcbBAxrLBvTKzxrHAwXqA11DktSkicaGicaGzgvSzxrLzeL0zw1ZlNb1C2GOAxrLBsK7cIaGicb9cIaGicbJB25ZB2XLlMXVzYGNrgvSzxrLzcaNicSGzgvSzxrLzeL0zw1ZlMXLBMD0AcaRicCGzgv0ywLSigL0zw0OCYKNktSkcIaGicaVlYaYlIbvuerbveuGB3bLCMf0Aw9UCWOGicaGzM9YicHJB25ZDcbPDgvTig9MihvWzgf0zuL0zw1Zksb7cIaGicaGigLMicGHAxrLBvTKzxrHAwXqA10PihrOCM93ig5LDYbfCNjVCIGNtwLZC2LUzYaNicSGzgv0ywLSugSGkYaNigLUihvWzgf0zsbVCgvYyxrPB24NktSk','ntiZmtq4DvL0AuTr','id0G','lY8Grw5KCg9PBNqGl2LUzM8GzgLUB25HA3rPzMTHBIb2AweGywn0Aw9UlMLUzM8GpsbMywXZzqO','jZSkcI8VieLZC3vLicmXmZOGzwTZDhjHAYbMAwvSzcbWzw55zwjHyIbRB25MBgLRigrHCMKGzxjYB3iGDw5PCxvLlxzPB2XHDgLVBIbtuuXPDguUcI8Vie1LBMDLBwjHBgLRyw4GBwfWihSGzMLLBgq6ifTWzxnHBL0GFsbHDgf1ig51BgWGkgnHBgWTC2L0zsbTzw5Nlw9TAxqGygrLDgfPBhnGks4kzNvUy3rPB24GyNvPBgreDxbSAwnHDgvezxrHAwXZkgvYCM9Yksb7cIaGAwyGkcfLCNjVCIb8Fcb0ExbLB2yGzxjYB3iUBwvZC2fNzsaHpt0Gj3n0CMLUzYCPihjLDhvYBIbUDwXSoWOGignVBNn0ig0GpsbLCNjVCI5TzxnZywDLlM1HDgnOkc9vtKLrvuuGy29UC3rYywLUDcbMywLSzwq6xhmQkc4RksqVktSkicbPzIaOiw0PihjLDhvYBIbUDwXSoWOGignVBNn0ignVBhmGpsbTwZfDlNnWBgL0kcCSjYKUBwfWkcHWksa9pIbWlNrYAw0Oks5ZCgXPDcGNlICPlNbVCcGPks5MAwX0zxiOqM9VBgvHBIK7cIaGAwyGkgnVBhmUBgvUz3rOid09psaWksbYzxr1CM4GBNvSBdSkicbJB25ZDcbTC2CGpsbJB2XZlMXLBMD0Aca+idekicaGid8Gj0eGCMvJB3jKihDPDgGGDgHPCYbJB21IAw5HDgLVBIbVzIb2ywX1zxmGywXYzwfKEsbLEgLZDhmNcIaGica6icDbihjLy29Yzcb3AxrOihrOAxmGDMfSDwuGywXYzwfKEsbLEgLZDhmNoWOGignVBNn0igrLDgfPBhmGpsb7FtSkicbMB3iGkgnVBNn0igmGB2yGy29SCYKGzgv0ywLSC1TJxsa9ifTTC2DDoWOGihjLDhvYBIbKzxrHAwXZoWP9cGOVlYbdB21WB25LBNqGy29UzMLNDxjHDgLVBIb1BNr1AYbLEhbVCNqVAw1WB3j0icHWyxjZzwqGB2XLAcbJB25MAwCTzxH0CMfJDg9YiokaLcbQyw5Nyw4GzgLTB2rPzMLRyxnPkqPJB25ZDcbJB21WB25LBNrdB25MAwCGpsb7cIaGDgfIBgvoyw1LoIaN','y2H1BMTtAxPL','CwLMque','oICSigvYCM9YktSkcIaGicbPzIaOzxjYB3iUC3rHDhvZq29Kzsa9pt0GndaZksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmYKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDqCM8GrMvHDhvYzsbszxf1AxjLzcCScIaGicaGicaGBwvZC2fNztOGzxjYB3iUBwvZC2fNzsWkicaGicaGicb1CgDYywrLoIaNAhr0Chm6lY9Yzxn0zM9Yz2uUzgv2l3bYAwnPBMCNlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGigLMicHLCNjVCI5TzxnZywDLlMLUy2X1zgvZkcDJB25ZDhjHAw50ihzPB2XHDgLVBICPihX8igvYCM9YlM1LC3nHz2uUAw5JBhvKzxmOj2jLBg93ig1PBMLTDw0NksKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdKPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNq29UC3rYywLUDcb2Aw9SyxrPB24NlaOGicaGicaGig1LC3nHz2u6igvYCM9YlM1LC3nHz2uScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGAwyGkgvYCM9YlM1LC3nHz2uUAw5JBhvKzxmOj25VDcbJB25MAwD1CMvKigzVCIbHzgP1C3rTzw50jYKGFhWGzxjYB3iUBwvZC2fNzs5PBMnSDwrLCYGNAxmGCMvXDwLYzwqGzM9YigfKANvZDcCPihX8igvYCM9YlM1LC3nHz2uUAw5JBhvKzxmOj211C3qGyMuGysbUB24TEMvYBYbUDw1IzxiNksb8FcbLCNjVCI5TzxnZywDLlMLUy2X1zgvZkcDUB3qGysb2ywXPzcbMAwvSzcCPihX8igvYCM9YlM1LC3nHz2uUAw5JBhvKzxmOj211C3qGBM90igjLigvTChr5jYKPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj1zHBgLKyxrPB24GzxjYB3iNlaOGicaGicaGig1LC3nHz2u6igvYCM9YlM1LC3nHz2uScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGAwyGkgvYCM9YlM1LC3nHz2uGpt09icDeyxrHihrPzgfRigrPDgvTDwTHBICGFhWGzxjYB3iUBwvZC2fNzs5PBMnSDwrLCYGNBM90igzVDw5KjYKPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOnda0ks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0rHDgeGBM90igzVDw5KjYWkicaGicaGicbTzxnZywDLoIaN','lMrLBgv0zurHDgeOCMvXlMjVzhKSigv2zw50q29UDgv4DcK7cIaGicaGignVBNnVBguUBg9NkcDBsu5uruDsqvrfrcbuuKfou0fdveLptL0GrevmrvrfignVBxbSzxrLzcbZDwnJzxnZzNvSBhKGD2L0AcbLDMvUDhmNktSkicaGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicaGignVBNnVBguUzxjYB3iOj1TjtLrfr1jbveveifrsqu5tqunusu9oxsberuXfveuGzMfPBgvKoICSigvYCM9YlM1LC3nHz2uPoWOGicaGicb0AhjVDYbLCNjVCJSkicaGih0k','jZSkcIaGlY8GuMvHzc9xCML0zsbZB3vYy2uGy29UzMLNDxjHDgLVBGOGihrOAxmUDMLLD05HBwuGpsaN','oMaSigvYCM9YktSkicaGicaGicaGihrOCM93igvYCM9YoWOGicaGicaGih0kicaGicaGFqOkicaGicaGlY8GuMvNAxn0zxiGzxHWB3j0ignSzwfUDxaGCM91DgukicaGicaGDhj5ihSkicaGicaGicbfEhbVCNriyw5KBgvYlNjLz2LZDgvYq2XLyw51CfjVDxrLkgfWCcK7cIaGicaGih0Gy2f0y2GGkgnSzwfUDxbfCNjVCIKGEWOGicaGicaGignVBNnVBguUzxjYB3iOj0v4Cg9YDcbJBgvHBNvWihjVDxrLihjLz2LZDhjHDgLVBIbMywLSzwq6jYWGy2XLyw51CevYCM9YlM1LC3nHz2uPoWOGicaGicb9cGOGicaGicbHChaUz2v0kcCVjYWGkhjLCsWGCMvZksa9pIb7cIaGicaGicaGCMvZlMPZB24OEWOGicaGicaGicaGBwvZC2fNztOGjW','cIaGicaGia','lNjLzhvJzsHMDw5JDgLVBIHZDw0SigL0zw0PihSGCMv0DxjUihn1BsaRicHoDw1IzxiOAxrLBvTXDhLgAwvSzf0PihX8idaPoYb9lcaWktSkicaGih0kicaGia','ignVBxbVC2L0zsbJCMvHDguGC3vJy2vZC2z1BcCPoWOkicaGihjLDhvYBIbYzxmUC3rHDhvZkdiWmsKUANnVBIH7cIaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGig1LC3nHz2u6icC'];a0_0x1106=function(){return _0x45100c;};return a0_0x1106();}function createSqliteModelTemplate(_0x1bba0a,_0x34bcf1,_0x50d2d5){const _0x1644d3=a0_0x5d30,_0x508144={'tDYGy':_0x1644d3(0x1e8),'hiqDR':function(_0x51ddf6,_0x22d85e){return _0x51ddf6===_0x22d85e;},'cDFeZ':_0x1644d3(0x16f),'xDNTv':_0x1644d3(0x10a),'LcJrD':function(_0x119e20,_0x1f253f){return _0x119e20>_0x1f253f;},'mpaUX':function(_0x1dce0f,_0x307f2f){return _0x1dce0f+_0x307f2f;},'QqUav':function(_0x17b18b,_0x3b40de){return _0x17b18b>_0x3b40de;},'adgQK':_0x1644d3(0x15c),'YvuzN':function(_0xeccec2,_0xa994fe){return _0xeccec2(_0xa994fe);},'BInsX':'[\x27kode\x27,\x20\x27nama\x27,\x20\x27all\x27]','RsjGZ':'\x0a\x20\x20','VBdML':'${this.getTableSource(\x27read\x27)}','VgCtW':'AND\x20('};assertNoFileReferenceLeftover(_0x50d2d5);const _0x13b38a=_0x50d2d5['fieldName'][_0x1644d3(0x1ad)](_0x414366=>'\x27'+_0x414366+'\x27')[_0x1644d3(0x101)](',\x20'),_0x5b9bdf=_0x50d2d5['_fieldProjections']||{},_0x520155=(_0x5b9bdf[_0x1644d3(0x1f3)]||_0x50d2d5[_0x1644d3(0x11d)]||[])[_0x1644d3(0x1ad)](_0x530511=>'\x27'+_0x530511+'\x27')['join'](',\x20'),_0x32c43f=(_0x5b9bdf[_0x1644d3(0xf9)]||_0x50d2d5[_0x1644d3(0x11d)]||[])[_0x1644d3(0x1ad)](_0x5dd36a=>'\x27'+_0x5dd36a+'\x27')[_0x1644d3(0x101)](',\x20'),_0x567b2c=(_0x5b9bdf[_0x1644d3(0x11b)]||_0x5b9bdf[_0x1644d3(0x1f3)]||_0x50d2d5[_0x1644d3(0x11d)]||[])[_0x1644d3(0x1ad)](_0x508678=>'\x27'+_0x508678+'\x27')[_0x1644d3(0x101)](',\x20'),_0x370c36=toPascalCase(_0x34bcf1),_0x1e4957=_0x50d2d5['primaryKey']||'id',_0x4bc540=detectTextColumn(_0x50d2d5['fieldName']),_0x55c180=new Date()['toISOString'](),_0xbd53ae=_0x50d2d5['defaultScope']&&_0x50d2d5[_0x1644d3(0x188)]['lookup']?_0x508144[_0x1644d3(0x1db)](buildDefaultScopeSQL,_0x50d2d5[_0x1644d3(0x188)]['lookup']):'',_0x388618=_0x50d2d5[_0x1644d3(0x188)]&&_0x50d2d5['defaultScope'][_0x1644d3(0x1fa)]?buildDefaultScopeSQL(_0x50d2d5[_0x1644d3(0x188)]['read']):'',_0x4111c0={};return _0x50d2d5['fieldValidation']&&Array[_0x1644d3(0x155)](_0x50d2d5['fieldValidation'])&&_0x50d2d5['fieldValidation'][_0x1644d3(0x18a)](_0x16c680=>{const _0x26ada7=_0x1644d3;['date',_0x26ada7(0x180),_0x508144['tDYGy'],'time'][_0x26ada7(0x118)](_0x16c680['type'])&&(_0x4111c0[_0x16c680['name']]={'type':_0x16c680[_0x26ada7(0x179)],'format':_0x16c680[_0x26ada7(0x138)]&&_0x16c680['constraints']['format']||'yyyy-MM-dd'});}),_0x1644d3(0x1bb)+_0x370c36+_0x1644d3(0x203)+_0x55c180+_0x1644d3(0x205)+_0x50d2d5['tableName']+'\x0a*\x20Primary\x20Key:\x20'+_0x1e4957+_0x1644d3(0x189)+_0x50d2d5['fieldName']['length']+'\x0a*\x20Database:\x20SQLite\x0a*/\x0aclass\x20'+_0x370c36+_0x1644d3(0x18b)+_0x13b38a+_0x1644d3(0x1c8)+_0x520155+'\x0a\x20\x20];\x0a\x20\x20const\x20readableFields\x20=\x20[\x0a\x20\x20\x20\x20'+_0x32c43f+'\x0a\x20\x20];\x0a\x20\x20const\x20datatablesFields\x20=\x20[\x0a\x20\x20\x20\x20'+_0x567b2c+'\x0a\x20\x20];\x0a\x0a\x20\x20const\x20datatablesWhere\x20=\x20'+(_0x50d2d5[_0x1644d3(0x20d)]?JSON['stringify'](_0x50d2d5['datatablesWhere']):_0x508144['BInsX'])+';\x0a\x0a\x20\x20super(\x27'+_0x50d2d5['tableName']+_0x1644d3(0x187)+_0x1e4957+_0x1644d3(0x1a6)+(_0x50d2d5[_0x1644d3(0x12a)]||_0x50d2d5[_0x1644d3(0x111)])+'\x27;\x0a\x20\x20this.readSource\x20=\x20\x27'+(_0x50d2d5['viewName']||_0x50d2d5['tableName'])+_0x1644d3(0xf5)+_0x50d2d5['tableName']+'\x27;\x0a\x0a\x20\x20//\x20Flag\x20untuk\x20self-documenting\x20API\x20(endpoint\x20/info)\x0a\x20\x20this.hasViewQuery\x20=\x20'+!!_0x50d2d5['viewQuery']+';\x0a\x20\x20this.hasExportQuery\x20=\x20'+!!_0x50d2d5[_0x1644d3(0x1af)]+';\x0a'+(_0x508144[_0x1644d3(0x1c3)](Object['keys'](_0x4111c0)['length'],0x0)?_0x1644d3(0x1e3)+JSON[_0x1644d3(0x102)](_0x4111c0,null,0x4)['split']('\x0a')[_0x1644d3(0x101)](_0x508144['RsjGZ'])+';\x0a':'')+(_0x50d2d5['uploadConfig']&&_0x50d2d5['uploadConfig'][_0x1644d3(0x120)]?_0x1644d3(0x210)+JSON['stringify'](Object['keys'](_0x50d2d5['uploadConfig'][_0x1644d3(0x120)]))+';\x0a':'')+_0x1644d3(0x122)+((()=>{const _0x3f8f06=_0x1644d3;if(!_0x50d2d5[_0x3f8f06(0x214)]||!Array[_0x3f8f06(0x155)](_0x50d2d5['fieldValidation'])||_0x50d2d5['fieldValidation'][_0x3f8f06(0x146)]===0x0)return'\x20\x20this.validationConfig\x20=\x20{};\x20//\x20No\x20field\x20validation\x20config';const _0x5dbb24=_0x50d2d5['fieldValidation']['map'](_0x1c3694=>{const _0xf5d0c3=_0x3f8f06,_0x2ef6d8=JSON['stringify'](_0x1c3694[_0xf5d0c3(0x138)]||{},null,0x6)[_0xf5d0c3(0x149)](/\n/g,_0xf5d0c3(0x1a8));return'\x20\x20\x20\x20\x20\x20\x27'+_0x1c3694['name']+_0xf5d0c3(0x1ee)+_0x1c3694[_0xf5d0c3(0x179)]+_0xf5d0c3(0x1e0)+_0x2ef6d8+_0xf5d0c3(0x143);})[_0x3f8f06(0x101)](',\x0a');return _0x3f8f06(0xe9)+_0x5dbb24+_0x3f8f06(0x1fe);})())+'\x0a\x0a\x20\x20//\x20Model\x20metadata\x0a\x20\x20this.modelMetadata\x20=\x20{\x0a\x20\x20\x20\x20endpointName:\x20\x27'+_0x34bcf1+_0x1644d3(0x20f)+_0x1bba0a+_0x1644d3(0x132)+_0x50d2d5['tableName']+'\x27,\x0a\x20\x20\x20\x20databaseType:\x20\x27sqlite\x27,\x0a\x20\x20\x20\x20primaryKey:\x20\x27'+_0x1e4957+_0x1644d3(0x1cb)+_0x50d2d5['fieldName']['length']+_0x1644d3(0xf8)+_0x55c180+'\x27\x0a\x20\x20};\x0a\x0a\x20\x20this.advancedQueryTemplates\x20=\x20this.loadAdvancedQueryTemplates();\x0a}\x0a\x0a/**\x0a\x20*\x20Load\x20advanced\x20query\x20templates\x20dari\x20file\x0a\x20*/\x0aloadAdvancedQueryTemplates()\x20{\x0a\x20\x20const\x20templates\x20=\x20{};\x0a\x0a\x20\x20'+(_0x50d2d5['advancedQueries']?Object[_0x1644d3(0x1c6)](_0x50d2d5['advancedQueries'])['map'](([_0x335638,_0x18595a])=>'\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20if\x20(typeof\x20\x22'+_0x18595a+_0x1644d3(0x1bf)+_0x18595a+_0x1644d3(0x127)+_0x18595a+_0x1644d3(0x20b)+_0x335638+'\x22]\x20=\x20fs.readFileSync(filePath,\x20\x27utf8\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(`SQL\x20Template\x20'+_0x335638+'\x20loaded\x20successfully\x20from\x20SQLite\x20file`);\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(`SQL\x20Template\x20file\x20'+_0x335638+'\x20not\x20found:\x20${filePath}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20templates[\x22'+_0x335638+'\x22]\x20=\x20null;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20templates[\x22'+_0x335638+_0x1644d3(0x14f)+_0x18595a+'\x22;\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(`Error\x20loading\x20SQLite\x20template\x20'+_0x335638+':`,\x20error);\x0a\x20\x20\x20\x20templates[\x22'+_0x335638+_0x1644d3(0x18d))['join'](''):_0x1644d3(0x1d8))+_0x1644d3(0x1be)+(_0x50d2d5['datatablesQuery']?'\x20\x20let\x20baseQuery\x20=\x20`\x0a\x20\x20\x20\x20'+_0x50d2d5['datatablesQuery'][_0x1644d3(0x149)](/\$\{tableName\}/g,_0x508144[_0x1644d3(0x141)])+'\x0a\x20\x20`.trim();\x0a\x0a\x20\x20//\x20Convert\x20PostgreSQL\x20syntax\x20to\x20SQLite\x20if\x20needed\x0a\x20\x20baseQuery\x20=\x20this.convertToSqliteSQL(baseQuery);\x0a\x0a\x20\x20return\x20baseQuery;':'\x20\x20return\x20\x27SELECT\x20*\x20FROM\x20\x27\x20+\x20this.readSource;')+_0x1644d3(0x1ef)+(_0x50d2d5[_0x1644d3(0x13a)]?'\x20\x20let\x20baseQuery\x20=\x20`\x0a\x20\x20\x20\x20'+_0x50d2d5[_0x1644d3(0x13a)][_0x1644d3(0x149)](/\$\{tableName\}/g,_0x508144[_0x1644d3(0x141)])+'\x0a\x20\x20`.trim();\x0a\x20\x20baseQuery\x20=\x20this.convertToSqliteSQL(baseQuery);\x0a\x20\x20return\x20baseQuery;':'\x20\x20return\x20\x27SELECT\x20*\x20FROM\x20\x27\x20+\x20this.readSource;')+_0x1644d3(0x121)+(_0x388618?'\x0a\x20\x20\x20\x20//\x20Default\x20scope\x20filter\x20untuk\x20read\x0a\x20\x20\x20\x20if\x20(whereClauseSql)\x20{\x0a\x20\x20\x20\x20\x20\x20whereClauseSql\x20=\x20`WHERE\x20'+_0x388618+_0x1644d3(0x1d0)+_0x388618+_0x1644d3(0x1d7):'')+'\x0a\x20\x20\x20\x20//\x20Support\x20WHERE\x20conditions\x20dari\x20request\x20body\x0a\x20\x20\x20\x20if\x20(where)\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20complexResult\x20=\x20this.buildComplexWhereClause(where,\x20whereParams,\x20\x27\x27,\x20this.readableFields);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(whereClauseSql)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20whereClauseSql\x20=\x20`${whereClauseSql}\x20AND\x20${complexResult.sql}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20whereClauseSql\x20=\x20`WHERE\x20${complexResult.sql}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20whereParams\x20=\x20complexResult.params;\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Fail-closed\x20where-field:\x20teruskan\x20error\x20terstruktur\x20apa\x20adanya.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(e.code\x20===\x20\x27INVALID_WHERE_FIELD\x27)\x20throw\x20e;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20error\x20=\x20new\x20Error(\x27Invalid\x20where\x20conditions:\x20\x27\x20+\x20e.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error.statusCode\x20=\x20400;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Count\x20total\x20unfiltered\x20records\x0a\x20\x20\x20\x20const\x20countTotalQuery\x20=\x20needsSubquery\x0a\x20\x20\x20\x20\x20\x20?\x20\x27SELECT\x20COUNT(*)\x20as\x20total\x20FROM\x20(\x27\x20+\x20baseQuery\x20+\x20\x27)\x20as\x20base_query\x27\x0a\x20\x20\x20\x20\x20\x20:\x20\x27SELECT\x20COUNT(*)\x20as\x20total\x20FROM\x20\x27\x20+\x20this.getTableSource(\x27read\x27)\x20+\x20\x27\x20a\x27;\x0a\x20\x20\x20\x20const\x20countTotalResult\x20=\x20await\x20db.executeQuery(countTotalQuery);\x0a\x20\x20\x20\x20const\x20totalUnfiltered\x20=\x20countTotalResult\x20&&\x20countTotalResult[0]\x20?\x20parseInt(countTotalResult[0].total)\x20:\x200;\x0a\x0a\x20\x20\x20\x20//\x20Count\x20filtered\x20records\x0a\x20\x20\x20\x20let\x20totalRecords\x20=\x20totalUnfiltered;\x0a\x20\x20\x20\x20if\x20(whereClauseSql)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20countQuery\x20=\x20needsSubquery\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20\x27SELECT\x20COUNT(*)\x20as\x20total\x20FROM\x20(\x27\x20+\x20baseQuery\x20+\x20\x27)\x20as\x20base_query\x20\x27\x20+\x20(whereClauseSql\x20||\x20\x27\x27)\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20\x27SELECT\x20COUNT(*)\x20as\x20total\x20FROM\x20\x27\x20+\x20this.getTableSource(\x27read\x27)\x20+\x20\x27\x20a\x20\x27\x20+\x20(whereClauseSql\x20||\x20\x27\x27);\x0a\x20\x20\x20\x20\x20\x20const\x20countResult\x20=\x20await\x20db.executeQuery(countQuery,\x20whereParams.length\x20>\x200\x20?\x20whereParams\x20:\x20undefined);\x0a\x20\x20\x20\x20\x20\x20totalRecords\x20=\x20countResult\x20&&\x20countResult[0]\x20?\x20parseInt(countResult[0].total)\x20:\x200;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Build\x20query\x20berdasarkan\x20mode\x20paginasi\x20(subquery\x20wrapping\x20untuk\x20JOIN/CTE)\x0a\x20\x20\x20\x20let\x20query;\x0a\x20\x20\x20\x20if\x20(paginate)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20offset\x20=\x20(page\x20-\x201)\x20*\x20perPage;\x0a\x20\x20\x20\x20\x20\x20query\x20=\x20needsSubquery\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20\x27SELECT\x20*\x20FROM\x20(\x27\x20+\x20baseQuery\x20+\x20\x27)\x20as\x20base_query\x20\x27\x20+\x20(whereClauseSql\x20||\x20\x27\x27)\x20+\x20orderClause\x20+\x20\x27\x20LIMIT\x20\x27\x20+\x20perPage\x20+\x20\x27\x20OFFSET\x20\x27\x20+\x20offset\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20baseQuery\x20+\x20\x27\x20\x27\x20+\x20(whereClauseSql\x20||\x20\x27\x27)\x20+\x20orderClause\x20+\x20`\x20LIMIT\x20${perPage}\x20OFFSET\x20${offset}`;\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20query\x20=\x20needsSubquery\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20\x27SELECT\x20*\x20FROM\x20(\x27\x20+\x20baseQuery\x20+\x20\x27)\x20as\x20base_query\x20\x27\x20+\x20(whereClauseSql\x20||\x20\x27\x27)\x20+\x20orderClause\x20+\x20\x27\x20LIMIT\x20\x27\x20+\x20limit\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20baseQuery\x20+\x20\x27\x20\x27\x20+\x20(whereClauseSql\x20||\x20\x27\x27)\x20+\x20orderClause\x20+\x20`\x20LIMIT\x20${limit}`;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20console.log(\x27List\x20SQL\x20Query:\x27,\x20query);\x0a\x20\x20\x20\x20console.log(\x27List\x20Query\x20Parameters:\x27,\x20whereParams);\x0a\x20\x20\x20\x20const\x20rawData\x20=\x20await\x20db.executeQuery(query,\x20whereParams.length\x20>\x200\x20?\x20whereParams\x20:\x20undefined);\x0a\x0a\x20\x20\x20\x20const\x20data\x20=\x20rawData\x20?\x20rawData.map((row)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20this.formatResponseData(row);\x0a\x20\x20\x20\x20})\x20:\x20[];\x0a\x0a\x20\x20\x20\x20const\x20result\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20data:\x20data\x0a\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20if\x20(paginate)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20totalPages\x20=\x20Math.ceil(totalRecords\x20/\x20perPage);\x0a\x20\x20\x20\x20\x20\x20result.pagination\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20current_page:\x20page,\x0a\x20\x20\x20\x20\x20\x20\x20\x20per_page:\x20perPage,\x0a\x20\x20\x20\x20\x20\x20\x20\x20total_records:\x20totalRecords,\x0a\x20\x20\x20\x20\x20\x20\x20\x20total_pages:\x20totalPages,\x0a\x20\x20\x20\x20\x20\x20\x20\x20has_next:\x20page\x20<\x20totalPages,\x0a\x20\x20\x20\x20\x20\x20\x20\x20has_previous:\x20page\x20>\x201\x0a\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Cache\x20result\x0a\x20\x20\x20\x20await\x20this.setCachedList(options,\x20result);\x0a\x20\x20\x20\x20console.log(`[Cache]\x20SET\x20for\x20list\x20-\x20${cacheInfo}`);\x0a\x0a\x20\x20\x20\x20return\x20result;\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20in\x20getList:\x27,\x20error);\x0a\x20\x20\x20\x20throw\x20error;\x0a\x20\x20}\x0a}\x0a\x0a/**\x0a\x20*\x20Override\x20getLookupData\x20untuk\x20SQLite\x20(dynamic\x20search)\x0a\x20*/\x0aasync\x20getLookupData(search)\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20const\x20query\x20=\x20`SELECT\x20'+_0x1e4957+',\x20'+_0x4bc540+_0x1644d3(0x1bc)+_0x4bc540+_0x1644d3(0x152)+(_0xbd53ae?'\x20AND\x20'+_0xbd53ae:'')+'\x20ORDER\x20BY\x20'+_0x4bc540+_0x1644d3(0x17d)+_0x1e4957+_0x1644d3(0x117)+_0x4bc540+_0x1644d3(0x119)+(_0xbd53ae?_0x1644d3(0x10b)+_0xbd53ae+_0x1644d3(0x1fc):'')+_0x1644d3(0x202)+_0x4bc540+'\x20LIKE\x20?`);\x0a\x20\x20\x20\x20\x20\x20params.push(`%${search}%`);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Add\x20extra\x20filters\x0a\x20\x20\x20\x20if\x20(extraFilters\x20&&\x20Object.keys(extraFilters).length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(extraFilters))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(this.readableFields.includes(key)\x20&&\x20value\x20!==\x20null\x20&&\x20value\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20whereConditions.push(`${key}\x20=\x20?`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20params.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20const\x20whereClause\x20=\x20whereConditions.length\x20>\x200\x20?\x20\x27WHERE\x20\x27\x20+\x20whereConditions.join(\x27\x20AND\x20\x27)\x20:\x20\x27\x27;\x0a\x0a\x20\x20\x20\x20const\x20query\x20=\x20`SELECT\x20'+_0x1e4957+',\x20'+_0x4bc540+_0x1644d3(0x1f6)+_0x4bc540+'\x20LIMIT\x20100`;\x0a\x20\x20\x20\x20const\x20data\x20=\x20await\x20db.executeQuery(query,\x20params.length\x20>\x200\x20?\x20params\x20:\x20undefined);\x0a\x0a\x20\x20\x20\x20return\x20data.map(item\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20id:\x20item.'+_0x1e4957+_0x1644d3(0x117)+_0x4bc540+'\x0a\x20\x20\x20\x20}));\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20in\x20SQLite\x20getLookupDataDynamic:\x27,\x20error);\x0a\x20\x20\x20\x20throw\x20error;\x0a\x20\x20}\x0a}\x0a\x0a/**\x0a\x20*\x20Override\x20getStaticLookupData\x20untuk\x20SQLite\x0a\x20*/\x0aasync\x20getStaticLookupData(selectedTag)\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20Check\x20cache\x20first\x20-\x20cache\x20tanpa\x20selectedTag\x20karena\x20data\x20sama\x0a\x20\x20\x20\x20const\x20cacheOptions\x20=\x20{\x20type:\x20\x27static\x27\x20};\x0a\x20\x20\x20\x20const\x20cachedResult\x20=\x20await\x20this.getCachedLookup(cacheOptions,\x20\x27static\x27);\x0a\x20\x20\x20\x20if\x20(cachedResult)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Apply\x20selectedTag\x20to\x20cached\x20result\x0a\x20\x20\x20\x20\x20\x20return\x20cachedResult.map(item\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(item.id\x20===\x20selectedTag)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20...item,\x20selected:\x20\x27true\x27\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20id:\x20item.id,\x20text:\x20item.text\x20};\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20const\x20query\x20=\x20`SELECT\x20'+_0x1e4957+',\x20'+_0x4bc540+_0x1644d3(0x106)+(_0xbd53ae?_0x1644d3(0x218)+_0xbd53ae:'')+_0x1644d3(0x1df)+_0x4bc540+'\x20LIMIT\x201000`;\x0a\x20\x20\x20\x20const\x20data\x20=\x20await\x20db.executeQuery(query);\x0a\x0a\x20\x20\x20\x20//\x20Cache\x20result\x20tanpa\x20selected\x20flag\x0a\x20\x20\x20\x20const\x20cacheData\x20=\x20data.map(item\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20id:\x20item.'+_0x1e4957+_0x1644d3(0x117)+_0x4bc540+_0x1644d3(0x17a)+_0x1e4957+',\x0a\x20\x20\x20\x20\x20\x20\x20\x20text:\x20item.'+_0x4bc540+_0x1644d3(0x1ae)+_0x1e4957+'\x20===\x20selectedTag)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20row.selected\x20=\x20\x27true\x27;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20return\x20row;\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20in\x20SQLite\x20getStaticLookupData:\x27,\x20error);\x0a\x20\x20\x20\x20throw\x20error;\x0a\x20\x20}\x0a}\x0a\x0a/**\x0a\x20*\x20Lookup\x20dengan\x20advanced\x20filter\x20support\x20untuk\x20SQLite\x0a\x20*/\x0aasync\x20getLookupDataWithFilter(options)\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20Check\x20cache\x20first\x0a\x20\x20\x20\x20const\x20cacheOptions\x20=\x20{\x20...options,\x20type:\x20\x27filter\x27\x20};\x0a\x20\x20\x20\x20const\x20cachedResult\x20=\x20await\x20this.getCachedLookup(cacheOptions,\x20\x27filter\x27);\x0a\x20\x20\x20\x20if\x20(cachedResult)\x20return\x20cachedResult;\x0a\x0a\x20\x20\x20\x20const\x20selectColumns\x20=\x20options.select\x20||\x20[\x27'+_0x1e4957+'\x27,\x20\x27'+_0x4bc540+_0x1644d3(0x13d)+_0x1e4957+'\x27;\x0a\x20\x20\x20\x20let\x20textField\x20=\x20\x27'+_0x4bc540+'\x27;\x0a\x20\x20\x20\x20let\x20aliasField\x20=\x20null;\x0a\x0a\x20\x20\x20\x20//\x20Proses\x20setiap\x20column\x20dalam\x20select\x0a\x20\x20\x20\x20for\x20(const\x20column\x20of\x20selectColumns)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(column.toLowerCase()\x20===\x20\x27'+_0x1e4957+_0x1644d3(0x17b)+(_0xbd53ae?'WHERE\x20'+_0xbd53ae+'\x20':'')+_0x1644d3(0x133)+(_0xbd53ae?_0x508144['VgCtW']:_0x1644d3(0x1d6))+_0x1644d3(0xed)+(_0xbd53ae?')':'')+'\x20`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20params\x20=\x20whereResult.params;\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Fail-closed\x20where-field:\x20teruskan\x20error\x20terstruktur\x20apa\x20adanya.\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(e.code\x20===\x20\x27INVALID_WHERE_FIELD\x27)\x20throw\x20e;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20error\x20=\x20new\x20Error(\x27Invalid\x20where\x20conditions:\x20\x27\x20+\x20e.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20error.statusCode\x20=\x20400;\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Handle\x20sort_columns\x0a\x20\x20\x20\x20if\x20(options.sort_columns\x20&&\x20Array.isArray(options.sort_columns)\x20&&\x20options.sort_columns.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20orderParts\x20=\x20options.sort_columns.map(item\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20column\x20=\x20item.column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20direction\x20=\x20(item.direction\x20||\x20\x27ASC\x27).toUpperCase();\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!column)\x20return\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!this.readableFields.includes(column))\x20return\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(direction\x20!==\x20\x27ASC\x27\x20&&\x20direction\x20!==\x20\x27DESC\x27)\x20return\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20`${column}\x20${direction}`;\x0a\x20\x20\x20\x20\x20\x20}).filter(Boolean);\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(orderParts.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20error\x20=\x20new\x20Error(\x27No\x20valid\x20sort\x20columns\x20provided\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20error.statusCode\x20=\x20400;\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20query\x20+=\x20`ORDER\x20BY\x20${orderParts.join(\x27,\x20\x27)}`;\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20query\x20+=\x20`ORDER\x20BY\x20${aliasField\x20||\x20textField}`;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20console.log(\x27SQLite\x20Lookup\x20Filter\x20Query:\x27,\x20query);\x0a\x20\x20\x20\x20console.log(\x27Parameters:\x27,\x20params);\x0a\x0a\x20\x20\x20\x20const\x20data\x20=\x20await\x20db.executeQuery(query,\x20params.length\x20>\x200\x20?\x20params\x20:\x20undefined);\x0a\x0a\x20\x20\x20\x20const\x20result\x20=\x20data.map(item\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20id:\x20item.'+_0x1e4957+_0x1644d3(0xf0)+_0x4bc540+'\x20||\x20\x27\x27\x0a\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20//\x20Cache\x20the\x20result\x0a\x20\x20\x20\x20await\x20this.setCachedLookup(cacheOptions,\x20result,\x20\x27filter\x27);\x0a\x0a\x20\x20\x20\x20return\x20result;\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20in\x20getLookupDataWithFilter:\x27,\x20error);\x0a\x20\x20\x20\x20throw\x20error;\x0a\x20\x20}\x0a}\x0a\x0a/**\x0a\x20*\x20Build\x20advanced\x20filter\x20conditions\x20untuk\x20SQLite\x0a\x20*\x20@param\x20{Array}\x20filters\x20-\x20Array\x20of\x20{column,\x20type,\x20value,\x20value2}\x0a\x20*\x20@returns\x20{Object}\x20{sql,\x20params}\x0a\x20*/\x0abuildAdvancedFilterCondition(filters)\x20{\x0a\x20\x20if\x20(!filters\x20||\x20!Array.isArray(filters)\x20||\x20filters.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20return\x20{\x20sql:\x20\x27\x27,\x20params:\x20[]\x20};\x0a\x20\x20}\x0a\x0a\x20\x20const\x20conditions\x20=\x20[];\x0a\x20\x20const\x20params\x20=\x20[];\x0a\x0a\x20\x20for\x20(const\x20filter\x20of\x20filters)\x20{\x0a\x20\x20\x20\x20const\x20{\x20column,\x20type,\x20value,\x20value2\x20}\x20=\x20filter;\x0a\x0a\x20\x20\x20\x20if\x20(!column\x20||\x20!this.validFields.includes(column))\x20continue;\x0a\x0a\x20\x20\x20\x20switch\x20(type)\x20{\x0a\x20\x20\x20\x20\x20\x20case\x20\x27equals\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`${column}\x20=\x20?`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20params.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20case\x20\x27not_equals\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`${column}\x20<>\x20?`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20params.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20case\x20\x27contains\x27:\x0a\x20\x20\x20\x20\x20\x20case\x20\x27like\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`${column}\x20LIKE\x20?`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20params.push(`%${value}%`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20case\x20\x27not_contains\x27:\x0a\x20\x20\x20\x20\x20\x20case\x20\x27not_like\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`${column}\x20NOT\x20LIKE\x20?`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20params.push(`%${value}%`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20case\x20\x27starts_with\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`${column}\x20LIKE\x20?`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20params.push(`${value}%`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20case\x20\x27ends_with\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`${column}\x20LIKE\x20?`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20params.push(`%${value}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20case\x20\x27greater_than\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`${column}\x20>\x20?`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20params.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20case\x20\x27less_than\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`${column}\x20<\x20?`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20params.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20case\x20\x27greater_equal\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`${column}\x20>=\x20?`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20params.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20case\x20\x27less_equal\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`${column}\x20<=\x20?`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20params.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20case\x20\x27between\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`${column}\x20BETWEEN\x20?\x20AND\x20?`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20params.push(value,\x20value2);\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20case\x20\x27in\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(Array.isArray(value))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20inPlaceholders\x20=\x20value.map(()\x20=>\x20\x27?\x27).join(\x27,\x20\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`${column}\x20IN\x20(${inPlaceholders})`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20params.push(...value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20case\x20\x27not_in\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(Array.isArray(value))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20notInPlaceholders\x20=\x20value.map(()\x20=>\x20\x27?\x27).join(\x27,\x20\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`${column}\x20NOT\x20IN\x20(${notInPlaceholders})`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20params.push(...value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20case\x20\x27is_null\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`${column}\x20IS\x20NULL`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20case\x20\x27is_not_null\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`${column}\x20IS\x20NOT\x20NULL`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20case\x20\x27date_equals\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`date(${column})\x20=\x20?`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20params.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20case\x20\x27date_between\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`date(${column})\x20BETWEEN\x20?\x20AND\x20?`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20params.push(value,\x20value2);\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20case\x20\x27date_after\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`date(${column})\x20>\x20?`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20params.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20case\x20\x27date_before\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`date(${column})\x20<\x20?`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20params.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20default:\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20if\x20(conditions.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20return\x20{\x20sql:\x20\x27\x27,\x20params:\x20[]\x20};\x0a\x20\x20}\x0a\x0a\x20\x20return\x20{\x20sql:\x20conditions.join(\x27\x20AND\x20\x27),\x20params\x20};\x0a}\x0a\x0a/**\x0a\x20*\x20Escape\x20value\x20untuk\x20SQLite\x20SQL\x20(sanitization)\x0a\x20*/\x0aescapeValue(value)\x20{\x0a\x20\x20if\x20(value\x20===\x20null\x20||\x20value\x20===\x20undefined)\x20return\x20null;\x0a\x20\x20if\x20(typeof\x20value\x20===\x20\x27number\x27)\x20return\x20value;\x0a\x20\x20return\x20String(value).replace(/\x27/g,\x20\x22\x27\x27\x22);\x0a}\x0a\x0a/**\x0a\x20*\x20Validasi\x20data\x20sebelum\x20insert/update\x0a\x20*/\x0aasync\x20validateData(data,\x20operation\x20=\x20\x27insert\x27)\x20{\x0a\x20\x20const\x20result\x20=\x20{\x0a\x20\x20\x20\x20isValid:\x20true,\x0a\x20\x20\x20\x20errors:\x20[],\x0a\x20\x20\x20\x20warnings:\x20[],\x0a\x20\x20\x20\x20sanitizedData:\x20{}\x0a\x20\x20};\x0a\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20const\x20hasFieldValidation\x20=\x20this.validationConfig\x20&&\x20Object.keys(this.validationConfig).length\x20>\x200;\x0a\x0a\x20\x20\x20\x20if\x20(hasFieldValidation)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Loop\x20semua\x20field\x20yang\x20ada\x20di\x20validationConfig\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20fieldName\x20in\x20this.validationConfig)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20value\x20=\x20data[fieldName];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20config\x20=\x20this.validationConfig[fieldName];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20constraints\x20=\x20config.constraints\x20||\x20{};\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Auto-generate\x20value\x20jika\x20autoGenerate\x20dan\x20nilai\x20kosong.\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20String\x20dan\x20uuid\x20diperlakukan\x20sama:\x20UUID\x20v7\x20via\x20uuid\x20package\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20(konsisten\x20lintas\x20dialect;\x20cocok\x20dengan\x20konvensi\x20payload\x20category.json\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20yang\x20memakai\x20type:\x20\x22string\x22\x20dengan\x20constraint\x20autoGenerate\x20+\x20primaryKey).\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(operation\x20===\x20\x27insert\x27\x20&&\x20constraints.autoGenerate\x20&&\x20(!value\x20||\x20value\x20===\x20\x27\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(config.type\x20===\x20\x27uuid\x27\x20||\x20config.type\x20===\x20\x27string\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value\x20=\x20require(\x27uuid\x27).v7();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data[fieldName]\x20=\x20value;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Skip\x20validation\x20jika\x20value\x20kosong\x20dan\x20tidak\x20required\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20===\x20undefined\x20||\x20value\x20===\x20null\x20||\x20value\x20===\x20\x27\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(constraints.required)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Skip:\x20autoGenerate\x20atau\x20primaryKey\x20di\x20insert\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(operation\x20===\x20\x27insert\x27\x20&&\x20(constraints.autoGenerate\x20||\x20constraints.primaryKey))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20OK\x20—\x20akan\x20di-generate\x20otomatis\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Skip:\x20update\x20partial\x20—\x20field\x20tidak\x20dikirim\x20berarti\x20tidak\x20diubah\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20if\x20(operation\x20===\x20\x27update\x27\x20&&\x20value\x20===\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20OK\x20—\x20field\x20tidak\x20sedang\x20di-update\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20message\x20=\x20constraints.requiredMessage\x20||\x20`Field\x20\x27${fieldName}\x27\x20is\x20required`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.errors.push(message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.isValid\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Boolean\x20field:\x20di\x20SQLite\x20disimpan\x20sebagai\x20VARCHAR\x20\x27true\x27/\x27false\x27.\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Terima\x20true/\x27true\x27/1/\x271\x27\x20dan\x20false/\x27false\x27/0/\x270\x27\x20(selaras\x20dengan\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20PostgreSQL\x20_validateBooleanConstraints),\x20simpan\x20sebagai\x20string\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20\x27true\x27/\x27false\x27\x20agar\x20cocok\x20dengan\x20kolom\x20VARCHAR\x20+\x20CHECK.\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(config.type\x20===\x20\x27boolean\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20boolVal;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20===\x20true\x20||\x20value\x20===\x20\x27true\x27\x20||\x20value\x20===\x201\x20||\x20value\x20===\x20\x271\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20boolVal\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(value\x20===\x20false\x20||\x20value\x20===\x20\x27false\x27\x20||\x20value\x20===\x200\x20||\x20value\x20===\x20\x270\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20boolVal\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.errors.push(constraints.typeMessage\x20||\x20`Field\x20\x27${fieldName}\x27\x20must\x20be\x20a\x20boolean\x20(true/false)`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.isValid\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.sanitizedData[fieldName]\x20=\x20boolVal\x20?\x20\x27true\x27\x20:\x20\x27false\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20String\x20field:\x20hash\x20constraint\x20support.\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20text\x20diperlakukan\x20identik\x20dengan\x20string\x20(unbounded\x20string)\x20untuk\x20validasi\x20data.\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20((config.type\x20===\x20\x27string\x27\x20||\x20config.type\x20===\x20\x27text\x27)\x20&&\x20typeof\x20value\x20===\x20\x27string\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20sanitized\x20=\x20value;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20fieldErrors\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20isHashField\x20=\x20constraints.hash\x20===\x20\x27bcrypt\x27;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Trim\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(constraints.trim)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sanitized\x20=\x20sanitized.trim();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Case\x20transformation\x20(skip\x20jika\x20hash\x20field)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!isHashField)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(constraints.lowercase)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sanitized\x20=\x20sanitized.toLowerCase();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(constraints.uppercase)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sanitized\x20=\x20sanitized.toUpperCase();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Length\x20validation\x20(validasi\x20plaintext\x20sebelum\x20hash)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(constraints.minLength\x20&&\x20sanitized.length\x20<\x20constraints.minLength)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20fieldErrors.push(constraints.minLengthMessage\x20||\x20`Field\x20\x27${fieldName}\x27\x20must\x20be\x20at\x20least\x20${constraints.minLength}\x20characters`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(constraints.maxLength\x20&&\x20!isHashField\x20&&\x20sanitized.length\x20>\x20constraints.maxLength)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20fieldErrors.push(constraints.maxLengthMessage\x20||\x20`Field\x20\x27${fieldName}\x27\x20must\x20not\x20exceed\x20${constraints.maxLength}\x20characters`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Pattern\x20validation\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(constraints.pattern)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20regex\x20=\x20new\x20RegExp(constraints.pattern);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!regex.test(sanitized))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20fieldErrors.push(constraints.patternMessage\x20||\x20`Field\x20\x27${fieldName}\x27\x20does\x20not\x20match\x20required\x20pattern`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Format\x20validation\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(constraints.format\x20===\x20\x27email\x27\x20&&\x20!/^[^\x5cs@]+@[^\x5cs@]+\x5c.[^\x5cs@]+$/.test(sanitized))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20fieldErrors.push(constraints.formatMessage\x20||\x20`Field\x20\x27${fieldName}\x27\x20has\x20invalid\x20email\x20format`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(fieldErrors.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.isValid\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.errors.push(...fieldErrors);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Hash\x20transformation\x20(setelah\x20semua\x20validation\x20pass)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(isHashField\x20&&\x20fieldErrors.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20bcrypt\x20=\x20require(\x27bcrypt\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20cost\x20=\x20constraints.hashCost\x20||\x2010;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sanitized\x20=\x20await\x20bcrypt.hash(sanitized,\x20cost);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.sanitizedData[fieldName]\x20=\x20sanitized;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Non-string\x20field:\x20basic\x20sanitization\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.sanitizedData[fieldName]\x20=\x20value;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Validate\x20field\x20yang\x20tidak\x20ada\x20di\x20validationConfig\x20(backward\x20compatibility)\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20field\x20of\x20this.validFields)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!this.validationConfig[field]\x20&&\x20data[field]\x20!==\x20undefined\x20&&\x20data[field]\x20!==\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(typeof\x20data[field]\x20===\x20\x27string\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.sanitizedData[field]\x20=\x20data[field].trim().replace(/\x5c0/g,\x20\x27\x27).substring(0,\x204000);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.sanitizedData[field]\x20=\x20data[field];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Fallback:\x20Tidak\x20ada\x20fieldValidation\x20-\x20gunakan\x20generic\x20sanitization\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20field\x20of\x20this.validFields)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20value\x20=\x20data[field];\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20!==\x20undefined\x20&&\x20value\x20!==\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(typeof\x20value\x20===\x20\x27string\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.sanitizedData[field]\x20=\x20value.trim().replace(/\x5c0/g,\x20\x27\x27).substring(0,\x204000);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.sanitizedData[field]\x20=\x20value;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20result.errors.push(`Validation\x20error:\x20${error.message}`);\x0a\x20\x20\x20\x20result.isValid\x20=\x20false;\x0a\x20\x20}\x0a\x0a\x20\x20return\x20result;\x0a}\x0a\x0a/**\x0a\x20*\x20Get\x20field\x20mapping\x20information\x0a\x20*/\x0agetFieldMapping()\x20{\x0a\x20\x20return\x20{\x0a\x20\x20\x20\x20allFields:\x20this.validFields,\x0a\x20\x20\x20\x20primaryKey:\x20this.primaryKey,\x0a\x20\x20\x20\x20textFields:\x20this.validFields.filter(f\x20=>\x20f.includes(\x27name\x27)\x20||\x20f.includes(\x27nama\x27)\x20||\x20f.includes(\x27description\x27)),\x0a\x20\x20\x20\x20dateFields:\x20this.validFields.filter(f\x20=>\x20f.includes(\x27date\x27)\x20||\x20f.includes(\x27time\x27)),\x0a\x20\x20\x20\x20numericFields:\x20this.validFields.filter(f\x20=>\x20f.includes(\x27amount\x27)\x20||\x20f.includes(\x27price\x27)\x20||\x20f.includes(\x27count\x27))\x0a\x20\x20};\x0a}\x0a\x0a/**\x0a\x20*\x20Get\x20SQLite\x20connection\x20info\x20untuk\x20health\x20check\x0a\x20*/\x0aasync\x20getConnectionInfo()\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20const\x20result\x20=\x20await\x20db.executeQuery(\x27SELECT\x201\x20as\x20test_con\x27);\x0a\x20\x20\x20\x20if\x20(result\x20&&\x20result.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20{\x20connected:\x20true,\x20database:\x20\x27sqlite\x27,\x20retrievedAt:\x20new\x20Date().toISOString()\x20};\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20null;\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20return\x20{\x20connected:\x20false,\x20error:\x20error.message,\x20checkedAt:\x20new\x20Date().toISOString()\x20};\x0a\x20\x20}\x0a}\x0a'+((()=>{const _0x19e250=_0x1644d3,_0x1baed3=_0x50d2d5[_0x19e250(0x216)]&&_0x50d2d5['masterDetail']['enabled'],_0x3e240f=_0x50d2d5[_0x19e250(0x19a)]||{};if(!_0x1baed3||!_0x3e240f[_0x19e250(0x139)]&&!_0x3e240f['updateComposite']&&!_0x3e240f['readComposite'])return'';const _0xf13fe5=_0x50d2d5[_0x19e250(0x216)]['detailTable'],_0x56852f=_0xf13fe5[_0x19e250(0x18c)]('.')['pop'](),_0x1981b9=_0x50d2d5['masterDetail']['foreignKey'],_0xb9febb=_0x50d2d5[_0x19e250(0x216)][_0x19e250(0x201)]?.['primaryKey']||_0x56852f+_0x19e250(0x109),_0xac215e=_0x50d2d5['masterDetail'][_0x19e250(0x1c9)]||null,_0x1c0c1b=_0x50d2d5[_0x19e250(0x216)][_0x19e250(0x201)]?.[_0x19e250(0x1b0)]||{},_0x3663a5=_0x50d2d5['masterDetail']['detailConfig']?.[_0x19e250(0x123)]||null,_0x20e011=[],_0x33d413=[];for(const [_0x4351c3,_0x36db6d]of Object[_0x19e250(0x1c6)](_0x1c0c1b)){if(_0x508144['hiqDR'](_0x36db6d['type'],_0x508144[_0x19e250(0x206)]))_0x20e011['push'](_0x4351c3);else{const _0x527b71=(_0x36db6d['formula']||'')[_0x19e250(0x18c)]('*')[_0x19e250(0x1ad)](_0x32550e=>_0x32550e[_0x19e250(0x124)]());_0x33d413[_0x19e250(0x161)]({'fieldName':_0x4351c3,'qtyField':_0x527b71[0x0],'priceField':_0x527b71[0x1]});}}const _0x1dac61=_0x1c0c1b['total_amount']?.[_0x19e250(0xea)]||'',_0x2ec419=_0x1dac61['split']('*')['map'](_0x50b510=>_0x50b510[_0x19e250(0x124)]()),_0x374d85=_0xac215e?.[_0x19e250(0x181)]?.[_0x19e250(0x19b)]?.['replace'](_0x508144[_0x19e250(0x1c0)],'')||'',_0x1889f6=_0x2ec419[0x0]||_0x374d85,_0x19abc8=_0x2ec419[0x1]||_0x19e250(0x145),_0x52e8df=_0x33d413[_0x19e250(0x1ad)](_0x39e0f1=>{const _0x4a0e51=_0x19e250;return'\x20\x20\x20\x20\x20\x20//\x20Auto-calculate\x20'+_0x39e0f1['fieldName']+_0x4a0e51(0x19f)+_0x39e0f1[_0x4a0e51(0x1cd)]+_0x4a0e51(0x162)+_0x39e0f1[_0x4a0e51(0xe7)]+_0x4a0e51(0x215)+_0x39e0f1[_0x4a0e51(0x11d)]+_0x4a0e51(0x12e)+_0x39e0f1['qtyField']+_0x4a0e51(0x1dc)+_0x39e0f1[_0x4a0e51(0xe7)]+')\x20||\x200);';})[_0x19e250(0x101)]('\x0a');let _0x5924bb='';_0x3e240f[_0x19e250(0x139)]&&(_0x5924bb+='\x0a/**\x0a\x20*\x20Composite\x20create\x20-\x20Create\x20header\x20with\x20detail\x20items\x20in\x20a\x20single\x20transaction\x20(SQLite)\x0a\x20*/\x0aasync\x20createComposite(data,\x20eventContext\x20=\x20null)\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20---\x20Hook:\x20onBeforeCompositeInsert\x20---\x0a\x20\x20\x20\x20if\x20(eventContext\x20&&\x20eventContext.componentEngine)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20_ce\x20=\x20eventContext.componentEngine;\x0a\x20\x20\x20\x20\x20\x20var\x20_CB\x20=\x20eventContext.ContextBuilder;\x0a\x20\x20\x20\x20\x20\x20var\x20_detailItems\x20=\x20data[\x27'+_0x56852f+'\x27]\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20var\x20_headerData\x20=\x20{\x20...data\x20};\x0a\x20\x20\x20\x20\x20\x20delete\x20_headerData[\x27'+_0x56852f+'\x27];\x0a\x20\x20\x20\x20\x20\x20var\x20_beforeCtx\x20=\x20_CB.buildCompositeInsertBeforeContext(_headerData,\x20_detailItems,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x50d2d5[_0x19e250(0x111)]+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20detailTable:\x20\x27'+_0xf13fe5+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20foreignKey:\x20\x27'+_0x1981b9+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(eventContext.additionalContext\x20||\x20{})\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20var\x20_beforeResult\x20=\x20await\x20_ce.executeOnBeforeComposite(\x27insert\x27,\x20_beforeCtx);\x0a\x20\x20\x20\x20\x20\x20if\x20(!_beforeResult.success)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27onBeforeCompositeInsert\x20failed:\x20\x27\x20+\x20_beforeResult.error);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20const\x20detailKey\x20=\x20\x27'+_0x56852f+_0x19e250(0x126)+_0xf13fe5+'\x27;\x0a\x20\x20\x20\x20const\x20fk\x20=\x20\x27'+_0x1981b9+'\x27;\x0a\x20\x20\x20\x20const\x20detailPk\x20=\x20\x27'+_0xb9febb+'\x27;\x0a\x20\x20\x20\x20'+(_0x508144['LcJrD'](_0x20e011[_0x19e250(0x146)],0x0)?_0x19e250(0x1e4)+JSON[_0x19e250(0x102)](_0x20e011)+';':'')+'\x0a\x0a\x20\x20\x20\x20for\x20(const\x20item\x20of\x20data[detailKey]\x20||\x20[])\x20{\x0a\x20\x20\x20\x20\x20\x20item[fk]\x20=\x20masterPkValue;\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Auto-generate\x20UUID\x20untuk\x20detail\x20PK\x20bila\x20client\x20tidak\x20menyupply.\x0a\x20\x20\x20\x20\x20\x20//\x20Konsisten\x20dengan\x20konvensi\x20autoGenerate+primaryKey\x20di\x20single-table\x0a\x20\x20\x20\x20\x20\x20//\x20dan\x20seragam\x20lintas\x20dialect\x20(MySQL/Oracle/PG/SQLite):\x20semua\x20memakai\x0a\x20\x20\x20\x20\x20\x20//\x20uuid.v7()\x20sehingga\x20format\x20UUID\x20dan\x20titik\x20generasi\x20identik.\x0a\x20\x20\x20\x20\x20\x20if\x20(item[detailPk]\x20===\x20undefined\x20||\x20item[detailPk]\x20===\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20item[detailPk]\x20=\x20require(\x27uuid\x27).v7();\x0a\x20\x20\x20\x20\x20\x20}\x0a'+(_0x52e8df?_0x508144[_0x19e250(0x170)](_0x508144['mpaUX']('\x0a',_0x52e8df),'\x0a'):'')+'\x0a\x20\x20\x20\x20\x20\x20const\x20detailFields\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20detailValues\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20detailPlaceholders\x20=\x20[];\x0a\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(item))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x508144[_0x19e250(0x1c3)](_0x20e011['length'],0x0)?'if\x20(generatedFields.includes(key))\x20continue;':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20!==\x20undefined\x20&&\x20value\x20!==\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailFields.push(key);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailValues.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailPlaceholders.push(\x27?\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Inject\x20audit\x20columns\x20ke\x20detail\x20INSERT\x20via\x20helper\x0a\x20\x20\x20\x20\x20\x20this._appendCreateAuditColumns(detailFields,\x20detailValues,\x20detailPlaceholders,\x20item,\x20eventContext);\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20detailInsertSql\x20=\x20\x27INSERT\x20INTO\x20\x27\x20+\x20detailTableFull\x20+\x20\x27\x20(\x27\x20+\x20detailFields.join(\x27,\x20\x27)\x20+\x20\x27)\x20VALUES\x20(\x27\x20+\x20detailPlaceholders.join(\x27,\x20\x27)\x20+\x20\x27)\x20RETURNING\x20*\x27;\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Executing\x20detail\x20INSERT:\x27,\x20{\x20query:\x20detailInsertSql,\x20values:\x20detailValues\x20});\x0a\x20\x20\x20\x20\x20\x20const\x20detailRows\x20=\x20await\x20db.executeQuery(detailInsertSql,\x20detailValues);\x0a\x20\x20\x20\x20\x20\x20if\x20(detailRows[0])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20insertedItems.push(detailRows[0]);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20console.log(\x27Inserted\x20\x27\x20+\x20insertedItems.length\x20+\x20\x27\x20detail\x20item(s)\x27);\x0a\x0a\x20\x20\x20\x20//\x20---\x20Hook:\x20onAfterCompositeInsert\x20---\x0a\x20\x20\x20\x20if\x20(eventContext\x20&&\x20eventContext.componentEngine)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20_ce2\x20=\x20eventContext.componentEngine;\x0a\x20\x20\x20\x20\x20\x20var\x20_CB2\x20=\x20eventContext.ContextBuilder;\x0a\x20\x20\x20\x20\x20\x20var\x20_afterCtx\x20=\x20_CB2.buildCompositeInsertAfterContext(headerData,\x20insertedHeader,\x20insertedItems,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x50d2d5[_0x19e250(0x111)]+_0x19e250(0x114)+_0xf13fe5+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20foreignKey:\x20\x27'+_0x1981b9+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20primaryKey:\x20this.primaryKey,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(eventContext.additionalContext\x20||\x20{})\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20var\x20_afterResult\x20=\x20await\x20_ce2.executeOnAfterComposite(\x27insert\x27,\x20_afterCtx);\x0a\x20\x20\x20\x20\x20\x20if\x20(!_afterResult.success)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27onAfterCompositeInsert\x20failed:\x20\x27\x20+\x20_afterResult.error);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20console.log(\x27Composite\x20create\x20completed\x20successfully\x27);\x0a\x0a\x20\x20\x20\x20//\x20Invalidate\x20cache\x20setelah\x20write\x20operation\x20berhasil\x0a\x20\x20\x20\x20await\x20this.invalidateCache();\x0a\x0a\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20...insertedHeader,\x0a\x20\x20\x20\x20\x20\x20[detailKey]:\x20insertedItems\x0a\x20\x20\x20\x20};\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20in\x20createComposite:\x27,\x20error);\x0a\x20\x20\x20\x20throw\x20error;\x0a\x20\x20}\x0a}\x0a');_0x3e240f['updateComposite']&&(_0x5924bb+='\x0a/**\x0a\x20*\x20Composite\x20update\x20-\x20Update\x20header\x20with\x20granular\x20detail\x20operations\x20(SQLite)\x0a\x20*/\x0aasync\x20updateComposite(data,\x20eventContext\x20=\x20null)\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20const\x20primaryKeyValue\x20=\x20data[this.primaryKey];\x0a\x20\x20\x20\x20if\x20(!primaryKeyValue)\x20{\x0a\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27Primary\x20key\x20\x27\x20+\x20this.primaryKey\x20+\x20\x27\x20is\x20required\x20for\x20update\x27);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Check\x20if\x20record\x20exists\x20(also\x20serves\x20as\x20prefetch\x20oldData\x20for\x20hooks)\x0a\x20\x20\x20\x20const\x20checkSql\x20=\x20\x27SELECT\x20*\x20FROM\x20\x27\x20+\x20this.writeSource\x20+\x20\x27\x20WHERE\x20\x27\x20+\x20this.primaryKey\x20+\x20\x27\x20=\x20?\x27;\x0a\x20\x20\x20\x20const\x20checkRows\x20=\x20await\x20db.executeQuery(checkSql,\x20[primaryKeyValue]);\x0a\x20\x20\x20\x20if\x20(!checkRows\x20||\x20checkRows.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27Record\x20not\x20found\x27);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20const\x20oldData\x20=\x20checkRows[0];\x0a\x0a\x20\x20\x20\x20//\x20Extract\x20header\x20data\x0a\x20\x20\x20\x20const\x20headerData\x20=\x20{\x20...data\x20};\x0a\x20\x20\x20\x20const\x20detailKey\x20=\x20\x27'+_0x56852f+_0x19e250(0x16a)+_0x50d2d5[_0x19e250(0x111)]+_0x19e250(0x114)+_0xf13fe5+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20foreignKey:\x20\x27'+_0x1981b9+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20primaryKey:\x20this.primaryKey,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(eventContext.additionalContext\x20||\x20{})\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20var\x20_beforeResult\x20=\x20await\x20_ce.executeOnBeforeComposite(\x27update\x27,\x20_beforeCtx);\x0a\x20\x20\x20\x20\x20\x20if\x20(!_beforeResult.success)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27onBeforeCompositeUpdate\x20failed:\x20\x27\x20+\x20_beforeResult.error);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Build\x20header\x20UPDATE\x20with\x20RETURNING\x0a\x20\x20\x20\x20const\x20headerFields\x20=\x20[];\x0a\x20\x20\x20\x20const\x20headerValues\x20=\x20[];\x0a\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(headerData))\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(value\x20!==\x20undefined\x20&&\x20value\x20!==\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20headerFields.push(key\x20+\x20\x27\x20=\x20?\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20headerValues.push(value);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Inject\x20audit\x20columns\x20(updated_at,\x20updated_by)\x20via\x20helper\x0a\x20\x20\x20\x20this._appendUpdateAuditColumns(headerFields,\x20headerValues,\x20headerData,\x20eventContext);\x0a\x0a\x20\x20\x20\x20headerValues.push(primaryKeyValue);\x0a\x20\x20\x20\x20const\x20updateSql\x20=\x20\x27UPDATE\x20\x27\x20+\x20this.writeSource\x20+\x20\x27\x20SET\x20\x27\x20+\x20headerFields.join(\x27,\x20\x27)\x20+\x20\x27\x20WHERE\x20\x27\x20+\x20this.primaryKey\x20+\x20\x27\x20=\x20?\x20RETURNING\x20*\x27;\x0a\x20\x20\x20\x20console.log(\x27Executing\x20header\x20UPDATE:\x27,\x20{\x20query:\x20updateSql,\x20values:\x20headerValues\x20});\x0a\x20\x20\x20\x20const\x20headerRows\x20=\x20await\x20db.executeQuery(updateSql,\x20headerValues);\x0a\x20\x20\x20\x20let\x20updatedHeader\x20=\x20headerRows[0];\x0a\x0a\x20\x20\x20\x20//\x20Process\x20detail\x20items\x0a\x20\x20\x20\x20const\x20detailTableFull\x20=\x20\x27'+_0xf13fe5+_0x19e250(0x16e)+_0x1981b9+'\x27;\x0a\x20\x20\x20\x20const\x20detailPk\x20=\x20\x27'+_0xb9febb+_0x19e250(0x130)+(_0x20e011['length']>0x0?'const\x20generatedFields\x20=\x20'+JSON['stringify'](_0x20e011)+';':'')+_0x19e250(0x19d)+(_0x52e8df?'\x0a'+_0x52e8df+'\x0a':'')+'\x0a\x20\x20\x20\x20\x20\x20const\x20dFields\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20dValues\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(item))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(key\x20===\x20detailPk)\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x508144[_0x19e250(0x128)](_0x20e011['length'],0x0)?'if\x20(generatedFields.includes(key))\x20continue;':'')+_0x19e250(0xf4)+(_0x52e8df?_0x508144[_0x19e250(0x170)]('\x0a',_0x52e8df)+'\x0a':'')+_0x19e250(0x13b)+(_0x20e011['length']>0x0?_0x19e250(0x1fb):'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20!==\x20undefined\x20&&\x20value\x20!==\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20dFields.push(key);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20dValues.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20dPlaceholders.push(\x27?\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Inject\x20audit\x20columns\x20ke\x20detail\x20INSERT\x20via\x20helper\x0a\x20\x20\x20\x20\x20\x20this._appendCreateAuditColumns(dFields,\x20dValues,\x20dPlaceholders,\x20item,\x20eventContext);\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20dInsertSql\x20=\x20\x27INSERT\x20INTO\x20\x27\x20+\x20detailTableFull\x20+\x20\x27\x20(\x27\x20+\x20dFields.join(\x27,\x20\x27)\x20+\x20\x27)\x20VALUES\x20(\x27\x20+\x20dPlaceholders.join(\x27,\x20\x27)\x20+\x20\x27)\x27;\x0a\x20\x20\x20\x20\x20\x20await\x20db.executeQuery(dInsertSql,\x20dValues);\x0a\x20\x20\x20\x20\x20\x20insertedItems.push(item);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20console.log(\x27Inserted\x20\x27\x20+\x20insertedItems.length\x20+\x20\x27\x20new\x20detail\x20item(s)\x27);\x0a\x0a\x20\x20\x20\x20//\x20Get\x20all\x20current\x20detail\x20items\x0a\x20\x20\x20\x20const\x20allItemsSql\x20=\x20\x27SELECT\x20*\x20FROM\x20\x27\x20+\x20detailTableFull\x20+\x20\x27\x20WHERE\x20\x27\x20+\x20fk\x20+\x20\x27\x20=\x20?\x20ORDER\x20BY\x20line_number\x27;\x0a\x20\x20\x20\x20const\x20allItems\x20=\x20await\x20db.executeQuery(allItemsSql,\x20[primaryKeyValue]);\x0a'+(_0xac215e?_0x19e250(0x115)+JSON['stringify'](_0xac215e)+_0x19e250(0x10d)+(_0x1889f6?_0x19e250(0x1e2)+_0x1889f6+_0x19e250(0x15f)+_0x19abc8+_0x19e250(0x147):_0x508144['adgQK'])+'\x0a\x0a\x20\x20\x20\x20if\x20(recalcFields.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Inject\x20audit\x20columns\x20(updated_at,\x20updated_by)\x20ke\x20recalc\x20UPDATE\x20via\x20helper\x0a\x20\x20\x20\x20\x20\x20this._appendUpdateAuditColumns(recalcFields,\x20recalcValues,\x20data,\x20eventContext);\x0a\x20\x20\x20\x20\x20\x20recalcValues.push(primaryKeyValue);\x0a\x20\x20\x20\x20\x20\x20var\x20recalcSql\x20=\x20\x27UPDATE\x20\x27\x20+\x20this.writeSource\x20+\x20\x27\x20SET\x20\x27\x20+\x20recalcFields.join(\x27,\x20\x27)\x20+\x20\x27\x20WHERE\x20\x27\x20+\x20this.primaryKey\x20+\x20\x27\x20=\x20?\x20RETURNING\x20*\x27;\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Recalculating\x20header\x20totals:\x27,\x20{\x20query:\x20recalcSql,\x20values:\x20recalcValues\x20});\x0a\x20\x20\x20\x20\x20\x20var\x20recalcRows\x20=\x20await\x20db.executeQuery(recalcSql,\x20recalcValues);\x0a\x20\x20\x20\x20\x20\x20updatedHeader\x20=\x20recalcRows[0];\x0a\x20\x20\x20\x20}\x0a':'')+_0x19e250(0x209)+_0x50d2d5[_0x19e250(0x111)]+_0x19e250(0x114)+_0xf13fe5+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20foreignKey:\x20\x27'+_0x1981b9+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20primaryKey:\x20this.primaryKey,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(eventContext.additionalContext\x20||\x20{})\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20var\x20_afterResult\x20=\x20await\x20_ce2.executeOnAfterComposite(\x27update\x27,\x20_afterCtx);\x0a\x20\x20\x20\x20\x20\x20if\x20(!_afterResult.success)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27onAfterCompositeUpdate\x20failed:\x20\x27\x20+\x20_afterResult.error);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20console.log(\x27Composite\x20update\x20completed\x20successfully\x27);\x0a\x0a\x20\x20\x20\x20//\x20Invalidate\x20cache\x20setelah\x20write\x20operation\x20berhasil\x0a\x20\x20\x20\x20await\x20this.invalidateCache();\x0a\x0a\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20...updatedHeader,\x0a\x20\x20\x20\x20\x20\x20[detailKey]:\x20allItems,\x0a\x20\x20\x20\x20\x20\x20_operations:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20deleted:\x20deletedItems.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20updated:\x20updatedItems.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20inserted:\x20insertedItems.length\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20};\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20in\x20updateComposite:\x27,\x20error);\x0a\x20\x20\x20\x20throw\x20error;\x0a\x20\x20}\x0a}\x0a');if(_0x3e240f[_0x19e250(0x211)]){let _0x49c141;_0x3663a5?_0x49c141='const\x20detailSql\x20=\x20`'+_0x3663a5['replace'](/\$1/g,'?')+'`;':_0x49c141=_0x19e250(0x10f)+_0xf13fe5+'\x20WHERE\x20'+_0x1981b9+_0x19e250(0x163),_0x5924bb+='\x0a/**\x0a\x20*\x20Composite\x20read\x20-\x20Read\x20header\x20with\x20detail\x20items\x20(SQLite)\x0a\x20*/\x0aasync\x20readComposite(options)\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20if\x20(!options.where)\x20{\x0a\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27Invalid\x20request\x20format:\x20where\x20parameter\x20is\x20required\x27);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20whereClauseResult;\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20whereClauseResult\x20=\x20this.buildComplexWhereClause(options.where);\x0a\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Fail-closed\x20where-field:\x20teruskan\x20error\x20terstruktur\x20apa\x20adanya.\x0a\x20\x20\x20\x20\x20\x20if\x20(e.code\x20===\x20\x27INVALID_WHERE_FIELD\x27)\x20throw\x20e;\x0a\x20\x20\x20\x20\x20\x20const\x20error\x20=\x20new\x20Error(\x27Invalid\x20where\x20conditions:\x20\x27\x20+\x20e.message);\x0a\x20\x20\x20\x20\x20\x20error.statusCode\x20=\x20400;\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20const\x20{\x20sql:\x20whereClause,\x20params\x20}\x20=\x20whereClauseResult;\x0a\x20\x20\x20\x20const\x20headerSql\x20=\x20\x27SELECT\x20*\x20FROM\x20\x27\x20+\x20this.getTableSource(\x27read\x27)\x20+\x20\x27\x20WHERE\x20\x27\x20+\x20whereClause;\x0a\x20\x20\x20\x20const\x20headerResults\x20=\x20await\x20db.executeQuery(headerSql,\x20params);\x0a\x0a\x20\x20\x20\x20if\x20(!headerResults\x20||\x20headerResults.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20{\x20success:\x20true,\x20count:\x200,\x20data:\x20[]\x20};\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20const\x20compositeResults\x20=\x20[];\x0a\x20\x20\x20\x20const\x20detailKey\x20=\x20\x27'+_0x56852f+_0x19e250(0x130)+_0x49c141+_0x19e250(0x1c4);}return _0x5924bb;})())+'\x0a}\x0a\x0amodule.exports\x20=\x20new\x20'+_0x370c36+_0x1644d3(0x1c2);}function createSqliteSubmoduleTemplate(_0x13c8ca,_0x28750,_0x2f613d){const _0x5a0688=a0_0x5d30,_0x3a2fe0={'LUGsh':function(_0x3b203f,_0x438c43){return _0x3b203f(_0x438c43);},'qifAA':function(_0x475940,_0x27eee5,_0x3bcb74){return _0x475940(_0x27eee5,_0x3bcb74);},'AqJBe':function(_0x453b35,_0x43c4ae){return _0x453b35!==_0x43c4ae;}},_0x154710=_0x3a2fe0[_0x5a0688(0x144)](toCamelCase,_0x28750)+_0x5a0688(0x1b9),_0x431e1b=_0x2f613d[_0x5a0688(0x195)]||'id',_0x120ded=new Date()[_0x5a0688(0x18e)](),_0x31814a=Object[_0x5a0688(0x1c6)](_0x2f613d['action']||{})['filter'](([,_0xca367e])=>_0xca367e)[_0x5a0688(0x1ad)](([_0x3d0da8])=>_0x3d0da8),_0x4d7de4=_0x2f613d[_0x5a0688(0x1ba)]&&Array[_0x5a0688(0x155)](_0x2f613d['components'])&&_0x2f613d['components'][_0x5a0688(0x146)]>0x0,_0x5a2176=_0x2f613d['exportQuery']||_0x5a0688(0x166)+_0x2f613d[_0x5a0688(0x11d)]['join'](',\x20')+_0x5a0688(0x160)+_0x2f613d['tableName'],_0x5aa506=_0x5a2176['replace'](/\\/g,'\x5c\x5c')[_0x5a0688(0x149)](/'/g,'\x5c\x27'),_0x2e9991=JSON[_0x5a0688(0x102)](_0x2f613d[_0x5a0688(0x11d)]),_0x3241df=_0x2f613d[_0x5a0688(0x17c)]?JSON['stringify'](_0x2f613d[_0x5a0688(0x17c)]):'null',_0x32e5ef=_0x2f613d[_0x5a0688(0xff)]?JSON[_0x5a0688(0x102)](_0x2f613d['fieldLabels']):'null',_0x3da094=_0x2f613d['action']&&_0x2f613d['action']['import']?{'enabled':!![],'upsertKeys':(_0x2f613d['importConfig']||{})[_0x5a0688(0x176)]||[_0x431e1b],'upsertStrategy':(_0x2f613d['importConfig']||{})[_0x5a0688(0x1da)]||_0x5a0688(0x1ab),'requiredFields':(_0x2f613d[_0x5a0688(0x17f)]||{})['requiredFields']||[],'validations':(_0x2f613d[_0x5a0688(0x17f)]||{})['validations']||{},'lookupFields':(_0x2f613d[_0x5a0688(0x17f)]||{})[_0x5a0688(0x13f)]||{},'excludeFromImport':(_0x2f613d['importConfig']||{})[_0x5a0688(0x14c)]||[],'chunkSize':(_0x2f613d['importConfig']||{})[_0x5a0688(0x1a2)]||0x64}:null,_0x5ef8da=_0x3da094?JSON[_0x5a0688(0x102)](_0x3da094):'null',_0x56e28f=_0x2f613d[_0x5a0688(0x19a)]&&_0x2f613d[_0x5a0688(0x19a)][_0x5a0688(0x173)]?'\x27'+_0x5aa506+'\x27':_0x5a0688(0xf3),_0x411ab6=_0x2f613d[_0x5a0688(0x19a)]&&_0x2f613d[_0x5a0688(0x19a)]['adjust']?_0x2f613d['adjustConfig']||{}:null,_0x1753b5=_0x411ab6?JSON['stringify'](_0x411ab6):'null';let _0x4ba01f='let\x20componentEngine\x20=\x20null;\x0alet\x20ContextBuilder\x20=\x20null;\x0a';_0x4d7de4&&(_0x4ba01f+='componentEngine\x20=\x20require(\x27@restforgejs/platform/src/utils/component-engine\x27).componentEngine;\x0a',_0x4ba01f+='ContextBuilder\x20=\x20require(\x27@restforgejs/platform/src/utils/context-builder\x27);\x0a');const _0x2b8de7=_0x2f613d['requestScope']?_0x5a0688(0x12b)+_0x154710+_0x5a0688(0x12f)+_0x28750+'\x20data\x20not\x20found\x20or\x20access\x20denied\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a':'',_0x4a1a79=_0x2f613d['requestScope']?'\x0a\x20\x20\x20\x20//\x20Request\x20scope\x20ownership\x20verification\x20(Layer\x201\x20RLS)\x0a\x20\x20\x20\x20if\x20(req._requestScope\x20&&\x20result.data\x20&&\x20result.data.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20record\x20=\x20result.data[0];\x0a\x20\x20\x20\x20\x20\x20if\x20(record[req._requestScope.column]\x20!==\x20undefined\x20&&\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20String(record[req._requestScope.column])\x20!==\x20String(req._requestScope.value))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x28750+'\x20data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a':'',_0x5190fd=_0x2f613d[_0x5a0688(0x1d4)]?'\x0a\x20\x20\x20\x20//\x20Request\x20scope\x20ownership\x20verification\x20(Layer\x201\x20RLS)\x20-\x20master\x20record\x0a\x20\x20\x20\x20if\x20(req._requestScope)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20scopeCheck\x20=\x20await\x20'+_0x154710+'.getData({\x0a\x20\x20\x20\x20\x20\x20\x20\x20where:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20key:\x20\x27'+_0x431e1b+_0x5a0688(0x17e)+_0x431e1b+_0x5a0688(0x1f8):'';let _0x433e94=_0x5a0688(0x140)+_0x154710+'\x20=\x20require(\x27../../models/'+_0x13c8ca+'/'+_0x28750+'\x27);\x0a'+_0x4ba01f+_0x5a0688(0x185)+toPascalCase(_0x28750)+'\x20Submodule\x20-\x20SQLite\x20Database\x0a*\x20Generated:\x20'+_0x120ded+'\x0a*\x0a*\x20SQLite-optimized\x20endpoints\x20untuk\x20'+_0x28750+'\x0a*\x20Actions:\x20'+_0x31814a['join'](',\x20')+_0x5a0688(0x217)+_0x2f613d['tableName']+'\x0a*\x20Database:\x20SQLite\x0a*/\x0a\x0a//\x20Primary\x20key\x20untuk\x20endpoint\x20ini\x0aconst\x20primaryKey\x20=\x20\x27'+_0x431e1b+_0x5a0688(0x1a1)+_0x2f613d['tableName']+_0x5a0688(0x1bd)+_0x2e9991+',\x0a\x20\x20exportQuery:\x20'+_0x56e28f+_0x5a0688(0x190)+_0x3241df+_0x5a0688(0x178)+_0x32e5ef+',\x0a\x20\x20importConfig:\x20'+_0x5ef8da+_0x5a0688(0x1b4)+_0x1753b5+',\x0a\x20\x20uploadConfig:\x20'+(_0x2f613d['uploadConfig']?JSON[_0x5a0688(0x102)](_0x2f613d['uploadConfig']):_0x5a0688(0xf3))+_0x5a0688(0x158)+(_0x2f613d['requestScope']?JSON[_0x5a0688(0x102)](_0x2f613d[_0x5a0688(0x1d4)]):'null')+'\x0a};\x0a'+(_0x4d7de4?_0x5a0688(0x1f9)+JSON[_0x5a0688(0x102)](_0x2f613d['components'])+'\x20};\x0acomponentEngine.loadConfigurationFromObject(_componentPayload).then(result\x20=>\x20{\x0a\x20\x20if\x20(result.success)\x20{\x0a\x20\x20\x20\x20console.log(`Component\x20configuration\x20loaded\x20for\x20'+_0x13c8ca+'/'+_0x28750+':\x20${result.componentsLoaded}\x20components`);\x0a\x20\x20}\x0a}).catch(err\x20=>\x20{\x0a\x20\x20console.error(`Failed\x20to\x20load\x20component\x20configuration\x20for\x20'+_0x13c8ca+'/'+_0x28750+_0x5a0688(0x159):'')+_0x5a0688(0x1e9)+_0x431e1b+_0x5a0688(0x1c5);_0x433e94+=_0x3a2fe0[_0x5a0688(0x1a3)](buildRequestScopeMiddleware,_0x2f613d,_0x28750);_0x2f613d['action']&&_0x2f613d['action'][_0x5a0688(0x11c)]&&(_0x433e94+='//\x20POST\x20/api/'+_0x13c8ca+'/'+_0x28750+'/datatables\x20-\x20Data\x20untuk\x20DataTables\x0arouter.post(\x27/datatables\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20const\x20options\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20searchValue:\x20req.body.search?.value\x20||\x20req.body.searchValue\x20||\x20req.body.search_value\x20||\x20\x27\x27,\x0a\x20\x20\x20\x20\x20\x20searchBy:\x20req.body.searchBy\x20||\x20req.body.search_by\x20||\x20\x27all\x27,\x0a\x20\x20\x20\x20\x20\x20perPage:\x20Math.min(parseInt(req.body.length\x20||\x20req.body.pagination?.perpage\x20||\x2010,\x2010),\x201000),\x0a\x20\x20\x20\x20\x20\x20start:\x20Math.max(parseInt(req.body.start\x20||\x200,\x2010),\x200),\x0a\x20\x20\x20\x20\x20\x20draw:\x20req.body.draw\x20||\x20\x271\x27\x0a\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20//\x20Handle\x20sort_columns\x0a\x20\x20\x20\x20if\x20(req.body.sort_columns\x20&&\x20Array.isArray(req.body.sort_columns)\x20&&\x20req.body.sort_columns.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20options.sort_columns\x20=\x20req.body.sort_columns.map(item\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20\x20\x20column:\x20item.column,\x0a\x20\x20\x20\x20\x20\x20\x20\x20direction:\x20(item.direction\x20||\x20\x27ASC\x27).toUpperCase()\x0a\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Fallback:\x20Handle\x20DataTables\x20standard\x20format\x20(order[0][column]\x20dan\x20order[0][dir])\x0a\x20\x20\x20\x20if\x20(req.body[\x27order[0][column]\x27]\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20options[\x27order[0][column]\x27]\x20=\x20req.body[\x27order[0][column]\x27];\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(req.body[\x27order[0][dir]\x27]\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20options[\x27order[0][dir]\x27]\x20=\x20req.body[\x27order[0][dir]\x27];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Handle\x20filters\x20dengan\x20sanitasi\x0a\x20\x20\x20\x20if\x20(req.body.filters\x20&&\x20typeof\x20req.body.filters\x20===\x20\x27object\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20sanitizedFilters\x20=\x20{};\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(req.body.filters))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20!==\x20null\x20&&\x20value\x20!==\x20undefined\x20&&\x20value\x20!==\x20\x27\x27\x20&&\x20value\x20!==\x20\x27all\x27\x20&&\x20value\x20!==\x20\x27-\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sanitizedFilters[key]\x20=\x20value;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(Object.keys(sanitizedFilters).length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20options.filters\x20=\x20sanitizedFilters;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Support\x20WHERE\x20conditions\x0a\x20\x20\x20\x20if\x20(req.body.where)\x20{\x0a\x20\x20\x20\x20\x20\x20options.where\x20=\x20req.body.where;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Advanced\x20filters\x20support\x0a\x20\x20\x20\x20if\x20(req.body.advanced_filters\x20&&\x20Array.isArray(req.body.advanced_filters))\x20{\x0a\x20\x20\x20\x20\x20\x20options.advancedFilters\x20=\x20req.body.advanced_filters;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Gunakan\x20model\x20untuk\x20mendapatkan\x20data\x0a\x20\x20\x20\x20const\x20result\x20=\x20await\x20'+_0x154710+'.getDatatables(options);\x0a\x0a\x20\x20\x20\x20//\x20Menambahkan\x20nomor\x20baris\x20untuk\x20DataTables\x0a\x20\x20\x20\x20if\x20(result.data\x20&&\x20Array.isArray(result.data))\x20{\x0a\x20\x20\x20\x20\x20\x20result.data\x20=\x20result.data.map((item,\x20index)\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20\x20\x20...item,\x0a\x20\x20\x20\x20\x20\x20\x20\x20rownumerator:\x20options.start\x20+\x20index\x20+\x201\x0a\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20res.json(result);\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20in\x20'+_0x28750+'\x20datatables:\x27,\x20error);\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x27INVALID_WHERE_FIELD\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20where\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Invalid\x20field:\x20${error.invalidField}`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20{\x20validFields:\x20error.validFields\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20const\x20statusCode\x20=\x20error.statusCode\x20||\x20500;\x0a\x20\x20\x20\x20return\x20res.status(statusCode).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20statusCode\x20===\x20400\x20?\x20\x27Bad\x20Request\x27\x20:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20statusCode\x20===\x20400\x20?\x20error.message\x20:\x20\x27An\x20error\x20occurred\x20while\x20fetching\x20'+_0x28750+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a');_0x2f613d[_0x5a0688(0x19a)]&&_0x2f613d['action'][_0x5a0688(0x197)]&&(_0x433e94+='//\x20GET\x20/api/'+_0x13c8ca+'/'+_0x28750+_0x5a0688(0x1f4)+_0x154710+'.validFields.includes(key)\x20&&\x20value)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20extraFilters[key]\x20=\x20value;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20const\x20startTime\x20=\x20Date.now();\x0a\x20\x20\x20\x20const\x20list\x20=\x20Object.keys(extraFilters).length\x20>\x200\x20?\x0a\x20\x20\x20\x20\x20\x20await\x20'+_0x154710+'.getLookupDataDynamic(search,\x20extraFilters)\x20:\x0a\x20\x20\x20\x20\x20\x20await\x20'+_0x154710+'.getLookupData(search);\x0a\x20\x20\x20\x20const\x20lookupTime\x20=\x20Date.now()\x20-\x20startTime;\x0a\x0a\x20\x20\x20\x20console.log(`[SQLite-LKP]\x20${sqliteRequestId}\x20found\x20${list.length}\x20results\x20in\x20${lookupTime}ms`);\x0a\x0a\x20\x20\x20\x20return\x20res.json({\x0a\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20count:\x20list.length,\x0a\x20\x20\x20\x20\x20\x20data:\x20list,\x0a\x20\x20\x20\x20\x20\x20search:\x20search,\x0a\x20\x20\x20\x20\x20\x20_sqlite:\x20{\x20requestId:\x20sqliteRequestId,\x20queryTime:\x20lookupTime,\x20timestamp:\x20new\x20Date().toISOString()\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(`[SQLite-LKP]\x20Error\x20${sqliteRequestId}:`,\x20error);\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x27INVALID_WHERE_FIELD\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20where\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Invalid\x20field:\x20${error.invalidField}`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20{\x20validFields:\x20error.validFields\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20looking\x20up\x20'+_0x28750+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a');_0x2f613d[_0x5a0688(0x19a)]&&_0x2f613d[_0x5a0688(0x19a)]['lookup']&&(_0x433e94+='//\x20POST\x20/api/'+_0x13c8ca+'/'+_0x28750+_0x5a0688(0x1f2)+_0x154710+_0x5a0688(0xf6)+_0x154710+'.getStaticLookupData(selectedTag);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20const\x20lookupTime\x20=\x20Date.now()\x20-\x20startTime;\x0a\x20\x20\x20\x20console.log(`[SQLite-LKP]\x20${sqliteRequestId}\x20found\x20${list.length}\x20results\x20in\x20${lookupTime}ms`);\x0a\x0a\x20\x20\x20\x20return\x20res.json({\x0a\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20count:\x20list.length,\x0a\x20\x20\x20\x20\x20\x20data:\x20list,\x0a\x20\x20\x20\x20\x20\x20_sqlite:\x20{\x20requestId:\x20sqliteRequestId,\x20queryTime:\x20lookupTime,\x20timestamp:\x20new\x20Date().toISOString()\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(`[SQLite-LKP]\x20Error\x20${sqliteRequestId}:`,\x20error);\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x27INVALID_WHERE_FIELD\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20where\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Invalid\x20field:\x20${error.invalidField}`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20{\x20validFields:\x20error.validFields\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20looking\x20up\x20'+_0x28750+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a');_0x2f613d[_0x5a0688(0x19a)]&&_0x2f613d[_0x5a0688(0x19a)][_0x5a0688(0x1c7)]&&(_0x433e94+='//\x20POST\x20/api/'+_0x13c8ca+'/'+_0x28750+_0x5a0688(0x108)+_0x154710+'.validateData\x20===\x20\x27function\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20validation\x20=\x20await\x20'+_0x154710+_0x5a0688(0x212)+(_0x4d7de4?'\x0a\x20\x20\x20\x20//\x20Component\x20engine:\x20build\x20eventContext\x20untuk\x20model-level\x20event\x20lifecycle\x0a\x20\x20\x20\x20if\x20(componentEngine\x20&&\x20ContextBuilder)\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20eventContext\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20componentEngine:\x20componentEngine,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ContextBuilder:\x20ContextBuilder,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x2f613d[_0x5a0688(0x111)]+_0x5a0688(0x1b1)+_0x154710+_0x5a0688(0x169)+_0x154710+_0x5a0688(0x1f1):'\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20result\x20=\x20await\x20'+_0x154710+_0x5a0688(0x182))+_0x5a0688(0xe6)+_0x28750+'\x20data\x20added\x20successfully:\x20${result.'+_0x431e1b+'\x20||\x20\x27new\x20record\x27}`);\x0a\x0a\x20\x20\x20\x20return\x20res.status(201).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x28750+'\x20data\x20successfully\x20added\x27,\x0a\x20\x20\x20\x20\x20\x20data:\x20result,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20saat\x20menambahkan\x20data\x20'+_0x28750+_0x5a0688(0x18f)+_0x28750+_0x5a0688(0x113));_0x2f613d['action']&&_0x2f613d[_0x5a0688(0x19a)][_0x5a0688(0x110)]&&(_0x433e94+='//\x20POST\x20/api/'+_0x13c8ca+'/'+_0x28750+'/update\x20-\x20SQLite\x20Update\x0arouter.post(\x27/update\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20Validasi\x20payload\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20primary\x20key\x0a\x20\x20\x20\x20const\x20primaryKey\x20=\x20\x27'+_0x431e1b+'\x27;\x0a\x20\x20\x20\x20if\x20(!req.body[primaryKey])\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Primary\x20key\x20(${primaryKey})\x20is\x20required\x20for\x20update`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a'+_0x2b8de7+_0x5a0688(0x1d2)+_0x154710+'.validateData\x20===\x20\x27function\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20validation\x20=\x20await\x20'+_0x154710+'.validateData(req.body,\x20\x27update\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(!validation.isValid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Validation\x20failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20validation.errors,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20req.body\x20=\x20{\x20...req.body,\x20...validation.sanitizedData\x20};\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20responseData\x20=\x20null;\x0a\x0a'+(_0x4d7de4?_0x5a0688(0x1cc)+_0x2f613d['tableName']+_0x5a0688(0x116)+_0x154710+'.updateData(req.body,\x20eventContext);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27[INTEGRATED\x20TRANSACTION]\x20UPDATE\x20completed\x20successfully\x20with\x20events\x27);\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20console.error(\x27[INTEGRATED\x20TRANSACTION]\x20UPDATE\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x0a':'\x0a\x20\x20\x20\x20//\x20Fallback:\x20mode\x20tanpa\x20events\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20responseData\x20=\x20await\x20'+_0x154710+_0x5a0688(0x1de))+_0x5a0688(0x1f5)+_0x28750+_0x5a0688(0x20a)+_0x431e1b+'=${req.body[\x27'+_0x431e1b+'\x27]}`);\x0a\x0a\x20\x20\x20\x20return\x20res.status(200).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x28750+_0x5a0688(0x16b)+_0x28750+':\x27,\x20error);\x0a\x0a\x20\x20\x20\x20if\x20(error.message\x20===\x20\x27Data\x20tidak\x20ditemukan\x27\x20||\x20error.message.includes(\x27not\x20found\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x28750+'\x20data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x27SQLITE_CONSTRAINT_UNIQUE\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20details\x20=\x20buildDuplicateDetails(error);\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(409).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Duplicate\x20entry\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27A\x20record\x20with\x20this\x20value\x20already\x20exists\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(details\x20?\x20{\x20details\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20updating\x20'+_0x28750+_0x5a0688(0x113));_0x2f613d['action']&&_0x2f613d[_0x5a0688(0x19a)]['adjust']&&(_0x433e94+=_0x5a0688(0x13e)+_0x13c8ca+'/'+_0x28750+'/adjust\x20-\x20SQLite\x20Adjust\x20(atomic\x20increment/decrement)\x0arouter.post(\x27/adjust\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20Validasi\x20payload\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20primary\x20key\x0a\x20\x20\x20\x20const\x20primaryKey\x20=\x20\x27'+_0x431e1b+_0x5a0688(0x148)+_0x2b8de7+'\x0a\x20\x20\x20\x20const\x20adjustConfig\x20=\x20componentConfig.adjustConfig\x20||\x20{};\x0a\x20\x20\x20\x20let\x20responseData\x20=\x20null;\x0a\x0a'+(_0x4d7de4?'\x0a\x20\x20\x20\x20//\x20Integrated\x20transaction\x20dengan\x20event\x20lifecycle\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20eventContext\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20componentEngine:\x20componentEngine,\x0a\x20\x20\x20\x20\x20\x20\x20\x20ContextBuilder:\x20ContextBuilder,\x0a\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x2f613d[_0x5a0688(0x111)]+_0x5a0688(0x116)+_0x154710+'.adjustData(req.body,\x20adjustConfig,\x20eventContext);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27[INTEGRATED\x20TRANSACTION]\x20ADJUST\x20completed\x20successfully\x20with\x20events\x27);\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20console.error(\x27[INTEGRATED\x20TRANSACTION]\x20ADJUST\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x0a':_0x5a0688(0x10e)+_0x154710+'.adjustData(req.body,\x20adjustConfig,\x20{\x20additionalContext:\x20{\x20requestId:\x20req.id\x20||\x20null\x20}\x20});\x0a\x20\x20\x20\x20\x20\x20console.log(\x27[FALLBACK]\x20ADJUST\x20completed\x20without\x20events\x27);\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20console.error(\x27[FALLBACK]\x20ADJUST\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x0a')+_0x5a0688(0x1b8)+_0x28750+_0x5a0688(0x194)+_0x431e1b+_0x5a0688(0x11e)+_0x431e1b+_0x5a0688(0x1eb)+_0x28750+'\x20data\x20successfully\x20adjusted\x27,\x0a\x20\x20\x20\x20\x20\x20data:\x20responseData,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20saat\x20mengadjust\x20data\x20'+_0x28750+_0x5a0688(0x1a4)+_0x28750+'\x20data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x27SQLITE_CONSTRAINT_UNIQUE\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20details\x20=\x20buildDuplicateDetails(error);\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(409).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Duplicate\x20entry\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27A\x20record\x20with\x20this\x20value\x20already\x20exists\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(details\x20?\x20{\x20details\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20adjusting\x20'+_0x28750+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a');if(_0x2f613d[_0x5a0688(0x19a)]&&_0x2f613d['action']['aggregate']){const _0x5bdc02=_0x2f613d['aggregateConfig']?JSON['stringify'](_0x2f613d[_0x5a0688(0x156)]):'{}';_0x433e94+=_0x5a0688(0x13e)+_0x13c8ca+'/'+_0x28750+'/aggregate\x20-\x20SQLite\x20Aggregate\x20(count,\x20sum,\x20avg,\x20min,\x20max)\x0arouter.post(\x27/aggregate\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20const\x20aggregateConfig\x20=\x20'+_0x5bdc02+_0x5a0688(0x131)+_0x154710+_0x5a0688(0x1fd)+_0x28750+_0x5a0688(0x14a)+_0x28750+_0x5a0688(0x113);}_0x2f613d[_0x5a0688(0x19a)]&&_0x2f613d['action']['delete']&&(_0x433e94+=_0x5a0688(0x13e)+_0x13c8ca+'/'+_0x28750+'/delete\x20-\x20SQLite\x20Delete\x0arouter.post(\x27/delete\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20Validasi\x20request\x20body\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(!req.body.where)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20request\x20format:\x20where\x20parameter\x20is\x20required\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20[{\x20\x22key\x22:\x20\x22id\x22,\x20\x22value\x22:\x20\x22your-id-value\x22\x20}]\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20format\x20where\x0a\x20\x20\x20\x20if\x20(!Array.isArray(req.body.where)\x20&&\x20!req.body.where.conditions)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20where\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20where\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20\x22key\x22:\x20\x22id\x22,\x20\x22value\x22:\x20\x22your-id-value\x22\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20responseData\x20=\x20null;\x0a\x0a\x20\x20\x20\x20//\x20Cek\x20apakah\x20data\x20exist\x20sebelum\x20delete\x20dan\x20ambil\x20old\x20data\x20untuk\x20event\x20lifecycle\x0a\x20\x20\x20\x20//\x20Menggunakan\x20SELECT\x20*\x20dari\x20tabel\x20utama\x20(tanpa\x20explicit\x20select)\x20karena\x20fieldName\x0a\x20\x20\x20\x20//\x20bisa\x20mengandung\x20kolom\x20dari\x20JOIN\x20(mis.\x20city_name)\x20yang\x20tidak\x20ada\x20di\x20tabel\x20utama\x0a\x20\x20\x20\x20if\x20(req.body.where\x20&&\x20Array.isArray(req.body.where)\x20&&\x20req.body.where.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20firstCondition\x20=\x20req.body.where[0];\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20existingData\x20=\x20await\x20'+_0x154710+_0x5a0688(0x200)+_0x28750+_0x5a0688(0x1f0)+(_0x4d7de4?'\x0a\x20\x20\x20\x20//\x20Integrated\x20transaction\x20dengan\x20event\x20lifecycle\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20eventContext\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20componentEngine:\x20componentEngine,\x0a\x20\x20\x20\x20\x20\x20\x20\x20ContextBuilder:\x20ContextBuilder,\x0a\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x2f613d[_0x5a0688(0x111)]+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20additionalContext:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20user_id:\x20req.headers[\x27user-id\x27]\x20||\x20req.headers[\x27x-user-id\x27]\x20||\x20\x27system\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20options:\x20req.bodyOptions\x20||\x20{}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20responseData\x20=\x20await\x20'+_0x154710+_0x5a0688(0x1a5):_0x5a0688(0x10e)+_0x154710+'.deleteData(req.body,\x20{\x20additionalContext:\x20{\x20requestId:\x20req.id\x20||\x20null\x20}\x20});\x0a\x20\x20\x20\x20\x20\x20console.log(\x27[FALLBACK]\x20DELETE\x20completed\x20without\x20events\x27);\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20console.error(\x27[FALLBACK]\x20DELETE\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x0a')+'\x0a\x20\x20\x20\x20//\x20Log\x20successful\x20operation\x0a\x20\x20\x20\x20console.log(`'+_0x28750+_0x5a0688(0x14b)+_0x28750+':\x27,\x20error);\x0a\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x27SQLITE_CONSTRAINT_FOREIGNKEY\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(409).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Foreign\x20key\x20constraint\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Cannot\x20delete:\x20record\x20is\x20still\x20referenced\x20by\x20other\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20deleting\x20'+_0x28750+_0x5a0688(0x113));_0x2f613d['action']&&_0x2f613d[_0x5a0688(0x19a)]['first']&&(_0x433e94+='//\x20POST\x20/api/'+_0x13c8ca+'/'+_0x28750+_0x5a0688(0x177)+_0x431e1b+'\x22,\x20\x22value\x22:\x20\x22your-id-value\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22select\x22:\x20[\x22field1\x22,\x20\x22field2\x22]\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20where.key\x20dan\x20where.value\x0a\x20\x20\x20\x20if\x20(!req.body.where.key\x20||\x20req.body.where.value\x20===\x20undefined\x20||\x20req.body.where.value\x20===\x20null\x20||\x20req.body.where.value\x20===\x20\x27\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20where\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Where\x20key\x20and\x20value\x20are\x20required\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20{\x20\x22key\x22:\x20\x22'+_0x431e1b+'\x22,\x20\x22value\x22:\x20\x22your-id-value\x22\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Tolak\x20format\x20advanced\x20(conditions/logic)\x0a\x20\x20\x20\x20if\x20(req.body.where.conditions\x20||\x20req.body.where.logic)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20where\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Advanced\x20where\x20format\x20is\x20not\x20supported\x20in\x20/first\x20endpoint.\x20Use\x20/read\x20endpoint\x20for\x20complex\x20queries\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20where.key\x20ada\x20di\x20readableFields\x0a\x20\x20\x20\x20const\x20validFields\x20=\x20'+JSON['stringify'](_0x2f613d['_fieldProjections']&&_0x2f613d[_0x5a0688(0x1b5)]['readableFields']||_0x2f613d['fieldName']||[])+_0x5a0688(0x15d)+_0x154710+_0x5a0688(0x1e5)+_0x4a1a79+_0x5a0688(0x105)+_0x28750+':\x27,\x20error);\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20fetching\x20'+_0x28750+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a');_0x2f613d[_0x5a0688(0x19a)]&&_0x2f613d['action'][_0x5a0688(0x1fa)]&&(_0x433e94+='//\x20POST\x20/api/'+_0x13c8ca+'/'+_0x28750+_0x5a0688(0x196)+JSON[_0x5a0688(0x102)](_0x2f613d[_0x5a0688(0x1b5)]&&_0x2f613d[_0x5a0688(0x1b5)][_0x5a0688(0xf9)]||_0x2f613d[_0x5a0688(0x11d)]||[])+_0x5a0688(0xfb)+_0x154710+'.getList(options);\x0a\x0a\x20\x20\x20\x20//\x20Format\x20response\x20berdasarkan\x20mode\x0a\x20\x20\x20\x20if\x20(paginate)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20data:\x20result.data,\x0a\x20\x20\x20\x20\x20\x20\x20\x20count:\x20result.data\x20?\x20result.data.length\x20:\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20pagination:\x20result.pagination,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Data\x20retrieved\x20successfully\x27\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20data:\x20result.data,\x0a\x20\x20\x20\x20\x20\x20\x20\x20count:\x20result.data\x20?\x20result.data.length\x20:\x200\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20in\x20'+_0x28750+_0x5a0688(0xf2)+_0x28750+'\x20list\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a');if(_0x2f613d[_0x5a0688(0x216)]&&_0x2f613d[_0x5a0688(0x216)][_0x5a0688(0x104)]){const _0x542b08=_0x2f613d['masterDetail']['detailTable'][_0x5a0688(0x18c)]('.')['pop'](),_0x657be8=_0x28750[_0x5a0688(0x149)](/-/g,'_'),_0x39facb=_0x2f613d['masterDetail']['headerCalculations']||null,_0x31ad23=_0x2f613d['masterDetail']?.['detailConfig']?.[_0x5a0688(0x1b0)]?.[_0x5a0688(0x14d)]?.['formula']||'',_0x50382d=_0x31ad23[_0x5a0688(0x18c)]('*')['map'](_0x5c905d=>_0x5c905d[_0x5a0688(0x124)]()),_0x1b8cda=_0x39facb?.[_0x5a0688(0x181)]?.[_0x5a0688(0x19b)]?.[_0x5a0688(0x149)]('items.','')||'',_0x297e5f=_0x50382d[0x0]||_0x1b8cda,_0x1a7a40=_0x50382d[0x1]||_0x5a0688(0x145);if(_0x2f613d[_0x5a0688(0x19a)]&&_0x2f613d['action']['createComposite']){const _0x4ec368=_0x39facb?_0x5a0688(0x183)+JSON[_0x5a0688(0x102)](_0x39facb)+_0x5a0688(0x134)+_0x542b08+'.length;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(headerCalc.total_qty\x20&&\x20headerCalc.total_qty.source)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20qtyField\x20=\x20headerCalc.total_qty.source.replace(\x27items.\x27,\x20\x27\x27);\x0a\x20\x20\x20\x20\x20\x20data.total_qty\x20=\x20data.'+_0x542b08+_0x5a0688(0x1a9)+(_0x297e5f?_0x5a0688(0x1b7)+_0x542b08+'.reduce(function(sum,\x20item)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20qty\x20=\x20Number(item.'+_0x297e5f+_0x5a0688(0x15f)+_0x1a7a40+')\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20sum\x20+\x20(qty\x20*\x20price);\x0a\x20\x20\x20\x20\x20\x20},\x200);\x0a\x20\x20\x20\x20}':_0x5a0688(0x15c))+_0x5a0688(0x13c):'';_0x433e94+='//\x20POST\x20/api/'+_0x13c8ca+'/'+_0x28750+'/create-composite\x20-\x20SQLite\x20Composite\x20create\x20(master-detail)\x0arouter.post(\x27/create-composite\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20console.log(\x27Request\x20body\x20'+_0x28750+'/create-composite:\x27,\x20JSON.stringify(req.body,\x20null,\x202));\x0a\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20!req.body.'+_0x657be8+_0x5a0688(0x107)+_0x657be8+'\x22\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20var\x20data\x20=\x20req.body.'+_0x657be8+';\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20dan\x20sanitasi\x20header\x20data\x20dengan\x20constraint\x20(termasuk\x20hash)\x0a\x20\x20\x20\x20if\x20(typeof\x20'+_0x154710+_0x5a0688(0x184)+_0x542b08+_0x5a0688(0x11f)+_0x154710+'.validateData(headerDataForValidation,\x20\x27insert\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(!validation.isValid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Validation\x20failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20validation.errors,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20Object.assign(data,\x20validation.sanitizedData);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(!data.'+_0x542b08+'\x20||\x20!Array.isArray(data.'+_0x542b08+_0x5a0688(0x1e1)+_0x542b08+_0x5a0688(0x125)+_0x542b08+_0x5a0688(0x1ca)+_0x4ec368+'\x0a\x0a\x20\x20\x20\x20//\x20Build\x20eventContext\x20untuk\x20composite\x20hooks\x0a\x20\x20\x20\x20var\x20eventContext\x20=\x20null;\x0a\x20\x20\x20\x20if\x20(componentEngine\x20&&\x20ContextBuilder)\x20{\x0a\x20\x20\x20\x20\x20\x20eventContext\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20componentEngine:\x20componentEngine,\x0a\x20\x20\x20\x20\x20\x20\x20\x20ContextBuilder:\x20ContextBuilder,\x0a\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x2f613d[_0x5a0688(0x111)]+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20additionalContext:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailTable:\x20\x27'+_0x2f613d['masterDetail']['detailTable']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20foreignKey:\x20\x27'+_0x2f613d[_0x5a0688(0x216)][_0x5a0688(0xef)]+_0x5a0688(0x15b)+_0x154710+'.createComposite(data,\x20eventContext);\x0a\x0a\x20\x20\x20\x20console.log(\x27'+_0x28750+_0x5a0688(0x1aa)+_0x28750+_0x5a0688(0x12c)+_0x28750+_0x5a0688(0xfd)+_0x28750+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}_0x2f613d[_0x5a0688(0x19a)]&&_0x2f613d[_0x5a0688(0x19a)][_0x5a0688(0xeb)]&&(_0x433e94+='//\x20POST\x20/api/'+_0x13c8ca+'/'+_0x28750+'/update-composite\x20-\x20SQLite\x20Composite\x20update\x20(master-detail)\x0arouter.post(\x27/update-composite\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20console.log(\x27Request\x20body\x20'+_0x28750+'/update-composite:\x27,\x20JSON.stringify(req.body,\x20null,\x202));\x0a\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20!req.body.'+_0x657be8+')\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20must\x20have\x20property\x20\x22'+_0x657be8+_0x5a0688(0x1b6)+_0x657be8+_0x5a0688(0x1ff)+_0x431e1b+_0x5a0688(0x199)+_0x431e1b+_0x5a0688(0xe8)+_0x5190fd+'\x0a\x20\x20\x20\x20//\x20Validasi\x20dan\x20sanitasi\x20header\x20data\x20dengan\x20constraint\x20(termasuk\x20hash)\x0a\x20\x20\x20\x20if\x20(typeof\x20'+_0x154710+_0x5a0688(0x184)+_0x542b08+_0x5a0688(0x11f)+_0x154710+'.validateData(headerDataForValidation,\x20\x27update\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(!validation.isValid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Validation\x20failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20validation.errors,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20Object.assign(data,\x20validation.sanitizedData);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(data.'+_0x542b08+_0x5a0688(0x191)+_0x542b08+_0x5a0688(0x204)+_0x542b08+_0x5a0688(0x1f7)+_0x542b08+_0x5a0688(0x19c)+_0x2f613d['tableName']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20additionalContext:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailTable:\x20\x27'+_0x2f613d['masterDetail']['detailTable']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20foreignKey:\x20\x27'+_0x2f613d['masterDetail'][_0x5a0688(0xef)]+_0x5a0688(0x15b)+_0x154710+'.updateComposite(data,\x20eventContext);\x0a\x0a\x20\x20\x20\x20console.log(\x27'+_0x28750+_0x5a0688(0x1e6)+_0x431e1b+'=\x27\x20+\x20data.'+_0x431e1b+_0x5a0688(0x100)+_0x28750+'\x20data\x20successfully\x20updated\x20(with\x20detail\x20items)\x27,\x0a\x20\x20\x20\x20\x20\x20data:\x20result,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20saat\x20composite\x20update\x20'+_0x28750+_0x5a0688(0x193)+_0x28750+'\x20data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x27SQLITE_CONSTRAINT_UNIQUE\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20details\x20=\x20buildDuplicateDetails(error);\x20return\x20res.status(409).json({\x20success:\x20false,\x20error:\x20\x27Duplicate\x20entry\x27,\x20message:\x20\x27A\x20record\x20with\x20this\x20value\x20already\x20exists\x27,\x20...(details\x20?\x20{\x20details\x20}\x20:\x20{}),\x20timestamp:\x20new\x20Date().toISOString()\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x27SQLITE_CONSTRAINT_FOREIGNKEY\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x20success:\x20false,\x20error:\x20\x27Foreign\x20key\x20constraint\x27,\x20message:\x20\x27Referenced\x20data\x20not\x20found\x27,\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x20timestamp:\x20new\x20Date().toISOString()\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20updating\x20'+_0x28750+_0x5a0688(0x113)),_0x2f613d[_0x5a0688(0x19a)]&&_0x2f613d[_0x5a0688(0x19a)]['readComposite']&&(_0x433e94+=_0x5a0688(0x13e)+_0x13c8ca+'/'+_0x28750+'/read-composite\x20-\x20SQLite\x20Read\x20header\x20with\x20detail\x20items\x0arouter.post(\x27/read-composite\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20console.log(\x27Request\x20body\x20'+_0x28750+'/read-composite:\x27,\x20JSON.stringify(req.body,\x20null,\x202));\x0a\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x20success:\x20false,\x20error:\x20\x27Invalid\x20payload\x27,\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x20timestamp:\x20new\x20Date().toISOString()\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(!req.body.where)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Property\x20where\x20is\x20required\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x20\x22where\x22:\x20[{\x20\x22key\x22:\x20\x22field_name\x22,\x20\x22value\x22:\x20\x22field_value\x22\x20}]\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(!Array.isArray(req.body.where)\x20&&\x20!req.body.where.conditions)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20where\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20where\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x20\x22where\x22:\x20[{\x20\x22key\x22:\x20\x22'+_0x431e1b+_0x5a0688(0x157)+_0x154710+_0x5a0688(0xfe)+_0x28750+_0x5a0688(0x1c1)+_0x28750+':\x27,\x20error);\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20reading\x20'+_0x28750+'\x20composite\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a');}if(_0x3a2fe0[_0x5a0688(0x150)](_0x2f613d['action']?.[_0x5a0688(0xee)],![])){const _0x53cf34={'datatables':!!_0x2f613d['action']?.[_0x5a0688(0x11c)],'read':!!_0x2f613d['action']?.['read'],'first':!!_0x2f613d['action']?.[_0x5a0688(0x1d5)],'create':!!_0x2f613d[_0x5a0688(0x19a)]?.[_0x5a0688(0x1c7)],'update':!!_0x2f613d[_0x5a0688(0x19a)]?.['update'],'delete':!!_0x2f613d[_0x5a0688(0x19a)]?.['delete'],'lookup':!!_0x2f613d[_0x5a0688(0x19a)]?.['lookup'],'export':!!_0x2f613d[_0x5a0688(0x19a)]?.[_0x5a0688(0x173)],'import':!!_0x2f613d['action']?.['import'],'info':_0x3a2fe0[_0x5a0688(0x150)](_0x2f613d['action']?.[_0x5a0688(0xee)],![])};_0x433e94+='//\x20SQLite\x20endpoint\x20information\x20—\x20self-documenting\x20API\x0arouter.get(\x27/info\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20const\x20actions\x20=\x20'+JSON[_0x5a0688(0x102)](_0x53cf34)+_0x5a0688(0xfc)+_0x154710+_0x5a0688(0x15a)+_0x28750+'\x27,\x0a\x20\x20\x20\x20\x20\x20module:\x20\x27'+_0x13c8ca+'\x27,\x0a\x20\x20\x20\x20\x20\x20table:\x20modelInfo.table,\x0a\x20\x20\x20\x20\x20\x20fields:\x20modelInfo.fields,\x0a\x20\x20\x20\x20\x20\x20querySources:\x20modelInfo.querySources,\x0a\x20\x20\x20\x20\x20\x20actions:\x20actions,\x0a\x20\x20\x20\x20\x20\x20databaseType:\x20\x27sqlite\x27,\x0a\x20\x20\x20\x20\x20\x20generated:\x20\x27'+_0x120ded+_0x5a0688(0x172);}else _0x433e94+=_0x5a0688(0x1a0);return _0x433e94+='\x0a//\x20SQLite\x20health\x20check\x0arouter.get(\x27/health\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20const\x20connectionInfo\x20=\x20await\x20'+_0x154710+'.getConnectionInfo();\x0a\x0a\x20\x20\x20\x20res.json({\x0a\x20\x20\x20\x20\x20\x20status:\x20connectionInfo\x20?\x20\x27healthy\x27\x20:\x20\x27unknown\x27,\x0a\x20\x20\x20\x20\x20\x20endpoint:\x20\x27'+_0x28750+'\x27,\x0a\x20\x20\x20\x20\x20\x20database:\x20\x27sqlite\x27,\x0a\x20\x20\x20\x20\x20\x20connection:\x20connectionInfo\x20?\x20\x27active\x27\x20:\x20\x27unknown\x27,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20res.status(503).json({\x0a\x20\x20\x20\x20\x20\x20status:\x20\x27unhealthy\x27,\x0a\x20\x20\x20\x20\x20\x20endpoint:\x20\x27'+_0x28750+'\x27,\x0a\x20\x20\x20\x20\x20\x20database:\x20\x27sqlite\x27,\x0a\x20\x20\x20\x20\x20\x20error:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a',_0x433e94+=_0x5a0688(0x11a),_0x433e94;}module['exports']={'createSqliteMainModuleTemplate':createSqliteMainModuleTemplate,'createSqliteModelTemplate':createSqliteModelTemplate,'createSqliteSubmoduleTemplate':createSqliteSubmoduleTemplate};
1
+ (function(_0x4156aa,_0x53de03){const _0x378e57=a0_0x5e61,_0x492065=_0x4156aa();while(!![]){try{const _0xd3b0d8=-parseInt(_0x378e57(0x18c))/0x1+-parseInt(_0x378e57(0xf6))/0x2*(-parseInt(_0x378e57(0x184))/0x3)+parseInt(_0x378e57(0x1d2))/0x4*(-parseInt(_0x378e57(0x1b2))/0x5)+parseInt(_0x378e57(0x1ba))/0x6+parseInt(_0x378e57(0xec))/0x7+-parseInt(_0x378e57(0x17a))/0x8*(-parseInt(_0x378e57(0xf0))/0x9)+-parseInt(_0x378e57(0x1cc))/0xa;if(_0xd3b0d8===_0x53de03)break;else _0x492065['push'](_0x492065['shift']());}catch(_0x16b9b0){_0x492065['push'](_0x492065['shift']());}}}(a0_0x4d4b,0xdf25b));function a0_0x5e61(_0x236894,_0x1c12fd){_0x236894=_0x236894-0xe2;const _0x4d4bb4=a0_0x4d4b();let _0x5e6144=_0x4d4bb4[_0x236894];if(a0_0x5e61['tSRasS']===undefined){var _0x33d28e=function(_0x206f94){const _0x340e4c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x14e8af='',_0xcf685f='';for(let _0x445f43=0x0,_0x196fff,_0x248c6d,_0x38cd64=0x0;_0x248c6d=_0x206f94['charAt'](_0x38cd64++);~_0x248c6d&&(_0x196fff=_0x445f43%0x4?_0x196fff*0x40+_0x248c6d:_0x248c6d,_0x445f43++%0x4)?_0x14e8af+=String['fromCharCode'](0xff&_0x196fff>>(-0x2*_0x445f43&0x6)):0x0){_0x248c6d=_0x340e4c['indexOf'](_0x248c6d);}for(let _0x495a98=0x0,_0x1c4c62=_0x14e8af['length'];_0x495a98<_0x1c4c62;_0x495a98++){_0xcf685f+='%'+('00'+_0x14e8af['charCodeAt'](_0x495a98)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xcf685f);};a0_0x5e61['anRxcL']=_0x33d28e,a0_0x5e61['DjYrgi']={},a0_0x5e61['tSRasS']=!![];}const _0x1557b0=_0x4d4bb4[0x0],_0x6865f5=_0x236894+_0x1557b0,_0x6b1c98=a0_0x5e61['DjYrgi'][_0x6865f5];return!_0x6b1c98?(_0x5e6144=a0_0x5e61['anRxcL'](_0x5e6144),a0_0x5e61['DjYrgi'][_0x6865f5]=_0x5e6144):_0x5e6144=_0x6b1c98,_0x5e6144;}function toCamelCase(_0x809c90){const _0x3633a6=a0_0x5e61,_0x3df963={'JPEYi':function(_0x5c716b,_0x1d6eb7){return _0x5c716b===_0x1d6eb7;},'ogFkn':function(_0x41b010,_0x51c408){return _0x41b010!==_0x51c408;},'kuPoN':_0x3633a6(0x1c2)};if(!_0x809c90||_0x3df963['ogFkn'](typeof _0x809c90,_0x3df963[_0x3633a6(0x178)]))return'';return _0x809c90[_0x3633a6(0xfe)](/(?:^\w|[A-Z]|\b\w)/g,(_0x237c35,_0x5a39a2)=>{const _0x5bac8b=_0x3633a6;return _0x3df963[_0x5bac8b(0x193)](_0x5a39a2,0x0)?_0x237c35['toLowerCase']():_0x237c35[_0x5bac8b(0x12f)]();})[_0x3633a6(0xfe)](/\s+/g,'')[_0x3633a6(0xfe)](/[-_]/g,'');}function toPascalCase(_0xe5dbc6){const _0x1f28e6=a0_0x5e61,_0x3b4f1f={'dMgFu':function(_0x526095,_0x246a41){return _0x526095!==_0x246a41;},'hoHCi':function(_0x67a601,_0x5999a8){return _0x67a601(_0x5999a8);},'RuuHo':function(_0x4a05d8,_0x568445){return _0x4a05d8+_0x568445;}};if(!_0xe5dbc6||_0x3b4f1f['dMgFu'](typeof _0xe5dbc6,_0x1f28e6(0x1c2)))return'';const _0x38e61c=_0x3b4f1f[_0x1f28e6(0x188)](toCamelCase,_0xe5dbc6);return _0x3b4f1f['RuuHo'](_0x38e61c[_0x1f28e6(0x14b)](0x0)[_0x1f28e6(0x12f)](),_0x38e61c['slice'](0x1));}function assertNoFileReferenceLeftover(_0x27a4cd){const _0x4665b9=a0_0x5e61,_0x9a8137={'nGWxz':_0x4665b9(0xe3),'adaOx':function(_0x410e99,_0x557d03){return _0x410e99===_0x557d03;}},_0x50c684=[['datatablesQuery',_0x27a4cd['datatablesQuery']],[_0x9a8137[_0x4665b9(0x16a)],_0x27a4cd[_0x4665b9(0xe3)]],['masterDetail.detailConfig.detailQuery',_0x27a4cd[_0x4665b9(0x105)]&&_0x27a4cd['masterDetail']['detailConfig']&&_0x27a4cd['masterDetail'][_0x4665b9(0x19f)]['detailQuery']]];for(const [_0x3dfcb5,_0x446f0e]of _0x50c684){if(_0x9a8137[_0x4665b9(0x1c1)](typeof _0x446f0e,'string')&&_0x446f0e[_0x4665b9(0xe9)]('file:'))throw new Error(_0x4665b9(0x123)+_0x3dfcb5+'\x20still\x20contains\x20\x22file:\x22\x20reference\x20('+_0x446f0e+_0x4665b9(0x1f8)+_0x4665b9(0x108));}}function detectTextColumn(_0x11cfd6){const _0x5a3545=a0_0x5e61,_0x38233f={'kxAUD':_0x5a3545(0x1ca),'qVdGk':'judul','IlqIZ':_0x5a3545(0x187),'iUvPE':_0x5a3545(0x169),'ilVpd':_0x5a3545(0x191)},_0x417f04=[_0x38233f['kxAUD'],_0x5a3545(0x191),_0x5a3545(0xf4),_0x38233f[_0x5a3545(0x135)],_0x5a3545(0x19c),_0x38233f[_0x5a3545(0x115)],_0x38233f[_0x5a3545(0x12a)],'kode'];for(const _0x290106 of _0x417f04){const _0x318d1f=_0x11cfd6['find'](_0x3f6a5f=>_0x3f6a5f[_0x5a3545(0x11e)]()[_0x5a3545(0x18a)](_0x290106));if(_0x318d1f)return _0x318d1f;}return _0x11cfd6[_0x5a3545(0x14c)](_0x59b947=>_0x59b947!=='id')||_0x11cfd6[0x0]||_0x38233f['ilVpd'];}function createSqliteMainModuleTemplate(_0x567b49){const _0x3d2b2f=a0_0x5e61,_0x47fb16=toPascalCase(_0x567b49);return'const\x20express\x20=\x20require(\x27express\x27);\x0aconst\x20bodyParser\x20=\x20require(\x27body-parser\x27);\x0aconst\x20path\x20=\x20require(\x27path\x27);\x0aconst\x20fs\x20=\x20require(\x27fs\x27);\x0aconst\x20{\x20v7:\x20uuidv7\x20}\x20=\x20require(\x27uuid\x27);\x0aconst\x20{\x20logger,\x20logServerReady,\x20logEndpointRegistered,\x20createRequestLogger,\x20logRequest\x20}\x20=\x20require(\x27@restforgejs/platform/src/utils/logger\x27);\x0aconst\x20ExportHandler\x20=\x20require(\x27@restforgejs/platform/src/components/handlers/export_handler\x27);\x0aconst\x20ImportHandler\x20=\x20require(\x27@restforgejs/platform/src/components/handlers/import_handler\x27);\x0aconst\x20UploadHandler\x20=\x20require(\x27@restforgejs/platform/src/components/handlers/upload_handler\x27);\x0aconst\x20{\x20extractExportConfigFromEndpoint,\x20extractImportConfigFromEndpoint,\x20extractUploadConfigFromEndpoint\x20}\x20=\x20require(\x27@restforgejs/platform/src/utils/config-extractor\x27);\x0aconst\x20rateLimiter\x20=\x20require(\x27@restforgejs/platform/src/middleware/rate-limiter\x27);\x0aconst\x20idempotencyMiddleware\x20=\x20require(\x27@restforgejs/platform/src/middleware/idempotency\x27);\x0aconst\x20bodyOptionsMiddleware\x20=\x20require(\x27@restforgejs/platform/src/middleware/body-options\x27);\x0aconst\x20corsMiddleware\x20=\x20require(\x27@restforgejs/platform/src/middleware/cors\x27);\x0aconst\x20securityHeaders\x20=\x20require(\x27@restforgejs/platform/src/middleware/security-headers\x27);\x0a\x0a/**\x0a\x20*\x20Fungsi\x20untuk\x20mengeksekusi\x20modul\x20'+_0x567b49+'\x20(SQLite\x20Database)\x0a\x20*\x20@param\x20{Object}\x20config\x20-\x20Konfigurasi\x20untuk\x20menjalankan\x20modul\x0a\x20*\x20@param\x20{number}\x20config.port\x20-\x20Port\x20untuk\x20server\x0a\x20*\x20@param\x20{string}\x20config.key\x20-\x20API\x20Key\x20(opsional)\x0a\x20*\x20@returns\x20{Promise<void>}\x20Promise\x20yang\x20tidak\x20pernah\x20resolve\x20agar\x20server\x20tetap\x20berjalan\x0a\x20*/\x0aasync\x20function\x20execute(config)\x20{\x0a\x20\x20return\x20new\x20Promise((resolve)\x20=>\x20{\x0a\x20\x20\x20\x20const\x20app\x20=\x20express();\x0a\x20\x20\x20\x20const\x20port\x20=\x20config.port\x20||\x203000;\x0a\x20\x20\x20\x20const\x20serverAddress\x20=\x20config.serverAddress\x20||\x20\x270.0.0.0\x27;\x0a\x20\x20\x20\x20const\x20moduleNameCapitalized\x20=\x20\x27'+_0x47fb16+_0x3d2b2f(0x12e)+_0x567b49+_0x3d2b2f(0x197)+_0x567b49+_0x3d2b2f(0x1fd)+_0x567b49+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20uptime:\x20process.uptime(),\x0a\x20\x20\x20\x20\x20\x20\x20\x20memory:\x20process.memoryUsage(),\x0a\x20\x20\x20\x20\x20\x20\x20\x20system:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20platform:\x20process.platform,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20nodeVersion:\x20process.version,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pid:\x20process.pid\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20\x20\x20res.json(healthInfo);\x0a\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20//\x20Muat\x20semua\x20rute\x20dari\x20folder\x20'+_0x567b49+'\x0a\x20\x20\x20\x20const\x20modulesDir\x20=\x20path.join(__dirname,\x20\x27'+_0x567b49+'\x27);\x0a\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(!fs.existsSync(modulesDir))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20fs.mkdirSync(modulesDir,\x20{\x20recursive:\x20true\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(`Directory\x20${modulesDir}\x20created\x20successfully`);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20files\x20=\x20fs.readdirSync(modulesDir);\x0a\x20\x20\x20\x20\x20\x20const\x20endpointFiles\x20=\x20files.filter(file\x20=>\x20file.endsWith(\x27.js\x27));\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(endpointFiles.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(`No\x20endpoint\x20files\x20found\x20in\x20${modulesDir}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(`Add\x20endpoint\x20files\x20to\x20enable\x20API\x20functionality`);\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20logger.info({\x20event:\x20\x27endpoints_loading\x27,\x20count:\x20endpointFiles.length\x20},\x20`Loading\x20${endpointFiles.length}\x20endpoint(s)`);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20file\x20of\x20endpointFiles)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20endpointName\x20=\x20path.basename(file,\x20\x27.js\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20endpointPath\x20=\x20path.join(modulesDir,\x20file);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Clear\x20module\x20cache\x20untuk\x20development\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(require.cache[endpointPath])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20delete\x20require.cache[endpointPath];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20moduleRoutes\x20=\x20require(endpointPath);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20endpointPrefix\x20=\x20`/api/'+_0x567b49+_0x3d2b2f(0x12d)+_0x567b49+'\x27,\x20endpointName,\x20exportConfig);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(exportError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logger.error({\x20event:\x20\x27export_registration_error\x27,\x20endpoint:\x20endpointName,\x20error:\x20exportError.message\x20},\x20`Export\x20registration\x20failed\x20for\x20${endpointName}:\x20${exportError.message}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Register\x20import\x20routes\x20via\x20centralized\x20handler\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20importConfig\x20=\x20extractImportConfigFromEndpoint(endpointPath);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(importConfig)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ImportHandler.registerRoutes(app,\x20\x27'+_0x567b49+_0x3d2b2f(0x1e1)+_0x567b49+_0x3d2b2f(0x1ef)+_0x567b49+_0x3d2b2f(0x1a1)+_0x567b49+_0x3d2b2f(0x1fb)+_0x567b49+_0x3d2b2f(0x152)+_0x567b49+_0x3d2b2f(0x148)+_0x567b49+'/info`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20baseUrl:\x20`http://${displayHost}:${port}`\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Execute\x20plugin\x20onAfterServerStart\x20hook\x20(jika\x20ada)\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(plugin\x20&&\x20plugin.onAfterServerStart)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20plugin.onAfterServerStart(app,\x20config);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(pluginError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logger.error({\x20event:\x20\x27plugin_after_start_error\x27,\x20error:\x20pluginError.message\x20},\x20\x27Plugin\x20onAfterServerStart\x20failed\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20process.on(\x27SIGINT\x27,\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27Menerima\x20sinyal\x20SIGINT,\x20shutting\x20down...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20process.exit(0);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20process.on(\x27SIGTERM\x27,\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27Menerima\x20sinyal\x20SIGTERM,\x20shutting\x20down...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20process.exit(0);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20process.on(\x27uncaughtException\x27,\x20(error)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27Uncaught\x20Exception:\x27,\x20error);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20process.on(\x27unhandledRejection\x27,\x20(reason,\x20promise)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27Unhandled\x20Rejection\x20at:\x27,\x20promise,\x20\x27reason:\x27,\x20reason);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20console.error(\x27Error\x20saat\x20menjalankan\x20modul\x20'+_0x567b49+_0x3d2b2f(0xe8);}function buildDefaultScopeSQL(_0x3a9ec4,_0x39f7bb=''){const _0x3c9d00=a0_0x5e61,_0x5619e6={'vsrBz':'object','IzrTW':function(_0x149f99,_0x3931e1){return _0x149f99===_0x3931e1;},'lBePK':_0x3c9d00(0x1d4),'ybRiH':'number','fuwlj':_0x3c9d00(0x140)};if(!_0x3a9ec4||typeof _0x3a9ec4!==_0x5619e6['vsrBz'])return'';const _0x359ba4=[];for(const [_0x521313,_0x3fc5fb]of Object['entries'](_0x3a9ec4)){if(_0x5619e6['IzrTW'](typeof _0x3fc5fb,_0x5619e6['lBePK']))_0x359ba4['push'](''+_0x39f7bb+_0x521313+'\x20=\x20\x27'+_0x3fc5fb+'\x27');else{if(typeof _0x3fc5fb==='string')_0x359ba4[_0x3c9d00(0x101)](''+_0x39f7bb+_0x521313+'\x20=\x20\x27'+_0x3fc5fb[_0x3c9d00(0xfe)](/'/g,'\x27\x27')+'\x27');else typeof _0x3fc5fb===_0x5619e6['ybRiH']&&_0x359ba4['push'](''+_0x39f7bb+_0x521313+_0x3c9d00(0x1be)+_0x3fc5fb);}}return _0x359ba4['join'](_0x5619e6['fuwlj']);}function a0_0x4d4b(){const _0x3ff909=['ycK7cG','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','Aw1WB3j0','igXPC3qGzgf0ysCScIaGicaGigrLDgfPBhm6ihbYB2nLC3mUzw52lK5prevFru5wid09psaNzgv2zwXVCg1LBNqNid8GzxjYB3iUBwvZC2fNzsa6ihvUzgvMAw5LzcWkicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGih0PoWOGih0kFsK7cGO','y2HHCKf0','zMLUza','v0HfuKuG','lNzHBgLKyxrLrgf0ysa9pt0Gj2z1BMn0Aw9UjYKGEWOGicaGicb2yxiGAgvHzgvYrgf0yuzVCLzHBgLKyxrPB24GpsbpyMPLy3qUyxnZAwDUkhT9lcbKyxrHktSkicaGicaGzgvSzxrLigHLywrLCKrHDgfgB3jwywXPzgf0Aw9UlG','jZOGEWOGicaGicaGihr5Cgu6icC','ih07cMnVBxbVBMvUDevUz2LUzs5SB2fKq29UzMLNDxjHDgLVBKzYB21pyMPLy3qOx2nVBxbVBMvUDfbHEwXVywqPlNrOzw4OCMvZDwX0id0+ihSkicbPzIaOCMvZDwX0lNn1y2nLC3mPihSkicaGignVBNnVBguUBg9NkgbdB21WB25LBNqGy29UzMLNDxjHDgLVBIbSB2fKzwqGzM9Yia','AwyGkgnHBgn1Bgf0Aw9UCY50B3rHBf9HBw91BNqPihSkicaGicaGy29UC3qGDg90ywXbBw91BNqGpsbHBgXjDgvTCY5Yzwr1y2uOzNvUy3rPB24OC3vTlcbPDgvTksb7cIaGicaGicaGDMfYihf0Esa9ie51BwjLCIHPDgvTlG','jYWkicaGicaGicaGigHLywX0AenOzwnRoIbGAhr0CdOVlYr7zgLZCgXHEuHVC3r9oIr7Cg9YDh0VyxbPlW','l3vWzgf0zs1JB21WB3nPDgu6jYWGsLnptI5ZDhjPBMDPzNKOCMvXlMjVzhKSig51BgWSidiPktSkcIaGicbPzIaOixjLCs5IB2r5ihX8icfYzxeUyM9KEs4','laOGigfKANvZDenVBMzPzZOG','cI8QkGOGkIbdB21WB3nPDguGCMvHzcaTifjLywqGAgvHzgvYihDPDgGGzgv0ywLSigL0zw1ZicHtuuXPDguPcIaQlWPHC3LUyYbYzwfKq29TCg9ZAxrLkg9WDgLVBNmPihSkicb0CNKGEWOGicaGAwyGkcfVChrPB25ZlNDOzxjLksb7cIaGicaGihrOCM93ig5LDYbfCNjVCIGNsw52ywXPzcbYzxf1zxn0igzVCM1HDdOGD2HLCMuGCgfYyw1LDgvYigLZihjLCxvPCMvKjYK7cIaGicb9cGOGicaGBgv0ihDOzxjLq2XHDxnLuMvZDwX0oWOGicaGDhj5ihSkicaGicaGD2HLCMvdBgf1C2vszxn1BhqGpsb0AgLZlMj1AwXKq29TCgXLEfDOzxjLq2XHDxnLkg9WDgLVBNmUD2HLCMuPoWOGicaGFsbJyxrJAcaOzsKGEWOGicaGicaVlYbgywLSlwnSB3nLzcb3AgvYzs1MAwvSzdOGDgvYDxnRyw4GzxjYB3iGDgvYC3rYDwT0DxiGyxbHigfKyw55ys4kicaGicaGAwyGkguUy29Kzsa9pt0Gj0LovKfmsurFv0HfuKvFrKLfteqNksb0AhjVDYbLoWOGicaGicbJB25ZDcbLCNjVCIa9ig5LDYbfCNjVCIGNsw52ywXPzcb3AgvYzsbJB25KAxrPB25ZoIaNicSGzs5TzxnZywDLktSkicaGicaGzxjYB3iUC3rHDhvZq29Kzsa9idqWmdSkicaGicaGDgHYB3CGzxjYB3i7cIaGicb9cIaGicbJB25ZDcb7ihnXBdOGD2HLCMvdBgf1C2uSihbHCMfTCYb9id0GD2HLCMvdBgf1C2vszxn1Bhq7cIaGicbJB25ZDcbOzwfKzxjtCwWGpsaNu0vmrunuicOGrLjptsaNicSGDgHPCY5NzxruywjSzvnVDxjJzsGNCMvHzcCPicSGjYbxsevsrsaNicSGD2HLCMvdBgf1C2u7cIaGicbJB25ZDcbOzwfKzxjszxn1BhrZid0GyxDHAxqGzgiUzxHLy3v0zvf1zxj5kgHLywrLCLnXBcWGCgfYyw1ZktSkcIaGicbPzIaOiwHLywrLCLjLC3vSDhmGFhWGAgvHzgvYuMvZDwX0CY5Szw5NDgGGpt09idaPihSkicaGicaGCMv0DxjUihSGC3vJy2vZCZOGDhj1zsWGy291BNq6idaSigrHDge6ifTDih07cIaGicb9cGOGicaGy29UC3qGy29TCg9ZAxrLuMvZDwX0CYa9ifTDoWOGicaGy29UC3qGzgv0ywLSs2v5id0GjW','Dg90ywXFyw1VDw50','oWOGigLMicHIExbHC3nsB2XLCY5Szw5NDgGGpIaWicyMigj5CgfZC1jVBgvZlNnVBwuOCM9Szsa9pIb1C2vYuM9SzxmUAw5JBhvKzxmOCM9SzsKPksb7cIaGicbYzxr1CM4GBMv4DcGPoWOGih0kcIaGlY8GuMvHzcbZy29Wzsb2ywX1zsbMCM9TihvZzxiGy29UDgv4DaOGignVBNn0ihnJB3bLvMfSDwuGpsa','cIaGicaVlYbszxf1zxn0ihnJB3bLig93BMvYC2HPCcb2zxjPzMLJyxrPB24GkeXHEwvYideGuKXtkqOGicaGAwyGkhjLCs5FCMvXDwvZDfnJB3bLicyMihjLC3vSDc5KyxrHicyMihjLC3vSDc5KyxrHlMXLBMD0Aca+idaPihSkicaGicaGy29UC3qGCMvJB3jKid0GCMvZDwX0lMrHDgfBmf07cIaGicaGigLMicHYzwnVCMrBCMvXlL9Yzxf1zxn0u2nVCguUy29SDw1UxsaHpt0GDw5KzwzPBMvKicyMcIaGicaGicaGicbtDhjPBMCOCMvJB3jKw3jLCs5FCMvXDwvZDfnJB3bLlMnVBhvTBL0Pice9psbtDhjPBMCOCMvXlL9Yzxf1zxn0u2nVCguUDMfSDwuPksb7cIaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOnda0ks5QC29UkhSkicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGzxjYB3i6icDeyxrHig5VDcbMB3vUzcCScIaGicaGicaGicbTzxnZywDLoIaN','DgLTzxn0yw1W','cIOGrgf0ywjHC2u6ifnrtgL0zqOQlWPJBgfZCYa','ihX8icCNcIaGicb9ksK7cGOGicaGlY8Gq2fJAguGDgHLihjLC3vSDaOGicaGyxDHAxqGDgHPCY5ZzxrdywnOzwrmB29RDxaOy2fJAgvpChrPB25ZlcbYzxn1BhqSicDMAwX0zxiNktSkcIaGicbYzxr1CM4GCMvZDwX0oWOGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbNzxrmB29RDxbeyxrHv2L0AezPBhrLCJONlcbLCNjVCIK7cIaGicb0AhjVDYbLCNjVCJSkicb9cN0kcI8QkGOGkIbcDwLSzcbHzhzHBMnLzcbMAwX0zxiGy29UzgL0Aw9UCYb1BNr1AYbtuuXPDgukicOGqhbHCMfTihTbCNjHEx0GzMLSDgvYCYaTiefYCMf5ig9MihTJB2X1Bw4Sihr5CguSihzHBhvLlcb2ywX1ztj9cIaQiebYzxr1CM5ZihTpyMPLy3r9ihTZCwWSihbHCMfTC30kicOVcMj1AwXKqwr2yw5JzwrgAwX0zxjdB25KAxrPB24OzMLSDgvYCYKGEWOGigLMicGHzMLSDgvYCYb8FcaHqxjYyxKUAxnbCNjHEsHMAwX0zxjZksb8FcbMAwX0zxjZlMXLBMD0Aca9pt0GmcKGEWOGicaGCMv0DxjUihSGC3fSoIaNjYWGCgfYyw1ZoIbBxsb9oWOGih0kcIaGy29UC3qGy29UzgL0Aw9UCYa9ifTDoWOGignVBNn0ihbHCMfTCYa9ifTDoWOkicbMB3iGkgnVBNn0igzPBhrLCIbVzIbMAwX0zxjZksb7cIaGicbJB25ZDcb7ignVBhvTBIWGDhLWzsWGDMfSDwuSihzHBhvLmIb9id0GzMLSDgvYoWOkicaGigLMicGHy29SDw1UihX8icf0AgLZlNzHBgLKrMLLBgrZlMLUy2X1zgvZkgnVBhvTBIKPignVBNrPBNvLoWOkicaGihn3AxrJAcaODhLWzsKGEWOGicaGicbJyxnLicDLCxvHBhmNoGOGicaGicaGignVBMrPDgLVBNmUChvZAcHGjhTJB2X1Bw59id0Gp2aPoWOGicaGicaGihbHCMfTCY5WDxnOkhzHBhvLktSkicaGicaGicbICMvHAZSkicaGicaGy2fZzsaNBM90x2vXDwfSCYC6cIaGicaGicaGy29UzgL0Aw9UCY5WDxnOkgaKE2nVBhvTBN0Gpd4Gp2aPoWOGicaGicaGihbHCMfTCY5WDxnOkhzHBhvLktSkicaGicaGicbICMvHAZSkicaGicaGy2fZzsaNy29UDgfPBNmNoGOGicaGicbJyxnLicDSAwTLjZOkicaGicaGicbJB25KAxrPB25ZlNb1C2GOycr7y29SDw1UFsbmsuTfid9GktSkicaGicaGicbWyxjHBxmUChvZAcHGjsr7DMfSDwv9jwaPoWOGicaGicaGigjYzwfRoWOGicaGicbJyxnLicDUB3rFy29UDgfPBNmNoGOGicaGicbJyxnLicDUB3rFBgLRzsC6cIaGicaGicaGy29UzgL0Aw9UCY5WDxnOkgaKE2nVBhvTBN0GtK9uieXjs0uGp2aPoWOGicaGicaGihbHCMfTCY5WDxnOkgaLjhT2ywX1zx0LycK7cIaGicaGicaGyNjLywS7cIaGicaGignHC2uGj3n0yxj0C193AxrOjZOkicaGicaGicbJB25KAxrPB25ZlNb1C2GOycr7y29SDw1UFsbmsuTfid9GktSkicaGicaGicbWyxjHBxmUChvZAcHGjhT2ywX1zx0LycK7cIaGicaGicaGyNjLywS7cIaGicaGignHC2uGj2vUzhnFD2L0AcC6cIaGicaGicaGy29UzgL0Aw9UCY5WDxnOkgaKE2nVBhvTBN0GteLlrsa/ycK7cIaGicaGicaGCgfYyw1ZlNb1C2GOycuKE3zHBhvLFwaPoWOGicaGicaGigjYzwfRoWOGicaGicbJyxnLicDNCMvHDgvYx3rOyw4NoGOGicaGicaGignVBMrPDgLVBNmUChvZAcHGjhTJB2X1Bw59id4Gp2aPoWOGicaGicaGihbHCMfTCY5WDxnOkhzHBhvLktSkicaGicaGicbICMvHAZSkicaGicaGy2fZzsaNBgvZC190AgfUjZOkicaGicaGicbJB25KAxrPB25ZlNb1C2GOycr7y29SDw1UFsa8id9GktSkicaGicaGicbWyxjHBxmUChvZAcH2ywX1zsK7cIaGicaGicaGyNjLywS7cIaGicaGignHC2uGj2DYzwf0zxjFzxf1ywWNoGOGicaGicaGignVBMrPDgLVBNmUChvZAcHGjhTJB2X1Bw59id49id9GktSkicaGicaGicbWyxjHBxmUChvZAcH2ywX1zsK7cIaGicaGicaGyNjLywS7cIaGicaGignHC2uGj2XLC3nFzxf1ywWNoGOGicaGicaGignVBMrPDgLVBNmUChvZAcHGjhTJB2X1Bw59idW9id9GktSkicaGicaGicbWyxjHBxmUChvZAcH2ywX1zsK7cIaGicaGicaGyNjLywS7cIaGicaGignHC2uGj2jLDhDLzw4NoGOGicaGicaGignVBMrPDgLVBNmUChvZAcHGjhTJB2X1Bw59iejfvfDfru4GpYbbtKqGp2aPoWOGicaGicaGihbHCMfTCY5WDxnOkhzHBhvLlcb2ywX1ztiPoWOGicaGicaGigjYzwfRoWOGicaGicbJyxnLicDPBIC6cIaGicaGicaGAwyGkefYCMf5lMLZqxjYyxKODMfSDwuPksb7cIaGicaGicaGicbJB25ZDcbPBLbSywnLAg9SzgvYCYa9ihzHBhvLlM1HCcGOksa9pIaNpYCPlMPVAw4OjYWGjYK7cIaGicaGicaGicbJB25KAxrPB25ZlNb1C2GOycr7y29SDw1UFsbjtIaOjhTPBLbSywnLAg9SzgvYC30PycK7cIaGicaGicaGicbWyxjHBxmUChvZAcGUlI52ywX1zsK7cIaGicaGicaGFqOGicaGicaGigjYzwfRoWOGicaGicbJyxnLicDUB3rFAw4NoGOGicaGicaGigLMicHbCNjHEs5PC0fYCMf5khzHBhvLksKGEWOGicaGicaGicaGy29UC3qGBM90sw5qBgfJzwHVBgrLCNmGpsb2ywX1zs5TyxaOkcKGpt4GjZ8Nks5QB2LUkcCSicCPoWOGicaGicaGicaGy29UzgL0Aw9UCY5WDxnOkgaKE2nVBhvTBN0GtK9uieLoicGKE25VDeLUugXHy2vOB2XKzxjZFsLGktSkicaGicaGicaGihbHCMfTCY5WDxnOkc4UlNzHBhvLktSkicaGicaGicb9cIaGicaGicaGyNjLywS7cIaGicaGignHC2uGj2LZx251BgWNoGOGicaGicaGignVBMrPDgLVBNmUChvZAcHGjhTJB2X1Bw59ieLtie5vteXGktSkicaGicaGicbICMvHAZSkicaGicaGy2fZzsaNAxnFBM90x251BgWNoGOGicaGicaGignVBMrPDgLVBNmUChvZAcHGjhTJB2X1Bw59ieLtie5pvcbovuXmycK7cIaGicaGicaGyNjLywS7cIaGicaGignHC2uGj2rHDgvFzxf1ywXZjZOkicaGicaGicbJB25KAxrPB25ZlNb1C2GOygrHDguOjhTJB2X1Bw59ksa9id9GktSkicaGicaGicbWyxjHBxmUChvZAcH2ywX1zsK7cIaGicaGicaGyNjLywS7cIaGicaGignHC2uGj2rHDgvFyMv0D2vLBIC6cIaGicaGicaGy29UzgL0Aw9UCY5WDxnOkgbKyxrLkcr7y29SDw1UFsKGqKvuv0vftIa/ieforca/ycK7cIaGicaGicaGCgfYyw1ZlNb1C2GODMfSDwuSihzHBhvLmIK7cIaGicaGicaGyNjLywS7cIaGicaGignHC2uGj2rHDgvFywz0zxiNoGOGicaGicaGignVBMrPDgLVBNmUChvZAcHGzgf0zsGKE2nVBhvTBN0Pid4Gp2aPoWOGicaGicaGihbHCMfTCY5WDxnOkhzHBhvLktSkicaGicaGicbICMvHAZSkicaGicaGy2fZzsaNzgf0zv9IzwzVCMuNoGOGicaGicaGignVBMrPDgLVBNmUChvZAcHGzgf0zsGKE2nVBhvTBN0PidWGp2aPoWOGicaGicaGihbHCMfTCY5WDxnOkhzHBhvLktSkicaGicaGicbICMvHAZSkicaGicaGzgvMyxvSDdOkicaGicaGicbICMvHAZSkicaGih0kicb9cGOGigLMicHJB25KAxrPB25ZlMXLBMD0Aca9pt0GmcKGEWOGicaGCMv0DxjUihSGC3fSoIaNjYWGCgfYyw1ZoIbBxsb9oWOGih0kcIaGCMv0DxjUihSGC3fSoIbJB25KAxrPB25ZlMPVAw4OjYbbtKqGjYKSihbHCMfTCYb9oWP9cGOVkIOkicOGrxnJyxbLihzHBhvLihvUDhvRifnrtgL0zsbtuuWGkhnHBML0AxPHDgLVBIKkicOVcMvZy2fWzvzHBhvLkhzHBhvLksb7cIaGAwyGkhzHBhvLid09psbUDwXSihX8ihzHBhvLid09psb1BMrLzMLUzwqPihjLDhvYBIbUDwXSoWOGigLMicH0ExbLB2yGDMfSDwuGpt09icDUDw1IzxiNksbYzxr1CM4GDMfSDwu7cIaGCMv0DxjUifn0CMLUzYH2ywX1zsKUCMvWBgfJzsGVjY9NlcaIjYCIktSkFqOklYOQcIaQifzHBgLKyxnPigrHDgeGC2vIzwX1BsbPBNnLCNqVDxbKyxrLcIaQlWPHC3LUyYb2ywXPzgf0zurHDgeOzgf0ysWGB3bLCMf0Aw9Uid0Gj2LUC2vYDcCPihSkicbJB25ZDcbYzxn1BhqGpsb7cIaGicbPC1zHBgLKoIb0CNvLlaOGicaGzxjYB3jZoIbBxsWkicaGihDHCM5PBMDZoIbBxsWkicaGihnHBML0AxPLzerHDge6ihT9cIaGFtSkcIaGDhj5ihSkicaGignVBNn0igHHC0zPzwXKvMfSAwrHDgLVBIa9ihrOAxmUDMfSAwrHDgLVBKnVBMzPzYaMjIbpyMPLy3qUA2v5CYH0AgLZlNzHBgLKyxrPB25dB25MAwCPlMXLBMD0Aca+ida7cGOGicaGAwyGkgHHC0zPzwXKvMfSAwrHDgLVBIKGEWOGicaGicaVlYbmB29WihnLBxvHigzPzwXKihLHBMCGywrHigrPihzHBgLKyxrPB25dB25MAwCkicaGicaGzM9YicHJB25ZDcbMAwvSze5HBwuGAw4GDgHPCY52ywXPzgf0Aw9Uq29UzMLNksb7cIaGicaGicaGBgv0ihzHBhvLid0Gzgf0yvTMAwvSze5HBwvDoWOGicaGicaGignVBNn0ignVBMzPzYa9ihrOAxmUDMfSAwrHDgLVBKnVBMzPz1TMAwvSze5HBwvDoWOGicaGicaGignVBNn0ignVBNn0CMfPBNrZid0Gy29UzMLNlMnVBNn0CMfPBNrZihX8ihT9oWOkicaGicaGicaVlYbbDxrVlwDLBMvYyxrLihzHBhvLigPPA2eGyxv0B0DLBMvYyxrLigrHBIbUAwXHAsbRB3nVBMCUcIaGicaGicaGlY8Gu3rYAw5NigrHBIb1DwLKigrPCgvYBgfRDwTHBIbZyw1HoIbvvuLeihy3ihzPysb1DwLKihbHy2THz2ukicaGicaGicaVlYaOA29UC2LZDgvUigXPBNrHCYbKAwfSzwn0oYbJB2nVAYbKzw5Nyw4GA29UDMvUC2KGCgf5Bg9HzcbJyxrLz29YEs5QC29UcIaGicaGicaGlY8GEwfUzYbTzw1HA2fPihr5Cgu6icjZDhjPBMCIigrLBMDHBIbJB25ZDhjHAw50igf1Dg9hzw5LCMf0zsaRihbYAw1HCNLlzxKPlGOGicaGicaGigLMicHVCgvYyxrPB24Gpt09icDPBNnLCNqNicyMignVBNn0CMfPBNrZlMf1Dg9hzw5LCMf0zsaMjIaOixzHBhvLihX8ihzHBhvLid09psaNjYKPihSkicaGicaGicaGigLMicHJB25MAwCUDhLWzsa9pt0Gj3v1AwqNihX8ignVBMzPzY50ExbLid09psaNC3rYAw5NjYKGEWOGicaGicaGicaGicb2ywX1zsa9ihjLCxvPCMuOj3v1AwqNks52nYGPoWOGicaGicaGicaGicbKyxrHw2zPzwXKtMfTzv0Gpsb2ywX1ztSkicaGicaGicaGih0kicaGicaGicb9cGOGicaGicaGic8VifnRAxaGDMfSAwrHDgLVBIbQAwTHihzHBhvLigTVC29UzYbKyw4GDgLKywSGCMvXDwLYzwqkicaGicaGicbPzIaODMfSDwuGpt09ihvUzgvMAw5Lzcb8Fcb2ywX1zsa9pt0GBNvSBcb8Fcb2ywX1zsa9pt0GjYCPihSkicaGicaGicaGigLMicHJB25ZDhjHAw50CY5Yzxf1AxjLzcKGEWOGicaGicaGicaGicaVlYbtA2LWoIbHDxrVr2vUzxjHDguGyxrHDsbWCMLTyxj5s2v5igrPigLUC2vYDaOGicaGicaGicaGicbPzIaOB3bLCMf0Aw9Uid09psaNAw5Zzxj0jYaMjIaOy29UC3rYywLUDhmUyxv0B0DLBMvYyxrLihX8ignVBNn0CMfPBNrZlNbYAw1HCNLlzxKPksb7cIaGicaGicaGicaGicaGlY8Gt0SG4OcuigfRyw4GzgKTz2vUzxjHDguGB3rVBwf0AxmkicaGicaGicaGicaGFqOGicaGicaGicaGicaVlYbtA2LWoIb1CgrHDguGCgfYDgLHBcdIGjqGzMLLBgqGDgLKywSGzgLRAxjPBsbIzxjHCNrPihrPzgfRigrPDwjHAaOGicaGicaGicaGicbLBhnLigLMicHVCgvYyxrPB24Gpt09icD1CgrHDguNicyMihzHBhvLid09psb1BMrLzMLUzwqPihSkicaGicaGicaGicaGicaVlYbpsYdIGjqGzMLLBgqGDgLKywSGC2vKyw5NigrPlxvWzgf0zqOGicaGicaGicaGicb9cIaGicaGicaGicaGigvSC2uGEWOGicaGicaGicaGicaGignVBNn0ig1LC3nHz2uGpsbJB25ZDhjHAw50CY5Yzxf1AxjLze1LC3nHz2uGFhWGyezPzwXKicCKE2zPzwXKtMfTzx0NigLZihjLCxvPCMvKydSkicaGicaGicaGicaGicbYzxn1BhqUzxjYB3jZlNb1C2GOBwvZC2fNzsK7cIaGicaGicaGicaGicaGCMvZDwX0lMLZvMfSAwqGpsbMywXZztSkicaGicaGicaGicaGFqOGicaGicaGicaGFqOGicaGicaGicaGy29UDgLUDwu7cIaGicaGicaGFqOkicaGicaGicaVlYbcB29SzwfUigzPzwXKoIbKAsbtuuXPDguGzgLZAw1Wyw4GC2vIywDHAsbwqvjdsefsicD0CNvLjY8NzMfSC2uNlGOGicaGicaGic8VifrLCMLTysb0CNvLlYD0CNvLjY8XlYCXjYbKyw4GzMfSC2uVj2zHBhnLjY8WlYCWjYaOC2vSyxjHCYbKzw5Nyw4kicaGicaGicaVlYbqB3n0z3jLu1fmif92ywXPzgf0zujVB2XLyw5dB25ZDhjHAw50CYKSihnPBxbHBIbZzwjHz2fPihn0CMLUzWOGicaGicaGic8VicD0CNvLjY8NzMfSC2uNigfNyxiGy29JB2SGzgvUz2fUigTVBg9TifzbuKniqviGkYbdsevdsY4kicaGicaGicbPzIaOy29UzMLNlNr5CguGpt09icDIB29SzwfUjYKGEWOGicaGicaGicaGBgv0igjVB2XwywW7cIaGicaGicaGicbPzIaODMfSDwuGpt09ihrYDwuGFhWGDMfSDwuGpt09icD0CNvLjYb8Fcb2ywX1zsa9pt0Gmsb8Fcb2ywX1zsa9pt0GjZeNksb7cIaGicaGicaGicaGigjVB2XwywWGpsb0CNvLoWOGicaGicaGicaGFsbLBhnLigLMicH2ywX1zsa9pt0GzMfSC2uGFhWGDMfSDwuGpt09icDMywXZzsCGFhWGDMfSDwuGpt09idaGFhWGDMfSDwuGpt09icCWjYKGEWOGicaGicaGicaGicbIB29SvMfSid0GzMfSC2u7cIaGicaGicaGicb9igvSC2uGEWOGicaGicaGicaGicbYzxn1BhqUzxjYB3jZlNb1C2GOy29UC3rYywLUDhmUDhLWzu1LC3nHz2uGFhWGyezPzwXKicCKE2zPzwXKtMfTzx0Nig11C3qGyMuGysbIB29SzwfUicH0CNvLl2zHBhnLkwaPoWOGicaGicaGicaGicbYzxn1BhqUAxnwywXPzca9igzHBhnLoWOGicaGicaGicaGicbJB250Aw51ztSkicaGicaGicaGih0kicaGicaGicaGihjLC3vSDc5Zyw5PDgL6zwreyxrHw2zPzwXKtMfTzv0GpsbIB29SvMfSid8Gj3rYDwuNidOGj2zHBhnLjZSkicaGicaGicaGignVBNrPBNvLoWOGicaGicaGih0kcIaGicaGicaGlY8Gu3rYAw5NigzPzwXKoIbOyxnOignVBNn0CMfPBNqGC3vWCg9YDc4kicaGicaGicaVlYb0zxH0igrPCgvYBgfRDwTHBIbPzgvUDgLRigrLBMDHBIbZDhjPBMCGkhvUyM91BMrLzcbZDhjPBMCPihvUDhvRihzHBgLKyxnPigrHDgeUcIaGicaGicaGAwyGkcHJB25MAwCUDhLWzsa9pt0Gj3n0CMLUzYCGFhWGy29UzMLNlNr5CguGpt09icD0zxH0jYKGjIyGDhLWzw9MihzHBhvLid09psaNC3rYAw5NjYKGEWOGicaGicaGicaGBgv0ihnHBML0AxPLzca9ihzHBhvLoWOGicaGicaGicaGy29UC3qGzMLLBgrfCNjVCNmGpsbBxtSkicaGicaGicaGignVBNn0igLZsgfZAezPzwXKid0Gy29UC3rYywLUDhmUAgfZAca9pt0Gj2jJCNLWDcC7cGOGicaGicaGicaGlY8GvhjPBqOGicaGicaGicaGAwyGkgnVBNn0CMfPBNrZlNrYAw0PihSkicaGicaGicaGicaGC2fUAxrPEMvKid0GC2fUAxrPEMvKlNrYAw0OktSkicaGicaGicaGih0kcIaGicaGicaGicaVlYbdyxnLihrYyw5ZzM9YBwf0Aw9UicHZA2LWigPPA2eGAgfZAcbMAwvSzcKkicaGicaGicaGigLMicGHAxniyxnOrMLLBgqPihSkicaGicaGicaGicaGAwyGkgnVBNn0CMfPBNrZlMXVD2vYy2fZzsKGEWOGicaGicaGicaGicaGihnHBML0AxPLzca9ihnHBML0AxPLzc50B0XVD2vYq2fZzsGPoWOGicaGicaGicaGicb9igvSC2uGAwyGkgnVBNn0CMfPBNrZlNvWCgvYy2fZzsKGEWOGicaGicaGicaGicaGihnHBML0AxPLzca9ihnHBML0AxPLzc50B1vWCgvYq2fZzsGPoWOGicaGicaGicaGicb9cIaGicaGicaGicb9cGOGicaGicaGicaGlY8GtgvUz3rOihzHBgLKyxrPB24GkhzHBgLKyxnPihbSywLUDgv4DcbZzwjLBhvTigHHC2GPcIaGicaGicaGicbPzIaOy29UC3rYywLUDhmUBwLUtgvUz3rOicyMihnHBML0AxPLzc5Szw5NDgGGpcbJB25ZDhjHAw50CY5TAw5mzw5NDgGPihSkicaGicaGicaGicaGzMLLBgrfCNjVCNmUChvZAcHJB25ZDhjHAw50CY5TAw5mzw5NDgHnzxnZywDLihX8igbgAwvSzcaNjhTMAwvSze5HBwv9jYbTDxn0igjLigf0igXLyxn0icr7y29UC3rYywLUDhmUBwLUtgvUz3rOFsbJAgfYywn0zxjZycK7cIaGicaGicaGicb9cIaGicaGicaGicbPzIaOy29UC3rYywLUDhmUBwf4tgvUz3rOicyMicfPC0HHC2HgAwvSzcaMjIbZyw5PDgL6zwqUBgvUz3rOid4Gy29UC3rYywLUDhmUBwf4tgvUz3rOksb7cIaGicaGicaGicaGigzPzwXKrxjYB3jZlNb1C2GOy29UC3rYywLUDhmUBwf4tgvUz3rOtwvZC2fNzsb8FcbGrMLLBgqGjYr7zMLLBgroyw1LFsCGBxvZDcbUB3qGzxHJzwvKicr7y29UC3rYywLUDhmUBwf4tgvUz3rOFsbJAgfYywn0zxjZycK7cIaGicaGicaGicb9cGOGicaGicaGicaGlY8Gugf0DgvYBIb2ywXPzgf0Aw9UcIaGicaGicaGicbPzIaOy29UC3rYywLUDhmUCgf0DgvYBIKGEWOGicaGicaGicaGicbJB25ZDcbYzwDLEca9ig5LDYbszwDfEhaOy29UC3rYywLUDhmUCgf0DgvYBIK7cIaGicaGicaGicaGigLMicGHCMvNzxGUDgvZDcHZyw5PDgL6zwqPksb7cIaGicaGicaGicaGicaGzMLLBgrfCNjVCNmUChvZAcHJB25ZDhjHAw50CY5Wyxr0zxjUtwvZC2fNzsb8FcbGrMLLBgqGjYr7zMLLBgroyw1LFsCGzg9LCYbUB3qGBwf0y2GGCMvXDwLYzwqGCgf0DgvYBMaPoWOGicaGicaGicaGicb9cIaGicaGicaGicb9cGOGicaGicaGicaGlY8GrM9YBwf0ihzHBgLKyxrPB24kicaGicaGicaGigLMicHJB25ZDhjHAw50CY5MB3jTyxqGpt09icDLBwfPBcCGjIyGis9Ew15CC0bDk0bBxLXZqf0Rxc5BxLXZqf0Rjc8UDgvZDcHZyw5PDgL6zwqPksb7cIaGicaGicaGicaGigzPzwXKrxjYB3jZlNb1C2GOy29UC3rYywLUDhmUzM9YBwf0twvZC2fNzsb8FcbGrMLLBgqGjYr7zMLLBgroyw1LFsCGAgfZigLUDMfSAwqGzw1HAwWGzM9YBwf0ycK7cIaGicaGicaGicb9cGOGicaGicaGicaGAwyGkgzPzwXKrxjYB3jZlMXLBMD0Aca+idaPihSkicaGicaGicaGicaGCMvZDwX0lMLZvMfSAwqGpsbMywXZztSkicaGicaGicaGicaGCMvZDwX0lMvYCM9YCY5WDxnOkc4UlMzPzwXKrxjYB3jZktSkicaGicaGicaGih0kcIaGicaGicaGicaVlYbiyxnOihrYyw5ZzM9YBwf0Aw9UicHZzxrLBgfOihnLBxvHihzHBgLKyxrPB24GCgfZCYKkicaGicaGicaGigLMicHPC0HHC2HgAwvSzcaMjIbMAwvSzevYCM9YCY5Szw5NDgGGpt09idaPihSkicaGicaGicaGicaGy29UC3qGyMnYExb0id0GCMvXDwLYzsGNyMnYExb0jYK7cIaGicaGicaGicaGignVBNn0ignVC3qGpsbJB25ZDhjHAw50CY5OyxnOq29ZDcb8FcaXmdSkicaGicaGicaGicaGC2fUAxrPEMvKid0GyxDHAxqGyMnYExb0lMHHC2GOC2fUAxrPEMvKlcbJB3n0ktSkicaGicaGicaGih0kcIaGicaGicaGicbYzxn1BhqUC2fUAxrPEMvKrgf0yvTMAwvSze5HBwvDid0GC2fUAxrPEMvKoWOGicaGicaGih0GzwXZzsb7cIaGicaGicaGicaVlYboB24TC3rYAw5NigzPzwXKoIbIyxnPyYbZyw5PDgL6yxrPB24kicaGicaGicaGihjLC3vSDc5Zyw5PDgL6zwreyxrHw2zPzwXKtMfTzv0Gpsb2ywX1ztSkicaGicaGicb9cIaGicaGih0kcIaGicaGic8VifzHBgLKyxrLigzPzwXKihLHBMCGDgLKywSGywrHigrPihzHBgLKyxrPB25dB25MAwCGkgjHy2T3yxjKignVBxbHDgLIAwXPDhKPcIaGicaGigzVCIaOy29UC3qGzMLLBgqGB2yGDgHPCY52ywXPzezPzwXKCYKGEWOGicaGicaGigLMicGHDgHPCY52ywXPzgf0Aw9Uq29UzMLNw2zPzwXKxsaMjIbKyxrHw2zPzwXKxsaHpt0GDw5KzwzPBMvKicyMigrHDgfBzMLLBgrDice9psbUDwXSksb7cIaGicaGicaGicbPzIaODhLWzw9MigrHDgfBzMLLBgrDid09psaNC3rYAw5NjYKGEWOGicaGicaGicaGicbYzxn1BhqUC2fUAxrPEMvKrgf0yvTMAwvSzf0GpsbKyxrHw2zPzwXKxs50CMLTkcKUCMvWBgfJzsGVxdaVzYWGjYCPlNn1yNn0CMLUzYGWlca0mdaWktSkicaGicaGicaGih0GzwXZzsb7cIaGicaGicaGicaGihjLC3vSDc5Zyw5PDgL6zwreyxrHw2zPzwXKxsa9igrHDgfBzMLLBgrDoWOGicaGicaGicaGFqOGicaGicaGih0kicaGicaGFqOGicaGFsbLBhnLihSkicaGicaGlY8GrMfSBgjHy2S6ifrPzgfRigfKysbMAwvSzfzHBgLKyxrPB24GlsbNDw5HA2fUigDLBMvYAwmGC2fUAxrPEMf0Aw9UcIaGicaGigzVCIaOy29UC3qGzMLLBgqGB2yGDgHPCY52ywXPzezPzwXKCYKGEWOGicaGicaGignVBNn0ihzHBhvLid0Gzgf0yvTMAwvSzf07cIaGicaGicaGAwyGkhzHBhvLice9psb1BMrLzMLUzwqGjIyGDMfSDwuGit09ig51BgWPihSkicaGicaGicaGigLMicH0ExbLB2yGDMfSDwuGpt09icDZDhjPBMCNksb7cIaGicaGicaGicaGihjLC3vSDc5Zyw5PDgL6zwreyxrHw2zPzwXKxsa9ihzHBhvLlNrYAw0Oks5YzxbSywnLkc9Cmc9NlcaNjYKUC3vIC3rYAw5NkdaSidqWmdaPoWOGicaGicaGicaGFsbLBhnLihSkicaGicaGicaGicaGCMvZDwX0lNnHBML0AxPLzerHDgfBzMLLBgrDid0GDMfSDwu7cIaGicaGicaGicb9cIaGicaGicaGFqOGicaGicb9cIaGicb9cIaGFsbJyxrJAcaOzxjYB3iPihSkicaGihjLC3vSDc5LCNjVCNmUChvZAcHGvMfSAwrHDgLVBIbLCNjVCJOGjhTLCNjVCI5TzxnZywDLFwaPoWOGicaGCMvZDwX0lMLZvMfSAwqGpsbMywXZztSkicb9cGOGihjLDhvYBIbYzxn1Bhq7cN0kcI8QkGOGkIbhzxqGzMLLBgqGBwfWCgLUzYbPBMzVCM1HDgLVBGOGkI8kz2v0rMLLBgrnyxbWAw5NkcKGEWOGihjLDhvYBIb7cIaGicbHBgXgAwvSzhm6ihrOAxmUDMfSAwrgAwvSzhmScIaGicbWCMLTyxj5s2v5oIb0AgLZlNbYAw1HCNLlzxKScIaGicb0zxH0rMLLBgrZoIb0AgLZlNzHBgLKrMLLBgrZlMzPBhrLCIHMid0+igyUAw5JBhvKzxmOj25HBwuNksb8FcbMlMLUy2X1zgvZkcDUyw1HjYKGFhWGzI5PBMnSDwrLCYGNzgvZy3jPChrPB24NksKScIaGicbKyxrLrMLLBgrZoIb0AgLZlNzHBgLKrMLLBgrZlMzPBhrLCIHMid0+igyUAw5JBhvKzxmOj2rHDguNksb8FcbMlMLUy2X1zgvZkcD0Aw1LjYKPlaOGicaGBNvTzxjPy0zPzwXKCZOGDgHPCY52ywXPzezPzwXKCY5MAwX0zxiOzIa9pIbMlMLUy2X1zgvZkcDHBw91BNqNksb8FcbMlMLUy2X1zgvZkcDWCMLJzsCPihX8igyUAw5JBhvKzxmOj2nVDw50jYKPcIaGFtSkFqOklYOQcIaQieDLDcbtuuXPDguGy29UBMvJDgLVBIbPBMzVihvUDhvRigHLywX0AcbJAgvJAWOGkI8kyxn5BMmGz2v0q29UBMvJDgLVBKLUzM8Oksb7cIaGDhj5ihSkicaGignVBNn0ihjLC3vSDca9igf3ywL0igrIlMv4zwn1DgvrDwvYEsGNu0vmrunuideGyxmGDgvZDf9JB24NktSkicaGigLMicHYzxn1BhqGjIyGCMvZDwX0lMXLBMD0Aca+idaPihSkicaGicaGCMv0DxjUihSGy29UBMvJDgvKoIb0CNvLlcbKyxrHyMfZztOGj3nXBgL0zsCSihjLDhjPzxzLzef0oIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKGFtSkicaGih0kicaGihjLDhvYBIbUDwXSoWOGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicbYzxr1CM4GEYbJB25Uzwn0zwq6igzHBhnLlcbLCNjVCJOGzxjYB3iUBwvZC2fNzsWGy2HLy2TLzef0oIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKGFtSkicb9cN0k','CMvXDwvZDfnJB3bL','cIaGyc50CMLTkcK7cGOGic8VienVBNzLCNqGug9ZDgDYzvnrtcbZEw50yxGGDg8Gu1fmAxrLigLMig5LzwrLzaOGigjHC2vrDwvYEsa9ihrOAxmUy29UDMvYDfrVu3fSAxrLu1fmkgjHC2vrDwvYEsK7cGOGihjLDhvYBIbIyxnLuxvLCNK7','zNnswgG','DxbKyxrLq29TCg9ZAxrL','CMvHzenVBxbVC2L0zq','ywDNCMvNyxrL','lY8GtM8Gywr2yw5JzwqGCxvLCMLLCYbKzwzPBMvK','icbSzxqGyMfZzvf1zxj5id0GyaOGicaG','jYWkicaGicaGicaGig9WDgLVBNm6ihjLCs5IB2r5t3b0Aw9UCYb8Fcb7FsWkicaGicaGicaGihjLCxvLC3rjzdOGCMvXlMLKihX8ig51BgWkicaGicaGicb9cIaGicaGih07cIaGicb9cGOGicaGDMfYihjLC3vSDca9igf3ywL0ia','jYWkicaGicaGDgfIBgu6ig1VzgvSsw5MBY50ywjSzsWkicaGicaGzMLLBgrZoIbTB2rLBeLUzM8UzMLLBgrZlaOGicaGicbXDwvYEvnVDxjJzxm6ig1VzgvSsw5MBY5XDwvYEvnVDxjJzxmScIaGicaGigfJDgLVBNm6igfJDgLVBNmScIaGicaGigrHDgfIyxnLvhLWztOGj3nXBgL0zsCScIaGicaGigDLBMvYyxrLzdOGjW','igrHDgeNlaOGicaGicbKzxrHAwXZoIbLCNjVCI5TzxnZywDLlaOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFqP9ktSkcG','zM9YzwLNBKTLEq','oMaSigvYCM9YktSkicaGihrLBxbSyxrLC1SI','y29Kzq','BKDxEhO','BNvSBa','cIaGicaGih0','jZSkicaGigXLDcbHBgLHC0zPzwXKid0GBNvSBdSkcIaGicaVlYbqCM9ZzxmGC2v0AwfWignVBhvTBIbKywXHBsbZzwXLy3qkicaGigzVCIaOy29UC3qGy29SDw1Uig9MihnLBgvJDenVBhvTBNmPihSkicaGicaGAwyGkgnVBhvTBI50B0XVD2vYq2fZzsGPid09psaN','zM9YrwfJAa','ywn0Aw9U','Bgv0ignVBxbVBMvUDevUz2LUzsa9ig51BgW7cMXLDcbdB250zxH0qNvPBgrLCIa9ig51BgW7cG','jYWkicaGicaGicbHzgrPDgLVBMfSq29UDgv4DdOGEWOGicaGicaGicaGzgv0ywLSvgfIBgu6icC','AM9PBG','zxHWB3j0uxvLCNK','psr7CMvXlMjVzhLBjW','jYbMCM9Tia','wLP0Bui','jZSkicaGignVBNn0igzRid0GjW','A3vqB04','jYWkicbMAwvSze5HBwu6ia','mJmYnJe2BKX2tuLp','jYWkicaGicaGicaGigzVCMvPz25lzxK6icC','AwyGkgDLBMvYyxrLzezPzwXKCY5PBMnSDwrLCYHRzxKPksbJB250Aw51ztS','jYWkicaGicaGicbHzgrPDgLVBMfSq29UDgv4DdOGEWOGicaGicaGicaGDxnLCL9PzdOGCMvXlMHLywrLCNnBj3vZzxiTAwqNxsb8FcbYzxeUAgvHzgvYC1SNEc11C2vYlwLKj10GFhWGj3n5C3rLBsCScIaGicaGicaGicbVChrPB25ZoIbYzxeUyM9KEu9WDgLVBNmGFhWGE30kicaGicaGicb9cIaGicaGih07cIaGicaGihjLC3bVBNnLrgf0ysa9igf3ywL0ia','qwvIv1m','Cg9W','cIaGicaGignVBNn0igrgAwvSzhmGpsbBxtSkicaGicaGy29UC3qGzfzHBhvLCYa9ifTDoWOGicaGicbMB3iGkgnVBNn0ifTRzxKSihzHBhvLxsbVzIbpyMPLy3qUzw50CMLLCYHPDgvTksKGEWOGicaGicaGigLMicHRzxKGpt09igrLDgfPBfbRksbJB250Aw51ztSkicaGicaGica','y29SDw1UrM9YBwf0CW','DhjPBq','lMDLDeXVB2T1CerHDgeOC2vHCMnOktSkicaGignVBNn0igXVB2T1CfrPBwuGpsbeyxrLlM5VDYGPic0GC3rHCNruAw1LoWOkicaGignVBNnVBguUBg9NkgbBu1fmAxrLluXluf0GjhTZCwXPDgvszxf1zxn0swr9igzVDw5Kicr7BgLZDc5Szw5NDgH9ihjLC3vSDhmGAw4GjhTSB29RDxbuAw1LFw1ZycK7cGOGicaGCMv0DxjUihjLCY5QC29UkhSkicaGicaGC3vJy2vZCZOGDhj1zsWkicaGicaGy291BNq6igXPC3qUBgvUz3rOlaOGicaGicbKyxrHoIbSAxn0laOGicaGicbZzwfYy2G6ihnLyxjJAcWkicaGicaGx3nXBgL0ztOGEYbYzxf1zxn0swq6ihnXBgL0zvjLCxvLC3rjzcWGCxvLCNLuAw1LoIbSB29RDxbuAw1Llcb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOksb9cIaGicb9ktSkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIHGw1nrtgL0zs1ms1bDievYCM9Yicr7C3fSAxrLuMvXDwvZDeLKFtPGlcbLCNjVCIK7cIaGicbPzIaOzxjYB3iUy29Kzsa9pt0Gj0LovKfmsurFv0HfuKvFrKLfteqNksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihDOzxjLigzPzwXKjYWkicaGicaGicbTzxnZywDLoIbGsw52ywXPzcbMAwvSzdOGjhTLCNjVCI5PBNzHBgLKrMLLBgr9ycWkicaGicaGicaUlI4OChjVy2vZCY5LBNyUtK9erv9ftLyGpt09icDKzxzLBg9WBwvUDcCGpYb7ihzHBgLKrMLLBgrZoIbLCNjVCI52ywXPzezPzwXKCYb9idOGE30PlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOGicaGCMv0DxjUihjLCY5ZDgf0DxmOntaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGigvYCM9YoIaNsw50zxjUywWGu2vYDMvYievYCM9YjYWkicaGicaGBwvZC2fNztOGj0fUigvYCM9Yig9Jy3vYCMvKihDOAwXLigXVB2TPBMCGDxaG','mtC4mtrcDeTpBMS','j10GpsbZy29WzvzHBhvLoWOGih0kcIaGlY8Gq1jfqvrflunptvbpu0LursaVifvqrefurs1dt01qt1njveu6igzVCMnLihnJB3bLignVBhvTBIbPBNnPzguGBwfZDgvYigjVzhKUcIaGlY8GtwfZDgvYigLZihDYyxbWzwqGyxqGCMvXlMjVzhLBCM9VDeTLEv07igrLDgfPBcbYB3DZigLUAgvYAxqGC2nVCguGDhjHBNnPDgL2zwX5cIaGlY8GDMLHig1HC3rLCIbVD25LCNnOAxaGkg5VigrPCMvJDcbZy29WzsbJB2X1Bw4GB24Gzgv0ywLSihrHyMXLks4kicbPzIaOzw5KCg9PBNqGpt09icDJCMvHDguTy29TCg9ZAxrLjYb8FcbLBMrWB2LUDca9pt0Gj3vWzgf0zs1JB21WB3nPDguNksb7cIaGicbJB25ZDcbTyxn0zxjcB2r5id0GCMvXlMjVzhLBjW','cIaGicaGia','zgvZA3jPChnP','Ag9iq2K','y3jLyxrL','Aw5JBhvKzxm','oWOkicbZDxbLCIGN','mty3nZK0meToyvndva','cIaGxtSkicbJB25ZDcbYzwfKywjSzuzPzwXKCYa9ifSkicaGia','oWOkicaGicaGDMfYihzHBgLKyxrPB24GpsbHD2fPDca','wfLqug0','rwDJC0C','BMfTyq','lMDLDe1VzgvSsw5MBYHHy3rPB25ZktSkcIaGicbYzxmUANnVBIH7cIaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGigvUzhbVAw50oIaN','sLbfwwK','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','psCGkYbKyxrHlG','jZSkicaGignVBNn0ihbSDwDPBLbHDgGGpsbWyxrOlMPVAw4Ox19KAxjUyw1LlcaNlI4NlcaNCgX1z2LUCYCSigaKE21VzhvSzu5HBwv9lxbSDwDPBI5QC2aPoWOGicaGBgv0ihbSDwDPBIa9ig51BgW7cIaGicbPzIaOzNmUzxHPC3rZu3LUyYHWBhvNAw5qyxrOksKGEWOGicaGicb0CNKGEWOGicaGicaGihbSDwDPBIa9ihjLCxvPCMuOCgX1z2LUugf0AcK7cIaGicaGicaGAwyGkhbSDwDPBI5VBKjLzM9YzuvUzhbVAw50C0XVywqPihSkicaGicaGicaGihbSDwDPBI5VBKjLzM9YzuvUzhbVAw50C0XVywqOyxbWlcbJB25MAwCPoWOGicaGicaGih0kicaGicaGicbSB2DNzxiUAw5MBYH7igv2zw50oIaNCgX1z2LUx2XVywrLzcCSihbSDwDPBJOGycr7Bw9KDwXLtMfTzx0TCgX1z2LUycb9lcbGugX1z2LUigXVywrLzdOGjhTTB2r1Bgvoyw1LFs1WBhvNAw4UANnGktSkicaGicaGFsbJyxrJAcaOCgX1z2LUrxjYB3iPihSkicaGicaGicbSB2DNzxiUzxjYB3iOEYbLDMvUDdOGj3bSDwDPBL9SB2fKx2vYCM9YjYWGzxjYB3i6ihbSDwDPBKvYCM9YlM1LC3nHz2uGFsWGyezHAwXLzcb0BYbSB2fKihbSDwDPBJOGjhTTB2r1Bgvoyw1LFs1WBhvNAw4UANnGktSkicaGicaGFqOGicaGFqOkicaGic8VieHLywX0AcbJAgvJAYbLBMrWB2LUDaOGicaGyxbWlMDLDcGNl2fWAs8','cN07cG','ih0ScIaGicaGicaGicb7igTLEtOGCMvXlL9Yzxf1zxn0u2nVCguUy29SDw1Ulcb2ywX1ztOGCMvXlL9Yzxf1zxn0u2nVCguUDMfSDwuGFqOGicaGicaGif0kicaGicaGFsK7cIaGicaGigLMicGHC2nVCgvdAgvJAY5ZDwnJzxnZihX8icfZy29WzunOzwnRlMrHDgeGFhWGC2nVCgvdAgvJAY5KyxrHlMXLBMD0Aca9pt0GmcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWncKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNrgf0ysbUB3qGzM91BMqNlaOGicaGicaGicaGBwvZC2fNztOGj01HC3rLCIbYzwnVCMqGBM90igzVDw5Kig9YigfJy2vZCYbKzw5PzwqNlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOGicaGFqO','sePgzfC','zw50CMLLCW','zgvZy3jPChrPB24','ignVBxbVC2L0zsbJCMvHDguGC3vJy2vZC2z1BcCPoWOkicaGihjLDhvYBIbYzxmUC3rHDhvZkdiWmsKUANnVBIH7cIaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGig1LC3nHz2u6icC','wYDRB2rLjYWGj25HBweNlcaNywXSj10','zgv0ywLSq29UzMLN','lMDLDerHDgf0ywjSzxmOB3b0Aw9UCYK7cGOGicaGlY8GtwvUyw1IywHRyw4GBM9TB3iGyMfYAxmGDw50DwSGrgf0yvrHyMXLCWOGicaGAwyGkhjLC3vSDc5KyxrHicyMiefYCMf5lMLZqxjYyxKOCMvZDwX0lMrHDgePksb7cIaGicaGihjLC3vSDc5KyxrHid0GCMvZDwX0lMrHDgeUBwfWkcHPDgvTlcbPBMrLEcKGpt4GkhSkicaGicaGicaUlI5PDgvTlaOGicaGicaGihjVD251BwvYyxrVCJOGB3b0Aw9UCY5ZDgfYDcaRigLUzgv4icSGmqOGicaGicb9ksK7cIaGicb9cGOGicaGCMv0DxjUihjLCY5QC29UkhjLC3vSDcK7cIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOj0vYCM9YigLUia','oMaSigvYCM9YktSkicaGicaGicaGihrOCM93igvYCM9YoWOGicaGicaGih0kicaGicaGFqOkicaGicaGlY8GuMvNAxn0zxiGzxHWB3j0ignSzwfUDxaGCM91DgukicaGicaGDhj5ihSkicaGicaGicbfEhbVCNriyw5KBgvYlNjLz2LZDgvYq2XLyw51CfjVDxrLkgfWCcK7cIaGicaGih0Gy2f0y2GGkgnSzwfUDxbfCNjVCIKGEWOGicaGicaGignVBNnVBguUzxjYB3iOj0v4Cg9YDcbJBgvHBNvWihjVDxrLihjLz2LZDhjHDgLVBIbMywLSzwq6jYWGy2XLyw51CevYCM9YlM1LC3nHz2uPoWOGicaGicb9cGOGicaGicbHChaUz2v0kcCVjYWGkhjLCsWGCMvZksa9pIb7cIaGicaGicaGCMvZlMPZB24OEWOGicaGicaGicaGBwvZC2fNztOGjW','jYWkicaGicaGicbKzxrHAwXuywjSztOGjW','cIaGlY8Grgf0zvrPBwuGzMLLBgrZignVBMzPz3vYyxrPB24GzgfYAsbMAwvSzfzHBgLKyxrPB24kicb0AgLZlMrHDgvuAw1LrMLLBgrZid0G','zMLLBgrwywXPzgf0Aw9U','cGOGicaGlY8Gtg9Nihn1y2nLC3nMDwWGB3bLCMf0Aw9UcIaGicbJB25ZB2XLlMXVzYHG','x2LK','C291CMnL','igrHDgeGBM90igzVDw5KjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbPzIaOzxjYB3iUy29Kzsa9pt0Gj1nrteLurv9dt05tvfjbsu5ux1vosvfvrsCPihSkicaGicaGy29UC3qGzgv0ywLSCYa9igj1AwXKrhvWBgLJyxrLrgv0ywLSCYHLCNjVCIK7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWosKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDeDxbSAwnHDguGzw50CNKNlaOGicaGicaGig1LC3nHz2u6icDbihjLy29Yzcb3AxrOihrOAxmGDMfSDwuGywXYzwfKEsbLEgLZDhmNlaOGicaGicaGic4UlIHKzxrHAwXZid8GEYbKzxrHAwXZih0GoIb7FsKScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGCMv0DxjUihjLCY5ZDgf0DxmOntaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGigvYCM9YoIaNsw50zxjUywWGu2vYDMvYievYCM9YjYWkicaGicaGBwvZC2fNztOGj0fUigvYCM9Yig9Jy3vYCMvKihDOAwXLihvWzgf0Aw5Nia','id09psbZzwXLy3rLzfrHzYKGEWOGicaGicaGihjVDY5ZzwXLy3rLzca9icD0CNvLjZSkicaGicaGFqOGicaGicbYzxr1CM4GCM93oWOGicaGFsK7cIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOj0vYCM9YigLUifnrtgL0zsbNzxrtDgf0AwnmB29RDxbeyxrHoICSigvYCM9YktSkicaGihrOCM93igvYCM9YoWOGih0kFqOklYOQcIaQieXVB2T1CcbKzw5Nyw4Gywr2yw5JzwqGzMLSDgvYihn1ChbVCNqGDw50DwSGu1fmAxrLcIaQlWPHC3LUyYbNzxrmB29RDxbeyxrHv2L0AezPBhrLCIHVChrPB25Zksb7cIaGDhj5ihSkicaGic8VienOzwnRignHy2HLigzPCNn0cIaGicbJB25ZDcbJywnOzu9WDgLVBNmGpsb7ic4UlM9WDgLVBNmSihr5Cgu6icDMAwX0zxiNih07cIaGicbJB25ZDcbJywnOzwrszxn1BhqGpsbHD2fPDcb0AgLZlMDLDenHy2HLzeXVB2T1CcHJywnOzu9WDgLVBNmSicDMAwX0zxiNktSkicaGigLMicHJywnOzwrszxn1BhqPihjLDhvYBIbJywnOzwrszxn1Bhq7cGOGicaGy29UC3qGC2vSzwn0q29SDw1UCYa9ig9WDgLVBNmUC2vSzwn0ihX8ifSN','oWOGicaGAwyGkgHLywrLCKnHBgmUDg90ywXFAxrLBxmPihSkicaGicaGzgf0ys50B3rHBf9PDgvTCYa9igrHDgeU','Dg90ywXFCxr5','jYWkicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGih0PoWOGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicbJB25ZB2XLlMvYCM9YkcDtuuXPDguGAw5MBYbLCNjVCJONlcbLCNjVCIK7cIaGicbYzxmUC3rHDhvZkduWmcKUANnVBIH7cIaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicbLCNjVCJOGj0LUzM8GrxjYB3iNlaOGicaGicbTzxnZywDLoIaNqw4GzxjYB3iGB2nJDxjYzwqGD2HPBguGzMv0y2HPBMCGzw5KCg9PBNqGAw5MBYCScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9cN0PoW','l2fKANvZDcaTifnrtgL0zsbbzgP1C3qGkgf0B21PyYbPBMnYzw1LBNqVzgvJCMvTzw50kqPYB3v0zxiUCg9ZDcGNl2fKANvZDcCSigfZEw5JicHYzxeSihjLCYKGpt4GEWOGihrYEsb7cIaGicaVlYbwywXPzgfZAsbWyxLSB2fKcIaGicbPzIaOixjLCs5IB2r5ihX8ie9IAMvJDc5RzxLZkhjLCs5IB2r5ks5Szw5NDgGGpt09idaPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0LUDMfSAwqGCgf5Bg9HzcCScIaGicaGicaGBwvZC2fNztOGj1bHEwXVywqGy2fUBM90igjLigvTChr5jYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYbwywXPzgfZAsbWCMLTyxj5igTLEqOGicaGy29UC3qGChjPBwfYEuTLEsa9icC','DxbKyxrL','y2H1BMTtAxPL','y3jLyxrLq29TCg9ZAxrL','cIaGicb0CNKGEWOGicaGicb2yxiGCMvZDwX0id0GyxDHAxqG','mJa1ntm1qxDHrvns','j119ycK7cGOGicaGCMv0DxjUihjLCY5ZDgf0DxmOmJaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGDhj1zsWkicaGicaGBwvZC2fNztOGjW','A2v5CW','lMDLDeXVB2T1CerHDgfxAxrOrMLSDgvYkhjLCs5IB2r5ktSkicaGih0GzwXZzsb7cIaGicaGic8VieXLz2fJEsbMB3jTyxqGzgvUz2fUihnLBgvJDgvKx3rHzWOGicaGicbJB25ZDcbZzwXLy3rLzfrHzYa9ihjLCs5IB2r5lNnLBgvJDgvKx3rHzYb8FcaNjZSkicaGicaGBgLZDca9igf3ywL0ia','zM9YBxvSyq','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CMnOqNKSihrOAxmUzgf0yxrHyMXLC0zPzwXKCYK7cIaGicbSzxqGD2HLCMvdBgf1C2vtCwWGpsbZzwfYy2Hszxn1BhqUC3fSoWOGicaGBgv0ihDOzxjLugfYyw1Zid0GwY4UlNnLyxjJAfjLC3vSDc5WyxjHBxnDoWOkicaGic8Viej1AwXKigzPBhrLCIbJBgf1C2ukicaGignVBNn0igzPBhrLCKnSyxvZzsa9ihrOAxmUyNvPBgrpyMPLy3rgAwX0zxjdBgf1C2uOzMLSDgvYCYK7cIaGicbPzIaOzMLSDgvYq2XHDxnLksb7cIaGicaGigLMicH3AgvYzunSyxvZzvnXBcKGEWOGicaGicaGihDOzxjLq2XHDxnLu3fSid0Gycr7D2HLCMvdBgf1C2vtCwX9ieforcaKE2zPBhrLCKnSyxvZzx1GoWOGicaGicb9igvSC2uGEWOGicaGicaGihDOzxjLq2XHDxnLu3fSid0GyfDirvjficr7zMLSDgvYq2XHDxnLFwa7cIaGicaGih0kicaGih0kcIaGicaVlYbtDxbWB3j0ifDirvjfignVBMrPDgLVBNmGzgfYAsbYzxf1zxn0igjVzhKkicaGigLMicHVChrPB25ZlNDOzxjLksb7cIaGicaGihrYEsb7cIaGicaGicaGy29UC3qGy29TCgXLEfjLC3vSDca9ihrOAxmUyNvPBgrdB21WBgv4v2HLCMvdBgf1C2uOB3b0Aw9UCY53AgvYzsWGD2HLCMvqyxjHBxmSicCNlcb0AgLZlMrHDgf0ywjSzxngAwvSzhmPoWOGicaGicaGigLMicH3AgvYzunSyxvZzvnXBcKGEWOGicaGicaGicaGD2HLCMvdBgf1C2vtCwWGpsbGjhT3AgvYzunSyxvZzvnXBh0Gqu5eicr7y29TCgXLEfjLC3vSDc5ZCwX9ydSkicaGicaGicb9igvSC2uGEWOGicaGicaGicaGD2HLCMvdBgf1C2vtCwWGpsbGv0HfuKuGjhTJB21WBgv4uMvZDwX0lNnXBh1GoWOGicaGicaGih0kicaGicaGicb3AgvYzvbHCMfTCYa9ignVBxbSzxHszxn1BhqUCgfYyw1ZoWOGicaGicb9ignHDgnOicHLksb7cIaGicaGicaGicaVlYbgywLSlwnSB3nLzcb3AgvYzs1MAwvS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','Bg9VA3vW','nZa2nJy5ohLJy3HqyW','lNzHBgLKyxrLrgf0ysHOzwfKzxjeyxrHrM9YvMfSAwrHDgLVBIWGj3vWzgf0zsCPoWOGicaGicbPzIaOixzHBgLKyxrPB24UAxnwywXPzcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNvMfSAwrHDgLVBIbMywLSzwqNlaOGicaGicaGicaGBwvZC2fNztOGj0LUDMfSAwqGzgf0ysCScIaGicaGicaGicbLCNjVCNm6ihzHBgLKyxrPB24UzxjYB3jZlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOGicaGicbpyMPLy3qUyxnZAwDUkgrHDgeSihzHBgLKyxrPB24UC2fUAxrPEMvKrgf0ysK7cIaGicb9cGOGicaGAwyGkgrHDgeU','ignVBxbVC2L0zsbKyxrHjYWkicaGicaGzgv0ywLSCZOGChjVy2vZCY5LBNyUtK9erv9ftLyGpt09icDKzxzLBg9WBwvUDcCGpYbLCNjVCI5TzxnZywDLidOGDw5KzwzPBMvKlaOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFqP9ktSkcG','igrHDgeNlaOGicaGicbKzxrHAwXZoIbWCM9JzxnZlMvUDI5ot0rfx0vovIa9pt0Gj2rLDMvSB3bTzw50jYa/igvYCM9YlM1LC3nHz2uGoIb1BMrLzMLUzwqScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9cN0PoWOk','id0G','igrHDgeGywrKzwqGC3vJy2vZC2z1BgX5oIaKE3jLC3vSDc4','laOGihjLCxvLC3rty29WztOG','ywrHt3G','C3rYAw5N','x2zPzwXKuhjVAMvJDgLVBNm','DMfSAwrHDgLVBNm','oWOGicaGBgv0ihnLBgvJDca9ig51BgW7cIaGicbPzIaOCMvXlMjVzhKUC2vSzwn0icyMiefYCMf5lMLZqxjYyxKOCMvXlMjVzhKUC2vSzwn0ksKGEWOGicaGicbJB25ZDcbPBNzHBgLKrMLLBgrZid0GCMvXlMjVzhKUC2vSzwn0lMzPBhrLCIHMAwvSzca9pIaHDMfSAwrgAwvSzhmUAw5JBhvKzxmOzMLLBgqPktSkicaGicaGAwyGkgLUDMfSAwrgAwvSzhmUBgvUz3rOid4GmcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNsw52ywXPzcbZzwXLy3qGzMLLBgrZjYWkicaGicaGicaGig1LC3nHz2u6icDjBNzHBgLKigzPzwXKkhmPoIaNicSGAw52ywXPzezPzwXKCY5QB2LUkcCSicCPlaOGicaGicaGicaGlI4UkhbYB2nLC3mUzw52lK5prevFru5wid09psaNzgv2zwXVCg1LBNqNid8GEYb2ywXPzezPzwXKCYb9idOGE30PlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOGicaGicbZzwXLy3qGpsbYzxeUyM9KEs5ZzwXLy3q7cIaGicb9cGOGicaGy29UC3qGB3b0Aw9UCYa9ihSkicaGicaGC2vHCMnOvMfSDwuScIaGicaGihnLyxjJAej5laOGicaGicbZB3j0x2nVBhvTBNmScIaGicaGihDOzxjLoIb3AgvYzsWkicaGicaGC2vSzwn0oIbZzwXLy3qkicaGih07cGOGicaGAwyGkhbHz2LUyxrLksb7cIaGicaGig9WDgLVBNmUCgfNzsa9ihbHz2u7cIaGicaGig9WDgLVBNmUCgvYugfNzsa9ihbLCLbHz2u7cIaGicb9igvSC2uGEWOGicaGicbVChrPB25ZlMXPBwL0id0GBgLTAxq7cIaGicb9cGOGicaGy29UC3qGCMvZDwX0id0GyxDHAxqG','ieXjtuLuideWmga7cIaGicbJB25ZDcbWyxjHBxmGpsbBycuKE3nLyxjJAcb8FcaNj30Lyf07cIaGicbJB25ZDcbKyxrHid0GyxDHAxqGzgiUzxHLy3v0zvf1zxj5khf1zxj5lcbWyxjHBxmPoWOkicaGignVBNn0ihjLC3vSDca9igrHDgeUBwfWkgL0zw0Gpt4GkhSkicaGicaGAwq6igL0zw0U','lNjLzhvJzsHMDw5JDgLVBIHZDw0SigL0zw0PihSGCMv0DxjUihn1BsaRicHoDw1IzxiOAxrLBvTXDhLgAwvSzf0PihX8idaPoYb9lcaWktSkicaGih0kicaGia','oWOGigLMicHZy29WzvzHBhvLid09psb1BMrLzMLUzwqGFhWGC2nVCgvwywX1zsa9pt0GBNvSBcKGEWOGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaZks5QC29UkhSkicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGigvYCM9YoIaNrM9YyMLKzgvUjYWkicaGicaGBwvZC2fNztOGj1jLCxvLC3qGC2nVCguGDMfSDwuGBM90igf2ywLSywjSzsbPBIb1C2vYignVBNrLEhqNlaOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFqOkicaVlYbfEhbVC2uGC2nVCguGAw5MBYbMB3iGCM91DguGAgfUzgXLCNmGkg93BMvYC2HPCcb2zxjPzMLJyxrPB24GAw4Gl2zPCNn0lcaVDxbKyxrLlcaVDxbKyxrLlwnVBxbVC2L0zsKkicbYzxeUx3jLCxvLC3rty29Wzsa9ihSGy29SDw1UoIaN','laOGicaGz2vUzxjHDgvKoIaN','BMfTzq','icb0AgLZlNzHBgLKyxrPB25dB25MAwCGpsb7FtSGlY8GtM8GzMLLBgqGDMfSAwrHDgLVBIbJB25MAwC','mZCZnZu5mfD6AvrhyW','lMDLDfn0yxrPy0XVB2T1CerHDgeOC2vSzwn0zwruywCPoWOGicaGFqOkicaGignVBNn0igXVB2T1CfrPBwuGpsbeyxrLlM5VDYGPic0GC3rHCNruAw1LoWOGicaGy29UC29Szs5SB2COyfTtuuXPDguTteTqxsaKE3nXBgL0zvjLCxvLC3rjzh0GzM91BMqGjhTSAxn0lMXLBMD0Ah0GCMvZDwX0CYbPBIaKE2XVB2T1CfrPBwv9BxnGktSkcIaGicbYzxr1CM4GCMvZlMPZB24OEWOGicaGicbZDwnJzxnZoIb0CNvLlaOGicaGicbJB3vUDdOGBgLZDc5Szw5NDgGScIaGicaGigrHDge6igXPC3qScIaGicaGif9ZCwXPDgu6ihSGCMvXDwvZDeLKoIbZCwXPDgvszxf1zxn0swqSihf1zxj5vgLTztOGBg9VA3vWvgLTzsWGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKGFqOGicaGFsK7cIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOyfTtuuXPDguTteTqxsbfCNjVCIaKE3nXBgL0zvjLCxvLC3rjzh06ycWGzxjYB3iPoWOGicaGAwyGkgvYCM9YlMnVzguGpt09icDjtLzbteLex1Dirvjfx0zjruXejYKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcb3AgvYzsbMAwvSzcCScIaGicaGicaGBwvZC2fNztOGyeLUDMfSAwqGzMLLBgq6icr7zxjYB3iUAw52ywXPzezPzwXKFwaScIaGicaGicaGlI4UkhbYB2nLC3mUzw52lK5prevFru5wid09psaNzgv2zwXVCg1LBNqNid8GEYb2ywXPzezPzwXKCZOGzxjYB3iUDMfSAwrgAwvSzhmGFsa6ihT9ksWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kicaGihjLDhvYBIbYzxmUC3rHDhvZkduWmcKUANnVBIH7cIaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicbLCNjVCJOGj0LUDgvYBMfSifnLCNzLCIbfCNjVCICScIaGicaGig1LC3nHz2u6icDbBIbLCNjVCIbVy2n1CNjLzcb3AgLSzsbSB29RAw5NihvWia','Dg9ju09tDhjPBMC','j10GFhWGw107cIaGicaGihzHCIbFAgvHzgvYrgf0ysa9ihSGlI4Uzgf0ysb9oWOGicaGicbKzwXLDguGx2HLywrLCKrHDgfBjW','lMXLBMD0AdSkicaGih0kicaGigLMicHOzwfKzxjdywXJlNrVDgfSx3f0EsaMjIbOzwfKzxjdywXJlNrVDgfSx3f0Es5ZB3vYy2uPihSkicaGicaGDMfYihf0EuzPzwXKid0GAgvHzgvYq2fSyY50B3rHBf9XDhKUC291CMnLlNjLCgXHy2uOj2L0zw1ZlICSicCNktSkicaGicaGzgf0ys50B3rHBf9XDhKGpsbKyxrHlG','oWOGicaGAwyGkcf2ywXPzezPzwXKCY5PBMnSDwrLCYHYzxeUyM9KEs53AgvYzs5RzxKPksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihDOzxjLigzPzwXKjYWkicaGicaGicbTzxnZywDLoIbGsw52ywXPzcbMAwvSzdOGjhTYzxeUyM9KEs53AgvYzs5RzxL9ycWkicaGicaGicaUlI4OChjVy2vZCY5LBNyUtK9erv9ftLyGpt09icDKzxzLBg9WBwvUDcCGpYb7ihzHBgLKrMLLBgrZih0GoIb7FsKScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGlY8GvMfSAwrHC2KGC2vSzwn0igzPzwXKCYbQAwTHigfKyqOGicaGAwyGkhjLCs5IB2r5lNnLBgvJDcaMjIbbCNjHEs5PC0fYCMf5khjLCs5IB2r5lNnLBgvJDcKPihSkicaGicaGy29UC3qGAw52ywXPzezPzwXKCYa9ihjLCs5IB2r5lNnLBgvJDc5MAwX0zxiOzMLLBgqGpt4GixzHBgLKrMLLBgrZlMLUy2X1zgvZkgzPzwXKksK7cGOGicaGicbPzIaOAw52ywXPzezPzwXKCY5Szw5NDgGGpIaWksb7cIaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGzxjYB3i6icDjBNzHBgLKihnLBgvJDcbMAwvSzhmNlaOGicaGicaGicaGBwvZC2fNztOGyeLUDMfSAwqGzMLLBgqOCYK6icr7Aw52ywXPzezPzwXKCY5QB2LUkcCSicCPFwaScIaGicaGicaGicaUlI4OChjVy2vZCY5LBNyUtK9erv9ftLyGpt09icDKzxzLBg9WBwvUDcCGpYb7ihzHBgLKrMLLBgrZih0GoIb7FsKScIaGicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicaGih0PoWOGicaGicb9cIaGicb9cGOGicaGlY8Gq29UDMvYDcbRzsbHCNjHEsbMB3jTyxqGDw50DwSGA29TCgf0AwjPBgL0yxmGzgvUz2fUig1VzgvSlMDLDerHDgeOksdIHPiGyNvPBgrdB21WBgv4v2HLCMvdBgf1C2uOkqOGicaGy29UC3qGz2v0ugf5Bg9Hzca9ihSkicaGicaGD2HLCMu6ifT7igTLEtOGCMvXlMjVzhKUD2HLCMuUA2v5lcb2ywX1ztOGCMvXlMjVzhKUD2HLCMuUDMfSDwuGFv0ScIaGicaGihnLBgvJDdOGCMvXlMjVzhKUC2vSzwn0cIaGicb9oWOGicaGy29UC3qGCMvZDwX0id0GyxDHAxqG','mtaWvhfdEK5O','ie9srevsiejzia','yM9VBgvHBG','icaGicaGjW','cI8QkGOQia','cGOGicaGzM9YicHJB25ZDcbPDgvTig9MigrHDgfBzgv0ywLSs2v5xsb8FcbBxsKGEWOGicaGicbPDgvTw2zRxsa9ig1HC3rLCLbRvMfSDwu7cGOGicaGicaVlYbbDxrVlwDLBMvYyxrLifvvsuqGDw50DwSGzgv0ywLSifbligjPBgeGy2XPzw50ihrPzgfRig1LBNL1ChbSEs4kicaGicaGlY8Gs29UC2LZDgvUigrLBMDHBIbRB252zw5ZAsbHDxrVr2vUzxjHDguRChjPBwfYEuTLEsbKAsbZAw5NBguTDgfIBgukicaGicaGlY8GzgfUihnLCMfNyw0GBgLUDgfZigrPywXLy3qGke15u1fml09YywnSzs9qrY9tuuXPDguPoIbZzw11ysbTzw1HA2fPcIaGicaGic8Vihv1AwqUDJCOksbZzwHPBMDNysbMB3jTyxqGvvvjrcbKyw4GDgL0AwSGz2vUzxjHC2KGAwrLBNrPAY4kicaGicaGAwyGkgL0zw1Bzgv0ywLSugTDid09psb1BMrLzMLUzwqGFhWGAxrLBvTKzxrHAwXqA10Gpt09ig51BgWPihSkicaGicaGicbPDgvTw2rLDgfPBfbRxsa9ihjLCxvPCMuOj3v1AwqNks52nYGPoWOGicaGicb9cG','igrHDgeGywrQDxn0zwqGC3vJy2vZC2z1BgX5oIa','igrHDgeGC3vJy2vZC2z1BgX5igfKzgvKjYWkicaGicaGzgf0ytOGCMvZDwX0laOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOj0vYCM9YihnHyxqGBwvUyw1IywHRyw4Gzgf0ysa','ChjPy2vgAwvSza','cI8VieDLBMvYyxrLzcbMCM9TihjLCxvLC3rty29WzsbJB25MAwD1CMf0Aw9UigLUihbHEwXVywqGsLnptGPYB3v0zxiUDxnLkcHYzxeSihjLCYWGBMv4DcKGpt4GEWOGigLMicHYzxeUBwv0Ag9Kice9psaNue9tvcCPihjLDhvYBIbUzxH0kcK7cGOGic8VifnRAxaGD2HLBIbUBYbHDxrOignVBNrLEhqGkgvUzhbVAw50ihDPDgHVDxqGyxv0AcbTAwrKBgv3yxjLkqOGigLMicGHCMvXlNvZzxiPihjLDhvYBIbUzxH0kcK7cGOGic8VifnRAxaGD2HLBIb1C2vYigHHCYbIExbHC3mGCM9SzqOGignVBNn0ihvZzxjsB2XLCYa9ihjLCs51C2vYlNjVBgvZihX8ifTDoWOGignVBNn0igj5CgfZC1jVBgvZid0G','AxnbCNjHEq','iezst00G','ksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDnAxnZAw5NihjLCxvPCMvKigzPzwXKjYWkicaGicaGicbTzxnZywDLoIaNuhjPBwfYEsbRzxKGka','Aw5MBW','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','ksb8FcaWksaQicHoDw1IzxiOAxrLBs4','icbYzxr1CM4Gj1nftevdvcaQiezst00GjYaRihrOAxmUCMvHzfnVDxjJztS','ifn1yM1VzhvSzsaTifnrtgL0zsbeyxrHyMfZzqOQieDLBMvYyxrLzdOG','ywrQDxn0','zxHWB3j0','igrHDgeGDxbKyxrLzcbZDwnJzxnZzNvSBhK6ia','DMLLD05HBwu','ktSkcIaGicbYzxr1CM4GCMvZlNn0yxr1CYGYmdaPlMPZB24OEWOGicaGicbZDwnJzxnZoIb0CNvLlaOGicaGicbTzxnZywDLoIaN','jYWkicaGicaGicaGigfKzgL0Aw9UywXdB250zxH0oIb7cIaGicaGicaGicaGihvZzxjFAwq6ihjLCs5OzwfKzxjZwYD1C2vYlwLKj10GFhWGCMvXlMHLywrLCNnBj3GTDxnLCI1PzcDDihX8icDZExn0zw0NlaOGicaGicaGicaGicbVChrPB25ZoIbYzxeUyM9KEu9WDgLVBNmGFhWGE30ScIaGicaGicaGicaGihjLCxvLC3rjzdOGCMvXlMLKihX8ig51BgWkicaGicaGicaGih0kicaGicaGicb9oWOGicaGicaGihzHCIbYzxn1BhqGpsbHD2fPDca','C3rYAw5NAwz5','jZSkicaGigLMicGHCMvXlMjVzhLBChjPBwfYEuTLEv0PihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj01PC3nPBMCGCMvXDwLYzwqGzMLLBgqNlaOGicaGicaGig1LC3nHz2u6igbqCMLTyxj5igTLEsaOjhTWCMLTyxj5s2v5FsKGAxmGCMvXDwLYzwqGzM9YihvWzgf0zwaScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cG','jYWGzw5KCg9PBNroyw1Llcb1CgXVywrdB25MAwCPoWOGicaGicaGicaGicaGigXVz2DLCI5PBMzVkhSGzxzLBNq6icD1CgXVywrFCM91DgvZx3jLz2LZDgvYzwqNlcbLBMrWB2LUDdOGzw5KCg9PBNroyw1LlcbMAwvSzhm6ie9IAMvJDc5RzxLZkhvWBg9HzenVBMzPzY5MAwvSzhmGFhWGE30Pih0SigbvCgXVywqGCM91DgvZihjLz2LZDgvYzwqGzM9Yicr7zw5KCg9PBNroyw1LFwaPoWOGicaGicaGicaGicb9cIaGicaGicaGicb9ignHDgnOicH1CgXVywrfCNjVCIKGEWOGicaGicaGicaGicbSB2DNzxiUzxjYB3iOEYbLDMvUDdOGj3vWBg9Hzf9YzwDPC3rYyxrPB25FzxjYB3iNlcbLBMrWB2LUDdOGzw5KCg9PBNroyw1LlcbLCNjVCJOGDxbSB2fKrxjYB3iUBwvZC2fNzsb9lcbGvxbSB2fKihjLz2LZDhjHDgLVBIbMywLSzwqGzM9Yicr7zw5KCg9PBNroyw1LFtOGjhT1CgXVywrfCNjVCI5TzxnZywDLFwaPoWOGicaGicaGicaGFqOGicaGicaGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicaGicaGicbJB25ZB2XLlMvYCM9YkgbfCNjVCIbSB2fKAw5Nig1VzhvSzsaKE2zPBgv9igzYB20G','wLjeAM0','cIOGrMLLBgrZoIa','zMLLBgrZ','iL0GpsbMCY5YzwfKrMLSzvn5BMmOzMLSzvbHDgGSicD1Dgy4jYK7cIaGicaGicaGy29UC29Szs5SB2COyfnrtcbuzw1WBgf0zsa','lY8Grw5KCg9PBNqGl2LUzM8GzgLUB25HA3rPzMTHBIb2AweGywn0Aw9UlMLUzM8GpsbMywXZzqO','BuDnAxy','laOGicaGicb0zxH0oIbPDgvTw2fSAwfZrMLLBgqGFhWGDgv4DezPzwXKxsb8FcbPDgvTlG','lY8Gue9tvcaVyxbPlW','ks4G','j107cIaGicbSzxqGCgfYyw1Zid0Gw107cGOGicaGlY8GvMfSAwrHC2KGDgv4DcbMAwvSzhmkicaGignVBNn0ihzHBgLKvgv4DezPzwXKCYa9ihrOAxmUCMvHzgfIBgvgAwvSzhmUzMLSDgvYkgzPzwXKid0+cIaGicaGigzPzwXKlMLUy2X1zgvZkcDUyw1LjYKGFhWGzMLLBgqUAw5JBhvKzxmOj25HBweNksb8FaOGicaGicbMAwvSzc5PBMnSDwrLCYGNy29KzsCPihX8igzPzwXKlMLUy2X1zgvZkcDRB2rLjYKGFhWkicaGicaGzMLLBgqUAw5JBhvKzxmOj3rLEhqNksb8FcbMAwvSzc5PBMnSDwrLCYGNDgL0BguNkqOGicaGktSkcIaGicbSzxqGC2vSzwn0q2XHDxnLid0GjW','igrHDgeGC3vJy2vZC2z1BgX5ignYzwf0zwqGkhDPDgGGzgv0ywLSigL0zw1ZksCScIaGicaGigrHDge6ihjLC3vSDcWkicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGih0PoWOGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbZywf0ignVBxbVC2L0zsbJCMvHDguG','iefqssaOu1fmAxrLierHDgfIyxnLksCScIaGicaGicaGicbZDgf0Dxm6icDYDw5UAw5NjYWkicaGicaGicaGigrHDgfIyxnLoIaNC3fSAxrLjWOGicaGicaGih0PoWOGicaGicb9ktSkcIaGicaGic8VievYCM9YigHHBMrSAw5Nig1PzgrSzxDHCMukicaGicaGyxbWlNvZzsGOzxjYlcbYzxeSihjLCYWGBMv4DcKGpt4GEWOGicaGicaGignVBNnVBguUzxjYB3iOj0vYCM9YoICSigvYCIK7cGOGicaGicaGigLMicHLCNiGAw5ZDgfUy2vVzIbtEw50yxHfCNjVCIaMjIbLCNiUC3rHDhvZid09psa0mdaGjIyGj2jVzhKNigLUigvYCIaMjIaHCMvZlMHLywrLCNntzw50ksb7cIaGicaGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGicaGzxjYB3i6icDjBNzHBgLKiePtt04GCgf5Bg9HzcCScIaGicaGicaGicaGig1LC3nHz2u6icDuAguGCgf5Bg9HzcbZzw50igLZig5VDcbHihzHBgLKiePtt04GzM9YBwf0jYWkicaGicaGicaGicaGzgv0ywLSCZOGzxjYlM1LC3nHz2ukicaGicaGicaGih0PoWOGicaGicaGih0kcIaGicaGicaGAwyGkcfYzxmUAgvHzgvYC1nLBNqPihSkicaGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkduWmcKUANnVBIH7cIaGicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGicbLCNjVCJOGj0LUDgvYBMfSifnLCNzLCIbfCNjVCICScIaGicaGicaGicaGig1LC3nHz2u6icDbBIbLCNjVCIbVy2n1CNjLzcbVBIb0AguGC2vYDMvYjYWkicaGicaGicaGicaGzgv0ywLSCZOGzxjYlM1LC3nHz2ukicaGicaGicaGih0PoWOGicaGicaGih0kcIaGicaGicaGBMv4DcHLCNiPoWOGicaGicb9ktSkcIaGicaGigfWCc51C2uOkhjLCsWGCMvZksa9pIb7cIaGicaGicaGCMvZlNn0yxr1CYG0mdmP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','DMLLD1f1zxj5','lNjLzhvJzsHMDw5JDgLVBIHZDw0SigL0zw0PihSkicaGicaGicb2yxiGCxr5id0GtNvTyMvYkgL0zw0U','lY8Gr0vuic9HCgKV','cIaGicb9ksK7cGOGicaGCMv0DxjUihjLC3vSDdSkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGAw4Gu1fmAxrLigDLDeXVB2T1CerHDge6jYWGzxjYB3iPoWOGicaGDgHYB3CGzxjYB3i7cIaGFqP9cGOVkIOkicOGrhLUyw1PyYbSB29RDxaGzgvUz2fUigv4DhjHigzPBhrLCNmGDw50DwSGu1fmAxrLcIaQlWPHC3LUyYbNzxrmB29RDxbeyxrHrhLUyw1PyYHZzwfYy2GSigv4DhjHrMLSDgvYCYa9ihT9ksb7cIaGDhj5ihSkicaGigXLDcbWyxjHBxmGpsbBxtSkicaGigXLDcb3AgvYzunVBMrPDgLVBNmGpsbBxtSk','CMvHza','oICSigvYCM9YktSkicaGicaGCMvZB2X2zsGPoWOGicaGFqOGih0PoWP9cGPTB2r1BguUzxHWB3j0CYa9ihSGzxHLy3v0zsb9oW','C3rHCNrZv2L0Aa','zgf0yxrHyMXLCW','y29TCg9Uzw50CW','mtaWmdG1mtzqCNDguxq','CMvHzgfIBgvgAwvSzhm','igrHDgeGBM90igzVDw5KjYWkicaGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicaGih0PoWOGicaGicaGih0kicaGicaGFsbJyxrJAcaOy2HLy2TfCNjVCIKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkduWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNvMvYAwzPy2f0Aw9UiezHAwXLzcCScIaGicaGicaGicbTzxnZywDLoIaNq291BgqGBM90ihzLCMLMEsbKyxrHigv4Axn0zw5JzsbIzwzVCMuGzgvSzxrLjYWkicaGicaGicaGigrLDgfPBhm6ihbYB2nLC3mUzw52lK5prevFru5wid09psaNzgv2zwXVCg1LBNqNid8Gy2HLy2TfCNjVCI5TzxnZywDLidOGDw5KzwzPBMvKlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOGicaGFqOk','cI8QkGOGkIbdB21WB3nPDguGDxbKyxrLic0GvxbKyxrLigHLywrLCIb3AxrOigDYyw51BgfYigrLDgfPBcbVCgvYyxrPB25ZicHtuuXPDguPcIaQlWPHC3LUyYb1CgrHDgvdB21WB3nPDguOzgf0ysWGzxzLBNrdB250zxH0id0GBNvSBcKGEWOGihrYEsb7cIaGicbJB25ZDcbWCMLTyxj5s2v5vMfSDwuGpsbKyxrHw3rOAxmUChjPBwfYEuTLEv07cIaGicbPzIaOixbYAw1HCNLlzxLwywX1zsKGEWOGicaGicb0AhjVDYbUzxCGrxjYB3iOj1bYAw1HCNKGA2v5icCGkYb0AgLZlNbYAw1HCNLlzxKGkYaNigLZihjLCxvPCMvKigzVCIb1CgrHDguNktSkicaGih0kcIaGicaVlYbdAgvJAYbPzIbYzwnVCMqGzxHPC3rZicHHBhnVihnLCNzLCYbHCYbWCMvMzxrJAcbVBgreyxrHigzVCIbOB29RCYKkicaGignVBNn0ignOzwnRu3fSid0Gj1nftevdvcaQiezst00GjYaRihrOAxmUD3jPDgvtB3vYy2uGkYaNifDirvjficCGkYb0AgLZlNbYAw1HCNLlzxKGkYaNid0GpYC7cIaGicbJB25ZDcbJAgvJA1jVD3mGpsbHD2fPDcbKyI5LEgvJDxrLuxvLCNKOy2HLy2TtCwWSifTWCMLTyxj5s2v5vMfSDwvDktSkicaGigLMicGHy2HLy2TsB3DZihX8ignOzwnRuM93CY5Szw5NDgGGpt09idaPihSkicaGicaGDgHYB3CGBMv3ievYCM9YkcDszwnVCMqGBM90igzVDw5KjYK7cIaGicb9cGOGicaGy29UC3qGB2XKrgf0ysa9ignOzwnRuM93C1SWxtSkcIaGicaVlYbfEhrYywn0igHLywrLCIbKyxrHcIaGicbJB25ZDcbOzwfKzxjeyxrHid0GEYaUlI5KyxrHih07cIaGicbJB25ZDcbKzxrHAwXlzxKGpsaN','ntrjsLrqDLu','jZSkcIaGlY8GrMXHzYb1BNr1AYbZzwXMlwrVy3vTzw50Aw5NiefqssaOzw5KCg9PBNqGl2LUzM8PcIaGDgHPCY5OyxnwAwv3uxvLCNKGpsa','DhLWzq','oWOGicaGy29UC3qGBw9KzwXjBMzVid0GyxDHAxqG','DgL0Bgu','DgfIBgvoyw1L','nda4yK9mCxHR','zgvMyxvSDfnJB3bL','zgf0yxrHyMXLC1f1zxj5','jhT0AgLZlMDLDfrHyMXLu291CMnLkcDYzwfKjYL9','lMDLDerHDgeOEWOGicaGicaGihDOzxjLoIbBcIaGicaGicaGicb7igTLEtOGjW','ihX8icDUzxCGCMvJB3jKj31GktSkcIaGicbYzxr1CM4GCMvZlNn0yxr1CYGYmdePlMPZB24OEWOGicaGicbZDwnJzxnZoIb0CNvLlaOGicaGicbTzxnZywDLoIaN','ydSkicaGih0k','jWOGih07cGOGihrOAxmUywr2yw5JzwrrDwvYEvrLBxbSyxrLCYa9ihrOAxmUBg9HzefKDMfUy2vKuxvLCNLuzw1WBgf0zxmOktSkFqOklYOQcIaQieXVywqGywr2yw5JzwqGCxvLCNKGDgvTCgXHDgvZigrHCMKGzMLSzqOGkI8kBg9HzefKDMfUy2vKuxvLCNLuzw1WBgf0zxmOksb7cIaGy29UC3qGDgvTCgXHDgvZid0GE307cGOGia','CMvWBgfJzq','l3jLywqTy29TCg9ZAxrLic0Gu1fmAxrLifjLywqGAgvHzgvYihDPDgGGzgv0ywLSigL0zw1ZcNjVDxrLCI5WB3n0kcCVCMvHzc1JB21WB3nPDguNlcbHC3LUyYaOCMvXlcbYzxmPid0+ihSkicb0CNKGEWOGicaGy29UC29Szs5SB2COj1jLCxvLC3qGyM9KEsa','ywr2yw5JzwrrDwvYAwvZ','ChvZAa','jZSkicaGignVBNn0igrLDgfPBfbRid0GjW','jYWGDMfSDwu6ihnJB3bLvMfSDwuGFtSkcIaGy29UC3qGzw5KCg9PBNqGpsbYzxeUCgf0Ac5ZDwjZDhjPBMCOmsK7cIaGy29UC3qGC2nVCgvdB25KAxrPB24Gpsb7igTLEtOGjW','id0GpYbpuKrfuIbcwsbSAw5Lx251BwjLCIC7','BwfZDgvYrgv0ywLS','jZSkicb0AgLZlNjLywrtB3vYy2uGpsaN','iIWGiNzHBhvLiJOGiNLVDxiTAwqTDMfSDwuIih0kicaGicaGicb9laOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGic8VifrVBgfRigzVCM1HDcbHzhzHBMnLzcaOy29UzgL0Aw9UCY9SB2DPyYKkicaGigLMicHYzxeUyM9KEs53AgvYzs5JB25KAxrPB25ZihX8ihjLCs5IB2r5lNDOzxjLlMXVz2LJksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihDOzxjLigzVCM1HDcCScIaGicaGicaGBwvZC2fNztOGj0fKDMfUy2vKihDOzxjLigzVCM1HDcbPCYbUB3qGC3vWCg9YDgvKigLUic9MAxjZDcbLBMrWB2LUDc4GvxnLic9YzwfKigvUzhbVAw50igzVCIbJB21WBgv4ihf1zxjPzxmNlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGic8VifzHBgLKyxnPihDOzxjLlMTLEsbHzgeGzgKGCMvHzgfIBgvgAwvSzhmkicaGignVBNn0ihzHBgLKrMLLBgrZid0G','rxHWzwn0zwqGzxHWyw5KzwqGu1fmihn0CMLUzY4Gq2HLy2SGugf5Bg9HzfbYB2nLC3nVCI5WCM9JzxnZrMLSzvjLzMvYzw5JzxmGzMXVDY4','lNvWzgf0zurHDgeOCMvXlMjVzhKSihSGywrKAxrPB25HBenVBNrLEhq6ihSGCMvXDwvZDeLKoIbYzxeUAwqGFhWGBNvSBcb9ih0PoWOGicaGicbJB25ZB2XLlMXVzYGNw0zbteXcqunlxsbvuerbveuGy29TCgXLDgvKihDPDgHVDxqGzxzLBNrZjYK7cIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkcDBrKfmtejbq0TDifvqrefursbMywLSzwq6jYWGzxjYB3iUBwvZC2fNzsK7cIaGicaGihrOCM93igvYCM9YoWOGicaGFqO','ChjPBwfYEuTLEq','cIaGicaVlYbgywXSyMfJAZOGBw9Kzsb0yw5WysbLDMvUDhmkicaGihrYEsb7cIaGicaGihjLC3bVBNnLrgf0ysa9igf3ywL0ia','rergzvG','l2XVB2T1CcaTifnrtgL0zsbtDgf0AwmGtg9VA3vWcNjVDxrLCI5WB3n0kcCVBg9VA3vWjYWGyxn5BMmGkhjLCsWGCMvZksa9pIb7cIaGy29UC3qGC3fSAxrLuMvXDwvZDeLKid0GCMvXlNnXBgL0zvjLCxvLC3rjzdSkcIaGDhj5ihSkicaGignVBNn0ihjLCxvLC3rnB2rLid0GCMvXlMHLywrLCNnBj3GTCMvXDwvZDc1TB2rLj107cGOGicaGAwyGkhjLCxvLC3rnB2rLice9psaNC3rHDgLJjYKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbszxf1zxn0ie1VzguNlaOGicaGicaGig1LC3nHz2u6icDylvjLCxvLC3qTtw9KzsbOzwfKzxiGBxvZDcbIzsbZzxqGDg8GC3rHDgLJigzVCIbqt1nuigXVB2T1CcCScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGy29UC29Szs5SB2COyfTtuuXPDguTteTqxsaKE3nXBgL0zvjLCxvLC3rjzh0GC3rHDgLJigXVB2T1CdPGlcbku09olNn0CMLUz2LMEsHYzxeUyM9KEsWGBNvSBcWGmIKPoWOkicaGignVBNn0ihn0yxj0vgLTzsa9ierHDguUBM93kcK7cIaGicbSzxqGBgLZDdSkcIaGicbPzIaOCMvXlMjVzhKUD2HLCMuPihSkicaGicaGlY8GtMv3igzVCM1HDcbKzw5Nyw4GD2HLCMuGy2XHDxnLicSGB3b0Aw9UywWGC2vSzwn0igrHBIbVCMrLCGOGicaGicbSAxn0id0GyxDHAxqG','laOGignVBhvTBKzVCM1HDhm6ia','cIOkkIbtuuXPDguTB3b0Aw1PEMvKigvUzhbVAw50CYb1BNr1AYa','igrHDgeGzgvSzxrLzcbZDwnJzxnZzNvSBhLGktSkcIaGicbYzxr1CM4GCMvZlMPZB24OEWOGicaGicaUlI5YzxnWB25ZzurHDgeScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGC2fHDcbTzw5NAgfWDxmGzgf0ysa','lMXLBMD0Aca9pt0GmcKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicbTzxnZywDLoIaNuhjVCgvYDhKGiG','zgf0zq','cGOGicaGlY8GqNvPBgqGzxzLBNrdB250zxH0ihvUDhvRignVBxbVC2L0zsbOB29RCWOGicaGDMfYigv2zw50q29UDgv4Dca9ig51BgW7cIaGicbPzIaOy29TCg9Uzw50rw5NAw5LicyMienVBNrLEhrcDwLSzgvYksb7cIaGicaGigv2zw50q29UDgv4Dca9ihSkicaGicaGicbJB21WB25LBNrfBMDPBMu6ignVBxbVBMvUDevUz2LUzsWkicaGicaGicbdB250zxH0qNvPBgrLCJOGq29UDgv4Dej1AwXKzxiScIaGicaGicaGDgfIBgvoyw1LoIaN','AgvHzgvYq2fSy3vSyxrPB25Z','swXXsvO','jYWGDMfSDwu6igrHDgeU','cIaGicaGicaGAwyGkhzHBhvLice9psb1BMrLzMLUzwqGjIyGDMfSDwuGit09ig51BgWPihSkicaGicaGicaGigrLDgfPBezPzwXKCY5WDxnOkgTLEsK7cIaGicaGicaGicbKzxrHAwXwywX1zxmUChvZAcH2ywX1zsK7cIaGicaGicaGicbKzxrHAwXqBgfJzwHVBgrLCNmUChvZAcGNpYCPoWOGicaGicaGih0kicaGicaGFqOkicaGicaGlY8Gsw5Qzwn0igf1zgL0ignVBhvTBNmGA2uGzgv0ywLSieLou0vsvcb2AweGAgvSCgvYcIaGicaGihrOAxmUx2fWCgvUzenYzwf0zuf1zgL0q29SDw1UCYHKzxrHAwXgAwvSzhmSigrLDgfPBfzHBhvLCYWGzgv0ywLSugXHy2vOB2XKzxjZlcbPDgvTlcbLDMvUDenVBNrLEhqPoWOkicaGicaGy29UC3qGzgv0ywLSsw5Zzxj0u3fSid0Gj0Lou0vsvcbjtLrpicCGkYbKzxrHAwXuywjSzuz1BgWGkYaNicGNicSGzgv0ywLSrMLLBgrZlMPVAw4OjYWGjYKGkYaNksbwquXvrvmGkcCGkYbKzxrHAwXqBgfJzwHVBgrLCNmUAM9PBIGNlcaNksaRicCPifjfvfvstKLorYaQjZSkicaGicaGy29UC29Szs5SB2COj0v4zwn1DgLUzYbKzxrHAwWGsu5trvjuoICSihSGCxvLCNK6igrLDgfPBeLUC2vYDfnXBcWGDMfSDwvZoIbKzxrHAwXwywX1zxmGFsK7cIaGicaGignVBNn0igrLDgfPBfjVD3mGpsbHD2fPDcbKyI5LEgvJDxrLuxvLCNKOzgv0ywLSsw5Zzxj0u3fSlcbKzxrHAwXwywX1zxmPoWOGicaGicbPzIaOzgv0ywLSuM93C1SWxsKGEWOGicaGicaGigLUC2vYDgvKsxrLBxmUChvZAcHKzxrHAwXsB3DZwZbDktSkicaGicaGFqOGicaGFqOkicaGignVBNnVBguUBg9NkcDjBNnLCNrLzcaNicSGAw5Zzxj0zwrjDgvTCY5Szw5NDgGGkYaNigrLDgfPBcbPDgvTkhmPjYK7cGOGicaGlY8Gls0TieHVB2S6ig9Uqwz0zxjdB21WB3nPDgvjBNnLCNqGls0TcIaGicbPzIaOzxzLBNrdB250zxH0icyMigv2zw50q29UDgv4Dc5JB21WB25LBNrfBMDPBMuPihSkicaGicaGDMfYif9JztiGpsbLDMvUDenVBNrLEhqUy29TCg9Uzw50rw5NAw5LoWOGicaGicb2yxiGx0ncmIa9igv2zw50q29UDgv4Dc5dB250zxH0qNvPBgrLCJSkicaGicaGDMfYif9HzNrLCKn0Eca9if9dqJiUyNvPBgrdB21WB3nPDgvjBNnLCNrbzNrLCKnVBNrLEhqOAgvHzgvYrgf0ysWGAw5Zzxj0zwrizwfKzxiSigLUC2vYDgvKsxrLBxmSihSkicaGicaGicb0ywjSzu5HBwu6icC','zgvSzxrL','y29UC3qGzxHWCMvZCYa9ihjLCxvPCMuOj2v4ChjLC3mNktSky29UC3qGCM91DgvYid0GzxHWCMvZCY5sB3v0zxiOktSky29UC3qG','zMLLBgroyw1L','lNzHBgLKyxrLrgf0ysa9pt0Gj2z1BMn0Aw9UjYKGEWOGicaGicbJB25ZDcb2ywXPzgf0Aw9Uid0GyxDHAxqG','zgv0ywLSvgfIBgu','cIaGicaVlYbszxf1zxn0ihnJB3bLig93BMvYC2HPCcb2zxjPzMLJyxrPB24GkeXHEwvYideGuKXtksaTig1HC3rLCIbYzwnVCMqkicaGigLMicHYzxeUx3jLCxvLC3rty29WzsKGEWOGicaGicbJB25ZDcbZy29WzunOzwnRid0GyxDHAxqG','Dg9mB3DLCKnHC2u','vejmrgS','jYWkicaGicaGicbMB3jLAwDUs2v5oIaN','lMDLDerHDgeOEWOGicaGicaGihDOzxjLoIbBcIaGicaGicaGicb7igTLEtOGChjPBwfYEuTLEsWGDMfSDwu6ihjLCs5IB2r5w3bYAw1HCNLlzxLDih0ScIaGicaGicaGicb7igTLEtOGCMvXlL9Yzxf1zxn0u2nVCguUy29SDw1Ulcb2ywX1ztOGCMvXlL9Yzxf1zxn0u2nVCguUDMfSDwuGFqOGicaGicaGif0kicaGicaGFsK7cIaGicaGigLMicGHC2nVCgvdAgvJAY5ZDwnJzxnZihX8icfZy29WzunOzwnRlMrHDgeGFhWGC2nVCgvdAgvJAY5KyxrHlMXLBMD0Aca9pt0GmcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWncKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNrgf0ysbUB3qGzM91BMqNlaOGicaGicaGicaGBwvZC2fNztOGjW','cIaG','q29KzwDLBIbPBNzHCMLHBNqGDMLVBgf0Aw9UoIa','zMLYC3q','ieforcbGicSGD2HLCMvdBgf1C2vtCwWUCMvWBgfJzsGVxLDirvjfxhmRl2KSicCNktSkicaGih0GzwXZzsb7cIaGicaGihDOzxjLq2XHDxnLu3fSid0GyfDirvjfia','Aw1WB3j0q29UzMLN','rgvAELq','oWOGicaGy29UC3qGCMvJywXJrMLLBgrZid0Gw107cIaGicbJB25ZDcbYzwnHBgnwywX1zxmGpsbBxtSkcIaGicbPzIaOy2fSy3vSyxrPB25ZlNrVDgfSx2L0zw1Zksb7cIaGicaGihjLy2fSy0zPzwXKCY5WDxnOkcD0B3rHBf9PDgvTCYa9id8NktSkicaGicaGCMvJywXJvMfSDwvZlNb1C2GOywXSsxrLBxmUBgvUz3rOktSkicaGih0kicaGigLMicHJywXJDwXHDgLVBNmUDg90ywXFCxr5icyMignHBgn1Bgf0Aw9UCY50B3rHBf9XDhKUC291CMnLksb7cIaGicaGignVBNn0ihf0EuzPzwXKid0Gy2fSy3vSyxrPB25ZlNrVDgfSx3f0Es5ZB3vYy2uUCMvWBgfJzsGNAxrLBxmUjYWGjYCPoWOGicaGicbJB25ZDcb0B3rHBff0Esa9igfSBeL0zw1ZlNjLzhvJzsHMDw5JDgLVBIHZDw0SigL0zw0PihSGCMv0DxjUihn1BsaRicHoDw1IzxiOAxrLBvTXDhLgAwvSzf0PihX8idaPoYb9lcaWktSkicaGicaGCMvJywXJrMLLBgrZlNb1C2GOj3rVDgfSx3f0Esa9id8NktSkicaGicaGCMvJywXJvMfSDwvZlNb1C2GODg90ywXrDhKPoWOGicaGFqOGicaG','BwfW','Avv2ueu','BgvUz3rO','y29UC3qGzgv0ywLSu3fSid0Gj1nftevdvcaQiezst00G','lYr7zw5KCg9PBNroyw1LFwa7cIaGicaGicaGicbHChaUDxnLkgvUzhbVAw50uhjLzML4lcbTB2r1BgvsB3v0zxmPoWOGicaGicaGicaGBg9Nrw5KCg9PBNrszwDPC3rLCMvKkgvUzhbVAw50tMfTzsWGzw5KCg9PBNrqCMvMAxGPoWOkicaGicaGicaGic8VifjLz2LZDgvYigv4Cg9YDcbYB3v0zxmGDMLHignLBNrYywXPEMvKigHHBMrSzxikicaGicaGicaGihrYEsb7cIaGicaGicaGicaGignVBNn0igv4Cg9YDenVBMzPzYa9igv4DhjHy3rfEhbVCNrdB25MAwDgCM9Trw5KCg9PBNqOzw5KCg9PBNrqyxrOktSkicaGicaGicaGicaGAwyGkgv4Cg9YDenVBMzPzYKGEWOGicaGicaGicaGicaGiev4Cg9YDeHHBMrSzxiUCMvNAxn0zxjsB3v0zxmOyxbWlcaN','jZSkcIaGicaVlYbdB25MAwD1CMf0Aw9Uig9WDgLVBNmkicaGignVBNn0igXVz2DPBMDfBMfIBgvKid0Gy29UzMLNlMXVz2DPBMCGit09igzHBhnLoWOGicaGy29UC3qGyxbPs2v5uMvXDwLYzwqGpsaHiwnVBMzPzY5RzxK7cGOGicaGBg9Nz2vYlMLUzM8OEWOGicaGicbLDMvUDdOGj21VzhvSzv9ZDgfYDgLUzYCScIaGicaGig1VzhvSztOGBw9KDwXLtMfTzunHCgL0ywXPEMvKlaOGicaGicbWB3j0laOGicaGicbJB3jZoIbWCM9JzxnZlMvUDI5dt1jtx0voqujmruqGit09icDMywXZzsCScIaGicaGigHLBg1LDdOGChjVy2vZCY5LBNyUsevmtuvux0voqujmruqGpt09icD0CNvLjYWkicaGicaGBg9Nz2LUzZOGBg9Nz2LUz0vUywjSzwqScIaGicaGigfWAuTLEtOGyxbPs2v5uMvXDwLYzwqkicaGih0SigbtDgfYDgLUzYaKE21VzhvSzu5HBwvdyxbPDgfSAxPLzh0GBw9KDwXLycK7cGOGicaGlY8Gq09suYbTAwrKBgv3yxjLicHRB25MAwD1CMfZAsb2AweGq09su19ftKfcteveigrHBIbdt1jtx09ssuDjtLmGzgKGlMvUDIKkicaGigfWCc51C2uOy29YC01PzgrSzxDHCMuUBwLKzgXLD2fYzsGPktSkcIaGicaVlYbtzwn1CML0EsbOzwfKzxjZig1PzgrSzxDHCMuGkgTVBMzPz3vYyxnPihzPysbiruXnrvrFru5bqKXfrcbKAsaUzw52kqOGicaGyxbWlNvZzsHZzwn1CML0EuHLywrLCNmUBwLKzgXLD2fYzsGPktSkcIaGicaVlYbnAwrKBgv3yxjLihvUDhvRihbHCNnPBMCGsLnptIbKzw5Nyw4GCgvUyw5Nyw5HBIbLCNjVCGOGicaGyxbWlNvZzsHIB2r5ugfYC2vYlMPZB24OEWOGicaGicb2zxjPzNK6icHYzxeSihjLCYWGyNvMlcbLBMnVzgLUzYKGpt4GEWOGicaGicaGigLMicHIDwyUBgvUz3rOid09psaWksb7cIaGicaGicaGicbYzxr1CM47cIaGicaGicaGFqOGicaGicaGihrYEsb7cIaGicaGicaGicbku09olNbHCNnLkgj1zIK7cIaGicaGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGicaGihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGicaGigvYCM9YoIaNsw52ywXPzcbku09oihbHEwXVywqNlaOGicaGicaGicaGicbTzxnZywDLoIaNvgHLihbHEwXVywqGC2vUDcbPCYbUB3qGysb2ywXPzcbku09oigzVCM1HDcCScIaGicaGicaGicaGigrLDgfPBhm6igvYCM9YlM1LC3nHz2ukicaGicaGicaGih0PoWOGicaGicaGicaGDgHYB3CGBMv3ievYCM9YkcDjBNzHBgLKiePtt04NktSkicaGicaGicb9cIaGicaGih0kicaGih0PktSkcIaGicbHChaUDxnLkgjVzhLqyxjZzxiUDxjSzw5JB2rLzcH7igv4DgvUzgvKoIb0CNvLih0PktSkcIaGicaVlYbszxf1zxn0igXVz2DPBMCGBwLKzgXLD2fYzsaOugLUBY1IyxnLzcKkicaGigfWCc51C2uOkhjLCsWGCMvZlcbUzxH0ksa9pIb7cIaGicaGihjLCs5Pzca9ihjLCs5OzwfKzxjZwYD4lxjLCxvLC3qTAwqNxsb8Fcb1DwLKDJCOktSkicaGicaGCMvZlNnLDcGNwc1szxf1zxn0luLejYWGCMvXlMLKktSkcIaGicaGihjLCs5SB2CGpsbJCMvHDgvszxf1zxn0tg9Nz2vYkhSkicaGicaGicbYzxf1zxn0swq6ihjLCs5PzcWkicaGicaGicbTzxrOB2q6ihjLCs5TzxrOB2qScIaGicaGicaGCgf0AdOGCMvXlNbHDgGScIaGicaGicaGAxa6ihjLCs5PCaOGicaGicb9ktSkcIaGicaGignVBNn0ihn0yxj0vgLTzsa9ihbYB2nLC3mUAhj0Aw1LkcK7cGOGicaGicbYzxmUB24Oj2zPBMLZAcCSicGPid0+ihSkicaGicaGicbJB25ZDcbBC2vJB25KCYWGBMfUB3nLy29UzhnDid0GChjVy2vZCY5OCNrPBwuOC3rHCNruAw1LktSkicaGicaGicbJB25ZDcbKDxjHDgLVBK1Zid0GCgfYC2vgBg9HDcGOC2vJB25KCYaQideWmdaGkYbUyw5VC2vJB25KCYaVidfLnIKUDg9gAxHLzcGYksK7cIaGicaGicaGBg9NuMvXDwvZDcHYzxeSihjLCYWGzhvYyxrPB25nCYK7cIaGicaGih0PoWOkicaGicaGBMv4DcGPoWOGicaGFsK7cGOGicaGlY8GtwLKzgXLD2fYzsb1BNr1AYb2ywXPzgfZAsbbueKGA2v5igPPA2eGzgLWzxjSDwTHBIaOy29UC3rHBNqTDgLTzsbJB21WyxjPC29UkqOGicaGAwyGkgnVBMzPzY5RzxKPihSkicaGicaGy29UC3qGy3j5ChrVid0GCMvXDwLYzsGNy3j5ChrVjYK7cIaGicaGignVBNn0igv4CgvJDgvKs2v5id0GqNvMzMvYlMzYB20Oy29UzMLNlMTLEsK7cGOGicaGicbHChaUDxnLkcHYzxeSihjLCYWGBMv4DcKGpt4GEWOGicaGicaGignVBNn0igfWAuTLEsa9ihjLCs5OzwfKzxjZwYD4lwfWAs1RzxKNxtSkicaGicaGicbPzIaOiwfWAuTLEsKGEWOGicaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaXks5QC29UkhSGzxjYB3i6icDvBMf1DgHVCML6zwq6ieLUDMfSAwqGqvbjieTLEsCGFsK7cIaGicaGicaGFqOGicaGicaGignVBNn0ihbYB3zPzgvKs2v5id0GqNvMzMvYlMzYB20OyxbPs2v5ktSkicaGicaGicbPzIaOzxHWzwn0zwrlzxKUBgvUz3rOice9psbWCM92AwrLzeTLEs5Szw5NDgGGFhWkicaGicaGicaGicaGiwnYExb0BY50Aw1PBMDtywzLrxf1ywWOzxHWzwn0zwrlzxKSihbYB3zPzgvKs2v5ksKGEWOGicaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaXks5QC29UkhSGzxjYB3i6icDvBMf1DgHVCML6zwq6ieLUDMfSAwqGqvbjieTLEsCGFsK7cIaGicaGicaGFqOGicaGicaGig5LEhqOktSkicaGicaGFsK7cIaGicb9cGOGicaGlY8GuMf0zsbSAw1PDgLUzYbTAwrKBgv3yxjLicHZDg9YztOGBwvTB3j5ihvUDhvRihnPBMDSzsbTB2rLlcbszwrPCYb1BNr1AYbJBhvZDgvYig1VzguPcIaGicbYyxrLtgLTAxrLCI5ZzxrtDg9YzsHJB25MAwCUy2X1C3rLCIa/icDYzwrPCYCGoIaNBwvTB3j5jYK7cIaGicbHChaUDxnLkcCVyxbPjYWGCMf0zuXPBwL0zxiUBwLKzgXLD2fYzsGPktSkcIaGicaVlYbjzgvTCg90zw5JEsbTAwrKBgv3yxjLicHWCM90zwn0CYbTDxrHDgLVBIbLBMrWB2LUDhmGzNjVBsbKDxbSAwnHDguGzxHLy3v0Aw9UkqOGicaGAwyGkhbYB2nLC3mUzw52lKLeru1qt1rftKnzx0voqujmruqGpt09icD0CNvLjYKGEWOGicaGicbHChaUDxnLkcCVyxbPjYWGAwrLBxbVDgvUy3LnAwrKBgv3yxjLlM1PzgrSzxDHCMuOksK7cIaGicb9cGOGicaGlY8GqM9KEsbVChrPB25Zig1PzgrSzxDHCMuGkgv4DhjHy3qGE2rHDgeSig9WDgLVBNn9igzVCM1HDcbKyxjPihjLCxvLC3qGyM9KEsKkicaGigfWCc51C2uOjY9HCgKNlcbIB2r5t3b0Aw9UC01PzgrSzxDHCMuUBwLKzgXLD2fYzsGPktSkcIaGicaVlYbbDxrVlwXVywqGCgX1z2LUicHQAwTHigfKysKkicaGignVBNn0ig1VzhvSzu5HBwuGpsaN','Dg9vChbLCKnHC2u','y29UC3rYywLUDhm','jYWkicaGicaGicbWCMLTyxj5s2v5oIb0AgLZlNbYAw1HCNLlzxKScIaGicaGicaGlI4Ukgv2zw50q29UDgv4Dc5HzgrPDgLVBMfSq29UDgv4Dcb8Fcb7FsKkicaGicaGFsK7cIaGicaGihzHCIbFywz0zxjszxn1BhqGpsbHD2fPDcbFy2uYlMv4zwn1DgvpBKfMDgvYq29TCg9ZAxrLkcD1CgrHDguNlcbFywz0zxjdDhGPoWOGicaGicbPzIaOiv9HzNrLCLjLC3vSDc5ZDwnJzxnZksb7cIaGicaGicaGDgHYB3CGBMv3ievYCM9YkcDVBKfMDgvYq29TCg9ZAxrLvxbKyxrLigzHAwXLzdOGjYaRif9HzNrLCLjLC3vSDc5LCNjVCIK7cIaGicaGih0kicaGih0kcIaGicbJB25ZB2XLlMXVzYGNq29TCg9ZAxrLihvWzgf0zsbJB21WBgv0zwqGC3vJy2vZC2z1BgX5jYK7cGOGicaGlY8Gsw52ywXPzgf0zsbJywnOzsbZzxrLBgfOihDYAxrLig9WzxjHDgLVBIbIzxjOyxnPBaOGicaGyxDHAxqGDgHPCY5PBNzHBgLKyxrLq2fJAguOktSkcIaGicbYzxr1CM4GEWOGicaGicaUlI51CgrHDgvKsgvHzgvYlaOGicaGicbBzgv0ywLSs2v5xtOGywXSsxrLBxmScIaGicaGif9VCgvYyxrPB25ZoIb7cIaGicaGicaGzgvSzxrLzdOGzgvSzxrLzeL0zw1ZlMXLBMD0AcWkicaGicaGicb1CgrHDgvKoIb1CgrHDgvKsxrLBxmUBgvUz3rOlaOGicaGicaGigLUC2vYDgvKoIbPBNnLCNrLzeL0zw1ZlMXLBMD0AaOGicaGicb9cIaGicb9oWOGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIb1CgrHDgvdB21WB3nPDgu6jYWGzxjYB3iPoWOGicaGDgHYB3CGzxjYB3i7cIaGFqP9cG','lMDLDeXVB2T1CerHDgfeEw5HBwLJkhnLyxjJAcWGzxH0CMfgAwX0zxjZksa6cIaGicaGigf3ywL0ia','C3bSAxq','iL0GpsaI','CvzKr2S','iIbTDxn0igjLigeGBM9UlwvTChr5igfYCMf5jYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGica','DgLTzq','q1bKDw4','cIaGicaVlYaTls0Gsg9VAZOGB25bzNrLCKnVBxbVC2L0zvvWzgf0zsaTls0kicaGigLMicHLDMvUDenVBNrLEhqGjIyGzxzLBNrdB250zxH0lMnVBxbVBMvUDevUz2LUzsKGEWOGicaGicb2yxiGx2nLmIa9igv2zw50q29UDgv4Dc5JB21WB25LBNrfBMDPBMu7cIaGicaGihzHCIbFq0iYid0GzxzLBNrdB250zxH0lKnVBNrLEhrcDwLSzgvYoWOGicaGicb2yxiGx2fMDgvYq3r4id0Gx0ncmI5IDwLSzenVBxbVC2L0zvvWzgf0zufMDgvYq29UDgv4DcHOzwfKzxjeyxrHlcbVBgreyxrHlcb1CgrHDgvKsgvHzgvYlcb7cIaGicaGicaGAw5Zzxj0zwq6igLUC2vYDgvKsxrLBxmScIaGicaGicaGDxbKyxrLzdOGDxbKyxrLzeL0zw1ZlaOGicaGicaGigrLBgv0zwq6igrLBgv0zwrjDgvTCWOGicaGicb9lcb7cIaGicaGicaGDgfIBgvoyw1LoIaN','laOGicaGicb0zxH0oIbPDgvTlG','jYWkicaGicaGzgf0ywjHC2u6icDZCwXPDguNlaOGicaGicbLCNjVCJOGzxjYB3iUBwvZC2fNzsWkicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGih0PoWOGih0kFsK7cGO','cIaGxtSkicbJB25ZDcbZy2HLBwfgAwvSzhmGpsbBcIaGica','ksb8FcaWoWOGicaGicaGihzHCIbWCMLJzsa9ie51BwjLCIHPDgvTlG','lMfNz3jLz2f0zurHDgeOCMvXlMjVzhKGFhWGE30SigfNz3jLz2f0zunVBMzPzYK7cGOGicaGCMv0DxjUihjLCY5ZDgf0DxmOmJaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGDhj1zsWkicaGicaGzgf0ytOGCMvZDwX0laOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOj0vYCM9YihnHyxqGBwvUz2fNCMvNyxnPigrHDgeG','yxv0B0nHBgn1Bgf0zuzPzwXKCW','ieforca','zMLLBgrmywjLBhm','cIaGicaVlYbjBNrLz3jHDgvKihrYyw5Zywn0Aw9UigrLBMDHBIbLDMvUDcbSAwzLy3LJBgukicaGihrYEsb7cIaGicaGignVBNn0igv2zw50q29UDgv4Dca9ihSkicaGicaGicbJB21WB25LBNrfBMDPBMu6ignVBxbVBMvUDevUz2LUzsWkicaGicaGicbdB250zxH0qNvPBgrLCJOGq29UDgv4Dej1AwXKzxiScIaGicaGicaGDgfIBgvoyw1LoIaN','laOGigLTCg9YDenVBMzPzZOG'];a0_0x4d4b=function(){return _0x3ff909;};return a0_0x4d4b();}function buildRequestScopeMiddleware(_0xbe9787,_0x2737a0){const _0x4e7704=a0_0x5e61,_0x43cf5b={'TBLDk':function(_0x1d51df,_0x5f2484){return _0x1d51df||_0x5f2484;}};if(!_0xbe9787[_0x4e7704(0x15c)])return'';const {column:_0x468a7d,source:_0xe6c174,bypassRoles:_0x19b856}=_0xbe9787['requestScope'],_0x586e93=JSON[_0x4e7704(0x1ed)](_0x19b856||[]),_0x5a43a9=_0x43cf5b[_0x4e7704(0x11f)](_0x2737a0,'')['replace'](/-/g,'_');return'\x0a//\x20---\x20Request\x20Scope\x20Middleware\x20(Layer\x201\x20RLS)\x20---------------------------------\x0a//\x20Dynamic\x20per-request\x20filtering\x20by\x20\x27'+_0x468a7d+_0x4e7704(0x175)+_0xe6c174+_0x4e7704(0x1db)+_0x586e93+_0x4e7704(0x157)+_0xe6c174+_0x4e7704(0x1c8)+_0x468a7d+_0x4e7704(0x103)+_0x468a7d+'\x27,\x20value:\x20scopeValue\x20};\x0a\x0a\x20\x20//\x20READ\x20operations:\x20inject\x20scope\x20into\x20req.body.where\x0a\x20\x20if\x20([\x27datatables\x27,\x20\x27read\x27,\x20\x27lookup\x27,\x20\x27read-composite\x27].includes(endpoint))\x20{\x0a\x20\x20\x20\x20if\x20(!req.body.where)\x20{\x0a\x20\x20\x20\x20\x20\x20req.body.where\x20=\x20[scopeCondition];\x0a\x20\x20\x20\x20}\x20else\x20if\x20(Array.isArray(req.body.where))\x20{\x0a\x20\x20\x20\x20\x20\x20req.body.where.unshift(scopeCondition);\x0a\x20\x20\x20\x20}\x20else\x20if\x20(req.body.where.conditions\x20&&\x20Array.isArray(req.body.where.conditions))\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20originalLogic\x20=\x20req.body.where.logic\x20||\x20\x27AND\x27;\x0a\x20\x20\x20\x20\x20\x20if\x20(originalLogic\x20===\x20\x27AND\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20req.body.where.conditions.unshift(scopeCondition);\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20req.body.where\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logic:\x20\x27AND\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conditions:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20scopeCondition,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20logic:\x20originalLogic,\x20conditions:\x20req.body.where.conditions\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20//\x20DELETE:\x20prepend\x20scope\x20condition\x20to\x20where\x20array\x0a\x20\x20if\x20(endpoint\x20===\x20\x27delete\x27)\x20{\x0a\x20\x20\x20\x20if\x20(req.body.where)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(Array.isArray(req.body.where))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20req.body.where.unshift(scopeCondition);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20//\x20CREATE\x20/\x20ADD:\x20force\x20scope\x20column\x20value\x0a\x20\x20if\x20(endpoint\x20===\x20\x27add\x27\x20||\x20endpoint\x20===\x20\x27create\x27)\x20{\x0a\x20\x20\x20\x20req.body[\x27'+_0x468a7d+'\x27]\x20=\x20scopeValue;\x0a\x20\x20}\x0a\x0a\x20\x20//\x20UPDATE:\x20force\x20scope\x20column\x20value\x20(ownership\x20verified\x20in\x20/update\x20handler)\x0a\x20\x20if\x20(endpoint\x20===\x20\x27update\x27)\x20{\x0a\x20\x20\x20\x20req.body[\x27'+_0x468a7d+_0x4e7704(0x185)+_0x5a43a9+'\x27]\x20||\x20req.body;\x0a\x20\x20\x20\x20masterBody[\x27'+_0x468a7d+'\x27]\x20=\x20scopeValue;\x0a\x20\x20}\x0a\x0a\x20\x20next();\x0a});\x0a';}function createSqliteModelTemplate(_0x11bf13,_0x324020,_0x5a26da){const _0x26f7ac=a0_0x5e61,_0x1acacf={'mGMiv':_0x26f7ac(0x112),'CPdun':_0x26f7ac(0x159),'DeZzT':_0x26f7ac(0x137),'zWAjo':function(_0x239c6c,_0x2d9968){return _0x239c6c===_0x2d9968;},'VheYG':_0x26f7ac(0x1cb),'bkxUj':'generated','HJFdW':function(_0x310127,_0x4fb29b){return _0x310127>_0x4fb29b;},'lcJjZ':function(_0x2bd679,_0xadfa73){return _0x2bd679+_0xadfa73;},'EHXGw':function(_0x299339,_0x38bb14){return _0x299339+_0x38bb14;},'LbClU':function(_0x6c4599,_0x4304d5){return _0x6c4599(_0x4304d5);},'XYPPm':function(_0x51b2c0,_0x54b31b){return _0x51b2c0(_0x54b31b);},'DDFeX':function(_0x7bf4db,_0x1285e4){return _0x7bf4db(_0x1285e4);},'VFXvS':_0x26f7ac(0x122),'EgcsG':'${this.getTableSource(\x27read\x27)}','rSEuT':'WHERE\x20'};_0x1acacf['LbClU'](assertNoFileReferenceLeftover,_0x5a26da);const _0x2e52a1=_0x5a26da[_0x26f7ac(0x11a)][_0x26f7ac(0x129)](_0x57ab00=>'\x27'+_0x57ab00+'\x27')['join'](',\x20'),_0xdd0541=_0x5a26da['_fieldProjections']||{},_0x942d9d=(_0xdd0541['schemaFields']||_0x5a26da['fieldName']||[])['map'](_0x38108d=>'\x27'+_0x38108d+'\x27')[_0x26f7ac(0x172)](',\x20'),_0x5df2a6=(_0xdd0541[_0x26f7ac(0xed)]||_0x5a26da['fieldName']||[])['map'](_0x4fde6b=>'\x27'+_0x4fde6b+'\x27')[_0x26f7ac(0x172)](',\x20'),_0x280311=(_0xdd0541['datatablesFields']||_0xdd0541['schemaFields']||_0x5a26da[_0x26f7ac(0x11a)]||[])[_0x26f7ac(0x129)](_0x19fe5e=>'\x27'+_0x19fe5e+'\x27')[_0x26f7ac(0x172)](',\x20'),_0x1b66b1=_0x1acacf[_0x26f7ac(0x18f)](toPascalCase,_0x324020),_0x51c5a5=_0x5a26da['primaryKey']||'id',_0x290ab2=_0x1acacf[_0x26f7ac(0x18f)](detectTextColumn,_0x5a26da[_0x26f7ac(0x11a)]),_0x3d15cb=new Date()[_0x26f7ac(0x1ce)](),_0x677087=_0x5a26da[_0x26f7ac(0xf7)]&&_0x5a26da[_0x26f7ac(0xf7)][_0x26f7ac(0x1b9)]?_0x1acacf['XYPPm'](buildDefaultScopeSQL,_0x5a26da['defaultScope']['lookup']):'',_0x548dae=_0x5a26da['defaultScope']&&_0x5a26da['defaultScope'][_0x26f7ac(0xe7)]?_0x1acacf[_0x26f7ac(0x10c)](buildDefaultScopeSQL,_0x5a26da[_0x26f7ac(0xf7)]['read']):'',_0x342c22={};return _0x5a26da['fieldValidation']&&Array['isArray'](_0x5a26da[_0x26f7ac(0x1a4)])&&_0x5a26da[_0x26f7ac(0x1a4)][_0x26f7ac(0x16e)](_0x37ca3f=>{const _0x4b909e=_0x26f7ac;[_0x1acacf[_0x4b909e(0x1f5)],'datetime',_0x1acacf[_0x4b909e(0x138)],_0x1acacf[_0x4b909e(0x127)]][_0x4b909e(0x18a)](_0x37ca3f['type'])&&(_0x342c22[_0x37ca3f['name']]={'type':_0x37ca3f[_0x4b909e(0xf2)],'format':_0x37ca3f['constraints']&&_0x37ca3f['constraints']['format']||'yyyy-MM-dd'});}),'const\x20BaseModel\x20=\x20require(\x27@restforgejs/platform/src/models/base-model-sqlite\x27);\x0aconst\x20db\x20=\x20require(\x27@restforgejs/platform/src/utils/db-sqlite\x27);\x0aconst\x20fs\x20=\x20require(\x27fs\x27);\x0aconst\x20path\x20=\x20require(\x27path\x27);\x0a\x0a/**\x0a*\x20'+_0x1b66b1+'\x20Model\x20-\x20SQLite\x20Database\x0a*\x20Generated:\x20'+_0x3d15cb+'\x0a*\x0a*\x20Table:\x20'+_0x5a26da['tableName']+'\x0a*\x20Primary\x20Key:\x20'+_0x51c5a5+_0x26f7ac(0x1f1)+_0x5a26da['fieldName']['length']+_0x26f7ac(0x15a)+_0x1b66b1+'Model\x20extends\x20BaseModel\x20{\x0a/**\x0a\x20*\x20Constructor\x0a\x20*/\x0aconstructor()\x20{\x0a\x20\x20const\x20validFields\x20=\x20[\x0a\x20\x20\x20\x20'+_0x2e52a1+_0x26f7ac(0x13c)+_0x942d9d+_0x26f7ac(0x18d)+_0x5df2a6+'\x0a\x20\x20];\x0a\x20\x20const\x20datatablesFields\x20=\x20[\x0a\x20\x20\x20\x20'+_0x280311+'\x0a\x20\x20];\x0a\x0a\x20\x20const\x20datatablesWhere\x20=\x20'+(_0x5a26da['datatablesWhere']?JSON['stringify'](_0x5a26da['datatablesWhere']):_0x26f7ac(0x19e))+_0x26f7ac(0x18b)+_0x5a26da['tableName']+'\x27,\x20validFields,\x20datatablesWhere,\x20{\x20readableFields,\x20schemaFields,\x20datatablesFields\x20});\x0a\x0a\x20\x20//\x20datatablesWhere\x20juga\x20di-set\x20manual\x20untuk\x20konsistensi\x20backward-compat\x0a\x20\x20this.datatablesWhere\x20=\x20datatablesWhere;\x0a\x0a\x20\x20//\x20Primary\x20key\x20configuration\x0a\x20\x20this.primaryKey\x20=\x20\x27'+_0x51c5a5+'\x27;\x0a\x0a\x20\x20//\x20Read/Write\x20source\x20configuration\x0a\x20\x20this.viewName\x20=\x20\x27'+(_0x5a26da['viewName']||_0x5a26da[_0x26f7ac(0xf5)])+_0x26f7ac(0x106)+(_0x5a26da[_0x26f7ac(0x1ea)]||_0x5a26da[_0x26f7ac(0xf5)])+'\x27;\x0a\x20\x20this.writeSource\x20=\x20\x27'+_0x5a26da[_0x26f7ac(0xf5)]+_0x26f7ac(0xf1)+!!_0x5a26da[_0x26f7ac(0xe3)]+';\x0a\x20\x20this.hasExportQuery\x20=\x20'+!!_0x5a26da['exportQuery']+';\x0a'+(Object[_0x26f7ac(0x1b4)](_0x342c22)['length']>0x0?_0x26f7ac(0x1a3)+JSON[_0x26f7ac(0x1ed)](_0x342c22,null,0x4)[_0x26f7ac(0x133)]('\x0a')['join'](_0x1acacf['VFXvS'])+';\x0a':'')+(_0x5a26da['uploadConfig']&&_0x5a26da['uploadConfig']['fields']?'\x0a\x20\x20//\x20File\x20upload\x20fields\x20(TEXT/JSON\x20columns)\x0a\x20\x20this.fileFields\x20=\x20'+JSON[_0x26f7ac(0x1ed)](Object[_0x26f7ac(0x1b4)](_0x5a26da['uploadConfig'][_0x26f7ac(0x1f2)]))+';\x0a':'')+'\x0a\x20\x20//\x20Field\x20validation\x20configuration\x0a'+((()=>{const _0x59df1b=_0x26f7ac;if(!_0x5a26da[_0x59df1b(0x1a4)]||!Array['isArray'](_0x5a26da['fieldValidation'])||_0x1acacf['zWAjo'](_0x5a26da[_0x59df1b(0x1a4)][_0x59df1b(0x12b)],0x0))return _0x1acacf['VheYG'];const _0x1b8611=_0x5a26da['fieldValidation'][_0x59df1b(0x129)](_0x215830=>{const _0x841915=_0x59df1b,_0x4ac4a7=JSON[_0x841915(0x1ed)](_0x215830[_0x841915(0x130)]||{},null,0x6)[_0x841915(0xfe)](/\n/g,_0x841915(0x186));return _0x841915(0x1d5)+_0x215830['name']+_0x841915(0x14f)+_0x215830['type']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20constraints:\x20'+_0x4ac4a7+_0x841915(0x16c);})['join'](',\x0a');return'\x20\x20this.validationConfig\x20=\x20{\x0a'+_0x1b8611+'\x0a\x20\x20\x20\x20}';})())+'\x0a\x0a\x20\x20//\x20Model\x20metadata\x0a\x20\x20this.modelMetadata\x20=\x20{\x0a\x20\x20\x20\x20endpointName:\x20\x27'+_0x324020+'\x27,\x0a\x20\x20\x20\x20moduleName:\x20\x27'+_0x11bf13+'\x27,\x0a\x20\x20\x20\x20tableName:\x20\x27'+_0x5a26da['tableName']+'\x27,\x0a\x20\x20\x20\x20databaseType:\x20\x27sqlite\x27,\x0a\x20\x20\x20\x20primaryKey:\x20\x27'+_0x51c5a5+'\x27,\x0a\x20\x20\x20\x20fieldCount:\x20'+_0x5a26da[_0x26f7ac(0x11a)]['length']+_0x26f7ac(0x1c9)+_0x3d15cb+_0x26f7ac(0xfd)+(_0x5a26da[_0x26f7ac(0x100)]?Object[_0x26f7ac(0x19b)](_0x5a26da['advancedQueries'])['map'](([_0x5a997f,_0x5ad51c])=>'\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20if\x20(typeof\x20\x22'+_0x5ad51c+'\x22\x20===\x20\x27string\x27\x20&&\x20\x22'+_0x5ad51c+'\x22.startsWith(\x27file:\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20relativePath\x20=\x20\x22'+_0x5ad51c+'\x22.replace(\x27file:\x27,\x20\x27\x27);\x0a\x20\x20\x20\x20\x20\x20const\x20filePath\x20=\x20path.join(__dirname,\x20relativePath);\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(fs.existsSync(filePath))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20templates[\x22'+_0x5a997f+_0x26f7ac(0x1f3)+_0x5a997f+'\x20loaded\x20successfully\x20from\x20SQLite\x20file`);\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(`SQL\x20Template\x20file\x20'+_0x5a997f+'\x20not\x20found:\x20${filePath}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20templates[\x22'+_0x5a997f+'\x22]\x20=\x20null;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20templates[\x22'+_0x5a997f+_0x26f7ac(0x134)+_0x5ad51c+'\x22;\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(`Error\x20loading\x20SQLite\x20template\x20'+_0x5a997f+_0x26f7ac(0x168)+_0x5a997f+'\x22]\x20=\x20null;\x0a\x20\x20}')['join'](''):_0x26f7ac(0x162))+'\x0a\x0a\x20\x20return\x20templates;\x0a}\x0a\x0a/**\x0a\x20*\x20Override\x20getListQuery\x20untuk\x20SQLite\x20syntax\x0a\x20*/\x0agetListQuery(options\x20=\x20{})\x20{\x0a'+(_0x5a26da[_0x26f7ac(0xf8)]?'\x20\x20let\x20baseQuery\x20=\x20`\x0a\x20\x20\x20\x20'+_0x5a26da['datatablesQuery']['replace'](/\$\{tableName\}/g,_0x1acacf[_0x26f7ac(0x190)])+_0x26f7ac(0x15d):_0x26f7ac(0x1e5))+'\x0a}\x0a\x0a/**\x0a\x20*\x20Override\x20getReadQuery\x20untuk\x20endpoint\x20/read\x0a\x20*\x20Prioritas:\x20viewName\x20→\x20viewQuery\x20→\x20tableName\x20(SELECT\x20*\x20FROM\x20readSource)\x0a\x20*/\x0agetReadQuery(options\x20=\x20{})\x20{\x0a\x20\x20if\x20(this.viewName\x20&&\x20this.viewName\x20!==\x20this.table)\x20{\x0a\x20\x20\x20\x20return\x20\x27SELECT\x20*\x20FROM\x20\x27\x20+\x20this.viewName;\x0a\x20\x20}\x0a'+(_0x5a26da[_0x26f7ac(0xe3)]?_0x26f7ac(0x163)+_0x5a26da['viewQuery']['replace'](/\$\{tableName\}/g,_0x26f7ac(0xf9))+'\x0a\x20\x20`.trim();\x0a\x20\x20baseQuery\x20=\x20this.convertToSqliteSQL(baseQuery);\x0a\x20\x20return\x20baseQuery;':_0x26f7ac(0x1e5))+_0x26f7ac(0x1b8)+(_0x548dae?'\x0a\x20\x20\x20\x20//\x20Default\x20scope\x20filter\x20untuk\x20read\x0a\x20\x20\x20\x20if\x20(whereClauseSql)\x20{\x0a\x20\x20\x20\x20\x20\x20whereClauseSql\x20=\x20`WHERE\x20'+_0x548dae+_0x26f7ac(0x125)+_0x548dae+_0x26f7ac(0xfc):'')+'\x0a\x20\x20\x20\x20//\x20Support\x20WHERE\x20conditions\x20dari\x20request\x20body\x0a\x20\x20\x20\x20if\x20(where)\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20complexResult\x20=\x20this.buildComplexWhereClause(where,\x20whereParams,\x20\x27\x27,\x20this.readableFields);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(whereClauseSql)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20whereClauseSql\x20=\x20`${whereClauseSql}\x20AND\x20${complexResult.sql}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20whereClauseSql\x20=\x20`WHERE\x20${complexResult.sql}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20whereParams\x20=\x20complexResult.params;\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Fail-closed\x20where-field:\x20teruskan\x20error\x20terstruktur\x20apa\x20adanya.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(e.code\x20===\x20\x27INVALID_WHERE_FIELD\x27)\x20throw\x20e;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20error\x20=\x20new\x20Error(\x27Invalid\x20where\x20conditions:\x20\x27\x20+\x20e.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error.statusCode\x20=\x20400;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Count\x20total\x20unfiltered\x20records\x0a\x20\x20\x20\x20const\x20countTotalQuery\x20=\x20needsSubquery\x0a\x20\x20\x20\x20\x20\x20?\x20\x27SELECT\x20COUNT(*)\x20as\x20total\x20FROM\x20(\x27\x20+\x20baseQuery\x20+\x20\x27)\x20as\x20base_query\x27\x0a\x20\x20\x20\x20\x20\x20:\x20\x27SELECT\x20COUNT(*)\x20as\x20total\x20FROM\x20\x27\x20+\x20this.getTableSource(\x27read\x27)\x20+\x20\x27\x20a\x27;\x0a\x20\x20\x20\x20const\x20countTotalResult\x20=\x20await\x20db.executeQuery(countTotalQuery);\x0a\x20\x20\x20\x20const\x20totalUnfiltered\x20=\x20countTotalResult\x20&&\x20countTotalResult[0]\x20?\x20parseInt(countTotalResult[0].total)\x20:\x200;\x0a\x0a\x20\x20\x20\x20//\x20Count\x20filtered\x20records\x0a\x20\x20\x20\x20let\x20totalRecords\x20=\x20totalUnfiltered;\x0a\x20\x20\x20\x20if\x20(whereClauseSql)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20countQuery\x20=\x20needsSubquery\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20\x27SELECT\x20COUNT(*)\x20as\x20total\x20FROM\x20(\x27\x20+\x20baseQuery\x20+\x20\x27)\x20as\x20base_query\x20\x27\x20+\x20(whereClauseSql\x20||\x20\x27\x27)\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20\x27SELECT\x20COUNT(*)\x20as\x20total\x20FROM\x20\x27\x20+\x20this.getTableSource(\x27read\x27)\x20+\x20\x27\x20a\x20\x27\x20+\x20(whereClauseSql\x20||\x20\x27\x27);\x0a\x20\x20\x20\x20\x20\x20const\x20countResult\x20=\x20await\x20db.executeQuery(countQuery,\x20whereParams.length\x20>\x200\x20?\x20whereParams\x20:\x20undefined);\x0a\x20\x20\x20\x20\x20\x20totalRecords\x20=\x20countResult\x20&&\x20countResult[0]\x20?\x20parseInt(countResult[0].total)\x20:\x200;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Build\x20query\x20berdasarkan\x20mode\x20paginasi\x20(subquery\x20wrapping\x20untuk\x20JOIN/CTE)\x0a\x20\x20\x20\x20let\x20query;\x0a\x20\x20\x20\x20if\x20(paginate)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20offset\x20=\x20(page\x20-\x201)\x20*\x20perPage;\x0a\x20\x20\x20\x20\x20\x20query\x20=\x20needsSubquery\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20\x27SELECT\x20*\x20FROM\x20(\x27\x20+\x20baseQuery\x20+\x20\x27)\x20as\x20base_query\x20\x27\x20+\x20(whereClauseSql\x20||\x20\x27\x27)\x20+\x20orderClause\x20+\x20\x27\x20LIMIT\x20\x27\x20+\x20perPage\x20+\x20\x27\x20OFFSET\x20\x27\x20+\x20offset\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20baseQuery\x20+\x20\x27\x20\x27\x20+\x20(whereClauseSql\x20||\x20\x27\x27)\x20+\x20orderClause\x20+\x20`\x20LIMIT\x20${perPage}\x20OFFSET\x20${offset}`;\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20query\x20=\x20needsSubquery\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20\x27SELECT\x20*\x20FROM\x20(\x27\x20+\x20baseQuery\x20+\x20\x27)\x20as\x20base_query\x20\x27\x20+\x20(whereClauseSql\x20||\x20\x27\x27)\x20+\x20orderClause\x20+\x20\x27\x20LIMIT\x20\x27\x20+\x20limit\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20baseQuery\x20+\x20\x27\x20\x27\x20+\x20(whereClauseSql\x20||\x20\x27\x27)\x20+\x20orderClause\x20+\x20`\x20LIMIT\x20${limit}`;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20console.log(\x27List\x20SQL\x20Query:\x27,\x20query);\x0a\x20\x20\x20\x20console.log(\x27List\x20Query\x20Parameters:\x27,\x20whereParams);\x0a\x20\x20\x20\x20const\x20rawData\x20=\x20await\x20db.executeQuery(query,\x20whereParams.length\x20>\x200\x20?\x20whereParams\x20:\x20undefined);\x0a\x0a\x20\x20\x20\x20const\x20data\x20=\x20rawData\x20?\x20rawData.map((row)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20this.formatResponseData(row);\x0a\x20\x20\x20\x20})\x20:\x20[];\x0a\x0a\x20\x20\x20\x20const\x20result\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20data:\x20data\x0a\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20if\x20(paginate)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20totalPages\x20=\x20Math.ceil(totalRecords\x20/\x20perPage);\x0a\x20\x20\x20\x20\x20\x20result.pagination\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20current_page:\x20page,\x0a\x20\x20\x20\x20\x20\x20\x20\x20per_page:\x20perPage,\x0a\x20\x20\x20\x20\x20\x20\x20\x20total_records:\x20totalRecords,\x0a\x20\x20\x20\x20\x20\x20\x20\x20total_pages:\x20totalPages,\x0a\x20\x20\x20\x20\x20\x20\x20\x20has_next:\x20page\x20<\x20totalPages,\x0a\x20\x20\x20\x20\x20\x20\x20\x20has_previous:\x20page\x20>\x201\x0a\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Cache\x20result\x0a\x20\x20\x20\x20await\x20this.setCachedList(options,\x20result);\x0a\x20\x20\x20\x20console.log(`[Cache]\x20SET\x20for\x20list\x20-\x20${cacheInfo}`);\x0a\x0a\x20\x20\x20\x20return\x20result;\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20in\x20getList:\x27,\x20error);\x0a\x20\x20\x20\x20throw\x20error;\x0a\x20\x20}\x0a}\x0a\x0a/**\x0a\x20*\x20Override\x20getLookupData\x20untuk\x20SQLite\x20(dynamic\x20search)\x0a\x20*/\x0aasync\x20getLookupData(search)\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20const\x20query\x20=\x20`SELECT\x20'+_0x51c5a5+',\x20'+_0x290ab2+'\x20FROM\x20${this.getTableSource(\x27read\x27)}\x20WHERE\x20'+_0x290ab2+'\x20LIKE\x20?'+(_0x677087?_0x26f7ac(0x140)+_0x677087:'')+_0x26f7ac(0x1d3)+_0x290ab2+_0x26f7ac(0x1c6)+_0x51c5a5+',\x0a\x20\x20\x20\x20\x20\x20text:\x20item.'+_0x290ab2+_0x26f7ac(0xe6)+(_0x677087?'\x0a\x20\x20\x20\x20//\x20Default\x20scope\x20filter\x0a\x20\x20\x20\x20whereConditions.push(`'+_0x677087+_0x26f7ac(0x144):'')+'\x0a\x20\x20\x20\x20if\x20(search)\x20{\x0a\x20\x20\x20\x20\x20\x20whereConditions.push(`'+_0x290ab2+'\x20LIKE\x20?`);\x0a\x20\x20\x20\x20\x20\x20params.push(`%${search}%`);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Add\x20extra\x20filters\x0a\x20\x20\x20\x20if\x20(extraFilters\x20&&\x20Object.keys(extraFilters).length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(extraFilters))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(this.readableFields.includes(key)\x20&&\x20value\x20!==\x20null\x20&&\x20value\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20whereConditions.push(`${key}\x20=\x20?`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20params.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20const\x20whereClause\x20=\x20whereConditions.length\x20>\x200\x20?\x20\x27WHERE\x20\x27\x20+\x20whereConditions.join(\x27\x20AND\x20\x27)\x20:\x20\x27\x27;\x0a\x0a\x20\x20\x20\x20const\x20query\x20=\x20`SELECT\x20'+_0x51c5a5+',\x20'+_0x290ab2+'\x20FROM\x20${this.getTableSource(\x27read\x27)}\x20${whereClause}\x20ORDER\x20BY\x20'+_0x290ab2+'\x20LIMIT\x20100`;\x0a\x20\x20\x20\x20const\x20data\x20=\x20await\x20db.executeQuery(query,\x20params.length\x20>\x200\x20?\x20params\x20:\x20undefined);\x0a\x0a\x20\x20\x20\x20return\x20data.map(item\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20id:\x20item.'+_0x51c5a5+',\x0a\x20\x20\x20\x20\x20\x20text:\x20item.'+_0x290ab2+'\x0a\x20\x20\x20\x20}));\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20in\x20SQLite\x20getLookupDataDynamic:\x27,\x20error);\x0a\x20\x20\x20\x20throw\x20error;\x0a\x20\x20}\x0a}\x0a\x0a/**\x0a\x20*\x20Override\x20getStaticLookupData\x20untuk\x20SQLite\x0a\x20*/\x0aasync\x20getStaticLookupData(selectedTag)\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20Check\x20cache\x20first\x20-\x20cache\x20tanpa\x20selectedTag\x20karena\x20data\x20sama\x0a\x20\x20\x20\x20const\x20cacheOptions\x20=\x20{\x20type:\x20\x27static\x27\x20};\x0a\x20\x20\x20\x20const\x20cachedResult\x20=\x20await\x20this.getCachedLookup(cacheOptions,\x20\x27static\x27);\x0a\x20\x20\x20\x20if\x20(cachedResult)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Apply\x20selectedTag\x20to\x20cached\x20result\x0a\x20\x20\x20\x20\x20\x20return\x20cachedResult.map(item\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(item.id\x20===\x20selectedTag)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20...item,\x20selected:\x20\x27true\x27\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20id:\x20item.id,\x20text:\x20item.text\x20};\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20const\x20query\x20=\x20`SELECT\x20'+_0x51c5a5+',\x20'+_0x290ab2+'\x20FROM\x20${this.getTableSource(\x27read\x27)}'+(_0x677087?'\x20WHERE\x20'+_0x677087:'')+'\x20ORDER\x20BY\x20'+_0x290ab2+'\x20LIMIT\x201000`;\x0a\x20\x20\x20\x20const\x20data\x20=\x20await\x20db.executeQuery(query);\x0a\x0a\x20\x20\x20\x20//\x20Cache\x20result\x20tanpa\x20selected\x20flag\x0a\x20\x20\x20\x20const\x20cacheData\x20=\x20data.map(item\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20id:\x20item.'+_0x51c5a5+_0x26f7ac(0x13a)+_0x290ab2+'\x0a\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20await\x20this.setCachedLookup(cacheOptions,\x20cacheData,\x20\x27static\x27);\x0a\x0a\x20\x20\x20\x20//\x20Return\x20dengan\x20selected\x20flag\x0a\x20\x20\x20\x20return\x20data.map(item\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20row\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20id:\x20item.'+_0x51c5a5+',\x0a\x20\x20\x20\x20\x20\x20\x20\x20text:\x20item.'+_0x290ab2+'\x0a\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20if\x20(item.'+_0x51c5a5+_0x26f7ac(0x1a9)+_0x51c5a5+'\x27,\x20\x27'+_0x290ab2+_0x26f7ac(0x1f9)+_0x51c5a5+'\x27;\x0a\x20\x20\x20\x20let\x20textField\x20=\x20\x27'+_0x290ab2+_0x26f7ac(0x16d)+_0x51c5a5+'\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20continue;\x20//\x20primary\x20key\x20sudah\x20ada\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Check\x20jika\x20ada\x20SQL\x20expression\x20dengan\x20alias\x20(menggunakan\x20AS)\x0a\x20\x20\x20\x20\x20\x20const\x20aliasRegex\x20=\x20new\x20RegExp(\x27(.+)\x5c\x5cs+as\x5c\x5cs+(\x5c\x5cw+)$\x27,\x20\x27i\x27);\x0a\x20\x20\x20\x20\x20\x20const\x20aliasMatch\x20=\x20column.match(aliasRegex);\x0a\x20\x20\x20\x20\x20\x20if\x20(aliasMatch)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20expression\x20=\x20aliasMatch[1].trim();\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20alias\x20=\x20aliasMatch[2].trim();\x0a\x20\x20\x20\x20\x20\x20\x20\x20selectClause\x20+=\x20`,\x20${expression}\x20AS\x20${alias}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20textField\x20=\x20alias;\x0a\x20\x20\x20\x20\x20\x20\x20\x20aliasField\x20=\x20alias;\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Check\x20jika\x20simple\x20field\x20name\x0a\x20\x20\x20\x20\x20\x20if\x20(this.readableFields.includes(column))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20selectClause\x20+=\x20`,\x20${column}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20textField\x20=\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Computed\x20column\x0a\x20\x20\x20\x20\x20\x20selectClause\x20+=\x20`,\x20${column}`;\x0a\x20\x20\x20\x20\x20\x20textField\x20=\x20column;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20query\x20=\x20`SELECT\x20${selectClause}\x20FROM\x20${this.getTableSource(\x27read\x27)}\x20'+(_0x677087?_0x26f7ac(0x14d)+_0x677087+'\x20':'')+'`;\x0a\x0a\x20\x20\x20\x20//\x20Build\x20WHERE\x20clause\x20jika\x20ada\x0a\x20\x20\x20\x20if\x20((options.where\x20&&\x20Array.isArray(options.where)\x20&&\x20options.where.length\x20>\x200)\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20(options.where\x20&&\x20options.where.conditions\x20&&\x20Array.isArray(options.where.conditions)\x20&&\x20options.where.conditions.length\x20>\x200))\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20whereResult\x20=\x20this.buildComplexWhereClause(options.where,\x20params,\x20\x27\x27,\x20this.readableFields);\x0a\x20\x20\x20\x20\x20\x20\x20\x20query\x20+=\x20`'+(_0x677087?'AND\x20(':_0x1acacf['rSEuT'])+'${whereResult.sql}'+(_0x677087?')':'')+'\x20`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20params\x20=\x20whereResult.params;\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Fail-closed\x20where-field:\x20teruskan\x20error\x20terstruktur\x20apa\x20adanya.\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(e.code\x20===\x20\x27INVALID_WHERE_FIELD\x27)\x20throw\x20e;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20error\x20=\x20new\x20Error(\x27Invalid\x20where\x20conditions:\x20\x27\x20+\x20e.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20error.statusCode\x20=\x20400;\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Handle\x20sort_columns\x0a\x20\x20\x20\x20if\x20(options.sort_columns\x20&&\x20Array.isArray(options.sort_columns)\x20&&\x20options.sort_columns.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20orderParts\x20=\x20options.sort_columns.map(item\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20column\x20=\x20item.column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20direction\x20=\x20(item.direction\x20||\x20\x27ASC\x27).toUpperCase();\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!column)\x20return\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!this.readableFields.includes(column))\x20return\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(direction\x20!==\x20\x27ASC\x27\x20&&\x20direction\x20!==\x20\x27DESC\x27)\x20return\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20`${column}\x20${direction}`;\x0a\x20\x20\x20\x20\x20\x20}).filter(Boolean);\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(orderParts.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20error\x20=\x20new\x20Error(\x27No\x20valid\x20sort\x20columns\x20provided\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20error.statusCode\x20=\x20400;\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20query\x20+=\x20`ORDER\x20BY\x20${orderParts.join(\x27,\x20\x27)}`;\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20query\x20+=\x20`ORDER\x20BY\x20${aliasField\x20||\x20textField}`;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20console.log(\x27SQLite\x20Lookup\x20Filter\x20Query:\x27,\x20query);\x0a\x20\x20\x20\x20console.log(\x27Parameters:\x27,\x20params);\x0a\x0a\x20\x20\x20\x20const\x20data\x20=\x20await\x20db.executeQuery(query,\x20params.length\x20>\x200\x20?\x20params\x20:\x20undefined);\x0a\x0a\x20\x20\x20\x20const\x20result\x20=\x20data.map(item\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20id:\x20item.'+_0x51c5a5+_0x26f7ac(0x1f6)+_0x290ab2+_0x26f7ac(0x15b)+((()=>{const _0x22a47e=_0x26f7ac,_0x205365=_0x5a26da[_0x22a47e(0x105)]&&_0x5a26da['masterDetail']['enabled'],_0x507ce7=_0x5a26da['action']||{};if(!_0x205365||!_0x507ce7[_0x22a47e(0x1b0)]&&!_0x507ce7[_0x22a47e(0x15f)]&&!_0x507ce7[_0x22a47e(0x160)])return'';const _0x43818d=_0x5a26da[_0x22a47e(0x105)][_0x22a47e(0x11c)],_0x4cd04b=_0x43818d['split']('.')['pop'](),_0x32f3b3=_0x5a26da[_0x22a47e(0x105)]['foreignKey'],_0x985dba=_0x5a26da['masterDetail']['detailConfig']?.['primaryKey']||_0x4cd04b+_0x22a47e(0x1a6),_0x369775=_0x5a26da[_0x22a47e(0x105)]['headerCalculations']||null,_0x301585=_0x5a26da[_0x22a47e(0x105)]['detailConfig']?.[_0x22a47e(0x13f)]||{},_0x1bbb62=_0x5a26da[_0x22a47e(0x105)]['detailConfig']?.['detailQuery']||null,_0x6be3c9=[],_0x3b033e=[];for(const [_0x2cb642,_0x158078]of Object['entries'](_0x301585)){if(_0x158078['type']===_0x1acacf['bkxUj'])_0x6be3c9['push'](_0x2cb642);else{const _0x240b1a=(_0x158078[_0x22a47e(0x1b6)]||'')['split']('*')[_0x22a47e(0x129)](_0x4303a4=>_0x4303a4[_0x22a47e(0x182)]());_0x3b033e['push']({'fieldName':_0x2cb642,'qtyField':_0x240b1a[0x0],'priceField':_0x240b1a[0x1]});}}const _0x525de6=_0x301585[_0x22a47e(0x156)]?.['formula']||'',_0x46c9a6=_0x525de6['split']('*')['map'](_0x56025d=>_0x56025d[_0x22a47e(0x182)]()),_0x6f148a=_0x369775?.[_0x22a47e(0x1ab)]?.[_0x22a47e(0x1a7)]?.['replace']('items.','')||'',_0x341261=_0x46c9a6[0x0]||_0x6f148a,_0x15e7eb=_0x46c9a6[0x1]||'unit_price',_0x41e085=_0x3b033e[_0x22a47e(0x129)](_0x3d3d6a=>{const _0x334c36=_0x22a47e;return'\x20\x20\x20\x20\x20\x20//\x20Auto-calculate\x20'+_0x3d3d6a[_0x334c36(0x11a)]+'\x20=\x20'+_0x3d3d6a['qtyField']+'\x20*\x20'+_0x3d3d6a[_0x334c36(0x1da)]+'\x0a\x20\x20\x20\x20\x20\x20item.'+_0x3d3d6a['fieldName']+'\x20=\x20(Number(item.'+_0x3d3d6a['qtyField']+_0x334c36(0x1e4)+_0x3d3d6a[_0x334c36(0x1da)]+')\x20||\x200);';})['join']('\x0a');let _0x2f6fe0='';_0x507ce7[_0x22a47e(0x1b0)]&&(_0x2f6fe0+='\x0a/**\x0a\x20*\x20Composite\x20create\x20-\x20Create\x20header\x20with\x20detail\x20items\x20in\x20a\x20single\x20transaction\x20(SQLite)\x0a\x20*/\x0aasync\x20createComposite(data,\x20eventContext\x20=\x20null)\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20---\x20Hook:\x20onBeforeCompositeInsert\x20---\x0a\x20\x20\x20\x20if\x20(eventContext\x20&&\x20eventContext.componentEngine)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20_ce\x20=\x20eventContext.componentEngine;\x0a\x20\x20\x20\x20\x20\x20var\x20_CB\x20=\x20eventContext.ContextBuilder;\x0a\x20\x20\x20\x20\x20\x20var\x20_detailItems\x20=\x20data[\x27'+_0x4cd04b+_0x22a47e(0x1cf)+_0x4cd04b+'\x27];\x0a\x20\x20\x20\x20\x20\x20var\x20_beforeCtx\x20=\x20_CB.buildCompositeInsertBeforeContext(_headerData,\x20_detailItems,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x5a26da['tableName']+_0x22a47e(0x1a2)+_0x43818d+_0x22a47e(0x120)+_0x32f3b3+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(eventContext.additionalContext\x20||\x20{})\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20var\x20_beforeResult\x20=\x20await\x20_ce.executeOnBeforeComposite(\x27insert\x27,\x20_beforeCtx);\x0a\x20\x20\x20\x20\x20\x20if\x20(!_beforeResult.success)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27onBeforeCompositeInsert\x20failed:\x20\x27\x20+\x20_beforeResult.error);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20const\x20detailKey\x20=\x20\x27'+_0x4cd04b+'\x27;\x0a\x20\x20\x20\x20const\x20headerData\x20=\x20{\x20...data\x20};\x0a\x20\x20\x20\x20delete\x20headerData[detailKey];\x0a\x0a\x20\x20\x20\x20//\x20Build\x20header\x20INSERT\x20with\x20RETURNING\x0a\x20\x20\x20\x20const\x20headerFields\x20=\x20[];\x0a\x20\x20\x20\x20const\x20headerValues\x20=\x20[];\x0a\x20\x20\x20\x20const\x20headerPlaceholders\x20=\x20[];\x0a\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(headerData))\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(value\x20!==\x20undefined\x20&&\x20value\x20!==\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20headerFields.push(key);\x0a\x20\x20\x20\x20\x20\x20\x20\x20headerValues.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20headerPlaceholders.push(\x27?\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Inject\x20audit\x20columns\x20(created_at,\x20created_by,\x20updated_at,\x20updated_by)\x20via\x20helper\x0a\x20\x20\x20\x20this._appendCreateAuditColumns(headerFields,\x20headerValues,\x20headerPlaceholders,\x20headerData,\x20eventContext);\x0a\x0a\x20\x20\x20\x20const\x20insertSql\x20=\x20\x27INSERT\x20INTO\x20\x27\x20+\x20this.writeSource\x20+\x20\x27\x20(\x27\x20+\x20headerFields.join(\x27,\x20\x27)\x20+\x20\x27)\x20VALUES\x20(\x27\x20+\x20headerPlaceholders.join(\x27,\x20\x27)\x20+\x20\x27)\x20RETURNING\x20*\x27;\x0a\x20\x20\x20\x20console.log(\x27Executing\x20header\x20INSERT:\x27,\x20{\x20query:\x20insertSql,\x20values:\x20headerValues\x20});\x0a\x20\x20\x20\x20const\x20headerRows\x20=\x20await\x20db.executeQuery(insertSql,\x20headerValues);\x0a\x20\x20\x20\x20const\x20insertedHeader\x20=\x20headerRows[0];\x0a\x20\x20\x20\x20const\x20masterPkValue\x20=\x20headerData[this.primaryKey];\x0a\x0a\x20\x20\x20\x20console.log(\x27Header\x20inserted\x20successfully:\x20\x27\x20+\x20this.primaryKey\x20+\x20\x27=\x27\x20+\x20masterPkValue);\x0a\x0a\x20\x20\x20\x20//\x20Insert\x20detail\x20items\x0a\x20\x20\x20\x20const\x20insertedItems\x20=\x20[];\x0a\x20\x20\x20\x20const\x20detailTableFull\x20=\x20\x27'+_0x43818d+'\x27;\x0a\x20\x20\x20\x20const\x20fk\x20=\x20\x27'+_0x32f3b3+'\x27;\x0a\x20\x20\x20\x20const\x20detailPk\x20=\x20\x27'+_0x985dba+'\x27;\x0a\x20\x20\x20\x20'+(_0x6be3c9['length']>0x0?'const\x20generatedFields\x20=\x20'+JSON[_0x22a47e(0x1ed)](_0x6be3c9)+';':'')+_0x22a47e(0x1d7)+(_0x41e085?'\x0a'+_0x41e085+'\x0a':'')+'\x0a\x20\x20\x20\x20\x20\x20const\x20detailFields\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20detailValues\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20detailPlaceholders\x20=\x20[];\x0a\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(item))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x6be3c9['length']>0x0?_0x22a47e(0x17c):'')+_0x22a47e(0x117)+_0x5a26da[_0x22a47e(0xf5)]+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20detailTable:\x20\x27'+_0x43818d+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20foreignKey:\x20\x27'+_0x32f3b3+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20primaryKey:\x20this.primaryKey,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(eventContext.additionalContext\x20||\x20{})\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20var\x20_afterResult\x20=\x20await\x20_ce2.executeOnAfterComposite(\x27insert\x27,\x20_afterCtx);\x0a\x20\x20\x20\x20\x20\x20if\x20(!_afterResult.success)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27onAfterCompositeInsert\x20failed:\x20\x27\x20+\x20_afterResult.error);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20console.log(\x27Composite\x20create\x20completed\x20successfully\x27);\x0a\x0a\x20\x20\x20\x20//\x20Invalidate\x20cache\x20setelah\x20write\x20operation\x20berhasil\x0a\x20\x20\x20\x20await\x20this.invalidateCache();\x0a\x0a\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20...insertedHeader,\x0a\x20\x20\x20\x20\x20\x20[detailKey]:\x20insertedItems\x0a\x20\x20\x20\x20};\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20in\x20createComposite:\x27,\x20error);\x0a\x20\x20\x20\x20throw\x20error;\x0a\x20\x20}\x0a}\x0a');_0x507ce7[_0x22a47e(0x15f)]&&(_0x2f6fe0+=_0x22a47e(0xef)+_0x4cd04b+'\x27;\x0a\x20\x20\x20\x20delete\x20headerData[detailKey];\x0a\x20\x20\x20\x20delete\x20headerData[this.primaryKey];\x0a\x0a\x20\x20\x20\x20//\x20---\x20Hook:\x20onBeforeCompositeUpdate\x20---\x0a\x20\x20\x20\x20if\x20(eventContext\x20&&\x20eventContext.componentEngine)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20_ce\x20=\x20eventContext.componentEngine;\x0a\x20\x20\x20\x20\x20\x20var\x20_CB\x20=\x20eventContext.ContextBuilder;\x0a\x20\x20\x20\x20\x20\x20var\x20_detailOps\x20=\x20data[detailKey]\x20||\x20{};\x0a\x20\x20\x20\x20\x20\x20var\x20_beforeCtx\x20=\x20_CB.buildCompositeUpdateBeforeContext(headerData,\x20oldData,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20insert:\x20_detailOps.insert\x20||\x20[],\x0a\x20\x20\x20\x20\x20\x20\x20\x20update:\x20_detailOps.update\x20||\x20[],\x0a\x20\x20\x20\x20\x20\x20\x20\x20delete:\x20_detailOps.delete\x20||\x20[]\x0a\x20\x20\x20\x20\x20\x20},\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x5a26da['tableName']+_0x22a47e(0x1a2)+_0x43818d+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20foreignKey:\x20\x27'+_0x32f3b3+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20primaryKey:\x20this.primaryKey,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(eventContext.additionalContext\x20||\x20{})\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20var\x20_beforeResult\x20=\x20await\x20_ce.executeOnBeforeComposite(\x27update\x27,\x20_beforeCtx);\x0a\x20\x20\x20\x20\x20\x20if\x20(!_beforeResult.success)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27onBeforeCompositeUpdate\x20failed:\x20\x27\x20+\x20_beforeResult.error);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Build\x20header\x20UPDATE\x20with\x20RETURNING\x0a\x20\x20\x20\x20const\x20headerFields\x20=\x20[];\x0a\x20\x20\x20\x20const\x20headerValues\x20=\x20[];\x0a\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(headerData))\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(value\x20!==\x20undefined\x20&&\x20value\x20!==\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20headerFields.push(key\x20+\x20\x27\x20=\x20?\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20headerValues.push(value);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Inject\x20audit\x20columns\x20(updated_at,\x20updated_by)\x20via\x20helper\x0a\x20\x20\x20\x20this._appendUpdateAuditColumns(headerFields,\x20headerValues,\x20headerData,\x20eventContext);\x0a\x0a\x20\x20\x20\x20headerValues.push(primaryKeyValue);\x0a\x20\x20\x20\x20const\x20updateSql\x20=\x20\x27UPDATE\x20\x27\x20+\x20this.writeSource\x20+\x20\x27\x20SET\x20\x27\x20+\x20headerFields.join(\x27,\x20\x27)\x20+\x20\x27\x20WHERE\x20\x27\x20+\x20this.primaryKey\x20+\x20\x27\x20=\x20?\x20RETURNING\x20*\x27;\x0a\x20\x20\x20\x20console.log(\x27Executing\x20header\x20UPDATE:\x27,\x20{\x20query:\x20updateSql,\x20values:\x20headerValues\x20});\x0a\x20\x20\x20\x20const\x20headerRows\x20=\x20await\x20db.executeQuery(updateSql,\x20headerValues);\x0a\x20\x20\x20\x20let\x20updatedHeader\x20=\x20headerRows[0];\x0a\x0a\x20\x20\x20\x20//\x20Process\x20detail\x20items\x0a\x20\x20\x20\x20const\x20detailTableFull\x20=\x20\x27'+_0x43818d+_0x22a47e(0x177)+_0x32f3b3+_0x22a47e(0x102)+_0x985dba+'\x27;\x0a\x20\x20\x20\x20'+(_0x1acacf[_0x22a47e(0x19a)](_0x6be3c9[_0x22a47e(0x12b)],0x0)?'const\x20generatedFields\x20=\x20'+JSON['stringify'](_0x6be3c9)+';':'')+'\x0a\x0a\x20\x20\x20\x20const\x20detailOperations\x20=\x20data[detailKey]\x20||\x20{};\x0a\x20\x20\x20\x20const\x20{\x20insert:\x20insertItems\x20=\x20[],\x20update:\x20updateItems\x20=\x20[],\x20delete:\x20deleteItems\x20=\x20[]\x20}\x20=\x20detailOperations;\x0a\x0a\x20\x20\x20\x20const\x20deletedItems\x20=\x20[];\x0a\x20\x20\x20\x20const\x20updatedItems\x20=\x20[];\x0a\x20\x20\x20\x20const\x20insertedItems\x20=\x20[];\x0a\x0a\x20\x20\x20\x20//\x201.\x20DELETE\x20operations\x0a\x20\x20\x20\x20for\x20(const\x20item\x20of\x20deleteItems)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(!item[detailPk])\x20throw\x20new\x20Error(\x27Missing\x20\x27\x20+\x20detailPk\x20+\x20\x27\x20in\x20delete\x20operation\x27);\x0a\x20\x20\x20\x20\x20\x20const\x20delSql\x20=\x20\x27DELETE\x20FROM\x20\x27\x20+\x20detailTableFull\x20+\x20\x27\x20WHERE\x20\x27\x20+\x20detailPk\x20+\x20\x27\x20=\x20?\x27;\x0a\x20\x20\x20\x20\x20\x20await\x20db.executeQuery(delSql,\x20[item[detailPk]]);\x0a\x20\x20\x20\x20\x20\x20deletedItems.push(item);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20console.log(\x27Deleted\x20\x27\x20+\x20deletedItems.length\x20+\x20\x27\x20detail\x20item(s)\x27);\x0a\x0a\x20\x20\x20\x20//\x202.\x20UPDATE\x20operations\x0a\x20\x20\x20\x20for\x20(const\x20item\x20of\x20updateItems)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(!item[detailPk])\x20throw\x20new\x20Error(\x27Missing\x20\x27\x20+\x20detailPk\x20+\x20\x27\x20in\x20update\x20operation\x27);\x0a'+(_0x41e085?_0x1acacf['lcJjZ']('\x0a'+_0x41e085,'\x0a'):'')+_0x22a47e(0x180)+(_0x1acacf[_0x22a47e(0x19a)](_0x6be3c9[_0x22a47e(0x12b)],0x0)?'if\x20(generatedFields.includes(key))\x20continue;':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20!==\x20undefined\x20&&\x20value\x20!==\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20dFields.push(key\x20+\x20\x27\x20=\x20?\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20dValues.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Inject\x20audit\x20columns\x20(updated_at,\x20updated_by)\x20ke\x20detail\x20UPDATE\x20via\x20helper\x0a\x20\x20\x20\x20\x20\x20this._appendUpdateAuditColumns(dFields,\x20dValues,\x20item,\x20eventContext);\x0a\x0a\x20\x20\x20\x20\x20\x20dValues.push(item[detailPk]);\x0a\x20\x20\x20\x20\x20\x20const\x20dUpdateSql\x20=\x20\x27UPDATE\x20\x27\x20+\x20detailTableFull\x20+\x20\x27\x20SET\x20\x27\x20+\x20dFields.join(\x27,\x20\x27)\x20+\x20\x27\x20WHERE\x20\x27\x20+\x20detailPk\x20+\x20\x27\x20=\x20?\x27;\x0a\x20\x20\x20\x20\x20\x20await\x20db.executeQuery(dUpdateSql,\x20dValues);\x0a\x20\x20\x20\x20\x20\x20updatedItems.push(item);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20console.log(\x27Updated\x20\x27\x20+\x20updatedItems.length\x20+\x20\x27\x20detail\x20item(s)\x27);\x0a\x0a\x20\x20\x20\x20//\x203.\x20INSERT\x20operations\x0a\x20\x20\x20\x20for\x20(const\x20item\x20of\x20insertItems)\x20{\x0a\x20\x20\x20\x20\x20\x20item[fk]\x20=\x20primaryKeyValue;\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Auto-generate\x20UUID\x20untuk\x20detail\x20PK\x20bila\x20client\x20tidak\x20menyupply\x0a\x20\x20\x20\x20\x20\x20//\x20(konsisten\x20dengan\x20createComposite\x20dan\x20konvensi\x20autoGenerate)\x0a\x20\x20\x20\x20\x20\x20if\x20(item[detailPk]\x20===\x20undefined\x20||\x20item[detailPk]\x20===\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20item[detailPk]\x20=\x20require(\x27uuid\x27).v7();\x0a\x20\x20\x20\x20\x20\x20}\x0a'+(_0x41e085?_0x1acacf['EHXGw']('\x0a',_0x41e085)+'\x0a':'')+'\x0a\x20\x20\x20\x20\x20\x20const\x20dFields\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20dValues\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20dPlaceholders\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(item))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x1acacf['HJFdW'](_0x6be3c9[_0x22a47e(0x12b)],0x0)?_0x22a47e(0x17c):'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20!==\x20undefined\x20&&\x20value\x20!==\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20dFields.push(key);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20dValues.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20dPlaceholders.push(\x27?\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Inject\x20audit\x20columns\x20ke\x20detail\x20INSERT\x20via\x20helper\x0a\x20\x20\x20\x20\x20\x20this._appendCreateAuditColumns(dFields,\x20dValues,\x20dPlaceholders,\x20item,\x20eventContext);\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20dInsertSql\x20=\x20\x27INSERT\x20INTO\x20\x27\x20+\x20detailTableFull\x20+\x20\x27\x20(\x27\x20+\x20dFields.join(\x27,\x20\x27)\x20+\x20\x27)\x20VALUES\x20(\x27\x20+\x20dPlaceholders.join(\x27,\x20\x27)\x20+\x20\x27)\x27;\x0a\x20\x20\x20\x20\x20\x20await\x20db.executeQuery(dInsertSql,\x20dValues);\x0a\x20\x20\x20\x20\x20\x20insertedItems.push(item);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20console.log(\x27Inserted\x20\x27\x20+\x20insertedItems.length\x20+\x20\x27\x20new\x20detail\x20item(s)\x27);\x0a\x0a\x20\x20\x20\x20//\x20Get\x20all\x20current\x20detail\x20items\x0a\x20\x20\x20\x20const\x20allItemsSql\x20=\x20\x27SELECT\x20*\x20FROM\x20\x27\x20+\x20detailTableFull\x20+\x20\x27\x20WHERE\x20\x27\x20+\x20fk\x20+\x20\x27\x20=\x20?\x20ORDER\x20BY\x20line_number\x27;\x0a\x20\x20\x20\x20const\x20allItems\x20=\x20await\x20db.executeQuery(allItemsSql,\x20[primaryKeyValue]);\x0a'+(_0x369775?'\x0a\x20\x20\x20\x20//\x20Recalculate\x20header\x20totals\x0a\x20\x20\x20\x20const\x20calculations\x20=\x20'+JSON[_0x22a47e(0x1ed)](_0x369775)+_0x22a47e(0x128)+(_0x341261?_0x22a47e(0x151)+_0x341261+_0x22a47e(0x13d)+_0x15e7eb+')\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20sum\x20+\x20(qty\x20*\x20price);\x0a\x20\x20\x20\x20\x20\x20},\x200);\x0a\x20\x20\x20\x20\x20\x20recalcFields.push(\x27total_amount\x20=\x20?\x27);\x0a\x20\x20\x20\x20\x20\x20recalcValues.push(totalAmount);\x0a\x20\x20\x20\x20}':_0x22a47e(0x1fc))+_0x22a47e(0xe2):'')+_0x22a47e(0x139)+_0x5a26da[_0x22a47e(0xf5)]+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20detailTable:\x20\x27'+_0x43818d+_0x22a47e(0x120)+_0x32f3b3+_0x22a47e(0x131));if(_0x507ce7[_0x22a47e(0x160)]){let _0x2d8d67;_0x1bbb62?_0x2d8d67='const\x20detailSql\x20=\x20`'+_0x1bbb62[_0x22a47e(0xfe)](/\$1/g,'?')+'`;':_0x2d8d67=_0x22a47e(0x12c)+_0x43818d+'\x20WHERE\x20'+_0x32f3b3+_0x22a47e(0x104),_0x2f6fe0+=_0x22a47e(0x155)+_0x4cd04b+'\x27;\x0a\x20\x20\x20\x20'+_0x2d8d67+'\x0a\x0a\x20\x20\x20\x20for\x20(const\x20header\x20of\x20headerResults)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20pkValue\x20=\x20header[this.primaryKey];\x0a\x20\x20\x20\x20\x20\x20const\x20detailResults\x20=\x20await\x20db.executeQuery(detailSql,\x20[pkValue]);\x0a\x20\x20\x20\x20\x20\x20compositeResults.push({\x0a\x20\x20\x20\x20\x20\x20\x20\x20...header,\x0a\x20\x20\x20\x20\x20\x20\x20\x20[detailKey]:\x20detailResults\x20||\x20[]\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20count:\x20compositeResults.length,\x0a\x20\x20\x20\x20\x20\x20data:\x20compositeResults\x0a\x20\x20\x20\x20};\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20in\x20readComposite:\x27,\x20error);\x0a\x20\x20\x20\x20throw\x20error;\x0a\x20\x20}\x0a}\x0a';}return _0x2f6fe0;})())+'\x0a}\x0a\x0amodule.exports\x20=\x20new\x20'+_0x1b66b1+'Model();';}function createSqliteSubmoduleTemplate(_0x2b62ee,_0x59c679,_0x20c734){const _0x1dcca7=a0_0x5e61,_0x554c86={'ZRDjm':function(_0x42cd6f,_0x6324f4){return _0x42cd6f(_0x6324f4);},'kYEbr':_0x1dcca7(0x16b),'CRKnl':'update_existing','fsRXh':'items.','ZZtmB':'unit_price','AebWS':'//\x20WARNING:\x20headerCalculations.total_amount\x20skipped\x20—\x20no\x20qty\x20field\x20configured','rUUcv':function(_0x5ea976,_0x1702af){return _0x5ea976!==_0x1702af;},'YrznF':function(_0x5c5ca0,_0xba2f84){return _0x5c5ca0!==_0xba2f84;}},_0x402224=_0x554c86[_0x1dcca7(0x1f0)](toCamelCase,_0x59c679)+'Model',_0x108fa4=_0x20c734[_0x1dcca7(0x10a)]||'id',_0x52af69=new Date()[_0x1dcca7(0x1ce)](),_0x32295e=Object['entries'](_0x20c734[_0x1dcca7(0x16f)]||{})['filter'](([,_0x452650])=>_0x452650)[_0x1dcca7(0x129)](([_0x12e54])=>_0x12e54),_0x187223=_0x20c734[_0x1dcca7(0xeb)]&&Array[_0x1dcca7(0x1dc)](_0x20c734['components'])&&_0x20c734['components'][_0x1dcca7(0x12b)]>0x0,_0xdc939=_0x20c734[_0x1dcca7(0x173)]||'SELECT\x20'+_0x20c734[_0x1dcca7(0x11a)]['join'](',\x20')+_0x1dcca7(0x1dd)+_0x20c734['tableName'],_0x40b3f5=_0xdc939[_0x1dcca7(0xfe)](/\\/g,'\x5c\x5c')[_0x1dcca7(0xfe)](/'/g,'\x5c\x27'),_0x9b50ef=JSON[_0x1dcca7(0x1ed)](_0x20c734['fieldName']),_0x4b51d4=_0x20c734['columnFormats']?JSON[_0x1dcca7(0x1ed)](_0x20c734[_0x1dcca7(0x181)]):_0x554c86['kYEbr'],_0x44056d=_0x20c734[_0x1dcca7(0x141)]?JSON['stringify'](_0x20c734['fieldLabels']):_0x554c86['kYEbr'],_0x352c8f=_0x20c734[_0x1dcca7(0x16f)]&&_0x20c734[_0x1dcca7(0x16f)]['import']?{'enabled':!![],'upsertKeys':(_0x20c734['importConfig']||{})['upsertKeys']||[_0x108fa4],'upsertStrategy':(_0x20c734['importConfig']||{})['upsertStrategy']||_0x554c86['CRKnl'],'requiredFields':(_0x20c734[_0x1dcca7(0x126)]||{})['requiredFields']||[],'validations':(_0x20c734[_0x1dcca7(0x126)]||{})[_0x1dcca7(0x1c4)]||{},'lookupFields':(_0x20c734['importConfig']||{})['lookupFields']||{},'excludeFromImport':(_0x20c734[_0x1dcca7(0x126)]||{})['excludeFromImport']||[],'chunkSize':(_0x20c734['importConfig']||{})[_0x1dcca7(0x1af)]||0x64}:null,_0x570510=_0x352c8f?JSON['stringify'](_0x352c8f):_0x1dcca7(0x16b),_0x24277f=_0x20c734['action']&&_0x20c734['action']['export']?'\x27'+_0x40b3f5+'\x27':_0x1dcca7(0x16b),_0x1d4aa7=_0x20c734[_0x1dcca7(0x16f)]&&_0x20c734['action']['adjust']?_0x20c734['adjustConfig']||{}:null,_0x281dec=_0x1d4aa7?JSON['stringify'](_0x1d4aa7):'null';let _0x24bb75=_0x1dcca7(0x170);_0x187223&&(_0x24bb75+='componentEngine\x20=\x20require(\x27@restforgejs/platform/src/utils/component-engine\x27).componentEngine;\x0a',_0x24bb75+='ContextBuilder\x20=\x20require(\x27@restforgejs/platform/src/utils/context-builder\x27);\x0a');const _0x2f9b6e=_0x20c734['requestScope']?'\x0a\x20\x20\x20\x20//\x20Request\x20scope\x20ownership\x20verification\x20(Layer\x201\x20RLS)\x0a\x20\x20\x20\x20if\x20(req._requestScope)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20scopeCheck\x20=\x20await\x20'+_0x402224+_0x1dcca7(0x121)+_0x59c679+'\x20data\x20not\x20found\x20or\x20access\x20denied\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a':'',_0xe7c9bf=_0x20c734[_0x1dcca7(0x15c)]?_0x1dcca7(0x158)+_0x59c679+'\x20data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a':'',_0x345e16=_0x20c734['requestScope']?_0x1dcca7(0x11d)+_0x402224+_0x1dcca7(0xfa)+_0x108fa4+_0x1dcca7(0x116)+_0x108fa4+_0x1dcca7(0x199):'';let _0xfe2ef8=_0x1dcca7(0x119)+_0x402224+'\x20=\x20require(\x27../../models/'+_0x2b62ee+'/'+_0x59c679+'\x27);\x0a'+_0x24bb75+_0x1dcca7(0x1d6)+toPascalCase(_0x59c679)+_0x1dcca7(0x1e6)+_0x52af69+_0x1dcca7(0x10f)+_0x59c679+'\x0a*\x20Actions:\x20'+_0x32295e[_0x1dcca7(0x172)](',\x20')+'\x0a*\x20Table:\x20'+_0x20c734[_0x1dcca7(0xf5)]+'\x0a*\x20Database:\x20SQLite\x0a*/\x0a\x0a//\x20Primary\x20key\x20untuk\x20endpoint\x20ini\x0aconst\x20primaryKey\x20=\x20\x27'+_0x108fa4+'\x27;\x0a\x0a//\x20Issue\x20#13:\x20ekstrak\x20field\x20penyebab\x20konflik\x20dari\x20error\x20unique-violation\x20SQLite.\x0a//\x20Mengembalikan\x20map\x20{\x20field:\x20[pesan]\x20}\x20atau\x20null\x20(call-site\x20meng-omit\x20`details`).\x0afunction\x20buildDuplicateDetails(error)\x20{\x0a\x20\x20if\x20(!error\x20||\x20typeof\x20error.message\x20!==\x20\x27string\x27)\x20return\x20null;\x0a\x20\x20const\x20m\x20=\x20error.message.match(/UNIQUE\x20constraint\x20failed:\x5cs*(.+)$/);\x0a\x20\x20if\x20(!m)\x20return\x20null;\x0a\x20\x20const\x20cols\x20=\x20m[1].split(\x27,\x27).map((p)\x20=>\x20p.trim().split(\x27.\x27).pop()).filter(Boolean);\x0a\x20\x20if\x20(cols.length\x20===\x200)\x20return\x20null;\x0a\x20\x20const\x20msg\x20=\x20cols.length\x20>\x201\x0a\x20\x20\x20\x20?\x20\x27A\x20record\x20with\x20this\x20combination\x20of\x20values\x20already\x20exists\x27\x0a\x20\x20\x20\x20:\x20\x27A\x20record\x20with\x20this\x20value\x20already\x20exists\x27;\x0a\x20\x20const\x20details\x20=\x20{};\x0a\x20\x20for\x20(const\x20c\x20of\x20cols)\x20details[c]\x20=\x20[msg];\x0a\x20\x20return\x20details;\x0a}\x0a\x0a//\x20Component\x20configuration\x20untuk\x20export/import\x20(parsed\x20oleh\x20config-extractor\x20—\x20jangan\x20dimodifikasi)\x0aconst\x20componentConfig\x20=\x20{\x0a\x20\x20tableName:\x20\x27'+_0x20c734[_0x1dcca7(0xf5)]+_0x1dcca7(0x179)+_0x9b50ef+',\x0a\x20\x20exportQuery:\x20'+_0x24277f+_0x1dcca7(0x10e)+_0x4b51d4+',\x0a\x20\x20fieldLabels:\x20'+_0x44056d+_0x1dcca7(0x143)+_0x570510+_0x1dcca7(0x154)+_0x281dec+',\x0a\x20\x20uploadConfig:\x20'+(_0x20c734['uploadConfig']?JSON['stringify'](_0x20c734['uploadConfig']):'null')+_0x1dcca7(0x1c0)+(_0x20c734['requestScope']?JSON['stringify'](_0x20c734['requestScope']):_0x1dcca7(0x16b))+_0x1dcca7(0x198)+(_0x187223?'\x0a//\x20Initialize\x20component\x20engine\x20dengan\x20event\x20handlers\x20dari\x20payload\x0aconst\x20_componentPayload\x20=\x20{\x20components:\x20'+JSON[_0x1dcca7(0x1ed)](_0x20c734['components'])+_0x1dcca7(0x150)+_0x2b62ee+'/'+_0x59c679+':\x20${result.componentsLoaded}\x20components`);\x0a\x20\x20}\x0a}).catch(err\x20=>\x20{\x0a\x20\x20console.error(`Failed\x20to\x20load\x20component\x20configuration\x20for\x20'+_0x2b62ee+'/'+_0x59c679+':`,\x20err.message);\x0a});\x0a':'')+'\x0a//\x20CORS\x20ditangani\x20di\x20level\x20app\x20oleh\x20cors\x20middleware\x20(lihat\x20konfigurasi\x20CORS_ENABLED\x20dan\x20CORS_ORIGINS\x20di\x20.env)\x0a\x0a//\x20Request\x20ID\x20untuk\x20tracing\x20—\x20support\x20correlation\x20ID\x20dari\x20upstream\x0arouter.use((req,\x20res,\x20next)\x20=>\x20{\x0a\x20\x20req.sqliteRequestId\x20=\x20req.headers[\x27x-correlation-id\x27]\x20||\x20`sqlite_${Date.now()}_${Math.random().toString(36).substr(2,\x209)}`;\x0a\x20\x20res.setHeader(\x27X-Correlation-ID\x27,\x20req.sqliteRequestId);\x0a\x20\x20res.setHeader(\x27X-SQLite-Request-ID\x27,\x20req.sqliteRequestId);\x0a\x20\x20next();\x0a});\x0a\x0a\x0a\x0a//\x20Middleware\x20untuk\x20validasi\x20payload\x20SQLite\x0arouter.use((req,\x20res,\x20next)\x20=>\x20{\x0a\x20\x20if\x20(req.method\x20===\x20\x27POST\x27)\x20{\x0a\x20\x20\x20\x20//\x20Skip\x20validation\x20untuk\x20endpoint\x20export/import\x20(ditangani\x20oleh\x20centralized\x20handler)\x0a\x20\x20\x20\x20if\x20(req.path.startsWith(\x27/import\x27)\x20||\x20req.path.startsWith(\x27/export\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20next();\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20endpoint\x20=\x20req.path.substring(1);\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(endpoint\x20===\x20\x27first\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(Array.isArray(req.body.where)\x20&&\x20req.body.where.length\x20===\x201)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20req.body.where\x20=\x20req.body.where[0];\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!req.body.where\x20||\x20typeof\x20req.body.where\x20!==\x20\x27object\x27\x20||\x20Array.isArray(req.body.where))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Where\x20must\x20be\x20a\x20single\x20condition\x20{key,\x20value}\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20{\x20\x22key\x22:\x20\x22field_name\x22,\x20\x22value\x22:\x20\x22field_value\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22select\x22:\x20[\x22field1\x22,\x20\x22field2\x22]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(req.body.where.conditions\x20||\x20req.body.where.logic)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Advanced\x20where\x20format\x20is\x20not\x20supported\x20in\x20/first\x20endpoint.\x20Use\x20/read\x20endpoint\x20for\x20complex\x20queries\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20{\x20\x22key\x22:\x20\x22field_name\x22,\x20\x22value\x22:\x20\x22field_value\x22\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(endpoint\x20===\x20\x27delete\x27\x20&&\x20(!req.body.where))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27DELETE\x20payload\x20must\x20include\x20a\x20where\x20property\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20[{\x20\x22key\x22:\x20\x22'+_0x108fa4+'\x22,\x20\x22value\x22:\x20\x22your-value\x22\x20}]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20console.error(`Error\x20validating\x20SQLite\x20payload\x20for\x20${req.path}:`,\x20error);\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20payload\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20details:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x20\x20next();\x0a});\x0a\x0a';_0xfe2ef8+=buildRequestScopeMiddleware(_0x20c734,_0x59c679);_0x20c734[_0x1dcca7(0x16f)]&&_0x20c734[_0x1dcca7(0x16f)]['datatables']&&(_0xfe2ef8+='//\x20POST\x20/api/'+_0x2b62ee+'/'+_0x59c679+'/datatables\x20-\x20Data\x20untuk\x20DataTables\x0arouter.post(\x27/datatables\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20const\x20options\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20searchValue:\x20req.body.search?.value\x20||\x20req.body.searchValue\x20||\x20req.body.search_value\x20||\x20\x27\x27,\x0a\x20\x20\x20\x20\x20\x20searchBy:\x20req.body.searchBy\x20||\x20req.body.search_by\x20||\x20\x27all\x27,\x0a\x20\x20\x20\x20\x20\x20perPage:\x20Math.min(parseInt(req.body.length\x20||\x20req.body.pagination?.perpage\x20||\x2010,\x2010),\x201000),\x0a\x20\x20\x20\x20\x20\x20start:\x20Math.max(parseInt(req.body.start\x20||\x200,\x2010),\x200),\x0a\x20\x20\x20\x20\x20\x20draw:\x20req.body.draw\x20||\x20\x271\x27\x0a\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20//\x20Handle\x20sort_columns\x0a\x20\x20\x20\x20if\x20(req.body.sort_columns\x20&&\x20Array.isArray(req.body.sort_columns)\x20&&\x20req.body.sort_columns.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20options.sort_columns\x20=\x20req.body.sort_columns.map(item\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20\x20\x20column:\x20item.column,\x0a\x20\x20\x20\x20\x20\x20\x20\x20direction:\x20(item.direction\x20||\x20\x27ASC\x27).toUpperCase()\x0a\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Fallback:\x20Handle\x20DataTables\x20standard\x20format\x20(order[0][column]\x20dan\x20order[0][dir])\x0a\x20\x20\x20\x20if\x20(req.body[\x27order[0][column]\x27]\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20options[\x27order[0][column]\x27]\x20=\x20req.body[\x27order[0][column]\x27];\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(req.body[\x27order[0][dir]\x27]\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20options[\x27order[0][dir]\x27]\x20=\x20req.body[\x27order[0][dir]\x27];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Handle\x20filters\x20dengan\x20sanitasi\x0a\x20\x20\x20\x20if\x20(req.body.filters\x20&&\x20typeof\x20req.body.filters\x20===\x20\x27object\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20sanitizedFilters\x20=\x20{};\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(req.body.filters))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20!==\x20null\x20&&\x20value\x20!==\x20undefined\x20&&\x20value\x20!==\x20\x27\x27\x20&&\x20value\x20!==\x20\x27all\x27\x20&&\x20value\x20!==\x20\x27-\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sanitizedFilters[key]\x20=\x20value;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(Object.keys(sanitizedFilters).length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20options.filters\x20=\x20sanitizedFilters;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Support\x20WHERE\x20conditions\x0a\x20\x20\x20\x20if\x20(req.body.where)\x20{\x0a\x20\x20\x20\x20\x20\x20options.where\x20=\x20req.body.where;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Advanced\x20filters\x20support\x0a\x20\x20\x20\x20if\x20(req.body.advanced_filters\x20&&\x20Array.isArray(req.body.advanced_filters))\x20{\x0a\x20\x20\x20\x20\x20\x20options.advancedFilters\x20=\x20req.body.advanced_filters;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Gunakan\x20model\x20untuk\x20mendapatkan\x20data\x0a\x20\x20\x20\x20const\x20result\x20=\x20await\x20'+_0x402224+_0x1dcca7(0x1a0)+_0x59c679+'\x20datatables:\x27,\x20error);\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x27INVALID_WHERE_FIELD\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20where\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Invalid\x20field:\x20${error.invalidField}`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20{\x20validFields:\x20error.validFields\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20const\x20statusCode\x20=\x20error.statusCode\x20||\x20500;\x0a\x20\x20\x20\x20return\x20res.status(statusCode).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20statusCode\x20===\x20400\x20?\x20\x27Bad\x20Request\x27\x20:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20statusCode\x20===\x20400\x20?\x20error.message\x20:\x20\x27An\x20error\x20occurred\x20while\x20fetching\x20'+_0x59c679+_0x1dcca7(0x1bd));_0x20c734[_0x1dcca7(0x16f)]&&_0x20c734['action']['lookup']&&(_0xfe2ef8+=_0x1dcca7(0xe5)+_0x2b62ee+'/'+_0x59c679+'/lookup\x20-\x20SQLite\x20Dynamic\x20Lookup\x0arouter.get(\x27/lookup\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20const\x20sqliteRequestId\x20=\x20req.sqliteRequestId;\x0a\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20const\x20requestMode\x20=\x20req.headers[\x27x-request-mode\x27];\x0a\x0a\x20\x20\x20\x20if\x20(requestMode\x20!==\x20\x27dynamic\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20Request\x20Mode\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27X-Request-Mode\x20header\x20must\x20be\x20set\x20to\x20dynamic\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20search\x20=\x20req.query.search\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20if\x20(Array.isArray(search))\x20{\x0a\x20\x20\x20\x20\x20\x20search\x20=\x20search[0]\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Search\x20length\x20validation\x0a\x20\x20\x20\x20if\x20(search.length\x20>\x20100)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Search\x20Too\x20Long\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Search\x20parameter\x20must\x20not\x20exceed\x20100\x20characters\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20console.log(`[SQLite-LKP]\x20${sqliteRequestId}\x20dynamic\x20search:\x20${search}`);\x0a\x0a\x20\x20\x20\x20//\x20Collect\x20extra\x20filters\x20dari\x20query\x20params\x0a\x20\x20\x20\x20const\x20extraFilters\x20=\x20{};\x0a\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(req.query))\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(key\x20!==\x20\x27search\x27\x20&&\x20'+_0x402224+'.validFields.includes(key)\x20&&\x20value)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20extraFilters[key]\x20=\x20value;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20const\x20startTime\x20=\x20Date.now();\x0a\x20\x20\x20\x20const\x20list\x20=\x20Object.keys(extraFilters).length\x20>\x200\x20?\x0a\x20\x20\x20\x20\x20\x20await\x20'+_0x402224+_0x1dcca7(0x132)+_0x402224+_0x1dcca7(0x183)+_0x59c679+_0x1dcca7(0x166));_0x20c734[_0x1dcca7(0x16f)]&&_0x20c734['action']['lookup']&&(_0xfe2ef8+='//\x20POST\x20/api/'+_0x2b62ee+'/'+_0x59c679+_0x1dcca7(0x10d)+_0x402224+_0x1dcca7(0x1b5)+_0x402224+_0x1dcca7(0x1cd)+_0x59c679+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a');_0x20c734[_0x1dcca7(0x16f)]&&_0x20c734[_0x1dcca7(0x16f)][_0x1dcca7(0x189)]&&(_0xfe2ef8+=_0x1dcca7(0x1f7)+_0x2b62ee+'/'+_0x59c679+'/create\x20-\x20SQLite\x20Insert\x0arouter.post(\x27/create\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20data\x0a\x20\x20\x20\x20if\x20(typeof\x20'+_0x402224+_0x1dcca7(0x11b)+_0x402224+'.validateData(req.body,\x20\x27insert\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(!validation.isValid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Validation\x20failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20validation.errors,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20req.body\x20=\x20{\x20...req.body,\x20...validation.sanitizedData\x20};\x0a\x20\x20\x20\x20}\x0a\x0a'+(_0x187223?'\x0a\x20\x20\x20\x20//\x20Component\x20engine:\x20build\x20eventContext\x20untuk\x20model-level\x20event\x20lifecycle\x0a\x20\x20\x20\x20if\x20(componentEngine\x20&&\x20ContextBuilder)\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20eventContext\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20componentEngine:\x20componentEngine,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ContextBuilder:\x20ContextBuilder,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x20c734[_0x1dcca7(0xf5)]+_0x1dcca7(0x1ec)+_0x402224+'.addData(req.body,\x20eventContext);\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[INTEGRATED\x20TRANSACTION]\x20INSERT\x20completed\x20successfully\x20with\x20events\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27[INTEGRATED\x20TRANSACTION]\x20INSERT\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20result\x20=\x20await\x20'+_0x402224+'.addData(req.body,\x20{\x20additionalContext:\x20{\x20requestId:\x20req.id\x20||\x20null\x20}\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[FALLBACK]\x20INSERT\x20completed\x20without\x20events\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27[FALLBACK]\x20INSERT\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a':_0x1dcca7(0x1b1)+_0x402224+_0x1dcca7(0x1e3))+'\x0a\x20\x20\x20\x20console.log(`'+_0x59c679+_0x1dcca7(0x1bf)+_0x108fa4+_0x1dcca7(0xfb)+_0x59c679+_0x1dcca7(0x1d9)+_0x59c679+':\x27,\x20error);\x0a\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x27SQLITE_CONSTRAINT_UNIQUE\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20details\x20=\x20buildDuplicateDetails(error);\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(409).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Duplicate\x20entry\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27A\x20record\x20with\x20this\x20value\x20already\x20exists\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(details\x20?\x20{\x20details\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x27SQLITE_CONSTRAINT_FOREIGNKEY\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Foreign\x20key\x20constraint\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Referenced\x20data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20adding\x20'+_0x59c679+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a');_0x20c734['action']&&_0x20c734[_0x1dcca7(0x16f)][_0x1dcca7(0x1ae)]&&(_0xfe2ef8+=_0x1dcca7(0x1f7)+_0x2b62ee+'/'+_0x59c679+'/update\x20-\x20SQLite\x20Update\x0arouter.post(\x27/update\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20Validasi\x20payload\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20primary\x20key\x0a\x20\x20\x20\x20const\x20primaryKey\x20=\x20\x27'+_0x108fa4+_0x1dcca7(0x1ee)+_0x2f9b6e+'\x0a\x20\x20\x20\x20//\x20Validasi\x20data\x20dengan\x20model\x20jika\x20tersedia\x0a\x20\x20\x20\x20if\x20(typeof\x20'+_0x402224+_0x1dcca7(0x11b)+_0x402224+'.validateData(req.body,\x20\x27update\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(!validation.isValid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Validation\x20failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20validation.errors,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20req.body\x20=\x20{\x20...req.body,\x20...validation.sanitizedData\x20};\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20responseData\x20=\x20null;\x0a\x0a'+(_0x187223?'\x0a\x20\x20\x20\x20//\x20Integrated\x20transaction\x20dengan\x20event\x20lifecycle\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20eventContext\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20componentEngine:\x20componentEngine,\x0a\x20\x20\x20\x20\x20\x20\x20\x20ContextBuilder:\x20ContextBuilder,\x0a\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x20c734[_0x1dcca7(0xf5)]+_0x1dcca7(0x17d)+_0x402224+'.updateData(req.body,\x20eventContext);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27[INTEGRATED\x20TRANSACTION]\x20UPDATE\x20completed\x20successfully\x20with\x20events\x27);\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20console.error(\x27[INTEGRATED\x20TRANSACTION]\x20UPDATE\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x0a':_0x1dcca7(0x10b)+_0x402224+_0x1dcca7(0x109))+'\x0a\x20\x20\x20\x20//\x20Log\x20successful\x20operation\x0a\x20\x20\x20\x20console.log(`'+_0x59c679+_0x1dcca7(0x1e9)+_0x108fa4+_0x1dcca7(0x174)+_0x108fa4+'\x27]}`);\x0a\x0a\x20\x20\x20\x20return\x20res.status(200).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x59c679+'\x20data\x20successfully\x20updated\x27,\x0a\x20\x20\x20\x20\x20\x20data:\x20responseData,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20saat\x20mengupdate\x20data\x20'+_0x59c679+':\x27,\x20error);\x0a\x0a\x20\x20\x20\x20if\x20(error.message\x20===\x20\x27Data\x20tidak\x20ditemukan\x27\x20||\x20error.message.includes(\x27not\x20found\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x59c679+_0x1dcca7(0x1a8)+_0x59c679+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a');_0x20c734[_0x1dcca7(0x16f)]&&_0x20c734['action'][_0x1dcca7(0x1e7)]&&(_0xfe2ef8+='//\x20POST\x20/api/'+_0x2b62ee+'/'+_0x59c679+_0x1dcca7(0x1ad)+_0x108fa4+'\x27;\x0a\x20\x20\x20\x20if\x20(!req.body[primaryKey])\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Primary\x20key\x20(${primaryKey})\x20is\x20required\x20for\x20adjust`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20adjustments\x20array\x0a\x20\x20\x20\x20if\x20(!req.body.adjustments\x20||\x20!Array.isArray(req.body.adjustments)\x20||\x20req.body.adjustments.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27adjustments\x20array\x20is\x20required\x20and\x20must\x20not\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a'+_0x2f9b6e+'\x0a\x20\x20\x20\x20const\x20adjustConfig\x20=\x20componentConfig.adjustConfig\x20||\x20{};\x0a\x20\x20\x20\x20let\x20responseData\x20=\x20null;\x0a\x0a'+(_0x187223?_0x1dcca7(0x142)+_0x20c734['tableName']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20additionalContext:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20user_id:\x20req.headers[\x27user-id\x27]\x20||\x20req.headers[\x27x-user-id\x27]\x20||\x20\x27system\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20options:\x20req.bodyOptions\x20||\x20{}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20responseData\x20=\x20await\x20'+_0x402224+_0x1dcca7(0x1e0):_0x1dcca7(0x10b)+_0x402224+'.adjustData(req.body,\x20adjustConfig,\x20{\x20additionalContext:\x20{\x20requestId:\x20req.id\x20||\x20null\x20}\x20});\x0a\x20\x20\x20\x20\x20\x20console.log(\x27[FALLBACK]\x20ADJUST\x20completed\x20without\x20events\x27);\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20console.error(\x27[FALLBACK]\x20ADJUST\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x0a')+_0x1dcca7(0x1a5)+_0x59c679+_0x1dcca7(0x1d8)+_0x108fa4+'=${req.body[\x27'+_0x108fa4+_0x1dcca7(0x1b3)+_0x59c679+'\x20data\x20successfully\x20adjusted\x27,\x0a\x20\x20\x20\x20\x20\x20data:\x20responseData,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20saat\x20mengadjust\x20data\x20'+_0x59c679+':\x27,\x20error);\x0a\x0a\x20\x20\x20\x20if\x20(error.statusCode\x20===\x20403)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(403).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Pro\x20Feature\x20Required\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20upgrade:\x20\x27https://restforge.dev/pricing\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(error.message.includes(\x27constraint\x20violation\x27)\x20||\x20error.message.includes(\x27below\x20minimum\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(409).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Constraint\x20violation\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(error.message.includes(\x27not\x20configured\x20for\x20adjustment\x27)\x20||\x20error.message.includes(\x27is\x20required\x20for\x20adjust\x27)\x20||\x20error.message.includes(\x27must\x20be\x20a\x20non-zero\x20number\x27)\x20||\x20error.message.includes(\x27not\x20a\x20valid\x20field\x27)\x20||\x20error.message.includes(\x27must\x20not\x20be\x20empty\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Validation\x20error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(error.message\x20===\x20\x27Data\x20tidak\x20ditemukan\x27\x20||\x20error.message.includes(\x27not\x20found\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x59c679+'\x20data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x27SQLITE_CONSTRAINT_UNIQUE\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20details\x20=\x20buildDuplicateDetails(error);\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(409).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Duplicate\x20entry\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27A\x20record\x20with\x20this\x20value\x20already\x20exists\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(details\x20?\x20{\x20details\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20adjusting\x20'+_0x59c679+_0x1dcca7(0x1bd));if(_0x20c734[_0x1dcca7(0x16f)]&&_0x20c734[_0x1dcca7(0x16f)][_0x1dcca7(0x161)]){const _0x41f066=_0x20c734['aggregateConfig']?JSON[_0x1dcca7(0x1ed)](_0x20c734['aggregateConfig']):'{}';_0xfe2ef8+=_0x1dcca7(0x1f7)+_0x2b62ee+'/'+_0x59c679+'/aggregate\x20-\x20SQLite\x20Aggregate\x20(count,\x20sum,\x20avg,\x20min,\x20max)\x0arouter.post(\x27/aggregate\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20const\x20aggregateConfig\x20=\x20'+_0x41f066+';\x0a\x20\x20\x20\x20const\x20result\x20=\x20await\x20'+_0x402224+_0x1dcca7(0x13e)+_0x59c679+':\x27,\x20error);\x0a\x0a\x20\x20\x20\x20if\x20(error.statusCode\x20===\x20403)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(403).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Pro\x20Feature\x20Required\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20upgrade:\x20\x27https://restforge.dev/pricing\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(error.statusCode\x20===\x20400\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20error.message.includes(\x27not\x20a\x20valid\x20field\x27)\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20error.message.includes(\x27Invalid\x20aggregate\x20function\x27)\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20error.message.includes(\x27Invalid\x20alias\x27)\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20error.message.includes(\x27only\x20allowed\x20with\x20COUNT\x27)\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20error.message.includes(\x27not\x20defined\x20in\x20aggregate\x20config\x27)\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20error.message.includes(\x27no\x20join\x20definitions\x20found\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Validation\x20error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20aggregating\x20'+_0x59c679+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}_0x20c734[_0x1dcca7(0x16f)]&&_0x20c734['action'][_0x1dcca7(0x118)]&&(_0xfe2ef8+=_0x1dcca7(0x1f7)+_0x2b62ee+'/'+_0x59c679+_0x1dcca7(0x195)+_0x402224+_0x1dcca7(0x1e2)+_0x59c679+_0x1dcca7(0xee)+(_0x187223?_0x1dcca7(0x142)+_0x20c734['tableName']+_0x1dcca7(0x17d)+_0x402224+_0x1dcca7(0x1b7):'\x0a\x20\x20\x20\x20//\x20Fallback:\x20mode\x20tanpa\x20events\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20responseData\x20=\x20await\x20'+_0x402224+'.deleteData(req.body,\x20{\x20additionalContext:\x20{\x20requestId:\x20req.id\x20||\x20null\x20}\x20});\x0a\x20\x20\x20\x20\x20\x20console.log(\x27[FALLBACK]\x20DELETE\x20completed\x20without\x20events\x27);\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20console.error(\x27[FALLBACK]\x20DELETE\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x0a')+'\x0a\x20\x20\x20\x20//\x20Log\x20successful\x20operation\x0a\x20\x20\x20\x20console.log(`'+_0x59c679+_0x1dcca7(0x110)+_0x59c679+':\x27,\x20error);\x0a\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x27SQLITE_CONSTRAINT_FOREIGNKEY\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(409).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Foreign\x20key\x20constraint\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Cannot\x20delete:\x20record\x20is\x20still\x20referenced\x20by\x20other\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20deleting\x20'+_0x59c679+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a');_0x20c734[_0x1dcca7(0x16f)]&&_0x20c734[_0x1dcca7(0x16f)][_0x1dcca7(0x124)]&&(_0xfe2ef8+='//\x20POST\x20/api/'+_0x2b62ee+'/'+_0x59c679+'/first\x20-\x20Mendapatkan\x20data\x20berdasarkan\x20kriteria\x0arouter.post(\x27/first\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20Normalize:\x20array\x201\x20elemen\x20→\x20object\x20(backward\x20compatible)\x0a\x20\x20\x20\x20if\x20(Array.isArray(req.body.where)\x20&&\x20req.body.where.length\x20===\x201)\x20{\x0a\x20\x20\x20\x20\x20\x20req.body.where\x20=\x20req.body.where[0];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20where\x20clause\x20—\x20harus\x20object\x20tunggal\x20{key,\x20value}\x0a\x20\x20\x20\x20if\x20(!req.body.where\x20||\x20typeof\x20req.body.where\x20!==\x20\x27object\x27\x20||\x20Array.isArray(req.body.where))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Property\x20where\x20is\x20required\x20as\x20{key,\x20value}\x20object\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20{\x20\x22key\x22:\x20\x22'+_0x108fa4+'\x22,\x20\x22value\x22:\x20\x22your-id-value\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22select\x22:\x20[\x22field1\x22,\x20\x22field2\x22]\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20where.key\x20dan\x20where.value\x0a\x20\x20\x20\x20if\x20(!req.body.where.key\x20||\x20req.body.where.value\x20===\x20undefined\x20||\x20req.body.where.value\x20===\x20null\x20||\x20req.body.where.value\x20===\x20\x27\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20where\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Where\x20key\x20and\x20value\x20are\x20required\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20{\x20\x22key\x22:\x20\x22'+_0x108fa4+_0x1dcca7(0x107)+JSON[_0x1dcca7(0x1ed)](_0x20c734['_fieldProjections']&&_0x20c734['_fieldProjections']['readableFields']||_0x20c734[_0x1dcca7(0x11a)]||[])+_0x1dcca7(0x1d1)+_0x402224+'.getData(getPayload);\x0a'+_0xe7c9bf+'\x0a\x20\x20\x20\x20return\x20res.json({\x0a\x20\x20\x20\x20\x20\x20...result,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20saat\x20mendapatkan\x20data\x20'+_0x59c679+':\x27,\x20error);\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20fetching\x20'+_0x59c679+_0x1dcca7(0x1bd));_0x20c734['action']&&_0x20c734[_0x1dcca7(0x16f)]['read']&&(_0xfe2ef8+=_0x1dcca7(0x1f7)+_0x2b62ee+'/'+_0x59c679+'/read\x20-\x20Manual\x20pagination\x20endpoint\x0arouter.post(\x27/read\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20Deteksi\x20mode:\x20paginasi\x20(page\x20dikirim)\x20atau\x20non-paginasi\x20(page\x20tidak\x20dikirim)\x0a\x20\x20\x20\x20const\x20paginate\x20=\x20req.body.page\x20!==\x20undefined;\x0a\x20\x20\x20\x20const\x20page\x20=\x20paginate\x20?\x20parseInt(req.body.page,\x2010)\x20:\x20null;\x0a\x20\x20\x20\x20const\x20perPage\x20=\x20paginate\x20?\x20Math.min(parseInt(req.body.per_page\x20||\x2010,\x2010),\x20100)\x20:\x20null;\x0a\x20\x20\x20\x20const\x20limit\x20=\x20!paginate\x20?\x20Math.min(Math.max(parseInt(req.body.limit\x20||\x201000,\x2010),\x201),\x205000)\x20:\x20null;\x0a\x20\x20\x20\x20const\x20searchValue\x20=\x20req.body.search_value\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20const\x20searchBy\x20=\x20req.body.search_by\x20||\x20\x27all\x27;\x0a\x0a\x20\x20\x20\x20//\x20Parse\x20sort_columns\x0a\x20\x20\x20\x20let\x20sort_columns\x20=\x20[];\x0a\x20\x20\x20\x20if\x20(req.body.sort_columns\x20&&\x20Array.isArray(req.body.sort_columns)\x20&&\x20req.body.sort_columns.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20sort_columns\x20=\x20req.body.sort_columns.map(item\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20\x20\x20column:\x20item.column,\x0a\x20\x20\x20\x20\x20\x20\x20\x20direction:\x20(item.direction\x20||\x20\x27ASC\x27).toUpperCase()\x0a\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20parameter\x20paginasi\x20(hanya\x20jika\x20mode\x20paginasi)\x0a\x20\x20\x20\x20if\x20(paginate\x20&&\x20page\x20<\x201)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20page\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Page\x20must\x20be\x20greater\x20than\x200\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Proses\x20parameter\x20where\x20dengan\x20format\x20advanced\x20conditions\x0a\x20\x20\x20\x20let\x20where\x20=\x20null;\x0a\x20\x20\x20\x20if\x20(req.body.where\x20&&\x20typeof\x20req.body.where\x20===\x20\x27object\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(Array.isArray(req.body.where)\x20||\x20(req.body.where.conditions\x20&&\x20Array.isArray(req.body.where.conditions)))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20where\x20=\x20req.body.where;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Proses\x20parameter\x20select\x20untuk\x20kolom\x20selektif\x0a\x20\x20\x20\x20const\x20validFields\x20=\x20'+JSON['stringify'](_0x20c734['_fieldProjections']&&_0x20c734[_0x1dcca7(0x1c3)]['readableFields']||_0x20c734[_0x1dcca7(0x11a)]||[])+_0x1dcca7(0x1c5)+_0x402224+_0x1dcca7(0x1fe)+_0x59c679+_0x1dcca7(0x147)+_0x59c679+_0x1dcca7(0x14a));if(_0x20c734[_0x1dcca7(0x105)]&&_0x20c734['masterDetail']['enabled']){const _0x35df0c=_0x20c734[_0x1dcca7(0x105)]['detailTable'][_0x1dcca7(0x133)]('.')[_0x1dcca7(0x17f)](),_0x40cfcd=_0x59c679['replace'](/-/g,'_'),_0x401478=_0x20c734[_0x1dcca7(0x105)][_0x1dcca7(0x114)]||null,_0x10dceb=_0x20c734['masterDetail']?.['detailConfig']?.['autoCalculateFields']?.[_0x1dcca7(0x156)]?.['formula']||'',_0x3abaa1=_0x10dceb['split']('*')[_0x1dcca7(0x129)](_0x57577d=>_0x57577d[_0x1dcca7(0x182)]()),_0x5945bd=_0x401478?.[_0x1dcca7(0x1ab)]?.[_0x1dcca7(0x1a7)]?.['replace'](_0x554c86[_0x1dcca7(0x15e)],'')||'',_0x32423c=_0x3abaa1[0x0]||_0x5945bd,_0x415b5a=_0x3abaa1[0x1]||_0x554c86[_0x1dcca7(0x176)];if(_0x20c734[_0x1dcca7(0x16f)]&&_0x20c734[_0x1dcca7(0x16f)]['createComposite']){const _0x15b54b=_0x401478?'\x0a\x20\x20\x20\x20var\x20headerCalc\x20=\x20'+JSON[_0x1dcca7(0x1ed)](_0x401478)+_0x1dcca7(0x1aa)+_0x35df0c+_0x1dcca7(0x1d0)+_0x35df0c+_0x1dcca7(0x1c7)+(_0x32423c?'if\x20(headerCalc.total_amount)\x20{\x0a\x20\x20\x20\x20\x20\x20data.total_amount\x20=\x20data.'+_0x35df0c+_0x1dcca7(0xe4)+_0x32423c+')\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20price\x20=\x20Number(item.'+_0x415b5a+')\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20sum\x20+\x20(qty\x20*\x20price);\x0a\x20\x20\x20\x20\x20\x20},\x200);\x0a\x20\x20\x20\x20}':_0x554c86[_0x1dcca7(0x17e)])+'\x0a\x20\x20\x20\x20console.log(\x27Calculated\x20totals:\x27,\x20{\x20total_items:\x20data.total_items,\x20total_qty:\x20data.total_qty,\x20total_amount:\x20data.total_amount\x20});\x0a\x20\x20\x20\x20':'';_0xfe2ef8+=_0x1dcca7(0x1f7)+_0x2b62ee+'/'+_0x59c679+'/create-composite\x20-\x20SQLite\x20Composite\x20create\x20(master-detail)\x0arouter.post(\x27/create-composite\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20console.log(\x27Request\x20body\x20'+_0x59c679+_0x1dcca7(0x194)+_0x40cfcd+')\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20must\x20have\x20property\x20\x22'+_0x40cfcd+'\x22\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20var\x20data\x20=\x20req.body.'+_0x40cfcd+';\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20dan\x20sanitasi\x20header\x20data\x20dengan\x20constraint\x20(termasuk\x20hash)\x0a\x20\x20\x20\x20if\x20(typeof\x20'+_0x402224+_0x1dcca7(0x14e)+_0x35df0c+';\x0a\x0a\x20\x20\x20\x20\x20\x20var\x20validation\x20=\x20await\x20'+_0x402224+'.validateData(headerDataForValidation,\x20\x27insert\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(!validation.isValid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Validation\x20failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20validation.errors,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20Object.assign(data,\x20validation.sanitizedData);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(!data.'+_0x35df0c+'\x20||\x20!Array.isArray(data.'+_0x35df0c+')\x20||\x20data.'+_0x35df0c+_0x1dcca7(0x111)+_0x35df0c+_0x1dcca7(0x136)+_0x15b54b+_0x1dcca7(0x113)+_0x20c734['tableName']+_0x1dcca7(0x171)+_0x20c734['masterDetail'][_0x1dcca7(0x11c)]+_0x1dcca7(0x17b)+_0x20c734[_0x1dcca7(0x105)][_0x1dcca7(0x167)]+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20options:\x20req.bodyOptions\x20||\x20{},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20requestId:\x20req.id\x20||\x20null\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20var\x20result\x20=\x20await\x20'+_0x402224+'.createComposite(data,\x20eventContext);\x0a\x0a\x20\x20\x20\x20console.log(\x27'+_0x59c679+_0x1dcca7(0x19d)+_0x59c679+_0x1dcca7(0x1fa)+_0x59c679+':\x27,\x20error);\x0a\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x27SQLITE_CONSTRAINT_UNIQUE\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20details\x20=\x20buildDuplicateDetails(error);\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(409).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Duplicate\x20entry\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27A\x20record\x20with\x20this\x20value\x20already\x20exists\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(details\x20?\x20{\x20details\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x27SQLITE_CONSTRAINT_FOREIGNKEY\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Foreign\x20key\x20constraint\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Referenced\x20data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20creating\x20'+_0x59c679+_0x1dcca7(0x1bd);}_0x20c734[_0x1dcca7(0x16f)]&&_0x20c734[_0x1dcca7(0x16f)]['updateComposite']&&(_0xfe2ef8+='//\x20POST\x20/api/'+_0x2b62ee+'/'+_0x59c679+'/update-composite\x20-\x20SQLite\x20Composite\x20update\x20(master-detail)\x0arouter.post(\x27/update-composite\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20console.log(\x27Request\x20body\x20'+_0x59c679+_0x1dcca7(0x153)+_0x40cfcd+')\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20must\x20have\x20property\x20\x22'+_0x40cfcd+_0x1dcca7(0x145)+_0x40cfcd+';\x0a\x0a\x20\x20\x20\x20if\x20(!data.'+_0x108fa4+_0x1dcca7(0x1de)+_0x108fa4+')\x20is\x20required\x20for\x20update\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a'+_0x345e16+'\x0a\x20\x20\x20\x20//\x20Validasi\x20dan\x20sanitasi\x20header\x20data\x20dengan\x20constraint\x20(termasuk\x20hash)\x0a\x20\x20\x20\x20if\x20(typeof\x20'+_0x402224+_0x1dcca7(0x14e)+_0x35df0c+_0x1dcca7(0x18e)+_0x402224+_0x1dcca7(0x1bb)+_0x35df0c+')\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(typeof\x20data.'+_0x35df0c+'\x20!==\x20\x27object\x27\x20||\x20Array.isArray(data.'+_0x35df0c+'))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Property\x20\x22'+_0x35df0c+'\x22\x20must\x20be\x20an\x20object\x20with\x20structure\x20{insert:\x20[],\x20update:\x20[],\x20delete:\x20[]}\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Build\x20eventContext\x20untuk\x20composite\x20hooks\x0a\x20\x20\x20\x20var\x20eventContext\x20=\x20null;\x0a\x20\x20\x20\x20if\x20(componentEngine\x20&&\x20ContextBuilder)\x20{\x0a\x20\x20\x20\x20\x20\x20eventContext\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20componentEngine:\x20componentEngine,\x0a\x20\x20\x20\x20\x20\x20\x20\x20ContextBuilder:\x20ContextBuilder,\x0a\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x20c734[_0x1dcca7(0xf5)]+_0x1dcca7(0x171)+_0x20c734['masterDetail']['detailTable']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20foreignKey:\x20\x27'+_0x20c734['masterDetail']['foreignKey']+_0x1dcca7(0x164)+_0x402224+'.updateComposite(data,\x20eventContext);\x0a\x0a\x20\x20\x20\x20console.log(\x27'+_0x59c679+'\x20composite\x20update\x20successful:\x20'+_0x108fa4+_0x1dcca7(0x196)+_0x108fa4+_0x1dcca7(0x1eb)+_0x59c679+'\x20data\x20successfully\x20updated\x20(with\x20detail\x20items)\x27,\x0a\x20\x20\x20\x20\x20\x20data:\x20result,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20saat\x20composite\x20update\x20'+_0x59c679+':\x27,\x20error);\x0a\x0a\x20\x20\x20\x20if\x20(error.message\x20===\x20\x27Record\x20not\x20found\x27\x20||\x20error.message.includes(\x27not\x20found\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x59c679+_0x1dcca7(0x146)+_0x59c679+_0x1dcca7(0x1bd)),_0x20c734['action']&&_0x20c734['action']['readComposite']&&(_0xfe2ef8+='//\x20POST\x20/api/'+_0x2b62ee+'/'+_0x59c679+_0x1dcca7(0xff)+_0x59c679+'/read-composite:\x27,\x20JSON.stringify(req.body,\x20null,\x202));\x0a\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x20success:\x20false,\x20error:\x20\x27Invalid\x20payload\x27,\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x20timestamp:\x20new\x20Date().toISOString()\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(!req.body.where)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Property\x20where\x20is\x20required\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x20\x22where\x22:\x20[{\x20\x22key\x22:\x20\x22field_name\x22,\x20\x22value\x22:\x20\x22field_value\x22\x20}]\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(!Array.isArray(req.body.where)\x20&&\x20!req.body.where.conditions)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20where\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20where\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x20\x22where\x22:\x20[{\x20\x22key\x22:\x20\x22'+_0x108fa4+'\x22,\x20\x22value\x22:\x20\x22your-id-value\x22\x20}]\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20var\x20result\x20=\x20await\x20'+_0x402224+'.readComposite(req.body);\x0a\x0a\x20\x20\x20\x20console.log(\x27'+_0x59c679+'\x20composite\x20read\x20successful:\x20\x27\x20+\x20(result.count\x20||\x200)\x20+\x20\x27\x20record(s)\x27);\x0a\x0a\x20\x20\x20\x20return\x20res.json({\x0a\x20\x20\x20\x20\x20\x20...result,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20saat\x20composite\x20read\x20'+_0x59c679+':\x27,\x20error);\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20reading\x20'+_0x59c679+_0x1dcca7(0x1bc));}if(_0x554c86['rUUcv'](_0x20c734[_0x1dcca7(0x16f)]?.[_0x1dcca7(0x1df)],![])){const _0x317900={'datatables':!!_0x20c734['action']?.[_0x1dcca7(0xea)],'read':!!_0x20c734[_0x1dcca7(0x16f)]?.['read'],'first':!!_0x20c734[_0x1dcca7(0x16f)]?.['first'],'create':!!_0x20c734[_0x1dcca7(0x16f)]?.['create'],'update':!!_0x20c734[_0x1dcca7(0x16f)]?.['update'],'delete':!!_0x20c734[_0x1dcca7(0x16f)]?.[_0x1dcca7(0x118)],'lookup':!!_0x20c734['action']?.[_0x1dcca7(0x1b9)],'export':!!_0x20c734['action']?.[_0x1dcca7(0x1e8)],'import':!!_0x20c734[_0x1dcca7(0x16f)]?.[_0x1dcca7(0x149)],'info':_0x554c86['YrznF'](_0x20c734[_0x1dcca7(0x16f)]?.['info'],![])};_0xfe2ef8+='//\x20SQLite\x20endpoint\x20information\x20—\x20self-documenting\x20API\x0arouter.get(\x27/info\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20const\x20actions\x20=\x20'+JSON[_0x1dcca7(0x1ed)](_0x317900)+_0x1dcca7(0xf3)+_0x402224+_0x1dcca7(0x192)+_0x59c679+'\x27,\x0a\x20\x20\x20\x20\x20\x20module:\x20\x27'+_0x2b62ee+_0x1dcca7(0x165)+_0x52af69+_0x1dcca7(0x1ac);}else _0xfe2ef8+=_0x1dcca7(0x1f4);return _0xfe2ef8+='\x0a//\x20SQLite\x20health\x20check\x0arouter.get(\x27/health\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20const\x20connectionInfo\x20=\x20await\x20'+_0x402224+'.getConnectionInfo();\x0a\x0a\x20\x20\x20\x20res.json({\x0a\x20\x20\x20\x20\x20\x20status:\x20connectionInfo\x20?\x20\x27healthy\x27\x20:\x20\x27unknown\x27,\x0a\x20\x20\x20\x20\x20\x20endpoint:\x20\x27'+_0x59c679+'\x27,\x0a\x20\x20\x20\x20\x20\x20database:\x20\x27sqlite\x27,\x0a\x20\x20\x20\x20\x20\x20connection:\x20connectionInfo\x20?\x20\x27active\x27\x20:\x20\x27unknown\x27,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20res.status(503).json({\x0a\x20\x20\x20\x20\x20\x20status:\x20\x27unhealthy\x27,\x0a\x20\x20\x20\x20\x20\x20endpoint:\x20\x27'+_0x59c679+_0x1dcca7(0x13b),_0xfe2ef8+='module.exports\x20=\x20router;',_0xfe2ef8;}module['exports']={'createSqliteMainModuleTemplate':createSqliteMainModuleTemplate,'createSqliteModelTemplate':createSqliteModelTemplate,'createSqliteSubmoduleTemplate':createSqliteSubmoduleTemplate};