@acorex/modules 18.0.1 → 18.0.4
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.
@@ -10,7 +10,7 @@ export declare class AXMBackendDataProvider implements AXPDataProvider {
|
|
10
10
|
insertMany(entity: AXPEntityConfig, entityList: any): Promise<any>;
|
11
11
|
getOne(entity: AXPEntityConfig, id: string): Promise<any>;
|
12
12
|
getMany(entity: AXPEntityConfig, params?: any): Promise<any>;
|
13
|
-
updateOne(entity: AXPEntityConfig, id
|
13
|
+
updateOne(entity: AXPEntityConfig, id?: string, data?: {
|
14
14
|
[key: string]: any;
|
15
15
|
}): Promise<any>;
|
16
16
|
deleteOne(entity: AXPEntityConfig, id: string): Promise<any>;
|
@@ -22,7 +22,7 @@ export class AXMBackendDataProvider {
|
|
22
22
|
return Promise.all(promises);
|
23
23
|
}
|
24
24
|
getOne(entity, id) {
|
25
|
-
const url = `${this.mainUrl}/${entity.module}/${entity.name}${id ? '/' + id : ''}`;
|
25
|
+
const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}${id ? '/' + id : ''}`;
|
26
26
|
return firstValueFrom(this.http.get(url));
|
27
27
|
}
|
28
28
|
getMany(entity, params) {
|
@@ -55,6 +55,7 @@ export class AXMBackendDataProvider {
|
|
55
55
|
}
|
56
56
|
}
|
57
57
|
// Set the $filter parameter if there are any filters
|
58
|
+
console.log(filterString);
|
58
59
|
if (filterString) {
|
59
60
|
httpParams = httpParams.set('$filter', filterString);
|
60
61
|
}
|
@@ -139,4 +140,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
|
|
139
140
|
providedIn: 'root',
|
140
141
|
}]
|
141
142
|
}], ctorParameters: () => [{ type: i1.HttpClient }] });
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9iYWNrZW5kL3NyYy9saWIvZGF0YS9hcGkvZGF0YS1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9DLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEcsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFLdEMsTUFBTSxPQUFPLHNCQUFzQjtJQUlqQyxZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBSDVCLFlBQU8sR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN4QyxZQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFFQSxDQUFDO0lBRXhDLFNBQVMsQ0FBQyxNQUF1QixFQUFFLFVBQWU7UUFDaEQsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckcsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUF1QixFQUFFLFVBQWU7UUFDakQsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFD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LE9BQU8saUJBQWlCLEVBQUUsYUFBYSxJQUFJLEVBQUUsQ0FBQztRQUNsRSxPQUFPLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7OEdBckpVLHNCQUFzQjtrSEFBdEIsc0JBQXNCLGNBRnJCLE1BQU07OzJGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBEYXRhUHJvdmlkZXIsIEFYUEVudGl0eUNvbmZpZywgQVhQX1JPT1RfQ09ORklHX1RPS0VOIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBWE1CYWNrZW5kRGF0YVByb3ZpZGVyIGltcGxlbWVudHMgQVhQRGF0YVByb3ZpZGVyIHtcclxuICBwcml2YXRlIGNvbmZpZ3MgPSBpbmplY3QoQVhQX1JPT1RfQ09ORklHX1RPS0VOKTtcclxuICBwcml2YXRlIG1haW5VcmwgPSB0aGlzLmNvbmZpZ3MuYmFzZVVybDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7fVxyXG5cclxuICBpbnNlcnRPbmUoZW50aXR5OiBBWFBFbnRpdHlDb25maWcsIGVudGl0eUl0ZW06IGFueSk6IFByb21pc2U8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLm1haW5Vcmx9JHtlbnRpdHkuYXJlYSA/ICcvJyArIGVudGl0eS5hcmVhIDogJyd9LyR7ZW50aXR5Lm1vZHVsZX0vJHtlbnRpdHkubmFtZX1gO1xyXG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5wb3N0KHVybCwgZW50aXR5SXRlbSkpO1xyXG4gIH1cclxuXHJcbiAgaW5zZXJ0TWFueShlbnRpdHk6IEFYUEVudGl0eUNvbmZpZywgZW50aXR5TGlzdDogYW55KTogUHJvbWlzZTxhbnk+IHtcclxuICAgIGNvbnN0IHByb21pc2VzID0gZW50aXR5TGlzdC5tYXAoKGVudGl0eTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMubWFpblVybH0ke2VudGl0eS5hcmVhID8gJy8nICsgZW50aXR5LmFyZWEgOiAnJ30vJHtlbnRpdHkubW9kdWxlfS8ke2VudGl0eS5uYW1lfWA7XHJcbiAgICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAucG9zdCh1cmwsIGVudGl0eSkpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0T25lKGVudGl0eTogQVhQRW50aXR5Q29uZmlnLCBpZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMubWFpblVybH0vJHtlbnRpdHkubW9kdWxlfS8ke2VudGl0eS5uYW1lfSR7aWQgPyAnLycgKyBpZCA6ICcnfWA7XHJcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLmdldCh1cmwpKTtcclxuICB9XHJcblxyXG4gIGdldE1hbnkoZW50aXR5OiBBWFBFbnRpdHlDb25maWcsIHBhcmFtcz86IGFueSk6IFByb21pc2U8YW55PiB7XHJcbiAgICBsZXQgaHR0cFBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdTa2lwJywgcGFyYW1zPy5za2lwPy50b1N0cmluZygpID8/ICcwJykuc2V0KCdUYWtlJywgcGFyYW1zPy50YWtlPy50b1N0cmluZygpID8/ICcxMCcpO1xyXG5cclxuICAgIGlmIChwYXJhbXM/LnNvcnQgJiYgcGFyYW1zPy5zb3J0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3Qgc29ydFBhcmFtID0gcGFyYW1zPy5zb3J0Lm1hcCgoc29ydDogYW55KSA9PiBgJHtzb3J0LmZpZWxkfToke3NvcnQuZGlyfWApLmpvaW4oJywnKTtcclxuICAgICAgaHR0cFBhcmFtcyA9IGh0dHBQYXJhbXMuc2V0KCckb3JkZXJieScsIHNvcnRQYXJhbSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgYnVpbGRGaWx0ZXJTdHJpbmcgPSAoZmlsdGVyczogYW55W10pOiBzdHJpbmcgPT4ge1xyXG4gICAgICByZXR1cm4gZmlsdGVyc1xyXG4gICAgICAgIC5tYXAoKGY6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGYuZmlsdGVycykge1xyXG4gICAgICAgICAgICByZXR1cm4gYnVpbGRGaWx0ZXJTdHJpbmcoZi5maWx0ZXJzKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBgJHtmLmZpZWxkfSAke2Yub3BlcmF0b3IudHlwZX0gJHtmLnZhbHVlfWA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuam9pbignLCcpO1xyXG4gICAgfTtcclxuXHJcbiAgICBsZXQgZmlsdGVyU3RyaW5nID0gcGFyYW1zPy5jdXN0b21GaWx0ZXIgPyBwYXJhbXMuY3VzdG9tRmlsdGVyIDogJyc7XHJcbiAgICBpZiAocGFyYW1zPy5maWx0ZXIpIHtcclxuICAgICAgY29uc3QgZmlsdGVyID0gcGFyYW1zLmZpbHRlcjtcclxuICAgICAgaWYgKGZpbHRlci5maWx0ZXJzKSB7XHJcbiAgICAgICAgLy8gQ29uc3RydWN0IGZpbHRlciBzdHJpbmcgZnJvbSBwcm92aWRlZCBmaWx0ZXJzXHJcblxyXG4gICAgICAgIGNvbnN0IGR5bmFtaWNGaWx0ZXJzID0gYnVpbGRGaWx0ZXJTdHJpbmcoZmlsdGVyLmZpbHRlcnMpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHsgZHluYW1pY0ZpbHRlcnMgfSk7XHJcblxyXG4gICAgICAgIC8vIEFwcGVuZCBkeW5hbWljIGZpbHRlcnMgdG8gY3VzdG9tIGZpbHRlciwgaWYgYm90aCBleGlzdFxyXG4gICAgICAgIGZpbHRlclN0cmluZyA9IGZpbHRlclN0cmluZyA/IGAke2ZpbHRlclN0cmluZ30sJHtkeW5hbWljRmlsdGVyc31gIDogZHluYW1pY0ZpbHRlcnM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIFNldCB0aGUgJGZpbHRlciBwYXJhbWV0ZXIgaWYgdGhlcmUgYXJlIGFueSBmaWx0ZXJzXHJcbiAgICBpZiAoZmlsdGVyU3RyaW5nKSB7XHJcbiAgICAgIGh0dHBQYXJhbXMgPSBodHRwUGFyYW1zLnNldCgnJGZpbHRlcicsIGZpbHRlclN0cmluZyk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gZ2VuZXJhdGVRdWVyeVN0cmluZyhmaWx0ZXI6IGFueSkge1xyXG4gICAgICBpZiAoIWZpbHRlci5maWx0ZXJzKSB7XHJcbiAgICAgICAgLy8gQmFzZSBjYXNlOiBzaW5nbGUgZmlsdGVyXHJcbiAgICAgICAgcmV0dXJuIGAke2ZpbHRlci5maWVsZH0gJHtmaWx0ZXIub3BlcmF0b3IudHlwZX0gJHtmaWx0ZXIudmFsdWV9YDtcclxuICAgICAgfSBlbHNlIGlmICghZmlsdGVyLmZpbHRlcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIFJlY3Vyc2l2ZSBjYXNlOiBtdWx0aXBsZSBmaWx0ZXJzXHJcbiAgICAgICAgY29uc3QgZmlsdGVyU3RyaW5ncyA9IGZpbHRlci5maWx0ZXJzLm1hcCgoc3ViRmlsdGVyOiBhbnkpID0+IGdlbmVyYXRlUXVlcnlTdHJpbmcoc3ViRmlsdGVyKSk7XHJcbiAgICAgICAgY29uc3QgbG9naWMgPSBmaWx0ZXIubG9naWMgfHwgJ0FORCc7IC8vIERlZmF1bHQgbG9naWMgaXMgJ0FORCcgaWYgbm90IHByb3ZpZGVkXHJcbiAgICAgICAgcmV0dXJuIGAke2ZpbHRlclN0cmluZ3MuZmlsdGVyKChpOiBhbnkpID0+IGkpLmpvaW4oYCAke2xvZ2ljfSBgKX1gO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHF1ZXJ5U3RyaW5nID0gcGFyYW1zPy5jdXN0b21GaWx0ZXIgPyBwYXJhbXMuY3VzdG9tRmlsdGVyIDogJyc7XHJcbiAgICBpZiAocGFyYW1zPy5maWx0ZXIpIHtcclxuICAgICAgY29uc3QgZmlsdGVyID0gcGFyYW1zLmZpbHRlcjtcclxuICAgICAgaWYgKGZpbHRlci5maWx0ZXJzICYmIGZpbHRlci5maWx0ZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAvLyBDb25zdHJ1Y3QgZmlsdGVyIHN0cmluZyBmcm9tIHByb3ZpZGVkIGZpbHRlcnNcclxuXHJcbiAgICAgICAgY29uc3QgZHluYW1pY1F1ZXJpZXMgPSBnZW5lcmF0ZVF1ZXJ5U3RyaW5nKGZpbHRlcik7XHJcbiAgICAgICAgY29uc29sZS5sb2coeyBkeW5hbWljUXVlcmllczogZHluYW1pY1F1ZXJpZXMgfSk7XHJcblxyXG4gICAgICAgIC8vIEFwcGVuZCBkeW5hbWljIGZpbHRlcnMgdG8gY3VzdG9tIGZpbHRlciwgaWYgYm90aCBleGlzdFxyXG4gICAgICAgIHF1ZXJ5U3RyaW5nID0gcXVlcnlTdHJpbmcgPyBgJHtxdWVyeVN0cmluZ30sJHtkeW5hbWljUXVlcmllc31gIDogZHluYW1pY1F1ZXJpZXM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIFNldCB0aGUgJGZpbHRlciBwYXJhbWV0ZXIgaWYgdGhlcmUgYXJlIGFueSBmaWx0ZXJzXHJcbiAgICBpZiAocXVlcnlTdHJpbmcpIHtcclxuICAgICAgaHR0cFBhcmFtcyA9IGh0dHBQYXJhbXMuc2V0KCckcXVlcnknLCBxdWVyeVN0cmluZyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20oXHJcbiAgICAgIHRoaXMuaHR0cC5nZXQ8YW55PihcclxuICAgICAgICBgJHt0aGlzLm1haW5Vcmx9JHtlbnRpdHkuYXJlYSA/ICcvJyArIGVudGl0eS5hcmVhIDogJyd9LyR7ZW50aXR5Lm1vZHVsZX0vJHtwYXJhbXMuY29zdHVtR2V0dGVyID8gcGFyYW1zLmNvc3R1bUdldHRlciA6IGVudGl0eS5uYW1lfS8ke1xyXG4gICAgICAgICAgcGFyYW1zPy5zdWIgPyBwYXJhbXMuc3ViIDogJydcclxuICAgICAgICB9YCxcclxuICAgICAgICB7IHBhcmFtczogaHR0cFBhcmFtcyB9XHJcbiAgICAgIClcclxuICAgICkudGhlbigocmVzcG9uc2UpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICB0b3RhbDogcmVzcG9uc2UudG90YWxDb3VudCxcclxuICAgICAgICBpdGVtczogcmVzcG9uc2UuaXRlbXMsXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZU9uZShlbnRpdHk6IEFYUEVudGl0eUNvbmZpZywgaWQ6IHN0cmluZywgZGF0YTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IFByb21pc2U8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLm1haW5Vcmx9JHtlbnRpdHkuYXJlYSA/ICcvJyArIGVudGl0eS5hcmVhIDogJyd9LyR7ZW50aXR5Lm1vZHVsZX0vJHtlbnRpdHkubmFtZX0ke2lkID8gJy8nICsgaWQgOiAnJ31gO1xyXG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5wdXQodXJsLCBkYXRhKSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVPbmUoZW50aXR5OiBBWFBFbnRpdHlDb25maWcsIGlkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5tYWluVXJsfSR7ZW50aXR5LmFyZWEgPyAnLycgKyBlbnRpdHkuYXJlYSA6ICcnfS8ke2VudGl0eS5tb2R1bGV9LyR7ZW50aXR5Lm5hbWV9LyR7aWR9YDtcclxuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZGVsZXRlKHVybCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rmlyc3QoZW50aXR5OiBBWFBFbnRpdHlDb25maWcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgLy8gcmV0dXJuIHRoaXMuZ2V0TWFueShlbnRpdHkubmFtZSkudGhlbigocmVzKSA9PiByZXMuaXRlbXNbMF0pO1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiByZXNvbHZlKHRydWUpKTtcclxuICB9XHJcblxyXG4gIC8vIEZpbGUgdXBsb2FkZXIgZnVuY3Rpb25cclxuICB1cGxvYWRGaWxlKGZpbGU6IEZpbGUsIHRpdGxlOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5tYWluVXJsfS9jb21tb24vZmlsZXNgO1xyXG4gICAgY29uc3QgZm9ybURhdGE6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ0ZpbGUnLCBmaWxlKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnVGl0bGUnLCB0aXRsZSk7XHJcblxyXG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5wb3N0PHN0cmluZz4odXJsLCBmb3JtRGF0YSkpO1xyXG4gIH1cclxuXHJcbiAgLy8gRnVuY3Rpb24gdG8gdXBsb2FkIG11bHRpcGxlIGZpbGVzXHJcbiAgdXBsb2FkTXVsdGlwbGVGaWxlcyhmaWxlczogRmlsZVtdLCB0aXRsZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xyXG4gICAgY29uc3QgdXBsb2FkUHJvbWlzZXMgPSBmaWxlcy5tYXAoKGZpbGUpID0+IHRoaXMudXBsb2FkRmlsZShmaWxlLCB0aXRsZSkpO1xyXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKHVwbG9hZFByb21pc2VzKTtcclxuICB9XHJcblxyXG4gIC8vIEZ1bmN0aW9uIHRvIHZpZXcgYSBmaWxlXHJcbiAgdmlld0ZpbGUoaWQ6IHN0cmluZywgbmFtZTogc3RyaW5nKTogUHJvbWlzZTxCbG9iPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLm1haW5Vcmx9L2NvbW1vbi9maWxlcy8ke2lkfS9WaWV3LyR7bmFtZX1gO1xyXG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pKTtcclxuICB9XHJcblxyXG4gIC8vIEZ1bmN0aW9uIHRvIGRvd25sb2FkIGEgZmlsZVxyXG4gIGRvd25sb2FkRmlsZShpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBQcm9taXNlPEJsb2I+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMubWFpblVybH0vY29tbW9uL2ZpbGVzLyR7aWR9L0Rvd25sb2FkLyR7bmFtZX1gO1xyXG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pKTtcclxuICB9XHJcbn1cclxuIl19
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9iYWNrZW5kL3NyYy9saWIvZGF0YS9hcGkvZGF0YS1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9DLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEcsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFLdEMsTUFBTSxPQUFPLHNCQUFzQjtJQUlqQyxZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBSDVCLFlBQU8sR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN4QyxZQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFFQSxDQUFDO0lBRXhDLFNBQVMsQ0FBQyxNQUF1QixFQUFFLFVBQWU7UUFDaEQsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckcsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUF1QixFQUFFLFVBQWU7UUFDakQsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO1lBQzlDLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JHLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBdUIsRUFBRSxFQUFVO1FBQ3hDLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzFILE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELE9BQU8sQ0FBQyxNQUF1QixFQUFFLE1BQVk7UUFDM0MsSUFBSSxVQUFVLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFD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WSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsOEJBQThCO0lBQzlCLFlBQVksQ0FBQyxFQUFVLEVBQUUsSUFBWTtRQUNuQyxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLGlCQUFpQixFQUFFLGFBQWEsSUFBSSxFQUFFLENBQUM7UUFDbEUsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDOzhHQXRKVSxzQkFBc0I7a0hBQXRCLHNCQUFzQixjQUZyQixNQUFNOzsyRkFFUCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQRGF0YVByb3ZpZGVyLCBBWFBFbnRpdHlDb25maWcsIEFYUF9ST09UX0NPTkZJR19UT0tFTiB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhNQmFja2VuZERhdGFQcm92aWRlciBpbXBsZW1lbnRzIEFYUERhdGFQcm92aWRlciB7XHJcbiAgcHJpdmF0ZSBjb25maWdzID0gaW5qZWN0KEFYUF9ST09UX0NPTkZJR19UT0tFTik7XHJcbiAgcHJpdmF0ZSBtYWluVXJsID0gdGhpcy5jb25maWdzLmJhc2VVcmw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge31cclxuXHJcbiAgaW5zZXJ0T25lKGVudGl0eTogQVhQRW50aXR5Q29uZmlnLCBlbnRpdHlJdGVtOiBhbnkpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5tYWluVXJsfSR7ZW50aXR5LmFyZWEgPyAnLycgKyBlbnRpdHkuYXJlYSA6ICcnfS8ke2VudGl0eS5tb2R1bGV9LyR7ZW50aXR5Lm5hbWV9YDtcclxuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAucG9zdCh1cmwsIGVudGl0eUl0ZW0pKTtcclxuICB9XHJcblxyXG4gIGluc2VydE1hbnkoZW50aXR5OiBBWFBFbnRpdHlDb25maWcsIGVudGl0eUxpc3Q6IGFueSk6IFByb21pc2U8YW55PiB7XHJcbiAgICBjb25zdCBwcm9taXNlcyA9IGVudGl0eUxpc3QubWFwKChlbnRpdHk6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLm1haW5Vcmx9JHtlbnRpdHkuYXJlYSA/ICcvJyArIGVudGl0eS5hcmVhIDogJyd9LyR7ZW50aXR5Lm1vZHVsZX0vJHtlbnRpdHkubmFtZX1gO1xyXG4gICAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLnBvc3QodXJsLCBlbnRpdHkpKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcclxuICB9XHJcblxyXG4gIGdldE9uZShlbnRpdHk6IEFYUEVudGl0eUNvbmZpZywgaWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLm1haW5Vcmx9JHtlbnRpdHkuYXJlYSA/ICcvJyArIGVudGl0eS5hcmVhIDogJyd9LyR7ZW50aXR5Lm1vZHVsZX0vJHtlbnRpdHkubmFtZX0ke2lkID8gJy8nICsgaWQgOiAnJ31gO1xyXG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQodXJsKSk7XHJcbiAgfVxyXG5cclxuICBnZXRNYW55KGVudGl0eTogQVhQRW50aXR5Q29uZmlnLCBwYXJhbXM/OiBhbnkpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgbGV0IGh0dHBQYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpLnNldCgnU2tpcCcsIHBhcmFtcz8uc2tpcD8udG9TdHJpbmcoKSA/PyAnMCcpLnNldCgnVGFrZScsIHBhcmFtcz8udGFrZT8udG9TdHJpbmcoKSA/PyAnMTAnKTtcclxuXHJcbiAgICBpZiAocGFyYW1zPy5zb3J0ICYmIHBhcmFtcz8uc29ydC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IHNvcnRQYXJhbSA9IHBhcmFtcz8uc29ydC5tYXAoKHNvcnQ6IGFueSkgPT4gYCR7c29ydC5maWVsZH06JHtzb3J0LmRpcn1gKS5qb2luKCcsJyk7XHJcbiAgICAgIGh0dHBQYXJhbXMgPSBodHRwUGFyYW1zLnNldCgnJG9yZGVyYnknLCBzb3J0UGFyYW0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGJ1aWxkRmlsdGVyU3RyaW5nID0gKGZpbHRlcnM6IGFueVtdKTogc3RyaW5nID0+IHtcclxuICAgICAgcmV0dXJuIGZpbHRlcnNcclxuICAgICAgICAubWFwKChmOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChmLmZpbHRlcnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGJ1aWxkRmlsdGVyU3RyaW5nKGYuZmlsdGVycyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gYCR7Zi5maWVsZH0gJHtmLm9wZXJhdG9yLnR5cGV9ICR7Zi52YWx1ZX1gO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmpvaW4oJywnKTtcclxuICAgIH07XHJcblxyXG4gICAgbGV0IGZpbHRlclN0cmluZyA9IHBhcmFtcz8uY3VzdG9tRmlsdGVyID8gcGFyYW1zLmN1c3RvbUZpbHRlciA6ICcnO1xyXG4gICAgaWYgKHBhcmFtcz8uZmlsdGVyKSB7XHJcbiAgICAgIGNvbnN0IGZpbHRlciA9IHBhcmFtcy5maWx0ZXI7XHJcbiAgICAgIGlmIChmaWx0ZXIuZmlsdGVycykge1xyXG4gICAgICAgIC8vIENvbnN0cnVjdCBmaWx0ZXIgc3RyaW5nIGZyb20gcHJvdmlkZWQgZmlsdGVyc1xyXG5cclxuICAgICAgICBjb25zdCBkeW5hbWljRmlsdGVycyA9IGJ1aWxkRmlsdGVyU3RyaW5nKGZpbHRlci5maWx0ZXJzKTtcclxuICAgICAgICBjb25zb2xlLmxvZyh7IGR5bmFtaWNGaWx0ZXJzIH0pO1xyXG5cclxuICAgICAgICAvLyBBcHBlbmQgZHluYW1pYyBmaWx0ZXJzIHRvIGN1c3RvbSBmaWx0ZXIsIGlmIGJvdGggZXhpc3RcclxuICAgICAgICBmaWx0ZXJTdHJpbmcgPSBmaWx0ZXJTdHJpbmcgPyBgJHtmaWx0ZXJTdHJpbmd9LCR7ZHluYW1pY0ZpbHRlcnN9YCA6IGR5bmFtaWNGaWx0ZXJzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBTZXQgdGhlICRmaWx0ZXIgcGFyYW1ldGVyIGlmIHRoZXJlIGFyZSBhbnkgZmlsdGVyc1xyXG4gICAgY29uc29sZS5sb2coZmlsdGVyU3RyaW5nKTtcclxuICAgIGlmIChmaWx0ZXJTdHJpbmcpIHtcclxuICAgICAgaHR0cFBhcmFtcyA9IGh0dHBQYXJhbXMuc2V0KCckZmlsdGVyJywgZmlsdGVyU3RyaW5nKTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBnZW5lcmF0ZVF1ZXJ5U3RyaW5nKGZpbHRlcjogYW55KSB7XHJcbiAgICAgIGlmICghZmlsdGVyLmZpbHRlcnMpIHtcclxuICAgICAgICAvLyBCYXNlIGNhc2U6IHNpbmdsZSBmaWx0ZXJcclxuICAgICAgICByZXR1cm4gYCR7ZmlsdGVyLmZpZWxkfSAke2ZpbHRlci5vcGVyYXRvci50eXBlfSAke2ZpbHRlci52YWx1ZX1gO1xyXG4gICAgICB9IGVsc2UgaWYgKCFmaWx0ZXIuZmlsdGVycy5sZW5ndGgpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gUmVjdXJzaXZlIGNhc2U6IG11bHRpcGxlIGZpbHRlcnNcclxuICAgICAgICBjb25zdCBmaWx0ZXJTdHJpbmdzID0gZmlsdGVyLmZpbHRlcnMubWFwKChzdWJGaWx0ZXI6IGFueSkgPT4gZ2VuZXJhdGVRdWVyeVN0cmluZyhzdWJGaWx0ZXIpKTtcclxuICAgICAgICBjb25zdCBsb2dpYyA9IGZpbHRlci5sb2dpYyB8fCAnQU5EJzsgLy8gRGVmYXVsdCBsb2dpYyBpcyAnQU5EJyBpZiBub3QgcHJvdmlkZWRcclxuICAgICAgICByZXR1cm4gYCR7ZmlsdGVyU3RyaW5ncy5maWx0ZXIoKGk6IGFueSkgPT4gaSkuam9pbihgICR7bG9naWN9IGApfWA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgcXVlcnlTdHJpbmcgPSBwYXJhbXM/LmN1c3RvbUZpbHRlciA/IHBhcmFtcy5jdXN0b21GaWx0ZXIgOiAnJztcclxuICAgIGlmIChwYXJhbXM/LmZpbHRlcikge1xyXG4gICAgICBjb25zdCBmaWx0ZXIgPSBwYXJhbXMuZmlsdGVyO1xyXG4gICAgICBpZiAoZmlsdGVyLmZpbHRlcnMgJiYgZmlsdGVyLmZpbHRlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIC8vIENvbnN0cnVjdCBmaWx0ZXIgc3RyaW5nIGZyb20gcHJvdmlkZWQgZmlsdGVyc1xyXG5cclxuICAgICAgICBjb25zdCBkeW5hbWljUXVlcmllcyA9IGdlbmVyYXRlUXVlcnlTdHJpbmcoZmlsdGVyKTtcclxuICAgICAgICBjb25zb2xlLmxvZyh7IGR5bmFtaWNRdWVyaWVzOiBkeW5hbWljUXVlcmllcyB9KTtcclxuXHJcbiAgICAgICAgLy8gQXBwZW5kIGR5bmFtaWMgZmlsdGVycyB0byBjdXN0b20gZmlsdGVyLCBpZiBib3RoIGV4aXN0XHJcbiAgICAgICAgcXVlcnlTdHJpbmcgPSBxdWVyeVN0cmluZyA/IGAke3F1ZXJ5U3RyaW5nfSwke2R5bmFtaWNRdWVyaWVzfWAgOiBkeW5hbWljUXVlcmllcztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gU2V0IHRoZSAkZmlsdGVyIHBhcmFtZXRlciBpZiB0aGVyZSBhcmUgYW55IGZpbHRlcnNcclxuICAgIGlmIChxdWVyeVN0cmluZykge1xyXG4gICAgICBodHRwUGFyYW1zID0gaHR0cFBhcmFtcy5zZXQoJyRxdWVyeScsIHF1ZXJ5U3RyaW5nKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbShcclxuICAgICAgdGhpcy5odHRwLmdldDxhbnk+KFxyXG4gICAgICAgIGAke3RoaXMubWFpblVybH0ke2VudGl0eS5hcmVhID8gJy8nICsgZW50aXR5LmFyZWEgOiAnJ30vJHtlbnRpdHkubW9kdWxlfS8ke3BhcmFtcy5jb3N0dW1HZXR0ZXIgPyBwYXJhbXMuY29zdHVtR2V0dGVyIDogZW50aXR5Lm5hbWV9LyR7XHJcbiAgICAgICAgICBwYXJhbXM/LnN1YiA/IHBhcmFtcy5zdWIgOiAnJ1xyXG4gICAgICAgIH1gLFxyXG4gICAgICAgIHsgcGFyYW1zOiBodHRwUGFyYW1zIH1cclxuICAgICAgKVxyXG4gICAgKS50aGVuKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHRvdGFsOiByZXNwb25zZS50b3RhbENvdW50LFxyXG4gICAgICAgIGl0ZW1zOiByZXNwb25zZS5pdGVtcyxcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlT25lKGVudGl0eTogQVhQRW50aXR5Q29uZmlnLCBpZD86IHN0cmluZywgZGF0YT86IHsgW2tleTogc3RyaW5nXTogYW55IH0pOiBQcm9taXNlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5tYWluVXJsfSR7ZW50aXR5LmFyZWEgPyAnLycgKyBlbnRpdHkuYXJlYSA6ICcnfS8ke2VudGl0eS5tb2R1bGV9LyR7ZW50aXR5Lm5hbWV9JHtpZCA/ICcvJyArIGlkIDogJyd9YDtcclxuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAucHV0KHVybCwgZGF0YSkpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlT25lKGVudGl0eTogQVhQRW50aXR5Q29uZmlnLCBpZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMubWFpblVybH0ke2VudGl0eS5hcmVhID8gJy8nICsgZW50aXR5LmFyZWEgOiAnJ30vJHtlbnRpdHkubW9kdWxlfS8ke2VudGl0eS5uYW1lfS8ke2lkfWA7XHJcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLmRlbGV0ZSh1cmwpKTtcclxuICB9XHJcblxyXG4gIGdldEZpcnN0KGVudGl0eTogQVhQRW50aXR5Q29uZmlnKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIC8vIHJldHVybiB0aGlzLmdldE1hbnkoZW50aXR5Lm5hbWUpLnRoZW4oKHJlcykgPT4gcmVzLml0ZW1zWzBdKTtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gcmVzb2x2ZSh0cnVlKSk7XHJcbiAgfVxyXG5cclxuICAvLyBGaWxlIHVwbG9hZGVyIGZ1bmN0aW9uXHJcbiAgdXBsb2FkRmlsZShmaWxlOiBGaWxlLCB0aXRsZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMubWFpblVybH0vY29tbW9uL2ZpbGVzYDtcclxuICAgIGNvbnN0IGZvcm1EYXRhOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdGaWxlJywgZmlsZSk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ1RpdGxlJywgdGl0bGUpO1xyXG5cclxuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAucG9zdDxzdHJpbmc+KHVybCwgZm9ybURhdGEpKTtcclxuICB9XHJcblxyXG4gIC8vIEZ1bmN0aW9uIHRvIHVwbG9hZCBtdWx0aXBsZSBmaWxlc1xyXG4gIHVwbG9hZE11bHRpcGxlRmlsZXMoZmlsZXM6IEZpbGVbXSwgdGl0bGU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcclxuICAgIGNvbnN0IHVwbG9hZFByb21pc2VzID0gZmlsZXMubWFwKChmaWxlKSA9PiB0aGlzLnVwbG9hZEZpbGUoZmlsZSwgdGl0bGUpKTtcclxuICAgIHJldHVybiBQcm9taXNlLmFsbCh1cGxvYWRQcm9taXNlcyk7XHJcbiAgfVxyXG5cclxuICAvLyBGdW5jdGlvbiB0byB2aWV3IGEgZmlsZVxyXG4gIHZpZXdGaWxlKGlkOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IFByb21pc2U8QmxvYj4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5tYWluVXJsfS9jb21tb24vZmlsZXMvJHtpZH0vVmlldy8ke25hbWV9YDtcclxuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0KHVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KSk7XHJcbiAgfVxyXG5cclxuICAvLyBGdW5jdGlvbiB0byBkb3dubG9hZCBhIGZpbGVcclxuICBkb3dubG9hZEZpbGUoaWQ6IHN0cmluZywgbmFtZTogc3RyaW5nKTogUHJvbWlzZTxCbG9iPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLm1haW5Vcmx9L2NvbW1vbi9maWxlcy8ke2lkfS9Eb3dubG9hZC8ke25hbWV9YDtcclxuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0KHVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
@@ -32,7 +32,7 @@ class AXMBackendDataProvider {
|
|
32
32
|
return Promise.all(promises);
|
33
33
|
}
|
34
34
|
getOne(entity, id) {
|
35
|
-
const url = `${this.mainUrl}/${entity.module}/${entity.name}${id ? '/' + id : ''}`;
|
35
|
+
const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}${id ? '/' + id : ''}`;
|
36
36
|
return firstValueFrom(this.http.get(url));
|
37
37
|
}
|
38
38
|
getMany(entity, params) {
|
@@ -65,6 +65,7 @@ class AXMBackendDataProvider {
|
|
65
65
|
}
|
66
66
|
}
|
67
67
|
// Set the $filter parameter if there are any filters
|
68
|
+
console.log(filterString);
|
68
69
|
if (filterString) {
|
69
70
|
httpParams = httpParams.set('$filter', filterString);
|
70
71
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-modules-backend.mjs","sources":["../../../../libs/modules/backend/src/lib/data/api/data-provider.ts","../../../../libs/modules/backend/src/lib/auth/oidc/application.loader.ts","../../../../libs/modules/backend/src/lib/auth/oidc/configuration.service.ts","../../../../libs/modules/backend/src/lib/auth/oidc/feature.loader.ts","../../../../libs/modules/backend/src/lib/auth/oidc/usermanager.service.ts","../../../../libs/modules/backend/src/lib/auth/oidc/oidc.strategy.ts","../../../../libs/modules/backend/src/lib/auth/oidc/permission.loader.ts","../../../../libs/modules/backend/src/lib/auth/oidc/signincallback.component.ts","../../../../libs/modules/backend/src/lib/auth/oidc/tenant.loader.ts","../../../../libs/modules/backend/src/lib/backend.module.ts","../../../../libs/modules/backend/src/lib/data/local/data-Conditioner.ts","../../../../libs/modules/backend/src/lib/data/local/local-data-provider.ts","../../../../libs/modules/backend/src/acorex-modules-backend.ts"],"sourcesContent":["import { AXPDataProvider, AXPEntityConfig, AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { firstValueFrom } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AXMBackendDataProvider implements AXPDataProvider {\r\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\r\n private mainUrl = this.configs.baseUrl;\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n insertOne(entity: AXPEntityConfig, entityItem: any): Promise<any> {\r\n const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}`;\r\n return firstValueFrom(this.http.post(url, entityItem));\r\n }\r\n\r\n insertMany(entity: AXPEntityConfig, entityList: any): Promise<any> {\r\n const promises = entityList.map((entity: any) => {\r\n const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}`;\r\n return firstValueFrom(this.http.post(url, entity));\r\n });\r\n return Promise.all(promises);\r\n }\r\n\r\n getOne(entity: AXPEntityConfig, id: string): Promise<any> {\r\n const url = `${this.mainUrl}/${entity.module}/${entity.name}${id ? '/' + id : ''}`;\r\n return firstValueFrom(this.http.get(url));\r\n }\r\n\r\n getMany(entity: AXPEntityConfig, params?: any): Promise<any> {\r\n let httpParams = new HttpParams().set('Skip', params?.skip?.toString() ?? '0').set('Take', params?.take?.toString() ?? '10');\r\n\r\n if (params?.sort && params?.sort.length > 0) {\r\n const sortParam = params?.sort.map((sort: any) => `${sort.field}:${sort.dir}`).join(',');\r\n httpParams = httpParams.set('$orderby', sortParam);\r\n }\r\n\r\n const buildFilterString = (filters: any[]): string => {\r\n return filters\r\n .map((f: any) => {\r\n if (f.filters) {\r\n return buildFilterString(f.filters);\r\n } else {\r\n return `${f.field} ${f.operator.type} ${f.value}`;\r\n }\r\n })\r\n .join(',');\r\n };\r\n\r\n let filterString = params?.customFilter ? params.customFilter : '';\r\n if (params?.filter) {\r\n const filter = params.filter;\r\n if (filter.filters) {\r\n // Construct filter string from provided filters\r\n\r\n const dynamicFilters = buildFilterString(filter.filters);\r\n console.log({ dynamicFilters });\r\n\r\n // Append dynamic filters to custom filter, if both exist\r\n filterString = filterString ? `${filterString},${dynamicFilters}` : dynamicFilters;\r\n }\r\n }\r\n // Set the $filter parameter if there are any filters\r\n if (filterString) {\r\n httpParams = httpParams.set('$filter', filterString);\r\n }\r\n\r\n function generateQueryString(filter: any) {\r\n if (!filter.filters) {\r\n // Base case: single filter\r\n return `${filter.field} ${filter.operator.type} ${filter.value}`;\r\n } else if (!filter.filters.length) {\r\n return;\r\n } else {\r\n // Recursive case: multiple filters\r\n const filterStrings = filter.filters.map((subFilter: any) => generateQueryString(subFilter));\r\n const logic = filter.logic || 'AND'; // Default logic is 'AND' if not provided\r\n return `${filterStrings.filter((i: any) => i).join(` ${logic} `)}`;\r\n }\r\n }\r\n\r\n let queryString = params?.customFilter ? params.customFilter : '';\r\n if (params?.filter) {\r\n const filter = params.filter;\r\n if (filter.filters && filter.filters.length > 0) {\r\n // Construct filter string from provided filters\r\n\r\n const dynamicQueries = generateQueryString(filter);\r\n console.log({ dynamicQueries: dynamicQueries });\r\n\r\n // Append dynamic filters to custom filter, if both exist\r\n queryString = queryString ? `${queryString},${dynamicQueries}` : dynamicQueries;\r\n }\r\n }\r\n // Set the $filter parameter if there are any filters\r\n if (queryString) {\r\n httpParams = httpParams.set('$query', queryString);\r\n }\r\n return firstValueFrom(\r\n this.http.get<any>(\r\n `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${params.costumGetter ? params.costumGetter : entity.name}/${\r\n params?.sub ? params.sub : ''\r\n }`,\r\n { params: httpParams }\r\n )\r\n ).then((response) => {\r\n return {\r\n total: response.totalCount,\r\n items: response.items,\r\n };\r\n });\r\n }\r\n\r\n updateOne(entity: AXPEntityConfig, id: string, data: { [key: string]: any }): Promise<any> {\r\n const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}${id ? '/' + id : ''}`;\r\n return firstValueFrom(this.http.put(url, data));\r\n }\r\n\r\n deleteOne(entity: AXPEntityConfig, id: string): Promise<any> {\r\n const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}/${id}`;\r\n return firstValueFrom(this.http.delete(url));\r\n }\r\n\r\n getFirst(entity: AXPEntityConfig): Promise<any> {\r\n // return this.getMany(entity.name).then((res) => res.items[0]);\r\n return new Promise((resolve) => resolve(true));\r\n }\r\n\r\n // File uploader function\r\n uploadFile(file: File, title: string): Promise<string> {\r\n const url = `${this.mainUrl}/common/files`;\r\n const formData: FormData = new FormData();\r\n formData.append('File', file);\r\n formData.append('Title', title);\r\n\r\n return firstValueFrom(this.http.post<string>(url, formData));\r\n }\r\n\r\n // Function to upload multiple files\r\n uploadMultipleFiles(files: File[], title: string): Promise<string[]> {\r\n const uploadPromises = files.map((file) => this.uploadFile(file, title));\r\n return Promise.all(uploadPromises);\r\n }\r\n\r\n // Function to view a file\r\n viewFile(id: string, name: string): Promise<Blob> {\r\n const url = `${this.mainUrl}/common/files/${id}/View/${name}`;\r\n return firstValueFrom(this.http.get(url, { responseType: 'blob' }));\r\n }\r\n\r\n // Function to download a file\r\n downloadFile(id: string, name: string): Promise<Blob> {\r\n const url = `${this.mainUrl}/common/files/${id}/Download/${name}`;\r\n return firstValueFrom(this.http.get(url, { responseType: 'blob' }));\r\n }\r\n}\r\n","import { AXPApplication, AXPApplicationLoader, AXPRefreshTokenResult } from '@acorex/platform/auth';\r\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Observable, map } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class AXMOidcApplicationLoader implements AXPApplicationLoader {\r\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\r\n private apiGetApps = `${this.configs.baseUrl}/applications/GetListByTenantId`;\r\n private apiSetApp = `${this.configs.baseUrl}/SetApplication`;\r\n constructor(private http: HttpClient) { }\r\n\r\n\r\n getList(): Observable<AXPApplication[]> {\r\n return this.http.get<{ items: any[] }>(this.apiGetApps).pipe(\r\n map((response) => {\r\n return response.items.map((item) => this.mapToAXPApplication(item));\r\n })\r\n );\r\n }\r\n\r\n set(application: AXPApplication): Promise<void> {\r\n return Promise.resolve();\r\n }\r\n\r\n // //TODO: shoud be removed\r\n // set(application: AXPApplication): Observable<AXPRefreshTokenResult> {\r\n // return this.http.post<any>(this.apiSetApp, { applicationId: application.id }).pipe(\r\n // map((response) => {\r\n // return {\r\n // succeed: true,\r\n // data: {\r\n // accessToken: response.token,\r\n // refreshToken: response.token,\r\n // }\r\n // };\r\n // })\r\n // );\r\n // }\r\n\r\n private mapToAXPApplication(item: any): AXPApplication {\r\n return {\r\n id: item.id,\r\n name: item.name || 'defaultName',\r\n title: item.title || 'defaultTitle',\r\n version: item.version || '1.0.0',\r\n description: item.description,\r\n logo: item.logo, // Assuming logo is of type AXPLogoConfig or undefined\r\n editionName: item.editionName,\r\n // features: item.features || [],\r\n };\r\n }\r\n}\r\n","import { AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';\r\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { BehaviorSubject, Observable, filter, of, switchMap, take, tap } from 'rxjs';\r\n\r\nexport interface Localization {\r\n values: Record<string, Record<string, string>>;\r\n resources: Record<string, Resource>;\r\n languages: Language[];\r\n currentCulture: Culture;\r\n defaultResourceName: string;\r\n languagesMap: Record<string, NameValue[]>;\r\n languageFilesMap: Record<string, NameValue[]>;\r\n}\r\n\r\nexport interface Resource {\r\n texts: Record<string, string>;\r\n baseResources: string[];\r\n}\r\n\r\nexport interface Language {\r\n cultureName: string;\r\n uiCultureName: string;\r\n displayName: string;\r\n twoLetterISOLanguageName: string;\r\n flagIcon: string;\r\n}\r\n\r\nexport interface Culture {\r\n displayName: string;\r\n // ... other properties\r\n}\r\n\r\nexport interface NameValue {\r\n name: string;\r\n value: string;\r\n}\r\n\r\n// Repeat similar patterns for 'auth', 'setting', 'currentUser', etc.\r\nexport interface Auth {\r\n grantedPolicies: Record<string, boolean>;\r\n}\r\n\r\n// Main configuration interface\r\nexport interface ApplicationConfiguration {\r\n localization: Localization;\r\n auth: Auth;\r\n setting: Record<string, any>;\r\n currentUser: any;\r\n features: Record<string, any>;\r\n globalFeatures: Record<string, any>;\r\n multiTenancy: Record<string, any>;\r\n currentCulture: Culture;\r\n timing: Record<string, any>;\r\n clock: Record<string, any>;\r\n objectExtensions: Record<string, any>;\r\n extraProperties: Record<string, any>;\r\n\r\n // ... other properties\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AXMConfigurationService {\r\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\r\n private applicationConfig: ApplicationConfiguration | null = null;\r\n private apiGetConfig = `${this.configs.baseUrl}/abp/application-configuration`;\r\n private fetchInProgress: boolean = false;\r\n private configSubject: BehaviorSubject<ApplicationConfiguration | null> = new BehaviorSubject<ApplicationConfiguration | null>(null);\r\n\r\n constructor(private http: HttpClient) {\r\n this.init().subscribe(); // Automatically trigger configuration load on service instantiation\r\n }\r\n\r\n public init(): Observable<ApplicationConfiguration> {\r\n if (!this.fetchInProgress) {\r\n this.fetchInProgress = true;\r\n return this.http.get<ApplicationConfiguration>(this.apiGetConfig).pipe(\r\n tap((response) => {\r\n this.applicationConfig = response;\r\n this.configSubject.next(this.applicationConfig);\r\n this.fetchInProgress = false;\r\n })\r\n );\r\n } else {\r\n // Adjusted approach to handle TypeScript's type safety requirements\r\n return this.configSubject.asObservable().pipe(\r\n filter((config): config is ApplicationConfiguration => config !== null),\r\n take(1) // Ensures it completes after emitting the first non-null value\r\n );\r\n }\r\n }\r\n\r\n getConfig(): Observable<ApplicationConfiguration> {\r\n if (this.applicationConfig) {\r\n // If the config is already loaded, return it immediately\r\n return of(this.applicationConfig);\r\n } else {\r\n // If the config is not loaded, initiate loading\r\n return this.configSubject.asObservable().pipe(\r\n filter((config) => config !== null),\r\n take(1), // Ensure it only emits the first non-null value and completes\r\n switchMap(() => of(this.applicationConfig!))\r\n );\r\n }\r\n }\r\n}\r\n","import { AXPFeature, AXPFeatureLoader } from '@acorex/platform/auth';\r\nimport { Observable, delay, of } from 'rxjs';\r\n\r\nexport class AXMOidcFeatureLoader implements AXPFeatureLoader {\r\n\r\n private list: AXPFeature[] = [\r\n {\r\n name: 'axp-entity-list-custom-view',\r\n title: 'Custom View',\r\n value: false\r\n },\r\n {\r\n name: 'axp-entity-list-quick-search',\r\n title: 'Custom View',\r\n value: false\r\n }\r\n ]\r\n\r\n getList(): Observable<AXPFeature[]> {\r\n return of(this.list).pipe(delay(0));\r\n }\r\n}\r\n","import { AXMAuthConfigs, AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';\r\nimport { AXPApplication, AXPTenant } from '@acorex/platform/auth';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { UserManager, WebStorageStateStore } from 'oidc-client-ts';\r\n// Other imports...\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AXMOidcUserManagerService {\r\n private userManager: UserManager;\r\n public selectedTenant: AXPTenant | null = null;\r\n public selectedApplication: AXPApplication | null = null;\r\n\r\n constructor(@Inject(AXM_AUTH_CONFIG_TOKEN) private authConfig: AXMAuthConfigs) {\r\n if (!authConfig.oidc_settings) {\r\n throw new Error('OIDC configuration is missing');\r\n }\r\n\r\n this.userManager = new UserManager({\r\n ...authConfig.oidc_settings,\r\n userStore: new WebStorageStateStore({ store: window.localStorage }),\r\n });\r\n }\r\n\r\n getUserManager(): UserManager {\r\n return this.userManager;\r\n }\r\n\r\n async signinSilentCallback() {\r\n await this.userManager.signinSilentCallback();\r\n }\r\n}\r\n","import { AXPAuthStrategy, AXPBaseCredentials, AXPRefreshTokenResult, AXPSessionContext, AXPSignInResult, AXPUser } from '@acorex/platform/auth';\r\nimport { AXPDataProvider } from '@acorex/platform/common';\r\nimport { Injectable, Injector, inject } from '@angular/core';\r\nimport { UserManager } from 'oidc-client-ts';\r\nimport { AXMOidcUserManagerService } from './usermanager.service';\r\n\r\nexport interface AXPUserPassCredentials extends AXPBaseCredentials {\r\n username: string;\r\n password: string;\r\n}\r\n\r\n@Injectable()\r\nexport class AXMOidcStrategy implements AXPAuthStrategy {\r\n private userManagerService: AXMOidcUserManagerService;\r\n private userManager: UserManager;\r\n private injector: Injector = inject(Injector);\r\n private dataService = inject(AXPDataProvider);\r\n\r\n constructor() {\r\n this.userManagerService = this.injector.get(AXMOidcUserManagerService);\r\n this.userManager = this.userManagerService.getUserManager();\r\n }\r\n\r\n get name(): string {\r\n return 'user-pass';\r\n }\r\n\r\n async signin(credentials: AXPUserPassCredentials): Promise<AXPSignInResult> {\r\n try {\r\n const currentUser = await this.userManager.getUser();\r\n\r\n if (currentUser && !currentUser.expired && currentUser.profile.name === credentials.username) {\r\n const user: AXPUser = {\r\n id: currentUser.profile.sub,\r\n name: currentUser.profile.name ?? credentials.username,\r\n title: currentUser.profile.given_name ?? 'no Name!',\r\n avatar: currentUser.profile.picture,\r\n };\r\n const accessToken = currentUser.access_token;\r\n const refreshToken = currentUser.refresh_token ?? '';\r\n return {\r\n succeed: true,\r\n data: { user, accessToken, refreshToken },\r\n };\r\n }\r\n\r\n await this.userManager.removeUser();\r\n await this.userManager.clearStaleState();\r\n\r\n const oidcUser = await this.userManager.signinSilent({\r\n extraQueryParams: {\r\n username: credentials.username,\r\n password: credentials.password,\r\n },\r\n });\r\n if (oidcUser) {\r\n const profile = oidcUser.profile; // Cast to any to access deeply nested properties\r\n const user: AXPUser = {\r\n id: profile.sub,\r\n name: `${profile.email}`,\r\n title: `${profile.name}`,\r\n avatar: `${profile.picture}`,\r\n };\r\n const accessToken = oidcUser.access_token;\r\n const refreshToken = oidcUser.refresh_token ?? '';\r\n\r\n return {\r\n succeed: true,\r\n data: { user, accessToken, refreshToken },\r\n };\r\n }\r\n\r\n return {\r\n succeed: false,\r\n };\r\n } catch (error: any) {\r\n if (error?.message) throw new Error(error.message);\r\n // Depending on the error type, you might want to throw a specific error\r\n throw new Error('Network or server error occurred');\r\n }\r\n }\r\n\r\n async signout(): Promise<void> {\r\n console.log('User signed out');\r\n this.userManager.removeUser();\r\n this.userManager.clearStaleState();\r\n this.userManager.signoutSilent();\r\n }\r\n\r\n async refreshToken(context: AXPSessionContext): Promise<AXPRefreshTokenResult> {\r\n const user: AXPUser = {\r\n id: '1',\r\n name: 'admin',\r\n title: 'Arash',\r\n avatar: 'https://i.pravatar.cc/150?img=52',\r\n };\r\n\r\n const accessToken = this.generateAccessToken();\r\n const newRefreshToken = this.generateAccessToken();\r\n\r\n return {\r\n succeed: true,\r\n data: { accessToken, refreshToken: newRefreshToken },\r\n };\r\n }\r\n\r\n private generateAccessToken(): string {\r\n return 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ';\r\n }\r\n}\r\n","import { AXPPermission, AXPPermissionLoader, AXPSessionContext } from '@acorex/platform/auth';\r\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Observable, map } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class AXMOidcPermissionLoader implements AXPPermissionLoader {\r\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\r\n private apiGetConfig = `${this.configs.baseUrl}/abp/application-configuration`;\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n getList(context: AXPSessionContext): Observable<AXPPermission[]> {\r\n return this.http.get<{ items: any }>(this.apiGetConfig).pipe(map((response) => this.mapTo(response)));\r\n // if (context.user == null)\r\n // return of([]);\r\n // else if (context.user.name.toLowerCase() == 'admin')\r\n // return of(['axp.admin.console', 'asc.admin.message', 'asc.admin.settings', 'asc.admin.gliding', 'asc.user.gliding']);\r\n // else\r\n // return of(['asc.user.gliding']);\r\n // return of(['axp.admin.console', 'asc.admin.message', 'asc.admin.settings', 'asc.admin.gliding', 'asc.user.gliding']);\r\n }\r\n\r\n mapTo(jsonObj: any): string[] {\r\n const policies = jsonObj.auth.grantedPolicies;\r\n const truePolicies = Object.keys(policies).filter((key) => policies[key] === true);\r\n return truePolicies;\r\n }\r\n}\r\n","import { AXPSessionService } from '@acorex/platform/auth';\r\nimport { Component, OnInit, inject } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { AXMOidcUserManagerService } from './usermanager.service';\r\n\r\n@Component({\r\n template: '',\r\n})\r\nexport class SignincallbackComponent implements OnInit {\r\n private sessionService = inject(AXPSessionService);\r\n constructor(\r\n private userManagerService: AXMOidcUserManagerService,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n\r\n ) { }\r\n\r\n ngOnInit() {\r\n const queryParams = this.route.snapshot.queryParams;\r\n if (queryParams['tenantid']) {\r\n const selectedTenant = {\r\n id: queryParams['tenantid'],\r\n name: queryParams['tenantname'],\r\n title: queryParams['tenanttitle'],\r\n };\r\n this.sessionService.setTenant(selectedTenant);\r\n }\r\n if (queryParams['applicationid']) {\r\n const selectedApplication = {\r\n id: queryParams['applicationid'],\r\n name: queryParams['applicationname'],\r\n title: queryParams['applicationtitle'],\r\n version: '1',\r\n editionName: queryParams['editionname'],\r\n };\r\n this.sessionService.setApplication(selectedApplication);\r\n }\r\n this.userManagerService.signinSilentCallback();\r\n }\r\n}\r\n","import { AXPTenant, AXPTenantLoader } from '@acorex/platform/auth';\r\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Observable, map } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class AXMOidcTenantLoader implements AXPTenantLoader {\r\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\r\n private apiGetTenants = `${this.configs.baseUrl}/user-tenants/Tenants`;\r\n private apiSetTenant = `${this.configs.baseUrl}/SetTenant`;\r\n constructor(private http: HttpClient) { }\r\n\r\n getList(): Observable<AXPTenant[]> {\r\n return this.http.get<{ items: any[] }>(this.apiGetTenants).pipe(map((response) => response.items.map((item) => this.mapToAXPTenant(item))));\r\n }\r\n\r\n async set(tenant: AXPTenant): Promise<void> {\r\n return Promise.resolve();\r\n }\r\n\r\n private mapToAXPTenant(item: any): AXPTenant {\r\n return {\r\n id: item.id,\r\n name: item.name || 'defaultName',\r\n title: item.title || 'defaultTitle',\r\n // Add other fields and defaults as needed, and handle the logo if applicable\r\n };\r\n }\r\n}\r\n","import { AXMAuthModule } from '@acorex/modules/auth';\r\nimport { AXPAuthModule, AXP_APPLICATION_LOADER, AXP_FEATURE_LOADER, AXP_PERMISSION_LOADER, AXP_TENANT_LOADER } from '@acorex/platform/auth';\r\nimport { AXPDataProvider } from '@acorex/platform/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ROUTES, Routes } from '@angular/router';\r\n\r\n//-----------------------------------------------------------------\r\nimport { AXMBackendDataProvider } from './data/api/data-provider';\r\nimport { AXMOidcApplicationLoader, AXMOidcFeatureLoader, AXMOidcPermissionLoader, AXMOidcStrategy, AXMOidcTenantLoader } from './auth/oidc';\r\n//-----------------------------------------------------------------\r\n\r\nimport { SignincallbackComponent } from './auth/oidc/signincallback.component';\r\n\r\nfunction routesFactory() {\r\n const routes: Routes = [{ path: 'auth/signincallback', component: SignincallbackComponent }];\r\n return routes;\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n AXMAuthModule.forRoot(),\r\n AXPAuthModule.forRoot({\r\n strategies: [AXMOidcStrategy],\r\n }),\r\n ],\r\n exports: [],\r\n declarations: [],\r\n providers: [\r\n {\r\n provide: AXPDataProvider,\r\n useClass: AXMBackendDataProvider,\r\n },\r\n {\r\n provide: AXP_TENANT_LOADER,\r\n useClass: AXMOidcTenantLoader,\r\n },\r\n {\r\n provide: AXP_APPLICATION_LOADER,\r\n useClass: AXMOidcApplicationLoader,\r\n },\r\n {\r\n provide: AXP_PERMISSION_LOADER,\r\n useClass: AXMOidcPermissionLoader,\r\n },\r\n {\r\n provide: AXP_FEATURE_LOADER,\r\n useClass: AXMOidcFeatureLoader,\r\n },\r\n {\r\n provide: ROUTES,\r\n multi: true,\r\n useFactory: routesFactory,\r\n },\r\n ],\r\n})\r\nexport class AXMBackendModule { }\r\n","import { AXDataSourceFilterOption } from '@acorex/components/common';\r\nimport { endsWith, every, get, gt, gte, includes, isEmpty, isEqual, lt, lte, orderBy, some, startsWith } from 'lodash-es';\r\n\r\nfunction applyCondition(item: any, condition: any) {\r\n const rawValue = get(item, condition.field);\r\n const itemValue = typeof rawValue === 'string' ? rawValue.toLowerCase() : rawValue;\r\n const conditionValue = typeof condition.value === 'string' ? condition.value.toLowerCase() : condition.value;\r\n\r\n // Logging for debugging\r\n // console.log('Condition:', condition);\r\n // console.log('Item Value:', itemValue);\r\n // console.log('Condition Value:', conditionValue);\r\n\r\n switch (condition.operator.type) {\r\n case 'equal':\r\n return isEqual(itemValue, conditionValue);\r\n case 'notEqual':\r\n return !isEqual(itemValue, conditionValue);\r\n case 'greaterThan':\r\n return gt(itemValue, conditionValue);\r\n case 'lessThan':\r\n return lt(itemValue, conditionValue);\r\n case 'greaterThanOrEqual':\r\n return gte(itemValue, conditionValue);\r\n case 'lessThanOrEqual':\r\n return lte(itemValue, conditionValue);\r\n case 'contains':\r\n if (typeof itemValue === 'string') {\r\n return includes(itemValue, conditionValue);\r\n } else if (Array.isArray(itemValue)) {\r\n return includes(itemValue.map(val => val.toString().toLowerCase()), conditionValue);\r\n }\r\n return false;\r\n case 'notContains':\r\n if (typeof itemValue === 'string') {\r\n return !includes(itemValue, conditionValue);\r\n } else if (Array.isArray(itemValue)) {\r\n return !includes(itemValue.map(val => val.toString().toLowerCase()), conditionValue);\r\n }\r\n return false;\r\n case 'startsWith':\r\n return typeof itemValue === 'string' && startsWith(itemValue, conditionValue);\r\n case 'endsWith':\r\n return typeof itemValue === 'string' && endsWith(itemValue, conditionValue);\r\n case 'isEmpty':\r\n return isEmpty(itemValue);\r\n case 'isNotEmpty':\r\n return !isEmpty(itemValue);\r\n case 'between':\r\n return itemValue >= condition.value.from && itemValue <= condition.value.to;\r\n default:\r\n return true;\r\n }\r\n}\r\n\r\nexport function applyFilterArray(\r\n dataArray: any[],\r\n filters?: AXDataSourceFilterOption[],\r\n logic: 'and' | 'or' = 'and'\r\n): any[] {\r\n if (filters && filters.length) {\r\n return dataArray.filter((item) => {\r\n if (logic === 'and') {\r\n return filters.every((f) => {\r\n return f.filters ? applyFilterArray([item], f.filters, f.logic).length > 0 : applyCondition(item, f);\r\n });\r\n } else {\r\n // logic === 'or'\r\n return filters.some((f) => {\r\n return f.filters ? applyFilterArray([item], f.filters, f.logic).length > 0 : applyCondition(item, f);\r\n });\r\n }\r\n });\r\n } else {\r\n return dataArray;\r\n }\r\n}\r\n\r\n\r\nexport function applySortArray(dataArray: any, sorts: { field: string; dir: 'asc' | 'desc' }[]) {\r\n if (sorts && sorts.length > 0) {\r\n const sortFields = sorts.map((s) => s.field);\r\n const sortOrders = sorts.map((s) => s.dir);\r\n return orderBy(dataArray, sortFields, sortOrders);\r\n } else return dataArray;\r\n}\r\n","import { AXPDataProvider } from '@acorex/platform/common';\r\nimport { AXPStorageMockService } from '@acorex/platform/mocks';\r\nimport { Injectable } from '@angular/core';\r\nimport { applyFilterArray, applySortArray } from './data-Conditioner';\r\nimport { AXPEntityConfig } from '@acorex/platform/common';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AXMLocalDataProvider implements AXPDataProvider {\r\n constructor(private storageService: AXPStorageMockService) { }\r\n\r\n insertOne(entity: AXPEntityConfig, entityItem: any): Promise<any> {\r\n return this.storageService.insertOrupdateOne(entity.name, entityItem);\r\n }\r\n\r\n insertMany(entity: AXPEntityConfig, entityList: any): Promise<any> {\r\n return this.storageService.insertMany(entity.name, entityList);\r\n }\r\n\r\n async getOne(entity: AXPEntityConfig, id: string): Promise<any> {\r\n console.log('@LOACAL getOne', entity.name, id);\r\n return this.storageService.getOne(entity.name, id);\r\n }\r\n\r\n async getMany(entity: AXPEntityConfig, params?: any): Promise<any> {\r\n console.log('@LOACAL getMany', entity.name, params);\r\n const result = await this.storageService.getMany(entity.name, params);\r\n const sortedItems = applySortArray(result, params?.sort);\r\n const filteredItems = applyFilterArray(sortedItems, params?.filter?.filters);\r\n return new Promise((resolve) => {\r\n resolve({\r\n items: params ? filteredItems?.slice(params.skip, (params.skip ?? 0) + (params.take ?? 20)) : filteredItems,\r\n total: filteredItems?.length ?? 0,\r\n });\r\n });\r\n }\r\n\r\n updateOne(entity: AXPEntityConfig, id: string, data: { [key: string]: any }): Promise<any> {\r\n return this.storageService.updateOne(entity.name, id, data);\r\n }\r\n\r\n deleteOne(entity: AXPEntityConfig, id: string): Promise<any> {\r\n return this.storageService.deleteOne(entity.name, id);\r\n }\r\n\r\n getFirst(entity: AXPEntityConfig): Promise<any> {\r\n return this.getMany(entity).then((res) => {\r\n return res.items ? res.items[0] : null;\r\n });\r\n }\r\n\r\n // Mock file uploader function\r\n uploadFile(file: File, title: string): Promise<string> {\r\n return new Promise((resolve) => {\r\n // Mock file ID generation\r\n const fileId = `mock-file-id-${Math.random().toString(36).substr(2, 9)}`;\r\n const fileRecord = { id: fileId, title, file };\r\n this.storageService.insertOrupdateOne('files', fileRecord).then(() => {\r\n resolve(fileId);\r\n });\r\n });\r\n }\r\n\r\n // Mock function to upload multiple files\r\n uploadMultipleFiles(files: File[], title: string): Promise<string[]> {\r\n const uploadPromises = files.map((file) => this.uploadFile(file, title));\r\n return Promise.all(uploadPromises);\r\n }\r\n\r\n // Mock function to view a file\r\n viewFile(id: string, name: string): Promise<Blob> {\r\n return new Promise(async (resolve, reject) => {\r\n const fileRecord = await this.storageService.getOne('files', id);\r\n if (fileRecord && fileRecord.file) {\r\n resolve(fileRecord.file);\r\n } else {\r\n reject('File not found');\r\n }\r\n });\r\n }\r\n\r\n // Mock function to download a file\r\n downloadFile(id: string, name: string): Promise<Blob> {\r\n return this.viewFile(id, name);\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.AXMOidcUserManagerService","i1","i2"],"mappings":";;;;;;;;;;;;;;;;MAQa,sBAAsB,CAAA;AAIjC,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AAH5B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;KAEC;IAExC,SAAS,CAAC,MAAuB,EAAE,UAAe,EAAA;AAChD,QAAA,MAAM,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,OAAO,CAAG,EAAA,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE,CAAI,CAAA,EAAA,MAAM,CAAC,MAAM,CAAI,CAAA,EAAA,MAAM,CAAC,IAAI,EAAE,CAAC;AACrG,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;KACxD;IAED,UAAU,CAAC,MAAuB,EAAE,UAAe,EAAA;QACjD,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAW,KAAI;AAC9C,YAAA,MAAM,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,OAAO,CAAG,EAAA,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE,CAAI,CAAA,EAAA,MAAM,CAAC,MAAM,CAAI,CAAA,EAAA,MAAM,CAAC,IAAI,EAAE,CAAC;AACrG,YAAA,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;AACrD,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KAC9B;IAED,MAAM,CAAC,MAAuB,EAAE,EAAU,EAAA;QACxC,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,CAAA,EAAI,MAAM,CAAC,MAAM,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,EAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,CAAA,CAAE,CAAC;QACnF,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;KAC3C;IAED,OAAO,CAAC,MAAuB,EAAE,MAAY,EAAA;AAC3C,QAAA,IAAI,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC;AAE7H,QAAA,IAAI,MAAM,EAAE,IAAI,IAAI,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3C,YAAA,MAAM,SAAS,GAAG,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAS,KAAK,CAAA,EAAG,IAAI,CAAC,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,GAAG,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzF,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;SACpD;AAED,QAAA,MAAM,iBAAiB,GAAG,CAAC,OAAc,KAAY;AACnD,YAAA,OAAO,OAAO;AACX,iBAAA,GAAG,CAAC,CAAC,CAAM,KAAI;AACd,gBAAA,IAAI,CAAC,CAAC,OAAO,EAAE;AACb,oBAAA,OAAO,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;iBACrC;qBAAM;AACL,oBAAA,OAAO,CAAG,EAAA,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAI,CAAA,EAAA,CAAC,CAAC,KAAK,EAAE,CAAC;iBACnD;AACH,aAAC,CAAC;iBACD,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,SAAC,CAAC;AAEF,QAAA,IAAI,YAAY,GAAG,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC,YAAY,GAAG,EAAE,CAAC;AACnE,QAAA,IAAI,MAAM,EAAE,MAAM,EAAE;AAClB,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7B,YAAA,IAAI,MAAM,CAAC,OAAO,EAAE;;gBAGlB,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACzD,gBAAA,OAAO,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC;;AAGhC,gBAAA,YAAY,GAAG,YAAY,GAAG,CAAG,EAAA,YAAY,CAAI,CAAA,EAAA,cAAc,CAAE,CAAA,GAAG,cAAc,CAAC;aACpF;SACF;;QAED,IAAI,YAAY,EAAE;YAChB,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;SACtD;QAED,SAAS,mBAAmB,CAAC,MAAW,EAAA;AACtC,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;;AAEnB,gBAAA,OAAO,CAAG,EAAA,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAI,CAAA,EAAA,MAAM,CAAC,KAAK,EAAE,CAAC;aAClE;AAAM,iBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;gBACjC,OAAO;aACR;iBAAM;;AAEL,gBAAA,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,SAAc,KAAK,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC7F,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC;gBACpC,OAAO,CAAA,EAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,KAAK,CAAG,CAAA,CAAA,CAAC,EAAE,CAAC;aACpE;SACF;AAED,QAAA,IAAI,WAAW,GAAG,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC,YAAY,GAAG,EAAE,CAAC;AAClE,QAAA,IAAI,MAAM,EAAE,MAAM,EAAE;AAClB,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7B,YAAA,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;;AAG/C,gBAAA,MAAM,cAAc,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBACnD,OAAO,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC,CAAC;;AAGhD,gBAAA,WAAW,GAAG,WAAW,GAAG,CAAG,EAAA,WAAW,CAAI,CAAA,EAAA,cAAc,CAAE,CAAA,GAAG,cAAc,CAAC;aACjF;SACF;;QAED,IAAI,WAAW,EAAE;YACf,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;SACpD;AACD,QAAA,OAAO,cAAc,CACnB,IAAI,CAAC,IAAI,CAAC,GAAG,CACX,CAAG,EAAA,IAAI,CAAC,OAAO,CAAA,EAAG,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE,CAAI,CAAA,EAAA,MAAM,CAAC,MAAM,CAAA,CAAA,EAAI,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAChI,CAAA,EAAA,MAAM,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,EAC7B,CAAA,CAAE,EACF,EAAE,MAAM,EAAE,UAAU,EAAE,CACvB,CACF,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAI;YAClB,OAAO;gBACL,KAAK,EAAE,QAAQ,CAAC,UAAU;gBAC1B,KAAK,EAAE,QAAQ,CAAC,KAAK;aACtB,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,SAAS,CAAC,MAAuB,EAAE,EAAU,EAAE,IAA4B,EAAA;AACzE,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE,CAAI,CAAA,EAAA,MAAM,CAAC,MAAM,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;AAC1H,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;KACjD;IAED,SAAS,CAAC,MAAuB,EAAE,EAAU,EAAA;AAC3C,QAAA,MAAM,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,OAAO,CAAA,EAAG,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE,IAAI,MAAM,CAAC,MAAM,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAI,CAAA,EAAA,EAAE,EAAE,CAAC;QAC3G,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;KAC9C;AAED,IAAA,QAAQ,CAAC,MAAuB,EAAA;;AAE9B,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;KAChD;;IAGD,UAAU,CAAC,IAAU,EAAE,KAAa,EAAA;AAClC,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,eAAe,CAAC;AAC3C,QAAA,MAAM,QAAQ,GAAa,IAAI,QAAQ,EAAE,CAAC;AAC1C,QAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC9B,QAAA,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAEhC,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAS,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;KAC9D;;IAGD,mBAAmB,CAAC,KAAa,EAAE,KAAa,EAAA;QAC9C,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACzE,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;KACpC;;IAGD,QAAQ,CAAC,EAAU,EAAE,IAAY,EAAA;QAC/B,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,cAAA,EAAiB,EAAE,CAAA,MAAA,EAAS,IAAI,CAAA,CAAE,CAAC;AAC9D,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;KACrE;;IAGD,YAAY,CAAC,EAAU,EAAE,IAAY,EAAA;QACnC,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,cAAA,EAAiB,EAAE,CAAA,UAAA,EAAa,IAAI,CAAA,CAAE,CAAC;AAClE,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;KACrE;8GArJU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cAFrB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCAY,wBAAwB,CAAA;AAInC,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AAH5B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACxC,IAAU,CAAA,UAAA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,iCAAiC,CAAC;QACtE,IAAS,CAAA,SAAA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,iBAAiB,CAAC;KACpB;IAGzC,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAmB,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAC1D,GAAG,CAAC,CAAC,QAAQ,KAAI;AACf,YAAA,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;SACrE,CAAC,CACH,CAAC;KACH;AAED,IAAA,GAAG,CAAC,WAA2B,EAAA;AAC7B,QAAA,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;KAC1B;;;;;;;;;;;;;;;AAiBO,IAAA,mBAAmB,CAAC,IAAS,EAAA;QACnC,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;AACX,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,aAAa;AAChC,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,cAAc;AACnC,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,OAAO;YAChC,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;;SAE9B,CAAC;KACH;8GA7CU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAxB,wBAAwB,EAAA,CAAA,CAAA,EAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;;;MC2DE,uBAAuB,CAAA;AAOlC,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AAN5B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACxC,IAAiB,CAAA,iBAAA,GAAoC,IAAI,CAAC;QAC1D,IAAY,CAAA,YAAA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,gCAAgC,CAAC;QACvE,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;AACjC,QAAA,IAAA,CAAA,aAAa,GAAqD,IAAI,eAAe,CAAkC,IAAI,CAAC,CAAC;QAGnI,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;KACzB;IAEM,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACzB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC5B,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAA2B,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CACpE,GAAG,CAAC,CAAC,QAAQ,KAAI;AACf,gBAAA,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC;gBAClC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAChD,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;aAC9B,CAAC,CACH,CAAC;SACH;aAAM;;YAEL,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,IAAI,CAC3C,MAAM,CAAC,CAAC,MAAM,KAAyC,MAAM,KAAK,IAAI,CAAC,EACvE,IAAI,CAAC,CAAC,CAAC;aACR,CAAC;SACH;KACF;IAED,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;;AAE1B,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SACnC;aAAM;;YAEL,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,IAAI,CAC3C,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,KAAK,IAAI,CAAC,EACnC,IAAI,CAAC,CAAC,CAAC;AACP,YAAA,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,iBAAkB,CAAC,CAAC,CAC7C,CAAC;SACH;KACF;8GA1CU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MC7DY,oBAAoB,CAAA;AAAjC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,IAAI,GAAiB;AAC3B,YAAA;AACE,gBAAA,IAAI,EAAE,6BAA6B;AACnC,gBAAA,KAAK,EAAE,aAAa;AACpB,gBAAA,KAAK,EAAE,KAAK;AACb,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,8BAA8B;AACpC,gBAAA,KAAK,EAAE,aAAa;AACpB,gBAAA,KAAK,EAAE,KAAK;AACb,aAAA;SACF,CAAA;KAKF;IAHC,OAAO,GAAA;AACL,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KACrC;AACF;;ACjBD;MAKa,yBAAyB,CAAA;AAKpC,IAAA,WAAA,CAAmD,UAA0B,EAAA;QAA1B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAgB;QAHtE,IAAc,CAAA,cAAA,GAAqB,IAAI,CAAC;QACxC,IAAmB,CAAA,mBAAA,GAA0B,IAAI,CAAC;AAGvD,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;AAC7B,YAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;SAClD;AAED,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC;YACjC,GAAG,UAAU,CAAC,aAAa;YAC3B,SAAS,EAAE,IAAI,oBAAoB,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;AACpE,SAAA,CAAC,CAAC;KACJ;IAED,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;AAED,IAAA,MAAM,oBAAoB,GAAA;AACxB,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAC;KAC/C;AAtBU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,kBAKhB,qBAAqB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAL9B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cAFxB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;0BAMc,MAAM;2BAAC,qBAAqB,CAAA;;;MCF9B,eAAe,CAAA;AAM1B,IAAA,WAAA,GAAA;AAHQ,QAAA,IAAA,CAAA,QAAQ,GAAa,MAAM,CAAC,QAAQ,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;QAG5C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,CAAC;KAC7D;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,WAAW,CAAC;KACpB;IAED,MAAM,MAAM,CAAC,WAAmC,EAAA;AAC9C,QAAA,IAAI;YACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AAErD,YAAA,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,QAAQ,EAAE;AAC5F,gBAAA,MAAM,IAAI,GAAY;AACpB,oBAAA,EAAE,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG;oBAC3B,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC,QAAQ;AACtD,oBAAA,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,UAAU,IAAI,UAAU;AACnD,oBAAA,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO;iBACpC,CAAC;AACF,gBAAA,MAAM,WAAW,GAAG,WAAW,CAAC,YAAY,CAAC;AAC7C,gBAAA,MAAM,YAAY,GAAG,WAAW,CAAC,aAAa,IAAI,EAAE,CAAC;gBACrD,OAAO;AACL,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE;iBAC1C,CAAC;aACH;AAED,YAAA,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;AACpC,YAAA,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;YAEzC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;AACnD,gBAAA,gBAAgB,EAAE;oBAChB,QAAQ,EAAE,WAAW,CAAC,QAAQ;oBAC9B,QAAQ,EAAE,WAAW,CAAC,QAAQ;AAC/B,iBAAA;AACF,aAAA,CAAC,CAAC;YACH,IAAI,QAAQ,EAAE;AACZ,gBAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;AACjC,gBAAA,MAAM,IAAI,GAAY;oBACpB,EAAE,EAAE,OAAO,CAAC,GAAG;AACf,oBAAA,IAAI,EAAE,CAAA,EAAG,OAAO,CAAC,KAAK,CAAE,CAAA;AACxB,oBAAA,KAAK,EAAE,CAAA,EAAG,OAAO,CAAC,IAAI,CAAE,CAAA;AACxB,oBAAA,MAAM,EAAE,CAAA,EAAG,OAAO,CAAC,OAAO,CAAE,CAAA;iBAC7B,CAAC;AACF,gBAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC;AAC1C,gBAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC;gBAElD,OAAO;AACL,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE;iBAC1C,CAAC;aACH;YAED,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;aACf,CAAC;SACH;QAAC,OAAO,KAAU,EAAE;YACnB,IAAI,KAAK,EAAE,OAAO;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;;AAEnD,YAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;SACrD;KACF;AAED,IAAA,MAAM,OAAO,GAAA;AACX,QAAA,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;KAClC;IAED,MAAM,YAAY,CAAC,OAA0B,EAAA;AAC3C,QAAA,MAAM,IAAI,GAAY;AACpB,YAAA,EAAE,EAAE,GAAG;AACP,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,MAAM,EAAE,kCAAkC;SAC3C,CAAC;AAEF,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC/C,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEnD,OAAO;AACL,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,IAAI,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE;SACrD,CAAC;KACH;IAEO,mBAAmB,GAAA;AACzB,QAAA,OAAO,mYAAmY,CAAC;KAC5Y;8GAhGU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAf,eAAe,EAAA,CAAA,CAAA,EAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;;MCJE,uBAAuB,CAAA;AAIlC,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AAH5B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACxC,IAAY,CAAA,YAAA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,gCAAgC,CAAC;KAEvC;AAExC,IAAA,OAAO,CAAC,OAA0B,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAiB,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;;;;;;;;KAQvG;AAED,IAAA,KAAK,CAAC,OAAY,EAAA;AAChB,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;QAC9C,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;AACnF,QAAA,OAAO,YAAY,CAAC;KACrB;8GArBU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAvB,uBAAuB,EAAA,CAAA,CAAA,EAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;;;MCEE,uBAAuB,CAAA;AAElC,IAAA,WAAA,CACU,kBAA6C,EAC7C,MAAc,EACd,KAAqB,EAAA;QAFrB,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAA2B;QAC7C,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AAJvB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;KAM9C;IAEL,QAAQ,GAAA;QACN,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;AACpD,QAAA,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE;AAC3B,YAAA,MAAM,cAAc,GAAG;AACrB,gBAAA,EAAE,EAAE,WAAW,CAAC,UAAU,CAAC;AAC3B,gBAAA,IAAI,EAAE,WAAW,CAAC,YAAY,CAAC;AAC/B,gBAAA,KAAK,EAAE,WAAW,CAAC,aAAa,CAAC;aAClC,CAAC;AACF,YAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;SAC/C;AACD,QAAA,IAAI,WAAW,CAAC,eAAe,CAAC,EAAE;AAChC,YAAA,MAAM,mBAAmB,GAAG;AAC1B,gBAAA,EAAE,EAAE,WAAW,CAAC,eAAe,CAAC;AAChC,gBAAA,IAAI,EAAE,WAAW,CAAC,iBAAiB,CAAC;AACpC,gBAAA,KAAK,EAAE,WAAW,CAAC,kBAAkB,CAAC;AACtC,gBAAA,OAAO,EAAE,GAAG;AACZ,gBAAA,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC;aACxC,CAAC;AACF,YAAA,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;SACzD;AACD,QAAA,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,CAAC;KAChD;8GA9BU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,oDAFxB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAED,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,EAAE;AACb,iBAAA,CAAA;;;MCAY,mBAAmB,CAAA;AAI9B,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AAH5B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACxC,IAAa,CAAA,aAAA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,uBAAuB,CAAC;QAC/D,IAAY,CAAA,YAAA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,YAAY,CAAC;KAClB;IAEzC,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAmB,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7I;IAED,MAAM,GAAG,CAAC,MAAiB,EAAA;AACzB,QAAA,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;KAC1B;AAEO,IAAA,cAAc,CAAC,IAAS,EAAA;QAC9B,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;AACX,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,aAAa;AAChC,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,cAAc;;SAEpC,CAAC;KACH;8GArBU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAnB,mBAAmB,EAAA,CAAA,CAAA,EAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;ACOX,SAAS,aAAa,GAAA;AACpB,IAAA,MAAM,MAAM,GAAW,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC,CAAC;AAC7F,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;MAuCY,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAhB,gBAAgB,EAAA,OAAA,EAAA,CAAAC,IAAA,CAAA,aAAA,EAAAC,IAAA,CAAA,aAAA,CAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EA5BhB,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,QAAQ,EAAE,sBAAsB;AACjC,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,QAAQ,EAAE,mBAAmB;AAC9B,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,sBAAsB;AAC/B,gBAAA,QAAQ,EAAE,wBAAwB;AACnC,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,qBAAqB;AAC9B,gBAAA,QAAQ,EAAE,uBAAuB;AAClC,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,kBAAkB;AAC3B,gBAAA,QAAQ,EAAE,oBAAoB;AAC/B,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,UAAU,EAAE,aAAa;AAC1B,aAAA;SACF,EAjCC,OAAA,EAAA,CAAA,aAAa,CAAC,OAAO,EAAE;YACvB,aAAa,CAAC,OAAO,CAAC;gBACpB,UAAU,EAAE,CAAC,eAAe,CAAC;aAC9B,CAAC,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAgCO,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBArC5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,aAAa,CAAC,OAAO,EAAE;wBACvB,aAAa,CAAC,OAAO,CAAC;4BACpB,UAAU,EAAE,CAAC,eAAe,CAAC;yBAC9B,CAAC;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,eAAe;AACxB,4BAAA,QAAQ,EAAE,sBAAsB;AACjC,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,QAAQ,EAAE,mBAAmB;AAC9B,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,sBAAsB;AAC/B,4BAAA,QAAQ,EAAE,wBAAwB;AACnC,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,qBAAqB;AAC9B,4BAAA,QAAQ,EAAE,uBAAuB;AAClC,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,kBAAkB;AAC3B,4BAAA,QAAQ,EAAE,oBAAoB;AAC/B,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,MAAM;AACf,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,UAAU,EAAE,aAAa;AAC1B,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAA;;;ACnDD,SAAS,cAAc,CAAC,IAAS,EAAE,SAAc,EAAA;IAC/C,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;AAC5C,IAAA,MAAM,SAAS,GAAG,OAAO,QAAQ,KAAK,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC;IACnF,MAAM,cAAc,GAAG,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC;;;;;AAO7G,IAAA,QAAQ,SAAS,CAAC,QAAQ,CAAC,IAAI;AAC7B,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AAC5C,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AAC7C,QAAA,KAAK,aAAa;AAChB,YAAA,OAAO,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AACvC,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AACvC,QAAA,KAAK,oBAAoB;AACvB,YAAA,OAAO,GAAG,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AACxC,QAAA,KAAK,iBAAiB;AACpB,YAAA,OAAO,GAAG,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AACxC,QAAA,KAAK,UAAU;AACb,YAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;AACjC,gBAAA,OAAO,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;aAC5C;AAAM,iBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBACnC,OAAO,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;aACrF;AACD,YAAA,OAAO,KAAK,CAAC;AACf,QAAA,KAAK,aAAa;AAChB,YAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;AACjC,gBAAA,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;aAC7C;AAAM,iBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;aACtF;AACD,YAAA,OAAO,KAAK,CAAC;AACf,QAAA,KAAK,YAAY;YACf,OAAO,OAAO,SAAS,KAAK,QAAQ,IAAI,UAAU,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AAChF,QAAA,KAAK,UAAU;YACb,OAAO,OAAO,SAAS,KAAK,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AAC9E,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;AAC5B,QAAA,KAAK,YAAY;AACf,YAAA,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAC7B,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;AAC9E,QAAA;AACE,YAAA,OAAO,IAAI,CAAC;KACf;AACH,CAAC;AAEK,SAAU,gBAAgB,CAC9B,SAAgB,EAChB,OAAoC,EACpC,QAAsB,KAAK,EAAA;AAE3B,IAAA,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;AAC7B,QAAA,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,KAAI;AAC/B,YAAA,IAAI,KAAK,KAAK,KAAK,EAAE;AACnB,gBAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAI;AACzB,oBAAA,OAAO,CAAC,CAAC,OAAO,GAAG,gBAAgB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACvG,iBAAC,CAAC,CAAC;aACJ;iBAAM;;AAEL,gBAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;AACxB,oBAAA,OAAO,CAAC,CAAC,OAAO,GAAG,gBAAgB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACvG,iBAAC,CAAC,CAAC;aACJ;AACH,SAAC,CAAC,CAAC;KACJ;SAAM;AACL,QAAA,OAAO,SAAS,CAAC;KAClB;AACH,CAAC;AAGe,SAAA,cAAc,CAAC,SAAc,EAAE,KAA+C,EAAA;IAC5F,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;AAC7C,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3C,OAAO,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;KACnD;;AAAM,QAAA,OAAO,SAAS,CAAC;AAC1B;;MC5Ea,oBAAoB,CAAA;AAC/B,IAAA,WAAA,CAAoB,cAAqC,EAAA;QAArC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAuB;KAAK;IAE9D,SAAS,CAAC,MAAuB,EAAE,UAAe,EAAA;AAChD,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;KACvE;IAED,UAAU,CAAC,MAAuB,EAAE,UAAe,EAAA;AACjD,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;KAChE;AAED,IAAA,MAAM,MAAM,CAAC,MAAuB,EAAE,EAAU,EAAA;QAC9C,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC/C,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;KACpD;AAED,IAAA,MAAM,OAAO,CAAC,MAAuB,EAAE,MAAY,EAAA;QACjD,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACpD,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtE,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACzD,QAAA,MAAM,aAAa,GAAG,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAC7E,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;AAC7B,YAAA,OAAO,CAAC;AACN,gBAAA,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,aAAa;AAC3G,gBAAA,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAClC,aAAA,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,SAAS,CAAC,MAAuB,EAAE,EAAU,EAAE,IAA4B,EAAA;AACzE,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;KAC7D;IAED,SAAS,CAAC,MAAuB,EAAE,EAAU,EAAA;AAC3C,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;KACvD;AAED,IAAA,QAAQ,CAAC,MAAuB,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAI;AACvC,YAAA,OAAO,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACzC,SAAC,CAAC,CAAC;KACJ;;IAGD,UAAU,CAAC,IAAU,EAAE,KAAa,EAAA;AAClC,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;;YAE7B,MAAM,MAAM,GAAG,CAAgB,aAAA,EAAA,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACzE,MAAM,UAAU,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC/C,YAAA,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,MAAK;gBACnE,OAAO,CAAC,MAAM,CAAC,CAAC;AAClB,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;;IAGD,mBAAmB,CAAC,KAAa,EAAE,KAAa,EAAA;QAC9C,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACzE,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;KACpC;;IAGD,QAAQ,CAAC,EAAU,EAAE,IAAY,EAAA;QAC/B,OAAO,IAAI,OAAO,CAAC,OAAO,OAAO,EAAE,MAAM,KAAI;AAC3C,YAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACjE,YAAA,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE;AACjC,gBAAA,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aAC1B;iBAAM;gBACL,MAAM,CAAC,gBAAgB,CAAC,CAAC;aAC1B;AACH,SAAC,CAAC,CAAC;KACJ;;IAGD,YAAY,CAAC,EAAU,EAAE,IAAY,EAAA;QACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;KAChC;8GA5EU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACRD;;AAEG;;;;"}
|
1
|
+
{"version":3,"file":"acorex-modules-backend.mjs","sources":["../../../../libs/modules/backend/src/lib/data/api/data-provider.ts","../../../../libs/modules/backend/src/lib/auth/oidc/application.loader.ts","../../../../libs/modules/backend/src/lib/auth/oidc/configuration.service.ts","../../../../libs/modules/backend/src/lib/auth/oidc/feature.loader.ts","../../../../libs/modules/backend/src/lib/auth/oidc/usermanager.service.ts","../../../../libs/modules/backend/src/lib/auth/oidc/oidc.strategy.ts","../../../../libs/modules/backend/src/lib/auth/oidc/permission.loader.ts","../../../../libs/modules/backend/src/lib/auth/oidc/signincallback.component.ts","../../../../libs/modules/backend/src/lib/auth/oidc/tenant.loader.ts","../../../../libs/modules/backend/src/lib/backend.module.ts","../../../../libs/modules/backend/src/lib/data/local/data-Conditioner.ts","../../../../libs/modules/backend/src/lib/data/local/local-data-provider.ts","../../../../libs/modules/backend/src/acorex-modules-backend.ts"],"sourcesContent":["import { AXPDataProvider, AXPEntityConfig, AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { firstValueFrom } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AXMBackendDataProvider implements AXPDataProvider {\r\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\r\n private mainUrl = this.configs.baseUrl;\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n insertOne(entity: AXPEntityConfig, entityItem: any): Promise<any> {\r\n const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}`;\r\n return firstValueFrom(this.http.post(url, entityItem));\r\n }\r\n\r\n insertMany(entity: AXPEntityConfig, entityList: any): Promise<any> {\r\n const promises = entityList.map((entity: any) => {\r\n const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}`;\r\n return firstValueFrom(this.http.post(url, entity));\r\n });\r\n return Promise.all(promises);\r\n }\r\n\r\n getOne(entity: AXPEntityConfig, id: string): Promise<any> {\r\n const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}${id ? '/' + id : ''}`;\r\n return firstValueFrom(this.http.get(url));\r\n }\r\n\r\n getMany(entity: AXPEntityConfig, params?: any): Promise<any> {\r\n let httpParams = new HttpParams().set('Skip', params?.skip?.toString() ?? '0').set('Take', params?.take?.toString() ?? '10');\r\n\r\n if (params?.sort && params?.sort.length > 0) {\r\n const sortParam = params?.sort.map((sort: any) => `${sort.field}:${sort.dir}`).join(',');\r\n httpParams = httpParams.set('$orderby', sortParam);\r\n }\r\n\r\n const buildFilterString = (filters: any[]): string => {\r\n return filters\r\n .map((f: any) => {\r\n if (f.filters) {\r\n return buildFilterString(f.filters);\r\n } else {\r\n return `${f.field} ${f.operator.type} ${f.value}`;\r\n }\r\n })\r\n .join(',');\r\n };\r\n\r\n let filterString = params?.customFilter ? params.customFilter : '';\r\n if (params?.filter) {\r\n const filter = params.filter;\r\n if (filter.filters) {\r\n // Construct filter string from provided filters\r\n\r\n const dynamicFilters = buildFilterString(filter.filters);\r\n console.log({ dynamicFilters });\r\n\r\n // Append dynamic filters to custom filter, if both exist\r\n filterString = filterString ? `${filterString},${dynamicFilters}` : dynamicFilters;\r\n }\r\n }\r\n // Set the $filter parameter if there are any filters\r\n console.log(filterString);\r\n if (filterString) {\r\n httpParams = httpParams.set('$filter', filterString);\r\n }\r\n\r\n function generateQueryString(filter: any) {\r\n if (!filter.filters) {\r\n // Base case: single filter\r\n return `${filter.field} ${filter.operator.type} ${filter.value}`;\r\n } else if (!filter.filters.length) {\r\n return;\r\n } else {\r\n // Recursive case: multiple filters\r\n const filterStrings = filter.filters.map((subFilter: any) => generateQueryString(subFilter));\r\n const logic = filter.logic || 'AND'; // Default logic is 'AND' if not provided\r\n return `${filterStrings.filter((i: any) => i).join(` ${logic} `)}`;\r\n }\r\n }\r\n\r\n let queryString = params?.customFilter ? params.customFilter : '';\r\n if (params?.filter) {\r\n const filter = params.filter;\r\n if (filter.filters && filter.filters.length > 0) {\r\n // Construct filter string from provided filters\r\n\r\n const dynamicQueries = generateQueryString(filter);\r\n console.log({ dynamicQueries: dynamicQueries });\r\n\r\n // Append dynamic filters to custom filter, if both exist\r\n queryString = queryString ? `${queryString},${dynamicQueries}` : dynamicQueries;\r\n }\r\n }\r\n // Set the $filter parameter if there are any filters\r\n if (queryString) {\r\n httpParams = httpParams.set('$query', queryString);\r\n }\r\n return firstValueFrom(\r\n this.http.get<any>(\r\n `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${params.costumGetter ? params.costumGetter : entity.name}/${\r\n params?.sub ? params.sub : ''\r\n }`,\r\n { params: httpParams }\r\n )\r\n ).then((response) => {\r\n return {\r\n total: response.totalCount,\r\n items: response.items,\r\n };\r\n });\r\n }\r\n\r\n updateOne(entity: AXPEntityConfig, id?: string, data?: { [key: string]: any }): Promise<any> {\r\n const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}${id ? '/' + id : ''}`;\r\n return firstValueFrom(this.http.put(url, data));\r\n }\r\n\r\n deleteOne(entity: AXPEntityConfig, id: string): Promise<any> {\r\n const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}/${id}`;\r\n return firstValueFrom(this.http.delete(url));\r\n }\r\n\r\n getFirst(entity: AXPEntityConfig): Promise<any> {\r\n // return this.getMany(entity.name).then((res) => res.items[0]);\r\n return new Promise((resolve) => resolve(true));\r\n }\r\n\r\n // File uploader function\r\n uploadFile(file: File, title: string): Promise<string> {\r\n const url = `${this.mainUrl}/common/files`;\r\n const formData: FormData = new FormData();\r\n formData.append('File', file);\r\n formData.append('Title', title);\r\n\r\n return firstValueFrom(this.http.post<string>(url, formData));\r\n }\r\n\r\n // Function to upload multiple files\r\n uploadMultipleFiles(files: File[], title: string): Promise<string[]> {\r\n const uploadPromises = files.map((file) => this.uploadFile(file, title));\r\n return Promise.all(uploadPromises);\r\n }\r\n\r\n // Function to view a file\r\n viewFile(id: string, name: string): Promise<Blob> {\r\n const url = `${this.mainUrl}/common/files/${id}/View/${name}`;\r\n return firstValueFrom(this.http.get(url, { responseType: 'blob' }));\r\n }\r\n\r\n // Function to download a file\r\n downloadFile(id: string, name: string): Promise<Blob> {\r\n const url = `${this.mainUrl}/common/files/${id}/Download/${name}`;\r\n return firstValueFrom(this.http.get(url, { responseType: 'blob' }));\r\n }\r\n}\r\n","import { AXPApplication, AXPApplicationLoader, AXPRefreshTokenResult } from '@acorex/platform/auth';\r\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Observable, map } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class AXMOidcApplicationLoader implements AXPApplicationLoader {\r\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\r\n private apiGetApps = `${this.configs.baseUrl}/applications/GetListByTenantId`;\r\n private apiSetApp = `${this.configs.baseUrl}/SetApplication`;\r\n constructor(private http: HttpClient) { }\r\n\r\n\r\n getList(): Observable<AXPApplication[]> {\r\n return this.http.get<{ items: any[] }>(this.apiGetApps).pipe(\r\n map((response) => {\r\n return response.items.map((item) => this.mapToAXPApplication(item));\r\n })\r\n );\r\n }\r\n\r\n set(application: AXPApplication): Promise<void> {\r\n return Promise.resolve();\r\n }\r\n\r\n // //TODO: shoud be removed\r\n // set(application: AXPApplication): Observable<AXPRefreshTokenResult> {\r\n // return this.http.post<any>(this.apiSetApp, { applicationId: application.id }).pipe(\r\n // map((response) => {\r\n // return {\r\n // succeed: true,\r\n // data: {\r\n // accessToken: response.token,\r\n // refreshToken: response.token,\r\n // }\r\n // };\r\n // })\r\n // );\r\n // }\r\n\r\n private mapToAXPApplication(item: any): AXPApplication {\r\n return {\r\n id: item.id,\r\n name: item.name || 'defaultName',\r\n title: item.title || 'defaultTitle',\r\n version: item.version || '1.0.0',\r\n description: item.description,\r\n logo: item.logo, // Assuming logo is of type AXPLogoConfig or undefined\r\n editionName: item.editionName,\r\n // features: item.features || [],\r\n };\r\n }\r\n}\r\n","import { AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';\r\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { BehaviorSubject, Observable, filter, of, switchMap, take, tap } from 'rxjs';\r\n\r\nexport interface Localization {\r\n values: Record<string, Record<string, string>>;\r\n resources: Record<string, Resource>;\r\n languages: Language[];\r\n currentCulture: Culture;\r\n defaultResourceName: string;\r\n languagesMap: Record<string, NameValue[]>;\r\n languageFilesMap: Record<string, NameValue[]>;\r\n}\r\n\r\nexport interface Resource {\r\n texts: Record<string, string>;\r\n baseResources: string[];\r\n}\r\n\r\nexport interface Language {\r\n cultureName: string;\r\n uiCultureName: string;\r\n displayName: string;\r\n twoLetterISOLanguageName: string;\r\n flagIcon: string;\r\n}\r\n\r\nexport interface Culture {\r\n displayName: string;\r\n // ... other properties\r\n}\r\n\r\nexport interface NameValue {\r\n name: string;\r\n value: string;\r\n}\r\n\r\n// Repeat similar patterns for 'auth', 'setting', 'currentUser', etc.\r\nexport interface Auth {\r\n grantedPolicies: Record<string, boolean>;\r\n}\r\n\r\n// Main configuration interface\r\nexport interface ApplicationConfiguration {\r\n localization: Localization;\r\n auth: Auth;\r\n setting: Record<string, any>;\r\n currentUser: any;\r\n features: Record<string, any>;\r\n globalFeatures: Record<string, any>;\r\n multiTenancy: Record<string, any>;\r\n currentCulture: Culture;\r\n timing: Record<string, any>;\r\n clock: Record<string, any>;\r\n objectExtensions: Record<string, any>;\r\n extraProperties: Record<string, any>;\r\n\r\n // ... other properties\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AXMConfigurationService {\r\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\r\n private applicationConfig: ApplicationConfiguration | null = null;\r\n private apiGetConfig = `${this.configs.baseUrl}/abp/application-configuration`;\r\n private fetchInProgress: boolean = false;\r\n private configSubject: BehaviorSubject<ApplicationConfiguration | null> = new BehaviorSubject<ApplicationConfiguration | null>(null);\r\n\r\n constructor(private http: HttpClient) {\r\n this.init().subscribe(); // Automatically trigger configuration load on service instantiation\r\n }\r\n\r\n public init(): Observable<ApplicationConfiguration> {\r\n if (!this.fetchInProgress) {\r\n this.fetchInProgress = true;\r\n return this.http.get<ApplicationConfiguration>(this.apiGetConfig).pipe(\r\n tap((response) => {\r\n this.applicationConfig = response;\r\n this.configSubject.next(this.applicationConfig);\r\n this.fetchInProgress = false;\r\n })\r\n );\r\n } else {\r\n // Adjusted approach to handle TypeScript's type safety requirements\r\n return this.configSubject.asObservable().pipe(\r\n filter((config): config is ApplicationConfiguration => config !== null),\r\n take(1) // Ensures it completes after emitting the first non-null value\r\n );\r\n }\r\n }\r\n\r\n getConfig(): Observable<ApplicationConfiguration> {\r\n if (this.applicationConfig) {\r\n // If the config is already loaded, return it immediately\r\n return of(this.applicationConfig);\r\n } else {\r\n // If the config is not loaded, initiate loading\r\n return this.configSubject.asObservable().pipe(\r\n filter((config) => config !== null),\r\n take(1), // Ensure it only emits the first non-null value and completes\r\n switchMap(() => of(this.applicationConfig!))\r\n );\r\n }\r\n }\r\n}\r\n","import { AXPFeature, AXPFeatureLoader } from '@acorex/platform/auth';\r\nimport { Observable, delay, of } from 'rxjs';\r\n\r\nexport class AXMOidcFeatureLoader implements AXPFeatureLoader {\r\n\r\n private list: AXPFeature[] = [\r\n {\r\n name: 'axp-entity-list-custom-view',\r\n title: 'Custom View',\r\n value: false\r\n },\r\n {\r\n name: 'axp-entity-list-quick-search',\r\n title: 'Custom View',\r\n value: false\r\n }\r\n ]\r\n\r\n getList(): Observable<AXPFeature[]> {\r\n return of(this.list).pipe(delay(0));\r\n }\r\n}\r\n","import { AXMAuthConfigs, AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';\r\nimport { AXPApplication, AXPTenant } from '@acorex/platform/auth';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { UserManager, WebStorageStateStore } from 'oidc-client-ts';\r\n// Other imports...\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AXMOidcUserManagerService {\r\n private userManager: UserManager;\r\n public selectedTenant: AXPTenant | null = null;\r\n public selectedApplication: AXPApplication | null = null;\r\n\r\n constructor(@Inject(AXM_AUTH_CONFIG_TOKEN) private authConfig: AXMAuthConfigs) {\r\n if (!authConfig.oidc_settings) {\r\n throw new Error('OIDC configuration is missing');\r\n }\r\n\r\n this.userManager = new UserManager({\r\n ...authConfig.oidc_settings,\r\n userStore: new WebStorageStateStore({ store: window.localStorage }),\r\n });\r\n }\r\n\r\n getUserManager(): UserManager {\r\n return this.userManager;\r\n }\r\n\r\n async signinSilentCallback() {\r\n await this.userManager.signinSilentCallback();\r\n }\r\n}\r\n","import { AXPAuthStrategy, AXPBaseCredentials, AXPRefreshTokenResult, AXPSessionContext, AXPSignInResult, AXPUser } from '@acorex/platform/auth';\r\nimport { AXPDataProvider } from '@acorex/platform/common';\r\nimport { Injectable, Injector, inject } from '@angular/core';\r\nimport { UserManager } from 'oidc-client-ts';\r\nimport { AXMOidcUserManagerService } from './usermanager.service';\r\n\r\nexport interface AXPUserPassCredentials extends AXPBaseCredentials {\r\n username: string;\r\n password: string;\r\n}\r\n\r\n@Injectable()\r\nexport class AXMOidcStrategy implements AXPAuthStrategy {\r\n private userManagerService: AXMOidcUserManagerService;\r\n private userManager: UserManager;\r\n private injector: Injector = inject(Injector);\r\n private dataService = inject(AXPDataProvider);\r\n\r\n constructor() {\r\n this.userManagerService = this.injector.get(AXMOidcUserManagerService);\r\n this.userManager = this.userManagerService.getUserManager();\r\n }\r\n\r\n get name(): string {\r\n return 'user-pass';\r\n }\r\n\r\n async signin(credentials: AXPUserPassCredentials): Promise<AXPSignInResult> {\r\n try {\r\n const currentUser = await this.userManager.getUser();\r\n\r\n if (currentUser && !currentUser.expired && currentUser.profile.name === credentials.username) {\r\n const user: AXPUser = {\r\n id: currentUser.profile.sub,\r\n name: currentUser.profile.name ?? credentials.username,\r\n title: currentUser.profile.given_name ?? 'no Name!',\r\n avatar: currentUser.profile.picture,\r\n };\r\n const accessToken = currentUser.access_token;\r\n const refreshToken = currentUser.refresh_token ?? '';\r\n return {\r\n succeed: true,\r\n data: { user, accessToken, refreshToken },\r\n };\r\n }\r\n\r\n await this.userManager.removeUser();\r\n await this.userManager.clearStaleState();\r\n\r\n const oidcUser = await this.userManager.signinSilent({\r\n extraQueryParams: {\r\n username: credentials.username,\r\n password: credentials.password,\r\n },\r\n });\r\n if (oidcUser) {\r\n const profile = oidcUser.profile; // Cast to any to access deeply nested properties\r\n const user: AXPUser = {\r\n id: profile.sub,\r\n name: `${profile.email}`,\r\n title: `${profile.name}`,\r\n avatar: `${profile.picture}`,\r\n };\r\n const accessToken = oidcUser.access_token;\r\n const refreshToken = oidcUser.refresh_token ?? '';\r\n\r\n return {\r\n succeed: true,\r\n data: { user, accessToken, refreshToken },\r\n };\r\n }\r\n\r\n return {\r\n succeed: false,\r\n };\r\n } catch (error: any) {\r\n if (error?.message) throw new Error(error.message);\r\n // Depending on the error type, you might want to throw a specific error\r\n throw new Error('Network or server error occurred');\r\n }\r\n }\r\n\r\n async signout(): Promise<void> {\r\n console.log('User signed out');\r\n this.userManager.removeUser();\r\n this.userManager.clearStaleState();\r\n this.userManager.signoutSilent();\r\n }\r\n\r\n async refreshToken(context: AXPSessionContext): Promise<AXPRefreshTokenResult> {\r\n const user: AXPUser = {\r\n id: '1',\r\n name: 'admin',\r\n title: 'Arash',\r\n avatar: 'https://i.pravatar.cc/150?img=52',\r\n };\r\n\r\n const accessToken = this.generateAccessToken();\r\n const newRefreshToken = this.generateAccessToken();\r\n\r\n return {\r\n succeed: true,\r\n data: { accessToken, refreshToken: newRefreshToken },\r\n };\r\n }\r\n\r\n private generateAccessToken(): string {\r\n return 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE3MDU5MjE4ODUsImV4cCI6MTczNzQ1Nzg4NSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImlkIjoiMTAiLCJ0aXRsZSI6IkFyYXNoIiwiRW1haWwiOiJqcm9ja2V0QGV4YW1wbGUuY29tIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl0sIm5hbWUiOiJhZG1pbiJ9.IgJL7uvJNBd9yBvWS4aTms5XjBI4VDyT01KhMSESXdQ';\r\n }\r\n}\r\n","import { AXPPermission, AXPPermissionLoader, AXPSessionContext } from '@acorex/platform/auth';\r\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Observable, map } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class AXMOidcPermissionLoader implements AXPPermissionLoader {\r\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\r\n private apiGetConfig = `${this.configs.baseUrl}/abp/application-configuration`;\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n getList(context: AXPSessionContext): Observable<AXPPermission[]> {\r\n return this.http.get<{ items: any }>(this.apiGetConfig).pipe(map((response) => this.mapTo(response)));\r\n // if (context.user == null)\r\n // return of([]);\r\n // else if (context.user.name.toLowerCase() == 'admin')\r\n // return of(['axp.admin.console', 'asc.admin.message', 'asc.admin.settings', 'asc.admin.gliding', 'asc.user.gliding']);\r\n // else\r\n // return of(['asc.user.gliding']);\r\n // return of(['axp.admin.console', 'asc.admin.message', 'asc.admin.settings', 'asc.admin.gliding', 'asc.user.gliding']);\r\n }\r\n\r\n mapTo(jsonObj: any): string[] {\r\n const policies = jsonObj.auth.grantedPolicies;\r\n const truePolicies = Object.keys(policies).filter((key) => policies[key] === true);\r\n return truePolicies;\r\n }\r\n}\r\n","import { AXPSessionService } from '@acorex/platform/auth';\r\nimport { Component, OnInit, inject } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { AXMOidcUserManagerService } from './usermanager.service';\r\n\r\n@Component({\r\n template: '',\r\n})\r\nexport class SignincallbackComponent implements OnInit {\r\n private sessionService = inject(AXPSessionService);\r\n constructor(\r\n private userManagerService: AXMOidcUserManagerService,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n\r\n ) { }\r\n\r\n ngOnInit() {\r\n const queryParams = this.route.snapshot.queryParams;\r\n if (queryParams['tenantid']) {\r\n const selectedTenant = {\r\n id: queryParams['tenantid'],\r\n name: queryParams['tenantname'],\r\n title: queryParams['tenanttitle'],\r\n };\r\n this.sessionService.setTenant(selectedTenant);\r\n }\r\n if (queryParams['applicationid']) {\r\n const selectedApplication = {\r\n id: queryParams['applicationid'],\r\n name: queryParams['applicationname'],\r\n title: queryParams['applicationtitle'],\r\n version: '1',\r\n editionName: queryParams['editionname'],\r\n };\r\n this.sessionService.setApplication(selectedApplication);\r\n }\r\n this.userManagerService.signinSilentCallback();\r\n }\r\n}\r\n","import { AXPTenant, AXPTenantLoader } from '@acorex/platform/auth';\r\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Observable, map } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class AXMOidcTenantLoader implements AXPTenantLoader {\r\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\r\n private apiGetTenants = `${this.configs.baseUrl}/user-tenants/Tenants`;\r\n private apiSetTenant = `${this.configs.baseUrl}/SetTenant`;\r\n constructor(private http: HttpClient) { }\r\n\r\n getList(): Observable<AXPTenant[]> {\r\n return this.http.get<{ items: any[] }>(this.apiGetTenants).pipe(map((response) => response.items.map((item) => this.mapToAXPTenant(item))));\r\n }\r\n\r\n async set(tenant: AXPTenant): Promise<void> {\r\n return Promise.resolve();\r\n }\r\n\r\n private mapToAXPTenant(item: any): AXPTenant {\r\n return {\r\n id: item.id,\r\n name: item.name || 'defaultName',\r\n title: item.title || 'defaultTitle',\r\n // Add other fields and defaults as needed, and handle the logo if applicable\r\n };\r\n }\r\n}\r\n","import { AXMAuthModule } from '@acorex/modules/auth';\r\nimport { AXPAuthModule, AXP_APPLICATION_LOADER, AXP_FEATURE_LOADER, AXP_PERMISSION_LOADER, AXP_TENANT_LOADER } from '@acorex/platform/auth';\r\nimport { AXPDataProvider } from '@acorex/platform/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ROUTES, Routes } from '@angular/router';\r\n\r\n//-----------------------------------------------------------------\r\nimport { AXMBackendDataProvider } from './data/api/data-provider';\r\nimport { AXMOidcApplicationLoader, AXMOidcFeatureLoader, AXMOidcPermissionLoader, AXMOidcStrategy, AXMOidcTenantLoader } from './auth/oidc';\r\n//-----------------------------------------------------------------\r\n\r\nimport { SignincallbackComponent } from './auth/oidc/signincallback.component';\r\n\r\nfunction routesFactory() {\r\n const routes: Routes = [{ path: 'auth/signincallback', component: SignincallbackComponent }];\r\n return routes;\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n AXMAuthModule.forRoot(),\r\n AXPAuthModule.forRoot({\r\n strategies: [AXMOidcStrategy],\r\n }),\r\n ],\r\n exports: [],\r\n declarations: [],\r\n providers: [\r\n {\r\n provide: AXPDataProvider,\r\n useClass: AXMBackendDataProvider,\r\n },\r\n {\r\n provide: AXP_TENANT_LOADER,\r\n useClass: AXMOidcTenantLoader,\r\n },\r\n {\r\n provide: AXP_APPLICATION_LOADER,\r\n useClass: AXMOidcApplicationLoader,\r\n },\r\n {\r\n provide: AXP_PERMISSION_LOADER,\r\n useClass: AXMOidcPermissionLoader,\r\n },\r\n {\r\n provide: AXP_FEATURE_LOADER,\r\n useClass: AXMOidcFeatureLoader,\r\n },\r\n {\r\n provide: ROUTES,\r\n multi: true,\r\n useFactory: routesFactory,\r\n },\r\n ],\r\n})\r\nexport class AXMBackendModule { }\r\n","import { AXDataSourceFilterOption } from '@acorex/components/common';\r\nimport { endsWith, every, get, gt, gte, includes, isEmpty, isEqual, lt, lte, orderBy, some, startsWith } from 'lodash-es';\r\n\r\nfunction applyCondition(item: any, condition: any) {\r\n const rawValue = get(item, condition.field);\r\n const itemValue = typeof rawValue === 'string' ? rawValue.toLowerCase() : rawValue;\r\n const conditionValue = typeof condition.value === 'string' ? condition.value.toLowerCase() : condition.value;\r\n\r\n // Logging for debugging\r\n // console.log('Condition:', condition);\r\n // console.log('Item Value:', itemValue);\r\n // console.log('Condition Value:', conditionValue);\r\n\r\n switch (condition.operator.type) {\r\n case 'equal':\r\n return isEqual(itemValue, conditionValue);\r\n case 'notEqual':\r\n return !isEqual(itemValue, conditionValue);\r\n case 'greaterThan':\r\n return gt(itemValue, conditionValue);\r\n case 'lessThan':\r\n return lt(itemValue, conditionValue);\r\n case 'greaterThanOrEqual':\r\n return gte(itemValue, conditionValue);\r\n case 'lessThanOrEqual':\r\n return lte(itemValue, conditionValue);\r\n case 'contains':\r\n if (typeof itemValue === 'string') {\r\n return includes(itemValue, conditionValue);\r\n } else if (Array.isArray(itemValue)) {\r\n return includes(itemValue.map(val => val.toString().toLowerCase()), conditionValue);\r\n }\r\n return false;\r\n case 'notContains':\r\n if (typeof itemValue === 'string') {\r\n return !includes(itemValue, conditionValue);\r\n } else if (Array.isArray(itemValue)) {\r\n return !includes(itemValue.map(val => val.toString().toLowerCase()), conditionValue);\r\n }\r\n return false;\r\n case 'startsWith':\r\n return typeof itemValue === 'string' && startsWith(itemValue, conditionValue);\r\n case 'endsWith':\r\n return typeof itemValue === 'string' && endsWith(itemValue, conditionValue);\r\n case 'isEmpty':\r\n return isEmpty(itemValue);\r\n case 'isNotEmpty':\r\n return !isEmpty(itemValue);\r\n case 'between':\r\n return itemValue >= condition.value.from && itemValue <= condition.value.to;\r\n default:\r\n return true;\r\n }\r\n}\r\n\r\nexport function applyFilterArray(\r\n dataArray: any[],\r\n filters?: AXDataSourceFilterOption[],\r\n logic: 'and' | 'or' = 'and'\r\n): any[] {\r\n if (filters && filters.length) {\r\n return dataArray.filter((item) => {\r\n if (logic === 'and') {\r\n return filters.every((f) => {\r\n return f.filters ? applyFilterArray([item], f.filters, f.logic).length > 0 : applyCondition(item, f);\r\n });\r\n } else {\r\n // logic === 'or'\r\n return filters.some((f) => {\r\n return f.filters ? applyFilterArray([item], f.filters, f.logic).length > 0 : applyCondition(item, f);\r\n });\r\n }\r\n });\r\n } else {\r\n return dataArray;\r\n }\r\n}\r\n\r\n\r\nexport function applySortArray(dataArray: any, sorts: { field: string; dir: 'asc' | 'desc' }[]) {\r\n if (sorts && sorts.length > 0) {\r\n const sortFields = sorts.map((s) => s.field);\r\n const sortOrders = sorts.map((s) => s.dir);\r\n return orderBy(dataArray, sortFields, sortOrders);\r\n } else return dataArray;\r\n}\r\n","import { AXPDataProvider } from '@acorex/platform/common';\r\nimport { AXPStorageMockService } from '@acorex/platform/mocks';\r\nimport { Injectable } from '@angular/core';\r\nimport { applyFilterArray, applySortArray } from './data-Conditioner';\r\nimport { AXPEntityConfig } from '@acorex/platform/common';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AXMLocalDataProvider implements AXPDataProvider {\r\n constructor(private storageService: AXPStorageMockService) { }\r\n\r\n insertOne(entity: AXPEntityConfig, entityItem: any): Promise<any> {\r\n return this.storageService.insertOrupdateOne(entity.name, entityItem);\r\n }\r\n\r\n insertMany(entity: AXPEntityConfig, entityList: any): Promise<any> {\r\n return this.storageService.insertMany(entity.name, entityList);\r\n }\r\n\r\n async getOne(entity: AXPEntityConfig, id: string): Promise<any> {\r\n console.log('@LOACAL getOne', entity.name, id);\r\n return this.storageService.getOne(entity.name, id);\r\n }\r\n\r\n async getMany(entity: AXPEntityConfig, params?: any): Promise<any> {\r\n console.log('@LOACAL getMany', entity.name, params);\r\n const result = await this.storageService.getMany(entity.name, params);\r\n const sortedItems = applySortArray(result, params?.sort);\r\n const filteredItems = applyFilterArray(sortedItems, params?.filter?.filters);\r\n return new Promise((resolve) => {\r\n resolve({\r\n items: params ? filteredItems?.slice(params.skip, (params.skip ?? 0) + (params.take ?? 20)) : filteredItems,\r\n total: filteredItems?.length ?? 0,\r\n });\r\n });\r\n }\r\n\r\n updateOne(entity: AXPEntityConfig, id: string, data: { [key: string]: any }): Promise<any> {\r\n return this.storageService.updateOne(entity.name, id, data);\r\n }\r\n\r\n deleteOne(entity: AXPEntityConfig, id: string): Promise<any> {\r\n return this.storageService.deleteOne(entity.name, id);\r\n }\r\n\r\n getFirst(entity: AXPEntityConfig): Promise<any> {\r\n return this.getMany(entity).then((res) => {\r\n return res.items ? res.items[0] : null;\r\n });\r\n }\r\n\r\n // Mock file uploader function\r\n uploadFile(file: File, title: string): Promise<string> {\r\n return new Promise((resolve) => {\r\n // Mock file ID generation\r\n const fileId = `mock-file-id-${Math.random().toString(36).substr(2, 9)}`;\r\n const fileRecord = { id: fileId, title, file };\r\n this.storageService.insertOrupdateOne('files', fileRecord).then(() => {\r\n resolve(fileId);\r\n });\r\n });\r\n }\r\n\r\n // Mock function to upload multiple files\r\n uploadMultipleFiles(files: File[], title: string): Promise<string[]> {\r\n const uploadPromises = files.map((file) => this.uploadFile(file, title));\r\n return Promise.all(uploadPromises);\r\n }\r\n\r\n // Mock function to view a file\r\n viewFile(id: string, name: string): Promise<Blob> {\r\n return new Promise(async (resolve, reject) => {\r\n const fileRecord = await this.storageService.getOne('files', id);\r\n if (fileRecord && fileRecord.file) {\r\n resolve(fileRecord.file);\r\n } else {\r\n reject('File not found');\r\n }\r\n });\r\n }\r\n\r\n // Mock function to download a file\r\n downloadFile(id: string, name: string): Promise<Blob> {\r\n return this.viewFile(id, name);\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.AXMOidcUserManagerService","i1","i2"],"mappings":"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"}
|