@stigg/node-server-sdk 3.24.2 → 3.26.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.
Files changed (28) hide show
  1. package/dist/client.js +33 -10
  2. package/dist/configuration.d.ts +14 -0
  3. package/dist/configuration.js +1 -1
  4. package/dist/services/cache/RedisSingleExecutionService/RedisSingleExecution.d.ts +28 -0
  5. package/dist/services/cache/RedisSingleExecutionService/RedisSingleExecution.js +187 -0
  6. package/dist/services/cache/RedisSingleExecutionService/RedisSingleExecution.utils.d.ts +26 -0
  7. package/dist/services/cache/RedisSingleExecutionService/RedisSingleExecution.utils.js +18 -0
  8. package/dist/services/cache/RedisSingleExecutionService/index.d.ts +1 -0
  9. package/dist/services/cache/RedisSingleExecutionService/index.js +6 -0
  10. package/dist/services/cache/cacheService.d.ts +5 -3
  11. package/dist/services/cache/inMemoryCacheService.d.ts +2 -1
  12. package/dist/services/cache/inMemoryCacheService.js +4 -2
  13. package/dist/services/cache/redisCacheService.d.ts +6 -2
  14. package/dist/services/cache/redisCacheService.js +40 -14
  15. package/dist/services/entitlementsService.d.ts +34 -8
  16. package/dist/services/entitlementsService.js +63 -61
  17. package/dist/services/inMemoryEntitlementsService.d.ts +3 -1
  18. package/dist/services/inMemoryEntitlementsService.js +97 -61
  19. package/dist/services/redisEntitlementsService.d.ts +8 -4
  20. package/dist/services/redisEntitlementsService.js +67 -50
  21. package/dist/types.d.ts +1 -0
  22. package/dist/types.js +3 -0
  23. package/dist/utils/ModelMapper.js +4 -3
  24. package/dist/utils/cacheKeysHelpers.d.ts +1 -1
  25. package/dist/utils/cacheKeysHelpers.js +11 -4
  26. package/dist/utils/isMetered.d.ts +7 -0
  27. package/dist/utils/isMetered.js +13 -0
  28. package/package.json +1 -1
@@ -1,8 +1,17 @@
1
1
  "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
2
8
  Object.defineProperty(exports, "__esModule", { value: true });
3
9
  exports.InMemoryEntitlementsService = void 0;
4
10
  const sdk_1 = require("@stigg/api-client-js/src/generated/sdk");
5
11
  const entitlementsService_1 = require("./entitlementsService");
12
+ const entitlementDecisionService_1 = require("./entitlementDecisionService");
13
+ const ReuseOngoingExecution_1 = require("../utils/decorators/ReuseOngoingExecution");
14
+ const lodash_1 = require("lodash");
6
15
  const WS_ERROR_RECONNECT_INTERVAL_MS = 5 * 1000;
