tt-entities 0.0.21 → 0.0.23

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.
@@ -0,0 +1,2578 @@
1
+ /******/ (() => { // webpackBootstrap
2
+ /******/ "use strict";
3
+ /******/ var __webpack_modules__ = ({
4
+
5
+ /***/ "./libs/tatayab-entities-library/src/entities/apikey.entity.ts"
6
+ /*!*********************************************************************!*\
7
+ !*** ./libs/tatayab-entities-library/src/entities/apikey.entity.ts ***!
8
+ \*********************************************************************/
9
+ (__unused_webpack_module, exports, __webpack_require__) {
10
+
11
+
12
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
13
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
14
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
15
+ 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;
16
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
17
+ };
18
+ var __metadata = (this && this.__metadata) || function (k, v) {
19
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
20
+ };
21
+ var _a, _b, _c, _d, _e;
22
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
23
+ exports.ApiKey = void 0;
24
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
25
+ const status_1 = __webpack_require__(/*! ../utils/enums/status */ "./libs/tatayab-entities-library/src/utils/enums/status.ts");
26
+ const versiontype_1 = __webpack_require__(/*! ../utils/enums/versiontype */ "./libs/tatayab-entities-library/src/utils/enums/versiontype.ts");
27
+ const osName_1 = __webpack_require__(/*! ../utils/enums/osName */ "./libs/tatayab-entities-library/src/utils/enums/osName.ts");
28
+ const productApp_1 = __webpack_require__(/*! ../utils/enums/productApp */ "./libs/tatayab-entities-library/src/utils/enums/productApp.ts");
29
+ let ApiKey = class ApiKey extends sequelize_typescript_1.Model {
30
+ };
31
+ exports.ApiKey = ApiKey;
32
+ __decorate([
33
+ sequelize_typescript_1.Column,
34
+ __metadata("design:type", String)
35
+ ], ApiKey.prototype, "hashedApiKey", void 0);
36
+ __decorate([
37
+ (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.ENUM(...Object.values(osName_1.OsName)) }),
38
+ __metadata("design:type", typeof (_a = typeof osName_1.OsName !== "undefined" && osName_1.OsName) === "function" ? _a : Object)
39
+ ], ApiKey.prototype, "osName", void 0);
40
+ __decorate([
41
+ (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.ENUM(...Object.values(productApp_1.ProductApp)) }),
42
+ __metadata("design:type", typeof (_b = typeof productApp_1.ProductApp !== "undefined" && productApp_1.ProductApp) === "function" ? _b : Object)
43
+ ], ApiKey.prototype, "appName", void 0);
44
+ __decorate([
45
+ sequelize_typescript_1.Column,
46
+ __metadata("design:type", String)
47
+ ], ApiKey.prototype, "appVersion", void 0);
48
+ __decorate([
49
+ sequelize_typescript_1.Column,
50
+ __metadata("design:type", typeof (_c = typeof Date !== "undefined" && Date) === "function" ? _c : Object)
51
+ ], ApiKey.prototype, "expiryDate", void 0);
52
+ __decorate([
53
+ (0, sequelize_typescript_1.Column)({
54
+ type: sequelize_typescript_1.DataType.ENUM(...Object.values(status_1.Status)),
55
+ defaultValue: status_1.Status.ACTIVE,
56
+ }),
57
+ __metadata("design:type", typeof (_d = typeof status_1.Status !== "undefined" && status_1.Status) === "function" ? _d : Object)
58
+ ], ApiKey.prototype, "status", void 0);
59
+ __decorate([
60
+ (0, sequelize_typescript_1.Column)({ allowNull: false, defaultValue: false }),
61
+ __metadata("design:type", Boolean)
62
+ ], ApiKey.prototype, "isReleased", void 0);
63
+ __decorate([
64
+ (0, sequelize_typescript_1.Column)({
65
+ type: sequelize_typescript_1.DataType.ENUM(...Object.values(versiontype_1.VersionType)),
66
+ defaultValue: versiontype_1.VersionType.OPTIONAL,
67
+ }),
68
+ __metadata("design:type", typeof (_e = typeof versiontype_1.VersionType !== "undefined" && versiontype_1.VersionType) === "function" ? _e : Object)
69
+ ], ApiKey.prototype, "versionType", void 0);
70
+ exports.ApiKey = ApiKey = __decorate([
71
+ sequelize_typescript_1.Table
72
+ ], ApiKey);
73
+
74
+
75
+ /***/ },
76
+
77
+ /***/ "./libs/tatayab-entities-library/src/entities/area.entity.ts"
78
+ /*!*******************************************************************!*\
79
+ !*** ./libs/tatayab-entities-library/src/entities/area.entity.ts ***!
80
+ \*******************************************************************/
81
+ (__unused_webpack_module, exports, __webpack_require__) {
82
+
83
+
84
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
85
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
86
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
87
+ 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;
88
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
89
+ };
90
+ var __metadata = (this && this.__metadata) || function (k, v) {
91
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
92
+ };
93
+ var _a;
94
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
95
+ exports.Area = void 0;
96
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
97
+ const country_entity_1 = __webpack_require__(/*! ./country.entity */ "./libs/tatayab-entities-library/src/entities/country.entity.ts");
98
+ let Area = class Area extends sequelize_typescript_1.Model {
99
+ };
100
+ exports.Area = Area;
101
+ __decorate([
102
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
103
+ __metadata("design:type", String)
104
+ ], Area.prototype, "nameEn", void 0);
105
+ __decorate([
106
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
107
+ __metadata("design:type", String)
108
+ ], Area.prototype, "nameAr", void 0);
109
+ __decorate([
110
+ (0, sequelize_typescript_1.ForeignKey)(() => country_entity_1.Country),
111
+ (0, sequelize_typescript_1.Column)({
112
+ allowNull: false,
113
+ validate: { notNull: { msg: 'County Id Required' } },
114
+ }),
115
+ __metadata("design:type", Number)
116
+ ], Area.prototype, "countryId", void 0);
117
+ __decorate([
118
+ sequelize_typescript_1.Column,
119
+ __metadata("design:type", Number)
120
+ ], Area.prototype, "parentId", void 0);
121
+ __decorate([
122
+ (0, sequelize_typescript_1.BelongsTo)(() => country_entity_1.Country),
123
+ __metadata("design:type", typeof (_a = typeof country_entity_1.Country !== "undefined" && country_entity_1.Country) === "function" ? _a : Object)
124
+ ], Area.prototype, "country", void 0);
125
+ exports.Area = Area = __decorate([
126
+ sequelize_typescript_1.Table
127
+ ], Area);
128
+
129
+
130
+ /***/ },
131
+
132
+ /***/ "./libs/tatayab-entities-library/src/entities/brand.entity.ts"
133
+ /*!********************************************************************!*\
134
+ !*** ./libs/tatayab-entities-library/src/entities/brand.entity.ts ***!
135
+ \********************************************************************/
136
+ (__unused_webpack_module, exports, __webpack_require__) {
137
+
138
+
139
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
140
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
141
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
142
+ 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;
143
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
144
+ };
145
+ var __metadata = (this && this.__metadata) || function (k, v) {
146
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
147
+ };
148
+ var _a;
149
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
150
+ exports.Brand = void 0;
151
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
152
+ const status_1 = __webpack_require__(/*! ../utils/enums/status */ "./libs/tatayab-entities-library/src/utils/enums/status.ts");
153
+ let Brand = class Brand extends sequelize_typescript_1.Model {
154
+ };
155
+ exports.Brand = Brand;
156
+ __decorate([
157
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
158
+ __metadata("design:type", String)
159
+ ], Brand.prototype, "nameEn", void 0);
160
+ __decorate([
161
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
162
+ __metadata("design:type", String)
163
+ ], Brand.prototype, "nameAr", void 0);
164
+ __decorate([
165
+ (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.TEXT, allowNull: true }),
166
+ __metadata("design:type", String)
167
+ ], Brand.prototype, "descriptionEn", void 0);
168
+ __decorate([
169
+ (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.TEXT, allowNull: true }),
170
+ __metadata("design:type", String)
171
+ ], Brand.prototype, "descriptionAr", void 0);
172
+ __decorate([
173
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
174
+ __metadata("design:type", String)
175
+ ], Brand.prototype, "logo", void 0);
176
+ __decorate([
177
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
178
+ __metadata("design:type", String)
179
+ ], Brand.prototype, "website", void 0);
180
+ __decorate([
181
+ (0, sequelize_typescript_1.Column)({ defaultValue: 0 }),
182
+ __metadata("design:type", Number)
183
+ ], Brand.prototype, "sortOrder", void 0);
184
+ __decorate([
185
+ (0, sequelize_typescript_1.Column)({
186
+ type: sequelize_typescript_1.DataType.ENUM(...Object.values(status_1.Status)),
187
+ defaultValue: status_1.Status.ACTIVE,
188
+ }),
189
+ __metadata("design:type", typeof (_a = typeof status_1.Status !== "undefined" && status_1.Status) === "function" ? _a : Object)
190
+ ], Brand.prototype, "status", void 0);
191
+ exports.Brand = Brand = __decorate([
192
+ sequelize_typescript_1.Table
193
+ ], Brand);
194
+
195
+
196
+ /***/ },
197
+
198
+ /***/ "./libs/tatayab-entities-library/src/entities/category.entity.ts"
199
+ /*!***********************************************************************!*\
200
+ !*** ./libs/tatayab-entities-library/src/entities/category.entity.ts ***!
201
+ \***********************************************************************/
202
+ (__unused_webpack_module, exports, __webpack_require__) {
203
+
204
+
205
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
206
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
207
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
208
+ 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;
209
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
210
+ };
211
+ var __metadata = (this && this.__metadata) || function (k, v) {
212
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
213
+ };
214
+ var _a;
215
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
216
+ exports.Category = void 0;
217
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
218
+ const status_1 = __webpack_require__(/*! ../utils/enums/status */ "./libs/tatayab-entities-library/src/utils/enums/status.ts");
219
+ let Category = class Category extends sequelize_typescript_1.Model {
220
+ };
221
+ exports.Category = Category;
222
+ __decorate([
223
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
224
+ __metadata("design:type", String)
225
+ ], Category.prototype, "nameEn", void 0);
226
+ __decorate([
227
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
228
+ __metadata("design:type", String)
229
+ ], Category.prototype, "nameAr", void 0);
230
+ __decorate([
231
+ (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.TEXT, allowNull: true }),
232
+ __metadata("design:type", String)
233
+ ], Category.prototype, "descriptionEn", void 0);
234
+ __decorate([
235
+ (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.TEXT, allowNull: true }),
236
+ __metadata("design:type", String)
237
+ ], Category.prototype, "descriptionAr", void 0);
238
+ __decorate([
239
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
240
+ __metadata("design:type", String)
241
+ ], Category.prototype, "image", void 0);
242
+ __decorate([
243
+ (0, sequelize_typescript_1.Column)({ defaultValue: 0 }),
244
+ __metadata("design:type", Number)
245
+ ], Category.prototype, "sortOrder", void 0);
246
+ __decorate([
247
+ (0, sequelize_typescript_1.Column)({
248
+ type: sequelize_typescript_1.DataType.ENUM(...Object.values(status_1.Status)),
249
+ defaultValue: status_1.Status.ACTIVE,
250
+ }),
251
+ __metadata("design:type", typeof (_a = typeof status_1.Status !== "undefined" && status_1.Status) === "function" ? _a : Object)
252
+ ], Category.prototype, "status", void 0);
253
+ __decorate([
254
+ (0, sequelize_typescript_1.ForeignKey)(() => Category),
255
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
256
+ __metadata("design:type", Number)
257
+ ], Category.prototype, "parentId", void 0);
258
+ __decorate([
259
+ (0, sequelize_typescript_1.BelongsTo)(() => Category, { foreignKey: 'parentId', as: 'parent' }),
260
+ __metadata("design:type", Category)
261
+ ], Category.prototype, "parent", void 0);
262
+ __decorate([
263
+ (0, sequelize_typescript_1.HasMany)(() => Category, { foreignKey: 'parentId', as: 'children' }),
264
+ __metadata("design:type", Array)
265
+ ], Category.prototype, "children", void 0);
266
+ exports.Category = Category = __decorate([
267
+ sequelize_typescript_1.Table
268
+ ], Category);
269
+
270
+
271
+ /***/ },
272
+
273
+ /***/ "./libs/tatayab-entities-library/src/entities/country.entity.ts"
274
+ /*!**********************************************************************!*\
275
+ !*** ./libs/tatayab-entities-library/src/entities/country.entity.ts ***!
276
+ \**********************************************************************/
277
+ (__unused_webpack_module, exports, __webpack_require__) {
278
+
279
+
280
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
281
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
282
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
283
+ 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;
284
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
285
+ };
286
+ var __metadata = (this && this.__metadata) || function (k, v) {
287
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
288
+ };
289
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
290
+ exports.Country = void 0;
291
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
292
+ let Country = class Country extends sequelize_typescript_1.Model {
293
+ };
294
+ exports.Country = Country;
295
+ __decorate([
296
+ sequelize_typescript_1.Column,
297
+ __metadata("design:type", String)
298
+ ], Country.prototype, "nameEn", void 0);
299
+ __decorate([
300
+ sequelize_typescript_1.Column,
301
+ __metadata("design:type", String)
302
+ ], Country.prototype, "nameAr", void 0);
303
+ __decorate([
304
+ sequelize_typescript_1.Column,
305
+ __metadata("design:type", String)
306
+ ], Country.prototype, "flagIcon", void 0);
307
+ __decorate([
308
+ sequelize_typescript_1.Column,
309
+ __metadata("design:type", String)
310
+ ], Country.prototype, "isoCode", void 0);
311
+ __decorate([
312
+ sequelize_typescript_1.Column,
313
+ __metadata("design:type", String)
314
+ ], Country.prototype, "phoneExt", void 0);
315
+ __decorate([
316
+ sequelize_typescript_1.Column,
317
+ __metadata("design:type", String)
318
+ ], Country.prototype, "currency", void 0);
319
+ __decorate([
320
+ sequelize_typescript_1.Column,
321
+ __metadata("design:type", Number)
322
+ ], Country.prototype, "exchangeRateToKwd", void 0);
323
+ exports.Country = Country = __decorate([
324
+ sequelize_typescript_1.Table
325
+ ], Country);
326
+
327
+
328
+ /***/ },
329
+
330
+ /***/ "./libs/tatayab-entities-library/src/entities/inventory-stock.entity.ts"
331
+ /*!******************************************************************************!*\
332
+ !*** ./libs/tatayab-entities-library/src/entities/inventory-stock.entity.ts ***!
333
+ \******************************************************************************/
334
+ (__unused_webpack_module, exports, __webpack_require__) {
335
+
336
+
337
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
338
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
339
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
340
+ 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;
341
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
342
+ };
343
+ var __metadata = (this && this.__metadata) || function (k, v) {
344
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
345
+ };
346
+ var _a, _b, _c;
347
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
348
+ exports.InventoryStock = void 0;
349
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
350
+ const inventory_entity_1 = __webpack_require__(/*! ./inventory.entity */ "./libs/tatayab-entities-library/src/entities/inventory.entity.ts");
351
+ const product_entity_1 = __webpack_require__(/*! ./product.entity */ "./libs/tatayab-entities-library/src/entities/product.entity.ts");
352
+ const product_variant_entity_1 = __webpack_require__(/*! ./product-variant.entity */ "./libs/tatayab-entities-library/src/entities/product-variant.entity.ts");
353
+ let InventoryStock = class InventoryStock extends sequelize_typescript_1.Model {
354
+ };
355
+ exports.InventoryStock = InventoryStock;
356
+ __decorate([
357
+ (0, sequelize_typescript_1.ForeignKey)(() => inventory_entity_1.Inventory),
358
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
359
+ __metadata("design:type", Number)
360
+ ], InventoryStock.prototype, "inventoryId", void 0);
361
+ __decorate([
362
+ (0, sequelize_typescript_1.ForeignKey)(() => product_entity_1.Product),
363
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
364
+ __metadata("design:type", Number)
365
+ ], InventoryStock.prototype, "productId", void 0);
366
+ __decorate([
367
+ (0, sequelize_typescript_1.ForeignKey)(() => product_variant_entity_1.ProductVariant),
368
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
369
+ __metadata("design:type", Number)
370
+ ], InventoryStock.prototype, "productVariantId", void 0);
371
+ __decorate([
372
+ (0, sequelize_typescript_1.Column)({ defaultValue: 0 }),
373
+ __metadata("design:type", Number)
374
+ ], InventoryStock.prototype, "physicalQuantity", void 0);
375
+ __decorate([
376
+ (0, sequelize_typescript_1.Column)({ defaultValue: 0 }),
377
+ __metadata("design:type", Number)
378
+ ], InventoryStock.prototype, "reservedQuantity", void 0);
379
+ __decorate([
380
+ (0, sequelize_typescript_1.Column)({ defaultValue: false }),
381
+ __metadata("design:type", Boolean)
382
+ ], InventoryStock.prototype, "availableFromVendor", void 0);
383
+ __decorate([
384
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
385
+ __metadata("design:type", Number)
386
+ ], InventoryStock.prototype, "lowStockThreshold", void 0);
387
+ __decorate([
388
+ (0, sequelize_typescript_1.BelongsTo)(() => inventory_entity_1.Inventory),
389
+ __metadata("design:type", typeof (_a = typeof inventory_entity_1.Inventory !== "undefined" && inventory_entity_1.Inventory) === "function" ? _a : Object)
390
+ ], InventoryStock.prototype, "inventory", void 0);
391
+ __decorate([
392
+ (0, sequelize_typescript_1.BelongsTo)(() => product_entity_1.Product),
393
+ __metadata("design:type", typeof (_b = typeof product_entity_1.Product !== "undefined" && product_entity_1.Product) === "function" ? _b : Object)
394
+ ], InventoryStock.prototype, "product", void 0);
395
+ __decorate([
396
+ (0, sequelize_typescript_1.BelongsTo)(() => product_variant_entity_1.ProductVariant),
397
+ __metadata("design:type", typeof (_c = typeof product_variant_entity_1.ProductVariant !== "undefined" && product_variant_entity_1.ProductVariant) === "function" ? _c : Object)
398
+ ], InventoryStock.prototype, "variant", void 0);
399
+ exports.InventoryStock = InventoryStock = __decorate([
400
+ sequelize_typescript_1.Table
401
+ ], InventoryStock);
402
+
403
+
404
+ /***/ },
405
+
406
+ /***/ "./libs/tatayab-entities-library/src/entities/inventory.entity.ts"
407
+ /*!************************************************************************!*\
408
+ !*** ./libs/tatayab-entities-library/src/entities/inventory.entity.ts ***!
409
+ \************************************************************************/
410
+ (__unused_webpack_module, exports, __webpack_require__) {
411
+
412
+
413
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
414
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
415
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
416
+ 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;
417
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
418
+ };
419
+ var __metadata = (this && this.__metadata) || function (k, v) {
420
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
421
+ };
422
+ var _a;
423
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
424
+ exports.Inventory = void 0;
425
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
426
+ const inventory_stock_entity_1 = __webpack_require__(/*! ./inventory-stock.entity */ "./libs/tatayab-entities-library/src/entities/inventory-stock.entity.ts");
427
+ const store_inventory_entity_1 = __webpack_require__(/*! ./store-inventory.entity */ "./libs/tatayab-entities-library/src/entities/store-inventory.entity.ts");
428
+ const store_entity_1 = __webpack_require__(/*! ./store.entity */ "./libs/tatayab-entities-library/src/entities/store.entity.ts");
429
+ const status_1 = __webpack_require__(/*! ../utils/enums/status */ "./libs/tatayab-entities-library/src/utils/enums/status.ts");
430
+ let Inventory = class Inventory extends sequelize_typescript_1.Model {
431
+ };
432
+ exports.Inventory = Inventory;
433
+ __decorate([
434
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
435
+ __metadata("design:type", String)
436
+ ], Inventory.prototype, "nameEn", void 0);
437
+ __decorate([
438
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
439
+ __metadata("design:type", String)
440
+ ], Inventory.prototype, "nameAr", void 0);
441
+ __decorate([
442
+ (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.TEXT, allowNull: true }),
443
+ __metadata("design:type", String)
444
+ ], Inventory.prototype, "addressEn", void 0);
445
+ __decorate([
446
+ (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.TEXT, allowNull: true }),
447
+ __metadata("design:type", String)
448
+ ], Inventory.prototype, "addressAr", void 0);
449
+ __decorate([
450
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
451
+ __metadata("design:type", String)
452
+ ], Inventory.prototype, "contactPhone", void 0);
453
+ __decorate([
454
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
455
+ __metadata("design:type", String)
456
+ ], Inventory.prototype, "contactEmail", void 0);
457
+ __decorate([
458
+ (0, sequelize_typescript_1.Column)({
459
+ type: sequelize_typescript_1.DataType.ENUM(...Object.values(status_1.Status)),
460
+ defaultValue: status_1.Status.ACTIVE,
461
+ }),
462
+ __metadata("design:type", typeof (_a = typeof status_1.Status !== "undefined" && status_1.Status) === "function" ? _a : Object)
463
+ ], Inventory.prototype, "status", void 0);
464
+ __decorate([
465
+ (0, sequelize_typescript_1.HasMany)(() => inventory_stock_entity_1.InventoryStock),
466
+ __metadata("design:type", Array)
467
+ ], Inventory.prototype, "stocks", void 0);
468
+ __decorate([
469
+ (0, sequelize_typescript_1.BelongsToMany)(() => store_entity_1.Store, () => store_inventory_entity_1.StoreInventory),
470
+ __metadata("design:type", Array)
471
+ ], Inventory.prototype, "stores", void 0);
472
+ exports.Inventory = Inventory = __decorate([
473
+ sequelize_typescript_1.Table
474
+ ], Inventory);
475
+
476
+
477
+ /***/ },
478
+
479
+ /***/ "./libs/tatayab-entities-library/src/entities/permission.entity.ts"
480
+ /*!*************************************************************************!*\
481
+ !*** ./libs/tatayab-entities-library/src/entities/permission.entity.ts ***!
482
+ \*************************************************************************/
483
+ (__unused_webpack_module, exports, __webpack_require__) {
484
+
485
+
486
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
487
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
488
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
489
+ 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;
490
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
491
+ };
492
+ var __metadata = (this && this.__metadata) || function (k, v) {
493
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
494
+ };
495
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
496
+ exports.Permission = void 0;
497
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
498
+ const sys_role_entity_1 = __webpack_require__(/*! ./sys.role.entity */ "./libs/tatayab-entities-library/src/entities/sys.role.entity.ts");
499
+ const role_permission_entity_1 = __webpack_require__(/*! ./role-permission.entity */ "./libs/tatayab-entities-library/src/entities/role-permission.entity.ts");
500
+ let Permission = class Permission extends sequelize_typescript_1.Model {
501
+ };
502
+ exports.Permission = Permission;
503
+ __decorate([
504
+ (0, sequelize_typescript_1.Column)({ allowNull: false, unique: true }),
505
+ __metadata("design:type", String)
506
+ ], Permission.prototype, "name", void 0);
507
+ __decorate([
508
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
509
+ __metadata("design:type", String)
510
+ ], Permission.prototype, "displayName", void 0);
511
+ __decorate([
512
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
513
+ __metadata("design:type", String)
514
+ ], Permission.prototype, "group", void 0);
515
+ __decorate([
516
+ (0, sequelize_typescript_1.BelongsToMany)(() => sys_role_entity_1.SysRole, () => role_permission_entity_1.RolePermission),
517
+ __metadata("design:type", Array)
518
+ ], Permission.prototype, "roles", void 0);
519
+ exports.Permission = Permission = __decorate([
520
+ sequelize_typescript_1.Table
521
+ ], Permission);
522
+
523
+
524
+ /***/ },
525
+
526
+ /***/ "./libs/tatayab-entities-library/src/entities/product-media.entity.ts"
527
+ /*!****************************************************************************!*\
528
+ !*** ./libs/tatayab-entities-library/src/entities/product-media.entity.ts ***!
529
+ \****************************************************************************/
530
+ (__unused_webpack_module, exports, __webpack_require__) {
531
+
532
+
533
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
534
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
535
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
536
+ 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;
537
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
538
+ };
539
+ var __metadata = (this && this.__metadata) || function (k, v) {
540
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
541
+ };
542
+ var _a;
543
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
544
+ exports.ProductMedia = exports.MediaType = void 0;
545
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
546
+ const product_entity_1 = __webpack_require__(/*! ./product.entity */ "./libs/tatayab-entities-library/src/entities/product.entity.ts");
547
+ var MediaType;
548
+ (function (MediaType) {
549
+ MediaType["IMAGE"] = "image";
550
+ MediaType["VIDEO"] = "video";
551
+ })(MediaType || (exports.MediaType = MediaType = {}));
552
+ let ProductMedia = class ProductMedia extends sequelize_typescript_1.Model {
553
+ };
554
+ exports.ProductMedia = ProductMedia;
555
+ __decorate([
556
+ (0, sequelize_typescript_1.ForeignKey)(() => product_entity_1.Product),
557
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
558
+ __metadata("design:type", Number)
559
+ ], ProductMedia.prototype, "productId", void 0);
560
+ __decorate([
561
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
562
+ __metadata("design:type", String)
563
+ ], ProductMedia.prototype, "url", void 0);
564
+ __decorate([
565
+ (0, sequelize_typescript_1.Column)({
566
+ type: sequelize_typescript_1.DataType.ENUM(...Object.values(MediaType)),
567
+ defaultValue: MediaType.IMAGE,
568
+ }),
569
+ __metadata("design:type", String)
570
+ ], ProductMedia.prototype, "type", void 0);
571
+ __decorate([
572
+ (0, sequelize_typescript_1.Column)({ defaultValue: false }),
573
+ __metadata("design:type", Boolean)
574
+ ], ProductMedia.prototype, "isDefault", void 0);
575
+ __decorate([
576
+ (0, sequelize_typescript_1.Column)({ defaultValue: 0 }),
577
+ __metadata("design:type", Number)
578
+ ], ProductMedia.prototype, "sortOrder", void 0);
579
+ __decorate([
580
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
581
+ __metadata("design:type", String)
582
+ ], ProductMedia.prototype, "altEn", void 0);
583
+ __decorate([
584
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
585
+ __metadata("design:type", String)
586
+ ], ProductMedia.prototype, "altAr", void 0);
587
+ __decorate([
588
+ (0, sequelize_typescript_1.BelongsTo)(() => product_entity_1.Product),
589
+ __metadata("design:type", typeof (_a = typeof product_entity_1.Product !== "undefined" && product_entity_1.Product) === "function" ? _a : Object)
590
+ ], ProductMedia.prototype, "product", void 0);
591
+ exports.ProductMedia = ProductMedia = __decorate([
592
+ sequelize_typescript_1.Table
593
+ ], ProductMedia);
594
+
595
+
596
+ /***/ },
597
+
598
+ /***/ "./libs/tatayab-entities-library/src/entities/product-store.entity.ts"
599
+ /*!****************************************************************************!*\
600
+ !*** ./libs/tatayab-entities-library/src/entities/product-store.entity.ts ***!
601
+ \****************************************************************************/
602
+ (__unused_webpack_module, exports, __webpack_require__) {
603
+
604
+
605
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
606
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
607
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
608
+ 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;
609
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
610
+ };
611
+ var __metadata = (this && this.__metadata) || function (k, v) {
612
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
613
+ };
614
+ var _a, _b, _c;
615
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
616
+ exports.ProductStore = void 0;
617
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
618
+ const product_entity_1 = __webpack_require__(/*! ./product.entity */ "./libs/tatayab-entities-library/src/entities/product.entity.ts");
619
+ const store_entity_1 = __webpack_require__(/*! ./store.entity */ "./libs/tatayab-entities-library/src/entities/store.entity.ts");
620
+ const status_1 = __webpack_require__(/*! ../utils/enums/status */ "./libs/tatayab-entities-library/src/utils/enums/status.ts");
621
+ let ProductStore = class ProductStore extends sequelize_typescript_1.Model {
622
+ };
623
+ exports.ProductStore = ProductStore;
624
+ __decorate([
625
+ (0, sequelize_typescript_1.ForeignKey)(() => product_entity_1.Product),
626
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
627
+ __metadata("design:type", Number)
628
+ ], ProductStore.prototype, "productId", void 0);
629
+ __decorate([
630
+ (0, sequelize_typescript_1.ForeignKey)(() => store_entity_1.Store),
631
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
632
+ __metadata("design:type", Number)
633
+ ], ProductStore.prototype, "storeId", void 0);
634
+ __decorate([
635
+ (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.DECIMAL(10, 3), allowNull: true }),
636
+ __metadata("design:type", Number)
637
+ ], ProductStore.prototype, "price", void 0);
638
+ __decorate([
639
+ (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.DECIMAL(10, 3), allowNull: true }),
640
+ __metadata("design:type", Number)
641
+ ], ProductStore.prototype, "salePrice", void 0);
642
+ __decorate([
643
+ (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.DATE, allowNull: true }),
644
+ __metadata("design:type", typeof (_a = typeof Date !== "undefined" && Date) === "function" ? _a : Object)
645
+ ], ProductStore.prototype, "saleStartDate", void 0);
646
+ __decorate([
647
+ (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.DATE, allowNull: true }),
648
+ __metadata("design:type", typeof (_b = typeof Date !== "undefined" && Date) === "function" ? _b : Object)
649
+ ], ProductStore.prototype, "saleEndDate", void 0);
650
+ __decorate([
651
+ (0, sequelize_typescript_1.Column)({
652
+ type: sequelize_typescript_1.DataType.ENUM(...Object.values(status_1.Status)),
653
+ defaultValue: status_1.Status.ACTIVE,
654
+ }),
655
+ __metadata("design:type", typeof (_c = typeof status_1.Status !== "undefined" && status_1.Status) === "function" ? _c : Object)
656
+ ], ProductStore.prototype, "status", void 0);
657
+ exports.ProductStore = ProductStore = __decorate([
658
+ sequelize_typescript_1.Table
659
+ ], ProductStore);
660
+
661
+
662
+ /***/ },
663
+
664
+ /***/ "./libs/tatayab-entities-library/src/entities/product-tag.entity.ts"
665
+ /*!**************************************************************************!*\
666
+ !*** ./libs/tatayab-entities-library/src/entities/product-tag.entity.ts ***!
667
+ \**************************************************************************/
668
+ (__unused_webpack_module, exports, __webpack_require__) {
669
+
670
+
671
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
672
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
673
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
674
+ 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;
675
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
676
+ };
677
+ var __metadata = (this && this.__metadata) || function (k, v) {
678
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
679
+ };
680
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
681
+ exports.ProductTag = void 0;
682
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
683
+ const product_entity_1 = __webpack_require__(/*! ./product.entity */ "./libs/tatayab-entities-library/src/entities/product.entity.ts");
684
+ const tag_entity_1 = __webpack_require__(/*! ./tag.entity */ "./libs/tatayab-entities-library/src/entities/tag.entity.ts");
685
+ let ProductTag = class ProductTag extends sequelize_typescript_1.Model {
686
+ };
687
+ exports.ProductTag = ProductTag;
688
+ __decorate([
689
+ (0, sequelize_typescript_1.ForeignKey)(() => product_entity_1.Product),
690
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
691
+ __metadata("design:type", Number)
692
+ ], ProductTag.prototype, "productId", void 0);
693
+ __decorate([
694
+ (0, sequelize_typescript_1.ForeignKey)(() => tag_entity_1.Tag),
695
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
696
+ __metadata("design:type", Number)
697
+ ], ProductTag.prototype, "tagId", void 0);
698
+ exports.ProductTag = ProductTag = __decorate([
699
+ sequelize_typescript_1.Table
700
+ ], ProductTag);
701
+
702
+
703
+ /***/ },
704
+
705
+ /***/ "./libs/tatayab-entities-library/src/entities/product-variant-option.entity.ts"
706
+ /*!*************************************************************************************!*\
707
+ !*** ./libs/tatayab-entities-library/src/entities/product-variant-option.entity.ts ***!
708
+ \*************************************************************************************/
709
+ (__unused_webpack_module, exports, __webpack_require__) {
710
+
711
+
712
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
713
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
714
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
715
+ 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;
716
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
717
+ };
718
+ var __metadata = (this && this.__metadata) || function (k, v) {
719
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
720
+ };
721
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
722
+ exports.ProductVariantOption = void 0;
723
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
724
+ const product_variant_entity_1 = __webpack_require__(/*! ./product-variant.entity */ "./libs/tatayab-entities-library/src/entities/product-variant.entity.ts");
725
+ const variant_option_entity_1 = __webpack_require__(/*! ./variant-option.entity */ "./libs/tatayab-entities-library/src/entities/variant-option.entity.ts");
726
+ let ProductVariantOption = class ProductVariantOption extends sequelize_typescript_1.Model {
727
+ };
728
+ exports.ProductVariantOption = ProductVariantOption;
729
+ __decorate([
730
+ (0, sequelize_typescript_1.ForeignKey)(() => product_variant_entity_1.ProductVariant),
731
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
732
+ __metadata("design:type", Number)
733
+ ], ProductVariantOption.prototype, "productVariantId", void 0);
734
+ __decorate([
735
+ (0, sequelize_typescript_1.ForeignKey)(() => variant_option_entity_1.VariantOption),
736
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
737
+ __metadata("design:type", Number)
738
+ ], ProductVariantOption.prototype, "variantOptionId", void 0);
739
+ exports.ProductVariantOption = ProductVariantOption = __decorate([
740
+ sequelize_typescript_1.Table
741
+ ], ProductVariantOption);
742
+
743
+
744
+ /***/ },
745
+
746
+ /***/ "./libs/tatayab-entities-library/src/entities/product-variant.entity.ts"
747
+ /*!******************************************************************************!*\
748
+ !*** ./libs/tatayab-entities-library/src/entities/product-variant.entity.ts ***!
749
+ \******************************************************************************/
750
+ (__unused_webpack_module, exports, __webpack_require__) {
751
+
752
+
753
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
754
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
755
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
756
+ 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;
757
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
758
+ };
759
+ var __metadata = (this && this.__metadata) || function (k, v) {
760
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
761
+ };
762
+ var _a, _b;
763
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
764
+ exports.ProductVariant = void 0;
765
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
766
+ const product_entity_1 = __webpack_require__(/*! ./product.entity */ "./libs/tatayab-entities-library/src/entities/product.entity.ts");
767
+ const variant_option_entity_1 = __webpack_require__(/*! ./variant-option.entity */ "./libs/tatayab-entities-library/src/entities/variant-option.entity.ts");
768
+ const product_variant_option_entity_1 = __webpack_require__(/*! ./product-variant-option.entity */ "./libs/tatayab-entities-library/src/entities/product-variant-option.entity.ts");
769
+ const status_1 = __webpack_require__(/*! ../utils/enums/status */ "./libs/tatayab-entities-library/src/utils/enums/status.ts");
770
+ let ProductVariant = class ProductVariant extends sequelize_typescript_1.Model {
771
+ };
772
+ exports.ProductVariant = ProductVariant;
773
+ __decorate([
774
+ (0, sequelize_typescript_1.ForeignKey)(() => product_entity_1.Product),
775
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
776
+ __metadata("design:type", Number)
777
+ ], ProductVariant.prototype, "productId", void 0);
778
+ __decorate([
779
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
780
+ __metadata("design:type", String)
781
+ ], ProductVariant.prototype, "sku", void 0);
782
+ __decorate([
783
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
784
+ __metadata("design:type", String)
785
+ ], ProductVariant.prototype, "barcode", void 0);
786
+ __decorate([
787
+ (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.DECIMAL(10, 3), allowNull: true }),
788
+ __metadata("design:type", Number)
789
+ ], ProductVariant.prototype, "priceOverride", void 0);
790
+ __decorate([
791
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
792
+ __metadata("design:type", String)
793
+ ], ProductVariant.prototype, "image", void 0);
794
+ __decorate([
795
+ (0, sequelize_typescript_1.Column)({ defaultValue: 0 }),
796
+ __metadata("design:type", Number)
797
+ ], ProductVariant.prototype, "sortOrder", void 0);
798
+ __decorate([
799
+ (0, sequelize_typescript_1.Column)({
800
+ type: sequelize_typescript_1.DataType.ENUM(...Object.values(status_1.Status)),
801
+ defaultValue: status_1.Status.ACTIVE,
802
+ }),
803
+ __metadata("design:type", typeof (_a = typeof status_1.Status !== "undefined" && status_1.Status) === "function" ? _a : Object)
804
+ ], ProductVariant.prototype, "status", void 0);
805
+ __decorate([
806
+ (0, sequelize_typescript_1.BelongsTo)(() => product_entity_1.Product),
807
+ __metadata("design:type", typeof (_b = typeof product_entity_1.Product !== "undefined" && product_entity_1.Product) === "function" ? _b : Object)
808
+ ], ProductVariant.prototype, "product", void 0);
809
+ __decorate([
810
+ (0, sequelize_typescript_1.BelongsToMany)(() => variant_option_entity_1.VariantOption, () => product_variant_option_entity_1.ProductVariantOption),
811
+ __metadata("design:type", Array)
812
+ ], ProductVariant.prototype, "options", void 0);
813
+ exports.ProductVariant = ProductVariant = __decorate([
814
+ sequelize_typescript_1.Table
815
+ ], ProductVariant);
816
+
817
+
818
+ /***/ },
819
+
820
+ /***/ "./libs/tatayab-entities-library/src/entities/product.entity.ts"
821
+ /*!**********************************************************************!*\
822
+ !*** ./libs/tatayab-entities-library/src/entities/product.entity.ts ***!
823
+ \**********************************************************************/
824
+ (__unused_webpack_module, exports, __webpack_require__) {
825
+
826
+
827
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
828
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
829
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
830
+ 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;
831
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
832
+ };
833
+ var __metadata = (this && this.__metadata) || function (k, v) {
834
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
835
+ };
836
+ var _a, _b, _c;
837
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
838
+ exports.Product = void 0;
839
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
840
+ const brand_entity_1 = __webpack_require__(/*! ./brand.entity */ "./libs/tatayab-entities-library/src/entities/brand.entity.ts");
841
+ const category_entity_1 = __webpack_require__(/*! ./category.entity */ "./libs/tatayab-entities-library/src/entities/category.entity.ts");
842
+ const product_media_entity_1 = __webpack_require__(/*! ./product-media.entity */ "./libs/tatayab-entities-library/src/entities/product-media.entity.ts");
843
+ const product_variant_entity_1 = __webpack_require__(/*! ./product-variant.entity */ "./libs/tatayab-entities-library/src/entities/product-variant.entity.ts");
844
+ const product_store_entity_1 = __webpack_require__(/*! ./product-store.entity */ "./libs/tatayab-entities-library/src/entities/product-store.entity.ts");
845
+ const product_tag_entity_1 = __webpack_require__(/*! ./product-tag.entity */ "./libs/tatayab-entities-library/src/entities/product-tag.entity.ts");
846
+ const store_entity_1 = __webpack_require__(/*! ./store.entity */ "./libs/tatayab-entities-library/src/entities/store.entity.ts");
847
+ const tag_entity_1 = __webpack_require__(/*! ./tag.entity */ "./libs/tatayab-entities-library/src/entities/tag.entity.ts");
848
+ const status_1 = __webpack_require__(/*! ../utils/enums/status */ "./libs/tatayab-entities-library/src/utils/enums/status.ts");
849
+ let Product = class Product extends sequelize_typescript_1.Model {
850
+ };
851
+ exports.Product = Product;
852
+ __decorate([
853
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
854
+ __metadata("design:type", String)
855
+ ], Product.prototype, "nameEn", void 0);
856
+ __decorate([
857
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
858
+ __metadata("design:type", String)
859
+ ], Product.prototype, "nameAr", void 0);
860
+ __decorate([
861
+ (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.TEXT, allowNull: true }),
862
+ __metadata("design:type", String)
863
+ ], Product.prototype, "descriptionEn", void 0);
864
+ __decorate([
865
+ (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.TEXT, allowNull: true }),
866
+ __metadata("design:type", String)
867
+ ], Product.prototype, "descriptionAr", void 0);
868
+ __decorate([
869
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
870
+ __metadata("design:type", String)
871
+ ], Product.prototype, "sku", void 0);
872
+ __decorate([
873
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
874
+ __metadata("design:type", String)
875
+ ], Product.prototype, "barcode", void 0);
876
+ __decorate([
877
+ (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.DECIMAL(10, 3), allowNull: false, defaultValue: 0 }),
878
+ __metadata("design:type", Number)
879
+ ], Product.prototype, "defaultPrice", void 0);
880
+ __decorate([
881
+ (0, sequelize_typescript_1.ForeignKey)(() => brand_entity_1.Brand),
882
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
883
+ __metadata("design:type", Number)
884
+ ], Product.prototype, "brandId", void 0);
885
+ __decorate([
886
+ (0, sequelize_typescript_1.ForeignKey)(() => category_entity_1.Category),
887
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
888
+ __metadata("design:type", Number)
889
+ ], Product.prototype, "categoryId", void 0);
890
+ __decorate([
891
+ (0, sequelize_typescript_1.Column)({ defaultValue: 0 }),
892
+ __metadata("design:type", Number)
893
+ ], Product.prototype, "sortOrder", void 0);
894
+ __decorate([
895
+ (0, sequelize_typescript_1.Column)({ defaultValue: false }),
896
+ __metadata("design:type", Boolean)
897
+ ], Product.prototype, "isFeatured", void 0);
898
+ __decorate([
899
+ (0, sequelize_typescript_1.Column)({ defaultValue: false }),
900
+ __metadata("design:type", Boolean)
901
+ ], Product.prototype, "hasVariants", void 0);
902
+ __decorate([
903
+ (0, sequelize_typescript_1.Column)({
904
+ type: sequelize_typescript_1.DataType.ENUM(...Object.values(status_1.Status)),
905
+ defaultValue: status_1.Status.ACTIVE,
906
+ }),
907
+ __metadata("design:type", typeof (_a = typeof status_1.Status !== "undefined" && status_1.Status) === "function" ? _a : Object)
908
+ ], Product.prototype, "status", void 0);
909
+ __decorate([
910
+ (0, sequelize_typescript_1.BelongsTo)(() => brand_entity_1.Brand),
911
+ __metadata("design:type", typeof (_b = typeof brand_entity_1.Brand !== "undefined" && brand_entity_1.Brand) === "function" ? _b : Object)
912
+ ], Product.prototype, "brand", void 0);
913
+ __decorate([
914
+ (0, sequelize_typescript_1.BelongsTo)(() => category_entity_1.Category),
915
+ __metadata("design:type", typeof (_c = typeof category_entity_1.Category !== "undefined" && category_entity_1.Category) === "function" ? _c : Object)
916
+ ], Product.prototype, "category", void 0);
917
+ __decorate([
918
+ (0, sequelize_typescript_1.HasMany)(() => product_media_entity_1.ProductMedia),
919
+ __metadata("design:type", Array)
920
+ ], Product.prototype, "media", void 0);
921
+ __decorate([
922
+ (0, sequelize_typescript_1.HasMany)(() => product_variant_entity_1.ProductVariant),
923
+ __metadata("design:type", Array)
924
+ ], Product.prototype, "variants", void 0);
925
+ __decorate([
926
+ (0, sequelize_typescript_1.BelongsToMany)(() => store_entity_1.Store, () => product_store_entity_1.ProductStore),
927
+ __metadata("design:type", Array)
928
+ ], Product.prototype, "stores", void 0);
929
+ __decorate([
930
+ (0, sequelize_typescript_1.BelongsToMany)(() => tag_entity_1.Tag, () => product_tag_entity_1.ProductTag),
931
+ __metadata("design:type", Array)
932
+ ], Product.prototype, "tags", void 0);
933
+ exports.Product = Product = __decorate([
934
+ sequelize_typescript_1.Table
935
+ ], Product);
936
+
937
+
938
+ /***/ },
939
+
940
+ /***/ "./libs/tatayab-entities-library/src/entities/purchase-order-item.entity.ts"
941
+ /*!**********************************************************************************!*\
942
+ !*** ./libs/tatayab-entities-library/src/entities/purchase-order-item.entity.ts ***!
943
+ \**********************************************************************************/
944
+ (__unused_webpack_module, exports, __webpack_require__) {
945
+
946
+
947
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
948
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
949
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
950
+ 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;
951
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
952
+ };
953
+ var __metadata = (this && this.__metadata) || function (k, v) {
954
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
955
+ };
956
+ var _a, _b, _c;
957
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
958
+ exports.PurchaseOrderItem = exports.PurchaseOrderItemStatus = void 0;
959
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
960
+ const purchase_order_entity_1 = __webpack_require__(/*! ./purchase-order.entity */ "./libs/tatayab-entities-library/src/entities/purchase-order.entity.ts");
961
+ const product_entity_1 = __webpack_require__(/*! ./product.entity */ "./libs/tatayab-entities-library/src/entities/product.entity.ts");
962
+ const product_variant_entity_1 = __webpack_require__(/*! ./product-variant.entity */ "./libs/tatayab-entities-library/src/entities/product-variant.entity.ts");
963
+ var PurchaseOrderItemStatus;
964
+ (function (PurchaseOrderItemStatus) {
965
+ PurchaseOrderItemStatus["PENDING"] = "pending";
966
+ PurchaseOrderItemStatus["PARTIALLY_RECEIVED"] = "partially_received";
967
+ PurchaseOrderItemStatus["FULLY_RECEIVED"] = "fully_received";
968
+ PurchaseOrderItemStatus["CANCELLED"] = "cancelled";
969
+ })(PurchaseOrderItemStatus || (exports.PurchaseOrderItemStatus = PurchaseOrderItemStatus = {}));
970
+ let PurchaseOrderItem = class PurchaseOrderItem extends sequelize_typescript_1.Model {
971
+ };
972
+ exports.PurchaseOrderItem = PurchaseOrderItem;
973
+ __decorate([
974
+ (0, sequelize_typescript_1.ForeignKey)(() => purchase_order_entity_1.PurchaseOrder),
975
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
976
+ __metadata("design:type", Number)
977
+ ], PurchaseOrderItem.prototype, "purchaseOrderId", void 0);
978
+ __decorate([
979
+ (0, sequelize_typescript_1.ForeignKey)(() => product_entity_1.Product),
980
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
981
+ __metadata("design:type", Number)
982
+ ], PurchaseOrderItem.prototype, "productId", void 0);
983
+ __decorate([
984
+ (0, sequelize_typescript_1.ForeignKey)(() => product_variant_entity_1.ProductVariant),
985
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
986
+ __metadata("design:type", Number)
987
+ ], PurchaseOrderItem.prototype, "productVariantId", void 0);
988
+ __decorate([
989
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
990
+ __metadata("design:type", Number)
991
+ ], PurchaseOrderItem.prototype, "orderedQuantity", void 0);
992
+ __decorate([
993
+ (0, sequelize_typescript_1.Column)({ defaultValue: 0 }),
994
+ __metadata("design:type", Number)
995
+ ], PurchaseOrderItem.prototype, "receivedQuantity", void 0);
996
+ __decorate([
997
+ (0, sequelize_typescript_1.Column)({ defaultValue: 0 }),
998
+ __metadata("design:type", Number)
999
+ ], PurchaseOrderItem.prototype, "reservedQuantity", void 0);
1000
+ __decorate([
1001
+ (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.DECIMAL(10, 3), allowNull: false }),
1002
+ __metadata("design:type", Number)
1003
+ ], PurchaseOrderItem.prototype, "unitCostPrice", void 0);
1004
+ __decorate([
1005
+ (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.DECIMAL(10, 3), defaultValue: 0 }),
1006
+ __metadata("design:type", Number)
1007
+ ], PurchaseOrderItem.prototype, "totalCostPrice", void 0);
1008
+ __decorate([
1009
+ (0, sequelize_typescript_1.Column)({
1010
+ type: sequelize_typescript_1.DataType.ENUM(...Object.values(PurchaseOrderItemStatus)),
1011
+ defaultValue: PurchaseOrderItemStatus.PENDING,
1012
+ }),
1013
+ __metadata("design:type", String)
1014
+ ], PurchaseOrderItem.prototype, "status", void 0);
1015
+ __decorate([
1016
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
1017
+ __metadata("design:type", Number)
1018
+ ], PurchaseOrderItem.prototype, "triggerOrderId", void 0);
1019
+ __decorate([
1020
+ (0, sequelize_typescript_1.BelongsTo)(() => purchase_order_entity_1.PurchaseOrder),
1021
+ __metadata("design:type", typeof (_a = typeof purchase_order_entity_1.PurchaseOrder !== "undefined" && purchase_order_entity_1.PurchaseOrder) === "function" ? _a : Object)
1022
+ ], PurchaseOrderItem.prototype, "purchaseOrder", void 0);
1023
+ __decorate([
1024
+ (0, sequelize_typescript_1.BelongsTo)(() => product_entity_1.Product),
1025
+ __metadata("design:type", typeof (_b = typeof product_entity_1.Product !== "undefined" && product_entity_1.Product) === "function" ? _b : Object)
1026
+ ], PurchaseOrderItem.prototype, "product", void 0);
1027
+ __decorate([
1028
+ (0, sequelize_typescript_1.BelongsTo)(() => product_variant_entity_1.ProductVariant),
1029
+ __metadata("design:type", typeof (_c = typeof product_variant_entity_1.ProductVariant !== "undefined" && product_variant_entity_1.ProductVariant) === "function" ? _c : Object)
1030
+ ], PurchaseOrderItem.prototype, "variant", void 0);
1031
+ exports.PurchaseOrderItem = PurchaseOrderItem = __decorate([
1032
+ sequelize_typescript_1.Table
1033
+ ], PurchaseOrderItem);
1034
+
1035
+
1036
+ /***/ },
1037
+
1038
+ /***/ "./libs/tatayab-entities-library/src/entities/purchase-order.entity.ts"
1039
+ /*!*****************************************************************************!*\
1040
+ !*** ./libs/tatayab-entities-library/src/entities/purchase-order.entity.ts ***!
1041
+ \*****************************************************************************/
1042
+ (__unused_webpack_module, exports, __webpack_require__) {
1043
+
1044
+
1045
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
1046
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1047
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1048
+ 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;
1049
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1050
+ };
1051
+ var __metadata = (this && this.__metadata) || function (k, v) {
1052
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1053
+ };
1054
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
1055
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
1056
+ exports.PurchaseOrder = void 0;
1057
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
1058
+ const vendor_entity_1 = __webpack_require__(/*! ./vendor.entity */ "./libs/tatayab-entities-library/src/entities/vendor.entity.ts");
1059
+ const inventory_entity_1 = __webpack_require__(/*! ./inventory.entity */ "./libs/tatayab-entities-library/src/entities/inventory.entity.ts");
1060
+ const sys_user_entity_1 = __webpack_require__(/*! ./sys.user.entity */ "./libs/tatayab-entities-library/src/entities/sys.user.entity.ts");
1061
+ const purchase_order_item_entity_1 = __webpack_require__(/*! ./purchase-order-item.entity */ "./libs/tatayab-entities-library/src/entities/purchase-order-item.entity.ts");
1062
+ const purchaseOrderStatus_1 = __webpack_require__(/*! ../utils/enums/purchaseOrderStatus */ "./libs/tatayab-entities-library/src/utils/enums/purchaseOrderStatus.ts");
1063
+ let PurchaseOrder = class PurchaseOrder extends sequelize_typescript_1.Model {
1064
+ };
1065
+ exports.PurchaseOrder = PurchaseOrder;
1066
+ __decorate([
1067
+ (0, sequelize_typescript_1.Column)({ allowNull: false, unique: true }),
1068
+ __metadata("design:type", String)
1069
+ ], PurchaseOrder.prototype, "poNumber", void 0);
1070
+ __decorate([
1071
+ (0, sequelize_typescript_1.ForeignKey)(() => vendor_entity_1.Vendor),
1072
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
1073
+ __metadata("design:type", Number)
1074
+ ], PurchaseOrder.prototype, "vendorId", void 0);
1075
+ __decorate([
1076
+ (0, sequelize_typescript_1.ForeignKey)(() => inventory_entity_1.Inventory),
1077
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
1078
+ __metadata("design:type", Number)
1079
+ ], PurchaseOrder.prototype, "inventoryId", void 0);
1080
+ __decorate([
1081
+ (0, sequelize_typescript_1.Column)({
1082
+ type: sequelize_typescript_1.DataType.ENUM(...Object.values(purchaseOrderStatus_1.PurchaseOrderStatus)),
1083
+ defaultValue: purchaseOrderStatus_1.PurchaseOrderStatus.DRAFT,
1084
+ }),
1085
+ __metadata("design:type", typeof (_a = typeof purchaseOrderStatus_1.PurchaseOrderStatus !== "undefined" && purchaseOrderStatus_1.PurchaseOrderStatus) === "function" ? _a : Object)
1086
+ ], PurchaseOrder.prototype, "status", void 0);
1087
+ __decorate([
1088
+ (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.DECIMAL(10, 3), defaultValue: 0 }),
1089
+ __metadata("design:type", Number)
1090
+ ], PurchaseOrder.prototype, "totalAmount", void 0);
1091
+ __decorate([
1092
+ (0, sequelize_typescript_1.Column)({ allowNull: false, defaultValue: 'USD' }),
1093
+ __metadata("design:type", String)
1094
+ ], PurchaseOrder.prototype, "currency", void 0);
1095
+ __decorate([
1096
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
1097
+ __metadata("design:type", typeof (_b = typeof Date !== "undefined" && Date) === "function" ? _b : Object)
1098
+ ], PurchaseOrder.prototype, "expectedDeliveryDate", void 0);
1099
+ __decorate([
1100
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
1101
+ __metadata("design:type", typeof (_c = typeof Date !== "undefined" && Date) === "function" ? _c : Object)
1102
+ ], PurchaseOrder.prototype, "sentAt", void 0);
1103
+ __decorate([
1104
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
1105
+ __metadata("design:type", typeof (_d = typeof Date !== "undefined" && Date) === "function" ? _d : Object)
1106
+ ], PurchaseOrder.prototype, "closedAt", void 0);
1107
+ __decorate([
1108
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
1109
+ __metadata("design:type", typeof (_e = typeof Date !== "undefined" && Date) === "function" ? _e : Object)
1110
+ ], PurchaseOrder.prototype, "cancelledAt", void 0);
1111
+ __decorate([
1112
+ (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.TEXT, allowNull: true }),
1113
+ __metadata("design:type", String)
1114
+ ], PurchaseOrder.prototype, "cancellationReason", void 0);
1115
+ __decorate([
1116
+ (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.TEXT, allowNull: true }),
1117
+ __metadata("design:type", String)
1118
+ ], PurchaseOrder.prototype, "notes", void 0);
1119
+ __decorate([
1120
+ (0, sequelize_typescript_1.ForeignKey)(() => sys_user_entity_1.SysUser),
1121
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
1122
+ __metadata("design:type", Number)
1123
+ ], PurchaseOrder.prototype, "createdBy", void 0);
1124
+ __decorate([
1125
+ (0, sequelize_typescript_1.ForeignKey)(() => sys_user_entity_1.SysUser),
1126
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
1127
+ __metadata("design:type", Number)
1128
+ ], PurchaseOrder.prototype, "sentBy", void 0);
1129
+ __decorate([
1130
+ (0, sequelize_typescript_1.BelongsTo)(() => vendor_entity_1.Vendor),
1131
+ __metadata("design:type", typeof (_f = typeof vendor_entity_1.Vendor !== "undefined" && vendor_entity_1.Vendor) === "function" ? _f : Object)
1132
+ ], PurchaseOrder.prototype, "vendor", void 0);
1133
+ __decorate([
1134
+ (0, sequelize_typescript_1.BelongsTo)(() => inventory_entity_1.Inventory),
1135
+ __metadata("design:type", typeof (_g = typeof inventory_entity_1.Inventory !== "undefined" && inventory_entity_1.Inventory) === "function" ? _g : Object)
1136
+ ], PurchaseOrder.prototype, "inventory", void 0);
1137
+ __decorate([
1138
+ (0, sequelize_typescript_1.BelongsTo)(() => sys_user_entity_1.SysUser, { foreignKey: 'createdBy', as: 'creator' }),
1139
+ __metadata("design:type", typeof (_h = typeof sys_user_entity_1.SysUser !== "undefined" && sys_user_entity_1.SysUser) === "function" ? _h : Object)
1140
+ ], PurchaseOrder.prototype, "creator", void 0);
1141
+ __decorate([
1142
+ (0, sequelize_typescript_1.BelongsTo)(() => sys_user_entity_1.SysUser, { foreignKey: 'sentBy', as: 'sender' }),
1143
+ __metadata("design:type", typeof (_j = typeof sys_user_entity_1.SysUser !== "undefined" && sys_user_entity_1.SysUser) === "function" ? _j : Object)
1144
+ ], PurchaseOrder.prototype, "sender", void 0);
1145
+ __decorate([
1146
+ (0, sequelize_typescript_1.HasMany)(() => purchase_order_item_entity_1.PurchaseOrderItem),
1147
+ __metadata("design:type", Array)
1148
+ ], PurchaseOrder.prototype, "items", void 0);
1149
+ exports.PurchaseOrder = PurchaseOrder = __decorate([
1150
+ sequelize_typescript_1.Table
1151
+ ], PurchaseOrder);
1152
+
1153
+
1154
+ /***/ },
1155
+
1156
+ /***/ "./libs/tatayab-entities-library/src/entities/role-permission.entity.ts"
1157
+ /*!******************************************************************************!*\
1158
+ !*** ./libs/tatayab-entities-library/src/entities/role-permission.entity.ts ***!
1159
+ \******************************************************************************/
1160
+ (__unused_webpack_module, exports, __webpack_require__) {
1161
+
1162
+
1163
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
1164
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1165
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1166
+ 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;
1167
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1168
+ };
1169
+ var __metadata = (this && this.__metadata) || function (k, v) {
1170
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1171
+ };
1172
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
1173
+ exports.RolePermission = void 0;
1174
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
1175
+ const sys_role_entity_1 = __webpack_require__(/*! ./sys.role.entity */ "./libs/tatayab-entities-library/src/entities/sys.role.entity.ts");
1176
+ const permission_entity_1 = __webpack_require__(/*! ./permission.entity */ "./libs/tatayab-entities-library/src/entities/permission.entity.ts");
1177
+ let RolePermission = class RolePermission extends sequelize_typescript_1.Model {
1178
+ };
1179
+ exports.RolePermission = RolePermission;
1180
+ __decorate([
1181
+ (0, sequelize_typescript_1.ForeignKey)(() => sys_role_entity_1.SysRole),
1182
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
1183
+ __metadata("design:type", Number)
1184
+ ], RolePermission.prototype, "sysRoleId", void 0);
1185
+ __decorate([
1186
+ (0, sequelize_typescript_1.ForeignKey)(() => permission_entity_1.Permission),
1187
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
1188
+ __metadata("design:type", Number)
1189
+ ], RolePermission.prototype, "permissionId", void 0);
1190
+ exports.RolePermission = RolePermission = __decorate([
1191
+ sequelize_typescript_1.Table
1192
+ ], RolePermission);
1193
+
1194
+
1195
+ /***/ },
1196
+
1197
+ /***/ "./libs/tatayab-entities-library/src/entities/stock-movement.entity.ts"
1198
+ /*!*****************************************************************************!*\
1199
+ !*** ./libs/tatayab-entities-library/src/entities/stock-movement.entity.ts ***!
1200
+ \*****************************************************************************/
1201
+ (__unused_webpack_module, exports, __webpack_require__) {
1202
+
1203
+
1204
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
1205
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1206
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1207
+ 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;
1208
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1209
+ };
1210
+ var __metadata = (this && this.__metadata) || function (k, v) {
1211
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1212
+ };
1213
+ var _a, _b, _c, _d, _e;
1214
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
1215
+ exports.StockMovement = void 0;
1216
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
1217
+ const inventory_entity_1 = __webpack_require__(/*! ./inventory.entity */ "./libs/tatayab-entities-library/src/entities/inventory.entity.ts");
1218
+ const product_entity_1 = __webpack_require__(/*! ./product.entity */ "./libs/tatayab-entities-library/src/entities/product.entity.ts");
1219
+ const product_variant_entity_1 = __webpack_require__(/*! ./product-variant.entity */ "./libs/tatayab-entities-library/src/entities/product-variant.entity.ts");
1220
+ const sys_user_entity_1 = __webpack_require__(/*! ./sys.user.entity */ "./libs/tatayab-entities-library/src/entities/sys.user.entity.ts");
1221
+ const stockMovementType_1 = __webpack_require__(/*! ../utils/enums/stockMovementType */ "./libs/tatayab-entities-library/src/utils/enums/stockMovementType.ts");
1222
+ let StockMovement = class StockMovement extends sequelize_typescript_1.Model {
1223
+ };
1224
+ exports.StockMovement = StockMovement;
1225
+ __decorate([
1226
+ (0, sequelize_typescript_1.ForeignKey)(() => inventory_entity_1.Inventory),
1227
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
1228
+ __metadata("design:type", Number)
1229
+ ], StockMovement.prototype, "inventoryId", void 0);
1230
+ __decorate([
1231
+ (0, sequelize_typescript_1.ForeignKey)(() => product_entity_1.Product),
1232
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
1233
+ __metadata("design:type", Number)
1234
+ ], StockMovement.prototype, "productId", void 0);
1235
+ __decorate([
1236
+ (0, sequelize_typescript_1.ForeignKey)(() => product_variant_entity_1.ProductVariant),
1237
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
1238
+ __metadata("design:type", Number)
1239
+ ], StockMovement.prototype, "productVariantId", void 0);
1240
+ __decorate([
1241
+ (0, sequelize_typescript_1.Column)({
1242
+ type: sequelize_typescript_1.DataType.ENUM(...Object.values(stockMovementType_1.StockMovementType)),
1243
+ allowNull: false,
1244
+ }),
1245
+ __metadata("design:type", typeof (_a = typeof stockMovementType_1.StockMovementType !== "undefined" && stockMovementType_1.StockMovementType) === "function" ? _a : Object)
1246
+ ], StockMovement.prototype, "movementType", void 0);
1247
+ __decorate([
1248
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
1249
+ __metadata("design:type", Number)
1250
+ ], StockMovement.prototype, "quantity", void 0);
1251
+ __decorate([
1252
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
1253
+ __metadata("design:type", Number)
1254
+ ], StockMovement.prototype, "quantityBefore", void 0);
1255
+ __decorate([
1256
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
1257
+ __metadata("design:type", Number)
1258
+ ], StockMovement.prototype, "quantityAfter", void 0);
1259
+ __decorate([
1260
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
1261
+ __metadata("design:type", String)
1262
+ ], StockMovement.prototype, "referenceType", void 0);
1263
+ __decorate([
1264
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
1265
+ __metadata("design:type", Number)
1266
+ ], StockMovement.prototype, "referenceId", void 0);
1267
+ __decorate([
1268
+ (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.TEXT, allowNull: true }),
1269
+ __metadata("design:type", String)
1270
+ ], StockMovement.prototype, "notes", void 0);
1271
+ __decorate([
1272
+ (0, sequelize_typescript_1.ForeignKey)(() => sys_user_entity_1.SysUser),
1273
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
1274
+ __metadata("design:type", Number)
1275
+ ], StockMovement.prototype, "createdBy", void 0);
1276
+ __decorate([
1277
+ (0, sequelize_typescript_1.BelongsTo)(() => inventory_entity_1.Inventory),
1278
+ __metadata("design:type", typeof (_b = typeof inventory_entity_1.Inventory !== "undefined" && inventory_entity_1.Inventory) === "function" ? _b : Object)
1279
+ ], StockMovement.prototype, "inventory", void 0);
1280
+ __decorate([
1281
+ (0, sequelize_typescript_1.BelongsTo)(() => product_entity_1.Product),
1282
+ __metadata("design:type", typeof (_c = typeof product_entity_1.Product !== "undefined" && product_entity_1.Product) === "function" ? _c : Object)
1283
+ ], StockMovement.prototype, "product", void 0);
1284
+ __decorate([
1285
+ (0, sequelize_typescript_1.BelongsTo)(() => product_variant_entity_1.ProductVariant),
1286
+ __metadata("design:type", typeof (_d = typeof product_variant_entity_1.ProductVariant !== "undefined" && product_variant_entity_1.ProductVariant) === "function" ? _d : Object)
1287
+ ], StockMovement.prototype, "variant", void 0);
1288
+ __decorate([
1289
+ (0, sequelize_typescript_1.BelongsTo)(() => sys_user_entity_1.SysUser),
1290
+ __metadata("design:type", typeof (_e = typeof sys_user_entity_1.SysUser !== "undefined" && sys_user_entity_1.SysUser) === "function" ? _e : Object)
1291
+ ], StockMovement.prototype, "createdByUser", void 0);
1292
+ exports.StockMovement = StockMovement = __decorate([
1293
+ sequelize_typescript_1.Table
1294
+ ], StockMovement);
1295
+
1296
+
1297
+ /***/ },
1298
+
1299
+ /***/ "./libs/tatayab-entities-library/src/entities/store-inventory.entity.ts"
1300
+ /*!******************************************************************************!*\
1301
+ !*** ./libs/tatayab-entities-library/src/entities/store-inventory.entity.ts ***!
1302
+ \******************************************************************************/
1303
+ (__unused_webpack_module, exports, __webpack_require__) {
1304
+
1305
+
1306
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
1307
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1308
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1309
+ 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;
1310
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1311
+ };
1312
+ var __metadata = (this && this.__metadata) || function (k, v) {
1313
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1314
+ };
1315
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
1316
+ exports.StoreInventory = void 0;
1317
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
1318
+ const store_entity_1 = __webpack_require__(/*! ./store.entity */ "./libs/tatayab-entities-library/src/entities/store.entity.ts");
1319
+ const inventory_entity_1 = __webpack_require__(/*! ./inventory.entity */ "./libs/tatayab-entities-library/src/entities/inventory.entity.ts");
1320
+ let StoreInventory = class StoreInventory extends sequelize_typescript_1.Model {
1321
+ };
1322
+ exports.StoreInventory = StoreInventory;
1323
+ __decorate([
1324
+ (0, sequelize_typescript_1.ForeignKey)(() => store_entity_1.Store),
1325
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
1326
+ __metadata("design:type", Number)
1327
+ ], StoreInventory.prototype, "storeId", void 0);
1328
+ __decorate([
1329
+ (0, sequelize_typescript_1.ForeignKey)(() => inventory_entity_1.Inventory),
1330
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
1331
+ __metadata("design:type", Number)
1332
+ ], StoreInventory.prototype, "inventoryId", void 0);
1333
+ __decorate([
1334
+ (0, sequelize_typescript_1.Column)({ defaultValue: 1 }),
1335
+ __metadata("design:type", Number)
1336
+ ], StoreInventory.prototype, "priority", void 0);
1337
+ exports.StoreInventory = StoreInventory = __decorate([
1338
+ sequelize_typescript_1.Table
1339
+ ], StoreInventory);
1340
+
1341
+
1342
+ /***/ },
1343
+
1344
+ /***/ "./libs/tatayab-entities-library/src/entities/store.entity.ts"
1345
+ /*!********************************************************************!*\
1346
+ !*** ./libs/tatayab-entities-library/src/entities/store.entity.ts ***!
1347
+ \********************************************************************/
1348
+ (__unused_webpack_module, exports, __webpack_require__) {
1349
+
1350
+
1351
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
1352
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1353
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1354
+ 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;
1355
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1356
+ };
1357
+ var __metadata = (this && this.__metadata) || function (k, v) {
1358
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1359
+ };
1360
+ var _a, _b;
1361
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
1362
+ exports.Store = void 0;
1363
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
1364
+ const country_entity_1 = __webpack_require__(/*! ./country.entity */ "./libs/tatayab-entities-library/src/entities/country.entity.ts");
1365
+ const product_store_entity_1 = __webpack_require__(/*! ./product-store.entity */ "./libs/tatayab-entities-library/src/entities/product-store.entity.ts");
1366
+ const product_entity_1 = __webpack_require__(/*! ./product.entity */ "./libs/tatayab-entities-library/src/entities/product.entity.ts");
1367
+ const store_inventory_entity_1 = __webpack_require__(/*! ./store-inventory.entity */ "./libs/tatayab-entities-library/src/entities/store-inventory.entity.ts");
1368
+ const inventory_entity_1 = __webpack_require__(/*! ./inventory.entity */ "./libs/tatayab-entities-library/src/entities/inventory.entity.ts");
1369
+ const status_1 = __webpack_require__(/*! ../utils/enums/status */ "./libs/tatayab-entities-library/src/utils/enums/status.ts");
1370
+ let Store = class Store extends sequelize_typescript_1.Model {
1371
+ };
1372
+ exports.Store = Store;
1373
+ __decorate([
1374
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
1375
+ __metadata("design:type", String)
1376
+ ], Store.prototype, "nameEn", void 0);
1377
+ __decorate([
1378
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
1379
+ __metadata("design:type", String)
1380
+ ], Store.prototype, "nameAr", void 0);
1381
+ __decorate([
1382
+ (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.TEXT, allowNull: true }),
1383
+ __metadata("design:type", String)
1384
+ ], Store.prototype, "descriptionEn", void 0);
1385
+ __decorate([
1386
+ (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.TEXT, allowNull: true }),
1387
+ __metadata("design:type", String)
1388
+ ], Store.prototype, "descriptionAr", void 0);
1389
+ __decorate([
1390
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
1391
+ __metadata("design:type", String)
1392
+ ], Store.prototype, "logo", void 0);
1393
+ __decorate([
1394
+ (0, sequelize_typescript_1.Column)({ allowNull: false, defaultValue: 'USD' }),
1395
+ __metadata("design:type", String)
1396
+ ], Store.prototype, "currency", void 0);
1397
+ __decorate([
1398
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
1399
+ __metadata("design:type", String)
1400
+ ], Store.prototype, "currencySymbolEn", void 0);
1401
+ __decorate([
1402
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
1403
+ __metadata("design:type", String)
1404
+ ], Store.prototype, "currencySymbolAr", void 0);
1405
+ __decorate([
1406
+ (0, sequelize_typescript_1.ForeignKey)(() => country_entity_1.Country),
1407
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
1408
+ __metadata("design:type", Number)
1409
+ ], Store.prototype, "countryId", void 0);
1410
+ __decorate([
1411
+ (0, sequelize_typescript_1.Column)({ defaultValue: false }),
1412
+ __metadata("design:type", Boolean)
1413
+ ], Store.prototype, "isGlobal", void 0);
1414
+ __decorate([
1415
+ (0, sequelize_typescript_1.Column)({
1416
+ type: sequelize_typescript_1.DataType.ENUM(...Object.values(status_1.Status)),
1417
+ defaultValue: status_1.Status.ACTIVE,
1418
+ }),
1419
+ __metadata("design:type", typeof (_a = typeof status_1.Status !== "undefined" && status_1.Status) === "function" ? _a : Object)
1420
+ ], Store.prototype, "status", void 0);
1421
+ __decorate([
1422
+ (0, sequelize_typescript_1.BelongsTo)(() => country_entity_1.Country),
1423
+ __metadata("design:type", typeof (_b = typeof country_entity_1.Country !== "undefined" && country_entity_1.Country) === "function" ? _b : Object)
1424
+ ], Store.prototype, "country", void 0);
1425
+ __decorate([
1426
+ (0, sequelize_typescript_1.BelongsToMany)(() => product_entity_1.Product, () => product_store_entity_1.ProductStore),
1427
+ __metadata("design:type", Array)
1428
+ ], Store.prototype, "products", void 0);
1429
+ __decorate([
1430
+ (0, sequelize_typescript_1.BelongsToMany)(() => inventory_entity_1.Inventory, () => store_inventory_entity_1.StoreInventory),
1431
+ __metadata("design:type", Array)
1432
+ ], Store.prototype, "inventories", void 0);
1433
+ exports.Store = Store = __decorate([
1434
+ sequelize_typescript_1.Table
1435
+ ], Store);
1436
+
1437
+
1438
+ /***/ },
1439
+
1440
+ /***/ "./libs/tatayab-entities-library/src/entities/sys.role.entity.ts"
1441
+ /*!***********************************************************************!*\
1442
+ !*** ./libs/tatayab-entities-library/src/entities/sys.role.entity.ts ***!
1443
+ \***********************************************************************/
1444
+ (__unused_webpack_module, exports, __webpack_require__) {
1445
+
1446
+
1447
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
1448
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1449
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1450
+ 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;
1451
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1452
+ };
1453
+ var __metadata = (this && this.__metadata) || function (k, v) {
1454
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1455
+ };
1456
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
1457
+ exports.SysRole = void 0;
1458
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
1459
+ const permission_entity_1 = __webpack_require__(/*! ./permission.entity */ "./libs/tatayab-entities-library/src/entities/permission.entity.ts");
1460
+ const role_permission_entity_1 = __webpack_require__(/*! ./role-permission.entity */ "./libs/tatayab-entities-library/src/entities/role-permission.entity.ts");
1461
+ let SysRole = class SysRole extends sequelize_typescript_1.Model {
1462
+ };
1463
+ exports.SysRole = SysRole;
1464
+ __decorate([
1465
+ (0, sequelize_typescript_1.Column)({ allowNull: false, unique: true }),
1466
+ __metadata("design:type", String)
1467
+ ], SysRole.prototype, "name", void 0);
1468
+ __decorate([
1469
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
1470
+ __metadata("design:type", String)
1471
+ ], SysRole.prototype, "displayName", void 0);
1472
+ __decorate([
1473
+ (0, sequelize_typescript_1.BelongsToMany)(() => permission_entity_1.Permission, () => role_permission_entity_1.RolePermission),
1474
+ __metadata("design:type", Array)
1475
+ ], SysRole.prototype, "permissions", void 0);
1476
+ exports.SysRole = SysRole = __decorate([
1477
+ sequelize_typescript_1.Table
1478
+ ], SysRole);
1479
+
1480
+
1481
+ /***/ },
1482
+
1483
+ /***/ "./libs/tatayab-entities-library/src/entities/sys.user.entity.ts"
1484
+ /*!***********************************************************************!*\
1485
+ !*** ./libs/tatayab-entities-library/src/entities/sys.user.entity.ts ***!
1486
+ \***********************************************************************/
1487
+ (__unused_webpack_module, exports, __webpack_require__) {
1488
+
1489
+
1490
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
1491
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1492
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1493
+ 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;
1494
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1495
+ };
1496
+ var __metadata = (this && this.__metadata) || function (k, v) {
1497
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1498
+ };
1499
+ var _a, _b, _c;
1500
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
1501
+ exports.SysUser = void 0;
1502
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
1503
+ const sys_role_entity_1 = __webpack_require__(/*! ./sys.role.entity */ "./libs/tatayab-entities-library/src/entities/sys.role.entity.ts");
1504
+ const status_1 = __webpack_require__(/*! ../utils/enums/status */ "./libs/tatayab-entities-library/src/utils/enums/status.ts");
1505
+ let SysUser = class SysUser extends sequelize_typescript_1.Model {
1506
+ };
1507
+ exports.SysUser = SysUser;
1508
+ __decorate([
1509
+ sequelize_typescript_1.Column,
1510
+ __metadata("design:type", String)
1511
+ ], SysUser.prototype, "name", void 0);
1512
+ __decorate([
1513
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
1514
+ __metadata("design:type", String)
1515
+ ], SysUser.prototype, "username", void 0);
1516
+ __decorate([
1517
+ (0, sequelize_typescript_1.Column)({ allowNull: false, unique: true }),
1518
+ __metadata("design:type", String)
1519
+ ], SysUser.prototype, "email", void 0);
1520
+ __decorate([
1521
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
1522
+ __metadata("design:type", String)
1523
+ ], SysUser.prototype, "phoneExt", void 0);
1524
+ __decorate([
1525
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
1526
+ __metadata("design:type", String)
1527
+ ], SysUser.prototype, "phone", void 0);
1528
+ __decorate([
1529
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
1530
+ __metadata("design:type", String)
1531
+ ], SysUser.prototype, "password", void 0);
1532
+ __decorate([
1533
+ sequelize_typescript_1.Column,
1534
+ __metadata("design:type", String)
1535
+ ], SysUser.prototype, "profilePicture", void 0);
1536
+ __decorate([
1537
+ (0, sequelize_typescript_1.ForeignKey)(() => sys_role_entity_1.SysRole),
1538
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
1539
+ __metadata("design:type", Number)
1540
+ ], SysUser.prototype, "roleId", void 0);
1541
+ __decorate([
1542
+ (0, sequelize_typescript_1.Column)({
1543
+ type: sequelize_typescript_1.DataType.ENUM(...Object.values(status_1.Status)),
1544
+ defaultValue: status_1.Status.ACTIVE,
1545
+ }),
1546
+ __metadata("design:type", typeof (_a = typeof status_1.Status !== "undefined" && status_1.Status) === "function" ? _a : Object)
1547
+ ], SysUser.prototype, "status", void 0);
1548
+ __decorate([
1549
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
1550
+ __metadata("design:type", typeof (_b = typeof Date !== "undefined" && Date) === "function" ? _b : Object)
1551
+ ], SysUser.prototype, "lastLogin", void 0);
1552
+ __decorate([
1553
+ (0, sequelize_typescript_1.BelongsTo)(() => sys_role_entity_1.SysRole),
1554
+ __metadata("design:type", typeof (_c = typeof sys_role_entity_1.SysRole !== "undefined" && sys_role_entity_1.SysRole) === "function" ? _c : Object)
1555
+ ], SysUser.prototype, "role", void 0);
1556
+ exports.SysUser = SysUser = __decorate([
1557
+ sequelize_typescript_1.Table
1558
+ ], SysUser);
1559
+
1560
+
1561
+ /***/ },
1562
+
1563
+ /***/ "./libs/tatayab-entities-library/src/entities/tag.entity.ts"
1564
+ /*!******************************************************************!*\
1565
+ !*** ./libs/tatayab-entities-library/src/entities/tag.entity.ts ***!
1566
+ \******************************************************************/
1567
+ (__unused_webpack_module, exports, __webpack_require__) {
1568
+
1569
+
1570
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
1571
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1572
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1573
+ 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;
1574
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1575
+ };
1576
+ var __metadata = (this && this.__metadata) || function (k, v) {
1577
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1578
+ };
1579
+ var _a;
1580
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
1581
+ exports.Tag = void 0;
1582
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
1583
+ const product_entity_1 = __webpack_require__(/*! ./product.entity */ "./libs/tatayab-entities-library/src/entities/product.entity.ts");
1584
+ const product_tag_entity_1 = __webpack_require__(/*! ./product-tag.entity */ "./libs/tatayab-entities-library/src/entities/product-tag.entity.ts");
1585
+ const status_1 = __webpack_require__(/*! ../utils/enums/status */ "./libs/tatayab-entities-library/src/utils/enums/status.ts");
1586
+ let Tag = class Tag extends sequelize_typescript_1.Model {
1587
+ };
1588
+ exports.Tag = Tag;
1589
+ __decorate([
1590
+ (0, sequelize_typescript_1.Column)({ allowNull: false, unique: true }),
1591
+ __metadata("design:type", String)
1592
+ ], Tag.prototype, "slug", void 0);
1593
+ __decorate([
1594
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
1595
+ __metadata("design:type", String)
1596
+ ], Tag.prototype, "nameEn", void 0);
1597
+ __decorate([
1598
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
1599
+ __metadata("design:type", String)
1600
+ ], Tag.prototype, "nameAr", void 0);
1601
+ __decorate([
1602
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
1603
+ __metadata("design:type", String)
1604
+ ], Tag.prototype, "color", void 0);
1605
+ __decorate([
1606
+ (0, sequelize_typescript_1.Column)({ defaultValue: 0 }),
1607
+ __metadata("design:type", Number)
1608
+ ], Tag.prototype, "sortOrder", void 0);
1609
+ __decorate([
1610
+ (0, sequelize_typescript_1.Column)({
1611
+ type: sequelize_typescript_1.DataType.ENUM(...Object.values(status_1.Status)),
1612
+ defaultValue: status_1.Status.ACTIVE,
1613
+ }),
1614
+ __metadata("design:type", typeof (_a = typeof status_1.Status !== "undefined" && status_1.Status) === "function" ? _a : Object)
1615
+ ], Tag.prototype, "status", void 0);
1616
+ __decorate([
1617
+ (0, sequelize_typescript_1.BelongsToMany)(() => product_entity_1.Product, () => product_tag_entity_1.ProductTag),
1618
+ __metadata("design:type", Array)
1619
+ ], Tag.prototype, "products", void 0);
1620
+ exports.Tag = Tag = __decorate([
1621
+ sequelize_typescript_1.Table
1622
+ ], Tag);
1623
+
1624
+
1625
+ /***/ },
1626
+
1627
+ /***/ "./libs/tatayab-entities-library/src/entities/user.entity.ts"
1628
+ /*!*******************************************************************!*\
1629
+ !*** ./libs/tatayab-entities-library/src/entities/user.entity.ts ***!
1630
+ \*******************************************************************/
1631
+ (__unused_webpack_module, exports, __webpack_require__) {
1632
+
1633
+
1634
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
1635
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1636
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1637
+ 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;
1638
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1639
+ };
1640
+ var __metadata = (this && this.__metadata) || function (k, v) {
1641
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1642
+ };
1643
+ var _a, _b, _c, _d, _e, _f;
1644
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
1645
+ exports.User = void 0;
1646
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
1647
+ const status_1 = __webpack_require__(/*! ../utils/enums/status */ "./libs/tatayab-entities-library/src/utils/enums/status.ts");
1648
+ const language_1 = __webpack_require__(/*! ../utils/enums/language */ "./libs/tatayab-entities-library/src/utils/enums/language.ts");
1649
+ const country_entity_1 = __webpack_require__(/*! ./country.entity */ "./libs/tatayab-entities-library/src/entities/country.entity.ts");
1650
+ const gender_1 = __webpack_require__(/*! ../utils/enums/gender */ "./libs/tatayab-entities-library/src/utils/enums/gender.ts");
1651
+ let User = class User extends sequelize_typescript_1.Model {
1652
+ };
1653
+ exports.User = User;
1654
+ __decorate([
1655
+ sequelize_typescript_1.Column,
1656
+ __metadata("design:type", String)
1657
+ ], User.prototype, "firstName", void 0);
1658
+ __decorate([
1659
+ sequelize_typescript_1.Column,
1660
+ __metadata("design:type", String)
1661
+ ], User.prototype, "lastName", void 0);
1662
+ __decorate([
1663
+ sequelize_typescript_1.Column,
1664
+ __metadata("design:type", String)
1665
+ ], User.prototype, "password", void 0);
1666
+ __decorate([
1667
+ (0, sequelize_typescript_1.Column)({
1668
+ type: sequelize_typescript_1.DataType.ENUM(...Object.values(status_1.Status)),
1669
+ defaultValue: status_1.Status.ACTIVE,
1670
+ }),
1671
+ __metadata("design:type", typeof (_a = typeof status_1.Status !== "undefined" && status_1.Status) === "function" ? _a : Object)
1672
+ ], User.prototype, "status", void 0);
1673
+ __decorate([
1674
+ (0, sequelize_typescript_1.Column)({ allowNull: false, validate: { isEmail: { msg: 'Invalid Email' } } }),
1675
+ __metadata("design:type", String)
1676
+ ], User.prototype, "email", void 0);
1677
+ __decorate([
1678
+ sequelize_typescript_1.Column,
1679
+ __metadata("design:type", String)
1680
+ ], User.prototype, "phone", void 0);
1681
+ __decorate([
1682
+ sequelize_typescript_1.Column,
1683
+ __metadata("design:type", String)
1684
+ ], User.prototype, "phoneExt", void 0);
1685
+ __decorate([
1686
+ sequelize_typescript_1.Column,
1687
+ __metadata("design:type", typeof (_b = typeof Date !== "undefined" && Date) === "function" ? _b : Object)
1688
+ ], User.prototype, "birthday", void 0);
1689
+ __decorate([
1690
+ sequelize_typescript_1.Column,
1691
+ __metadata("design:type", String)
1692
+ ], User.prototype, "facebookId", void 0);
1693
+ __decorate([
1694
+ sequelize_typescript_1.Column,
1695
+ __metadata("design:type", String)
1696
+ ], User.prototype, "googleId", void 0);
1697
+ __decorate([
1698
+ sequelize_typescript_1.Column,
1699
+ __metadata("design:type", String)
1700
+ ], User.prototype, "appleId", void 0);
1701
+ __decorate([
1702
+ (0, sequelize_typescript_1.Column)({
1703
+ type: sequelize_typescript_1.DataType.ENUM(...Object.values(language_1.Language)),
1704
+ defaultValue: language_1.Language.ENGLISH,
1705
+ }),
1706
+ __metadata("design:type", typeof (_c = typeof language_1.Language !== "undefined" && language_1.Language) === "function" ? _c : Object)
1707
+ ], User.prototype, "preferredLanguage", void 0);
1708
+ __decorate([
1709
+ (0, sequelize_typescript_1.ForeignKey)(() => country_entity_1.Country),
1710
+ sequelize_typescript_1.Column,
1711
+ __metadata("design:type", Number)
1712
+ ], User.prototype, "preferredCountryId", void 0);
1713
+ __decorate([
1714
+ sequelize_typescript_1.Column,
1715
+ __metadata("design:type", String)
1716
+ ], User.prototype, "profilePic", void 0);
1717
+ __decorate([
1718
+ sequelize_typescript_1.Column,
1719
+ __metadata("design:type", typeof (_d = typeof Date !== "undefined" && Date) === "function" ? _d : Object)
1720
+ ], User.prototype, "lastLogin", void 0);
1721
+ __decorate([
1722
+ (0, sequelize_typescript_1.Column)({ allowNull: false, defaultValue: false }),
1723
+ __metadata("design:type", Boolean)
1724
+ ], User.prototype, "isBlocked", void 0);
1725
+ __decorate([
1726
+ (0, sequelize_typescript_1.Column)({ defaultValue: false }),
1727
+ __metadata("design:type", Boolean)
1728
+ ], User.prototype, "isVerified", void 0);
1729
+ __decorate([
1730
+ sequelize_typescript_1.Column,
1731
+ __metadata("design:type", String)
1732
+ ], User.prototype, "refCode", void 0);
1733
+ __decorate([
1734
+ (0, sequelize_typescript_1.Column)({
1735
+ type: sequelize_typescript_1.DataType.ENUM(...Object.values(gender_1.Gender)),
1736
+ defaultValue: gender_1.Gender.PREFER_NOT_TO_SAY,
1737
+ }),
1738
+ __metadata("design:type", typeof (_e = typeof gender_1.Gender !== "undefined" && gender_1.Gender) === "function" ? _e : Object)
1739
+ ], User.prototype, "gender", void 0);
1740
+ __decorate([
1741
+ (0, sequelize_typescript_1.BelongsTo)(() => country_entity_1.Country),
1742
+ __metadata("design:type", typeof (_f = typeof country_entity_1.Country !== "undefined" && country_entity_1.Country) === "function" ? _f : Object)
1743
+ ], User.prototype, "country", void 0);
1744
+ exports.User = User = __decorate([
1745
+ sequelize_typescript_1.Table
1746
+ ], User);
1747
+
1748
+
1749
+ /***/ },
1750
+
1751
+ /***/ "./libs/tatayab-entities-library/src/entities/userDevice.entity.ts"
1752
+ /*!*************************************************************************!*\
1753
+ !*** ./libs/tatayab-entities-library/src/entities/userDevice.entity.ts ***!
1754
+ \*************************************************************************/
1755
+ (__unused_webpack_module, exports, __webpack_require__) {
1756
+
1757
+
1758
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
1759
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1760
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1761
+ 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;
1762
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1763
+ };
1764
+ var __metadata = (this && this.__metadata) || function (k, v) {
1765
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1766
+ };
1767
+ var _a, _b;
1768
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
1769
+ exports.UserDevice = void 0;
1770
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
1771
+ const user_entity_1 = __webpack_require__(/*! ./user.entity */ "./libs/tatayab-entities-library/src/entities/user.entity.ts");
1772
+ const status_1 = __webpack_require__(/*! ../utils/enums/status */ "./libs/tatayab-entities-library/src/utils/enums/status.ts");
1773
+ const osName_1 = __webpack_require__(/*! ../utils/enums/osName */ "./libs/tatayab-entities-library/src/utils/enums/osName.ts");
1774
+ let UserDevice = class UserDevice extends sequelize_typescript_1.Model {
1775
+ };
1776
+ exports.UserDevice = UserDevice;
1777
+ __decorate([
1778
+ (0, sequelize_typescript_1.ForeignKey)(() => user_entity_1.User),
1779
+ sequelize_typescript_1.Column,
1780
+ __metadata("design:type", Number)
1781
+ ], UserDevice.prototype, "userId", void 0);
1782
+ __decorate([
1783
+ sequelize_typescript_1.Column,
1784
+ __metadata("design:type", String)
1785
+ ], UserDevice.prototype, "deviceId", void 0);
1786
+ __decorate([
1787
+ sequelize_typescript_1.Column,
1788
+ __metadata("design:type", String)
1789
+ ], UserDevice.prototype, "fcmToken", void 0);
1790
+ __decorate([
1791
+ (0, sequelize_typescript_1.Column)({
1792
+ type: sequelize_typescript_1.DataType.ENUM(...Object.values(status_1.Status)),
1793
+ defaultValue: status_1.Status.ACTIVE,
1794
+ }),
1795
+ __metadata("design:type", typeof (_a = typeof status_1.Status !== "undefined" && status_1.Status) === "function" ? _a : Object)
1796
+ ], UserDevice.prototype, "status", void 0);
1797
+ __decorate([
1798
+ (0, sequelize_typescript_1.Column)({
1799
+ type: sequelize_typescript_1.DataType.ENUM(...Object.values(osName_1.OsName)),
1800
+ allowNull: true,
1801
+ }),
1802
+ __metadata("design:type", String)
1803
+ ], UserDevice.prototype, "osSystem", void 0);
1804
+ __decorate([
1805
+ (0, sequelize_typescript_1.BelongsTo)(() => user_entity_1.User),
1806
+ __metadata("design:type", typeof (_b = typeof user_entity_1.User !== "undefined" && user_entity_1.User) === "function" ? _b : Object)
1807
+ ], UserDevice.prototype, "user", void 0);
1808
+ exports.UserDevice = UserDevice = __decorate([
1809
+ sequelize_typescript_1.Table
1810
+ ], UserDevice);
1811
+
1812
+
1813
+ /***/ },
1814
+
1815
+ /***/ "./libs/tatayab-entities-library/src/entities/variant-option.entity.ts"
1816
+ /*!*****************************************************************************!*\
1817
+ !*** ./libs/tatayab-entities-library/src/entities/variant-option.entity.ts ***!
1818
+ \*****************************************************************************/
1819
+ (__unused_webpack_module, exports, __webpack_require__) {
1820
+
1821
+
1822
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
1823
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1824
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1825
+ 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;
1826
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1827
+ };
1828
+ var __metadata = (this && this.__metadata) || function (k, v) {
1829
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1830
+ };
1831
+ var _a, _b;
1832
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
1833
+ exports.VariantOption = void 0;
1834
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
1835
+ const variant_type_entity_1 = __webpack_require__(/*! ./variant-type.entity */ "./libs/tatayab-entities-library/src/entities/variant-type.entity.ts");
1836
+ const status_1 = __webpack_require__(/*! ../utils/enums/status */ "./libs/tatayab-entities-library/src/utils/enums/status.ts");
1837
+ let VariantOption = class VariantOption extends sequelize_typescript_1.Model {
1838
+ };
1839
+ exports.VariantOption = VariantOption;
1840
+ __decorate([
1841
+ (0, sequelize_typescript_1.ForeignKey)(() => variant_type_entity_1.VariantType),
1842
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
1843
+ __metadata("design:type", Number)
1844
+ ], VariantOption.prototype, "variantTypeId", void 0);
1845
+ __decorate([
1846
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
1847
+ __metadata("design:type", String)
1848
+ ], VariantOption.prototype, "nameEn", void 0);
1849
+ __decorate([
1850
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
1851
+ __metadata("design:type", String)
1852
+ ], VariantOption.prototype, "nameAr", void 0);
1853
+ __decorate([
1854
+ (0, sequelize_typescript_1.Column)({ defaultValue: 0 }),
1855
+ __metadata("design:type", Number)
1856
+ ], VariantOption.prototype, "sortOrder", void 0);
1857
+ __decorate([
1858
+ (0, sequelize_typescript_1.Column)({
1859
+ type: sequelize_typescript_1.DataType.ENUM(...Object.values(status_1.Status)),
1860
+ defaultValue: status_1.Status.ACTIVE,
1861
+ }),
1862
+ __metadata("design:type", typeof (_a = typeof status_1.Status !== "undefined" && status_1.Status) === "function" ? _a : Object)
1863
+ ], VariantOption.prototype, "status", void 0);
1864
+ __decorate([
1865
+ (0, sequelize_typescript_1.BelongsTo)(() => variant_type_entity_1.VariantType),
1866
+ __metadata("design:type", typeof (_b = typeof variant_type_entity_1.VariantType !== "undefined" && variant_type_entity_1.VariantType) === "function" ? _b : Object)
1867
+ ], VariantOption.prototype, "variantType", void 0);
1868
+ exports.VariantOption = VariantOption = __decorate([
1869
+ sequelize_typescript_1.Table
1870
+ ], VariantOption);
1871
+
1872
+
1873
+ /***/ },
1874
+
1875
+ /***/ "./libs/tatayab-entities-library/src/entities/variant-type.entity.ts"
1876
+ /*!***************************************************************************!*\
1877
+ !*** ./libs/tatayab-entities-library/src/entities/variant-type.entity.ts ***!
1878
+ \***************************************************************************/
1879
+ (__unused_webpack_module, exports, __webpack_require__) {
1880
+
1881
+
1882
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
1883
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1884
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1885
+ 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;
1886
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1887
+ };
1888
+ var __metadata = (this && this.__metadata) || function (k, v) {
1889
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1890
+ };
1891
+ var _a;
1892
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
1893
+ exports.VariantType = void 0;
1894
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
1895
+ const status_1 = __webpack_require__(/*! ../utils/enums/status */ "./libs/tatayab-entities-library/src/utils/enums/status.ts");
1896
+ const sequelize_typescript_2 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
1897
+ let VariantType = class VariantType extends sequelize_typescript_1.Model {
1898
+ };
1899
+ exports.VariantType = VariantType;
1900
+ __decorate([
1901
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
1902
+ __metadata("design:type", String)
1903
+ ], VariantType.prototype, "nameEn", void 0);
1904
+ __decorate([
1905
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
1906
+ __metadata("design:type", String)
1907
+ ], VariantType.prototype, "nameAr", void 0);
1908
+ __decorate([
1909
+ (0, sequelize_typescript_1.Column)({
1910
+ type: sequelize_typescript_2.DataType.ENUM(...Object.values(status_1.Status)),
1911
+ defaultValue: status_1.Status.ACTIVE,
1912
+ }),
1913
+ __metadata("design:type", typeof (_a = typeof status_1.Status !== "undefined" && status_1.Status) === "function" ? _a : Object)
1914
+ ], VariantType.prototype, "status", void 0);
1915
+ exports.VariantType = VariantType = __decorate([
1916
+ sequelize_typescript_1.Table
1917
+ ], VariantType);
1918
+
1919
+
1920
+ /***/ },
1921
+
1922
+ /***/ "./libs/tatayab-entities-library/src/entities/vendor-product.entity.ts"
1923
+ /*!*****************************************************************************!*\
1924
+ !*** ./libs/tatayab-entities-library/src/entities/vendor-product.entity.ts ***!
1925
+ \*****************************************************************************/
1926
+ (__unused_webpack_module, exports, __webpack_require__) {
1927
+
1928
+
1929
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
1930
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1931
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1932
+ 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;
1933
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1934
+ };
1935
+ var __metadata = (this && this.__metadata) || function (k, v) {
1936
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1937
+ };
1938
+ var _a, _b, _c, _d;
1939
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
1940
+ exports.VendorProduct = void 0;
1941
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
1942
+ const vendor_entity_1 = __webpack_require__(/*! ./vendor.entity */ "./libs/tatayab-entities-library/src/entities/vendor.entity.ts");
1943
+ const product_entity_1 = __webpack_require__(/*! ./product.entity */ "./libs/tatayab-entities-library/src/entities/product.entity.ts");
1944
+ const product_variant_entity_1 = __webpack_require__(/*! ./product-variant.entity */ "./libs/tatayab-entities-library/src/entities/product-variant.entity.ts");
1945
+ const status_1 = __webpack_require__(/*! ../utils/enums/status */ "./libs/tatayab-entities-library/src/utils/enums/status.ts");
1946
+ let VendorProduct = class VendorProduct extends sequelize_typescript_1.Model {
1947
+ };
1948
+ exports.VendorProduct = VendorProduct;
1949
+ __decorate([
1950
+ (0, sequelize_typescript_1.ForeignKey)(() => vendor_entity_1.Vendor),
1951
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
1952
+ __metadata("design:type", Number)
1953
+ ], VendorProduct.prototype, "vendorId", void 0);
1954
+ __decorate([
1955
+ (0, sequelize_typescript_1.ForeignKey)(() => product_entity_1.Product),
1956
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
1957
+ __metadata("design:type", Number)
1958
+ ], VendorProduct.prototype, "productId", void 0);
1959
+ __decorate([
1960
+ (0, sequelize_typescript_1.ForeignKey)(() => product_variant_entity_1.ProductVariant),
1961
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
1962
+ __metadata("design:type", Number)
1963
+ ], VendorProduct.prototype, "productVariantId", void 0);
1964
+ __decorate([
1965
+ (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.DECIMAL(10, 3), allowNull: false }),
1966
+ __metadata("design:type", Number)
1967
+ ], VendorProduct.prototype, "costPrice", void 0);
1968
+ __decorate([
1969
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
1970
+ __metadata("design:type", String)
1971
+ ], VendorProduct.prototype, "vendorSku", void 0);
1972
+ __decorate([
1973
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
1974
+ __metadata("design:type", Number)
1975
+ ], VendorProduct.prototype, "leadTimeDays", void 0);
1976
+ __decorate([
1977
+ (0, sequelize_typescript_1.Column)({ defaultValue: 1 }),
1978
+ __metadata("design:type", Number)
1979
+ ], VendorProduct.prototype, "moq", void 0);
1980
+ __decorate([
1981
+ (0, sequelize_typescript_1.Column)({ defaultValue: false }),
1982
+ __metadata("design:type", Boolean)
1983
+ ], VendorProduct.prototype, "isPreferred", void 0);
1984
+ __decorate([
1985
+ (0, sequelize_typescript_1.Column)({
1986
+ type: sequelize_typescript_1.DataType.ENUM(...Object.values(status_1.Status)),
1987
+ defaultValue: status_1.Status.ACTIVE,
1988
+ }),
1989
+ __metadata("design:type", typeof (_a = typeof status_1.Status !== "undefined" && status_1.Status) === "function" ? _a : Object)
1990
+ ], VendorProduct.prototype, "status", void 0);
1991
+ __decorate([
1992
+ (0, sequelize_typescript_1.BelongsTo)(() => vendor_entity_1.Vendor),
1993
+ __metadata("design:type", typeof (_b = typeof vendor_entity_1.Vendor !== "undefined" && vendor_entity_1.Vendor) === "function" ? _b : Object)
1994
+ ], VendorProduct.prototype, "vendor", void 0);
1995
+ __decorate([
1996
+ (0, sequelize_typescript_1.BelongsTo)(() => product_entity_1.Product),
1997
+ __metadata("design:type", typeof (_c = typeof product_entity_1.Product !== "undefined" && product_entity_1.Product) === "function" ? _c : Object)
1998
+ ], VendorProduct.prototype, "product", void 0);
1999
+ __decorate([
2000
+ (0, sequelize_typescript_1.BelongsTo)(() => product_variant_entity_1.ProductVariant),
2001
+ __metadata("design:type", typeof (_d = typeof product_variant_entity_1.ProductVariant !== "undefined" && product_variant_entity_1.ProductVariant) === "function" ? _d : Object)
2002
+ ], VendorProduct.prototype, "variant", void 0);
2003
+ exports.VendorProduct = VendorProduct = __decorate([
2004
+ sequelize_typescript_1.Table
2005
+ ], VendorProduct);
2006
+
2007
+
2008
+ /***/ },
2009
+
2010
+ /***/ "./libs/tatayab-entities-library/src/entities/vendor.entity.ts"
2011
+ /*!*********************************************************************!*\
2012
+ !*** ./libs/tatayab-entities-library/src/entities/vendor.entity.ts ***!
2013
+ \*********************************************************************/
2014
+ (__unused_webpack_module, exports, __webpack_require__) {
2015
+
2016
+
2017
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2018
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2019
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2020
+ 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;
2021
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
2022
+ };
2023
+ var __metadata = (this && this.__metadata) || function (k, v) {
2024
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2025
+ };
2026
+ var _a, _b;
2027
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
2028
+ exports.Vendor = void 0;
2029
+ const sequelize_typescript_1 = __webpack_require__(/*! sequelize-typescript */ "sequelize-typescript");
2030
+ const country_entity_1 = __webpack_require__(/*! ./country.entity */ "./libs/tatayab-entities-library/src/entities/country.entity.ts");
2031
+ const status_1 = __webpack_require__(/*! ../utils/enums/status */ "./libs/tatayab-entities-library/src/utils/enums/status.ts");
2032
+ let Vendor = class Vendor extends sequelize_typescript_1.Model {
2033
+ };
2034
+ exports.Vendor = Vendor;
2035
+ __decorate([
2036
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
2037
+ __metadata("design:type", String)
2038
+ ], Vendor.prototype, "nameEn", void 0);
2039
+ __decorate([
2040
+ (0, sequelize_typescript_1.Column)({ allowNull: false }),
2041
+ __metadata("design:type", String)
2042
+ ], Vendor.prototype, "nameAr", void 0);
2043
+ __decorate([
2044
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
2045
+ __metadata("design:type", String)
2046
+ ], Vendor.prototype, "contactPerson", void 0);
2047
+ __decorate([
2048
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
2049
+ __metadata("design:type", String)
2050
+ ], Vendor.prototype, "email", void 0);
2051
+ __decorate([
2052
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
2053
+ __metadata("design:type", String)
2054
+ ], Vendor.prototype, "phone", void 0);
2055
+ __decorate([
2056
+ (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.TEXT, allowNull: true }),
2057
+ __metadata("design:type", String)
2058
+ ], Vendor.prototype, "addressEn", void 0);
2059
+ __decorate([
2060
+ (0, sequelize_typescript_1.Column)({ type: sequelize_typescript_1.DataType.TEXT, allowNull: true }),
2061
+ __metadata("design:type", String)
2062
+ ], Vendor.prototype, "addressAr", void 0);
2063
+ __decorate([
2064
+ (0, sequelize_typescript_1.ForeignKey)(() => country_entity_1.Country),
2065
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
2066
+ __metadata("design:type", Number)
2067
+ ], Vendor.prototype, "countryId", void 0);
2068
+ __decorate([
2069
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
2070
+ __metadata("design:type", String)
2071
+ ], Vendor.prototype, "taxNumber", void 0);
2072
+ __decorate([
2073
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
2074
+ __metadata("design:type", String)
2075
+ ], Vendor.prototype, "commercialRegNumber", void 0);
2076
+ __decorate([
2077
+ (0, sequelize_typescript_1.Column)({ defaultValue: 0 }),
2078
+ __metadata("design:type", Number)
2079
+ ], Vendor.prototype, "paymentTermsDays", void 0);
2080
+ __decorate([
2081
+ (0, sequelize_typescript_1.Column)({ allowNull: true }),
2082
+ __metadata("design:type", String)
2083
+ ], Vendor.prototype, "notes", void 0);
2084
+ __decorate([
2085
+ (0, sequelize_typescript_1.Column)({
2086
+ type: sequelize_typescript_1.DataType.ENUM(...Object.values(status_1.Status)),
2087
+ defaultValue: status_1.Status.ACTIVE,
2088
+ }),
2089
+ __metadata("design:type", typeof (_a = typeof status_1.Status !== "undefined" && status_1.Status) === "function" ? _a : Object)
2090
+ ], Vendor.prototype, "status", void 0);
2091
+ __decorate([
2092
+ (0, sequelize_typescript_1.BelongsTo)(() => country_entity_1.Country),
2093
+ __metadata("design:type", typeof (_b = typeof country_entity_1.Country !== "undefined" && country_entity_1.Country) === "function" ? _b : Object)
2094
+ ], Vendor.prototype, "country", void 0);
2095
+ exports.Vendor = Vendor = __decorate([
2096
+ sequelize_typescript_1.Table
2097
+ ], Vendor);
2098
+
2099
+
2100
+ /***/ },
2101
+
2102
+ /***/ "./libs/tatayab-entities-library/src/index.ts"
2103
+ /*!****************************************************!*\
2104
+ !*** ./libs/tatayab-entities-library/src/index.ts ***!
2105
+ \****************************************************/
2106
+ (__unused_webpack_module, exports, __webpack_require__) {
2107
+
2108
+
2109
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
2110
+ exports.StockMovementType = exports.PurchaseOrderStatus = exports.Gender = exports.Status = exports.Language = exports.VersionType = exports.ProductApp = exports.OsName = exports.RolePermission = exports.Permission = exports.PurchaseOrderItemStatus = exports.PurchaseOrderItem = exports.PurchaseOrder = exports.VendorProduct = exports.Vendor = exports.StockMovement = exports.InventoryStock = exports.StoreInventory = exports.Inventory = exports.ProductStore = exports.Store = exports.ProductTag = exports.Tag = exports.ProductVariantOption = exports.ProductVariant = exports.MediaType = exports.ProductMedia = exports.Product = exports.VariantOption = exports.VariantType = exports.Brand = exports.Category = exports.UserDevice = exports.User = exports.SysUser = exports.SysRole = exports.Area = exports.Country = exports.ApiKey = void 0;
2111
+ exports.getDbModels = getDbModels;
2112
+ const country_entity_1 = __webpack_require__(/*! ./entities/country.entity */ "./libs/tatayab-entities-library/src/entities/country.entity.ts");
2113
+ const area_entity_1 = __webpack_require__(/*! ./entities/area.entity */ "./libs/tatayab-entities-library/src/entities/area.entity.ts");
2114
+ const sys_role_entity_1 = __webpack_require__(/*! ./entities/sys.role.entity */ "./libs/tatayab-entities-library/src/entities/sys.role.entity.ts");
2115
+ const sys_user_entity_1 = __webpack_require__(/*! ./entities/sys.user.entity */ "./libs/tatayab-entities-library/src/entities/sys.user.entity.ts");
2116
+ const user_entity_1 = __webpack_require__(/*! ./entities/user.entity */ "./libs/tatayab-entities-library/src/entities/user.entity.ts");
2117
+ const userDevice_entity_1 = __webpack_require__(/*! ./entities/userDevice.entity */ "./libs/tatayab-entities-library/src/entities/userDevice.entity.ts");
2118
+ const apikey_entity_1 = __webpack_require__(/*! ./entities/apikey.entity */ "./libs/tatayab-entities-library/src/entities/apikey.entity.ts");
2119
+ const category_entity_1 = __webpack_require__(/*! ./entities/category.entity */ "./libs/tatayab-entities-library/src/entities/category.entity.ts");
2120
+ const brand_entity_1 = __webpack_require__(/*! ./entities/brand.entity */ "./libs/tatayab-entities-library/src/entities/brand.entity.ts");
2121
+ const variant_type_entity_1 = __webpack_require__(/*! ./entities/variant-type.entity */ "./libs/tatayab-entities-library/src/entities/variant-type.entity.ts");
2122
+ const variant_option_entity_1 = __webpack_require__(/*! ./entities/variant-option.entity */ "./libs/tatayab-entities-library/src/entities/variant-option.entity.ts");
2123
+ const product_entity_1 = __webpack_require__(/*! ./entities/product.entity */ "./libs/tatayab-entities-library/src/entities/product.entity.ts");
2124
+ const product_media_entity_1 = __webpack_require__(/*! ./entities/product-media.entity */ "./libs/tatayab-entities-library/src/entities/product-media.entity.ts");
2125
+ const product_variant_entity_1 = __webpack_require__(/*! ./entities/product-variant.entity */ "./libs/tatayab-entities-library/src/entities/product-variant.entity.ts");
2126
+ const product_variant_option_entity_1 = __webpack_require__(/*! ./entities/product-variant-option.entity */ "./libs/tatayab-entities-library/src/entities/product-variant-option.entity.ts");
2127
+ const tag_entity_1 = __webpack_require__(/*! ./entities/tag.entity */ "./libs/tatayab-entities-library/src/entities/tag.entity.ts");
2128
+ const product_tag_entity_1 = __webpack_require__(/*! ./entities/product-tag.entity */ "./libs/tatayab-entities-library/src/entities/product-tag.entity.ts");
2129
+ const store_entity_1 = __webpack_require__(/*! ./entities/store.entity */ "./libs/tatayab-entities-library/src/entities/store.entity.ts");
2130
+ const product_store_entity_1 = __webpack_require__(/*! ./entities/product-store.entity */ "./libs/tatayab-entities-library/src/entities/product-store.entity.ts");
2131
+ const inventory_entity_1 = __webpack_require__(/*! ./entities/inventory.entity */ "./libs/tatayab-entities-library/src/entities/inventory.entity.ts");
2132
+ const store_inventory_entity_1 = __webpack_require__(/*! ./entities/store-inventory.entity */ "./libs/tatayab-entities-library/src/entities/store-inventory.entity.ts");
2133
+ const inventory_stock_entity_1 = __webpack_require__(/*! ./entities/inventory-stock.entity */ "./libs/tatayab-entities-library/src/entities/inventory-stock.entity.ts");
2134
+ const stock_movement_entity_1 = __webpack_require__(/*! ./entities/stock-movement.entity */ "./libs/tatayab-entities-library/src/entities/stock-movement.entity.ts");
2135
+ const vendor_entity_1 = __webpack_require__(/*! ./entities/vendor.entity */ "./libs/tatayab-entities-library/src/entities/vendor.entity.ts");
2136
+ const vendor_product_entity_1 = __webpack_require__(/*! ./entities/vendor-product.entity */ "./libs/tatayab-entities-library/src/entities/vendor-product.entity.ts");
2137
+ const purchase_order_entity_1 = __webpack_require__(/*! ./entities/purchase-order.entity */ "./libs/tatayab-entities-library/src/entities/purchase-order.entity.ts");
2138
+ const purchase_order_item_entity_1 = __webpack_require__(/*! ./entities/purchase-order-item.entity */ "./libs/tatayab-entities-library/src/entities/purchase-order-item.entity.ts");
2139
+ const permission_entity_1 = __webpack_require__(/*! ./entities/permission.entity */ "./libs/tatayab-entities-library/src/entities/permission.entity.ts");
2140
+ const role_permission_entity_1 = __webpack_require__(/*! ./entities/role-permission.entity */ "./libs/tatayab-entities-library/src/entities/role-permission.entity.ts");
2141
+ var apikey_entity_2 = __webpack_require__(/*! ./entities/apikey.entity */ "./libs/tatayab-entities-library/src/entities/apikey.entity.ts");
2142
+ Object.defineProperty(exports, "ApiKey", ({ enumerable: true, get: function () { return apikey_entity_2.ApiKey; } }));
2143
+ var country_entity_2 = __webpack_require__(/*! ./entities/country.entity */ "./libs/tatayab-entities-library/src/entities/country.entity.ts");
2144
+ Object.defineProperty(exports, "Country", ({ enumerable: true, get: function () { return country_entity_2.Country; } }));
2145
+ var area_entity_2 = __webpack_require__(/*! ./entities/area.entity */ "./libs/tatayab-entities-library/src/entities/area.entity.ts");
2146
+ Object.defineProperty(exports, "Area", ({ enumerable: true, get: function () { return area_entity_2.Area; } }));
2147
+ var sys_role_entity_2 = __webpack_require__(/*! ./entities/sys.role.entity */ "./libs/tatayab-entities-library/src/entities/sys.role.entity.ts");
2148
+ Object.defineProperty(exports, "SysRole", ({ enumerable: true, get: function () { return sys_role_entity_2.SysRole; } }));
2149
+ var sys_user_entity_2 = __webpack_require__(/*! ./entities/sys.user.entity */ "./libs/tatayab-entities-library/src/entities/sys.user.entity.ts");
2150
+ Object.defineProperty(exports, "SysUser", ({ enumerable: true, get: function () { return sys_user_entity_2.SysUser; } }));
2151
+ var user_entity_2 = __webpack_require__(/*! ./entities/user.entity */ "./libs/tatayab-entities-library/src/entities/user.entity.ts");
2152
+ Object.defineProperty(exports, "User", ({ enumerable: true, get: function () { return user_entity_2.User; } }));
2153
+ var userDevice_entity_2 = __webpack_require__(/*! ./entities/userDevice.entity */ "./libs/tatayab-entities-library/src/entities/userDevice.entity.ts");
2154
+ Object.defineProperty(exports, "UserDevice", ({ enumerable: true, get: function () { return userDevice_entity_2.UserDevice; } }));
2155
+ var category_entity_2 = __webpack_require__(/*! ./entities/category.entity */ "./libs/tatayab-entities-library/src/entities/category.entity.ts");
2156
+ Object.defineProperty(exports, "Category", ({ enumerable: true, get: function () { return category_entity_2.Category; } }));
2157
+ var brand_entity_2 = __webpack_require__(/*! ./entities/brand.entity */ "./libs/tatayab-entities-library/src/entities/brand.entity.ts");
2158
+ Object.defineProperty(exports, "Brand", ({ enumerable: true, get: function () { return brand_entity_2.Brand; } }));
2159
+ var variant_type_entity_2 = __webpack_require__(/*! ./entities/variant-type.entity */ "./libs/tatayab-entities-library/src/entities/variant-type.entity.ts");
2160
+ Object.defineProperty(exports, "VariantType", ({ enumerable: true, get: function () { return variant_type_entity_2.VariantType; } }));
2161
+ var variant_option_entity_2 = __webpack_require__(/*! ./entities/variant-option.entity */ "./libs/tatayab-entities-library/src/entities/variant-option.entity.ts");
2162
+ Object.defineProperty(exports, "VariantOption", ({ enumerable: true, get: function () { return variant_option_entity_2.VariantOption; } }));
2163
+ var product_entity_2 = __webpack_require__(/*! ./entities/product.entity */ "./libs/tatayab-entities-library/src/entities/product.entity.ts");
2164
+ Object.defineProperty(exports, "Product", ({ enumerable: true, get: function () { return product_entity_2.Product; } }));
2165
+ var product_media_entity_2 = __webpack_require__(/*! ./entities/product-media.entity */ "./libs/tatayab-entities-library/src/entities/product-media.entity.ts");
2166
+ Object.defineProperty(exports, "ProductMedia", ({ enumerable: true, get: function () { return product_media_entity_2.ProductMedia; } }));
2167
+ Object.defineProperty(exports, "MediaType", ({ enumerable: true, get: function () { return product_media_entity_2.MediaType; } }));
2168
+ var product_variant_entity_2 = __webpack_require__(/*! ./entities/product-variant.entity */ "./libs/tatayab-entities-library/src/entities/product-variant.entity.ts");
2169
+ Object.defineProperty(exports, "ProductVariant", ({ enumerable: true, get: function () { return product_variant_entity_2.ProductVariant; } }));
2170
+ var product_variant_option_entity_2 = __webpack_require__(/*! ./entities/product-variant-option.entity */ "./libs/tatayab-entities-library/src/entities/product-variant-option.entity.ts");
2171
+ Object.defineProperty(exports, "ProductVariantOption", ({ enumerable: true, get: function () { return product_variant_option_entity_2.ProductVariantOption; } }));
2172
+ var tag_entity_2 = __webpack_require__(/*! ./entities/tag.entity */ "./libs/tatayab-entities-library/src/entities/tag.entity.ts");
2173
+ Object.defineProperty(exports, "Tag", ({ enumerable: true, get: function () { return tag_entity_2.Tag; } }));
2174
+ var product_tag_entity_2 = __webpack_require__(/*! ./entities/product-tag.entity */ "./libs/tatayab-entities-library/src/entities/product-tag.entity.ts");
2175
+ Object.defineProperty(exports, "ProductTag", ({ enumerable: true, get: function () { return product_tag_entity_2.ProductTag; } }));
2176
+ var store_entity_2 = __webpack_require__(/*! ./entities/store.entity */ "./libs/tatayab-entities-library/src/entities/store.entity.ts");
2177
+ Object.defineProperty(exports, "Store", ({ enumerable: true, get: function () { return store_entity_2.Store; } }));
2178
+ var product_store_entity_2 = __webpack_require__(/*! ./entities/product-store.entity */ "./libs/tatayab-entities-library/src/entities/product-store.entity.ts");
2179
+ Object.defineProperty(exports, "ProductStore", ({ enumerable: true, get: function () { return product_store_entity_2.ProductStore; } }));
2180
+ var inventory_entity_2 = __webpack_require__(/*! ./entities/inventory.entity */ "./libs/tatayab-entities-library/src/entities/inventory.entity.ts");
2181
+ Object.defineProperty(exports, "Inventory", ({ enumerable: true, get: function () { return inventory_entity_2.Inventory; } }));
2182
+ var store_inventory_entity_2 = __webpack_require__(/*! ./entities/store-inventory.entity */ "./libs/tatayab-entities-library/src/entities/store-inventory.entity.ts");
2183
+ Object.defineProperty(exports, "StoreInventory", ({ enumerable: true, get: function () { return store_inventory_entity_2.StoreInventory; } }));
2184
+ var inventory_stock_entity_2 = __webpack_require__(/*! ./entities/inventory-stock.entity */ "./libs/tatayab-entities-library/src/entities/inventory-stock.entity.ts");
2185
+ Object.defineProperty(exports, "InventoryStock", ({ enumerable: true, get: function () { return inventory_stock_entity_2.InventoryStock; } }));
2186
+ var stock_movement_entity_2 = __webpack_require__(/*! ./entities/stock-movement.entity */ "./libs/tatayab-entities-library/src/entities/stock-movement.entity.ts");
2187
+ Object.defineProperty(exports, "StockMovement", ({ enumerable: true, get: function () { return stock_movement_entity_2.StockMovement; } }));
2188
+ var vendor_entity_2 = __webpack_require__(/*! ./entities/vendor.entity */ "./libs/tatayab-entities-library/src/entities/vendor.entity.ts");
2189
+ Object.defineProperty(exports, "Vendor", ({ enumerable: true, get: function () { return vendor_entity_2.Vendor; } }));
2190
+ var vendor_product_entity_2 = __webpack_require__(/*! ./entities/vendor-product.entity */ "./libs/tatayab-entities-library/src/entities/vendor-product.entity.ts");
2191
+ Object.defineProperty(exports, "VendorProduct", ({ enumerable: true, get: function () { return vendor_product_entity_2.VendorProduct; } }));
2192
+ var purchase_order_entity_2 = __webpack_require__(/*! ./entities/purchase-order.entity */ "./libs/tatayab-entities-library/src/entities/purchase-order.entity.ts");
2193
+ Object.defineProperty(exports, "PurchaseOrder", ({ enumerable: true, get: function () { return purchase_order_entity_2.PurchaseOrder; } }));
2194
+ var purchase_order_item_entity_2 = __webpack_require__(/*! ./entities/purchase-order-item.entity */ "./libs/tatayab-entities-library/src/entities/purchase-order-item.entity.ts");
2195
+ Object.defineProperty(exports, "PurchaseOrderItem", ({ enumerable: true, get: function () { return purchase_order_item_entity_2.PurchaseOrderItem; } }));
2196
+ Object.defineProperty(exports, "PurchaseOrderItemStatus", ({ enumerable: true, get: function () { return purchase_order_item_entity_2.PurchaseOrderItemStatus; } }));
2197
+ var permission_entity_2 = __webpack_require__(/*! ./entities/permission.entity */ "./libs/tatayab-entities-library/src/entities/permission.entity.ts");
2198
+ Object.defineProperty(exports, "Permission", ({ enumerable: true, get: function () { return permission_entity_2.Permission; } }));
2199
+ var role_permission_entity_2 = __webpack_require__(/*! ./entities/role-permission.entity */ "./libs/tatayab-entities-library/src/entities/role-permission.entity.ts");
2200
+ Object.defineProperty(exports, "RolePermission", ({ enumerable: true, get: function () { return role_permission_entity_2.RolePermission; } }));
2201
+ var osName_1 = __webpack_require__(/*! ./utils/enums/osName */ "./libs/tatayab-entities-library/src/utils/enums/osName.ts");
2202
+ Object.defineProperty(exports, "OsName", ({ enumerable: true, get: function () { return osName_1.OsName; } }));
2203
+ var productApp_1 = __webpack_require__(/*! ./utils/enums/productApp */ "./libs/tatayab-entities-library/src/utils/enums/productApp.ts");
2204
+ Object.defineProperty(exports, "ProductApp", ({ enumerable: true, get: function () { return productApp_1.ProductApp; } }));
2205
+ var versiontype_1 = __webpack_require__(/*! ./utils/enums/versiontype */ "./libs/tatayab-entities-library/src/utils/enums/versiontype.ts");
2206
+ Object.defineProperty(exports, "VersionType", ({ enumerable: true, get: function () { return versiontype_1.VersionType; } }));
2207
+ var language_1 = __webpack_require__(/*! ./utils/enums/language */ "./libs/tatayab-entities-library/src/utils/enums/language.ts");
2208
+ Object.defineProperty(exports, "Language", ({ enumerable: true, get: function () { return language_1.Language; } }));
2209
+ var status_1 = __webpack_require__(/*! ./utils/enums/status */ "./libs/tatayab-entities-library/src/utils/enums/status.ts");
2210
+ Object.defineProperty(exports, "Status", ({ enumerable: true, get: function () { return status_1.Status; } }));
2211
+ var gender_1 = __webpack_require__(/*! ./utils/enums/gender */ "./libs/tatayab-entities-library/src/utils/enums/gender.ts");
2212
+ Object.defineProperty(exports, "Gender", ({ enumerable: true, get: function () { return gender_1.Gender; } }));
2213
+ var purchaseOrderStatus_1 = __webpack_require__(/*! ./utils/enums/purchaseOrderStatus */ "./libs/tatayab-entities-library/src/utils/enums/purchaseOrderStatus.ts");
2214
+ Object.defineProperty(exports, "PurchaseOrderStatus", ({ enumerable: true, get: function () { return purchaseOrderStatus_1.PurchaseOrderStatus; } }));
2215
+ var stockMovementType_1 = __webpack_require__(/*! ./utils/enums/stockMovementType */ "./libs/tatayab-entities-library/src/utils/enums/stockMovementType.ts");
2216
+ Object.defineProperty(exports, "StockMovementType", ({ enumerable: true, get: function () { return stockMovementType_1.StockMovementType; } }));
2217
+ function getDbModels() {
2218
+ return [
2219
+ apikey_entity_1.ApiKey,
2220
+ area_entity_1.Area,
2221
+ country_entity_1.Country,
2222
+ sys_role_entity_1.SysRole,
2223
+ sys_user_entity_1.SysUser,
2224
+ user_entity_1.User,
2225
+ userDevice_entity_1.UserDevice,
2226
+ category_entity_1.Category,
2227
+ brand_entity_1.Brand,
2228
+ variant_type_entity_1.VariantType,
2229
+ variant_option_entity_1.VariantOption,
2230
+ product_entity_1.Product,
2231
+ product_media_entity_1.ProductMedia,
2232
+ product_variant_entity_1.ProductVariant,
2233
+ product_variant_option_entity_1.ProductVariantOption,
2234
+ tag_entity_1.Tag,
2235
+ product_tag_entity_1.ProductTag,
2236
+ store_entity_1.Store,
2237
+ product_store_entity_1.ProductStore,
2238
+ inventory_entity_1.Inventory,
2239
+ store_inventory_entity_1.StoreInventory,
2240
+ inventory_stock_entity_1.InventoryStock,
2241
+ stock_movement_entity_1.StockMovement,
2242
+ vendor_entity_1.Vendor,
2243
+ vendor_product_entity_1.VendorProduct,
2244
+ purchase_order_entity_1.PurchaseOrder,
2245
+ purchase_order_item_entity_1.PurchaseOrderItem,
2246
+ permission_entity_1.Permission,
2247
+ role_permission_entity_1.RolePermission,
2248
+ ];
2249
+ }
2250
+
2251
+
2252
+ /***/ },
2253
+
2254
+ /***/ "./libs/tatayab-entities-library/src/utils/enums/gender.ts"
2255
+ /*!*****************************************************************!*\
2256
+ !*** ./libs/tatayab-entities-library/src/utils/enums/gender.ts ***!
2257
+ \*****************************************************************/
2258
+ (__unused_webpack_module, exports) {
2259
+
2260
+
2261
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
2262
+ exports.Gender = void 0;
2263
+ var Gender;
2264
+ (function (Gender) {
2265
+ Gender["MALE"] = "Male";
2266
+ Gender["FEMALE"] = "Female";
2267
+ Gender["PREFER_NOT_TO_SAY"] = "Prefer not to say";
2268
+ })(Gender || (exports.Gender = Gender = {}));
2269
+
2270
+
2271
+ /***/ },
2272
+
2273
+ /***/ "./libs/tatayab-entities-library/src/utils/enums/language.ts"
2274
+ /*!*******************************************************************!*\
2275
+ !*** ./libs/tatayab-entities-library/src/utils/enums/language.ts ***!
2276
+ \*******************************************************************/
2277
+ (__unused_webpack_module, exports) {
2278
+
2279
+
2280
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
2281
+ exports.Language = void 0;
2282
+ var Language;
2283
+ (function (Language) {
2284
+ Language["ENGLISH"] = "en";
2285
+ Language["ARABIC"] = "ar";
2286
+ })(Language || (exports.Language = Language = {}));
2287
+
2288
+
2289
+ /***/ },
2290
+
2291
+ /***/ "./libs/tatayab-entities-library/src/utils/enums/osName.ts"
2292
+ /*!*****************************************************************!*\
2293
+ !*** ./libs/tatayab-entities-library/src/utils/enums/osName.ts ***!
2294
+ \*****************************************************************/
2295
+ (__unused_webpack_module, exports) {
2296
+
2297
+
2298
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
2299
+ exports.OsName = void 0;
2300
+ var OsName;
2301
+ (function (OsName) {
2302
+ OsName["ANDROID"] = "android";
2303
+ OsName["IOS"] = "iOS";
2304
+ OsName["WEB"] = "web";
2305
+ })(OsName || (exports.OsName = OsName = {}));
2306
+
2307
+
2308
+ /***/ },
2309
+
2310
+ /***/ "./libs/tatayab-entities-library/src/utils/enums/productApp.ts"
2311
+ /*!*********************************************************************!*\
2312
+ !*** ./libs/tatayab-entities-library/src/utils/enums/productApp.ts ***!
2313
+ \*********************************************************************/
2314
+ (__unused_webpack_module, exports) {
2315
+
2316
+
2317
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
2318
+ exports.ProductApp = void 0;
2319
+ var ProductApp;
2320
+ (function (ProductApp) {
2321
+ ProductApp["DASHBOARD"] = "dashboard";
2322
+ ProductApp["USER_APP"] = "userapp";
2323
+ })(ProductApp || (exports.ProductApp = ProductApp = {}));
2324
+
2325
+
2326
+ /***/ },
2327
+
2328
+ /***/ "./libs/tatayab-entities-library/src/utils/enums/purchaseOrderStatus.ts"
2329
+ /*!******************************************************************************!*\
2330
+ !*** ./libs/tatayab-entities-library/src/utils/enums/purchaseOrderStatus.ts ***!
2331
+ \******************************************************************************/
2332
+ (__unused_webpack_module, exports) {
2333
+
2334
+
2335
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
2336
+ exports.PurchaseOrderStatus = void 0;
2337
+ var PurchaseOrderStatus;
2338
+ (function (PurchaseOrderStatus) {
2339
+ PurchaseOrderStatus["DRAFT"] = "draft";
2340
+ PurchaseOrderStatus["SENT_TO_VENDOR"] = "sent_to_vendor";
2341
+ PurchaseOrderStatus["PARTIALLY_RECEIVED"] = "partially_received";
2342
+ PurchaseOrderStatus["FULLY_RECEIVED"] = "fully_received";
2343
+ PurchaseOrderStatus["CLOSED"] = "closed";
2344
+ PurchaseOrderStatus["CANCELLED"] = "cancelled";
2345
+ })(PurchaseOrderStatus || (exports.PurchaseOrderStatus = PurchaseOrderStatus = {}));
2346
+
2347
+
2348
+ /***/ },
2349
+
2350
+ /***/ "./libs/tatayab-entities-library/src/utils/enums/status.ts"
2351
+ /*!*****************************************************************!*\
2352
+ !*** ./libs/tatayab-entities-library/src/utils/enums/status.ts ***!
2353
+ \*****************************************************************/
2354
+ (__unused_webpack_module, exports) {
2355
+
2356
+
2357
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
2358
+ exports.Status = void 0;
2359
+ var Status;
2360
+ (function (Status) {
2361
+ Status["ACTIVE"] = "active";
2362
+ Status["IN_ACTIVE"] = "inactive";
2363
+ })(Status || (exports.Status = Status = {}));
2364
+
2365
+
2366
+ /***/ },
2367
+
2368
+ /***/ "./libs/tatayab-entities-library/src/utils/enums/stockMovementType.ts"
2369
+ /*!****************************************************************************!*\
2370
+ !*** ./libs/tatayab-entities-library/src/utils/enums/stockMovementType.ts ***!
2371
+ \****************************************************************************/
2372
+ (__unused_webpack_module, exports) {
2373
+
2374
+
2375
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
2376
+ exports.StockMovementType = void 0;
2377
+ var StockMovementType;
2378
+ (function (StockMovementType) {
2379
+ StockMovementType["RECEIVED"] = "received";
2380
+ StockMovementType["RESERVED"] = "reserved";
2381
+ StockMovementType["RESERVATION_RELEASED"] = "reservation_released";
2382
+ StockMovementType["ADJUSTMENT_ADD"] = "adjustment_add";
2383
+ StockMovementType["ADJUSTMENT_REMOVE"] = "adjustment_remove";
2384
+ StockMovementType["RETURNED_FROM_CUSTOMER"] = "returned_from_customer";
2385
+ StockMovementType["RETURNED_TO_VENDOR"] = "returned_to_vendor";
2386
+ StockMovementType["TRANSFER_IN"] = "transfer_in";
2387
+ StockMovementType["TRANSFER_OUT"] = "transfer_out";
2388
+ })(StockMovementType || (exports.StockMovementType = StockMovementType = {}));
2389
+
2390
+
2391
+ /***/ },
2392
+
2393
+ /***/ "./libs/tatayab-entities-library/src/utils/enums/versiontype.ts"
2394
+ /*!**********************************************************************!*\
2395
+ !*** ./libs/tatayab-entities-library/src/utils/enums/versiontype.ts ***!
2396
+ \**********************************************************************/
2397
+ (__unused_webpack_module, exports) {
2398
+
2399
+
2400
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
2401
+ exports.VersionType = void 0;
2402
+ var VersionType;
2403
+ (function (VersionType) {
2404
+ VersionType["OPTIONAL"] = "optional";
2405
+ VersionType["MANDATORY"] = "mandatory";
2406
+ })(VersionType || (exports.VersionType = VersionType = {}));
2407
+
2408
+
2409
+ /***/ },
2410
+
2411
+ /***/ "./src/app.module.ts"
2412
+ /*!***************************!*\
2413
+ !*** ./src/app.module.ts ***!
2414
+ \***************************/
2415
+ (__unused_webpack_module, exports, __webpack_require__) {
2416
+
2417
+
2418
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2419
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2420
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2421
+ 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;
2422
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
2423
+ };
2424
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
2425
+ exports.AppModule = void 0;
2426
+ const common_1 = __webpack_require__(/*! @nestjs/common */ "@nestjs/common");
2427
+ const sequelize_1 = __webpack_require__(/*! @nestjs/sequelize */ "@nestjs/sequelize");
2428
+ const config_1 = __webpack_require__(/*! @nestjs/config */ "@nestjs/config");
2429
+ const tatayab_entities_library_1 = __webpack_require__(/*! @app/tatayab-entities-library */ "./libs/tatayab-entities-library/src/index.ts");
2430
+ let AppModule = class AppModule {
2431
+ };
2432
+ exports.AppModule = AppModule;
2433
+ exports.AppModule = AppModule = __decorate([
2434
+ (0, common_1.Module)({
2435
+ imports: [
2436
+ config_1.ConfigModule.forRoot({
2437
+ isGlobal: true,
2438
+ }),
2439
+ sequelize_1.SequelizeModule.forRoot({
2440
+ dialect: 'mysql',
2441
+ host: process.env.MYSQL_HOST,
2442
+ database: process.env.MYSQL_DATABASE,
2443
+ username: process.env.MYSQL_USER,
2444
+ password: process.env.MYSQL_PASSWORD,
2445
+ port: 3306,
2446
+ models: (0, tatayab_entities_library_1.getDbModels)(),
2447
+ autoLoadModels: true,
2448
+ synchronize: true,
2449
+ logging: false,
2450
+ define: {
2451
+ timestamps: true,
2452
+ paranoid: true,
2453
+ },
2454
+ }),
2455
+ ],
2456
+ providers: [],
2457
+ })
2458
+ ], AppModule);
2459
+
2460
+
2461
+ /***/ },
2462
+
2463
+ /***/ "@nestjs/common"
2464
+ /*!*********************************!*\
2465
+ !*** external "@nestjs/common" ***!
2466
+ \*********************************/
2467
+ (module) {
2468
+
2469
+ module.exports = require("@nestjs/common");
2470
+
2471
+ /***/ },
2472
+
2473
+ /***/ "@nestjs/config"
2474
+ /*!*********************************!*\
2475
+ !*** external "@nestjs/config" ***!
2476
+ \*********************************/
2477
+ (module) {
2478
+
2479
+ module.exports = require("@nestjs/config");
2480
+
2481
+ /***/ },
2482
+
2483
+ /***/ "@nestjs/core"
2484
+ /*!*******************************!*\
2485
+ !*** external "@nestjs/core" ***!
2486
+ \*******************************/
2487
+ (module) {
2488
+
2489
+ module.exports = require("@nestjs/core");
2490
+
2491
+ /***/ },
2492
+
2493
+ /***/ "@nestjs/sequelize"
2494
+ /*!************************************!*\
2495
+ !*** external "@nestjs/sequelize" ***!
2496
+ \************************************/
2497
+ (module) {
2498
+
2499
+ module.exports = require("@nestjs/sequelize");
2500
+
2501
+ /***/ },
2502
+
2503
+ /***/ "sequelize-typescript"
2504
+ /*!***************************************!*\
2505
+ !*** external "sequelize-typescript" ***!
2506
+ \***************************************/
2507
+ (module) {
2508
+
2509
+ module.exports = require("sequelize-typescript");
2510
+
2511
+ /***/ },
2512
+
2513
+ /***/ "tsconfig-paths/register"
2514
+ /*!******************************************!*\
2515
+ !*** external "tsconfig-paths/register" ***!
2516
+ \******************************************/
2517
+ (module) {
2518
+
2519
+ module.exports = require("tsconfig-paths/register");
2520
+
2521
+ /***/ }
2522
+
2523
+ /******/ });
2524
+ /************************************************************************/
2525
+ /******/ // The module cache
2526
+ /******/ var __webpack_module_cache__ = {};
2527
+ /******/
2528
+ /******/ // The require function
2529
+ /******/ function __webpack_require__(moduleId) {
2530
+ /******/ // Check if module is in cache
2531
+ /******/ var cachedModule = __webpack_module_cache__[moduleId];
2532
+ /******/ if (cachedModule !== undefined) {
2533
+ /******/ return cachedModule.exports;
2534
+ /******/ }
2535
+ /******/ // Check if module exists (development only)
2536
+ /******/ if (__webpack_modules__[moduleId] === undefined) {
2537
+ /******/ var e = new Error("Cannot find module '" + moduleId + "'");
2538
+ /******/ e.code = 'MODULE_NOT_FOUND';
2539
+ /******/ throw e;
2540
+ /******/ }
2541
+ /******/ // Create a new module (and put it into the cache)
2542
+ /******/ var module = __webpack_module_cache__[moduleId] = {
2543
+ /******/ // no module.id needed
2544
+ /******/ // no module.loaded needed
2545
+ /******/ exports: {}
2546
+ /******/ };
2547
+ /******/
2548
+ /******/ // Execute the module function
2549
+ /******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
2550
+ /******/
2551
+ /******/ // Return the exports of the module
2552
+ /******/ return module.exports;
2553
+ /******/ }
2554
+ /******/
2555
+ /************************************************************************/
2556
+ var __webpack_exports__ = {};
2557
+ // This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk.
2558
+ (() => {
2559
+ var exports = __webpack_exports__;
2560
+ /*!*********************!*\
2561
+ !*** ./src/main.ts ***!
2562
+ \*********************/
2563
+
2564
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
2565
+ __webpack_require__(/*! tsconfig-paths/register */ "tsconfig-paths/register");
2566
+ const core_1 = __webpack_require__(/*! @nestjs/core */ "@nestjs/core");
2567
+ const app_module_1 = __webpack_require__(/*! ./app.module */ "./src/app.module.ts");
2568
+ async function bootstrap() {
2569
+ const app = await core_1.NestFactory.create(app_module_1.AppModule, { cors: true });
2570
+ await app.listen(process.env.SERVER_PORT ?? 9004);
2571
+ }
2572
+ bootstrap();
2573
+
2574
+ })();
2575
+
2576
+ /******/ })()
2577
+ ;
2578
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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Ozs7Ozs7Ozs7QUM3QnpCLDJDOzs7Ozs7Ozs7O0FDQUEsMkM7Ozs7Ozs7Ozs7QUNBQSx5Qzs7Ozs7Ozs7OztBQ0FBLDhDOzs7Ozs7Ozs7O0FDQUEsaUQ7Ozs7Ozs7Ozs7QUNBQSxvRDs7Ozs7O1VDQUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTs7VUFFQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTs7Ozs7Ozs7Ozs7O0FDNUJBLDhFQUFpQztBQUNqQyx1RUFBMkM7QUFDM0Msb0ZBQXlDO0FBRXpDLEtBQUssVUFBVSxTQUFTO0lBQ3RCLE1BQU0sR0FBRyxHQUFHLE1BQU0sa0JBQVcsQ0FBQyxNQUFNLENBQUMsc0JBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBQ0QsU0FBUyxFQUFFLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly90dC1lbnRpdGllcy8uL2xpYnMvdGF0YXlhYi1lbnRpdGllcy1saWJyYXJ5L3NyYy9lbnRpdGllcy9hcGlrZXkuZW50aXR5LnRzIiwid2VicGFjazovL3R0LWVudGl0aWVzLy4vbGlicy90YXRheWFiLWVudGl0aWVzLWxpYnJhcnkvc3JjL2VudGl0aWVzL2FyZWEuZW50aXR5LnRzIiwid2VicGFjazovL3R0LWVudGl0aWVzLy4vbGlicy90YXRheWFiLWVudGl0aWVzLWxpYnJhcnkvc3JjL2VudGl0aWVzL2JyYW5kLmVudGl0eS50cyIsIndlYnBhY2s6Ly90dC1lbnRpdGllcy8uL2xpYnMvdGF0YXlhYi1lbnRpdGllcy1saWJyYXJ5L3NyYy9lbnRpdGllcy9jYXRlZ29yeS5lbnRpdHkudHMiLCJ3ZWJwYWNrOi8vdHQtZW50aXRpZXMvLi9saWJzL3RhdGF5YWItZW50aXRpZXMtbGlicmFyeS9zcmMvZW50aXRpZXMvY291bnRyeS5lbnRpdHkudHMiLCJ3ZWJwYWNrOi8vdHQtZW50aXRpZXMvLi9saWJzL3RhdGF5YWItZW50aXRpZXMtbGlicmFyeS9zcmMvZW50aXRpZXMvaW52ZW50b3J5LXN0b2NrLmVudGl0eS50cyIsIndlYnBhY2s6Ly90dC1lbnRpdGllcy8uL2xpYnMvdGF0YXlhYi1lbnRpdGllcy1saWJyYXJ5L3NyYy9lbnRpdGllcy9pbnZlbnRvcnkuZW50aXR5LnRzIiwid2VicGFjazovL3R0LWVudGl0aWVzLy4vbGlicy90YXRheWFiLWVudGl0aWVzLWxpYnJhcnkvc3JjL2VudGl0aWVzL3Blcm1pc3Npb24uZW50aXR5LnRzIiwid2VicGFjazovL3R0LWVudGl0aWVzLy4vbGlicy90YXRheWFiLWVudGl0aWVzLWxpYnJhcnkvc3JjL2VudGl0aWVzL3Byb2R1Y3QtbWVkaWEuZW50aXR5LnRzIiwid2VicGFjazovL3R0LWVudGl0aWVzLy4vbGlicy90YXRheWFiLWVudGl0aWVzLWxpYnJhcnkvc3JjL2VudGl0aWVzL3Byb2R1Y3Qtc3RvcmUuZW50aXR5LnRzIiwid2VicGFjazovL3R0LWVudGl0aWVzLy4vbGlicy90YXRheWFiLWVudGl0aWVzLWxpYnJhcnkvc3JjL2VudGl0aWVzL3Byb2R1Y3QtdGFnLmVudGl0eS50cyIsIndlYnBhY2s6Ly90dC1lbnRpdGllcy8uL2xpYnMvdGF0YXlhYi1lbnRpdGllcy1saWJyYXJ5L3NyYy9lbnRpdGllcy9wcm9kdWN0LXZhcmlhbnQtb3B0aW9uLmVudGl0eS50cyIsIndlYnBhY2s6Ly90dC1lbnRpdGllcy8uL2xpYnMvdGF0YXlhYi1lbnRpdGllcy1saWJyYXJ5L3NyYy9lbnRpdGllcy9wcm9kdWN0LXZhcmlhbnQuZW50aXR5LnRzIiwid2VicGFjazovL3R0LWVudGl0aWVzLy4vbGlicy90YXRheWFiLWVudGl0aWVzLWxpYnJhcnkvc3JjL2VudGl0aWVzL3Byb2R1Y3QuZW50aXR5LnRzIiwid2VicGFjazovL3R0LWVudGl0aWVzLy4vbGlicy90YXRheWFiLWVudGl0aWVzLWxpYnJhcnkvc3JjL2VudGl0aWVzL3B1cmNoYXNlLW9yZGVyLWl0ZW0uZW50aXR5LnRzIiwid2VicGFjazovL3R0LWVudGl0aWVzLy4vbGlicy90YXRheWFiLWVudGl0aWVzLWxpYnJhcnkvc3JjL2VudGl0aWVzL3B1cmNoYXNlLW9yZGVyLmVudGl0eS50cyIsIndlYnBhY2s6Ly90dC1lbnRpdGllcy8uL2xpYnMvdGF0YXlhYi1lbnRpdGllcy1saWJyYXJ5L3NyYy9lbnRpdGllcy9yb2xlLXBlcm1pc3Npb24uZW50aXR5LnRzIiwid2VicGFjazovL3R0LWVudGl0aWVzLy4vbGlicy90YXRheWFiLWVudGl0aWVzLWxpYnJhcnkvc3JjL2VudGl0aWVzL3N0b2NrLW1vdmVtZW50LmVudGl0eS50cyIsIndlYnBhY2s6Ly90dC1lbnRpdGllcy8uL2xpYnMvdGF0YXlhYi1lbnRpdGllcy1saWJyYXJ5L3NyYy9lbnRpdGllcy9zdG9yZS1pbnZlbnRvcnkuZW50aXR5LnRzIiwid2VicGFjazovL3R0LWVudGl0aWVzLy4vbGlicy90YXRheWFiLWVudGl0aWVzLWxpYnJhcnkvc3JjL2VudGl0aWVzL3N0b3JlLmVudGl0eS50cyIsIndlYnBhY2s6Ly90dC1lbnRpdGllcy8uL2xpYnMvdGF0YXlhYi1lbnRpdGllcy1saWJyYXJ5L3NyYy9lbnRpdGllcy9zeXMucm9sZS5lbnRpdHkudHMiLCJ3ZWJwYWNrOi8vdHQtZW50aXRpZXMvLi9saWJzL3RhdGF5YWItZW50aXRpZXMtbGlicmFyeS9zcmMvZW50aXRpZXMvc3lzLnVzZXIuZW50aXR5LnRzIiwid2VicGFjazovL3R0LWVudGl0aWVzLy4vbGlicy90YXRheWFiLWVudGl0aWVzLWxpYnJhcnkvc3JjL2VudGl0aWVzL3RhZy5lbnRpdHkudHMiLCJ3ZWJwYWNrOi8vdHQtZW50aXRpZXMvLi9saWJzL3RhdGF5YWItZW50aXRpZXMtbGlicmFyeS9zcmMvZW50aXRpZXMvdXNlci5lbnRpdHkudHMiLCJ3ZWJwYWNrOi8vdHQtZW50aXRpZXMvLi9saWJzL3RhdGF5YWItZW50aXRpZXMtbGlicmFyeS9zcmMvZW50aXRpZXMvdXNlckRldmljZS5lbnRpdHkudHMiLCJ3ZWJwYWNrOi8vdHQtZW50aXRpZXMvLi9saWJzL3RhdGF5YWItZW50aXRpZXMtbGlicmFyeS9zcmMvZW50aXRpZXMvdmFyaWFudC1vcHRpb24uZW50aXR5LnRzIiwid2VicGFjazovL3R0LWVudGl0aWVzLy4vbGlicy90YXRheWFiLWVudGl0aWVzLWxpYnJhcnkvc3JjL2VudGl0aWVzL3ZhcmlhbnQtdHlwZS5lbnRpdHkudHMiLCJ3ZWJwYWNrOi8vdHQtZW50aXRpZXMvLi9saWJzL3RhdGF5YWItZW50aXRpZXMtbGlicmFyeS9zcmMvZW50aXRpZXMvdmVuZG9yLXByb2R1Y3QuZW50aXR5LnRzIiwid2VicGFjazovL3R0LWVudGl0aWVzLy4vbGlicy90YXRheWFiLWVudGl0aWVzLWxpYnJhcnkvc3JjL2VudGl0aWVzL3ZlbmRvci5lbnRpdHkudHMiLCJ3ZWJwYWNrOi8vdHQtZW50aXRpZXMvLi9saWJzL3RhdGF5YWItZW50aXRpZXMtbGlicmFyeS9zcmMvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vdHQtZW50aXRpZXMvLi9saWJzL3RhdGF5YWItZW50aXRpZXMtbGlicmFyeS9zcmMvdXRpbHMvZW51bXMvZ2VuZGVyLnRzIiwid2VicGFjazovL3R0LWVudGl0aWVzLy4vbGlicy90YXRheWFiLWVudGl0aWVzLWxpYnJhcnkvc3JjL3V0aWxzL2VudW1zL2xhbmd1YWdlLnRzIiwid2VicGFjazovL3R0LWVudGl0aWVzLy4vbGlicy90YXRheWFiLWVudGl0aWVzLWxpYnJhcnkvc3JjL3V0aWxzL2VudW1zL29zTmFtZS50cyIsIndlYnBhY2s6Ly90dC1lbnRpdGllcy8uL2xpYnMvdGF0YXlhYi1lbnRpdGllcy1saWJyYXJ5L3NyYy91dGlscy9lbnVtcy9wcm9kdWN0QXBwLnRzIiwid2VicGFjazovL3R0LWVudGl0aWVzLy4vbGlicy90YXRheWFiLWVudGl0aWVzLWxpYnJhcnkvc3JjL3V0aWxzL2VudW1zL3B1cmNoYXNlT3JkZXJTdGF0dXMudHMiLCJ3ZWJwYWNrOi8vdHQtZW50aXRpZXMvLi9saWJzL3RhdGF5YWItZW50aXRpZXMtbGlicmFyeS9zcmMvdXRpbHMvZW51bXMvc3RhdHVzLnRzIiwid2VicGFjazovL3R0LWVudGl0aWVzLy4vbGlicy90YXRheWFiLWVudGl0aWVzLWxpYnJhcnkvc3JjL3V0aWxzL2VudW1zL3N0b2NrTW92ZW1lbnRUeXBlLnRzIiwid2VicGFjazovL3R0LWVudGl0aWVzLy4vbGlicy90YXRheWFiLWVudGl0aWVzLWxpYnJhcnkvc3JjL3V0aWxzL2VudW1zL3ZlcnNpb250eXBlLnRzIiwid2VicGFjazovL3R0LWVudGl0aWVzLy4vc3JjL2FwcC5tb2R1bGUudHMiLCJ3ZWJwYWNrOi8vdHQtZW50aXRpZXMvZXh0ZXJuYWwgY29tbW9uanMgXCJAbmVzdGpzL2NvbW1vblwiIiwid2VicGFjazovL3R0LWVudGl0aWVzL2V4dGVybmFsIGNvbW1vbmpzIFwiQG5lc3Rqcy9jb25maWdcIiIsIndlYnBhY2s6Ly90dC1lbnRpdGllcy9leHRlcm5hbCBjb21tb25qcyBcIkBuZXN0anMvY29yZVwiIiwid2VicGFjazovL3R0LWVudGl0aWVzL2V4dGVybmFsIGNvbW1vbmpzIFwiQG5lc3Rqcy9zZXF1ZWxpemVcIiIsIndlYnBhY2s6Ly90dC1lbnRpdGllcy9leHRlcm5hbCBjb21tb25qcyBcInNlcXVlbGl6ZS10eXBlc2NyaXB0XCIiLCJ3ZWJwYWNrOi8vdHQtZW50aXRpZXMvZXh0ZXJuYWwgY29tbW9uanMgXCJ0c2NvbmZpZy1wYXRocy9yZWdpc3RlclwiIiwid2VicGFjazovL3R0LWVudGl0aWVzL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL3R0LWVudGl0aWVzLy4vc3JjL21haW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sdW1uLCBEYXRhVHlwZSwgTW9kZWwsIFRhYmxlIH0gZnJvbSAnc2VxdWVsaXplLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgU3RhdHVzIH0gZnJvbSAnLi4vdXRpbHMvZW51bXMvc3RhdHVzJztcbmltcG9ydCB7IFZlcnNpb25UeXBlIH0gZnJvbSAnLi4vdXRpbHMvZW51bXMvdmVyc2lvbnR5cGUnO1xuaW1wb3J0IHsgT3NOYW1lIH0gZnJvbSAnLi4vdXRpbHMvZW51bXMvb3NOYW1lJztcbmltcG9ydCB7IFByb2R1Y3RBcHAgfSBmcm9tICcuLi91dGlscy9lbnVtcy9wcm9kdWN0QXBwJztcblxuQFRhYmxlXG5leHBvcnQgY2xhc3MgQXBpS2V5IGV4dGVuZHMgTW9kZWwge1xuICBAQ29sdW1uXG4gIGRlY2xhcmUgaGFzaGVkQXBpS2V5OiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IHR5cGU6IERhdGFUeXBlLkVOVU0oLi4uT2JqZWN0LnZhbHVlcyhPc05hbWUpKSB9KVxuICBkZWNsYXJlIG9zTmFtZTogT3NOYW1lO1xuXG4gIEBDb2x1bW4oeyB0eXBlOiBEYXRhVHlwZS5FTlVNKC4uLk9iamVjdC52YWx1ZXMoUHJvZHVjdEFwcCkpIH0pXG4gIGRlY2xhcmUgYXBwTmFtZTogUHJvZHVjdEFwcDtcblxuICBAQ29sdW1uXG4gIGRlY2xhcmUgYXBwVmVyc2lvbjogc3RyaW5nO1xuXG4gIEBDb2x1bW5cbiAgZGVjbGFyZSBleHBpcnlEYXRlOiBEYXRlO1xuXG4gIEBDb2x1bW4oe1xuICAgIHR5cGU6IERhdGFUeXBlLkVOVU0oLi4uT2JqZWN0LnZhbHVlcyhTdGF0dXMpKSxcbiAgICBkZWZhdWx0VmFsdWU6IFN0YXR1cy5BQ1RJVkUsXG4gIH0pXG4gIGRlY2xhcmUgc3RhdHVzOiBTdGF0dXM7XG5cbiAgQENvbHVtbih7IGFsbG93TnVsbDogZmFsc2UsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcbiAgZGVjbGFyZSBpc1JlbGVhc2VkOiBib29sZWFuO1xuXG4gIEBDb2x1bW4oe1xuICAgIHR5cGU6IERhdGFUeXBlLkVOVU0oLi4uT2JqZWN0LnZhbHVlcyhWZXJzaW9uVHlwZSkpLFxuICAgIGRlZmF1bHRWYWx1ZTogVmVyc2lvblR5cGUuT1BUSU9OQUwsXG4gIH0pXG4gIGRlY2xhcmUgdmVyc2lvblR5cGU6IFZlcnNpb25UeXBlO1xufVxuIiwiaW1wb3J0IHtcbiAgQmVsb25nc1RvLFxuICBDb2x1bW4sXG4gIEZvcmVpZ25LZXksXG4gIE1vZGVsLFxuICBUYWJsZSxcbn0gZnJvbSAnc2VxdWVsaXplLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgQ291bnRyeSB9IGZyb20gJy4vY291bnRyeS5lbnRpdHknO1xuXG5AVGFibGVcbmV4cG9ydCBjbGFzcyBBcmVhIGV4dGVuZHMgTW9kZWwge1xuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiBmYWxzZSB9KVxuICBkZWNsYXJlIG5hbWVFbjogc3RyaW5nO1xuXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IGZhbHNlIH0pXG4gIGRlY2xhcmUgbmFtZUFyOiBzdHJpbmc7XG5cbiAgQEZvcmVpZ25LZXkoKCkgPT4gQ291bnRyeSlcbiAgQENvbHVtbih7XG4gICAgYWxsb3dOdWxsOiBmYWxzZSxcbiAgICB2YWxpZGF0ZTogeyBub3ROdWxsOiB7IG1zZzogJ0NvdW50eSBJZCBSZXF1aXJlZCcgfSB9LFxuICB9KVxuICBkZWNsYXJlIGNvdW50cnlJZDogbnVtYmVyO1xuXG4gIEBDb2x1bW5cbiAgZGVjbGFyZSBwYXJlbnRJZD86IG51bWJlcjtcblxuICBAQmVsb25nc1RvKCgpID0+IENvdW50cnkpXG4gIGRlY2xhcmUgY291bnRyeTogQ291bnRyeTtcbn1cbiIsImltcG9ydCB7IFRhYmxlLCBDb2x1bW4sIE1vZGVsLCBEYXRhVHlwZSwgSGFzTWFueSB9IGZyb20gJ3NlcXVlbGl6ZS10eXBlc2NyaXB0JztcbmltcG9ydCB7IFN0YXR1cyB9IGZyb20gJy4uL3V0aWxzL2VudW1zL3N0YXR1cyc7XG5cbkBUYWJsZVxuZXhwb3J0IGNsYXNzIEJyYW5kIGV4dGVuZHMgTW9kZWwge1xuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiBmYWxzZSB9KVxuICBkZWNsYXJlIG5hbWVFbjogc3RyaW5nO1xuXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IGZhbHNlIH0pXG4gIGRlY2xhcmUgbmFtZUFyOiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IHR5cGU6IERhdGFUeXBlLlRFWFQsIGFsbG93TnVsbDogdHJ1ZSB9KVxuICBkZWNsYXJlIGRlc2NyaXB0aW9uRW4/OiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IHR5cGU6IERhdGFUeXBlLlRFWFQsIGFsbG93TnVsbDogdHJ1ZSB9KVxuICBkZWNsYXJlIGRlc2NyaXB0aW9uQXI/OiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IGFsbG93TnVsbDogdHJ1ZSB9KVxuICBkZWNsYXJlIGxvZ28/OiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IGFsbG93TnVsbDogdHJ1ZSB9KVxuICBkZWNsYXJlIHdlYnNpdGU/OiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IGRlZmF1bHRWYWx1ZTogMCB9KVxuICBkZWNsYXJlIHNvcnRPcmRlcjogbnVtYmVyO1xuXG4gIEBDb2x1bW4oe1xuICAgIHR5cGU6IERhdGFUeXBlLkVOVU0oLi4uT2JqZWN0LnZhbHVlcyhTdGF0dXMpKSxcbiAgICBkZWZhdWx0VmFsdWU6IFN0YXR1cy5BQ1RJVkUsXG4gIH0pXG4gIGRlY2xhcmUgc3RhdHVzOiBTdGF0dXM7XG59XG4iLCJpbXBvcnQge1xuICBUYWJsZSxcbiAgQ29sdW1uLFxuICBNb2RlbCxcbiAgRGF0YVR5cGUsXG4gIEZvcmVpZ25LZXksXG4gIEJlbG9uZ3NUbyxcbiAgSGFzTWFueSxcbn0gZnJvbSAnc2VxdWVsaXplLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgU3RhdHVzIH0gZnJvbSAnLi4vdXRpbHMvZW51bXMvc3RhdHVzJztcblxuQFRhYmxlXG5leHBvcnQgY2xhc3MgQ2F0ZWdvcnkgZXh0ZW5kcyBNb2RlbCB7XG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IGZhbHNlIH0pXG4gIGRlY2xhcmUgbmFtZUVuOiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IGFsbG93TnVsbDogZmFsc2UgfSlcbiAgZGVjbGFyZSBuYW1lQXI6IHN0cmluZztcblxuICBAQ29sdW1uKHsgdHlwZTogRGF0YVR5cGUuVEVYVCwgYWxsb3dOdWxsOiB0cnVlIH0pXG4gIGRlY2xhcmUgZGVzY3JpcHRpb25Fbj86IHN0cmluZztcblxuICBAQ29sdW1uKHsgdHlwZTogRGF0YVR5cGUuVEVYVCwgYWxsb3dOdWxsOiB0cnVlIH0pXG4gIGRlY2xhcmUgZGVzY3JpcHRpb25Bcj86IHN0cmluZztcblxuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiB0cnVlIH0pXG4gIGRlY2xhcmUgaW1hZ2U/OiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IGRlZmF1bHRWYWx1ZTogMCB9KVxuICBkZWNsYXJlIHNvcnRPcmRlcjogbnVtYmVyO1xuXG4gIEBDb2x1bW4oe1xuICAgIHR5cGU6IERhdGFUeXBlLkVOVU0oLi4uT2JqZWN0LnZhbHVlcyhTdGF0dXMpKSxcbiAgICBkZWZhdWx0VmFsdWU6IFN0YXR1cy5BQ1RJVkUsXG4gIH0pXG4gIGRlY2xhcmUgc3RhdHVzOiBTdGF0dXM7XG5cbiAgQEZvcmVpZ25LZXkoKCkgPT4gQ2F0ZWdvcnkpXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IHRydWUgfSlcbiAgZGVjbGFyZSBwYXJlbnRJZD86IG51bWJlcjtcblxuICBAQmVsb25nc1RvKCgpID0+IENhdGVnb3J5LCB7IGZvcmVpZ25LZXk6ICdwYXJlbnRJZCcsIGFzOiAncGFyZW50JyB9KVxuICBkZWNsYXJlIHBhcmVudD86IENhdGVnb3J5O1xuXG4gIEBIYXNNYW55KCgpID0+IENhdGVnb3J5LCB7IGZvcmVpZ25LZXk6ICdwYXJlbnRJZCcsIGFzOiAnY2hpbGRyZW4nIH0pXG4gIGRlY2xhcmUgY2hpbGRyZW4/OiBDYXRlZ29yeVtdO1xufVxuIiwiaW1wb3J0IHsgQ29sdW1uLCBNb2RlbCwgVGFibGUgfSBmcm9tICdzZXF1ZWxpemUtdHlwZXNjcmlwdCc7XG5cbkBUYWJsZVxuZXhwb3J0IGNsYXNzIENvdW50cnkgZXh0ZW5kcyBNb2RlbCB7XG4gIEBDb2x1bW5cbiAgZGVjbGFyZSBuYW1lRW46IHN0cmluZztcblxuICBAQ29sdW1uXG4gIGRlY2xhcmUgbmFtZUFyOiBzdHJpbmc7XG5cbiAgQENvbHVtblxuICBkZWNsYXJlIGZsYWdJY29uOiBzdHJpbmc7XG5cbiAgQENvbHVtblxuICBkZWNsYXJlIGlzb0NvZGU6IHN0cmluZztcblxuICBAQ29sdW1uXG4gIGRlY2xhcmUgcGhvbmVFeHQ6IHN0cmluZztcblxuICBAQ29sdW1uXG4gIGRlY2xhcmUgY3VycmVuY3k6IHN0cmluZztcblxuICBAQ29sdW1uXG4gIGRlY2xhcmUgZXhjaGFuZ2VSYXRlVG9Ld2Q6IG51bWJlcjtcbn1cbiIsImltcG9ydCB7XG4gIFRhYmxlLFxuICBDb2x1bW4sXG4gIE1vZGVsLFxuICBGb3JlaWduS2V5LFxuICBCZWxvbmdzVG8sXG4gIERhdGFUeXBlLFxufSBmcm9tICdzZXF1ZWxpemUtdHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBJbnZlbnRvcnkgfSBmcm9tICcuL2ludmVudG9yeS5lbnRpdHknO1xuaW1wb3J0IHsgUHJvZHVjdCB9IGZyb20gJy4vcHJvZHVjdC5lbnRpdHknO1xuaW1wb3J0IHsgUHJvZHVjdFZhcmlhbnQgfSBmcm9tICcuL3Byb2R1Y3QtdmFyaWFudC5lbnRpdHknO1xuXG5AVGFibGVcbmV4cG9ydCBjbGFzcyBJbnZlbnRvcnlTdG9jayBleHRlbmRzIE1vZGVsIHtcbiAgQEZvcmVpZ25LZXkoKCkgPT4gSW52ZW50b3J5KVxuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiBmYWxzZSB9KVxuICBkZWNsYXJlIGludmVudG9yeUlkOiBudW1iZXI7XG5cbiAgQEZvcmVpZ25LZXkoKCkgPT4gUHJvZHVjdClcbiAgQENvbHVtbih7IGFsbG93TnVsbDogZmFsc2UgfSlcbiAgZGVjbGFyZSBwcm9kdWN0SWQ6IG51bWJlcjtcblxuICAvLyBudWxsID0gcHJvZHVjdCBoYXMgbm8gdmFyaWFudHNcbiAgQEZvcmVpZ25LZXkoKCkgPT4gUHJvZHVjdFZhcmlhbnQpXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IHRydWUgfSlcbiAgZGVjbGFyZSBwcm9kdWN0VmFyaWFudElkPzogbnVtYmVyO1xuXG4gIC8vIFBoeXNpY2FsIHN0b2NrIGN1cnJlbnRseSBvbiBzaGVsZiBpbiB0aGlzIGludmVudG9yeVxuICBAQ29sdW1uKHsgZGVmYXVsdFZhbHVlOiAwIH0pXG4gIGRlY2xhcmUgcGh5c2ljYWxRdWFudGl0eTogbnVtYmVyO1xuXG4gIC8vIFVuaXRzIHJlc2VydmVkIGZvciBwZW5kaW5nIG9yZGVycyAod2FpdGluZyBQTyBmdWxmaWxtZW50IG9yIHBhY2tpbmcpXG4gIEBDb2x1bW4oeyBkZWZhdWx0VmFsdWU6IDAgfSlcbiAgZGVjbGFyZSByZXNlcnZlZFF1YW50aXR5OiBudW1iZXI7XG5cbiAgLy8gQXZhaWxhYmxlID0gcGh5c2ljYWxRdWFudGl0eSAtIHJlc2VydmVkUXVhbnRpdHkgKGNvbXB1dGVkIGluIHNlcnZpY2UgbGF5ZXIpXG5cbiAgLy8gRmxhZzogY2FuIHRoaXMgaXRlbSBiZSBzb3VyY2VkIGZyb20gYSB2ZW5kb3IgaWYgcGh5c2ljYWwgc3RvY2sgaXMgMD9cbiAgQENvbHVtbih7IGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcbiAgZGVjbGFyZSBhdmFpbGFibGVGcm9tVmVuZG9yOiBib29sZWFuO1xuXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IHRydWUgfSlcbiAgZGVjbGFyZSBsb3dTdG9ja1RocmVzaG9sZD86IG51bWJlcjtcblxuICAvLyDilIDilIDilIAgQXNzb2NpYXRpb25zIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIEBCZWxvbmdzVG8oKCkgPT4gSW52ZW50b3J5KVxuICBkZWNsYXJlIGludmVudG9yeTogSW52ZW50b3J5O1xuXG4gIEBCZWxvbmdzVG8oKCkgPT4gUHJvZHVjdClcbiAgZGVjbGFyZSBwcm9kdWN0OiBQcm9kdWN0O1xuXG4gIEBCZWxvbmdzVG8oKCkgPT4gUHJvZHVjdFZhcmlhbnQpXG4gIGRlY2xhcmUgdmFyaWFudD86IFByb2R1Y3RWYXJpYW50O1xufVxuIiwiaW1wb3J0IHtcbiAgVGFibGUsXG4gIENvbHVtbixcbiAgTW9kZWwsXG4gIEhhc01hbnksXG4gIEJlbG9uZ3NUb01hbnksXG4gIERhdGFUeXBlLFxufSBmcm9tICdzZXF1ZWxpemUtdHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBJbnZlbnRvcnlTdG9jayB9IGZyb20gJy4vaW52ZW50b3J5LXN0b2NrLmVudGl0eSc7XG5pbXBvcnQgeyBTdG9yZUludmVudG9yeSB9IGZyb20gJy4vc3RvcmUtaW52ZW50b3J5LmVudGl0eSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJy4vc3RvcmUuZW50aXR5JztcbmltcG9ydCB7IFN0YXR1cyB9IGZyb20gJy4uL3V0aWxzL2VudW1zL3N0YXR1cyc7XG5cbkBUYWJsZVxuZXhwb3J0IGNsYXNzIEludmVudG9yeSBleHRlbmRzIE1vZGVsIHtcbiAgQENvbHVtbih7IGFsbG93TnVsbDogZmFsc2UgfSlcbiAgZGVjbGFyZSBuYW1lRW46IHN0cmluZztcblxuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiBmYWxzZSB9KVxuICBkZWNsYXJlIG5hbWVBcjogc3RyaW5nO1xuXG4gIEBDb2x1bW4oeyB0eXBlOiBEYXRhVHlwZS5URVhULCBhbGxvd051bGw6IHRydWUgfSlcbiAgZGVjbGFyZSBhZGRyZXNzRW4/OiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IHR5cGU6IERhdGFUeXBlLlRFWFQsIGFsbG93TnVsbDogdHJ1ZSB9KVxuICBkZWNsYXJlIGFkZHJlc3NBcj86IHN0cmluZztcblxuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiB0cnVlIH0pXG4gIGRlY2xhcmUgY29udGFjdFBob25lPzogc3RyaW5nO1xuXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IHRydWUgfSlcbiAgZGVjbGFyZSBjb250YWN0RW1haWw/OiBzdHJpbmc7XG5cbiAgQENvbHVtbih7XG4gICAgdHlwZTogRGF0YVR5cGUuRU5VTSguLi5PYmplY3QudmFsdWVzKFN0YXR1cykpLFxuICAgIGRlZmF1bHRWYWx1ZTogU3RhdHVzLkFDVElWRSxcbiAgfSlcbiAgZGVjbGFyZSBzdGF0dXM6IFN0YXR1cztcblxuICAvLyDilIDilIDilIAgQXNzb2NpYXRpb25zIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIEBIYXNNYW55KCgpID0+IEludmVudG9yeVN0b2NrKVxuICBkZWNsYXJlIHN0b2NrczogSW52ZW50b3J5U3RvY2tbXTtcblxuICBAQmVsb25nc1RvTWFueSgoKSA9PiBTdG9yZSwgKCkgPT4gU3RvcmVJbnZlbnRvcnkpXG4gIGRlY2xhcmUgc3RvcmVzOiBTdG9yZVtdO1xufVxuIiwiaW1wb3J0IHtcbiAgVGFibGUsXG4gIENvbHVtbixcbiAgTW9kZWwsXG4gIEJlbG9uZ3NUb01hbnksXG59IGZyb20gJ3NlcXVlbGl6ZS10eXBlc2NyaXB0JztcbmltcG9ydCB7IFN5c1JvbGUgfSBmcm9tICcuL3N5cy5yb2xlLmVudGl0eSc7XG5pbXBvcnQgeyBSb2xlUGVybWlzc2lvbiB9IGZyb20gJy4vcm9sZS1wZXJtaXNzaW9uLmVudGl0eSc7XG5cbkBUYWJsZVxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb24gZXh0ZW5kcyBNb2RlbCB7XG4gIC8vIGUuZy4gJ3Byb2R1Y3RzLnZpZXcnLCAncHJvZHVjdHMuY3JlYXRlJywgJ2ludmVudG9yeS5hZGp1c3QnXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IGZhbHNlLCB1bmlxdWU6IHRydWUgfSlcbiAgZGVjbGFyZSBuYW1lOiBzdHJpbmc7XG5cbiAgLy8gSHVtYW4gcmVhZGFibGUgZS5nLiAnVmlldyBQcm9kdWN0cydcbiAgQENvbHVtbih7IGFsbG93TnVsbDogZmFsc2UgfSlcbiAgZGVjbGFyZSBkaXNwbGF5TmFtZTogc3RyaW5nO1xuXG4gIC8vIEdyb3VwaW5nIGZvciBVSSBlLmcuICdQcm9kdWN0cycsICdJbnZlbnRvcnknLCAnUHVyY2hhc2luZydcbiAgQENvbHVtbih7IGFsbG93TnVsbDogZmFsc2UgfSlcbiAgZGVjbGFyZSBncm91cDogc3RyaW5nO1xuXG4gIEBCZWxvbmdzVG9NYW55KCgpID0+IFN5c1JvbGUsICgpID0+IFJvbGVQZXJtaXNzaW9uKVxuICBkZWNsYXJlIHJvbGVzOiBTeXNSb2xlW107XG59XG4iLCJpbXBvcnQge1xuICBUYWJsZSxcbiAgQ29sdW1uLFxuICBNb2RlbCxcbiAgRm9yZWlnbktleSxcbiAgQmVsb25nc1RvLFxuICBEYXRhVHlwZSxcbn0gZnJvbSAnc2VxdWVsaXplLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgUHJvZHVjdCB9IGZyb20gJy4vcHJvZHVjdC5lbnRpdHknO1xuXG5leHBvcnQgZW51bSBNZWRpYVR5cGUge1xuICBJTUFHRSA9ICdpbWFnZScsXG4gIFZJREVPID0gJ3ZpZGVvJyxcbn1cblxuQFRhYmxlXG5leHBvcnQgY2xhc3MgUHJvZHVjdE1lZGlhIGV4dGVuZHMgTW9kZWwge1xuICBARm9yZWlnbktleSgoKSA9PiBQcm9kdWN0KVxuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiBmYWxzZSB9KVxuICBkZWNsYXJlIHByb2R1Y3RJZDogbnVtYmVyO1xuXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IGZhbHNlIH0pXG4gIGRlY2xhcmUgdXJsOiBzdHJpbmc7XG5cbiAgQENvbHVtbih7XG4gICAgdHlwZTogRGF0YVR5cGUuRU5VTSguLi5PYmplY3QudmFsdWVzKE1lZGlhVHlwZSkpLFxuICAgIGRlZmF1bHRWYWx1ZTogTWVkaWFUeXBlLklNQUdFLFxuICB9KVxuICBkZWNsYXJlIHR5cGU6IE1lZGlhVHlwZTtcblxuICBAQ29sdW1uKHsgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuICBkZWNsYXJlIGlzRGVmYXVsdDogYm9vbGVhbjtcblxuICBAQ29sdW1uKHsgZGVmYXVsdFZhbHVlOiAwIH0pXG4gIGRlY2xhcmUgc29ydE9yZGVyOiBudW1iZXI7XG5cbiAgQENvbHVtbih7IGFsbG93TnVsbDogdHJ1ZSB9KVxuICBkZWNsYXJlIGFsdEVuPzogc3RyaW5nO1xuXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IHRydWUgfSlcbiAgZGVjbGFyZSBhbHRBcj86IHN0cmluZztcblxuICBAQmVsb25nc1RvKCgpID0+IFByb2R1Y3QpXG4gIGRlY2xhcmUgcHJvZHVjdDogUHJvZHVjdDtcbn1cbiIsImltcG9ydCB7XG4gIFRhYmxlLFxuICBDb2x1bW4sXG4gIE1vZGVsLFxuICBGb3JlaWduS2V5LFxuICBEYXRhVHlwZSxcbn0gZnJvbSAnc2VxdWVsaXplLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgUHJvZHVjdCB9IGZyb20gJy4vcHJvZHVjdC5lbnRpdHknO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICcuL3N0b3JlLmVudGl0eSc7XG5pbXBvcnQgeyBTdGF0dXMgfSBmcm9tICcuLi91dGlscy9lbnVtcy9zdGF0dXMnO1xuXG5AVGFibGVcbmV4cG9ydCBjbGFzcyBQcm9kdWN0U3RvcmUgZXh0ZW5kcyBNb2RlbCB7XG4gIEBGb3JlaWduS2V5KCgpID0+IFByb2R1Y3QpXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IGZhbHNlIH0pXG4gIGRlY2xhcmUgcHJvZHVjdElkOiBudW1iZXI7XG5cbiAgQEZvcmVpZ25LZXkoKCkgPT4gU3RvcmUpXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IGZhbHNlIH0pXG4gIGRlY2xhcmUgc3RvcmVJZDogbnVtYmVyO1xuXG4gIC8vIFN0b3JlLXNwZWNpZmljIHJlZ3VsYXIgcHJpY2Ug4oCUIG51bGwgbWVhbnMgdXNlIHByb2R1Y3QuZGVmYXVsdFByaWNlXG4gIEBDb2x1bW4oeyB0eXBlOiBEYXRhVHlwZS5ERUNJTUFMKDEwLCAzKSwgYWxsb3dOdWxsOiB0cnVlIH0pXG4gIGRlY2xhcmUgcHJpY2U/OiBudW1iZXI7XG5cbiAgLy8gU2FsZSBwcmljZSDigJQgb25seSBhY3RpdmUgd2hlbiB0b2RheSBpcyBiZXR3ZWVuIHNhbGVTdGFydERhdGUgYW5kIHNhbGVFbmREYXRlXG4gIEBDb2x1bW4oeyB0eXBlOiBEYXRhVHlwZS5ERUNJTUFMKDEwLCAzKSwgYWxsb3dOdWxsOiB0cnVlIH0pXG4gIGRlY2xhcmUgc2FsZVByaWNlPzogbnVtYmVyO1xuXG4gIEBDb2x1bW4oeyB0eXBlOiBEYXRhVHlwZS5EQVRFLCBhbGxvd051bGw6IHRydWUgfSlcbiAgZGVjbGFyZSBzYWxlU3RhcnREYXRlPzogRGF0ZTtcblxuICBAQ29sdW1uKHsgdHlwZTogRGF0YVR5cGUuREFURSwgYWxsb3dOdWxsOiB0cnVlIH0pXG4gIGRlY2xhcmUgc2FsZUVuZERhdGU/OiBEYXRlO1xuXG4gIEBDb2x1bW4oe1xuICAgIHR5cGU6IERhdGFUeXBlLkVOVU0oLi4uT2JqZWN0LnZhbHVlcyhTdGF0dXMpKSxcbiAgICBkZWZhdWx0VmFsdWU6IFN0YXR1cy5BQ1RJVkUsXG4gIH0pXG4gIGRlY2xhcmUgc3RhdHVzOiBTdGF0dXM7XG59XG4iLCJpbXBvcnQge1xuICBUYWJsZSxcbiAgQ29sdW1uLFxuICBNb2RlbCxcbiAgRm9yZWlnbktleSxcbn0gZnJvbSAnc2VxdWVsaXplLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgUHJvZHVjdCB9IGZyb20gJy4vcHJvZHVjdC5lbnRpdHknO1xuaW1wb3J0IHsgVGFnIH0gZnJvbSAnLi90YWcuZW50aXR5JztcblxuQFRhYmxlXG5leHBvcnQgY2xhc3MgUHJvZHVjdFRhZyBleHRlbmRzIE1vZGVsIHtcbiAgQEZvcmVpZ25LZXkoKCkgPT4gUHJvZHVjdClcbiAgQENvbHVtbih7IGFsbG93TnVsbDogZmFsc2UgfSlcbiAgZGVjbGFyZSBwcm9kdWN0SWQ6IG51bWJlcjtcblxuICBARm9yZWlnbktleSgoKSA9PiBUYWcpXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IGZhbHNlIH0pXG4gIGRlY2xhcmUgdGFnSWQ6IG51bWJlcjtcbn1cbiIsImltcG9ydCB7XG4gIFRhYmxlLFxuICBDb2x1bW4sXG4gIE1vZGVsLFxuICBGb3JlaWduS2V5LFxufSBmcm9tICdzZXF1ZWxpemUtdHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBQcm9kdWN0VmFyaWFudCB9IGZyb20gJy4vcHJvZHVjdC12YXJpYW50LmVudGl0eSc7XG5pbXBvcnQgeyBWYXJpYW50T3B0aW9uIH0gZnJvbSAnLi92YXJpYW50LW9wdGlvbi5lbnRpdHknO1xuXG5AVGFibGVcbmV4cG9ydCBjbGFzcyBQcm9kdWN0VmFyaWFudE9wdGlvbiBleHRlbmRzIE1vZGVsIHtcbiAgQEZvcmVpZ25LZXkoKCkgPT4gUHJvZHVjdFZhcmlhbnQpXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IGZhbHNlIH0pXG4gIGRlY2xhcmUgcHJvZHVjdFZhcmlhbnRJZDogbnVtYmVyO1xuXG4gIEBGb3JlaWduS2V5KCgpID0+IFZhcmlhbnRPcHRpb24pXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IGZhbHNlIH0pXG4gIGRlY2xhcmUgdmFyaWFudE9wdGlvbklkOiBudW1iZXI7XG59XG4iLCJpbXBvcnQge1xuICBUYWJsZSxcbiAgQ29sdW1uLFxuICBNb2RlbCxcbiAgRm9yZWlnbktleSxcbiAgQmVsb25nc1RvLFxuICBCZWxvbmdzVG9NYW55LFxuICBIYXNNYW55LFxuICBEYXRhVHlwZSxcbn0gZnJvbSAnc2VxdWVsaXplLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgUHJvZHVjdCB9IGZyb20gJy4vcHJvZHVjdC5lbnRpdHknO1xuaW1wb3J0IHsgVmFyaWFudE9wdGlvbiB9IGZyb20gJy4vdmFyaWFudC1vcHRpb24uZW50aXR5JztcbmltcG9ydCB7IFByb2R1Y3RWYXJpYW50T3B0aW9uIH0gZnJvbSAnLi9wcm9kdWN0LXZhcmlhbnQtb3B0aW9uLmVudGl0eSc7XG5pbXBvcnQgeyBTdGF0dXMgfSBmcm9tICcuLi91dGlscy9lbnVtcy9zdGF0dXMnO1xuXG5AVGFibGVcbmV4cG9ydCBjbGFzcyBQcm9kdWN0VmFyaWFudCBleHRlbmRzIE1vZGVsIHtcbiAgQEZvcmVpZ25LZXkoKCkgPT4gUHJvZHVjdClcbiAgQENvbHVtbih7IGFsbG93TnVsbDogZmFsc2UgfSlcbiAgZGVjbGFyZSBwcm9kdWN0SWQ6IG51bWJlcjtcblxuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiB0cnVlIH0pXG4gIGRlY2xhcmUgc2t1Pzogc3RyaW5nO1xuXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IHRydWUgfSlcbiAgZGVjbGFyZSBiYXJjb2RlPzogc3RyaW5nO1xuXG4gIC8vIE92ZXJyaWRlIGRlZmF1bHQgcHJvZHVjdCBwcmljZSBwZXIgdmFyaWFudCBpZiBuZWVkZWRcbiAgQENvbHVtbih7IHR5cGU6IERhdGFUeXBlLkRFQ0lNQUwoMTAsIDMpLCBhbGxvd051bGw6IHRydWUgfSlcbiAgZGVjbGFyZSBwcmljZU92ZXJyaWRlPzogbnVtYmVyO1xuXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IHRydWUgfSlcbiAgZGVjbGFyZSBpbWFnZT86IHN0cmluZztcblxuICBAQ29sdW1uKHsgZGVmYXVsdFZhbHVlOiAwIH0pXG4gIGRlY2xhcmUgc29ydE9yZGVyOiBudW1iZXI7XG5cbiAgQENvbHVtbih7XG4gICAgdHlwZTogRGF0YVR5cGUuRU5VTSguLi5PYmplY3QudmFsdWVzKFN0YXR1cykpLFxuICAgIGRlZmF1bHRWYWx1ZTogU3RhdHVzLkFDVElWRSxcbiAgfSlcbiAgZGVjbGFyZSBzdGF0dXM6IFN0YXR1cztcblxuICAvLyDilIDilIDilIAgQXNzb2NpYXRpb25zIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIEBCZWxvbmdzVG8oKCkgPT4gUHJvZHVjdClcbiAgZGVjbGFyZSBwcm9kdWN0OiBQcm9kdWN0O1xuXG4gIEBCZWxvbmdzVG9NYW55KCgpID0+IFZhcmlhbnRPcHRpb24sICgpID0+IFByb2R1Y3RWYXJpYW50T3B0aW9uKVxuICBkZWNsYXJlIG9wdGlvbnM6IFZhcmlhbnRPcHRpb25bXTtcbn1cbiIsImltcG9ydCB7XG4gIFRhYmxlLFxuICBDb2x1bW4sXG4gIE1vZGVsLFxuICBGb3JlaWduS2V5LFxuICBCZWxvbmdzVG8sXG4gIEhhc01hbnksXG4gIEJlbG9uZ3NUb01hbnksXG4gIERhdGFUeXBlLFxufSBmcm9tICdzZXF1ZWxpemUtdHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBCcmFuZCB9IGZyb20gJy4vYnJhbmQuZW50aXR5JztcbmltcG9ydCB7IENhdGVnb3J5IH0gZnJvbSAnLi9jYXRlZ29yeS5lbnRpdHknO1xuaW1wb3J0IHsgUHJvZHVjdE1lZGlhIH0gZnJvbSAnLi9wcm9kdWN0LW1lZGlhLmVudGl0eSc7XG5pbXBvcnQgeyBQcm9kdWN0VmFyaWFudCB9IGZyb20gJy4vcHJvZHVjdC12YXJpYW50LmVudGl0eSc7XG5pbXBvcnQgeyBQcm9kdWN0U3RvcmUgfSBmcm9tICcuL3Byb2R1Y3Qtc3RvcmUuZW50aXR5JztcbmltcG9ydCB7IFByb2R1Y3RUYWcgfSBmcm9tICcuL3Byb2R1Y3QtdGFnLmVudGl0eSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJy4vc3RvcmUuZW50aXR5JztcbmltcG9ydCB7IFRhZyB9IGZyb20gJy4vdGFnLmVudGl0eSc7XG5pbXBvcnQgeyBTdGF0dXMgfSBmcm9tICcuLi91dGlscy9lbnVtcy9zdGF0dXMnO1xuXG5AVGFibGVcbmV4cG9ydCBjbGFzcyBQcm9kdWN0IGV4dGVuZHMgTW9kZWwge1xuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiBmYWxzZSB9KVxuICBkZWNsYXJlIG5hbWVFbjogc3RyaW5nO1xuXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IGZhbHNlIH0pXG4gIGRlY2xhcmUgbmFtZUFyOiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IHR5cGU6IERhdGFUeXBlLlRFWFQsIGFsbG93TnVsbDogdHJ1ZSB9KVxuICBkZWNsYXJlIGRlc2NyaXB0aW9uRW4/OiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IHR5cGU6IERhdGFUeXBlLlRFWFQsIGFsbG93TnVsbDogdHJ1ZSB9KVxuICBkZWNsYXJlIGRlc2NyaXB0aW9uQXI/OiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IGFsbG93TnVsbDogdHJ1ZSB9KVxuICBkZWNsYXJlIHNrdT86IHN0cmluZztcblxuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiB0cnVlIH0pXG4gIGRlY2xhcmUgYmFyY29kZT86IHN0cmluZztcblxuICAvLyBEZWZhdWx0IHByaWNlIHVzZWQgd2hlbiBubyBzdG9yZS1zcGVjaWZpYyBwcmljZSBpcyBzZXRcbiAgQENvbHVtbih7IHR5cGU6IERhdGFUeXBlLkRFQ0lNQUwoMTAsIDMpLCBhbGxvd051bGw6IGZhbHNlLCBkZWZhdWx0VmFsdWU6IDAgfSlcbiAgZGVjbGFyZSBkZWZhdWx0UHJpY2U6IG51bWJlcjtcblxuICBARm9yZWlnbktleSgoKSA9PiBCcmFuZClcbiAgQENvbHVtbih7IGFsbG93TnVsbDogdHJ1ZSB9KVxuICBkZWNsYXJlIGJyYW5kSWQ/OiBudW1iZXI7XG5cbiAgQEZvcmVpZ25LZXkoKCkgPT4gQ2F0ZWdvcnkpXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IHRydWUgfSlcbiAgZGVjbGFyZSBjYXRlZ29yeUlkPzogbnVtYmVyO1xuXG4gIEBDb2x1bW4oeyBkZWZhdWx0VmFsdWU6IDAgfSlcbiAgZGVjbGFyZSBzb3J0T3JkZXI6IG51bWJlcjtcblxuICBAQ29sdW1uKHsgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuICBkZWNsYXJlIGlzRmVhdHVyZWQ6IGJvb2xlYW47XG5cbiAgQENvbHVtbih7IGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcbiAgZGVjbGFyZSBoYXNWYXJpYW50czogYm9vbGVhbjtcblxuICBAQ29sdW1uKHtcbiAgICB0eXBlOiBEYXRhVHlwZS5FTlVNKC4uLk9iamVjdC52YWx1ZXMoU3RhdHVzKSksXG4gICAgZGVmYXVsdFZhbHVlOiBTdGF0dXMuQUNUSVZFLFxuICB9KVxuICBkZWNsYXJlIHN0YXR1czogU3RhdHVzO1xuXG4gIC8vIOKUgOKUgOKUgCBBc3NvY2lhdGlvbnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgQEJlbG9uZ3NUbygoKSA9PiBCcmFuZClcbiAgZGVjbGFyZSBicmFuZDogQnJhbmQ7XG5cbiAgQEJlbG9uZ3NUbygoKSA9PiBDYXRlZ29yeSlcbiAgZGVjbGFyZSBjYXRlZ29yeTogQ2F0ZWdvcnk7XG5cbiAgQEhhc01hbnkoKCkgPT4gUHJvZHVjdE1lZGlhKVxuICBkZWNsYXJlIG1lZGlhOiBQcm9kdWN0TWVkaWFbXTtcblxuICBASGFzTWFueSgoKSA9PiBQcm9kdWN0VmFyaWFudClcbiAgZGVjbGFyZSB2YXJpYW50czogUHJvZHVjdFZhcmlhbnRbXTtcblxuICBAQmVsb25nc1RvTWFueSgoKSA9PiBTdG9yZSwgKCkgPT4gUHJvZHVjdFN0b3JlKVxuICBkZWNsYXJlIHN0b3JlczogU3RvcmVbXTtcblxuICBAQmVsb25nc1RvTWFueSgoKSA9PiBUYWcsICgpID0+IFByb2R1Y3RUYWcpXG4gIGRlY2xhcmUgdGFnczogVGFnW107XG59XG4iLCJpbXBvcnQge1xuICBUYWJsZSxcbiAgQ29sdW1uLFxuICBNb2RlbCxcbiAgRm9yZWlnbktleSxcbiAgQmVsb25nc1RvLFxuICBEYXRhVHlwZSxcbn0gZnJvbSAnc2VxdWVsaXplLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgUHVyY2hhc2VPcmRlciB9IGZyb20gJy4vcHVyY2hhc2Utb3JkZXIuZW50aXR5JztcbmltcG9ydCB7IFByb2R1Y3QgfSBmcm9tICcuL3Byb2R1Y3QuZW50aXR5JztcbmltcG9ydCB7IFByb2R1Y3RWYXJpYW50IH0gZnJvbSAnLi9wcm9kdWN0LXZhcmlhbnQuZW50aXR5JztcblxuZXhwb3J0IGVudW0gUHVyY2hhc2VPcmRlckl0ZW1TdGF0dXMge1xuICBQRU5ESU5HID0gJ3BlbmRpbmcnLFxuICBQQVJUSUFMTFlfUkVDRUlWRUQgPSAncGFydGlhbGx5X3JlY2VpdmVkJyxcbiAgRlVMTFlfUkVDRUlWRUQgPSAnZnVsbHlfcmVjZWl2ZWQnLFxuICBDQU5DRUxMRUQgPSAnY2FuY2VsbGVkJyxcbn1cblxuQFRhYmxlXG5leHBvcnQgY2xhc3MgUHVyY2hhc2VPcmRlckl0ZW0gZXh0ZW5kcyBNb2RlbCB7XG4gIEBGb3JlaWduS2V5KCgpID0+IFB1cmNoYXNlT3JkZXIpXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IGZhbHNlIH0pXG4gIGRlY2xhcmUgcHVyY2hhc2VPcmRlcklkOiBudW1iZXI7XG5cbiAgQEZvcmVpZ25LZXkoKCkgPT4gUHJvZHVjdClcbiAgQENvbHVtbih7IGFsbG93TnVsbDogZmFsc2UgfSlcbiAgZGVjbGFyZSBwcm9kdWN0SWQ6IG51bWJlcjtcblxuICBARm9yZWlnbktleSgoKSA9PiBQcm9kdWN0VmFyaWFudClcbiAgQENvbHVtbih7IGFsbG93TnVsbDogdHJ1ZSB9KVxuICBkZWNsYXJlIHByb2R1Y3RWYXJpYW50SWQ/OiBudW1iZXI7XG5cbiAgLy8gSG93IG1hbnkgdW5pdHMgd2VyZSBvcmRlcmVkIGZyb20gdmVuZG9yXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IGZhbHNlIH0pXG4gIGRlY2xhcmUgb3JkZXJlZFF1YW50aXR5OiBudW1iZXI7XG5cbiAgLy8gSG93IG1hbnkgdW5pdHMgaGF2ZSBiZWVuIHJlY2VpdmVkIHNvIGZhciAodXBkYXRlZCBvbiBlYWNoIHJlY2VpcHQpXG4gIEBDb2x1bW4oeyBkZWZhdWx0VmFsdWU6IDAgfSlcbiAgZGVjbGFyZSByZWNlaXZlZFF1YW50aXR5OiBudW1iZXI7XG5cbiAgLy8gSG93IG1hbnkgb2YgdGhlc2UgYXJlIHJlc2VydmVkIGZvciBhIHNwZWNpZmljIGN1c3RvbWVyIG9yZGVyXG4gIEBDb2x1bW4oeyBkZWZhdWx0VmFsdWU6IDAgfSlcbiAgZGVjbGFyZSByZXNlcnZlZFF1YW50aXR5OiBudW1iZXI7XG5cbiAgLy8gVmVuZG9yJ3MgY29zdCBwcmljZSBwZXIgdW5pdCBhdCB0aW1lIG9mIFBPXG4gIEBDb2x1bW4oeyB0eXBlOiBEYXRhVHlwZS5ERUNJTUFMKDEwLCAzKSwgYWxsb3dOdWxsOiBmYWxzZSB9KVxuICBkZWNsYXJlIHVuaXRDb3N0UHJpY2U6IG51bWJlcjtcblxuICBAQ29sdW1uKHsgdHlwZTogRGF0YVR5cGUuREVDSU1BTCgxMCwgMyksIGRlZmF1bHRWYWx1ZTogMCB9KVxuICBkZWNsYXJlIHRvdGFsQ29zdFByaWNlOiBudW1iZXI7XG5cbiAgQENvbHVtbih7XG4gICAgdHlwZTogRGF0YVR5cGUuRU5VTSguLi5PYmplY3QudmFsdWVzKFB1cmNoYXNlT3JkZXJJdGVtU3RhdHVzKSksXG4gICAgZGVmYXVsdFZhbHVlOiBQdXJjaGFzZU9yZGVySXRlbVN0YXR1cy5QRU5ESU5HLFxuICB9KVxuICBkZWNsYXJlIHN0YXR1czogUHVyY2hhc2VPcmRlckl0ZW1TdGF0dXM7XG5cbiAgLy8gUmVmZXJlbmNlIHRvIHRoZSBjdXN0b21lciBvcmRlciB0aGF0IHRyaWdnZXJlZCB0aGlzIFBPIGl0ZW0gKG51bGxhYmxlID0gcHJvYWN0aXZlIHN0b2NrIHJlcGxlbmlzaG1lbnQpXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IHRydWUgfSlcbiAgZGVjbGFyZSB0cmlnZ2VyT3JkZXJJZD86IG51bWJlcjtcblxuICAvLyDilIDilIDilIAgQXNzb2NpYXRpb25zIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIEBCZWxvbmdzVG8oKCkgPT4gUHVyY2hhc2VPcmRlcilcbiAgZGVjbGFyZSBwdXJjaGFzZU9yZGVyOiBQdXJjaGFzZU9yZGVyO1xuXG4gIEBCZWxvbmdzVG8oKCkgPT4gUHJvZHVjdClcbiAgZGVjbGFyZSBwcm9kdWN0OiBQcm9kdWN0O1xuXG4gIEBCZWxvbmdzVG8oKCkgPT4gUHJvZHVjdFZhcmlhbnQpXG4gIGRlY2xhcmUgdmFyaWFudD86IFByb2R1Y3RWYXJpYW50O1xufVxuIiwiaW1wb3J0IHtcbiAgVGFibGUsXG4gIENvbHVtbixcbiAgTW9kZWwsXG4gIEZvcmVpZ25LZXksXG4gIEJlbG9uZ3NUbyxcbiAgSGFzTWFueSxcbiAgRGF0YVR5cGUsXG59IGZyb20gJ3NlcXVlbGl6ZS10eXBlc2NyaXB0JztcbmltcG9ydCB7IFZlbmRvciB9IGZyb20gJy4vdmVuZG9yLmVudGl0eSc7XG5pbXBvcnQgeyBJbnZlbnRvcnkgfSBmcm9tICcuL2ludmVudG9yeS5lbnRpdHknO1xuaW1wb3J0IHsgU3lzVXNlciB9IGZyb20gJy4vc3lzLnVzZXIuZW50aXR5JztcbmltcG9ydCB7IFB1cmNoYXNlT3JkZXJJdGVtIH0gZnJvbSAnLi9wdXJjaGFzZS1vcmRlci1pdGVtLmVudGl0eSc7XG5pbXBvcnQgeyBQdXJjaGFzZU9yZGVyU3RhdHVzIH0gZnJvbSAnLi4vdXRpbHMvZW51bXMvcHVyY2hhc2VPcmRlclN0YXR1cyc7XG5cbkBUYWJsZVxuZXhwb3J0IGNsYXNzIFB1cmNoYXNlT3JkZXIgZXh0ZW5kcyBNb2RlbCB7XG4gIC8vIEF1dG8tZ2VuZXJhdGVkIFBPIG51bWJlciBlLmcuIFBPLTIwMjYtMDAwMDFcbiAgQENvbHVtbih7IGFsbG93TnVsbDogZmFsc2UsIHVuaXF1ZTogdHJ1ZSB9KVxuICBkZWNsYXJlIHBvTnVtYmVyOiBzdHJpbmc7XG5cbiAgQEZvcmVpZ25LZXkoKCkgPT4gVmVuZG9yKVxuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiBmYWxzZSB9KVxuICBkZWNsYXJlIHZlbmRvcklkOiBudW1iZXI7XG5cbiAgLy8gVGFyZ2V0IGludmVudG9yeSB3aGVyZSByZWNlaXZlZCBzdG9jayB3aWxsIGJlIHN0b3JlZFxuICBARm9yZWlnbktleSgoKSA9PiBJbnZlbnRvcnkpXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IGZhbHNlIH0pXG4gIGRlY2xhcmUgaW52ZW50b3J5SWQ6IG51bWJlcjtcblxuICBAQ29sdW1uKHtcbiAgICB0eXBlOiBEYXRhVHlwZS5FTlVNKC4uLk9iamVjdC52YWx1ZXMoUHVyY2hhc2VPcmRlclN0YXR1cykpLFxuICAgIGRlZmF1bHRWYWx1ZTogUHVyY2hhc2VPcmRlclN0YXR1cy5EUkFGVCxcbiAgfSlcbiAgZGVjbGFyZSBzdGF0dXM6IFB1cmNoYXNlT3JkZXJTdGF0dXM7XG5cbiAgQENvbHVtbih7IHR5cGU6IERhdGFUeXBlLkRFQ0lNQUwoMTAsIDMpLCBkZWZhdWx0VmFsdWU6IDAgfSlcbiAgZGVjbGFyZSB0b3RhbEFtb3VudDogbnVtYmVyO1xuXG4gIC8vIEN1cnJlbmN5IG9mIHRoZSBQTyAodmVuZG9yJ3MgY3VycmVuY3kpXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IGZhbHNlLCBkZWZhdWx0VmFsdWU6ICdVU0QnIH0pXG4gIGRlY2xhcmUgY3VycmVuY3k6IHN0cmluZztcblxuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiB0cnVlIH0pXG4gIGRlY2xhcmUgZXhwZWN0ZWREZWxpdmVyeURhdGU/OiBEYXRlO1xuXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IHRydWUgfSlcbiAgZGVjbGFyZSBzZW50QXQ/OiBEYXRlO1xuXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IHRydWUgfSlcbiAgZGVjbGFyZSBjbG9zZWRBdD86IERhdGU7XG5cbiAgQENvbHVtbih7IGFsbG93TnVsbDogdHJ1ZSB9KVxuICBkZWNsYXJlIGNhbmNlbGxlZEF0PzogRGF0ZTtcblxuICBAQ29sdW1uKHsgdHlwZTogRGF0YVR5cGUuVEVYVCwgYWxsb3dOdWxsOiB0cnVlIH0pXG4gIGRlY2xhcmUgY2FuY2VsbGF0aW9uUmVhc29uPzogc3RyaW5nO1xuXG4gIEBDb2x1bW4oeyB0eXBlOiBEYXRhVHlwZS5URVhULCBhbGxvd051bGw6IHRydWUgfSlcbiAgZGVjbGFyZSBub3Rlcz86IHN0cmluZztcblxuICBARm9yZWlnbktleSgoKSA9PiBTeXNVc2VyKVxuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiB0cnVlIH0pXG4gIGRlY2xhcmUgY3JlYXRlZEJ5PzogbnVtYmVyO1xuXG4gIEBGb3JlaWduS2V5KCgpID0+IFN5c1VzZXIpXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IHRydWUgfSlcbiAgZGVjbGFyZSBzZW50Qnk/OiBudW1iZXI7XG5cbiAgLy8g4pSA4pSA4pSAIEFzc29jaWF0aW9ucyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICBAQmVsb25nc1RvKCgpID0+IFZlbmRvcilcbiAgZGVjbGFyZSB2ZW5kb3I6IFZlbmRvcjtcblxuICBAQmVsb25nc1RvKCgpID0+IEludmVudG9yeSlcbiAgZGVjbGFyZSBpbnZlbnRvcnk6IEludmVudG9yeTtcblxuICBAQmVsb25nc1RvKCgpID0+IFN5c1VzZXIsIHsgZm9yZWlnbktleTogJ2NyZWF0ZWRCeScsIGFzOiAnY3JlYXRvcicgfSlcbiAgZGVjbGFyZSBjcmVhdG9yPzogU3lzVXNlcjtcblxuICBAQmVsb25nc1RvKCgpID0+IFN5c1VzZXIsIHsgZm9yZWlnbktleTogJ3NlbnRCeScsIGFzOiAnc2VuZGVyJyB9KVxuICBkZWNsYXJlIHNlbmRlcj86IFN5c1VzZXI7XG5cbiAgQEhhc01hbnkoKCkgPT4gUHVyY2hhc2VPcmRlckl0ZW0pXG4gIGRlY2xhcmUgaXRlbXM6IFB1cmNoYXNlT3JkZXJJdGVtW107XG59XG4iLCJpbXBvcnQge1xuICBUYWJsZSxcbiAgQ29sdW1uLFxuICBNb2RlbCxcbiAgRm9yZWlnbktleSxcbn0gZnJvbSAnc2VxdWVsaXplLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgU3lzUm9sZSB9IGZyb20gJy4vc3lzLnJvbGUuZW50aXR5JztcbmltcG9ydCB7IFBlcm1pc3Npb24gfSBmcm9tICcuL3Blcm1pc3Npb24uZW50aXR5JztcblxuQFRhYmxlXG5leHBvcnQgY2xhc3MgUm9sZVBlcm1pc3Npb24gZXh0ZW5kcyBNb2RlbCB7XG4gIEBGb3JlaWduS2V5KCgpID0+IFN5c1JvbGUpXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IGZhbHNlIH0pXG4gIGRlY2xhcmUgc3lzUm9sZUlkOiBudW1iZXI7XG5cbiAgQEZvcmVpZ25LZXkoKCkgPT4gUGVybWlzc2lvbilcbiAgQENvbHVtbih7IGFsbG93TnVsbDogZmFsc2UgfSlcbiAgZGVjbGFyZSBwZXJtaXNzaW9uSWQ6IG51bWJlcjtcbn1cbiIsImltcG9ydCB7XG4gIFRhYmxlLFxuICBDb2x1bW4sXG4gIE1vZGVsLFxuICBGb3JlaWduS2V5LFxuICBCZWxvbmdzVG8sXG4gIERhdGFUeXBlLFxufSBmcm9tICdzZXF1ZWxpemUtdHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBJbnZlbnRvcnkgfSBmcm9tICcuL2ludmVudG9yeS5lbnRpdHknO1xuaW1wb3J0IHsgUHJvZHVjdCB9IGZyb20gJy4vcHJvZHVjdC5lbnRpdHknO1xuaW1wb3J0IHsgUHJvZHVjdFZhcmlhbnQgfSBmcm9tICcuL3Byb2R1Y3QtdmFyaWFudC5lbnRpdHknO1xuaW1wb3J0IHsgU3lzVXNlciB9IGZyb20gJy4vc3lzLnVzZXIuZW50aXR5JztcbmltcG9ydCB7IFN0b2NrTW92ZW1lbnRUeXBlIH0gZnJvbSAnLi4vdXRpbHMvZW51bXMvc3RvY2tNb3ZlbWVudFR5cGUnO1xuXG5AVGFibGVcbmV4cG9ydCBjbGFzcyBTdG9ja01vdmVtZW50IGV4dGVuZHMgTW9kZWwge1xuICBARm9yZWlnbktleSgoKSA9PiBJbnZlbnRvcnkpXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IGZhbHNlIH0pXG4gIGRlY2xhcmUgaW52ZW50b3J5SWQ6IG51bWJlcjtcblxuICBARm9yZWlnbktleSgoKSA9PiBQcm9kdWN0KVxuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiBmYWxzZSB9KVxuICBkZWNsYXJlIHByb2R1Y3RJZDogbnVtYmVyO1xuXG4gIEBGb3JlaWduS2V5KCgpID0+IFByb2R1Y3RWYXJpYW50KVxuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiB0cnVlIH0pXG4gIGRlY2xhcmUgcHJvZHVjdFZhcmlhbnRJZD86IG51bWJlcjtcblxuICBAQ29sdW1uKHtcbiAgICB0eXBlOiBEYXRhVHlwZS5FTlVNKC4uLk9iamVjdC52YWx1ZXMoU3RvY2tNb3ZlbWVudFR5cGUpKSxcbiAgICBhbGxvd051bGw6IGZhbHNlLFxuICB9KVxuICBkZWNsYXJlIG1vdmVtZW50VHlwZTogU3RvY2tNb3ZlbWVudFR5cGU7XG5cbiAgLy8gUG9zaXRpdmUgPSBzdG9jayBpbiwgTmVnYXRpdmUgPSBzdG9jayBvdXRcbiAgQENvbHVtbih7IGFsbG93TnVsbDogZmFsc2UgfSlcbiAgZGVjbGFyZSBxdWFudGl0eTogbnVtYmVyO1xuXG4gIC8vIFNuYXBzaG90IG9mIHF1YW50aXR5IGJlZm9yZSB0aGlzIG1vdmVtZW50XG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IGZhbHNlIH0pXG4gIGRlY2xhcmUgcXVhbnRpdHlCZWZvcmU6IG51bWJlcjtcblxuICAvLyBTbmFwc2hvdCBvZiBxdWFudGl0eSBhZnRlciB0aGlzIG1vdmVtZW50XG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IGZhbHNlIH0pXG4gIGRlY2xhcmUgcXVhbnRpdHlBZnRlcjogbnVtYmVyO1xuXG4gIC8vIFJlZmVyZW5jZSB0byBzb3VyY2UgZG9jdW1lbnQgKFBPIGlkLCBvcmRlciBpZCwgZXRjLilcbiAgQENvbHVtbih7IGFsbG93TnVsbDogdHJ1ZSB9KVxuICBkZWNsYXJlIHJlZmVyZW5jZVR5cGU/OiBzdHJpbmc7IC8vICdwdXJjaGFzZV9vcmRlcicgfCAnb3JkZXInIHwgJ21hbnVhbCcgfCAndHJhbnNmZXInXG5cbiAgQENvbHVtbih7IGFsbG93TnVsbDogdHJ1ZSB9KVxuICBkZWNsYXJlIHJlZmVyZW5jZUlkPzogbnVtYmVyO1xuXG4gIEBDb2x1bW4oeyB0eXBlOiBEYXRhVHlwZS5URVhULCBhbGxvd051bGw6IHRydWUgfSlcbiAgZGVjbGFyZSBub3Rlcz86IHN0cmluZztcblxuICBARm9yZWlnbktleSgoKSA9PiBTeXNVc2VyKVxuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiB0cnVlIH0pXG4gIGRlY2xhcmUgY3JlYXRlZEJ5PzogbnVtYmVyO1xuXG4gIC8vIOKUgOKUgOKUgCBBc3NvY2lhdGlvbnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgQEJlbG9uZ3NUbygoKSA9PiBJbnZlbnRvcnkpXG4gIGRlY2xhcmUgaW52ZW50b3J5OiBJbnZlbnRvcnk7XG5cbiAgQEJlbG9uZ3NUbygoKSA9PiBQcm9kdWN0KVxuICBkZWNsYXJlIHByb2R1Y3Q6IFByb2R1Y3Q7XG5cbiAgQEJlbG9uZ3NUbygoKSA9PiBQcm9kdWN0VmFyaWFudClcbiAgZGVjbGFyZSB2YXJpYW50PzogUHJvZHVjdFZhcmlhbnQ7XG5cbiAgQEJlbG9uZ3NUbygoKSA9PiBTeXNVc2VyKVxuICBkZWNsYXJlIGNyZWF0ZWRCeVVzZXI/OiBTeXNVc2VyO1xufVxuIiwiaW1wb3J0IHtcbiAgVGFibGUsXG4gIENvbHVtbixcbiAgTW9kZWwsXG4gIEZvcmVpZ25LZXksXG4gIERhdGFUeXBlLFxufSBmcm9tICdzZXF1ZWxpemUtdHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJy4vc3RvcmUuZW50aXR5JztcbmltcG9ydCB7IEludmVudG9yeSB9IGZyb20gJy4vaW52ZW50b3J5LmVudGl0eSc7XG5cbkBUYWJsZVxuZXhwb3J0IGNsYXNzIFN0b3JlSW52ZW50b3J5IGV4dGVuZHMgTW9kZWwge1xuICBARm9yZWlnbktleSgoKSA9PiBTdG9yZSlcbiAgQENvbHVtbih7IGFsbG93TnVsbDogZmFsc2UgfSlcbiAgZGVjbGFyZSBzdG9yZUlkOiBudW1iZXI7XG5cbiAgQEZvcmVpZ25LZXkoKCkgPT4gSW52ZW50b3J5KVxuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiBmYWxzZSB9KVxuICBkZWNsYXJlIGludmVudG9yeUlkOiBudW1iZXI7XG5cbiAgLy8gUHJpb3JpdHkg4oCUIGxvd2VyIG51bWJlciA9IHByZWZlcnJlZCBpbnZlbnRvcnkgZm9yIHRoaXMgc3RvcmVcbiAgQENvbHVtbih7IGRlZmF1bHRWYWx1ZTogMSB9KVxuICBkZWNsYXJlIHByaW9yaXR5OiBudW1iZXI7XG59XG4iLCJpbXBvcnQge1xuICBUYWJsZSxcbiAgQ29sdW1uLFxuICBNb2RlbCxcbiAgRm9yZWlnbktleSxcbiAgQmVsb25nc1RvLFxuICBIYXNNYW55LFxuICBCZWxvbmdzVG9NYW55LFxuICBEYXRhVHlwZSxcbn0gZnJvbSAnc2VxdWVsaXplLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgQ291bnRyeSB9IGZyb20gJy4vY291bnRyeS5lbnRpdHknO1xuaW1wb3J0IHsgUHJvZHVjdFN0b3JlIH0gZnJvbSAnLi9wcm9kdWN0LXN0b3JlLmVudGl0eSc7XG5pbXBvcnQgeyBQcm9kdWN0IH0gZnJvbSAnLi9wcm9kdWN0LmVudGl0eSc7XG5pbXBvcnQgeyBTdG9yZUludmVudG9yeSB9IGZyb20gJy4vc3RvcmUtaW52ZW50b3J5LmVudGl0eSc7XG5pbXBvcnQgeyBJbnZlbnRvcnkgfSBmcm9tICcuL2ludmVudG9yeS5lbnRpdHknO1xuaW1wb3J0IHsgU3RhdHVzIH0gZnJvbSAnLi4vdXRpbHMvZW51bXMvc3RhdHVzJztcblxuQFRhYmxlXG5leHBvcnQgY2xhc3MgU3RvcmUgZXh0ZW5kcyBNb2RlbCB7XG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IGZhbHNlIH0pXG4gIGRlY2xhcmUgbmFtZUVuOiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IGFsbG93TnVsbDogZmFsc2UgfSlcbiAgZGVjbGFyZSBuYW1lQXI6IHN0cmluZztcblxuICBAQ29sdW1uKHsgdHlwZTogRGF0YVR5cGUuVEVYVCwgYWxsb3dOdWxsOiB0cnVlIH0pXG4gIGRlY2xhcmUgZGVzY3JpcHRpb25Fbj86IHN0cmluZztcblxuICBAQ29sdW1uKHsgdHlwZTogRGF0YVR5cGUuVEVYVCwgYWxsb3dOdWxsOiB0cnVlIH0pXG4gIGRlY2xhcmUgZGVzY3JpcHRpb25Bcj86IHN0cmluZztcblxuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiB0cnVlIH0pXG4gIGRlY2xhcmUgbG9nbz86IHN0cmluZztcblxuICAvLyBJU08gY3VycmVuY3kgY29kZSBlLmcuIEtXRCwgU0FSLCBRQVIsIFVTRFxuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiBmYWxzZSwgZGVmYXVsdFZhbHVlOiAnVVNEJyB9KVxuICBkZWNsYXJlIGN1cnJlbmN5OiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IGFsbG93TnVsbDogdHJ1ZSB9KVxuICBkZWNsYXJlIGN1cnJlbmN5U3ltYm9sRW4/OiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IGFsbG93TnVsbDogdHJ1ZSB9KVxuICBkZWNsYXJlIGN1cnJlbmN5U3ltYm9sQXI/OiBzdHJpbmc7XG5cbiAgQEZvcmVpZ25LZXkoKCkgPT4gQ291bnRyeSlcbiAgQENvbHVtbih7IGFsbG93TnVsbDogdHJ1ZSB9KVxuICBkZWNsYXJlIGNvdW50cnlJZD86IG51bWJlcjtcblxuICBAQ29sdW1uKHsgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuICBkZWNsYXJlIGlzR2xvYmFsOiBib29sZWFuO1xuXG4gIEBDb2x1bW4oe1xuICAgIHR5cGU6IERhdGFUeXBlLkVOVU0oLi4uT2JqZWN0LnZhbHVlcyhTdGF0dXMpKSxcbiAgICBkZWZhdWx0VmFsdWU6IFN0YXR1cy5BQ1RJVkUsXG4gIH0pXG4gIGRlY2xhcmUgc3RhdHVzOiBTdGF0dXM7XG5cbiAgLy8g4pSA4pSA4pSAIEFzc29jaWF0aW9ucyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICBAQmVsb25nc1RvKCgpID0+IENvdW50cnkpXG4gIGRlY2xhcmUgY291bnRyeTogQ291bnRyeTtcblxuICBAQmVsb25nc1RvTWFueSgoKSA9PiBQcm9kdWN0LCAoKSA9PiBQcm9kdWN0U3RvcmUpXG4gIGRlY2xhcmUgcHJvZHVjdHM6IFByb2R1Y3RbXTtcblxuICBAQmVsb25nc1RvTWFueSgoKSA9PiBJbnZlbnRvcnksICgpID0+IFN0b3JlSW52ZW50b3J5KVxuICBkZWNsYXJlIGludmVudG9yaWVzOiBJbnZlbnRvcnlbXTtcbn1cbiIsImltcG9ydCB7XG4gIFRhYmxlLFxuICBDb2x1bW4sXG4gIE1vZGVsLFxuICBCZWxvbmdzVG9NYW55LFxuICBIYXNNYW55LFxufSBmcm9tICdzZXF1ZWxpemUtdHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uIH0gZnJvbSAnLi9wZXJtaXNzaW9uLmVudGl0eSc7XG5pbXBvcnQgeyBSb2xlUGVybWlzc2lvbiB9IGZyb20gJy4vcm9sZS1wZXJtaXNzaW9uLmVudGl0eSc7XG5cbkBUYWJsZVxuZXhwb3J0IGNsYXNzIFN5c1JvbGUgZXh0ZW5kcyBNb2RlbCB7XG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IGZhbHNlLCB1bmlxdWU6IHRydWUgfSlcbiAgZGVjbGFyZSBuYW1lOiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IGFsbG93TnVsbDogdHJ1ZSB9KVxuICBkZWNsYXJlIGRpc3BsYXlOYW1lPzogc3RyaW5nO1xuXG4gIEBCZWxvbmdzVG9NYW55KCgpID0+IFBlcm1pc3Npb24sICgpID0+IFJvbGVQZXJtaXNzaW9uKVxuICBkZWNsYXJlIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9uW107XG59XG4iLCJpbXBvcnQge1xuICBUYWJsZSxcbiAgQ29sdW1uLFxuICBNb2RlbCxcbiAgRm9yZWlnbktleSxcbiAgQmVsb25nc1RvLFxuICBEYXRhVHlwZSxcbn0gZnJvbSAnc2VxdWVsaXplLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgU3lzUm9sZSB9IGZyb20gJy4vc3lzLnJvbGUuZW50aXR5JztcbmltcG9ydCB7IFN0YXR1cyB9IGZyb20gJy4uL3V0aWxzL2VudW1zL3N0YXR1cyc7XG5cbkBUYWJsZVxuZXhwb3J0IGNsYXNzIFN5c1VzZXIgZXh0ZW5kcyBNb2RlbCB7XG4gIEBDb2x1bW5cbiAgZGVjbGFyZSBuYW1lOiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IGFsbG93TnVsbDogZmFsc2UgfSlcbiAgZGVjbGFyZSB1c2VybmFtZTogc3RyaW5nO1xuXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IGZhbHNlLCB1bmlxdWU6IHRydWUgfSlcbiAgZGVjbGFyZSBlbWFpbDogc3RyaW5nO1xuXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IGZhbHNlIH0pXG4gIGRlY2xhcmUgcGhvbmVFeHQ6IHN0cmluZztcblxuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiBmYWxzZSB9KVxuICBkZWNsYXJlIHBob25lOiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IGFsbG93TnVsbDogZmFsc2UgfSlcbiAgZGVjbGFyZSBwYXNzd29yZDogc3RyaW5nO1xuXG4gIEBDb2x1bW5cbiAgZGVjbGFyZSBwcm9maWxlUGljdHVyZT86IHN0cmluZztcblxuICBARm9yZWlnbktleSgoKSA9PiBTeXNSb2xlKVxuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiB0cnVlIH0pXG4gIGRlY2xhcmUgcm9sZUlkPzogbnVtYmVyO1xuXG4gIEBDb2x1bW4oe1xuICAgIHR5cGU6IERhdGFUeXBlLkVOVU0oLi4uT2JqZWN0LnZhbHVlcyhTdGF0dXMpKSxcbiAgICBkZWZhdWx0VmFsdWU6IFN0YXR1cy5BQ1RJVkUsXG4gIH0pXG4gIGRlY2xhcmUgc3RhdHVzOiBTdGF0dXM7XG5cbiAgQENvbHVtbih7IGFsbG93TnVsbDogdHJ1ZSB9KVxuICBkZWNsYXJlIGxhc3RMb2dpbj86IERhdGU7XG5cbiAgQEJlbG9uZ3NUbygoKSA9PiBTeXNSb2xlKVxuICBkZWNsYXJlIHJvbGU/OiBTeXNSb2xlO1xufVxuIiwiaW1wb3J0IHtcbiAgVGFibGUsXG4gIENvbHVtbixcbiAgTW9kZWwsXG4gIEJlbG9uZ3NUb01hbnksXG4gIERhdGFUeXBlLFxufSBmcm9tICdzZXF1ZWxpemUtdHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBQcm9kdWN0IH0gZnJvbSAnLi9wcm9kdWN0LmVudGl0eSc7XG5pbXBvcnQgeyBQcm9kdWN0VGFnIH0gZnJvbSAnLi9wcm9kdWN0LXRhZy5lbnRpdHknO1xuaW1wb3J0IHsgU3RhdHVzIH0gZnJvbSAnLi4vdXRpbHMvZW51bXMvc3RhdHVzJztcblxuQFRhYmxlXG5leHBvcnQgY2xhc3MgVGFnIGV4dGVuZHMgTW9kZWwge1xuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiBmYWxzZSwgdW5pcXVlOiB0cnVlIH0pXG4gIGRlY2xhcmUgc2x1Zzogc3RyaW5nOyAvLyBlLmcuICdiZXN0X3NlbGxlcicsICduZXdfYXJyaXZhbCcsICdkaXNjb3VudCdcblxuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiBmYWxzZSB9KVxuICBkZWNsYXJlIG5hbWVFbjogc3RyaW5nO1xuXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IGZhbHNlIH0pXG4gIGRlY2xhcmUgbmFtZUFyOiBzdHJpbmc7XG5cbiAgLy8gT3B0aW9uYWwgY29sb3IgZm9yIFVJIGJhZGdlIGRpc3BsYXkgZS5nLiAnI0ZGMDAwMCdcbiAgQENvbHVtbih7IGFsbG93TnVsbDogdHJ1ZSB9KVxuICBkZWNsYXJlIGNvbG9yPzogc3RyaW5nO1xuXG4gIEBDb2x1bW4oeyBkZWZhdWx0VmFsdWU6IDAgfSlcbiAgZGVjbGFyZSBzb3J0T3JkZXI6IG51bWJlcjtcblxuICBAQ29sdW1uKHtcbiAgICB0eXBlOiBEYXRhVHlwZS5FTlVNKC4uLk9iamVjdC52YWx1ZXMoU3RhdHVzKSksXG4gICAgZGVmYXVsdFZhbHVlOiBTdGF0dXMuQUNUSVZFLFxuICB9KVxuICBkZWNsYXJlIHN0YXR1czogU3RhdHVzO1xuXG4gIEBCZWxvbmdzVG9NYW55KCgpID0+IFByb2R1Y3QsICgpID0+IFByb2R1Y3RUYWcpXG4gIGRlY2xhcmUgcHJvZHVjdHM6IFByb2R1Y3RbXTtcbn1cbiIsImltcG9ydCB7XG4gIE1vZGVsLFxuICBUYWJsZSxcbiAgQ29sdW1uLFxuICBGb3JlaWduS2V5LFxuICBCZWxvbmdzVG8sXG4gIERhdGFUeXBlLFxufSBmcm9tICdzZXF1ZWxpemUtdHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBTdGF0dXMgfSBmcm9tICcuLi91dGlscy9lbnVtcy9zdGF0dXMnO1xuaW1wb3J0IHsgTGFuZ3VhZ2UgfSBmcm9tICcuLi91dGlscy9lbnVtcy9sYW5ndWFnZSc7XG5pbXBvcnQgeyBDb3VudHJ5IH0gZnJvbSAnLi9jb3VudHJ5LmVudGl0eSc7XG5pbXBvcnQgeyBHZW5kZXIgfSBmcm9tICcuLi91dGlscy9lbnVtcy9nZW5kZXInO1xuXG5AVGFibGVcbmV4cG9ydCBjbGFzcyBVc2VyIGV4dGVuZHMgTW9kZWwge1xuICBAQ29sdW1uXG4gIGRlY2xhcmUgZmlyc3ROYW1lPzogc3RyaW5nO1xuXG4gIEBDb2x1bW5cbiAgZGVjbGFyZSBsYXN0TmFtZT86IHN0cmluZztcblxuICBAQ29sdW1uXG4gIGRlY2xhcmUgcGFzc3dvcmQ6IHN0cmluZztcblxuICBAQ29sdW1uKHtcbiAgICB0eXBlOiBEYXRhVHlwZS5FTlVNKC4uLk9iamVjdC52YWx1ZXMoU3RhdHVzKSksXG4gICAgZGVmYXVsdFZhbHVlOiBTdGF0dXMuQUNUSVZFLFxuICB9KVxuICBkZWNsYXJlIHN0YXR1czogU3RhdHVzO1xuXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IGZhbHNlLCB2YWxpZGF0ZTogeyBpc0VtYWlsOiB7IG1zZzogJ0ludmFsaWQgRW1haWwnIH0gfSB9KVxuICBkZWNsYXJlIGVtYWlsOiBzdHJpbmc7XG5cbiAgQENvbHVtblxuICBkZWNsYXJlIHBob25lPzogc3RyaW5nO1xuXG4gIEBDb2x1bW5cbiAgZGVjbGFyZSBwaG9uZUV4dD86IHN0cmluZztcblxuICBAQ29sdW1uXG4gIGRlY2xhcmUgYmlydGhkYXk/OiBEYXRlO1xuXG4gIEBDb2x1bW5cbiAgZGVjbGFyZSBmYWNlYm9va0lkPzogc3RyaW5nO1xuXG4gIEBDb2x1bW5cbiAgZGVjbGFyZSBnb29nbGVJZD86IHN0cmluZztcblxuICBAQ29sdW1uXG4gIGRlY2xhcmUgYXBwbGVJZD86IHN0cmluZztcblxuICBAQ29sdW1uKHtcbiAgICB0eXBlOiBEYXRhVHlwZS5FTlVNKC4uLk9iamVjdC52YWx1ZXMoTGFuZ3VhZ2UpKSxcbiAgICBkZWZhdWx0VmFsdWU6IExhbmd1YWdlLkVOR0xJU0gsXG4gIH0pXG4gIGRlY2xhcmUgcHJlZmVycmVkTGFuZ3VhZ2U6IExhbmd1YWdlO1xuXG4gIEBGb3JlaWduS2V5KCgpID0+IENvdW50cnkpXG4gIEBDb2x1bW5cbiAgZGVjbGFyZSBwcmVmZXJyZWRDb3VudHJ5SWQ/OiBudW1iZXI7XG5cbiAgQENvbHVtblxuICBkZWNsYXJlIHByb2ZpbGVQaWM/OiBzdHJpbmc7XG5cbiAgQENvbHVtblxuICBkZWNsYXJlIGxhc3RMb2dpbjogRGF0ZTtcblxuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiBmYWxzZSwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuICBkZWNsYXJlIGlzQmxvY2tlZDogYm9vbGVhbjtcblxuICBAQ29sdW1uKHsgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuICBkZWNsYXJlIGlzVmVyaWZpZWQ6IGJvb2xlYW47XG5cbiAgQENvbHVtblxuICBkZWNsYXJlIHJlZkNvZGU6IHN0cmluZztcblxuICBAQ29sdW1uKHtcbiAgICB0eXBlOiBEYXRhVHlwZS5FTlVNKC4uLk9iamVjdC52YWx1ZXMoR2VuZGVyKSksXG4gICAgZGVmYXVsdFZhbHVlOiBHZW5kZXIuUFJFRkVSX05PVF9UT19TQVksXG4gIH0pXG4gIGRlY2xhcmUgZ2VuZGVyOiBHZW5kZXI7XG5cbiAgQEJlbG9uZ3NUbygoKSA9PiBDb3VudHJ5KVxuICBkZWNsYXJlIGNvdW50cnk6IENvdW50cnk7XG59XG4iLCJpbXBvcnQge1xuICBNb2RlbCxcbiAgVGFibGUsXG4gIENvbHVtbixcbiAgUHJpbWFyeUtleSxcbiAgQXV0b0luY3JlbWVudCxcbiAgQ3JlYXRlZEF0LFxuICBVcGRhdGVkQXQsXG4gIERlbGV0ZWRBdCxcbiAgRm9yZWlnbktleSxcbiAgQmVsb25nc1RvLFxuICBCZWxvbmdzVG9NYW55LFxuICBEYXRhVHlwZSxcbn0gZnJvbSAnc2VxdWVsaXplLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4vdXNlci5lbnRpdHknO1xuaW1wb3J0IHsgU3RhdHVzIH0gZnJvbSAnLi4vdXRpbHMvZW51bXMvc3RhdHVzJztcbmltcG9ydCB7IE9zTmFtZSB9IGZyb20gJy4uL3V0aWxzL2VudW1zL29zTmFtZSc7XG5cbkBUYWJsZVxuZXhwb3J0IGNsYXNzIFVzZXJEZXZpY2UgZXh0ZW5kcyBNb2RlbCB7XG4gIEBGb3JlaWduS2V5KCgpID0+IFVzZXIpXG4gIEBDb2x1bW5cbiAgZGVjbGFyZSB1c2VySWQ6IG51bWJlcjtcbiAgQENvbHVtblxuICBkZWNsYXJlIGRldmljZUlkPzogc3RyaW5nO1xuICBAQ29sdW1uXG4gIGRlY2xhcmUgZmNtVG9rZW4/OiBzdHJpbmc7XG4gIEBDb2x1bW4oe1xuICAgIHR5cGU6IERhdGFUeXBlLkVOVU0oLi4uT2JqZWN0LnZhbHVlcyhTdGF0dXMpKSxcbiAgICBkZWZhdWx0VmFsdWU6IFN0YXR1cy5BQ1RJVkUsXG4gIH0pXG4gIGRlY2xhcmUgc3RhdHVzOiBTdGF0dXM7XG5cbiAgQENvbHVtbih7XG4gICAgdHlwZTogRGF0YVR5cGUuRU5VTSguLi5PYmplY3QudmFsdWVzKE9zTmFtZSkpLFxuICAgIGFsbG93TnVsbDogdHJ1ZSxcbiAgfSlcbiAgZGVjbGFyZSBvc1N5c3RlbTogc3RyaW5nO1xuICBAQmVsb25nc1RvKCgpID0+IFVzZXIpXG4gIGRlY2xhcmUgdXNlcjogVXNlcjtcbn1cbiIsImltcG9ydCB7XG4gIFRhYmxlLFxuICBDb2x1bW4sXG4gIE1vZGVsLFxuICBGb3JlaWduS2V5LFxuICBCZWxvbmdzVG8sXG4gIERhdGFUeXBlLFxufSBmcm9tICdzZXF1ZWxpemUtdHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBWYXJpYW50VHlwZSB9IGZyb20gJy4vdmFyaWFudC10eXBlLmVudGl0eSc7XG5pbXBvcnQgeyBTdGF0dXMgfSBmcm9tICcuLi91dGlscy9lbnVtcy9zdGF0dXMnO1xuXG5AVGFibGVcbmV4cG9ydCBjbGFzcyBWYXJpYW50T3B0aW9uIGV4dGVuZHMgTW9kZWwge1xuICBARm9yZWlnbktleSgoKSA9PiBWYXJpYW50VHlwZSlcbiAgQENvbHVtbih7IGFsbG93TnVsbDogZmFsc2UgfSlcbiAgZGVjbGFyZSB2YXJpYW50VHlwZUlkOiBudW1iZXI7XG5cbiAgQENvbHVtbih7IGFsbG93TnVsbDogZmFsc2UgfSlcbiAgZGVjbGFyZSBuYW1lRW46IHN0cmluZztcblxuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiBmYWxzZSB9KVxuICBkZWNsYXJlIG5hbWVBcjogc3RyaW5nO1xuXG4gIEBDb2x1bW4oeyBkZWZhdWx0VmFsdWU6IDAgfSlcbiAgZGVjbGFyZSBzb3J0T3JkZXI6IG51bWJlcjtcblxuICBAQ29sdW1uKHtcbiAgICB0eXBlOiBEYXRhVHlwZS5FTlVNKC4uLk9iamVjdC52YWx1ZXMoU3RhdHVzKSksXG4gICAgZGVmYXVsdFZhbHVlOiBTdGF0dXMuQUNUSVZFLFxuICB9KVxuICBkZWNsYXJlIHN0YXR1czogU3RhdHVzO1xuXG4gIEBCZWxvbmdzVG8oKCkgPT4gVmFyaWFudFR5cGUpXG4gIGRlY2xhcmUgdmFyaWFudFR5cGU6IFZhcmlhbnRUeXBlO1xufVxuIiwiaW1wb3J0IHsgVGFibGUsIENvbHVtbiwgTW9kZWwsIEhhc01hbnkgfSBmcm9tICdzZXF1ZWxpemUtdHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBTdGF0dXMgfSBmcm9tICcuLi91dGlscy9lbnVtcy9zdGF0dXMnO1xuaW1wb3J0IHsgRGF0YVR5cGUgfSBmcm9tICdzZXF1ZWxpemUtdHlwZXNjcmlwdCc7XG5cbkBUYWJsZVxuZXhwb3J0IGNsYXNzIFZhcmlhbnRUeXBlIGV4dGVuZHMgTW9kZWwge1xuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiBmYWxzZSB9KVxuICBkZWNsYXJlIG5hbWVFbjogc3RyaW5nO1xuXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IGZhbHNlIH0pXG4gIGRlY2xhcmUgbmFtZUFyOiBzdHJpbmc7XG5cbiAgQENvbHVtbih7XG4gICAgdHlwZTogRGF0YVR5cGUuRU5VTSguLi5PYmplY3QudmFsdWVzKFN0YXR1cykpLFxuICAgIGRlZmF1bHRWYWx1ZTogU3RhdHVzLkFDVElWRSxcbiAgfSlcbiAgZGVjbGFyZSBzdGF0dXM6IFN0YXR1cztcbn1cbiIsImltcG9ydCB7XG4gIFRhYmxlLFxuICBDb2x1bW4sXG4gIE1vZGVsLFxuICBGb3JlaWduS2V5LFxuICBCZWxvbmdzVG8sXG4gIERhdGFUeXBlLFxufSBmcm9tICdzZXF1ZWxpemUtdHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBWZW5kb3IgfSBmcm9tICcuL3ZlbmRvci5lbnRpdHknO1xuaW1wb3J0IHsgUHJvZHVjdCB9IGZyb20gJy4vcHJvZHVjdC5lbnRpdHknO1xuaW1wb3J0IHsgUHJvZHVjdFZhcmlhbnQgfSBmcm9tICcuL3Byb2R1Y3QtdmFyaWFudC5lbnRpdHknO1xuaW1wb3J0IHsgU3RhdHVzIH0gZnJvbSAnLi4vdXRpbHMvZW51bXMvc3RhdHVzJztcblxuQFRhYmxlXG5leHBvcnQgY2xhc3MgVmVuZG9yUHJvZHVjdCBleHRlbmRzIE1vZGVsIHtcbiAgQEZvcmVpZ25LZXkoKCkgPT4gVmVuZG9yKVxuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiBmYWxzZSB9KVxuICBkZWNsYXJlIHZlbmRvcklkOiBudW1iZXI7XG5cbiAgQEZvcmVpZ25LZXkoKCkgPT4gUHJvZHVjdClcbiAgQENvbHVtbih7IGFsbG93TnVsbDogZmFsc2UgfSlcbiAgZGVjbGFyZSBwcm9kdWN0SWQ6IG51bWJlcjtcblxuICAvLyBudWxsID0gYXBwbGllcyB0byBwcm9kdWN0IHdpdGggbm8gdmFyaWFudHNcbiAgQEZvcmVpZ25LZXkoKCkgPT4gUHJvZHVjdFZhcmlhbnQpXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IHRydWUgfSlcbiAgZGVjbGFyZSBwcm9kdWN0VmFyaWFudElkPzogbnVtYmVyO1xuXG4gIC8vIFZlbmRvcidzIGNvc3QgcHJpY2UgdG8gdXNcbiAgQENvbHVtbih7IHR5cGU6IERhdGFUeXBlLkRFQ0lNQUwoMTAsIDMpLCBhbGxvd051bGw6IGZhbHNlIH0pXG4gIGRlY2xhcmUgY29zdFByaWNlOiBudW1iZXI7XG5cbiAgLy8gVmVuZG9yJ3MgU0tVL3JlZmVyZW5jZSBjb2RlIGZvciB0aGlzIHByb2R1Y3RcbiAgQENvbHVtbih7IGFsbG93TnVsbDogdHJ1ZSB9KVxuICBkZWNsYXJlIHZlbmRvclNrdT86IHN0cmluZztcblxuICAvLyBUeXBpY2FsIGxlYWQgdGltZSBpbiBkYXlzIGZyb20gdGhpcyB2ZW5kb3JcbiAgQENvbHVtbih7IGFsbG93TnVsbDogdHJ1ZSB9KVxuICBkZWNsYXJlIGxlYWRUaW1lRGF5cz86IG51bWJlcjtcblxuICAvLyBNaW5pbXVtIG9yZGVyIHF1YW50aXR5XG4gIEBDb2x1bW4oeyBkZWZhdWx0VmFsdWU6IDEgfSlcbiAgZGVjbGFyZSBtb3E6IG51bWJlcjtcblxuICAvLyBJcyB0aGlzIHRoZSBwcmVmZXJyZWQvZGVmYXVsdCB2ZW5kb3IgZm9yIHRoaXMgcHJvZHVjdD9cbiAgQENvbHVtbih7IGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcbiAgZGVjbGFyZSBpc1ByZWZlcnJlZDogYm9vbGVhbjtcblxuICBAQ29sdW1uKHtcbiAgICB0eXBlOiBEYXRhVHlwZS5FTlVNKC4uLk9iamVjdC52YWx1ZXMoU3RhdHVzKSksXG4gICAgZGVmYXVsdFZhbHVlOiBTdGF0dXMuQUNUSVZFLFxuICB9KVxuICBkZWNsYXJlIHN0YXR1czogU3RhdHVzO1xuXG4gIC8vIOKUgOKUgOKUgCBBc3NvY2lhdGlvbnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgQEJlbG9uZ3NUbygoKSA9PiBWZW5kb3IpXG4gIGRlY2xhcmUgdmVuZG9yOiBWZW5kb3I7XG5cbiAgQEJlbG9uZ3NUbygoKSA9PiBQcm9kdWN0KVxuICBkZWNsYXJlIHByb2R1Y3Q6IFByb2R1Y3Q7XG5cbiAgQEJlbG9uZ3NUbygoKSA9PiBQcm9kdWN0VmFyaWFudClcbiAgZGVjbGFyZSB2YXJpYW50PzogUHJvZHVjdFZhcmlhbnQ7XG59XG4iLCJpbXBvcnQge1xuICBUYWJsZSxcbiAgQ29sdW1uLFxuICBNb2RlbCxcbiAgRm9yZWlnbktleSxcbiAgQmVsb25nc1RvLFxuICBIYXNNYW55LFxuICBEYXRhVHlwZSxcbn0gZnJvbSAnc2VxdWVsaXplLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgQ291bnRyeSB9IGZyb20gJy4vY291bnRyeS5lbnRpdHknO1xuaW1wb3J0IHsgU3RhdHVzIH0gZnJvbSAnLi4vdXRpbHMvZW51bXMvc3RhdHVzJztcblxuQFRhYmxlXG5leHBvcnQgY2xhc3MgVmVuZG9yIGV4dGVuZHMgTW9kZWwge1xuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiBmYWxzZSB9KVxuICBkZWNsYXJlIG5hbWVFbjogc3RyaW5nO1xuXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IGZhbHNlIH0pXG4gIGRlY2xhcmUgbmFtZUFyOiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IGFsbG93TnVsbDogdHJ1ZSB9KVxuICBkZWNsYXJlIGNvbnRhY3RQZXJzb24/OiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IGFsbG93TnVsbDogdHJ1ZSB9KVxuICBkZWNsYXJlIGVtYWlsPzogc3RyaW5nO1xuXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IHRydWUgfSlcbiAgZGVjbGFyZSBwaG9uZT86IHN0cmluZztcblxuICBAQ29sdW1uKHsgdHlwZTogRGF0YVR5cGUuVEVYVCwgYWxsb3dOdWxsOiB0cnVlIH0pXG4gIGRlY2xhcmUgYWRkcmVzc0VuPzogc3RyaW5nO1xuXG4gIEBDb2x1bW4oeyB0eXBlOiBEYXRhVHlwZS5URVhULCBhbGxvd051bGw6IHRydWUgfSlcbiAgZGVjbGFyZSBhZGRyZXNzQXI/OiBzdHJpbmc7XG5cbiAgQEZvcmVpZ25LZXkoKCkgPT4gQ291bnRyeSlcbiAgQENvbHVtbih7IGFsbG93TnVsbDogdHJ1ZSB9KVxuICBkZWNsYXJlIGNvdW50cnlJZD86IG51bWJlcjtcblxuICBAQ29sdW1uKHsgYWxsb3dOdWxsOiB0cnVlIH0pXG4gIGRlY2xhcmUgdGF4TnVtYmVyPzogc3RyaW5nO1xuXG4gIEBDb2x1bW4oeyBhbGxvd051bGw6IHRydWUgfSlcbiAgZGVjbGFyZSBjb21tZXJjaWFsUmVnTnVtYmVyPzogc3RyaW5nO1xuXG4gIC8vIERlZmF1bHQgcGF5bWVudCB0ZXJtcyBpbiBkYXlzIChlLmcuIDMwID0gTkVUMzApXG4gIEBDb2x1bW4oeyBkZWZhdWx0VmFsdWU6IDAgfSlcbiAgZGVjbGFyZSBwYXltZW50VGVybXNEYXlzOiBudW1iZXI7XG5cbiAgQENvbHVtbih7IGFsbG93TnVsbDogdHJ1ZSB9KVxuICBkZWNsYXJlIG5vdGVzPzogc3RyaW5nO1xuXG4gIEBDb2x1bW4oe1xuICAgIHR5cGU6IERhdGFUeXBlLkVOVU0oLi4uT2JqZWN0LnZhbHVlcyhTdGF0dXMpKSxcbiAgICBkZWZhdWx0VmFsdWU6IFN0YXR1cy5BQ1RJVkUsXG4gIH0pXG4gIGRlY2xhcmUgc3RhdHVzOiBTdGF0dXM7XG5cbiAgLy8g4pSA4pSA4pSAIEFzc29jaWF0aW9ucyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICBAQmVsb25nc1RvKCgpID0+IENvdW50cnkpXG4gIGRlY2xhcmUgY291bnRyeTogQ291bnRyeTtcbn1cbiIsImltcG9ydCB7IE1vZGVsQ3RvciB9IGZyb20gJ3NlcXVlbGl6ZS10eXBlc2NyaXB0JztcblxuLy8g4pSA4pSA4pSAIEV4aXN0aW5nIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuaW1wb3J0IHsgQ291bnRyeSB9IGZyb20gJy4vZW50aXRpZXMvY291bnRyeS5lbnRpdHknO1xuaW1wb3J0IHsgQXJlYSB9IGZyb20gJy4vZW50aXRpZXMvYXJlYS5lbnRpdHknO1xuaW1wb3J0IHsgU3lzUm9sZSB9IGZyb20gJy4vZW50aXRpZXMvc3lzLnJvbGUuZW50aXR5JztcbmltcG9ydCB7IFN5c1VzZXIgfSBmcm9tICcuL2VudGl0aWVzL3N5cy51c2VyLmVudGl0eSc7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi9lbnRpdGllcy91c2VyLmVudGl0eSc7XG5pbXBvcnQgeyBVc2VyRGV2aWNlIH0gZnJvbSAnLi9lbnRpdGllcy91c2VyRGV2aWNlLmVudGl0eSc7XG5pbXBvcnQgeyBBcGlLZXkgfSBmcm9tICcuL2VudGl0aWVzL2FwaWtleS5lbnRpdHknO1xuXG4vLyDilIDilIDilIAgQ2F0YWxvZ3VlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuaW1wb3J0IHsgQ2F0ZWdvcnkgfSBmcm9tICcuL2VudGl0aWVzL2NhdGVnb3J5LmVudGl0eSc7XG5pbXBvcnQgeyBCcmFuZCB9IGZyb20gJy4vZW50aXRpZXMvYnJhbmQuZW50aXR5JztcbmltcG9ydCB7IFZhcmlhbnRUeXBlIH0gZnJvbSAnLi9lbnRpdGllcy92YXJpYW50LXR5cGUuZW50aXR5JztcbmltcG9ydCB7IFZhcmlhbnRPcHRpb24gfSBmcm9tICcuL2VudGl0aWVzL3ZhcmlhbnQtb3B0aW9uLmVudGl0eSc7XG5pbXBvcnQgeyBQcm9kdWN0IH0gZnJvbSAnLi9lbnRpdGllcy9wcm9kdWN0LmVudGl0eSc7XG5pbXBvcnQgeyBQcm9kdWN0TWVkaWEgfSBmcm9tICcuL2VudGl0aWVzL3Byb2R1Y3QtbWVkaWEuZW50aXR5JztcbmltcG9ydCB7IFByb2R1Y3RWYXJpYW50IH0gZnJvbSAnLi9lbnRpdGllcy9wcm9kdWN0LXZhcmlhbnQuZW50aXR5JztcbmltcG9ydCB7IFByb2R1Y3RWYXJpYW50T3B0aW9uIH0gZnJvbSAnLi9lbnRpdGllcy9wcm9kdWN0LXZhcmlhbnQtb3B0aW9uLmVudGl0eSc7XG5pbXBvcnQgeyBUYWcgfSBmcm9tICcuL2VudGl0aWVzL3RhZy5lbnRpdHknO1xuaW1wb3J0IHsgUHJvZHVjdFRhZyB9IGZyb20gJy4vZW50aXRpZXMvcHJvZHVjdC10YWcuZW50aXR5JztcblxuLy8g4pSA4pSA4pSAIFN0b3JlcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnLi9lbnRpdGllcy9zdG9yZS5lbnRpdHknO1xuaW1wb3J0IHsgUHJvZHVjdFN0b3JlIH0gZnJvbSAnLi9lbnRpdGllcy9wcm9kdWN0LXN0b3JlLmVudGl0eSc7XG5cbi8vIOKUgOKUgOKUgCBJbnZlbnRvcnkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5pbXBvcnQgeyBJbnZlbnRvcnkgfSBmcm9tICcuL2VudGl0aWVzL2ludmVudG9yeS5lbnRpdHknO1xuaW1wb3J0IHsgU3RvcmVJbnZlbnRvcnkgfSBmcm9tICcuL2VudGl0aWVzL3N0b3JlLWludmVudG9yeS5lbnRpdHknO1xuaW1wb3J0IHsgSW52ZW50b3J5U3RvY2sgfSBmcm9tICcuL2VudGl0aWVzL2ludmVudG9yeS1zdG9jay5lbnRpdHknO1xuaW1wb3J0IHsgU3RvY2tNb3ZlbWVudCB9IGZyb20gJy4vZW50aXRpZXMvc3RvY2stbW92ZW1lbnQuZW50aXR5JztcblxuLy8g4pSA4pSA4pSAIFB1cmNoYXNpbmcg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5pbXBvcnQgeyBWZW5kb3IgfSBmcm9tICcuL2VudGl0aWVzL3ZlbmRvci5lbnRpdHknO1xuaW1wb3J0IHsgVmVuZG9yUHJvZHVjdCB9IGZyb20gJy4vZW50aXRpZXMvdmVuZG9yLXByb2R1Y3QuZW50aXR5JztcbmltcG9ydCB7IFB1cmNoYXNlT3JkZXIgfSBmcm9tICcuL2VudGl0aWVzL3B1cmNoYXNlLW9yZGVyLmVudGl0eSc7XG5pbXBvcnQgeyBQdXJjaGFzZU9yZGVySXRlbSB9IGZyb20gJy4vZW50aXRpZXMvcHVyY2hhc2Utb3JkZXItaXRlbS5lbnRpdHknO1xuXG4vLyDilIDilIDilIAgUGVybWlzc2lvbnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5pbXBvcnQgeyBQZXJtaXNzaW9uIH0gZnJvbSAnLi9lbnRpdGllcy9wZXJtaXNzaW9uLmVudGl0eSc7XG5pbXBvcnQgeyBSb2xlUGVybWlzc2lvbiB9IGZyb20gJy4vZW50aXRpZXMvcm9sZS1wZXJtaXNzaW9uLmVudGl0eSc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFWFBPUlRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyDilIDilIDilIAgRXhpc3Rpbmcg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5leHBvcnQgeyBBcGlLZXkgfSBmcm9tICcuL2VudGl0aWVzL2FwaWtleS5lbnRpdHknO1xuZXhwb3J0IHsgQ291bnRyeSB9IGZyb20gJy4vZW50aXRpZXMvY291bnRyeS5lbnRpdHknO1xuZXhwb3J0IHsgQXJlYSB9IGZyb20gJy4vZW50aXRpZXMvYXJlYS5lbnRpdHknO1xuZXhwb3J0IHsgU3lzUm9sZSB9IGZyb20gJy4vZW50aXRpZXMvc3lzLnJvbGUuZW50aXR5JztcbmV4cG9ydCB7IFN5c1VzZXIgfSBmcm9tICcuL2VudGl0aWVzL3N5cy51c2VyLmVudGl0eSc7XG5leHBvcnQgeyBVc2VyIH0gZnJvbSAnLi9lbnRpdGllcy91c2VyLmVudGl0eSc7XG5leHBvcnQgeyBVc2VyRGV2aWNlIH0gZnJvbSAnLi9lbnRpdGllcy91c2VyRGV2aWNlLmVudGl0eSc7XG5cbi8vIOKUgOKUgOKUgCBDYXRhbG9ndWUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5leHBvcnQgeyBDYXRlZ29yeSB9IGZyb20gJy4vZW50aXRpZXMvY2F0ZWdvcnkuZW50aXR5JztcbmV4cG9ydCB7IEJyYW5kIH0gZnJvbSAnLi9lbnRpdGllcy9icmFuZC5lbnRpdHknO1xuZXhwb3J0IHsgVmFyaWFudFR5cGUgfSBmcm9tICcuL2VudGl0aWVzL3ZhcmlhbnQtdHlwZS5lbnRpdHknO1xuZXhwb3J0IHsgVmFyaWFudE9wdGlvbiB9IGZyb20gJy4vZW50aXRpZXMvdmFyaWFudC1vcHRpb24uZW50aXR5JztcbmV4cG9ydCB7IFByb2R1Y3QgfSBmcm9tICcuL2VudGl0aWVzL3Byb2R1Y3QuZW50aXR5JztcbmV4cG9ydCB7IFByb2R1Y3RNZWRpYSwgTWVkaWFUeXBlIH0gZnJvbSAnLi9lbnRpdGllcy9wcm9kdWN0LW1lZGlhLmVudGl0eSc7XG5leHBvcnQgeyBQcm9kdWN0VmFyaWFudCB9IGZyb20gJy4vZW50aXRpZXMvcHJvZHVjdC12YXJpYW50LmVudGl0eSc7XG5leHBvcnQgeyBQcm9kdWN0VmFyaWFudE9wdGlvbiB9IGZyb20gJy4vZW50aXRpZXMvcHJvZHVjdC12YXJpYW50LW9wdGlvbi5lbnRpdHknO1xuZXhwb3J0IHsgVGFnIH0gZnJvbSAnLi9lbnRpdGllcy90YWcuZW50aXR5JztcbmV4cG9ydCB7IFByb2R1Y3RUYWcgfSBmcm9tICcuL2VudGl0aWVzL3Byb2R1Y3QtdGFnLmVudGl0eSc7XG5cblxuLy8g4pSA4pSA4pSAIFN0b3JlcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbmV4cG9ydCB7IFN0b3JlIH0gZnJvbSAnLi9lbnRpdGllcy9zdG9yZS5lbnRpdHknO1xuZXhwb3J0IHsgUHJvZHVjdFN0b3JlIH0gZnJvbSAnLi9lbnRpdGllcy9wcm9kdWN0LXN0b3JlLmVudGl0eSc7XG5cbi8vIOKUgOKUgOKUgCBJbnZlbnRvcnkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5leHBvcnQgeyBJbnZlbnRvcnkgfSBmcm9tICcuL2VudGl0aWVzL2ludmVudG9yeS5lbnRpdHknO1xuZXhwb3J0IHsgU3RvcmVJbnZlbnRvcnkgfSBmcm9tICcuL2VudGl0aWVzL3N0b3JlLWludmVudG9yeS5lbnRpdHknO1xuZXhwb3J0IHsgSW52ZW50b3J5U3RvY2sgfSBmcm9tICcuL2VudGl0aWVzL2ludmVudG9yeS1zdG9jay5lbnRpdHknO1xuZXhwb3J0IHsgU3RvY2tNb3ZlbWVudCB9IGZyb20gJy4vZW50aXRpZXMvc3RvY2stbW92ZW1lbnQuZW50aXR5JztcblxuLy8g4pSA4pSA4pSAIFB1cmNoYXNpbmcg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5leHBvcnQgeyBWZW5kb3IgfSBmcm9tICcuL2VudGl0aWVzL3ZlbmRvci5lbnRpdHknO1xuZXhwb3J0IHsgVmVuZG9yUHJvZHVjdCB9IGZyb20gJy4vZW50aXRpZXMvdmVuZG9yLXByb2R1Y3QuZW50aXR5JztcbmV4cG9ydCB7IFB1cmNoYXNlT3JkZXIgfSBmcm9tICcuL2VudGl0aWVzL3B1cmNoYXNlLW9yZGVyLmVudGl0eSc7XG5leHBvcnQge1xuICBQdXJjaGFzZU9yZGVySXRlbSxcbiAgUHVyY2hhc2VPcmRlckl0ZW1TdGF0dXMsXG59IGZyb20gJy4vZW50aXRpZXMvcHVyY2hhc2Utb3JkZXItaXRlbS5lbnRpdHknO1xuXG4vLyDilIDilIDilIAgUGVybWlzc2lvbnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmV4cG9ydCB7IFBlcm1pc3Npb24gfSBmcm9tICcuL2VudGl0aWVzL3Blcm1pc3Npb24uZW50aXR5JztcbmV4cG9ydCB7IFJvbGVQZXJtaXNzaW9uIH0gZnJvbSAnLi9lbnRpdGllcy9yb2xlLXBlcm1pc3Npb24uZW50aXR5JztcblxuLy8g4pSA4pSA4pSAIEVudW1zIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuZXhwb3J0IHsgT3NOYW1lIH0gZnJvbSAnLi91dGlscy9lbnVtcy9vc05hbWUnO1xuZXhwb3J0IHsgUHJvZHVjdEFwcCB9IGZyb20gJy4vdXRpbHMvZW51bXMvcHJvZHVjdEFwcCc7XG5leHBvcnQgeyBWZXJzaW9uVHlwZSB9IGZyb20gJy4vdXRpbHMvZW51bXMvdmVyc2lvbnR5cGUnO1xuZXhwb3J0IHsgTGFuZ3VhZ2UgfSBmcm9tICcuL3V0aWxzL2VudW1zL2xhbmd1YWdlJztcbmV4cG9ydCB7IFN0YXR1cyB9IGZyb20gJy4vdXRpbHMvZW51bXMvc3RhdHVzJztcbmV4cG9ydCB7IEdlbmRlciB9IGZyb20gJy4vdXRpbHMvZW51bXMvZ2VuZGVyJztcbmV4cG9ydCB7IFB1cmNoYXNlT3JkZXJTdGF0dXMgfSBmcm9tICcuL3V0aWxzL2VudW1zL3B1cmNoYXNlT3JkZXJTdGF0dXMnO1xuZXhwb3J0IHsgU3RvY2tNb3ZlbWVudFR5cGUgfSBmcm9tICcuL3V0aWxzL2VudW1zL3N0b2NrTW92ZW1lbnRUeXBlJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1PREVMIFJFR0lTVFJZXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGJNb2RlbHMoKTogTW9kZWxDdG9yW10ge1xuICByZXR1cm4gW1xuICAgIC8vIEV4aXN0aW5nXG4gICAgQXBpS2V5LFxuICAgIEFyZWEsXG4gICAgQ291bnRyeSxcbiAgICBTeXNSb2xlLFxuICAgIFN5c1VzZXIsXG4gICAgVXNlcixcbiAgICBVc2VyRGV2aWNlLFxuXG4gICAgLy8gQ2F0YWxvZ3VlXG4gICAgQ2F0ZWdvcnksXG4gICAgQnJhbmQsXG4gICAgVmFyaWFudFR5cGUsXG4gICAgVmFyaWFudE9wdGlvbixcbiAgICBQcm9kdWN0LFxuICAgIFByb2R1Y3RNZWRpYSxcbiAgICBQcm9kdWN0VmFyaWFudCxcbiAgICBQcm9kdWN0VmFyaWFudE9wdGlvbixcbiAgICBUYWcsXG4gICAgUHJvZHVjdFRhZyxcblxuICAgIC8vIFN0b3Jlc1xuICAgIFN0b3JlLFxuICAgIFByb2R1Y3RTdG9yZSxcblxuICAgIC8vIEludmVudG9yeVxuICAgIEludmVudG9yeSxcbiAgICBTdG9yZUludmVudG9yeSxcbiAgICBJbnZlbnRvcnlTdG9jayxcbiAgICBTdG9ja01vdmVtZW50LFxuXG4gICAgLy8gUHVyY2hhc2luZ1xuICAgIFZlbmRvcixcbiAgICBWZW5kb3JQcm9kdWN0LFxuICAgIFB1cmNoYXNlT3JkZXIsXG4gICAgUHVyY2hhc2VPcmRlckl0ZW0sXG5cbiAgICAvLyBQZXJtaXNzaW9uc1xuICAgIFBlcm1pc3Npb24sXG4gICAgUm9sZVBlcm1pc3Npb24sXG4gIF07XG59XG4iLCJleHBvcnQgZW51bSBHZW5kZXIge1xuICBNQUxFID0gJ01hbGUnLFxuICBGRU1BTEUgPSAnRmVtYWxlJyxcbiAgUFJFRkVSX05PVF9UT19TQVkgPSAnUHJlZmVyIG5vdCB0byBzYXknLFxufVxuIiwiZXhwb3J0IGVudW0gTGFuZ3VhZ2Uge1xuICBFTkdMSVNIID0gJ2VuJyxcbiAgQVJBQklDID0gJ2FyJyxcbn1cbiIsImV4cG9ydCBlbnVtIE9zTmFtZSB7XG4gIEFORFJPSUQgPSAnYW5kcm9pZCcsXG4gIElPUyA9ICdpT1MnLFxuICBXRUIgPSAnd2ViJyxcbn1cbiIsImV4cG9ydCBlbnVtIFByb2R1Y3RBcHAge1xuICBEQVNIQk9BUkQgPSAnZGFzaGJvYXJkJyxcbiAgVVNFUl9BUFAgPSAndXNlcmFwcCcsXG59XG4iLCJleHBvcnQgZW51bSBQdXJjaGFzZU9yZGVyU3RhdHVzIHtcbiAgRFJBRlQgPSAnZHJhZnQnLFxuICBTRU5UX1RPX1ZFTkRPUiA9ICdzZW50X3RvX3ZlbmRvcicsXG4gIFBBUlRJQUxMWV9SRUNFSVZFRCA9ICdwYXJ0aWFsbHlfcmVjZWl2ZWQnLFxuICBGVUxMWV9SRUNFSVZFRCA9ICdmdWxseV9yZWNlaXZlZCcsXG4gIENMT1NFRCA9ICdjbG9zZWQnLFxuICBDQU5DRUxMRUQgPSAnY2FuY2VsbGVkJyxcbn1cbiIsImV4cG9ydCBlbnVtIFN0YXR1cyB7XG4gIEFDVElWRSA9ICdhY3RpdmUnLFxuICBJTl9BQ1RJVkUgPSAnaW5hY3RpdmUnLFxufVxuIiwiZXhwb3J0IGVudW0gU3RvY2tNb3ZlbWVudFR5cGUge1xuICAvLyBTdG9jayBjb21pbmcgaW5cbiAgUkVDRUlWRUQgPSAncmVjZWl2ZWQnLCAgICAgICAgICAgLy8gUE8gcmVjZWl2ZWQgaW50byBpbnZlbnRvcnlcblxuICAvLyBTdG9jayBnb2luZyBvdXQgb3IgYmVpbmcgaGVsZFxuICBSRVNFUlZFRCA9ICdyZXNlcnZlZCcsICAgICAgICAgICAvLyBSZXNlcnZlZCBmb3IgYSBwZW5kaW5nIG9yZGVyXG4gIFJFU0VSVkFUSU9OX1JFTEVBU0VEID0gJ3Jlc2VydmF0aW9uX3JlbGVhc2VkJywgLy8gT3JkZXIgY2FuY2VsbGVkLCBzdG9jayBmcmVlZFxuXG4gIC8vIE1hbnVhbCBhZGp1c3RtZW50c1xuICBBREpVU1RNRU5UX0FERCA9ICdhZGp1c3RtZW50X2FkZCcsICAgICAgIC8vIE1hbnVhbCBzdG9jayBpbmNyZWFzZVxuICBBREpVU1RNRU5UX1JFTU9WRSA9ICdhZGp1c3RtZW50X3JlbW92ZScsIC8vIE1hbnVhbCBzdG9jayBkZWNyZWFzZSAoZGFtYWdlLCBsb3NzKVxuXG4gIC8vIFJldHVybnNcbiAgUkVUVVJORURfRlJPTV9DVVNUT01FUiA9ICdyZXR1cm5lZF9mcm9tX2N1c3RvbWVyJyxcbiAgUkVUVVJORURfVE9fVkVORE9SID0gJ3JldHVybmVkX3RvX3ZlbmRvcicsXG5cbiAgLy8gVHJhbnNmZXJzXG4gIFRSQU5TRkVSX0lOID0gJ3RyYW5zZmVyX2luJywgICAvLyBNb3ZlZCBpbiBmcm9tIGFub3RoZXIgaW52ZW50b3J5XG4gIFRSQU5TRkVSX09VVCA9ICd0cmFuc2Zlcl9vdXQnLCAvLyBNb3ZlZCBvdXQgdG8gYW5vdGhlciBpbnZlbnRvcnlcbn1cbiIsImV4cG9ydCBlbnVtIFZlcnNpb25UeXBlIHtcbiAgT1BUSU9OQUwgPSAnb3B0aW9uYWwnLFxuICBNQU5EQVRPUlkgPSAnbWFuZGF0b3J5Jyxcbn1cbiIsImltcG9ydCB7IE1vZHVsZSB9IGZyb20gJ0BuZXN0anMvY29tbW9uJztcbmltcG9ydCB7IFNlcXVlbGl6ZU1vZHVsZSB9IGZyb20gJ0BuZXN0anMvc2VxdWVsaXplJztcbmltcG9ydCB7IENvbmZpZ01vZHVsZSB9IGZyb20gJ0BuZXN0anMvY29uZmlnJztcbmltcG9ydCB7IGdldERiTW9kZWxzIH0gZnJvbSAnQGFwcC90YXRheWFiLWVudGl0aWVzLWxpYnJhcnknO1xuXG5ATW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbmZpZ01vZHVsZS5mb3JSb290KHtcbiAgICAgIGlzR2xvYmFsOiB0cnVlLFxuICAgIH0pLFxuICAgIFNlcXVlbGl6ZU1vZHVsZS5mb3JSb290KHtcbiAgICAgIGRpYWxlY3Q6ICdteXNxbCcsXG4gICAgICBob3N0OiBwcm9jZXNzLmVudi5NWVNRTF9IT1NULFxuICAgICAgZGF0YWJhc2U6IHByb2Nlc3MuZW52Lk1ZU1FMX0RBVEFCQVNFLFxuICAgICAgdXNlcm5hbWU6IHByb2Nlc3MuZW52Lk1ZU1FMX1VTRVIsXG4gICAgICBwYXNzd29yZDogcHJvY2Vzcy5lbnYuTVlTUUxfUEFTU1dPUkQsXG4gICAgICBwb3J0OiAzMzA2LFxuICAgICAgbW9kZWxzOiBnZXREYk1vZGVscygpLFxuICAgICAgYXV0b0xvYWRNb2RlbHM6IHRydWUsXG4gICAgICBzeW5jaHJvbml6ZTogdHJ1ZSxcbiAgICAgIGxvZ2dpbmc6IGZhbHNlLFxuICAgICAgZGVmaW5lOiB7XG4gICAgICAgIHRpbWVzdGFtcHM6IHRydWUsXG4gICAgICAgIHBhcmFub2lkOiB0cnVlLFxuICAgICAgfSxcbiAgICB9KSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQXBwTW9kdWxlIHt9XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbmVzdGpzL2NvbW1vblwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbmVzdGpzL2NvbmZpZ1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbmVzdGpzL2NvcmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG5lc3Rqcy9zZXF1ZWxpemVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwic2VxdWVsaXplLXR5cGVzY3JpcHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidHNjb25maWctcGF0aHMvcmVnaXN0ZXJcIik7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDaGVjayBpZiBtb2R1bGUgZXhpc3RzIChkZXZlbG9wbWVudCBvbmx5KVxuXHRpZiAoX193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0gPT09IHVuZGVmaW5lZCkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIG1vZHVsZUlkICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiaW1wb3J0ICd0c2NvbmZpZy1wYXRocy9yZWdpc3Rlcic7XG5pbXBvcnQgeyBOZXN0RmFjdG9yeSB9IGZyb20gJ0BuZXN0anMvY29yZSc7XG5pbXBvcnQgeyBBcHBNb2R1bGUgfSBmcm9tICcuL2FwcC5tb2R1bGUnO1xuXG5hc3luYyBmdW5jdGlvbiBib290c3RyYXAoKSB7XG4gIGNvbnN0IGFwcCA9IGF3YWl0IE5lc3RGYWN0b3J5LmNyZWF0ZShBcHBNb2R1bGUsIHsgY29yczogdHJ1ZSB9KTtcbiAgYXdhaXQgYXBwLmxpc3Rlbihwcm9jZXNzLmVudi5TRVJWRVJfUE9SVCA/PyA5MDA0KTtcbn1cbmJvb3RzdHJhcCgpO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==