vona-module-a-captcha 5.1.17 → 5.1.18

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.
@@ -1 +1 @@
1
- {"version":3,"file":"bean.captcha.d.ts","sourceRoot":"","sources":["../../src/bean/bean.captcha.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAqC,MAAM,MAAM,CAAC;AAGnE,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAO3E,OAAO,KAAK,EAGV,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAGlC,qBACa,WAAY,SAAQ,QAAQ;IACjC,MAAM,CAAC,SAAS,EAAE,MAAM,mBAAmB,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;YAyB9E,YAAY;IA8EpB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,mBAAmB;IAgCxD,MAAM,CACV,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,MAAM,mBAAmB,EACpC,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,OAAO,CAAC;YA2BL,YAAY;IAoCpB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;IAyBpE,cAAc,CAAC,EAAE,EAAE,MAAM;IAIzB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;YAqBrC,UAAU;IAyBxB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,mBAAmB;YAOb,gBAAgB;IAY9B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,iBAAiB;CAmB1B"}
1
+ {"version":3,"file":"bean.captcha.d.ts","sourceRoot":"","sources":["../../src/bean/bean.captcha.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAqC,MAAM,MAAM,CAAC;AAGnE,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAO3E,OAAO,KAAK,EAGV,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAGlC,qBACa,WAAY,SAAQ,QAAQ;IACjC,MAAM,CAAC,SAAS,EAAE,MAAM,mBAAmB,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;YAyB9E,YAAY;IAiGpB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,mBAAmB;IAgCxD,MAAM,CACV,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,MAAM,mBAAmB,EACpC,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,OAAO,CAAC;YA2BL,YAAY;IAoCpB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;IAyBpE,cAAc,CAAC,EAAE,EAAE,MAAM;IAIzB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;YAqBrC,UAAU;IAyBxB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,mBAAmB;YAOb,gBAAgB;IAY9B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,iBAAiB;CAmB1B"}
@@ -22,6 +22,7 @@ export declare class CacheRedisCaptcha extends ServiceCacheRedisBase<TCacheRedis
22
22
  reserved: false;
23
23
  retryAt: number;
24
24
  resendAt: number;
25
+ serverNow: number;
25
26
  snapshot?: undefined;
26
27
  } | {
27
28
  reserved: true;
@@ -29,10 +30,14 @@ export declare class CacheRedisCaptcha extends ServiceCacheRedisBase<TCacheRedis
29
30
  raw: string;
30
31
  data: ICaptchaDataCache;
31
32
  };
33
+ serverNow: number;
32
34
  retryAt?: undefined;
33
35
  resendAt?: undefined;
34
36
  }>;
35
- finalizeBound(id: string, snapshot: ICaptchaSnapshot, data?: ICaptchaDataCache): Promise<boolean>;
37
+ finalizeBound(id: string, snapshot: ICaptchaSnapshot, data?: ICaptchaDataCache): Promise<{
38
+ finalized: boolean;
39
+ serverNow: number;
40
+ }>;
36
41
  /** -1 asks the verifier to reread a competing wrong-attempt update. */
37
42
  consumeBound(id: string, snapshot: ICaptchaSnapshot, verified: boolean): Promise<number>;
38
43
  validateAuthorization(authorization: ICaptchaAuthorization): void;
@@ -1 +1 @@
1
- {"version":3,"file":"cacheRedis.captcha.d.ts","sourceRoot":"","sources":["../../src/bean/cacheRedis.captcha.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAc,MAAM,qBAAqB,CAAC;AAExE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AASzE,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAC3C,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;AAEvD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED,qBACa,iBAAkB,SAAQ,qBAAqB,CAC1D,qBAAqB,EACrB,sBAAsB,CACvB;IACO,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAM3D,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM;IAM5D,aAAa,CACjB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,CAAC,EAAE,iBAAiB,EACxB,GAAG,CAAC,EAAE,MAAM;IAWd,WAAW;IAKX,kFAAkF;IAClF,SAAS,CACP,aAAa,EAAE,IAAI,CAAC,qBAAqB,EAAE,OAAO,GAAG,IAAI,GAAG,iBAAiB,GAAG,UAAU,CAAC;;;;;IAevF,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,aAAa,EAAE,qBAAqB;;;;;;;;;kBAqB7B,iBAAiB;;;;;IAI1E,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,iBAAiB;IAapF,uEAAuE;IACjE,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO;IAmB5E,qBAAqB,CAAC,aAAa,EAAE,qBAAqB;IAI1D,OAAO,CAAC,sBAAsB;IA8C9B,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,UAAU;YAMJ,KAAK;CAIpB"}
1
+ {"version":3,"file":"cacheRedis.captcha.d.ts","sourceRoot":"","sources":["../../src/bean/cacheRedis.captcha.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAc,MAAM,qBAAqB,CAAC;AAExE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AASzE,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAC3C,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;AAEvD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED,qBACa,iBAAkB,SAAQ,qBAAqB,CAC1D,qBAAqB,EACrB,sBAAsB,CACvB;IACO,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAM3D,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM;IAM5D,aAAa,CACjB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,CAAC,EAAE,iBAAiB,EACxB,GAAG,CAAC,EAAE,MAAM;IAWd,WAAW;IAKX,kFAAkF;IAClF,SAAS,CACP,aAAa,EAAE,IAAI,CAAC,qBAAqB,EAAE,OAAO,GAAG,IAAI,GAAG,iBAAiB,GAAG,UAAU,CAAC;;;;;IAevF,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,aAAa,EAAE,qBAAqB;;;;;;;;;;kBA0B7B,iBAAiB;;;;;;IAK1E,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,iBAAiB;;;;IAYpF,uEAAuE;IACjE,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO;IAmB5E,qBAAqB,CAAC,aAAa,EAAE,qBAAqB;IAI1D,OAAO,CAAC,sBAAsB;IA8C9B,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,UAAU;YAMJ,KAAK;CAIpB"}
package/dist/index.js CHANGED
@@ -83,6 +83,7 @@ let BeanCaptcha = class BeanCaptcha extends BeanBase {
83
83
  provider: provider.name,
84
84
  payload: undefined,
85
85
  status: 'limited',
86
+ serverNow: reservation.serverNow,
86
87
  resendAt: reservation.resendAt || undefined,
87
88
  retryAt: reservation.retryAt
88
89
  };
@@ -97,23 +98,25 @@ let BeanCaptcha = class BeanCaptcha extends BeanBase {
97
98
  // A reservation authorizes exactly one external attempt. Never retry sends.
98
99
  captcha = await beanInstance.create(provider.options, context);
99
100
  } catch {
100
- await cache.finalizeBound(id, snapshot);
101
+ const finalized = await cache.finalizeBound(id, snapshot);
101
102
  return {
102
103
  id: '',
103
104
  provider: provider.name,
104
105
  payload: undefined,
105
106
  status: 'unknown',
107
+ serverNow: finalized.serverNow,
106
108
  ...timing
107
109
  };
108
110
  }
109
111
  const outcome = captcha.outcome ?? 'accepted';
110
112
  if (outcome !== 'accepted' || captcha.token === undefined || captcha.token === null) {
111
- await cache.finalizeBound(id, snapshot);
113
+ const finalized = await cache.finalizeBound(id, snapshot);
112
114
  return {
113
115
  id: '',
114
116
  provider: provider.name,
115
117
  payload: undefined,
116
118
  status: outcome === 'rejected' ? 'rejected' : 'unknown',
119
+ serverNow: finalized.serverNow,
117
120
  ...timing
118
121
  };
119
122
  }
@@ -127,22 +130,26 @@ let BeanCaptcha = class BeanCaptcha extends BeanBase {
127
130
  }
128
131
  };
129
132
  const finalized = await cache.finalizeBound(id, snapshot, active);
130
- if (!finalized) return {
131
- id: '',
132
- provider: provider.name,
133
- payload: undefined,
134
- status: 'unknown',
135
- ...timing
136
- };
133
+ if (!finalized.finalized) {
134
+ return {
135
+ id: '',
136
+ provider: provider.name,
137
+ payload: undefined,
138
+ status: 'unknown',
139
+ serverNow: finalized.serverNow,
140
+ ...timing
141
+ };
142
+ }
137
143
  const result = {
138
144
  id,
139
145
  provider: provider.name,
140
146
  payload: captcha.payload,
141
147
  status: 'accepted',
148
+ serverNow: finalized.serverNow,
142
149
  ...timing
143
150
  };
144
- // Generic showToken never grants disclosure for a bound provider.
145
- if (captcha.exposeToken === true) result.token = captcha.token;
151
+ // Bound providers must also authorize disclosure for their actual transport.
152
+ if (this.scope.config.captcha.showToken && captcha.exposeToken === true) result.token = captcha.token;
146
153
  return result;
147
154
  }