7
16
  class InMemoryEntitlementsService extends entitlementsService_1.EntitlementsService {
8
17
  constructor(cacheService, client, batchedGraphqlClient, eventEmitter, loggerService, edgeApiClient) {
@@ -12,66 +21,6 @@ class InMemoryEntitlementsService extends entitlementsService_1.EntitlementsServ
12
21
  this.entitlementsSubscription = null;
13
22
  this.usageSubscription = null;
14
23
  this.packagePublished = null;
15
- this.onEntitlementsUpdated = (result) => {
16
- if (result.errors || !result.data) {
17
- this.loggerService.error(`Failed to handle entitlements updated event. Errors: ${result.errors}`, {
18
- errors: JSON.stringify(result.errors),
19
- });
20
- return;
21
- }
22
- const entitlementsUpdated = result.data.entitlementsUpdated;
23
- this.loggerService.debug(`Entitlements updated event arrived.`, {
24
- customerId: entitlementsUpdated.customerId,
25
- entitlements: entitlementsUpdated.entitlements,
26
- });
27
- const entitlements = this.cacheMapper.mapCachedEntitlements(entitlementsUpdated.entitlements);
28
- this.cacheService.setCustomer(entitlementsUpdated.customerId, entitlements, entitlementsUpdated.resourceId || undefined);
29
- this.eventEmitter.emit('entitlementsUpdated', entitlementsUpdated);
30
- };
31
- this.onUsageUpdated = (result) => {
32
- if (result.errors || !result.data) {
33
- this.loggerService.error(`Failed to handle usage updated event. Errors: ${result.errors}`, {
34
- errors: JSON.stringify(result.errors),
35
- });
36
- return;
37
- }
38
- const { usage: { customerId, featureId, resourceId, currentUsage, nextResetDate }, } = result.data.usageUpdated;
39
- this.loggerService.debug(`Usage updated event arrived.`, {
40
- customerId: customerId,
41
- featureId: featureId,
42
- resourceId: resourceId,
43
- currentUsage: currentUsage,
44
- nextResetDate: nextResetDate,
45
- });
46
- const wasSet = this.cacheService.updateFeatureUsage({
47
- timestamp: new Date(),
48
- customerId,
49
- resourceId: resourceId || undefined,
50
- featureId,
51
- currentUsage,
52
- nextResetDate: nextResetDate || undefined,
53
- });
54
- if (wasSet) {
55
- this.eventEmitter.emit('usageUpdated', result.data.usageUpdated);
56
- }
57
- };
58
- this.onPackagePublished = (result) => {
59
- var _a, _b;
60
- if (result.errors || !result.data) {
61
- this.loggerService.error(`Failed to handle package published event. Errors: ${result.errors}`, {
62
- errors: JSON.stringify(result.errors),
63
- });
64
- return;
65
- }
66
- this.loggerService.debug(`Package published event arrived.`, {
67
- data: (_a = result.data) === null || _a === void 0 ? void 0 : _a.packagePublished,
68
- });
69
- if (((_b = result.data) === null || _b === void 0 ? void 0 : _b.packagePublished.migrationType) === sdk_1.PublishMigrationType.AllCustomers) {
70
- this.loggerService.log('Clearing cache due to package published event');
71
- this.clearCache();
72
- }
73
- this.eventEmitter.emit('packagePublished', result.data.packagePublished);
74
- };
75
24
  }
76
25
  init() {
77
26
  this.loggerService.log('Subscribing to real-time updates');
@@ -109,6 +58,49 @@ class InMemoryEntitlementsService extends entitlementsService_1.EntitlementsServ
109
58
  this.cacheService.clearCache();
110
59
  this.isInitialized = false;
111
60
  }
61
+ onEntitlementsUpdated(result) {
62
+ if (result.errors || !result.data) {
63
+ this.loggerService.error(`Failed to handle entitlements updated event. Errors: ${result.errors}`, {
64
+ errors: JSON.stringify(result.errors),
65
+ });
66
+ return;
67
+ }
68
+ const entitlementsUpdated = result.data.entitlementsUpdated;
69
+ this.loggerService.debug(`Entitlements updated event arrived.`, {
70
+ customerId: entitlementsUpdated.customerId,
71
+ entitlements: entitlementsUpdated.entitlements,
72
+ });
73
+ const entitlements = this.cacheMapper.mapCachedEntitlements(entitlementsUpdated.entitlements);
74
+ this.cacheService.setCustomer(entitlementsUpdated.customerId, entitlements, entitlementsUpdated.resourceId || undefined);
75
+ this.eventEmitter.emit('entitlementsUpdated', entitlementsUpdated);
76
+ }
77
+ onUsageUpdated(result) {
78
+ if (result.errors || !result.data) {
79
+ this.loggerService.error(`Failed to handle usage updated event. Errors: ${result.errors}`, {
80
+ errors: JSON.stringify(result.errors),
81
+ });
82
+ return;
83
+ }
84
+ const { usage: { customerId, featureId, resourceId, currentUsage, nextResetDate }, } = result.data.usageUpdated;
85
+ this.loggerService.debug(`Usage updated event arrived.`, {
86
+ customerId: customerId,
87
+ featureId: featureId,
88
+ resourceId: resourceId,
89
+ currentUsage: currentUsage,
90
+ nextResetDate: nextResetDate,
91
+ });
92
+ const wasSet = this.cacheService.updateFeatureUsage({
93
+ timestamp: new Date(),
94
+ customerId,
95
+ resourceId: resourceId || undefined,
96
+ featureId,
97
+ currentUsage,
98
+ nextResetDate: nextResetDate || undefined,
99
+ });
100
+ if (wasSet) {
101
+ this.eventEmitter.emit('usageUpdated', result.data.usageUpdated);
102
+ }
103
+ }
112
104
  isErrorRecoverable(err) {
113
105
  const isInvalidAPIKeyError = err.reason === 'Invalid API key';
114
106
  return !isInvalidAPIKeyError;
@@ -116,6 +108,50 @@ class InMemoryEntitlementsService extends entitlementsService_1.EntitlementsServ
116
108
  clearCache() {
117
109
  return this.cacheService.clearCache();
118
110
  }
111
+ onPackagePublished(result) {
112
+ var _a, _b;
113
+ if (result.errors || !result.data) {
114
+ this.loggerService.error(`Failed to handle package published event. Errors: ${result.errors}`, {
115
+ errors: JSON.stringify(result.errors),
116
+ });
117
+ return;
118
+ }
119
+ this.loggerService.debug(`Package published event arrived.`, {
120
+ data: (_a = result.data) === null || _a === void 0 ? void 0 : _a.packagePublished,
121
+ });
122
+ if (((_b = result.data) === null || _b === void 0 ? void 0 : _b.packagePublished.migrationType) === sdk_1.PublishMigrationType.AllCustomers) {
123
+ this.loggerService.log('Clearing cache due to package published event');
124
+ this.clearCache();
125
+ }
126
+ this.eventEmitter.emit('packagePublished', result.data.packagePublished);
127
+ }
128
+ async getCustomerEntitlementsWithUsage(customerRefId, resourceId) {
129
+ const loadFromCache = () => this.cacheService.getCustomerEntitlements(customerRefId, resourceId);
130
+ let { entitlements, customerExists } = loadFromCache();
131
+ if (!customerExists || !this.isInitialized) {
132
+ ({ entitlements, customerExists } = await this.refetchEntitlementsAfterCacheMiss({
133
+ customerId: customerRefId,
134
+ resourceId,
135
+ triggeredBy: 'getCustomerEntitlementsWithUsage',
136
+ loadFromCache,
137
+ transformApiResult: (x) => x,
138
+ }));
139
+ }
140
+ if (!entitlements) {
141
+ return [];
142
+ }
143
+ return Array.from(entitlements.values()).map((value) => {
144
+ const decision = entitlementDecisionService_1.EntitlementDecisionService.decideEntitlementPolicy(customerExists, value);
145
+ return this.modelMapper.mapEntitlement(value, decision);
146
+ });
147
+ }
148
+ async refetchEntitlementsAfterCacheMiss(props) {
149
+ const response = await this.refetchEntitlements(props);
150
+ return props.transformApiResult(response);
151
+ }
119
152
  }
153
+ __decorate([
154
+ (0, ReuseOngoingExecution_1.ReuseOngoingExecution)(({ customerId, resourceId }) => (0, lodash_1.compact)([customerId, resourceId]).join(':'))
155
+ ], InMemoryEntitlementsService.prototype, "refetchEntitlementsAfterCacheMiss", null);
120
156
  exports.InMemoryEntitlementsService = InMemoryEntitlementsService;
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5NZW1vcnlFbnRpdGxlbWVudHNTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2luTWVtb3J5RW50aXRsZW1lbnRzU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxnRUFLZ0Q7QUFHaEQsK0RBQTREO0FBSzVELE1BQU0sOEJBQThCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUVoRCxNQUFhLDJCQUE0QixTQUFRLHlDQUFtQjtJQUtsRSxZQUNxQixZQUFrQyxFQUNyRCxNQUEyQyxFQUMzQyxvQkFBeUQsRUFDeEMsWUFBK0IsRUFDaEQsYUFBNEIsRUFDNUIsYUFBbUM7UUFFbkMsS0FBSyxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBUDdELGlCQUFZLEdBQVosWUFBWSxDQUFzQjtRQUdwQyxpQkFBWSxHQUFaLFlBQVksQ0FBbUI7UUFSMUMsNkJBQXdCLEdBQWtDLElBQUksQ0FBQztRQUMvRCxzQkFBaUIsR0FBa0MsSUFBSSxDQUFDO1FBQ3hELHFCQUFnQixHQUFrQyxJQUFJLENBQUM7UUFnRXZELDBCQUFxQixHQUFHLENBQUMsTUFBc0QsRUFBRSxFQUFFO1lBQ3pGLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7Z0JBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLHdEQUF3RCxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQ2hHLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7aUJBQ3RDLENBQUMsQ0FBQztnQkFDSCxPQUFPO2FBQ1I7WUFFRCxNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFFNUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMscUNB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
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5NZW1vcnlFbnRpdGxlbWVudHNTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2luTWVtb3J5RW50aXRsZW1lbnRzU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQSxnRUFLZ0Q7QUFHaEQsK0RBQW9HO0FBSXBHLDZFQUEwRTtBQUMxRSxxRkFBa0Y7QUFDbEYsbUNBQWlDO0FBRWpDLE1BQU0sOEJBQThCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUVoRCxNQUFhLDJCQUE0QixTQUFRLHlDQUFtQjtJQUtsRSxZQUNxQixZQUFrQyxFQUNyRCxNQUEyQyxFQUMzQyxvQkFBeUQsRUFDeEMsWUFBK0IsRUFDaEQsYUFBNEIsRUFDNUIsYUFBbUM7UUFFbkMsS0FBSyxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBUDdELGlCQUFZLEdBQVosWUFBWSxDQUFzQjtRQUdwQyxpQkFBWSxHQUFaLFlBQVksQ0FBbUI7UUFSMUMsNkJBQXdCLEdBQWtDLElBQUksQ0FBQztRQUMvRCxzQkFBaUIsR0FBa0MsSUFBSSxDQUFDO1FBQ3hELHFCQUFnQixHQUFrQyxJQUFJLENBQUM7SUFXL0QsQ0FBQztJQUVRLElBQUk7UUFDWCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBRTNELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVmLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLDRCQUE0QixFQUFFLENBQUMsU0FBUyxDQUMzRixDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxFQUM1QyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUMx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
@@ -1,17 +1,21 @@
1
- import { EntitlementsService } from './entitlementsService';
1
+ import { EntitlementsService, RefetchEntitlementsAfterCacheMissProps } from './entitlementsService';
2
2
  import { ApolloClient, NormalizedCacheObject } from '@apollo/client/core';
3
3
  import { LoggerService } from './loggerService';
4
4
  import { RedisCacheService } from './cache/redisCacheService';
5
- import { MeteredEntitlement, MeteredEntitlementOptions } from '../models';
6
5
  import { EdgeApiClient } from './EdgeApiClient';
6
+ import CachedEntitlement from './cache/cachedEntitlement';
7
7
  export declare class RedisEntitlementsService extends EntitlementsService {
8
8
  protected readonly cacheService: RedisCacheService;
9
9
  protected readonly graphqlClient: ApolloClient<NormalizedCacheObject>;
10
10
  protected readonly loggerService: LoggerService;
11
11
  protected readonly batchedGraphClient: ApolloClient<NormalizedCacheObject>;
12
12
  constructor(cacheService: RedisCacheService, graphqlClient: ApolloClient<NormalizedCacheObject>, loggerService: LoggerService, batchedGraphClient: ApolloClient<NormalizedCacheObject>, edgeApiClient: EdgeApiClient | null);
13
- getMeteredEntitlement(customerRefId: string, featureRefId: string, fallbackEntitlement: MeteredEntitlement, resourceId?: string, options?: MeteredEntitlementOptions): Promise<MeteredEntitlement>;
14
- getCustomerEntitlementsWithUsage(customerRefId: string, resourceId: string | undefined): Promise<import("../models").Entitlement[]>;
13
+ protected tryGetCacheCustomerAndEntitlement(featureRefId: string, customerRefId: string, resourceId?: string): Promise<{
14
+ customerExists: boolean;
15
+ entitlement: CachedEntitlement | null;
16
+ }>;
17
+ getCustomerEntitlementsWithUsage(customerRefId: string, resourceId: string | undefined): Promise<import("..").Entitlement[]>;
18
+ protected refetchEntitlementsAfterCacheMiss<T>({ loadFromCache, transformApiResult, ...restProps }: RefetchEntitlementsAfterCacheMissProps<T>): Promise<T>;
15
19
  clearCache(): Promise<void>;
16
20
  init(): void | Promise<void>;
17
21
  cleanup(): void | Promise<void>;
@@ -1,10 +1,29 @@
1
1
  "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __rest = (this && this.__rest) || function (s, e) {
9
+ var t = {};
10
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
11
+ t[p] = s[p];
12
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
13
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
14
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
15
+ t[p[i]] = s[p[i]];
16
+ }
17
+ return t;
18
+ };
2
19
  Object.defineProperty(exports, "__esModule", { value: true });
3
20
  exports.RedisEntitlementsService = void 0;
4
21
  const entitlementsService_1 = require("./entitlementsService");
