@cap-ts/soap-adapter 0.3.0 โ†’ 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -7,12 +7,12 @@
7
7
 
8
8
  ## ๐Ÿ“ฆ About
9
9
 
10
- `@cap-ts/soap-adapter` turns a WSDL operation into a CAP entity: consumers declare the entity in `.cds` with a small set of `@Soap.*` annotations, ship an adapter subclass that shapes the SOAP request/response, and the plugin does the rest โ€” CSRF-safe HTTP routing (`/soap/**`), destination + JWT propagation, filter push-down, XML build/parse, response flattening, and an OData-style JSON response (`@odata.context`, `@odata.count`, `@odata.nextLink`). It is read only: writes are rejected with 405.
10
+ `@cap-ts/soap-adapter` turns a WSDL operation into a CAP entity: consumers declare the entity in `.cds` with a small set of `@Soap.*` annotations, ship an adapter class (the CAP service of the SOAP service, a subclass of `soap.Service`) that shapes the SOAP request/response, and the plugin does the rest โ€” CSRF-safe HTTP routing (`/soap/**`), destination + JWT propagation, filter push-down, XML build/parse, response flattening, and an OData-style JSON response (`@odata.context`, `@odata.count`, `@odata.nextLink`). It is read only: writes are rejected with 405.
11
11
 
12
12
  | Area | Features |
13
13
  | --- | --- |
14
14
  | Model | Seven typed CDS annotations (`@Soap`, `@Soap.operation`, `@Soap.binding`, `@Soap.rootResponse`, `@Soap.path`, `@Soap.filterRestriction`, `@Soap.adapter`), checked by `cds compile` |
15
- | Adapter hooks | `header()` (SOAP headers), `request()` (input message, push-down sentinels), `response()` (raw rows), `mock()` (offline) |
15
+ | Adapter class | A CAP service per SOAP service (`soap.Service`), found next to its `.cds` file (also in a `cds build` output), through `@Soap.adapter` or `cds.requires.<Service>.impl`; hooks `header()` (SOAP headers), `request()` (input message, push-down sentinels), `response()` (raw rows), `mock()` (offline), plus CAP's `before` / `on` / `after` |
16
16
  | HTTP | `GET /soap/<path>/<Entity>` and `/<Entity>/<key>` with `$select`, `$filter`, `$orderby`, `$top`, `$skip` / `$skiptoken`, `$count`; OData-style JSON; `@requires` enforced |
17
17
  | Queries | Fail-closed `$filter` parser, mandatory filter fields, one SOAP call per key value (`multipleSelection: false`), push-down or bounded in-memory evaluation with `@odata.nextLink` |
18
18
  | In process | The SOAP service is a CAP service: other services read it with `srv.run(SELECT ...)` or `soap.read(...)` (e.g. `@cap-ts/remote-service-adapter`) |
