tt-entities 0.0.21 → 0.0.22

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