5
- const models_1 = require("../models");
6
22
  const entitlementDecisionService_1 = require("./entitlementDecisionService");
23
+ const ReuseOngoingExecution_1 = require("../utils/decorators/ReuseOngoingExecution");
7
24
  const lodash_1 = require("lodash");
25
+ const isMetered_1 = require("../utils/isMetered");
26
+ const identityFn = (x) => x;
8
27
  class RedisEntitlementsService extends entitlementsService_1.EntitlementsService {
9
28
  constructor(cacheService, graphqlClient, loggerService, batchedGraphClient, edgeApiClient) {
10
29
  super(graphqlClient, loggerService, batchedGraphClient, edgeApiClient, cacheService);
@@ -14,66 +33,62 @@ class RedisEntitlementsService extends entitlementsService_1.EntitlementsService
14
33
  this.batchedGraphClient = batchedGraphClient;
15
34
  this.isInitialized = true; // redis is always considered as initialized
16
35
  }
17
- async getMeteredEntitlement(customerRefId, featureRefId, fallbackEntitlement, resourceId, options) {
18
- var _a, _b, _c;
19
- const shouldTrack = (options === null || options === void 0 ? void 0 : options.shouldTrack) || false;
20
- const requestUsage = options === null || options === void 0 ? void 0 : options.requestedUsage;
21
- let { entitlement, customerExists } = await this.tryGetCacheCustomerAndEntitlement(featureRefId, customerRefId, resourceId);
22
- if (!(0, lodash_1.isEmpty)(entitlement)) {
36
+ async tryGetCacheCustomerAndEntitlement(featureRefId, customerRefId, resourceId) {
37
+ const result = await super.tryGetCacheCustomerAndEntitlement(featureRefId, customerRefId, resourceId);
38
+ const { customerExists } = result;
39
+ let { entitlement } = result;
40
+ if ((0, isMetered_1.isMetered)(entitlement === null || entitlement === void 0 ? void 0 : entitlement.calculatedEntitlement.feature)) {
23
41
  const featureUsageData = await this.cacheService.getFeatureUsage(customerRefId, featureRefId, resourceId);
24
42
  if (featureUsageData === null) {
25
- this.loggerService.error('Failed to find metered feature usage - going to refetch entitlements', {
43
+ this.loggerService.error('Failed to find metered feature usage - considering it as cache miss', {
26
44
  customerRefId,
27
45
  featureRefId,
28
46
  });
29
- entitlement = null;
30
- }
31
- else {
32
- const cachedFeatureUsage = JSON.parse(featureUsageData);
33
- const { calculatedEntitlement, featureUsage } = entitlement;
34
- entitlement = { calculatedEntitlement, featureUsage: Object.assign(Object.assign({}, featureUsage), cachedFeatureUsage) };
47
+ return { customerExists: false, entitlement: null };
35
48
  }
49
+ const cachedFeatureUsage = JSON.parse(featureUsageData);
50
+ const { calculatedEntitlement, featureUsage } = entitlement;
51
+ entitlement = { calculatedEntitlement, featureUsage: Object.assign(Object.assign({}, featureUsage), cachedFeatureUsage) };
36
52
  }
37
- if (!entitlement) {
38
- const refetchResult = await this.refetchEntitlements(customerRefId, resourceId, false, 'getMeteredEntitlement');
39
- entitlement = ((_a = refetchResult.entitlements) === null || _a === void 0 ? void 0 : _a.get(featureRefId)) || null;
40
- customerExists = refetchResult.customerExists;
41
- }
42
- const decision = entitlementDecisionService_1.EntitlementDecisionService.decideEntitlementPolicy(customerExists, entitlement, requestUsage);
43
- if ((entitlement === null || entitlement === void 0 ? void 0 : entitlement.calculatedEntitlement.feature) &&
44
- ((_b = entitlement.calculatedEntitlement.feature) === null || _b === void 0 ? void 0 : _b.meterType) !== models_1.MeterType.Fluctuating &&
45
- ((_c = entitlement.calculatedEntitlement.feature) === null || _c === void 0 ? void 0 : _c.meterType) !== models_1.MeterType.Incremental) {
46
- const entitlementResult = this.modelMapper.mapFallbackMeteredEntitlementResult(fallbackEntitlement, decision, requestUsage);
47
- this.tryTrackEntitlementCheck(shouldTrack, featureRefId, customerRefId, resourceId, entitlementResult, requestUsage);
48
- return fallbackEntitlement;
49
- }
50
- if (!entitlement) {
51
- this.loggerService.log(`Customer Id or resource Id cannot be found on API response`, {
53
+ return { customerExists, entitlement };
54
+ }
55
+ async getCustomerEntitlementsWithUsage(customerRefId, resourceId) {
56
+ const loadFromCache = () => this.cacheService.getCustomerEntitlementsWithUsage(customerRefId, resourceId);
57
+ let { entitlements, customerExists } = await loadFromCache();
58
+ if (!customerExists) {
59
+ ({ entitlements, customerExists } = await this.refetchEntitlementsAfterCacheMiss({
52
60
  customerId: customerRefId,
53
61
  resourceId,
54
- });
55
- const entitlementResult = this.modelMapper.mapEntitlementResult(decision, undefined, requestUsage);
56
- this.tryTrackEntitlementCheck(shouldTrack, featureRefId, customerRefId, resourceId, entitlementResult);
57
- return Object.assign(Object.assign({}, decision), { currentUsage: 0, isFallback: false, isUnlimited: false, hasSoftLimit: false, requestedUsage: requestUsage || 0 });
62
+ triggeredBy: 'getCustomerEntitlementsWithUsage',
63
+ loadFromCache,
64
+ transformApiResult: identityFn,
65
+ }));
58
66
  }
59
- const entitlementResult = this.modelMapper.mapEntitlementResult(decision, entitlement, requestUsage);
60
- this.tryTrackEntitlementCheck(shouldTrack, featureRefId, customerRefId, resourceId, entitlementResult, requestUsage);
61
- return this.modelMapper.mapMeteredEntitlement(entitlement, decision, requestUsage);
62
- }
63
- async getCustomerEntitlementsWithUsage(customerRefId, resourceId) {
64
- let cachedEntitlements = await this.cacheService.getCustomerEntitlementsWithUsage(customerRefId, resourceId);
65
- if (cachedEntitlements === null) {
66
- await this.refetchEntitlements(customerRefId, resourceId, false, 'getCustomerEntitlementsWithUsage');
67
- cachedEntitlements = await this.cacheService.getCustomerEntitlementsWithUsage(customerRefId, resourceId);
68
- if (cachedEntitlements === null) {
69
- return [];
70
- }
67
+ if (!entitlements) {
68
+ return [];
71
69
  }
72
- return Array.from(cachedEntitlements.values()).map((entitlement) => {
73
- const decision = entitlementDecisionService_1.EntitlementDecisionService.decideEntitlementPolicy(true, entitlement);
70
+ return Array.from(entitlements.values()).map((entitlement) => {
71
+ const decision = entitlementDecisionService_1.EntitlementDecisionService.decideEntitlementPolicy(customerExists, entitlement);
74
72
  return this.modelMapper.mapEntitlement(entitlement, decision);
75
73
  });
76
74
  }
75
+ async refetchEntitlementsAfterCacheMiss(_a) {
76
+ var { loadFromCache, transformApiResult } = _a, restProps = __rest(_a, ["loadFromCache", "transformApiResult"]);
77
+ const { customerId, resourceId } = restProps;
78
+ const { distributedRefetchEntitlementsService } = this.cacheService;
79
+ const reloadFromApi = () => this.refetchEntitlements(restProps);
80
+ if (!distributedRefetchEntitlementsService) {
81
+ const response = await reloadFromApi();
82
+ return transformApiResult(response);
83
+ }
84
+ return distributedRefetchEntitlementsService.executeOnceAcrossMultipleProcesses({
85
+ customerId,
86
+ resourceId,
87
+ reloadFromApi,
88
+ transformApiResult,
89
+ loadFromCache,
90
+ });
91
+ }
77
92
  clearCache() {
78
93
  // Clearing persisted cache is not supported
79
94
  return Promise.resolve();
@@ -83,9 +98,11 @@ class RedisEntitlementsService extends entitlementsService_1.EntitlementsService
83
98
  return;
84
99
  }
85
100
  cleanup() {
86
- // Real time updated via sdk is not supported with persisted cache
87
- return;
101
+ return this.cacheService.cleanup();
88
102
  }
89
103
  }
104
+ __decorate([
105
+ (0, ReuseOngoingExecution_1.ReuseOngoingExecution)(({ customerId, resourceId }) => (0, lodash_1.compact)([customerId, resourceId]).join(':'))
106
+ ], RedisEntitlementsService.prototype, "refetchEntitlementsAfterCacheMiss", null);
90
107
  exports.RedisEntitlementsService = RedisEntitlementsService;
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkaXNFbnRpdGxlbWVudHNTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3JlZGlzRW50aXRsZW1lbnRzU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrREFBNEQ7QUFJNUQsc0NBQXFGO0FBQ3JGLDZFQUEwRTtBQUMxRSxtQ0FBaUM7QUFHakMsTUFBYSx3QkFBeUIsU0FBUSx5Q0FBbUI7SUFDL0QsWUFDcUIsWUFBK0IsRUFDL0IsYUFBa0QsRUFDbEQsYUFBNEIsRUFDNUIsa0JBQXVELEVBQzFFLGFBQW1DO1FBRW5DLEtBQUssQ0FBQyxhQUFhLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQztRQU5sRSxpQkFBWSxHQUFaLFlBQVksQ0FBbUI7UUFDL0Isa0JBQWEsR0FBYixhQUFhLENBQXFDO1FBQ2xELGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBcUM7UUFJMUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsQ0FBQyw0Q0FBNEM7SUFDekUsQ0FBQztJQUVELEtBQUssQ0FBQyxxQkFBcUIsQ0FDekIsYUFBcUIsRUFDckIsWUFBb0IsRUFDcEIsbUJBQXVDLEVBQ3ZDLFVBQW1CLEVBQ25CLE9BQW1DOztRQUVuQyxNQUFNLFdBQVcsR0FBRyxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxXQUFXLEtBQUksS0FBSyxDQUFDO1FBQ2xELE1BQU0sWUFBWSxHQUFHLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxjQUFjLENBQUM7UUFDN0MsSUFBSSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxpQ0FBaUMsQ0FDaEYsWUFBWSxFQUNaLGFBQWEsRUFDYixVQUFVLENBQ1gsQ0FBQztRQUVGLElBQUksQ0FBQyxJQUFBLGdCQUFP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
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkaXNFbnRpdGxlbWVudHNTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3JlZGlzRW50aXRsZW1lbnRzU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtEQUFvRztBQUlwRyw2RUFBMEU7QUFHMUUscUZBQWtGO0FBQ2xGLG1DQUFpQztBQUNqQyxrREFBK0M7QUFFL0MsTUFBTSxVQUFVLEdBQUcsQ0FBSSxDQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUVsQyxNQUFhLHdCQUF5QixTQUFRLHlDQUFtQjtJQUMvRCxZQUNxQixZQUErQixFQUMvQixhQUFrRCxFQUNsRCxhQUE0QixFQUM1QixrQkFBdUQsRUFDMUUsYUFBbUM7UUFFbkMsS0FBSyxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBTmxFLGlCQUFZLEdBQVosWUFBWSxDQUFtQjtRQUMvQixrQkFBYSxHQUFiLGFBQWEsQ0FBcUM7UUFDbEQsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFxQztRQUkxRSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxDQUFDLDRDQUE0QztJQUN6RSxDQUFDO0lBRWtCLEtBQUssQ0FBQyxpQ0FBaUMsQ0FDeEQsWUFBb0IsRUFDcEIsYUFBcUIsRUFDckIsVUFBbUI7UUFFbkIsTUFBTSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsaUNBQWlDLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUV0RyxNQUFNLEVBQUUsY0FBYyxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBQ2xDLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFFN0IsSUFBSSxJQUFBLHFCQUFTLEVBQUMsV0FBVyxhQUFYLFdBQVcs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
@@ -0,0 +1 @@
1
+ export declare type OptionalPromise<T> = T | Promise<T>;
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -4,6 +4,7 @@ exports.ModelMapper = void 0;
4
4
  const sdk_1 = require("@stigg/api-client-js/src/generated/sdk");
5
5
  const models_1 = require("../models");
6
6
  const lodash_1 = require("lodash");
7
+ const isMetered_1 = require("./isMetered");
7
8
  class ModelMapper {
8
9
  constructor() {
9
10
  this.mapSlimCustomer = (customer) => {
@@ -302,7 +303,7 @@ class ModelMapper {
302
303
  units: feature.featureUnits || undefined,
303
304
  unitsPlural: feature.featureUnitsPlural || undefined,
304
305
  displayName: feature.displayName,
305
- isMetered: feature.meterType === sdk_1.MeterType.Fluctuating || feature.meterType === sdk_1.MeterType.Incremental,
306
+ isMetered: (0, isMetered_1.isMetered)(feature),
306
307
  metadata: feature.additionalMetaData,
307
308
  },
308
309
  hasUnlimitedUsage: entitlement.hasUnlimitedUsage,
@@ -411,7 +412,7 @@ class ModelMapper {
411
412
  meterType: feature.meterType || undefined,
412
413
  units: feature.featureUnits || undefined,
413
414
  unitsPlural: feature.featureUnitsPlural || undefined,
414
- isMetered: feature.meterType === sdk_1.MeterType.Fluctuating || feature.meterType === sdk_1.MeterType.Incremental,
415
+ isMetered: (0, isMetered_1.isMetered)(feature),
415
416
  metadata: feature.additionalMetaData,
416
417
  },
417
418
  hasUnlimitedUsage: entitlement.hasUnlimitedUsage,
@@ -578,4 +579,4 @@ class ModelMapper {
578
579
  }
579
580
  }
580
581
  exports.ModelMapper = ModelMapper;
581
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxNYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvTW9kZWxNYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0VBbUNnRDtBQUNoRCxzQ0FxQ21CO0FBR25CLG1DQUF5QztBQUV6QyxNQUFNLFdBQVc7SUFBakI7UUF5SUUsb0JBQWUsR0FBRyxDQUFDLFFBQThCLEVBQWdCLEVBQUU7WUFDakUsT0FBTztnQkFDTCxFQUFFLEVBQUUsUUFBUSxDQUFDLEtBQUs7Z0JBQ2xCLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxJQUFJLFNBQVM7Z0JBQ2hDLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSyxJQUFJLFNBQVM7Z0JBQ2xDLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUyxJQUFJLFNBQVM7Z0JBQzFDLFNBQVMsRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO2dCQUN2QyxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztnQkFDdkMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxrQkFBa0I7Z0JBQ3JDLHdCQUF3QixFQUFFLFFBQVEsQ0FBQyx3QkFBd0I7YUFDNUQsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUVGLDJCQUFzQixHQUFHLENBQUMsd0JBQW1ELEVBQXVCLEVBQUU7WUFDcEcsTUFBTSxRQUFRLEdBQWlCLElBQUksQ0FBQyxlQUFlLENBQUMsd0JBQXdCLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFekcsTUFBTSxZQUFZLEdBQTZCLHdCQUF3QixDQUFDLGlCQUFpQixDQUFDLFlBQVk7Z0JBQ3BHLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsd0JBQXdCLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDO2dCQUNuRixDQUFDLENBQUMsU0FBUyxDQUFDO1lBRWQsT0FBTztnQkFDTCxRQUFRO2dCQUNSLDRCQUE0QixFQUFFLHdCQUF3QixDQUFDLGlCQUFpQixDQUFDLDRCQUE0QjtnQkFDckcsWUFBWTthQUNiLENBQUM7UUFDSixDQUFDLENBQUM7UUFFRixxQ0FBZ0MsR0FBRyxDQUNqQyxrQ0FBaUUsRUFDcEMsRUFBRTtZQUMvQixNQUFNLEVBQ0oscUJBQXFCLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUM3RCxHQUFHLGtDQUFrQyxDQUFDO1lBRXZDLE9BQU87Z0JBQ0wsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUMvRSxXQUFXLEVBQUUsV0FBVztnQkFDeEIsZUFBZSxFQUFFLE1BQU07YUFDeEIsQ0FBQztRQUNKLENBQUMsQ0FBQztRQVVGLHdCQUFtQixHQUFHLENBQUMsZ0JBQTBDLEVBQWdCLEVBQUU7O1lBQ2pGLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO1lBQ2xELE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQztZQUN4QyxPQUFPO2dCQUNMLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLO2dCQUMxQixRQUFRLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO2dCQUN4RixNQUFNLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUs7Z0JBQ25DLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNO2dCQUMvQixNQUFNLEVBQUUsQ0FBQSxNQUFBLGdCQUFnQixDQUFDLE1BQU0sMENBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxLQUFJLEVBQUU7Z0JBQ2pILFFBQVEsRUFBRSxDQUFBLE1BQUEsZ0JBQWdCLENBQUMsTUFBTSwwQ0FBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUksRUFBRTtnQkFDeEUsVUFBVSxFQUFFLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxLQUFLO2dCQUMzQyxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsa0JBQWtCO2dCQUM3QyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsU0FBUyxJQUFJLFNBQVM7Z0JBQ2xELGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQyxjQUFjLElBQUksU0FBUztnQkFDNUQsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUM7Z0JBQ3BFLGlCQUFpQixFQUFFLGdCQUFnQixDQUFDLGlCQUFpQjtnQkFDckQsTUFBTSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDcEQsVUFBVTtnQkFDVixLQUFLLEVBQ0gsU0FBUyxJQUFJLFVBQVUsSUFBSSxTQUFTLENBQUMsS0FBSztvQkFDeEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLFVBQVUsQ0FBQztvQkFDdkUsQ0FBQyxDQUFDLElBQUk7Z0JBQ1YsV0FBVyxFQUFFLGdCQUFnQixDQUFDLFdBQVc7Z0JBQ3pDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ2pFLGNBQWMsRUFBRSxJQUFBLGFBQUksRUFBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDO2dCQUNuRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxnQkFBZ0IsSUFBSSxTQUFTO2FBQ2pFLENBQUM7UUFDSixDQUFDLENBQUM7UUFFRixnQ0FBMkIsR0FBRyxDQUM1Qiw2QkFBd0QsRUFDeEQsVUFBa0IsRUFDUSxFQUFFO1lBQzVCLE1BQU0sRUFDSixpQkFBaUIsRUFBRSxFQUFFLFlBQVksRUFBRSxHQUNwQyxHQUFHLDZCQUE2QixDQUFDO1lBRWxDLE9BQU87Z0JBQ0wsWUFBWSxFQUFFLFlBQVk7b0JBQ3hCLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLGlDQUFNLFlBQVksS0FBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBRztvQkFDeEYsQ0FBQyxDQUFDLFNBQVM7YUFDZCxDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBRUYsb0JBQWUsR0FBRyxDQUFDLFFBQTJDLEVBQWdCLEVBQUU7O1lBQzlFLE9BQU8sSUFBSSxzQkFBYSxpQ0FDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsS0FDakMsaUJBQWlCLEVBQ2YsQ0FBQSxNQUFBLFFBQVEsQ0FBQyxZQUFZLDBDQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUMvQixPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFVLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxZQUFhLEVBQUUsQ0FBQztnQkFDOUQsQ0FBQyxDQUFDLEtBQUksRUFBRSxFQUNWLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxnQkFBZ0IsRUFDM0Msb0JBQW9CLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxFQUN0RCxhQUFhLEVBQUUsSUFBQSxZQUFHLEVBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzlFLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUNyRSx1QkFBdUIsRUFBRSxJQUFBLFlBQUcsRUFBQyxRQUFRLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUN4RyxjQUFjLEVBQUUsSUFBQSxhQUFJLEVBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsSUFDM0QsQ0FBQztRQUNMLENBQUMsQ0FBQztJQTBlSixDQUFDO0lBN3RCQyxjQUFjLENBQUMsV0FBOEIsRUFBRSxRQUFrQixFQUFFLGNBQXVCO1FBQ3hGLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxHQUFHLFdBQVcsQ0FBQztRQUM5QyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxFQUFFO1lBQ2xDLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUMxRDtRQUNELE1BQU0sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcscUJBQXFCLENBQUMsT0FBTyxDQUFDO1FBQ2pFLE1BQU0sU0FBUyxHQUNiLFdBQVcsS0FBSyxpQkFBVyxDQUFDLE1BQU07WUFDbEMsQ0FBQyxTQUFTLEtBQUssZUFBUyxDQUFDLFdBQVcsSUFBSSxTQUFTLEtBQUssZUFBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRS9FLFFBQVEsV0FBVyxFQUFFO1lBQ25CLEtBQUssaUJBQVcsQ0FBQyxPQUFPO2dCQUN0QixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDM0QsS0FBSyxpQkFBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN2QixPQUFPLFNBQVM7b0JBQ2QsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLGNBQWMsQ0FBQztvQkFDbkUsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDdkQ7U0FDRjtJQUNILENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxXQUE4QixFQUFFLFFBQWtCO1FBQ3RFLE9BQU87WUFDTCxVQUFVLEVBQUUsS0FBSztZQUNqQixTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVM7WUFDN0Isa0JBQWtCLEVBQUUsUUFBUSxDQUFDLGtCQUFrQjtZQUMvQyxPQUFPLEVBQUUsV0FBVyxDQUFDLHFCQUFxQixDQUFDLE9BQU87Z0JBQ2hELENBQUMsaUNBQ00sV0FBVyxDQUFDLHFCQUFxQixDQUFDLE9BQU8sS0FDNUMsU0FBUyxFQUFFLEtBQUssSUFFcEIsQ0FBQyxDQUFDLFNBQVM7U0FDZCxDQUFDO0lBQ0osQ0FBQztJQUVELHFCQUFxQixDQUFDLFdBQThCLEVBQUUsUUFBa0I7UUFDdEUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxHQUFHLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQztRQUM1RSxPQUFPO1lBQ0wsVUFBVSxFQUFFLEtBQUs7WUFDakIsU0FBUyxFQUFFLFFBQVEsQ0FBQyxTQUFTO1lBQzdCLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxrQkFBa0I7WUFDL0MsV0FBVyxFQUFFLGlCQUFpQjtZQUM5QixLQUFLLEVBQUUsVUFBVSxhQUFWLFVBQVUsY0FBVixVQUFVLEdBQUksU0FBUztZQUM5QixPQUFPLEVBQUUsV0FBVyxDQUFDLHFCQUFxQixDQUFDLE9BQU87Z0JBQ2hELENBQUMsaUNBQ00sV0FBVyxDQUFDLHFCQUFxQixDQUFDLE9BQU8sS0FDNUMsU0FBUyxFQUFFLEtBQUssSUFFcEIsQ0FBQyxDQUFDLFNBQVM7U0FDZCxDQUFDO0lBQ0osQ0FBQztJQUVELHFCQUFxQixDQUNuQixXQUE4QixFQUM5QixRQUFrQixFQUNsQixjQUF1QjtRQUV2QixNQUFNLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxHQUFHLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQztRQUMxRixNQUFNLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDO1FBRTlFLE9BQU87WUFDTCxVQUFVLEVBQUUsS0FBSztZQUNqQixTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVM7WUFDN0Isa0JBQWtCLEVBQUUsUUFBUSxDQUFDLGtCQUFrQjtZQUMvQyxXQUFXLEVBQUUsaUJBQWlCO1lBQzlCLFlBQVksRUFBRSxDQUFDLENBQUMsWUFBWTtZQUM1QixVQUFVLEVBQUUsVUFBVSxhQUFWLFVBQVUsY0FBVixVQUFVLEdBQUksU0FBUztZQUNuQyxZQUFZLEVBQUUsWUFBWTtZQUMxQixjQUFjLEVBQUUsY0FBYyxJQUFJLENBQUM7WUFDbkMsV0FBVyxFQUFFLFdBQVcsYUFBWCxXQUFXLGNBQVgsV0FBVyxHQUFJLFNBQVM7WUFDckMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDbEUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPO2dCQUNoRCxDQUFDLGlDQUNNLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLEtBQzVDLFNBQVMsRUFBRSxXQUFXLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxTQUFTLEVBQzNFLFNBQVMsRUFBRSxJQUFJLElBRW5CLENBQUMsQ0FBQyxTQUFTO1NBQ2QsQ0FBQztJQUNKLENBQUM7SUFFRCxtQ0FBbUMsQ0FDakMsV0FBdUMsRUFDdkMsUUFBa0I7UUFFbEIsT0FBTztZQUNMLFNBQVMsRUFBRSxXQUFXLENBQUMsU0FBUztZQUNoQyxrQkFBa0IsRUFBRSxRQUFRLENBQUMsa0JBQWtCO1NBQ2hELENBQUM7SUFDSixDQUFDO0lBRUQsbUNBQW1DLENBQ2pDLFdBQXVDLEVBQ3ZDLFFBQWtCO1FBRWxCLE9BQU87WUFDTCxTQUFTLEVBQUUsV0FBVyxDQUFDLFNBQVM7WUFDaEMsa0JBQWtCLEVBQUUsUUFBUSxDQUFDLGtCQUFrQjtZQUMvQyxVQUFVLEVBQUUsV0FBVyxDQUFDLEtBQUs7WUFDN0IsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLFdBQVc7U0FDM0MsQ0FBQztJQUNKLENBQUM7SUFFRCxvQkFBb0IsQ0FDbEIsUUFBa0IsRUFDbEIsV0FBK0IsRUFDL0IsY0FBdUI7UUFFdkIsT0FBTztZQUNMLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUztZQUM3QixrQkFBa0IsRUFBRSxRQUFRLENBQUMsa0JBQWtCO1lBQy9DLGlCQUFpQixFQUFFLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxxQkFBcUIsQ0FBQyxpQkFBaUI7WUFDdkUsVUFBVSxFQUFFLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxxQkFBcUIsQ0FBQyxVQUFVO1lBQ3pELFlBQVksRUFBRSxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsWUFBWSxDQUFDLFlBQVk7WUFDcEQsY0FBYztZQUNkLGFBQWEsRUFBRSxDQUFBLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxZQUFZLENBQUMsYUFBYTtnQkFDcEQsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUMsV0FBVyxFQUFFO2dCQUNqRSxDQUFDLENBQUMsU0FBUztZQUNiLFdBQVcsRUFBRSxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsWUFBWSxDQUFDLFdBQVc7U0FDbkQsQ0FBQztJQUNKLENBQUM7SUFFRCxtQ0FBbUMsQ0FDakMsV0FBdUMsRUFDdkMsUUFBa0IsRUFDbEIsY0FBdUI7UUFFdkIsT0FBTztZQUNMLFNBQVMsRUFBRSxXQUFXLENBQUMsU0FBUztZQUNoQyxrQkFBa0IsRUFBRSxRQUFRLENBQUMsa0JBQWtCO1lBQy9DLGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxXQUFXO1lBQzFDLFVBQVUsRUFBRSxXQUFXLENBQUMsVUFBVTtZQUNsQyxjQUFjO1NBQ2YsQ0FBQztJQUNKLENBQUM7SUEyQ0QscUJBQXFCLENBQUMsWUFBNkQ7UUFDakYsT0FBTyxZQUFZLENBQUMsTUFBTTtZQUN4QixDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU07aUJBQ2hCLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7aUJBQ2hDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNsRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ1QsQ0FBQztJQThERCxVQUFVLENBQUMsVUFBMkI7UUFDcEMsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRU8saUJBQWlCLENBQUMsUUFBMEI7UUFDbEQsTUFBTSxFQUFFLDRCQUE0QixFQUFFLDZCQUE2QixFQUFFLCtCQUErQixFQUFFLEdBQUcsUUFBUSxDQUFDO1FBQ2xILElBQ0UsSUFBQSxhQUFJLEVBQ0YsQ0FBQywrQkFBK0IsRUFBRSw2QkFBNkIsRUFBRSw0QkFBNEIsQ0FBQyxFQUM5RixDQUFDLENBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FDMUIsRUFDRDtZQUNBLE9BQU87Z0JBQ0wsZUFBZSxFQUFFLDZCQUE2QjtnQkFDOUMsY0FBYyxFQUFFLDRCQUE0QjtnQkFDNUMsV0FBVyxFQUFFLCtCQUErQjthQUM3QyxDQUFDO1NBQ0g7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU8sU0FBUyxDQUFDLE1BQXNCO1FBQ3RDLE9BQU87WUFDTCxFQUFFLEVBQUUsTUFBTSxDQUFDLEtBQUs7WUFDaEIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1lBQ2pCLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztZQUMvQixRQUFRLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtZQUNuQyxhQUFhLEVBQUUsTUFBTSxDQUFDLGFBQWE7U0FDcEMsQ0FBQztJQUNKLENBQUM7SUFFTyxRQUFRLENBQUMsT0FBc0IsRUFBRSxVQUEwQjtRQUNqRSxNQUFNLEVBQ0osT0FBTyxFQUNQLEtBQUssRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGFBQWEsRUFDYixlQUFlLEVBQ2YsZUFBZSxFQUNmLEtBQUssRUFDTCxTQUFTLEVBQ1Qsa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxTQUFTLEdBQ1YsR0FBRyxPQUFPLENBQUM7UUFDWixNQUFNLFdBQVcsR0FBVTtZQUN6QixZQUFZLEVBQUUsWUFBWTtZQUMxQixhQUFhO1lBQ2IsY0FBYztZQUNkLFNBQVM7WUFDVCxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQ25DLFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO1lBQ3hDLEtBQUs7WUFDTCxTQUFTO1lBQ1QsZUFBZTtZQUNmLGVBQWU7WUFDZixrQkFBa0I7WUFDbEIsU0FBUztTQUNWLENBQUM7UUFDRixJQUFJLE9BQU8sRUFBRTtZQUNYLFdBQVcsQ0FBQyxPQUFPLEdBQUc7Z0JBQ3BCLFNBQVMsRUFBRSxPQUFPLENBQUMsS0FBSztnQkFDeEIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO2dCQUNoQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7Z0JBQ2hDLEtBQUssRUFBRSxPQUFPLENBQUMsWUFBWTtnQkFDM0IsV0FBVyxFQUFFLE9BQU8sQ0FBQyxrQkFBa0I7Z0JBQ3ZDLFlBQVksRUFBRSxVQUFVO2FBQ3pCLENBQUM7U0FDSDtRQUVELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFTyxPQUFPLENBQUMsSUFBa0IsRUFBRSxLQUFLLEdBQUcsQ0FBQztRQUMzQyxPQUFPO1lBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2QsS0FBSztZQUNMLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUN6RyxZQUFZLEVBQUUsSUFBQSxZQUFHLEVBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzlGLHFCQUFxQixFQUFFLElBQUEsWUFBRyxFQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2hILFdBQVcsRUFBRSxJQUFBLFlBQUcsRUFBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlELFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQzNDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7WUFDaEQsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQztZQUM5RCxPQUFPLEVBQUU7Z0JBQ1AsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSztnQkFDdEIsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVztnQkFDckMsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVztnQkFDckMsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCO2dCQUN6QyxhQUFhLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsYUFBYTtvQkFDdkQsQ0FBQyxDQUFDO3dCQUNFLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsS0FBSzt3QkFDcEQsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxXQUFXO3FCQUNwRTtvQkFDSCxDQUFDLENBQUMsU0FBUzthQUNkO1lBQ0QsUUFBUSxFQUFFLElBQUksQ0FBQyxrQkFBa0I7U0FDbEMsQ0FBQztJQUNKLENBQUM7SUFFTyxVQUFVLENBQUMsT0FBd0I7UUFDekMsT0FBTztZQUNMLEVBQUUsRUFBRSxPQUFPLENBQUMsS0FBSztZQUNqQixXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7WUFDaEMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1lBQ2hDLFFBQVEsRUFBRSxPQUFPLENBQUMsa0JBQWtCO1lBQ3BDLGFBQWEsRUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDLGFBQWE7Z0JBQ2xELENBQUMsQ0FBQztvQkFDRSxFQUFFLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsS0FBSztvQkFDL0MsV0FBVyxFQUFFLE9BQU8sQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFdBQVc7aUJBQy9EO2dCQUNILENBQUMsQ0FBQyxTQUFTO1NBQ2QsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXLENBQUMsVUFBNEI7UUFDdEMsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM3RyxDQUFDO0lBRU8sbUJBQW1CLENBQUMsSUFBNEQ7UUFDdEYsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLGlCQUFXLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ25FLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFFRCxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDbEMsTUFBTSx3QkFBd0IsR0FDNUIsSUFBSSxDQUFDLFdBQVcsS0FBSyxpQkFBVyxDQUFDLElBQUk7WUFDbkMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsS0FBSyxpQkFBVyxDQUFDLElBQUksQ0FBQztZQUM1RSxDQUFDLENBQUMsZ0JBQWdCLENBQUM7UUFDdkIsT0FBTyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRU8scUJBQXFCLENBQUMsV0FBdUM7UUFDbkUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLFdBQVcsQ0FBQztRQUNoQyxPQUFPO1lBQ0wsVUFBVSxFQUFFLFdBQVcsQ0FBQyxVQUFVLElBQUksQ0FBQztZQUN2QyxZQUFZLEVBQUUsV0FBVyxDQUFDLFlBQVk7WUFDdEMsT0FBTyxFQUFFO2dCQUNQLEVBQUUsRUFBRSxPQUFPLENBQUMsS0FBSztnQkFDakIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO2dCQUNoQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVcsSUFBSSxFQUFFO2dCQUN0QyxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsSUFBSSxTQUFTO2dCQUN6QyxLQUFLLEVBQUUsT0FBTyxDQUFDLFlBQVksSUFBSSxTQUFTO2dCQUN4QyxXQUFXLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixJQUFJLFNBQVM7Z0JBQ3BELFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVztnQkFDaEMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEtBQUssZUFBUyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsU0FBUyxLQUFLLGVBQVMsQ0FBQyxXQUFXO2dCQUNyRyxRQUFRLEVBQUUsT0FBTyxDQUFDLGtCQUFrQjthQUNyQztZQUNELGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxpQkFBaUI7WUFDaEQsV0FBVyxFQUFFLFdBQVcsQ0FBQyxXQUFXO1lBQ3BDLGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxpQkFBaUI7WUFDaEQsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLG1CQUFtQjtTQUNyRCxDQUFDO0lBQ0osQ0FBQztJQUVELG9CQUFvQixDQUFDLGFBQXFDO1FBQ3hELE9BQU8sYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVPLG1CQUFtQixDQUFDLFlBQWtDOztRQUM1RCxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsWUFBWSxDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUM5QyxPQUFPO1lBQ0wsRUFBRSxFQUFFLFlBQVksQ0FBQyxLQUFLO1lBQ3RCLFFBQVEsRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUNoRixNQUFNLEVBQUUsWUFBWSxDQUFDLE1BQU07WUFDM0IsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztZQUNyQyxLQUFLLEVBQ0gsU0FBUyxJQUFJLFVBQVUsSUFBSSxTQUFTLENBQUMsS0FBSztnQkFDeEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLFVBQVUsQ0FBQztnQkFDdkUsQ0FBQyxDQUFDLElBQUk7WUFDVixNQUFNLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQztZQUNoRCxVQUFVO1lBQ1YsV0FBVyxFQUFFLFlBQVksQ0FBQyxXQUFXO1lBQ3JDLE1BQU0sRUFDSixDQUFBLE1BQUEsWUFBWSxDQUFDLE1BQU0sMENBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2pELFFBQVEsRUFBRSxRQUFRO2dCQUNsQixLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7YUFDNUIsQ0FBQyxDQUFDLEtBQUksRUFBRTtZQUNYLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUU7WUFDaEQsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztZQUMzQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDO1lBQ3JELGdCQUFnQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDO1lBQzdELHVCQUF1QixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDO1lBQzNFLGdCQUFnQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDO1lBQzdELFFBQVEsRUFBRSxZQUFZLENBQUMsa0JBQWtCO1lBQ3pDLFNBQVMsRUFBRSxZQUFZLENBQUMsU0FBUyxJQUFJLFNBQVM7WUFDOUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxjQUFjLElBQUksU0FBUztZQUN4RCxjQUFjLEVBQUUsSUFBQSxhQUFJLEVBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUM7WUFDL0QsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDO1lBQ2hFLGlCQUFpQixFQUFFLFlBQVksQ0FBQyxpQkFBaUI7WUFDakQsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLGdCQUFnQixJQUFJLFNBQVM7WUFDNUQsYUFBYSxFQUFFLFlBQVksQ0FBQyxhQUFhO1NBQzFDLENBQUM7SUFDSixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsYUFBNkQ7UUFDcEYsT0FBTyxhQUFhO1lBQ2xCLENBQUMsQ0FBRSxnQ0FDSSxhQUFhLEtBQ2hCLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsRUFDaEQsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUNqQjtZQUNuQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2hCLENBQUM7SUFFTyxhQUFhLENBQ25CLE9BQXNCLEVBQ3RCLFVBQThCLEVBQzlCLFVBQTBCO1FBRTFCLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUNsRixNQUFNLFdBQVcsR0FBc0I7WUFDckMsWUFBWSxFQUFFLFlBQVk7WUFDMUIsYUFBYTtZQUNiLE1BQU0sRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU07WUFDL0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTTtZQUN2QyxRQUFRLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztZQUN4QyxTQUFTO1lBQ1QsS0FBSztTQUNOLENBQUM7UUFDRixJQUFJLE9BQU8sRUFBRTtZQUNYLFdBQVcsQ0FBQyxPQUFPLEdBQUc7Z0JBQ3BCLFNBQVMsRUFBRSxPQUFPLENBQUMsS0FBSztnQkFDeEIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO2dCQUNoQyxLQUFLLEVBQUUsT0FBTyxDQUFDLFlBQVk7Z0JBQzNCLFdBQVcsRUFBRSxPQUFPLENBQUMsa0JBQWtCO2dCQUN2QyxZQUFZLEVBQUUsVUFBVTthQUN6QixDQUFDO1NBQ0g7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRU8sa0JBQWtCLENBQUMsS0FBOEI7UUFDdkQsT0FBTztZQUNMLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztZQUNsQixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksU0FBUztTQUM1QyxDQUFDO0lBQ0osQ0FBQztJQUVPLFFBQVEsQ0FBQyxLQUFvQjs7UUFDbkMsT0FBTztZQUNMLEVBQUUsRUFBRSxLQUFLLENBQUMsS0FBSztZQUNmLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7WUFDMUIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksRUFBRTtZQUNwQyxZQUFZLEVBQUUsSUFBQSxZQUFHLEVBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNFLFdBQVcsRUFBRSxJQUFBLFlBQUcsRUFBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9ELFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixRQUFRLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtZQUNsQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxTQUFTO1lBQzNDLFlBQVksRUFBRSxDQUFBLE1BQUEsS0FBSyxDQUFDLFlBQVksMENBQUUsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSSxFQUFFO1NBQ2pHLENBQUM7SUFDSixDQUFDO0lBRU8seUJBQXlCLENBQUMsV0FBMkM7UUFDM0UsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLFdBQVcsQ0FBQztRQUNoQyxPQUFPO1lBQ0wsTUFBTSxFQUFFLFdBQVcsQ0FBQyxNQUFNO1lBQzFCLFVBQVUsRUFBRSxXQUFXLENBQUMsVUFBVSxJQUFJLENBQUM7WUFDdkMsT0FBTyxFQUFFO2dCQUNQLEVBQUUsRUFBRSxPQUFPLENBQUMsS0FBSztnQkFDakIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO2dCQUNoQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVcsSUFBSSxFQUFFO2dCQUN0QyxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7Z0JBQ2hDLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxJQUFJLFNBQVM7Z0JBQ3pDLEtBQUssRUFBRSxPQUFPLENBQUMsWUFBWSxJQUFJLFNBQVM7Z0JBQ3hDLFdBQVcsRUFBRSxPQUFPLENBQUMsa0JBQWtCLElBQUksU0FBUztnQkFDcEQsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEtBQUssZUFBUyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsU0FBUyxLQUFLLGVBQVMsQ0FBQyxXQUFXO2dCQUNyRyxRQUFRLEVBQUUsT0FBTyxDQUFDLGtCQUFrQjthQUNyQztZQUNELGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxpQkFBaUI7WUFDaEQsU0FBUyxFQUFFLFdBQVcsQ0FBQyxPQUFPO1lBQzlCLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTztZQUN4QyxTQUFTLEVBQUUsV0FBVyxDQUFDLFNBQVM7U0FDakMsQ0FBQztJQUNKLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUF5Qjs7UUFDekMsT0FBTztZQUNMLGFBQWEsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUN0QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLElBQUksU0FBUztZQUN4QyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsWUFBWSxFQUFFLE1BQUEsSUFBSSxDQUFDLFlBQVksbUNBQUksU0FBUztZQUM1QyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQzdFLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQWtDO1FBQzVDLE9BQU87WUFDTCxFQUFFLEVBQUUsUUFBUSxDQUFDLFVBQVU7U0FDeEIsQ0FBQztJQUNKLENBQUM7SUFFRCxVQUFVLENBQUMsVUFBMkI7UUFDcEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QyxNQUFNLGFBQWEsR0FBRyxVQUFVLGFBQVYsVUFBVSx1QkFBVixVQUFVLENBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUN4RCxNQUFNLFFBQVEsR0FBRyxDQUFBLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxPQUFPLENBQUMsUUFBUSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMxRyxNQUFNLFFBQVEsR0FBRyxDQUFBLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxPQUFPLENBQUMsUUFBUSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN0RyxNQUFNLG1CQUFtQixHQUFHLENBQUEsVUFBVSxhQUFWLFVBQVUsdUJBQVYsVUFBVSxDQUFFLE9BQU8sQ0FBQyxtQkFBbUI7WUFDakUsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLGFBQVYsVUFBVSx1QkFBVixVQUFVLENBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDO1lBQ3BFLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFVCxPQUFPO1lBQ0wsS0FBSyxFQUFFLFdBQVc7WUFDbEIsYUFBYTtZQUNiLFFBQVE7WUFDUixRQUFRO1lBQ1IsbUJBQW1CO1lBQ25CLFFBQVEsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLFFBQVE7U0FDdEMsQ0FBQztJQUNKLENBQUM7SUFFRCxRQUFRLENBQUMsVUFBMkI7O1FBQ2xDLE1BQU0sS0FBSyxHQUFHLENBQUEsTUFBQSxVQUFVLGFBQVYsVUFBVSx1QkFBVixVQUFVLENBQUUsT0FBTywwQ0FBRSxLQUFLLEtBQUksRUFBRSxDQUFDO1FBQy9DLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELFlBQVksQ0FDVixRQUcrQztRQUUvQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUU7WUFDekMsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUVELE9BQU87WUFDTCxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1lBQ2hDLFVBQVUsRUFBRTtnQkFDVixXQUFXLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxXQUFXO2dCQUM1QyxVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxVQUFVO2dCQUMxQyxTQUFTLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxTQUFTO2FBQ3pDO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxRQUFxQztRQUMxRCxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLFFBQVEsQ0FBQztRQUNqRSxtREFDRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQ3BDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEVBQzVELFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FDM0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FDL0Usa0JBQWtCLEVBQUU7Z0JBQ2xCLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUNoRixHQUFHLEVBQUUsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUzthQUMzRSxFQUNELFNBQVMsRUFBRSxTQUFTO2dCQUNsQixDQUFDLENBQUM7b0JBQ0UsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztvQkFDdkMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztvQkFDckMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztvQkFDN0MsYUFBYSxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUM7aUJBQ2pEO2dCQUNILENBQUMsQ0FBQyxTQUFTLEVBQ2IsWUFBWSxFQUFFLFlBQVk7Z0JBQ3hCLENBQUMsQ0FBQztvQkFDRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO29CQUN4QyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQztvQkFDaEUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztvQkFDOUMsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQztpQkFDckM7Z0JBQ0gsQ0FBQyxDQUFDLFNBQVMsSUFDYjtJQUNKLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxRQUF1QztRQUM5RCxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLEdBQUcsUUFBUSxDQUFDO1FBRWxILE9BQU87WUFDTCxnQkFBZ0Isa0NBQ1gsSUFBSSxDQUFDLDZCQUE2QixDQUFDLGdCQUFnQixDQUFDLEtBQ3ZELFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTO29CQUNuQyxDQUFDLENBQUM7d0JBQ0UsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQzt3QkFDeEQsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQzt3QkFDdEQsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQzt3QkFDOUQsYUFBYSxFQUFFLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUM7d0JBQ2pFLGFBQWEsRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsYUFBYSxJQUFJLFNBQVM7cUJBQ3JFO29CQUNILENBQUMsQ0FBQyxTQUFTLEVBQ2IsT0FBTyxFQUFFLGdCQUFnQixDQUFDLE9BQU87b0JBQy9CLENBQUMsQ0FBQzt3QkFDRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO3dCQUN4RCxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO3dCQUNsRCxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO3FCQUM3RDtvQkFDSCxDQUFDLENBQUMsU0FBUyxHQUNkO1lBRUQsZ0JBQWdCLEVBQUUsZ0JBQWdCO2dCQUNoQyxDQUFDLG1CQUNNLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUUzRCxDQUFDLENBQUMsU0FBUztZQUNiLGtCQUFrQixFQUFFO2dCQUNsQixLQUFLLEVBQUUsa0JBQWtCLENBQUMsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztnQkFDckUsR0FBRyxFQUFFLGtCQUFrQixDQUFDLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUM7YUFDaEU7WUFDRCxlQUFlLEVBQUUsQ0FBQyxDQUFDLGVBQWU7WUFDbEMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLG1CQUFtQjtTQUMzQyxDQUFDO0lBQ0osQ0FBQztJQUVELDZCQUE2QixDQUMzQixRQUEwRjtRQUUxRixxQ0FDRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQ3BDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFDMUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsRUFDNUQsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLElBQ3ZFLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxlQUFlLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQ2pHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQzlCO0lBQ0osQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUE4RDtRQUN4RSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxRQUFRLENBQUM7UUFDakUsdUJBQVMsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLElBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRztJQUMxRixDQUFDO0lBRUQsUUFBUSxDQUFDLFFBQThDO1FBQ3JELE9BQU87WUFDTCxNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU07WUFDdkIsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRO1NBQzVCLENBQUM7SUFDSixDQUFDO0lBRU8sT0FBTyxDQUFDLElBQW9CO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzNDLENBQUM7SUFFRCxlQUFlLENBQUMsWUFBa0M7UUFDaEQsT0FBTyxZQUFZLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUU7WUFDMUUsT0FBTztnQkFDTCxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNwQixLQUFLLEVBQUUsS0FBSztnQkFDWixZQUFZLEVBQUUsQ0FBQyxDQUFDLFlBQVk7YUFDN0IsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHFCQUFxQixDQUFDLFFBQW9DO1FBQ3hELE9BQU87WUFDTCxVQUFVLEVBQUU7Z0JBQ1YsZ0NBQWdDLEVBQUUsUUFBUSxDQUFDLFVBQVU7b0JBQ25ELENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLGdDQUFnQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBQSxhQUFJLEVBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO29CQUM5RixDQUFDLENBQUMsRUFBRTthQUNQO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQWlCOztRQUN0RCxPQUFPLENBQUEsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLFFBQVEsTUFBSSxNQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRyxDQUFDLEVBQUUsU0FBUywwQ0FBRSxRQUFRLENBQUEsS0FBSSxNQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRyxDQUFDLEVBQUUsU0FBUywwQ0FBRSxRQUFRLENBQUEsSUFBSSxjQUFRLENBQUMsR0FBRyxDQUFDO0lBQzdHLENBQUM7SUFFTywwQkFBMEIsQ0FBQyxJQUFrQjtRQUNuRCxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssaUJBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUU7WUFDMUUsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUVELE1BQU0sRUFBRSx1QkFBdUIsRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDdEQsT0FBTyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUMzQyxNQUFNLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDO1lBQy9ELE9BQU87Z0JBQ0wsY0FBYztnQkFDZCxXQUFXO2dCQUNYLE1BQU0sRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUM7Z0JBQzNFLE9BQU8sRUFBRTtvQkFDUCxRQUFRLEVBQUUsQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsUUFBUSxLQUFJLFNBQVM7b0JBQ3hDLFNBQVMsRUFBRSxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxTQUFTLEtBQUksU0FBUztpQkFDM0M7YUFDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFFUSxrQ0FBVyJ9
582
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxNYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvTW9kZWxNYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0VBbUNnRDtBQUNoRCxzQ0FxQ21CO0FBR25CLG1DQUF5QztBQUN6QywyQ0FBd0M7QUFFeEMsTUFBTSxXQUFXO0lBQWpCO1FBeUlFLG9CQUFlLEdBQUcsQ0FBQyxRQUE4QixFQUFnQixFQUFFO1lBQ2pFLE9BQU87Z0JBQ0wsRUFBRSxFQUFFLFFBQVEsQ0FBQyxLQUFLO2dCQUNsQixJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksSUFBSSxTQUFTO2dCQUNoQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssSUFBSSxTQUFTO2dCQUNsQyxTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVMsSUFBSSxTQUFTO2dCQUMxQyxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztnQkFDdkMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7Z0JBQ3ZDLFFBQVEsRUFBRSxRQUFRLENBQUMsa0JBQWtCO2dCQUNyQyx3QkFBd0IsRUFBRSxRQUFRLENBQUMsd0JBQXdCO2FBQzVELENBQUM7UUFDSixDQUFDLENBQUM7UUFFRiwyQkFBc0IsR0FBRyxDQUFDLHdCQUFtRCxFQUF1QixFQUFFO1lBQ3BHLE1BQU0sUUFBUSxHQUFpQixJQUFJLENBQUMsZUFBZSxDQUFDLHdCQUF3QixDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXpHLE1BQU0sWUFBWSxHQUE2Qix3QkFBd0IsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZO2dCQUNwRyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHdCQUF3QixDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQztnQkFDbkYsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUVkLE9BQU87Z0JBQ0wsUUFBUTtn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
@@ -1,4 +1,4 @@
1
- export declare function buildLockKey(environmentPrefix: string, customerId: string, resourceId: string | undefined): string;
1
+ export declare function buildLockKey(environmentPrefix: string, customerId: string, resourceId: string | undefined, operationName?: string): string;
2
2
  export declare const buildCachedCustomerKey: (customerId: string, resourceId: string | undefined) => string;
3
3
  export declare const buildCustomerKey: (environmentPrefix: string, customerId: string, resourceId: string | undefined) => string;
4
4
  export declare const buildUsageKey: (environmentPrefix: string, customerId: string, featureId: string, resourceId: string | undefined) => string;