148
155
  async refresh(id, sceneName) {
@@ -380,8 +387,8 @@ for i, budget in ipairs(policy.budgets) do
380
387
  counters[i] = { value = value, deadline = deadline }
381
388
  if value >= budget.limit and deadline > retryAt then retryAt = deadline end
382
389
  end
383
- if retryAt > now then return { 0, '', retryAt, cooldown } end
384
- if redis.call('EXISTS', KEYS[1]) == 1 then return { -1 } end
390
+ if retryAt > now then return { 0, '', retryAt, cooldown, now } end
391
+ if redis.call('EXISTS', KEYS[1]) == 1 then return { -1, '', 0, 0, now } end
385
392
  local data = cjson.decode(ARGV[3])
386
393
  data.bound.expiresAt = now + policy.ttl
387
394
  data.bound.resendAt = now + policy.cooldown
@@ -398,22 +405,22 @@ if policy.cooldown > 0 then
398
405
  redis.call('SET', KEYS[3], tostring(data.bound.resendAt))
399
406
  redis.call('PEXPIREAT', KEYS[3], data.bound.resendAt)
400
407
  end
401
- return { 1, raw, data.bound.expiresAt, data.bound.resendAt }
408
+ return { 1, raw, data.bound.expiresAt, data.bound.resendAt, now }
402
409
  `;
403
410
  const captchaFinalizeLua = `
404
- local current = redis.call('GET', KEYS[1])
405
- if current ~= ARGV[1] or redis.call('GET', KEYS[2]) ~= ARGV[2] then return 0 end
406
- local data = cjson.decode(current)
407
411
  local time = redis.call('TIME')
408
412
  local now = tonumber(time[1]) * 1000 + math.floor(tonumber(time[2]) / 1000)
409
- if data.bound.state ~= 'pending' or data.bound.expiresAt <= now then return 0 end
413
+ local current = redis.call('GET', KEYS[1])
414
+ if current ~= ARGV[1] or redis.call('GET', KEYS[2]) ~= ARGV[2] then return { 0, now } end
415
+ local data = cjson.decode(current)
416
+ if data.bound.state ~= 'pending' or data.bound.expiresAt <= now then return { 0, now } end
410
417
  if ARGV[3] == '' then
411
418
  redis.call('DEL', KEYS[1])
412
419
  else
413
420
  redis.call('SET', KEYS[1], ARGV[3])
414
421
  redis.call('PEXPIREAT', KEYS[1], data.bound.expiresAt)
415
422
  end
416
- return 1
423
+ return { 1, now }
417
424
  `;
418
425
  // Verification happens in the provider. Only the caller holding this exact active
419
426
  // snapshot can commit its verdict, so success cannot race refresh or another use.
@@ -489,7 +496,8 @@ let CacheRedisCaptcha = class CacheRedisCaptcha extends ServiceCacheRedisBase {
489
496
  return {
490
497
  reserved: false,
491
498
  retryAt: result[2],
492
- resendAt: result[3]
499
+ resendAt: result[3],
500
+ serverNow: result[4]
493
501
  };
494
502
  }
495
503
  if (result[0] !== 1 || !result[1]) throw new Error('invalid captcha reservation');
@@ -498,14 +506,19 @@ let CacheRedisCaptcha = class CacheRedisCaptcha extends ServiceCacheRedisBase {
498
506
  snapshot: {
499
507
  raw: result[1],
500
508
  data: JSON.parse(result[1])
501
- }
509
+ },
510
+ serverNow: result[4]
502
511
  };
503
512
  }
504
513
  async finalizeBound(id, snapshot, data) {
505
514
  this._validateBoundId(id);
506
515
  const scope = snapshot.data.bound.scope;
507
516
  const pointer = `${this.boundPrefix()}current:${scope}`;
508
- return (await this._eval(captchaFinalizeLua, [id, pointer], [snapshot.raw, id, data === undefined ? '' : JSON.stringify(data)])) === 1;
517
+ const result = await this._eval(captchaFinalizeLua, [id, pointer], [snapshot.raw, id, data === undefined ? '' : JSON.stringify(data)]);
518
+ return {
519
+ finalized: result[0] === 1,
520
+ serverNow: result[1]
521
+ };
509
522
  }
510
523
  /** -1 asks the verifier to reread a competing wrong-attempt update. */
511
524
  async consumeBound(id, snapshot, verified) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/bean/interceptor.captchaVerify.ts","../src/bean/bean.captcha.ts","../src/lib/captchaLua.ts","../src/bean/cacheRedis.captcha.ts","../src/lib/const.ts","../src/bean/hmr.captchaProvider.ts","../src/bean/hmr.captchaScene.ts","../src/dto/captchaData.ts","../src/dto/captchaVerify.ts","../src/controller/captcha.ts","../src/config/config.ts","../src/.metadata/index.ts","../src/config/locale/en-us.ts","../src/config/locale/zh-cn.ts","../src/.metadata/locales.ts","../src/lib/captchaProvider.ts","../src/lib/captchaScene.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["InterceptorCaptchaVerify","BeanBase","execute","options","next","sceneName","scene","Error","bodyField","captcha","ctx","request","body","verified","bean","verify","id","token","zodCustomError","scope","locale","CaptchaInvalid","__decorate","Interceptor","__z_BeanInfo","module","BeanCaptcha","create","context","provider","_resolveProvider","beanInstance","_getProviderInstance","name","bound","_createBound","uuidv4","data","revision","created","cacheRedis","createImage","ttl","config","captchaProvider","result","payload","showToken","authorization","_authorize","app","throw","cache","boundPrefix","pending","binding","state","expiresAt","resendAt","attemptsRemaining","maxAttempts","version","reservation","reserveBound","reserved","undefined","status","retryAt","snapshot","timing","finalizeBound","outcome","active","finalized","exposeToken","refresh","_getProviderOptions","compareAndSet","_verifyBound","token2","consumed","changed","original","retry","_bindingMatches","committed","consumeBound","verifyImmediate","tokenSecondary","ttlSecondary","getCaptchaData","get","updateAgeOnGet","updateCaptchaToken","operation","authorize","validateAuthorization","recipient","purpose","subject","recipientLimits","map","limit","ipLimits","a","b","providerName","beanFullName","beanFullNameFromOnionName","_getBean","_getProviders","providers","Object","keys","length","onionOptions","onion","captchaScene","getOnionOptionsDynamic","resolver","resolverDefault","getOnionSlice","_prepareProviders","_key","key","providerOptions","slice","checkOnionOptionsEnabled","assign","Bean","_ctx","index","getRandomInt","captchaCasLua","captchaReserveLua","captchaFinalizeLua","captchaConsumeLua","CacheRedisCaptcha","ServiceCacheRedisBase","redis","_redisKeys","raw","JSON","parse","_validateTtl","set","stringify","_eval","instance","createHash","update","String","__getInstanceIdScope","digest","boundKeys","prefix","pointer","cooldown","budgets","windowMs","ip","_validateAuthorization","_validateBoundId","policy","text","value","hash","test","Number","isSafeInteger","MAX_SAFE_INTEGER","Date","now","limits","Array","isArray","windows","Set","has","add","startsWith","ids","__cacheInstance","getRedisKey","lua","args","eval","CacheRedis","disableTransactionCompensate","SymbolCacheSceneProviders","Symbol","clearAllCacheSceneProviders","meta","HmrCaptchaProvider","reload","_beanOptions","Hmr","HmrCaptchaScene","DtoCaptchaData","constructor","Api","field","prototype","z","string","v","optional","Dto","DtoCaptchaVerify","required","ControllerCaptcha","Web","post","Passport","public","__param","Arg","Controller","isProd","ScopeModuleACaptcha","BeanScopeBase","Scope","locales","locale_en_us","locale_zh_cn","$locale","$makeLocaleMagic","CaptchaProvider","createBeanDecorator","CaptchaScene"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/bean/interceptor.captchaVerify.ts","../src/bean/bean.captcha.ts","../src/lib/captchaLua.ts","../src/bean/cacheRedis.captcha.ts","../src/lib/const.ts","../src/bean/hmr.captchaProvider.ts","../src/bean/hmr.captchaScene.ts","../src/dto/captchaData.ts","../src/dto/captchaVerify.ts","../src/controller/captcha.ts","../src/config/config.ts","../src/.metadata/index.ts","../src/config/locale/en-us.ts","../src/config/locale/zh-cn.ts","../src/.metadata/locales.ts","../src/lib/captchaProvider.ts","../src/lib/captchaScene.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["InterceptorCaptchaVerify","BeanBase","execute","options","next","sceneName","scene","Error","bodyField","captcha","ctx","request","body","verified","bean","verify","id","token","zodCustomError","scope","locale","CaptchaInvalid","__decorate","Interceptor","__z_BeanInfo","module","BeanCaptcha","create","context","provider","_resolveProvider","beanInstance","_getProviderInstance","name","bound","_createBound","uuidv4","data","revision","created","cacheRedis","createImage","ttl","config","captchaProvider","result","payload","showToken","authorization","_authorize","app","throw","cache","boundPrefix","pending","binding","state","expiresAt","resendAt","attemptsRemaining","maxAttempts","version","reservation","reserveBound","reserved","undefined","status","serverNow","retryAt","snapshot","timing","finalized","finalizeBound","outcome","active","exposeToken","refresh","_getProviderOptions","compareAndSet","_verifyBound","token2","consumed","changed","original","retry","_bindingMatches","committed","consumeBound","verifyImmediate","tokenSecondary","ttlSecondary","getCaptchaData","get","updateAgeOnGet","updateCaptchaToken","operation","authorize","validateAuthorization","recipient","purpose","subject","recipientLimits","map","limit","ipLimits","a","b","providerName","beanFullName","beanFullNameFromOnionName","_getBean","_getProviders","providers","Object","keys","length","onionOptions","onion","captchaScene","getOnionOptionsDynamic","resolver","resolverDefault","getOnionSlice","_prepareProviders","_key","key","providerOptions","slice","checkOnionOptionsEnabled","assign","Bean","_ctx","index","getRandomInt","captchaCasLua","captchaReserveLua","captchaFinalizeLua","captchaConsumeLua","CacheRedisCaptcha","ServiceCacheRedisBase","redis","_redisKeys","raw","JSON","parse","_validateTtl","set","stringify","_eval","instance","createHash","update","String","__getInstanceIdScope","digest","boundKeys","prefix","pointer","cooldown","budgets","windowMs","ip","_validateAuthorization","_validateBoundId","policy","text","value","hash","test","Number","isSafeInteger","MAX_SAFE_INTEGER","Date","now","limits","Array","isArray","windows","Set","has","add","startsWith","ids","__cacheInstance","getRedisKey","lua","args","eval","CacheRedis","disableTransactionCompensate","SymbolCacheSceneProviders","Symbol","clearAllCacheSceneProviders","meta","HmrCaptchaProvider","reload","_beanOptions","Hmr","HmrCaptchaScene","DtoCaptchaData","constructor","Api","field","prototype","z","string","v","optional","Dto","DtoCaptchaVerify","required","ControllerCaptcha","Web","post","Passport","public","__param","Arg","Controller","isProd","ScopeModuleACaptcha","BeanScopeBase","Scope","locales","locale_en_us","locale_zh_cn","$locale","$makeLocaleMagic","CaptchaProvider","createBeanDecorator","CaptchaScene"],"mappings":";;;;;;;;;;;;;AAkBO,IAAMA,wBAAwB,GAA9B,MAAMA,wBAAyB,SAAQC,QAAQ,CAAA;AACpD,EAAA,MAAMC,OAAOA,CAACC,OAAyC,EAAEC,IAAU,EAAA;AACjE;AACA,IAAA,MAAMC,SAAS,GAAGF,OAAO,CAACG,KAAK;IAC/B,IAAI,CAACD,SAAS,EAAE,MAAM,IAAIE,KAAK,CAAC,6CAA6C,CAAC;AAC9E;AACA,IAAA,MAAMC,SAAS,GAAGL,OAAO,CAACK,SAAU;IACpC,MAAMC,OAAO,GAAiC,IAAI,CAACC,GAAG,CAACC,OAAO,CAACC,IAAI,CAACJ,SAAS,CAAC;IAC9E,IAAI,CAACC,OAAO,EAAE,MAAM,IAAIF,KAAK,CAAC,wBAAwB,CAAC;IACvD,IAAI,OAAOE,OAAO,KAAK,QAAQ,EAAE,MAAM,IAAIF,KAAK,CAAC,8BAA8B,CAAC;AAChF;IACA,MAAMM,QAAQ,GAAG,MAAM,IAAI,CAACC,IAAI,CAACL,OAAO,CAACM,MAAM,CAACN,OAAO,CAACO,EAAE,EAAEP,OAAO,CAACQ,KAAK,EAAEZ,SAAS,CAAC;AACrF,IAAA,IAAI,CAACQ,QAAQ,EAAE,MAAMK,cAAc,CAAC,CAACV,SAAS,CAAC,EAAE,IAAI,CAACW,KAAK,CAACC,MAAM,CAACC,cAAc,EAAE,CAAC;AACpF;IACA,OAAOjB,IAAI,EAAE;AACf,EAAA;;AAfWJ,wBAAwB,GAAAsB,UAAA,CAAA,CAHpCC,WAAW,CAAmC;AAC7Cf,EAAAA,SAAS,EAAE;CACZ,CAAC,EAAAgB,QAAA,CAAA;EAAAC,MAAA,EAAA;AAAA,CAAA,CAAA,CACW,EAAAzB,wBAAwB,CAgBpC;;ACbM,IAAM0B,WAAW,GAAjB,MAAMA,WAAY,SAAQzB,QAAQ,CAAA;AACvC,EAAA,MAAM0B,MAAMA,CAACtB,SAAoC,EAAEuB,OAAiB,EAAA;IAClE,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAACC,gBAAgB,CAACzB,SAAS,CAAC;IACvD,IAAI,CAACwB,QAAQ,EAAE,MAAM,IAAItB,KAAK,CAAC,CAAA,sCAAA,EAAyCF,SAAS,CAAA,CAAE,CAAC;IACpF,MAAM0B,YAAY,GAAG,IAAI,CAACC,oBAAoB,CAACH,QAAQ,CAACI,IAAI,CAAC;AAC7D,IAAA,IAAIF,YAAY,CAACG,KAAK,KAAK,IAAI,EAC7B,OAAO,MAAM,IAAI,CAACC,YAAY,CAAC9B,SAAS,EAAEwB,QAAQ,EAAEE,YAAY,EAAEH,OAAO,CAAC;IAC5E,MAAMnB,OAAO,GAAG,MAAMsB,YAAY,CAACJ,MAAM,CAACE,QAAQ,CAAC1B,OAAO,CAAC;AAC3D,IAAA,MAAMa,EAAE,GAAGoB,MAAM,EAAE;AACnB,IAAA,MAAMC,IAAI,GAAsB;AAC9B/B,MAAAA,KAAK,EAAED,SAAS;MAChBwB,QAAQ,EAAEA,QAAQ,CAACI,IAAI;MACvBhB,KAAK,EAAER,OAAO,CAACQ,KAAK;MACpBqB,QAAQ,EAAEF,MAAM;KACjB;AACD,IAAA,MAAMG,OAAO,GAAG,MAAM,IAAI,CAACpB,KAAK,CAACqB,UAAU,CAAC/B,OAAO,CAACgC,WAAW,CAC7DzB,EAAE,EACFqB,IAAI,EACJR,QAAQ,CAAC1B,OAAO,CAACuC,GAAG,IAAI,IAAI,CAACvB,KAAK,CAACwB,MAAM,CAACC,eAAe,CAACF,GAAG,CAC9D;IACD,IAAI,CAACH,OAAO,EAAE,MAAM,IAAIhC,KAAK,CAAC,4BAA4B,CAAC;AAC3D,IAAA,MAAMsC,MAAM,GAAiB;MAAE7B,EAAE;MAAEa,QAAQ,EAAEA,QAAQ,CAACI,IAAI;MAAEa,OAAO,EAAErC,OAAO,CAACqC;KAAS;AACtF,IAAA,IAAI,IAAI,CAAC3B,KAAK,CAACwB,MAAM,CAAClC,OAAO,CAACsC,SAAS,EAAEF,MAAM,CAAC5B,KAAK,GAAGR,OAAO,CAACQ,KAAK;AACrE,IAAA,OAAO4B,MAAM;AACf,EAAA;EAEQ,MAAMV,YAAYA,CACxB9B,SAAoC,EACpCwB,QAA4C,EAC5CE,YAAqC,EACrCH,OAAgB,EAAA;AAEhB,IAAA,MAAMoB,aAAa,GAAG,MAAM,IAAI,CAACC,UAAU,CAAClB,YAAY,EAAEH,OAAO,EAAE,OAAO,EAAEvB,SAAS,CAAC;IACtF,IAAI,CAAC2C,aAAa,EAAE,OAAO,IAAI,CAACE,GAAG,CAACC,KAAK,CAAC,GAAG,CAAC;IAC9C,MAAMC,KAAK,GAAG,IAAI,CAACjC,KAAK,CAACqB,UAAU,CAAC/B,OAAO;AAC3C,IAAA,MAAMO,EAAE,GAAG,CAAA,EAAGoC,KAAK,CAACC,WAAW,EAAE,CAAA,EAAGjB,MAAM,EAAE,CAAA,CAAE;AAC9C,IAAA,MAAMkB,OAAO,GAAsB;AACjChD,MAAAA,KAAK,EAAED,SAAS;MAChBwB,QAAQ,EAAEA,QAAQ,CAACI,IAAI;AACvBC,MAAAA,KAAK,EAAE;QACLqB,OAAO,EAAEP,aAAa,CAACO,OAAO;QAC9BpC,KAAK,EAAE6B,aAAa,CAAC7B,KAAK;AAC1BqC,QAAAA,KAAK,EAAE,SAAS;AAChBC,QAAAA,SAAS,EAAE,CAAC;AACZC,QAAAA,QAAQ,EAAE,CAAC;QACXC,iBAAiB,EAAEX,aAAa,CAACY,WAAW;AAC5CC,QAAAA,OAAO,EAAE;AACV;KACF;AACD,IAAA,MAAMC,WAAW,GAAG,MAAMV,KAAK,CAACW,YAAY,CAAC/C,EAAE,EAAEsC,OAAO,EAAEN,aAAa,CAAC;AACxE,IAAA,IAAI,CAACc,WAAW,CAACE,QAAQ,EAAE;MACzB,OAAO;AACLhD,QAAAA,EAAE,EAAE,EAAE;QACNa,QAAQ,EAAEA,QAAQ,CAACI,IAAI;AACvBa,QAAAA,OAAO,EAAEmB,SAAS;AAClBC,QAAAA,MAAM,EAAE,SAAS;QACjBC,SAAS,EAAEL,WAAW,CAACK,SAAS;AAChCT,QAAAA,QAAQ,EAAEI,WAAW,CAACJ,QAAQ,IAAIO,SAAS;QAC3CG,OAAO,EAAEN,WAAW,CAACM;OACtB;AACH,IAAA;AACA,IAAA,MAAMC,QAAQ,GAAGP,WAAW,CAACO,QAAQ;AACrC,IAAA,MAAMC,MAAM,GAAG;AACbb,MAAAA,SAAS,EAAEY,QAAQ,CAAChC,IAAI,CAACH,KAAM,CAACuB,SAAS;AACzCC,MAAAA,QAAQ,EAAEW,QAAQ,CAAChC,IAAI,CAACH,KAAM,CAACwB;KAChC;AACD,IAAA,IAAIjD,OAA6B;IACjC,IAAI;AACF;MACAA,OAAO,GAAG,MAAMsB,YAAY,CAACJ,MAAM,CAACE,QAAQ,CAAC1B,OAAO,EAAEyB,OAAO,CAAC;AAChE,IAAA,CAAC,CAAC,MAAM;MACN,MAAM2C,SAAS,GAAG,MAAMnB,KAAK,CAACoB,aAAa,CAACxD,EAAE,EAAEqD,QAAQ,CAAC;MACzD,OAAO;AACLrD,QAAAA,EAAE,EAAE,EAAE;QACNa,QAAQ,EAAEA,QAAQ,CAACI,IAAI;AACvBa,QAAAA,OAAO,EAAEmB,SAAS;AAClBC,QAAAA,MAAM,EAAE,SAAS;QACjBC,SAAS,EAAEI,SAAS,CAACJ,SAAS;QAC9B,GAAGG;OACJ;AACH,IAAA;AACA,IAAA,MAAMG,OAAO,GAAGhE,OAAO,CAACgE,OAAO,IAAI,UAAU;AAC7C,IAAA,IAAIA,OAAO,KAAK,UAAU,IAAIhE,OAAO,CAACQ,KAAK,KAAKgD,SAAS,IAAIxD,OAAO,CAACQ,KAAK,KAAK,IAAI,EAAE;MACnF,MAAMsD,SAAS,GAAG,MAAMnB,KAAK,CAACoB,aAAa,CAACxD,EAAE,EAAEqD,QAAQ,CAAC;MACzD,OAAO;AACLrD,QAAAA,EAAE,EAAE,EAAE;QACNa,QAAQ,EAAEA,QAAQ,CAACI,IAAI;AACvBa,QAAAA,OAAO,EAAEmB,SAAS;AAClBC,QAAAA,MAAM,EAAEO,OAAO,KAAK,UAAU,GAAG,UAAU,GAAG,SAAS;QACvDN,SAAS,EAAEI,SAAS,CAACJ,SAAS;QAC9B,GAAGG;OACJ;AACH,IAAA;AACA,IAAA,MAAMI,MAAM,GAAsB;MAChC,GAAGL,QAAQ,CAAChC,IAAI;MAChBpB,KAAK,EAAER,OAAO,CAACQ,KAAK;AACpBiB,MAAAA,KAAK,EAAE;AAAE,QAAA,GAAGmC,QAAQ,CAAChC,IAAI,CAACH,KAAM;AAAEsB,QAAAA,KAAK,EAAE,QAAQ;AAAEK,QAAAA,OAAO,EAAE;AAAC;KAC9D;AACD,IAAA,MAAMU,SAAS,GAAG,MAAMnB,KAAK,CAACoB,aAAa,CAACxD,EAAE,EAAEqD,QAAQ,EAAEK,MAAM,CAAC;AACjE,IAAA,IAAI,CAACH,SAAS,CAACA,SAAS,EAAE;MACxB,OAAO;AACLvD,QAAAA,EAAE,EAAE,EAAE;QACNa,QAAQ,EAAEA,QAAQ,CAACI,IAAI;AACvBa,QAAAA,OAAO,EAAEmB,SAAS;AAClBC,QAAAA,MAAM,EAAE,SAAS;QACjBC,SAAS,EAAEI,SAAS,CAACJ,SAAS;QAC9B,GAAGG;OACJ;AACH,IAAA;AACA,IAAA,MAAMzB,MAAM,GAAiB;MAC3B7B,EAAE;MACFa,QAAQ,EAAEA,QAAQ,CAACI,IAAI;MACvBa,OAAO,EAAErC,OAAO,CAACqC,OAAO;AACxBoB,MAAAA,MAAM,EAAE,UAAU;MAClBC,SAAS,EAAEI,SAAS,CAACJ,SAAS;MAC9B,GAAGG;KACJ;AACD;IACA,IAAI,IAAI,CAACnD,KAAK,CAACwB,MAAM,CAAClC,OAAO,CAACsC,SAAS,IAAItC,OAAO,CAACkE,WAAW,KAAK,IAAI,EACrE9B,MAAM,CAAC5B,KAAK,GAAGR,OAAO,CAACQ,KAAK;AAC9B,IAAA,OAAO4B,MAAM;AACf,EAAA;AAEA,EAAA,MAAM+B,OAAOA,CAAC5D,EAAU,EAAEX,SAAoC,EAAA;IAC5D,MAAM+C,KAAK,GAAG,IAAI,CAACjC,KAAK,CAACqB,UAAU,CAAC/B,OAAO;IAC3C,MAAM4D,QAAQ,GAAG,MAAMjB,KAAK,CAACiB,QAAQ,CAACrD,EAAE,CAAC;IACzC,IAAI,CAACqD,QAAQ,EAAE,OAAO,MAAM,IAAI,CAAC1C,MAAM,CAACtB,SAAS,CAAC;AAClD,IAAA,MAAMgC,IAAI,GAAGgC,QAAQ,CAAChC,IAAI;AAC1B,IAAA,IAAIA,IAAI,CAAC/B,KAAK,KAAKD,SAAS,EAAE,OAAO,IAAI,CAAC6C,GAAG,CAACC,KAAK,CAAC,GAAG,CAAC;IACxD,MAAMpB,YAAY,GAAG,IAAI,CAACC,oBAAoB,CAACK,IAAI,CAACR,QAAQ,CAAC;AAC7D,IAAA,IAAIQ,IAAI,CAACH,KAAK,IAAIH,YAAY,CAACG,KAAK,KAAK,IAAI,EAAE,OAAO,IAAI,CAACgB,GAAG,CAACC,KAAK,CAAC,GAAG,CAAC;AACzE,IAAA,MAAMhD,OAAO,GAAG,IAAI,CAAC0E,mBAAmB,CAACxC,IAAI,CAAC/B,KAAK,EAAE+B,IAAI,CAACR,QAAQ,CAAC;IACnE,IAAI,CAAC1B,OAAO,EAAE,OAAO,IAAI,CAAC+C,GAAG,CAACC,KAAK,CAAC,GAAG,CAAC;IACxC,MAAM1C,OAAO,GAAG,MAAMsB,YAAY,CAACJ,MAAM,CAACxB,OAAO,CAAC;AAClD,IAAA,MAAMC,IAAI,GAAG;AACXE,MAAAA,KAAK,EAAED,SAAS;MAChBwB,QAAQ,EAAEQ,IAAI,CAACR,QAAQ;MACvBZ,KAAK,EAAER,OAAO,CAACQ,KAAK;MACpBqB,QAAQ,EAAEF,MAAM;KACjB;IACD,IACE,EAAE,MAAMgB,KAAK,CAAC0B,aAAa,CACzB9D,EAAE,EACFqD,QAAQ,EACRjE,IAAI,EACJD,OAAO,CAACuC,GAAG,IAAI,IAAI,CAACvB,KAAK,CAACwB,MAAM,CAACC,eAAe,CAACF,GAAG,CACrD,CAAC,EACF;AACA,MAAA,OAAO,IAAI,CAACQ,GAAG,CAACC,KAAK,CAAC,GAAG,CAAC;AAC5B,IAAA;AACA,IAAA,MAAMN,MAAM,GAAiB;MAAE7B,EAAE;MAAEa,QAAQ,EAAEQ,IAAI,CAACR,QAAQ;MAAEiB,OAAO,EAAErC,OAAO,CAACqC;KAAS;AACtF,IAAA,IAAI,IAAI,CAAC3B,KAAK,CAACwB,MAAM,CAAClC,OAAO,CAACsC,SAAS,EAAEF,MAAM,CAAC5B,KAAK,GAAGR,OAAO,CAACQ,KAAK;AACrE,IAAA,OAAO4B,MAAM;AACf,EAAA;EAEA,MAAM9B,MAAMA,CACVC,EAAU,EACVC,KAAc,EACdZ,SAAoC,EACpCuB,OAAiB,EAAA;IAEjB,MAAMwB,KAAK,GAAG,IAAI,CAACjC,KAAK,CAACqB,UAAU,CAAC/B,OAAO;IAC3C,MAAM4D,QAAQ,GAAG,MAAMjB,KAAK,CAACiB,QAAQ,CAACrD,EAAE,CAAC;AACzC,IAAA,IAAI,CAACqD,QAAQ,IAAIA,QAAQ,CAAChC,IAAI,CAAC/B,KAAK,KAAKD,SAAS,EAAE,OAAO,KAAK;AAChE,IAAA,MAAMgC,IAAI,GAAGgC,QAAQ,CAAChC,IAAI;IAC1B,MAAMN,YAAY,GAAG,IAAI,CAACC,oBAAoB,CAACK,IAAI,CAACR,QAAQ,CAAC;IAC7D,IAAIQ,IAAI,CAACH,KAAK,IAAIH,YAAY,CAACG,KAAK,KAAK,IAAI,EAAE;AAC7C,MAAA,IAAI,CAACG,IAAI,CAACH,KAAK,IAAIH,YAAY,CAACG,KAAK,KAAK,IAAI,EAAE,OAAO,KAAK;AAC5D,MAAA,MAAMc,aAAa,GAAG,MAAM,IAAI,CAACC,UAAU,CAAClB,YAAY,EAAEH,OAAO,EAAE,SAAS,EAAEvB,SAAS,CAAC;AACxF,MAAA,IAAI,CAAC2C,aAAa,EAAE,OAAO,KAAK;AAChC,MAAA,OAAO,MAAM,IAAI,CAAC+B,YAAY,CAAC/D,EAAE,EAAEC,KAAK,EAAEZ,SAAS,EAAE0B,YAAY,EAAEiB,aAAa,EAAEqB,QAAQ,CAAC;AAC7F,IAAA;IACA,IAAIhC,IAAI,CAAC2C,MAAM,EAAE;MACf,MAAMC,QAAQ,GAAG,MAAM7B,KAAK,CAAC0B,aAAa,CAAC9D,EAAE,EAAEqD,QAAQ,CAAC;AACxD,MAAA,OAAOY,QAAQ,IAAI5C,IAAI,CAAC2C,MAAM,KAAK/D,KAAK;AAC1C,IAAA;AACA,IAAA,MAAMd,OAAO,GAAG,IAAI,CAAC0E,mBAAmB,CAACxC,IAAI,CAAC/B,KAAK,EAAE+B,IAAI,CAACR,QAAQ,CAAC;IACnE,IAAI,CAAC1B,OAAO,IAAI,CAACkC,IAAI,CAACpB,KAAK,EAAE,OAAO,KAAK;AACzC,IAAA,MAAMJ,QAAQ,GAAG,MAAMkB,YAAY,CAAChB,MAAM,CAACsB,IAAI,CAACpB,KAAK,EAAEA,KAAK,EAAEd,OAAO,CAAC;AACtE,IAAA,MAAM+E,OAAO,GAAG,MAAM9B,KAAK,CAAC0B,aAAa,CACvC9D,EAAE,EACFqD,QAAQ,EACRxD,QAAQ,GAAGoD,SAAS,GAAG;AAAE,MAAA,GAAG5B,IAAI;AAAEpB,MAAAA,KAAK,EAAEgD,SAAS;MAAE3B,QAAQ,EAAEF,MAAM;AAAE,KAAE,CACzE;IACD,OAAOvB,QAAQ,IAAIqE,OAAO;AAC5B,EAAA;AAEQ,EAAA,MAAMH,YAAYA,CACxB/D,EAAU,EACVC,KAAc,EACdZ,SAAoC,EACpC0B,YAAqC,EACrCiB,aAAoC,EACpCmC,QAA0B,EAAA;IAE1B,MAAM/B,KAAK,GAAG,IAAI,CAACjC,KAAK,CAACqB,UAAU,CAAC/B,OAAO;IAC3C,IAAI4D,QAAQ,GAAiCc,QAAQ;AACrD;AACA;AACA,IAAA,KAAK,IAAIC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG,CAAC,IAAIf,QAAQ,EAAEe,KAAK,EAAE,EAAE;AAClD,MAAA,MAAM/C,IAAI,GAAGgC,QAAQ,CAAChC,IAAI;AAC1B,MAAA,MAAMH,KAAK,GAAGG,IAAI,CAACH,KAAK;MACxB,IACE,CAACA,KAAK,IACNA,KAAK,CAACsB,KAAK,KAAK,QAAQ,IACxBtB,KAAK,CAACyB,iBAAiB,IAAI,CAAC,IAC5BtB,IAAI,CAAC/B,KAAK,KAAKD,SAAS,IACxBgC,IAAI,CAACR,QAAQ,KAAKsD,QAAQ,CAAC9C,IAAI,CAACR,QAAQ,IACxCK,KAAK,CAACf,KAAK,KAAK6B,aAAa,CAAC7B,KAAK,IACnC,CAAC,IAAI,CAACkE,eAAe,CAACnD,KAAK,CAACqB,OAAO,EAAEP,aAAa,CAACO,OAAO,CAAC,EAC3D;AACA,QAAA,OAAO,KAAK;AACd,MAAA;MACA,MAAMpD,OAAO,GAAG,IAAI,CAAC0E,mBAAmB,CAACxE,SAAS,EAAEgC,IAAI,CAACR,QAAQ,CAAC;MAClE,IAAI,CAAC1B,OAAO,IAAIkC,IAAI,CAACpB,KAAK,KAAKgD,SAAS,EAAE,OAAO,KAAK;AACtD,MAAA,MAAMpD,QAAQ,GAAG,MAAMkB,YAAY,CAAChB,MAAM,CAACsB,IAAI,CAACpB,KAAK,EAAEA,KAAK,EAAEd,OAAO,CAAC;AACtE,MAAA,MAAMmF,SAAS,GAAG,MAAMlC,KAAK,CAACmC,YAAY,CAACvE,EAAE,EAAEqD,QAAQ,EAAExD,QAAQ,CAAC;AAClE,MAAA,IAAIyE,SAAS,KAAK,EAAE,IAAIzE,QAAQ,EAAE,OAAOA,QAAQ,IAAIyE,SAAS,KAAK,CAAC;AACpEjB,MAAAA,QAAQ,GAAG,MAAMjB,KAAK,CAACiB,QAAQ,CAACrD,EAAE,CAAC;AACrC,IAAA;AACA,IAAA,OAAO,KAAK;AACd,EAAA;AAEA,EAAA,MAAMwE,eAAeA,CAACxE,EAAU,EAAEC,KAAc,EAAA;IAC9C,MAAMmC,KAAK,GAAG,IAAI,CAACjC,KAAK,CAACqB,UAAU,CAAC/B,OAAO;IAC3C,MAAM4D,QAAQ,GAAG,MAAMjB,KAAK,CAACiB,QAAQ,CAACrD,EAAE,CAAC;AACzC,IAAA,IAAI,CAACqD,QAAQ,EAAE,OAAO,KAAK;AAC3B,IAAA,MAAMhC,IAAI,GAAGgC,QAAQ,CAAChC,IAAI;IAC1B,MAAMN,YAAY,GAAG,IAAI,CAACC,oBAAoB,CAACK,IAAI,CAACR,QAAQ,CAAC;AAC7D,IAAA,IAAIQ,IAAI,CAACH,KAAK,IAAIH,YAAY,CAACG,KAAK,KAAK,IAAI,IAAI,CAACG,IAAI,CAACpB,KAAK,EAAE,OAAO,KAAK;AAC1E,IAAA,MAAMd,OAAO,GAAG,IAAI,CAAC0E,mBAAmB,CAACxC,IAAI,CAAC/B,KAAK,EAAE+B,IAAI,CAACR,QAAQ,CAAC;AACnE,IAAA,IAAI,CAAC1B,OAAO,EAAE,OAAO,KAAK;AAC1B,IAAA,MAAMU,QAAQ,GAAG,MAAMkB,YAAY,CAAChB,MAAM,CAACsB,IAAI,CAACpB,KAAK,EAAEA,KAAK,EAAEd,OAAO,CAAC;IACtE,IAAI,CAACU,QAAQ,EAAE;AACb,MAAA,MAAMuC,KAAK,CAAC0B,aAAa,CAAC9D,EAAE,EAAEqD,QAAQ,EAAE;AAAE,QAAA,GAAGhC,IAAI;AAAEpB,QAAAA,KAAK,EAAEgD,SAAS;QAAE3B,QAAQ,EAAEF,MAAM;AAAE,OAAE,CAAC;AAC1F,MAAA,OAAO,KAAK;AACd,IAAA;AACA,IAAA,MAAMqD,cAAc,GAAGrD,MAAM,EAAE;AAC/B,IAAA,MAAMhC,IAAI,GAAG;AAAE,MAAA,GAAGiC,IAAI;AAAEpB,MAAAA,KAAK,EAAEgD,SAAS;AAAEe,MAAAA,MAAM,EAAES,cAAc;MAAEnD,QAAQ,EAAEF,MAAM;KAAI;IACtF,MAAM8C,OAAO,GAAG,MAAM9B,KAAK,CAAC0B,aAAa,CACvC9D,EAAE,EACFqD,QAAQ,EACRjE,IAAI,EACJD,OAAO,CAACuF,YAAY,IAAI,IAAI,CAACvE,KAAK,CAACwB,MAAM,CAACC,eAAe,CAAC8C,YAAY,CACvE;AACD,IAAA,OAAOR,OAAO,GAAGO,cAAc,GAAG,KAAK;AACzC,EAAA;EAEA,MAAME,cAAcA,CAAC3E,EAAU,EAAA;AAC7B,IAAA,OAAO,MAAM,IAAI,CAACG,KAAK,CAACqB,UAAU,CAAC/B,OAAO,CAACmF,GAAG,CAAC5E,EAAE,EAAE;AAAE6E,MAAAA,cAAc,EAAE;AAAK,KAAE,CAAC;AAC/E,EAAA;AAEA,EAAA,MAAMC,kBAAkBA,CAAC9E,EAAU,EAAEC,KAAc,EAAA;IACjD,MAAMmC,KAAK,GAAG,IAAI,CAACjC,KAAK,CAACqB,UAAU,CAAC/B,OAAO;IAC3C,MAAM4D,QAAQ,GAAG,MAAMjB,KAAK,CAACiB,QAAQ,CAACrD,EAAE,CAAC;IACzC,IAAI,CAACqD,QAAQ,EAAE,OAAO,IAAI,CAACnB,GAAG,CAACC,KAAK,CAAC,GAAG,CAAC;AACzC,IAAA,MAAMd,IAAI,GAAGgC,QAAQ,CAAChC,IAAI;IAC1B,MAAMN,YAAY,GAAG,IAAI,CAACC,oBAAoB,CAACK,IAAI,CAACR,QAAQ,CAAC;AAC7D,IAAA,IAAIQ,IAAI,CAACH,KAAK,IAAIH,YAAY,CAACG,KAAK,KAAK,IAAI,EAAE,OAAO,IAAI,CAACgB,GAAG,CAACC,KAAK,CAAC,GAAG,CAAC;AACzE,IAAA,MAAMhD,OAAO,GAAG,IAAI,CAAC0E,mBAAmB,CAACxC,IAAI,CAAC/B,KAAK,EAAE+B,IAAI,CAACR,QAAQ,CAAC;IACnE,IAAI,CAAC1B,OAAO,EAAE,OAAO,IAAI,CAAC+C,GAAG,CAACC,KAAK,CAAC,GAAG,CAAC;IACxC,IACE,EAAE,MAAMC,KAAK,CAAC0B,aAAa,CACzB9D,EAAE,EACFqD,QAAQ,EACR;AAAE,MAAA,GAAGhC,IAAI;MAAEpB,KAAK;MAAEqB,QAAQ,EAAEF,MAAM;KAAI,EACtCjC,OAAO,CAACuC,GAAG,IAAI,IAAI,CAACvB,KAAK,CAACwB,MAAM,CAACC,eAAe,CAACF,GAAG,CACrD,CAAC,EACF;AACA,MAAA,OAAO,IAAI,CAACQ,GAAG,CAACC,KAAK,CAAC,GAAG,CAAC;AAC5B,IAAA;AACF,EAAA;EAEQ,MAAMF,UAAUA,CACtBpB,QAAiC,EACjCD,OAAgB,EAChBmE,SAA8B,EAC9B1F,SAAoC,EAAA;AAEpC,IAAA,MAAM2C,aAAa,GAAG,MAAMnB,QAAQ,CAACmE,SAAS,GAAGpE,OAAO,EAAEmE,SAAS,EAAE1F,SAAS,CAAC;IAC/E,IAAI,CAAC2C,aAAa,EAAE;IACpB,IAAI,CAAC7B,KAAK,CAACqB,UAAU,CAAC/B,OAAO,CAACwF,qBAAqB,CAACjD,aAAa,CAAC;AAClE;AACA;IACA,OAAO;AACL,MAAA,GAAGA,aAAa;AAChBO,MAAAA,OAAO,EAAE;AACP2C,QAAAA,SAAS,EAAElD,aAAa,CAACO,OAAO,CAAC2C,SAAS;AAC1CC,QAAAA,OAAO,EAAEnD,aAAa,CAACO,OAAO,CAAC4C,OAAO;QACtC,IAAInD,aAAa,CAACO,OAAO,CAAC6C,OAAO,KAAKnC,SAAS,GAC3C,EAAE,GACF;AAAEmC,UAAAA,OAAO,EAAEpD,aAAa,CAACO,OAAO,CAAC6C;SAAS;OAC/C;MACDC,eAAe,EAAErD,aAAa,CAACqD,eAAe,CAACC,GAAG,CAACC,KAAK,KAAK;QAAE,GAAGA;AAAK,OAAE,CAAC,CAAC;MAC3EC,QAAQ,EAAExD,aAAa,CAACwD,QAAQ,CAACF,GAAG,CAACC,KAAK,KAAK;QAAE,GAAGA;AAAK,OAAE,CAAC;KAC7D;AACH,EAAA;AAEQlB,EAAAA,eAAeA,CACrBoB,CAAmC,EACnCC,CAAmC,EAAA;IAEnC,OAAOD,CAAC,CAACP,SAAS,KAAKQ,CAAC,CAACR,SAAS,IAAIO,CAAC,CAACN,OAAO,KAAKO,CAAC,CAACP,OAAO,IAAIM,CAAC,CAACL,OAAO,KAAKM,CAAC,CAACN,OAAO;AAC1F,EAAA;EAEQpE,oBAAoBA,CAAC2E,YAA0C,EAAA;AACrE,IAAA,MAAMC,YAAY,GAAGC,yBAAyB,CAACF,YAAY,EAAE,iBAAiB,CAAC;AAC/E,IAAA,OAAO,IAAI,CAAC7F,IAAI,CAACgG,QAAQ,CAACF,YAAY,CAAuC;AAC/E,EAAA;AAEQ/B,EAAAA,mBAAmBA,CACzBxE,SAAoC,EACpCsG,YAA0C,EAAA;IAE1C,OAAO,IAAI,CAACI,aAAa,CAAC1G,SAAS,CAAC,CAACsG,YAAY,CAAC;AACpD,EAAA;EAEQ,MAAM7E,gBAAgBA,CAC5BzB,SAAoC,EAAA;AAEpC,IAAA,MAAM2G,SAAS,GAAG,IAAI,CAACD,aAAa,CAAC1G,SAAS,CAAC;IAC/C,IAAI4G,MAAM,CAACC,IAAI,CAACF,SAAS,CAAC,CAACG,MAAM,KAAK,CAAC,EAAE;AACzC,IAAA,MAAMC,YAAY,GAAG,IAAI,CAACtG,IAAI,CAACuG,KAAK,CAACC,YAAY,CAACC,sBAAsB,CAAClH,SAAS,CAAC;AACnF,IAAA,MAAMmH,QAAQ,GAAGJ,YAAY,EAAEI,QAAQ,IAAIC,eAAe;IAC1D,MAAMd,YAAY,GAAG,MAAMa,QAAQ,CAAC,IAAI,CAAC9G,GAAG,EAAEsG,SAAS,CAAC;IACxD,IAAI,CAACL,YAAY,IAAI,CAACK,SAAS,CAACL,YAAY,CAAC,EAAE;IAC/C,OAAO;AAAE1E,MAAAA,IAAI,EAAE0E,YAAY;MAAExG,OAAO,EAAE6G,SAAS,CAACL,YAAY;KAAG;AACjE,EAAA;EAEQI,aAAaA,CAAC1G,SAAoC,EAAA;AACxD,IAAA,MAAMC,KAAK,GAAG,IAAI,CAACQ,IAAI,CAACuG,KAAK,CAACC,YAAY,CAACI,aAAa,CAACrH,SAAS,CAAC;IACnE,IAAI,CAACC,KAAK,EAAE,MAAM,IAAIC,KAAK,CAAC,CAAA,yBAAA,EAA4BF,SAAS,CAAA,CAAE,CAAC;AACpE,IAAA,MAAMF,OAAO,GAAG,IAAI,CAACW,IAAI,CAACuG,KAAK,CAACC,YAAY,CAACC,sBAAsB,CAAClH,SAAS,CAAC;AAC9E,IAAA,OAAO,IAAI,CAACsH,iBAAiB,CAACxH,OAAO,EAAE6G,SAAS,CAAC;AACnD,EAAA;EAEQW,iBAAiBA,CAACX,SAAyC,EAAA;IACjE,MAAMnE,MAAM,GAA2B,EAAS;AAChD,IAAA,IAAI,CAACmE,SAAS,EAAE,OAAOnE,MAAM;IAC7B,KAAK,MAAM+E,IAAI,IAAIX,MAAM,CAACC,IAAI,CAACF,SAAS,CAAC,EAAE;MACzC,MAAMa,GAAG,GAAGD,IAAoC;AAChD,MAAA,MAAME,eAAe,GAAGd,SAAS,CAACa,GAAG,CAAC;MACtC,IAAIC,eAAe,KAAK,KAAK,EAAE;MAC/B,MAAMT,KAAK,GAAG,IAAI,CAACvG,IAAI,CAACuG,KAAK,CAACzE,eAAe;AAC7C,MAAA,MAAMmF,KAAK,GAAGV,KAAK,CAACK,aAAa,CAACG,GAAG,CAAC;MACtC,IAAI,CAACE,KAAK,EAAE;AACZ,MAAA,MAAM5H,OAAO,GAAGkH,KAAK,CAACE,sBAAsB,CAC1CM,GAAG,EACH,OAAOC,eAAe,KAAK,QAAQ,GAAGA,eAAe,GAAG7D,SAAS,CAClE;MACD,IAAI,CAAC,IAAI,CAACnD,IAAI,CAACuG,KAAK,CAACW,wBAAwB,CAAC7H,OAAO,CAAC,EAAE;AACxD8G,MAAAA,MAAM,CAACgB,MAAM,CAACpF,MAAM,EAAE;AAAE,QAAA,CAACgF,GAAG,GAAG1H;AAAO,OAAE,CAAC;AAC3C,IAAA;AACA,IAAA,OAAO0C,MAAM;AACf,EAAA;;AAlWWnB,WAAW,GAAAJ,UAAA,CAAA,CADvB4G,IAAI,EAAE,EAAA1G,QAAA,CAAA;EAAAC,MAAA,EAAA;AAAA,CAAA,CAAA,CACM,EAAAC,WAAW,CAmWvB;AAED,eAAe+F,eAAeA,CAC5BU,IAAiB,EACjBnB,SAAiC,EAAA;AAEjC,EAAA,MAAME,IAAI,GAAGD,MAAM,CAACC,IAAI,CAACF,SAAS,CAAC;EACnC,MAAMoB,KAAK,GAAGC,YAAY,CAACnB,IAAI,CAACC,MAAM,EAAE,CAAC,CAAC;EAC1C,OAAOD,IAAI,CAACkB,KAAK,CAAiC;AACpD;;ACjYA;AACA;AACO,MAAME,aAAa,GAAG;;;;;;;;;;;;;;CAc5B;AAEM,MAAMC,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkChC;AAEM,MAAMC,kBAAkB,GAAG;;;;;;;;;;;;;;CAcjC;AAED;AACA;AACO,MAAMC,iBAAiB,GAAG;;;;;;;;;;;;;;;;;CAiBhC;;ACnEM,IAAMC,iBAAiB,GAAvB,MAAMA,iBAAkB,SAAQC,qBAGtC,CAAA;EACC,MAAMtE,QAAQA,CAACrD,EAAU,EAAA;IACvB,MAAM;MAAE4H,KAAK;AAAE1B,MAAAA;KAAM,GAAG,IAAI,CAAC2B,UAAU,CAAC,CAAC7H,EAAE,CAAC,CAAC;IAC7C,MAAM8H,GAAG,GAAG,MAAMF,KAAK,CAAChD,GAAG,CAACsB,IAAI,CAAC,CAAC,CAAC,CAAC;AACpC,IAAA,OAAO4B,GAAG,GAAG;MAAEA,GAAG;AAAEzG,MAAAA,IAAI,EAAE0G,IAAI,CAACC,KAAK,CAACF,GAAG;AAAC,KAAE,GAAG7E,SAAS;AACzD,EAAA;AAEA,EAAA,MAAMxB,WAAWA,CAACzB,EAAU,EAAEqB,IAAuB,EAAEK,GAAW,EAAA;AAChE,IAAA,IAAI,CAACuG,YAAY,CAACvG,GAAG,CAAC;IACtB,MAAM;MAAEkG,KAAK;AAAE1B,MAAAA;KAAM,GAAG,IAAI,CAAC2B,UAAU,CAAC,CAAC7H,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,MAAM4H,KAAK,CAACM,GAAG,CAAChC,IAAI,CAAC,CAAC,CAAC,EAAE6B,IAAI,CAACI,SAAS,CAAC9G,IAAI,CAAC,EAAE,IAAI,EAAEK,GAAG,EAAE,IAAI,CAAC,MAAM,IAAI;AACnF,EAAA;EAEA,MAAMoC,aAAaA,CACjB9D,EAAU,EACVqD,QAA0B,EAC1BhC,IAAwB,EACxBK,GAAY,EAAA;IAEZ,IAAIA,GAAG,KAAKuB,SAAS,EAAE,IAAI,CAACgF,YAAY,CAACvG,GAAG,CAAC;AAC7C,IAAA,MAAMG,MAAM,GAAG,MAAM,IAAI,CAACuG,KAAK,CAC7Bd,aAAa,EACb,CAACtH,EAAE,CAAC,EACJ,CAACqD,QAAQ,CAACyE,GAAG,EAAEzG,IAAI,KAAK4B,SAAS,GAAG,EAAE,GAAG8E,IAAI,CAACI,SAAS,CAAC9G,IAAI,CAAC,EAAEK,GAAG,IAAI,CAAC,CAAC,CACzE;IACD,OAAOG,MAAM,KAAK,CAAC;AACrB,EAAA;AAEAQ,EAAAA,WAAWA,GAAA;IACT,MAAMgG,QAAQ,GAAGC,UAAU,CAAC,QAAQ,CAAC,CAACC,MAAM,CAACC,MAAM,CAAC,IAAI,CAACC,oBAAoB,EAAE,CAAC,CAAC,CAACC,MAAM,CAAC,KAAK,CAAC;IAC/F,OAAO,CAAA,SAAA,EAAYL,QAAQ,CAAA,EAAA,CAAI;AACjC,EAAA;AAEA;EACAM,SAASA,CACP3G,aAA2F,EAAA;AAE3F,IAAA,MAAM4G,MAAM,GAAG,IAAI,CAACvG,WAAW,EAAE;IACjC,OAAO;AACLwG,MAAAA,OAAO,EAAE,CAAA,EAAGD,MAAM,WAAW5G,aAAa,CAAC7B,KAAK,CAAA,CAAE;AAClD2I,MAAAA,QAAQ,EAAE,CAAA,EAAGF,MAAM,YAAY5G,aAAa,CAAC7B,KAAK,CAAA,CAAE;MACpD4I,OAAO,EAAE,CACP,GAAG/G,aAAa,CAACqD,eAAe,CAACC,GAAG,CAClCC,KAAK,IAAI,CAAA,EAAGqD,MAAM,aAAa5G,aAAa,CAAC7B,KAAK,CAAA,CAAA,EAAIoF,KAAK,CAACyD,QAAQ,CAAA,CAAE,CACvE,EACD,GAAGhH,aAAa,CAACwD,QAAQ,CAACF,GAAG,CAACC,KAAK,IAAI,CAAA,EAAGqD,MAAM,CAAA,GAAA,EAAM5G,aAAa,CAACiH,EAAE,CAAA,CAAA,EAAI1D,KAAK,CAACyD,QAAQ,EAAE,CAAC;KAE9F;AACH,EAAA;AAEA,EAAA,MAAMjG,YAAYA,CAAC/C,EAAU,EAAEqB,IAAuB,EAAEW,aAAoC,EAAA;AAC1F,IAAA,IAAI,CAACkH,sBAAsB,CAAClH,aAAa,CAAC;AAC1C,IAAA,IAAI,CAACmH,gBAAgB,CAACnJ,EAAE,CAAC;AACzB,IAAA,MAAMkG,IAAI,GAAG,IAAI,CAACyC,SAAS,CAAC3G,aAAa,CAAC;AAC1C,IAAA,MAAMoH,MAAM,GAAG;MACb1H,GAAG,EAAEM,aAAa,CAACN,GAAG;MACtBoH,QAAQ,EAAE9G,aAAa,CAAC8G,QAAQ;MAChCC,OAAO,EAAE,CAAC,GAAG/G,aAAa,CAACqD,eAAe,EAAE,GAAGrD,aAAa,CAACwD,QAAQ;KACtE;AACD,IAAA,MAAM3D,MAAM,GAAI,MAAM,IAAI,CAACuG,KAAK,CAC9Bb,iBAAiB,EACjB,CAACvH,EAAE,EAAEkG,IAAI,CAAC2C,OAAO,EAAE3C,IAAI,CAAC4C,QAAQ,EAAE,GAAG5C,IAAI,CAAC6C,OAAO,CAAC,EAClD,CAAC/I,EAAE,EAAE+H,IAAI,CAACI,SAAS,CAACiB,MAAM,CAAC,EAAErB,IAAI,CAACI,SAAS,CAAC9G,IAAI,CAAC,CAAC,CACN;AAC9C,IAAA,IAAIQ,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,MAAM,IAAItC,KAAK,CAAC,4BAA4B,CAAC;AACnE,IAAA,IAAIsC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;MACnB,OAAO;AACLmB,QAAAA,QAAQ,EAAE,KAAc;AACxBI,QAAAA,OAAO,EAAEvB,MAAM,CAAC,CAAC,CAAC;AAClBa,QAAAA,QAAQ,EAAEb,MAAM,CAAC,CAAC,CAAC;QACnBsB,SAAS,EAAEtB,MAAM,CAAC,CAAC;OACpB;AACH,IAAA;AACA,IAAA,IAAIA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAACA,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,IAAItC,KAAK,CAAC,6BAA6B,CAAC;IACjF,OAAO;AACLyD,MAAAA,QAAQ,EAAE,IAAa;AACvBK,MAAAA,QAAQ,EAAE;AAAEyE,QAAAA,GAAG,EAAEjG,MAAM,CAAC,CAAC,CAAC;QAAER,IAAI,EAAE0G,IAAI,CAACC,KAAK,CAACnG,MAAM,CAAC,CAAC,CAAC;OAAwB;MAC9EsB,SAAS,EAAEtB,MAAM,CAAC,CAAC;KACpB;AACH,EAAA;AAEA,EAAA,MAAM2B,aAAaA,CAACxD,EAAU,EAAEqD,QAA0B,EAAEhC,IAAwB,EAAA;AAClF,IAAA,IAAI,CAAC8H,gBAAgB,CAACnJ,EAAE,CAAC;IACzB,MAAMG,KAAK,GAAGkD,QAAQ,CAAChC,IAAI,CAACH,KAAM,CAACf,KAAK;IACxC,MAAM0I,OAAO,GAAG,CAAA,EAAG,IAAI,CAACxG,WAAW,EAAE,CAAA,QAAA,EAAWlC,KAAK,CAAA,CAAE;AACvD,IAAA,MAAM0B,MAAM,GAAI,MAAM,IAAI,CAACuG,KAAK,CAC9BZ,kBAAkB,EAClB,CAACxH,EAAE,EAAE6I,OAAO,CAAC,EACb,CAACxF,QAAQ,CAACyE,GAAG,EAAE9H,EAAE,EAAEqB,IAAI,KAAK4B,SAAS,GAAG,EAAE,GAAG8E,IAAI,CAACI,SAAS,CAAC9G,IAAI,CAAC,CAAC,CAC9C;IACtB,OAAO;AAAEkC,MAAAA,SAAS,EAAE1B,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;MAAEsB,SAAS,EAAEtB,MAAM,CAAC,CAAC;KAAG;AAC7D,EAAA;AAEA;AACA,EAAA,MAAM0C,YAAYA,CAACvE,EAAU,EAAEqD,QAA0B,EAAExD,QAAiB,EAAA;AAC1E,IAAA,IAAI,CAACsJ,gBAAgB,CAACnJ,EAAE,CAAC;AACzB,IAAA,MAAMkB,KAAK,GAAGmC,QAAQ,CAAChC,IAAI,CAACH,KAAM;AAClC,IAAA,MAAM2H,OAAO,GAAG,CAAA,EAAG,IAAI,CAACxG,WAAW,EAAE,CAAA,QAAA,EAAWnB,KAAK,CAACf,KAAK,CAAA,CAAE;AAC7D,IAAA,MAAMf,IAAI,GAAG;MACX,GAAGiE,QAAQ,CAAChC,IAAI;AAChBH,MAAAA,KAAK,EAAE;AACL,QAAA,GAAGA,KAAK;AACRyB,QAAAA,iBAAiB,EAAEzB,KAAK,CAACyB,iBAAiB,GAAG,CAAC;AAC9CE,QAAAA,OAAO,EAAE3B,KAAK,CAAC2B,OAAO,GAAG;AAC1B;KACF;AACD,IAAA,OAAQ,MAAM,IAAI,CAACuF,KAAK,CACtBX,iBAAiB,EACjB,CAACzH,EAAE,EAAE6I,OAAO,CAAC,EACb,CAACxF,QAAQ,CAACyE,GAAG,EAAE9H,EAAE,EAAEH,QAAQ,GAAG,GAAG,GAAG,GAAG,EAAEkI,IAAI,CAACI,SAAS,CAAC/I,IAAI,CAAC,CAAC,CAC/D;AACH,EAAA;EAEA6F,qBAAqBA,CAACjD,aAAoC,EAAA;AACxD,IAAA,IAAI,CAACkH,sBAAsB,CAAClH,aAAa,CAAC;AAC5C,EAAA;EAEQkH,sBAAsBA,CAAClH,aAAoC,EAAA;AACjE,IAAA,IAAI,CAACA,aAAa,IAAI,OAAOA,aAAa,KAAK,QAAQ,EACrD,MAAM,IAAIzC,KAAK,CAAC,+BAA+B,CAAC;IAClD,MAAM;MAAEgD,OAAO;MAAEpC,KAAK;MAAE8I,EAAE;MAAEvH,GAAG;MAAEoH,QAAQ;MAAElG,WAAW;MAAEyC,eAAe;AAAEG,MAAAA;AAAQ,KAAE,GACjFxD,aAAa;AACf,IAAA,MAAMqH,IAAI,GAAIC,KAAc,IAC1B,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,CAACnD,MAAM,GAAG,CAAC,IAAImD,KAAK,CAACnD,MAAM,IAAI,GAAG;AACtE,IAAA,MAAMoD,IAAI,GAAID,KAAc,IAAK,OAAOA,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAACE,IAAI,CAACF,KAAK,CAAC;IAC1F,IACE,CAAC/G,OAAO,IACR,CAAC8G,IAAI,CAAC9G,OAAO,CAAC2C,SAAS,CAAC,IACxB,CAACmE,IAAI,CAAC9G,OAAO,CAAC4C,OAAO,CAAC,IACrB5C,OAAO,CAAC6C,OAAO,KAAKnC,SAAS,IAAI,CAACoG,IAAI,CAAC9G,OAAO,CAAC6C,OAAO,CAAE,IACzD,CAACmE,IAAI,CAACpJ,KAAK,CAAC,IACZ,CAACoJ,IAAI,CAACN,EAAE,CAAC,EACT;AACA,MAAA,MAAM,IAAI1J,KAAK,CAAC,yBAAyB,CAAC;AAC5C,IAAA;AACA,IAAA,IAAI,CAAC0I,YAAY,CAACvG,GAAG,CAAC;IACtB,IACE,CAAC+H,MAAM,CAACC,aAAa,CAACZ,QAAQ,CAAC,IAC/BA,QAAQ,GAAG,CAAC,IACZA,QAAQ,GAAGW,MAAM,CAACE,gBAAgB,GAAGC,IAAI,CAACC,GAAG,EAAE,IAC/CjH,WAAW,KAAK,CAAC,EACjB;AACA,MAAA,MAAM,IAAIrD,KAAK,CAAC,wBAAwB,CAAC;AAC3C,IAAA;IACA,KAAK,MAAMuK,MAAM,IAAI,CAACzE,eAAe,EAAEG,QAAQ,CAAC,EAAE;MAChD,IAAI,CAACuE,KAAK,CAACC,OAAO,CAACF,MAAM,CAAC,IAAIA,MAAM,CAAC3D,MAAM,KAAK,CAAC,IAAI2D,MAAM,CAAC3D,MAAM,GAAG,EAAE,EACrE,MAAM,IAAI5G,KAAK,CAAC,wBAAwB,CAAC;AAC3C,MAAA,MAAM0K,OAAO,GAAG,IAAIC,GAAG,EAAU;AACjC,MAAA,KAAK,MAAM3E,KAAK,IAAIuE,MAAM,EAAE;QAC1B,IACE,CAACvE,KAAK,IACN,CAACkE,MAAM,CAACC,aAAa,CAACnE,KAAK,CAACA,KAAK,CAAC,IAClCA,KAAK,CAACA,KAAK,IAAI,CAAC,IAChB0E,OAAO,CAACE,GAAG,CAAC5E,KAAK,CAACyD,QAAQ,CAAC,EAC3B;AACA,UAAA,MAAM,IAAIzJ,KAAK,CAAC,uBAAuB,CAAC;AAC1C,QAAA;AACA,QAAA,IAAI,CAAC0I,YAAY,CAAC1C,KAAK,CAACyD,QAAQ,CAAC;AACjCiB,QAAAA,OAAO,CAACG,GAAG,CAAC7E,KAAK,CAACyD,QAAQ,CAAC;AAC7B,MAAA;AACF,IAAA;AACF,EAAA;EAEQf,YAAYA,CAACvG,GAAW,EAAA;IAC9B,IAAI,CAAC+H,MAAM,CAACC,aAAa,CAAChI,GAAG,CAAC,IAAIA,GAAG,IAAI,CAAC,IAAIA,GAAG,GAAG+H,MAAM,CAACE,gBAAgB,GAAGC,IAAI,CAACC,GAAG,EAAE,EAAE;AACxF,MAAA,MAAM,IAAItK,KAAK,CAAC,qBAAqB,CAAC;AACxC,IAAA;AACF,EAAA;EAEQ4J,gBAAgBA,CAACnJ,EAAU,EAAA;AACjC,IAAA,IACE,CAACA,EAAE,CAACqK,UAAU,CAAC,IAAI,CAAChI,WAAW,EAAE,CAAC,IAClC,CAAC,iBAAiB,CAACmH,IAAI,CAACxJ,EAAE,CAAC+G,KAAK,CAAC,IAAI,CAAC1E,WAAW,EAAE,CAAC8D,MAAM,CAAC,CAAC,EAC5D;AACA,MAAA,MAAM,IAAI5G,KAAK,CAAC,gCAAgC,CAAC;AACnD,IAAA;AACF,EAAA;EAEQsI,UAAUA,CAACyC,GAAa,EAAA;AAC9B,IAAA,MAAM1C,KAAK,GAAG,IAAI,CAAC2C,eAAe;IAClC,IAAI,CAAC3C,KAAK,EAAE,MAAM,IAAIrI,KAAK,CAAC,2BAA2B,CAAC;IACxD,OAAO;MAAEqI,KAAK;AAAE1B,MAAAA,IAAI,EAAEoE,GAAG,CAAChF,GAAG,CAACtF,EAAE,IAAI,IAAI,CAACwK,WAAW,CAACxK,EAAE,CAAE;KAAG;AAC9D,EAAA;AAEQ,EAAA,MAAMoI,KAAKA,CAACqC,GAAW,EAAEH,GAAa,EAAEI,IAA4B,EAAA;IAC1E,MAAM;MAAE9C,KAAK;AAAE1B,MAAAA;AAAI,KAAE,GAAG,IAAI,CAAC2B,UAAU,CAACyC,GAAG,CAAC;AAC5C,IAAA,OAAO,MAAM1C,KAAK,CAAC+C,IAAI,CAACF,GAAG,EAAEvE,IAAI,CAACC,MAAM,EAAE,GAAGD,IAAI,EAAE,GAAGwE,IAAI,CAAC;AAC7D,EAAA;;AA9LWhD,iBAAiB,GAAApH,UAAA,CAAA,CAD7BsK,UAAU,CAAC;AAAEC,EAAAA,4BAA4B,EAAE,IAAI;AAAEhG,EAAAA,cAAc,EAAE;AAAK,CAAE,CAAC,EAAArE,QAAA,CAAA;EAAAC,MAAA,EAAA;AAAA,CAAA,CAAA,CAC7D,EAAAiH,iBAAiB,CA+L7B;;MCnNYoD,yBAAyB,GAAGC,MAAM,CAAC,2BAA2B;AAErE,SAAUC,2BAA2BA,CAAC9I,GAAoB,EAAA;AAC9D,EAAA,OAAOA,GAAG,CAAC+I,IAAI,CAACH,yBAAyB,CAAC;AAC5C;;ACGO,IAAMI,kBAAkB,GAAxB,MAAMA,kBAAmB,SAAQjM,QAAQ,CAAA;EAC9C,MAAMkM,MAAMA,CAACC,YAAuC,EAAA;AAClDJ,IAAAA,2BAA2B,CAAC,IAAI,CAAC9I,GAAG,CAAC;AACvC,EAAA;;AAHWgJ,kBAAkB,GAAA5K,UAAA,CAAA,CAD9B+K,GAAG,EAAE,EAAA7K,QAAA,CAAA;EAAAC,MAAA,EAAA;AAAA,CAAA,CAAA,CACO,EAAAyK,kBAAkB,CAI9B;;ACJM,IAAMI,eAAe,GAArB,MAAMA,eAAgB,SAAQrM,QAAQ,CAAA;EAC3C,MAAMkM,MAAMA,CAACC,YAAuC,EAAA;AAClDJ,IAAAA,2BAA2B,CAAC,IAAI,CAAC9I,GAAG,CAAC;AACvC,EAAA;;AAHWoJ,eAAe,GAAAhL,UAAA,CAAA,CAD3B+K,GAAG,EAAE,EAAA7K,QAAA,CAAA;EAAAC,MAAA,EAAA;AAAA,CAAA,CAAA,CACO,EAAA6K,eAAe,CAI3B;;ACFM,IAAMC,cAAc,GAApB,MAAMA,cAAc,CAAA;EAAAC,WAAAA,GAAA;AAAA,IAAA,IAAA,CAEzBxL,EAAE,GAAA,MAAA;AAAA,IAAA,IAAA,CAGFa,QAAQ,GAAA,MAAA;AAAA,IAAA,IAAA,CAGRZ,KAAK,GAAA,MAAA;AAAA,IAAA,IAAA,CAGL6B,OAAO,GAAA,MAAA;AAAA,EAAA;;AATPxB,UAAA,CAAA,CADCmL,GAAG,CAACC,KAAK,EAAE,oCACD,EAAAH,cAAA,CAAAI,SAAA,EAAA,IAAA,EAAA,MAAA,CAAA;AAGXrL,UAAA,CAAA,CADCmL,GAAG,CAACC,KAAK,CAACE,CAAC,CAACC,MAAM,EAAE,CAAC,oCACiB,EAAAN,cAAA,CAAAI,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA;AAGvCrL,UAAA,CAAA,CADCmL,GAAG,CAACC,KAAK,CAACI,CAAC,CAACC,QAAQ,EAAE,CAAC,oCACR,EAAAR,cAAA,CAAAI,SAAA,EAAA,OAAA,EAAA,MAAA,CAAA;AAGhBrL,UAAA,CAAA,CADCmL,GAAG,CAACC,KAAK,EAAE,oCACK,EAAAH,cAAA,CAAAI,SAAA,EAAA,SAAA,EAAA,MAAA,CAAA;AAXNJ,cAAc,GAAAjL,UAAA,CAAA,CAD1B0L,GAAG,EAA0B,EAAAxL,QAAA,CAAA;EAAAC,MAAA,EAAA;AAAA,CAAA,CAAA,CACjB,EAAA8K,cAAc,CAY1B;;ACfM,IAAMU,gBAAgB,GAAtB,MAAMA,gBAAgB,CAAA;EAAAT,WAAAA,GAAA;AAAA,IAAA,IAAA,CAE3BxL,EAAE,GAAA,MAAA;AAAA,IAAA,IAAA,CAGFC,KAAK,GAAA,MAAA;EAAA,CAAA;;AAHLK,UAAA,CAAA,CADCmL,GAAG,CAACC,KAAK,CAACI,CAAC,CAACI,QAAQ,EAAE,CAAC,oCACb,EAAAD,gBAAA,CAAAN,SAAA,EAAA,IAAA,EAAA,MAAA,CAAA;AAGXrL,UAAA,CAAA,CADCmL,GAAG,CAACC,KAAK,CAACI,CAAC,CAACI,QAAQ,EAAE,CAAC,oCACV,EAAAD,gBAAA,CAAAN,SAAA,EAAA,OAAA,EAAA,MAAA,CAAA;AALHM,gBAAgB,GAAA3L,UAAA,CAAA,CAD5B0L,GAAG,EAA4B,EAAAxL,QAAA,CAAA;EAAAC,MAAA,EAAA;AAAA,CAAA,CAAA,CACnB,EAAAwL,gBAAgB,CAM5B;;ACDM,IAAME,iBAAiB,GAAvB,MAAMA,iBAAkB,SAAQlN,QAAQ,CAAA;EAI7C,MAAM0B,MAAMA,CAAoBrB,KAAa,EAAA;IAC3C,OAAO,MAAM,IAAI,CAACQ,IAAI,CAACL,OAAO,CAACkB,MAAM,CAACrB,KAAY,CAAC;AACrD,EAAA;AAKA,EAAA,MAAMsE,OAAOA,CAAiB5D,EAAU,EAAqBV,KAAa,EAAA;AACxE,IAAA,OAAO,MAAM,IAAI,CAACQ,IAAI,CAACL,OAAO,CAACmE,OAAO,CAAC5D,EAAE,EAAEV,KAAY,CAAC;AAC1D,EAAA;AAKA,EAAA,MAAMkF,eAAeA,CACHxE,EAAU,EACPC,KAAc,EAAA;AAEjC,IAAA,MAAMJ,QAAQ,GAAG,MAAM,IAAI,CAACC,IAAI,CAACL,OAAO,CAAC+E,eAAe,CAACxE,EAAE,EAAEC,KAAK,CAAC;IACnE,IAAI,CAACJ,QAAQ,EAAE,IAAI,CAACqC,GAAG,CAACC,KAAK,CAAC,GAAG,CAAC;AAClC,IAAA,OAAOtC,QAAQ;AACjB,EAAA;;AArBMS,UAAA,CAAA,CAHL8L,GAAG,CAACC,IAAI,CAAC,QAAQ,CAAC,EAClBZ,GAAG,CAAC7L,IAAI,CAAC2L,cAAc,CAAC,EACxBe,QAAQ,CAACC,MAAM,EAAE,EACJC,OAAA,CAAA,CAAA,EAAAC,GAAG,CAAC7M,IAAI,CAAC,OAAO,CAAC,CAAA,2HAE9B,EAAAuM,iBAAA,CAAAR,SAAA,EAAA,QAAA,EAAA,IAAA,CAAA;AAKKrL,UAAA,CAAA,CAHL8L,GAAG,CAACC,IAAI,CAAC,SAAS,CAAC,EACnBZ,GAAG,CAAC7L,IAAI,CAAC2L,cAAc,CAAC,EACxBe,QAAQ,CAACC,MAAM,EAAE,EACHC,OAAA,CAAA,CAAA,EAAAC,GAAG,CAAC7M,IAAI,CAAC,IAAI,CAAC,CAAA,EAAc4M,OAAA,CAAA,CAAA,EAAAC,GAAG,CAAC7M,IAAI,CAAC,OAAO,CAAC,CAAA,mIAE3D,EAAAuM,iBAAA,CAAAR,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA;AAKKrL,UAAA,CAAA,CAHL8L,GAAG,CAACC,IAAI,CAAC,iBAAiB,CAAC,EAC3BZ,GAAG,CAAC7L,IAAI,CAACgM,CAAC,CAACC,MAAM,EAAE,CAAC,EACpBS,QAAQ,CAACC,MAAM,EAAE,EAEfC,OAAA,CAAA,CAAA,EAAAC,GAAG,CAAC7M,IAAI,CAAC,IAAI,CAAC,CAAA,EACd4M,OAAA,CAAA,CAAA,EAAAC,GAAG,CAAC7M,IAAI,CAAC,OAAO,CAAC,CAAA,mIAKnB,EAAAuM,iBAAA,CAAAR,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA;AAzBUQ,iBAAiB,GAAA7L,UAAA,CAAA,CAD7BoM,UAAU,CAA4B,SAAS,CAAC,EAAAlM,QAAA,CAAA;EAAAC,MAAA,EAAA;AAAA,CAAA,CAAA,CACpC,EAAA0L,iBAAiB,CA0B7B;;ACrCK,SAAUxK,MAAMA,CAACO,GAAoB,EAAA;AACzC,EAAA,MAAMH,SAAS,GAAG,CAACG,GAAG,CAAC+I,IAAI,CAAC0B,MAAM;EAClC,OAAO;AACL/K,IAAAA,eAAe,EAAE;AACfF,MAAAA,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;AACnBgD,MAAAA,YAAY,EAAE,EAAE,GAAG,EAAE,GAAG;KACzB;AACDjF,IAAAA,OAAO,EAAE;AACPsC,MAAAA;AACD;GACF;AACH;;ACwMO,IAAM6K,mBAAmB,GAAzB,MAAMA,mBAAoB,SAAQC,aAAa,CAAA;AAAzCD,mBAAmB,GAAAtM,UAAA,CAAA,CAD/BwM,KAAK,EAAE,EAAAtM,QAAA,CAAA;EAAAC,MAAA,EAAA;AAAA,CAAA,CAAA,CACK,EAAAmM,mBAAmB,CAAyB;AA6BzD;;AClPA,mBAAe;AACbvM,EAAAA,cAAc,EAAE;CACjB;;ACFD,mBAAe;AACbA,EAAAA,cAAc,EAAE;CACjB;;ACKM,MAAM0M,OAAO,GAAG;AACrB,EAAA,OAAO,EAAEC,YAAY;AACrB,EAAA,OAAO,EAAEC;;SAGKC,OAAOA,CACrBrG,GAAM,EACN,GAAG6D,IAAW,EAAA;EAEd,OAAOyC,gBAAgB,CAAC,CAAA,WAAA,EAActG,GAAG,EAAE,EAAE,GAAG6D,IAAI,CAAC;AACvD;;ACbM,SAAU0C,eAAeA,CAC7BjO,OAAW,EAAA;AAEX,EAAA,OAAOkO,mBAAmB,CAAC,iBAAiB,EAAElO,OAAO,CAAC;AACxD;;ACJM,SAAUmO,YAAYA,CAACnO,OAAsC,EAAA;AACjE,EAAA,OAAOkO,mBAAmB,CAAC,cAAc,EAAElO,OAAO,CAAC;AACrD;;"}
@@ -1,5 +1,5 @@
1
1
  export declare const captchaCasLua = "\nlocal current = redis.call('GET', KEYS[1])\nif current ~= ARGV[1] then return 0 end\nif ARGV[2] == '' then\n redis.call('DEL', KEYS[1])\nelse\n local ttl = tonumber(ARGV[3])\n if ttl > 0 then\n redis.call('SET', KEYS[1], ARGV[2], 'PX', ttl)\n else\n redis.call('SET', KEYS[1], ARGV[2], 'KEEPTTL')\n end\nend\nreturn 1\n";
2
- export declare const captchaReserveLua = "\nlocal time = redis.call('TIME')\nlocal now = tonumber(time[1]) * 1000 + math.floor(tonumber(time[2]) / 1000)\nlocal policy = cjson.decode(ARGV[2])\nlocal cooldown = tonumber(redis.call('GET', KEYS[3]) or '0')\nlocal retryAt = cooldown\nlocal counters = {}\nfor i, budget in ipairs(policy.budgets) do\n local value = tonumber(redis.call('GET', KEYS[i + 3]) or '0')\n local deadline = (math.floor(now / budget.windowMs) + 1) * budget.windowMs\n local remaining = redis.call('PTTL', KEYS[i + 3])\n if remaining <= 0 then value = 0 end\n counters[i] = { value = value, deadline = deadline }\n if value >= budget.limit and deadline > retryAt then retryAt = deadline end\nend\nif retryAt > now then return { 0, '', retryAt, cooldown } end\nif redis.call('EXISTS', KEYS[1]) == 1 then return { -1 } end\nlocal data = cjson.decode(ARGV[3])\ndata.bound.expiresAt = now + policy.ttl\ndata.bound.resendAt = now + policy.cooldown\nlocal raw = cjson.encode(data)\nfor i, counter in ipairs(counters) do\n redis.call('SET', KEYS[i + 3], tostring(counter.value + 1))\n redis.call('PEXPIREAT', KEYS[i + 3], counter.deadline)\nend\nredis.call('SET', KEYS[1], raw)\nredis.call('PEXPIREAT', KEYS[1], data.bound.expiresAt)\nredis.call('SET', KEYS[2], ARGV[1])\nredis.call('PEXPIREAT', KEYS[2], math.max(data.bound.expiresAt, data.bound.resendAt))\nif policy.cooldown > 0 then\n redis.call('SET', KEYS[3], tostring(data.bound.resendAt))\n redis.call('PEXPIREAT', KEYS[3], data.bound.resendAt)\nend\nreturn { 1, raw, data.bound.expiresAt, data.bound.resendAt }\n";
3
- export declare const captchaFinalizeLua = "\nlocal current = redis.call('GET', KEYS[1])\nif current ~= ARGV[1] or redis.call('GET', KEYS[2]) ~= ARGV[2] then return 0 end\nlocal data = cjson.decode(current)\nlocal time = redis.call('TIME')\nlocal now = tonumber(time[1]) * 1000 + math.floor(tonumber(time[2]) / 1000)\nif data.bound.state ~= 'pending' or data.bound.expiresAt <= now then return 0 end\nif ARGV[3] == '' then\n redis.call('DEL', KEYS[1])\nelse\n redis.call('SET', KEYS[1], ARGV[3])\n redis.call('PEXPIREAT', KEYS[1], data.bound.expiresAt)\nend\nreturn 1\n";
2
+ export declare const captchaReserveLua = "\nlocal time = redis.call('TIME')\nlocal now = tonumber(time[1]) * 1000 + math.floor(tonumber(time[2]) / 1000)\nlocal policy = cjson.decode(ARGV[2])\nlocal cooldown = tonumber(redis.call('GET', KEYS[3]) or '0')\nlocal retryAt = cooldown\nlocal counters = {}\nfor i, budget in ipairs(policy.budgets) do\n local value = tonumber(redis.call('GET', KEYS[i + 3]) or '0')\n local deadline = (math.floor(now / budget.windowMs) + 1) * budget.windowMs\n local remaining = redis.call('PTTL', KEYS[i + 3])\n if remaining <= 0 then value = 0 end\n counters[i] = { value = value, deadline = deadline }\n if value >= budget.limit and deadline > retryAt then retryAt = deadline end\nend\nif retryAt > now then return { 0, '', retryAt, cooldown, now } end\nif redis.call('EXISTS', KEYS[1]) == 1 then return { -1, '', 0, 0, now } end\nlocal data = cjson.decode(ARGV[3])\ndata.bound.expiresAt = now + policy.ttl\ndata.bound.resendAt = now + policy.cooldown\nlocal raw = cjson.encode(data)\nfor i, counter in ipairs(counters) do\n redis.call('SET', KEYS[i + 3], tostring(counter.value + 1))\n redis.call('PEXPIREAT', KEYS[i + 3], counter.deadline)\nend\nredis.call('SET', KEYS[1], raw)\nredis.call('PEXPIREAT', KEYS[1], data.bound.expiresAt)\nredis.call('SET', KEYS[2], ARGV[1])\nredis.call('PEXPIREAT', KEYS[2], math.max(data.bound.expiresAt, data.bound.resendAt))\nif policy.cooldown > 0 then\n redis.call('SET', KEYS[3], tostring(data.bound.resendAt))\n redis.call('PEXPIREAT', KEYS[3], data.bound.resendAt)\nend\nreturn { 1, raw, data.bound.expiresAt, data.bound.resendAt, now }\n";
3
+ export declare const captchaFinalizeLua = "\nlocal time = redis.call('TIME')\nlocal now = tonumber(time[1]) * 1000 + math.floor(tonumber(time[2]) / 1000)\nlocal current = redis.call('GET', KEYS[1])\nif current ~= ARGV[1] or redis.call('GET', KEYS[2]) ~= ARGV[2] then return { 0, now } end\nlocal data = cjson.decode(current)\nif data.bound.state ~= 'pending' or data.bound.expiresAt <= now then return { 0, now } end\nif ARGV[3] == '' then\n redis.call('DEL', KEYS[1])\nelse\n redis.call('SET', KEYS[1], ARGV[3])\n redis.call('PEXPIREAT', KEYS[1], data.bound.expiresAt)\nend\nreturn { 1, now }\n";
4
4
  export declare const captchaConsumeLua = "\nlocal current = redis.call('GET', KEYS[1])\nif current ~= ARGV[1] then return -1 end\nif redis.call('GET', KEYS[2]) ~= ARGV[2] then return 0 end\nlocal data = cjson.decode(current)\nlocal time = redis.call('TIME')\nlocal now = tonumber(time[1]) * 1000 + math.floor(tonumber(time[2]) / 1000)\nif data.bound.state ~= 'active' or data.bound.expiresAt <= now or data.bound.attemptsRemaining <= 0 then\n return 0\nend\nif ARGV[3] == '1' or data.bound.attemptsRemaining == 1 then\n redis.call('DEL', KEYS[1])\nelse\n redis.call('SET', KEYS[1], ARGV[4])\n redis.call('PEXPIREAT', KEYS[1], data.bound.expiresAt)\nend\nreturn 1\n";
5
5
  //# sourceMappingURL=captchaLua.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"captchaLua.d.ts","sourceRoot":"","sources":["../../src/lib/captchaLua.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,iVAczB,CAAC;AAEF,eAAO,MAAM,iBAAiB,mhDAkC7B,CAAC;AAEF,eAAO,MAAM,kBAAkB,qhBAc9B,CAAC;AAIF,eAAO,MAAM,iBAAiB,unBAiB7B,CAAC"}
1
+ {"version":3,"file":"captchaLua.d.ts","sourceRoot":"","sources":["../../src/lib/captchaLua.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,iVAczB,CAAC;AAEF,eAAO,MAAM,iBAAiB,4iDAkC7B,CAAC;AAEF,eAAO,MAAM,kBAAkB,gjBAc9B,CAAC;AAIF,eAAO,MAAM,iBAAiB,unBAiB7B,CAAC"}
@@ -23,6 +23,7 @@ export interface ICaptchaData {
23
23
  token?: unknown;
24
24
  payload: unknown;
25
25
  status?: 'accepted' | 'rejected' | 'unknown' | 'limited';
26
+ serverNow?: number;
26
27
  expiresAt?: number;
27
28
  resendAt?: number;
28
29
  retryAt?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"captcha.d.ts","sourceRoot":"","sources":["../../src/types/captcha.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,MAAM,CAAC;AAEd,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,mBAAmB,CAAC;IACjC,QAAQ,EAAE,MAAM,sBAAsB,CAAC;IACvC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,eAAe,CAAC;QACzB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;QAC5B,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,sBAAsB,CAAC;IACvC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,kBAAkB;QACjC,OAAO,EAAE,KAAK,CAAC;KAChB;CACF"}
1
+ {"version":3,"file":"captcha.d.ts","sourceRoot":"","sources":["../../src/types/captcha.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,MAAM,CAAC;AAEd,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,mBAAmB,CAAC;IACjC,QAAQ,EAAE,MAAM,sBAAsB,CAAC;IACvC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,eAAe,CAAC;QACzB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;QAC5B,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,sBAAsB,CAAC;IACvC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,kBAAkB;QACjC,OAAO,EAAE,KAAK,CAAC;KAChB;CACF"}
@@ -33,7 +33,7 @@ export interface ICaptchaProviderData<TOKEN = unknown, PAYLOAD = unknown> {
33
33
  token: TOKEN;
34
34
  payload: PAYLOAD;
35
35
  outcome?: 'accepted' | 'rejected' | 'unknown';
36
- /** Bound providers alone decide whether their actual transport may expose the token. */
36
+ /** Bound providers authorize transport disclosure subject to captcha.showToken. */
37
37
  exposeToken?: boolean;
38
38
  }
39
39
  export interface IDecoratorCaptchaProviderOptions extends TypeOnionOptionsEnableSimple {
@@ -1 +1 @@
1
- {"version":3,"file":"captchaProvider.d.ts","sourceRoot":"","sources":["../../src/types/captchaProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAEtF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,MAAM,WAAW,sBAAsB;CAAG;AAE1C,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,mFAAmF;AACnF,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,eAAe,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,aAAa,EAAE,CAAC;IACjC,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB,CAAC,KAAK,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IACzE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,CACR,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,OAAO,GAAG,SAAS,EAC9B,SAAS,EAAE,MAAM,mBAAmB,GACnC,qBAAqB,GAAG,SAAS,GAAG,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAAC;IAClF,MAAM,CACJ,OAAO,EAAE,gCAAgC,EACzC,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IACjD,MAAM,CACJ,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,KAAK,EACjB,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB,CAAC,KAAK,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IACtE,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;IAC9C,wFAAwF;IACxF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,gCAAiC,SAAQ,4BAA4B;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAiB,SAAS;QACxB,eAAe,EAAE,YAAY,CAAC,sBAAsB,CAAC,CAAC;KACvD;CACF;AAED,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,YAAY;QAC3B,eAAe,EAAE,SAAS,CAAC,sBAAsB,CAAC,CAAC;KACpD;IAED,UAAiB,gBAAgB;QAC/B,eAAe,EAAE,KAAK,CAAC;KACxB;CACF"}
1
+ {"version":3,"file":"captchaProvider.d.ts","sourceRoot":"","sources":["../../src/types/captchaProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAEtF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,MAAM,WAAW,sBAAsB;CAAG;AAE1C,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,mFAAmF;AACnF,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,eAAe,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,aAAa,EAAE,CAAC;IACjC,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB,CAAC,KAAK,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IACzE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,CACR,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,OAAO,GAAG,SAAS,EAC9B,SAAS,EAAE,MAAM,mBAAmB,GACnC,qBAAqB,GAAG,SAAS,GAAG,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAAC;IAClF,MAAM,CACJ,OAAO,EAAE,gCAAgC,EACzC,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IACjD,MAAM,CACJ,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,KAAK,EACjB,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB,CAAC,KAAK,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IACtE,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;IAC9C,mFAAmF;IACnF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,gCAAiC,SAAQ,4BAA4B;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAiB,SAAS;QACxB,eAAe,EAAE,YAAY,CAAC,sBAAsB,CAAC,CAAC;KACvD;CACF;AAED,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,YAAY;QAC3B,eAAe,EAAE,SAAS,CAAC,sBAAsB,CAAC,CAAC;KACpD;IAED,UAAiB,gBAAgB;QAC/B,eAAe,EAAE,KAAK,CAAC;KACxB;CACF"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "vona-module-a-captcha",
3
- "version": "5.1.17",
4
- "gitHead": "b0a4dbbda3b804afdfacf0792ad37a6e45724349",
3
+ "version": "5.1.18",
4
+ "gitHead": "d4ca173cd034aee6e73d037f86745c9919218f80",
5
5
  "description": "",
6
6
  "keywords": [
7
7
  "Vona Module"
@@ -75,6 +75,7 @@ export class BeanCaptcha extends BeanBase {
75
75
  provider: provider.name,
76
76
  payload: undefined,
77
77
  status: 'limited',
78
+ serverNow: reservation.serverNow,
78
79
  resendAt: reservation.resendAt || undefined,
79
80
  retryAt: reservation.retryAt,
80
81
  };
@@ -89,17 +90,25 @@ export class BeanCaptcha extends BeanBase {
89
90
  // A reservation authorizes exactly one external attempt. Never retry sends.
90
91
  captcha = await beanInstance.create(provider.options, context);
91
92
  } catch {
92
- await cache.finalizeBound(id, snapshot);
93
- return { id: '', provider: provider.name, payload: undefined, status: 'unknown', ...timing };
93
+ const finalized = await cache.finalizeBound(id, snapshot);
94
+ return {
95
+ id: '',
96
+ provider: provider.name,
97
+ payload: undefined,
98
+ status: 'unknown',
99
+ serverNow: finalized.serverNow,
100
+ ...timing,
101
+ };
94
102
  }
95
103
  const outcome = captcha.outcome ?? 'accepted';
96
104
  if (outcome !== 'accepted' || captcha.token === undefined || captcha.token === null) {
97
- await cache.finalizeBound(id, snapshot);
105
+ const finalized = await cache.finalizeBound(id, snapshot);
98
106
  return {
99
107
  id: '',
100
108
  provider: provider.name,
101
109
  payload: undefined,
102
110
  status: outcome === 'rejected' ? 'rejected' : 'unknown',
111
+ serverNow: finalized.serverNow,
103
112
  ...timing,
104
113
  };
105
114
  }
@@ -109,17 +118,27 @@ export class BeanCaptcha extends BeanBase {
109
118
  bound: { ...snapshot.data.bound!, state: 'active', version: 1 },
110
119
  };
111
120
  const finalized = await cache.finalizeBound(id, snapshot, active);
112
- if (!finalized)
113
- return { id: '', provider: provider.name, payload: undefined, status: 'unknown', ...timing };
121
+ if (!finalized.finalized) {
122
+ return {
123
+ id: '',
124
+ provider: provider.name,
125
+ payload: undefined,
126
+ status: 'unknown',
127
+ serverNow: finalized.serverNow,
128
+ ...timing,
129
+ };
130
+ }
114
131
  const result: ICaptchaData = {
115
132
  id,
116
133
  provider: provider.name,
117
134
  payload: captcha.payload,
118
135
  status: 'accepted',
136
+ serverNow: finalized.serverNow,
119
137
  ...timing,
120
138
  };
121
- // Generic showToken never grants disclosure for a bound provider.
122
- if (captcha.exposeToken === true) result.token = captcha.token;
139
+ // Bound providers must also authorize disclosure for their actual transport.
140
+ if (this.scope.config.captcha.showToken && captcha.exposeToken === true)
141
+ result.token = captcha.token;
123
142
  return result;
124
143
  }
125
144
 
@@ -86,15 +86,21 @@ export class CacheRedisCaptcha extends ServiceCacheRedisBase<
86
86
  captchaReserveLua,
87
87
  [id, keys.pointer, keys.cooldown, ...keys.budgets],
88
88
  [id, JSON.stringify(policy), JSON.stringify(data)],
89
- )) as [number, string, number, number];
89
+ )) as [number, string, number, number, number];
90
90
  if (result[0] === -1) throw new Error('captcha identity collision');
91
91
  if (result[0] === 0) {
92
- return { reserved: false as const, retryAt: result[2], resendAt: result[3] };
92
+ return {
93
+ reserved: false as const,
94
+ retryAt: result[2],
95
+ resendAt: result[3],
96
+ serverNow: result[4],
97
+ };
93
98
  }
94
99
  if (result[0] !== 1 || !result[1]) throw new Error('invalid captcha reservation');
95
100
  return {
96
101
  reserved: true as const,
97
102
  snapshot: { raw: result[1], data: JSON.parse(result[1]) as ICaptchaDataCache },
103
+ serverNow: result[4],
98
104
  };
99
105
  }
100
106
 
@@ -102,13 +108,12 @@ export class CacheRedisCaptcha extends ServiceCacheRedisBase<
102
108
  this._validateBoundId(id);
103
109
  const scope = snapshot.data.bound!.scope;
104
110
  const pointer = `${this.boundPrefix()}current:${scope}`;
105
- return (
106
- (await this._eval(
107
- captchaFinalizeLua,
108
- [id, pointer],
109
- [snapshot.raw, id, data === undefined ? '' : JSON.stringify(data)],
110
- )) === 1
111
- );
111
+ const result = (await this._eval(
112
+ captchaFinalizeLua,
113
+ [id, pointer],
114
+ [snapshot.raw, id, data === undefined ? '' : JSON.stringify(data)],
115
+ )) as [number, number];
116
+ return { finalized: result[0] === 1, serverNow: result[1] };
112
117
  }
113
118
 
114
119
  /** -1 asks the verifier to reread a competing wrong-attempt update. */
@@ -31,8 +31,8 @@ for i, budget in ipairs(policy.budgets) do
31
31
  counters[i] = { value = value, deadline = deadline }
32
32
  if value >= budget.limit and deadline > retryAt then retryAt = deadline end
33
33
  end
34
- if retryAt > now then return { 0, '', retryAt, cooldown } end
35
- if redis.call('EXISTS', KEYS[1]) == 1 then return { -1 } end
34
+ if retryAt > now then return { 0, '', retryAt, cooldown, now } end
35
+ if redis.call('EXISTS', KEYS[1]) == 1 then return { -1, '', 0, 0, now } end
36
36
  local data = cjson.decode(ARGV[3])
37
37
  data.bound.expiresAt = now + policy.ttl
38
38
  data.bound.resendAt = now + policy.cooldown
@@ -49,23 +49,23 @@ if policy.cooldown > 0 then
49
49
  redis.call('SET', KEYS[3], tostring(data.bound.resendAt))
50
50
  redis.call('PEXPIREAT', KEYS[3], data.bound.resendAt)
51
51
  end
52
- return { 1, raw, data.bound.expiresAt, data.bound.resendAt }
52
+ return { 1, raw, data.bound.expiresAt, data.bound.resendAt, now }
53
53
  `;
54
54
 
55
55
  export const captchaFinalizeLua = `
56
- local current = redis.call('GET', KEYS[1])
57
- if current ~= ARGV[1] or redis.call('GET', KEYS[2]) ~= ARGV[2] then return 0 end
58
- local data = cjson.decode(current)
59
56
  local time = redis.call('TIME')
60
57
  local now = tonumber(time[1]) * 1000 + math.floor(tonumber(time[2]) / 1000)
61
- if data.bound.state ~= 'pending' or data.bound.expiresAt <= now then return 0 end
58
+ local current = redis.call('GET', KEYS[1])
59
+ if current ~= ARGV[1] or redis.call('GET', KEYS[2]) ~= ARGV[2] then return { 0, now } end
60
+ local data = cjson.decode(current)
61
+ if data.bound.state ~= 'pending' or data.bound.expiresAt <= now then return { 0, now } end
62
62
  if ARGV[3] == '' then
63
63
  redis.call('DEL', KEYS[1])
64
64
  else
65
65
  redis.call('SET', KEYS[1], ARGV[3])
66
66
  redis.call('PEXPIREAT', KEYS[1], data.bound.expiresAt)
67
67
  end
68
- return 1
68
+ return { 1, now }
69
69
  `;
70
70
 
71
71
  // Verification happens in the provider. Only the caller holding this exact active
@@ -25,6 +25,7 @@ export interface ICaptchaData {
25
25
  token?: unknown;
26
26
  payload: unknown;
27
27
  status?: 'accepted' | 'rejected' | 'unknown' | 'limited';
28
+ serverNow?: number;
28
29
  expiresAt?: number;
29
30
  resendAt?: number;
30
31
  retryAt?: number;
@@ -50,7 +50,7 @@ export interface ICaptchaProviderData<TOKEN = unknown, PAYLOAD = unknown> {
50
50
  token: TOKEN;
51
51
  payload: PAYLOAD;
52
52
  outcome?: 'accepted' | 'rejected' | 'unknown';
53
- /** Bound providers alone decide whether their actual transport may expose the token. */
53
+ /** Bound providers authorize transport disclosure subject to captcha.showToken. */
54
54
  exposeToken?: boolean;
55
55
  }
56
56