vibecodeagent 0.0.0-stage → 0.1.65

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 (109) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +46 -2
  3. package/THIRD-PARTY-NOTICES.txt +1427 -0
  4. package/dist/agen.js +138920 -0
  5. package/dist/bin.js +1245 -0
  6. package/dist/daemon.js +163701 -0
  7. package/dist/node_modules/node-ensure/index.js +10 -0
  8. package/dist/node_modules/node-ensure/package.json +31 -0
  9. package/dist/node_modules/pdf-parse/lib/pdf-parse.js +102 -0
  10. package/dist/node_modules/pdf-parse/lib/pdf.js/v1.10.100/build/pdf.js +18538 -0
  11. package/dist/node_modules/pdf-parse/lib/pdf.js/v1.10.100/build/pdf.worker.js +45507 -0
  12. package/dist/node_modules/pdf-parse/package.json +49 -0
  13. package/dist/node_modules/sql.js/dist/sql-wasm.js +186 -0
  14. package/dist/node_modules/sql.js/dist/sql-wasm.wasm +0 -0
  15. package/dist/node_modules/sql.js/package.json +58 -0
  16. package/dist/resources/skills/builtin/.gitkeep +0 -0
  17. package/dist/resources/skills/builtin/NOTICE.md +35 -0
  18. package/dist/resources/skills/builtin/README.md +74 -0
  19. package/dist/resources/skills/builtin/backend-engineering/SKILL.md +102 -0
  20. package/dist/resources/skills/builtin/backend-engineering/references/api-contracts.md +320 -0
  21. package/dist/resources/skills/builtin/backend-engineering/references/auth-and-secrets.md +268 -0
  22. package/dist/resources/skills/builtin/backend-engineering/references/concurrency-and-jobs.md +386 -0
  23. package/dist/resources/skills/builtin/backend-engineering/references/data-modelling.md +367 -0
  24. package/dist/resources/skills/builtin/backend-engineering/references/deploy-and-config.md +228 -0
  25. package/dist/resources/skills/builtin/backend-engineering/references/migrations.md +320 -0
  26. package/dist/resources/skills/builtin/backend-engineering/references/observability.md +301 -0
  27. package/dist/resources/skills/builtin/backend-engineering/references/plan-template.md +152 -0
  28. package/dist/resources/skills/builtin/backend-engineering/references/review-audit.md +213 -0
  29. package/dist/resources/skills/builtin/backend-engineering/references/security.md +251 -0
  30. package/dist/resources/skills/builtin/backend-engineering/references/stack-go.md +238 -0
  31. package/dist/resources/skills/builtin/backend-engineering/references/stack-node.md +274 -0
  32. package/dist/resources/skills/builtin/backend-engineering/references/stack-python.md +296 -0
  33. package/dist/resources/skills/builtin/backend-engineering/references/testing-and-perf.md +298 -0
  34. package/dist/resources/skills/builtin/backend-engineering/references/validation-and-errors.md +266 -0
  35. package/dist/resources/skills/builtin/dasar-vibecode/SKILL.md +312 -0
  36. package/dist/resources/skills/builtin/excel-maker/SKILL.md +71 -0
  37. package/dist/resources/skills/builtin/frontend-design/SKILL.md +131 -0
  38. package/dist/resources/skills/builtin/frontend-design/data/app-interface.csv +33 -0
  39. package/dist/resources/skills/builtin/frontend-design/data/catalog-summary.json +78 -0
  40. package/dist/resources/skills/builtin/frontend-design/data/charts.csv +26 -0
  41. package/dist/resources/skills/builtin/frontend-design/data/colors.csv +193 -0
  42. package/dist/resources/skills/builtin/frontend-design/data/data-provenance.json +1348 -0
  43. package/dist/resources/skills/builtin/frontend-design/data/google-font-licenses.json +20185 -0
  44. package/dist/resources/skills/builtin/frontend-design/data/google-fonts.csv +1935 -0
  45. package/dist/resources/skills/builtin/frontend-design/data/icons.csv +106 -0
  46. package/dist/resources/skills/builtin/frontend-design/data/landing.csv +35 -0
  47. package/dist/resources/skills/builtin/frontend-design/data/motion.csv +18 -0
  48. package/dist/resources/skills/builtin/frontend-design/data/phosphor-icons-upstream.json +32582 -0
  49. package/dist/resources/skills/builtin/frontend-design/data/products.csv +193 -0
  50. package/dist/resources/skills/builtin/frontend-design/data/react-performance.csv +45 -0
  51. package/dist/resources/skills/builtin/frontend-design/data/stacks/angular.csv +51 -0
  52. package/dist/resources/skills/builtin/frontend-design/data/stacks/astro.csv +54 -0
  53. package/dist/resources/skills/builtin/frontend-design/data/stacks/avalonia.csv +57 -0
  54. package/dist/resources/skills/builtin/frontend-design/data/stacks/flutter.csv +53 -0
  55. package/dist/resources/skills/builtin/frontend-design/data/stacks/html-tailwind.csv +60 -0
  56. package/dist/resources/skills/builtin/frontend-design/data/stacks/javafx.csv +76 -0
  57. package/dist/resources/skills/builtin/frontend-design/data/stacks/jetpack-compose.csv +53 -0
  58. package/dist/resources/skills/builtin/frontend-design/data/stacks/laravel.csv +51 -0
  59. package/dist/resources/skills/builtin/frontend-design/data/stacks/nextjs.csv +62 -0
  60. package/dist/resources/skills/builtin/frontend-design/data/stacks/nuxt-ui.csv +71 -0
  61. package/dist/resources/skills/builtin/frontend-design/data/stacks/nuxtjs.csv +68 -0
  62. package/dist/resources/skills/builtin/frontend-design/data/stacks/react-native.csv +52 -0
  63. package/dist/resources/skills/builtin/frontend-design/data/stacks/react.csv +62 -0
  64. package/dist/resources/skills/builtin/frontend-design/data/stacks/shadcn.csv +69 -0
  65. package/dist/resources/skills/builtin/frontend-design/data/stacks/svelte.csv +56 -0
  66. package/dist/resources/skills/builtin/frontend-design/data/stacks/swiftui.csv +51 -0
  67. package/dist/resources/skills/builtin/frontend-design/data/stacks/threejs.csv +54 -0
  68. package/dist/resources/skills/builtin/frontend-design/data/stacks/uno.csv +60 -0
  69. package/dist/resources/skills/builtin/frontend-design/data/stacks/uwp.csv +56 -0
  70. package/dist/resources/skills/builtin/frontend-design/data/stacks/vue.csv +50 -0
  71. package/dist/resources/skills/builtin/frontend-design/data/stacks/winui.csv +60 -0
  72. package/dist/resources/skills/builtin/frontend-design/data/stacks/wpf.csv +57 -0
  73. package/dist/resources/skills/builtin/frontend-design/data/styles.csv +89 -0
  74. package/dist/resources/skills/builtin/frontend-design/data/typography.csv +75 -0
  75. package/dist/resources/skills/builtin/frontend-design/data/ui-reasoning.csv +193 -0
  76. package/dist/resources/skills/builtin/frontend-design/data/ux-guidelines.csv +120 -0
  77. package/dist/resources/skills/builtin/frontend-design/references/animation-patterns.md +705 -0
  78. package/dist/resources/skills/builtin/frontend-design/references/app-polish.md +117 -0
  79. package/dist/resources/skills/builtin/frontend-design/references/apple-fluid.md +278 -0
  80. package/dist/resources/skills/builtin/frontend-design/references/art-direction.md +280 -0
  81. package/dist/resources/skills/builtin/frontend-design/references/case-studies.md +599 -0
  82. package/dist/resources/skills/builtin/frontend-design/references/craft.md +128 -0
  83. package/dist/resources/skills/builtin/frontend-design/references/expo.md +251 -0
  84. package/dist/resources/skills/builtin/frontend-design/references/layout-systems.md +533 -0
  85. package/dist/resources/skills/builtin/frontend-design/references/libraries.md +72 -0
  86. package/dist/resources/skills/builtin/frontend-design/references/motion.md +222 -0
  87. package/dist/resources/skills/builtin/frontend-design/references/picker.md +197 -0
  88. package/dist/resources/skills/builtin/frontend-design/references/plan-template.md +73 -0
  89. package/dist/resources/skills/builtin/frontend-design/references/prototype.md +85 -0
  90. package/dist/resources/skills/builtin/frontend-design/references/recipes-expo.md +385 -0
  91. package/dist/resources/skills/builtin/frontend-design/references/recipes-web.md +421 -0
  92. package/dist/resources/skills/builtin/frontend-design/references/review-audit.md +107 -0
  93. package/dist/resources/skills/builtin/frontend-design/references/sonner.md +143 -0
  94. package/dist/resources/skills/builtin/frontend-design/references/technical-stack.md +543 -0
  95. package/dist/resources/skills/builtin/frontend-design/references/theming.md +60 -0
  96. package/dist/resources/skills/builtin/frontend-design/references/typography.md +393 -0
  97. package/dist/resources/skills/builtin/frontend-design/references/ux-rules.md +256 -0
  98. package/dist/resources/skills/builtin/frontend-design/references/vocabulary.md +169 -0
  99. package/dist/resources/skills/builtin/frontend-design/scripts/core.py +993 -0
  100. package/dist/resources/skills/builtin/frontend-design/scripts/design_system.py +1643 -0
  101. package/dist/resources/skills/builtin/frontend-design/scripts/reasoning_contract.py +123 -0
  102. package/dist/resources/skills/builtin/frontend-design/scripts/search.py +171 -0
  103. package/dist/resources/skills/builtin/frontend-design/scripts/validate_data.py +1091 -0
  104. package/dist/resources/skills/builtin/kerja-agentik/SKILL.md +117 -0
  105. package/dist/resources/skills/builtin/pdf-maker/SKILL.md +51 -0
  106. package/dist/resources/skills/builtin/tinjau-keamanan/SKILL.md +53 -0
  107. package/dist/resources/skills/builtin/word-maker/SKILL.md +58 -0
  108. package/dist/resources/skills/builtin/write-swift/SKILL.md +388 -0
  109. package/package.json +35 -4
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "pdf-parse",
3
+ "version": "1.1.1",
4
+ "description": "Pure javascript cross-platform module to extract text from PDFs.",
5
+ "main": "index.js",
6
+ "keywords": [
7
+ "pdf-parse",
8
+ "pdf-crawler",
9
+ "xpdf",
10
+ "pdf.js",
11
+ "pdfreader",
12
+ "pdf-extractor",
13
+ "pdf2json",
14
+ "j-pdfjson",
15
+ "pdf-parser",
16
+ "pdf-extract",
17
+ "pdf-extractor",
18
+ "pdf-to-text",
19
+ "pdf-text-extract",
20
+ "pdfjs",
21
+ "server side PDF parsing",
22
+ "pdf metadata"
23
+ ],
24
+ "dependencies": {
25
+ "debug": "^3.1.0",
26
+ "node-ensure": "^0.0.0"
27
+ },
28
+ "devDependencies": {
29
+ "mocha": "^4.0.1"
30
+ },
31
+ "scripts": {
32
+ "test": "node node_modules/mocha/bin/_mocha --recursive --slow 10000",
33
+ "start": "node index.js"
34
+ },
35
+ "homepage": "https://gitlab.com/autokent/pdf-parse",
36
+ "bugs": {
37
+ "url": "https://gitlab.com/autokent/pdf-parse/issues",
38
+ "email": "mehmet.kozan@live.com"
39
+ },
40
+ "repository": {
41
+ "type": "git",
42
+ "url": "https://gitlab.com/autokent/pdf-parse.git"
43
+ },
44
+ "author": "Mehmet Kozan <mehmet.kozan@live.com>",
45
+ "license": "MIT",
46
+ "engines": {
47
+ "node": ">=6.8.1"
48
+ }
49
+ }
@@ -0,0 +1,186 @@
1
+
2
+ // We are modularizing this manually because the current modularize setting in Emscripten has some issues:
3
+ // https://github.com/kripken/emscripten/issues/5820
4
+ // In addition, When you use emcc's modularization, it still expects to export a global object called `Module`,
5
+ // which is able to be used/called before the WASM is loaded.
6
+ // The modularization below exports a promise that loads and resolves to the actual sql.js module.
7
+ // That way, this module can't be used before the WASM is finished loading.
8
+
9
+ // We are going to define a function that a user will call to start loading initializing our Sql.js library
10
+ // However, that function might be called multiple times, and on subsequent calls, we don't actually want it to instantiate a new instance of the Module
11
+ // Instead, we want to return the previously loaded module
12
+
13
+ // TODO: Make this not declare a global if used in the browser
14
+ var initSqlJsPromise = undefined;
15
+
16
+ var initSqlJs = function (moduleConfig) {
17
+
18
+ if (initSqlJsPromise){
19
+ return initSqlJsPromise;
20
+ }
21
+ // If we're here, we've never called this function before
22
+ initSqlJsPromise = new Promise(function (resolveModule, reject) {
23
+
24
+ // We are modularizing this manually because the current modularize setting in Emscripten has some issues:
25
+ // https://github.com/kripken/emscripten/issues/5820
26
+
27
+ // The way to affect the loading of emcc compiled modules is to create a variable called `Module` and add
28
+ // properties to it, like `preRun`, `postRun`, etc
29
+ // We are using that to get notified when the WASM has finished loading.
30
+ // Only then will we return our promise
31
+
32
+ // If they passed in a moduleConfig object, use that
33
+ // Otherwise, initialize Module to the empty object
34
+ var Module = typeof moduleConfig !== 'undefined' ? moduleConfig : {};
35
+
36
+ // EMCC only allows for a single onAbort function (not an array of functions)
37
+ // So if the user defined their own onAbort function, we remember it and call it
38
+ var originalOnAbortFunction = Module['onAbort'];
39
+ Module['onAbort'] = function (errorThatCausedAbort) {
40
+ reject(new Error(errorThatCausedAbort));
41
+ if (originalOnAbortFunction){
42
+ originalOnAbortFunction(errorThatCausedAbort);
43
+ }
44
+ };
45
+
46
+ Module['postRun'] = Module['postRun'] || [];
47
+ Module['postRun'].push(function () {
48
+ // When Emscripted calls postRun, this promise resolves with the built Module
49
+ resolveModule(Module);
50
+ });
51
+
52
+ // There is a section of code in the emcc-generated code below that looks like this:
53
+ // (Note that this is lowercase `module`)
54
+ // if (typeof module !== 'undefined') {
55
+ // module['exports'] = Module;
56
+ // }
57
+ // When that runs, it's going to overwrite our own modularization export efforts in shell-post.js!
58
+ // The only way to tell emcc not to emit it is to pass the MODULARIZE=1 or MODULARIZE_INSTANCE=1 flags,
59
+ // but that carries with it additional unnecessary baggage/bugs we don't want either.
60
+ // So, we have three options:
61
+ // 1) We undefine `module`
62
+ // 2) We remember what `module['exports']` was at the beginning of this function and we restore it later
63
+ // 3) We write a script to remove those lines of code as part of the Make process.
64
+ //
65
+ // Since those are the only lines of code that care about module, we will undefine it. It's the most straightforward
66
+ // of the options, and has the side effect of reducing emcc's efforts to modify the module if its output were to change in the future.
67
+ // That's a nice side effect since we're handling the modularization efforts ourselves
68
+ module = undefined;
69
+
70
+ // The emcc-generated code and shell-post.js code goes below,
71
+ // meaning that all of it runs inside of this promise. If anything throws an exception, our promise will abort
72
+ var k;k||=typeof Module != 'undefined' ? Module : {};var aa=!!globalThis.window,ba=!!globalThis.WorkerGlobalScope,ca=globalThis.process?.versions?.node&&"renderer"!=globalThis.process?.type;
73
+ k.onRuntimeInitialized=function(){function a(f,l){switch(typeof l){case "boolean":dc(f,l?1:0);break;case "number":ec(f,l);break;case "string":fc(f,l,-1,-1);break;case "object":if(null===l)lb(f);else if(null!=l.length){var n=da(l.length);m.set(l,n);gc(f,n,l.length,-1);ea(n)}else va(f,"Wrong API use : tried to return a value of an unknown type ("+l+").",-1);break;default:lb(f)}}function b(f,l){for(var n=[],p=0;p<f;p+=1){var r=t(l+4*p,"i32"),w=hc(r);if(1===w||2===w)r=ic(r);else if(3===w)r=jc(r);else if(4===
74
+ w){w=r;r=kc(w);w=lc(w);for(var J=new Uint8Array(r),I=0;I<r;I+=1)J[I]=m[w+I];r=J}else r=null;n.push(r)}return n}function c(f,l){this.Qa=f;this.db=l;this.Oa=1;this.mb=[]}function d(f,l){this.db=l;this.fb=fa(f);if(null===this.fb)throw Error("Unable to allocate memory for the SQL string");this.lb=this.fb;this.$a=this.sb=null}function e(f){this.filename="dbfile_"+(4294967295*Math.random()>>>0);if(null!=f){var l=this.filename,n="/",p=l;n&&(n="string"==typeof n?n:ha(n),p=l?ia(n+"/"+l):n);l=ja(!0,!0);p=ka(p,
75
+ l);if(f){if("string"==typeof f){n=Array(f.length);for(var r=0,w=f.length;r<w;++r)n[r]=f.charCodeAt(r);f=n}ma(p,l|146);n=na(p,577);oa(n,f,0,f.length,0);pa(n);ma(p,l)}}this.handleError(q(this.filename,g));this.db=t(g,"i32");ob(this.db);this.gb={};this.Sa={}}var g=y(4),h=k.cwrap,q=h("sqlite3_open","number",["string","number"]),v=h("sqlite3_close_v2","number",["number"]),u=h("sqlite3_exec","number",["number","string","number","number","number"]),x=h("sqlite3_changes","number",["number"]),D=h("sqlite3_prepare_v2",
76
+ "number",["number","string","number","number","number"]),pb=h("sqlite3_sql","string",["number"]),nc=h("sqlite3_normalized_sql","string",["number"]),qb=h("sqlite3_prepare_v2","number",["number","number","number","number","number"]),oc=h("sqlite3_bind_text","number",["number","number","number","number","number"]),rb=h("sqlite3_bind_blob","number",["number","number","number","number","number"]),pc=h("sqlite3_bind_double","number",["number","number","number"]),qc=h("sqlite3_bind_int","number",["number",
77
+ "number","number"]),rc=h("sqlite3_bind_parameter_index","number",["number","string"]),sc=h("sqlite3_step","number",["number"]),tc=h("sqlite3_errmsg","string",["number"]),uc=h("sqlite3_column_count","number",["number"]),vc=h("sqlite3_data_count","number",["number"]),wc=h("sqlite3_column_double","number",["number","number"]),sb=h("sqlite3_column_text","string",["number","number"]),xc=h("sqlite3_column_blob","number",["number","number"]),yc=h("sqlite3_column_bytes","number",["number","number"]),zc=h("sqlite3_column_type",
78
+ "number",["number","number"]),Ac=h("sqlite3_column_name","string",["number","number"]),Bc=h("sqlite3_reset","number",["number"]),Cc=h("sqlite3_clear_bindings","number",["number"]),Dc=h("sqlite3_finalize","number",["number"]),tb=h("sqlite3_create_function_v2","number","number string number number number number number number number".split(" ")),hc=h("sqlite3_value_type","number",["number"]),kc=h("sqlite3_value_bytes","number",["number"]),jc=h("sqlite3_value_text","string",["number"]),lc=h("sqlite3_value_blob",
79
+ "number",["number"]),ic=h("sqlite3_value_double","number",["number"]),ec=h("sqlite3_result_double","",["number","number"]),lb=h("sqlite3_result_null","",["number"]),fc=h("sqlite3_result_text","",["number","string","number","number"]),gc=h("sqlite3_result_blob","",["number","number","number","number"]),dc=h("sqlite3_result_int","",["number","number"]),va=h("sqlite3_result_error","",["number","string","number"]),ub=h("sqlite3_aggregate_context","number",["number","number"]),ob=h("RegisterExtensionFunctions",
80
+ "number",["number"]),vb=h("sqlite3_update_hook","number",["number","number","number"]);c.prototype.bind=function(f){if(!this.Qa)throw"Statement closed";this.reset();return Array.isArray(f)?this.Gb(f):null!=f&&"object"===typeof f?this.Hb(f):!0};c.prototype.step=function(){if(!this.Qa)throw"Statement closed";this.Oa=1;var f=sc(this.Qa);switch(f){case 100:return!0;case 101:return!1;default:throw this.db.handleError(f);}};c.prototype.Ab=function(f){null==f&&(f=this.Oa,this.Oa+=1);return wc(this.Qa,f)};
81
+ c.prototype.Ob=function(f){null==f&&(f=this.Oa,this.Oa+=1);f=sb(this.Qa,f);if("function"!==typeof BigInt)throw Error("BigInt is not supported");return BigInt(f)};c.prototype.Tb=function(f){null==f&&(f=this.Oa,this.Oa+=1);return sb(this.Qa,f)};c.prototype.getBlob=function(f){null==f&&(f=this.Oa,this.Oa+=1);var l=yc(this.Qa,f);f=xc(this.Qa,f);for(var n=new Uint8Array(l),p=0;p<l;p+=1)n[p]=m[f+p];return n};c.prototype.get=function(f,l){l=l||{};null!=f&&this.bind(f)&&this.step();f=[];for(var n=vc(this.Qa),
82
+ p=0;p<n;p+=1)switch(zc(this.Qa,p)){case 1:var r=l.useBigInt?this.Ob(p):this.Ab(p);f.push(r);break;case 2:f.push(this.Ab(p));break;case 3:f.push(this.Tb(p));break;case 4:f.push(this.getBlob(p));break;default:f.push(null)}return f};c.prototype.qb=function(){for(var f=[],l=uc(this.Qa),n=0;n<l;n+=1)f.push(Ac(this.Qa,n));return f};c.prototype.zb=function(f,l){f=this.get(f,l);l=this.qb();for(var n={},p=0;p<l.length;p+=1)n[l[p]]=f[p];return n};c.prototype.Sb=function(){return pb(this.Qa)};c.prototype.Pb=
83
+ function(){return nc(this.Qa)};c.prototype.run=function(f){null!=f&&this.bind(f);this.step();return this.reset()};c.prototype.wb=function(f,l){null==l&&(l=this.Oa,this.Oa+=1);f=fa(f);this.mb.push(f);this.db.handleError(oc(this.Qa,l,f,-1,0))};c.prototype.Fb=function(f,l){null==l&&(l=this.Oa,this.Oa+=1);var n=da(f.length);m.set(f,n);this.mb.push(n);this.db.handleError(rb(this.Qa,l,n,f.length,0))};c.prototype.vb=function(f,l){null==l&&(l=this.Oa,this.Oa+=1);this.db.handleError((f===(f|0)?qc:pc)(this.Qa,
84
+ l,f))};c.prototype.Ib=function(f){null==f&&(f=this.Oa,this.Oa+=1);rb(this.Qa,f,0,0,0)};c.prototype.xb=function(f,l){null==l&&(l=this.Oa,this.Oa+=1);switch(typeof f){case "string":this.wb(f,l);return;case "number":this.vb(f,l);return;case "bigint":this.wb(f.toString(),l);return;case "boolean":this.vb(f+0,l);return;case "object":if(null===f){this.Ib(l);return}if(null!=f.length){this.Fb(f,l);return}}throw"Wrong API use : tried to bind a value of an unknown type ("+f+").";};c.prototype.Hb=function(f){var l=
85
+ this;Object.keys(f).forEach(function(n){var p=rc(l.Qa,n);0!==p&&l.xb(f[n],p)});return!0};c.prototype.Gb=function(f){for(var l=0;l<f.length;l+=1)this.xb(f[l],l+1);return!0};c.prototype.reset=function(){this.freemem();return 0===Cc(this.Qa)&&0===Bc(this.Qa)};c.prototype.freemem=function(){for(var f;void 0!==(f=this.mb.pop());)ea(f)};c.prototype.Ya=function(){this.freemem();var f=0===Dc(this.Qa);delete this.db.gb[this.Qa];this.Qa=0;return f};d.prototype.next=function(){if(null===this.fb)return{done:!0};
86
+ null!==this.$a&&(this.$a.Ya(),this.$a=null);if(!this.db.db)throw this.ob(),Error("Database closed");var f=qa(),l=y(4);ra(g);ra(l);try{this.db.handleError(qb(this.db.db,this.lb,-1,g,l));this.lb=t(l,"i32");var n=t(g,"i32");if(0===n)return this.ob(),{done:!0};this.$a=new c(n,this.db);this.db.gb[n]=this.$a;return{value:this.$a,done:!1}}catch(p){throw this.sb=z(this.lb),this.ob(),p;}finally{sa(f)}};d.prototype.ob=function(){ea(this.fb);this.fb=null};d.prototype.Qb=function(){return null!==this.sb?this.sb:
87
+ z(this.lb)};"function"===typeof Symbol&&"symbol"===typeof Symbol.iterator&&(d.prototype[Symbol.iterator]=function(){return this});e.prototype.run=function(f,l){if(!this.db)throw"Database closed";if(l){f=this.tb(f,l);try{f.step()}finally{f.Ya()}}else this.handleError(u(this.db,f,0,0,g));return this};e.prototype.exec=function(f,l,n){if(!this.db)throw"Database closed";var p=qa(),r=null,w=null,J=null;try{J=w=fa(f);var I=y(4);for(f=[];0!==t(J,"i8");){ra(g);ra(I);this.handleError(qb(this.db,J,-1,g,I));
88
+ var L=t(g,"i32");J=t(I,"i32");if(0!==L){var G=null;r=new c(L,this);for(null!=l&&r.bind(l);r.step();)null===G&&(G={columns:r.qb(),values:[]},f.push(G)),G.values.push(r.get(null,n));r.Ya()}}return f}catch(la){throw r&&r.Ya(),la;}finally{w&&ea(w),sa(p)}};e.prototype.Mb=function(f,l,n,p,r){"function"===typeof l&&(p=n,n=l,l=void 0);f=this.tb(f,l);try{for(;f.step();)n(f.zb(null,r))}finally{f.Ya()}if("function"===typeof p)return p()};e.prototype.tb=function(f,l){ra(g);this.handleError(D(this.db,f,-1,g,0));
89
+ f=t(g,"i32");if(0===f)throw"Nothing to prepare";var n=new c(f,this);null!=l&&n.bind(l);return this.gb[f]=n};e.prototype.Ub=function(f){return new d(f,this)};e.prototype.Nb=function(){Object.values(this.gb).forEach(function(l){l.Ya()});Object.values(this.Sa).forEach(A);this.Sa={};this.handleError(v(this.db));var f=ta(this.filename);this.handleError(q(this.filename,g));this.db=t(g,"i32");ob(this.db);return f};e.prototype.close=function(){null!==this.db&&(Object.values(this.gb).forEach(function(f){f.Ya()}),
90
+ Object.values(this.Sa).forEach(A),this.Sa={},this.Za&&(A(this.Za),this.Za=void 0),this.handleError(v(this.db)),ua("/"+this.filename),this.db=null)};e.prototype.handleError=function(f){if(0===f)return null;f=tc(this.db);throw Error(f);};e.prototype.Rb=function(){return x(this.db)};e.prototype.Kb=function(f,l){Object.prototype.hasOwnProperty.call(this.Sa,f)&&(A(this.Sa[f]),delete this.Sa[f]);var n=wa(function(p,r,w){r=b(r,w);try{var J=l.apply(null,r)}catch(I){va(p,I,-1);return}a(p,J)},"viii");this.Sa[f]=
91
+ n;this.handleError(tb(this.db,f,l.length,1,0,n,0,0,0));return this};e.prototype.Jb=function(f,l){var n=l.init||function(){return null},p=l.finalize||function(L){return L},r=l.step;if(!r)throw"An aggregate function must have a step function in "+f;var w={};Object.hasOwnProperty.call(this.Sa,f)&&(A(this.Sa[f]),delete this.Sa[f]);l=f+"__finalize";Object.hasOwnProperty.call(this.Sa,l)&&(A(this.Sa[l]),delete this.Sa[l]);var J=wa(function(L,G,la){var V=ub(L,1);Object.hasOwnProperty.call(w,V)||(w[V]=n());
92
+ G=b(G,la);G=[w[V]].concat(G);try{w[V]=r.apply(null,G)}catch(Fc){delete w[V],va(L,Fc,-1)}},"viii"),I=wa(function(L){var G=ub(L,1);try{var la=p(w[G])}catch(V){delete w[G];va(L,V,-1);return}a(L,la);delete w[G]},"vi");this.Sa[f]=J;this.Sa[l]=I;this.handleError(tb(this.db,f,r.length-1,1,0,0,J,I,0));return this};e.prototype.Zb=function(f){this.Za&&(vb(this.db,0,0),A(this.Za),this.Za=void 0);if(!f)return this;this.Za=wa(function(l,n,p,r,w){switch(n){case 18:l="insert";break;case 23:l="update";break;case 9:l=
93
+ "delete";break;default:throw"unknown operationCode in updateHook callback: "+n;}p=z(p);r=z(r);if(w>Number.MAX_SAFE_INTEGER)throw"rowId too big to fit inside a Number";f(l,p,r,Number(w))},"viiiij");vb(this.db,this.Za,0);return this};c.prototype.bind=c.prototype.bind;c.prototype.step=c.prototype.step;c.prototype.get=c.prototype.get;c.prototype.getColumnNames=c.prototype.qb;c.prototype.getAsObject=c.prototype.zb;c.prototype.getSQL=c.prototype.Sb;c.prototype.getNormalizedSQL=c.prototype.Pb;c.prototype.run=
94
+ c.prototype.run;c.prototype.reset=c.prototype.reset;c.prototype.freemem=c.prototype.freemem;c.prototype.free=c.prototype.Ya;d.prototype.next=d.prototype.next;d.prototype.getRemainingSQL=d.prototype.Qb;e.prototype.run=e.prototype.run;e.prototype.exec=e.prototype.exec;e.prototype.each=e.prototype.Mb;e.prototype.prepare=e.prototype.tb;e.prototype.iterateStatements=e.prototype.Ub;e.prototype["export"]=e.prototype.Nb;e.prototype.close=e.prototype.close;e.prototype.handleError=e.prototype.handleError;e.prototype.getRowsModified=
95
+ e.prototype.Rb;e.prototype.create_function=e.prototype.Kb;e.prototype.create_aggregate=e.prototype.Jb;e.prototype.updateHook=e.prototype.Zb;k.Database=e};var xa="./this.program",ya=(a,b)=>{throw b;},za=globalThis.document?.currentScript?.src;"undefined"!=typeof __filename?za=__filename:ba&&(za=self.location.href);var Aa="",Ba,Ca;
96
+ if(ca){var fs=require("node:fs");Aa=__dirname+"/";Ca=a=>{a=Da(a)?new URL(a):a;return fs.readFileSync(a)};Ba=async a=>{a=Da(a)?new URL(a):a;return fs.readFileSync(a,void 0)};1<process.argv.length&&(xa=process.argv[1].replace(/\\/g,"/"));process.argv.slice(2);"undefined"!=typeof module&&(module.exports=k);ya=(a,b)=>{process.exitCode=a;throw b;}}else if(aa||ba){try{Aa=(new URL(".",za)).href}catch{}ba&&(Ca=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)});
97
+ Ba=async a=>{if(Da(a))return new Promise((c,d)=>{var e=new XMLHttpRequest;e.open("GET",a,!0);e.responseType="arraybuffer";e.onload=()=>{200==e.status||0==e.status&&e.response?c(e.response):d(e.status)};e.onerror=d;e.send(null)});var b=await fetch(a,{credentials:"same-origin"});if(b.ok)return b.arrayBuffer();throw Error(b.status+" : "+b.url);}}var Ea=console.log.bind(console),B=console.error.bind(console),Fa,Ga=!1,Ha,Da=a=>a.startsWith("file://"),m,C,Ia,E,F,Ja,Ka,H;
98
+ function La(){var a=Ma.buffer;m=new Int8Array(a);Ia=new Int16Array(a);C=new Uint8Array(a);new Uint16Array(a);E=new Int32Array(a);F=new Uint32Array(a);Ja=new Float32Array(a);Ka=new Float64Array(a);H=new BigInt64Array(a);new BigUint64Array(a)}function Na(a){k.onAbort?.(a);a="Aborted("+a+")";B(a);Ga=!0;throw new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");}var Oa;
99
+ async function Pa(a){if(!Fa)try{var b=await Ba(a);return new Uint8Array(b)}catch{}if(a==Oa&&Fa)a=new Uint8Array(Fa);else if(Ca)a=Ca(a);else throw"both async and sync fetching of the wasm failed";return a}async function Qa(a,b){try{var c=await Pa(a);return await WebAssembly.instantiate(c,b)}catch(d){B(`failed to asynchronously prepare wasm: ${d}`),Na(d)}}
100
+ async function Ra(a){var b=Oa;if(!Fa&&!Da(b)&&!ca)try{var c=fetch(b,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(c,a)}catch(d){B(`wasm streaming compile failed: ${d}`),B("falling back to ArrayBuffer instantiation")}return Qa(b,a)}class Sa{name="ExitStatus";constructor(a){this.message=`Program terminated with exit(${a})`;this.status=a}}var Ta=a=>{for(;0<a.length;)a.shift()(k)},Ua=[],Va=[],Wa=()=>{var a=k.preRun.shift();Va.push(a)},K=0,Xa=null;
101
+ function t(a,b="i8"){b.endsWith("*")&&(b="*");switch(b){case "i1":return m[a];case "i8":return m[a];case "i16":return Ia[a>>1];case "i32":return E[a>>2];case "i64":return H[a>>3];case "float":return Ja[a>>2];case "double":return Ka[a>>3];case "*":return F[a>>2];default:Na(`invalid type for getValue: ${b}`)}}var Ya=!0;
102
+ function ra(a){var b="i32";b.endsWith("*")&&(b="*");switch(b){case "i1":m[a]=0;break;case "i8":m[a]=0;break;case "i16":Ia[a>>1]=0;break;case "i32":E[a>>2]=0;break;case "i64":H[a>>3]=BigInt(0);break;case "float":Ja[a>>2]=0;break;case "double":Ka[a>>3]=0;break;case "*":F[a>>2]=0;break;default:Na(`invalid type for setValue: ${b}`)}}
103
+ var Za=new TextDecoder,$a=(a,b,c,d)=>{c=b+c;if(d)return c;for(;a[b]&&!(b>=c);)++b;return b},z=(a,b,c)=>a?Za.decode(C.subarray(a,$a(C,a,b,c))):"",ab=(a,b)=>{for(var c=0,d=a.length-1;0<=d;d--){var e=a[d];"."===e?a.splice(d,1):".."===e?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c;c--)a.unshift("..");return a},ia=a=>{var b="/"===a.charAt(0),c="/"===a.slice(-1);(a=ab(a.split("/").filter(d=>!!d),!b).join("/"))||b||(a=".");a&&c&&(a+="/");return(b?"/":"")+a},bb=a=>{var b=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1);
104
+ a=b[0];b=b[1];if(!a&&!b)return".";b&&=b.slice(0,-1);return a+b},cb=a=>a&&a.match(/([^\/]+|\/)\/*$/)[1],db=()=>{if(ca){var a=require("node:crypto");return b=>a.randomFillSync(b)}return b=>crypto.getRandomValues(b)},eb=a=>{(eb=db())(a)},fb=(...a)=>{for(var b="",c=!1,d=a.length-1;-1<=d&&!c;d--){c=0<=d?a[d]:"/";if("string"!=typeof c)throw new TypeError("Arguments to path.resolve must be strings");if(!c)return"";b=c+"/"+b;c="/"===c.charAt(0)}b=ab(b.split("/").filter(e=>!!e),!c).join("/");return(c?"/":
105
+ "")+b||"."},gb=a=>{var b=$a(a,0);return Za.decode(a.buffer?a.subarray(0,b):new Uint8Array(a.slice(0,b)))},hb=[],ib=a=>{for(var b=0,c=0;c<a.length;++c){var d=a.charCodeAt(c);127>=d?b++:2047>=d?b+=2:55296<=d&&57343>=d?(b+=4,++c):b+=3}return b},M=(a,b,c,d)=>{if(!(0<d))return 0;var e=c;d=c+d-1;for(var g=0;g<a.length;++g){var h=a.codePointAt(g);if(127>=h){if(c>=d)break;b[c++]=h}else if(2047>=h){if(c+1>=d)break;b[c++]=192|h>>6;b[c++]=128|h&63}else if(65535>=h){if(c+2>=d)break;b[c++]=224|h>>12;b[c++]=128|
106
+ h>>6&63;b[c++]=128|h&63}else{if(c+3>=d)break;b[c++]=240|h>>18;b[c++]=128|h>>12&63;b[c++]=128|h>>6&63;b[c++]=128|h&63;g++}}b[c]=0;return c-e},jb=[];function kb(a,b){jb[a]={input:[],output:[],eb:b};mb(a,nb)}
107
+ var nb={open(a){var b=jb[a.node.rdev];if(!b)throw new N(43);a.tty=b;a.seekable=!1},close(a){a.tty.eb.fsync(a.tty)},fsync(a){a.tty.eb.fsync(a.tty)},read(a,b,c,d){if(!a.tty||!a.tty.eb.Bb)throw new N(60);for(var e=0,g=0;g<d;g++){try{var h=a.tty.eb.Bb(a.tty)}catch(q){throw new N(29);}if(void 0===h&&0===e)throw new N(6);if(null===h||void 0===h)break;e++;b[c+g]=h}e&&(a.node.atime=Date.now());return e},write(a,b,c,d){if(!a.tty||!a.tty.eb.ub)throw new N(60);try{for(var e=0;e<d;e++)a.tty.eb.ub(a.tty,b[c+e])}catch(g){throw new N(29);
108
+ }d&&(a.node.mtime=a.node.ctime=Date.now());return e}},wb={Bb(){a:{if(!hb.length){var a=null;if(ca){var b=Buffer.alloc(256),c=0,d=process.stdin.fd;try{c=fs.readSync(d,b,0,256)}catch(e){if(e.toString().includes("EOF"))c=0;else throw e;}0<c&&(a=b.slice(0,c).toString("utf-8"))}else globalThis.window?.prompt&&(a=window.prompt("Input: "),null!==a&&(a+="\n"));if(!a){a=null;break a}b=Array(ib(a)+1);a=M(a,b,0,b.length);b.length=a;hb=b}a=hb.shift()}return a},ub(a,b){null===b||10===b?(Ea(gb(a.output)),a.output=
109
+ []):0!=b&&a.output.push(b)},fsync(a){0<a.output?.length&&(Ea(gb(a.output)),a.output=[])},hc(){return{bc:25856,dc:5,ac:191,cc:35387,$b:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ic(){return 0},jc(){return[24,80]}},xb={ub(a,b){null===b||10===b?(B(gb(a.output)),a.output=[]):0!=b&&a.output.push(b)},fsync(a){0<a.output?.length&&(B(gb(a.output)),a.output=[])}},O={Wa:null,Xa(){return O.createNode(null,"/",16895,0)},createNode(a,b,c,d){if(24576===(c&61440)||4096===(c&61440))throw new N(63);
110
+ O.Wa||(O.Wa={dir:{node:{Ta:O.La.Ta,Ua:O.La.Ua,lookup:O.La.lookup,ib:O.La.ib,rename:O.La.rename,unlink:O.La.unlink,rmdir:O.La.rmdir,readdir:O.La.readdir,symlink:O.La.symlink},stream:{Va:O.Ma.Va}},file:{node:{Ta:O.La.Ta,Ua:O.La.Ua},stream:{Va:O.Ma.Va,read:O.Ma.read,write:O.Ma.write,jb:O.Ma.jb,kb:O.Ma.kb}},link:{node:{Ta:O.La.Ta,Ua:O.La.Ua,readlink:O.La.readlink},stream:{}},yb:{node:{Ta:O.La.Ta,Ua:O.La.Ua},stream:yb}});c=zb(a,b,c,d);P(c.mode)?(c.La=O.Wa.dir.node,c.Ma=O.Wa.dir.stream,c.Na={}):32768===
111
+ (c.mode&61440)?(c.La=O.Wa.file.node,c.Ma=O.Wa.file.stream,c.Ra=0,c.Na=null):40960===(c.mode&61440)?(c.La=O.Wa.link.node,c.Ma=O.Wa.link.stream):8192===(c.mode&61440)&&(c.La=O.Wa.yb.node,c.Ma=O.Wa.yb.stream);c.atime=c.mtime=c.ctime=Date.now();a&&(a.Na[b]=c,a.atime=a.mtime=a.ctime=c.atime);return c},fc(a){return a.Na?a.Na.subarray?a.Na.subarray(0,a.Ra):new Uint8Array(a.Na):new Uint8Array(0)},La:{Ta(a){var b={};b.dev=8192===(a.mode&61440)?a.id:1;b.ino=a.id;b.mode=a.mode;b.nlink=1;b.uid=0;b.gid=0;b.rdev=
112
+ a.rdev;P(a.mode)?b.size=4096:32768===(a.mode&61440)?b.size=a.Ra:40960===(a.mode&61440)?b.size=a.link.length:b.size=0;b.atime=new Date(a.atime);b.mtime=new Date(a.mtime);b.ctime=new Date(a.ctime);b.blksize=4096;b.blocks=Math.ceil(b.size/b.blksize);return b},Ua(a,b){for(var c of["mode","atime","mtime","ctime"])null!=b[c]&&(a[c]=b[c]);void 0!==b.size&&(b=b.size,a.Ra!=b&&(0==b?(a.Na=null,a.Ra=0):(c=a.Na,a.Na=new Uint8Array(b),c&&a.Na.set(c.subarray(0,Math.min(b,a.Ra))),a.Ra=b)))},lookup(){O.nb||(O.nb=
113
+ new N(44),O.nb.stack="<generic error, no stack>");throw O.nb;},ib(a,b,c,d){return O.createNode(a,b,c,d)},rename(a,b,c){try{var d=Q(b,c)}catch(g){}if(d){if(P(a.mode))for(var e in d.Na)throw new N(55);Ab(d)}delete a.parent.Na[a.name];b.Na[c]=a;a.name=c;b.ctime=b.mtime=a.parent.ctime=a.parent.mtime=Date.now()},unlink(a,b){delete a.Na[b];a.ctime=a.mtime=Date.now()},rmdir(a,b){var c=Q(a,b),d;for(d in c.Na)throw new N(55);delete a.Na[b];a.ctime=a.mtime=Date.now()},readdir(a){return[".","..",...Object.keys(a.Na)]},
114
+ symlink(a,b,c){a=O.createNode(a,b,41471,0);a.link=c;return a},readlink(a){if(40960!==(a.mode&61440))throw new N(28);return a.link}},Ma:{read(a,b,c,d,e){var g=a.node.Na;if(e>=a.node.Ra)return 0;a=Math.min(a.node.Ra-e,d);if(8<a&&g.subarray)b.set(g.subarray(e,e+a),c);else for(d=0;d<a;d++)b[c+d]=g[e+d];return a},write(a,b,c,d,e,g){b.buffer===m.buffer&&(g=!1);if(!d)return 0;a=a.node;a.mtime=a.ctime=Date.now();if(b.subarray&&(!a.Na||a.Na.subarray)){if(g)return a.Na=b.subarray(c,c+d),a.Ra=d;if(0===a.Ra&&
115
+ 0===e)return a.Na=b.slice(c,c+d),a.Ra=d;if(e+d<=a.Ra)return a.Na.set(b.subarray(c,c+d),e),d}g=e+d;var h=a.Na?a.Na.length:0;h>=g||(g=Math.max(g,h*(1048576>h?2:1.125)>>>0),0!=h&&(g=Math.max(g,256)),h=a.Na,a.Na=new Uint8Array(g),0<a.Ra&&a.Na.set(h.subarray(0,a.Ra),0));if(a.Na.subarray&&b.subarray)a.Na.set(b.subarray(c,c+d),e);else for(g=0;g<d;g++)a.Na[e+g]=b[c+g];a.Ra=Math.max(a.Ra,e+d);return d},Va(a,b,c){1===c?b+=a.position:2===c&&32768===(a.node.mode&61440)&&(b+=a.node.Ra);if(0>b)throw new N(28);
116
+ return b},jb(a,b,c,d,e){if(32768!==(a.node.mode&61440))throw new N(43);a=a.node.Na;if(e&2||!a||a.buffer!==m.buffer){e=!0;d=65536*Math.ceil(b/65536);var g=Bb(65536,d);g&&C.fill(0,g,g+d);d=g;if(!d)throw new N(48);if(a){if(0<c||c+b<a.length)a.subarray?a=a.subarray(c,c+b):a=Array.prototype.slice.call(a,c,c+b);m.set(a,d)}}else e=!1,d=a.byteOffset;return{Xb:d,Eb:e}},kb(a,b,c,d){O.Ma.write(a,b,0,d,c,!1);return 0}}},ja=(a,b)=>{var c=0;a&&(c|=365);b&&(c|=146);return c},Cb=null,Db={},Eb=[],Fb=1,R=null,Gb=!1,
117
+ Hb=!0,Ib={},N=class{name="ErrnoError";constructor(a){this.Pa=a}},Jb=class{hb={};node=null;get flags(){return this.hb.flags}set flags(a){this.hb.flags=a}get position(){return this.hb.position}set position(a){this.hb.position=a}},Kb=class{La={};Ma={};bb=null;constructor(a,b,c,d){a||=this;this.parent=a;this.Xa=a.Xa;this.id=Fb++;this.name=b;this.mode=c;this.rdev=d;this.atime=this.mtime=this.ctime=Date.now()}get read(){return 365===(this.mode&365)}set read(a){a?this.mode|=365:this.mode&=-366}get write(){return 146===
118
+ (this.mode&146)}set write(a){a?this.mode|=146:this.mode&=-147}};
119
+ function S(a,b={}){if(!a)throw new N(44);b.pb??(b.pb=!0);"/"===a.charAt(0)||(a="//"+a);var c=0;a:for(;40>c;c++){a=a.split("/").filter(q=>!!q);for(var d=Cb,e="/",g=0;g<a.length;g++){var h=g===a.length-1;if(h&&b.parent)break;if("."!==a[g])if(".."===a[g])if(e=bb(e),d===d.parent){a=e+"/"+a.slice(g+1).join("/");c--;continue a}else d=d.parent;else{e=ia(e+"/"+a[g]);try{d=Q(d,a[g])}catch(q){if(44===q?.Pa&&h&&b.Wb)return{path:e};throw q;}!d.bb||h&&!b.pb||(d=d.bb.root);if(40960===(d.mode&61440)&&(!h||b.ab)){if(!d.La.readlink)throw new N(52);
120
+ d=d.La.readlink(d);"/"===d.charAt(0)||(d=bb(e)+"/"+d);a=d+"/"+a.slice(g+1).join("/");continue a}}}return{path:e,node:d}}throw new N(32);}function ha(a){for(var b;;){if(a===a.parent)return a=a.Xa.Db,b?"/"!==a[a.length-1]?`${a}/${b}`:a+b:a;b=b?`${a.name}/${b}`:a.name;a=a.parent}}function Lb(a,b){for(var c=0,d=0;d<b.length;d++)c=(c<<5)-c+b.charCodeAt(d)|0;return(a+c>>>0)%R.length}
121
+ function Ab(a){var b=Lb(a.parent.id,a.name);if(R[b]===a)R[b]=a.cb;else for(b=R[b];b;){if(b.cb===a){b.cb=a.cb;break}b=b.cb}}function Q(a,b){var c=P(a.mode)?(c=Mb(a,"x"))?c:a.La.lookup?0:2:54;if(c)throw new N(c);for(c=R[Lb(a.id,b)];c;c=c.cb){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return a.La.lookup(a,b)}function zb(a,b,c,d){a=new Kb(a,b,c,d);b=Lb(a.parent.id,a.name);a.cb=R[b];return R[b]=a}function P(a){return 16384===(a&61440)}
122
+ function Nb(a){var b=["r","w","rw"][a&3];a&512&&(b+="w");return b}function Mb(a,b){if(Hb)return 0;if(!b.includes("r")||a.mode&292){if(b.includes("w")&&!(a.mode&146)||b.includes("x")&&!(a.mode&73))return 2}else return 2;return 0}function Ob(a,b){if(!P(a.mode))return 54;try{return Q(a,b),20}catch(c){}return Mb(a,"wx")}
123
+ function Pb(a,b,c){try{var d=Q(a,b)}catch(e){return e.Pa}if(a=Mb(a,"wx"))return a;if(c){if(!P(d.mode))return 54;if(d===d.parent||"/"===ha(d))return 10}else if(P(d.mode))return 31;return 0}function Qb(a){if(!a)throw new N(63);return a}function T(a){a=Eb[a];if(!a)throw new N(8);return a}function Rb(a,b=-1){a=Object.assign(new Jb,a);if(-1==b)a:{for(b=0;4096>=b;b++)if(!Eb[b])break a;throw new N(33);}a.fd=b;return Eb[b]=a}function Sb(a,b=-1){a=Rb(a,b);a.Ma?.ec?.(a);return a}
124
+ function Tb(a,b,c){var d=a?.Ma.Ua;a=d?a:b;d??=b.La.Ua;Qb(d);d(a,c)}var yb={open(a){a.Ma=Db[a.node.rdev].Ma;a.Ma.open?.(a)},Va(){throw new N(70);}};function mb(a,b){Db[a]={Ma:b}}function Ub(a,b){var c="/"===b;if(c&&Cb)throw new N(10);if(!c&&b){var d=S(b,{pb:!1});b=d.path;d=d.node;if(d.bb)throw new N(10);if(!P(d.mode))throw new N(54);}b={type:a,kc:{},Db:b,Vb:[]};a=a.Xa(b);a.Xa=b;b.root=a;c?Cb=a:d&&(d.bb=b,d.Xa&&d.Xa.Vb.push(b))}
125
+ function Vb(a,b,c){var d=S(a,{parent:!0}).node;a=cb(a);if(!a)throw new N(28);if("."===a||".."===a)throw new N(20);var e=Ob(d,a);if(e)throw new N(e);if(!d.La.ib)throw new N(63);return d.La.ib(d,a,b,c)}function ka(a,b=438){return Vb(a,b&4095|32768,0)}function U(a,b=511){return Vb(a,b&1023|16384,0)}function Wb(a,b,c){"undefined"==typeof c&&(c=b,b=438);Vb(a,b|8192,c)}
126
+ function Xb(a,b){if(!fb(a))throw new N(44);var c=S(b,{parent:!0}).node;if(!c)throw new N(44);b=cb(b);var d=Ob(c,b);if(d)throw new N(d);if(!c.La.symlink)throw new N(63);c.La.symlink(c,b,a)}function Yb(a){var b=S(a,{parent:!0}).node;a=cb(a);var c=Q(b,a),d=Pb(b,a,!0);if(d)throw new N(d);if(!b.La.rmdir)throw new N(63);if(c.bb)throw new N(10);b.La.rmdir(b,a);Ab(c)}
127
+ function ua(a){var b=S(a,{parent:!0}).node;if(!b)throw new N(44);a=cb(a);var c=Q(b,a),d=Pb(b,a,!1);if(d)throw new N(d);if(!b.La.unlink)throw new N(63);if(c.bb)throw new N(10);b.La.unlink(b,a);Ab(c)}function Zb(a,b){a=S(a,{ab:!b}).node;return Qb(a.La.Ta)(a)}function $b(a,b,c,d){Tb(a,b,{mode:c&4095|b.mode&-4096,ctime:Date.now(),Lb:d})}function ma(a,b){a="string"==typeof a?S(a,{ab:!0}).node:a;$b(null,a,b)}
128
+ function ac(a,b,c){if(P(b.mode))throw new N(31);if(32768!==(b.mode&61440))throw new N(28);var d=Mb(b,"w");if(d)throw new N(d);Tb(a,b,{size:c,timestamp:Date.now()})}
129
+ function na(a,b,c=438){if(""===a)throw new N(44);if("string"==typeof b){var d={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[b];if("undefined"==typeof d)throw Error(`Unknown file open mode: ${b}`);b=d}c=b&64?c&4095|32768:0;if("object"==typeof a)d=a;else{var e=a.endsWith("/");a=S(a,{ab:!(b&131072),Wb:!0});d=a.node;a=a.path}var g=!1;if(b&64)if(d){if(b&128)throw new N(20);}else{if(e)throw new N(31);d=Vb(a,c|511,0);g=!0}if(!d)throw new N(44);8192===(d.mode&61440)&&(b&=-513);if(b&65536&&!P(d.mode))throw new N(54);
130
+ if(!g&&(e=d?40960===(d.mode&61440)?32:P(d.mode)&&("r"!==Nb(b)||b&576)?31:Mb(d,Nb(b)):44))throw new N(e);b&512&&!g&&(e=d,e="string"==typeof e?S(e,{ab:!0}).node:e,ac(null,e,0));b&=-131713;e=Rb({node:d,path:ha(d),flags:b,seekable:!0,position:0,Ma:d.Ma,Yb:[],error:!1});e.Ma.open&&e.Ma.open(e);g&&ma(d,c&511);!k.logReadFiles||b&1||a in Ib||(Ib[a]=1);return e}function pa(a){if(null===a.fd)throw new N(8);a.rb&&(a.rb=null);try{a.Ma.close&&a.Ma.close(a)}catch(b){throw b;}finally{Eb[a.fd]=null}a.fd=null}
131
+ function bc(a,b,c){if(null===a.fd)throw new N(8);if(!a.seekable||!a.Ma.Va)throw new N(70);if(0!=c&&1!=c&&2!=c)throw new N(28);a.position=a.Ma.Va(a,b,c);a.Yb=[]}function cc(a,b,c,d,e){if(0>d||0>e)throw new N(28);if(null===a.fd)throw new N(8);if(1===(a.flags&2097155))throw new N(8);if(P(a.node.mode))throw new N(31);if(!a.Ma.read)throw new N(28);var g="undefined"!=typeof e;if(!g)e=a.position;else if(!a.seekable)throw new N(70);b=a.Ma.read(a,b,c,d,e);g||(a.position+=b);return b}
132
+ function oa(a,b,c,d,e){if(0>d||0>e)throw new N(28);if(null===a.fd)throw new N(8);if(0===(a.flags&2097155))throw new N(8);if(P(a.node.mode))throw new N(31);if(!a.Ma.write)throw new N(28);a.seekable&&a.flags&1024&&bc(a,0,2);var g="undefined"!=typeof e;if(!g)e=a.position;else if(!a.seekable)throw new N(70);b=a.Ma.write(a,b,c,d,e,void 0);g||(a.position+=b);return b}
133
+ function ta(a){var b=b||0;var c="binary";"utf8"!==c&&"binary"!==c&&Na(`Invalid encoding type "${c}"`);b=na(a,b);a=Zb(a).size;var d=new Uint8Array(a);cc(b,d,0,a,0);"utf8"===c&&(d=gb(d));pa(b);return d}
134
+ function W(a,b,c){a=ia("/dev/"+a);var d=ja(!!b,!!c);W.Cb??(W.Cb=64);var e=W.Cb++<<8|0;mb(e,{open(g){g.seekable=!1},close(){c?.buffer?.length&&c(10)},read(g,h,q,v){for(var u=0,x=0;x<v;x++){try{var D=b()}catch(pb){throw new N(29);}if(void 0===D&&0===u)throw new N(6);if(null===D||void 0===D)break;u++;h[q+x]=D}u&&(g.node.atime=Date.now());return u},write(g,h,q,v){for(var u=0;u<v;u++)try{c(h[q+u])}catch(x){throw new N(29);}v&&(g.node.mtime=g.node.ctime=Date.now());return u}});Wb(a,d,e)}var X={};
135
+ function Y(a,b,c){if("/"===b.charAt(0))return b;a=-100===a?"/":T(a).path;if(0==b.length){if(!c)throw new N(44);return a}return a+"/"+b}
136
+ function mc(a,b){F[a>>2]=b.dev;F[a+4>>2]=b.mode;F[a+8>>2]=b.nlink;F[a+12>>2]=b.uid;F[a+16>>2]=b.gid;F[a+20>>2]=b.rdev;H[a+24>>3]=BigInt(b.size);E[a+32>>2]=4096;E[a+36>>2]=b.blocks;var c=b.atime.getTime(),d=b.mtime.getTime(),e=b.ctime.getTime();H[a+40>>3]=BigInt(Math.floor(c/1E3));F[a+48>>2]=c%1E3*1E6;H[a+56>>3]=BigInt(Math.floor(d/1E3));F[a+64>>2]=d%1E3*1E6;H[a+72>>3]=BigInt(Math.floor(e/1E3));F[a+80>>2]=e%1E3*1E6;H[a+88>>3]=BigInt(b.ino);return 0}
137
+ var Ec=void 0,Gc=()=>{var a=E[+Ec>>2];Ec+=4;return a},Hc=0,Ic=[0,31,60,91,121,152,182,213,244,274,305,335],Jc=[0,31,59,90,120,151,181,212,243,273,304,334],Kc={},Lc=a=>{Ha=a;Ya||0<Hc||(k.onExit?.(a),Ga=!0);ya(a,new Sa(a))},Mc=a=>{if(!Ga)try{a()}catch(b){b instanceof Sa||"unwind"==b||ya(1,b)}finally{if(!(Ya||0<Hc))try{Ha=a=Ha,Lc(a)}catch(b){b instanceof Sa||"unwind"==b||ya(1,b)}}},Nc={},Pc=()=>{if(!Oc){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(globalThis.navigator?.language??
138
+ "C").replace("-","_")+".UTF-8",_:xa||"./this.program"},b;for(b in Nc)void 0===Nc[b]?delete a[b]:a[b]=Nc[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);Oc=c}return Oc},Oc,Qc=(a,b,c,d)=>{var e={string:u=>{var x=0;if(null!==u&&void 0!==u&&0!==u){x=ib(u)+1;var D=y(x);M(u,C,D,x);x=D}return x},array:u=>{var x=y(u.length);m.set(u,x);return x}};a=k["_"+a];var g=[],h=0;if(d)for(var q=0;q<d.length;q++){var v=e[c[q]];v?(0===h&&(h=qa()),g[q]=v(d[q])):g[q]=d[q]}c=a(...g);return c=function(u){0!==h&&sa(h);return"string"===
139
+ b?z(u):"boolean"===b?!!u:u}(c)},fa=a=>{var b=ib(a)+1,c=da(b);c&&M(a,C,c,b);return c},Rc,Sc=[],A=a=>{Rc.delete(Z.get(a));Z.set(a,null);Sc.push(a)},Tc=a=>{const b=a.length;return[b%128|128,b>>7,...a]},Uc={i:127,p:127,j:126,f:125,d:124,e:111},Vc=a=>Tc(Array.from(a,b=>Uc[b])),wa=(a,b)=>{if(!Rc){Rc=new WeakMap;var c=Z.length;if(Rc)for(var d=0;d<0+c;d++){var e=Z.get(d);e&&Rc.set(e,d)}}if(c=Rc.get(a)||0)return c;c=Sc.length?Sc.pop():Z.grow(1);try{Z.set(c,a)}catch(g){if(!(g instanceof TypeError))throw g;
140
+ b=Uint8Array.of(0,97,115,109,1,0,0,0,1,...Tc([1,96,...Vc(b.slice(1)),...Vc("v"===b[0]?"":b[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);b=new WebAssembly.Module(b);b=(new WebAssembly.Instance(b,{e:{f:a}})).exports.f;Z.set(c,b)}Rc.set(a,c);return c};R=Array(4096);Ub(O,"/");U("/tmp");U("/home");U("/home/web_user");
141
+ (function(){U("/dev");mb(259,{read:()=>0,write:(d,e,g,h)=>h,Va:()=>0});Wb("/dev/null",259);kb(1280,wb);kb(1536,xb);Wb("/dev/tty",1280);Wb("/dev/tty1",1536);var a=new Uint8Array(1024),b=0,c=()=>{0===b&&(eb(a),b=a.byteLength);return a[--b]};W("random",c);W("urandom",c);U("/dev/shm");U("/dev/shm/tmp")})();
142
+ (function(){U("/proc");var a=U("/proc/self");U("/proc/self/fd");Ub({Xa(){var b=zb(a,"fd",16895,73);b.Ma={Va:O.Ma.Va};b.La={lookup(c,d){c=+d;var e=T(c);c={parent:null,Xa:{Db:"fake"},La:{readlink:()=>e.path},id:c+1};return c.parent=c},readdir(){return Array.from(Eb.entries()).filter(([,c])=>c).map(([c])=>c.toString())}};return b}},"/proc/self/fd")})();k.noExitRuntime&&(Ya=k.noExitRuntime);k.print&&(Ea=k.print);k.printErr&&(B=k.printErr);k.wasmBinary&&(Fa=k.wasmBinary);k.thisProgram&&(xa=k.thisProgram);
143
+ if(k.preInit)for("function"==typeof k.preInit&&(k.preInit=[k.preInit]);0<k.preInit.length;)k.preInit.shift()();k.stackSave=()=>qa();k.stackRestore=a=>sa(a);k.stackAlloc=a=>y(a);k.cwrap=(a,b,c,d)=>{var e=!c||c.every(g=>"number"===g||"boolean"===g);return"string"!==b&&e&&!d?k["_"+a]:(...g)=>Qc(a,b,c,g)};k.addFunction=wa;k.removeFunction=A;k.UTF8ToString=z;k.stringToNewUTF8=fa;k.writeArrayToMemory=(a,b)=>{m.set(a,b)};
144
+ var da,ea,Bb,Wc,sa,y,qa,Ma,Z,Xc={a:(a,b,c,d)=>Na(`Assertion failed: ${z(a)}, at: `+[b?z(b):"unknown filename",c,d?z(d):"unknown function"]),i:function(a,b){try{return a=z(a),ma(a,b),0}catch(c){if("undefined"==typeof X||"ErrnoError"!==c.name)throw c;return-c.Pa}},L:function(a,b,c){try{b=z(b);b=Y(a,b);if(c&-8)return-28;var d=S(b,{ab:!0}).node;if(!d)return-44;a="";c&4&&(a+="r");c&2&&(a+="w");c&1&&(a+="x");return a&&Mb(d,a)?-2:0}catch(e){if("undefined"==typeof X||"ErrnoError"!==e.name)throw e;return-e.Pa}},
145
+ j:function(a,b){try{var c=T(a);$b(c,c.node,b,!1);return 0}catch(d){if("undefined"==typeof X||"ErrnoError"!==d.name)throw d;return-d.Pa}},h:function(a){try{var b=T(a);Tb(b,b.node,{timestamp:Date.now(),Lb:!1});return 0}catch(c){if("undefined"==typeof X||"ErrnoError"!==c.name)throw c;return-c.Pa}},b:function(a,b,c){Ec=c;try{var d=T(a);switch(b){case 0:var e=Gc();if(0>e)break;for(;Eb[e];)e++;return Sb(d,e).fd;case 1:case 2:return 0;case 3:return d.flags;case 4:return e=Gc(),d.flags|=e,0;case 12:return e=
146
+ Gc(),Ia[e+0>>1]=2,0;case 13:case 14:return 0}return-28}catch(g){if("undefined"==typeof X||"ErrnoError"!==g.name)throw g;return-g.Pa}},g:function(a,b){try{var c=T(a),d=c.node,e=c.Ma.Ta;a=e?c:d;e??=d.La.Ta;Qb(e);var g=e(a);return mc(b,g)}catch(h){if("undefined"==typeof X||"ErrnoError"!==h.name)throw h;return-h.Pa}},H:function(a,b){b=-9007199254740992>b||9007199254740992<b?NaN:Number(b);try{if(isNaN(b))return-61;var c=T(a);if(0>b||0===(c.flags&2097155))throw new N(28);ac(c,c.node,b);return 0}catch(d){if("undefined"==
147
+ typeof X||"ErrnoError"!==d.name)throw d;return-d.Pa}},G:function(a,b){try{if(0===b)return-28;var c=ib("/")+1;if(b<c)return-68;M("/",C,a,b);return c}catch(d){if("undefined"==typeof X||"ErrnoError"!==d.name)throw d;return-d.Pa}},K:function(a,b){try{return a=z(a),mc(b,Zb(a,!0))}catch(c){if("undefined"==typeof X||"ErrnoError"!==c.name)throw c;return-c.Pa}},C:function(a,b,c){try{return b=z(b),b=Y(a,b),U(b,c),0}catch(d){if("undefined"==typeof X||"ErrnoError"!==d.name)throw d;return-d.Pa}},J:function(a,
148
+ b,c,d){try{b=z(b);var e=d&256;b=Y(a,b,d&4096);return mc(c,e?Zb(b,!0):Zb(b))}catch(g){if("undefined"==typeof X||"ErrnoError"!==g.name)throw g;return-g.Pa}},x:function(a,b,c,d){Ec=d;try{b=z(b);b=Y(a,b);var e=d?Gc():0;return na(b,c,e).fd}catch(g){if("undefined"==typeof X||"ErrnoError"!==g.name)throw g;return-g.Pa}},v:function(a,b,c,d){try{b=z(b);b=Y(a,b);if(0>=d)return-28;var e=S(b).node;if(!e)throw new N(44);if(!e.La.readlink)throw new N(28);var g=e.La.readlink(e);var h=Math.min(d,ib(g)),q=m[c+h];M(g,
149
+ C,c,d+1);m[c+h]=q;return h}catch(v){if("undefined"==typeof X||"ErrnoError"!==v.name)throw v;return-v.Pa}},u:function(a){try{return a=z(a),Yb(a),0}catch(b){if("undefined"==typeof X||"ErrnoError"!==b.name)throw b;return-b.Pa}},f:function(a,b){try{return a=z(a),mc(b,Zb(a))}catch(c){if("undefined"==typeof X||"ErrnoError"!==c.name)throw c;return-c.Pa}},r:function(a,b,c){try{b=z(b);b=Y(a,b);if(c)if(512===c)Yb(b);else return-28;else ua(b);return 0}catch(d){if("undefined"==typeof X||"ErrnoError"!==d.name)throw d;
150
+ return-d.Pa}},q:function(a,b,c){try{b=z(b);b=Y(a,b,!0);var d=Date.now(),e,g;if(c){var h=F[c>>2]+4294967296*E[c+4>>2],q=E[c+8>>2];1073741823==q?e=d:1073741822==q?e=null:e=1E3*h+q/1E6;c+=16;h=F[c>>2]+4294967296*E[c+4>>2];q=E[c+8>>2];1073741823==q?g=d:1073741822==q?g=null:g=1E3*h+q/1E6}else g=e=d;if(null!==(g??e)){a=e;var v=S(b,{ab:!0}).node;Qb(v.La.Ua)(v,{atime:a,mtime:g})}return 0}catch(u){if("undefined"==typeof X||"ErrnoError"!==u.name)throw u;return-u.Pa}},m:()=>Na(""),l:()=>{Ya=!1;Hc=0},A:function(a,
151
+ b){a=-9007199254740992>a||9007199254740992<a?NaN:Number(a);a=new Date(1E3*a);E[b>>2]=a.getSeconds();E[b+4>>2]=a.getMinutes();E[b+8>>2]=a.getHours();E[b+12>>2]=a.getDate();E[b+16>>2]=a.getMonth();E[b+20>>2]=a.getFullYear()-1900;E[b+24>>2]=a.getDay();var c=a.getFullYear();E[b+28>>2]=(0!==c%4||0===c%100&&0!==c%400?Jc:Ic)[a.getMonth()]+a.getDate()-1|0;E[b+36>>2]=-(60*a.getTimezoneOffset());c=(new Date(a.getFullYear(),6,1)).getTimezoneOffset();var d=(new Date(a.getFullYear(),0,1)).getTimezoneOffset();
152
+ E[b+32>>2]=(c!=d&&a.getTimezoneOffset()==Math.min(d,c))|0},y:function(a,b,c,d,e,g,h){e=-9007199254740992>e||9007199254740992<e?NaN:Number(e);try{var q=T(d);if(0!==(b&2)&&0===(c&2)&&2!==(q.flags&2097155))throw new N(2);if(1===(q.flags&2097155))throw new N(2);if(!q.Ma.jb)throw new N(43);if(!a)throw new N(28);var v=q.Ma.jb(q,a,e,b,c);var u=v.Xb;E[g>>2]=v.Eb;F[h>>2]=u;return 0}catch(x){if("undefined"==typeof X||"ErrnoError"!==x.name)throw x;return-x.Pa}},z:function(a,b,c,d,e,g){g=-9007199254740992>g||
153
+ 9007199254740992<g?NaN:Number(g);try{var h=T(e);if(c&2){c=g;if(32768!==(h.node.mode&61440))throw new N(43);if(!(d&2)){var q=C.slice(a,a+b);h.Ma.kb&&h.Ma.kb(h,q,c,b,d)}}}catch(v){if("undefined"==typeof X||"ErrnoError"!==v.name)throw v;return-v.Pa}},n:(a,b)=>{Kc[a]&&(clearTimeout(Kc[a].id),delete Kc[a]);if(!b)return 0;var c=setTimeout(()=>{delete Kc[a];Mc(()=>Wc(a,performance.now()))},b);Kc[a]={id:c,lc:b};return 0},B:(a,b,c,d)=>{var e=(new Date).getFullYear(),g=(new Date(e,0,1)).getTimezoneOffset();
154
+ e=(new Date(e,6,1)).getTimezoneOffset();F[a>>2]=60*Math.max(g,e);E[b>>2]=Number(g!=e);b=h=>{var q=Math.abs(h);return`UTC${0<=h?"-":"+"}${String(Math.floor(q/60)).padStart(2,"0")}${String(q%60).padStart(2,"0")}`};a=b(g);b=b(e);e<g?(M(a,C,c,17),M(b,C,d,17)):(M(a,C,d,17),M(b,C,c,17))},d:()=>Date.now(),s:()=>2147483648,c:()=>performance.now(),o:a=>{var b=C.length;a>>>=0;if(2147483648<a)return!1;for(var c=1;4>=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);a:{d=(Math.min(2147483648,65536*Math.ceil(Math.max(a,
155
+ d)/65536))-Ma.buffer.byteLength+65535)/65536|0;try{Ma.grow(d);La();var e=1;break a}catch(g){}e=void 0}if(e)return!0}return!1},E:(a,b)=>{var c=0,d=0,e;for(e of Pc()){var g=b+c;F[a+d>>2]=g;c+=M(e,C,g,Infinity)+1;d+=4}return 0},F:(a,b)=>{var c=Pc();F[a>>2]=c.length;a=0;for(var d of c)a+=ib(d)+1;F[b>>2]=a;return 0},e:function(a){try{var b=T(a);pa(b);return 0}catch(c){if("undefined"==typeof X||"ErrnoError"!==c.name)throw c;return c.Pa}},p:function(a,b){try{var c=T(a);m[b]=c.tty?2:P(c.mode)?3:40960===(c.mode&
156
+ 61440)?7:4;Ia[b+2>>1]=0;H[b+8>>3]=BigInt(0);H[b+16>>3]=BigInt(0);return 0}catch(d){if("undefined"==typeof X||"ErrnoError"!==d.name)throw d;return d.Pa}},w:function(a,b,c,d){try{a:{var e=T(a);a=b;for(var g,h=b=0;h<c;h++){var q=F[a>>2],v=F[a+4>>2];a+=8;var u=cc(e,m,q,v,g);if(0>u){var x=-1;break a}b+=u;if(u<v)break;"undefined"!=typeof g&&(g+=u)}x=b}F[d>>2]=x;return 0}catch(D){if("undefined"==typeof X||"ErrnoError"!==D.name)throw D;return D.Pa}},D:function(a,b,c,d){b=-9007199254740992>b||9007199254740992<
157
+ b?NaN:Number(b);try{if(isNaN(b))return 61;var e=T(a);bc(e,b,c);H[d>>3]=BigInt(e.position);e.rb&&0===b&&0===c&&(e.rb=null);return 0}catch(g){if("undefined"==typeof X||"ErrnoError"!==g.name)throw g;return g.Pa}},I:function(a){try{var b=T(a);return b.Ma?.fsync?.(b)}catch(c){if("undefined"==typeof X||"ErrnoError"!==c.name)throw c;return c.Pa}},t:function(a,b,c,d){try{a:{var e=T(a);a=b;for(var g,h=b=0;h<c;h++){var q=F[a>>2],v=F[a+4>>2];a+=8;var u=oa(e,m,q,v,g);if(0>u){var x=-1;break a}b+=u;if(u<v)break;
158
+ "undefined"!=typeof g&&(g+=u)}x=b}F[d>>2]=x;return 0}catch(D){if("undefined"==typeof X||"ErrnoError"!==D.name)throw D;return D.Pa}},k:Lc};
159
+ function Yc(){function a(){k.calledRun=!0;if(!Ga){if(!k.noFSInit&&!Gb){var b,c;Gb=!0;b??=k.stdin;c??=k.stdout;d??=k.stderr;b?W("stdin",b):Xb("/dev/tty","/dev/stdin");c?W("stdout",null,c):Xb("/dev/tty","/dev/stdout");d?W("stderr",null,d):Xb("/dev/tty1","/dev/stderr");na("/dev/stdin",0);na("/dev/stdout",1);na("/dev/stderr",1)}Zc.N();Hb=!1;k.onRuntimeInitialized?.();if(k.postRun)for("function"==typeof k.postRun&&(k.postRun=[k.postRun]);k.postRun.length;){var d=k.postRun.shift();Ua.push(d)}Ta(Ua)}}if(0<
160
+ K)Xa=Yc;else{if(k.preRun)for("function"==typeof k.preRun&&(k.preRun=[k.preRun]);k.preRun.length;)Wa();Ta(Va);0<K?Xa=Yc:k.setStatus?(k.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>k.setStatus(""),1);a()},1)):a()}}var Zc;
161
+ (async function(){function a(c){c=Zc=c.exports;k._sqlite3_free=c.P;k._sqlite3_value_text=c.Q;k._sqlite3_prepare_v2=c.R;k._sqlite3_step=c.S;k._sqlite3_reset=c.T;k._sqlite3_exec=c.U;k._sqlite3_finalize=c.V;k._sqlite3_column_name=c.W;k._sqlite3_column_text=c.X;k._sqlite3_column_type=c.Y;k._sqlite3_errmsg=c.Z;k._sqlite3_clear_bindings=c._;k._sqlite3_value_blob=c.$;k._sqlite3_value_bytes=c.aa;k._sqlite3_value_double=c.ba;k._sqlite3_value_int=c.ca;k._sqlite3_value_type=c.da;k._sqlite3_result_blob=c.ea;
162
+ k._sqlite3_result_double=c.fa;k._sqlite3_result_error=c.ga;k._sqlite3_result_int=c.ha;k._sqlite3_result_int64=c.ia;k._sqlite3_result_null=c.ja;k._sqlite3_result_text=c.ka;k._sqlite3_aggregate_context=c.la;k._sqlite3_column_count=c.ma;k._sqlite3_data_count=c.na;k._sqlite3_column_blob=c.oa;k._sqlite3_column_bytes=c.pa;k._sqlite3_column_double=c.qa;k._sqlite3_bind_blob=c.ra;k._sqlite3_bind_double=c.sa;k._sqlite3_bind_int=c.ta;k._sqlite3_bind_text=c.ua;k._sqlite3_bind_parameter_index=c.va;k._sqlite3_sql=
163
+ c.wa;k._sqlite3_normalized_sql=c.xa;k._sqlite3_changes=c.ya;k._sqlite3_close_v2=c.za;k._sqlite3_create_function_v2=c.Aa;k._sqlite3_update_hook=c.Ba;k._sqlite3_open=c.Ca;da=k._malloc=c.Da;ea=k._free=c.Ea;k._RegisterExtensionFunctions=c.Fa;Bb=c.Ga;Wc=c.Ha;sa=c.Ia;y=c.Ja;qa=c.Ka;Ma=c.M;Z=c.O;La();K--;k.monitorRunDependencies?.(K);0==K&&Xa&&(c=Xa,Xa=null,c());return Zc}K++;k.monitorRunDependencies?.(K);var b={a:Xc};if(k.instantiateWasm)return new Promise(c=>{k.instantiateWasm(b,(d,e)=>{c(a(d,e))})});
164
+ Oa??=k.locateFile?k.locateFile("sql-wasm.wasm",Aa):Aa+"sql-wasm.wasm";return a((await Ra(b)).instance)})();Yc();
165
+
166
+
167
+ // The shell-pre.js and emcc-generated code goes above
168
+ return Module;
169
+ }); // The end of the promise being returned
170
+
171
+ return initSqlJsPromise;
172
+ } // The end of our initSqlJs function
173
+
174
+ // This bit below is copied almost exactly from what you get when you use the MODULARIZE=1 flag with emcc
175
+ // However, we don't want to use the emcc modularization. See shell-pre.js
176
+ if (typeof exports === 'object' && typeof module === 'object'){
177
+ module.exports = initSqlJs;
178
+ // This will allow the module to be used in ES6 or CommonJS
179
+ module.exports.default = initSqlJs;
180
+ }
181
+ else if (typeof define === 'function' && define['amd']) {
182
+ define([], function() { return initSqlJs; });
183
+ }
184
+ else if (typeof exports === 'object'){
185
+ exports["Module"] = initSqlJs;
186
+ }
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "sql.js",
3
+ "version": "1.14.2",
4
+ "description": "SQLite library with support for opening and writing databases, prepared statements, and more. This SQLite library is in pure javascript (compiled with emscripten).",
5
+ "keywords": [
6
+ "sql",
7
+ "sqlite",
8
+ "stand-alone",
9
+ "relational",
10
+ "database",
11
+ "RDBMS",
12
+ "data",
13
+ "query",
14
+ "statement",
15
+ "emscripten",
16
+ "asm",
17
+ "asm.js"
18
+ ],
19
+ "license": "MIT",
20
+ "main": "./dist/sql-wasm.js",
21
+ "exports": {
22
+ ".": {
23
+ "browser": "./dist/sql-wasm-browser.js",
24
+ "default": "./dist/sql-wasm.js"
25
+ },
26
+ "./dist/*": "./dist/*"
27
+ },
28
+ "scripts": {
29
+ "build": "make",
30
+ "rebuild": "npm run clean && npm run build",
31
+ "clean": "make clean",
32
+ "test": "npm run lint && npm run test-asm && npm run test-asm-debug && npm run test-wasm && npm run test-wasm-debug && npm run test-wasm-browser && npm run test-asm-memory-growth",
33
+ "lint": "eslint .",
34
+ "prettify": "eslint . --fix",
35
+ "test-asm": "node --unhandled-rejections=strict test/all.js asm",
36
+ "test-asm-debug": "node --unhandled-rejections=strict test/all.js asm-debug",
37
+ "test-asm-memory-growth": "node --unhandled-rejections=strict test/all.js asm-memory-growth",
38
+ "test-wasm": "node --unhandled-rejections=strict test/all.js wasm",
39
+ "test-wasm-debug": "node --unhandled-rejections=strict test/all.js wasm-debug",
40
+ "test-wasm-browser": "node --unhandled-rejections=strict test/all.js wasm-browser",
41
+ "doc": "jsdoc -c .jsdoc.config.json"
42
+ },
43
+ "homepage": "http://github.com/sql-js/sql.js",
44
+ "repository": {
45
+ "type": "git",
46
+ "url": "http://github.com/sql-js/sql.js.git"
47
+ },
48
+ "bugs": {
49
+ "url": "https://github.com/sql-js/sql.js/issues"
50
+ },
51
+ "devDependencies": {
52
+ "@eslint/js": "^10.0.0",
53
+ "clean-jsdoc-theme": "^4.2.0",
54
+ "eslint": "^10.0.0",
55
+ "globals": "^16.4.0",
56
+ "jsdoc": "^4.0.2"
57
+ }
58
+ }
File without changes
@@ -0,0 +1,35 @@
1
+ # Atribusi skill bawaan
2
+
3
+ ## `write-swift` — disalin apa adanya
4
+
5
+ | Skill | Sumber | Lisensi |
6
+ |---|---|---|
7
+ | `write-swift` | [emilkowalski/skills](https://github.com/emilkowalski/skills) | MIT © 2026 Emil Kowalski |
8
+
9
+ ## `frontend-design` — sintesis, memuat materi pihak ketiga
10
+
11
+ Skill `frontend-design` ditulis untuk VibeCode dengan MELEBUR enam belas skill
12
+ desain dan animasi menjadi satu. Sebagian besar isinya diturunkan dari tiga repo
13
+ berlisensi **MIT** berikut; teksnya disunting, digabung, dan disesuaikan dengan
14
+ sistem VibeCode, bukan disalin mentah:
15
+
16
+ | Materi di `frontend-design` | Sumber | Lisensi |
17
+ |---|---|---|
18
+ | Doktrin gerak, resep animasi web & Expo, prinsip Apple fluid interfaces, kosakata animasi, alur review/audit/hunt, prototyping varian, daftar pustaka kurasi, panduan Sonner (dulu skill `animate`, `animate-expo`, `animation-vocabulary`, `apple-design`, `ask-sonner`, `emil-design-eng`, `find-animation-opportunities`, `improve-animations`, `pick-ui-library`, `prototype`, `review-animations`) | [emilkowalski/skills](https://github.com/emilkowalski/skills) | MIT © 2026 Emil Kowalski |
19
+ | Mesin pencari desain: `scripts/`, `data/` (CSV/JSON), aturan UX & pro-rules (dulu skill `ui-ux-pro-max`) | [nextlevelbuilder/ui-ux-pro-max-skill](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill) | MIT © 2024 Next Level Builder |
20
+ | Art direction level penghargaan: `art-direction.md`, `typography.md`, `layout-systems.md`, `animation-patterns.md`, `technical-stack.md`, `case-studies.md` (dulu skill `top-design`) | [wondelai/skills](https://github.com/wondelai/skills) | MIT © 2025 Wondel.ai sp. z o.o. |
21
+
22
+ Bagian yang ditulis VibeCode sendiri (dulu skill `desain-antarmuka`,
23
+ `gerak-antarmuka`, `rujukan-desain`, plus seluruh perekatan dan bagian baru)
24
+ tidak memerlukan atribusi eksternal.
25
+
26
+ Skill berikut ditulis untuk VibeCode: `dasar-vibecode`, `kerja-agentik`,
27
+ `frontend-design`, `backend-engineering`.
28
+
29
+ ## Catatan tentang mesin pencari `frontend-design`
30
+
31
+ Langkah pencariannya (`scripts/search.py`) **memerlukan Python 3** di mesin
32
+ pengguna dan membaca data lokalnya sendiri di `data/` — 37 CSV dan 15 JSON
33
+ berisi gaya UI, palet warna, pasangan font, dan pedoman UX. Karena itu skrip
34
+ dan datanya disalin utuh; di mesin tanpa Python, hanya langkah pencarian yang
35
+ gagal — seluruh doktrin teks skill tetap berfungsi.
@@ -0,0 +1,74 @@
1
+ # Skill bawaan VibeCode
2
+
3
+ Folder ini berisi skill yang dikirim bersama aplikasi:
4
+
5
+ - `dasar-vibecode` — fondasi memakai VibeCode: orientasi repo, menelusuri kode,
6
+ edit/refactor aman, shell, git, review, komentar, dan penanganan galat.
7
+ - `kerja-agentik` — loop kerja agentik: tulis → jalankan → uji sebelum mengklaim
8
+ apa pun, debug sampai akar, dan verifikasi lewat `WebSearch`/kode sungguhan
9
+ saat informasi kurang — bukan mengarang.
10
+ - `frontend-design` — SATU skill untuk seluruh desain frontend: kriya antarmuka,
11
+ doktrin gerak lengkap (kurva/durasi persis), art direction level penghargaan,
12
+ aturan UX, alur review/audit, prototyping varian, dan mesin pencari desain
13
+ lokal (`scripts/` + `data/`, butuh Python 3). Hasil peleburan enam belas skill
14
+ desain/animasi lama; atribusi materinya di `NOTICE.md`.
15
+ - `backend-engineering` — SATU skill untuk seluruh sisi server: kontrak HTTP,
16
+ pemodelan data, migrasi terhadap tabel yang sedang melayani, auth dan rahasia,
17
+ idempotensi dan antrean, observabilitas, keamanan, performa, deploy, plus alur
18
+ review/audit dan berkas khusus stack Node/Python/Go. Ditulis untuk VibeCode.
19
+ - `write-swift` — gaya penulisan Swift (pihak ketiga, lihat `NOTICE.md`).
20
+ - `word-maker` — dokumen Word (.docx) lewat `DokumenTulis`: kapan DOCX alih-alih
21
+ PDF, Markdown yang dipetakan (tabel, daftar bernomor), dan validasi hasilnya.
22
+ - `excel-maker` — workbook Excel (.xlsx) lewat `ExcelTulis`: jenis sel, rumus,
23
+ tanggal, format angka, beberapa sheet, dan `DokumenValidasi` untuk workbook
24
+ yang dibuat dengan cara lain.
25
+ - `pdf-maker` — PDF lewat `DokumenTulis` (Chromium): Markdown atau HTML + CSS
26
+ untuk tata letak dan pemenggalan halaman, dan pemeriksaan hasilnya.
27
+
28
+ Semuanya dijaga `packages/core/src/skills/bawaan.test.ts`.
29
+
30
+ ## Cara mengisi
31
+
32
+ Satu skill = satu subfolder berisi `SKILL.md`:
33
+
34
+ ```
35
+ builtin/
36
+ nama-skill/
37
+ SKILL.md # wajib
38
+ references/ # opsional, dibaca sesuai kebutuhan
39
+ scripts/ # opsional
40
+ templates/ # opsional
41
+ assets/ # opsional
42
+ ```
43
+
44
+ `SKILL.md` diawali frontmatter YAML:
45
+
46
+ ```markdown
47
+ ---
48
+ name: nama-skill
49
+ description: Satu kalimat yang menjelaskan kapan skill ini dipakai.
50
+ ---
51
+
52
+ Isi instruksi untuk agen.
53
+ ```
54
+
55
+ Aturan penting:
56
+
57
+ - `name` wajib sama dengan nama foldernya, maksimal 64 karakter, hanya huruf
58
+ kecil dan tanda hubung.
59
+ - `description` maksimal 1024 karakter, tetapi hanya ~200 karakter pertama yang
60
+ masuk ke indeks system prompt — tulis bagian terpenting di depan.
61
+ - Isi badan SKILL.md hanya dimuat saat agen memanggil tool `Skill`, jadi panjang
62
+ isi tidak membebani setiap giliran.
63
+
64
+ ## Bagaimana folder ini dipakai
65
+
66
+ Saat pertama dijalankan, isi folder ini disalin ke `~/.vibecode/skills` beserta
67
+ manifes hash. Pada pembaruan aplikasi berikutnya:
68
+
69
+ - skill baru disalin,
70
+ - skill yang tidak berubah dilewati,
71
+ - skill yang berubah di sini diperbarui **hanya bila** salinan pengguna belum
72
+ disunting,
73
+ - skill yang sudah disunting pengguna tidak pernah ditimpa,
74
+ - skill yang dihapus pengguna tidak pernah dihidupkan lagi.
@@ -0,0 +1,102 @@
1
+ ---
2
+ name: backend-engineering
3
+ description: Use when building, changing, or reviewing anything behind an API — HTTP endpoints, data models and migrations, auth and sessions, background jobs and queues, caching, and the observability, security, and performance decisions that make a server trustworthy. Covers Node/TypeScript, Python, and Go, plus SQL schema design, and review/audit workflows for an existing service. Also answers "what status code is this" and "is this migration safe to run on a live table".
4
+ ---
5
+
6
+ # Backend Engineering
7
+
8
+ One skill for everything behind the API. It merges contract design, data modelling, migrations, auth, concurrency, observability, security, and performance into a single doctrine with one set of values — so an endpoint written in build mode passes review mode, and a migration proposed here is the one the audit would have demanded.
9
+
10
+ ## Operating Posture
11
+
12
+ You are a senior backend engineer. The work is judged on what happens on the worst day, not the first one: the day the table has 40 million rows, two requests arrive in the same millisecond, and the third-party API returns 503 in the middle of a transaction.
13
+
14
+ - **Contracts before code.** Decide the request shape, the response shape, and the failure shape first. Everything downstream is an implementation detail; those three are promises.
15
+ - **The boring choice wins.** Postgres, a queue, a cache. Reach for something exotic only when you can name the specific limit the boring thing hit.
16
+ - **Fail closed at the boundary.** Unparsed input, missing authorization, an unknown enum — refuse. A backend that guesses is a backend that leaks.
17
+ - **Every write is a concurrency question.** Ask "what if two of these run at once" before you ask anything else. If the answer is "we'd get two rows", you have a bug, not a race you'll get away with.
18
+ - **Never invent a status code, a limit, an SLO, or a timeout.** Pull them from the tables in these files or from the project's own config. A made-up number reads exactly like a measured one.
19
+ - **Instrument before optimizing.** "It's slow" is a symptom; the query count is the diagnosis. Guessing at performance is how N+1 survives three refactors.
20
+ - **Verify by CALLING the API, never by reading the handler.** A handler that looks right and a service that answers correctly are different claims. Curl it, print the status code, read the log.
21
+
22
+ ## Mode Router
23
+
24
+ Identify what the task actually is, then load only what it needs:
25
+
26
+ | The task | Load |
27
+ | --- | --- |
28
+ | Design or change an endpoint, status codes, error shape, pagination, versioning | [references/api-contracts.md](references/api-contracts.md) |
29
+ | Design a schema, choose keys, indexes, or hunt N+1 | [references/data-modelling.md](references/data-modelling.md) |
30
+ | Write or review a migration, especially against a live table | [references/migrations.md](references/migrations.md) |
31
+ | Login, sessions, tokens, permissions, secrets, a leaked key | [references/auth-and-secrets.md](references/auth-and-secrets.md) |
32
+ | Input validation, error taxonomy, what a response may not contain | [references/validation-and-errors.md](references/validation-and-errors.md) |
33
+ | Idempotency, locking, transactions, queues, retries, scheduled work | [references/concurrency-and-jobs.md](references/concurrency-and-jobs.md) |
34
+ | Logging, metrics, tracing, health checks, alerts | [references/observability.md](references/observability.md) |
35
+ | Injection, SSRF, CORS, CSRF, rate limiting, authorization bugs | [references/security.md](references/security.md) |
36
+ | Test strategy for a service, or a latency/throughput problem | [references/testing-and-perf.md](references/testing-and-perf.md) |
37
+ | Config, env vars, graceful shutdown, timeouts, deploy ordering | [references/deploy-and-config.md](references/deploy-and-config.md) |
38
+ | Review a diff, audit a service, or hunt for what breaks under load | [references/review-audit.md](references/review-audit.md) |
39
+ | Node / TypeScript specifics | [references/stack-node.md](references/stack-node.md) |
40
+ | Python specifics (FastAPI, Django, SQLAlchemy) | [references/stack-python.md](references/stack-python.md) |
41
+ | Go specifics | [references/stack-go.md](references/stack-go.md) |
42
+
43
+ Load references with this same Skill tool: call it again with `name: "backend-engineering"` and the `file_path` from the list. Read only what the task needs.
44
+
45
+ **An internal service and a public API are not the same job.** A public API's contract is a promise to strangers who will never read your changelog: version it, deprecate slowly, validate everything, rate-limit by key. An internal service between two teams can change its shape in a single deploy if both sides ship together. Decide which one you are writing before you design the contract, because the cost of guessing wrong is asymmetric — an over-engineered internal endpoint wastes a week, an under-engineered public one is permanent.
46
+
47
+ ## Core Doctrine — Contract
48
+
49
+ 1. **The method carries meaning.** GET never changes state and is cacheable. PUT and DELETE are idempotent — the same call twice leaves the same state. POST is neither. If your GET has side effects, a proxy will eventually replay them for you.
50
+ 2. **Status codes are the API talking to a machine.** `400` malformed · `401` not authenticated · `403` authenticated but not allowed · `404` absent, *or* present-but-you-may-not-know · `409` conflicts with current state · `422` well-formed but semantically wrong · `429` rate limited, with `Retry-After` · `5xx` your fault, and safe to retry only if you say so. Never return `200` with `{"error": ...}` — that makes every client parse the body to learn what a header already said.
51
+ 3. **One error shape, everywhere.** Follow RFC 9457 `application/problem+json`: `type`, `title`, `status`, `detail`, `instance`, plus a stable machine-readable `code`. Clients branch on `code`, humans read `detail`, and neither ever parses a sentence.
52
+ 4. **Cursor pagination, not offset.** `OFFSET 10000` makes the database walk 10,000 rows to discard them, and an insert during paging silently shifts every later page. Cursor on a stable, indexed, unique-tie-broken sort key.
53
+ 5. **Idempotency for anything that costs money or sends a message.** Client supplies a key; you store the result against it and replay the same response on retry. Without it, a timeout the client retries becomes two charges.
54
+ 6. **Additive changes are free; everything else is a version.** Adding an optional field is safe. Removing a field, tightening a type, renaming, or changing a default is not — and "no one uses it" is a claim about logs you have not read.
55
+
56
+ ## Core Doctrine — Data
57
+
58
+ 1. **The schema is the last thing you get to change cheaply.** Everything else can be refactored in an afternoon; a column type on a 40-million-row table cannot.
59
+ 2. **Keys**: prefer `uuidv7`/ULID over `uuidv4` when you need an opaque id — v4 scatters writes across the index and destroys locality on a large table. `bigserial` is still correct when the id may be public and sequential is not a leak.
60
+ 3. **Money is an integer in minor units.** Never a float. Never. Store the currency beside it.
61
+ 4. **Timestamps are `timestamptz`, always UTC**, converted at the edge. A naive timestamp is a bug with a six-month fuse.
62
+ 5. **Index for the query you actually run.** Composite index order follows the query's equality-then-range shape. An index that is never used still costs every write.
63
+ 6. **N+1 is found by counting queries, not by reading code.** Log the count per request in development; a list endpoint whose query count scales with the page size is the single most common backend performance bug.
64
+ 7. **Constraints belong in the database.** `NOT NULL`, `UNIQUE`, `CHECK`, and foreign keys are the only rules that survive a buggy deploy, a manual fix, and a second service writing the same table.
65
+
66
+ ## The Boundary Checklist
67
+
68
+ Every request that crosses into your service passes these, in this order. Work top down — an authorization hole outranks a slow query, always.
69
+
70
+ | # | Gate | The non-negotiable |
71
+ |---|---|---|
72
+ | 1 | **Authorization** | Checked at the data layer, not the route. `WHERE tenant_id = $me` beats a decorator you can forget to add. |
73
+ | 2 | **Input validation** | Parse into a typed shape at the edge; reject unknown fields; cap body size and array lengths. |
74
+ | 3 | **Secrets** | Never in code, never in logs, never in a response. Config comes from the environment and is validated at boot. |
75
+ | 4 | **Injection** | Parameterised queries only. Never build SQL, a shell command, or a path from user input. |
76
+ | 5 | **Rate limiting & SSRF** | Limit per key and per IP with `429` + `Retry-After`. Any URL the user supplies is an SSRF until proven otherwise. |
77
+ | 6 | **Error leakage** | No stack traces, no SQL, no internal ids in a response body. Log the detail, return the code. |
78
+ | 7 | **Idempotency & concurrency** | What happens if this runs twice, or twice at once? Answer before merging. |
79
+ | 8 | **Observability** | Can you answer "what happened to request X" from the logs alone? |
80
+ | 9 | **Performance** | Query count per request, index coverage, pool size, payload size. |
81
+ | 10 | **Config & deploy** | Fails fast on bad config, shuts down gracefully, migrations ordered against the deploy. |
82
+
83
+ ## Working Inside VibeCode
84
+
85
+ This skill runs inside VibeCode; use its mechanics instead of fighting them:
86
+
87
+ - **Backend servers run in the background.** `uvicorn`, `flask run`, `go run`, `rails s`, `php artisan serve`, `dotnet watch`, `docker compose up`, `celery worker` and friends are recognized as long-running and moved to the background automatically, reporting a `bash_id`. Anything unusual: pass `run_in_background: true` explicitly, or the command dies at the two-minute timeout and reads as a failure.
88
+ - **`WebFetch` cannot call your own service.** It is GET-only, https-only, and refuses every loopback and private address — including through redirects. Use `Bash` with `curl`, and **always print the status code**: `curl -sS -o /tmp/b -w '%{http_code}\n' http://localhost:8000/health`.
89
+ - **Wait for readiness.** `ECONNREFUSED` immediately after starting a server is a race, not a bug. Poll the port or the health endpoint before calling the API.
90
+ - **`BashOutput` is the log tail** — incremental, and it takes a `filter` regex. Use `filter: "ERROR|Traceback|panic"` instead of pulling a chatty server's whole buffer into context.
91
+ - **The shell environment is scrubbed and pinned**: `CI=1`, `TERM=dumb`, `NO_COLOR=1`, `GIT_TERMINAL_PROMPT=0`, and VibeCode's own keys are deleted. `CI=1` changes some tools' behaviour; pass the project's own secrets through its `.env` or inline.
92
+ - **Containers escape the cleanup net.** Process cleanup works by PID and cannot see a container. Always `docker compose up -d` with an explicit `down`, or you leave a stack running after the app quits.
93
+ - **Never put a connection string, a schema dump, or a deploy target into Memory** — Memory is global to the machine and would follow you into every unrelated project. Never write a real secret into a repo file.
94
+ - **In plan mode the terminal is for recon only**: it works, but it must not change project files, so do not start a server or run a migration until the plan is approved.
95
+
96
+ ## Never Ship
97
+
98
+ `SELECT *` in application code · string-built SQL · a secret in a repo, a log, or a response · `200` with an error body · a stack trace in a response · an endpoint with no authorization check · authorization checked only in the route decorator · money as a float · naive timestamps · offset pagination on an unbounded list · a migration that rewrites a large table in one statement · `ALTER TABLE ... SET NOT NULL` on a live table without a validated `CHECK` first · an edited migration that has already run · network I/O inside a database transaction · a job that is not safe to run twice · retries without jitter · a queue consumer with no dead-letter path · unbounded `IN (...)` from user input · a health check that queries the database · unbounded metric label cardinality · a cache with no stampede protection · a config error discovered at first request instead of at boot · a service with no graceful shutdown · a timeout longer than its caller's.
99
+
100
+ ## Output Contract
101
+
102
+ Write the code. Then, briefly: the contract you committed to (request, response, failure), the concurrency answer ("what if two of these run at once"), and what you actually verified — the command you ran and the status code you got back. If you rejected part of the request (an endpoint that should not exist, a schema that would not survive growth), say which and why in one line. The code is the deliverable; don't pad the summary into a report.