tool-utilities-ang15 0.0.4 → 0.0.5
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.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Injectable } from "@angular/core";
|
|
2
|
-
import {
|
|
2
|
+
import { white, red } from 'tool-log';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
/**
|
|
5
5
|
* Сервис для безопасного выполнения Promise: перехватывает ошибки,
|
|
@@ -72,11 +72,11 @@ export class AwaitTryCatchService {
|
|
|
72
72
|
if (result instanceof Response) {
|
|
73
73
|
return await this.handleResponse(result, from);
|
|
74
74
|
}
|
|
75
|
-
|
|
75
|
+
white('awaitTryCatch', 'Результат выполнения send (из ' + from + ' AwaitTryCatchService)', { result });
|
|
76
76
|
return result;
|
|
77
77
|
}
|
|
78
78
|
catch (error) {
|
|
79
|
-
red('awaitTryCatch', 'Ошибка выполнения send (из ' + from + '
|
|
79
|
+
red('awaitTryCatch', 'Ошибка выполнения send (из ' + from + ' AwaitTryCatchService)', errorMessage);
|
|
80
80
|
this._tryCatchErrorInfo(error);
|
|
81
81
|
return false;
|
|
82
82
|
}
|
|
@@ -102,7 +102,7 @@ export class AwaitTryCatchService {
|
|
|
102
102
|
const blob = await response.blob(); // для файлов/изображений
|
|
103
103
|
const formData = await response.formData(); // для form-data
|
|
104
104
|
*/
|
|
105
|
-
|
|
105
|
+
white('awaitTryCatch', 'Результат выполнения send (из ' + from + ' AwaitTryCatchService)', data);
|
|
106
106
|
return data;
|
|
107
107
|
}
|
|
108
108
|
catch (parseError) {
|
|
@@ -119,4 +119,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
119
119
|
providedIn: 'root'
|
|
120
120
|
}]
|
|
121
121
|
}] });
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdhaXQtdHJ5LWNhdGNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90b29sLXV0aWxpdGllcy1hbmcxNS9zcmMvbGliL2F3YWl0LXRyeS1jYXRjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBa0J0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7QUFJSCxNQUFNLE9BQU8sb0JBQW9CO0lBRWhDOzs7OztPQUtHO0lBQ0ssa0JBQWtCLENBQUMsQ0FBVTtRQUNwQyxJQUFJLENBQUMsWUFBWSxTQUFTLEVBQUU7WUFDM0IsR0FBRyxDQUFDLGVBQWUsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ2pEO2FBQU0sSUFBSSxDQUFDLFlBQVksY0FBYyxFQUFFO1lBQ3ZDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ25EO2FBQU0sSUFBSSxDQUFDLFlBQVksS0FBSyxFQUFFO1lBQzlCLEdBQUcsQ0FBQyxlQUFlLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM1QzthQUFNO1lBQ04sR0FBRyxDQUFDLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQzFEO0lBQ0YsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7T0FlRztJQUNJLEtBQUssQ0FBQyxJQUFJLENBQ2hCLE9BQW1CLEVBQ25CLE9BQWUsWUFBWSxFQUMzQixlQUF1QiwrQkFBK0I7UUFFdEQsSUFBSTtZQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDO1lBRTdCLHdGQUF3RjtZQUN4RixJQUFJLE1BQU0sWUFBWSxRQUFRLEVBQUU7Z0JBQy9CLE9BQU8sTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQXVCLENBQUM7YUFDckU7WUFFRCxLQUFLLENBQUMsZUFBZSxFQUFFLGdDQUFnQyxHQUFHLElBQUksR0FBRyx3QkFBd0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFFdkcsT0FBTyxNQUFNLENBQUM7U0FDZDtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2YsR0FBRyxDQUFDLGVBQWUsRUFBRSw2QkFBNkIsR0FBRyxJQUFJLEdBQUcsd0JBQXdCLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDcEcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRS9CLE9BQU8sS0FBSyxDQUFDO1NBQ2I7SUFDRixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssS0FBSyxDQUFDLGNBQWMsQ0FBQyxRQUFrQixFQUFFLElBQVk7UUFDNUQsSUFBSTtZQUNILElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFO2dCQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLGVBQWUsUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztnQkFFdkUsT0FBTyxLQUFLLENBQUM7YUFDYjtZQUNELE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25DLHdEQUF3RDtZQUN4RDs7Ozs7Y0FLRTtZQUVGLEtBQUssQ0FBQyxlQUFlLEVBQUUsZ0NBQWdDLEdBQUcsSUFBSSxHQUFHLHdCQUF3QixFQUFFLElBQUksQ0FBQyxDQUFDO1lBRWpHLE9BQU8sSUFBSSxDQUFDO1NBQ1o7UUFBQyxPQUFPLFVBQVUsRUFBRTtZQUNwQixHQUFHLENBQUMsZUFBZSxFQUFFLDBCQUEwQixFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUVqRSxPQUFPLEtBQUssQ0FBQztTQUNiO0lBQ0YsQ0FBQzs7a0hBM0ZXLG9CQUFvQjtzSEFBcEIsb0JBQW9CLGNBRnBCLE1BQU07NEZBRU4sb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBncmVlbiwgcmVkIH0gZnJvbSAndG9vbC1sb2cnO1xyXG5cclxuLyoqXHJcbiAqINCa0L7QvdGC0YDQsNC60YIg0YHQtdGA0LLQuNGB0LAt0L7QsdGR0YDRgtC60Lgg0LTQu9GPINCx0LXQt9C+0L/QsNGB0L3QvtCz0L4g0LLRi9C/0L7Qu9C90LXQvdC40Y8gUHJvbWlzZS5cclxuICog0JLQvtC30LLRgNCw0YnQsNC10YIg0YDQtdC30YPQu9GM0YLQsNGCINC/0YDQvtC80LjRgdCwINC70LjQsdC+IGBmYWxzZWAg0L/RgNC4INC+0YjQuNCx0LrQtSAo0LHQtdC3INC/0YDQvtCx0YDQvtGB0LAg0LjRgdC60LvRjtGH0LXQvdC40Y8pLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBJQXdhaXRUcnlDYXRjaFNlcnZpY2Uge1xyXG5cdC8qKlxyXG5cdCAqINCS0YvQv9C+0LvQvdGP0LXRgiDQv9GA0L7QvNC40YEg0Lgg0L/QtdGA0LXRhdCy0LDRgtGL0LLQsNC10YIg0L7RiNC40LHQutC4LlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIHByb21pc2UgICAgICAg0J/RgNC+0LzQuNGBLCDQutC+0YLQvtGA0YvQuSDQvdGD0LbQvdC+INCy0YvQv9C+0LvQvdC40YLRjC5cclxuXHQgKiBAcGFyYW0gZnJvbSAgICAgICAgICDQnNC10YLQutCwINC40YHRgtC+0YfQvdC40LrQsCDQstGL0LfQvtCy0LAgKNC/0L7Qv9Cw0LTQsNC10YIg0LIg0LvQvtCz0LgpLiDQn9C+INGD0LzQvtC70YfQsNC90LjRjiBgJ9Cd0LUg0YPQutCw0LfQsNC90L4nYC5cclxuXHQgKiBAcGFyYW0gZXJyb3JNZXNzYWdlICDQotC10LrRgdGCINC+0YjQuNCx0LrQuCDQtNC70Y8g0LvQvtCz0LAg0L/RgNC4IHJlamVjdC4g0J/QviDRg9C80L7Qu9GH0LDQvdC40Y4gYCfQntGI0LjQsdC60LAg0L/RgNC4INCy0YvQv9C+0LvQvdC10L3QuNC4IFByb21pc2UnYC5cclxuXHQgKiBAcmV0dXJucyAgICAgICAgICAgICDQoNC10LfRg9C70YzRgtCw0YIg0L/RgNC+0LzQuNGB0LAgYFRgINC70LjQsdC+IGBmYWxzZWAg0L/RgNC4INC+0YjQuNCx0LrQtS5cclxuXHQgKi9cclxuXHRzZW5kPFQgPSBhbnk+KHByb21pc2U6IFByb21pc2U8VD4sIGZyb20/OiBzdHJpbmcsIGVycm9yTWVzc2FnZT86IHN0cmluZyk6IFByb21pc2U8VCB8IGZhbHNlPjtcclxufVxyXG5cclxuLyoqXHJcbiAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0LHQtdC30L7Qv9Cw0YHQvdC+0LPQviDQstGL0L/QvtC70L3QtdC90LjRjyBQcm9taXNlOiDQv9C10YDQtdGF0LLQsNGC0YvQstCw0LXRgiDQvtGI0LjQsdC60LgsXHJcbiAqINC70L7Qs9C40YDRg9C10YIg0YDQtdC30YPQu9GM0YLQsNGCINC4INCy0L7Qt9Cy0YDQsNGJ0LDQtdGCIGBmYWxzZWAg0LLQvNC10YHRgtC+INC/0YDQvtCx0YDQvtGB0LAg0LjRgdC60LvRjtGH0LXQvdC40Y8uXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIC8vINCe0LHRi9GH0L3Ri9C5INC/0YDQvtC80LjRgVxyXG4gKiBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5hd2FpdFRyeUNhdGNoLnNlbmQoXHJcbiAqICAgdGhpcy5mZXRjaFVzZXIoMSksXHJcbiAqICAgJ1VzZXJDb21wb25lbnQubG9hZCcsXHJcbiAqICAgJ9Cd0LUg0YPQtNCw0LvQvtGB0Ywg0LfQsNCz0YDRg9C30LjRgtGMINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjydcclxuICogKTtcclxuICogaWYgKHVzZXIgIT09IGZhbHNlKSB7IHRoaXMudXNlciA9IHVzZXI7IH1cclxuICpcclxuICogQGV4YW1wbGVcclxuICogLy8gZmV0Y2gg4oCUIFJlc3BvbnNlINGA0LDQt9Cx0LXRgNGR0YLRgdGPINCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC4ICjQstC10YDQvdGR0YIgSlNPTiDQuNC70LggZmFsc2UpXHJcbiAqIGNvbnN0IHRvZG9zID0gYXdhaXQgdGhpcy5hd2FpdFRyeUNhdGNoLnNlbmQoXHJcbiAqICAgZmV0Y2goJ2h0dHBzOi8vanNvbnBsYWNlaG9sZGVyLnR5cGljb2RlLmNvbS90b2Rvcy8xJyksXHJcbiAqICAgJ1VzZXJDb21wb25lbnQudG9kb3MnXHJcbiAqICk7XHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIC8vIFJlamVjdDog0L7RiNC40LHQutCwINGD0LnQtNGR0YIg0LIg0LvQvtCzLCDQstC10YDQvdGR0YLRgdGPIGZhbHNlXHJcbiAqIGNvbnN0IG9rID0gYXdhaXQgdGhpcy5hd2FpdFRyeUNhdGNoLnNlbmQoXHJcbiAqICAgUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdib29tJykpLFxyXG4gKiAgICdVc2VyQ29tcG9uZW50LnJlamVjdCdcclxuICogKTtcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEF3YWl0VHJ5Q2F0Y2hTZXJ2aWNlIGltcGxlbWVudHMgSUF3YWl0VHJ5Q2F0Y2hTZXJ2aWNlIHtcclxuXHJcblx0LyoqXHJcblx0ICog0JrQu9Cw0YHRgdC40YTQuNGG0LjRgNGD0LXRgiDQvtGI0LjQsdC60YMg0Lgg0L/QuNGI0LXRgiDQtdGRINCyINC70L7QsyDRgSDRgdC+0L7RgtCy0LXRgtGB0YLQstGD0Y7RidC40Lwg0L/RgNC10YTQuNC60YHQvtC8LlxyXG5cdCAqINCd0YPQttC10L0sINGH0YLQvtCx0Ysg0LIg0LrQvtC90YHQvtC70Lgg0LHRi9C70L4g0LLQuNC00L3QviDRgtC40L8g0L7RiNC40LHQutC4IChUeXBlRXJyb3IgLyBSZWZlcmVuY2VFcnJvciAvIEVycm9yIC8gdW5rbm93bikuXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gZSAg0J/QtdGA0LXRhdCy0LDRh9C10L3QvdC+0LUg0LfQvdCw0YfQtdC90LjQtSDQuNC3IGBjYXRjaGAgKNGC0LjQvyDQt9Cw0YDQsNC90LXQtSDQvdC10LjQt9Cy0LXRgdGC0LXQvSkuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfdHJ5Q2F0Y2hFcnJvckluZm8oZTogdW5rbm93bik6IHZvaWQge1xyXG5cdFx0aWYgKGUgaW5zdGFuY2VvZiBUeXBlRXJyb3IpIHtcclxuXHRcdFx0cmVkKCdhd2FpdFRyeUNhdGNoJywgJ9Ce0YjQuNCx0LrQsCDRgtC40L/QsDogJywgZS5tZXNzYWdlKTtcclxuXHRcdH0gZWxzZSBpZiAoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKSB7XHJcblx0XHRcdHJlZCgnYXdhaXRUcnlDYXRjaCcsICfQntGI0LjQsdC60LAg0YHRgdGL0LvQutC4OiAnLCBlLm1lc3NhZ2UpO1xyXG5cdFx0fSBlbHNlIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcclxuXHRcdFx0cmVkKCdhd2FpdFRyeUNhdGNoJywgJ9Ce0YjQuNCx0LrQsDogJywgZS5tZXNzYWdlKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJlZCgnYXdhaXRUcnlDYXRjaCcsICfQndC10LjQt9Cy0LXRgdGC0L3QsNGPINC+0YjQuNCx0LrQsDonLCB7IGVycm9yOiBlIH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICog0JLRi9C/0L7Qu9C90Y/QtdGCINC/0YDQvtC80LjRgSwg0LvQvtCz0LjRgNGD0LXRgiDRgNC10LfRg9C70YzRgtCw0YIg0Lgg0L/QtdGA0LXRhdCy0LDRgtGL0LLQsNC10YIg0L7RiNC40LHQutC4LlxyXG5cdCAqINCV0YHQu9C4INGA0LXQt9GD0LvRjNGC0LDRgtC+0Lwg0Y/QstC70Y/QtdGC0YHRjyBgUmVzcG9uc2VgICjQvdCw0L/RgNC40LzQtdGALCDQuNC3IGBmZXRjaGApLCDQtNC+0L/QvtC70L3QuNGC0LXQu9GM0L3QvlxyXG5cdCAqINGA0LDQt9Cx0LjRgNCw0LXRgiDQtdCz0L4g0YfQtdGA0LXQtyB7QGxpbmsgaGFuZGxlUmVzcG9uc2V9LlxyXG5cdCAqXHJcblx0ICogQGV4YW1wbGVcclxuXHQgKiBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5hd2FpdFRyeUNhdGNoLnNlbmQoXHJcblx0ICogICBmZXRjaCgnL2FwaS91c2VycycpLFxyXG5cdCAqICAgJ1VzZXJzU2VydmljZS5sb2FkJ1xyXG5cdCAqICk7XHJcblx0ICpcclxuXHQgKiBAcGFyYW0gcHJvbWlzZSAgICAgICDQn9GA0L7QvNC40YEg0LTQu9GPINCy0YvQv9C+0LvQvdC10L3QuNGPLlxyXG5cdCAqIEBwYXJhbSBmcm9tICAgICAgICAgINCc0LXRgtC60LAg0LjRgdGC0L7Rh9C90LjQutCwINCy0YvQt9C+0LLQsCAo0LTQu9GPINC70L7Qs9C+0LIpLlxyXG5cdCAqIEBwYXJhbSBlcnJvck1lc3NhZ2UgINCi0LXQutGB0YIg0L7RiNC40LHQutC4INC00LvRjyDQu9C+0LPQsCDQv9GA0LggcmVqZWN0LlxyXG5cdCAqIEByZXR1cm5zICAgICAgICAgICAgINCg0LXQt9GD0LvRjNGC0LDRgiDQv9GA0L7QvNC40YHQsCBgVGAsINGA0LDRgdC/0LDRgNGB0LXQvdC90YvQtSDQtNCw0L3QvdGL0LUgYFJlc3BvbnNlYCDQuNC70LggYGZhbHNlYCDQv9GA0Lgg0L7RiNC40LHQutC1LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBhc3luYyBzZW5kPFQgPSBhbnk+KFxyXG5cdFx0cHJvbWlzZTogUHJvbWlzZTxUPixcclxuXHRcdGZyb206IHN0cmluZyA9ICfQndC1INGD0LrQsNC30LDQvdC+JyxcclxuXHRcdGVycm9yTWVzc2FnZTogc3RyaW5nID0gJ9Ce0YjQuNCx0LrQsCDQv9GA0Lgg0LLRi9C/0L7Qu9C90LXQvdC40LggUHJvbWlzZSdcclxuXHQpOiBQcm9taXNlPFQgfCBmYWxzZT4ge1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0Y29uc3QgcmVzdWx0ID0gYXdhaXQgcHJvbWlzZTtcclxuXHJcblx0XHRcdC8vINCe0LHRgNCw0LHQvtGC0LrQsCBSZXNwb25zZSDQvtGC0LTQtdC70YzQvdC+IC0gZmV0Y2goKSDQstC+0LfQstGA0LDRidCw0LXRgiDQvdC1INCz0L7RgtC+0LLRi9C1INC00LDQvdC90YvQtSwg0LAg0L7QsdGK0LXQutGCIFJlc3BvbnNlXHJcblx0XHRcdGlmIChyZXN1bHQgaW5zdGFuY2VvZiBSZXNwb25zZSkge1xyXG5cdFx0XHRcdHJldHVybiBhd2FpdCB0aGlzLmhhbmRsZVJlc3BvbnNlKHJlc3VsdCwgZnJvbSkgYXMgUHJvbWlzZTxUIHwgZmFsc2U+O1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRncmVlbignYXdhaXRUcnlDYXRjaCcsICfQoNC10LfRg9C70YzRgtCw0YIg0LLRi9C/0L7Qu9C90LXQvdC40Y8gc2VuZCAo0LjQtyAnICsgZnJvbSArICcvQXdhaXRUcnlDYXRjaFNlcnZpY2UpJywgeyByZXN1bHQgfSk7XHJcblxyXG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcclxuXHRcdFx0cmVkKCdhd2FpdFRyeUNhdGNoJywgJ9Ce0YjQuNCx0LrQsCDQstGL0L/QvtC70L3QtdC90LjRjyBzZW5kICjQuNC3ICcgKyBmcm9tICsgJy9Bd2FpdFRyeUNhdGNoU2VydmljZSknLCBlcnJvck1lc3NhZ2UpO1xyXG5cdFx0XHR0aGlzLl90cnlDYXRjaEVycm9ySW5mbyhlcnJvcik7XHJcblxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiDQoNCw0LfQsdC40YDQsNC10YIgYFJlc3BvbnNlYDog0L/RgNC+0LLQtdGA0Y/QtdGCINGB0YLQsNGC0YPRgSDQuCDQv9Cw0YDRgdC40YIg0YLQtdC70L4g0LrQsNC6IEpTT04uXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gcmVzcG9uc2UgINCe0LHRitC10LrRgiBgUmVzcG9uc2VgICjQvtCx0YvRh9C90L4g0YDQtdC30YPQu9GM0YLQsNGCIGBmZXRjaGApLlxyXG5cdCAqIEBwYXJhbSBmcm9tICAgICAg0JzQtdGC0LrQsCDQuNGB0YLQvtGH0L3QuNC60LAg0LLRi9C30L7QstCwICjQtNC70Y8g0LvQvtCz0L7QsikuXHJcblx0ICogQHJldHVybnMgICAgICAgICDQoNCw0YHQv9Cw0YDRgdC10L3QvdGL0LUg0LTQsNC90L3Ri9C1INC40LvQuCBgZmFsc2VgLCDQtdGB0LvQuCDRgdGC0LDRgtGD0YEg0L3QtSBvayDQu9C40LHQviDQv9Cw0YDRgdC40L3QsyDRg9C/0LDQuy5cclxuXHQgKi9cclxuXHRwcml2YXRlIGFzeW5jIGhhbmRsZVJlc3BvbnNlKHJlc3BvbnNlOiBSZXNwb25zZSwgZnJvbTogc3RyaW5nICk6IFByb21pc2U8YW55IHwgZmFsc2U+IHtcclxuXHRcdHRyeSB7XHJcblx0XHRcdGlmICghcmVzcG9uc2Uub2spIHtcclxuXHRcdFx0XHRjb25zb2xlLmVycm9yKGBIVFRQIEVycm9yOiAke3Jlc3BvbnNlLnN0YXR1c30gJHtyZXNwb25zZS5zdGF0dXNUZXh0fWApO1xyXG5cclxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHRcdH1cclxuXHRcdFx0Y29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcclxuXHRcdFx0Ly8g0KfRgtC+0LHRiyDQv9C+0LvRg9GH0LjRgtGMINC00LDQvdC90YvQtSwg0L3Rg9C20L3QviDQstGL0LfQstCw0YLRjCDQvtC00LjQvSDQuNC3INC80LXRgtC+0LTQvtCyOlxyXG5cdFx0XHQvKlxyXG5cdFx0XHRjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpOyAgICAvLyDQtNC70Y8gSlNPTiDQvtGC0LLQtdGC0LBcclxuXHRcdFx0Y29uc3QgdGV4dCA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTsgICAgLy8g0LTQu9GPINGC0LXQutGB0YLQsFxyXG5cdFx0XHRjb25zdCBibG9iID0gYXdhaXQgcmVzcG9uc2UuYmxvYigpOyAgICAvLyDQtNC70Y8g0YTQsNC50LvQvtCyL9C40LfQvtCx0YDQsNC20LXQvdC40LlcclxuXHRcdFx0Y29uc3QgZm9ybURhdGEgPSBhd2FpdCByZXNwb25zZS5mb3JtRGF0YSgpOyAvLyDQtNC70Y8gZm9ybS1kYXRhXHJcblx0XHRcdCovXHJcblxyXG5cdFx0XHRncmVlbignYXdhaXRUcnlDYXRjaCcsICfQoNC10LfRg9C70YzRgtCw0YIg0LLRi9C/0L7Qu9C90LXQvdC40Y8gc2VuZCAo0LjQtyAnICsgZnJvbSArICcvQXdhaXRUcnlDYXRjaFNlcnZpY2UpJywgZGF0YSk7XHJcblxyXG5cdFx0XHRyZXR1cm4gZGF0YTtcclxuXHRcdH0gY2F0Y2ggKHBhcnNlRXJyb3IpIHtcclxuXHRcdFx0cmVkKCdhd2FpdFRyeUNhdGNoJywgJ9Ce0YjQuNCx0LrQsCDQv9Cw0YDRgdC40L3Qs9CwINC+0YLQstC10YLQsDogJywgeyBwYXJzZUVycm9yIH0pO1xyXG5cclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iXX0=
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdhaXQtdHJ5LWNhdGNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90b29sLXV0aWxpdGllcy1hbmcxNS9zcmMvbGliL2F3YWl0LXRyeS1jYXRjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBa0J0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7QUFJSCxNQUFNLE9BQU8sb0JBQW9CO0lBRWhDOzs7OztPQUtHO0lBQ0ssa0JBQWtCLENBQUMsQ0FBVTtRQUNwQyxJQUFJLENBQUMsWUFBWSxTQUFTLEVBQUU7WUFDM0IsR0FBRyxDQUFDLGVBQWUsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ2pEO2FBQU0sSUFBSSxDQUFDLFlBQVksY0FBYyxFQUFFO1lBQ3ZDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ25EO2FBQU0sSUFBSSxDQUFDLFlBQVksS0FBSyxFQUFFO1lBQzlCLEdBQUcsQ0FBQyxlQUFlLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM1QzthQUFNO1lBQ04sR0FBRyxDQUFDLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQzFEO0lBQ0YsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7T0FlRztJQUNJLEtBQUssQ0FBQyxJQUFJLENBQ2hCLE9BQW1CLEVBQ25CLE9BQWUsWUFBWSxFQUMzQixlQUF1QiwrQkFBK0I7UUFFdEQsSUFBSTtZQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDO1lBRTdCLHdGQUF3RjtZQUN4RixJQUFJLE1BQU0sWUFBWSxRQUFRLEVBQUU7Z0JBQy9CLE9BQU8sTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQXVCLENBQUM7YUFDckU7WUFFRCxLQUFLLENBQUMsZUFBZSxFQUFFLGdDQUFnQyxHQUFHLElBQUksR0FBRyx3QkFBd0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFFdkcsT0FBTyxNQUFNLENBQUM7U0FDZDtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2YsR0FBRyxDQUFDLGVBQWUsRUFBRSw2QkFBNkIsR0FBRyxJQUFJLEdBQUcsd0JBQXdCLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDcEcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRS9CLE9BQU8sS0FBSyxDQUFDO1NBQ2I7SUFDRixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssS0FBSyxDQUFDLGNBQWMsQ0FBQyxRQUFrQixFQUFFLElBQVk7UUFDNUQsSUFBSTtZQUNILElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFO2dCQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLGVBQWUsUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztnQkFFdkUsT0FBTyxLQUFLLENBQUM7YUFDYjtZQUNELE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25DLHdEQUF3RDtZQUN4RDs7Ozs7Y0FLRTtZQUVGLEtBQUssQ0FBQyxlQUFlLEVBQUUsZ0NBQWdDLEdBQUcsSUFBSSxHQUFHLHdCQUF3QixFQUFFLElBQUksQ0FBQyxDQUFDO1lBRWpHLE9BQU8sSUFBSSxDQUFDO1NBQ1o7UUFBQyxPQUFPLFVBQVUsRUFBRTtZQUNwQixHQUFHLENBQUMsZUFBZSxFQUFFLDBCQUEwQixFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUVqRSxPQUFPLEtBQUssQ0FBQztTQUNiO0lBQ0YsQ0FBQzs7a0hBM0ZXLG9CQUFvQjtzSEFBcEIsb0JBQW9CLGNBRnBCLE1BQU07NEZBRU4sb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyB3aGl0ZSwgcmVkIH0gZnJvbSAndG9vbC1sb2cnO1xyXG5cclxuLyoqXHJcbiAqINCa0L7QvdGC0YDQsNC60YIg0YHQtdGA0LLQuNGB0LAt0L7QsdGR0YDRgtC60Lgg0LTQu9GPINCx0LXQt9C+0L/QsNGB0L3QvtCz0L4g0LLRi9C/0L7Qu9C90LXQvdC40Y8gUHJvbWlzZS5cclxuICog0JLQvtC30LLRgNCw0YnQsNC10YIg0YDQtdC30YPQu9GM0YLQsNGCINC/0YDQvtC80LjRgdCwINC70LjQsdC+IGBmYWxzZWAg0L/RgNC4INC+0YjQuNCx0LrQtSAo0LHQtdC3INC/0YDQvtCx0YDQvtGB0LAg0LjRgdC60LvRjtGH0LXQvdC40Y8pLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBJQXdhaXRUcnlDYXRjaFNlcnZpY2Uge1xyXG5cdC8qKlxyXG5cdCAqINCS0YvQv9C+0LvQvdGP0LXRgiDQv9GA0L7QvNC40YEg0Lgg0L/QtdGA0LXRhdCy0LDRgtGL0LLQsNC10YIg0L7RiNC40LHQutC4LlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIHByb21pc2UgICAgICAg0J/RgNC+0LzQuNGBLCDQutC+0YLQvtGA0YvQuSDQvdGD0LbQvdC+INCy0YvQv9C+0LvQvdC40YLRjC5cclxuXHQgKiBAcGFyYW0gZnJvbSAgICAgICAgICDQnNC10YLQutCwINC40YHRgtC+0YfQvdC40LrQsCDQstGL0LfQvtCy0LAgKNC/0L7Qv9Cw0LTQsNC10YIg0LIg0LvQvtCz0LgpLiDQn9C+INGD0LzQvtC70YfQsNC90LjRjiBgJ9Cd0LUg0YPQutCw0LfQsNC90L4nYC5cclxuXHQgKiBAcGFyYW0gZXJyb3JNZXNzYWdlICDQotC10LrRgdGCINC+0YjQuNCx0LrQuCDQtNC70Y8g0LvQvtCz0LAg0L/RgNC4IHJlamVjdC4g0J/QviDRg9C80L7Qu9GH0LDQvdC40Y4gYCfQntGI0LjQsdC60LAg0L/RgNC4INCy0YvQv9C+0LvQvdC10L3QuNC4IFByb21pc2UnYC5cclxuXHQgKiBAcmV0dXJucyAgICAgICAgICAgICDQoNC10LfRg9C70YzRgtCw0YIg0L/RgNC+0LzQuNGB0LAgYFRgINC70LjQsdC+IGBmYWxzZWAg0L/RgNC4INC+0YjQuNCx0LrQtS5cclxuXHQgKi9cclxuXHRzZW5kPFQgPSBhbnk+KHByb21pc2U6IFByb21pc2U8VD4sIGZyb20/OiBzdHJpbmcsIGVycm9yTWVzc2FnZT86IHN0cmluZyk6IFByb21pc2U8VCB8IGZhbHNlPjtcclxufVxyXG5cclxuLyoqXHJcbiAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0LHQtdC30L7Qv9Cw0YHQvdC+0LPQviDQstGL0L/QvtC70L3QtdC90LjRjyBQcm9taXNlOiDQv9C10YDQtdGF0LLQsNGC0YvQstCw0LXRgiDQvtGI0LjQsdC60LgsXHJcbiAqINC70L7Qs9C40YDRg9C10YIg0YDQtdC30YPQu9GM0YLQsNGCINC4INCy0L7Qt9Cy0YDQsNGJ0LDQtdGCIGBmYWxzZWAg0LLQvNC10YHRgtC+INC/0YDQvtCx0YDQvtGB0LAg0LjRgdC60LvRjtGH0LXQvdC40Y8uXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIC8vINCe0LHRi9GH0L3Ri9C5INC/0YDQvtC80LjRgVxyXG4gKiBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5hd2FpdFRyeUNhdGNoLnNlbmQoXHJcbiAqICAgdGhpcy5mZXRjaFVzZXIoMSksXHJcbiAqICAgJ1VzZXJDb21wb25lbnQubG9hZCcsXHJcbiAqICAgJ9Cd0LUg0YPQtNCw0LvQvtGB0Ywg0LfQsNCz0YDRg9C30LjRgtGMINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjydcclxuICogKTtcclxuICogaWYgKHVzZXIgIT09IGZhbHNlKSB7IHRoaXMudXNlciA9IHVzZXI7IH1cclxuICpcclxuICogQGV4YW1wbGVcclxuICogLy8gZmV0Y2gg4oCUIFJlc3BvbnNlINGA0LDQt9Cx0LXRgNGR0YLRgdGPINCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC4ICjQstC10YDQvdGR0YIgSlNPTiDQuNC70LggZmFsc2UpXHJcbiAqIGNvbnN0IHRvZG9zID0gYXdhaXQgdGhpcy5hd2FpdFRyeUNhdGNoLnNlbmQoXHJcbiAqICAgZmV0Y2goJ2h0dHBzOi8vanNvbnBsYWNlaG9sZGVyLnR5cGljb2RlLmNvbS90b2Rvcy8xJyksXHJcbiAqICAgJ1VzZXJDb21wb25lbnQudG9kb3MnXHJcbiAqICk7XHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIC8vIFJlamVjdDog0L7RiNC40LHQutCwINGD0LnQtNGR0YIg0LIg0LvQvtCzLCDQstC10YDQvdGR0YLRgdGPIGZhbHNlXHJcbiAqIGNvbnN0IG9rID0gYXdhaXQgdGhpcy5hd2FpdFRyeUNhdGNoLnNlbmQoXHJcbiAqICAgUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdib29tJykpLFxyXG4gKiAgICdVc2VyQ29tcG9uZW50LnJlamVjdCdcclxuICogKTtcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEF3YWl0VHJ5Q2F0Y2hTZXJ2aWNlIGltcGxlbWVudHMgSUF3YWl0VHJ5Q2F0Y2hTZXJ2aWNlIHtcclxuXHJcblx0LyoqXHJcblx0ICog0JrQu9Cw0YHRgdC40YTQuNGG0LjRgNGD0LXRgiDQvtGI0LjQsdC60YMg0Lgg0L/QuNGI0LXRgiDQtdGRINCyINC70L7QsyDRgSDRgdC+0L7RgtCy0LXRgtGB0YLQstGD0Y7RidC40Lwg0L/RgNC10YTQuNC60YHQvtC8LlxyXG5cdCAqINCd0YPQttC10L0sINGH0YLQvtCx0Ysg0LIg0LrQvtC90YHQvtC70Lgg0LHRi9C70L4g0LLQuNC00L3QviDRgtC40L8g0L7RiNC40LHQutC4IChUeXBlRXJyb3IgLyBSZWZlcmVuY2VFcnJvciAvIEVycm9yIC8gdW5rbm93bikuXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gZSAg0J/QtdGA0LXRhdCy0LDRh9C10L3QvdC+0LUg0LfQvdCw0YfQtdC90LjQtSDQuNC3IGBjYXRjaGAgKNGC0LjQvyDQt9Cw0YDQsNC90LXQtSDQvdC10LjQt9Cy0LXRgdGC0LXQvSkuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfdHJ5Q2F0Y2hFcnJvckluZm8oZTogdW5rbm93bik6IHZvaWQge1xyXG5cdFx0aWYgKGUgaW5zdGFuY2VvZiBUeXBlRXJyb3IpIHtcclxuXHRcdFx0cmVkKCdhd2FpdFRyeUNhdGNoJywgJ9Ce0YjQuNCx0LrQsCDRgtC40L/QsDogJywgZS5tZXNzYWdlKTtcclxuXHRcdH0gZWxzZSBpZiAoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKSB7XHJcblx0XHRcdHJlZCgnYXdhaXRUcnlDYXRjaCcsICfQntGI0LjQsdC60LAg0YHRgdGL0LvQutC4OiAnLCBlLm1lc3NhZ2UpO1xyXG5cdFx0fSBlbHNlIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcclxuXHRcdFx0cmVkKCdhd2FpdFRyeUNhdGNoJywgJ9Ce0YjQuNCx0LrQsDogJywgZS5tZXNzYWdlKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJlZCgnYXdhaXRUcnlDYXRjaCcsICfQndC10LjQt9Cy0LXRgdGC0L3QsNGPINC+0YjQuNCx0LrQsDonLCB7IGVycm9yOiBlIH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICog0JLRi9C/0L7Qu9C90Y/QtdGCINC/0YDQvtC80LjRgSwg0LvQvtCz0LjRgNGD0LXRgiDRgNC10LfRg9C70YzRgtCw0YIg0Lgg0L/QtdGA0LXRhdCy0LDRgtGL0LLQsNC10YIg0L7RiNC40LHQutC4LlxyXG5cdCAqINCV0YHQu9C4INGA0LXQt9GD0LvRjNGC0LDRgtC+0Lwg0Y/QstC70Y/QtdGC0YHRjyBgUmVzcG9uc2VgICjQvdCw0L/RgNC40LzQtdGALCDQuNC3IGBmZXRjaGApLCDQtNC+0L/QvtC70L3QuNGC0LXQu9GM0L3QvlxyXG5cdCAqINGA0LDQt9Cx0LjRgNCw0LXRgiDQtdCz0L4g0YfQtdGA0LXQtyB7QGxpbmsgaGFuZGxlUmVzcG9uc2V9LlxyXG5cdCAqXHJcblx0ICogQGV4YW1wbGVcclxuXHQgKiBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5hd2FpdFRyeUNhdGNoLnNlbmQoXHJcblx0ICogICBmZXRjaCgnL2FwaS91c2VycycpLFxyXG5cdCAqICAgJ1VzZXJzU2VydmljZS5sb2FkJ1xyXG5cdCAqICk7XHJcblx0ICpcclxuXHQgKiBAcGFyYW0gcHJvbWlzZSAgICAgICDQn9GA0L7QvNC40YEg0LTQu9GPINCy0YvQv9C+0LvQvdC10L3QuNGPLlxyXG5cdCAqIEBwYXJhbSBmcm9tICAgICAgICAgINCc0LXRgtC60LAg0LjRgdGC0L7Rh9C90LjQutCwINCy0YvQt9C+0LLQsCAo0LTQu9GPINC70L7Qs9C+0LIpLlxyXG5cdCAqIEBwYXJhbSBlcnJvck1lc3NhZ2UgINCi0LXQutGB0YIg0L7RiNC40LHQutC4INC00LvRjyDQu9C+0LPQsCDQv9GA0LggcmVqZWN0LlxyXG5cdCAqIEByZXR1cm5zICAgICAgICAgICAgINCg0LXQt9GD0LvRjNGC0LDRgiDQv9GA0L7QvNC40YHQsCBgVGAsINGA0LDRgdC/0LDRgNGB0LXQvdC90YvQtSDQtNCw0L3QvdGL0LUgYFJlc3BvbnNlYCDQuNC70LggYGZhbHNlYCDQv9GA0Lgg0L7RiNC40LHQutC1LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBhc3luYyBzZW5kPFQgPSBhbnk+KFxyXG5cdFx0cHJvbWlzZTogUHJvbWlzZTxUPixcclxuXHRcdGZyb206IHN0cmluZyA9ICfQndC1INGD0LrQsNC30LDQvdC+JyxcclxuXHRcdGVycm9yTWVzc2FnZTogc3RyaW5nID0gJ9Ce0YjQuNCx0LrQsCDQv9GA0Lgg0LLRi9C/0L7Qu9C90LXQvdC40LggUHJvbWlzZSdcclxuXHQpOiBQcm9taXNlPFQgfCBmYWxzZT4ge1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0Y29uc3QgcmVzdWx0ID0gYXdhaXQgcHJvbWlzZTtcclxuXHJcblx0XHRcdC8vINCe0LHRgNCw0LHQvtGC0LrQsCBSZXNwb25zZSDQvtGC0LTQtdC70YzQvdC+IC0gZmV0Y2goKSDQstC+0LfQstGA0LDRidCw0LXRgiDQvdC1INCz0L7RgtC+0LLRi9C1INC00LDQvdC90YvQtSwg0LAg0L7QsdGK0LXQutGCIFJlc3BvbnNlXHJcblx0XHRcdGlmIChyZXN1bHQgaW5zdGFuY2VvZiBSZXNwb25zZSkge1xyXG5cdFx0XHRcdHJldHVybiBhd2FpdCB0aGlzLmhhbmRsZVJlc3BvbnNlKHJlc3VsdCwgZnJvbSkgYXMgUHJvbWlzZTxUIHwgZmFsc2U+O1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHR3aGl0ZSgnYXdhaXRUcnlDYXRjaCcsICfQoNC10LfRg9C70YzRgtCw0YIg0LLRi9C/0L7Qu9C90LXQvdC40Y8gc2VuZCAo0LjQtyAnICsgZnJvbSArICcgQXdhaXRUcnlDYXRjaFNlcnZpY2UpJywgeyByZXN1bHQgfSk7XHJcblxyXG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcclxuXHRcdFx0cmVkKCdhd2FpdFRyeUNhdGNoJywgJ9Ce0YjQuNCx0LrQsCDQstGL0L/QvtC70L3QtdC90LjRjyBzZW5kICjQuNC3ICcgKyBmcm9tICsgJyBBd2FpdFRyeUNhdGNoU2VydmljZSknLCBlcnJvck1lc3NhZ2UpO1xyXG5cdFx0XHR0aGlzLl90cnlDYXRjaEVycm9ySW5mbyhlcnJvcik7XHJcblxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiDQoNCw0LfQsdC40YDQsNC10YIgYFJlc3BvbnNlYDog0L/RgNC+0LLQtdGA0Y/QtdGCINGB0YLQsNGC0YPRgSDQuCDQv9Cw0YDRgdC40YIg0YLQtdC70L4g0LrQsNC6IEpTT04uXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gcmVzcG9uc2UgINCe0LHRitC10LrRgiBgUmVzcG9uc2VgICjQvtCx0YvRh9C90L4g0YDQtdC30YPQu9GM0YLQsNGCIGBmZXRjaGApLlxyXG5cdCAqIEBwYXJhbSBmcm9tICAgICAg0JzQtdGC0LrQsCDQuNGB0YLQvtGH0L3QuNC60LAg0LLRi9C30L7QstCwICjQtNC70Y8g0LvQvtCz0L7QsikuXHJcblx0ICogQHJldHVybnMgICAgICAgICDQoNCw0YHQv9Cw0YDRgdC10L3QvdGL0LUg0LTQsNC90L3Ri9C1INC40LvQuCBgZmFsc2VgLCDQtdGB0LvQuCDRgdGC0LDRgtGD0YEg0L3QtSBvayDQu9C40LHQviDQv9Cw0YDRgdC40L3QsyDRg9C/0LDQuy5cclxuXHQgKi9cclxuXHRwcml2YXRlIGFzeW5jIGhhbmRsZVJlc3BvbnNlKHJlc3BvbnNlOiBSZXNwb25zZSwgZnJvbTogc3RyaW5nICk6IFByb21pc2U8YW55IHwgZmFsc2U+IHtcclxuXHRcdHRyeSB7XHJcblx0XHRcdGlmICghcmVzcG9uc2Uub2spIHtcclxuXHRcdFx0XHRjb25zb2xlLmVycm9yKGBIVFRQIEVycm9yOiAke3Jlc3BvbnNlLnN0YXR1c30gJHtyZXNwb25zZS5zdGF0dXNUZXh0fWApO1xyXG5cclxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHRcdH1cclxuXHRcdFx0Y29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcclxuXHRcdFx0Ly8g0KfRgtC+0LHRiyDQv9C+0LvRg9GH0LjRgtGMINC00LDQvdC90YvQtSwg0L3Rg9C20L3QviDQstGL0LfQstCw0YLRjCDQvtC00LjQvSDQuNC3INC80LXRgtC+0LTQvtCyOlxyXG5cdFx0XHQvKlxyXG5cdFx0XHRjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpOyAgICAvLyDQtNC70Y8gSlNPTiDQvtGC0LLQtdGC0LBcclxuXHRcdFx0Y29uc3QgdGV4dCA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTsgICAgLy8g0LTQu9GPINGC0LXQutGB0YLQsFxyXG5cdFx0XHRjb25zdCBibG9iID0gYXdhaXQgcmVzcG9uc2UuYmxvYigpOyAgICAvLyDQtNC70Y8g0YTQsNC50LvQvtCyL9C40LfQvtCx0YDQsNC20LXQvdC40LlcclxuXHRcdFx0Y29uc3QgZm9ybURhdGEgPSBhd2FpdCByZXNwb25zZS5mb3JtRGF0YSgpOyAvLyDQtNC70Y8gZm9ybS1kYXRhXHJcblx0XHRcdCovXHJcblxyXG5cdFx0XHR3aGl0ZSgnYXdhaXRUcnlDYXRjaCcsICfQoNC10LfRg9C70YzRgtCw0YIg0LLRi9C/0L7Qu9C90LXQvdC40Y8gc2VuZCAo0LjQtyAnICsgZnJvbSArICcgQXdhaXRUcnlDYXRjaFNlcnZpY2UpJywgZGF0YSk7XHJcblxyXG5cdFx0XHRyZXR1cm4gZGF0YTtcclxuXHRcdH0gY2F0Y2ggKHBhcnNlRXJyb3IpIHtcclxuXHRcdFx0cmVkKCdhd2FpdFRyeUNhdGNoJywgJ9Ce0YjQuNCx0LrQsCDQv9Cw0YDRgdC40L3Qs9CwINC+0YLQstC10YLQsDogJywgeyBwYXJzZUVycm9yIH0pO1xyXG5cclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iXX0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __awaiter } from 'tslib';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
3
|
import { Injectable } from '@angular/core';
|
|
4
|
-
import { red,
|
|
4
|
+
import { red, white } from 'tool-log';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Сервис для безопасного выполнения Promise: перехватывает ошибки,
|
|
@@ -75,11 +75,11 @@ class AwaitTryCatchService {
|
|
|
75
75
|
if (result instanceof Response) {
|
|
76
76
|
return yield this.handleResponse(result, from);
|
|
77
77
|
}
|
|
78
|
-
|
|
78
|
+
white('awaitTryCatch', 'Результат выполнения send (из ' + from + ' AwaitTryCatchService)', { result });
|
|
79
79
|
return result;
|
|
80
80
|
}
|
|
81
81
|
catch (error) {
|
|
82
|
-
red('awaitTryCatch', 'Ошибка выполнения send (из ' + from + '
|
|
82
|
+
red('awaitTryCatch', 'Ошибка выполнения send (из ' + from + ' AwaitTryCatchService)', errorMessage);
|
|
83
83
|
this._tryCatchErrorInfo(error);
|
|
84
84
|
return false;
|
|
85
85
|
}
|
|
@@ -107,7 +107,7 @@ class AwaitTryCatchService {
|
|
|
107
107
|
const blob = await response.blob(); // для файлов/изображений
|
|
108
108
|
const formData = await response.formData(); // для form-data
|
|
109
109
|
*/
|
|
110
|
-
|
|
110
|
+
white('awaitTryCatch', 'Результат выполнения send (из ' + from + ' AwaitTryCatchService)', data);
|
|
111
111
|
return data;
|
|
112
112
|
}
|
|
113
113
|
catch (parseError) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-utilities-ang15.mjs","sources":["../../../projects/tool-utilities-ang15/src/lib/await-try-catch.service.ts","../../../projects/tool-utilities-ang15/src/public-api.ts","../../../projects/tool-utilities-ang15/src/tool-utilities-ang15.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport {
|
|
1
|
+
{"version":3,"file":"tool-utilities-ang15.mjs","sources":["../../../projects/tool-utilities-ang15/src/lib/await-try-catch.service.ts","../../../projects/tool-utilities-ang15/src/public-api.ts","../../../projects/tool-utilities-ang15/src/tool-utilities-ang15.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport { white, red } from 'tool-log';\r\n\r\n/**\r\n * Контракт сервиса-обёртки для безопасного выполнения Promise.\r\n * Возвращает результат промиса либо `false` при ошибке (без проброса исключения).\r\n */\r\nexport interface IAwaitTryCatchService {\r\n\t/**\r\n\t * Выполняет промис и перехватывает ошибки.\r\n\t *\r\n\t * @param promise Промис, который нужно выполнить.\r\n\t * @param from Метка источника вызова (попадает в логи). По умолчанию `'Не указано'`.\r\n\t * @param errorMessage Текст ошибки для лога при reject. По умолчанию `'Ошибка при выполнении Promise'`.\r\n\t * @returns Результат промиса `T` либо `false` при ошибке.\r\n\t */\r\n\tsend<T = any>(promise: Promise<T>, from?: string, errorMessage?: string): Promise<T | false>;\r\n}\r\n\r\n/**\r\n * Сервис для безопасного выполнения Promise: перехватывает ошибки,\r\n * логирует результат и возвращает `false` вместо проброса исключения.\r\n *\r\n * @example\r\n * // Обычный промис\r\n * const user = await this.awaitTryCatch.send(\r\n * this.fetchUser(1),\r\n * 'UserComponent.load',\r\n * 'Не удалось загрузить пользователя'\r\n * );\r\n * if (user !== false) { this.user = user; }\r\n *\r\n * @example\r\n * // fetch — Response разберётся автоматически (вернёт JSON или false)\r\n * const todos = await this.awaitTryCatch.send(\r\n * fetch('https://jsonplaceholder.typicode.com/todos/1'),\r\n * 'UserComponent.todos'\r\n * );\r\n *\r\n * @example\r\n * // Reject: ошибка уйдёт в лог, вернётся false\r\n * const ok = await this.awaitTryCatch.send(\r\n * Promise.reject(new Error('boom')),\r\n * 'UserComponent.reject'\r\n * );\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class AwaitTryCatchService implements IAwaitTryCatchService {\r\n\r\n\t/**\r\n\t * Классифицирует ошибку и пишет её в лог с соответствующим префиксом.\r\n\t * Нужен, чтобы в консоли было видно тип ошибки (TypeError / ReferenceError / Error / unknown).\r\n\t *\r\n\t * @param e Перехваченное значение из `catch` (тип заранее неизвестен).\r\n\t */\r\n\tprivate _tryCatchErrorInfo(e: unknown): void {\r\n\t\tif (e instanceof TypeError) {\r\n\t\t\tred('awaitTryCatch', 'Ошибка типа: ', e.message);\r\n\t\t} else if (e instanceof ReferenceError) {\r\n\t\t\tred('awaitTryCatch', 'Ошибка ссылки: ', e.message);\r\n\t\t} else if (e instanceof Error) {\r\n\t\t\tred('awaitTryCatch', 'Ошибка: ', e.message);\r\n\t\t} else {\r\n\t\t\tred('awaitTryCatch', 'Неизвестная ошибка:', { error: e });\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Выполняет промис, логирует результат и перехватывает ошибки.\r\n\t * Если результатом является `Response` (например, из `fetch`), дополнительно\r\n\t * разбирает его через {@link handleResponse}.\r\n\t *\r\n\t * @example\r\n\t * const data = await this.awaitTryCatch.send(\r\n\t * fetch('/api/users'),\r\n\t * 'UsersService.load'\r\n\t * );\r\n\t *\r\n\t * @param promise Промис для выполнения.\r\n\t * @param from Метка источника вызова (для логов).\r\n\t * @param errorMessage Текст ошибки для лога при reject.\r\n\t * @returns Результат промиса `T`, распарсенные данные `Response` или `false` при ошибке.\r\n\t */\r\n\tpublic async send<T = any>(\r\n\t\tpromise: Promise<T>,\r\n\t\tfrom: string = 'Не указано',\r\n\t\terrorMessage: string = 'Ошибка при выполнении Promise'\r\n\t): Promise<T | false> {\r\n\t\ttry {\r\n\t\t\tconst result = await promise;\r\n\r\n\t\t\t// Обработка Response отдельно - fetch() возвращает не готовые данные, а объект Response\r\n\t\t\tif (result instanceof Response) {\r\n\t\t\t\treturn await this.handleResponse(result, from) as Promise<T | false>;\r\n\t\t\t}\r\n\r\n\t\t\twhite('awaitTryCatch', 'Результат выполнения send (из ' + from + ' AwaitTryCatchService)', { result });\r\n\r\n\t\t\treturn result;\r\n\t\t} catch (error) {\r\n\t\t\tred('awaitTryCatch', 'Ошибка выполнения send (из ' + from + ' AwaitTryCatchService)', errorMessage);\r\n\t\t\tthis._tryCatchErrorInfo(error);\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Разбирает `Response`: проверяет статус и парсит тело как JSON.\r\n\t *\r\n\t * @param response Объект `Response` (обычно результат `fetch`).\r\n\t * @param from Метка источника вызова (для логов).\r\n\t * @returns Распарсенные данные или `false`, если статус не ok либо парсинг упал.\r\n\t */\r\n\tprivate async handleResponse(response: Response, from: string ): Promise<any | false> {\r\n\t\ttry {\r\n\t\t\tif (!response.ok) {\r\n\t\t\t\tconsole.error(`HTTP Error: ${response.status} ${response.statusText}`);\r\n\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tconst data = await response.json();\r\n\t\t\t// Чтобы получить данные, нужно вызвать один из методов:\r\n\t\t\t/*\r\n\t\t\tconst data = await response.json(); // для JSON ответа\r\n\t\t\tconst text = await response.text(); // для текста\r\n\t\t\tconst blob = await response.blob(); // для файлов/изображений\r\n\t\t\tconst formData = await response.formData(); // для form-data\r\n\t\t\t*/\r\n\r\n\t\t\twhite('awaitTryCatch', 'Результат выполнения send (из ' + from + ' AwaitTryCatchService)', data);\r\n\r\n\t\t\treturn data;\r\n\t\t} catch (parseError) {\r\n\t\t\tred('awaitTryCatch', 'Ошибка парсинга ответа: ', { parseError });\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n}\r\n","/*\n * Public API Surface of tool-utilities\n */\n\nexport * from './lib/await-try-catch.service';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Injectable } from '@angular/core';
|
|
3
|
-
import { red,
|
|
3
|
+
import { red, white } from 'tool-log';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Сервис для безопасного выполнения Promise: перехватывает ошибки,
|
|
@@ -73,11 +73,11 @@ class AwaitTryCatchService {
|
|
|
73
73
|
if (result instanceof Response) {
|
|
74
74
|
return await this.handleResponse(result, from);
|
|
75
75
|
}
|
|
76
|
-
|
|
76
|
+
white('awaitTryCatch', 'Результат выполнения send (из ' + from + ' AwaitTryCatchService)', { result });
|
|
77
77
|
return result;
|
|
78
78
|
}
|
|
79
79
|
catch (error) {
|
|
80
|
-
red('awaitTryCatch', 'Ошибка выполнения send (из ' + from + '
|
|
80
|
+
red('awaitTryCatch', 'Ошибка выполнения send (из ' + from + ' AwaitTryCatchService)', errorMessage);
|
|
81
81
|
this._tryCatchErrorInfo(error);
|
|
82
82
|
return false;
|
|
83
83
|
}
|
|
@@ -103,7 +103,7 @@ class AwaitTryCatchService {
|
|
|
103
103
|
const blob = await response.blob(); // для файлов/изображений
|
|
104
104
|
const formData = await response.formData(); // для form-data
|
|
105
105
|
*/
|
|
106
|
-
|
|
106
|
+
white('awaitTryCatch', 'Результат выполнения send (из ' + from + ' AwaitTryCatchService)', data);
|
|
107
107
|
return data;
|
|
108
108
|
}
|
|
109
109
|
catch (parseError) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-utilities-ang15.mjs","sources":["../../../projects/tool-utilities-ang15/src/lib/await-try-catch.service.ts","../../../projects/tool-utilities-ang15/src/public-api.ts","../../../projects/tool-utilities-ang15/src/tool-utilities-ang15.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport {
|
|
1
|
+
{"version":3,"file":"tool-utilities-ang15.mjs","sources":["../../../projects/tool-utilities-ang15/src/lib/await-try-catch.service.ts","../../../projects/tool-utilities-ang15/src/public-api.ts","../../../projects/tool-utilities-ang15/src/tool-utilities-ang15.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport { white, red } from 'tool-log';\r\n\r\n/**\r\n * Контракт сервиса-обёртки для безопасного выполнения Promise.\r\n * Возвращает результат промиса либо `false` при ошибке (без проброса исключения).\r\n */\r\nexport interface IAwaitTryCatchService {\r\n\t/**\r\n\t * Выполняет промис и перехватывает ошибки.\r\n\t *\r\n\t * @param promise Промис, который нужно выполнить.\r\n\t * @param from Метка источника вызова (попадает в логи). По умолчанию `'Не указано'`.\r\n\t * @param errorMessage Текст ошибки для лога при reject. По умолчанию `'Ошибка при выполнении Promise'`.\r\n\t * @returns Результат промиса `T` либо `false` при ошибке.\r\n\t */\r\n\tsend<T = any>(promise: Promise<T>, from?: string, errorMessage?: string): Promise<T | false>;\r\n}\r\n\r\n/**\r\n * Сервис для безопасного выполнения Promise: перехватывает ошибки,\r\n * логирует результат и возвращает `false` вместо проброса исключения.\r\n *\r\n * @example\r\n * // Обычный промис\r\n * const user = await this.awaitTryCatch.send(\r\n * this.fetchUser(1),\r\n * 'UserComponent.load',\r\n * 'Не удалось загрузить пользователя'\r\n * );\r\n * if (user !== false) { this.user = user; }\r\n *\r\n * @example\r\n * // fetch — Response разберётся автоматически (вернёт JSON или false)\r\n * const todos = await this.awaitTryCatch.send(\r\n * fetch('https://jsonplaceholder.typicode.com/todos/1'),\r\n * 'UserComponent.todos'\r\n * );\r\n *\r\n * @example\r\n * // Reject: ошибка уйдёт в лог, вернётся false\r\n * const ok = await this.awaitTryCatch.send(\r\n * Promise.reject(new Error('boom')),\r\n * 'UserComponent.reject'\r\n * );\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class AwaitTryCatchService implements IAwaitTryCatchService {\r\n\r\n\t/**\r\n\t * Классифицирует ошибку и пишет её в лог с соответствующим префиксом.\r\n\t * Нужен, чтобы в консоли было видно тип ошибки (TypeError / ReferenceError / Error / unknown).\r\n\t *\r\n\t * @param e Перехваченное значение из `catch` (тип заранее неизвестен).\r\n\t */\r\n\tprivate _tryCatchErrorInfo(e: unknown): void {\r\n\t\tif (e instanceof TypeError) {\r\n\t\t\tred('awaitTryCatch', 'Ошибка типа: ', e.message);\r\n\t\t} else if (e instanceof ReferenceError) {\r\n\t\t\tred('awaitTryCatch', 'Ошибка ссылки: ', e.message);\r\n\t\t} else if (e instanceof Error) {\r\n\t\t\tred('awaitTryCatch', 'Ошибка: ', e.message);\r\n\t\t} else {\r\n\t\t\tred('awaitTryCatch', 'Неизвестная ошибка:', { error: e });\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Выполняет промис, логирует результат и перехватывает ошибки.\r\n\t * Если результатом является `Response` (например, из `fetch`), дополнительно\r\n\t * разбирает его через {@link handleResponse}.\r\n\t *\r\n\t * @example\r\n\t * const data = await this.awaitTryCatch.send(\r\n\t * fetch('/api/users'),\r\n\t * 'UsersService.load'\r\n\t * );\r\n\t *\r\n\t * @param promise Промис для выполнения.\r\n\t * @param from Метка источника вызова (для логов).\r\n\t * @param errorMessage Текст ошибки для лога при reject.\r\n\t * @returns Результат промиса `T`, распарсенные данные `Response` или `false` при ошибке.\r\n\t */\r\n\tpublic async send<T = any>(\r\n\t\tpromise: Promise<T>,\r\n\t\tfrom: string = 'Не указано',\r\n\t\terrorMessage: string = 'Ошибка при выполнении Promise'\r\n\t): Promise<T | false> {\r\n\t\ttry {\r\n\t\t\tconst result = await promise;\r\n\r\n\t\t\t// Обработка Response отдельно - fetch() возвращает не готовые данные, а объект Response\r\n\t\t\tif (result instanceof Response) {\r\n\t\t\t\treturn await this.handleResponse(result, from) as Promise<T | false>;\r\n\t\t\t}\r\n\r\n\t\t\twhite('awaitTryCatch', 'Результат выполнения send (из ' + from + ' AwaitTryCatchService)', { result });\r\n\r\n\t\t\treturn result;\r\n\t\t} catch (error) {\r\n\t\t\tred('awaitTryCatch', 'Ошибка выполнения send (из ' + from + ' AwaitTryCatchService)', errorMessage);\r\n\t\t\tthis._tryCatchErrorInfo(error);\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Разбирает `Response`: проверяет статус и парсит тело как JSON.\r\n\t *\r\n\t * @param response Объект `Response` (обычно результат `fetch`).\r\n\t * @param from Метка источника вызова (для логов).\r\n\t * @returns Распарсенные данные или `false`, если статус не ok либо парсинг упал.\r\n\t */\r\n\tprivate async handleResponse(response: Response, from: string ): Promise<any | false> {\r\n\t\ttry {\r\n\t\t\tif (!response.ok) {\r\n\t\t\t\tconsole.error(`HTTP Error: ${response.status} ${response.statusText}`);\r\n\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tconst data = await response.json();\r\n\t\t\t// Чтобы получить данные, нужно вызвать один из методов:\r\n\t\t\t/*\r\n\t\t\tconst data = await response.json(); // для JSON ответа\r\n\t\t\tconst text = await response.text(); // для текста\r\n\t\t\tconst blob = await response.blob(); // для файлов/изображений\r\n\t\t\tconst formData = await response.formData(); // для form-data\r\n\t\t\t*/\r\n\r\n\t\t\twhite('awaitTryCatch', 'Результат выполнения send (из ' + from + ' AwaitTryCatchService)', data);\r\n\r\n\t\t\treturn data;\r\n\t\t} catch (parseError) {\r\n\t\t\tred('awaitTryCatch', 'Ошибка парсинга ответа: ', { parseError });\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n}\r\n","/*\n * Public API Surface of tool-utilities\n */\n\nexport * from './lib/await-try-catch.service';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|