@decaf-ts/for-fabric 0.1.41 → 0.1.42
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.
- package/dist/for-fabric.cjs +1 -1
- package/dist/for-fabric.cjs.map +1 -1
- package/dist/for-fabric.js +1 -1
- package/dist/for-fabric.js.map +1 -1
- package/lib/client/FabricClientAdapter.cjs +7 -1
- package/lib/client/FabricClientAdapter.js.map +1 -1
- package/lib/contract/BatchContract.cjs +30 -0
- package/lib/contract/BatchContract.d.ts +5 -0
- package/lib/contract/BatchContract.js.map +1 -0
- package/lib/contract/ProductContract.cjs +1 -4
- package/lib/contract/ProductContract.d.ts +1 -1
- package/lib/contract/ProductContract.js.map +1 -1
- package/lib/contract/index.cjs +2 -0
- package/lib/contract/index.js.map +1 -1
- package/lib/contract/models/Audit.cjs +83 -0
- package/lib/contract/models/Audit.d.ts +12 -0
- package/lib/contract/models/Audit.js.map +1 -0
- package/lib/contract/models/BaseIdentifiedModel.cjs +37 -0
- package/lib/contract/models/BaseIdentifiedModel.d.ts +7 -0
- package/lib/contract/models/BaseIdentifiedModel.js.map +1 -0
- package/lib/contract/models/BaseModel.cjs +42 -0
- package/lib/contract/models/BaseModel.d.ts +7 -0
- package/lib/contract/models/BaseModel.js.map +1 -0
- package/lib/contract/models/Batch.cjs +174 -0
- package/lib/contract/models/Batch.d.ts +18 -0
- package/lib/contract/models/Batch.js.map +1 -0
- package/lib/contract/models/Leaflet.cjs +95 -0
- package/lib/contract/models/Leaflet.d.ts +12 -0
- package/lib/contract/models/Leaflet.js.map +1 -0
- package/lib/contract/models/LeafletFile.cjs +58 -0
- package/lib/contract/models/LeafletFile.d.ts +9 -0
- package/lib/contract/models/LeafletFile.js.map +1 -0
- package/lib/contract/models/Market.cjs +75 -0
- package/lib/contract/models/Market.d.ts +12 -0
- package/lib/contract/models/Market.js.map +1 -0
- package/lib/contract/models/Product.cjs +77 -0
- package/lib/contract/models/Product.d.ts +15 -0
- package/lib/contract/models/Product.js.map +1 -0
- package/lib/contract/models/ProductStrength.cjs +60 -0
- package/lib/contract/models/ProductStrength.d.ts +10 -0
- package/lib/contract/models/ProductStrength.js.map +1 -0
- package/lib/contract/models/constants.cjs +30 -0
- package/lib/contract/models/constants.d.ts +24 -0
- package/lib/contract/models/constants.js.map +1 -0
- package/lib/contract/models/decorators.cjs +54 -0
- package/lib/contract/models/decorators.d.ts +8 -0
- package/lib/contract/models/decorators.js.map +1 -0
- package/lib/contract/models/gtin.cjs +88 -0
- package/lib/contract/models/gtin.d.ts +8 -0
- package/lib/contract/models/gtin.js.map +1 -0
- package/lib/contracts/ContractAdapter.cjs +1 -7
- package/lib/contracts/ContractAdapter.d.ts +0 -6
- package/lib/contracts/ContractAdapter.js.map +1 -1
- package/lib/contracts/FabricContractPaginator.js.map +1 -1
- package/lib/contracts/FabricContractRepository.cjs +0 -46
- package/lib/contracts/FabricContractRepository.d.ts +1 -1
- package/lib/contracts/FabricContractRepository.js.map +1 -1
- package/lib/contracts/FabricContractSequence.cjs +93 -58
- package/lib/contracts/FabricContractSequence.d.ts +2 -2
- package/lib/contracts/FabricContractSequence.js.map +1 -1
- package/lib/contracts/crud/serialized-crud-contract.cjs +4 -1
- package/lib/contracts/crud/serialized-crud-contract.js.map +1 -1
- package/lib/contracts/index.cjs +0 -1
- package/lib/contracts/index.d.ts +0 -1
- package/lib/contracts/index.js.map +1 -1
- package/lib/esm/client/FabricClientAdapter.js +8 -2
- package/lib/esm/client/FabricClientAdapter.js.map +1 -1
- package/lib/esm/contract/BatchContract.d.ts +5 -0
- package/lib/esm/contract/BatchContract.js +27 -0
- package/lib/esm/contract/BatchContract.js.map +1 -0
- package/lib/esm/contract/ProductContract.d.ts +1 -1
- package/lib/esm/contract/ProductContract.js +1 -4
- package/lib/esm/contract/ProductContract.js.map +1 -1
- package/lib/esm/contract/index.js +2 -0
- package/lib/esm/contract/index.js.map +1 -1
- package/lib/esm/contract/models/Audit.d.ts +12 -0
- package/lib/esm/contract/models/Audit.js +80 -0
- package/lib/esm/contract/models/Audit.js.map +1 -0
- package/lib/esm/contract/models/BaseIdentifiedModel.d.ts +7 -0
- package/lib/esm/contract/models/BaseIdentifiedModel.js +34 -0
- package/lib/esm/contract/models/BaseIdentifiedModel.js.map +1 -0
- package/lib/esm/contract/models/BaseModel.d.ts +7 -0
- package/lib/esm/contract/models/BaseModel.js +39 -0
- package/lib/esm/contract/models/BaseModel.js.map +1 -0
- package/lib/esm/contract/models/Batch.d.ts +18 -0
- package/lib/esm/contract/models/Batch.js +171 -0
- package/lib/esm/contract/models/Batch.js.map +1 -0
- package/lib/esm/contract/models/Leaflet.d.ts +12 -0
- package/lib/esm/contract/models/Leaflet.js +92 -0
- package/lib/esm/contract/models/Leaflet.js.map +1 -0
- package/lib/esm/contract/models/LeafletFile.d.ts +9 -0
- package/lib/esm/contract/models/LeafletFile.js +55 -0
- package/lib/esm/contract/models/LeafletFile.js.map +1 -0
- package/lib/esm/contract/models/Market.d.ts +12 -0
- package/lib/esm/contract/models/Market.js +72 -0
- package/lib/esm/contract/models/Market.js.map +1 -0
- package/lib/esm/contract/models/Product.d.ts +15 -0
- package/lib/esm/contract/models/Product.js +74 -0
- package/lib/esm/contract/models/Product.js.map +1 -0
- package/lib/esm/contract/models/ProductStrength.d.ts +10 -0
- package/lib/esm/contract/models/ProductStrength.js +57 -0
- package/lib/esm/contract/models/ProductStrength.js.map +1 -0
- package/lib/esm/contract/models/constants.d.ts +24 -0
- package/lib/esm/contract/models/constants.js +27 -0
- package/lib/esm/contract/models/constants.js.map +1 -0
- package/lib/esm/contract/models/decorators.d.ts +8 -0
- package/lib/esm/contract/models/decorators.js +48 -0
- package/lib/esm/contract/models/decorators.js.map +1 -0
- package/lib/esm/contract/models/gtin.d.ts +8 -0
- package/lib/esm/contract/models/gtin.js +82 -0
- package/lib/esm/contract/models/gtin.js.map +1 -0
- package/lib/esm/contracts/ContractAdapter.d.ts +0 -6
- package/lib/esm/contracts/ContractAdapter.js +1 -7
- package/lib/esm/contracts/ContractAdapter.js.map +1 -1
- package/lib/esm/contracts/FabricContractPaginator.js.map +1 -1
- package/lib/esm/contracts/FabricContractRepository.d.ts +1 -1
- package/lib/esm/contracts/FabricContractRepository.js +1 -47
- package/lib/esm/contracts/FabricContractRepository.js.map +1 -1
- package/lib/esm/contracts/FabricContractSequence.d.ts +2 -2
- package/lib/esm/contracts/FabricContractSequence.js +93 -58
- package/lib/esm/contracts/FabricContractSequence.js.map +1 -1
- package/lib/esm/contracts/crud/serialized-crud-contract.js +4 -1
- package/lib/esm/contracts/crud/serialized-crud-contract.js.map +1 -1
- package/lib/esm/contracts/index.d.ts +0 -1
- package/lib/esm/contracts/index.js +0 -1
- package/lib/esm/contracts/index.js.map +1 -1
- package/lib/esm/shared/errors.d.ts +9 -0
- package/lib/esm/shared/errors.js +15 -0
- package/lib/esm/shared/errors.js.map +1 -1
- package/lib/esm/version.d.ts +1 -1
- package/lib/esm/version.js +1 -1
- package/lib/shared/errors.cjs +19 -1
- package/lib/shared/errors.d.ts +9 -0
- package/lib/shared/errors.js.map +1 -1
- package/lib/version.cjs +1 -1
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
package/dist/for-fabric.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{CouchDBStatement as t,CouchDBKeys as e,CouchDBGroupOperator as i,CouchDBOperator as r,CouchDBPaginator as s,CouchDBAdapter as n}from"@decaf-ts/for-couchdb";import{Model as a,JSONSerializer as o,ModelKeys as c,ValidationKeys as l,required as u,model as p}from"@decaf-ts/decorator-validation";import{Context as g,ObserverHandler as h,Adapter as d,Repository as y,QueryError as w,PreparedStatementKeys as f,PersistenceKeys as m,Condition as x,Sequence as b,SequenceModel as S,UUID as A,Serial as v,UnsupportedError as C,PagingError as k,OrderDirection as N,MigrationError as O,ObserverError as R,AuthorizationError as z,ForbiddenError as P,ConnectionError as $,pk as E,column as T,table as B,BaseModel as D}from"@decaf-ts/core";import{OperationKeys as I,BulkCrudOperationKeys as F,InternalError as _,enforceDBDecorators as j,reduceErrorsToPrint as J,ValidationError as q,BaseError as L,DBKeys as M,NotFoundError as U,ConflictError as H,SerializationError as Q,BadRequestError as V,onCreate as K,onCreateUpdate as Y}from"@decaf-ts/db-decorators";import{Property as G,Object as W,Contract as X,Context as Z,Transaction as tt}from"fabric-contract-api";import{Metadata as et,Decoration as it,propMetadata as rt}from"@decaf-ts/decoration";import{Logging as st,MiniLogger as nt,NumericLogLevels as at,LogLevel as ot}from"@decaf-ts/logging";import{__decorate as ct,__metadata as lt}from"tslib";class ut extends g{constructor(){super()}get stub(){return this.get("stub")}get timestamp(){return this.stub.getDateTimestamp()}get identity(){return this.get("identity")}toString(){return"fabric ctx"+(this.stub?" with stub":"without stub")}}class pt extends h{constructor(t=[I.CREATE,I.UPDATE,I.DELETE,F.CREATE_ALL,F.UPDATE_ALL,F.DELETE_ALL]){super(),this.supportedEvents=t}async updateObservers(t,e,i,...r){const{log:s,ctx:n}=d.logCtx(r,this.updateObservers),{stub:a}=n,[o,c]=r,l="string"==typeof t?t:t.name;if(-1!==this.supportedEvents.indexOf(e)){s.debug(`Emitting ${e} event`);const t=((t,e,i)=>{const r=[t,e];return i&&r.push(i),r.join("_")})(l,e,o);a.setEvent(t,Buffer.from(JSON.stringify({id:i})))}else a.setEvent(e,Buffer.from(JSON.stringify(c)))}}class gt extends y{constructor(t,e,i){super(t,e),this.trackedEvents=i,this._overrides=Object.assign({},super._overrides,{ignoreValidation:!1,ignoreHandlers:!1,allowRawStatements:!0,forcePrepareSimpleQueries:!1,forcePrepareComplexQueries:!1})}async createAllPrefix(t,...e){const i=await g.args(I.CREATE,this.class,e,this.adapter,this._overrides||{}),r=i.context.logger.for(this.createAllPrefix),s=i.context.get("ignoreHandlers"),n=i.context.get("ignoreValidation");if(!t.length)return[t,...i.args];const o=a.sequenceFor(t[0]);r.info("Sequence options: "+JSON.stringify(o));let c=[];if(o.type?(o.name||(o.name=a.sequenceName(t[0],"pk")),c=await(await this.adapter.Sequence(o)).range(t.length,...i.args),r.info("Sequence ids: "+c)):c=t.map((t,e)=>{if(void 0===t[this.pk])throw new _("Primary key is not defined for model in position "+e);return t[this.pk]}),t=await Promise.all(t.map(async(t,e)=>(t=new this.class(t),o.type&&(t[this.pk]="String"!==o.type||o.generated?c[e]:""+t[this.pk]),r.info("Creating model "+JSON.stringify(t)),s||await j(this,i.context,t,I.CREATE,I.ON),t))),!n){const e=i.context.get("ignoredValidationProperties")||[],r=await Promise.all(t.map(t=>Promise.resolve(t.hasErrors(...e)))),s=J(r);if(s)throw new q(s)}return[t,...i.args]}async paginateBy(t,e,i={offset:1,limit:10},...r){let{offset:s,bookmark:n,limit:o}=i;if(!s&&!n)throw new w("PaginateBy needs a page or a bookmark");const c=await g.args(f.PAGE_BY,this.class,r,this.adapter,this._overrides||{}),{log:l,ctxArgs:u}=this.logCtx(c.args,this.paginateBy);let p;if(l.verbose(`paginating ${a.tableName(this.class)} with page size ${o}`),n)p=await this.override({forcePrepareComplexQueries:!1,forcePrepareSimpleQueries:!1}).select().where(this.attr(a.pk(this.class)).gt(n)).orderBy([t,e]).paginate(o,...u),s=1;else{if(!s)throw new w("PaginateBy needs a page or a bookmark");p=await this.override({forcePrepareComplexQueries:!1,forcePrepareSimpleQueries:!1}).select().orderBy([t,e]).paginate(o,...u)}const h=await p.page(s,...u);return p.serialize(h)}async statement(t,...e){if(!y.statements(this,t))throw new w("Invalid prepared statement requested "+t);const i=await g.args(m.STATEMENT,this.class,e,this.adapter,this._overrides||{});i.context.logger&&i.context.logger.info(`Repo statement: ${t} + ${e}`);const{log:r,ctxArgs:s}=this.logCtx(i.args,this.statement);let n;r.verbose(`Executing prepared statement ${t} with args ${s}`);try{n=await this[t](...s)}catch(e){if(e instanceof L)throw e;throw new _(`Failed to execute prepared statement ${t} with args ${s}: ${e}`)}return n}ObserverHandler(){return new pt}async updateObservers(t,e,i,...r){if(!this.trackedEvents||-1!==this.trackedEvents.indexOf(e))return await super.updateObservers(t,e,i,...r)}}class ht extends t{constructor(t){super(t)}async raw(t,...e){const{ctx:i}=this.logCtx(e,this.raw),r=await this.adapter.raw(t,!0,i),s=a.pk(this.fromSelector),n=et.get(this.fromSelector,et.key(M.ID,s))?.type;return this.selectSelector?r:r.map(t=>this.processRecord(t,s,n,i))}build(){const t={};t[e.TABLE]={},t[e.TABLE]=a.tableName(this.fromSelector);const s={selector:t};if(this.selectSelector&&(s.fields=this.selectSelector),this.whereCondition){const t=this.parseCondition(x.and(this.whereCondition,x.attribute(e.TABLE).eq(s.selector[e.TABLE]))).selector,r=Object.keys(t);if(1===r.length&&-1!==Object.values(i).indexOf(r[0]))switch(r[0]){case i.AND:t[i.AND]=[...Object.values(t[i.AND]).reduce((t,e)=>{const r=Object.keys(e);if(1!==r.length)throw Error("Too many keys in query selector. should be one");const s=r[0];return s===i.AND?t.push(...e[s]):t.push(e),t},[])],s.selector=t;break;case i.OR:{const e={};e[i.AND]=[t,...Object.entries(s.selector).map(([t,e])=>{const i={};return i[t]=e,i})],s.selector=e;break}default:throw Error("This should be impossible")}else Object.entries(t).forEach(([t,e])=>{s.selector[t],s.selector[t]=e})}if(this.orderBySelector){s.sort=s.sort||[],s.selector=s.selector||{};const[t,e]=this.orderBySelector,i={};i[t]=e,s.sort.push(i),s.selector[t]||(s.selector[t]={},s.selector[t][r.BIGGER]=null)}return this.limitSelector&&(s.limit=this.limitSelector),this.offsetSelector&&(s.skip=this.offsetSelector),s}}var dt,yt;(t=>{t.PRIVATE="private",t.SHARED="shared",t.FABRIC="fabric.",t.OWNEDBY="owned-by",t.TRANSACTION_ID="transaction-id"})(dt||(dt={})),(t=>{t.X509="X.509"})(yt||(yt={}));const wt="hlf-fabric";class ft extends o{constructor(){super()}deserialize(t,e){return JSON.parse(t)}serialize(t,e=!0){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(t,e)))}preSerialize(t,e=!0){const i=Object.assign({},t);let r;try{r=et.modelName(t.constructor)}catch(t){r=void 0}function s(t){return"object"!=typeof t?t:Array.isArray(t)?t.map(s):this.preSerialize(t)}return e&&(i[c.ANCHOR]=r||t.constructor.name),a.relations(t).forEach(t=>{i[t]=s.call(this,i[t])}),i}}class mt extends nt{constructor(t,e,i){super(t,e),this.logger=i?i.logging.getLogger(t):new nt(t,e)}log(t,e,i){if(at[this.config("level")]<at[t])return;let r;switch(t){case ot.info:r=this.logger.info;break;case ot.verbose:r=this.logger.verbose;break;case ot.debug:r=this.logger.debug;break;case ot.error:r=this.logger.error;break;case ot.silly:r=this.logger.silly;break;default:throw new _("Invalid log level")}r.call(this.logger,this.createLog(t,e,i))}}st.setFactory((t,e,i)=>new mt(t||mt.name,e||{},i));class xt extends b{constructor(t,e){super(t,e)}async current(...t){const e=(await g.args(I.READ,S,t,this.adapter)).context,{name:i,startWith:r}=this.options;try{const t=await this.repo.read(i,e);return this.parse(t.current)}catch(t){if(t instanceof U){if(void 0===r)throw new _("Starting value is not defined for a non existing sequence");try{return this.parse(r)}catch(t){throw new _(`Failed to parse initial value for sequence ${r}: ${t}`)}}throw new _(`Failed to retrieve current value for sequence ${i}: ${t}`)}}async increment(t,e,i){const{type:r,incrementBy:s,name:n}=this.options;let a;const o=e||s;if(o%s!==0)throw new _("Value to increment does not consider the incrementBy setting: "+s);switch("function"==typeof r&&r?.name?r.name:r){case Number.name:a=this.parse(t)+o;break;case BigInt.name:a=this.parse(t)+BigInt(o);break;case String.name:a=this.parse(t);break;case"serial":a=v.instance.generate(t);break;case"uuid":a=A.instance.generate(t);break;default:throw new _("Should never happen")}let c;try{c=await this.repo.update(new S({id:n,current:a}),i)}catch(s){if(!(s instanceof U))throw s;try{c=await this.repo.create(new S({id:n,current:a}),i)}catch(s){if(!(s instanceof H)||"uuid"!==r)throw s;return this.increment(t,e,i)}}return c.current}async next(...t){const e=await g.args(I.UPDATE,S,t,this.adapter),{context:i,args:r}=e,s=await this.current(...r);return this.increment(s,void 0,i)}async range(t,...e){const i=await g.args(I.UPDATE,S,e,this.adapter),{context:r,args:s}=i,n=await this.current(...s),a=this.parse(this.options.incrementBy),o=await this.increment(n,this.parse(t)*a,r),c=[];for(let e=1;t>=e;e++)c.push(n+a*this.parse(e));if("uuid"===this.options.type||"serial"===this.options.type)throw new C(`type ${this.options.type} is currently not suppported for this adapter`);const l="function"==typeof this.options.type&&this.options.type?.name?this.options.type.name:this.options.type;if(c[c.length-1]!==o&&"String"!==l)throw new _("Miscalculation of range");return c}}class bt extends s{constructor(t,e,i,r){super(t,e,i,r)}prepare(t){const e=Object.assign({},t);return e.limit&&(this.limit=e.limit),e.limit=this.size,e}async page(t=1,...e){const{ctxArgs:i,ctx:r}=this.adapter.logCtx(e,this.page);if(this.isPreparedStatement())return this.pagePrepared(t,...i);const s=Object.assign({},this.statement);if(!this._recordCount||!this._totalPages){this._totalPages=this._recordCount=0;const t=await this.adapter.raw({...s,limit:void 0},!0,r)||[];if(this._recordCount=t.length,this._recordCount>0){const t=s?.limit||this.size;this._totalPages=Math.ceil(this._recordCount/t)}}if(this.validatePage(t),1!==t){if(!this._bookmark)throw new k("No bookmark. Did you start in the first page?");s.bookmark=this._bookmark}const n=await this.adapter.raw(s,!1,r);if(!this.clazz)throw new k("No statement target defined");const o=a.pk(this.clazz),c=et.get(this.clazz,et.key(M.ID,o))?.type,l=s.fields&&s.fields.length?n:n.map(t=>this.adapter.revert(t,this.clazz,b.parseValue(c,t[o]),void 0,r)),u=s.sort?.[0]||N.DSC;return this._bookmark=l[u===N.ASC?l.length-1:0][o],this._currentPage=t,l}}class St extends _{constructor(t){super(t,St.name)}}class At extends _{constructor(t){super(t,At.name)}}class vt extends _{constructor(t){super(t,vt.name)}}class Ct extends _{constructor(t){super(t,Ct.name,500)}}class kt extends L{constructor(t){super(kt.name,t,409)}}async function Nt(t,e,i,r){try{const e=t.get("identity");r[i]=e.getID()}catch(t){throw new C("No User found in context. Please provide a user in the context")}}async function Ot(t,e,i,r){if(!e.type||r[i])return;let s;e.name||(e.name=a.sequenceName(r,"pk"));try{s=await this.adapter.Sequence(e)}catch(t){throw new _(`Failed to instantiate Sequence ${e.name}: ${t}`)}const n=await s.next(t);Object.defineProperty(r,i,{enumerable:!0,writable:!1,configurable:!0,value:n})}class Rt extends n{getClient(){throw new C("Client is not supported in Fabric contracts")}static{this.textDecoder=new TextDecoder("utf8")}static{this.serializer=new ft}repository(){return gt}Paginator(t,e,i){return new bt(this,t,e,i)}async Sequence(t){return new xt(t,this)}constructor(t,e){super(t,wt,e),this.Context=ut}for(t,...e){return super.for(t,...e)}async create(t,e,i,...r){const{ctx:s,log:n}=this.logCtx(r,this.create);n.info("in ADAPTER create with args "+r);const o=a.tableName(t);try{n.info(`adding entry to ${o} table with pk ${e}`);const t=s.stub.createCompositeKey(o,[e+""]);i=await this.putState(t,i,s)}catch(t){throw this.parseError(t)}return i}async read(t,e,...i){const{ctx:r,log:s}=this.logCtx(i,this.read);s.info("in ADAPTER read with args "+i);const n=a.tableName(t);let o;try{const t=r.stub.createCompositeKey(n,[e+""]);o=await this.readState(t,r)}catch(t){throw this.parseError(t)}return o}async update(t,e,i,...r){const{ctx:s,log:n}=this.logCtx(r,this.update),o=a.tableName(t);try{n.verbose(`updating entry to ${o} table with pk ${e}`);const t=s.stub.createCompositeKey(o,[e+""]);i=await this.putState(t,i,s)}catch(t){throw this.parseError(t)}return i}async delete(t,e,...i){const{ctx:r,log:s,ctxArgs:n}=this.logCtx(i,this.delete),o=a.tableName(t);let c;try{const i=r.stub.createCompositeKey(o,[e+""]);c=await this.read(t,e,...n),s.verbose(`deleting entry with pk ${e} from ${o} table`),await this.deleteState(i,r)}catch(t){throw this.parseError(t)}return c}async deleteState(t,e){const{ctx:i}=this.logCtx([e],this.deleteState);await i.stub.deleteState(t)}forPrivate(t){const e=[this.putState,this.readState,this.deleteState,this.queryResult,this.queryResultPaginated].map(t=>t.name);return new Proxy(this,{get:(i,r,s)=>e.includes(r)?new Proxy(i[r],{async apply(e,i,s){switch(r){case"putState":{const[e,i,r]=s;return await e.putPrivateData(t,i.toString(),r),r}case"deleteState":{const[e,i]=s;return e.deletePrivateData(t,i)}case"readState":{const[e,i]=s;return e.getPrivateData(t,i)}case"queryResult":{const[e,i]=s;return e.getPrivateDataQueryResult(t,i)}case"queryResultPaginated":{const[e,i,r,n]=s,a=await e.getPrivateDataQueryResult(t,i),o=[];let c=0,l=!n,u=null;for(;;){const t=await a.next();if(t.value&&t.value.value.toString()){const e=t.value.key,i=t.value.value.toString("utf8");if(!l){e===n?.toString()&&(l=!0);continue}if(o.push({Key:e,Record:JSON.parse(i)}),u=e,c++,c>=r)return await a.close(),{iterator:o,metadata:{fetchedRecordsCount:o.length,bookmark:u}}}if(t.done)return await a.close(),{iterator:o,metadata:{fetchedRecordsCount:o.length,bookmark:""}}}}default:throw new _("Unsupported method override "+r)}}}):Reflect.get(i,r,s)})}async putState(t,e,i){let r;const{log:s}=this.logCtx([i],this.putState);try{r=Buffer.from(Rt.serializer.serialize(e,!1))}catch(e){throw new Q(`Failed to serialize record with id ${t}: ${e}`)}const n=i.get("segregated");return n?await i.stub.putPrivateData(n,t.toString(),r):await i.stub.putState(t.toString(),r),s.silly(`state stored${n?` in ${n} collection`:""} under id ${t}`),e}async readState(t,e){let i;const{log:r}=this.logCtx([e],this.readState);let s;const n=e.get("segregated");if(s=n?(await e.stub.getPrivateData(n,t.toString())).toString():(await e.stub.getState(t.toString())).toString(),!s)throw new U(`Record with id ${t}${n?` in ${n} collection`:""} not found`);r.silly(`state retrieved from${n?` ${n} collection`:""} under id ${t}`);try{i=Rt.serializer.deserialize(s.toString())}catch(t){throw new Q("Failed to parse record: "+t)}return i}async queryResult(t,e,...i){const{ctx:r}=this.logCtx(i,this.readState);let s;const n=r.get("segregated");return s=n?await r.stub.getPrivateDataQueryResult(n,JSON.stringify(e)):await t.getQueryResult(JSON.stringify(e)),s}async queryResultPaginated(t,e,i=250,r,...s){const{ctx:n}=this.logCtx(s,this.readState);let a;const o=n.get("segregated");return o?(e.selector={...e.selector,_id:r?{$gt:r.toString()}:{$gte:""}},a={iterator:await t.getPrivateDataQueryResult(o,JSON.stringify(e)),metadata:{fetchedRecordsCount:i,bookmark:""}}):a=await t.getQueryResultWithPagination(JSON.stringify(e),i,r?.toString()),a}mergeModels(t){const e=t=>Object.entries(t).reduce((t,[e,i])=>(void 0!==i&&(t[e]=i),t),{});let i=t.pop();for(const r of t)i=Object.assign({},e(i),e(r));return i}decode(t){return Rt.textDecoder.decode(t)}async flags(t,e,i,r,...s){const n={stub:r.stub,segregated:!1};return Object.assign(n,r instanceof ut?{logger:r.logger,identity:r.identity,correlationId:r.stub.getTxID()}:{identity:r.clientIdentity,logger:new mt(this,void 0,r),correlationId:r.stub.getTxID()}),await super.flags(t,e,n,...s)}index(t){return Promise.resolve(void 0)}async resultIterator(t,e,i=!1){const r=[];let s=await e.next();for(;!s.done;){if(s.value&&s.value.value.toString()){let e={};if(t.debug(s.value.value.toString("utf8")),i){e.TxId=s.value.txId,e.Timestamp=s.value.timestamp;try{e.Value=JSON.parse(s.value.value.toString("utf8"))}catch(i){t.error(i),e.Value=s.value.value.toString("utf8")}}else try{e=JSON.parse(s.value.value.toString("utf8"))}catch(i){t.error(i),e=s.value.value.toString("utf8")}r.push(e)}s=await e.next()}return t.debug(`Closing iterator after ${r.length} results`),e.close(),r}async raw(t,e=!0,...i){const{log:r,stub:s,ctx:n}=this.logCtx(i,this.raw),{skip:a,limit:o}=t;let c;o||a?(delete t.limit,delete t.skip,r.debug(`Retrieving paginated iterator: limit: ${o}/ skip: ${a}`),c=(await this.queryResultPaginated(s,t,o||250,a?.toString(),n)).iterator):(r.debug("Retrieving iterator"),c=await this.queryResult(s,t,n)),r.debug("Iterator acquired");const l=await this.resultIterator(r,c);return r.debug(`returning ${Array.isArray(l)?l.length:1} results`),l}Statement(){return new ht(this)}async createAll(t,e,i,...r){if(e.length!==i.length)throw new _("Ids and models must have the same length");const{log:s,ctxArgs:n}=this.logCtx(r,this.createAll),o=a.tableName(t);return s.debug(`Creating ${e.length} entries ${o} table`),Promise.all(e.map((e,r)=>this.create(t,e,i[r],...n)))}async updateAll(t,e,i,...r){if(e.length!==i.length)throw new _("Ids and models must have the same length");const{log:s,ctxArgs:n}=this.logCtx(r,this.updateAll),o=a.tableName(t);return s.debug(`Updating ${e.length} entries ${o} table`),Promise.all(e.map((e,r)=>this.update(t,e,i[r],...n)))}prepare(t,...e){const{log:i}=this.logCtx(e,this.prepare),r=a.tableName(t.constructor),s=a.pk(t.constructor),n=a.segregate(t),o=Object.entries(n.model).reduce((e,[i,r])=>{if(void 0===r)return e;const s=a.columnName(t,i);if(this.isReserved(s))throw new _(`Property name ${s} is reserved`);return e[s]=r,e},{});return i.silly(`Preparing record for ${r} table with pk ${t[s]}`),{record:o,id:t[s],transient:n.transient}}revert(t,e,i,r,...s){const{log:n}=this.logCtx(s,this.revert),o={};o[a.pk(e)]=i;const c="string"==typeof e?a.build(o,e):new e(o);n.silly(`Rebuilding model ${c.constructor.name} id ${i}`);const l=Object.keys(c).reduce((e,i)=>(e[i]=t[a.columnName(e,i)],e),c);return r&&(n.debug("re-adding transient properties: "+Object.keys(r).join(", ")),Object.entries(r).forEach(([t,e])=>{if(t in l&&void 0!==l[t])throw new _(`Transient property ${t} already exists on model ${c.constructor.name}. should be impossible`);l[t]=e})),l}createPrefix(t,i,r,...s){const{ctxArgs:n}=this.logCtx(s,this.createPrefix),o={};return o[e.TABLE]=a.tableName(t),Object.assign(o,r),[t,i,o,...n]}updatePrefix(t,i,r,...s){const{ctxArgs:n}=this.logCtx(s,this.updatePrefix),o={};return o[e.TABLE]=a.tableName(t),Object.assign(o,r),[t,i,o,...n]}createAllPrefix(t,i,r,...s){if(i.length!==r.length)throw new _("Ids and models must have the same length");const n=s.pop(),o=i.map((i,s)=>{const n={};return n[e.TABLE]=a.tableName(t),Object.assign(n,r[s]),n});return[t,i,o,n]}updateAllPrefix(t,i,r,...s){if(i.length!==r.length)throw new _("Ids and models must have the same length");const n=s.pop(),o=i.map((i,s)=>{const n={};return n[e.TABLE]=a.tableName(t),Object.assign(n,r[s]),n});return[t,i,o,n]}parseError(t,e){return Rt.parseError(e||t)}logCtx(t,e){return Rt.logCtx.call(this,t,e)}static logCtx(t,e){if(1>t.length)throw new _("No context provided");const i=t.pop();if(!(i instanceof g))throw new _("No context provided");if(t.filter(t=>t instanceof g).length>1)throw Error("here");const r=this?i.logger.for(this).for(e):i.logger.clear().for(this).for(e);return{ctx:i,log:e?r.for(e):r,stub:i.stub,identity:i.identity,ctxArgs:[...t,i]}}static parseError(t){const e="string"==typeof t?t:t.message;return e.includes(U.name)?new U(t):e.includes(H.name)?new H(t):e.includes(V.name)?new V(t):e.includes(w.name)?new w(t):e.includes(k.name)?new k(t):e.includes(C.name)?new C(t):e.includes(O.name)?new O(t):e.includes(R.name)?new R(t):e.includes(z.name)?new z(t):e.includes(P.name)?new P(t):e.includes($.name)?new $(t):e.includes(Q.name)?new Q(t):e.includes("no ledger context")?new Ct("No context found. this can be caused by debugging: "+e):new _(t)}static decoration(){super.decoration(),it.flavouredAs(wt).for(m.CREATED_BY).define(K(Nt),rt(m.CREATED_BY,{})).apply(),it.flavouredAs(wt).for(m.UPDATED_BY).define(Y(Nt),rt(m.UPDATED_BY,{})).apply(),it.flavouredAs(wt).for(m.COLUMN).extend(G()).apply(),it.flavouredAs(wt).for(l.DATE).extend(()=>(t,e)=>{G(e,"string:date")(t,e)}),it.flavouredAs(wt).for(m.TABLE).extend(t=>{const e=[];let i="function"==typeof t?et.constr(t):et.constr(t.constructor);for(;i&&i!==Object&&i.prototype;)e.push(i),i=Object.getPrototypeOf(i);for(;e.length>0;){const t=e.pop();W()(t)}return W()(t)}).apply()}}Rt.decoration(),d.setCurrent(wt);class zt extends o{constructor(){super()}preSerialize(t){const e=Object.assign({},t);let i;try{i=et.modelName(t.constructor)}catch(t){i=void 0}e[c.ANCHOR]=i||t.constructor.name;const r=function t(e){const i=this;return"object"!=typeof e?e:Array.isArray(e)?e.map(e=>t.call(i,e)):this.preSerialize.call(this,e)}.bind(this);return a.relations(t).forEach(t=>{e[t]=r(e[t])}),e}deserialize(t){const e=JSON.parse(t),i=e[c.ANCHOR];if(!i)throw Error("Could not find class reference in serialized model");return a.build(e,i)}serialize(t){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(t)))}}W()(Date);class Pt extends X{static{this.adapter=new Rt}static{this.serializer=new zt}constructor(t,e){super(t),this.clazz=e,this.initialized=!1,this.repo=y.forModel(e)}async listBy(t,e,i,...r){const{ctxArgs:s,log:n}=await this.logCtx([...r,t],this.listBy);return n.info(`Running listBy key ${e}, order ${i} and args ${s}`),this.repo.listBy(e,i,...s)}async paginateBy(t,e,i,r={offset:1,limit:10},...s){const{ctxArgs:n,log:a}=await this.logCtx([...s,t],this.paginateBy);return a.info(`Running paginateBy key ${e}, order ${i} with size ${r.limit} and args ${n}`),this.repo.paginateBy(e,i,r,...n)}async findOneBy(t,e,i,...r){const{ctxArgs:s,log:n}=await this.logCtx([...r,t],this.findOneBy);return n.info(`Running findOneBy key ${e}, value: ${i} with args ${s}`),this.repo.findOneBy(e,i,...s)}async statement(t,e,...i){const{ctxArgs:r,log:s}=await this.logCtx([...i,t],this.statement);return s.info(`Running statement ${e} with args ${r}`),this.repo.statement(e,...r)}async create(t,e,...i){const{log:r,ctxArgs:s}=await this.logCtx([...i,t],this.create);r.info("CONTRACT CREATE, "+s),"string"==typeof e&&(e=this.deserialize(e)),r.info("Creating model: "+JSON.stringify(e));const n=this.getTransientData(t);return r.info("Merging transient data..."),e=a.merge(e,n,this.clazz),this.repo.create(e,...s)}async read(t,e,...i){const{log:r,ctxArgs:s}=await this.logCtx([...i,t],this.read);return r.info(`reading entry with pk ${e} `),this.repo.read(e,...s)}getTransientData(t){const e=t.stub.getTransient();let i={};return e.has(this.repo.tableName)&&(i=JSON.parse(e.get(this.repo.tableName)?.toString("utf8"))),i}async update(t,e,...i){const{log:r,ctxArgs:s}=await this.logCtx([...i,t],this.update);"string"==typeof e&&(e=this.deserialize(e)),r.info("Updating model: "+JSON.stringify(e));const n=this.getTransientData(t);return r.info("Merging transient data..."),e=a.merge(e,n,this.clazz),this.repo.update(e,...s)}async delete(t,e,...i){const{log:r,ctxArgs:s}=await this.logCtx([...i,t],this.delete);return r.info(`deleting entry with pk ${e} `),this.repo.delete(e+"",...s)}async deleteAll(t,e,...i){const{ctxArgs:r}=await this.logCtx([...i,t],this.readAll);return"string"==typeof e&&(e=JSON.parse(e)),this.repo.deleteAll(e,...r)}async readAll(t,e,...i){const{ctxArgs:r}=await this.logCtx([...i,t],this.readAll);return"string"==typeof e&&(e=JSON.parse(e)),this.repo.readAll(e,...r)}async updateAll(t,e,...i){const{log:r,ctxArgs:s}=await this.logCtx([...i,t],this.updateAll);return"string"==typeof e&&(e=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t))),r.info(`updating ${e.length} entries to the table`),this.repo.updateAll(e,...s)}async query(t,e,i,r=N.ASC,s,n,...a){const{ctxArgs:o}=await this.logCtx([...a,t],this.query);return this.repo.query(e,i,r,s,n,...o)}async raw(t,e,i,...r){const{ctxArgs:s}=await this.logCtx([...r,t],this.raw);return Pt.adapter.raw(e,i,...s)}serialize(t){return Pt.serializer.serialize(t)}deserialize(t){return Pt.serializer.deserialize(t)}async init(t){const{log:e}=await this.logCtx([t],this.init);e.info(`Running contract ${this.getName()} initialization...`),this.initialized=!0,e.info("Contract initialization completed.")}async healthcheck(t){const{log:e}=await this.logCtx([t],this.healthcheck);return e.info(`Running Healthcheck: ${this.initialized}...`),{healthcheck:this.initialized}}async createAll(t,e,...i){const{log:r,ctxArgs:s}=await this.logCtx([...i,t],this.createAll);return"string"==typeof e&&(e=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t))),r.info(`adding ${e.length} entries to the table`),this.repo.createAll(e,...s)}async logCtx(t,e){return Pt.logCtx.bind(this)(t,e)}static async logCtx(t,e){if(1>t.length)throw new _("No context provided");const i=t.pop();if(i instanceof ut)return{ctx:i,log:i.logger.clear().for(this).for(e),ctxArgs:[...t,i],stub:i.stub,identity:i.identity};if(!(i instanceof Z))throw new _("No valid context provided");const r={correlationId:i.stub.getTxID()},s=await Pt.adapter.context((()=>{if("string"==typeof e)return e;switch(e.name){case I.CREATE:case I.READ:case I.UPDATE:case I.DELETE:case F.CREATE_ALL:case F.READ_ALL:case F.UPDATE_ALL:case F.DELETE_ALL:}return e.name})(),r,this.clazz,i),n=this?s.logger.for(this).for(e):s.logger.clear().for(this).for(e);return{ctx:s,log:n,stub:s.stub,identity:s.identity,ctxArgs:[...t,s]}}}class $t extends Pt{constructor(t,e){super(t,e)}async create(t,e){const{log:i,ctx:r}=await this.logCtx([t],this.create);i.info("Creating model: "+e);const s=this.deserialize(e);i.info("Model deserialized: "+JSON.stringify(s));const n=await super.create(r,s);return this.serialize(n)}async read(t,e){const{log:i,ctx:r}=await this.logCtx([t],this.read);return i.info("Reading id: "+e),this.serialize(await super.read(r,e))}async update(t,e){const{log:i,ctx:r}=await this.logCtx([t],this.update);return i.info("Updating model: "+e),this.serialize(await super.update(r,e))}async delete(t,e){const{log:i,ctx:r}=await this.logCtx([t],this.delete);return i.info("Deleting id: "+e),this.serialize(await super.delete(r,e))}async deleteAll(t,e){const i=JSON.parse(e),{log:r,ctx:s}=await this.logCtx([t],this.deleteAll);return r.info(`deleting ${i.length} entries from the table`),JSON.stringify((await super.deleteAll(s,i)).map(t=>this.serialize(t)))}async readAll(t,e){const i=JSON.parse(e),{log:r,ctx:s}=await this.logCtx([t],this.readAll);return r.info(`reading ${i.length} entries from the table`),JSON.stringify((await super.readAll(s,i)).map(t=>this.serialize(t)))}async updateAll(t,e){const{log:i,ctx:r}=await this.logCtx([t],this.updateAll),s=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t));return i.info(`Updating ${s.length} entries to the table`),JSON.stringify((await super.updateAll(r,s)).map(t=>this.serialize(t)))}async statement(t,e,i){const{ctx:r,log:s}=await this.logCtx([t],this.statement);try{i=JSON.parse(i)}catch(t){throw new Q("Invalid args: "+t)}if(!Array.isArray(i))throw new Q(`Invalid args: ${JSON.stringify(i)}. must be an array`);return s.info("calling prepared statement "+e),s.info("with args "+i),JSON.stringify(await super.statement(r,e,...i))}async listBy(t,e,i){const{ctx:r,log:s}=await this.logCtx([t],this.listBy);return s.info(`Executing listBy with key ${e} and order ${i}`),JSON.stringify(await super.listBy(r,e,i))}async paginateBy(t,e,i,r,...s){const{ctx:n,log:a}=await this.logCtx([...s,t],this.paginateBy);try{r=JSON.parse(r)}catch(t){throw new Q("Failed to deserialize paginateBy reference: "+t)}return a.info(`Executing paginateBy with key ${e} and order ${i}`),JSON.stringify(await super.paginateBy(n,e,i,r,...s))}async findOneBy(t,e,i,...r){const{ctx:s,log:n}=await this.logCtx([...r,t],this.findOneBy);return n.info(`Executing findOneBy with key ${e} and value ${i}`),JSON.stringify(await super.findOneBy(s,e,i,...r))}async query(t,e,i,r,s,n){const{ctx:a,log:o}=await this.logCtx([t],this.query);let c;o.info(`Executing query orderedBy ${i} and order ${r}`);try{c=x.from(JSON.parse(e))}catch(t){throw new Q("Invalid condition: "+t)}return o.info("Condition: "+JSON.stringify(c)),JSON.stringify(await super.query(a,c,i,r,s,n))}async init(t){await super.init(t)}async healthcheck(t){const{log:e,ctx:i}=await this.logCtx([t],this.updateAll);return e.debug(`Running Healthcheck: ${this.initialized}...`),JSON.stringify(await super.healthcheck(i))}async createAll(t,e){const{log:i}=await this.logCtx([t],this.createAll),r=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t));i.info(`Adding ${r.length} entries to the table`);const s=await super.createAll(t,r);return JSON.stringify(s.map(t=>this.serialize(t)))}}function Et(t,e){const i=t+e;if(t!==i-e||e!==i-t)throw new St(`Addition overflow: ${t} + ${e}`);return i}function Tt(t,e){const i=t-e;if(t!==i+e||e!==t-i)throw new St(`Subtraction overflow: ${t} - ${e}`);return i}ct([tt(),lt("design:type",Function),lt("design:paramtypes",[Z,String]),lt("design:returntype",Promise)],$t.prototype,"create",null),ct([tt(!1),lt("design:type",Function),lt("design:paramtypes",[Z,String]),lt("design:returntype",Promise)],$t.prototype,"read",null),ct([tt(),lt("design:type",Function),lt("design:paramtypes",[Z,String]),lt("design:returntype",Promise)],$t.prototype,"update",null),ct([tt(),lt("design:type",Function),lt("design:paramtypes",[Z,String]),lt("design:returntype",Promise)],$t.prototype,"delete",null),ct([tt(),lt("design:type",Function),lt("design:paramtypes",[Z,String]),lt("design:returntype",Promise)],$t.prototype,"deleteAll",null),ct([tt(!1),lt("design:type",Function),lt("design:paramtypes",[Z,String]),lt("design:returntype",Promise)],$t.prototype,"readAll",null),ct([tt(),lt("design:type",Function),lt("design:paramtypes",[Z,String]),lt("design:returntype",Promise)],$t.prototype,"updateAll",null),ct([tt(!1),lt("design:type",Function),lt("design:paramtypes",[Z,String,String]),lt("design:returntype",Promise)],$t.prototype,"statement",null),ct([tt(!1),lt("design:type",Function),lt("design:paramtypes",[Z,String,String]),lt("design:returntype",Promise)],$t.prototype,"listBy",null),ct([tt(!1),lt("design:type",Function),lt("design:paramtypes",[Z,String,String,String,ut]),lt("design:returntype",Promise)],$t.prototype,"paginateBy",null),ct([tt(!1),lt("design:type",Function),lt("design:paramtypes",[Z,String,String,String]),lt("design:returntype",Promise)],$t.prototype,"findOneBy",null),ct([tt(),lt("design:type",Function),lt("design:paramtypes",[Z]),lt("design:returntype",Promise)],$t.prototype,"init",null),ct([tt(!1),lt("design:type",Function),lt("design:paramtypes",[Z]),lt("design:returntype",Promise)],$t.prototype,"healthcheck",null),ct([tt(),lt("design:type",Function),lt("design:paramtypes",[Z,String]),lt("design:returntype",Promise)],$t.prototype,"createAll",null);let Bt=class extends D{constructor(t){super(t)}};ct([E({type:"String"}),lt("design:type",String)],Bt.prototype,"name",void 0),ct([T(),u(),lt("design:type",String)],Bt.prototype,"owner",void 0),ct([T(),u(),lt("design:type",String)],Bt.prototype,"symbol",void 0),ct([T(),u(),lt("design:type",Number)],Bt.prototype,"decimals",void 0),Bt=ct([B("erc20_tokens"),p(),lt("design:paramtypes",[Object])],Bt);let Dt=class extends D{constructor(t){super(t)}};ct([E({type:"String"}),lt("design:type",String)],Dt.prototype,"id",void 0),ct([T(),u(),lt("design:type",String)],Dt.prototype,"token",void 0),ct([T(),u(),lt("design:type",Number)],Dt.prototype,"balance",void 0),ct([T(),lt("design:type",String)],Dt.prototype,"captive",void 0),Dt=ct([B("erc20_wallets"),p(),lt("design:paramtypes",[Object])],Dt);let It=class extends D{constructor(t){super(t)}};function Ft(){return function(t,e,i){const r=i.value;return i.value=async function(...t){const i=t[0],s=i.clientIdentity.getID(),n=await this.tokenRepository.select(),a=await n.execute(i);if(0==a.length)throw new U("No tokens avaialble");if(a.length>1)throw new U("To many token available : "+a.length);if(a[0].owner!=s)throw new z(`User not authorized to run ${e} on the token`);return await r.apply(this,t)},i}}var _t;ct([E({type:"String"}),T(),u(),lt("design:type",String)],It.prototype,"owner",void 0),ct([T(),u(),lt("design:type",String)],It.prototype,"spender",void 0),ct([T(),u(),lt("design:type",Number)],It.prototype,"value",void 0),It=ct([B("erc20_allowances"),p(),lt("design:paramtypes",[Object])],It),(t=>{t.TRANSFER="Transfer",t.APPROVAL="Approval"})(_t||(_t={}));class jt extends Pt{constructor(t){super(t,Dt),jt.adapter=jt.adapter||new Rt,this.walletRepository=gt.forModel(Dt,jt.adapter.alias),this.tokenRepository=gt.forModel(Bt,jt.adapter.alias),this.allowanceRepository=gt.forModel(It,jt.adapter.alias)}async TokenName(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const i=this.tokenRepository.select();return(await i.execute(e))[0].name}async Symbol(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const i=this.tokenRepository.select();return(await i.execute(e))[0].symbol}async Decimals(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const i=this.tokenRepository.select();return(await i.execute(e))[0].decimals}async TotalSupply(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const i=this.walletRepository.select(),r=await i.execute(e);if(0==r.length)throw new U(`The token ${this.getName()} does not exist`);let s=0;return r.forEach(t=>{s+=t.balance}),s}async BalanceOf(t,e){const{ctx:i}=await this.logCtx([t],this.TokenName);return await this.CheckInitialized(i),(await this.walletRepository.read(e,i)).balance}async Transfer(t,e,i){const{ctx:r}=await this.logCtx([t],this.Transfer);await this.CheckInitialized(r);const s=r.identity.getID();if(!await this._transfer(s,e,i,r))throw new _("Failed to transfer");return!0}async TransferFrom(t,e,i,r){const{ctx:s}=await this.logCtx([t],this.BurnFrom);await this.CheckInitialized(s);const n=s.identity.getID(),a=await this._getAllowance(e,n,s);if(!a||0>a.value)throw new vt(`spender ${n} has no allowance from ${e}`);const o=a.value;if(r>o)throw new At("The spender does not have enough allowance to spend.");const c=Tt(o,r),l=Object.assign({},a,{value:c});if(await this.allowanceRepository.update(l,s),!await this._transfer(e,i,r,s))throw new _("Failed to transfer");return!0}async _transfer(t,e,i,r){const s=r.logger;if(t===e)throw new z("cannot transfer to and from same client account");if(0>i)throw new At("transfer amount cannot be negative");const n=await this.walletRepository.read(t,r),a=n.balance;if(i>a)throw new At(`client account ${t} has insufficient funds.`);let o,c=!1;try{o=await this.walletRepository.read(e,r)}catch(t){if(!(t instanceof L))throw new _(t);if(404!==t.code)throw new _(t.message);o=new Dt({id:e,balance:0,token:await this.TokenName(r)}),c=!0}const l=o.balance,u=Tt(a,i),p=Et(l,i),g=Object.assign({},n,{balance:u});await this.walletRepository.update(g,r);const h=Object.assign({},o,{balance:p});c?await this.walletRepository.create(h,r):await this.walletRepository.update(h,r);const d={from:t,to:e,value:i};return this.repo.refresh(Bt,_t.TRANSFER,"",d,r).catch(t=>s.error("Failed to notify transfer: "+t)),!0}async Approve(t,e,i){const{ctx:r,ctxArgs:s}=await this.logCtx([t],this.Approve);await this.CheckInitialized(r);const n=r.identity.getID();let a=await this._getAllowance(n,e,r);if((await this.walletRepository.read(n,...s)).balance<i)throw new At(`client account ${n} has insufficient funds.`);a?(a.value=i,await this.allowanceRepository.update(a,...s)):(a=new It({owner:n,spender:e,value:i}),await this.allowanceRepository.create(a,...s));const o={owner:n,spender:e,value:i};return this.repo.refresh(Bt,_t.APPROVAL,"",o,r),!0}async Allowance(t,e,i){const{ctx:r}=await this.logCtx([t],this.Allowance);await this.CheckInitialized(r);const s=await this._getAllowance(e,i,r);if(!s)throw new vt(`spender ${i} has no allowance from ${e}`);return s.value}async _getAllowance(t,e,i){const r=x.and(x.attribute("owner").eq(t),x.attribute("spender").eq(e)),s=await this.allowanceRepository.select().where(r).execute(i);return s?.[0]}async Initialize(t,e){const{ctx:i}=await this.logCtx([t],this.Initialize);if((await this.tokenRepository.select().execute(i)).length>0)throw new z("contract options are already set, client is not authorized to change them");return e.owner=i.identity.getID(),await this.tokenRepository.create(e,i),!0}async CheckInitialized(t){const{ctx:e}=await this.logCtx([t],this.CheckInitialized);if(0==(await this.tokenRepository.select().execute(e)).length)throw new kt("contract options need to be set before calling any function, call Initialize() to initialize contract")}async Mint(t,e){const{ctx:i}=await this.logCtx([t],this.Mint);await this.CheckInitialized(i);const r=i.identity.getID();if(0>=e)throw new q("mint amount must be a positive integer");let s;try{s=await this.walletRepository.read(r,i);const t=Et(s.balance,e),n=Object.assign({},s,{balance:t});await this.walletRepository.update(n,i)}catch(s){if(!(s instanceof L))throw new _(s);if(404!==s.code)throw new _(s.message);{const s=new Dt({id:r,balance:e,token:await this.TokenName(t)});await this.walletRepository.create(s,i)}}const n={from:"0x0",to:r,value:e};this.repo.ObserverHandler().updateObservers(Bt,_t.TRANSFER,"",n,i)}async Burn(t,e){const{log:i,ctx:r}=await this.logCtx([t],this.Burn);await this.CheckInitialized(r);const s=r.identity.getID(),n=await this.walletRepository.read(s,r),a=n.balance;if(e>a)throw new At("Minter has insufficient funds.");const o=Tt(a,e),c=Object.assign({},n,{balance:o});await this.walletRepository.update(c,r),i.info(e+" tokens were burned");const l={from:s,to:"0x0",value:e};this.repo.ObserverHandler().updateObservers(Bt,_t.TRANSFER,"",l,r)}async BurnFrom(t,e,i){const{log:r,ctx:s}=await this.logCtx([t],this.BurnFrom);await this.CheckInitialized(s);const n=await this.walletRepository.read(e,s),a=n.balance;if(i>a)throw new At(e+" has insufficient funds.");const o=Tt(a,i),c=Object.assign({},n,{balance:o});await this.walletRepository.update(c,s),r.info(`${i} tokens were burned from ${e}`);const l={from:e,to:"0x0",value:i};this.repo.ObserverHandler().updateObservers(Bt,_t.TRANSFER,"",l,s)}async ClientAccountBalance(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const i=e.identity.getID(),r=await this.walletRepository.read(i,e);if(!r)throw new At(`The account ${i} does not exist`);return r.balance}async ClientAccountID(t){const{ctx:e}=await this.logCtx([t],this.ClientAccountID);return await this.CheckInitialized(e),e.identity.getID()}}ct([tt(!1),lt("design:type",Function),lt("design:paramtypes",[Z]),lt("design:returntype",Promise)],jt.prototype,"TokenName",null),ct([tt(!1),lt("design:type",Function),lt("design:paramtypes",[Z]),lt("design:returntype",Promise)],jt.prototype,"Symbol",null),ct([tt(!1),lt("design:type",Function),lt("design:paramtypes",[Z]),lt("design:returntype",Promise)],jt.prototype,"Decimals",null),ct([tt(!1),lt("design:type",Function),lt("design:paramtypes",[Z]),lt("design:returntype",Promise)],jt.prototype,"TotalSupply",null),ct([tt(!1),lt("design:type",Function),lt("design:paramtypes",[Z,String]),lt("design:returntype",Promise)],jt.prototype,"BalanceOf",null),ct([tt(),lt("design:type",Function),lt("design:paramtypes",[Z,String,Number]),lt("design:returntype",Promise)],jt.prototype,"Transfer",null),ct([tt(),lt("design:type",Function),lt("design:paramtypes",[Z,String,String,Number]),lt("design:returntype",Promise)],jt.prototype,"TransferFrom",null),ct([tt(),lt("design:type",Function),lt("design:paramtypes",[Z,String,Number]),lt("design:returntype",Promise)],jt.prototype,"Approve",null),ct([tt(!1),lt("design:type",Function),lt("design:paramtypes",[Z,String,String]),lt("design:returntype",Promise)],jt.prototype,"Allowance",null),ct([tt(),lt("design:type",Function),lt("design:paramtypes",[Z,Bt]),lt("design:returntype",Promise)],jt.prototype,"Initialize",null),ct([tt(!1),lt("design:type",Function),lt("design:paramtypes",[Z]),lt("design:returntype",Promise)],jt.prototype,"CheckInitialized",null),ct([Ft(),tt(),lt("design:type",Function),lt("design:paramtypes",[Z,Number]),lt("design:returntype",Promise)],jt.prototype,"Mint",null),ct([Ft(),tt(),lt("design:type",Function),lt("design:paramtypes",[Z,Number]),lt("design:returntype",Promise)],jt.prototype,"Burn",null),ct([Ft(),tt(),lt("design:type",Function),lt("design:paramtypes",[Z,String,Number]),lt("design:returntype",Promise)],jt.prototype,"BurnFrom",null),ct([tt(!1),lt("design:type",Function),lt("design:paramtypes",[Z]),lt("design:returntype",Promise)],jt.prototype,"ClientAccountBalance",null),ct([tt(!1),lt("design:type",Function),lt("design:paramtypes",[Z]),lt("design:returntype",Promise)],jt.prototype,"ClientAccountID",null);const Jt=[jt],qt="##VERSION##",Lt="##PACKAGE##";et.registerLibrary(Lt,qt);export{mt as ContractLogger,Rt as FabricContractAdapter,ut as FabricContractContext,bt as FabricContractPaginator,gt as FabricContractRepository,pt as FabricContractRepositoryObservableHandler,xt as FabricContractSequence,Pt as FabricCrudContract,ht as FabricStatement,Lt as PACKAGE_NAME,$t as SerializedCrudContract,qt as VERSION,Jt as contracts,Nt as createdByOnFabricCreateUpdate,Ot as pkFabricOnCreate};
|
|
1
|
+
import{CouchDBStatement as t,CouchDBKeys as e,CouchDBGroupOperator as i,CouchDBOperator as r,CouchDBPaginator as n,CouchDBAdapter as s}from"@decaf-ts/for-couchdb";import{Model as a,JSONSerializer as o,ModelKeys as c,ValidationKeys as l,required as u,model as g}from"@decaf-ts/decorator-validation";import{Context as d,ObserverHandler as h,Adapter as p,Repository as y,QueryError as w,PreparedStatementKeys as f,PersistenceKeys as m,Condition as x,Sequence as b,SequenceModel as S,UUID as v,UnsupportedError as A,Serial as C,PagingError as k,OrderDirection as O,MigrationError as $,ObserverError as N,AuthorizationError as R,ForbiddenError as z,ConnectionError as P,pk as E,column as T,table as B,BaseModel as D}from"@decaf-ts/core";import{OperationKeys as I,BulkCrudOperationKeys as F,BaseError as q,InternalError as j,DBKeys as _,NotFoundError as J,ConflictError as L,SerializationError as U,BadRequestError as M,onCreate as Q,onCreateUpdate as H,ValidationError as V}from"@decaf-ts/db-decorators";import{Property as K,Object as Y,Contract as G,Context as W,Transaction as X}from"fabric-contract-api";import{Metadata as Z,Decoration as tt,propMetadata as et}from"@decaf-ts/decoration";import{Logging as it,MiniLogger as rt,NumericLogLevels as nt,LogLevel as st}from"@decaf-ts/logging";import{__decorate as at,__metadata as ot}from"tslib";class ct extends d{constructor(){super()}get stub(){return this.get("stub")}get timestamp(){return this.stub.getDateTimestamp()}get identity(){return this.get("identity")}toString(){return"fabric ctx"+(this.stub?" with stub":"without stub")}}class lt extends h{constructor(t=[I.CREATE,I.UPDATE,I.DELETE,F.CREATE_ALL,F.UPDATE_ALL,F.DELETE_ALL]){super(),this.supportedEvents=t}async updateObservers(t,e,i,...r){const{log:n,ctx:s}=p.logCtx(r,this.updateObservers),{stub:a}=s,[o,c]=r,l="string"==typeof t?t:t.name;if(-1!==this.supportedEvents.indexOf(e)){n.debug(`Emitting ${e} event`);const t=((t,e,i)=>{const r=[t,e];return i&&r.push(i),r.join("_")})(l,e,o);a.setEvent(t,Buffer.from(JSON.stringify({id:i})))}else a.setEvent(e,Buffer.from(JSON.stringify(c)))}}class ut extends y{constructor(t,e,i){super(t,e),this.trackedEvents=i,this._overrides=Object.assign({},super._overrides,{ignoreValidation:!1,ignoreHandlers:!1,allowRawStatements:!0,forcePrepareSimpleQueries:!1,forcePrepareComplexQueries:!1})}async paginateBy(t,e,i={offset:1,limit:10},...r){let{offset:n,bookmark:s,limit:o}=i;if(!n&&!s)throw new w("PaginateBy needs a page or a bookmark");const c=await d.args(f.PAGE_BY,this.class,r,this.adapter,this._overrides||{}),{log:l,ctxArgs:u}=this.logCtx(c.args,this.paginateBy);let g;if(l.verbose(`paginating ${a.tableName(this.class)} with page size ${o}`),s)g=await this.override({forcePrepareComplexQueries:!1,forcePrepareSimpleQueries:!1}).select().where(this.attr(a.pk(this.class)).gt(s)).orderBy([t,e]).paginate(o,...u),n=1;else{if(!n)throw new w("PaginateBy needs a page or a bookmark");g=await this.override({forcePrepareComplexQueries:!1,forcePrepareSimpleQueries:!1}).select().orderBy([t,e]).paginate(o,...u)}const h=await g.page(n,...u);return g.serialize(h)}async statement(t,...e){if(!y.statements(this,t))throw new w("Invalid prepared statement requested "+t);const i=await d.args(m.STATEMENT,this.class,e,this.adapter,this._overrides||{});i.context.logger&&i.context.logger.info(`Repo statement: ${t} + ${e}`);const{log:r,ctxArgs:n}=this.logCtx(i.args,this.statement);let s;r.verbose(`Executing prepared statement ${t} with args ${n}`);try{s=await this[t](...n)}catch(e){if(e instanceof q)throw e;throw new j(`Failed to execute prepared statement ${t} with args ${n}: ${e}`)}return s}ObserverHandler(){return new lt}async updateObservers(t,e,i,...r){if(!this.trackedEvents||-1!==this.trackedEvents.indexOf(e))return await super.updateObservers(t,e,i,...r)}}class gt extends t{constructor(t){super(t)}async raw(t,...e){const{ctx:i}=this.logCtx(e,this.raw),r=await this.adapter.raw(t,!0,i),n=a.pk(this.fromSelector),s=Z.get(this.fromSelector,Z.key(_.ID,n))?.type;return this.selectSelector?r:r.map(t=>this.processRecord(t,n,s,i))}build(){const t={};t[e.TABLE]={},t[e.TABLE]=a.tableName(this.fromSelector);const n={selector:t};if(this.selectSelector&&(n.fields=this.selectSelector),this.whereCondition){const t=this.parseCondition(x.and(this.whereCondition,x.attribute(e.TABLE).eq(n.selector[e.TABLE]))).selector,r=Object.keys(t);if(1===r.length&&-1!==Object.values(i).indexOf(r[0]))switch(r[0]){case i.AND:t[i.AND]=[...Object.values(t[i.AND]).reduce((t,e)=>{const r=Object.keys(e);if(1!==r.length)throw Error("Too many keys in query selector. should be one");const n=r[0];return n===i.AND?t.push(...e[n]):t.push(e),t},[])],n.selector=t;break;case i.OR:{const e={};e[i.AND]=[t,...Object.entries(n.selector).map(([t,e])=>{const i={};return i[t]=e,i})],n.selector=e;break}default:throw Error("This should be impossible")}else Object.entries(t).forEach(([t,e])=>{n.selector[t],n.selector[t]=e})}if(this.orderBySelector){n.sort=n.sort||[],n.selector=n.selector||{};const[t,e]=this.orderBySelector,i={};i[t]=e,n.sort.push(i),n.selector[t]||(n.selector[t]={},n.selector[t][r.BIGGER]=null)}return this.limitSelector&&(n.limit=this.limitSelector),this.offsetSelector&&(n.skip=this.offsetSelector),n}}class dt extends b{constructor(t,e){super(t,e)}async current(...t){const e=(await d.args(I.READ,S,t,this.adapter)).context,{name:i,startWith:r}=this.options;try{const t=await this.repo.read(i,e);return this.parse(t.current)}catch(t){const n=e.logger.for(this.current);if(t instanceof J){let t;try{t=e.get(i),n.info(`Retrieved cached current value for sequence ${i}: ${t}`)}catch(e){t=r}if(n.debug(`Sequence.current missing ${i}, returning startWith=${t}`),void 0===t)throw new j("Starting value is not defined for a non existing sequence");try{return this.parse(t)}catch(t){throw new j(`Failed to parse initial value for sequence ${r}: ${t}`)}}throw new j(`Failed to retrieve current value for sequence ${i}: ${t}`)}}async increment(t,e){const i=e.logger.for(this.increment),{type:r,incrementBy:n,name:s}=this.options;if(!s)throw new j("Sequence name is required");return i.info("Obtaining sequence lock for sequence "+s),dt.lock.execute(async()=>{const a=t||n;if(a%n!==0)throw new j("Value to increment does not consider the incrementBy setting: "+n);const o="function"==typeof r&&r?.name?r.name:r,c=await this.current(e);async function l(t){return t instanceof Promise&&(t=await t),e.logger.for(l).info(`Storing new ${s} seq value in cache: ${t.current}`),e.cache.put(s,t.current),t}const u=async t=>{try{return await l(this.repo.update(new S({id:s,current:t}),e))}catch(r){if(r instanceof J)return i.debug(`Sequence create ${s} current=${c} next=${t}`),l(this.repo.create(new S({id:s,current:t}),e));throw r}};if("uuid"===o)for(;;){const t=v.instance.generate(c);try{const e=await u(t);return i.debug(`Sequence uuid increment ${s} current=${c} next=${t}`),e.current}catch(t){if(t instanceof L)continue;throw t}}const g=(t=>{switch(o){case Number.name:return this.parse(t)+a;case BigInt.name:return this.parse(t)+BigInt(a);case String.name:return this.parse(t);case"serial":return C.instance.generate(t);default:throw new j("Should never happen")}})(c),d=await u(g);return i.debug(`Sequence.increment ${s} current=${c} next=${g}`),d.current},s)}async next(...t){const e=await d.args(I.UPDATE,S,t,this.adapter),{context:i}=e;return this.increment(void 0,i)}async range(t,...e){const i=await d.args(I.UPDATE,S,e,this.adapter),{context:r,args:n}=i,s=r.logger.for(this.range);if("uuid"===this.options.type||"serial"===this.options.type)throw new A(`type ${this.options.type} is currently not suppported for this adapter`);const a="function"==typeof this.options.type&&this.options.type?.name?this.options.type.name:this.options.type;s.info("Obtaining sequence range for "+a);const o=await this.current(...n);s.info("current value is "+o);const c=this.parse(this.options.incrementBy),l=await this.increment(this.parse(t)*c,r),u=[];for(let e=1;t>=e;e++)u.push(o+c*this.parse(e));if(s.info("Calculated range: "+u.join(", ")),u[u.length-1]!==l&&"String"!==a)throw new j("Miscalculation of range");return u}}var ht,pt;(t=>{t.PRIVATE="private",t.SHARED="shared",t.FABRIC="fabric.",t.OWNEDBY="owned-by",t.TRANSACTION_ID="transaction-id"})(ht||(ht={})),(t=>{t.X509="X.509"})(pt||(pt={}));const yt="hlf-fabric";class wt extends o{constructor(){super()}deserialize(t,e){return JSON.parse(t)}serialize(t,e=!0){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(t,e)))}preSerialize(t,e=!0){const i=Object.assign({},t);let r;try{r=Z.modelName(t.constructor)}catch(t){r=void 0}function n(t){return"object"!=typeof t?t:Array.isArray(t)?t.map(n):this.preSerialize(t)}return e&&(i[c.ANCHOR]=r||t.constructor.name),a.relations(t).forEach(t=>{i[t]=n.call(this,i[t])}),i}}class ft extends rt{constructor(t,e,i){super(t,e),this.logger=i?i.logging.getLogger(t):new rt(t,e)}log(t,e,i){if(nt[this.config("level")]<nt[t])return;let r;switch(t){case st.info:r=this.logger.info;break;case st.verbose:r=this.logger.verbose;break;case st.debug:r=this.logger.debug;break;case st.error:r=this.logger.error;break;case st.silly:r=this.logger.silly;break;default:throw new j("Invalid log level")}r.call(this.logger,this.createLog(t,e,i))}}it.setFactory((t,e,i)=>new ft(t||ft.name,e||{},i));class mt extends n{constructor(t,e,i,r){super(t,e,i,r)}prepare(t){const e=Object.assign({},t);return e.limit&&(this.limit=e.limit),e.limit=this.size,e}async page(t=1,...e){const{ctxArgs:i,ctx:r}=this.adapter.logCtx(e,this.page);if(this.isPreparedStatement())return this.pagePrepared(t,...i);const n=Object.assign({},this.statement);if(!this._recordCount||!this._totalPages){this._totalPages=this._recordCount=0;const t=await this.adapter.raw({...n,limit:void 0},!0,r)||[];if(this._recordCount=t.length,this._recordCount>0){const t=n?.limit||this.size;this._totalPages=Math.ceil(this._recordCount/t)}}if(this.validatePage(t),1!==t){if(!this._bookmark)throw new k("No bookmark. Did you start in the first page?");n.bookmark=this._bookmark}const s=await this.adapter.raw(n,!1,r);if(!this.clazz)throw new k("No statement target defined");const o=a.pk(this.clazz),c=Z.get(this.clazz,Z.key(_.ID,o))?.type,l=n.fields&&n.fields.length?s:s.map(t=>this.adapter.revert(t,this.clazz,b.parseValue(c,t[o]),void 0,r)),u=n.sort?.[0]||O.DSC;return this._bookmark=l[u===O.ASC?l.length-1:0][o],this._currentPage=t,l}}class xt extends j{constructor(t){super(t,xt.name)}}class bt extends j{constructor(t){super(t,bt.name)}}class St extends j{constructor(t){super(t,St.name)}}class vt extends j{constructor(t){super(t,vt.name,500)}}class At extends q{constructor(t){super(At.name,t,409)}}async function Ct(t,e,i,r){try{const e=t.get("identity");r[i]=e.getID()}catch(t){throw new A("No User found in context. Please provide a user in the context")}}async function kt(t,e,i,r){if(!e.type||r[i])return;let n;e.name||(e.name=a.sequenceName(r,"pk"));try{n=await this.adapter.Sequence(e)}catch(t){throw new j(`Failed to instantiate Sequence ${e.name}: ${t}`)}const s=await n.next(t);Object.defineProperty(r,i,{enumerable:!0,writable:!1,configurable:!0,value:s})}class Ot extends s{getClient(){throw new A("Client is not supported in Fabric contracts")}static{this.textDecoder=new TextDecoder("utf8")}static{this.serializer=new wt}repository(){return ut}Paginator(t,e,i){return new mt(this,t,e,i)}async Sequence(t){return new dt(t,this)}constructor(t,e){super(t,yt,e),this.Context=ct}for(t,...e){return super.for(t,...e)}async create(t,e,i,...r){const{ctx:n,log:s}=this.logCtx(r,this.create);s.info("in ADAPTER create with args "+r);const o=a.tableName(t);try{s.info(`adding entry to ${o} table with pk ${e}`);const t=n.stub.createCompositeKey(o,[e+""]);i=await this.putState(t,i,n)}catch(t){throw this.parseError(t)}return i}async read(t,e,...i){const{ctx:r,log:n}=this.logCtx(i,this.read);n.info("in ADAPTER read with args "+i);const s=a.tableName(t);let o;try{const t=r.stub.createCompositeKey(s,[e+""]);o=await this.readState(t,r)}catch(t){throw this.parseError(t)}return o}async update(t,e,i,...r){const{ctx:n,log:s}=this.logCtx(r,this.update),o=a.tableName(t);try{s.verbose(`updating entry to ${o} table with pk ${e}`);const t=n.stub.createCompositeKey(o,[e+""]);i=await this.putState(t,i,n)}catch(t){throw this.parseError(t)}return i}async delete(t,e,...i){const{ctx:r,log:n,ctxArgs:s}=this.logCtx(i,this.delete),o=a.tableName(t);let c;try{const i=r.stub.createCompositeKey(o,[e+""]);c=await this.read(t,e,...s),n.verbose(`deleting entry with pk ${e} from ${o} table`),await this.deleteState(i,r)}catch(t){throw this.parseError(t)}return c}async deleteState(t,e){const{ctx:i}=this.logCtx([e],this.deleteState);await i.stub.deleteState(t)}forPrivate(t){const e=[this.putState,this.readState,this.deleteState,this.queryResult,this.queryResultPaginated].map(t=>t.name);return new Proxy(this,{get:(i,r,n)=>e.includes(r)?new Proxy(i[r],{async apply(e,i,n){switch(r){case"putState":{const[e,i,r]=n;return await e.putPrivateData(t,i.toString(),r),r}case"deleteState":{const[e,i]=n;return e.deletePrivateData(t,i)}case"readState":{const[e,i]=n;return e.getPrivateData(t,i)}case"queryResult":{const[e,i]=n;return e.getPrivateDataQueryResult(t,i)}case"queryResultPaginated":{const[e,i,r,s]=n,a=await e.getPrivateDataQueryResult(t,i),o=[];let c=0,l=!s,u=null;for(;;){const t=await a.next();if(t.value&&t.value.value.toString()){const e=t.value.key,i=t.value.value.toString("utf8");if(!l){e===s?.toString()&&(l=!0);continue}if(o.push({Key:e,Record:JSON.parse(i)}),u=e,c++,c>=r)return await a.close(),{iterator:o,metadata:{fetchedRecordsCount:o.length,bookmark:u}}}if(t.done)return await a.close(),{iterator:o,metadata:{fetchedRecordsCount:o.length,bookmark:""}}}}default:throw new j("Unsupported method override "+r)}}}):Reflect.get(i,r,n)})}async putState(t,e,i){let r;const{log:n}=this.logCtx([i],this.putState);try{r=Buffer.from(Ot.serializer.serialize(e,!1))}catch(e){throw new U(`Failed to serialize record with id ${t}: ${e}`)}const s=i.get("segregated");return s?await i.stub.putPrivateData(s,t.toString(),r):await i.stub.putState(t.toString(),r),n.silly(`state stored${s?` in ${s} collection`:""} under id ${t}`),e}async readState(t,e){let i;const{log:r}=this.logCtx([e],this.readState);let n;const s=e.get("segregated");if(n=s?(await e.stub.getPrivateData(s,t.toString())).toString():(await e.stub.getState(t.toString())).toString(),!n)throw new J(`Record with id ${t}${s?` in ${s} collection`:""} not found`);r.silly(`state retrieved from${s?` ${s} collection`:""} under id ${t}`);try{i=Ot.serializer.deserialize(n.toString())}catch(t){throw new U("Failed to parse record: "+t)}return i}async queryResult(t,e,...i){const{ctx:r}=this.logCtx(i,this.readState);let n;const s=r.get("segregated");return n=s?await r.stub.getPrivateDataQueryResult(s,JSON.stringify(e)):await t.getQueryResult(JSON.stringify(e)),n}async queryResultPaginated(t,e,i=250,r,...n){const{ctx:s}=this.logCtx(n,this.readState);let a;const o=s.get("segregated");return o?(e.selector={...e.selector,_id:r?{$gt:r.toString()}:{$gte:""}},a={iterator:await t.getPrivateDataQueryResult(o,JSON.stringify(e)),metadata:{fetchedRecordsCount:i,bookmark:""}}):a=await t.getQueryResultWithPagination(JSON.stringify(e),i,r?.toString()),a}mergeModels(t){const e=t=>Object.entries(t).reduce((t,[e,i])=>(void 0!==i&&(t[e]=i),t),{});let i=t.pop();for(const r of t)i=Object.assign({},e(i),e(r));return i}decode(t){return Ot.textDecoder.decode(t)}async flags(t,e,i,r,...n){const s={stub:r.stub,segregated:!1};return Object.assign(s,r instanceof ct?{logger:r.logger,identity:r.identity,correlationId:r.stub.getTxID()}:{identity:r.clientIdentity,logger:new ft(this,void 0,r),correlationId:r.stub.getTxID()}),await super.flags(t,e,s,...n)}index(t){return Promise.resolve(void 0)}async resultIterator(t,e,i=!1){const r=[];let n=await e.next();for(;!n.done;){if(n.value&&n.value.value.toString()){let e={};if(t.debug(n.value.value.toString("utf8")),i){e.TxId=n.value.txId,e.Timestamp=n.value.timestamp;try{e.Value=JSON.parse(n.value.value.toString("utf8"))}catch(i){t.error(i),e.Value=n.value.value.toString("utf8")}}else try{e=JSON.parse(n.value.value.toString("utf8"))}catch(i){t.error(i),e=n.value.value.toString("utf8")}r.push(e)}n=await e.next()}return t.debug(`Closing iterator after ${r.length} results`),e.close(),r}async raw(t,e=!0,...i){const{log:r,stub:n,ctx:s}=this.logCtx(i,this.raw),{skip:a,limit:o}=t;let c;o||a?(delete t.limit,delete t.skip,r.debug(`Retrieving paginated iterator: limit: ${o}/ skip: ${a}`),c=(await this.queryResultPaginated(n,t,o||250,a?.toString(),s)).iterator):(r.debug("Retrieving iterator"),c=await this.queryResult(n,t,s)),r.debug("Iterator acquired");const l=await this.resultIterator(r,c);return r.debug(`returning ${Array.isArray(l)?l.length:1} results`),l}Statement(){return new gt(this)}async createAll(t,e,i,...r){if(e.length!==i.length)throw new j("Ids and models must have the same length");const{log:n,ctxArgs:s}=this.logCtx(r,this.createAll),o=a.tableName(t);return n.debug(`Creating ${e.length} entries ${o} table`),Promise.all(e.map((e,r)=>this.create(t,e,i[r],...s)))}async updateAll(t,e,i,...r){if(e.length!==i.length)throw new j("Ids and models must have the same length");const{log:n,ctxArgs:s}=this.logCtx(r,this.updateAll),o=a.tableName(t);return n.debug(`Updating ${e.length} entries ${o} table`),Promise.all(e.map((e,r)=>this.update(t,e,i[r],...s)))}prepare(t,...e){const{log:i}=this.logCtx(e,this.prepare),r=a.tableName(t.constructor),n=a.pk(t.constructor),s=a.segregate(t),o=Object.entries(s.model).reduce((e,[i,r])=>{if(void 0===r)return e;const n=a.columnName(t,i);if(this.isReserved(n))throw new j(`Property name ${n} is reserved`);return e[n]=r,e},{});return i.silly(`Preparing record for ${r} table with pk ${t[n]}`),{record:o,id:t[n],transient:s.transient}}revert(t,e,i,r,...n){const{log:s}=this.logCtx(n,this.revert),o={};o[a.pk(e)]=i;const c="string"==typeof e?a.build(o,e):new e(o);s.silly(`Rebuilding model ${c.constructor.name} id ${i}`);const l=Object.keys(c).reduce((e,i)=>(e[i]=t[a.columnName(e,i)],e),c);return r&&(s.debug("re-adding transient properties: "+Object.keys(r).join(", ")),Object.entries(r).forEach(([t,e])=>{if(t in l&&void 0!==l[t])throw new j(`Transient property ${t} already exists on model ${c.constructor.name}. should be impossible`);l[t]=e})),l}createPrefix(t,i,r,...n){const{ctxArgs:s}=this.logCtx(n,this.createPrefix),o={};return o[e.TABLE]=a.tableName(t),Object.assign(o,r),[t,i,o,...s]}updatePrefix(t,i,r,...n){const{ctxArgs:s}=this.logCtx(n,this.updatePrefix),o={};return o[e.TABLE]=a.tableName(t),Object.assign(o,r),[t,i,o,...s]}createAllPrefix(t,i,r,...n){if(i.length!==r.length)throw new j("Ids and models must have the same length");const s=n.pop(),o=i.map((i,n)=>{const s={};return s[e.TABLE]=a.tableName(t),Object.assign(s,r[n]),s});return[t,i,o,s]}updateAllPrefix(t,i,r,...n){if(i.length!==r.length)throw new j("Ids and models must have the same length");const s=n.pop(),o=i.map((i,n)=>{const s={};return s[e.TABLE]=a.tableName(t),Object.assign(s,r[n]),s});return[t,i,o,s]}parseError(t,e){return Ot.parseError(e||t)}logCtx(t,e){return Ot.logCtx.call(this,t,e)}static logCtx(t,e){if(1>t.length)throw new j("No context provided");const i=t.pop();if(!(i instanceof d))throw new j("No context provided");if(t.filter(t=>t instanceof d).length>1)throw Error("here");const r=this?i.logger.for(this).for(e):i.logger.clear().for(this).for(e);return{ctx:i,log:e?r.for(e):r,stub:i.stub,identity:i.identity,ctxArgs:[...t,i]}}static parseError(t){const e="string"==typeof t?t:t.message;return e.includes(J.name)?new J(t):e.includes(L.name)?new L(t):e.includes(M.name)?new M(t):e.includes(w.name)?new w(t):e.includes(k.name)?new k(t):e.includes(A.name)?new A(t):e.includes($.name)?new $(t):e.includes(N.name)?new N(t):e.includes(R.name)?new R(t):e.includes(z.name)?new z(t):e.includes(P.name)?new P(t):e.includes(U.name)?new U(t):e.includes("no ledger context")?new vt("No context found. this can be caused by debugging: "+e):new j(t)}static decoration(){super.decoration(),tt.flavouredAs(yt).for(m.CREATED_BY).define(Q(Ct),et(m.CREATED_BY,{})).apply(),tt.flavouredAs(yt).for(m.UPDATED_BY).define(H(Ct),et(m.UPDATED_BY,{})).apply(),tt.flavouredAs(yt).for(m.COLUMN).extend(K()).apply(),tt.flavouredAs(yt).for(l.DATE).extend(()=>(t,e)=>{K(e,"string:date")(t,e)}),tt.flavouredAs(yt).for(m.TABLE).extend(t=>{const e=[];let i="function"==typeof t?Z.constr(t):Z.constr(t.constructor);for(;i&&i!==Object&&i.prototype;)e.push(i),i=Object.getPrototypeOf(i);for(;e.length>0;){const t=e.pop();Y()(t)}return Y()(t)}).apply()}}Ot.decoration(),p.setCurrent(yt);class $t extends o{constructor(){super()}preSerialize(t){const e=Object.assign({},t);let i;try{i=Z.modelName(t.constructor)}catch(t){i=void 0}e[c.ANCHOR]=i||t.constructor.name;const r=function t(e){const i=this;return"object"!=typeof e?e:Array.isArray(e)?e.map(e=>t.call(i,e)):this.preSerialize.call(this,e)}.bind(this);return a.relations(t).forEach(t=>{e[t]=r(e[t])}),e}deserialize(t){const e=JSON.parse(t),i=e[c.ANCHOR];if(!i)throw Error("Could not find class reference in serialized model");return a.build(e,i)}serialize(t){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(t)))}}Y()(Date);class Nt extends G{static{this.adapter=new Ot}static{this.serializer=new $t}constructor(t,e){super(t),this.clazz=e,this.initialized=!1,this.repo=y.forModel(e)}async listBy(t,e,i,...r){const{ctxArgs:n,log:s}=await this.logCtx([...r,t],this.listBy);return s.info(`Running listBy key ${e}, order ${i} and args ${n}`),this.repo.listBy(e,i,...n)}async paginateBy(t,e,i,r={offset:1,limit:10},...n){const{ctxArgs:s,log:a}=await this.logCtx([...n,t],this.paginateBy);return a.info(`Running paginateBy key ${e}, order ${i} with size ${r.limit} and args ${s}`),this.repo.paginateBy(e,i,r,...s)}async findOneBy(t,e,i,...r){const{ctxArgs:n,log:s}=await this.logCtx([...r,t],this.findOneBy);return s.info(`Running findOneBy key ${e}, value: ${i} with args ${n}`),this.repo.findOneBy(e,i,...n)}async statement(t,e,...i){const{ctxArgs:r,log:n}=await this.logCtx([...i,t],this.statement);return n.info(`Running statement ${e} with args ${r}`),this.repo.statement(e,...r)}async create(t,e,...i){const{log:r,ctxArgs:n}=await this.logCtx([...i,t],this.create);r.info("CONTRACT CREATE, "+n),"string"==typeof e&&(e=this.deserialize(e)),r.info("Creating model: "+JSON.stringify(e));const s=this.getTransientData(t);return r.info("Merging transient data..."),e=a.merge(e,s,this.clazz),this.repo.create(e,...n)}async read(t,e,...i){const{log:r,ctxArgs:n}=await this.logCtx([...i,t],this.read);return r.info(`reading entry with pk ${e} `),this.repo.read(e,...n)}getTransientData(t){const e=t.stub.getTransient();let i={};return e.has(this.repo.tableName)&&(i=JSON.parse(e.get(this.repo.tableName)?.toString("utf8"))),i}async update(t,e,...i){const{log:r,ctxArgs:n}=await this.logCtx([...i,t],this.update);"string"==typeof e&&(e=this.deserialize(e)),r.info("Updating model: "+JSON.stringify(e));const s=this.getTransientData(t);return r.info("Merging transient data..."),e=a.merge(e,s,this.clazz),this.repo.update(e,...n)}async delete(t,e,...i){const{log:r,ctxArgs:n}=await this.logCtx([...i,t],this.delete);return r.info(`deleting entry with pk ${e} `),this.repo.delete(e+"",...n)}async deleteAll(t,e,...i){const{ctxArgs:r}=await this.logCtx([...i,t],this.readAll);return"string"==typeof e&&(e=JSON.parse(e)),this.repo.deleteAll(e,...r)}async readAll(t,e,...i){const{ctxArgs:r}=await this.logCtx([...i,t],this.readAll);return"string"==typeof e&&(e=JSON.parse(e)),this.repo.readAll(e,...r)}async updateAll(t,e,...i){const{log:r,ctxArgs:n}=await this.logCtx([...i,t],this.updateAll);return"string"==typeof e&&(e=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t))),r.info(`updating ${e.length} entries to the table`),this.repo.updateAll(e,...n)}async query(t,e,i,r=O.ASC,n,s,...a){const{ctxArgs:o}=await this.logCtx([...a,t],this.query);return this.repo.query(e,i,r,n,s,...o)}async raw(t,e,i,...r){const{ctxArgs:n}=await this.logCtx([...r,t],this.raw);return Nt.adapter.raw(e,i,...n)}serialize(t){return Nt.serializer.serialize(t)}deserialize(t){return Nt.serializer.deserialize(t)}async init(t){const{log:e}=await this.logCtx([t],this.init);e.info(`Running contract ${this.getName()} initialization...`),this.initialized=!0,e.info("Contract initialization completed.")}async healthcheck(t){const{log:e}=await this.logCtx([t],this.healthcheck);return e.info(`Running Healthcheck: ${this.initialized}...`),{healthcheck:this.initialized}}async createAll(t,e,...i){const{log:r,ctxArgs:n}=await this.logCtx([...i,t],this.createAll);return"string"==typeof e&&(e=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t))),r.info(`adding ${e.length} entries to the table`),this.repo.createAll(e,...n)}async logCtx(t,e){return Nt.logCtx.bind(this)(t,e)}static async logCtx(t,e){if(1>t.length)throw new j("No context provided");const i=t.pop();if(i instanceof ct)return{ctx:i,log:i.logger.clear().for(this).for(e),ctxArgs:[...t,i],stub:i.stub,identity:i.identity};if(!(i instanceof W))throw new j("No valid context provided");const r={correlationId:i.stub.getTxID()},n=await Nt.adapter.context((()=>{if("string"==typeof e)return e;switch(e.name){case I.CREATE:case I.READ:case I.UPDATE:case I.DELETE:case F.CREATE_ALL:case F.READ_ALL:case F.UPDATE_ALL:case F.DELETE_ALL:}return e.name})(),r,this.clazz,i),s=this?n.logger.for(this).for(e):n.logger.clear().for(this).for(e);return{ctx:n,log:s,stub:n.stub,identity:n.identity,ctxArgs:[...t,n]}}}class Rt extends Nt{constructor(t,e){super(t,e)}async create(t,e){const{log:i,ctx:r}=await this.logCtx([t],this.create);i.info("Creating model: "+e);const n=this.deserialize(e);i.info("Model deserialized: "+JSON.stringify(n));const s=await super.create(r,n),a=this.serialize(s);return i.info("RESULT: "+JSON.stringify(s)),i.info("Retuning: "+a),a}async read(t,e){const{log:i,ctx:r}=await this.logCtx([t],this.read);return i.info("Reading id: "+e),this.serialize(await super.read(r,e))}async update(t,e){const{log:i,ctx:r}=await this.logCtx([t],this.update);return i.info("Updating model: "+e),this.serialize(await super.update(r,e))}async delete(t,e){const{log:i,ctx:r}=await this.logCtx([t],this.delete);return i.info("Deleting id: "+e),this.serialize(await super.delete(r,e))}async deleteAll(t,e){const i=JSON.parse(e),{log:r,ctx:n}=await this.logCtx([t],this.deleteAll);return r.info(`deleting ${i.length} entries from the table`),JSON.stringify((await super.deleteAll(n,i)).map(t=>this.serialize(t)))}async readAll(t,e){const i=JSON.parse(e),{log:r,ctx:n}=await this.logCtx([t],this.readAll);return r.info(`reading ${i.length} entries from the table`),JSON.stringify((await super.readAll(n,i)).map(t=>this.serialize(t)))}async updateAll(t,e){const{log:i,ctx:r}=await this.logCtx([t],this.updateAll),n=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t));return i.info(`Updating ${n.length} entries to the table`),JSON.stringify((await super.updateAll(r,n)).map(t=>this.serialize(t)))}async statement(t,e,i){const{ctx:r,log:n}=await this.logCtx([t],this.statement);try{i=JSON.parse(i)}catch(t){throw new U("Invalid args: "+t)}if(!Array.isArray(i))throw new U(`Invalid args: ${JSON.stringify(i)}. must be an array`);return n.info("calling prepared statement "+e),n.info("with args "+i),JSON.stringify(await super.statement(r,e,...i))}async listBy(t,e,i){const{ctx:r,log:n}=await this.logCtx([t],this.listBy);return n.info(`Executing listBy with key ${e} and order ${i}`),JSON.stringify(await super.listBy(r,e,i))}async paginateBy(t,e,i,r,...n){const{ctx:s,log:a}=await this.logCtx([...n,t],this.paginateBy);try{r=JSON.parse(r)}catch(t){throw new U("Failed to deserialize paginateBy reference: "+t)}return a.info(`Executing paginateBy with key ${e} and order ${i}`),JSON.stringify(await super.paginateBy(s,e,i,r,...n))}async findOneBy(t,e,i,...r){const{ctx:n,log:s}=await this.logCtx([...r,t],this.findOneBy);return s.info(`Executing findOneBy with key ${e} and value ${i}`),JSON.stringify(await super.findOneBy(n,e,i,...r))}async query(t,e,i,r,n,s){const{ctx:a,log:o}=await this.logCtx([t],this.query);let c;o.info(`Executing query orderedBy ${i} and order ${r}`);try{c=x.from(JSON.parse(e))}catch(t){throw new U("Invalid condition: "+t)}return o.info("Condition: "+JSON.stringify(c)),JSON.stringify(await super.query(a,c,i,r,n,s))}async init(t){await super.init(t)}async healthcheck(t){const{log:e,ctx:i}=await this.logCtx([t],this.updateAll);return e.debug(`Running Healthcheck: ${this.initialized}...`),JSON.stringify(await super.healthcheck(i))}async createAll(t,e){const{log:i}=await this.logCtx([t],this.createAll),r=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t));i.info(`Adding ${r.length} entries to the table`);const n=await super.createAll(t,r);return JSON.stringify(n.map(t=>this.serialize(t)))}}function zt(t,e){const i=t+e;if(t!==i-e||e!==i-t)throw new xt(`Addition overflow: ${t} + ${e}`);return i}function Pt(t,e){const i=t-e;if(t!==i+e||e!==t-i)throw new xt(`Subtraction overflow: ${t} - ${e}`);return i}at([X(),ot("design:type",Function),ot("design:paramtypes",[W,String]),ot("design:returntype",Promise)],Rt.prototype,"create",null),at([X(!1),ot("design:type",Function),ot("design:paramtypes",[W,String]),ot("design:returntype",Promise)],Rt.prototype,"read",null),at([X(),ot("design:type",Function),ot("design:paramtypes",[W,String]),ot("design:returntype",Promise)],Rt.prototype,"update",null),at([X(),ot("design:type",Function),ot("design:paramtypes",[W,String]),ot("design:returntype",Promise)],Rt.prototype,"delete",null),at([X(),ot("design:type",Function),ot("design:paramtypes",[W,String]),ot("design:returntype",Promise)],Rt.prototype,"deleteAll",null),at([X(!1),ot("design:type",Function),ot("design:paramtypes",[W,String]),ot("design:returntype",Promise)],Rt.prototype,"readAll",null),at([X(),ot("design:type",Function),ot("design:paramtypes",[W,String]),ot("design:returntype",Promise)],Rt.prototype,"updateAll",null),at([X(!1),ot("design:type",Function),ot("design:paramtypes",[W,String,String]),ot("design:returntype",Promise)],Rt.prototype,"statement",null),at([X(!1),ot("design:type",Function),ot("design:paramtypes",[W,String,String]),ot("design:returntype",Promise)],Rt.prototype,"listBy",null),at([X(!1),ot("design:type",Function),ot("design:paramtypes",[W,String,String,String,ct]),ot("design:returntype",Promise)],Rt.prototype,"paginateBy",null),at([X(!1),ot("design:type",Function),ot("design:paramtypes",[W,String,String,String]),ot("design:returntype",Promise)],Rt.prototype,"findOneBy",null),at([X(),ot("design:type",Function),ot("design:paramtypes",[W]),ot("design:returntype",Promise)],Rt.prototype,"init",null),at([X(!1),ot("design:type",Function),ot("design:paramtypes",[W]),ot("design:returntype",Promise)],Rt.prototype,"healthcheck",null),at([X(),ot("design:type",Function),ot("design:paramtypes",[W,String]),ot("design:returntype",Promise)],Rt.prototype,"createAll",null);let Et=class extends D{constructor(t){super(t)}};at([E({type:"String"}),ot("design:type",String)],Et.prototype,"name",void 0),at([T(),u(),ot("design:type",String)],Et.prototype,"owner",void 0),at([T(),u(),ot("design:type",String)],Et.prototype,"symbol",void 0),at([T(),u(),ot("design:type",Number)],Et.prototype,"decimals",void 0),Et=at([B("erc20_tokens"),g(),ot("design:paramtypes",[Object])],Et);let Tt=class extends D{constructor(t){super(t)}};at([E({type:"String"}),ot("design:type",String)],Tt.prototype,"id",void 0),at([T(),u(),ot("design:type",String)],Tt.prototype,"token",void 0),at([T(),u(),ot("design:type",Number)],Tt.prototype,"balance",void 0),at([T(),ot("design:type",String)],Tt.prototype,"captive",void 0),Tt=at([B("erc20_wallets"),g(),ot("design:paramtypes",[Object])],Tt);let Bt=class extends D{constructor(t){super(t)}};function Dt(){return function(t,e,i){const r=i.value;return i.value=async function(...t){const i=t[0],n=i.clientIdentity.getID(),s=await this.tokenRepository.select(),a=await s.execute(i);if(0==a.length)throw new J("No tokens avaialble");if(a.length>1)throw new J("To many token available : "+a.length);if(a[0].owner!=n)throw new R(`User not authorized to run ${e} on the token`);return await r.apply(this,t)},i}}var It;at([E({type:"String"}),T(),u(),ot("design:type",String)],Bt.prototype,"owner",void 0),at([T(),u(),ot("design:type",String)],Bt.prototype,"spender",void 0),at([T(),u(),ot("design:type",Number)],Bt.prototype,"value",void 0),Bt=at([B("erc20_allowances"),g(),ot("design:paramtypes",[Object])],Bt),(t=>{t.TRANSFER="Transfer",t.APPROVAL="Approval"})(It||(It={}));class Ft extends Nt{constructor(t){super(t,Tt),Ft.adapter=Ft.adapter||new Ot,this.walletRepository=ut.forModel(Tt,Ft.adapter.alias),this.tokenRepository=ut.forModel(Et,Ft.adapter.alias),this.allowanceRepository=ut.forModel(Bt,Ft.adapter.alias)}async TokenName(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const i=this.tokenRepository.select();return(await i.execute(e))[0].name}async Symbol(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const i=this.tokenRepository.select();return(await i.execute(e))[0].symbol}async Decimals(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const i=this.tokenRepository.select();return(await i.execute(e))[0].decimals}async TotalSupply(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const i=this.walletRepository.select(),r=await i.execute(e);if(0==r.length)throw new J(`The token ${this.getName()} does not exist`);let n=0;return r.forEach(t=>{n+=t.balance}),n}async BalanceOf(t,e){const{ctx:i}=await this.logCtx([t],this.TokenName);return await this.CheckInitialized(i),(await this.walletRepository.read(e,i)).balance}async Transfer(t,e,i){const{ctx:r}=await this.logCtx([t],this.Transfer);await this.CheckInitialized(r);const n=r.identity.getID();if(!await this._transfer(n,e,i,r))throw new j("Failed to transfer");return!0}async TransferFrom(t,e,i,r){const{ctx:n}=await this.logCtx([t],this.BurnFrom);await this.CheckInitialized(n);const s=n.identity.getID(),a=await this._getAllowance(e,s,n);if(!a||0>a.value)throw new St(`spender ${s} has no allowance from ${e}`);const o=a.value;if(r>o)throw new bt("The spender does not have enough allowance to spend.");const c=Pt(o,r),l=Object.assign({},a,{value:c});if(await this.allowanceRepository.update(l,n),!await this._transfer(e,i,r,n))throw new j("Failed to transfer");return!0}async _transfer(t,e,i,r){const n=r.logger;if(t===e)throw new R("cannot transfer to and from same client account");if(0>i)throw new bt("transfer amount cannot be negative");const s=await this.walletRepository.read(t,r),a=s.balance;if(i>a)throw new bt(`client account ${t} has insufficient funds.`);let o,c=!1;try{o=await this.walletRepository.read(e,r)}catch(t){if(!(t instanceof q))throw new j(t);if(404!==t.code)throw new j(t.message);o=new Tt({id:e,balance:0,token:await this.TokenName(r)}),c=!0}const l=o.balance,u=Pt(a,i),g=zt(l,i),d=Object.assign({},s,{balance:u});await this.walletRepository.update(d,r);const h=Object.assign({},o,{balance:g});c?await this.walletRepository.create(h,r):await this.walletRepository.update(h,r);const p={from:t,to:e,value:i};return this.repo.refresh(Et,It.TRANSFER,"",p,r).catch(t=>n.error("Failed to notify transfer: "+t)),!0}async Approve(t,e,i){const{ctx:r,ctxArgs:n}=await this.logCtx([t],this.Approve);await this.CheckInitialized(r);const s=r.identity.getID();let a=await this._getAllowance(s,e,r);if((await this.walletRepository.read(s,...n)).balance<i)throw new bt(`client account ${s} has insufficient funds.`);a?(a.value=i,await this.allowanceRepository.update(a,...n)):(a=new Bt({owner:s,spender:e,value:i}),await this.allowanceRepository.create(a,...n));const o={owner:s,spender:e,value:i};return this.repo.refresh(Et,It.APPROVAL,"",o,r),!0}async Allowance(t,e,i){const{ctx:r}=await this.logCtx([t],this.Allowance);await this.CheckInitialized(r);const n=await this._getAllowance(e,i,r);if(!n)throw new St(`spender ${i} has no allowance from ${e}`);return n.value}async _getAllowance(t,e,i){const r=x.and(x.attribute("owner").eq(t),x.attribute("spender").eq(e)),n=await this.allowanceRepository.select().where(r).execute(i);return n?.[0]}async Initialize(t,e){const{ctx:i}=await this.logCtx([t],this.Initialize);if((await this.tokenRepository.select().execute(i)).length>0)throw new R("contract options are already set, client is not authorized to change them");return e.owner=i.identity.getID(),await this.tokenRepository.create(e,i),!0}async CheckInitialized(t){const{ctx:e}=await this.logCtx([t],this.CheckInitialized);if(0==(await this.tokenRepository.select().execute(e)).length)throw new At("contract options need to be set before calling any function, call Initialize() to initialize contract")}async Mint(t,e){const{ctx:i}=await this.logCtx([t],this.Mint);await this.CheckInitialized(i);const r=i.identity.getID();if(0>=e)throw new V("mint amount must be a positive integer");let n;try{n=await this.walletRepository.read(r,i);const t=zt(n.balance,e),s=Object.assign({},n,{balance:t});await this.walletRepository.update(s,i)}catch(n){if(!(n instanceof q))throw new j(n);if(404!==n.code)throw new j(n.message);{const n=new Tt({id:r,balance:e,token:await this.TokenName(t)});await this.walletRepository.create(n,i)}}const s={from:"0x0",to:r,value:e};this.repo.ObserverHandler().updateObservers(Et,It.TRANSFER,"",s,i)}async Burn(t,e){const{log:i,ctx:r}=await this.logCtx([t],this.Burn);await this.CheckInitialized(r);const n=r.identity.getID(),s=await this.walletRepository.read(n,r),a=s.balance;if(e>a)throw new bt("Minter has insufficient funds.");const o=Pt(a,e),c=Object.assign({},s,{balance:o});await this.walletRepository.update(c,r),i.info(e+" tokens were burned");const l={from:n,to:"0x0",value:e};this.repo.ObserverHandler().updateObservers(Et,It.TRANSFER,"",l,r)}async BurnFrom(t,e,i){const{log:r,ctx:n}=await this.logCtx([t],this.BurnFrom);await this.CheckInitialized(n);const s=await this.walletRepository.read(e,n),a=s.balance;if(i>a)throw new bt(e+" has insufficient funds.");const o=Pt(a,i),c=Object.assign({},s,{balance:o});await this.walletRepository.update(c,n),r.info(`${i} tokens were burned from ${e}`);const l={from:e,to:"0x0",value:i};this.repo.ObserverHandler().updateObservers(Et,It.TRANSFER,"",l,n)}async ClientAccountBalance(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const i=e.identity.getID(),r=await this.walletRepository.read(i,e);if(!r)throw new bt(`The account ${i} does not exist`);return r.balance}async ClientAccountID(t){const{ctx:e}=await this.logCtx([t],this.ClientAccountID);return await this.CheckInitialized(e),e.identity.getID()}}at([X(!1),ot("design:type",Function),ot("design:paramtypes",[W]),ot("design:returntype",Promise)],Ft.prototype,"TokenName",null),at([X(!1),ot("design:type",Function),ot("design:paramtypes",[W]),ot("design:returntype",Promise)],Ft.prototype,"Symbol",null),at([X(!1),ot("design:type",Function),ot("design:paramtypes",[W]),ot("design:returntype",Promise)],Ft.prototype,"Decimals",null),at([X(!1),ot("design:type",Function),ot("design:paramtypes",[W]),ot("design:returntype",Promise)],Ft.prototype,"TotalSupply",null),at([X(!1),ot("design:type",Function),ot("design:paramtypes",[W,String]),ot("design:returntype",Promise)],Ft.prototype,"BalanceOf",null),at([X(),ot("design:type",Function),ot("design:paramtypes",[W,String,Number]),ot("design:returntype",Promise)],Ft.prototype,"Transfer",null),at([X(),ot("design:type",Function),ot("design:paramtypes",[W,String,String,Number]),ot("design:returntype",Promise)],Ft.prototype,"TransferFrom",null),at([X(),ot("design:type",Function),ot("design:paramtypes",[W,String,Number]),ot("design:returntype",Promise)],Ft.prototype,"Approve",null),at([X(!1),ot("design:type",Function),ot("design:paramtypes",[W,String,String]),ot("design:returntype",Promise)],Ft.prototype,"Allowance",null),at([X(),ot("design:type",Function),ot("design:paramtypes",[W,Et]),ot("design:returntype",Promise)],Ft.prototype,"Initialize",null),at([X(!1),ot("design:type",Function),ot("design:paramtypes",[W]),ot("design:returntype",Promise)],Ft.prototype,"CheckInitialized",null),at([Dt(),X(),ot("design:type",Function),ot("design:paramtypes",[W,Number]),ot("design:returntype",Promise)],Ft.prototype,"Mint",null),at([Dt(),X(),ot("design:type",Function),ot("design:paramtypes",[W,Number]),ot("design:returntype",Promise)],Ft.prototype,"Burn",null),at([Dt(),X(),ot("design:type",Function),ot("design:paramtypes",[W,String,Number]),ot("design:returntype",Promise)],Ft.prototype,"BurnFrom",null),at([X(!1),ot("design:type",Function),ot("design:paramtypes",[W]),ot("design:returntype",Promise)],Ft.prototype,"ClientAccountBalance",null),at([X(!1),ot("design:type",Function),ot("design:paramtypes",[W]),ot("design:returntype",Promise)],Ft.prototype,"ClientAccountID",null);const qt=[Ft],jt="##VERSION##",_t="##PACKAGE##";Z.registerLibrary(_t,jt);export{ft as ContractLogger,Ot as FabricContractAdapter,ct as FabricContractContext,mt as FabricContractPaginator,ut as FabricContractRepository,lt as FabricContractRepositoryObservableHandler,Nt as FabricCrudContract,gt as FabricStatement,_t as PACKAGE_NAME,Rt as SerializedCrudContract,jt as VERSION,qt as contracts,Ct as createdByOnFabricCreateUpdate,kt as pkFabricOnCreate};
|
|
2
2
|
//# sourceMappingURL=for-fabric.js.map
|
package/dist/for-fabric.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"for-fabric.js","sources":["../src/contracts/ContractContext.ts","../src/contracts/FabricContractRepositoryObservableHandler.ts","../src/shared/events.ts","../src/contracts/FabricContractRepository.ts","../src/contracts/FabricContractStatement.ts","../src/shared/constants.ts","../src/shared/SimpleDeterministicSerializer.ts","../src/contracts/logging.ts","../src/contracts/FabricContractSequence.ts","../src/contracts/FabricContractPaginator.ts","../src/shared/errors.ts","../src/contracts/ContractAdapter.ts","../src/shared/DeterministicSerializer.ts","../src/contracts/crud/crud-contract.ts","../src/contracts/crud/serialized-crud-contract.ts","../src/shared/math.ts","../src/contracts/erc20/models.ts","../src/shared/decorators.ts","../src/shared/erc20/erc20-constants.ts","../src/contracts/erc20/erc20contract.ts","../src/contracts/erc20/index.ts","../src/version.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["FabricContractContext","Context","constructor","super","stub","this","get","timestamp","getDateTimestamp","identity","toString","FabricContractRepositoryObservableHandler","ObserverHandler","supportedEvents","OperationKeys","CREATE","UPDATE","DELETE","BulkCrudOperationKeys","CREATE_ALL","UPDATE_ALL","DELETE_ALL","updateObservers","clazz","event","id","args","log","ctx","Adapter","logCtx","owner","payload","table","name","indexOf","debug","eventName","params","push","join","generateFabricEventName","setEvent","Buffer","from","JSON","stringify","FabricContractRepository","Repository","adapter","trackedEvents","_overrides","Object","assign","ignoreValidation","ignoreHandlers","allowRawStatements","forcePrepareSimpleQueries","forcePrepareComplexQueries","createAllPrefix","models","contextArgs","class","context","logger","for","ignoreValidate","length","opts","Model","sequenceFor","info","ids","type","sequenceName","Sequence","range","map","m","i","pk","InternalError","Promise","all","async","generated","enforceDBDecorators","ON","ignoredProps","errors","resolve","hasErrors","errorMessages","reduceErrorsToPrint","ValidationError","paginateBy","key","order","ref","offset","limit","bookmark","QueryError","PreparedStatementKeys","PAGE_BY","ctxArgs","paginator","verbose","tableName","override","select","where","attr","gt","orderBy","paginate","paged","page","serialize","statement","statements","PersistenceKeys","STATEMENT","result","e","BaseError","FabricStatement","CouchDBStatement","raw","rawInput","results","pkAttr","fromSelector","Metadata","DBKeys","ID","selectSelector","r","processRecord","build","selectors","CouchDBKeys","TABLE","query","selector","fields","whereCondition","condition","parseCondition","Condition","and","attribute","eq","selectorKeys","keys","values","CouchDBGroupOperator","AND","reduce","accum","val","Error","k","OR","s","entries","forEach","orderBySelector","sort","value","rec","CouchDBOperator","BIGGER","limitSelector","offsetSelector","skip","FabricModelKeys","IdentityType","FabricFlavour","SimpleDeterministicSerializer","JSONSerializer","deserialize","str","parse","model","putAnchor","require","sortKeysRecursive","preSerialize","toSerialize","metadata","modelName","error","undefined","obj","Array","isArray","ModelKeys","ANCHOR","relations","call","ContractLogger","MiniLogger","conf","logging","getLogger","level","msg","stack","NumericLogLevels","config","method","LogLevel","silly","createLog","Logging","setFactory","object","FabricContractSequence","options","current","READ","SequenceModel","startWith","sequence","repo","read","NotFoundError","increment","count","incrementBy","next","toIncrementBy","Number","BigInt","String","Serial","instance","generate","UUID","seq","update","create","ConflictError","argz","UnsupportedError","typeName","FabricContractPaginator","CouchDBPaginator","size","prepare","rawStatement","isPreparedStatement","pagePrepared","_recordCount","_totalPages","Math","ceil","validatePage","_bookmark","PagingError","docs","d","revert","parseValue","direction","OrderDirection","DSC","ASC","_currentPage","OverflowError","BalanceError","AllowanceError","MissingContextError","NotInitializedError","createdByOnFabricCreateUpdate","data","user","getID","pkFabricOnCreate","defineProperty","enumerable","writable","configurable","FabricContractAdapter","CouchDBAdapter","getClient","textDecoder","TextDecoder","serializer","repository","Paginator","scope","alias","composedKey","createCompositeKey","putState","parseError","readState","delete","deleteState","forPrivate","collection","toOverride","queryResult","queryResultPaginated","fn","Proxy","target","prop","receiver","includes","apply","thisArg","argsList","putPrivateData","deletePrivateData","getPrivateData","getPrivateDataQueryResult","iterator","reachedBookmark","lastKey","res","recordKey","recordValue","Key","Record","close","fetchedRecordsCount","done","Reflect","SerializationError","getState","getQueryResult","_id","$gt","$gte","getQueryResultWithPagination","mergeModels","extract","finalModel","pop","decode","buffer","flags","operation","baseFlags","segregated","correlationId","getTxID","clientIdentity","index","resultIterator","isHistory","allResults","jsonRes","TxId","txId","Timestamp","Value","err","docsOnly","Statement","createAll","tableLabel","updateAll","split","segregate","mappedProp","columnName","isReserved","record","transient","ob","createPrefix","updatePrefix","records","updateAllPrefix","reason","filter","a","clear","message","BadRequestError","MigrationError","ObserverError","AuthorizationError","ForbiddenError","ConnectionError","decoration","Decoration","flavouredAs","CREATED_BY","define","onCreate","propMetadata","UPDATED_BY","onCreateUpdate","COLUMN","extend","FabricProperty","ValidationKeys","DATE","Property","chain","constr","prototype","getPrototypeOf","FabricObject","setCurrent","DeterministicSerializer","self","o","bind","deserialization","className","Date","FabricCrudContract","Contract","initialized","forModel","listBy","findOneBy","getTransientData","merge","transientMap","getTransient","has","deleteAll","readAll","init","getName","healthcheck","Ctx","overrides","READ_ALL","getOp","SerializedCrudContract","parsedKeys","modelList","cond","add","b","c","sub","__decorate","Transaction","__metadata","ERC20Token","BaseModel","column","required","ERC20Wallet","Allowance","Owner","propertyKey","descriptor","originalMethod","acountId","tokens","execute","ERC20Events","FabricERC20Contract","walletRepository","tokenRepository","allowanceRepository","TokenName","CheckInitialized","Symbol","symbol","Decimals","decimals","TotalSupply","wallets","total","wallet","balance","BalanceOf","Transfer","to","_transfer","TransferFrom","BurnFrom","spender","allowance","_getAllowance","currentAllowance","updatedAllowance","newAllowance","fromWallet","fromBalance","toWallet","newToWallet","code","token","toBalance","fromUpdatedBalance","toUpdatedBalance","updatedFromWallet","updatedToWallet","transferEvent","refresh","TRANSFER","catch","Approve","approvalEvent","APPROVAL","allowanceCondition","Initialize","Mint","amount","minter","minterWallet","updatedBalance","updatedminter","newWallet","Burn","currentBalance","account","accountWallet","updatedaccount","ClientAccountBalance","clientAccountID","clientWallet","ClientAccountID","contracts","VERSION","PACKAGE_NAME","registerLibrary"],"mappings":"+2CAkCM,MAAOA,WAA8BC,EAKzC,WAAAC,GACEC,OACD,CAOD,QAAIC,GACF,OAAOC,KAAKC,IAAI,OACjB,CAOD,aAAaC,GACX,OAAOF,KAAKD,KAAKI,kBAClB,CAOD,YAAIC,GACF,OAAOJ,KAAKC,IAAI,WACjB,CAEQ,QAAAI,GACP,MAAO,cAAaL,KAAKD,KAAO,aAAe,eAChD,EC1BG,MAAOO,WAAkDC,EAM7D,WAAAV,CACUW,EAIF,CACJC,EAAcC,OACdD,EAAcE,OACdF,EAAcG,OACdC,EAAsBC,WACtBD,EAAsBE,WACtBF,EAAsBG,aAGxBlB,QAbQE,KAAeQ,gBAAfA,CAcT,CAeQ,qBAAMS,CACbC,EACAC,EACAC,KACGC,GAEH,MAAMC,IAAEA,EAAGC,IAAEA,GAAQC,EAAQC,OAC3BJ,EACArB,KAAKiB,kBAEDlB,KAAEA,GAASwB,GACVG,EAAOC,GAAWN,EACnBO,EAAyB,iBAAVV,EAAqBA,EAAQA,EAAMW,KACxD,IAA6C,IAAzC7B,KAAKQ,gBAAgBsB,QAAQX,GAAe,CAC9CG,EAAIS,MAAM,YAAYZ,WACtB,MAAMa,ICpFVJ,EACAT,EACAO,KAEA,MAAMO,EAAS,CAACL,EAAOT,GAEvB,OADIO,GAAOO,EAAOC,KAAKR,GAChBO,EAAOE,KAAK,IACrB,ED6EwBC,CAAwBR,EAAOT,EAAOO,GACxD3B,EAAKsC,SAASL,EAAWM,OAAOC,KAAKC,KAAKC,UAAU,CAAErB,GAAIA,KAC3D,MACCrB,EAAKsC,SAASlB,EAAOmB,OAAOC,KAAKC,KAAKC,UAAUd,IAEnD,EERG,MAAOe,WAAkDC,EAY7D,WAAA9C,CACE+C,EACA1B,EACU2B,GAEV/C,MAAM8C,EAAS1B,GAFLlB,KAAa6C,cAAbA,EAXO7C,KAAU8C,WAAGC,OAAOC,OAAO,CAAA,EAAIlD,MAAkB,WAAG,CACrEmD,kBAAkB,EAClBC,gBAAgB,EAChBC,oBAAoB,EACpBC,2BAA2B,EAC3BC,4BAA4B,GAS7B,CAEkB,qBAAMC,CACvBC,KACGlC,GAEH,MAAMmC,QAAoB5D,EAAQyB,KAChCZ,EAAcC,OACdV,KAAKyD,MACLpC,EACArB,KAAK4C,QACL5C,KAAK8C,YAAc,CAAE,GAEjBxB,EAAMkC,EAAYE,QAAQC,OAAOC,IAAI5D,KAAKsD,iBAC1CJ,EAAiBM,EAAYE,QAAQzD,IAAI,kBACzC4D,EAAiBL,EAAYE,QAAQzD,IAAI,oBAC/C,IAAKsD,EAAOO,OAAQ,MAAO,CAACP,KAAWC,EAAYnC,MACnD,MAAM0C,EAAOC,EAAMC,YAAYV,EAAO,IACtCjC,EAAI4C,KAAK,qBAAqB1B,KAAKC,UAAUsB,IAC7C,IAAII,EAAgD,GA2CpD,GA1CIJ,EAAKK,MACFL,EAAKlC,OAAMkC,EAAKlC,KAAOmC,EAAMK,aAAad,EAAO,GAAI,OAC1DY,cACQnE,KAAK4C,QAAQ0B,SAASP,IAC5BQ,MAAMhB,EAAOO,UAAWN,EAAYnC,MACtCC,EAAI4C,KAAK,iBAAiBC,IAE1BA,EAAMZ,EAAOiB,IAAI,CAACC,EAAGC,KACnB,QAA0B,IAAfD,EAAEzE,KAAK2E,IAChB,MAAM,IAAIC,EACR,oDAAoDF,GAExD,OAAOD,EAAEzE,KAAK2E,MAIlBpB,QAAesB,QAAQC,IACrBvB,EAAOiB,IAAIO,MAAON,EAAGC,KACnBD,EAAI,IAAIzE,KAAKyD,MAAMgB,GACfV,EAAKK,OACPK,EAAEzE,KAAK2E,IACS,WAAdZ,EAAKK,MAEDL,EAAKiB,UADLb,EAAIO,GAGF,GAAGD,EAAEzE,KAAK2E,KAIpBrD,EAAI4C,KAAK,kBAAkB1B,KAAKC,UAAUgC,IACrCvB,SACG+B,EACJjF,KACAwD,EAAYE,QACZe,EACAhE,EAAcC,OACdD,EAAcyE,IAEXT,MAINZ,EAAgB,CACnB,MAAMsB,EACJ3B,EAAYE,QAAQzD,IAAI,gCAAkC,GAEtDmF,QAAeP,QAAQC,IAC3BvB,EAAOiB,IAAKC,GAAMI,QAAQQ,QAAQZ,EAAEa,aAAaH,MAG7CI,EAAgBC,EAAoBJ,GAE1C,GAAIG,EAAe,MAAM,IAAIE,EAAgBF,EAC9C,CACD,MAAO,CAAChC,KAAWC,EAAYnC,KAChC,CAEQ,gBAAMqE,CACbC,EACAC,EACAC,EAA+C,CAC7CC,OAAQ,EACRC,MAAO,OAEN1E,GAGH,IAAIyE,OAAEA,EAAME,SAAEA,EAAQD,MAAEA,GAAUF,EAClC,IAAKC,IAAWE,EACd,MAAM,IAAIC,EAAW,yCACvB,MAAMzC,QAAoB5D,EAAQyB,KAChC6E,EAAsBC,QACtBnG,KAAKyD,MACLpC,EACArB,KAAK4C,QACL5C,KAAK8C,YAAc,CAAE,IAEjBxB,IAAEA,EAAG8E,QAAEA,GAAYpG,KAAKyB,OAAO+B,EAAYnC,KAAMrB,KAAK0F,YAK5D,IAAIW,EACJ,GALA/E,EAAIgF,QACF,cAActC,EAAMuC,UAAUvG,KAAKyD,yBAAyBsC,KAI1DC,EACFK,QAAkBrG,KAAKwG,SAAS,CAC9BnD,4BAA4B,EAC5BD,2BAA2B,IAE1BqD,SACAC,MAAM1G,KAAK2G,KAAK3C,EAAMW,GAAG3E,KAAKyD,QAAQmD,GAAGZ,IACzCa,QAAQ,CAAClB,EAAKC,IACdkB,SAASf,KAAoBK,GAChCN,EAAS,MACJ,KAAIA,EAST,MAAM,IAAIG,EAAW,yCARrBI,QAAkBrG,KAAKwG,SAAS,CAC9BnD,4BAA4B,EAC5BD,2BAA2B,IAE1BqD,SACAI,QAAQ,CAAClB,EAAKC,IACdkB,SAASf,KAAoBK,EAGjC,CACD,MAAMW,QAAcV,EAAUW,KAAKlB,KAAWM,GAC9C,OAAOC,EAAUY,UAAUF,EAC5B,CAEQ,eAAMG,CACbrF,KACGR,GAEH,IAAKsB,EAAWwE,WAAWnH,KAAM6B,GAC/B,MAAM,IAAIoE,EAAW,wCAAwCpE,GAC/D,MAAM2B,QAAoB5D,EAAQyB,KAChC+F,EAAgBC,UAChBrH,KAAKyD,MACLpC,EACArB,KAAK4C,QACL5C,KAAK8C,YAAc,CAAE,GAEnBU,EAAYE,QAAQC,QACtBH,EAAYE,QAAQC,OAAOO,KAAK,mBAAmBrC,OAAUR,KAE/D,MAAMC,IAAEA,EAAG8E,QAAEA,GAAYpG,KAAKyB,OAAO+B,EAAYnC,KAAMrB,KAAKkH,WAG5D,IAAII,EAFJhG,EAAIgF,QAAQ,gCAAgCzE,eAAkBuE,KAG9D,IACEkB,QAAgBtH,KAAa6B,MAASuE,EACvC,CAAC,MAAOmB,GACP,GAAIA,aAAaC,EAAW,MAAMD,EAClC,MAAM,IAAI3C,EACR,wCAAwC/C,eAAkBuE,MAAYmB,IAEzE,CAED,OAAOD,CACR,CAOQ,eAAA/G,GACP,OAAO,IAAID,EACZ,CAYQ,qBAAMW,CACbW,EACAT,EACAC,KACGC,GAEH,IAAKrB,KAAK6C,gBAAwD,IAAvC7C,KAAK6C,cAAcf,QAAQX,GACpD,aAAarB,MAAMmB,gBAAgBW,EAAOT,EAAOC,KAAOC,EAC3D,ECnQG,MAAOoG,WAA4CC,EAKvD,WAAA7H,CAAY+C,GACV9C,MAAM8C,EACP,CAEQ,SAAM+E,CAAOC,KAAyBvG,GAC7C,MAAME,IAAEA,GAAQvB,KAAKyB,OAAOJ,EAAMrB,KAAK2H,KAEjCE,QAAuB7H,KAAK4C,QAAQ+E,IAAIC,GAAU,EAAMrG,GAExDuG,EAAS9D,EAAMW,GAAG3E,KAAK+H,cACvB3D,EAAO4D,GAAS/H,IACpBD,KAAK+H,aACLC,GAASrC,IAAIsC,EAAOC,GAAIJ,KACvB1D,KAEH,OAAKpE,KAAKmI,eAEHN,EADEA,EAAQrD,IAAK4D,GAAMpI,KAAKqI,cAAcD,EAAGN,EAAQ1D,EAAM7C,GAEjE,CAEQ,KAAA+G,GACP,MAAMC,EAA2B,CAAA,EACjCA,EAAUC,EAAYC,OAAS,GAC/BF,EAAUC,EAAYC,OAASzE,EAAMuC,UAAUvG,KAAK+H,cACpD,MAAMW,EAAoB,CAAEC,SAAUJ,GAGtC,GAFIvI,KAAKmI,iBAAgBO,EAAME,OAAS5I,KAAKmI,gBAEzCnI,KAAK6I,eAAgB,CACvB,MAAMC,EAA2B9I,KAAK+I,eACpCC,EAAUC,IACRjJ,KAAK6I,eACLG,EAAUE,UAAaV,EAAYC,OAAkBU,GACnDT,EAAMC,SAASH,EAAYC,UAG/BE,SACIS,EAAerG,OAAOsG,KAAKP,GACjC,GAC0B,IAAxBM,EAAatF,SACqD,IAAlEf,OAAOuG,OAAOC,GAAsBzH,QAAQsH,EAAa,IAEzD,OAAQA,EAAa,IACnB,KAAKG,EAAqBC,IACxBV,EAAUS,EAAqBC,KAAO,IACjCzG,OAAOuG,OACRR,EAAUS,EAAqBC,MAC/BC,OAAO,CAACC,EAAwBC,KAChC,MAAMN,EAAOtG,OAAOsG,KAAKM,GACzB,GAAoB,IAAhBN,EAAKvF,OACP,MAAU8F,MACR,kDAEJ,MAAMC,EAAIR,EAAK,GAIf,OAHIQ,IAAMN,EAAqBC,IAC7BE,EAAMxH,QAASyH,EAAIE,IAChBH,EAAMxH,KAAKyH,GACTD,GACN,KAELhB,EAAMC,SAAWG,EACjB,MACF,KAAKS,EAAqBO,GAAI,CAC5B,MAAMC,EAAsB,CAAA,EAC5BA,EAAER,EAAqBC,KAAO,CAC5BV,KACG/F,OAAOiH,QAAQtB,EAAMC,UAAUnE,IAAI,EAAEmB,EAAKgE,MAC3C,MAAMrC,EAA2B,CAAA,EAEjC,OADAA,EAAO3B,GAAOgE,EACPrC,KAGXoB,EAAMC,SAAWoB,EACjB,KACD,CACD,QACE,MAAUH,MAAM,kCAGpB7G,OAAOiH,QAAQlB,GAAWmB,QAAQ,EAAEtE,EAAKgE,MACnCjB,EAAMC,SAAShD,GAInB+C,EAAMC,SAAShD,GAAOgE,GAG3B,CAED,GAAI3J,KAAKkK,gBAAiB,CACxBxB,EAAMyB,KAAOzB,EAAMyB,MAAQ,GAC3BzB,EAAMC,SAAWD,EAAMC,UAAa,CAAA,EACpC,MAAOA,EAAUyB,GAASpK,KAAKkK,gBAIzBG,EAAW,CAAA,EACjBA,EAAI1B,GAAYyB,EACf1B,EAAMyB,KAAejI,KAAKmI,GACtB3B,EAAMC,SAASA,KAClBD,EAAMC,SAASA,GAAY,GAC1BD,EAAMC,SAASA,GAA4B2B,EAAgBC,QAC1D,KAEL,CAMD,OAJIvK,KAAKwK,gBAAe9B,EAAM3C,MAAQ/F,KAAKwK,eAEvCxK,KAAKyK,iBAAgB/B,EAAMgC,KAAO1K,KAAKyK,gBAEpC/B,CACR,ECpJH,IAAYiC,GAgBAC,GAhBZ,CAAYD,IAEVA,EAAA,QAAA,UACAA,EAAA,OAAA,SAEAA,EAAA,OAAA,UACAA,EAAA,QAAA,WACAA,EAAA,eAAA,gBACD,EARD,CAAYA,KAAAA,GAQX,CAAA,IAQD,CAAYC,IAEVA,EAAA,KAAA,OACD,EAHD,CAAYA,KAAAA,GAGX,CAAA,IAQM,MAAMC,GAAgB,aC3BvB,MAAOC,WAEHC,EACR,WAAAlL,GACEC,OACD,CAGQ,WAAAkL,CAAYC,EAAa1E,GAyBhC,OAxBwB/D,KAAK0I,MAAMD,EAyBpC,CAEQ,SAAAhE,CAAUkE,EAAUC,GAAY,GAMvC,OAJkBC,QAAQ,+BAInB5I,CAFmB4I,QAAQ,sBAEjBC,CADQtL,KAAKuL,aAAaJ,EAAOC,IAEnD,CAEkB,YAAAG,CAAaJ,EAAUC,GAAqB,GAG7D,MAAMI,EAAmCzI,OAAOC,OAAO,CAAE,EAAEmI,GAC3D,IAAIM,EACJ,IACEA,EAAWzD,GAAS0D,UAAUP,EAAMtL,YAErC,CAAC,MAAO8L,GACPF,OAAWG,CACZ,CAID,SAASL,EAEPM,GAEA,MAAmB,iBAARA,EAAyBA,EAChCC,MAAMC,QAAQF,GAAaA,EAAIrH,IAAI+G,GAChCvL,KAAKuL,aAAaM,EAC1B,CAID,OAdIT,IACFI,EAAYQ,EAAUC,QAAUR,GAAYN,EAAMtL,YAAYgC,MAUhEmC,EAAMkI,UAAUf,GAAOlB,QAAS7B,IAC9BoD,EAAYpD,GAAKmD,EAAaY,KAAKnM,KAAMwL,EAAYpD,MAEhDoD,CACR,ECnCG,MAAOY,WAAuBC,GAMlC,WAAAxM,CACE6D,EACA4I,EACA/K,GAEAzB,MAAM4D,EAAS4I,GAKbtM,KAAK2D,OAHFpC,EAGWA,EAAIgL,QAAQC,UAAU9I,GAFtB,IAAI2I,GAAW3I,EAAS4I,EAIzC,CAUkB,GAAAhL,CACjBmL,EACAC,EACAC,GAEA,GACEC,GAAiB5M,KAAK6M,OAAO,UAC7BD,GAAiBH,GAEjB,OAEF,IAAIK,EACJ,OAAQL,GACN,KAAKM,GAAS7I,KACZ4I,EAAS9M,KAAK2D,OAAOO,KACrB,MACF,KAAK6I,GAASzG,QACZwG,EAAS9M,KAAK2D,OAAO2C,QACrB,MACF,KAAKyG,GAAShL,MACZ+K,EAAS9M,KAAK2D,OAAO5B,MACrB,MACF,KAAKgL,GAASpB,MACZmB,EAAS9M,KAAK2D,OAAOgI,MACrB,MACF,KAAKoB,GAASC,MACZF,EAAS9M,KAAK2D,OAAOqJ,MACrB,MACF,QACE,MAAM,IAAIpI,EAAc,qBAE5BkI,EAAOX,KAAKnM,KAAK2D,OAAQ3D,KAAKiN,UAAUR,EAAOC,EAAKC,GACrD,EA0BHO,GAAQC,WAbuB,CAC7BC,EACAP,EACAtL,IAEO,IAAI6K,GACTgB,GAAUhB,GAAevK,KACzBgL,GAAU,CAAA,EACVtL,IC5DE,MAAO8L,WAA+B/I,EAK1C,WAAAzE,CAAYyN,EAA0B1K,GACpC9C,MAAMwN,EAAS1K,EAChB,CAQQ,aAAM2K,IACVlM,GAEH,MAMME,SANoB3B,EAAQyB,KAChCZ,EAAc+M,KACdC,EACApM,EACArB,KAAK4C,UAEiBc,SAClB7B,KAAEA,EAAI6L,UAAEA,GAAc1N,KAAKsN,QACjC,IACE,MAAMK,QAAgC3N,KAAK4N,KAAKC,KAAKhM,EAAgBN,GACrE,OAAOvB,KAAKkL,MAAMyC,EAASJ,QAC5B,CAAC,MAAOhG,GACP,GAAIA,aAAauG,EAAe,CAC9B,QAAyB,IAAdJ,EACT,MAAM,IAAI9I,EACR,6DAEJ,IACE,OAAO5E,KAAKkL,MAAMwC,EACnB,CAAC,MAAOnG,GACP,MAAM,IAAI3C,EACR,8CAA8C8I,MAAcnG,IAE/D,CACF,CACD,MAAM,IAAI3C,EACR,iDAAiD/C,MAAS0F,IAE7D,CACF,CAUkB,eAAMwG,CACvBR,EACAS,EACAzM,GAEA,MAAM6C,KAAEA,EAAI6J,YAAEA,EAAWpM,KAAEA,GAAS7B,KAAKsN,QACzC,IAAIY,EACJ,MAAMC,EAAgBH,GAASC,EAC/B,GAAIE,EAAgBF,IAAgB,EAClC,MAAM,IAAIrJ,EACR,iEAAiEqJ,GAMrE,OAHkB,mBAAT7J,GAAwBA,GAAcvC,KACxCuC,EAAavC,KACduC,GAEJ,KAAKgK,OAAOvM,KACVqM,EAAQlO,KAAKkL,MAAMqC,GAAsBY,EACzC,MACF,KAAKE,OAAOxM,KACVqM,EAAQlO,KAAKkL,MAAMqC,GAAsBc,OAAOF,GAChD,MACF,KAAKG,OAAOzM,KACVqM,EAAOlO,KAAKkL,MAAMqC,GAClB,MACF,IAAK,SACHW,EAAOK,EAAOC,SAASC,SAASlB,GAChC,MACF,IAAK,OACHW,EAAOQ,EAAKF,SAASC,SAASlB,GAC9B,MACF,QACE,MAAM,IAAI3I,EAAc,uBAE5B,IAAI+J,EAIJ,IACEA,QAAY3O,KAAK4N,KAAKgB,OACpB,IAAInB,EAAc,CAAErM,GAAIS,EAAM0L,QAASW,IACvC3M,EAEH,CAAC,MAAOgG,GACP,KAAMA,aAAauG,GACjB,MAAMvG,EAER,IACEoH,QAAY3O,KAAK4N,KAAKiB,OACpB,IAAIpB,EAAc,CAAErM,GAAIS,EAAM0L,QAASW,IACvC3M,EAEH,CAAC,MAAOgG,GACP,KAAMA,aAAauH,IAA2B,SAAT1K,EAAiB,MAAMmD,EAC5D,OAAOvH,KAAK+N,UAAUR,EAASS,EAAOzM,EACvC,CACF,CAED,OAAOoN,EAAIpB,OACZ,CAQQ,UAAMW,IACVa,GAEH,MAAMvL,QAAoB5D,EAAQyB,KAChCZ,EAAcE,OACd8M,EACAsB,EACA/O,KAAK4C,UAEDc,QAAEA,EAAOrC,KAAEA,GAASmC,EACpB+J,QAAgBvN,KAAKuN,WAAWlM,GACtC,OAAOrB,KAAK+N,UAAUR,OAAS3B,EAAWlI,EAC3C,CAUQ,WAAMa,CACbyJ,KACGe,GAEH,MAAMvL,QAAoB5D,EAAQyB,KAChCZ,EAAcE,OACd8M,EACAsB,EACA/O,KAAK4C,UAEDc,QAAEA,EAAOrC,KAAEA,GAASmC,EACpB+J,QAAiBvN,KAAKuN,WAAWlM,GACjC4M,EAAcjO,KAAKkL,MACvBlL,KAAKsN,QAAQW,aAETC,QAAuClO,KAAK+N,UAChDR,EACCvN,KAAKkL,MAAM8C,GAAoBC,EAChCvK,GAEIa,EAAsC,GAC5C,IAAK,IAAIG,EAAY,EAAQsJ,GAALtJ,EAAYA,IAClCH,EAAMrC,KAAKqL,EAAUU,EAAejO,KAAKkL,MAAMxG,IAGjD,GAA0B,SAAtB1E,KAAKsN,QAAQlJ,MAAyC,WAAtBpE,KAAKsN,QAAQlJ,KAC/C,MAAM,IAAI4K,EACR,QAAQhP,KAAKsN,QAAQlJ,qDAEzB,MAAM6K,EACyB,mBAAtBjP,KAAKsN,QAAQlJ,MACnBpE,KAAKsN,QAAQlJ,MAAcvC,KACvB7B,KAAKsN,QAAQlJ,KAAavC,KAC3B7B,KAAKsN,QAAQlJ,KAEnB,GAAIG,EAAMA,EAAMT,OAAS,KAAOoK,GAAqB,WAAbe,EACtC,MAAM,IAAIrK,EAAc,2BAC1B,OAAOL,CACR,ECvNG,MAAO2K,WAGHC,EASR,WAAAtP,CACE+C,EACA8F,EACA0G,EACAlO,GAEApB,MAAM8C,EAAS8F,EAAO0G,EAAMlO,EAC7B,CAQkB,OAAAmO,CAAQC,GACzB,MAAM5G,EAAoB3F,OAAOC,OAAO,CAAE,EAAEsM,GAK5C,OAJI5G,EAAM3C,QAAO/F,KAAK+F,MAAQ2C,EAAM3C,OAEpC2C,EAAM3C,MAAQ/F,KAAKoP,KAEZ1G,CACR,CA6DQ,UAAM1B,CACbA,EAAe,KACZ3F,GAEH,MAAM+E,QAAEA,EAAO7E,IAAEA,GAAQvB,KAAK4C,QAAgB,OAAEvB,EAAMrB,KAAKgH,MAC3D,GAAIhH,KAAKuP,sBAAuB,OAAOvP,KAAKwP,aAAaxI,KAASZ,GAClE,MAAMc,EAAYnE,OAAOC,OAAO,CAAA,EAAIhD,KAAKkH,WAEzC,IAAKlH,KAAKyP,eAAiBzP,KAAK0P,YAAa,CAC3C1P,KAAK0P,YAAc1P,KAAKyP,aAAe,EACvC,MAAM5H,QACG7H,KAAK4C,QAAQ+E,IAClB,IAAKT,EAAWnB,WAAO6F,IACvB,EACArK,IACI,GAER,GADAvB,KAAKyP,aAAe5H,EAAQ/D,OACxB9D,KAAKyP,aAAe,EAAG,CACzB,MAAML,EAAOlI,GAAWnB,OAAS/F,KAAKoP,KACtCpP,KAAK0P,YAAcC,KAAKC,KAAK5P,KAAKyP,aAAeL,EAClD,CACF,CAID,GAFApP,KAAK6P,aAAa7I,GAEL,IAATA,EAAY,CACd,IAAKhH,KAAK8P,UACR,MAAM,IAAIC,EAAY,iDACxB7I,EAAoB,SAAIlH,KAAK8P,SAC9B,CACD,MAAME,QAAqBhQ,KAAK4C,QAAQ+E,IAAIT,GAAW,EAAO3F,GAE9D,IAAKvB,KAAKkB,MAAO,MAAM,IAAI6O,EAAY,+BACvC,MAAM3O,EAAK4C,EAAMW,GAAG3E,KAAKkB,OACnBkD,EAAO4D,GAAS/H,IACpBD,KAAKkB,MACL8G,GAASrC,IAAIsC,EAAOC,GAAI9G,KACvBgD,KACGyD,EACJX,EAAU0B,QAAU1B,EAAU0B,OAAO9E,OACjCkM,EACAA,EAAKxL,IAAKyL,GACDjQ,KAAK4C,QAAQsN,OAClBD,EACAjQ,KAAKkB,MACLoD,EAAS6L,WAAW/L,EAAM6L,EAAE7O,SAC5BwK,EACArK,IAGJ6O,EAAYlJ,EAAUiD,OAAO,IAAMkG,EAAeC,IAIxD,OAHAtQ,KAAK8P,UACHjI,EAAQuI,IAAcC,EAAeE,IAAM1I,EAAQ/D,OAAS,EAAI,GAAG1C,GACrEpB,KAAKwQ,aAAexJ,EACba,CACR,EC3KG,MAAO4I,WAAsB7L,EACjC,WAAA/E,CAAY6M,GACV5M,MAAM4M,EAAK+D,GAAc5O,KAC1B,EAaG,MAAO6O,WAAqB9L,EAChC,WAAA/E,CAAY6M,GACV5M,MAAM4M,EAAKgE,GAAa7O,KACzB,EAaG,MAAO8O,WAAuB/L,EAClC,WAAA/E,CAAY6M,GACV5M,MAAM4M,EAAKiE,GAAe9O,KAC3B,EA2CG,MAAO+O,WAA4BhM,EACvC,WAAA/E,CAAY6M,GACV5M,MAAM4M,EAAKkE,GAAoB/O,KAAM,IACtC,EAsCG,MAAOgP,WAA4BrJ,EACvC,WAAA3H,CAAY6M,GACV5M,MAAM+Q,GAAoBhP,KAAM6K,EAAK,IACtC,ECzCI3H,eAAe+L,GAMpBpN,EACAqN,EACApL,EACAwF,GAEA,IACE,MAAM6F,EAAOtN,EAAQzD,IAAI,YACzBkL,EAAMxF,GAAOqL,EAAKC,OAEnB,CAAC,MAAO1J,GACP,MAAM,IAAIyH,EACR,iEAEH,CACH,CA8BOjK,eAAemM,GAKpBxN,EACAqN,EACApL,EACAwF,GAEA,IAAK4F,EAAK3M,MAAQ+G,EAAMxF,GACtB,OAgBF,IAAIgI,EADCoD,EAAKlP,OAAMkP,EAAKlP,KAAOmC,EAAMK,aAAa8G,EAAO,OAEtD,IACEwC,QAAkB3N,KAAK4C,QAAQ0B,SAASyM,EACzC,CAAC,MAAOxJ,GACP,MAAM,IAAI3C,EACR,kCAAkCmM,EAAKlP,SAAS0F,IAEnD,CAED,MAAM2G,QAAaP,EAASO,KAAKxK,GAjB/BX,OAAOoO,eAkBUhG,EAAOxF,EAlBmB,CACzCyL,YAAY,EACZC,UAAU,EACVC,cAAc,EACdlH,MAcqC8D,GAC3C,CAuCM,MAAOqD,WAA8BC,EAKtB,SAAAC,GACjB,MAAM,IAAIzC,EAAiB,8CAC5B,QAIchP,KAAA0R,YAAc,IAAIC,YAAY,OAAQ,QAE3B3R,KAAA4R,WAAa,IAAI9G,EAAgC,CAelE,UAAA+G,GAMP,OAAOnP,EACR,CAEQ,SAAAoP,CACPpJ,EACA0G,EACAlO,GAEA,OAAO,IAAIgO,GAAwBlP,KAAM0I,EAAO0G,EAAMlO,EACvD,CAQQ,cAAMoD,CAASgJ,GACtB,OAAO,IAAID,GAAuBC,EAAStN,KAC5C,CAQD,WAAAH,CAAYkS,EAAaC,GACvBlS,MAAMiS,EAAOlH,GAAemH,GA3CFhS,KAAOJ,QACjCD,EA2CD,CAEQ,IAAIkN,KAAyBxL,GACpC,OAAOvB,MAAM8D,IAAIiJ,KAAWxL,EAC7B,CAYQ,YAAMwN,CACb3N,EACAE,EACA+J,KACG9J,GAEH,MAAME,IAAEA,EAAGD,IAAEA,GAAQtB,KAAKyB,OAAOJ,EAAMrB,KAAK6O,QAC5CvN,EAAI4C,KAAK,+BAA+B7C,GACxC,MAAMkF,EAAYvC,EAAMuC,UAAUrF,GAClC,IACEI,EAAI4C,KAAK,mBAAmBqC,mBAA2BnF,KACvD,MAAM6Q,EAAc1Q,EAAIxB,KAAKmS,mBAAmB3L,EAAW,CAAQnF,EAAPkN,KAC5DnD,QAAcnL,KAAKmS,SAASF,EAAa9G,EAAO5J,EACjD,CAAC,MAAOgG,GACP,MAAMvH,KAAKoS,WAAW7K,EACvB,CAED,OAAO4D,CACR,CAUQ,UAAM0C,CACb3M,EACAE,KACGC,GAEH,MAAME,IAAEA,EAAGD,IAAEA,GAAQtB,KAAKyB,OAAOJ,EAAMrB,KAAK6N,MAC5CvM,EAAI4C,KAAK,6BAA6B7C,GACtC,MAAMkF,EAAYvC,EAAMuC,UAAUrF,GAElC,IAAIiK,EACJ,IACE,MAAM8G,EAAc1Q,EAAIxB,KAAKmS,mBAAmB3L,EAAW,CAAQnF,EAAPkN,KAC5DnD,QAAcnL,KAAKqS,UAAUJ,EAAa1Q,EAC3C,CAAC,MAAOgG,GACP,MAAMvH,KAAKoS,WAAW7K,EACvB,CAED,OAAO4D,CACR,CAYQ,YAAMyD,CACb1N,EACAE,EACA+J,KACG9J,GAEH,MAAME,IAAEA,EAAGD,IAAEA,GAAQtB,KAAKyB,OAAOJ,EAAMrB,KAAK4O,QACtCrI,EAAYvC,EAAMuC,UAAUrF,GAElC,IACEI,EAAIgF,QAAQ,qBAAqBC,mBAA2BnF,KAC5D,MAAM6Q,EAAc1Q,EAAIxB,KAAKmS,mBAAmB3L,EAAW,CAAQnF,EAAPkN,KAC5DnD,QAAcnL,KAAKmS,SAASF,EAAa9G,EAAO5J,EACjD,CAAC,MAAOgG,GACP,MAAMvH,KAAKoS,WAAW7K,EACvB,CAED,OAAO4D,CACR,CAUD,YAAM,CACJjK,EACAE,KACGC,GAEH,MAAME,IAAEA,EAAGD,IAAEA,EAAG8E,QAAEA,GAAYpG,KAAKyB,OAAOJ,EAAMrB,KAAKsS,QAC/C/L,EAAYvC,EAAMuC,UAAUrF,GAClC,IAAIiK,EACJ,IACE,MAAM8G,EAAc1Q,EAAIxB,KAAKmS,mBAAmB3L,EAAW,CAAQnF,EAAPkN,KAC5DnD,QAAcnL,KAAK6N,KAAK3M,EAAOE,KAAOgF,GACtC9E,EAAIgF,QAAQ,0BAA0BlF,UAAWmF,iBAC3CvG,KAAKuS,YAAYN,EAAa1Q,EACrC,CAAC,MAAOgG,GACP,MAAMvH,KAAKoS,WAAW7K,EACvB,CAED,OAAO4D,CACR,CAES,iBAAMoH,CAAYnR,EAAYsC,GACtC,MAAMnC,IAAEA,GAAQvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKuS,mBACtChR,EAAIxB,KAAKwS,YAAYnR,EAC5B,CAED,UAAAoR,CAAWC,GACT,MAAMC,EAAa,CACjB1S,KAAKmS,SACLnS,KAAKqS,UACLrS,KAAKuS,YACLvS,KAAK2S,YACL3S,KAAK4S,sBACLpO,IAAKqO,GAAOA,EAAGhR,MACjB,OAAO,IAAIiR,MAAM9S,KAAM,CACrBC,IAAG,CAAC8S,EAAQC,EAAMC,IACXP,EAAWQ,SAASF,GAElB,IAAIF,MAAOC,EAAeC,GAAO,CACtC,WAAMG,CAAMN,EAAIO,EAASC,GACvB,OAAQL,GACN,IAAK,WAAY,CACf,MAAOjT,EAAMqB,EAAI+J,GAASkI,EAE1B,aADMtT,EAAKuT,eAAeb,EAAYrR,EAAGf,WAAY8K,GAC9CA,CACR,CACD,IAAK,cAAe,CAClB,MAAOpL,EAAMqB,GAAMiS,EACnB,OAAQtT,EAAuBwT,kBAC7Bd,EACArR,EAEH,CACD,IAAK,YAAa,CAChB,MAAOrB,EAAMqB,GAAMiS,EACnB,OAAOtT,EAAKyT,eAAef,EAAYrR,EACxC,CACD,IAAK,cAAe,CAClB,MAAOrB,EAAM6H,GAAYyL,EACzB,OAAOtT,EAAK0T,0BAA0BhB,EAAY7K,EACnD,CACD,IAAK,uBAAwB,CAC3B,MAAO7H,EAAM6H,EAAU7B,EAAO2E,GAAQ2I,EAChCK,QACJ3T,EACA0T,0BAA0BhB,EAAY7K,GAClCC,EAAiB,GACvB,IAAImG,EAAQ,EACR2F,GAAkBjJ,EAClBkJ,EAAyB,KAE7B,OAAa,CACX,MAAMC,QAAYH,EAASxF,OAE3B,GAAI2F,EAAIzJ,OAASyJ,EAAIzJ,MAAMA,MAAM/J,WAAY,CAC3C,MAAMyT,EAAYD,EAAIzJ,MAAMzE,IACtBoO,EAAeF,EAAIzJ,MAAMA,MAAc/J,SAC3C,QAIF,IAAKsT,EAAiB,CAChBG,IAAcpJ,GAAMrK,aACtBsT,GAAkB,GAEpB,QACD,CASD,GAPA9L,EAAQ3F,KAAK,CACX8R,IAAKF,EACLG,OAAQzR,KAAK0I,MAAM6I,KAErBH,EAAUE,EACV9F,IAEIA,GAASjI,EAEX,aADM2N,EAASQ,QACR,CACLR,SACE7L,EACF4D,SAAU,CACR0I,oBAAqBtM,EAAQ/D,OAC7BkC,SAAU4N,GAIjB,CAED,GAAIC,EAAIO,KAEN,aADMV,EAASQ,QACR,CACLR,SACE7L,EACF4D,SAAU,CACR0I,oBAAqBtM,EAAQ/D,OAC7BkC,SAAU,IAIjB,CACF,CACD,QACE,MAAM,IAAIpB,EACR,+BAAsCoO,GAG7C,IAzFMqB,QAAQpU,IAAI8S,EAAQC,EAAMC,IA6FxC,CAES,cAAMd,CACd/Q,EACA+J,EACA5J,GAEA,IAAIwP,EAEJ,MAAMzP,IAAEA,GAAQtB,KAAKyB,OAAO,CAACF,GAAMvB,KAAKmS,UACxC,IACEpB,EAAOzO,OAAOC,KACZgP,GAAsBK,WAAW3K,UAAUkE,GAAgB,GAE9D,CAAC,MAAO5D,GACP,MAAM,IAAI+M,EACR,sCAAsClT,MAAOmG,IAEhD,CAED,MAAMkL,EAAalR,EAAItB,IAAI,cAQ3B,OAPIwS,QACIlR,EAAIxB,KAAKuT,eAAeb,EAAYrR,EAAGf,WAAY0Q,SAChDxP,EAAIxB,KAAKoS,SAAS/Q,EAAGf,WAAY0Q,GAE5CzP,EAAI0L,MACF,eAAeyF,EAAa,OAAOA,eAA0B,eAAerR,KAEvE+J,CACR,CAES,eAAMkH,CAAUjR,EAAYG,GACpC,IAAI+F,EAEJ,MAAMhG,IAAEA,GAAQtB,KAAKyB,OAAO,CAACF,GAAMvB,KAAKqS,WACxC,IAAIwB,EACJ,MAAMpB,EAAalR,EAAItB,IAAI,cAO3B,GALE4T,EADEpB,SAEMlR,EAAIxB,KAAKyT,eAAef,EAAYrR,EAAGf,aAC7CA,kBACckB,EAAIxB,KAAKwU,SAASnT,EAAGf,aAAaA,YAE/CwT,EACH,MAAM,IAAI/F,EACR,kBAAkB1M,IAAKqR,EAAa,OAAOA,eAA0B,gBAEzEnR,EAAI0L,MACF,uBAAuByF,EAAa,IAAIA,eAA0B,eAAerR,KAEnF,IACEkG,EAASiK,GAAsBK,WAAW5G,YAAY6I,EAAIxT,WAC3D,CAAC,MAAOkH,GACP,MAAM,IAAI+M,EAAmB,2BAA2B/M,EACzD,CAED,OAAOD,CACR,CAES,iBAAMqL,CACd5S,EACA6H,KACGvG,GAEH,MAAME,IAAEA,GAAQvB,KAAKyB,OAAOJ,EAAMrB,KAAKqS,WACvC,IAAIwB,EACJ,MAAMpB,EAAalR,EAAItB,IAAI,cAQ3B,OANE4T,EADEpB,QACUlR,EAAIxB,KAAK0T,0BACnBhB,EACAjQ,KAAKC,UAAUmF,UAEF7H,EAAKyU,eAAehS,KAAKC,UAAUmF,IAE7CiM,CACR,CAES,0BAAMjB,CACd7S,EACA6H,EACA7B,EAAgB,IAChB2E,KACGrJ,GAEH,MAAME,IAAEA,GAAQvB,KAAKyB,OAAOJ,EAAMrB,KAAKqS,WACvC,IAAIwB,EACJ,MAAMpB,EAAalR,EAAItB,IAAI,cAwB3B,OAvBIwS,GACF7K,EAASe,SAAW,IACff,EAASe,SACZ8L,IAAK/J,EAAO,CAAEgK,IAAKhK,EAAKrK,YAAe,CAAEsU,KAAM,KAMjDd,EAAM,CACJH,eALe3T,EAAK0T,0BACpBhB,EACAjQ,KAAKC,UAAUmF,IAIf6D,SAAU,CACR0I,oBAAqBpO,EACrBC,SAAU,MAId6N,QAAY9T,EAAK6U,6BACfpS,KAAKC,UAAUmF,GACf7B,EACA2E,GAAMrK,YAGHwT,CACR,CAES,WAAAgB,CAAYhN,GACpB,MAAMiN,EAAW3J,GACfpI,OAAOiH,QAAQmB,GAAO1B,OAAO,CAACC,GAA6B/D,EAAKgE,WAC3C,IAARA,IAAqBD,EAAM/D,GAAOgE,GACtCD,GACN,CAAE,GAEP,IAAIqL,EAAkClN,EAAQmN,MAE9C,IAAK,MAAMnB,KAAOhM,EAChBkN,EAAahS,OAAOC,OAAO,GAAI8R,EAAQC,GAAaD,EAAQjB,IAG9D,OAAOkB,CACR,CAQS,MAAAE,CAAOC,GACf,OAAO3D,GAAsBG,YAAYuD,OAAOC,EACjD,CAYkB,WAAMC,CACvBC,EACAjK,EACAgK,EACA5T,KACGF,GAEH,MAAMgU,EAAY,CAChBtV,KAAMwB,EAAIxB,KACVuV,YAAY,GAuBd,OApBEvS,OAAOC,OAAOqS,EADZ9T,aAAe5B,GACQ,CACvBgE,OAAQpC,EAAIoC,OACZvD,SAAUmB,EAAInB,SACdmV,cAAehU,EAAIxB,KAAKyV,WAGD,CACvBpV,SAAUmB,EAAIkU,eACd9R,OAAQ,IAAIyI,GAAepM,UAAa4L,EAAWrK,GACnDgU,cAAehU,EAAIxB,KAAKyV,kBAIb1V,MAAMqV,MACnBC,EACAjK,EACAkK,KACGhU,EAIN,CAUS,KAAAqU,CAASnS,GACjB,OAAOsB,QAAQQ,aAAQuG,EACxB,CA2BS,oBAAM+J,CACdrU,EACAoS,EACAkC,GAAY,GAEZ,MAAMC,EAAa,GACnB,IAAIhC,QAA2CH,EAASxF,OACxD,MAAQ2F,EAAIO,MAAM,CAChB,GAAIP,EAAIzJ,OAASyJ,EAAIzJ,MAAMA,MAAM/J,WAAY,CAC3C,IAAIyV,EAAe,CAAA,EAEnB,GADAxU,EAAIS,MAAM8R,EAAIzJ,MAAMA,MAAM/J,SAAS,SAC/BuV,EAAsC,CACxCE,EAAQC,KAAOlC,EAAIzJ,MAAM4L,KACzBF,EAAQG,UAAYpC,EAAIzJ,MAAMlK,UAC9B,IACE4V,EAAQI,MAAQ1T,KAAK0I,MAAM2I,EAAIzJ,MAAMA,MAAM/J,SAAS,QACrD,CAAC,MAAO8V,GACP7U,EAAIqK,MAAMwK,GACVL,EAAQI,MAAQrC,EAAIzJ,MAAMA,MAAM/J,SAAS,OAC1C,CACF,MACC,IACEyV,EAAUtT,KAAK0I,MAAM2I,EAAIzJ,MAAMA,MAAM/J,SAAS,QAC/C,CAAC,MAAO8V,GACP7U,EAAIqK,MAAMwK,GACVL,EAAUjC,EAAIzJ,MAAMA,MAAM/J,SAAS,OACpC,CAEHwV,EAAW3T,KAAK4T,EACjB,CACDjC,QAAYH,EAASxF,MACtB,CAGD,OAFA5M,EAAIS,MAAM,0BAA0B8T,EAAW/R,kBAC/C4P,EAASQ,QACF2B,CACR,CA8BD,SAAMlO,CACJC,EAEAwO,GAAc,KACX/U,GAEH,MAAMC,IAAEA,EAAGvB,KAAEA,EAAIwB,IAAEA,GAAQvB,KAAKyB,OAAOJ,EAAMrB,KAAK2H,MAE5C+C,KAAEA,EAAI3E,MAAEA,GAAU6B,EACxB,IAAI8L,EACA3N,GAAS2E,UACJ9C,EAAgB,aAChBA,EAAe,KACtBtG,EAAIS,MACF,yCAAyCgE,YAAgB2E,KAU3DgJ,SAPS1T,KAAK4S,qBACV7S,EACA6H,EACA7B,GAAS,IACR2E,GAAcrK,WACfkB,IAEgBmS,WAEpBpS,EAAIS,MAAM,uBACV2R,QAAkB1T,KAAK2S,YACrB5S,EACA6H,EACArG,IAGJD,EAAIS,MAAM,qBAEV,MAAM8F,QAAiB7H,KAAK2V,eAAerU,EAAKoS,GAIhD,OAHApS,EAAIS,MACF,aAAa+J,MAAMC,QAAQlE,GAAWA,EAAQ/D,OAAS,aAElD+D,CACR,CAEQ,SAAAwO,GACP,OAAO,IAAI5O,GAAgBzH,KAC5B,CAEQ,eAAMsW,CACb/P,EACAnF,EACA+J,KACG9J,GAEH,GAAID,EAAG0C,SAAWqH,EAAMrH,OACtB,MAAM,IAAIc,EAAc,4CAC1B,MAAMtD,IAAEA,EAAG8E,QAAEA,GAAYpG,KAAKyB,OAAOJ,EAAMrB,KAAKsW,WAC1CC,EAAavS,EAAMuC,UAAUA,GAEnC,OADAjF,EAAIS,MAAM,YAAYX,EAAG0C,kBAAkByS,WACpC1R,QAAQC,IACb1D,EAAGoD,IAAI,CAACE,EAAGsJ,IAAUhO,KAAK6O,OAAOtI,EAAW7B,EAAGyG,EAAM6C,MAAW5H,IAEnE,CAEQ,eAAMoQ,CACbjQ,EACAnF,EACA+J,KACG9J,GAEH,GAAID,EAAG0C,SAAWqH,EAAMrH,OACtB,MAAM,IAAIc,EAAc,4CAC1B,MAAMtD,IAAEA,EAAG8E,QAAEA,GAAYpG,KAAKyB,OAAOJ,EAAMrB,KAAKwW,WAC1CD,EAAavS,EAAMuC,UAAUA,GAEnC,OADAjF,EAAIS,MAAM,YAAYX,EAAG0C,kBAAkByS,WACpC1R,QAAQC,IACb1D,EAAGoD,IAAI,CAACE,EAAGsJ,IAAUhO,KAAK4O,OAAOrI,EAAW7B,EAAGyG,EAAM6C,MAAW5H,IAEnE,CAQQ,OAAAiJ,CACPlE,KACG9J,GAEH,MAAMC,IAAEA,GAAQtB,KAAKyB,OAAOJ,EAAMrB,KAAKqP,SAEjC9I,EAAYvC,EAAMuC,UAAU4E,EAAMtL,aAClC8E,EAAKX,EAAMW,GAAGwG,EAAMtL,aACpB4W,EAAQzS,EAAM0S,UAAUvL,GACxB7D,EAASvE,OAAOiH,QAAQyM,EAAMtL,OAAO1B,OACzC,CAACC,GAA6B/D,EAAKgE,MACjC,QAAmB,IAARA,EAAqB,OAAOD,EACvC,MAAMiN,EAAa3S,EAAM4S,WAAWzL,EAAOxF,GAC3C,GAAI3F,KAAK6W,WAAWF,GAClB,MAAM,IAAI/R,EAAc,iBAAiB+R,iBAE3C,OADAjN,EAAMiN,GAAchN,EACbD,GAET,CAAE,GAOJ,OAJApI,EAAI0L,MACF,wBAAwBzG,mBAA4B4E,EAAcxG,MAG7D,CACLmS,OAAQxP,EACRlG,GAAK+J,EAAcxG,GACnBoS,UAAWN,EAAMM,UAEpB,CAEQ,MAAA7G,CACPrE,EACA3K,EACAE,EACA2V,KACG1V,GAEH,MAAMC,IAAEA,GAAQtB,KAAKyB,OAAOJ,EAAMrB,KAAKkQ,QACjC8G,EAA0B,CAAA,EAEhCA,EADWhT,EAAMW,GAAGzD,IACDE,EACnB,MAAMqD,EACa,iBAAVvD,EAAqB8C,EAAMsE,MAAM0O,EAAI9V,GAAS,IAAIA,EAAM8V,GAEjE1V,EAAI0L,MAAM,oBAAoBvI,EAAE5E,YAAYgC,WAAWT,KACvD,MAAMkG,EAASvE,OAAOsG,KAAK5E,GAAGgF,OAAO,CAACC,EAAU/D,KAC7C+D,EAA8B/D,GAC7BkG,EAAI7H,EAAM4S,WAAWlN,EAAO/D,IACvB+D,GACNjF,GAeH,OAbIsS,IACFzV,EAAIS,MACF,mCAAmCgB,OAAOsG,KAAK0N,GAAW5U,KAAK,OAEjEY,OAAOiH,QAAQ+M,GAAW9M,QAAQ,EAAEtE,EAAKgE,MACvC,GAAIhE,KAAO2B,QAAmCsE,IAAxBtE,EAAe3B,GACnC,MAAM,IAAIf,EACR,sBAAsBe,6BAA+BlB,EAAE5E,YAAYgC,8BAEvEyF,EAAO3B,GAAkBgE,KAItBrC,CACR,CAEQ,YAAA2P,CACP1Q,EACAnF,EACA+J,KACG9J,GAEH,MAAM+E,QAAEA,GAAYpG,KAAKyB,OAAOJ,EAAMrB,KAAKiX,cACrCH,EAA8B,CAAA,EAIpC,OAHAA,EAAOtO,EAAYC,OAASzE,EAAMuC,UAAUA,GAC5CxD,OAAOC,OAAO8T,EAAQ3L,GAEf,CAAC5E,EAAWnF,EAAI0V,KAAW1Q,EAOnC,CAEQ,YAAA8Q,CACP3Q,EACAnF,EACA+J,KACG9J,GAEH,MAAM+E,QAAEA,GAAYpG,KAAKyB,OAAOJ,EAAMrB,KAAKkX,cACrCJ,EAA8B,CAAA,EAIpC,OAHAA,EAAOtO,EAAYC,OAASzE,EAAMuC,UAAUA,GAC5CxD,OAAOC,OAAO8T,EAAQ3L,GAEf,CAAC5E,EAAWnF,EAAI0V,KAAW1Q,EAOnC,CAEkB,eAAA9C,CACjBiD,EACApC,EACAZ,KACGlC,GAEH,GAAI8C,EAAIL,SAAWP,EAAOO,OACxB,MAAM,IAAIc,EAAc,4CAE1B,MAAMrD,EAA6BF,EAAK2T,MAElCmC,EAAUhT,EAAIK,IAAI,CAACpD,EAAI4M,KAC3B,MAAM8I,EAA8B,CAAA,EAGpC,OAFAA,EAAOtO,EAAYC,OAASzE,EAAMuC,UAAUA,GAC5CxD,OAAOC,OAAO8T,EAAQvT,EAAOyK,IACtB8I,IAET,MAAO,CAACvQ,EAAWpC,EAAKgT,EAAS5V,EAClC,CAEkB,eAAA6V,CACjB7Q,EACApC,EACAZ,KACGlC,GAEH,GAAI8C,EAAIL,SAAWP,EAAOO,OACxB,MAAM,IAAIc,EAAc,4CAE1B,MAAMrD,EAA6BF,EAAK2T,MAElCmC,EAAUhT,EAAIK,IAAI,CAACpD,EAAI4M,KAC3B,MAAM8I,EAA8B,CAAA,EAGpC,OAFAA,EAAOtO,EAAYC,OAASzE,EAAMuC,UAAUA,GAC5CxD,OAAOC,OAAO8T,EAAQvT,EAAOyK,IACtB8I,IAET,MAAO,CAACvQ,EAAWpC,EAAKgT,EAAS5V,EAClC,CAEQ,UAAA6Q,CACP+D,EACAkB,GAEA,OAAO9F,GAAsBa,WAAWiF,GAAUlB,EACnD,CAEQ,MAAA1U,CACPJ,EACAyL,GAKA,OAAOyE,GAAsB9P,OAAO0K,KAAKnM,KAAMqB,EAAMyL,EACtD,CAkBD,aAAgBrL,CAEdJ,EACAyL,GAKA,GAAkB,EAAdzL,EAAKyC,OAAY,MAAM,IAAIc,EAAc,uBAC7C,MAAMrD,EAAMF,EAAK2T,MAEjB,KAAMzT,aAAe3B,GACnB,MAAM,IAAIgF,EAAc,uBAC1B,GAAIvD,EAAKiW,OAAQC,GAAMA,aAAa3X,GAASkE,OAAS,EACpD,MAAU8F,MAAM,QAClB,MAAMtI,EACJtB,KACIuB,EAAIoC,OAAOC,IAAI5D,MAAM4D,IAAIkJ,GACzBvL,EAAIoC,OAAO6T,QAAQ5T,IAAI5D,MAAM4D,IAAIkJ,GAEvC,MAAO,CACLvL,IAAKA,EACLD,IAAKwL,EAAUxL,EAAIsC,IAAIkJ,GAA8CxL,EACrEvB,KAAMwB,EAAIxB,KACVK,SAAUmB,EAAInB,SACdgG,QAAS,IAAI/E,EAAME,GAEtB,CAED,iBAAgB6Q,CAAgC+D,GAO9C,MAAMzJ,EAAqB,iBAARyJ,EAAmBA,EAAMA,EAAIsB,QAChD,OAAI/K,EAAIwG,SAASpF,EAAcjM,MAAc,IAAIiM,EAAcqI,GAC3DzJ,EAAIwG,SAASpE,EAAcjN,MAAc,IAAIiN,EAAcqH,GAC3DzJ,EAAIwG,SAASwE,EAAgB7V,MACxB,IAAI6V,EAAgBvB,GACzBzJ,EAAIwG,SAASjN,EAAWpE,MAAc,IAAIoE,EAAWkQ,GACrDzJ,EAAIwG,SAASnD,EAAYlO,MAAc,IAAIkO,EAAYoG,GACvDzJ,EAAIwG,SAASlE,EAAiBnN,MACzB,IAAImN,EAAiBmH,GAC1BzJ,EAAIwG,SAASyE,EAAe9V,MAAc,IAAI8V,EAAexB,GAC7DzJ,EAAIwG,SAAS0E,EAAc/V,MAAc,IAAI+V,EAAczB,GAC3DzJ,EAAIwG,SAAS2E,EAAmBhW,MAC3B,IAAIgW,EAAmB1B,GAC5BzJ,EAAIwG,SAAS4E,EAAejW,MAAc,IAAIiW,EAAe3B,GAC7DzJ,EAAIwG,SAAS6E,EAAgBlW,MACxB,IAAIkW,EAAgB5B,GACzBzJ,EAAIwG,SAASoB,EAAmBzS,MAC3B,IAAIyS,EAAmB6B,GAC5BzJ,EAAIwG,SAAS,qBACR,IAAItC,GACT,sDAAsDlE,GAGnD,IAAI9H,EAAcuR,EAC1B,CASD,iBAAgB6B,GACdlY,MAAMkY,aACNC,GAAWC,YAAYrN,IACpBjH,IAAIwD,EAAgB+Q,YACpBC,OACCC,EAASvH,IACTwH,GAAalR,EAAgB+Q,WAAY,CAAA,IAE1ChF,QAEH8E,GAAWC,YAAYrN,IACpBjH,IAAIwD,EAAgBmR,YACpBH,OACCI,EAAe1H,IACfwH,GAAalR,EAAgBmR,WAAY,CAAA,IAE1CpF,QAEH8E,GAAWC,YAAYrN,IACpBjH,IAAIwD,EAAgBqR,QACpBC,OAAOC,KACPxF,QAEH8E,GAAWC,YAAYrN,IACpBjH,IAAIgV,EAAeC,MACnBH,OAAO,IACC,CAAC3F,EAAaC,KACnB8F,EAAS9F,EAAM,cAAf8F,CAA8B/F,EAAQC,KAI5CiF,GAAWC,YAAYrN,IACpBjH,IAAIwD,EAAgBqB,OACpBiQ,OAAsB7M,IACrB,MAAMkN,EAAe,GACrB,IAAIxL,EACa,mBAAR1B,EACH7D,GAASgR,OAAOnN,GAChB7D,GAASgR,OAAOnN,EAAIhM,aAE1B,KAAO0N,GAAWA,IAAYxK,QAAUwK,EAAQ0L,WAC9CF,EAAM7W,KAAKqL,GACXA,EAAUxK,OAAOmW,eAAe3L,GAMlC,KAAOwL,EAAMjV,OAAS,GAAG,CACvB,MAAMjE,EAAckZ,EAAM/D,MAE1BmE,IAAetZ,EAChB,CAED,OAAOsZ,IAAetN,EACxB,GACCsH,OACJ,EAGH5B,GAAsByG,aACtBxW,EAAQ4X,WAAWvO,IC/oCb,MAAOwO,WAEHtO,EACR,WAAAlL,GACEC,OACD,CACkB,YAAAyL,CAAaJ,GAG9B,MAAMK,EAAmCzI,OAAOC,OAAO,CAAE,EAAEmI,GAC3D,IAAIM,EACJ,IACEA,EAAWzD,GAAS0D,UAAUP,EAAMtL,YAErC,CAAC,MAAO8L,GACPF,OAAWG,CACZ,CACDJ,EAAYQ,EAAUC,QAAUR,GAAYN,EAAMtL,YAAYgC,KAE9D,MAAM0J,EAAe,SAASA,EAE5BM,GAGA,MAAMyN,EAAOtZ,KACb,MAAmB,iBAAR6L,EAAyBA,EAChCC,MAAMC,QAAQF,GAAaA,EAAIrH,IAAK+U,GAAMhO,EAAaY,KAAKmN,EAAMC,IAC/DvZ,KAAKuL,aAAaY,KAAKnM,KAAM6L,EACtC,EAAE2N,KAAKxZ,MAKP,OAHAgE,EAAMkI,UAAUf,GAAOlB,QAAS7B,IAC9BoD,EAAYpD,GAAKmD,EAAaC,EAAYpD,MAErCoD,CACR,CAQQ,WAAAR,CAAYC,GACnB,MAAMwO,EAAkBjX,KAAK0I,MAAMD,GAC7ByO,EAAYD,EAAgBzN,EAAUC,QAC5C,IAAKyN,EACH,MAAU9P,MAAM,sDAElB,OADiB5F,EAAMsE,MAAMmR,EAAiBC,EAE/C,CAQQ,SAAAzS,CAAUkE,GAGjB,OAFkBE,QAAQ,+BAEnB5I,CADmB4I,QAAQ,sBACjBC,CAAkBtL,KAAKuL,aAAaJ,IACtD,EC9DHgO,IAAeQ,MAiDT,MAAgBC,WACZC,SAMS7Z,KAAA4C,QAAiC,IAAI2O,EAAwB,QAIpDvR,KAAA4R,WAAa,IAAIyH,EAA0B,CAUrE,WAAAxZ,CACEgC,EACmBX,GAEnBpB,MAAM+B,GAFa7B,KAAKkB,MAALA,EAVXlB,KAAW8Z,aAAY,EAa/B9Z,KAAK4N,KAAOjL,EAAWoX,SAAS7Y,EACjC,CAED,YAAM8Y,CACJzY,EACAoE,EACAC,KACGvE,GAEH,MAAM+E,QAAEA,EAAO9E,IAAEA,SAActB,KAAKyB,OAAO,IAAIJ,EAAME,GAAMvB,KAAKga,QAIhE,OAHA1Y,EAAI4C,KACF,sBAAsByB,YAAwBC,cAAkBQ,KAE3DpG,KAAK4N,KAAKoM,OACfrU,EACAC,KACGQ,EAEN,CAED,gBAAMV,CACJnE,EACAoE,EACAC,EACAC,EAAwD,CACtDC,OAAQ,EACRC,MAAO,OAEN1E,GAEH,MAAM+E,QAAEA,EAAO9E,IAAEA,SAActB,KAAKyB,OAAO,IAAIJ,EAAME,GAAMvB,KAAK0F,YAIhE,OAHApE,EAAI4C,KACF,0BAA0ByB,YAAwBC,eAAoBC,EAAYE,kBAAkBK,KAE/FpG,KAAK4N,KAAKlI,WACfC,EACAC,EACAC,KACGO,EAEN,CAED,eAAM6T,CACJ1Y,EACAoE,EACAyE,KACG/I,GAEH,MAAM+E,QAAEA,EAAO9E,IAAEA,SAActB,KAAKyB,OAAO,IAAIJ,EAAME,GAAMvB,KAAKia,WAIhE,OAHA3Y,EAAI4C,KACF,yBAAyByB,aAAyByE,eAAmBhE,KAEhEpG,KAAK4N,KAAKqM,UAAUtU,EAAgByE,KAAUhE,EACtD,CAED,eAAMc,CACJ3F,EACAuL,KACGzL,GAEH,MAAM+E,QAAEA,EAAO9E,IAAEA,SAActB,KAAKyB,OAAO,IAAIJ,EAAME,GAAMvB,KAAKkH,WAEhE,OADA5F,EAAI4C,KAAK,qBAAqB4I,eAAoB1G,KAC3CpG,KAAK4N,KAAK1G,UAAU4F,KAAW1G,EACvC,CAUD,YAAMyI,CACJtN,EACA4J,KACG9J,GAEH,MAAMC,IAAEA,EAAG8E,QAAEA,SAAkBpG,KAAKyB,OAAO,IAAIJ,EAAME,GAAMvB,KAAK6O,QAChEvN,EAAI4C,KAAK,oBAAoBkC,GAER,iBAAV+E,IAAoBA,EAAQnL,KAAKgL,YAAeG,IAE3D7J,EAAI4C,KAAK,mBAAmB1B,KAAKC,UAAU0I,IAE3C,MAAM4L,EAAY/W,KAAKka,iBAAiB3Y,GAKxC,OAHAD,EAAI4C,KAAK,6BACTiH,EAAQnH,EAAMmW,MAAMhP,EAAO4L,EAAW/W,KAAKkB,OAEpClB,KAAK4N,KAAKiB,OAAO1D,KAAU/E,EACnC,CAUD,UAAMyH,CACJtM,EACAoE,KACGtE,GAEH,MAAMC,IAAEA,EAAG8E,QAAEA,SAAkBpG,KAAKyB,OAAO,IAAIJ,EAAME,GAAMvB,KAAK6N,MAIhE,OAFAvM,EAAI4C,KAAK,yBAAyByB,MAE3B3F,KAAK4N,KAAKC,KAAKlI,KAAQS,EAC/B,CAES,gBAAA8T,CAAiB3Y,GACzB,MAAM6Y,EAAe7Y,EAAIxB,KAAKsa,eAC9B,IAAItD,EAAiB,CAAA,EAUrB,OARIqD,EAAaE,IAAKta,KAAK4N,KAAarH,aACtCwQ,EAAYvU,KAAK0I,MACdkP,EAAana,IAAKD,KAAK4N,KAAarH,YAAuBlG,SAC1D,UAKC0W,CACR,CAUD,YAAMnI,CACJrN,EACA4J,KACG9J,GAEH,MAAMC,IAAEA,EAAG8E,QAAEA,SAAkBpG,KAAKyB,OAAO,IAAIJ,EAAME,GAAMvB,KAAK4O,QAE3C,iBAAVzD,IAAoBA,EAAQnL,KAAKgL,YAAeG,IAE3D7J,EAAI4C,KAAK,mBAAmB1B,KAAKC,UAAU0I,IAE3C,MAAM4L,EAAY/W,KAAKka,iBAAiB3Y,GAIxC,OAFAD,EAAI4C,KAAK,6BACTiH,EAAQnH,EAAMmW,MAAMhP,EAAO4L,EAAW/W,KAAKkB,OACpClB,KAAK4N,KAAKgB,OAAOzD,KAAU/E,EACnC,CAUD,YAAM,CACJ7E,EACAoE,KACGtE,GAEH,MAAMC,IAAEA,EAAG8E,QAAEA,SAAkBpG,KAAKyB,OAAO,IAAIJ,EAAME,GAAMvB,KAAKsS,QAEhE,OADAhR,EAAI4C,KAAK,0BAA0ByB,MAC5B3F,KAAK4N,KAAK0E,OAAc3M,EAAP2I,MAAgBlI,EACzC,CAUD,eAAMmU,CACJhZ,EACA8H,KACGhI,GAEH,MAAM+E,QAAEA,SAAkBpG,KAAKyB,OAAO,IAAIJ,EAAME,GAAMvB,KAAKwa,SAE3D,MADoB,iBAATnR,IAAmBA,EAAO7G,KAAK0I,MAAM7B,IACzCrJ,KAAK4N,KAAK2M,UAAUlR,KAASjD,EACrC,CAUD,aAAMoU,CACJjZ,EACA8H,KACGhI,GAEH,MAAM+E,QAAEA,SAAkBpG,KAAKyB,OAAO,IAAIJ,EAAME,GAAMvB,KAAKwa,SAE3D,MADoB,iBAATnR,IAAmBA,EAAO7G,KAAK0I,MAAM7B,IACzCrJ,KAAK4N,KAAK4M,QAAQnR,KAASjD,EACnC,CAUD,eAAMoQ,CACJjV,EACAgC,KACGlC,GAEH,MAAMC,IAAEA,EAAG8E,QAAEA,SAAkBpG,KAAKyB,OAAO,IAAIJ,EAAME,GAAMvB,KAAKwW,WAOhE,MANsB,iBAAXjT,IACTA,EAAUf,KAAK0I,MAAM3H,GAClBiB,IAAKC,GAAMzE,KAAKgL,YAAYvG,IAC5BD,IAAKC,GAAM,IAAIzE,KAAKkB,MAAMuD,KAE/BnD,EAAI4C,KAAK,YAAYX,EAAOO,+BACrB9D,KAAK4N,KAAK4I,UAAUjT,KAA6B6C,EACzD,CAYD,WAAMsC,CACJhF,EACAoF,EACAjC,EACAjB,EAAiCyK,EAAeE,IAChDxK,EACA2E,KACGrJ,GAEH,MAAM+E,QAAEA,SAAkBpG,KAAKyB,OAAO,IAAIJ,EAAMqC,GAAU1D,KAAK0I,OAC/D,OAAO1I,KAAK4N,KAAKlF,MACfI,EACAjC,EACAjB,EACAG,EACA2E,KACGtE,EAEN,CAWD,SAAMuB,CACJpG,EACAqG,EACAwO,KACG/U,GAEH,MAAM+E,QAAEA,SAAkBpG,KAAKyB,OAAO,IAAIJ,EAAME,GAAMvB,KAAK2H,KAC3D,OAAOiS,GAAmBhX,QAAQ+E,IAAIC,EAAUwO,KAAahQ,EAC9D,CAES,SAAAa,CAAUkE,GAClB,OAAOyO,GAAmBhI,WAAW3K,UAAUkE,EAChD,CAES,WAAAH,CAA6BC,GACrC,OACE2O,GAAmBhI,WACnB5G,YAAYC,EACf,CAES,UAAMwP,CAAKlZ,GACnB,MAAMD,IAAEA,SAActB,KAAKyB,OAAO,CAACF,GAAMvB,KAAKya,MAC9CnZ,EAAI4C,KAAK,oBAAoBlE,KAAK0a,+BAClC1a,KAAK8Z,aAAc,EACnBxY,EAAI4C,KAAK,qCACV,CAED,iBAAMyW,CACJpZ,GAEA,MAAMD,IAAEA,SAActB,KAAKyB,OAAO,CAACF,GAAMvB,KAAK2a,aAE9C,OADArZ,EAAI4C,KAAK,wBAAwBlE,KAAK8Z,kBAC/B,CAAEa,YAAa3a,KAAK8Z,YAC5B,CAUD,eAAMxD,CACJ/U,EACAgC,KACGlC,GAEH,MAAMC,IAAEA,EAAG8E,QAAEA,SAAkBpG,KAAKyB,OAAO,IAAIJ,EAAME,GAAMvB,KAAKsW,WAQhE,MANsB,iBAAX/S,IACTA,EAAUf,KAAK0I,MAAM3H,GAClBiB,IAAKC,GAAMzE,KAAKgL,YAAYvG,IAC5BD,IAAKC,GAAM,IAAIzE,KAAKkB,MAAMuD,KAE/BnD,EAAI4C,KAAK,UAAUX,EAAOO,+BACnB9D,KAAK4N,KAAK0I,UAAU/S,KAA6B6C,EACzD,CAED,YAAM3E,CACJJ,EACAyL,GAOA,OAAO8M,GAAmBnY,OAAO+X,KAAKxZ,KAA/B4Z,CAAqCvY,EAAMyL,EACnD,CAsBS,mBAAarL,CAErBJ,EACAyL,GAOA,GAAkB,EAAdzL,EAAKyC,OAAY,MAAM,IAAIc,EAAc,uBAC7C,MAAMrD,EAAMF,EAAK2T,MACjB,GAAIzT,aAAe5B,GACjB,MAAO,CACL4B,MACAD,IAAKC,EAAIoC,OAAO6T,QAAQ5T,IAAI5D,MAAM4D,IAAIkJ,GACtC1G,QAAS,IAAI/E,EAAME,GACnBxB,KAAMwB,EAAIxB,KACVK,SAAUmB,EAAInB,UAGlB,KAAMmB,aAAeqZ,GACnB,MAAM,IAAIhW,EAAc,6BAmB1B,MAAMiW,EAAY,CAChBtF,cAAehU,EAAIxB,KAAKyV,WAEpB9R,QAAgBkW,GAAmBhX,QAAQc,QApBjD,MACE,GAAsB,iBAAXoJ,EAAqB,OAAOA,EACvC,OAAQA,EAAOjL,MACb,KAAKpB,EAAcC,OACnB,KAAKD,EAAc+M,KACnB,KAAK/M,EAAcE,OACnB,KAAKF,EAAcG,OACnB,KAAKC,EAAsBC,WAC3B,KAAKD,EAAsBia,SAC3B,KAAKja,EAAsBE,WAC3B,KAAKF,EAAsBG,YAGzB,OAAO8L,EAAOjL,IAEnB,EAMCkZ,GACAF,EACA7a,KAAKkB,MACLK,GAGID,EACJtB,KACI0D,EAAQC,OAAOC,IAAI5D,MAAM4D,IAAIkJ,GAC7BpJ,EAAQC,OAAO6T,QAAQ5T,IAAI5D,MAAM4D,IAAIkJ,GAE3C,MAAO,CACLvL,IAAKmC,EACLpC,IAAKA,EACLvB,KAAM2D,EAAQ3D,KACdK,SAAUsD,EAAQtD,SAClBgG,QAAS,IAAI/E,EAAMqC,GAEtB,EC5fG,MAAOsX,WAEHpB,GACR,WAAA/Z,CAAYgC,EAAcX,GACxBpB,MAAM+B,EAAMX,EACb,CAGQ,YAAM2N,CAAOnL,EAAcyH,GAClC,MAAM7J,IAAEA,EAAGC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAK6O,QACvDvN,EAAI4C,KAAK,mBAAmBiH,GAE5B,MAAM1G,EAAIzE,KAAKgL,YAAeG,GAE9B7J,EAAI4C,KAAK,uBAAuB1B,KAAKC,UAAUgC,IAC/C,MAAM6C,QAAexH,MAAM+O,OAAOtN,EAAYkD,GAC9C,OAAOzE,KAAKiH,UAAUK,EACvB,CAGQ,UAAMuG,CAAKnK,EAAciC,GAChC,MAAMrE,IAAEA,EAAGC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAK6N,MAEvD,OADAvM,EAAI4C,KAAK,eAAeyB,GACjB3F,KAAKiH,gBAAiBnH,MAAM+N,KAAKtM,EAAYoE,GACrD,CAGQ,YAAMiJ,CAAOlL,EAAcyH,GAClC,MAAM7J,IAAEA,EAAGC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAK4O,QAEvD,OADAtN,EAAI4C,KAAK,mBAAmBiH,GACrBnL,KAAKiH,gBAAiBnH,MAAM8O,OAAOrN,EAAY4J,GACvD,CAGQ,YAAM,CAAOzH,EAAciC,GAClC,MAAMrE,IAAEA,EAAGC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKsS,QAEvD,OADAhR,EAAI4C,KAAK,gBAAgByB,GAClB3F,KAAKiH,gBAAiBnH,MAAMwS,OAAO/Q,EAAYoE,GACvD,CAGQ,eAAM4U,CAAU7W,EAAc2F,GACrC,MAAM4R,EAAuBzY,KAAK0I,MAAM7B,IAClC/H,IAAEA,EAAGC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKua,WAIvD,OAFAjZ,EAAI4C,KAAK,YAAY+W,EAAWnX,iCAEzBtB,KAAKC,iBACF3C,MAAMya,UAAUhZ,EAAY0Z,IAAqBzW,IACtDC,GAAMzE,KAAKiH,UAAUxC,IAG3B,CAGQ,aAAM+V,CAAQ9W,EAAc2F,GACnC,MAAM4R,EAAuBzY,KAAK0I,MAAM7B,IAElC/H,IAAEA,EAAGC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKwa,SAGvD,OAFAlZ,EAAI4C,KAAK,WAAW+W,EAAWnX,iCAExBtB,KAAKC,iBACF3C,MAAM0a,QAAQjZ,EAAY0Z,IAAqBzW,IAAKC,GAC1DzE,KAAKiH,UAAUxC,IAGpB,CAGQ,eAAM+R,CAAU9S,EAAcH,GACrC,MAAMjC,IAAEA,EAAGC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKwW,WAEjD0E,EADiB1Y,KAAK0I,MAAM3H,GAE/BiB,IAAKC,GAAMzE,KAAKgL,YAAYvG,IAC5BD,IAAKC,GAAM,IAAIzE,KAAKkB,MAAMuD,IAG7B,OADAnD,EAAI4C,KAAK,YAAYgX,EAAUpX,+BACxBtB,KAAKC,iBACF3C,MAAM0W,UAAUjV,EAAY2Z,IAAoB1W,IACrDC,GAAMzE,KAAKiH,UAAUxC,IAG3B,CAGc,eAAAyC,CAAUxD,EAAcoJ,EAAgBzL,GACrD,MAAME,IAAEA,EAAGD,IAAEA,SAActB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKkH,WACvD,IACE7F,EAAOmB,KAAK0I,MAAM7J,EACnB,CAAC,MAAOkG,GACP,MAAM,IAAI+M,EAAmB,iBAAiB/M,EAC/C,CACD,IAAKuE,MAAMC,QAAQ1K,GACjB,MAAM,IAAIiT,EACR,iBAAiB9R,KAAKC,UAAUpB,wBAIpC,OAFAC,EAAI4C,KAAK,8BAA8B4I,GACvCxL,EAAI4C,KAAK,aAAa7C,GACfmB,KAAKC,gBAAgB3C,MAAMoH,UAAU3F,EAAKuL,KAAWzL,GAC7D,CAGc,YAAA2Y,CAAOtW,EAAciC,EAAaC,GAC/C,MAAMrE,IAAEA,EAAGD,IAAEA,SAActB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKga,QAEvD,OADA1Y,EAAI4C,KAAK,6BAA6ByB,eAAiBC,KAChDpD,KAAKC,gBACJ3C,MAAMka,OAAOzY,EAAKoE,EAAgBC,GAE3C,CAGQ,gBAAMF,CACbhC,EACAiC,EACAC,EACAC,KACGxE,GAEH,MAAME,IAAEA,EAAGD,IAAEA,SAActB,KAAKyB,OAAO,IAAIJ,EAAMqC,GAAU1D,KAAK0F,YAChE,IACEG,EAAMrD,KAAK0I,MAAMrF,EAClB,CAAC,MAAO0B,GACP,MAAM,IAAI+M,EACR,+CAA+C/M,EAElD,CAED,OADAjG,EAAI4C,KAAK,iCAAiCyB,eAAiBC,KACpDpD,KAAKC,gBACJ3C,MAAM4F,WAAWnE,EAAKoE,EAAKC,EAAcC,KAAexE,GAEjE,CAGc,eAAA4Y,CACbvW,EACAiC,EACAyE,KACG/I,GAEH,MAAME,IAAEA,EAAGD,IAAEA,SAActB,KAAKyB,OAAO,IAAIJ,EAAMqC,GAAU1D,KAAKia,WAEhE,OADA3Y,EAAI4C,KAAK,gCAAgCyB,eAAiByE,KACnD5H,KAAKC,gBAAgB3C,MAAMma,UAAU1Y,EAAKoE,EAAKyE,KAAU/I,GACjE,CAGQ,WAAMqH,CACbhF,EACAoF,EACAjC,EACAjB,EACAG,EACA2E,GAEA,MAAMnJ,IAAEA,EAAGD,IAAEA,SAActB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAK0I,OAIvD,IAAIyS,EAFJ7Z,EAAI4C,KAAK,6BAA6B2C,eAAqBjB,KAG3D,IACEuV,EAAOnS,EAAUzG,KAAKC,KAAK0I,MAAMpC,GAClC,CAAC,MAAOvB,GACP,MAAM,IAAI+M,EAAmB,sBAAsB/M,EACpD,CAID,OAFAjG,EAAI4C,KAAK,cAAc1B,KAAKC,UAAU0Y,IAE/B3Y,KAAKC,gBACJ3C,MAAM4I,MAAMnH,EAAK4Z,EAAMtU,EAASjB,EAAcG,EAAO2E,GAE9D,CAeQ,UAAM+P,CAAKlZ,SACZzB,MAAM2a,KAAKlZ,EAClB,CAGQ,iBAAMoZ,CAAYjX,GACzB,MAAMpC,IAAEA,EAAGC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKwW,WAGvD,OAFAlV,EAAIS,MAAM,wBAAwB/B,KAAK8Z,kBAEhCtX,KAAKC,gBAAgB3C,MAAM6a,YAAYpZ,GAC/C,CAGQ,eAAM+U,CAAU5S,EAAcH,GACrC,MAAMjC,IAAEA,SAActB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKsW,WAE5C4E,EADiB1Y,KAAK0I,MAAM3H,GAE/BiB,IAAKC,GAAMzE,KAAKgL,YAAYvG,IAC5BD,IAAKC,GAAM,IAAIzE,KAAKkB,MAAMuD,IAE7BnD,EAAI4C,KAAK,UAAUgX,EAAUpX,+BAE7B,MAAMwD,QAAgBxH,MAAMwW,UAAU5S,EAASwX,GAC/C,OAAO1Y,KAAKC,UAAU6E,EAAO9C,IAAKC,GAAMzE,KAAKiH,UAAUxC,IACxD,ECtNa,SAAA2W,GAAI7D,EAAW8D,GAC7B,MAAMC,EAAI/D,EAAI8D,EACd,GAAI9D,IAAM+D,EAAID,GAAKA,IAAMC,EAAI/D,EAC3B,MAAM,IAAI9G,GAAc,sBAAsB8G,OAAO8D,KAEvD,OAAOC,CACT,CAYgB,SAAAC,GAAIhE,EAAW8D,GAC7B,MAAMC,EAAI/D,EAAI8D,EACd,GAAI9D,IAAM+D,EAAID,GAAKA,IAAM9D,EAAI+D,EAC3B,MAAM,IAAI7K,GAAc,yBAAyB8G,OAAO8D,KAE1D,OAAOC,CACT,CDViBE,GAAA,CADdC,wDAC8Bb,EAAGtM,0CASjC0M,GAAA/B,UAAA,SAAA,MAGcuC,GAAA,CADdC,IAAY,sDACgBb,EAAGtM,0CAI/B0M,GAAA/B,UAAA,OAAA,MAGcuC,GAAA,CADdC,wDAC8Bb,EAAGtM,0CAIjC0M,GAAA/B,UAAA,SAAA,MAGcuC,GAAA,CADdC,wDAC8Bb,EAAGtM,0CAIjC0M,GAAA/B,UAAA,SAAA,MAGcuC,GAAA,CADdC,wDACiCb,EAAGtM,0CAWpC0M,GAAA/B,UAAA,YAAA,MAGcuC,GAAA,CADdC,IAAY,sDACmBb,EAAGtM,0CAWlC0M,GAAA/B,UAAA,UAAA,MAGcuC,GAAA,CADdC,wDACiCb,EAAGtM,0CAapC0M,GAAA/B,UAAA,YAAA,MAGcuC,GAAA,CADdC,IAAY,sDACqBb,EAAGtM,OAAAA,0CAcpC0M,GAAA/B,UAAA,YAAA,MAGcuC,GAAA,CADdC,IAAY,sDACkBb,EAAGtM,OAAAA,0CAMjC0M,GAAA/B,UAAA,SAAA,MAGcuC,GAAA,CADdC,IAAY,8BAEFC,GAAA,oBAAA,CAAAd,uBAImBjb,sCAc7Bqb,GAAA/B,UAAA,aAAA,MAGcuC,GAAA,CADdC,IAAY,sDAEFb,EAAGtM,OAAAA,OAAAA,0CAQb0M,GAAA/B,UAAA,YAAA,MA0CcuC,GAAA,CADdC,wDACwBb,qCAExBI,GAAA/B,UAAA,OAAA,MAGcuC,GAAA,CADdC,IAAY,sDACuBb,qCAKnCI,GAAA/B,UAAA,cAAA,MAGcuC,GAAA,CADdC,wDACiCb,EAAGtM,0CAWpC0M,GAAA/B,UAAA,YAAA,ME5MI,IAAM0C,GAAN,cAAyBC,EA8B9B,WAAA/b,CAAY4E,GACV3E,MAAM2E,EACP,GA1BD+W,GAAA,CALC7W,EAAG,CAAEP,KAAM,qCAKEuX,GAAA1C,UAAA,YAAA,GAQduC,GAAA,CANCK,IACAC,8BAKcH,GAAA1C,UAAA,aAAA,GAOfuC,GAAA,CANCK,IACAC,8BAKeH,GAAA1C,UAAA,cAAA,GAOhBuC,GAAA,CANCK,IACAC,8BAKiBH,GAAA1C,UAAA,gBAAA,GA5BP0C,GAAUH,GAAA,CAFtB5Z,EAAM,gBACNuJ,sCACYwQ,IAqDN,IAAMI,GAAN,cAA0BH,EA+B/B,WAAA/b,CAAY4E,GACV3E,MAAM2E,EACP,GA3BD+W,GAAA,CALC7W,EAAG,CAAEP,KAAM,qCAKA2X,GAAA9C,UAAA,UAAA,GAQZuC,GAAA,CANCK,IACAC,8BAKcC,GAAA9C,UAAA,aAAA,GAQfuC,GAAA,CANCK,IACAC,8BAKgBC,GAAA9C,UAAA,eAAA,GAOjBuC,GAAA,CALCK,8BAKgBE,GAAA9C,UAAA,eAAA,GA7BN8C,GAAWP,GAAA,CAFvB5Z,EAAM,iBACNuJ,sCACY4Q,IAmDN,IAAMC,GAAN,cAAwBJ,EA8B7B,WAAA/b,CAAY4E,GACV3E,MAAM2E,EACP,YCjHawX,KACd,OAAO,SACLlJ,EACAmJ,EACAC,GAEA,MAAMC,EAAiBD,EAAW/R,MAgClC,OA9BA+R,EAAW/R,MAAQrF,kBAEd1D,GAEH,MAAME,EAAiBF,EAAK,GACtBgb,EAAW9a,EAAIkU,eAAexE,QAE9BxK,QAAgBzG,KACH,gBACjByG,SAEI6V,QAAe7V,EAAO8V,QAAQhb,GAEpC,GAAqB,GAAjB+a,EAAOxY,OACT,MAAM,IAAIgK,EAAc,uBAG1B,GAAIwO,EAAOxY,OAAS,EAClB,MAAM,IAAIgK,EAAc,6BAA6BwO,EAAOxY,QAG9D,GAAIwY,EAAO,GAAG5a,OAAS2a,EACrB,MAAM,IAAIxE,EACR,8BAA8BqE,kBAIlC,aAAaE,EAAejJ,MAAMnT,KAAMqB,EAC1C,EAEO8a,CACT,CACF,CChFA,IAAYK,GFqIVhB,GAAA,CAXC7W,EAAG,CAAEP,KAAM,WAKXyX,IACAC,8BAKcE,GAAA/C,UAAA,aAAA,GAQfuC,GAAA,CANCK,IACAC,8BAKgBE,GAAA/C,UAAA,eAAA,GAQjBuC,GAAA,CANCK,IACAC,8BAKcE,GAAA/C,UAAA,aAAA,GA5BJ+C,GAASR,GAAA,CAFrB5Z,EAAM,oBACNuJ,sCACY6Q,IEzHb,CAAYQ,IAQVA,EAAA,SAAA,WASAA,EAAA,SAAA,UACD,EAlBD,CAAYA,KAAAA,GAkBX,CAAA,ICuBK,MAAgBC,WAA4B7C,GAOhD,WAAA/Z,CAAsBgC,GACpB/B,MAAM+B,EAAMka,IAEZU,GAAoB7Z,QAClB6Z,GAAoB7Z,SAAW,IAAI2O,GAErCvR,KAAK0c,iBAAmBha,GAAyBqX,SAC/CgC,GACAU,GAAoB7Z,QAAQoP,OAG9BhS,KAAK2c,gBAAkBja,GAAyBqX,SAC9C4B,GACAc,GAAoB7Z,QAAQoP,OAG9BhS,KAAK4c,oBAAsBla,GAAyBqX,SAClDiC,GACAS,GAAoB7Z,QAAQoP,MAE/B,CAGD,eAAM6K,CAAUnZ,GACd,MAAMnC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAK6c,iBAE5C7c,KAAK8c,iBAAiBvb,GAE5B,MAAMkF,EAASzG,KAAK2c,gBAAgBlW,SAGpC,aAFqBA,EAAO8V,QAAQhb,IAAM,GAE7BM,IACd,CASD,YAAMkb,CAAOrZ,GACX,MAAMnC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAK6c,iBAE5C7c,KAAK8c,iBAAiBvb,GAE5B,MAAMkF,EAASzG,KAAK2c,gBAAgBlW,SAGpC,aAFqBA,EAAO8V,QAAQhb,IAAM,GAE7Byb,MACd,CAUD,cAAMC,CAASvZ,GACb,MAAMnC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAK6c,iBAE5C7c,KAAK8c,iBAAiBvb,GAE5B,MAAMkF,EAASzG,KAAK2c,gBAAgBlW,SAGpC,aAFqBA,EAAO8V,QAAQhb,IAAM,GAE7B2b,QACd,CASD,iBAAMC,CAAYzZ,GAChB,MAAMnC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAK6c,iBAE5C7c,KAAK8c,iBAAiBvb,GAE5B,MAAMkF,EAASzG,KAAK0c,iBAAiBjW,SAC/B2W,QAAgB3W,EAAO8V,QAAQhb,GAErC,GAAsB,GAAlB6b,EAAQtZ,OACV,MAAM,IAAIgK,EAAc,aAAa9N,KAAK0a,4BAG5C,IAAI2C,EAAQ,EAMZ,OAJAD,EAAQnT,QAASqT,IACfD,GAASC,EAAOC,UAGXF,CACR,CAUD,eAAMG,CAAU9Z,EAAkBhC,GAChC,MAAMH,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAK6c,WAMlD,aAJM7c,KAAK8c,iBAAiBvb,UAEPvB,KAAK0c,iBAAiB7O,KAAKnM,EAAOH,IAEzCgc,OACf,CAaK,cAAAE,CACJ/Z,EACAga,EACAtT,GAGA,MAAM7I,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKyd,gBAC5Czd,KAAK8c,iBAAiBvb,GAE5B,MAAMgB,EAAOhB,EAAInB,SAAS6Q,QAG1B,UAD2BjR,KAAK2d,UAAUpb,EAAMmb,EAAItT,EAAO7I,GAEzD,MAAM,IAAIqD,EAAc,sBAG1B,OAAO,CACR,CAYK,kBAAAgZ,CACJla,EACAnB,EACAmb,EACAtT,GAGA,MAAM7I,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAK6d,gBAC5C7d,KAAK8c,iBAAiBvb,GAI5B,MAAMuc,EAAUvc,EAAInB,SAAS6Q,QAEvB8M,QAAkB/d,KAAKge,cAAczb,EAAMub,EAASvc,GAC1D,IAAKwc,GAA+B,EAAlBA,EAAU3T,MAC1B,MAAM,IAAIuG,GACR,WAAWmN,2BAAiCvb,KAIhD,MAAM0b,EAAmBF,EAAU3T,MAGnC,GAAuBA,EAAnB6T,EACF,MAAM,IAAIvN,GACR,wDAKJ,MAAMwN,EAAmB3C,GAAI0C,EAAkB7T,GACzC+T,EAAepb,OAAOC,OAAO,CAAA,EAAI+a,EAAW,CAChD3T,MAAO8T,IAOT,SAJMle,KAAK4c,oBAAoBhO,OAAOuP,EAAc5c,UAGzBvB,KAAK2d,UAAUpb,EAAMmb,EAAItT,EAAO7I,GAEzD,MAAM,IAAIqD,EAAc,sBAG1B,OAAO,CACR,CAED,eAAM+Y,CACJpb,EACAmb,EACAtT,EACA7I,GAEA,MAAMD,EAAMC,EAAIoC,OAEhB,GAAIpB,IAASmb,EACX,MAAM,IAAI7F,EACR,mDAIJ,GAAY,EAARzN,EAEF,MAAM,IAAIsG,GAAa,sCAKzB,MAAM0N,QAAmBpe,KAAK0c,iBAAiB7O,KAAKtL,EAAMhB,GAEpD8c,EAAcD,EAAWb,QAG/B,GAAkBnT,EAAdiU,EACF,MAAM,IAAI3N,GAAa,kBAAkBnO,6BAK3C,IAAI+b,EACAC,GAAuB,EAC3B,IACED,QAAiBte,KAAK0c,iBAAiB7O,KAAK6P,EAAInc,EACjD,CAAC,MAAOgG,GACP,KAAIA,aAAaC,GAaf,MAAM,IAAI5C,EAAc2C,GAZxB,GAAe,MAAXA,EAAEiX,KASJ,MAAM,IAAI5Z,EAAc2C,EAAEkQ,SAP1B6G,EAAW,IAAIvC,GAAY,CACzB3a,GAAIsc,EACJH,QAAS,EACTkB,YAAaze,KAAK6c,UAAUtb,KAE9Bgd,GAAc,CAOnB,CAED,MAAMG,EAAYJ,EAASf,QAGrBoB,EAAqBpD,GAAI8C,EAAajU,GACtCwU,EAAmBxD,GAAIsD,EAAWtU,GAElCyU,EAAoB9b,OAAOC,OAAO,CAAA,EAAIob,EAAY,CACtDb,QAASoB,UAGL3e,KAAK0c,iBAAiB9N,OAAOiQ,EAAmBtd,GAEtD,MAAMud,EAAkB/b,OAAOC,OAAO,CAAA,EAAIsb,EAAU,CAClDf,QAASqB,IAGPL,QACIve,KAAK0c,iBAAiB7N,OAAOiQ,EAAiBvd,SAE9CvB,KAAK0c,iBAAiB9N,OAAOkQ,EAAiBvd,GAItD,MAAMwd,EAAgB,CAAExc,OAAMmb,KAAItT,MAAOA,GAYzC,OAVApK,KAAK4N,KACFoR,QACCrD,GACAa,GAAYyC,SACZ,GACAF,EACAxd,GAED2d,MAAO3X,GAAMjG,EAAIqK,MAAM,8BAA8BpE,KAEjD,CACR,CAYK,aAAA4X,CACJzb,EACAoa,EACA1T,GAEA,MAAM7I,IAAEA,EAAG6E,QAAEA,SAAkBpG,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKmf,eAErDnf,KAAK8c,iBAAiBvb,GAE5B,MAAMG,EAAQH,EAAInB,SAAS6Q,QAE3B,IAAI8M,QAAkB/d,KAAKge,cAActc,EAAOoc,EAASvc,GAIzD,UAF0BvB,KAAK0c,iBAAiB7O,KAAKnM,KAAU0E,IAE/CmX,QAAUnT,EACxB,MAAM,IAAIsG,GAAa,kBAAkBhP,6BAGvCqc,GAEFA,EAAU3T,MAAQA,QACZpK,KAAK4c,oBAAoBhO,OAAOmP,KAAc3X,KAEpD2X,EAAY,IAAI/B,GAAU,CACxBta,MAAOA,EACPoc,QAASA,EACT1T,MAAOA,UAGHpK,KAAK4c,oBAAoB/N,OAAOkP,KAAc3X,IAItD,MAAMgZ,EAAgB,CAAE1d,QAAOoc,UAAS1T,MAAOA,GAS/C,OARApK,KAAK4N,KAAKoR,QACRrD,GACAa,GAAY6C,SACZ,GACAD,EACA7d,IAGK,CACR,CAWK,eAAAya,CACJtY,EACAhC,EACAoc,GAEA,MAAMvc,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKgc,iBAE5Chc,KAAK8c,iBAAiBvb,GAE5B,MAAMwc,QAAkB/d,KAAKge,cAActc,EAAOoc,EAASvc,GAE3D,IAAKwc,EACH,MAAM,IAAIpN,GACR,WAAWmN,2BAAiCpc,KAGhD,OAAOqc,EAAU3T,KAClB,CAED,mBAAM4T,CACJtc,EACAoc,EACAvc,GAEA,MAAM+d,EAAqBtW,EAAUC,IACnCD,EAAUE,UAAqB,SAASC,GAAGzH,GAC3CsH,EAAUE,UAAqB,WAAWC,GAAG2U,IAGzCC,QAAkB/d,KAAK4c,oBAC1BnW,SACAC,MAAM4Y,GACN/C,QAAQhb,GACX,OAAOwc,IAAY,EACpB,CAcD,gBAAMwB,CAAW7b,EAAkB+a,GACjC,MAAMld,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKuf,YAGlD,UADqBvf,KAAK2c,gBAAgBlW,SAAS8V,QAAQhb,IAChDuC,OAAS,EAClB,MAAM,IAAI+T,EACR,6EAQJ,OAJA4G,EAAM/c,MAAQH,EAAInB,SAAS6Q,cAErBjR,KAAK2c,gBAAgB9N,OAAO4P,EAAOld,IAElC,CACR,CAID,sBAAMub,CAAiBpZ,GACrB,MAAMnC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAK8c,kBAElD,GAAqB,UADA9c,KAAK2c,gBAAgBlW,SAAS8V,QAAQhb,IAChDuC,OACT,MAAM,IAAI+M,GACR,wGAGL,CAWD,UAAM2O,CAAK9b,EAAkB+b,GAC3B,MAAMle,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKwf,YAE5Cxf,KAAK8c,iBAAiBvb,GAG5B,MAAMme,EAASne,EAAInB,SAAS6Q,QAE5B,GAAc,GAAVwO,EACF,MAAM,IAAIha,EAAgB,0CAG5B,IAAIka,EACJ,IACEA,QAAqB3f,KAAK0c,iBAAiB7O,KAAK6R,EAAQne,GAExD,MAEMqe,EAAiBxE,GAFAuE,EAAapC,QAEOkC,GAErCI,EAAgB9c,OAAOC,OAAO,CAAA,EAAI2c,EAAc,CACpDpC,QAASqC,UAGL5f,KAAK0c,iBAAiB9N,OAAOiR,EAAete,EACnD,CAAC,MAAOgG,GACP,KAAIA,aAAaC,GAaf,MAAM,IAAI5C,EAAc2C,GAZxB,GAAe,MAAXA,EAAEiX,KASJ,MAAM,IAAI5Z,EAAc2C,EAAEkQ,SATR,CAElB,MAAMqI,EAAY,IAAI/D,GAAY,CAChC3a,GAAIse,EACJnC,QAASkC,EACThB,YAAaze,KAAK6c,UAAUnZ,WAExB1D,KAAK0c,iBAAiB7N,OAAOiR,EAAWve,EAC/C,CAMJ,CAGD,MAAMwd,EAAgB,CAAExc,KAAM,MAAOmb,GAAIgC,EAAQtV,MAAOqV,GAEtDzf,KAAK4N,KAAKrN,kBACCU,gBACX0a,GACAa,GAAYyC,SACZ,GACAF,EACAxd,EAEH,CAWD,UAAMwe,CAAKrc,EAAkB+b,GAC3B,MAAMne,IAAEA,EAAGC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAK+f,YAEjD/f,KAAK8c,iBAAiBvb,GAE5B,MAAMme,EAASne,EAAInB,SAAS6Q,QAEtB0O,QAAqB3f,KAAK0c,iBAAiB7O,KAAK6R,EAAQne,GAExDye,EAAiBL,EAAapC,QAEpC,GAAqBkC,EAAjBO,EACF,MAAM,IAAItP,GAAa,kCAGzB,MAAMkP,EAAiBrE,GAAIyE,EAAgBP,GAErCI,EAAgB9c,OAAOC,OAAO,CAAA,EAAI2c,EAAc,CACpDpC,QAASqC,UAGL5f,KAAK0c,iBAAiB9N,OAAOiR,EAAete,GAElDD,EAAI4C,KAAQub,EAAH,uBAGT,MAAMV,EAAgB,CAAExc,KAAMmd,EAAQhC,GAAI,MAAOtT,MAAOqV,GAEtDzf,KAAK4N,KAAKrN,kBACCU,gBACX0a,GACAa,GAAYyC,SACZ,GACAF,EACAxd,EAEH,CAYK,cAAAsc,CACJna,EACAuc,EACAR,GAEA,MAAMne,IAAEA,EAAGC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAK6d,gBAEjD7d,KAAK8c,iBAAiBvb,GAE5B,MAAM2e,QAAsBlgB,KAAK0c,iBAAiB7O,KAAKoS,EAAS1e,GAE1Dye,EAAiBE,EAAc3C,QAErC,GAAqBkC,EAAjBO,EACF,MAAM,IAAItP,GAAgBuP,EAAH,4BAGzB,MAAML,EAAiBrE,GAAIyE,EAAgBP,GAErCU,EAAiBpd,OAAOC,OAAO,CAAA,EAAIkd,EAAe,CACtD3C,QAASqC,UAGL5f,KAAK0c,iBAAiB9N,OAAOuR,EAAgB5e,GAEnDD,EAAI4C,KAAK,GAAGub,6BAAkCQ,KAG9C,MAAMlB,EAAgB,CAAExc,KAAM0d,EAASvC,GAAI,MAAOtT,MAAOqV,GAEvDzf,KAAK4N,KAAKrN,kBACCU,gBACX0a,GACAa,GAAYyC,SACZ,GACAF,EACAxd,EAEH,CASD,0BAAM6e,CAAqB1c,GACzB,MAAMnC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAK6c,iBAE5C7c,KAAK8c,iBAAiBvb,GAG5B,MAAM8e,EAAkB9e,EAAInB,SAAS6Q,QAE/BqP,QAAqBtgB,KAAK0c,iBAAiB7O,KAAKwS,EAAiB9e,GAEvE,IAAK+e,EACH,MAAM,IAAI5P,GAAa,eAAe2P,oBAGxC,OAAOC,EAAa/C,OACrB,CAMD,qBAAMgD,CAAgB7c,GACpB,MAAMnC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKugB,iBAMlD,aAJMvgB,KAAK8c,iBAAiBvb,GAGJA,EAAInB,SAAS6Q,OAEtC,EArmBKuK,GAAA,CADLC,IAAY,sDACY7b,qCASxB6c,GAAAxD,UAAA,YAAA,MASKuC,GAAA,CADLC,IAAY,sDACS7b,qCASrB6c,GAAAxD,UAAA,SAAA,MAUKuC,GAAA,CADLC,IAAY,sDACW7b,qCASvB6c,GAAAxD,UAAA,WAAA,MASKuC,GAAA,CADLC,IAAY,sDACc7b,qCAmB1B6c,GAAAxD,UAAA,cAAA,MAUKuC,GAAA,CADLC,IAAY,sDACY7b,EAAO0O,0CAQ/BmO,GAAAxD,UAAA,YAAA,MAaKuC,GAAA,CADLC,wDAEU7b,EAAO0O,OAAAF,0CAgBjBqO,GAAAxD,UAAA,WAAA,MAYKuC,GAAA,CADLC,wDAEU7b,EAAO0O,OAAAA,OAAAF,0CA4CjBqO,GAAAxD,UAAA,eAAA,MAwGKuC,GAAA,CADLC,wDAEU7b,EAAO0O,OAAAF,0CA2CjBqO,GAAAxD,UAAA,UAAA,MAWKuC,GAAA,CADLC,IAAY,sDAEF7b,EAAO0O,OAAAA,0CAgBjBmO,GAAAxD,UAAA,YAAA,MA+BKuC,GAAA,CADLC,gCACyBC,GAAA,oBAAA,CAAA9b,EAAgB+b,sCAezCc,GAAAxD,UAAA,aAAA,MAIKuC,GAAA,CADLC,IAAY,sDACmB7b,qCAQ/B6c,GAAAxD,UAAA,mBAAA,MAWKuC,GAAA,CAFLS,KACAR,wDACmB7b,EAAOwO,0CAsD1BqO,GAAAxD,UAAA,OAAA,MAWKuC,GAAA,CAFLS,KACAR,wDACmB7b,EAAOwO,0CAoC1BqO,GAAAxD,UAAA,OAAA,MAYKuC,GAAA,CAFLS,KACAR,wDAEU7b,EAAO0O,OAAAF,0CAqCjBqO,GAAAxD,UAAA,WAAA,MASKuC,GAAA,CADLC,IAAY,sDACuB7b,qCAenC6c,GAAAxD,UAAA,uBAAA,MAMKuC,GAAA,CADLC,IAAY,sDACkB7b,qCAQ9B6c,GAAAxD,UAAA,kBAAA,MC/qBU,MAAAuH,GAAmB,CAAC/D,ICFpBgE,GAAU,cACVC,GAAe,cAE5B1Y,GAAS2Y,gBAAgBD,GAAcD"}
|
|
1
|
+
{"version":3,"file":"for-fabric.js","sources":["../src/contracts/ContractContext.ts","../src/contracts/FabricContractRepositoryObservableHandler.ts","../src/shared/events.ts","../src/contracts/FabricContractRepository.ts","../src/contracts/FabricContractStatement.ts","../src/contracts/FabricContractSequence.ts","../src/shared/constants.ts","../src/shared/SimpleDeterministicSerializer.ts","../src/contracts/logging.ts","../src/contracts/FabricContractPaginator.ts","../src/shared/errors.ts","../src/contracts/ContractAdapter.ts","../src/shared/DeterministicSerializer.ts","../src/contracts/crud/crud-contract.ts","../src/contracts/crud/serialized-crud-contract.ts","../src/shared/math.ts","../src/contracts/erc20/models.ts","../src/shared/decorators.ts","../src/shared/erc20/erc20-constants.ts","../src/contracts/erc20/erc20contract.ts","../src/contracts/erc20/index.ts","../src/version.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["FabricContractContext","Context","constructor","super","stub","this","get","timestamp","getDateTimestamp","identity","toString","FabricContractRepositoryObservableHandler","ObserverHandler","supportedEvents","OperationKeys","CREATE","UPDATE","DELETE","BulkCrudOperationKeys","CREATE_ALL","UPDATE_ALL","DELETE_ALL","updateObservers","clazz","event","id","args","log","ctx","Adapter","logCtx","owner","payload","table","name","indexOf","debug","eventName","params","push","join","generateFabricEventName","setEvent","Buffer","from","JSON","stringify","FabricContractRepository","Repository","adapter","trackedEvents","_overrides","Object","assign","ignoreValidation","ignoreHandlers","allowRawStatements","forcePrepareSimpleQueries","forcePrepareComplexQueries","paginateBy","key","order","ref","offset","limit","bookmark","QueryError","contextArgs","PreparedStatementKeys","PAGE_BY","class","ctxArgs","paginator","verbose","Model","tableName","override","select","where","attr","pk","gt","orderBy","paginate","paged","page","serialize","statement","statements","PersistenceKeys","STATEMENT","context","logger","info","result","e","BaseError","InternalError","FabricStatement","CouchDBStatement","raw","rawInput","results","pkAttr","fromSelector","type","Metadata","DBKeys","ID","selectSelector","map","r","processRecord","build","selectors","CouchDBKeys","TABLE","query","selector","fields","whereCondition","condition","parseCondition","Condition","and","attribute","eq","selectorKeys","keys","length","values","CouchDBGroupOperator","AND","reduce","accum","val","Error","k","OR","s","entries","forEach","orderBySelector","sort","value","rec","CouchDBOperator","BIGGER","limitSelector","offsetSelector","skip","FabricContractSequence","Sequence","options","current","READ","SequenceModel","startWith","sequence","repo","read","parse","for","NotFoundError","cachedCurrent","increment","count","incrementBy","lock","execute","async","toIncrementBy","typeName","currentValue","returnAndCache","res","Promise","cache","put","performUpsert","next","update","create","UUID","instance","generate","ConflictError","base","Number","BigInt","String","Serial","incrementSerial","seq","argz","undefined","range","UnsupportedError","i","FabricModelKeys","IdentityType","FabricFlavour","SimpleDeterministicSerializer","JSONSerializer","deserialize","str","model","putAnchor","require","sortKeysRecursive","preSerialize","toSerialize","metadata","modelName","error","obj","Array","isArray","ModelKeys","ANCHOR","relations","call","ContractLogger","MiniLogger","conf","logging","getLogger","level","msg","stack","NumericLogLevels","config","method","LogLevel","silly","createLog","Logging","setFactory","object","FabricContractPaginator","CouchDBPaginator","size","prepare","rawStatement","isPreparedStatement","pagePrepared","_recordCount","_totalPages","Math","ceil","validatePage","_bookmark","PagingError","docs","d","revert","parseValue","direction","OrderDirection","DSC","ASC","_currentPage","OverflowError","BalanceError","AllowanceError","MissingContextError","NotInitializedError","createdByOnFabricCreateUpdate","data","user","getID","pkFabricOnCreate","sequenceName","defineProperty","enumerable","writable","configurable","FabricContractAdapter","CouchDBAdapter","getClient","textDecoder","TextDecoder","serializer","repository","Paginator","scope","alias","composedKey","createCompositeKey","putState","parseError","readState","delete","deleteState","forPrivate","collection","toOverride","queryResult","queryResultPaginated","fn","Proxy","target","prop","receiver","includes","apply","thisArg","argsList","putPrivateData","deletePrivateData","getPrivateData","getPrivateDataQueryResult","iterator","reachedBookmark","lastKey","recordKey","recordValue","Key","Record","close","fetchedRecordsCount","done","Reflect","SerializationError","getState","getQueryResult","_id","$gt","$gte","getQueryResultWithPagination","mergeModels","extract","finalModel","pop","decode","buffer","flags","operation","baseFlags","segregated","correlationId","getTxID","clientIdentity","index","models","resolve","resultIterator","isHistory","allResults","jsonRes","TxId","txId","Timestamp","Value","err","docsOnly","Statement","createAll","tableLabel","all","updateAll","split","segregate","mappedProp","columnName","isReserved","record","transient","ob","m","createPrefix","updatePrefix","createAllPrefix","ids","records","updateAllPrefix","reason","filter","a","clear","message","BadRequestError","MigrationError","ObserverError","AuthorizationError","ForbiddenError","ConnectionError","decoration","Decoration","flavouredAs","CREATED_BY","define","onCreate","propMetadata","UPDATED_BY","onCreateUpdate","COLUMN","extend","FabricProperty","ValidationKeys","DATE","Property","chain","constr","prototype","getPrototypeOf","FabricObject","setCurrent","DeterministicSerializer","self","o","bind","deserialization","className","Date","FabricCrudContract","Contract","initialized","forModel","listBy","findOneBy","getTransientData","merge","transientMap","getTransient","has","deleteAll","readAll","init","getName","healthcheck","Ctx","overrides","READ_ALL","getOp","SerializedCrudContract","serialized","parsedKeys","modelList","cond","add","b","c","sub","__decorate","Transaction","__metadata","ERC20Token","BaseModel","column","required","ERC20Wallet","Allowance","Owner","propertyKey","descriptor","originalMethod","acountId","tokens","ERC20Events","FabricERC20Contract","walletRepository","tokenRepository","allowanceRepository","TokenName","CheckInitialized","Symbol","symbol","Decimals","decimals","TotalSupply","wallets","total","wallet","balance","BalanceOf","Transfer","to","_transfer","TransferFrom","BurnFrom","spender","allowance","_getAllowance","currentAllowance","updatedAllowance","newAllowance","fromWallet","fromBalance","toWallet","newToWallet","code","token","toBalance","fromUpdatedBalance","toUpdatedBalance","updatedFromWallet","updatedToWallet","transferEvent","refresh","TRANSFER","catch","Approve","approvalEvent","APPROVAL","allowanceCondition","Initialize","Mint","amount","minter","ValidationError","minterWallet","updatedBalance","updatedminter","newWallet","Burn","currentBalance","account","accountWallet","updatedaccount","ClientAccountBalance","clientAccountID","clientWallet","ClientAccountID","contracts","VERSION","PACKAGE_NAME","registerLibrary"],"mappings":"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"}
|
|
@@ -787,13 +787,19 @@ class FabricClientAdapter extends core_1.Adapter {
|
|
|
787
787
|
// )
|
|
788
788
|
// )
|
|
789
789
|
// return new UnauthorizedPrivateDataAccess(err) as E;
|
|
790
|
+
const msg = typeof err === "string" ? err : err.message;
|
|
791
|
+
if (msg.includes("MVCC_READ_CONFLICT"))
|
|
792
|
+
return new errors_1.MvccReadConflictError(err);
|
|
793
|
+
if (msg.includes("ENDORSEMENT_POLICY_FAILURE"))
|
|
794
|
+
return new errors_1.EndorsementPolicyError(err);
|
|
795
|
+
if (msg.includes("PHANTOM_READ_CONFLICT"))
|
|
796
|
+
return new errors_1.PhantomReadConflictError(err);
|
|
790
797
|
if (err instanceof Error && err.code) {
|
|
791
798
|
switch (err.code) {
|
|
792
799
|
case 9:
|
|
793
800
|
return new errors_1.EndorsementError(err);
|
|
794
801
|
}
|
|
795
802
|
}
|
|
796
|
-
const msg = typeof err === "string" ? err : err.message;
|
|
797
803
|
if (msg.includes(db_decorators_1.NotFoundError.name))
|
|
798
804
|
return new db_decorators_1.NotFoundError(err);
|
|
799
805
|
if (msg.includes(db_decorators_1.ConflictError.name))
|