@@ -29,7 +29,7 @@
29
29
  ๐Ÿ“ [CDS annotation reference (`@Soap.*`)](#-cds-annotation-reference-soap)\
30
30
  ๐ŸŒ [HTTP endpoints and query options](#-http-endpoints-and-query-options)\
31
31
  ๐Ÿ”— [Using SOAP entities from other services](#-using-soap-entities-from-other-services)\
32
- ๐Ÿ”Œ [Adapter class API (`soap.ApplicationService`)](#-adapter-class-api-soapapplicationservice)\
32
+ ๐Ÿ”Œ [Adapter class API (`soap.Service`)](#-adapter-class-api-soapservice)\
33
33
  ๐Ÿงฐ [Utility API (`soap.*`)](#-utility-api-soap)\
34
34
  โš™๏ธ [Configuration (`cds.env.query.soap.*`)](#๏ธ-configuration-cdsenvquerysoap)\
35
35
  ๐Ÿข [Multi-tenant destinations & JWT propagation](#-multi-tenant-destinations--jwt-propagation)\
@@ -97,12 +97,13 @@ Optional but recommended:
97
97
  โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
98
98
  โ”‚ โ”‚ โ”‚
99
99
  โ”‚ โ–ผ โ”‚
100
- โ”‚ Consumer srv/lib/BP.js (extends soap.ApplicationService) โ”‚
100
+ โ”‚ Consumer srv/lib/BP.js (class BP extends soap.Service) โ”‚
101
101
  โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
102
- โ”‚ โ”‚ init() { โ”‚ โ”‚
102
+ โ”‚ โ”‚ async init() { โ”‚ โ”‚
103
103
  โ”‚ โ”‚ this.header(BusinessPartner, req => ({ Authorization: โ€ฆ })); โ”‚ โ”‚
104
104
  โ”‚ โ”‚ this.request(BusinessPartner, (req, payload) => โ€ฆ); โ”‚ โ”‚
105
105
  โ”‚ โ”‚ this.response(BusinessPartner, (req, rows) => rows.map(โ€ฆ)); โ”‚ โ”‚
106
+ โ”‚ โ”‚ await super.init(); โ”‚ โ”‚
106
107
  โ”‚ โ”‚ } โ”‚ โ”‚
107
108
  โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
108
109
  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
@@ -116,7 +117,7 @@ Optional but recommended:
116
117
  OData-style GET endpoint at `/soap/<service path>/<Entity>`
117
118
  ```
118
119
 
119
- Two-word summary: **annotate + subclass**. The plugin needs both โ€” the annotations tell it *what* to route, the subclass tells it *how* to marshal.
120
+ Two-word summary: **annotate + subclass**. The plugin needs both โ€” the annotations tell it *what* to route, the subclass tells it *how* to marshal. The subclass is the CAP service of the SOAP service: one instance, constructed at boot.
120
121
 
121
122
  ---
122
123
 
@@ -131,7 +132,7 @@ srv/
131
132
  external/
132
133
  BP.cds โ† SOAP service model
133
134
  lib/
134
- BP.js โ† adapter subclass (of soap.ApplicationService)
135
+ BP.js โ† adapter class (extends soap.Service)
135
136
  wsdl/
136
137
  BP.wsdl โ† WSDL cached locally
137
138
  package.json
@@ -180,13 +181,13 @@ service BP {
180
181
  }
181
182
  ```
182
183
 
183
- **3. Ship an adapter subclass at `srv/external/lib/BP.js`.**
184
+ **3. Ship the adapter class at `srv/external/lib/BP.js`** (`.ts` works too; see [Finding the adapter class](#finding-the-adapter-class)).
184
185
 
185
186
  ```js
186
187
  const { soap } = require('@cap-ts/soap-adapter');
187
188
 
188
- class BP extends soap.ApplicationService {
189
- init() {
189
+ class BP extends soap.Service {
190
+ async init() {
190
191
  const { BusinessPartner } = this.entities;
191
192
 
192
193
  this.request(BusinessPartner, (req, payload) => {
@@ -199,12 +200,14 @@ class BP extends soap.ApplicationService {
199
200
  // Rows are the raw entries under `rootResponse`; `@Soap.path` mapping runs after this hook.
200
201
  return rows.filter(r => r != null);
201
202
  });
203
+
204
+ await super.init(); // registers the SOAP READ pipeline
202
205
  }
203
206
  }
204
207
  module.exports = BP;
205
208
  ```
206
209
 
207
- **4. Start `cds watch`.** The loader mounts GET routes under `/soap` + the service's `@path`, or, without `@path`,
210
+ **4. Start `cds watch`.** The boot line names the class it found (`serving BP { at: ['/soap/bp'], decl: 'srv/external/BP.cds:3', impl: 'srv/external/lib/BP.js' }`). The loader mounts GET routes under `/soap` + the service's `@path`, or, without `@path`,
208
211
  its short name in lower case:
209
212
 
210
213
  - `/soap/bp/BusinessPartner` โ€” the entity set (`$select`, `$count`, `$filter`, `$orderby`, `$top`, `$skip`; any other
@@ -227,7 +230,7 @@ Details: [HTTP endpoints and query options](#-http-endpoints-and-query-options).
227
230
  | `@Soap.rootResponse: '<path>'` | entity | No | Same as `binding.rootResponse`, takes precedence. Default `<operation>Response`. |
228
231
  | `@Soap.path: '<dot.path>'` | element | No | Where the element's value sits in one response entry. Default: the element name. |
229
232
  | `@Soap.filterRestriction: { mandatoryFields, multipleSelection }` | entity | No | Fields `$filter` must contain (400 otherwise); `multipleSelection: false` = one SOAP call per key value. |
230
- | `@Soap.adapter: '<npm specifier>'` | entity / service | No | Adapter module, instead of the `lib/<Service>.{ts,js}` convention. |
233
+ | `@Soap.adapter: '<module>'` | service | No | Adapter module (a path relative to the project root, or a package), instead of `cds.requires.<Service>.impl` or the file convention. |
231
234
 
232
235
  All seven annotations (`@Soap` and the six `@Soap.*` below) are declared in the package's `index.cds` under the single canonical top-level namespace. `@Soap` (Boolean) only marks a service in the model; what makes a service SOAP-backed at runtime is `kind: "soap"` in `cds.requires`. They are real CDS typed annotations, so `cds compile` type-checks consumer usage โ€” typos and shape mismatches surface at build time, not at first request.
233
236
 
@@ -296,62 +299,116 @@ entity BusinessPartner { โ€ฆ }
296
299
 
297
300
  See ยง [Filter push-down & `filterRestriction`](#-filter-push-down--filterrestriction) below.
298
301
 
299
- ### `@Soap.adapter` *(scalar, entity- or service-level)* โ€” optional
302
+ ### `@Soap.adapter` *(scalar, service-level)* โ€” optional
300
303
 
301
- npm specifier of the adapter module implementing the request / response / mock / header hooks. Resolved at boot.
304
+ The module of the service's adapter class: a path relative to the project root (with or without `./`, without
305
+ extension), or a package specifier resolved from the project root.
302
306
 
303
307
  ```cds
304
- @Soap.adapter : '@my-org/bp-adapter' // sibling package
308
+ @Soap.adapter : '@my-org/bp-adapter' // sibling package
305
309
  service BP { โ€ฆ }
306
310
 
307
- // or, per-entity override:
308
- @Soap.adapter : '@my-org/bp-adapter/dist/BusinessPartner'
309
- entity BusinessPartner { โ€ฆ }
311
+ @Soap.adapter : 'srv/adapters/BusinessPartner' // <root>/srv/adapters/BusinessPartner.{js,ts}
312
+ service BP2 { โ€ฆ }
310
313
  ```
311
314
 
312
- #### Resolution order
315
+ The adapter class is the service, so `@Soap.adapter` belongs on the service. On an entity it stops the start
316
+ (`@Soap.adapter on entity "<Entity>" is not supported since @cap-ts/soap-adapter 0.4`): register the entity's hooks in
317
+ the service class instead.
318
+
319
+ #### Finding the adapter class
313
320
 
314
- 1. Entity-level `@Soap.adapter` (if set).
315
- 2. Service-level `@Soap.adapter` (if set).
316
- 3. Filesystem convention: `<dir-of-the-.cds-file>/lib/<ServiceShortName>.{ts,js}`.
321
+ At startup the plugin looks for the class of each SOAP service, in this order:
317
322
 
318
- On specifier resolution failure the loader logs a diagnostic (`adapter specifier X declared on Y could not be resolved from Z: โ€ฆ โ€” falling back to filesystem convention`) and continues with the filesystem probe. This means: an unresolvable specifier never crashes boot, but you get a loud line to grep for.
323
+ 1. `@Soap.adapter` on the service.
324
+ 2. `impl` in the service's configuration (`cds.requires.<Service>.impl`, CAP's key for a service implementation). Same
325
+ values as `@Soap.adapter`; profiles apply (`"[production]": { "impl": "โ€ฆ" }`).
326
+ 3. The file convention: `<Service>.ts` or `<Service>.js` (`.ts` first) in the folder of the `.cds` file that declares
327
+ the service, in its `lib/` sub-folder, or in its `handlers/` sub-folder (the folders CAP searches as well).
319
328
 
320
- Use `@Soap.adapter` when:
329
+ The folder of rule 3 comes from the service's `@source`, which `cds build` writes into `csn.json`. So the same project
330
+ works under `cds watch` (the `.ts` file next to the `.cds` sources) and when it is served from the build output, e.g.
331
+ `gen/srv` on Cloud Foundry (the compiled `.js` file next to the compiled `.cds` folders).
321
332
 
322
- - The adapter class is shipped from a sibling package in a monorepo.
323
- - The `.cds` is pre-compiled and `$location.file` is unavailable.
324
- - You want to compose adapters across packages, or override the convention per entity.
333
+ A configured value that does not resolve is logged as an error and the next source is tried. The class must extend
334
+ `soap.Service`; a class of an earlier version stops the start with a [migration message](#migrating-from-03).
335
+
336
+ The boot line shows the result:
337
+
338
+ ```text
339
+ serving BP {
340
+ at: ['/soap/bp'],
341
+ decl: 'srv/external/BP.cds:3',
342
+ impl: 'srv/external/lib/BP.js'
343
+ }
344
+ ```
345
+
346
+ When nothing is found, the service still starts, its READs answer `501`, and a warning lists what was tried:
347
+
348
+ ```text
349
+ [soap] no adapter class for BP; tried: @Soap.adapter (none), cds.requires.BP.impl (none), srv/external/{,lib/,handlers/}BP.{ts,js}. Its READs answer 501.
350
+ ```
351
+
352
+ With `"strict": true` in `cds.requires.<Service>` (or `cds.env.features.strict`), a missing class stops the start
353
+ instead, so a broken build is caught at deployment and not at the first request.
325
354
 
326
355
  ---
327
356
 
328
- ## ๐Ÿ”Œ Adapter class API (`soap.ApplicationService`)
357
+ ## ๐Ÿ”Œ Adapter class API (`soap.Service`)
329
358
 
330
359
  [โ†‘ Table of Contents](#-table-of-contents)
331
360
 
332
- Every SOAP-backed service ships an adapter class that extends `soap.ApplicationService`. The class is instantiated once per service at boot and its `init()` method is called to register per-entity hooks.
361
+ Every SOAP-backed service ships an adapter class that extends `soap.Service`. `soap.Service` is a CAP service
362
+ (`cds.Service`): the plugin constructs the class **once per service** at boot, like CAP constructs any service
363
+ (`new BP(name, model, options)`), and awaits its `init()`. Register the hooks in `init()` and end it with
364
+ `await super.init()`, which registers the SOAP READ pipeline.
333
365
 
334
366
  ```js
335
367
  const { soap } = require('@cap-ts/soap-adapter');
336
368
 
337
- class BP extends soap.ApplicationService {
338
- init() {
369
+ class BP extends soap.Service {
370
+ async init() {
339
371
  const { BusinessPartner } = this.entities;
340
372
  // register hooks โ€ฆ
373
+ await super.init();
341
374
  }
342
375
  }
343
376
  module.exports = BP;
344
377
  ```
345
378
 
346
- ### Constructor properties
379
+ - **No request state on `this`.** One instance serves every request; each hook gets the current request as `req`.
380
+ - **CAP handlers work as usual.** `this.before`, `this.on` and `this.after` registered before `await super.init()`
381
+ run around the pipeline; an `on('READ', โ€ฆ)` handler runs instead of it unless it calls `next()`.
382
+ - **CAP can construct it too.** The plugin registers `kind: 'soap'` with CAP (`cds.requires.kinds.soap`), so a
383
+ `cds.connect.to('<Service>')` before the plugin started the service, or a mocked service under `cds watch`, works.
347
384
 
348
- Available inside `init()` via `this.*`:
385
+ ### Service properties
386
+
387
+ Available inside `init()` and the hooks via `this.*` (CAP's service API):
349
388
 
350
389
  | Property | Type | Description |
351
390
  | -------- | ---- | ----------- |
391
+ | `this.name` | `string` | The service name. |
352
392
  | `this.entities` | `Record<string, Csn.Entity>` | CSN entity definitions for the service, keyed by entity short name. |
353
- | `this.model` | `Csn.Model` | Full CSN model for the service. |
354
- | `this.options` | `object` | Merged `cds.requires.<ServiceName>` config object (wsdl path, credentials, โ€ฆ). |
393
+ | `this.model` | `Csn.Model` | Full CSN model. |
394
+ | `this.options` | `object` | The service's `cds.requires.<ServiceName>` entry (wsdl path, credentials, โ€ฆ). |
395
+
396
+ ### Migrating from 0.3
397
+
398
+ 0.3 constructed `soap.ApplicationService` per request. Since 0.4 the class is the service:
399
+
400
+ | 0.3 | 0.4 |
401
+ | --- | --- |
402
+ | `class BP extends soap.ApplicationService` | `class BP extends soap.Service` |
403
+ | `init() { โ€ฆ }` | `async init() { โ€ฆ; await super.init(); }` |
404
+ | `this.req`, `this.entity`, `this.traceContext` | the `req` argument of the hook (`req.target`, `req.context.id`) |
405
+ | `@Soap.adapter` on an entity | `@Soap.adapter` on the service, or `cds.requires.<Service>.impl` |
406
+ | `soap.ApplicationService.stripSensitiveHeaders` / `.FORBIDDEN_SOAP_HEADERS` | `soap.Service.stripSensitiveHeaders` / `.FORBIDDEN_SOAP_HEADERS` |
407
+
408
+ A class that does not extend `soap.Service` stops the start with `the adapter class of SOAP service "<Service>" (<file>)
409
+ does not extend soap.Service`, followed by these steps. An `init()` that does not call `await super.init()` stops the
410
+ start as well (`init() of the adapter class of SOAP service "<Service>" (<file>) does not call "await super.init()"`):
411
+ without it the service has no READ pipeline.
355
412
 
356
413
  ### `this.header(entity, fn)` โ€” outbound HTTP headers
357
414
 
@@ -456,14 +513,14 @@ this.response(BusinessPartner, (req, rows) => {
456
513
  - Several `response()` hooks run in registration order, each receiving the previous result. Always return an array:
457
514
  a hook that returns `undefined` yields an empty result.
458
515
 
459
- ### `soap.ApplicationService.stripSensitiveHeaders(headers)` โ€” static helper
516
+ ### `soap.Service.stripSensitiveHeaders(headers)` โ€” static helper
460
517
 
461
518
  Returns a copy of a header map without the entries that must never reach a backend (auth tokens, session cookies, SAP passport, trace/correlation identifiers). Use it when a `header()` hook builds SOAP headers from a map it did not write itself, such as the inbound request headers:
462
519
 
463
520
  ```js
464
521
  this.header(BusinessPartner, (req) => ({
465
522
  // Everything from the inbound request except credentials, cookies and trace ids.
466
- ...soap.ApplicationService.stripSensitiveHeaders(req.http?.req?.headers ?? {}),
523
+ ...soap.Service.stripSensitiveHeaders(req.http?.req?.headers ?? {}),
467
524
  TraceID: req.id
468
525
  }));
469
526
  ```
@@ -497,17 +554,17 @@ Removed header names (case-insensitive):
497
554
  | `sec-websocket-key` | WebSocket |
498
555
  | `sec-websocket-accept` | WebSocket |
499
556
 
500
- The full list is exposed as the frozen constant `soap.ApplicationService.FORBIDDEN_SOAP_HEADERS` (a `readonly string[]`). Consumers can inspect or extend it:
557
+ The full list is exposed as the frozen constant `soap.Service.FORBIDDEN_SOAP_HEADERS` (a `readonly string[]`). Consumers can inspect or extend it:
501
558
 
502
559
  ```js
503
560
  const { soap } = require('@cap-ts/soap-adapter');
504
561
 
505
562
  // Inspect the built-in list
506
- console.log(soap.ApplicationService.FORBIDDEN_SOAP_HEADERS);
563
+ console.log(soap.Service.FORBIDDEN_SOAP_HEADERS);
507
564
 
508
565
  // Extend with your own headers (create a new Set โ€” do not mutate the frozen array)
509
566
  const myForbidden = new Set([
510
- ...soap.ApplicationService.FORBIDDEN_SOAP_HEADERS,
567
+ ...soap.Service.FORBIDDEN_SOAP_HEADERS,
511
568
  'x-my-internal-token',
512
569
  ]);
513
570
  const withoutForbidden = (headers) =>
@@ -522,7 +579,7 @@ this.header(BusinessPartner, (req) => withoutForbidden(req.http?.req?.headers ??
522
579
 
523
580
  [โ†‘ Table of Contents](#-table-of-contents)
524
581
 
525
- Beyond `ApplicationService`, the package exports a set of standalone utilities available directly on the `soap` namespace. These cover the low-level primitives the orchestrator uses internally โ€” consumers can call them directly when building advanced adapters, testing utilities, or routing logic.
582
+ Beyond `Service`, the package exports a set of standalone utilities available directly on the `soap` namespace. These cover the low-level primitives the orchestrator uses internally โ€” consumers can call them directly when building advanced adapters, testing utilities, or routing logic.
526
583
 
527
584
  ```js
528
585
  const { soap } = require('@cap-ts/soap-adapter');
@@ -567,7 +624,7 @@ One-shot SOAP read: assemble headers, build a real `cds.Request`, dispatch, and
567
624
 
568
625
  ```js
569
626
  const rows = await soap.read(
570
- srv, // ApplicationService instance
627
+ srv, // the SOAP service, e.g. cds.services.BP
571
628
  'BusinessPartner', // entity short name (key into srv.entities)
572
629
  req, // inbound CAP request (source of user, params, headers)
573
630
  req.query, // CQN SELECT query
@@ -582,7 +639,7 @@ const rows = await soap.read(
582
639
 
583
640
  | Parameter | Type | Required | Description |
584
641
  | --------- | ---- | -------- | ----------- |
585
- | `srv` | `ApplicationService` | Yes | The SOAP adapter instance. |
642
+ | `srv` | `soap.SoapService` | Yes | The SOAP service (`cds.services.<Name>`, an instance of its adapter class). |
586
643
  | `entity` | `string` | Yes | Unqualified entity short name, e.g. `'BusinessPartner'`. |
587
644
  | `req` | `cds.Request` | Yes | Source of `user`, `params`, and `headers`. |
588
645
  | `query` | `object` | Yes | CQN SELECT query passed to `createRequest`. |
@@ -649,14 +706,17 @@ Everything the package exposes, values and types, lives under the single `soap`
649
706
  import { soap } from '@cap-ts/soap-adapter';
650
707
 
651
708
  const opts: soap.ReadOptions = { headers: {} };
652
- class BP extends soap.ApplicationService {
653
- init(): void {
709
+ class BP extends soap.Service {
710
+ async init(): Promise<void> {
654
711
  this.header('BusinessPartner', (req): soap.SoapHeaderObject => ({ value: {} }));
712
+ await super.init();
655
713
  }
656
714
  }
657
715
  ```
658
716
 
659
- Available types: `soap.ReadOptions`, `soap.SoapService`, `soap.CdsEntityDef`, `soap.CsnEntityDefinition`, `soap.CreateRequestOptions`, `soap.CdsEntity`, `soap.CdsEntityElement`, `soap.SoapBindingConfig`, `soap.SoapHeaderObject`, `soap.TraceContext`, `soap.BaseAdapterInstance`. There is no top-level export besides `soap`.
717
+ Available types: `soap.ReadOptions`, `soap.SoapService`, `soap.CdsEntityDef`, `soap.CsnEntityDefinition`, `soap.CreateRequestOptions`, `soap.CdsEntity`, `soap.CdsEntityElement`, `soap.SoapBindingConfig`, `soap.SoapHeaderObject`, `soap.HookTarget` (what a hook is registered for: an entity name, or an
718
+ object with a `name` such as an entity of `this.entities`). `soap.Service` brings CAP's service types (`this.on`,
719
+ `this.entities`, ...) from `@cap-js/cds-types`. There is no top-level export besides `soap`.
660
720
 
661
721
  ---
662
722
 
@@ -706,6 +766,8 @@ Per-service configuration lives in `cds.requires.<ServiceName>`:
706
766
  | `wsdl` | `string` | **Yes** | Path to the WSDL file, relative to `cds.root`. |
707
767
  | `credentials.destination` | `string` | **Yes** | Destination name, resolved via `@sap-cloud-sdk/connectivity` (BTP destination service, or the `destinations` environment variable locally). Without it the service fails with `No 'credentials.destination' configured`. |
708
768
  | `credentials.path` | `string` | No | Path appended to the destination URL to form the SOAP endpoint. |
769
+ | `impl` | `string` | No | Module of the adapter class: a path relative to the project root, or a package. See [Finding the adapter class](#finding-the-adapter-class). |
770
+ | `strict` | `boolean` | No | `true`: a missing adapter class stops the start instead of a warning and 501 answers. |
709
771
 
710
772
  The service is looked up in `cds.requires` by its **short name** (the last segment of the service name).
711
773
 
@@ -964,7 +1026,8 @@ Error bodies are `{ "error": { "code", "message", "@Common.numericSeverity": 4 }
964
1026
  | `@requires` set and no authenticated user / user without the role | 401 / 403 |
965
1027
  | Read by key without a row | 404 `Entity instance not found.` |
966
1028
  | CREATE / UPDATE / DELETE | 405 |
967
- | No adapter class resolved for the entity | 501 |
1029
+ | No adapter class found for the service | 501 `No adapter class for SOAP service "<Service>" (entity "<Entity>"): see the "[soap] no adapter class" warning in the startup log` |
1030
+ | A hook rejects with `req.reject(<status>, <message>)` | that status; the message for 4xx and 501, `SOAP integration call failed` for other 5xx |
968
1031
  | SOAP fault, network or destination error, any other failure | 500 `SOAP integration call failed` (details only in the redacted log) |
969
1032
  | One fan-out call fails | the whole request fails |
970
1033
  | Empty answer | `value: []` (`@odata.count: 0` with `$count`) |
@@ -988,13 +1051,15 @@ grace period is over. Contact SAP-Code-World for a new token. See [Licence](#lic
988
1051
 
989
1052
  **Symptom:** `GET /soap/bp/BusinessPartner` returns `404` (no route) or `501` (no adapter class).
990
1053
 
991
- **Cause:** The loader skips entities without `@Soap.operation`, and a request fails with 501 when no adapter class was found for the entity. Check that:
1054
+ **Cause:** The loader skips entities without `@Soap.operation`, and a request fails with 501 when no adapter class was found for the service. The startup log says what was searched (`[soap] no adapter class for <Service>; tried: โ€ฆ`), and the boot line shows `impl: 'undefined'`. Check that:
992
1055
 
993
1056
  1. The entity has `@Soap.operation: '<WsdlOperationName>'` in its `.cds` model.
994
1057
  2. The service is declared with `kind: "soap"` in `cds.requires`.
995
1058
  3. The `.cds` file is reachable from `cds.model` (i.e., it is `using`-imported somewhere in the model graph).
996
1059
  4. The URL uses the service's `@path`, or its short name in lower case.
997
- 5. The adapter class resolves (see [Adapter class not loaded](#adapter-class-not-loaded--typeerror--is-not-a-constructor)).
1060
+ 5. The adapter class resolves (see [Adapter class not found or not loaded](#adapter-class-not-found-or-not-loaded)). An
1061
+ application served from a build output (`gen/srv`) needs the compiled `.js` file in one of the searched folders of
1062
+ the compiled `.cds` folder structure, or `impl` / `@Soap.adapter` pointing to it.
998
1063
 
999
1064
  ---
1000
1065
 
@@ -1016,7 +1081,7 @@ grace period is over. Contact SAP-Code-World for a new token. See [Licence](#lic
1016
1081
 
1017
1082
  **Cause:** You are reading `entity['@Soap.binding']` directly. The CDS compiler serialises struct annotations as **flat leaf CSN keys** (`entity['@Soap.binding.rootRequest']`), not as a nested object. The loader's `readSoapStructAnnotation` helper reassembles these โ€” but only after the `served` event fires.
1018
1083
 
1019
- **Fix:** Read binding via the loader API (available after `cds.on('served', โ€ฆ)`), or use the post-loader entity definition from `this.entities` inside `init()`.
1084
+ **Fix:** Read the binding after `cds.on('served', โ€ฆ)`, e.g. from `this.entities` inside a hook (at request time).
1020
1085
 
1021
1086
  ---
1022
1087
 
@@ -1032,13 +1097,16 @@ node -e "const cds = require('@sap/cds'); console.log(cds.root)"
1032
1097
 
1033
1098
  ---
1034
1099
 
1035
- ### Adapter class not loaded / `TypeError: โ€ฆ is not a constructor`
1100
+ ### Adapter class not found or not loaded
1036
1101
 
1037
- **Symptom:** Boot logs `adapter specifier โ€ฆ could not be resolved` or throws on instantiation.
1102
+ **Symptom:** Boot logs `[soap] no adapter class for <Service>`, `adapter "โ€ฆ" of @Soap.adapter could not be resolved`,
1103
+ `Failed to load adapter at "โ€ฆ"`, or stops with `โ€ฆ does not extend soap.Service`.
1038
1104
 
1039
1105
  **Fix checklist:**
1040
1106
 
1041
- 1. The module at the resolved path must `module.exports` the class (not `exports.MyClass`).
1107
+ 1. The module must export the class as `module.exports` or `default` (not `exports.MyClass`), the class must
1108
+ extend `soap.Service`, and its `init()` must end with `await super.init()` (see
1109
+ [Migrating from 0.3](#migrating-from-03)).
1042
1110
  2. If using TypeScript, something must load `.ts`: `cds watch` / `cds-tsx`, `tsx`, Node 22.18 or later, or `ts-node`
1043
1111
  (`npm i -D ts-node`). The `Failed to load adapter` error of a `.ts` adapter lists these options.
1044
1112
  3. For monorepo sibling packages, ensure the package is listed in `dependencies` and `npm install` has run.
package/index.cds CHANGED
@@ -53,13 +53,12 @@ annotation Soap.filterRestriction {
53
53
  };
54
54
 
55
55
  /**
56
- * npm specifier of the adapter module that implements the request /
57
- * response / mock / header hooks for this service or entity. Resolved via
58
- * `require.resolve(spec, { paths: [cds.root] })` โ€” unblocks monorepo reuse
59
- * (adapter class shipped from a sibling package) and works with pre-
60
- * compiled CSN where `$location.file` is unavailable. When set on both an
61
- * entity and its parent service, the entity-level value wins. When
62
- * unset, the loader falls back to the filesystem convention
63
- * `<cds-dir>/lib/<ServiceShortName>.{ts,js}`.
56
+ * Service only: the module of the service's adapter class (a subclass of
57
+ * `soap.Service`), as a path relative to the project root (with or without
58
+ * `./`, without extension) or a package specifier resolved from the project
59
+ * root. It comes before `cds.requires.<Service>.impl` and the file
60
+ * convention `<Service>.{ts,js}` in the folder of the service's `.cds` file
61
+ * (`@source` of a compiled model), its `lib/` or its `handlers/` folder.
62
+ * On an entity it stops the start: the adapter class is the service.
64
63
  */
65
64
  annotation Soap.adapter : String;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cap-ts/soap-adapter",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "SOAP Adapter for CAP",
5
5
  "main": "src/index.js",
6
6
  "types": "types/index.d.ts",
@@ -1 +1 @@
1
- var _0xaec2a7=_0x5df6;(function(_0x237f0d,_0xf75c56){var _0x43b25d=_0x5df6,_0x3b2761=_0x237f0d();while(!![]){try{var _0x25c306=parseInt(_0x43b25d(0x24d,'@Vs5'))/0x1*(-parseInt(_0x43b25d(0x174,'WG1m'))/0x2)+-parseInt(_0x43b25d(0x1c5,'V(JX'))/0x3+-parseInt(_0x43b25d(0x1aa,'7i(x'))/0x4*(-parseInt(_0x43b25d(0x26a,'yi%8'))/0x5)+parseInt(_0x43b25d(0x1b9,'mx$E'))/0x6*(-parseInt(_0x43b25d(0x239,'VIER'))/0x7)+-parseInt(_0x43b25d(0x210,'5%pc'))/0x8*(parseInt(_0x43b25d(0x25d,'NEGD'))/0x9)+-parseInt(_0x43b25d(0x24c,'yi%8'))/0xa+-parseInt(_0x43b25d(0x213,'Gt4x'))/0xb*(-parseInt(_0x43b25d(0x1d5,'X4@)'))/0xc);if(_0x25c306===_0xf75c56)break;else _0x3b2761['push'](_0x3b2761['shift']());}catch(_0x52b851){_0x3b2761['push'](_0x3b2761['shift']());}}}(_0x468c,0x5e3cb),(Object['defineProperty'](exports,_0xaec2a7(0x1f9,'@sJ@'),{'value':!0x0}),exports[_0xaec2a7(0x1d0,'5%pc')]=exports[_0xaec2a7(0x1b1,'ALZR')]=exports[_0xaec2a7(0x221,'LB4&')]=exports[_0xaec2a7(0x1e5,'U(lA')]=exports[_0xaec2a7(0x262,'unq[')]=exports[_0xaec2a7(0x215,'@sJ@')]=exports['ALL_PACKAGES']=void 0x0,exports[_0xaec2a7(0x171,'QqUD')]=enforceLicense,exports[_0xaec2a7(0x253,'0#2M')]=grants,exports[_0xaec2a7(0x20a,'P%OQ')]=licensedFeature,exports[_0xaec2a7(0x1a6,'CaAe')]=readTokens,exports[_0xaec2a7(0x18b,'CaAe')]=selectLicense,exports[_0xaec2a7(0x21d,'VIER')]=verifyLicense));let crypto=require('crypto'),LICENSE_ISSUER=_0xaec2a7(0x201,'*vKJ'),PACKAGE_SCOPE=(exports[_0xaec2a7(0x23b,'QqUD')]=LICENSE_ISSUER,_0xaec2a7(0x255,')IcK')),ALL_PACKAGES=(exports[_0xaec2a7(0x211,'4RFR')]=PACKAGE_SCOPE,'@cap-ts/*'),ESI_PACKAGE=(exports['ALL_PACKAGES']=ALL_PACKAGES,_0xaec2a7(0x1b4,'@sJ@')),EXPIRY_WARNING_DAYS=0x1e,DEFAULT_GRACE_DAYS=(exports[_0xaec2a7(0x1f4,'Mm^K')]=EXPIRY_WARNING_DAYS,0x1e),CONFIG_HINT=(exports[_0xaec2a7(0x1d8,'7qI]')]=DEFAULT_GRACE_DAYS,_0xaec2a7(0x172,'X4@)')),CONTACT=_0xaec2a7(0x24a,'NEGD'),DAY_MS=0x5265c00,PUBLIC_KEYS=Object[_0xaec2a7(0x1a5,'QqUD')]({'cap-ts-2026-09':[_0xaec2a7(0x19a,'XFdm'),_0xaec2a7(0x1b2,'FG0k'),_0xaec2a7(0x1fb,'d88C')]['join']('\x0a')}),LICENSE_ERROR_CODES=(exports[_0xaec2a7(0x1bd,'X4@)')]=PUBLIC_KEYS,Object['freeze']({'missing':_0xaec2a7(0x183,'X4@)'),'invalid':'CAPTS_LICENSE_INVALID','expired':_0xaec2a7(0x227,'unq[')}));function grants(_0x53547e,_0x4a5dfa){return _0x53547e=Array['isArray'](_0x53547e)?_0x53547e:[_0x53547e],_0x53547e['includes'](_0x4a5dfa)||_0x4a5dfa['startsWith'](PACKAGE_SCOPE)&&_0x53547e['includes'](ALL_PACKAGES);}function invalid(_0x331c0f,_0x377e61,_0x4fe411){var _0xfcde3e=_0xaec2a7;return{'state':_0xfcde3e(0x246,'4RFR'),'product':_0x331c0f,'reason':_0x377e61,'claims':_0x4fe411};}function decodeSegment(_0x57675f){var _0x453cd7=_0xaec2a7,_0x5b0330={'brcVV':_0x453cd7(0x217,'4Lr$'),'mPCSh':_0x453cd7(0x1df,'gW]S')};return JSON[_0x453cd7(0x1bc,'*B7t')](Buffer['from'](_0x57675f,_0x5b0330[_0x453cd7(0x1d2,'Gt4x')])[_0x453cd7(0x17f,'cqxE')](_0x5b0330[_0x453cd7(0x1f5,'lYqe')]));}function verifySignature(_0x134f61,_0x3383f3,_0x8cbbd5){var _0x392084=_0xaec2a7,_0x699a1d={'SjMCY':_0x392084(0x229,'Gt4x')};try{return crypto[_0x392084(0x1d9,'VIER')](null,Buffer[_0x392084(0x241,'X4@)')](_0x134f61),_0x8cbbd5,Buffer[_0x392084(0x21a,')IcK')](_0x3383f3,_0x699a1d[_0x392084(0x194,'FG0k')]));}catch{return!0x1;}}function checkBinding(_0x7ac9ed,_0x4310e8){var _0x5b8529=_0xaec2a7,_0x1996b6={'fxMHN':function(_0x240bf2,_0x65bc53){return _0x240bf2+_0x65bc53;}},_0x24687f,_0x3573c1,_0x2f445d;for([_0x24687f,_0x3573c1,_0x2f445d]of[[_0x7ac9ed?.[_0x5b8529(0x202,'U(lA')],_0x4310e8?.['organization_id'],_0x5b8529(0x1f6,'yi%8')],[_0x7ac9ed?.[_0x5b8529(0x1f1,'VKC5')],_0x4310e8?.[_0x5b8529(0x1dc,'VKC5')],_0x5b8529(0x205,'NEGD')]])if(Array[_0x5b8529(0x237,'6!AF')](_0x24687f)&&0x0!==_0x24687f[_0x5b8529(0x1ce,'@Vs5')]&&(!_0x3573c1||!_0x24687f[_0x5b8529(0x1e2,'VKC5')](_0x3573c1)))return _0x1996b6[_0x5b8529(0x226,'0dlh')](_0x5b8529(0x181,'CaAe'),_0x2f445d);}function verifyLicense(_0x4d72ca,_0x3036c6){var _0x5a2b8c=_0xaec2a7,_0x3c9aa9={'uRGfN':function(_0x47fcb6,_0x38c3bd){return _0x47fcb6!=_0x38c3bd;},'eokPi':'string','dyxyR':function(_0x5a9f5c,_0x292294){return _0x5a9f5c===_0x292294;},'cSuki':'missing','EHMWJ':function(_0x5b024f,_0x55df3c,_0x5bdb3c){return _0x5b024f(_0x55df3c,_0x5bdb3c);},'XNwCM':function(_0x5bf315,_0x55ec5e){return _0x5bf315(_0x55ec5e);},'zloJX':function(_0x14b096,_0x14a831,_0x454481){return _0x14b096(_0x14a831,_0x454481);},'lGLBU':'its\x20header\x20or\x20payload\x20is\x20not\x20valid\x20JSON','ShNQg':function(_0x5041d1,_0x54b391){return _0x5041d1!==_0x54b391;},'awHMO':_0x5a2b8c(0x18f,'U(lA'),'owerH':function(_0xe16a79,_0x474f8f,_0x225f9f){return _0xe16a79(_0x474f8f,_0x225f9f);},'fsuHf':_0x5a2b8c(0x1e8,'d88C'),'SwuOm':function(_0x55521d,_0x2469c5){return _0x55521d+_0x2469c5;},'KfanG':'its\x20signature\x20does\x20not\x20match','adYyU':function(_0x1c25a,_0x204a61){return _0x1c25a!=_0x204a61;},'Mspgr':_0x5a2b8c(0x16d,'NEGD'),'RbQln':function(_0x184d68,_0x5b6241,_0x22f797){return _0x184d68(_0x5b6241,_0x22f797);},'njksF':_0x5a2b8c(0x1cc,'mx$E'),'GhnGN':function(_0x301c32,_0x1c028c){return _0x301c32(_0x1c028c);},'eetqL':function(_0x5b86cc,_0x357dd1){return _0x5b86cc===_0x357dd1;},'sJpdw':_0x5a2b8c(0x1a3,'cqxE'),'DOoXj':_0x5a2b8c(0x254,'P%OQ'),'mbcON':function(_0xa97739,_0x52a3c4,_0x4d6d94,_0x43b1e3){return _0xa97739(_0x52a3c4,_0x4d6d94,_0x43b1e3);},'pPafx':_0x5a2b8c(0x1c3,'xdG]'),'yGygL':function(_0x26f59b,_0x259bbd){return _0x26f59b==_0x259bbd;},'kpWDD':function(_0x3c972f,_0xd017ee){return _0x3c972f*_0xd017ee;},'yUvBo':_0x5a2b8c(0x228,'zjdO'),'lpDyX':function(_0xfa24,_0x2dbd68){return _0xfa24*_0x2dbd68;},'HxNgY':function(_0x4d0c87,_0x48dbe5,_0x30287e){return _0x4d0c87(_0x48dbe5,_0x30287e);},'Lwplz':function(_0x5550d1,_0x151b43,_0x2bd0b4,_0x18cee4){return _0x5550d1(_0x151b43,_0x2bd0b4,_0x18cee4);},'pQskW':function(_0x4e608b,_0x31ce0a){return _0x4e608b==_0x31ce0a;},'yFieB':function(_0x204703,_0x9e0b0){return _0x204703<=_0x9e0b0;},'SCYRl':function(_0x257f35,_0x1e45d5){return _0x257f35+_0x1e45d5;},'UAkYY':function(_0x4c6e34,_0x5c12ca){return _0x4c6e34/_0x5c12ca;},'HlLhX':function(_0x4277a5,_0x1689a6){return _0x4277a5-_0x1689a6;},'JEEpG':function(_0x4d1aee,_0x19d42f){return _0x4d1aee<_0x19d42f;},'uhshW':_0x5a2b8c(0x1ca,'CaAe'),'nTyKw':_0x5a2b8c(0x1de,'e]H)'),'jwRUH':'expired'},_0x972fd2=_0x3036c6[_0x5a2b8c(0x258,'NEGD')];if(_0x3c9aa9[_0x5a2b8c(0x1fa,'VIER')](_0x3c9aa9['eokPi'],typeof _0x4d72ca)||_0x3c9aa9[_0x5a2b8c(0x1c7,'Wl[9')]('',_0x4d72ca[_0x5a2b8c(0x20d,'zjdO')]()))return{'state':_0x3c9aa9[_0x5a2b8c(0x1da,'$f6b')],'product':_0x972fd2};var _0x1e1777=_0x3036c6['keys']??PUBLIC_KEYS,_0x4ecd19=(_0x3036c6['now']??new Date())['getTime'](),_0x4d72ca=_0x4d72ca['trim']()[_0x5a2b8c(0x19c,'5%pc')]('.');if(0x3!==_0x4d72ca['length'])return _0x3c9aa9[_0x5a2b8c(0x1e9,'@Vs5')](invalid,_0x972fd2,_0x5a2b8c(0x21c,'zjdO'));let _0x54a96f,_0x2c5e2d;try{_0x54a96f=_0x3c9aa9[_0x5a2b8c(0x1c6,'LB4&')](decodeSegment,_0x4d72ca[0x0]),_0x2c5e2d=decodeSegment(_0x4d72ca[0x1]);}catch{return _0x3c9aa9['zloJX'](invalid,_0x972fd2,_0x3c9aa9[_0x5a2b8c(0x23e,'@sJ@')]);}if(_0x3c9aa9[_0x5a2b8c(0x190,'@$1M')](_0x3c9aa9[_0x5a2b8c(0x244,'e]H)')],_0x54a96f?.[_0x5a2b8c(0x1f8,'lYqe')]))return invalid(_0x972fd2,_0x5a2b8c(0x26b,'e]H)')+_0x3c9aa9[_0x5a2b8c(0x1f7,'CaAe')](String,_0x54a96f?.[_0x5a2b8c(0x1c9,'7qI]')])+_0x5a2b8c(0x252,'VKC5'));var _0x5912a7=String(_0x54a96f['kid']);if(!Object['hasOwn'](_0x1e1777,_0x5912a7))return _0x3c9aa9[_0x5a2b8c(0x1b6,'FG0k')](invalid,_0x972fd2,_0x3c9aa9[_0x5a2b8c(0x1c8,'V(JX')]+_0x5912a7);if(!verifySignature(_0x3c9aa9[_0x5a2b8c(0x257,'xdG]')](_0x3c9aa9[_0x5a2b8c(0x182,'unq[')](_0x4d72ca[0x0],'.'),_0x4d72ca[0x1]),_0x4d72ca[0x2],_0x1e1777[_0x5912a7]))return _0x3c9aa9[_0x5a2b8c(0x1b0,'Mm^K')](invalid,_0x972fd2,_0x3c9aa9['KfanG']);if(_0x3c9aa9['dyxyR'](null,_0x2c5e2d)||_0x3c9aa9[_0x5a2b8c(0x1cf,'7i(x')](_0x3c9aa9[_0x5a2b8c(0x18a,'xdG]')],typeof _0x2c5e2d))return _0x3c9aa9[_0x5a2b8c(0x230,'WG1m')](invalid,_0x972fd2,_0x3c9aa9[_0x5a2b8c(0x1ab,'Wl[9')]);if(_0x3c9aa9['ShNQg'](_0x2c5e2d[_0x5a2b8c(0x23a,'rPYf')],LICENSE_ISSUER))return _0x3c9aa9[_0x5a2b8c(0x193,'WkB(')](invalid,_0x972fd2,_0x3c9aa9[_0x5a2b8c(0x187,'VKC5')](_0x5a2b8c(0x1a4,'U(lA')+_0x3c9aa9['GhnGN'](String,_0x2c5e2d[_0x5a2b8c(0x22e,'d88C')])+_0x5a2b8c(0x1af,'e]H)'),LICENSE_ISSUER));if(_0x3c9aa9[_0x5a2b8c(0x1bb,'Mm^K')](_0x5a2b8c(0x1cd,'7i(x'),typeof _0x2c5e2d['sub'])||_0x3c9aa9['eetqL']('',_0x2c5e2d[_0x5a2b8c(0x216,'$f6b')])||_0x3c9aa9[_0x5a2b8c(0x1e4,'5%pc')](_0x5a2b8c(0x1b8,'xdG]'),typeof _0x2c5e2d[_0x5a2b8c(0x180,'YZbE')])||_0x3c9aa9[_0x5a2b8c(0x1f2,'unq[')]('',_0x2c5e2d['jti'])||_0x3c9aa9['adYyU'](_0x3c9aa9[_0x5a2b8c(0x22a,'$f6b')],typeof _0x2c5e2d[_0x5a2b8c(0x16f,'@sJ@')]))return invalid(_0x972fd2,_0x3c9aa9[_0x5a2b8c(0x1f3,'YZbE')]);if(!_0x3c9aa9[_0x5a2b8c(0x1ff,'Mm^K')](grants,_0x2c5e2d[_0x5a2b8c(0x23d,'rPYf')],_0x972fd2))return _0x3c9aa9[_0x5a2b8c(0x268,'xdG]')](invalid,_0x972fd2,_0x3c9aa9['pPafx']+_0x972fd2,_0x2c5e2d);if(_0x3c9aa9[_0x5a2b8c(0x185,'lYqe')](_0x5a2b8c(0x21e,'WkB('),typeof _0x2c5e2d[_0x5a2b8c(0x1c0,'d88C')])&&_0x4ecd19<_0x3c9aa9['kpWDD'](0x3e8,_0x2c5e2d[_0x5a2b8c(0x238,'xdG]')]))return _0x3c9aa9[_0x5a2b8c(0x1d1,'@$1M')](invalid,_0x972fd2,_0x3c9aa9['yUvBo']+new Date(_0x3c9aa9[_0x5a2b8c(0x17c,'@$1M')](0x3e8,_0x2c5e2d[_0x5a2b8c(0x20f,'xQ]%')]))[_0x5a2b8c(0x1be,'7qI]')](),_0x2c5e2d);_0x4d72ca=_0x3c9aa9[_0x5a2b8c(0x198,'FG0k')](checkBinding,_0x2c5e2d[_0x5a2b8c(0x1e7,'*B7t')],_0x3036c6[_0x5a2b8c(0x251,'e]H)')]);if(_0x4d72ca)return _0x3c9aa9[_0x5a2b8c(0x20b,'gW]S')](invalid,_0x972fd2,_0x4d72ca,_0x2c5e2d);_0x1e1777=new Date(0x3e8*_0x2c5e2d[_0x5a2b8c(0x175,'Mm^K')]),_0x5912a7=_0x3c9aa9['pQskW'](_0x3c9aa9[_0x5a2b8c(0x186,'mx$E')],typeof _0x2c5e2d[_0x5a2b8c(0x19e,'Gt4x')])&&_0x3c9aa9['yFieB'](0x0,_0x2c5e2d[_0x5a2b8c(0x245,'5%pc')])?_0x2c5e2d[_0x5a2b8c(0x191,'dDw@')]:DEFAULT_GRACE_DAYS,_0x3036c6=new Date(_0x3c9aa9[_0x5a2b8c(0x18c,'4RFR')](_0x1e1777['getTime'](),_0x5912a7*DAY_MS)),_0x4d72ca=Math[_0x5a2b8c(0x25e,'Mm^K')](_0x3c9aa9[_0x5a2b8c(0x1a0,'X4@)')](_0x3c9aa9['HlLhX'](_0x1e1777[_0x5a2b8c(0x184,'d88C')](),_0x4ecd19),DAY_MS));let _0x594111;return{'state':_0x594111=_0x3c9aa9[_0x5a2b8c(0x242,'CaAe')](_0x4ecd19,_0x1e1777['getTime']())?_0x3c9aa9[_0x5a2b8c(0x22c,'Gt4x')](_0x4d72ca,EXPIRY_WARNING_DAYS)?_0x3c9aa9[_0x5a2b8c(0x25f,'4RFR')]:_0x3c9aa9[_0x5a2b8c(0x1a7,'d88C')]:_0x4ecd19<_0x3036c6[_0x5a2b8c(0x231,'7qI]')]()?_0x5a2b8c(0x18e,'lYqe'):_0x3c9aa9[_0x5a2b8c(0x17d,'5%pc')],'product':_0x972fd2,'claims':_0x2c5e2d,'expires':_0x1e1777,'graceEnds':_0x3036c6,'daysLeft':_0x4d72ca};}function readTokens(_0x3c91e0){var _0xd2b6f5=_0xaec2a7;return(Array['isArray'](_0x3c91e0)?_0x3c91e0:[_0x3c91e0])[_0xd2b6f5(0x264,'unq[')](_0x41de6c=>_0xd2b6f5(0x188,'U(lA')==typeof _0x41de6c)[_0xd2b6f5(0x22d,'yi%8')](_0x2702db=>_0x2702db[_0xd2b6f5(0x1e6,'Mm^K')](/[\s,]+/))['filter'](Boolean);}exports[_0xaec2a7(0x1b3,'QqUD')]=LICENSE_ERROR_CODES;let STATE_RANK=Object['freeze']({'missing':0x0,'invalid':0x1,'expired':0x2,'grace':0x3,'expiring':0x4,'valid':0x5});function _0x468c(){var _0x177c0a=['WOGFWPvB','W5BdLHqHWQDFW5u','WRVcV8k6WPpdQSoNsW','ESkZyNi9','fgm1bsO','WRldRbunWQq','cmoVW4ldSMOglMJdGmoRWObkWOTwx0DeW5So','WO/dQfLEaa','WPPmmWWkW6ZcKSoZW73cM8k2perpWOVcPM0','W6P3qfddIq','WOpdLh0','W7WEW4TUD8k7pCorWOHi','WOizW7NdTmof','WOVcG3BdR1pcRSoNW6esW7ZcUe3dSwWCnwRdG8kBzLzNW5/cMW','r8o5ymk5W68','WO7dKYVcNtbOma','yxZdLG','n8oBW73dSwa','W6KmFW','W53dJSkmWPJdHSoU','nCkfhG','uxDhWONcNCksrmovnmk8lHVdR8ksW5DmdcZdPCoxW7VcMSo1W5W/WQJcNmk/AbO6gCoCW6RdO8keydSx','nv7cHW','W4dcT8onA8oRW41xWPNcM8k2WPtdMH/dNHDaWONcLbS','W4xdGt/cPW','WOddGHy8WQO','W5DnWQxdVmo6DCo5W6VcGHNdV8kAlCoVz1pdQSkEvedcNXWQnCouW5FdMupcPGDUd0XzWPdcHZuSdfOUreBdPG','kCkdgbTR','nSoMomklafztuSokkH7dTSkduru','phpcLSk9rq','bZlcT0xcGmohWR4','uMRcGeK','WOq/W5/dPSoU','WRivWPy','WRSUrCohfmoDea','iujSWQFdVmk0CCo6c8kwaIRdNG','EHFcUq','BmoPWQeEtH7dOxLs','pSoBW7VdMf0','W6CeW6HCB8kydCo7WQn/BGDUW49Wfd7dJG','xSoTBq','lJrZW4iXzffXWPC','aCoPWRnTmq','WPqNW5/dU8oMWRu','c2eyWOe','lSkJW7GVAHVdSW','t2ZdIu3cRSozimk9W7dcKdW2p0OhlCoICmobcWubWQSYW4fUWPz9rCojlqBdH8oAWQ/cNhDMEuipW4D1sXFdPrpdRWRdNmoxF1KCtmkPzXpcQmkbW64','WOeUW4ZdU8oTWR/dLSkQW6ZdVmorWQ4B','aYBdRmotcCov','BdrUW4mNovbWW5VcRWvsWQNcTaNcVCoazaldMmorvgJdTCkcWPJcGdJdKvDm','WP7dKeqAWP9m','W5xcQmoPW4ddOKjWwcxcR0FdOCoiWQy','WQ1iovK','WRbooHy','W7pcQConESo6WO5LWP/cGCk2','WQLblGOl','W4PggbZcPG','mKCridxdPSoxWQJdISoEA8o3W5adWQ7cTvRdT8oljmkX','t2ZdIu3cRSozimk9W7dcKcT3ieOey8oLCCkhebGpW64','pmkWW6qUkuZdSMPS','xSosF0FcJW','BNRdJxaP','fmkuW5i7wa','WR9mpq0JWQ3cPa','W4/dNsG','W7CqC8kS','WQ/dNNqFWPW','ymo3W6WRbCkqvG','WQ8dWPepW7S','WQpcPmoxW6Tpr2SiW78','a8kaWOVcH2y','WRtdSCklW61pxxOMWQS','W4BcUmowC8oK','W5tdHbJcKGtcGLu','keNcGW','W49/WONdPSocWORdUCkgW78','g8oUWQe','jHlcH3pcP8o6WPX6W67dHSkHF0yC','v8ovW6ijia','e8oOWRy','W48gW6jFBW','bN3cKvtcTmklk8k2WQtdNZm2','wSkgWPiZ','aJzkW50','W7H8CMpdGW','WOfHWQpdL8oo','q8oCCSkFW64','W6qkD8oVna','gg1zWO3dKCkAua','W63dSthcLbO','WQpcT8olFCoQWOnIWPpcISo4WOtdH0y','WOxdINTUduhdPhCj','W4dcTmomASoUWO5LW5BcVCkzWQdcHsxcKqbvW4xcObhdOcBdP8o+f8karmkDWOtdV2hdOSk/W4bWW5RcIYK','CmoZW6Or','W6GvB0TBW7/dPmoAW4/cUCkWfgW','WOz+WPWmFmkVyW','W4/dGd3cRq','AhFdIuJcTmkAk8k8W6FdLx1Wi1fa','s8knWOn+nq','vmoiw8kI','kCkQCde2W6a9d8kWr8kDWQtcHq','ymk6hmkpgZi','lSoNpSooduLxx8oHpf/dSCkdqvWRW5WAW7isW4nIaSoiW5pcNCkwW5jWW51aEbGeWOv4WOT2zWG','lxawWPWFW6xcH3y','WOtdNWtcKs8','fvZcKmobcq','W7pcQConESo6WO5L','dYpcTf/cM8omWQO','W6BcO8osD8o9WOHI','D8k6eSkhbI1bWRK','W59kncdcJq','WRddOSkqlCk3W50JWRFcR8k0WPJdGaK','k8oBW73dLeO','bgTCWOtdQG','amo6WRHmfW','ybhcV3v8WOtcOG','nf4rpttdOmoeWRBdImojA8oTW5SBWRtcQuVdP8ok','hatdGSoana','f28TaapdIW','qmk8h8k0aG','ECkVDNyXW6e6','F8kJmCkjlq','k0NcHSobkG','iSovW7JdNLSR','W64zArWlWRJcPSoxW7W','s8oFsCoYW4ddSq9IvJ98zSkFCa','pcDVW4nYm1a','mtPHWPRdP8kReG','WOmTW4D+x8k6oSobW4rexgrfW79aDrhdVcZdVCkJemoK','W5JdJYNcIqtcHL8','W6ZcUCoiE8oSWPK','W4rYWOZcOCkZW7BcQmkcW47dTCoxWRur','W4y5W54','W6fFeGtcKG','dZxcOLNcM8okWRXPW47dTSkxrhaR','bYbwWP7dJmktoL3dIYeUeMaUW5JdLSo3WPdcQvXOWOb7WQ3dOvZdKSoadZBcJCkFW5CPc8k1WORdHmk2qJiuW4PYrmofWRaJWOy1WPrPveZdOKNcVSkCW6TSWPldRCocWOpcTmoLWPO5hCooW5PIWQ0K','WP3dKIhcKb/cKuNcMu/cGfBdGa','W4NcHb1fW4SjW4CNW7xcG8kdWQ4','kmopW6i','WRfaimozamoAh8k7W4e','uw9gWO/dMmkDv8oaEa','ESkdfK96eCo0WQZdP8ksrrlcLSouWOZdOJxcMCoCW45fW6RcVSofW5xdUxSMWPlcUvzoud1R','xgtcS8kjvmoIW73dRbrxra','W7/dUmkBW70','p8o8sSkvjG1hWO/dIW','ySkEWRnQbG','W6Kprmozgq','WOXBlstcGConAc/dUwOOW78','jmkSWPdcMNBcO8o4WRy','WPZdLXm','W5Tnf3RdT8kaECk+A3PqBSoIhSkbaCkkWOr9WR/cH8oLWQS','iNe0oWS','jWv1W6tdVmkTbMddU0OmkeyuW7VdRmobW6pdIhra','W4hdIY/cLHFcHSom','WPVdV2nQja','WRJcH8kLWPpdQa','wSk0DL41','kCkdcWzGhG','uSo0WQe5n8kYjSkxWPG7W6GXW4uHDSo4lNFdN8k1','c1JcLCoPfG','W4fCw3BdP8ouv8k4FxfApCoZ','iKb2WR7dKq','j8o0W7Cnta','WOxdINTUdq','h8ktptXp','xCkgWRLcoq','zxpdI8kFzW','afNcISoJra','fZ/dRSo7na','W7xdUNjQaG','W4v+WO7cOSkZWRxdMCksW5VdVCom','beGamaS','s8oftmkZW43dTaW','W67dQhfoaG','WQpcT8olFCoQWOnYWPpdJG','W5lcQ8kxWPWEo1tdNmkRW684cCoqW5/dVmozm8k8cNu+W5OxWRJcMSoa','hweyWOHhW7lcGa','W7aiESoLjq','gg1mWOddImkxuCow','oCkJW7yOEG','W4b6WPqK','mqvoW6NdTG','yXFcSwvS','W6azzSo4iG','pSk2WQ7cJghcUa','m8kdcK9NcSoIW7NdRSkjbG','dcNcOvpcK8om','W4bCvNFdKmopCmk0CgC','W4JdUIlcIqK','fNqGfWm','o3aUWOjh','W5pcJxRdGgzEb3ZcS3hcQa','W7XLfSk2WQS','ttSBWOvrW7tcMJRcQbq','wmkcWPTbla','hrrLW5n9','aSocsCoYW4/dSHWT','iSoaW7FdIxa','qclcK1PiWQdcK8kfWPpcJgtdJCkw','W6VdK1bEgCkDW5ddTNPicmo0kauRqSojW4VdOv3dV2hdNSo9jGzVnmkLmCkSWQRcPw19W4tdM3fcW7BdPHOEW7CTw8oTWOJdIKdcUK/cKmkUWOn+gurGcq','jHlcH3pcP8o6WPX6W6ldH8kGzvertrhdSM7cMa','W6mIW49Tf8kGkSklWOfErG','d8kpda5T','W4NdP1PBeW','vmoxW4iBka','nv/cL8oNcSkM','W7NdUmoLW4FcP8o3Fej9BtW','ymk6hmkccGrkWQ7dIa','omoLW5xdNxy','WODiWRBdTSoS','nbfNW7ZdPSkXfwldVvyr','C8o9W5eSi8kUr8oSW4yRW5u','jbldTCoNoW','W4JdJd0','nmkydG','WOxdLHG','l1/dHCoQc8kKvXZdRCo/omkEhmocESofW5ZcKG','aCoOWRa','W5BcGmoismkWt8oQW57dVSk2WOXhW6q','W4hcR8oDW4BdOq','W7z2bCk8WR8','WOhdHmkinSoK','zSo+W78','W5Dbr3RdTSojDCk2','pSodW7pdJ10','WQlcUCkMW5FdR8oLrN9gAcVcVI9NW5vaW6RcKI8FWPXVW5jOW6NcUSkFWRe','WPhdJJRcKtb8','W5T+WOGTxmkS','WOpdNHhcGqS','W5mTvmoagmo/jSkrW5BcP8o3','y8kmWPrCea','pmkJW7qDsq','uwaUbKy','smoGF0RcISoGiuO','u3aDWOBcMCokbgJdNeCtpq','zNNcKmoGcSkOsLVcO8o5iSkEhSogESohW53dK8ksB03dKmoxWQFcLG7dRSkHW6ZdPgtcMCk7W49TveStiwOtW4bjwSoNDsKUWOFdT8ozu8oZW6u1sCoHWOtcMuJcJ07cRSosdSk/W73dM8ohWO7dISkoW6O','WPjrWRtdRmo7mmoM','q8oxW54+oCkXz8obW6GxW7pdGmobWQ/dSvZcQHm','WOeUW4ZdU8oTWR8','tSolEKJcKq','yb9ZWQpdKmkRaG','ESkZyNi9W5aGsW','W6NcK8ofW6hdMxjb','vmokvSk7W4u','bxdcGmoP','WP0jygldMSkmpqBcKfC+WPhdHq','W5HrhaFcP8oSEs7cSgSH','ymkTyh0TW6SSxa','WPfmWQxdSCo8j8oWW70','W6iCt8o1ba','fSk+oIPakSouW5pdJSkPDdJcQSoOWQRcJqxcS8oK','pSohW77dKKW','WPvaWQRdOq','W4/dMNVcQW3dI8oAW4XvW4lcIgVcNvi2yuNcPSk2iX5QWOFdMmo5DhXkjNpcR8oXW5RcNa','W7jtWQSDyG','FmknqLu1','WQ3dU8oWE8oHWOHMW5BcMSkWWPxcIaRcLWDvWOBcLbVcVa','W5xdPf5DpG','WOJdJIe'];_0x468c=function(){return _0x177c0a;};return _0x468c();}function selectLicense(_0x546741,_0x13acf9){var _0x2a420d=_0xaec2a7,_0x55c998={'GtbUm':_0x2a420d(0x20c,'QqUD'),'IAtVW':function(_0x1c3288,_0x13a711,_0x1807af){return _0x1c3288(_0x13a711,_0x1807af);},'wcdXk':function(_0x373073,_0x34e554){return _0x373073>_0x34e554;}};let _0x4d509a={'state':_0x55c998[_0x2a420d(0x265,'0#2M')],'product':_0x13acf9[_0x2a420d(0x261,'ALZR')]};for(var _0x629659 of _0x546741){_0x629659=_0x55c998[_0x2a420d(0x1bf,'WkB(')](verifyLicense,_0x629659,_0x13acf9),_0x55c998['wcdXk'](STATE_RANK[_0x629659[_0x2a420d(0x25c,'0dlh')]],STATE_RANK[_0x4d509a[_0x2a420d(0x1a1,'ALZR')]])&&(_0x4d509a=_0x629659);}return _0x4d509a;}function licensedFeature(_0x245ed1,_0x53b9d7){var _0x1d9ad2=_0xaec2a7,_0x310cee={'eyMPz':_0x1d9ad2(0x207,'YZbE'),'SCHib':function(_0x37ca02,_0x5a1e9c){return _0x37ca02===_0x5a1e9c;},'qWCqX':_0x1d9ad2(0x1a8,'unq[')};if(_0x310cee['eyMPz']===_0x245ed1[_0x1d9ad2(0x232,'xQ]%')]||'expiring'===_0x245ed1[_0x1d9ad2(0x218,'rPYf')]||_0x310cee[_0x1d9ad2(0x234,'cqxE')](_0x310cee[_0x1d9ad2(0x263,'WkB(')],_0x245ed1[_0x1d9ad2(0x209,'U(lA')]))return _0x245ed1['claims'][_0x1d9ad2(0x1e3,'*B7t')]?.[_0x245ed1[_0x1d9ad2(0x1f0,'mx$E')]]?.[_0x53b9d7];}function readVcap(){var _0x426534=_0xaec2a7,_0x5063a2=process.env.VCAP_APPLICATION;if(_0x5063a2)try{return JSON[_0x426534(0x225,'yi%8')](_0x5063a2);}catch{}}function _0x5df6(_0x1a99b5,_0x180874){_0x1a99b5=_0x1a99b5-0x16c;var _0x468c46=_0x468c();var _0x5df665=_0x468c46[_0x1a99b5];if(_0x5df6['LNbLsG']===undefined){var _0x125570=function(_0x307b70){var _0x4d17f3='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x29124d='',_0xefa3ea='';for(var _0x5043ee=0x0,_0x502c1a,_0x1c30fe,_0x56f34a=0x0;_0x1c30fe=_0x307b70['charAt'](_0x56f34a++);~_0x1c30fe&&(_0x502c1a=_0x5043ee%0x4?_0x502c1a*0x40+_0x1c30fe:_0x1c30fe,_0x5043ee++%0x4)?_0x29124d+=String['fromCharCode'](0xff&_0x502c1a>>(-0x2*_0x5043ee&0x6)):0x0){_0x1c30fe=_0x4d17f3['indexOf'](_0x1c30fe);}for(var _0x52181d=0x0,_0x443213=_0x29124d['length'];_0x52181d<_0x443213;_0x52181d++){_0xefa3ea+='%'+('00'+_0x29124d['charCodeAt'](_0x52181d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xefa3ea);};var _0x56d55d=function(_0x28f739,_0xeebff9){var _0x3e6e0d=[],_0x310e5b=0x0,_0x2142fa,_0x52bb5d='';_0x28f739=_0x125570(_0x28f739);var _0x3641aa;for(_0x3641aa=0x0;_0x3641aa<0x100;_0x3641aa++){_0x3e6e0d[_0x3641aa]=_0x3641aa;}for(_0x3641aa=0x0;_0x3641aa<0x100;_0x3641aa++){_0x310e5b=(_0x310e5b+_0x3e6e0d[_0x3641aa]+_0xeebff9['charCodeAt'](_0x3641aa%_0xeebff9['length']))%0x100,_0x2142fa=_0x3e6e0d[_0x3641aa],_0x3e6e0d[_0x3641aa]=_0x3e6e0d[_0x310e5b],_0x3e6e0d[_0x310e5b]=_0x2142fa;}_0x3641aa=0x0,_0x310e5b=0x0;for(var _0x318a2a=0x0;_0x318a2a<_0x28f739['length'];_0x318a2a++){_0x3641aa=(_0x3641aa+0x1)%0x100,_0x310e5b=(_0x310e5b+_0x3e6e0d[_0x3641aa])%0x100,_0x2142fa=_0x3e6e0d[_0x3641aa],_0x3e6e0d[_0x3641aa]=_0x3e6e0d[_0x310e5b],_0x3e6e0d[_0x310e5b]=_0x2142fa,_0x52bb5d+=String['fromCharCode'](_0x28f739['charCodeAt'](_0x318a2a)^_0x3e6e0d[(_0x3e6e0d[_0x3641aa]+_0x3e6e0d[_0x310e5b])%0x100]);}return _0x52bb5d;};_0x5df6['WgYAlU']=_0x56d55d,_0x5df6['AtrycJ']={},_0x5df6['LNbLsG']=!![];}var _0x13e66d=_0x468c46[0x0];_0x5df6['ujlUqY']!==_0x13e66d&&(_0x5df6['AtrycJ']={},_0x5df6['ujlUqY']=_0x13e66d);var _0x535b51=_0x5df6['AtrycJ'][_0x1a99b5];return _0x535b51===undefined?(_0x5df6['BYjkwy']===undefined&&(_0x5df6['BYjkwy']=!![]),_0x5df665=_0x5df6['WgYAlU'](_0x5df665,_0x180874),_0x5df6['AtrycJ'][_0x1a99b5]=_0x5df665):_0x5df665=_0x535b51,_0x5df665;}function isProduction(_0x20cb6a){var _0x390582=_0xaec2a7,_0x484558={'eRZkN':_0x390582(0x224,'NEGD'),'PGzvL':function(_0x17cdce,_0x2705f9){return _0x17cdce(_0x2705f9);}};return _0x20cb6a=_0x20cb6a?.[_0x390582(0x25b,'0#2M')],Array[_0x390582(0x26d,'(tcm')](_0x20cb6a)&&_0x20cb6a[_0x390582(0x19d,'4RFR')](_0x484558[_0x390582(0x1fc,'e]H)')])||_0x484558[_0x390582(0x23c,'7qI]')](Boolean,process.env.VCAP_APPLICATION);}function isUsedThroughEsi(_0x570f7c){var _0xc5a49=_0xaec2a7,_0x5ecb83={'vHgRG':function(_0x57fd90,_0x513925){return _0x57fd90==_0x513925;},'feLiq':_0xc5a49(0x269,'Mm^K')};return _0x570f7c=_0x570f7c?.[_0xc5a49(0x266,'VKC5')],_0x5ecb83[_0xc5a49(0x243,'*B7t')](_0x5ecb83[_0xc5a49(0x256,'7i(x')],typeof _0x570f7c)&&null!==_0x570f7c&&Object['hasOwn'](_0x570f7c,ESI_PACKAGE);}function day(_0x40221a){var _0x440ba8=_0xaec2a7;return _0x40221a[_0x440ba8(0x1e1,'0dlh')]()[_0x440ba8(0x214,'Mm^K')](0x0,0xa);}function describeFailure(_0x769cc5){var _0x3fea55=_0xaec2a7,_0x2b8f32={'MaGPz':function(_0x3ca050,_0x398ee2){return _0x3ca050===_0x398ee2;},'SjlPq':_0x3fea55(0x20c,'QqUD'),'xkLhB':function(_0x36e3b3,_0x4f56c7){return _0x36e3b3+_0x4f56c7;},'Uxuac':function(_0x426b7b,_0x1ef8c8){return _0x426b7b(_0x1ef8c8);}};return _0x2b8f32[_0x3fea55(0x170,'0dlh')](_0x2b8f32['SjlPq'],_0x769cc5[_0x3fea55(0x20e,'VIER')])?_0x3fea55(0x24f,'zjdO')+_0x769cc5[_0x3fea55(0x21b,'Gt4x')]+_0x3fea55(0x189,'rPYf')+CONFIG_HINT+_0x3fea55(0x178,'U(lA'):_0x2b8f32['MaGPz'](_0x3fea55(0x197,'e]H)'),_0x769cc5['state'])?_0x3fea55(0x240,'@$1M')+_0x769cc5[_0x3fea55(0x26c,'4Lr$')]+_0x3fea55(0x26e,'@sJ@')+_0x769cc5['reason']+'.':_0x2b8f32[_0x3fea55(0x267,'0#2M')](_0x3fea55(0x1ee,'xQ]%')+_0x769cc5[_0x3fea55(0x19b,')IcK')]+_0x3fea55(0x235,'1%qO')+_0x769cc5['claims'][_0x3fea55(0x200,'5%pc')]+'\x20for\x20'+_0x769cc5[_0x3fea55(0x219,'VIER')]['sub']+_0x3fea55(0x23f,'zjdO'),_0x2b8f32[_0x3fea55(0x1b5,'U(lA')](day,_0x769cc5[_0x3fea55(0x1d7,'*B7t')])+_0x3fea55(0x21f,'4Lr$')+day(_0x769cc5[_0x3fea55(0x1ba,'0#2M')])+'.');}function enforceLicense(_0x3ad2d6){var _0x3c1a62=_0xaec2a7,_0x15307e={'xJJyr':function(_0x5240a8,_0x45d0ee,_0x369da3){return _0x5240a8(_0x45d0ee,_0x369da3);},'uNADm':function(_0x2f95e8,_0x35f628){return _0x2f95e8(_0x35f628);},'PbFIl':function(_0x46a908){return _0x46a908();},'PFhtl':'valid','VllRr':function(_0x1c0320,_0x475f17){return _0x1c0320(_0x475f17);},'SEZdD':_0x3c1a62(0x1d4,'$f6b'),'rgjUC':function(_0x4a7d8c,_0x119fb5){return _0x4a7d8c+_0x119fb5;},'lefRJ':'grace','Ectmk':function(_0x177d21,_0x564228){return _0x177d21+_0x564228;},'QAetz':function(_0x21cecd,_0x122f4d){return _0x21cecd(_0x122f4d);},'VcYnu':function(_0x69237d,_0x13b4c1){return _0x69237d(_0x13b4c1);},'hnkat':_0x3c1a62(0x24e,'d88C'),'pZknE':_0x3c1a62(0x24b,'7qI]'),'KuVSE':_0x3c1a62(0x1d6,'xdG]')},{product:_0x4e9327,env:_0x5cd8b7,log:_0x150cc9}=_0x3ad2d6,_0x4ec0a0=_0x15307e['xJJyr'](selectLicense,_0x15307e[_0x3c1a62(0x196,'unq[')](readTokens,_0x5cd8b7?.[_0x3c1a62(0x1a2,'5%pc')]?.[_0x3c1a62(0x1fd,'7i(x')]),{'product':_0x4e9327,'keys':_0x3ad2d6[_0x3c1a62(0x17a,'1%qO')],'now':_0x3ad2d6[_0x3c1a62(0x1c1,'U(lA')],'vcap':_0x15307e['PbFIl'](readVcap)}),_0x37bc04=_0x4ec0a0[_0x3c1a62(0x220,'WG1m')];switch(_0x4ec0a0[_0x3c1a62(0x1cb,'Mm^K')]){case _0x15307e[_0x3c1a62(0x247,'6!AF')]:return _0x150cc9[_0x3c1a62(0x223,'yi%8')](_0x4e9327+_0x3c1a62(0x248,'NEGD')+_0x37bc04[_0x3c1a62(0x204,'xdG]')]+_0x3c1a62(0x1ef,'YZbE')+_0x15307e[_0x3c1a62(0x1ad,'@$1M')](day,_0x4ec0a0[_0x3c1a62(0x259,'QqUD')])+_0x3c1a62(0x1ac,')IcK')+_0x37bc04[_0x3c1a62(0x212,'ALZR')]+')'),_0x4ec0a0;case _0x15307e[_0x3c1a62(0x1b7,'7qI]')]:return _0x150cc9[_0x3c1a62(0x19f,'@Vs5')](_0x15307e[_0x3c1a62(0x260,'rPYf')](_0x3c1a62(0x22f,'5%pc')+_0x4e9327+_0x3c1a62(0x177,'4RFR')+_0x37bc04[_0x3c1a62(0x1fe,'#lbZ')]+_0x3c1a62(0x1d3,'unq[')+_0x37bc04[_0x3c1a62(0x1c4,'rPYf')]+_0x3c1a62(0x17e,'0dlh')+_0x15307e[_0x3c1a62(0x1ea,'VKC5')](day,_0x4ec0a0[_0x3c1a62(0x16c,'6!AF')])+'\x20','('+_0x4ec0a0['daysLeft']+_0x3c1a62(0x208,'*B7t'))),_0x4ec0a0;case _0x15307e['lefRJ']:return _0x150cc9[_0x3c1a62(0x22b,'#lbZ')](_0x15307e[_0x3c1a62(0x236,'NEGD')](_0x3c1a62(0x222,'yi%8')+_0x4e9327+_0x3c1a62(0x199,'NEGD')+_0x37bc04[_0x3c1a62(0x1ed,'7i(x')]+_0x3c1a62(0x18d,'7qI]')+_0x37bc04[_0x3c1a62(0x1c2,'YZbE')]+_0x3c1a62(0x173,'6!AF')+_0x15307e['VllRr'](day,_0x4ec0a0[_0x3c1a62(0x25a,'NEGD')])+'.\x20',_0x3c1a62(0x192,'xdG]')+_0x15307e[_0x3c1a62(0x1ae,'4Lr$')](day,_0x4ec0a0[_0x3c1a62(0x249,'lYqe')])+_0x3c1a62(0x203,'4RFR')+_0x4e9327+_0x3c1a62(0x1eb,'NEGD'))),_0x4ec0a0;default:var _0x5ecde7,_0x2c3788=_0x15307e[_0x3c1a62(0x250,'@$1M')](describeFailure(_0x4ec0a0)+'\x20',CONTACT);if(_0x15307e[_0x3c1a62(0x1a9,')IcK')](isProduction,_0x5cd8b7))throw(_0x5ecde7=new Error(_0x2c3788))[_0x3c1a62(0x206,'d88C')]=LICENSE_ERROR_CODES[_0x4ec0a0[_0x3c1a62(0x1ec,'FG0k')]],_0x5ecde7[_0x3c1a62(0x1dd,'LB4&')]=_0x4e9327,_0x5ecde7;return _0x150cc9[_0x15307e['QAetz'](isUsedThroughEsi,_0x5cd8b7)?_0x15307e['hnkat']:_0x15307e['pZknE']](_0x2c3788+_0x15307e['KuVSE']),_0x4ec0a0;}}module['exports']={'ALL_PACKAGES':ALL_PACKAGES,'DEFAULT_GRACE_DAYS':DEFAULT_GRACE_DAYS,'enforceLicense':enforceLicense,'EXPIRY_WARNING_DAYS':EXPIRY_WARNING_DAYS,'grants':grants,'LICENSE_ERROR_CODES':LICENSE_ERROR_CODES,'LICENSE_ISSUER':LICENSE_ISSUER,'licensedFeature':licensedFeature,'PACKAGE_SCOPE':PACKAGE_SCOPE,'PUBLIC_KEYS':PUBLIC_KEYS,'readTokens':readTokens,'selectLicense':selectLicense,'verifyLicense':verifyLicense,'__test':{'checkBinding':checkBinding,'isProduction':isProduction,'readVcap':readVcap}};
1
+ var _0x40a972=_0x172b;function _0x172b(_0x1fd5ac,_0x4b63d7){_0x1fd5ac=_0x1fd5ac-0x1a1;var _0x30f2dc=_0x30f2();var _0x172b35=_0x30f2dc[_0x1fd5ac];if(_0x172b['pOFwdA']===undefined){var _0x41557f=function(_0x1efd34){var _0x532487='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x4ca75e='',_0x4923fc='';for(var _0x9608fc=0x0,_0x4924e8,_0x37ee39,_0x143499=0x0;_0x37ee39=_0x1efd34['charAt'](_0x143499++);~_0x37ee39&&(_0x4924e8=_0x9608fc%0x4?_0x4924e8*0x40+_0x37ee39:_0x37ee39,_0x9608fc++%0x4)?_0x4ca75e+=String['fromCharCode'](0xff&_0x4924e8>>(-0x2*_0x9608fc&0x6)):0x0){_0x37ee39=_0x532487['indexOf'](_0x37ee39);}for(var _0x57dfa5=0x0,_0x5a8e97=_0x4ca75e['length'];_0x57dfa5<_0x5a8e97;_0x57dfa5++){_0x4923fc+='%'+('00'+_0x4ca75e['charCodeAt'](_0x57dfa5)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4923fc);};var _0x48a372=function(_0x2f515c,_0x2293f6){var _0x199084=[],_0x5d4cb3=0x0,_0x464f8e,_0x21e079='';_0x2f515c=_0x41557f(_0x2f515c);var _0x8cd0f5;for(_0x8cd0f5=0x0;_0x8cd0f5<0x100;_0x8cd0f5++){_0x199084[_0x8cd0f5]=_0x8cd0f5;}for(_0x8cd0f5=0x0;_0x8cd0f5<0x100;_0x8cd0f5++){_0x5d4cb3=(_0x5d4cb3+_0x199084[_0x8cd0f5]+_0x2293f6['charCodeAt'](_0x8cd0f5%_0x2293f6['length']))%0x100,_0x464f8e=_0x199084[_0x8cd0f5],_0x199084[_0x8cd0f5]=_0x199084[_0x5d4cb3],_0x199084[_0x5d4cb3]=_0x464f8e;}_0x8cd0f5=0x0,_0x5d4cb3=0x0;for(var _0x27f36b=0x0;_0x27f36b<_0x2f515c['length'];_0x27f36b++){_0x8cd0f5=(_0x8cd0f5+0x1)%0x100,_0x5d4cb3=(_0x5d4cb3+_0x199084[_0x8cd0f5])%0x100,_0x464f8e=_0x199084[_0x8cd0f5],_0x199084[_0x8cd0f5]=_0x199084[_0x5d4cb3],_0x199084[_0x5d4cb3]=_0x464f8e,_0x21e079+=String['fromCharCode'](_0x2f515c['charCodeAt'](_0x27f36b)^_0x199084[(_0x199084[_0x8cd0f5]+_0x199084[_0x5d4cb3])%0x100]);}return _0x21e079;};_0x172b['xyIfIU']=_0x48a372,_0x172b['ZjLUFs']={},_0x172b['pOFwdA']=!![];}var _0x308f82=_0x30f2dc[0x0];_0x172b['HFbceZ']!==_0x308f82&&(_0x172b['ZjLUFs']={},_0x172b['HFbceZ']=_0x308f82);var _0xa58a0c=_0x172b['ZjLUFs'][_0x1fd5ac];return _0xa58a0c===undefined?(_0x172b['MrxGYt']===undefined&&(_0x172b['MrxGYt']=!![]),_0x172b35=_0x172b['xyIfIU'](_0x172b35,_0x4b63d7),_0x172b['ZjLUFs'][_0x1fd5ac]=_0x172b35):_0x172b35=_0xa58a0c,_0x172b35;}(function(_0x4ce0d2,_0x153512){var _0x15648f=_0x172b,_0x3bacc3=_0x4ce0d2();while(!![]){try{var _0x598959=parseInt(_0x15648f(0x1d4,'AA%K'))/0x1+-parseInt(_0x15648f(0x28c,'DjR%'))/0x2+parseInt(_0x15648f(0x27d,'EFL3'))/0x3*(-parseInt(_0x15648f(0x1b2,'(f^w'))/0x4)+-parseInt(_0x15648f(0x27c,'[Eu0'))/0x5*(parseInt(_0x15648f(0x285,'#*k8'))/0x6)+-parseInt(_0x15648f(0x251,'[Eu0'))/0x7*(-parseInt(_0x15648f(0x292,'DjR%'))/0x8)+-parseInt(_0x15648f(0x1f5,'a%t8'))/0x9*(-parseInt(_0x15648f(0x20b,'&W&P'))/0xa)+parseInt(_0x15648f(0x280,'8YIT'))/0xb*(-parseInt(_0x15648f(0x1c4,'#hSp'))/0xc);if(_0x598959===_0x153512)break;else _0x3bacc3['push'](_0x3bacc3['shift']());}catch(_0x3c4526){_0x3bacc3['push'](_0x3bacc3['shift']());}}}(_0x30f2,0xc28b9),(Object['defineProperty'](exports,_0x40a972(0x25f,'&c1!'),{'value':!0x0}),exports[_0x40a972(0x253,'CdTG')]=exports[_0x40a972(0x290,'a%t8')]=exports[_0x40a972(0x249,'%mT#')]=exports['LICENSE_ERROR_CODES']=exports['EXPIRY_WARNING_DAYS']=exports[_0x40a972(0x234,'KUX&')]=exports[_0x40a972(0x26e,'K!Of')]=void 0x0,exports[_0x40a972(0x215,'H3Y%')]=enforceLicense,exports[_0x40a972(0x1f3,'va#*')]=grants,exports[_0x40a972(0x24a,'ovUo')]=licensedFeature,exports[_0x40a972(0x1ad,'K5g@')]=readTokens,exports['selectLicense']=selectLicense,exports[_0x40a972(0x276,'#hSp')]=verifyLicense));let crypto=require(_0x40a972(0x1c2,'J[Ik')),LICENSE_ISSUER=_0x40a972(0x247,'gUD6'),PACKAGE_SCOPE=(exports[_0x40a972(0x1b5,'xaSs')]=LICENSE_ISSUER,_0x40a972(0x1e7,'vT]V')),ALL_PACKAGES=(exports[_0x40a972(0x261,'oyxP')]=PACKAGE_SCOPE,_0x40a972(0x209,'ky#R')),ESI_PACKAGE=(exports[_0x40a972(0x286,'ryHT')]=ALL_PACKAGES,_0x40a972(0x211,'va#*')),EXPIRY_WARNING_DAYS=0x1e,DEFAULT_GRACE_DAYS=(exports['EXPIRY_WARNING_DAYS']=EXPIRY_WARNING_DAYS,0x1e),CONFIG_HINT=(exports['DEFAULT_GRACE_DAYS']=DEFAULT_GRACE_DAYS,_0x40a972(0x272,'hk#j')),CONTACT=_0x40a972(0x1ce,'COJ#'),DAY_MS=0x5265c00,PUBLIC_KEYS=Object[_0x40a972(0x255,'N8MD')]({'cap-ts-2026-09':['-----BEGIN\x20PUBLIC\x20KEY-----',_0x40a972(0x2a8,'Ah6L'),_0x40a972(0x219,'6gz%')][_0x40a972(0x242,'B*A(')]('\x0a')}),LICENSE_ERROR_CODES=(exports['PUBLIC_KEYS']=PUBLIC_KEYS,Object[_0x40a972(0x297,'J[Ik')]({'missing':'CAPTS_LICENSE_MISSING','invalid':_0x40a972(0x29b,'&c1!'),'expired':_0x40a972(0x298,'CdTG')}));function grants(_0x11c952,_0x5361eb){var _0x38e74b=_0x40a972;return _0x11c952=Array[_0x38e74b(0x257,'a%t8')](_0x11c952)?_0x11c952:[_0x11c952],_0x11c952[_0x38e74b(0x2a1,'8YIT')](_0x5361eb)||_0x5361eb['startsWith'](PACKAGE_SCOPE)&&_0x11c952[_0x38e74b(0x1a7,'DjR%')](ALL_PACKAGES);}function invalid(_0x4aa026,_0x240b9d,_0x369575){var _0x5a36f2=_0x40a972;return{'state':_0x5a36f2(0x225,'&c1!'),'product':_0x4aa026,'reason':_0x240b9d,'claims':_0x369575};}function decodeSegment(_0xbb5bbb){var _0x21f5ee=_0x40a972,_0xb01930={'fzAoY':'base64url','rNkjn':'utf8'};return JSON[_0x21f5ee(0x27a,'Ah6L')](Buffer[_0x21f5ee(0x203,'Q#Nq')](_0xbb5bbb,_0xb01930[_0x21f5ee(0x208,'EFL3')])[_0x21f5ee(0x1c9,'%mT#')](_0xb01930[_0x21f5ee(0x1b4,'ckUC')]));}function _0x30f2(){var _0x3750db=['mCkWWRJcKSkt','jatcTc89','vCoBCW3cRq','u8kwgJ88WQPdW5y','cWe9g8kY','jbNcQZaAhNa','W6NcVmoUqW','WQNcRmoUWQhdOW12psBdUW','Amk3BCkg','ld3dGbRdQmojW4qLa8k6WRHIW5G','kttcTSk5sa','fd14mmoy','W6nQWQrprW','WP3cRCk2W7ZdRw0HW6vSW7jkih8','WOZdJCoXWQpcUZv4W6GhW6H+uw85WQtdGCktAZbcWRlcTu7cKN4tzmkDWO8/aLG2dKb6WPenW4K7WOhdHWVdHCkKWQvoWOuVWP7cR8oDyuVdSxP/AZ/cSSo6W4rEhSo4W65aW6aOdbRcH1e','zmk+WPi','W53cKaJdM8oO','mmkNW5m5CXpcSSoK','bXpcRqbC','hZ3cJGSv','zSkQWRP5mG1+WPe','juBdGLBcGmob','CSo7ud3cJ8o9WPGKW54UBCk2','qbFcRamD','WQzjW4icW4TwnG','fSoSW47dOG','wCkCcN0QWQ9wW5hdJIlcPCkEWOOdWPlcP8krW45WBvbHfCo8abRcKsy4W5KyW4ikwG3dS1uQW7vEy8khW44tx341ECkoWQLUhMJcVWxcPs4VW6/dKN7dJNJcO8osBCoKWPxdG8kUCmk2kSky','WQPwa8kVWQC','ivFcPW','W6ZcQ8oUrZ0','WQJdLrq9WPf9vNlcTuNdHSk0va','WQ1SgCoiW4/dUSkhW5m','bCo4W6GFfG','eX/cTdC+','emoRW6Gdaq','eSo9W58wfW','W77cRSkjysess3PeqvaZ','lmkus8kRW7eFsG','W6iKcmoNWR8','EmkRj8kMWRfhBW','m8opsSosjhFcM8kD','zmkxySofeLy','WRRdP8ommei','dCkJWRy','W5tdImkNW4K','EHldUIxdR8oFfdew','mCoJWOJcTmo3WQ3dKKvLW6hcICkz','W6Oek8o/WPi','aSo0W5zOWP8ofW','W4uyfSoUWQ4','WQNdIIG','ECkCWR7cH8kC','p8oZW49wkL9eW5FcQWjYW7q','W53dMmkIW4fyhq','ASkRWOituaj0W7K','W4LKng4','gLpdMZhdRfRcP0tcKbLxWQCW','jM3cMmoCW6i','nSkFWQWfrqvI','ocOAaCkh','W4ddJCknW4ji','W5FcTCofzqa','W75qWQboBW','W58TcGtdQg0','oYhcRmkxwmkAx8k0sCkmWQiXd03cGZCCW5BdOqdcLq','vCkClSoGWQGB','WQG8WR5KCZHQemkgqqfoC8k3mNBcQde9fG','WRxcSSoBWOBdVt1EaqNdM8kttSohWQNcL24IW6G0WODY','WPVdHCk2Crq','iLdcVq','W7fgx8kSWOxcUeq','pMpcGW','b8ocWOVcQmoM','A8kqBCoDaKdcJ8k3','dthcGa8M','EGlcM1FcKmo8W4L6W7S','weJcKmkQAmkGFCkEB8oP','cbpdIGldPSoDW7uioCkxWPa','f8kYW7mwDq','kMlcR8kWW5/cRmoh','lCojW7uhjGO2h8kjW7RcLXT+wCoyldhcGCoZb8oSW4BdQWXkEZyhCZWDW6RdJ1hdUttdS8okcvCzW7esBe5dE0VdRCkrodJdP8oaWOpdNstcRSk3W6C','dvFcQ8k/W5q','WQ/cVCo6sG8I','pMddSrC','i3/cSCk+W5NcOq','W69OWP8HDtH8vmkxw0qbBCo+ixlcVZ43wtRdMCkKpaNcSJ/dLNGrg8oDWOy3WPDqWPtcTtG','i1ldNhVcKSoD','W4X3k3Cy','z8kKWPGmAqn3W74','q8ofCWBcQSoFWQ8','WRFdHeyWWPHHAtVcUepdNmoNvGRdM8o+F8kz','bCoYW6OzfJ4C','cmoUW4XKWO4F','oN7cP8kqW5u','vmknpCoTWPitW7tdOdtdKW','W6yryCojWPerF8kbW4q0euTlW7zL','xmkmWP/dSZu','W5SClmorWPW','x8k0WQldNIW','WQ4EfCoMW5NdOrhcS8oTWPfdW6/cIG','ASkTFmosdq','WOhdPmkuDZG','vmoYkxldMCopzSomfCkqoSoOW61H','WOGFl8obW5GBBSkCWOC2q0XhW6fLWQ4WW6CCa8osfMddUr0iWOenWPyjbq','W48BnCoXWPeFFW','qG3cSHSoACo9W5u','bSkenCoQWQmsW7ZdOhO','pcqvgCklpG','WQbcgSk8WPjb','jSo4W6VdTSodWPpcTceTl8kqW6O2','qCksyCoeeWtcRmkRW60zxe4hiCoRWQP4','kfFdGvlcIG','lGlcUsaw','bCo/W77dOCk1','EYVcReZcMYxcTehcPJ1lWQ8','W5OTfHhdPMC','rmkBWRqtrq','W6ZcH1zSW4u9kg7cPehdHSkQza','WRTmW4qwW4TwiG','WPSNAteEWONdImkMiCky','e8oszblcTSooWR4CWR8grSof','W7Wwjmkf','pr/cIZCbgxNdRW','oqlcTYCge2m','DCofCW/dVW','W5fDWOPZza','emk1WRhcT8kH','hcCAbmkhlNiLD8o/WRJdUmoCpwtcPuxdJw5VW4D/W7JcOmogWO7dI8o7WQCrWQCwWQaCWP8juq','W6pdQSotWQ7cRW','mCkNWQJdUSk3qtS','W6ZcR8oJwIW','kSkKW7mOzc3cOG','l8kiWPpcHSkkW5TBwNldU2JdIHpdJXinumkywa','WPLmC8kuW4bdlCkfW6WIA3Xr','W6TuW55rW5zqnmolyaFdQSoBsgXknMFdLLVcJsW4bmoFWQ3cHCoytmkEWOuRA8khWP1b','W5BdSSk8W5vC','lKVdN13cL8oAW4XR','WOGskmogWP0CECkkWOC','W7TkwmklWOxcU0y','gqtdSW','W6FcUmoOFaTSW4n/qmk7xu/cVcldJCoTA1eufqtdTGeQFriAW7tcSb/dGe7dIeldO11gWP05W7K+v0C7','ACkVp8kBWRW','jrHWpG','W5tcGSkAW57dPY/dOmoBWPJcQmkG','W7RcPt3dOCoM','fIRdQIldGG','WPpcUCoisrS','WQ/dJs1yv8kAxriO','W5ZdQmkdW710','CgNcJmofW6/dI8kGWPZdSmkqWQWo','dW3cS8kasG','bSkCnmoSW6yDW6/dTtBdICkXWOhdHqiLWQ/cSwhcUmoqW4NdQCkVywtcM8kQzrFdHrmNWQ/cQ13dQCofdHi','vmkSWRRcVSoCW57dTxS','oXxcUtaChG','W4VdRCoLWQ7cSa','pmk2WRu','nCksWP3cPCk1','lrhcRdiJ','W5LXbSk4W64','qG3cSH0oDmoG','WPXPe8kqcW','W4tdSmonWQhcLW','WO7cV8ohWP3dNa','WRbEpCkjga','W5mCW7jYW4SO','qmocFG','FIpcQKJdMhRcOg7cPsi','W5pdJ8khBt82smosm8otWRhcVq','fmooWRdcMSo3','kMlcR8kWW5/cRmoq','W4BdICoTWR7cVG','W6v7EmkTWOO','WQhdI2XsqCo/xrKVW54Zh00XWQlcJLJcSMVcQ8o6BSkwbX1aW7RcSSkPWQy9tmoqz8o7baBcS8oGdCkWEWOYiNH5ydlcImk4WPm7WQPZFSoxstK5W6y','dWJdOIxdJa','BCkRgJu7','WPqBW71OW5y3W4i','WRnWW6iWW48','q8kTWRNcOmkHW6z9ybC','W6PEWP1rsq','z8k5WROsBGzR','W6T3bCkf','WR5fgmk6WOjqW6O','WOVdPCopWOJcNW','WR9iW5rr','iWtcSq','ECkSxSkhW7i','sCk5WQNdILTlWOX3nG','A0/cPYxdV8o+hcjAWO7cHeraW40CW5yqW7ddNb7dJSocWPO','W7NcJN0oaSkMqa8YWPGD','WRJdJsnFr8k8rX80WPa','W4ddTSoNWQJcUY9Z','aCoGW4D1WQakfa','WQxdGCotjN4','gSkuedaSWQbvW4ddMsZcVCkyW4K','W7qnW7jSWPiVWPfTq8ksEG','Bmk7mq','W40gmComWOOxAq','i8o0WRDjlG17WRRcGCoMWRG','WQlcSSoVAGOVW4Pwt8kSeq/dRXu','dSo4W5uHWP4ca8kNW7pcUmohWOXDWQqaqtJdS8k7WOWqWO8ZW4JcHK7dUfe','F8k7WQtdKXi','lmkAWOZcQ8kOW4JdTG','FshdMCkyWQVdVmklWRZdSmkVWPDSW7ddJLldNwX+W5LWW4tcISoACW','pgRcVSk6W4G','WQjuW4jrW4TliSkEArZcQq','WR9iW5rrW4fummkcyr3cQConu20dnNNdJvNdIcn2gCkqWR3dNCoAcCkCWPiNpCkqWPWEW5/dN8kSWQyg','W4NcPtBdPCoy','mSkvWPRcUCkh','W5tcISkyW5/dO2pdKCoXWOJcGSknW5y','c8ooW5DrWRK','bmoDW6pdO8ky','oGxcUG','lwddUrNdIa','B8owjxtdLG','WP/cNCo9WRpdGGT2','W6PGhSk8W4JdUmkw','lqpcLHuf','lXxcUtCgaNldUW','lfhcRYxdVW','ghNdOcRdOq','lSkSWPqspa','gb5ZCq','bSkTW70Izq','rbNcOXSrCW','W5FcGSksW5ldOMhcOCoyWQVcH8kFW6NdNa','W4KTaaxdP2VcKG','h8oDWQm','cHZcTZyxufhdP8oTgs1rW5i6WPuXWPeBWOK','WQfuW5G','c1/cMCkyW7JcHCo3W5FcHCkWW5ZcNSkCetr9W4FcPW','nSkLW6S0tG','C8k6mWqT','WOZdTSo3W63cTJn4W6LoW6zLa28RW6VcJCk1BZal','W5BcLCoKWQdcJG','owlcGSouW6RdKmkH','vWFcRrqvBmo2W4e','jxtdG3ZcTa','WQXsW5asW4D9p8kpFW','lY0Ne8kO','W6uniSo1WPy','W58lW6PV','DCkJWRW','WRVdIZ5sxmk4','trRcQXW','fcjsg8oU','BSk4WQBdIXC','vCkCpCo9WQm','WRvEWRHcrX9P','W7ZcVSo/hIXs','W6RcU8o3EIa','btNcMWy9i1ldL8orjbP2W65i','l8k+W5e/Ed/cVSoKjrSWpCoVWQqW','W63cJmoKDb0','W5S2aqu','W7ZcLtJdUCo5','WQ7cR8oiDWOTW5y','jX9Y','WR/dPCovmwbeFq','W7VcOmkkyYmsoLXqsNe8WPe','Amk4WP4fzGi','kdxcVSkpqSkgtmk2t8kqWR8','WP/cH8o4W7ldNGnRjcxdV8k5pCoRWOxdVK4BW51yWQ9ytMVdGCkkWQeyca','mmkWWRNdI8kKsq','msBcKGWP','i2hdMqJdN3ZcMW'];_0x30f2=function(){return _0x3750db;};return _0x30f2();}function verifySignature(_0xce54a3,_0x4cbbfc,_0x5e1dbe){var _0x224130=_0x40a972,_0x4984f7={'nRKYO':'base64url'};try{return crypto['verify'](null,Buffer[_0x224130(0x28f,'*@(w')](_0xce54a3),_0x5e1dbe,Buffer[_0x224130(0x284,'r&(8')](_0x4cbbfc,_0x4984f7[_0x224130(0x1e3,'r&(8')]));}catch{return!0x1;}}function checkBinding(_0x283cb8,_0x111970){var _0x2f1a22=_0x40a972,_0x4aa46f={'XKnaW':_0x2f1a22(0x1bd,'8YIT'),'WAfry':_0x2f1a22(0x232,'%mT#'),'sbmtd':function(_0x2c346d,_0x6289ae){return _0x2c346d!==_0x6289ae;},'RkxPL':function(_0x3d8943,_0x5b6ee5){return _0x3d8943+_0x5b6ee5;},'MscPn':'it\x20is\x20bound\x20to\x20another\x20'},_0x38586b,_0x11e213,_0x53fe48;for([_0x38586b,_0x11e213,_0x53fe48]of[[_0x283cb8?.[_0x2f1a22(0x231,'ryHT')],_0x111970?.['organization_id'],_0x4aa46f[_0x2f1a22(0x263,'1xFM')]],[_0x283cb8?.[_0x2f1a22(0x21a,'KUX&')],_0x111970?.[_0x2f1a22(0x269,'ovUo')],_0x4aa46f[_0x2f1a22(0x1cc,'OO%S')]]])if(Array[_0x2f1a22(0x1d2,'ovUo')](_0x38586b)&&_0x4aa46f[_0x2f1a22(0x1b0,'AA%K')](0x0,_0x38586b['length'])&&(!_0x11e213||!_0x38586b[_0x2f1a22(0x25b,'hk#j')](_0x11e213)))return _0x4aa46f[_0x2f1a22(0x22a,'a%t8')](_0x4aa46f[_0x2f1a22(0x23e,'AA%K')],_0x53fe48);}function verifyLicense(_0x2abbd3,_0x43c589){var _0x2bfa2a=_0x40a972,_0x25869a={'rwEfs':_0x2bfa2a(0x299,'K5g@'),'QTJzC':function(_0x58aa9e,_0x3a63c3){return _0x58aa9e===_0x3a63c3;},'gbnqa':function(_0x5bbdb9,_0x583131){return _0x5bbdb9!==_0x583131;},'xPSAm':_0x2bfa2a(0x1fb,'&W&P'),'jVisk':function(_0x253647,_0x4c59e4){return _0x253647(_0x4c59e4);},'yTTrf':function(_0xd239a0,_0x515f6f,_0x24d1c2){return _0xd239a0(_0x515f6f,_0x24d1c2);},'dRTVZ':_0x2bfa2a(0x1a4,'OO%S'),'BzjZj':_0x2bfa2a(0x268,'Gazd'),'lBqPT':function(_0x4a7f19,_0x4b5a4d,_0xc6895e){return _0x4a7f19(_0x4b5a4d,_0xc6895e);},'datqP':function(_0x38c9f8,_0x36b993){return _0x38c9f8+_0x36b993;},'nVdcH':'it\x20is\x20signed\x20with\x20the\x20unknown\x20key\x20','mSeIm':function(_0x1b05e2,_0x1b65c4,_0x33ac4a,_0x1affd3){return _0x1b05e2(_0x1b65c4,_0x33ac4a,_0x1affd3);},'BMtfy':_0x2bfa2a(0x216,'IQJE'),'OuWcz':function(_0x1ef500,_0x2ddc2c){return _0x1ef500!=_0x2ddc2c;},'bQqiO':_0x2bfa2a(0x1ab,'IQJE'),'IBJWd':_0x2bfa2a(0x254,'&c1!'),'jRPhN':function(_0x24d4c5,_0x277b6d){return _0x24d4c5(_0x277b6d);},'nKcMf':function(_0xb27356,_0x5571d6){return _0xb27356!=_0x5571d6;},'cdnfo':function(_0x2c5ea8,_0x3e9d51){return _0x2c5ea8===_0x3e9d51;},'tVEhx':function(_0x195273,_0x4c2c18){return _0x195273!=_0x4c2c18;},'udxIx':_0x2bfa2a(0x1bb,'EU$M'),'WScfr':_0x2bfa2a(0x21c,'4AgI'),'VMVHf':function(_0xaef936,_0x23b693,_0x58fb96){return _0xaef936(_0x23b693,_0x58fb96);},'TtlPO':function(_0x45762e,_0x2ff6f3,_0x5708d2,_0x2901b8){return _0x45762e(_0x2ff6f3,_0x5708d2,_0x2901b8);},'AREVM':_0x2bfa2a(0x1a9,'#hSp'),'VSMfq':function(_0x39c6dd,_0xa09024){return _0x39c6dd<_0xa09024;},'xvIpK':function(_0x3de2bb,_0x1f9710){return _0x3de2bb*_0x1f9710;},'GXdDF':function(_0x2cbd4a,_0x3379d6,_0xae8f61,_0x15c52c){return _0x2cbd4a(_0x3379d6,_0xae8f61,_0x15c52c);},'yEhcK':function(_0x3c7d1e,_0x2287a3){return _0x3c7d1e+_0x2287a3;},'DAXLU':'it\x20is\x20not\x20valid\x20before\x20','dsNVv':function(_0x26206f,_0x371988){return _0x26206f*_0x371988;},'VnjdZ':function(_0xe623,_0x11518c){return _0xe623==_0x11518c;},'XpofO':function(_0x363718,_0x333c50){return _0x363718<=_0x333c50;},'zDHba':function(_0x2e7dfb,_0x3d6938){return _0x2e7dfb*_0x3d6938;},'QQzmq':function(_0x4385fe,_0xf586fc){return _0x4385fe/_0xf586fc;},'urYnX':function(_0x39a69d,_0x56ea07){return _0x39a69d-_0x56ea07;},'EzOxs':function(_0x433ac6,_0x51f24a){return _0x433ac6<_0x51f24a;},'evHNZ':_0x2bfa2a(0x291,'6gz%'),'CRHnu':_0x2bfa2a(0x1e9,'WVpQ'),'UrFzX':_0x2bfa2a(0x2a7,'KUX&')},_0x46c304=_0x43c589['product'];if(_0x25869a[_0x2bfa2a(0x27b,'Ah6L')]!=typeof _0x2abbd3||_0x25869a[_0x2bfa2a(0x21e,'Ew]8')]('',_0x2abbd3[_0x2bfa2a(0x1a2,'a%t8')]()))return{'state':_0x2bfa2a(0x270,'4AgI'),'product':_0x46c304};var _0x2684d8=_0x43c589[_0x2bfa2a(0x271,'2s1o')]??PUBLIC_KEYS,_0x467c33=(_0x43c589[_0x2bfa2a(0x29f,'6gz%')]??new Date())[_0x2bfa2a(0x1d9,'(f^w')](),_0x2abbd3=_0x2abbd3['trim']()[_0x2bfa2a(0x1d1,'gUD6')]('.');if(_0x25869a[_0x2bfa2a(0x293,'COJ#')](0x3,_0x2abbd3[_0x2bfa2a(0x1a3,'KUX&')]))return invalid(_0x46c304,_0x25869a[_0x2bfa2a(0x1ff,'4AgI')]);let _0x2d96ea,_0x1febc2;try{_0x2d96ea=_0x25869a[_0x2bfa2a(0x20f,'[Eu0')](decodeSegment,_0x2abbd3[0x0]),_0x1febc2=_0x25869a[_0x2bfa2a(0x1f9,'WVpQ')](decodeSegment,_0x2abbd3[0x1]);}catch{return _0x25869a['yTTrf'](invalid,_0x46c304,_0x25869a['dRTVZ']);}if(_0x25869a[_0x2bfa2a(0x244,'ky#R')](_0x25869a[_0x2bfa2a(0x287,'AA%K')],_0x2d96ea?.['alg']))return _0x25869a[_0x2bfa2a(0x201,'OO%S')](invalid,_0x46c304,'its\x20algorithm\x20'+_0x25869a[_0x2bfa2a(0x1e0,'oyxP')](String,_0x2d96ea?.[_0x2bfa2a(0x240,'vT]V')])+'\x20is\x20not\x20EdDSA');var _0x5d90bb=String(_0x2d96ea[_0x2bfa2a(0x24f,'1xFM')]);if(!Object[_0x2bfa2a(0x1a1,'H3Y%')](_0x2684d8,_0x5d90bb))return _0x25869a[_0x2bfa2a(0x1fa,'(f^w')](invalid,_0x46c304,_0x25869a[_0x2bfa2a(0x1f7,'ryHT')](_0x25869a[_0x2bfa2a(0x205,'[g!5')],_0x5d90bb));if(!_0x25869a[_0x2bfa2a(0x28b,'vT]V')](verifySignature,_0x25869a[_0x2bfa2a(0x1ec,'%mT#')](_0x25869a[_0x2bfa2a(0x24d,'Gazd')](_0x2abbd3[0x0],'.'),_0x2abbd3[0x1]),_0x2abbd3[0x2],_0x2684d8[_0x5d90bb]))return _0x25869a['yTTrf'](invalid,_0x46c304,_0x25869a[_0x2bfa2a(0x2a9,'KUX&')]);if(null===_0x1febc2||_0x25869a[_0x2bfa2a(0x1cf,'WVpQ')](_0x25869a[_0x2bfa2a(0x1df,'Gazd')],typeof _0x1febc2))return _0x25869a[_0x2bfa2a(0x220,'IQJE')](invalid,_0x46c304,_0x25869a[_0x2bfa2a(0x236,'hk#j')]);if(_0x25869a[_0x2bfa2a(0x26f,'B*A(')](_0x1febc2[_0x2bfa2a(0x29d,'#*k8')],LICENSE_ISSUER))return invalid(_0x46c304,_0x2bfa2a(0x21b,'4AgI')+_0x25869a['jRPhN'](String,_0x1febc2['iss'])+_0x2bfa2a(0x277,'Q#Nq')+LICENSE_ISSUER);if(_0x25869a['nKcMf'](_0x2bfa2a(0x241,'&W&P'),typeof _0x1febc2[_0x2bfa2a(0x1f4,'K!Of')])||_0x25869a[_0x2bfa2a(0x262,'CdTG')]('',_0x1febc2[_0x2bfa2a(0x222,'%mT#')])||_0x25869a[_0x2bfa2a(0x294,'r&(8')]!=typeof _0x1febc2['jti']||_0x25869a[_0x2bfa2a(0x1be,'X91x')]('',_0x1febc2[_0x2bfa2a(0x1ea,'N8MD')])||_0x25869a['tVEhx'](_0x25869a[_0x2bfa2a(0x1ac,'KUX&')],typeof _0x1febc2[_0x2bfa2a(0x1da,'oyxP')]))return invalid(_0x46c304,_0x25869a[_0x2bfa2a(0x1fd,'hk#j')]);if(!_0x25869a[_0x2bfa2a(0x26b,'%mT#')](grants,_0x1febc2[_0x2bfa2a(0x28a,'&W&P')],_0x46c304))return _0x25869a[_0x2bfa2a(0x1ed,'Q#Nq')](invalid,_0x46c304,_0x25869a[_0x2bfa2a(0x273,'EU$M')](_0x25869a['AREVM'],_0x46c304),_0x1febc2);if(_0x25869a[_0x2bfa2a(0x248,'gUD6')]==typeof _0x1febc2['nbf']&&_0x25869a[_0x2bfa2a(0x1eb,'Ew]8')](_0x467c33,_0x25869a[_0x2bfa2a(0x1c0,'2s1o')](0x3e8,_0x1febc2[_0x2bfa2a(0x283,'Ew]8')])))return _0x25869a['GXdDF'](invalid,_0x46c304,_0x25869a[_0x2bfa2a(0x1f2,'TwND')](_0x25869a[_0x2bfa2a(0x2a2,'%mT#')],new Date(_0x25869a[_0x2bfa2a(0x227,'%mT#')](0x3e8,_0x1febc2['nbf']))[_0x2bfa2a(0x2a5,'oyxP')]()),_0x1febc2);_0x2abbd3=_0x25869a[_0x2bfa2a(0x221,'2s1o')](checkBinding,_0x1febc2[_0x2bfa2a(0x24c,'J[Ik')],_0x43c589[_0x2bfa2a(0x25e,'gUD6')]);if(_0x2abbd3)return _0x25869a['TtlPO'](invalid,_0x46c304,_0x2abbd3,_0x1febc2);_0x2684d8=new Date(0x3e8*_0x1febc2['exp']),_0x5d90bb=_0x25869a[_0x2bfa2a(0x1b1,'ky#R')](_0x2bfa2a(0x26d,'X91x'),typeof _0x1febc2[_0x2bfa2a(0x223,'a%t8')])&&_0x25869a['XpofO'](0x0,_0x1febc2['grace'])?_0x1febc2[_0x2bfa2a(0x1bf,'%mT#')]:DEFAULT_GRACE_DAYS,_0x43c589=new Date(_0x2684d8[_0x2bfa2a(0x1b7,'AA%K')]()+_0x25869a['zDHba'](_0x5d90bb,DAY_MS)),_0x2abbd3=Math[_0x2bfa2a(0x25a,'K!Of')](_0x25869a[_0x2bfa2a(0x21d,'Gazd')](_0x25869a[_0x2bfa2a(0x235,'ovUo')](_0x2684d8[_0x2bfa2a(0x226,'Q#Nq')](),_0x467c33),DAY_MS));let _0x2fd16e;return{'state':_0x2fd16e=_0x25869a['VSMfq'](_0x467c33,_0x2684d8[_0x2bfa2a(0x1d0,'N8MD')]())?_0x25869a[_0x2bfa2a(0x22d,'ovUo')](_0x2abbd3,EXPIRY_WARNING_DAYS)?'expiring':_0x25869a[_0x2bfa2a(0x264,'OO%S')]:_0x25869a['EzOxs'](_0x467c33,_0x43c589[_0x2bfa2a(0x27f,'4R9p')]())?_0x25869a['CRHnu']:_0x25869a[_0x2bfa2a(0x1ef,'TwND')],'product':_0x46c304,'claims':_0x1febc2,'expires':_0x2684d8,'graceEnds':_0x43c589,'daysLeft':_0x2abbd3};}function readTokens(_0x25eed2){var _0x53ea01=_0x40a972;return(Array[_0x53ea01(0x202,'DjR%')](_0x25eed2)?_0x25eed2:[_0x25eed2])[_0x53ea01(0x281,'8YIT')](_0x30290d=>'string'==typeof _0x30290d)[_0x53ea01(0x20e,'IQJE')](_0x3f1e93=>_0x3f1e93['split'](/[\s,]+/))['filter'](Boolean);}exports[_0x40a972(0x1d3,'Ew]8')]=LICENSE_ERROR_CODES;let STATE_RANK=Object[_0x40a972(0x252,'DjR%')]({'missing':0x0,'invalid':0x1,'expired':0x2,'grace':0x3,'expiring':0x4,'valid':0x5});function selectLicense(_0x40fc7b,_0x4837c7){var _0x3eddbb=_0x40a972,_0x573b6b={'XTDJa':_0x3eddbb(0x29e,'(f^w'),'PEKVr':function(_0x5543c4,_0x56bb64,_0x24b653){return _0x5543c4(_0x56bb64,_0x24b653);},'ZoltM':function(_0x59832c,_0x1ab06e){return _0x59832c>_0x1ab06e;}};let _0x3b8a6b={'state':_0x573b6b[_0x3eddbb(0x243,'1xFM')],'product':_0x4837c7[_0x3eddbb(0x204,'EU$M')]};for(var _0xb64446 of _0x40fc7b){_0xb64446=_0x573b6b['PEKVr'](verifyLicense,_0xb64446,_0x4837c7),_0x573b6b[_0x3eddbb(0x279,'%mT#')](STATE_RANK[_0xb64446['state']],STATE_RANK[_0x3b8a6b['state']])&&(_0x3b8a6b=_0xb64446);}return _0x3b8a6b;}function licensedFeature(_0x41730f,_0x272bc1){var _0x3eaef5=_0x40a972,_0x47742d={'upveW':function(_0x331647,_0x18b4ec){return _0x331647===_0x18b4ec;},'fggTw':_0x3eaef5(0x217,'ky#R'),'dHtqg':_0x3eaef5(0x1b8,'B*A('),'rSkGE':function(_0x57049f,_0x5be519){return _0x57049f===_0x5be519;}};if(_0x47742d[_0x3eaef5(0x282,'[Eu0')](_0x47742d['fggTw'],_0x41730f[_0x3eaef5(0x245,'K5g@')])||_0x47742d['upveW'](_0x47742d[_0x3eaef5(0x1d6,'r&(8')],_0x41730f[_0x3eaef5(0x1fc,'oyxP')])||_0x47742d[_0x3eaef5(0x24b,'gUD6')]('grace',_0x41730f['state']))return _0x41730f[_0x3eaef5(0x22e,'B*A(')][_0x3eaef5(0x228,'%mT#')]?.[_0x41730f[_0x3eaef5(0x1a8,'K!Of')]]?.[_0x272bc1];}function readVcap(){var _0x350ad8=process.env.VCAP_APPLICATION;if(_0x350ad8)try{return JSON['parse'](_0x350ad8);}catch{}}function isProduction(_0x22c519){var _0x44eec3=_0x40a972,_0x459c77={'xVJOZ':_0x44eec3(0x20c,'&W&P'),'peScN':function(_0x4802dd,_0x3cdd6a){return _0x4802dd(_0x3cdd6a);}};return _0x22c519=_0x22c519?.[_0x44eec3(0x23a,'B*A(')],Array[_0x44eec3(0x24e,'H3Y%')](_0x22c519)&&_0x22c519['includes'](_0x459c77[_0x44eec3(0x256,'%mT#')])||_0x459c77[_0x44eec3(0x23d,'COJ#')](Boolean,process.env.VCAP_APPLICATION);}function isUsedThroughEsi(_0x306a38){var _0x5b9074=_0x40a972,_0xcb9cd1={'RqhQW':function(_0x5843ad,_0x5c0bf9){return _0x5843ad==_0x5c0bf9;},'JQOsY':_0x5b9074(0x28d,'r&(8'),'nGlHQ':function(_0x40e765,_0x4bc546){return _0x40e765!==_0x4bc546;}};return _0x306a38=_0x306a38?.[_0x5b9074(0x1c5,'4AgI')],_0xcb9cd1[_0x5b9074(0x258,'Ew]8')](_0xcb9cd1[_0x5b9074(0x1c3,'DjR%')],typeof _0x306a38)&&_0xcb9cd1[_0x5b9074(0x23b,'X91x')](null,_0x306a38)&&Object[_0x5b9074(0x1a5,'X91x')](_0x306a38,ESI_PACKAGE);}function day(_0xd887a8){var _0x2b76b4=_0x40a972;return _0xd887a8[_0x2b76b4(0x214,'Vr*4')]()['slice'](0x0,0xa);}function describeFailure(_0x178706){var _0x1d616f=_0x40a972,_0x360c85={'hoIlB':function(_0x41b938,_0x6a139d){return _0x41b938===_0x6a139d;},'HjJVX':_0x1d616f(0x25d,'%mT#'),'UVWIC':function(_0x68dc63,_0x9f71db){return _0x68dc63+_0x9f71db;},'qFHuV':function(_0x1a8052,_0x2fc5e6){return _0x1a8052(_0x2fc5e6);}};return _0x360c85[_0x1d616f(0x1f0,'WVpQ')](_0x360c85[_0x1d616f(0x295,'gUD6')],_0x178706['state'])?_0x1d616f(0x1ae,'AA%K')+_0x178706[_0x1d616f(0x230,'J[Ik')]+_0x1d616f(0x237,'WVpQ')+CONFIG_HINT+_0x1d616f(0x1d5,'4AgI'):_0x360c85[_0x1d616f(0x29c,'ckUC')](_0x1d616f(0x239,'6gz%'),_0x178706[_0x1d616f(0x1cd,'Ew]8')])?_0x1d616f(0x22c,'1xFM')+_0x178706[_0x1d616f(0x1ca,'%mT#')]+_0x1d616f(0x20a,'#*k8')+_0x178706[_0x1d616f(0x1e8,'%mT#')]+'.':_0x360c85[_0x1d616f(0x1af,'ky#R')](_0x1d616f(0x1c8,'AA%K')+_0x178706[_0x1d616f(0x250,'[Eu0')]+_0x1d616f(0x1d8,'AA%K')+_0x178706['claims'][_0x1d616f(0x233,'4AgI')]+_0x1d616f(0x238,'&c1!')+_0x178706['claims']['sub']+_0x1d616f(0x1f6,'ckUC'),day(_0x178706[_0x1d616f(0x1aa,'Ah6L')])+_0x1d616f(0x1b6,'AA%K')+_0x360c85['qFHuV'](day,_0x178706[_0x1d616f(0x23c,'4AgI')])+'.');}function enforceLicense(_0x46ae45){var _0x5842db=_0x40a972,_0x1dde27={'JZIBG':function(_0x38a4be,_0x5e25e2,_0x66c9bb){return _0x38a4be(_0x5e25e2,_0x66c9bb);},'TeALc':function(_0x570359,_0x18db48){return _0x570359(_0x18db48);},'wmOCA':function(_0x1fa4ef,_0x4efdce){return _0x1fa4ef(_0x4efdce);},'SumdJ':_0x5842db(0x1d7,'X91x'),'xLLOr':function(_0x318ebf,_0x234dc9){return _0x318ebf+_0x234dc9;},'SQoIr':_0x5842db(0x229,'#*k8'),'mtllN':function(_0x414532,_0x3974ce){return _0x414532+_0x3974ce;},'hSzkN':function(_0x2ea264,_0xcc2a1e){return _0x2ea264(_0xcc2a1e);},'TIIkT':_0x5842db(0x1dd,'1xFM'),'hSrcz':'warn','WFvaX':function(_0x8c960b,_0x2713b9){return _0x8c960b+_0x2713b9;},'mfWKV':_0x5842db(0x266,'WVpQ')},{product:_0x2871ab,env:_0x3bda5c,log:_0x9a6569}=_0x46ae45,_0x5282c1=_0x1dde27[_0x5842db(0x27e,'AA%K')](selectLicense,_0x1dde27['TeALc'](readTokens,_0x3bda5c?.[_0x5842db(0x1a6,'*@(w')]?.[_0x5842db(0x20d,'WVpQ')]),{'product':_0x2871ab,'keys':_0x46ae45[_0x5842db(0x23f,'va#*')],'now':_0x46ae45['now'],'vcap':readVcap()}),_0x176075=_0x5282c1[_0x5842db(0x1ba,'COJ#')];switch(_0x5282c1[_0x5842db(0x275,'gUD6')]){case _0x5842db(0x1dc,'4R9p'):return _0x9a6569['info'](_0x2871ab+_0x5842db(0x210,'hk#j')+_0x176075[_0x5842db(0x212,'4R9p')]+_0x5842db(0x1fe,'va#*')+_0x1dde27[_0x5842db(0x224,'xaSs')](day,_0x5282c1[_0x5842db(0x288,'IQJE')])+_0x5842db(0x2a4,'CdTG')+_0x176075[_0x5842db(0x207,'%mT#')]+')'),_0x5282c1;case _0x1dde27['SumdJ']:return _0x9a6569[_0x5842db(0x260,'EFL3')](_0x1dde27[_0x5842db(0x296,'OO%S')](_0x5842db(0x206,'4AgI')+_0x2871ab+_0x5842db(0x200,'Ew]8')+_0x176075[_0x5842db(0x274,'#*k8')]+_0x5842db(0x26a,'B*A(')+_0x176075['sub']+_0x5842db(0x1c7,'K!Of')+_0x1dde27[_0x5842db(0x1e1,'H3Y%')](day,_0x5282c1[_0x5842db(0x1f8,'KUX&')])+'\x20','('+_0x5282c1[_0x5842db(0x28e,'DjR%')]+_0x5842db(0x1db,'H3Y%'))),_0x5282c1;case _0x1dde27['SQoIr']:return _0x9a6569[_0x5842db(0x278,'Ah6L')](_0x1dde27[_0x5842db(0x1f1,'&c1!')]('the\x20'+_0x2871ab+_0x5842db(0x1b9,'K5g@')+_0x176075[_0x5842db(0x267,'DjR%')]+_0x5842db(0x22b,'DjR%')+_0x176075['sub']+_0x5842db(0x1e4,'6gz%')+day(_0x5282c1[_0x5842db(0x213,'AA%K')])+'.\x20',_0x5842db(0x1cb,'K!Of')+_0x1dde27[_0x5842db(0x2a0,'ryHT')](day,_0x5282c1[_0x5842db(0x1e2,'&W&P')])+_0x5842db(0x1e6,'K5g@')+_0x2871ab+_0x5842db(0x29a,'OO%S'))),_0x5282c1;default:var _0x2ab021,_0x28f0e7=_0x1dde27[_0x5842db(0x259,'%mT#')](_0x1dde27['hSzkN'](describeFailure,_0x5282c1),'\x20')+CONTACT;if(_0x1dde27[_0x5842db(0x1e5,'CdTG')](isProduction,_0x3bda5c))throw(_0x2ab021=new Error(_0x28f0e7))['code']=LICENSE_ERROR_CODES[_0x5282c1['state']],_0x2ab021['product']=_0x2871ab,_0x2ab021;return _0x9a6569[_0x1dde27[_0x5842db(0x2a6,'ovUo')](isUsedThroughEsi,_0x3bda5c)?_0x1dde27[_0x5842db(0x25c,'COJ#')]:_0x1dde27[_0x5842db(0x1b3,'8YIT')]](_0x1dde27['WFvaX'](_0x28f0e7,_0x1dde27[_0x5842db(0x289,'AA%K')])),_0x5282c1;}}module[_0x40a972(0x1ee,'B*A(')]={'ALL_PACKAGES':ALL_PACKAGES,'DEFAULT_GRACE_DAYS':DEFAULT_GRACE_DAYS,'enforceLicense':enforceLicense,'EXPIRY_WARNING_DAYS':EXPIRY_WARNING_DAYS,'grants':grants,'LICENSE_ERROR_CODES':LICENSE_ERROR_CODES,'LICENSE_ISSUER':LICENSE_ISSUER,'licensedFeature':licensedFeature,'PACKAGE_SCOPE':PACKAGE_SCOPE,'PUBLIC_KEYS':PUBLIC_KEYS,'readTokens':readTokens,'selectLicense':selectLicense,'verifyLicense':verifyLicense,'__test':{'checkBinding':checkBinding,'isProduction':isProduction,'readVcap':readVcap}};
package/src/index.js CHANGED
@@ -1 +1 @@
1
- var _0x1663af=_0x3596;function _0x3596(_0x24d47e,_0x1ae0d7){_0x24d47e=_0x24d47e-0x181;var _0x1f0e1b=_0x1f0e();var _0x359616=_0x1f0e1b[_0x24d47e];if(_0x3596['uEmVoH']===undefined){var _0x58426b=function(_0x33c57b){var _0x18d42f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x58741a='',_0x4ee949='';for(var _0x638ef3=0x0,_0x533f05,_0x2b32e7,_0x6c1d87=0x0;_0x2b32e7=_0x33c57b['charAt'](_0x6c1d87++);~_0x2b32e7&&(_0x533f05=_0x638ef3%0x4?_0x533f05*0x40+_0x2b32e7:_0x2b32e7,_0x638ef3++%0x4)?_0x58741a+=String['fromCharCode'](0xff&_0x533f05>>(-0x2*_0x638ef3&0x6)):0x0){_0x2b32e7=_0x18d42f['indexOf'](_0x2b32e7);}for(var _0x32c831=0x0,_0x587823=_0x58741a['length'];_0x32c831<_0x587823;_0x32c831++){_0x4ee949+='%'+('00'+_0x58741a['charCodeAt'](_0x32c831)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4ee949);};var _0x2a1cb0=function(_0x32769d,_0x261dc3){var _0x2334f4=[],_0x229e68=0x0,_0x4370c4,_0x5d4bf1='';_0x32769d=_0x58426b(_0x32769d);var _0x2efd68;for(_0x2efd68=0x0;_0x2efd68<0x100;_0x2efd68++){_0x2334f4[_0x2efd68]=_0x2efd68;}for(_0x2efd68=0x0;_0x2efd68<0x100;_0x2efd68++){_0x229e68=(_0x229e68+_0x2334f4[_0x2efd68]+_0x261dc3['charCodeAt'](_0x2efd68%_0x261dc3['length']))%0x100,_0x4370c4=_0x2334f4[_0x2efd68],_0x2334f4[_0x2efd68]=_0x2334f4[_0x229e68],_0x2334f4[_0x229e68]=_0x4370c4;}_0x2efd68=0x0,_0x229e68=0x0;for(var _0x2b5e4f=0x0;_0x2b5e4f<_0x32769d['length'];_0x2b5e4f++){_0x2efd68=(_0x2efd68+0x1)%0x100,_0x229e68=(_0x229e68+_0x2334f4[_0x2efd68])%0x100,_0x4370c4=_0x2334f4[_0x2efd68],_0x2334f4[_0x2efd68]=_0x2334f4[_0x229e68],_0x2334f4[_0x229e68]=_0x4370c4,_0x5d4bf1+=String['fromCharCode'](_0x32769d['charCodeAt'](_0x2b5e4f)^_0x2334f4[(_0x2334f4[_0x2efd68]+_0x2334f4[_0x229e68])%0x100]);}return _0x5d4bf1;};_0x3596['ZTFPDi']=_0x2a1cb0,_0x3596['bKwosp']={},_0x3596['uEmVoH']=!![];}var _0x140161=_0x1f0e1b[0x0];_0x3596['KzIlHy']!==_0x140161&&(_0x3596['bKwosp']={},_0x3596['KzIlHy']=_0x140161);var _0x12f8c8=_0x3596['bKwosp'][_0x24d47e];return _0x12f8c8===undefined?(_0x3596['kmXEKk']===undefined&&(_0x3596['kmXEKk']=!![]),_0x359616=_0x3596['ZTFPDi'](_0x359616,_0x1ae0d7),_0x3596['bKwosp'][_0x24d47e]=_0x359616):_0x359616=_0x12f8c8,_0x359616;}function _0x1f0e(){var _0x20f320=['vCkyWODOWQNdKsJcUmoOWQ7cQmk/mq','WOeNsmoRW6ZdQSofWRG','mSkRW7mxWQNdLCkSWO3dTmk7WOiXja','yeq3s8kQgaTiWQTcWONcRu0','W7LxumoJ','WO49tWldP8k6lCovjJOhpG','n8kJWQ4peK1Oq0ZcSZ/dKq','ng7cSNCJCwfo','WRZcU8oLBmkzW7HjjuVcGCklWOTKWPG','qSoqC3CshNazuCkcW4eCtmoj','kSoOW6tcIGRcPmkWb2NcQa','b8oZW69byetdH0WlWRVdNWe','smoBW54RWPBcGqKQW61SrhSHea','cgOfya','WOXMgfJdPu9p','qCkpWRBdJNhdVSoSpM7cUYLTga','WOFdQSoEWOq8oCo3W75fWQtcPSkWW6y'];_0x1f0e=function(){return _0x20f320;};return _0x1f0e();}(function(_0x51bc60,_0x15a296){var _0x3b08cc=_0x3596,_0x5a711b=_0x51bc60();while(!![]){try{var _0x639666=parseInt(_0x3b08cc(0x187,'lMGx'))/0x1*(parseInt(_0x3b08cc(0x18c,'Ds5J'))/0x2)+-parseInt(_0x3b08cc(0x188,'71fa'))/0x3+parseInt(_0x3b08cc(0x18a,'W[5%'))/0x4+-parseInt(_0x3b08cc(0x184,'I0G5'))/0x5+parseInt(_0x3b08cc(0x189,'z91X'))/0x6*(-parseInt(_0x3b08cc(0x18b,'9N&a'))/0x7)+parseInt(_0x3b08cc(0x18f,'44xQ'))/0x8+parseInt(_0x3b08cc(0x182,'ilqe'))/0x9;if(_0x639666===_0x15a296)break;else _0x5a711b['push'](_0x5a711b['shift']());}catch(_0x5d9852){_0x5a711b['push'](_0x5a711b['shift']());}}}(_0x1f0e,0xe435a),(Object[_0x1663af(0x181,'U0VD')](exports,_0x1663af(0x183,'71fa'),{'value':!0x0}),exports[_0x1663af(0x18e,'Q[rh')]=void 0x0,exports[_0x1663af(0x186,'YD)Y')]=require('./lib')));
1
+ var _0x5c96fe=_0x388a;function _0x388a(_0x4b07f5,_0x9b11c4){_0x4b07f5=_0x4b07f5-0x153;var _0x646357=_0x6463();var _0x388a40=_0x646357[_0x4b07f5];if(_0x388a['FshHgb']===undefined){var _0x4f7b86=function(_0x387b2a){var _0x3f0709='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x21ecaf='',_0x2ece14='';for(var _0x33c691=0x0,_0x3a1f28,_0x34e768,_0x269e69=0x0;_0x34e768=_0x387b2a['charAt'](_0x269e69++);~_0x34e768&&(_0x3a1f28=_0x33c691%0x4?_0x3a1f28*0x40+_0x34e768:_0x34e768,_0x33c691++%0x4)?_0x21ecaf+=String['fromCharCode'](0xff&_0x3a1f28>>(-0x2*_0x33c691&0x6)):0x0){_0x34e768=_0x3f0709['indexOf'](_0x34e768);}for(var _0x7134ac=0x0,_0x21986d=_0x21ecaf['length'];_0x7134ac<_0x21986d;_0x7134ac++){_0x2ece14+='%'+('00'+_0x21ecaf['charCodeAt'](_0x7134ac)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2ece14);};var _0x2a8503=function(_0x58951b,_0x579633){var _0x512021=[],_0x4c2397=0x0,_0x2338f4,_0x1cb8ef='';_0x58951b=_0x4f7b86(_0x58951b);var _0x2db5f5;for(_0x2db5f5=0x0;_0x2db5f5<0x100;_0x2db5f5++){_0x512021[_0x2db5f5]=_0x2db5f5;}for(_0x2db5f5=0x0;_0x2db5f5<0x100;_0x2db5f5++){_0x4c2397=(_0x4c2397+_0x512021[_0x2db5f5]+_0x579633['charCodeAt'](_0x2db5f5%_0x579633['length']))%0x100,_0x2338f4=_0x512021[_0x2db5f5],_0x512021[_0x2db5f5]=_0x512021[_0x4c2397],_0x512021[_0x4c2397]=_0x2338f4;}_0x2db5f5=0x0,_0x4c2397=0x0;for(var _0x2ff91a=0x0;_0x2ff91a<_0x58951b['length'];_0x2ff91a++){_0x2db5f5=(_0x2db5f5+0x1)%0x100,_0x4c2397=(_0x4c2397+_0x512021[_0x2db5f5])%0x100,_0x2338f4=_0x512021[_0x2db5f5],_0x512021[_0x2db5f5]=_0x512021[_0x4c2397],_0x512021[_0x4c2397]=_0x2338f4,_0x1cb8ef+=String['fromCharCode'](_0x58951b['charCodeAt'](_0x2ff91a)^_0x512021[(_0x512021[_0x2db5f5]+_0x512021[_0x4c2397])%0x100]);}return _0x1cb8ef;};_0x388a['wcfvIW']=_0x2a8503,_0x388a['zklWxR']={},_0x388a['FshHgb']=!![];}var _0x26611d=_0x646357[0x0];_0x388a['GggVjE']!==_0x26611d&&(_0x388a['zklWxR']={},_0x388a['GggVjE']=_0x26611d);var _0x360d7f=_0x388a['zklWxR'][_0x4b07f5];return _0x360d7f===undefined?(_0x388a['LqhtFc']===undefined&&(_0x388a['LqhtFc']=!![]),_0x388a40=_0x388a['wcfvIW'](_0x388a40,_0x9b11c4),_0x388a['zklWxR'][_0x4b07f5]=_0x388a40):_0x388a40=_0x360d7f,_0x388a40;}function _0x6463(){var _0x58f80b=['d8oHv8oyWPNcGxFcSWNdGCoGn30+','qCojW6yRuKmfp8kB','iINdJCoIh3i8d8kiWOZdSNO','qmo/emk+WP5SeSkgWR9dW6NcI8om','W5qWW7tdImosnCkPpdC','hdZdIdWLiCklFCkJWPi','A8kmW6CMmbRcKxVdU8oUC8oX','W7hdQaza','m8kcW57dV17dVeBcRWjsAce','eCkrWPCKWQPMwmo8','kGRdGY1XWPFdOeWMb8ohCa','WPnNWOf7WRPtemk8WRNdIgH4qW','WRPbWORcQXfiWOlcU27dOSoBl8oL','rsS8W40uWOqEpa','WPK+baOcW5SgpxNcU8keuq','CcbVW7GuWOtdK09LWRSrW40','WPtcTmkqW4fwdwZdMxNdKmohBG','lSoeW7rnW4XTW40','WO/dOcRcM0hcUSk6l8owWRmha8kn','udj9W4lcQW','W61zhc4','qmo7f8k0WPbVeSk3WQzeW47cGmoj','W6e2W7pdLWZcPu0'];_0x6463=function(){return _0x58f80b;};return _0x6463();}(function(_0x306be2,_0x2c6010){var _0x32141d=_0x388a,_0x28c533=_0x306be2();while(!![]){try{var _0x39ed96=-parseInt(_0x32141d(0x15a,'&40h'))/0x1+parseInt(_0x32141d(0x158,'yI0T'))/0x2*(parseInt(_0x32141d(0x163,'xkq4'))/0x3)+-parseInt(_0x32141d(0x161,'sMN)'))/0x4*(-parseInt(_0x32141d(0x15b,'5SzD'))/0x5)+parseInt(_0x32141d(0x160,'vady'))/0x6+-parseInt(_0x32141d(0x15d,'1aRg'))/0x7+-parseInt(_0x32141d(0x164,'*XfQ'))/0x8+-parseInt(_0x32141d(0x155,'j]sj'))/0x9*(-parseInt(_0x32141d(0x153,'uA*1'))/0xa);if(_0x39ed96===_0x2c6010)break;else _0x28c533['push'](_0x28c533['shift']());}catch(_0x16d16a){_0x28c533['push'](_0x28c533['shift']());}}}(_0x6463,0x668fe),(Object[_0x5c96fe(0x169,'ioCo')](exports,_0x5c96fe(0x157,'SNOT'),{'value':!0x0}),exports[_0x5c96fe(0x159,']ezY')]=void 0x0,exports[_0x5c96fe(0x166,'7RjY')]=require(_0x5c96fe(0x165,'HI2g'))));