bx-rest 1.5.1 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +163 -0
- package/README.en.md +206 -3
- package/README.md +207 -3
- package/consts/part-name-methods.d.ts +1 -0
- package/esm2022/consts/part-name-methods.mjs +2 -1
- package/esm2022/functions/errors.mjs +17 -5
- package/esm2022/functions/uniqueElementCode.mjs +24 -0
- package/esm2022/map/pull/application/config.mjs +25 -29
- package/esm2022/map/pull.mjs +8 -13
- package/esm2022/public-api.mjs +3 -2
- package/esm2022/request-navvy/bizproc.mjs +18 -9
- package/esm2022/request-navvy/booking/v1/resource.mjs +2 -2
- package/esm2022/request-navvy/booking/v1/resourcetype.mjs +2 -2
- package/esm2022/request-navvy/calendar/event.mjs +1 -9
- package/esm2022/request-navvy/catalog/catalog.mjs +2 -2
- package/esm2022/request-navvy/catalog/document/element.mjs +2 -2
- package/esm2022/request-navvy/catalog/document.mjs +2 -2
- package/esm2022/request-navvy/catalog/documentcontractor.mjs +2 -2
- package/esm2022/request-navvy/catalog/extra.mjs +2 -2
- package/esm2022/request-navvy/catalog/measure.mjs +2 -2
- package/esm2022/request-navvy/catalog/price.mjs +2 -2
- package/esm2022/request-navvy/catalog/pricetype.mjs +2 -2
- package/esm2022/request-navvy/catalog/pricetypegroup.mjs +2 -2
- package/esm2022/request-navvy/catalog/pricetypelang.mjs +2 -2
- package/esm2022/request-navvy/catalog/product/offer.mjs +2 -2
- package/esm2022/request-navvy/catalog/product/service.mjs +2 -2
- package/esm2022/request-navvy/catalog/product/sku.mjs +2 -2
- package/esm2022/request-navvy/catalog/product.mjs +2 -2
- package/esm2022/request-navvy/catalog/productproperty.mjs +2 -2
- package/esm2022/request-navvy/catalog/productpropertyenum.mjs +2 -2
- package/esm2022/request-navvy/catalog/productpropertyfeature.mjs +2 -2
- package/esm2022/request-navvy/catalog/productpropertysection.mjs +2 -2
- package/esm2022/request-navvy/catalog/ratio.mjs +2 -2
- package/esm2022/request-navvy/catalog/roundingrule.mjs +2 -2
- package/esm2022/request-navvy/catalog/section.mjs +2 -2
- package/esm2022/request-navvy/catalog/store.mjs +2 -2
- package/esm2022/request-navvy/catalog/storeproduct.mjs +2 -2
- package/esm2022/request-navvy/catalog/userfield/document.mjs +2 -2
- package/esm2022/request-navvy/catalog/vat.mjs +2 -2
- package/esm2022/request-navvy/crm/activity.mjs +2 -2
- package/esm2022/request-navvy/crm/deal/recurring.mjs +2 -2
- package/esm2022/request-navvy/crm/item/product/row.mjs +2 -2
- package/esm2022/request-navvy/crm/orderentity.mjs +2 -2
- package/esm2022/request-navvy/crm/requisite/link.mjs +2 -2
- package/esm2022/request-navvy/crm/stagehistory.mjs +2 -2
- package/esm2022/request-navvy/crm/timeline/bindings.mjs +2 -2
- package/esm2022/request-navvy/disk/operation.mjs +3 -10
- package/esm2022/request-navvy/documentgenerator/document.mjs +2 -2
- package/esm2022/request-navvy/documentgenerator/numerator.mjs +2 -2
- package/esm2022/request-navvy/documentgenerator/role.mjs +2 -2
- package/esm2022/request-navvy/documentgenerator/template.mjs +2 -2
- package/esm2022/request-navvy/pull/application/config.mjs +10 -4
- package/esm2022/request-navvy/pull/application/event.mjs +23 -0
- package/esm2022/request-navvy/pull/application/push.mjs +23 -0
- package/esm2022/request-navvy/pull/channel/public.mjs +4 -4
- package/esm2022/request-navvy/pull/config.mjs +8 -4
- package/esm2022/request-navvy/pull.mjs +12 -1
- package/esm2022/request-navvy/sale/basketitem.mjs +2 -2
- package/esm2022/request-navvy/sale/basketproperties.mjs +2 -2
- package/esm2022/request-navvy/sale/businessvaluepersondomain.mjs +2 -2
- package/esm2022/request-navvy/sale/order.mjs +2 -2
- package/esm2022/request-navvy/sale/payment.mjs +2 -2
- package/esm2022/request-navvy/sale/paymentitembasket.mjs +2 -2
- package/esm2022/request-navvy/sale/paymentitemshipment.mjs +2 -2
- package/esm2022/request-navvy/sale/persontype.mjs +2 -2
- package/esm2022/request-navvy/sale/property.mjs +2 -2
- package/esm2022/request-navvy/sale/propertyrelation.mjs +2 -2
- package/esm2022/request-navvy/sale/propertyvalue.mjs +2 -2
- package/esm2022/request-navvy/sale/propertyvariant.mjs +2 -2
- package/esm2022/request-navvy/sale/shipment.mjs +2 -2
- package/esm2022/request-navvy/sale/shipmentitem.mjs +2 -2
- package/esm2022/request-navvy/sale/shipmentproperty.mjs +2 -2
- package/esm2022/request-navvy/sale/shipmentpropertyvalue.mjs +2 -2
- package/esm2022/request-navvy/sale/status.mjs +2 -2
- package/esm2022/request-navvy/sale/statuslang.mjs +2 -2
- package/esm2022/request-navvy/sale/tradebinding.mjs +2 -2
- package/esm2022/request-navvy/sale/tradeplatform.mjs +2 -2
- package/esm2022/request-navvy/socialnetwork/api/livefeed.mjs +1 -5
- package/esm2022/request-navvy/task/operation/elapseditem.mjs +51 -28
- package/esm2022/request-navvy/tasks/task.mjs +1 -119
- package/esm2022/request-navvy/userfieldtype.mjs +2 -2
- package/esm2022/rest/navvy.mjs +66 -64
- package/esm2022/services/base.mjs +1 -4
- package/esm2022/services/context.mjs +59 -0
- package/esm2022/services/http/HttpBX.mjs +52 -19
- package/esm2022/services/http/authRefresh.mjs +25 -23
- package/esm2022/services/http/fetch.mjs +45 -0
- package/esm2022/services/http/http.mjs +25 -71
- package/esm2022/services/http/middleware.mjs +203 -0
- package/esm2022/services/http/sessionKey.mjs +16 -5
- package/esm2022/services/http/transport.mjs +5 -0
- package/esm2022/services/navvy/navvy-pag-nav-keyed.mjs +31 -0
- package/esm2022/services/navvy/navvy-support.mjs +2 -15
- package/esm2022/services/navvy.mjs +32 -31
- package/esm2022/typification/rest/calendar/event/get.mjs +1 -1
- package/esm2022/typification/rest/crm/requisite.mjs +1 -1
- package/esm2022/typification/rest/crm/timeline/bindings.mjs +1 -1
- package/esm2022/typification/rest/pull/application/config/get.mjs +1 -1
- package/esm2022/typification/rest/pull/application/event/add.mjs +2 -0
- package/esm2022/typification/rest/pull/application/push/add.mjs +2 -0
- package/esm2022/typification/rest/pull/config/get.mjs +1 -1
- package/esm2022/typification/rest/pull.mjs +3 -1
- package/esm2022/typification/rest/tasks/task/get.mjs +1 -1
- package/esm2022/typification/settings.mjs +1 -1
- package/fesm2022/bx-rest.mjs +800 -588
- package/fesm2022/bx-rest.mjs.map +1 -1
- package/functions/errors.d.ts +9 -0
- package/functions/uniqueElementCode.d.ts +12 -0
- package/map/pull/application/config.d.ts +3 -0
- package/package.json +1 -1
- package/public-api.d.ts +4 -2
- package/request-navvy/booking/v1/resource.d.ts +1 -1
- package/request-navvy/booking/v1/resourcetype.d.ts +1 -1
- package/request-navvy/catalog/catalog.d.ts +1 -1
- package/request-navvy/catalog/document/element.d.ts +1 -1
- package/request-navvy/catalog/document.d.ts +1 -1
- package/request-navvy/catalog/documentcontractor.d.ts +1 -1
- package/request-navvy/catalog/extra.d.ts +1 -1
- package/request-navvy/catalog/measure.d.ts +1 -1
- package/request-navvy/catalog/price.d.ts +1 -1
- package/request-navvy/catalog/pricetype.d.ts +1 -1
- package/request-navvy/catalog/pricetypegroup.d.ts +1 -1
- package/request-navvy/catalog/pricetypelang.d.ts +1 -1
- package/request-navvy/catalog/product/offer.d.ts +1 -1
- package/request-navvy/catalog/product/service.d.ts +1 -1
- package/request-navvy/catalog/product/sku.d.ts +1 -1
- package/request-navvy/catalog/product.d.ts +1 -1
- package/request-navvy/catalog/productproperty.d.ts +1 -1
- package/request-navvy/catalog/productpropertyenum.d.ts +1 -1
- package/request-navvy/catalog/productpropertyfeature.d.ts +1 -1
- package/request-navvy/catalog/productpropertysection.d.ts +1 -1
- package/request-navvy/catalog/ratio.d.ts +1 -1
- package/request-navvy/catalog/roundingrule.d.ts +1 -1
- package/request-navvy/catalog/section.d.ts +1 -1
- package/request-navvy/catalog/store.d.ts +1 -1
- package/request-navvy/catalog/storeproduct.d.ts +1 -1
- package/request-navvy/catalog/userfield/document.d.ts +1 -1
- package/request-navvy/catalog/vat.d.ts +1 -1
- package/request-navvy/crm/activity.d.ts +1 -1
- package/request-navvy/crm/deal/recurring.d.ts +1 -1
- package/request-navvy/crm/item/product/row.d.ts +5 -1
- package/request-navvy/crm/orderentity.d.ts +5 -1
- package/request-navvy/crm/requisite/link.d.ts +1 -1
- package/request-navvy/crm/stagehistory.d.ts +5 -1
- package/request-navvy/crm/timeline/bindings.d.ts +1 -1
- package/request-navvy/documentgenerator/document.d.ts +1 -1
- package/request-navvy/documentgenerator/numerator.d.ts +1 -1
- package/request-navvy/documentgenerator/role.d.ts +1 -1
- package/request-navvy/documentgenerator/template.d.ts +1 -1
- package/request-navvy/pull/application/config.d.ts +9 -3
- package/request-navvy/pull/application/event.d.ts +17 -0
- package/request-navvy/pull/application/push.d.ts +17 -0
- package/request-navvy/pull/config.d.ts +7 -3
- package/request-navvy/pull.d.ts +11 -0
- package/request-navvy/sale/basketitem.d.ts +1 -1
- package/request-navvy/sale/basketproperties.d.ts +1 -1
- package/request-navvy/sale/businessvaluepersondomain.d.ts +1 -1
- package/request-navvy/sale/order.d.ts +1 -1
- package/request-navvy/sale/payment.d.ts +1 -1
- package/request-navvy/sale/paymentitembasket.d.ts +1 -1
- package/request-navvy/sale/paymentitemshipment.d.ts +1 -1
- package/request-navvy/sale/persontype.d.ts +1 -1
- package/request-navvy/sale/property.d.ts +1 -1
- package/request-navvy/sale/propertyrelation.d.ts +1 -1
- package/request-navvy/sale/propertyvalue.d.ts +1 -1
- package/request-navvy/sale/propertyvariant.d.ts +1 -1
- package/request-navvy/sale/shipment.d.ts +1 -1
- package/request-navvy/sale/shipmentitem.d.ts +1 -1
- package/request-navvy/sale/shipmentproperty.d.ts +1 -1
- package/request-navvy/sale/shipmentpropertyvalue.d.ts +1 -1
- package/request-navvy/sale/status.d.ts +1 -1
- package/request-navvy/sale/statuslang.d.ts +1 -1
- package/request-navvy/sale/tradebinding.d.ts +1 -1
- package/request-navvy/sale/tradeplatform.d.ts +1 -1
- package/request-navvy/task/operation/elapseditem.d.ts +15 -10
- package/request-navvy/userfieldtype.d.ts +1 -1
- package/rest/navvy.d.ts +9 -0
- package/services/context.d.ts +43 -0
- package/services/http/HttpBX.d.ts +11 -0
- package/services/http/authRefresh.d.ts +5 -1
- package/services/http/fetch.d.ts +22 -0
- package/services/http/http.d.ts +20 -9
- package/services/http/middleware.d.ts +32 -0
- package/services/http/sessionKey.d.ts +10 -0
- package/services/http/transport.d.ts +28 -0
- package/services/navvy/navvy-pag-nav-keyed.d.ts +18 -0
- package/services/navvy/navvy-support.d.ts +0 -10
- package/services/navvy.d.ts +17 -0
- package/typification/rest/calendar/event/get.d.ts +1 -1
- package/typification/rest/crm/requisite.d.ts +1 -1
- package/typification/rest/crm/timeline/bindings.d.ts +2 -1
- package/typification/rest/pull/application/config/get.d.ts +1 -1
- package/typification/rest/pull/application/event/add.d.ts +24 -0
- package/typification/rest/pull/application/push/add.d.ts +16 -0
- package/typification/rest/pull/config/get.d.ts +28 -3
- package/typification/rest/pull.d.ts +2 -0
- package/typification/settings.d.ts +68 -0
- package/esm2022/functions/errorHandler.mjs +0 -34
- package/esm2022/request/app.mjs +0 -13
- package/esm2022/request/bizproc/activity.mjs +0 -3
- package/esm2022/request/bizproc/event.mjs +0 -3
- package/esm2022/request/bizproc/robot.mjs +0 -3
- package/esm2022/request/bizproc/task.mjs +0 -3
- package/esm2022/request/bizproc/workflow/instance.mjs +0 -3
- package/esm2022/request/bizproc/workflow/template.mjs +0 -3
- package/esm2022/request/bizproc/workflow.mjs +0 -18
- package/esm2022/request/bizproc.mjs +0 -15
- package/esm2022/request/department.mjs +0 -26
- package/esm2022/request/disk/attachedObject.mjs +0 -14
- package/esm2022/request/disk/file.mjs +0 -18
- package/esm2022/request/disk/folder.mjs +0 -117
- package/esm2022/request/disk.mjs +0 -11
- package/esm2022/request/lists/element.mjs +0 -18
- package/esm2022/request/lists/field.mjs +0 -35
- package/esm2022/request/lists.mjs +0 -86
- package/esm2022/request/log/blogcomment.mjs +0 -3
- package/esm2022/request/log/blogpost.mjs +0 -18
- package/esm2022/request/log.mjs +0 -9
- package/esm2022/request/pull/application/config.mjs +0 -11
- package/esm2022/request/pull/channel/public.mjs +0 -18
- package/esm2022/request/pull/config.mjs +0 -13
- package/esm2022/request/pull.mjs +0 -11
- package/esm2022/request/server.mjs +0 -14
- package/esm2022/request/socialnetwork/api/contentview.mjs +0 -14
- package/esm2022/request/socialnetwork/api/livefeed/blogpost/important.mjs +0 -14
- package/esm2022/request/socialnetwork/api/livefeed/blogpost.mjs +0 -7
- package/esm2022/request/socialnetwork/api/livefeed.mjs +0 -7
- package/esm2022/request/socialnetwork/api.mjs +0 -9
- package/esm2022/request/socialnetwork.mjs +0 -8
- package/esm2022/request/sonet_group.mjs +0 -24
- package/esm2022/request/task/commentitem.mjs +0 -32
- package/esm2022/request/task/elapseditem.mjs +0 -40
- package/esm2022/request/task/item/userfield.mjs +0 -14
- package/esm2022/request/task/item.mjs +0 -7
- package/esm2022/request/task/planner.mjs +0 -11
- package/esm2022/request/task.mjs +0 -13
- package/esm2022/request/tasks/task/result.mjs +0 -22
- package/esm2022/request/tasks/task.mjs +0 -110
- package/esm2022/request/tasks.mjs +0 -7
- package/esm2022/request/user/userfield.mjs +0 -14
- package/esm2022/request/user.mjs +0 -40
- package/esm2022/rest/base.mjs +0 -39
- package/esm2022/services/http/HttpData.mjs +0 -77
- package/esm2022/services/http/base/base.mjs +0 -4
- package/esm2022/services/http/httpNavvy.mjs +0 -14
- package/esm2022/typification/base/answers.mjs +0 -438
- package/esm2022/typification/base/params.mjs +0 -525
- package/esm2022/typification/base/workpiece/methods-list.mjs +0 -2
- package/esm2022/typification/base/workpiece/methods.mjs +0 -2
- package/functions/errorHandler.d.ts +0 -10
- package/request/app.d.ts +0 -8
- package/request/bizproc/activity.d.ts +0 -2
- package/request/bizproc/event.d.ts +0 -2
- package/request/bizproc/robot.d.ts +0 -2
- package/request/bizproc/task.d.ts +0 -2
- package/request/bizproc/workflow/instance.d.ts +0 -2
- package/request/bizproc/workflow/template.d.ts +0 -2
- package/request/bizproc/workflow.d.ts +0 -13
- package/request/bizproc.d.ts +0 -12
- package/request/department.d.ts +0 -18
- package/request/disk/attachedObject.d.ts +0 -8
- package/request/disk/file.d.ts +0 -10
- package/request/disk/folder.d.ts +0 -96
- package/request/disk.d.ts +0 -8
- package/request/lists/element.d.ts +0 -11
- package/request/lists/field.d.ts +0 -11
- package/request/lists.d.ts +0 -31
- package/request/log/blogcomment.d.ts +0 -2
- package/request/log/blogpost.d.ts +0 -11
- package/request/log.d.ts +0 -6
- package/request/pull/application/config.d.ts +0 -5
- package/request/pull/channel/public.d.ts +0 -5
- package/request/pull/config.d.ts +0 -7
- package/request/pull.d.ts +0 -8
- package/request/server.d.ts +0 -7
- package/request/socialnetwork/api/contentview.d.ts +0 -6
- package/request/socialnetwork/api/livefeed/blogpost/important.d.ts +0 -6
- package/request/socialnetwork/api/livefeed/blogpost.d.ts +0 -4
- package/request/socialnetwork/api/livefeed.d.ts +0 -4
- package/request/socialnetwork/api.d.ts +0 -6
- package/request/socialnetwork.d.ts +0 -4
- package/request/sonet_group.d.ts +0 -8
- package/request/task/commentitem.d.ts +0 -23
- package/request/task/elapseditem.d.ts +0 -26
- package/request/task/item/userfield.d.ts +0 -6
- package/request/task/item.d.ts +0 -4
- package/request/task/planner.d.ts +0 -4
- package/request/task.d.ts +0 -10
- package/request/tasks/task/result.d.ts +0 -13
- package/request/tasks/task.d.ts +0 -37
- package/request/tasks.d.ts +0 -4
- package/request/user/userfield.d.ts +0 -8
- package/request/user.d.ts +0 -24
- package/rest/base.d.ts +0 -33
- package/services/http/HttpData.d.ts +0 -7
- package/services/http/base/base.d.ts +0 -7
- package/services/http/httpNavvy.d.ts +0 -10
- package/typification/base/answers.d.ts +0 -12
- package/typification/base/params.d.ts +0 -16
- package/typification/base/workpiece/methods-list.d.ts +0 -247
- package/typification/base/workpiece/methods.d.ts +0 -20
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { throwError, forkJoin,
|
|
1
|
+
import { Observable, throwError, forkJoin, defer } from 'rxjs';
|
|
2
2
|
import clone from 'just-clone';
|
|
3
3
|
import { HttpServices } from './http';
|
|
4
4
|
import flatten from 'just-flatten-it';
|
|
@@ -7,6 +7,9 @@ import { switchMap } from 'rxjs/operators';
|
|
|
7
7
|
import { prepareBaseAddress } from '../base';
|
|
8
8
|
import { serializeBitrixParams as stringifyBitrixParams } from '../../functions/serializeBitrixParams';
|
|
9
9
|
import { withAuthRefresh } from './authRefresh';
|
|
10
|
+
import { composeMiddleware } from './transport';
|
|
11
|
+
import { builtInMiddleware } from './middleware';
|
|
12
|
+
import { fetchSend } from './fetch';
|
|
10
13
|
export class HttpBXServices extends HttpServices {
|
|
11
14
|
/**
|
|
12
15
|
* Не считайте этот метод образцом/финальным API.
|
|
@@ -71,8 +74,8 @@ export class HttpBXServices extends HttpServices {
|
|
|
71
74
|
get(name, params = {}, headers) {
|
|
72
75
|
return this.httpGet(this.getNameMethod(name), params, undefined, headers);
|
|
73
76
|
}
|
|
74
|
-
// settings
|
|
75
|
-
//
|
|
77
|
+
// settings не используется и оставлен ради прежней сигнатуры: headers
|
|
78
|
+
// остаётся четвёртым параметром у httpPost и httpGet.
|
|
76
79
|
httpPost(url, params = {}, settings, headers) {
|
|
77
80
|
// defer() откладывает всё содержимое (в том числе чтение BXRestSettings
|
|
78
81
|
// через this.session.*) до реальной подписки — иначе даже с "живым"
|
|
@@ -103,20 +106,19 @@ export class HttpBXServices extends HttpServices {
|
|
|
103
106
|
return throwError(() => this.session.getBaseUrlError('post'));
|
|
104
107
|
}
|
|
105
108
|
const fullUrl = prepareBaseAddress(baseUrl) + url;
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
}).then((response) => response.data));
|
|
113
|
-
}
|
|
114
|
-
return from(this.axiosInstance.post(fullUrl, paramsClone, {
|
|
109
|
+
// sessid — тело x-www-form-urlencoded, остальные ключи — JSON
|
|
110
|
+
const urlencoded = key === 'sessid';
|
|
111
|
+
return this.send({
|
|
112
|
+
method: 'POST',
|
|
113
|
+
url: fullUrl,
|
|
114
|
+
data: urlencoded ? this.serializeBitrixParams(paramsClone) : paramsClone,
|
|
115
115
|
withCredentials: this.session.getWithCredentials(),
|
|
116
|
-
headers: this.buildHeaders(headers, {
|
|
117
|
-
|
|
116
|
+
headers: this.buildHeaders(headers, {
|
|
117
|
+
'Content-Type': urlencoded ? 'application/x-www-form-urlencoded' : 'application/json'
|
|
118
|
+
}),
|
|
119
|
+
});
|
|
118
120
|
}));
|
|
119
|
-
}));
|
|
121
|
+
}), this.session.ctx);
|
|
120
122
|
}
|
|
121
123
|
httpGet(url, params = {}, settings, headers) {
|
|
122
124
|
// Та же причина, что и у httpPost выше: откладываем чтение BXRestSettings
|
|
@@ -144,12 +146,43 @@ export class HttpBXServices extends HttpServices {
|
|
|
144
146
|
const fullUrl = prepareBaseAddress(baseUrl) + url;
|
|
145
147
|
const queryString = this.serializeBitrixParams(paramsClone);
|
|
146
148
|
const finalUrl = `${fullUrl}?${queryString}`;
|
|
147
|
-
return
|
|
149
|
+
return this.send({
|
|
150
|
+
method: 'GET',
|
|
151
|
+
url: finalUrl,
|
|
148
152
|
withCredentials: this.session.getWithCredentials(),
|
|
149
153
|
headers: this.buildHeaders(headers),
|
|
150
|
-
})
|
|
154
|
+
});
|
|
151
155
|
}));
|
|
152
|
-
}));
|
|
156
|
+
}), this.session.ctx);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Отправка через шаги из настроек: `retryOnQueryLimit`, `throttle`,
|
|
160
|
+
* `timeout`, `logRequests`, затем `middleware`; последним идёт транспорт
|
|
161
|
+
* клиента — axios или `fetch` (`transport`). Настройки читаются при
|
|
162
|
+
* подписке. Отписка отменяет HTTP-запрос (AbortSignal). Ошибка транспорта
|
|
163
|
+
* уходит дальше как есть: у axios в ней весь запрос, вместе с токеном и
|
|
164
|
+
* секретом вебхука (см. README, «Обработка ошибок»).
|
|
165
|
+
*/
|
|
166
|
+
send(config) {
|
|
167
|
+
return new Observable(subscriber => {
|
|
168
|
+
const controller = new AbortController();
|
|
169
|
+
const ctx = this.session.ctx;
|
|
170
|
+
const settings = ctx.settings;
|
|
171
|
+
const send = composeMiddleware([...builtInMiddleware(settings, ctx), ...this.session.getMiddleware()], (settings.transport === 'fetch') ? fetchSend : request => this.axiosSend(request));
|
|
172
|
+
send({ ...config, signal: controller.signal }).then(data => {
|
|
173
|
+
subscriber.next(data);
|
|
174
|
+
subscriber.complete();
|
|
175
|
+
}, (error) => subscriber.error(error));
|
|
176
|
+
return () => controller.abort();
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
/** Транспорт по умолчанию: axios клиента, как и раньше через post()/get(). */
|
|
180
|
+
axiosSend(config) {
|
|
181
|
+
const options = { headers: config.headers, withCredentials: config.withCredentials, signal: config.signal };
|
|
182
|
+
const request = (config.method === 'GET')
|
|
183
|
+
? this.axiosInstance.get(config.url, options)
|
|
184
|
+
: this.axiosInstance.post(config.url, config.data, options);
|
|
185
|
+
return request.then(response => response.data);
|
|
153
186
|
}
|
|
154
187
|
/**
|
|
155
188
|
* Заголовки запроса: `BXRestSettings.headers`, поверх них — заголовки
|
|
@@ -167,4 +200,4 @@ export class HttpBXServices extends HttpServices {
|
|
|
167
200
|
return arr.join('.');
|
|
168
201
|
}
|
|
169
202
|
}
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cEJYLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYngtcmVzdC9zcmMvc2VydmljZXMvaHR0cC9IdHRwQlgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNwRSxPQUFPLEtBQUssTUFBTSxZQUFZLENBQUE7QUFDOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUtyQyxPQUFPLE9BQU8sTUFBTSxpQkFBaUIsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsSUFBSSxxQkFBcUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFBO0FBRXRHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFL0MsTUFBTSxPQUFPLGNBQWUsU0FBUSxZQUFZO0lBRTlDOzs7O09BSUc7SUFDSCxNQUFNLENBQU8sS0FBeUQ7UUFFcEUsSUFBSSxZQUFZLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBUyxJQUFJLENBQUMsWUFBWSxDQUFJLEtBQUssQ0FBQyxDQUFDLENBQUE7UUFDdEUsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFBLENBQUMsbUJBQW1CO1FBQ25DLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQSxDQUFDLDJDQUEyQztRQUM3RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENB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QixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yLCBmb3JrSm9pbiwgZnJvbSwgZGVmZXIgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgY2xvbmUgZnJvbSAnanVzdC1jbG9uZSdcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2VzIH0gZnJvbSAnLi9odHRwJ1xyXG5pbXBvcnQge1xyXG4gIGlCYXRjaFJlcXVlc3RBbnN3ZXIsIGlCYXRjaFJlcXVlc3RQYXJhbSwgaUJhdGNoUmVxdWVzdFBhcmFtQXJyLCBpQmF0Y2hSZXF1ZXN0UGFyYW1IdHRwLCBrZXlCYXRjaCxcclxufSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vcmVzdC9iYXRjaC9iYXRjaFJlcXVlc3RQYXJhbSdcclxuaW1wb3J0IHsgaUJYUmVzdEFuc3dlciB9IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L2Jhc2UvYW5zd2VyJ1xyXG5pbXBvcnQgZmxhdHRlbiBmcm9tICdqdXN0LWZsYXR0ZW4taXQnXHJcbmltcG9ydCB7IGluc3RhbmNlT2ZpQlhSZXN0QW5zd2VyU3VjY2VzcyB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9tYXBSZXN1bHQnXHJcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xyXG5pbXBvcnQgeyBwcmVwYXJlQmFzZUFkZHJlc3MgfSBmcm9tICcuLi9iYXNlJ1xyXG5pbXBvcnQgeyBzZXJpYWxpemVCaXRyaXhQYXJhbXMgYXMgc3RyaW5naWZ5Qml0cml4UGFyYW1zIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL3NlcmlhbGl6ZUJpdHJpeFBhcmFtcydcclxuaW1wb3J0IHsgaUh0dHBQYXJhbVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3Qvc2V0dGluZ3MnXHJcbmltcG9ydCB7IHdpdGhBdXRoUmVmcmVzaCB9IGZyb20gJy4vYXV0aFJlZnJlc2gnXHJcblxyXG5leHBvcnQgY2xhc3MgSHR0cEJYU2VydmljZXMgZXh0ZW5kcyBIdHRwU2VydmljZXMge1xyXG5cclxuICAvKipcclxuICAgKiDQndC1INGB0YfQuNGC0LDQudGC0LUg0Y3RgtC+0YIg0LzQtdGC0L7QtCDQvtCx0YDQsNC30YbQvtC8L9GE0LjQvdCw0LvRjNC90YvQvCBBUEkuXHJcbiAgICogVE9ETzog0KPQtNCw0LvQuNGC0Ywg0LTQsNC90L3Ri9C5INC80LXRgtC+0LQg0L/QvtGB0LvQtSDRgNC10LDQu9C40LfQsNGG0LjQuCDQtdCz0L4g0LIg0YDQsNC30LTQtdC70LUgTmF2dnlcclxuICAgKiBAcGFyYW0gcGFyYW1cclxuICAgKi9cclxuICBicmFuY2g8VCwgQT4ocGFyYW06IGlCYXRjaFJlcXVlc3RQYXJhbUFycjxUPiB8IGlCYXRjaFJlcXVlc3RQYXJhbTxUPltdKVxyXG4gICAgOiBPYnNlcnZhYmxlPGlCYXRjaFJlcXVlc3RBbnN3ZXI8QT5bXSB8IHVuZGVmaW5lZD4ge1xyXG4gICAgbGV0IHByZXBhcmVQYXJhbSA9IE9iamVjdC5lbnRyaWVzPHN0cmluZz4odGhpcy5wcmVwYXJlQmF0Y2g8VD4ocGFyYW0pKVxyXG4gICAgY29uc3Qgc2l6ZSA9IDUwIC8vINCx0L7Qu9GM0YjQtSDQvdC1INC+0YLQtNCw0YHRglxyXG4gICAgbGV0IHN1YmFycmF5ID0gW10gLy/QvNCw0YHRgdC40LIg0LIg0LrQvtGC0L7RgNGL0Lkg0LHRg9C00LXRgiDQstGL0LLQtdC00LXQvSDRgNC10LfRg9C70YzRgtCw0YIuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IE1hdGguY2VpbChwcmVwYXJlUGFyYW0ubGVuZ3RoIC8gc2l6ZSk7IGkrKykge1xyXG4gICAgICBzdWJhcnJheVtpXSA9IHByZXBhcmVQYXJhbS5zbGljZSgoaSAqIHNpemUpLCAoaSAqIHNpemUpICsgc2l6ZSlcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZm9ya0pvaW4oXHJcbiAgICAgIHN1YmFycmF5Lm1hcChpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwUG9zdCgnYmF0Y2guanNvbicsIHtcclxuICAgICAgICAgIGhhbHQ6IDAsXHJcbiAgICAgICAgICBjbWQ6IE9iamVjdC5hc3NpZ24oe30sIC4uLmkubWFwKHggPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1t4WzBdXTogeFsxXX1cclxuICAgICAgICAgIH0pKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICApIGFzIE9ic2VydmFibGU8aUJhdGNoUmVxdWVzdEFuc3dlcjxBPltdPlxyXG4gIH1cclxuXHJcbiAgcHJlcGFyZUJhdGNoPFQ+KHBhcmFtOiBpQmF0Y2hSZXF1ZXN0UGFyYW1BcnI8VD4gfCBpQmF0Y2hSZXF1ZXN0UGFyYW08VD5bXSk6IGlCYXRjaFJlcXVlc3RQYXJhbUh0dHAge1xyXG4gICAgbGV0IHJlczogaUJhdGNoUmVxdWVzdFBhcmFtSHR0cCA9IE9iamVjdC5rZXlzKHBhcmFtKS5yZWR1Y2UoXHJcbiAgICAgIChvYmosIGtleSkgPT4ge1xyXG4gICAgICAgIG9ialtrZXldID0gJydcclxuICAgICAgICByZXR1cm4gb2JqXHJcbiAgICAgIH0sXHJcbiAgICAgIHt9IGFzIGlCYXRjaFJlcXVlc3RQYXJhbUh0dHBcclxuICAgIClcclxuICAgIGZvciAobGV0IGtleSBpbiBwYXJhbSkge1xyXG4gICAgICBpZiAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGtleSA9PT0gJ251bWJlcicgJiYgcGFyYW1ba2V5XS5wYXJhbSkge1xyXG4gICAgICAgIHJlc1trZXldID0gcGFyYW1ba2V5XS5uYW1lICsgJz8nICsgc3RyaW5naWZ5Qml0cml4UGFyYW1zKHBhcmFtW2tleV0ucGFyYW0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXNcclxuICB9XHJcblxyXG4gIG1hcEJyYW5jaFJlc3VsdDxUPihyZXM6IGlCYXRjaFJlcXVlc3RBbnN3ZXI8VD5bXSkge1xyXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oW10sIC4uLnJlcy5tYXAoaSA9PlxyXG4gICAgICAoaW5zdGFuY2VPZmlCWFJlc3RBbnN3ZXJTdWNjZXNzKGkpICYmIGluc3RhbmNlT2ZpQlhSZXN0QW5zd2VyU3VjY2VzcyhpLnJlc3VsdCkpID8gaS5yZXN1bHQucmVzdWx0IDogdW5kZWZpbmVkKVxyXG4gICAgKSBhcyBSZWNvcmQ8a2V5QmF0Y2gsIFQ+XHJcbiAgfVxyXG5cclxuICBtYXBCcmFuY2hSZXN1bHRXaXRob3V0S2V5PFQ+KHJlczogaUJhdGNoUmVxdWVzdEFuc3dlcjxUPltdKTogVFtdIHtcclxuICAgIHJldHVybiBmbGF0dGVuPFQ+KE9iamVjdC5hc3NpZ24oW10sIC4uLnJlcy5tYXAoaSA9PlxyXG4gICAgICAoaW5zdGFuY2VPZmlCWFJlc3RBbnN3ZXJTdWNjZXNzKGkpICYmIGluc3RhbmNlT2ZpQlhSZXN0QW5zd2VyU3VjY2VzcyhpLnJlc3VsdCkpXHJcbiAgICAgICAgPyBpLnJlc3VsdC5yZXN1bHRcclxuICAgICAgICA6IHVuZGVmaW5lZCkpXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDQntGB0L3QvtCy0L3QvtC5INC80LXRgtC+0LQg0LTQu9GPINC30LDQv9GA0L7RgdC+0LJcclxuICAgKlxyXG4gICAqIEBwYXJhbSBuYW1lXHJcbiAgICogQHBhcmFtIHBhcmFtc1xyXG4gICAqIEBwYXJhbSByZXN0QXBpXHJcbiAgICogQHBhcmFtIGhlYWRlcnMg0LfQsNCz0L7Qu9C+0LLQutC4INGC0L7Qu9GM0LrQviDQtNC70Y8g0Y3RgtC+0LPQviDQt9Cw0L/RgNC+0YHQsCwg0L/QvtCy0LXRgNGFIGBCWFJlc3RTZXR0aW5ncy5oZWFkZXJzYFxyXG4gICAqL1xyXG4gIHBvc3Q8VD4obmFtZTogc3RyaW5nW10sIHBhcmFtczogYW55ID0ge30sIHJlc3RBcGkgPSBmYWxzZSwgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pIHtcclxuICAgIGNvbnN0IG1ldGhvZCA9IHRoaXMuZ2V0TmFtZU1ldGhvZChuYW1lKVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFBvc3Q8aUJYUmVzdEFuc3dlcjxUPj4ocmVzdEFwaSA/IGBhcGkvJHttZXRob2R9YCA6IG1ldGhvZCwgcGFyYW1zLCB1bmRlZmluZWQsIGhlYWRlcnMpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDQktGC0L7RgNC+0YHRgtC10L/QtdC90L3Ri9C5INC80LXRgtC+0LQg0LTQu9GPINC30LDQv9GA0L7RgdC+0LIuINCf0L4g0LLQvtC30LzQvtC20L3QvtGB0YLQuCDQu9GD0YfRiNC1INC90LUg0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMXHJcbiAgICpcclxuICAgKiBAcGFyYW0gbmFtZVxyXG4gICAqIEBwYXJhbSBwYXJhbXNcclxuICAgKiBAcGFyYW0gaGVhZGVycyDQt9Cw0LPQvtC70L7QstC60Lgg0YLQvtC70YzQutC+INC00LvRjyDRjdGC0L7Qs9C+INC30LDQv9GA0L7RgdCwLCDQv9C+0LLQtdGA0YUgYEJYUmVzdFNldHRpbmdzLmhlYWRlcnNgXHJcbiAgICovXHJcbiAgZ2V0PFQ+KG5hbWU6IHN0cmluZ1tdLCBwYXJhbXM6IGFueSA9IHt9LCBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cEdldDxpQlhSZXN0QW5zd2VyPFQ+Pih0aGlzLmdldE5hbWVNZXRob2QobmFtZSksIHBhcmFtcywgdW5kZWZpbmVkLCBoZWFkZXJzKVxyXG4gIH1cclxuXHJcbiAgLy8gc2V0dGluZ3Mg4oCUINGC0L7Qu9GM0LrQviDQtNC70Y8g0YHQvtCy0LzQtdGB0YLQuNC80L7RgdGC0Lgg0YHQuNCz0L3QsNGC0YPRgNGLINGBIEh0dHBTZXJ2aWNlczog0LfQtNC10YHRjCDRgtC10LvQvlxyXG4gIC8vINGD0YXQvtC00LjRgiBKU09OLdC+0LwvdXJsZW5jb2RlZCwg0Lgg0L/QtdGA0LXRgdGH0ZHRgiDQtNCw0YIg0LjQtyBpSHR0cFBhcmFtU2V0dGluZ3Mg0L3QtSDQvdGD0LbQtdC9LlxyXG4gIG92ZXJyaWRlIGh0dHBQb3N0PFQ+KFxyXG4gICAgdXJsOiBzdHJpbmcsXHJcbiAgICBwYXJhbXM6IGFueSA9IHt9LFxyXG4gICAgc2V0dGluZ3M/OiBpSHR0cFBhcmFtU2V0dGluZ3MsXHJcbiAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxyXG4gICk6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xyXG4gICAgLy8gZGVmZXIoKSDQvtGC0LrQu9Cw0LTRi9Cy0LDQtdGCINCy0YHRkSDRgdC+0LTQtdGA0LbQuNC80L7QtSAo0LIg0YLQvtC8INGH0LjRgdC70LUg0YfRgtC10L3QuNC1IEJYUmVzdFNldHRpbmdzXHJcbiAgICAvLyDRh9C10YDQtdC3IHRoaXMuc2Vzc2lvbi4qKSDQtNC+INGA0LXQsNC70YzQvdC+0Lkg0L/QvtC00L/QuNGB0LrQuCDigJQg0LjQvdCw0YfQtSDQtNCw0LbQtSDRgSBcItC20LjQstGL0LxcIlxyXG4gICAgLy8g0LPQtdGC0YLQtdGA0L7QvCDQsiBTZXNzaW9uS2V5U2VydmljZXMg0L3QsNGB0YLRgNC+0LnQutC4INGH0LjRgtCw0LvQuNGB0Ywg0LHRiyDQsiDQvNC+0LzQtdC90YIg0LLRi9C30L7QstCwXHJcbiAgICAvLyAucmVzKCksINCwINC90LUg0LIg0LzQvtC80LXQvdGCIHN1YnNjcmliZSgpL2ZpcnN0VmFsdWVGcm9tKCksINGH0YLQviDQuCDQvtCx0LXRidCw0L3QvlxyXG4gICAgLy8g0LIgUkVBRE1FINC60LDQuiDQv9C+0LLQtdC00LXQvdC40LUgXCLQu9C10L3QuNCy0L7Qs9C+XCIgUkVTVC3QstGL0LfQvtCy0LAuXHJcbiAgICAvL1xyXG4gICAgLy8gd2l0aEF1dGhSZWZyZXNoKCkg0L/QvtCy0YLQvtGA0Y/QtdGCINC30LDQv9GA0L7RgSDQv9C+0YHQu9C1IEJYUmVzdFNldHRpbmdzLmF1dGgucmVmcmVzaCDigJRcclxuICAgIC8vINC/0L7QstGC0L7RgNC90L7QuSDQv9C+0LTQv9C40YHQutC+0Lkg0L3QsCDRjdGC0L7RgiDQttC1IGRlZmVyKCksINC/0L7RjdGC0L7QvNGDINC/0L7QstGC0L7RgCDQt9Cw0L3QvtCy0L4g0YfQuNGC0LDQtdGCXHJcbiAgICAvLyDRgtC+0LrQtdC9LCDQsNC00YDQtdGBINC4INC30LDQs9C+0LvQvtCy0LrQuC4g0KfQtdGA0LXQtyBodHRwUG9zdC9odHRwR2V0INC40LTRg9GCINCy0YHQtSDQt9Cw0L/RgNC+0YHRi1xyXG4gICAgLy8g0LHQuNCx0LvQuNC+0YLQtdC60LggKHBvc3QvZ2V0LCBiYXRjaCwg0LLRgdC1INCy0LjQtNGLIE5hdnZ5LdC30LDQv9GA0L7RgdC+0LIpLCDRgtCw0Log0YfRgtC+INC/0L7QstGC0L7RgFxyXG4gICAgLy8g0LLRgdGC0YDQvtC10L0g0YLQvtC70YzQutC+INC30LTQtdGB0YwuXHJcbiAgICByZXR1cm4gd2l0aEF1dGhSZWZyZXNoKGRlZmVyKCgpID0+IHtcclxuICAgICAgY29uc3QgcGFyYW1zQ2xvbmUgPSBjbG9uZShwYXJhbXMpXHJcbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuc2Vzc2lvbi5nZXRLZXlBdXRoKClcclxuICAgICAgY29uc3QgYXV0aCA9IHRoaXMuc2Vzc2lvbi5nZXRBdXRoUGFyYW1zKClcclxuICAgICAgY29uc3QgY2hlY2tJc09uID0gdGhpcy5zZXNzaW9uLmdldENoZWNrQXV0aFBhcmFtc0lzT24oKVxyXG5cclxuICAgICAgaWYgKGNoZWNrSXNPbikge1xyXG4gICAgICAgIGlmICghYXV0aCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gdGhpcy5zZXNzaW9uLmdldEF1dGhFcnJvcigncG9zdCcpKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGtleSAhPT0gJ09BdXRoMicpIHtcclxuICAgICAgICAgIHBhcmFtc0Nsb25lW2tleV0gPSBhdXRoXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5zZXNzaW9uLmdldEJhc2VVcmwoKS5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCgoYmFzZVVybCkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFiYXNlVXJsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHRoaXMuc2Vzc2lvbi5nZXRCYXNlVXJsRXJyb3IoJ3Bvc3QnKSlcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjb25zdCBmdWxsVXJsID0gcHJlcGFyZUJhc2VBZGRyZXNzKGJhc2VVcmwpICsgdXJsXHJcblxyXG4gICAgICAgICAgaWYgKGtleSA9PT0gJ3Nlc3NpZCcpIHtcclxuICAgICAgICAgICAgLy8g0J/RgNC10L7QsdGA0LDQt9GD0LXQvCDQv9Cw0YDQsNC80LXRgtGA0Ysg0LIg0YTQvtGA0LzQsNGCIHgtd3d3LWZvcm0tdXJsZW5jb2RlZFxyXG4gICAgICAgICAgICBjb25zdCBib2R5U3RyaW5nID0gdGhpcy5zZXJpYWxpemVCaXRyaXhQYXJhbXMocGFyYW1zQ2xvbmUpXHJcbiAgICAgICAgICAgIHJldHVybiBmcm9tKFxyXG4gICAgICAgICAgICAgIHRoaXMuYXhpb3NJbnN0YW5jZS5wb3N0PFQ+KGZ1bGxVcmwsIGJvZHlTdHJpbmcsIHtcclxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5zZXNzaW9uLmdldFdpdGhDcmVkZW50aWFscygpLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyczogdGhpcy5idWlsZEhlYWRlcnMoaGVhZGVycywgeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ30pLFxyXG4gICAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5kYXRhKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgcmV0dXJuIGZyb20oXHJcbiAgICAgICAgICAgIHRoaXMuYXhpb3NJbnN0YW5jZS5wb3N0PFQ+KGZ1bGxVcmwsIHBhcmFtc0Nsb25lLFxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5zZXNzaW9uLmdldFdpdGhDcmVkZW50aWFscygpLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyczogdGhpcy5idWlsZEhlYWRlcnMoaGVhZGVycywgeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbid9KSxcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICkudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmRhdGEpXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgfSkpXHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBodHRwR2V0PFQ+KFxyXG4gICAgdXJsOiBzdHJpbmcsXHJcbiAgICBwYXJhbXM6IGFueSA9IHt9LFxyXG4gICAgc2V0dGluZ3M/OiBpSHR0cFBhcmFtU2V0dGluZ3MsXHJcbiAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxyXG4gICk6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xyXG4gICAgLy8g0KLQsCDQttC1INC/0YDQuNGH0LjQvdCwLCDRh9GC0L4g0Lgg0YMgaHR0cFBvc3Qg0LLRi9GI0LU6INC+0YLQutC70LDQtNGL0LLQsNC10Lwg0YfRgtC10L3QuNC1IEJYUmVzdFNldHRpbmdzXHJcbiAgICAvLyDQtNC+INC/0L7QtNC/0LjRgdC60LgsINGH0YLQvtCx0YsgYGdldCgpYCDQstGR0Lsg0YHQtdCx0Y8g0YLQsNC6INC20LUgXCLQu9C10L3QuNCy0L5cIiwg0LrQsNC6INC4IGBwb3N0KClgXHJcbiAgICAvLyAo0YHQuNC80LzQtdGC0YDQuNGPLCDQutC+0YLQvtGA0L7QuSDQvdC1INCx0YvQu9C+INC00L4g0Y3RgtC+0LPQviDigJQgR0VUINGA0LXQt9C+0LvQstC40Lsg0L3QsNGB0YLRgNC+0LnQutC4INCyINC80L7QvNC10L3RglxyXG4gICAgLy8g0LLRi9C30L7QstCwLCDQsCDQvdC1INCyINC80L7QvNC10L3RgiBzdWJzY3JpYmUoKSkuINCf0L7QstGC0L7RgCDQv9C+0YHQu9C1INC/0YDQvtC00LvQtdC90LjRj1xyXG4gICAgLy8g0LDQstGC0L7RgNC40LfQsNGG0LjQuCDigJQg0LrQsNC6INCyIGh0dHBQb3N0LlxyXG4gICAgcmV0dXJuIHdpdGhBdXRoUmVmcmVzaChkZWZlcigoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBhcmFtc0Nsb25lID0gY2xvbmUocGFyYW1zKVxyXG4gICAgICBjb25zdCBrZXkgPSB0aGlzLnNlc3Npb24uZ2V0S2V5QXV0aCgpXHJcbiAgICAgIGNvbnN0IGF1dGggPSB0aGlzLnNlc3Npb24uZ2V0QXV0aFBhcmFtcygpXHJcbiAgICAgIGNvbnN0IGNoZWNrSXNPbiA9IHRoaXMuc2Vzc2lvbi5nZXRDaGVja0F1dGhQYXJhbXNJc09uKClcclxuXHJcbiAgICAgIGlmIChjaGVja0lzT24pIHtcclxuICAgICAgICBpZiAoIWF1dGgpIHtcclxuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHRoaXMuc2Vzc2lvbi5nZXRBdXRoRXJyb3IoJ2dldCcpKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGtleSAhPT0gJ09BdXRoMicpIHtcclxuICAgICAgICAgIHBhcmFtc0Nsb25lW2tleV0gPSBhdXRoXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5zZXNzaW9uLmdldEJhc2VVcmwoKS5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCgoYmFzZVVybCkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFiYXNlVXJsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHRoaXMuc2Vzc2lvbi5nZXRCYXNlVXJsRXJyb3IoJ2dldCcpKVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGNvbnN0IGZ1bGxVcmwgPSBwcmVwYXJlQmFzZUFkZHJlc3MoYmFzZVVybCkgKyB1cmxcclxuICAgICAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gdGhpcy5zZXJpYWxpemVCaXRyaXhQYXJhbXMocGFyYW1zQ2xvbmUpXHJcbiAgICAgICAgICBjb25zdCBmaW5hbFVybCA9IGAke2Z1bGxVcmx9PyR7cXVlcnlTdHJpbmd9YFxyXG5cclxuICAgICAgICAgIHJldHVybiBmcm9tKFxyXG4gICAgICAgICAgICB0aGlzLmF4aW9zSW5zdGFuY2UuZ2V0PFQ+KGZpbmFsVXJsLCB7XHJcbiAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLnNlc3Npb24uZ2V0V2l0aENyZWRlbnRpYWxzKCksXHJcbiAgICAgICAgICAgICAgaGVhZGVyczogdGhpcy5idWlsZEhlYWRlcnMoaGVhZGVycyksXHJcbiAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5kYXRhKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgIH0pKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog0JfQsNCz0L7Qu9C+0LLQutC4INC30LDQv9GA0L7RgdCwOiBgQlhSZXN0U2V0dGluZ3MuaGVhZGVyc2AsINC/0L7QstC10YDRhSDQvdC40YUg4oCUINC30LDQs9C+0LvQvtCy0LrQuFxyXG4gICAqINC60L7QvdC60YDQtdGC0L3QvtCz0L4g0LfQsNC/0YDQvtGB0LAsINC/0L7QstC10YDRhSDQstGB0LXQs9C+IOKAlCBgcmVxdWlyZWRgLiDQkiBgcmVxdWlyZWRgINC40LTRkdGCXHJcbiAgICogYENvbnRlbnQtVHlwZWA6INC+0YIg0L3QtdCz0L4g0LfQsNCy0LjRgdC40YIsINC60LDQuiDRgdC10YDQstC10YAg0YDQsNC30LHQtdGA0ZHRgiDRgtC10LvQviwg0L/QvtGN0YLQvtC80YNcclxuICAgKiDQv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60LjQtSDQt9Cw0LPQvtC70L7QstC60Lgg0LXQs9C+INC90LUg0L/QtdGA0LXQsdC40LLQsNGO0YIuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBidWlsZEhlYWRlcnMoaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIHJlcXVpcmVkOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge30pIHtcclxuICAgIHJldHVybiB7IC4uLnRoaXMuc2Vzc2lvbi5nZXRIZWFkZXJzKCksIC4uLmhlYWRlcnMsIC4uLnJlcXVpcmVkIH1cclxuICB9XHJcblxyXG4gIHNlcmlhbGl6ZUJpdHJpeFBhcmFtcyhwYXJhbXM6IHVua25vd24pOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHN0cmluZ2lmeUJpdHJpeFBhcmFtcyhwYXJhbXMpXHJcbiAgfVxyXG5cclxuICBnZXROYW1lTWV0aG9kKGFycjogc3RyaW5nW10pIHtcclxuICAgIHJldHVybiBhcnIuam9pbignLicpXHJcbiAgfVxyXG5cclxufVxyXG5cclxuIl19
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cEJYLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYngtcmVzdC9zcmMvc2VydmljZXMvaHR0cC9IdHRwQlgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM5RCxPQUFPLEtBQUssTUFBTSxZQUFZLENBQUE7QUFDOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUtyQyxPQUFPLE9BQU8sTUFBTSxpQkFBaUIsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsSUFBSSxxQkFBcUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFBO0FBRXRHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDL0MsT0FBTyxFQUF1QixpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUVuQyxNQUFNLE9BQU8sY0FBZSxTQUFRLFlBQVk7SUFFOUM7Ozs7T0FJRztJQUNILE1BQU0sQ0FBTyxLQUF5RDtRQUVwRSxJQUFJLFlBQVksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFTLElBQUksQ0FBQyxZQUFZLENBQUksS0FBSyxDQUFDLENBQUMsQ0FBQTtRQUN0RSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUEsQ0FBQyxtQkFBbUI7UUFDbkMsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFBLENB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QUMxRixPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLEdBQUcsUUFBUSxFQUFFLENBQUE7SUFDbEUsQ0FBQztJQUVELHFCQUFxQixDQUFDLE1BQWU7UUFDbkMsT0FBTyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQWE7UUFDekIsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3RCLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IsIGZvcmtKb2luLCBkZWZlciB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCBjbG9uZSBmcm9tICdqdXN0LWNsb25lJ1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZXMgfSBmcm9tICcuL2h0dHAnXHJcbmltcG9ydCB7XHJcbiAgaUJhdGNoUmVxdWVzdEFuc3dlciwgaUJhdGNoUmVxdWVzdFBhcmFtLCBpQmF0Y2hSZXF1ZXN0UGFyYW1BcnIsIGlCYXRjaFJlcXVlc3RQYXJhbUh0dHAsIGtleUJhdGNoLFxyXG59IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L2JhdGNoL2JhdGNoUmVxdWVzdFBhcmFtJ1xyXG5pbXBvcnQgeyBpQlhSZXN0QW5zd2VyIH0gZnJvbSAnLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3QvYmFzZS9hbnN3ZXInXHJcbmltcG9ydCBmbGF0dGVuIGZyb20gJ2p1c3QtZmxhdHRlbi1pdCdcclxuaW1wb3J0IHsgaW5zdGFuY2VPZmlCWFJlc3RBbnN3ZXJTdWNjZXNzIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL21hcFJlc3VsdCdcclxuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXHJcbmltcG9ydCB7IHByZXBhcmVCYXNlQWRkcmVzcyB9IGZyb20gJy4uL2Jhc2UnXHJcbmltcG9ydCB7IHNlcmlhbGl6ZUJpdHJpeFBhcmFtcyBhcyBzdHJpbmdpZnlCaXRyaXhQYXJhbXMgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMvc2VyaWFsaXplQml0cml4UGFyYW1zJ1xyXG5pbXBvcnQgeyBpSHR0cFBhcmFtU2V0dGluZ3MgfSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vcmVzdC9zZXR0aW5ncydcclxuaW1wb3J0IHsgd2l0aEF1dGhSZWZyZXNoIH0gZnJvbSAnLi9hdXRoUmVmcmVzaCdcclxuaW1wb3J0IHsgQlhSZXN0UmVxdWVzdENvbmZpZywgY29tcG9zZU1pZGRsZXdhcmUgfSBmcm9tICcuL3RyYW5zcG9ydCdcclxuaW1wb3J0IHsgYnVpbHRJbk1pZGRsZXdhcmUgfSBmcm9tICcuL21pZGRsZXdhcmUnXHJcbmltcG9ydCB7IGZldGNoU2VuZCB9IGZyb20gJy4vZmV0Y2gnXHJcblxyXG5leHBvcnQgY2xhc3MgSHR0cEJYU2VydmljZXMgZXh0ZW5kcyBIdHRwU2VydmljZXMge1xyXG5cclxuICAvKipcclxuICAgKiDQndC1INGB0YfQuNGC0LDQudGC0LUg0Y3RgtC+0YIg0LzQtdGC0L7QtCDQvtCx0YDQsNC30YbQvtC8L9GE0LjQvdCw0LvRjNC90YvQvCBBUEkuXHJcbiAgICogVE9ETzog0KPQtNCw0LvQuNGC0Ywg0LTQsNC90L3Ri9C5INC80LXRgtC+0LQg0L/QvtGB0LvQtSDRgNC10LDQu9C40LfQsNGG0LjQuCDQtdCz0L4g0LIg0YDQsNC30LTQtdC70LUgTmF2dnlcclxuICAgKiBAcGFyYW0gcGFyYW1cclxuICAgKi9cclxuICBicmFuY2g8VCwgQT4ocGFyYW06IGlCYXRjaFJlcXVlc3RQYXJhbUFycjxUPiB8IGlCYXRjaFJlcXVlc3RQYXJhbTxUPltdKVxyXG4gICAgOiBPYnNlcnZhYmxlPGlCYXRjaFJlcXVlc3RBbnN3ZXI8QT5bXSB8IHVuZGVmaW5lZD4ge1xyXG4gICAgbGV0IHByZXBhcmVQYXJhbSA9IE9iamVjdC5lbnRyaWVzPHN0cmluZz4odGhpcy5wcmVwYXJlQmF0Y2g8VD4ocGFyYW0pKVxyXG4gICAgY29uc3Qgc2l6ZSA9IDUwIC8vINCx0L7Qu9GM0YjQtSDQvdC1INC+0YLQtNCw0YHRglxyXG4gICAgbGV0IHN1YmFycmF5ID0gW10gLy/QvNCw0YHRgdC40LIg0LIg0LrQvtGC0L7RgNGL0Lkg0LHRg9C00LXRgiDQstGL0LLQtdC00LXQvSDRgNC10LfRg9C70YzRgtCw0YIuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IE1hdGguY2VpbChwcmVwYXJlUGFyYW0ubGVuZ3RoIC8gc2l6ZSk7IGkrKykge1xyXG4gICAgICBzdWJhcnJheVtpXSA9IHByZXBhcmVQYXJhbS5zbGljZSgoaSAqIHNpemUpLCAoaSAqIHNpemUpICsgc2l6ZSlcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZm9ya0pvaW4oXHJcbiAgICAgIHN1YmFycmF5Lm1hcChpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwUG9zdCgnYmF0Y2guanNvbicsIHtcclxuICAgICAgICAgIGhhbHQ6IDAsXHJcbiAgICAgICAgICBjbWQ6IE9iamVjdC5hc3NpZ24oe30sIC4uLmkubWFwKHggPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1t4WzBdXTogeFsxXX1cclxuICAgICAgICAgIH0pKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICApIGFzIE9ic2VydmFibGU8aUJhdGNoUmVxdWVzdEFuc3dlcjxBPltdPlxyXG4gIH1cclxuXHJcbiAgcHJlcGFyZUJhdGNoPFQ+KHBhcmFtOiBpQmF0Y2hSZXF1ZXN0UGFyYW1BcnI8VD4gfCBpQmF0Y2hSZXF1ZXN0UGFyYW08VD5bXSk6IGlCYXRjaFJlcXVlc3RQYXJhbUh0dHAge1xyXG4gICAgbGV0IHJlczogaUJhdGNoUmVxdWVzdFBhcmFtSHR0cCA9IE9iamVjdC5rZXlzKHBhcmFtKS5yZWR1Y2UoXHJcbiAgICAgIChvYmosIGtleSkgPT4ge1xyXG4gICAgICAgIG9ialtrZXldID0gJydcclxuICAgICAgICByZXR1cm4gb2JqXHJcbiAgICAgIH0sXHJcbiAgICAgIHt9IGFzIGlCYXRjaFJlcXVlc3RQYXJhbUh0dHBcclxuICAgIClcclxuICAgIGZvciAobGV0IGtleSBpbiBwYXJhbSkge1xyXG4gICAgICBpZiAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGtleSA9PT0gJ251bWJlcicgJiYgcGFyYW1ba2V5XS5wYXJhbSkge1xyXG4gICAgICAgIHJlc1trZXldID0gcGFyYW1ba2V5XS5uYW1lICsgJz8nICsgc3RyaW5naWZ5Qml0cml4UGFyYW1zKHBhcmFtW2tleV0ucGFyYW0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXNcclxuICB9XHJcblxyXG4gIG1hcEJyYW5jaFJlc3VsdDxUPihyZXM6IGlCYXRjaFJlcXVlc3RBbnN3ZXI8VD5bXSkge1xyXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oW10sIC4uLnJlcy5tYXAoaSA9PlxyXG4gICAgICAoaW5zdGFuY2VPZmlCWFJlc3RBbnN3ZXJTdWNjZXNzKGkpICYmIGluc3RhbmNlT2ZpQlhSZXN0QW5zd2VyU3VjY2VzcyhpLnJlc3VsdCkpID8gaS5yZXN1bHQucmVzdWx0IDogdW5kZWZpbmVkKVxyXG4gICAgKSBhcyBSZWNvcmQ8a2V5QmF0Y2gsIFQ+XHJcbiAgfVxyXG5cclxuICBtYXBCcmFuY2hSZXN1bHRXaXRob3V0S2V5PFQ+KHJlczogaUJhdGNoUmVxdWVzdEFuc3dlcjxUPltdKTogVFtdIHtcclxuICAgIHJldHVybiBmbGF0dGVuPFQ+KE9iamVjdC5hc3NpZ24oW10sIC4uLnJlcy5tYXAoaSA9PlxyXG4gICAgICAoaW5zdGFuY2VPZmlCWFJlc3RBbnN3ZXJTdWNjZXNzKGkpICYmIGluc3RhbmNlT2ZpQlhSZXN0QW5zd2VyU3VjY2VzcyhpLnJlc3VsdCkpXHJcbiAgICAgICAgPyBpLnJlc3VsdC5yZXN1bHRcclxuICAgICAgICA6IHVuZGVmaW5lZCkpXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDQntGB0L3QvtCy0L3QvtC5INC80LXRgtC+0LQg0LTQu9GPINC30LDQv9GA0L7RgdC+0LJcclxuICAgKlxyXG4gICAqIEBwYXJhbSBuYW1lXHJcbiAgICogQHBhcmFtIHBhcmFtc1xyXG4gICAqIEBwYXJhbSByZXN0QXBpXHJcbiAgICogQHBhcmFtIGhlYWRlcnMg0LfQsNCz0L7Qu9C+0LLQutC4INGC0L7Qu9GM0LrQviDQtNC70Y8g0Y3RgtC+0LPQviDQt9Cw0L/RgNC+0YHQsCwg0L/QvtCy0LXRgNGFIGBCWFJlc3RTZXR0aW5ncy5oZWFkZXJzYFxyXG4gICAqL1xyXG4gIHBvc3Q8VD4obmFtZTogc3RyaW5nW10sIHBhcmFtczogYW55ID0ge30sIHJlc3RBcGkgPSBmYWxzZSwgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pIHtcclxuICAgIGNvbnN0IG1ldGhvZCA9IHRoaXMuZ2V0TmFtZU1ldGhvZChuYW1lKVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFBvc3Q8aUJYUmVzdEFuc3dlcjxUPj4ocmVzdEFwaSA/IGBhcGkvJHttZXRob2R9YCA6IG1ldGhvZCwgcGFyYW1zLCB1bmRlZmluZWQsIGhlYWRlcnMpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDQktGC0L7RgNC+0YHRgtC10L/QtdC90L3Ri9C5INC80LXRgtC+0LQg0LTQu9GPINC30LDQv9GA0L7RgdC+0LIuINCf0L4g0LLQvtC30LzQvtC20L3QvtGB0YLQuCDQu9GD0YfRiNC1INC90LUg0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMXHJcbiAgICpcclxuICAgKiBAcGFyYW0gbmFtZVxyXG4gICAqIEBwYXJhbSBwYXJhbXNcclxuICAgKiBAcGFyYW0gaGVhZGVycyDQt9Cw0LPQvtC70L7QstC60Lgg0YLQvtC70YzQutC+INC00LvRjyDRjdGC0L7Qs9C+INC30LDQv9GA0L7RgdCwLCDQv9C+0LLQtdGA0YUgYEJYUmVzdFNldHRpbmdzLmhlYWRlcnNgXHJcbiAgICovXHJcbiAgZ2V0PFQ+KG5hbWU6IHN0cmluZ1tdLCBwYXJhbXM6IGFueSA9IHt9LCBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cEdldDxpQlhSZXN0QW5zd2VyPFQ+Pih0aGlzLmdldE5hbWVNZXRob2QobmFtZSksIHBhcmFtcywgdW5kZWZpbmVkLCBoZWFkZXJzKVxyXG4gIH1cclxuXHJcbiAgLy8gc2V0dGluZ3Mg0L3QtSDQuNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0Lgg0L7RgdGC0LDQstC70LXQvSDRgNCw0LTQuCDQv9GA0LXQttC90LXQuSDRgdC40LPQvdCw0YLRg9GA0Ys6IGhlYWRlcnNcclxuICAvLyDQvtGB0YLQsNGR0YLRgdGPINGH0LXRgtCy0ZHRgNGC0YvQvCDQv9Cw0YDQsNC80LXRgtGA0L7QvCDRgyBodHRwUG9zdCDQuCBodHRwR2V0LlxyXG4gIGh0dHBQb3N0PFQ+KFxyXG4gICAgdXJsOiBzdHJpbmcsXHJcbiAgICBwYXJhbXM6IGFueSA9IHt9LFxyXG4gICAgc2V0dGluZ3M/OiBpSHR0cFBhcmFtU2V0dGluZ3MsXHJcbiAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxyXG4gICk6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xyXG4gICAgLy8gZGVmZXIoKSDQvtGC0LrQu9Cw0LTRi9Cy0LDQtdGCINCy0YHRkSDRgdC+0LTQtdGA0LbQuNC80L7QtSAo0LIg0YLQvtC8INGH0LjRgdC70LUg0YfRgtC10L3QuNC1IEJYUmVzdFNldHRpbmdzXHJcbiAgICAvLyDRh9C10YDQtdC3IHRoaXMuc2Vzc2lvbi4qKSDQtNC+INGA0LXQsNC70YzQvdC+0Lkg0L/QvtC00L/QuNGB0LrQuCDigJQg0LjQvdCw0YfQtSDQtNCw0LbQtSDRgSBcItC20LjQstGL0LxcIlxyXG4gICAgLy8g0LPQtdGC0YLQtdGA0L7QvCDQsiBTZXNzaW9uS2V5U2VydmljZXMg0L3QsNGB0YLRgNC+0LnQutC4INGH0LjRgtCw0LvQuNGB0Ywg0LHRiyDQsiDQvNC+0LzQtdC90YIg0LLRi9C30L7QstCwXHJcbiAgICAvLyAucmVzKCksINCwINC90LUg0LIg0LzQvtC80LXQvdGCIHN1YnNjcmliZSgpL2ZpcnN0VmFsdWVGcm9tKCksINGH0YLQviDQuCDQvtCx0LXRidCw0L3QvlxyXG4gICAgLy8g0LIgUkVBRE1FINC60LDQuiDQv9C+0LLQtdC00LXQvdC40LUgXCLQu9C10L3QuNCy0L7Qs9C+XCIgUkVTVC3QstGL0LfQvtCy0LAuXHJcbiAgICAvL1xyXG4gICAgLy8gd2l0aEF1dGhSZWZyZXNoKCkg0L/QvtCy0YLQvtGA0Y/QtdGCINC30LDQv9GA0L7RgSDQv9C+0YHQu9C1IEJYUmVzdFNldHRpbmdzLmF1dGgucmVmcmVzaCDigJRcclxuICAgIC8vINC/0L7QstGC0L7RgNC90L7QuSDQv9C+0LTQv9C40YHQutC+0Lkg0L3QsCDRjdGC0L7RgiDQttC1IGRlZmVyKCksINC/0L7RjdGC0L7QvNGDINC/0L7QstGC0L7RgCDQt9Cw0L3QvtCy0L4g0YfQuNGC0LDQtdGCXHJcbiAgICAvLyDRgtC+0LrQtdC9LCDQsNC00YDQtdGBINC4INC30LDQs9C+0LvQvtCy0LrQuC4g0KfQtdGA0LXQtyBodHRwUG9zdC9odHRwR2V0INC40LTRg9GCINCy0YHQtSDQt9Cw0L/RgNC+0YHRi1xyXG4gICAgLy8g0LHQuNCx0LvQuNC+0YLQtdC60LggKHBvc3QvZ2V0LCBiYXRjaCwg0LLRgdC1INCy0LjQtNGLIE5hdnZ5LdC30LDQv9GA0L7RgdC+0LIpLCDRgtCw0Log0YfRgtC+INC/0L7QstGC0L7RgFxyXG4gICAgLy8g0LLRgdGC0YDQvtC10L0g0YLQvtC70YzQutC+INC30LTQtdGB0YwuXHJcbiAgICByZXR1cm4gd2l0aEF1dGhSZWZyZXNoKGRlZmVyKCgpID0+IHtcclxuICAgICAgY29uc3QgcGFyYW1zQ2xvbmUgPSBjbG9uZShwYXJhbXMpXHJcbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuc2Vzc2lvbi5nZXRLZXlBdXRoKClcclxuICAgICAgY29uc3QgYXV0aCA9IHRoaXMuc2Vzc2lvbi5nZXRBdXRoUGFyYW1zKClcclxuICAgICAgY29uc3QgY2hlY2tJc09uID0gdGhpcy5zZXNzaW9uLmdldENoZWNrQXV0aFBhcmFtc0lzT24oKVxyXG5cclxuICAgICAgaWYgKGNoZWNrSXNPbikge1xyXG4gICAgICAgIGlmICghYXV0aCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gdGhpcy5zZXNzaW9uLmdldEF1dGhFcnJvcigncG9zdCcpKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGtleSAhPT0gJ09BdXRoMicpIHtcclxuICAgICAgICAgIHBhcmFtc0Nsb25lW2tleV0gPSBhdXRoXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5zZXNzaW9uLmdldEJhc2VVcmwoKS5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCgoYmFzZVVybCkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFiYXNlVXJsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHRoaXMuc2Vzc2lvbi5nZXRCYXNlVXJsRXJyb3IoJ3Bvc3QnKSlcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjb25zdCBmdWxsVXJsID0gcHJlcGFyZUJhc2VBZGRyZXNzKGJhc2VVcmwpICsgdXJsXHJcbiAgICAgICAgICAvLyBzZXNzaWQg4oCUINGC0LXQu9C+IHgtd3d3LWZvcm0tdXJsZW5jb2RlZCwg0L7RgdGC0LDQu9GM0L3Ri9C1INC60LvRjtGH0Lgg4oCUIEpTT05cclxuICAgICAgICAgIGNvbnN0IHVybGVuY29kZWQgPSBrZXkgPT09ICdzZXNzaWQnXHJcblxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZDxUPih7XHJcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICAgICAgICB1cmw6IGZ1bGxVcmwsXHJcbiAgICAgICAgICAgIGRhdGE6IHVybGVuY29kZWQgPyB0aGlzLnNlcmlhbGl6ZUJpdHJpeFBhcmFtcyhwYXJhbXNDbG9uZSkgOiBwYXJhbXNDbG9uZSxcclxuICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLnNlc3Npb24uZ2V0V2l0aENyZWRlbnRpYWxzKCksXHJcbiAgICAgICAgICAgIGhlYWRlcnM6IHRoaXMuYnVpbGRIZWFkZXJzKGhlYWRlcnMsIHtcclxuICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogdXJsZW5jb2RlZCA/ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnIDogJ2FwcGxpY2F0aW9uL2pzb24nXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICB9KSwgdGhpcy5zZXNzaW9uLmN0eClcclxuICB9XHJcblxyXG4gIGh0dHBHZXQ8VD4oXHJcbiAgICB1cmw6IHN0cmluZyxcclxuICAgIHBhcmFtczogYW55ID0ge30sXHJcbiAgICBzZXR0aW5ncz86IGlIdHRwUGFyYW1TZXR0aW5ncyxcclxuICAgIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XHJcbiAgKTogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPiB7XHJcbiAgICAvLyDQotCwINC20LUg0L/RgNC40YfQuNC90LAsINGH0YLQviDQuCDRgyBodHRwUG9zdCDQstGL0YjQtTog0L7RgtC60LvQsNC00YvQstCw0LXQvCDRh9GC0LXQvdC40LUgQlhSZXN0U2V0dGluZ3NcclxuICAgIC8vINC00L4g0L/QvtC00L/QuNGB0LrQuCwg0YfRgtC+0LHRiyBgZ2V0KClgINCy0ZHQuyDRgdC10LHRjyDRgtCw0Log0LbQtSBcItC70LXQvdC40LLQvlwiLCDQutCw0Log0LggYHBvc3QoKWBcclxuICAgIC8vICjRgdC40LzQvNC10YLRgNC40Y8sINC60L7RgtC+0YDQvtC5INC90LUg0LHRi9C70L4g0LTQviDRjdGC0L7Qs9C+IOKAlCBHRVQg0YDQtdC30L7Qu9Cy0LjQuyDQvdCw0YHRgtGA0L7QudC60Lgg0LIg0LzQvtC80LXQvdGCXHJcbiAgICAvLyDQstGL0LfQvtCy0LAsINCwINC90LUg0LIg0LzQvtC80LXQvdGCIHN1YnNjcmliZSgpKS4g0J/QvtCy0YLQvtGAINC/0L7RgdC70LUg0L/RgNC+0LTQu9C10L3QuNGPXHJcbiAgICAvLyDQsNCy0YLQvtGA0LjQt9Cw0YbQuNC4IOKAlCDQutCw0Log0LIgaHR0cFBvc3QuXHJcbiAgICByZXR1cm4gd2l0aEF1dGhSZWZyZXNoKGRlZmVyKCgpID0+IHtcclxuICAgICAgY29uc3QgcGFyYW1zQ2xvbmUgPSBjbG9uZShwYXJhbXMpXHJcbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuc2Vzc2lvbi5nZXRLZXlBdXRoKClcclxuICAgICAgY29uc3QgYXV0aCA9IHRoaXMuc2Vzc2lvbi5nZXRBdXRoUGFyYW1zKClcclxuICAgICAgY29uc3QgY2hlY2tJc09uID0gdGhpcy5zZXNzaW9uLmdldENoZWNrQXV0aFBhcmFtc0lzT24oKVxyXG5cclxuICAgICAgaWYgKGNoZWNrSXNPbikge1xyXG4gICAgICAgIGlmICghYXV0aCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gdGhpcy5zZXNzaW9uLmdldEF1dGhFcnJvcignZ2V0JykpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoa2V5ICE9PSAnT0F1dGgyJykge1xyXG4gICAgICAgICAgcGFyYW1zQ2xvbmVba2V5XSA9IGF1dGhcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB0aGlzLnNlc3Npb24uZ2V0QmFzZVVybCgpLnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKChiYXNlVXJsKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIWJhc2VVcmwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gdGhpcy5zZXNzaW9uLmdldEJhc2VVcmxFcnJvcignZ2V0JykpXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgY29uc3QgZnVsbFVybCA9IHByZXBhcmVCYXNlQWRkcmVzcyhiYXNlVXJsKSArIHVybFxyXG4gICAgICAgICAgY29uc3QgcXVlcnlTdHJpbmcgPSB0aGlzLnNlcmlhbGl6ZUJpdHJpeFBhcmFtcyhwYXJhbXNDbG9uZSlcclxuICAgICAgICAgIGNvbnN0IGZpbmFsVXJsID0gYCR7ZnVsbFVybH0/JHtxdWVyeVN0cmluZ31gXHJcblxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZDxUPih7XHJcbiAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICAgICAgICAgIHVybDogZmluYWxVcmwsXHJcbiAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5zZXNzaW9uLmdldFdpdGhDcmVkZW50aWFscygpLFxyXG4gICAgICAgICAgICBoZWFkZXJzOiB0aGlzLmJ1aWxkSGVhZGVycyhoZWFkZXJzKSxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgfSksIHRoaXMuc2Vzc2lvbi5jdHgpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDQntGC0L/RgNCw0LLQutCwINGH0LXRgNC10Lcg0YjQsNCz0Lgg0LjQtyDQvdCw0YHRgtGA0L7QtdC6OiBgcmV0cnlPblF1ZXJ5TGltaXRgLCBgdGhyb3R0bGVgLFxyXG4gICAqIGB0aW1lb3V0YCwgYGxvZ1JlcXVlc3RzYCwg0LfQsNGC0LXQvCBgbWlkZGxld2FyZWA7INC/0L7RgdC70LXQtNC90LjQvCDQuNC00ZHRgiDRgtGA0LDQvdGB0L/QvtGA0YJcclxuICAgKiDQutC70LjQtdC90YLQsCDigJQgYXhpb3Mg0LjQu9C4IGBmZXRjaGAgKGB0cmFuc3BvcnRgKS4g0J3QsNGB0YLRgNC+0LnQutC4INGH0LjRgtCw0Y7RgtGB0Y8g0L/RgNC4XHJcbiAgICog0L/QvtC00L/QuNGB0LrQtS4g0J7RgtC/0LjRgdC60LAg0L7RgtC80LXQvdGP0LXRgiBIVFRQLdC30LDQv9GA0L7RgSAoQWJvcnRTaWduYWwpLiDQntGI0LjQsdC60LAg0YLRgNCw0L3RgdC/0L7RgNGC0LBcclxuICAgKiDRg9GF0L7QtNC40YIg0LTQsNC70YzRiNC1INC60LDQuiDQtdGB0YLRjDog0YMgYXhpb3Mg0LIg0L3QtdC5INCy0LXRgdGMINC30LDQv9GA0L7RgSwg0LLQvNC10YHRgtC1INGBINGC0L7QutC10L3QvtC8INC4XHJcbiAgICog0YHQtdC60YDQtdGC0L7QvCDQstC10LHRhdGD0LrQsCAo0YHQvC4gUkVBRE1FLCDCq9Ce0LHRgNCw0LHQvtGC0LrQsCDQvtGI0LjQsdC+0LrCuykuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZW5kPFQ+KGNvbmZpZzogQlhSZXN0UmVxdWVzdENvbmZpZyk6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+KHN1YnNjcmliZXIgPT4ge1xyXG4gICAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXHJcbiAgICAgIGNvbnN0IGN0eCA9IHRoaXMuc2Vzc2lvbi5jdHhcclxuICAgICAgY29uc3Qgc2V0dGluZ3MgPSBjdHguc2V0dGluZ3NcclxuICAgICAgY29uc3Qgc2VuZCA9IGNvbXBvc2VNaWRkbGV3YXJlKFxyXG4gICAgICAgIFsuLi5idWlsdEluTWlkZGxld2FyZShzZXR0aW5ncywgY3R4KSwgLi4udGhpcy5zZXNzaW9uLmdldE1pZGRsZXdhcmUoKV0sXHJcbiAgICAgICAgKHNldHRpbmdzLnRyYW5zcG9ydCA9PT0gJ2ZldGNoJykgPyBmZXRjaFNlbmQgOiByZXF1ZXN0ID0+IHRoaXMuYXhpb3NTZW5kKHJlcXVlc3QpXHJcbiAgICAgIClcclxuICAgICAgc2VuZCh7IC4uLmNvbmZpZywgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCB9KS50aGVuKFxyXG4gICAgICAgIGRhdGEgPT4ge1xyXG4gICAgICAgICAgc3Vic2NyaWJlci5uZXh0KGRhdGEgYXMgVCB8IHVuZGVmaW5lZClcclxuICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycm9yOiB1bmtub3duKSA9PiBzdWJzY3JpYmVyLmVycm9yKGVycm9yKVxyXG4gICAgICApXHJcbiAgICAgIHJldHVybiAoKSA9PiBjb250cm9sbGVyLmFib3J0KClcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvKiog0KLRgNCw0L3RgdC/0L7RgNGCINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOOiBheGlvcyDQutC70LjQtdC90YLQsCwg0LrQsNC6INC4INGA0LDQvdGM0YjQtSDRh9C10YDQtdC3IHBvc3QoKS9nZXQoKS4gKi9cclxuICBwcml2YXRlIGF4aW9zU2VuZChjb25maWc6IEJYUmVzdFJlcXVlc3RDb25maWcpOiBQcm9taXNlPHVua25vd24+IHtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7IGhlYWRlcnM6IGNvbmZpZy5oZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHM6IGNvbmZpZy53aXRoQ3JlZGVudGlhbHMsIHNpZ25hbDogY29uZmlnLnNpZ25hbCB9XHJcbiAgICBjb25zdCByZXF1ZXN0ID0gKGNvbmZpZy5tZXRob2QgPT09ICdHRVQnKVxyXG4gICAgICA/IHRoaXMuYXhpb3NJbnN0YW5jZS5nZXQoY29uZmlnLnVybCwgb3B0aW9ucylcclxuICAgICAgOiB0aGlzLmF4aW9zSW5zdGFuY2UucG9zdChjb25maWcudXJsLCBjb25maWcuZGF0YSwgb3B0aW9ucylcclxuICAgIHJldHVybiByZXF1ZXN0LnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UuZGF0YSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqINCX0LDQs9C+0LvQvtCy0LrQuCDQt9Cw0L/RgNC+0YHQsDogYEJYUmVzdFNldHRpbmdzLmhlYWRlcnNgLCDQv9C+0LLQtdGA0YUg0L3QuNGFIOKAlCDQt9Cw0LPQvtC70L7QstC60LhcclxuICAgKiDQutC+0L3QutGA0LXRgtC90L7Qs9C+INC30LDQv9GA0L7RgdCwLCDQv9C+0LLQtdGA0YUg0LLRgdC10LPQviDigJQgYHJlcXVpcmVkYC4g0JIgYHJlcXVpcmVkYCDQuNC00ZHRglxyXG4gICAqIGBDb250ZW50LVR5cGVgOiDQvtGCINC90LXQs9C+INC30LDQstC40YHQuNGCLCDQutCw0Log0YHQtdGA0LLQtdGAINGA0LDQt9Cx0LXRgNGR0YIg0YLQtdC70L4sINC/0L7RjdGC0L7QvNGDXHJcbiAgICog0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GM0YHQutC40LUg0LfQsNCz0L7Qu9C+0LLQutC4INC10LPQviDQvdC1INC/0LXRgNC10LHQuNCy0LDRjtGCLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgYnVpbGRIZWFkZXJzKGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCByZXF1aXJlZDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9KSB7XHJcbiAgICByZXR1cm4geyAuLi50aGlzLnNlc3Npb24uZ2V0SGVhZGVycygpLCAuLi5oZWFkZXJzLCAuLi5yZXF1aXJlZCB9XHJcbiAgfVxyXG5cclxuICBzZXJpYWxpemVCaXRyaXhQYXJhbXMocGFyYW1zOiB1bmtub3duKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBzdHJpbmdpZnlCaXRyaXhQYXJhbXMocGFyYW1zKVxyXG4gIH1cclxuXHJcbiAgZ2V0TmFtZU1ldGhvZChhcnI6IHN0cmluZ1tdKSB7XHJcbiAgICByZXR1cm4gYXJyLmpvaW4oJy4nKVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbiJdfQ==
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { defer, from, throwError } from 'rxjs';
|
|
2
2
|
import { catchError, switchMap } from 'rxjs/operators';
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import { parseBXRestErrorBody } from '../../functions/errors';
|
|
3
|
+
import { httpErrorResponse, parseBXRestErrorBody } from '../../functions/errors';
|
|
4
|
+
import { globalContext } from '../context';
|
|
6
5
|
/**
|
|
7
6
|
* Коды ошибок Bitrix, которые лечатся продлением токена. `expired_token` —
|
|
8
7
|
* единственный системный код, для которого документация Bitrix24 советует
|
|
@@ -24,34 +23,34 @@ const AUTH_ERROR_CODES = ['expired_token', 'invalid_token'];
|
|
|
24
23
|
* Ответ 401 с другим кодом Bitrix ошибкой авторизации не считается.
|
|
25
24
|
*/
|
|
26
25
|
export function isBXRestAuthError(error) {
|
|
27
|
-
|
|
26
|
+
const response = httpErrorResponse(error);
|
|
27
|
+
if (!response) {
|
|
28
28
|
return false;
|
|
29
29
|
}
|
|
30
|
-
const parsed = parseBXRestErrorBody(
|
|
30
|
+
const parsed = parseBXRestErrorBody(response.data);
|
|
31
31
|
if (parsed) {
|
|
32
32
|
return AUTH_ERROR_CODES.includes(parsed.error);
|
|
33
33
|
}
|
|
34
|
-
return
|
|
34
|
+
return response.status === 401;
|
|
35
35
|
}
|
|
36
|
-
//
|
|
37
|
-
//
|
|
38
|
-
//
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
pendingRefresh = Promise.resolve()
|
|
36
|
+
// Состояние продления живёт в контексте клиента (BXRestContext): у глобальных
|
|
37
|
+
// настроек оно одно на всю библиотеку, у каждого new BXRestNavvy(settings) —
|
|
38
|
+
// своё. pendingRefresh — идущее сейчас продление, его ждут все упавшие
|
|
39
|
+
// запросы клиента; refreshCount — сколько продлений уже завершилось успешно.
|
|
40
|
+
function sharedRefresh(refresh, ctx) {
|
|
41
|
+
if (!ctx.pendingRefresh) {
|
|
42
|
+
ctx.pendingRefresh = Promise.resolve()
|
|
44
43
|
// Через then, чтобы синхронное исключение в refresh() тоже стало
|
|
45
44
|
// отклонённым промисом, а не вылетело из catchError
|
|
46
45
|
.then(() => refresh())
|
|
47
46
|
.then(() => {
|
|
48
|
-
refreshCount++;
|
|
47
|
+
ctx.refreshCount++;
|
|
49
48
|
})
|
|
50
49
|
.finally(() => {
|
|
51
|
-
pendingRefresh = undefined;
|
|
50
|
+
ctx.pendingRefresh = undefined;
|
|
52
51
|
});
|
|
53
52
|
}
|
|
54
|
-
return pendingRefresh;
|
|
53
|
+
return ctx.pendingRefresh;
|
|
55
54
|
}
|
|
56
55
|
/**
|
|
57
56
|
* Повтор запроса после продления авторизации (`BXRestSettings.auth.refresh`).
|
|
@@ -60,23 +59,26 @@ function sharedRefresh(refresh) {
|
|
|
60
59
|
* `defer()` в HttpBXServices): повтор — это повторная подписка, поэтому
|
|
61
60
|
* токен, адрес и заголовки берутся уже новые. На второй попытке ошибка не
|
|
62
61
|
* перехватывается — запрос повторяется не больше одного раза.
|
|
62
|
+
*
|
|
63
|
+
* `ctx` — контекст клиента, из которого берутся `refresh`, `isAuthError` и
|
|
64
|
+
* общее состояние продления.
|
|
63
65
|
*/
|
|
64
|
-
export function withAuthRefresh(request
|
|
66
|
+
export function withAuthRefresh(request$, ctx = globalContext) {
|
|
65
67
|
return defer(() => {
|
|
66
|
-
const { refresh, isAuthError = isBXRestAuthError } =
|
|
68
|
+
const { refresh, isAuthError = isBXRestAuthError } = ctx.settings.auth;
|
|
67
69
|
if (!refresh) {
|
|
68
70
|
return request$;
|
|
69
71
|
}
|
|
70
|
-
const refreshCountAtStart = refreshCount;
|
|
72
|
+
const refreshCountAtStart = ctx.refreshCount;
|
|
71
73
|
return request$.pipe(catchError((error) => {
|
|
72
74
|
if (!isAuthError(error)) {
|
|
73
75
|
return throwError(() => error);
|
|
74
76
|
}
|
|
75
77
|
// Пока этот запрос был в пути, токен уже продлили по ошибке другого
|
|
76
78
|
// запроса — повторяем без нового продления
|
|
77
|
-
const refreshed = (refreshCount !== refreshCountAtStart)
|
|
79
|
+
const refreshed = (ctx.refreshCount !== refreshCountAtStart)
|
|
78
80
|
? Promise.resolve()
|
|
79
|
-
: sharedRefresh(refresh);
|
|
81
|
+
: sharedRefresh(refresh, ctx);
|
|
80
82
|
return from(refreshed).pipe(catchError((refreshError) => {
|
|
81
83
|
if (error && typeof error === 'object') {
|
|
82
84
|
error.authRefreshError = refreshError;
|
|
@@ -86,4 +88,4 @@ export function withAuthRefresh(request$) {
|
|
|
86
88
|
}));
|
|
87
89
|
});
|
|
88
90
|
}
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aFJlZnJlc2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ieC1yZXN0L3NyYy9zZXJ2aWNlcy9odHRwL2F1dGhSZWZyZXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3RELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQTtBQUN6QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFFN0Q7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUE7QUFFM0Q7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFjO0lBQzlDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xELE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDeEQsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNYLE9BQU8sZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoRCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUE7QUFDdEMsQ0FBQztBQUVELDJFQUEyRTtBQUMzRSwwRUFBMEU7QUFDMUUsNERBQTREO0FBQzVELElBQUksY0FBeUMsQ0FBQTtBQUM3QyxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUE7QUFFcEIsU0FBUyxhQUFhLENBQUMsT0FBK0I7SUFDcEQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3BCLGNBQWMsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ2hDLGlFQUFpRTtZQUNqRSxvREFBb0Q7YUFDbkQsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ3JCLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDVCxZQUFZLEVBQUUsQ0FBQTtRQUNoQixDQUFDLENBQUM7YUFDRCxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ1osY0FBYyxHQUFHLFNBQVMsQ0FBQTtRQUM1QixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFDRCxPQUFPLGNBQWMsQ0FBQTtBQUN2QixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUksUUFBdUI7SUFDeEQsT0FBTyxLQUFLLENBQUMsR0FBRyxFQUFFO1FBQ2hCLE1BQU0sRUFBRSxPQUFPLEVBQUUsV0FBVyxHQUFHLGlCQUFpQixFQUFFLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUE7UUFDOUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxRQUFRLENBQUE7UUFDakIsQ0FBQztRQUVELE1BQU0sbUJBQW1CLEdBQUcsWUFBWSxDQUFBO1FBQ3hDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FDbEIsVUFBVSxDQUFDLENBQUMsS0FBYyxFQUFFLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN4QixPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNoQyxDQUFDO1lBQ0Qsb0VBQW9FO1lBQ3BFLDJDQUEyQztZQUMzQyxNQUFNLFNBQVMsR0FBRyxDQUFDLFlBQVksS0FBSyxtQkFBbUIsQ0FBQztnQkFDdEQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7Z0JBQ25CLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUE7WUFFMUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUN6QixVQUFVLENBQUMsQ0FBQyxZQUFxQixFQUFFLEVBQUU7Z0JBQ25DLElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUN0QyxLQUF3QyxDQUFDLGdCQUFnQixHQUFHLFlBQVksQ0FBQTtnQkFDM0UsQ0FBQztnQkFDRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNoQyxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQzFCLENBQUE7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVmZXIsIGZyb20sIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnXG5pbXBvcnQgeyBCWFJlc3RTZXR0aW5ncyB9IGZyb20gJy4uLy4uL3NldHRpbmdzJ1xuaW1wb3J0IHsgcGFyc2VCWFJlc3RFcnJvckJvZHkgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMvZXJyb3JzJ1xuXG4vKipcbiAqINCa0L7QtNGLINC+0YjQuNCx0L7QuiBCaXRyaXgsINC60L7RgtC+0YDRi9C1INC70LXRh9Cw0YLRgdGPINC/0YDQvtC00LvQtdC90LjQtdC8INGC0L7QutC10L3QsC4gYGV4cGlyZWRfdG9rZW5gIOKAlFxuICog0LXQtNC40L3RgdGC0LLQtdC90L3Ri9C5INGB0LjRgdGC0LXQvNC90YvQuSDQutC+0LQsINC00LvRjyDQutC+0YLQvtGA0L7Qs9C+INC00L7QutGD0LzQtdC90YLQsNGG0LjRjyBCaXRyaXgyNCDRgdC+0LLQtdGC0YPQtdGCXG4gKiBcItC+0LHQvdC+0LLQuNGC0Ywg0YLQvtC60LXQvdGLINC4INC/0L7QstGC0L7RgNC40YLRjCDQstGL0LfQvtCyXCIuIGBpbnZhbGlkX3Rva2VuYCDQsiDRgdC/0LjRgdC60LUg0YHQuNGB0YLQtdC80L3Ri9GFXG4gKiDQvtGI0LjQsdC+0Log0LTQvtC60YPQvNC10L3RgtCw0YbQuNC4INC90LXRgiwg0L3QviDRgtCw0Log0LbQtSDRgdGH0LjRgtCw0LXRgiDQvtGE0LjRhtC40LDQu9GM0L3Ri9C5IGBAYml0cml4MjQvYjI0anNzZGtgLlxuICpcbiAqINCe0YHRgtCw0LvRjNC90YvQtSDRgdC40YHRgtC10LzQvdGL0LUg0L7RiNC40LHQutC4INGC0L7QttC1INC/0YDQuNGF0L7QtNGP0YIg0YHQviDRgdGC0LDRgtGD0YHQvtC8IDQwMVxuICogKGBpbnN1ZmZpY2llbnRfc2NvcGVgLCBgTk9fQVVUSF9GT1VORGAsIGBBQ0NFU1NfREVOSUVEYCxcbiAqIGBJTlZBTElEX0NSRURFTlRJQUxTYCwgYHVzZXJfYWNjZXNzX2Vycm9yYCwgLi4uKSwg0L3QviDQvdC+0LLRi9C5INGC0L7QutC10L0g0LjRhVxuICog0L3QtSDQuNGB0L/RgNCw0LLQuNGCIOKAlCDQv9C+0Y3RgtC+0LzRgyDRgdC80L7RgtGA0LjQvCDQvdCwINC60L7QtCwg0LAg0L3QtSDRgtC+0LvRjNC60L4g0L3QsCDRgdGC0LDRgtGD0YEuXG4gKi9cbmNvbnN0IEFVVEhfRVJST1JfQ09ERVMgPSBbJ2V4cGlyZWRfdG9rZW4nLCAnaW52YWxpZF90b2tlbiddXG5cbi8qKlxuICog0KPRgdC70L7QstC40LUg0L/RgNC+0LTQu9C10L3QuNGPINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOIChgQlhSZXN0U2V0dGluZ3MuYXV0aC5pc0F1dGhFcnJvcmApOlxuICogLSDQvtGC0LLQtdGCINGBINC+0YjQuNCx0LrQvtC5IEJpdHJpeCBgZXhwaXJlZF90b2tlbmAg0LjQu9C4IGBpbnZhbGlkX3Rva2VuYCDigJQg0L/RgNC4INC70Y7QsdC+0Lwg0YHRgtCw0YLRg9GB0LU7XG4gKiAtINC+0YLQstC10YIgNDAxINCx0LXQtyDRgtC10LvQsCDQvtGI0LjQsdC60LggQml0cml4IOKAlCDQvdCw0L/RgNC40LzQtdGALCDQv9GD0YHRgtC+0Lkg0L7RgtCy0LXRgiDRgdCy0L7QtdCz0L5cbiAqICAg0LHRjdC60LXQvdC0LdC/0YDQvtC60YHQuCwg0YMg0LrQvtGC0L7RgNC+0LPQviDQvdC10YIg0LTQtdC50YHRgtCy0YPRjtGJ0LXQs9C+INGC0L7QutC10L3QsC5cbiAqXG4gKiDQntGC0LLQtdGCIDQwMSDRgSDQtNGA0YPQs9C40Lwg0LrQvtC00L7QvCBCaXRyaXgg0L7RiNC40LHQutC+0Lkg0LDQstGC0L7RgNC40LfQsNGG0LjQuCDQvdC1INGB0YfQuNGC0LDQtdGC0YHRjy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQlhSZXN0QXV0aEVycm9yKGVycm9yOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGlmICghYXhpb3MuaXNBeGlvc0Vycm9yKGVycm9yKSB8fCAhZXJyb3IucmVzcG9uc2UpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICBjb25zdCBwYXJzZWQgPSBwYXJzZUJYUmVzdEVycm9yQm9keShlcnJvci5yZXNwb25zZS5kYXRhKVxuICBpZiAocGFyc2VkKSB7XG4gICAgcmV0dXJuIEFVVEhfRVJST1JfQ09ERVMuaW5jbHVkZXMocGFyc2VkLmVycm9yKVxuICB9XG4gIHJldHVybiBlcnJvci5yZXNwb25zZS5zdGF0dXMgPT09IDQwMVxufVxuXG4vLyDQntCx0YnQtdC1INC90LAg0LLRgdGOINCx0LjQsdC70LjQvtGC0LXQutGDINGB0L7RgdGC0L7Rj9C90LjQtSDQv9GA0L7QtNC70LXQvdC40Y8g4oCUINC60LDQuiDQuCDRgdCw0LzQuCBCWFJlc3RTZXR0aW5ncy5cbi8vIHBlbmRpbmdSZWZyZXNoIOKAlCDQuNC00YPRidC10LUg0YHQtdC50YfQsNGBINC/0YDQvtC00LvQtdC90LjQtSwg0LXQs9C+INC20LTRg9GCINCy0YHQtSDRg9C/0LDQstGI0LjQtSDQt9Cw0L/RgNC+0YHRiztcbi8vIHJlZnJlc2hDb3VudCDigJQg0YHQutC+0LvRjNC60L4g0L/RgNC+0LTQu9C10L3QuNC5INGD0LbQtSDQt9Cw0LLQtdGA0YjQuNC70L7RgdGMINGD0YHQv9C10YjQvdC+LlxubGV0IHBlbmRpbmdSZWZyZXNoOiBQcm9taXNlPHZvaWQ+IHwgdW5kZWZpbmVkXG5sZXQgcmVmcmVzaENvdW50ID0gMFxuXG5mdW5jdGlvbiBzaGFyZWRSZWZyZXNoKHJlZnJlc2g6ICgpID0+IFByb21pc2U8dW5rbm93bj4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFwZW5kaW5nUmVmcmVzaCkge1xuICAgIHBlbmRpbmdSZWZyZXNoID0gUHJvbWlzZS5yZXNvbHZlKClcbiAgICAgIC8vINCn0LXRgNC10LcgdGhlbiwg0YfRgtC+0LHRiyDRgdC40L3RhdGA0L7QvdC90L7QtSDQuNGB0LrQu9GO0YfQtdC90LjQtSDQsiByZWZyZXNoKCkg0YLQvtC20LUg0YHRgtCw0LvQvlxuICAgICAgLy8g0L7RgtC60LvQvtC90ZHQvdC90YvQvCDQv9GA0L7QvNC40YHQvtC8LCDQsCDQvdC1INCy0YvQu9C10YLQtdC70L4g0LjQtyBjYXRjaEVycm9yXG4gICAgICAudGhlbigoKSA9PiByZWZyZXNoKCkpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHJlZnJlc2hDb3VudCsrXG4gICAgICB9KVxuICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICBwZW5kaW5nUmVmcmVzaCA9IHVuZGVmaW5lZFxuICAgICAgfSlcbiAgfVxuICByZXR1cm4gcGVuZGluZ1JlZnJlc2hcbn1cblxuLyoqXG4gKiDQn9C+0LLRgtC+0YAg0LfQsNC/0YDQvtGB0LAg0L/QvtGB0LvQtSDQv9GA0L7QtNC70LXQvdC40Y8g0LDQstGC0L7RgNC40LfQsNGG0LjQuCAoYEJYUmVzdFNldHRpbmdzLmF1dGgucmVmcmVzaGApLlxuICpcbiAqIGByZXF1ZXN0JGAg0LTQvtC70LbQtdC9INCx0YvRgtGMIFwi0YXQvtC70L7QtNC90YvQvFwiINC4INGH0LjRgtCw0YLRjCDQvdCw0YHRgtGA0L7QudC60Lgg0L/RgNC4INC/0L7QtNC/0LjRgdC60LUgKNC60LDQulxuICogYGRlZmVyKClgINCyIEh0dHBCWFNlcnZpY2VzKTog0L/QvtCy0YLQvtGAIOKAlCDRjdGC0L4g0L/QvtCy0YLQvtGA0L3QsNGPINC/0L7QtNC/0LjRgdC60LAsINC/0L7RjdGC0L7QvNGDXG4gKiDRgtC+0LrQtdC9LCDQsNC00YDQtdGBINC4INC30LDQs9C+0LvQvtCy0LrQuCDQsdC10YDRg9GC0YHRjyDRg9C20LUg0L3QvtCy0YvQtS4g0J3QsCDQstGC0L7RgNC+0Lkg0L/QvtC/0YvRgtC60LUg0L7RiNC40LHQutCwINC90LVcbiAqINC/0LXRgNC10YXQstCw0YLRi9Cy0LDQtdGC0YHRjyDigJQg0LfQsNC/0YDQvtGBINC/0L7QstGC0L7RgNGP0LXRgtGB0Y8g0L3QtSDQsdC+0LvRjNGI0LUg0L7QtNC90L7Qs9C+INGA0LDQt9CwLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aEF1dGhSZWZyZXNoPFQ+KHJlcXVlc3QkOiBPYnNlcnZhYmxlPFQ+KTogT2JzZXJ2YWJsZTxUPiB7XG4gIHJldHVybiBkZWZlcigoKSA9PiB7XG4gICAgY29uc3QgeyByZWZyZXNoLCBpc0F1dGhFcnJvciA9IGlzQlhSZXN0QXV0aEVycm9yIH0gPSBCWFJlc3RTZXR0aW5ncy52YWx1ZS5hdXRoXG4gICAgaWYgKCFyZWZyZXNoKSB7XG4gICAgICByZXR1cm4gcmVxdWVzdCRcbiAgICB9XG5cbiAgICBjb25zdCByZWZyZXNoQ291bnRBdFN0YXJ0ID0gcmVmcmVzaENvdW50XG4gICAgcmV0dXJuIHJlcXVlc3QkLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogdW5rbm93bikgPT4ge1xuICAgICAgICBpZiAoIWlzQXV0aEVycm9yKGVycm9yKSkge1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKVxuICAgICAgICB9XG4gICAgICAgIC8vINCf0L7QutCwINGN0YLQvtGCINC30LDQv9GA0L7RgSDQsdGL0Lsg0LIg0L/Rg9GC0LgsINGC0L7QutC10L0g0YPQttC1INC/0YDQvtC00LvQuNC70Lgg0L/QviDQvtGI0LjQsdC60LUg0LTRgNGD0LPQvtCz0L5cbiAgICAgICAgLy8g0LfQsNC/0YDQvtGB0LAg4oCUINC/0L7QstGC0L7RgNGP0LXQvCDQsdC10Lcg0L3QvtCy0L7Qs9C+INC/0YDQvtC00LvQtdC90LjRj1xuICAgICAgICBjb25zdCByZWZyZXNoZWQgPSAocmVmcmVzaENvdW50ICE9PSByZWZyZXNoQ291bnRBdFN0YXJ0KVxuICAgICAgICAgID8gUHJvbWlzZS5yZXNvbHZlKClcbiAgICAgICAgICA6IHNoYXJlZFJlZnJlc2gocmVmcmVzaClcblxuICAgICAgICByZXR1cm4gZnJvbShyZWZyZXNoZWQpLnBpcGUoXG4gICAgICAgICAgY2F0Y2hFcnJvcigocmVmcmVzaEVycm9yOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3IgJiYgdHlwZW9mIGVycm9yID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAoZXJyb3IgYXMgeyBhdXRoUmVmcmVzaEVycm9yPzogdW5rbm93biB9KS5hdXRoUmVmcmVzaEVycm9yID0gcmVmcmVzaEVycm9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcilcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gcmVxdWVzdCQpXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgKVxuICB9KVxufVxuIl19
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aFJlZnJlc2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ieC1yZXN0L3NyYy9zZXJ2aWNlcy9odHRwL2F1dGhSZWZyZXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ2hGLE9BQU8sRUFBaUIsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXpEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLENBQUMsZUFBZSxFQUFFLGVBQWUsQ0FBQyxDQUFBO0FBRTNEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsS0FBYztJQUM5QyxNQUFNLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN6QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDbEQsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNYLE9BQU8sZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoRCxDQUFDO0lBQ0QsT0FBTyxRQUFRLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQTtBQUNoQyxDQUFDO0FBRUQsOEVBQThFO0FBQzlFLDZFQUE2RTtBQUM3RSx1RUFBdUU7QUFDdkUsNkVBQTZFO0FBQzdFLFNBQVMsYUFBYSxDQUFDLE9BQStCLEVBQUUsR0FBa0I7SUFDeEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN4QixHQUFHLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUU7WUFDcEMsaUVBQWlFO1lBQ2pFLG9EQUFvRDthQUNuRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDckIsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNULEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUNwQixDQUFDLENBQUM7YUFDRCxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ1osR0FBRyxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUE7UUFDaEMsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUMsY0FBYyxDQUFBO0FBQzNCLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBSSxRQUF1QixFQUFFLE1BQXFCLGFBQWE7SUFDNUYsT0FBTyxLQUFLLENBQUMsR0FBRyxFQUFFO1FBQ2hCLE1BQU0sRUFBRSxPQUFPLEVBQUUsV0FBVyxHQUFHLGlCQUFpQixFQUFFLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUE7UUFDdEUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxRQUFRLENBQUE7UUFDakIsQ0FBQztRQUVELE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQTtRQUM1QyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQ2xCLFVBQVUsQ0FBQyxDQUFDLEtBQWMsRUFBRSxFQUFFO1lBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDaEMsQ0FBQztZQUNELG9FQUFvRTtZQUNwRSwyQ0FBMkM7WUFDM0MsTUFBTSxTQUFTLEdBQUcsQ0FBQyxHQUFHLENBQUMsWUFBWSxLQUFLLG1CQUFtQixDQUFDO2dCQUMxRCxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtnQkFDbkIsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUE7WUFFL0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUN6QixVQUFVLENBQUMsQ0FBQyxZQUFxQixFQUFFLEVBQUU7Z0JBQ25DLElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUN0QyxLQUF3QyxDQUFDLGdCQUFnQixHQUFHLFlBQVksQ0FBQTtnQkFDM0UsQ0FBQztnQkFDRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNoQyxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQzFCLENBQUE7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVmZXIsIGZyb20sIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcclxuaW1wb3J0IHsgaHR0cEVycm9yUmVzcG9uc2UsIHBhcnNlQlhSZXN0RXJyb3JCb2R5IH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL2Vycm9ycydcclxuaW1wb3J0IHsgQlhSZXN0Q29udGV4dCwgZ2xvYmFsQ29udGV4dCB9IGZyb20gJy4uL2NvbnRleHQnXHJcblxyXG4vKipcclxuICog0JrQvtC00Ysg0L7RiNC40LHQvtC6IEJpdHJpeCwg0LrQvtGC0L7RgNGL0LUg0LvQtdGH0LDRgtGB0Y8g0L/RgNC+0LTQu9C10L3QuNC10Lwg0YLQvtC60LXQvdCwLiBgZXhwaXJlZF90b2tlbmAg4oCUXHJcbiAqINC10LTQuNC90YHRgtCy0LXQvdC90YvQuSDRgdC40YHRgtC10LzQvdGL0Lkg0LrQvtC0LCDQtNC70Y8g0LrQvtGC0L7RgNC+0LPQviDQtNC+0LrRg9C80LXQvdGC0LDRhtC40Y8gQml0cml4MjQg0YHQvtCy0LXRgtGD0LXRglxyXG4gKiBcItC+0LHQvdC+0LLQuNGC0Ywg0YLQvtC60LXQvdGLINC4INC/0L7QstGC0L7RgNC40YLRjCDQstGL0LfQvtCyXCIuIGBpbnZhbGlkX3Rva2VuYCDQsiDRgdC/0LjRgdC60LUg0YHQuNGB0YLQtdC80L3Ri9GFXHJcbiAqINC+0YjQuNCx0L7QuiDQtNC+0LrRg9C80LXQvdGC0LDRhtC40Lgg0L3QtdGCLCDQvdC+INGC0LDQuiDQttC1INGB0YfQuNGC0LDQtdGCINC+0YTQuNGG0LjQsNC70YzQvdGL0LkgYEBiaXRyaXgyNC9iMjRqc3Nka2AuXHJcbiAqXHJcbiAqINCe0YHRgtCw0LvRjNC90YvQtSDRgdC40YHRgtC10LzQvdGL0LUg0L7RiNC40LHQutC4INGC0L7QttC1INC/0YDQuNGF0L7QtNGP0YIg0YHQviDRgdGC0LDRgtGD0YHQvtC8IDQwMVxyXG4gKiAoYGluc3VmZmljaWVudF9zY29wZWAsIGBOT19BVVRIX0ZPVU5EYCwgYEFDQ0VTU19ERU5JRURgLFxyXG4gKiBgSU5WQUxJRF9DUkVERU5USUFMU2AsIGB1c2VyX2FjY2Vzc19lcnJvcmAsIC4uLiksINC90L4g0L3QvtCy0YvQuSDRgtC+0LrQtdC9INC40YVcclxuICog0L3QtSDQuNGB0L/RgNCw0LLQuNGCIOKAlCDQv9C+0Y3RgtC+0LzRgyDRgdC80L7RgtGA0LjQvCDQvdCwINC60L7QtCwg0LAg0L3QtSDRgtC+0LvRjNC60L4g0L3QsCDRgdGC0LDRgtGD0YEuXHJcbiAqL1xyXG5jb25zdCBBVVRIX0VSUk9SX0NPREVTID0gWydleHBpcmVkX3Rva2VuJywgJ2ludmFsaWRfdG9rZW4nXVxyXG5cclxuLyoqXHJcbiAqINCj0YHQu9C+0LLQuNC1INC/0YDQvtC00LvQtdC90LjRjyDQv9C+INGD0LzQvtC70YfQsNC90LjRjiAoYEJYUmVzdFNldHRpbmdzLmF1dGguaXNBdXRoRXJyb3JgKTpcclxuICogLSDQvtGC0LLQtdGCINGBINC+0YjQuNCx0LrQvtC5IEJpdHJpeCBgZXhwaXJlZF90b2tlbmAg0LjQu9C4IGBpbnZhbGlkX3Rva2VuYCDigJQg0L/RgNC4INC70Y7QsdC+0Lwg0YHRgtCw0YLRg9GB0LU7XHJcbiAqIC0g0L7RgtCy0LXRgiA0MDEg0LHQtdC3INGC0LXQu9CwINC+0YjQuNCx0LrQuCBCaXRyaXgg4oCUINC90LDQv9GA0LjQvNC10YAsINC/0YPRgdGC0L7QuSDQvtGC0LLQtdGCINGB0LLQvtC10LPQvlxyXG4gKiAgINCx0Y3QutC10L3QtC3Qv9GA0L7QutGB0LgsINGDINC60L7RgtC+0YDQvtCz0L4g0L3QtdGCINC00LXQudGB0YLQstGD0Y7RidC10LPQviDRgtC+0LrQtdC90LAuXHJcbiAqXHJcbiAqINCe0YLQstC10YIgNDAxINGBINC00YDRg9Cz0LjQvCDQutC+0LTQvtC8IEJpdHJpeCDQvtGI0LjQsdC60L7QuSDQsNCy0YLQvtGA0LjQt9Cw0YbQuNC4INC90LUg0YHRh9C40YLQsNC10YLRgdGPLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGlzQlhSZXN0QXV0aEVycm9yKGVycm9yOiB1bmtub3duKTogYm9vbGVhbiB7XHJcbiAgY29uc3QgcmVzcG9uc2UgPSBodHRwRXJyb3JSZXNwb25zZShlcnJvcilcbiAgaWYgKCFyZXNwb25zZSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGNvbnN0IHBhcnNlZCA9IHBhcnNlQlhSZXN0RXJyb3JCb2R5KHJlc3BvbnNlLmRhdGEpXG4gIGlmIChwYXJzZWQpIHtcbiAgICByZXR1cm4gQVVUSF9FUlJPUl9DT0RFUy5pbmNsdWRlcyhwYXJzZWQuZXJyb3IpXG4gIH1cbiAgcmV0dXJuIHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAxXHJcbn1cclxuXHJcbi8vINCh0L7RgdGC0L7Rj9C90LjQtSDQv9GA0L7QtNC70LXQvdC40Y8g0LbQuNCy0ZHRgiDQsiDQutC+0L3RgtC10LrRgdGC0LUg0LrQu9C40LXQvdGC0LAgKEJYUmVzdENvbnRleHQpOiDRgyDQs9C70L7QsdCw0LvRjNC90YvRhVxyXG4vLyDQvdCw0YHRgtGA0L7QtdC6INC+0L3QviDQvtC00L3QviDQvdCwINCy0YHRjiDQsdC40LHQu9C40L7RgtC10LrRgywg0YMg0LrQsNC20LTQvtCz0L4gbmV3IEJYUmVzdE5hdnZ5KHNldHRpbmdzKSDigJRcclxuLy8g0YHQstC+0ZEuIHBlbmRpbmdSZWZyZXNoIOKAlCDQuNC00YPRidC10LUg0YHQtdC50YfQsNGBINC/0YDQvtC00LvQtdC90LjQtSwg0LXQs9C+INC20LTRg9GCINCy0YHQtSDRg9C/0LDQstGI0LjQtVxyXG4vLyDQt9Cw0L/RgNC+0YHRiyDQutC70LjQtdC90YLQsDsgcmVmcmVzaENvdW50IOKAlCDRgdC60L7Qu9GM0LrQviDQv9GA0L7QtNC70LXQvdC40Lkg0YPQttC1INC30LDQstC10YDRiNC40LvQvtGB0Ywg0YPRgdC/0LXRiNC90L4uXHJcbmZ1bmN0aW9uIHNoYXJlZFJlZnJlc2gocmVmcmVzaDogKCkgPT4gUHJvbWlzZTx1bmtub3duPiwgY3R4OiBCWFJlc3RDb250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgaWYgKCFjdHgucGVuZGluZ1JlZnJlc2gpIHtcclxuICAgIGN0eC5wZW5kaW5nUmVmcmVzaCA9IFByb21pc2UucmVzb2x2ZSgpXHJcbiAgICAgIC8vINCn0LXRgNC10LcgdGhlbiwg0YfRgtC+0LHRiyDRgdC40L3RhdGA0L7QvdC90L7QtSDQuNGB0LrQu9GO0YfQtdC90LjQtSDQsiByZWZyZXNoKCkg0YLQvtC20LUg0YHRgtCw0LvQvlxyXG4gICAgICAvLyDQvtGC0LrQu9C+0L3RkdC90L3Ri9C8INC/0YDQvtC80LjRgdC+0LwsINCwINC90LUg0LLRi9C70LXRgtC10LvQviDQuNC3IGNhdGNoRXJyb3JcclxuICAgICAgLnRoZW4oKCkgPT4gcmVmcmVzaCgpKVxyXG4gICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgY3R4LnJlZnJlc2hDb3VudCsrXHJcbiAgICAgIH0pXHJcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcclxuICAgICAgICBjdHgucGVuZGluZ1JlZnJlc2ggPSB1bmRlZmluZWRcclxuICAgICAgfSlcclxuICB9XHJcbiAgcmV0dXJuIGN0eC5wZW5kaW5nUmVmcmVzaFxyXG59XHJcblxyXG4vKipcclxuICog0J/QvtCy0YLQvtGAINC30LDQv9GA0L7RgdCwINC/0L7RgdC70LUg0L/RgNC+0LTQu9C10L3QuNGPINCw0LLRgtC+0YDQuNC30LDRhtC40LggKGBCWFJlc3RTZXR0aW5ncy5hdXRoLnJlZnJlc2hgKS5cclxuICpcclxuICogYHJlcXVlc3QkYCDQtNC+0LvQttC10L0g0LHRi9GC0YwgXCLRhdC+0LvQvtC00L3Ri9C8XCIg0Lgg0YfQuNGC0LDRgtGMINC90LDRgdGC0YDQvtC50LrQuCDQv9GA0Lgg0L/QvtC00L/QuNGB0LrQtSAo0LrQsNC6XHJcbiAqIGBkZWZlcigpYCDQsiBIdHRwQlhTZXJ2aWNlcyk6INC/0L7QstGC0L7RgCDigJQg0Y3RgtC+INC/0L7QstGC0L7RgNC90LDRjyDQv9C+0LTQv9C40YHQutCwLCDQv9C+0Y3RgtC+0LzRg1xyXG4gKiDRgtC+0LrQtdC9LCDQsNC00YDQtdGBINC4INC30LDQs9C+0LvQvtCy0LrQuCDQsdC10YDRg9GC0YHRjyDRg9C20LUg0L3QvtCy0YvQtS4g0J3QsCDQstGC0L7RgNC+0Lkg0L/QvtC/0YvRgtC60LUg0L7RiNC40LHQutCwINC90LVcclxuICog0L/QtdGA0LXRhdCy0LDRgtGL0LLQsNC10YLRgdGPIOKAlCDQt9Cw0L/RgNC+0YEg0L/QvtCy0YLQvtGA0Y/QtdGC0YHRjyDQvdC1INCx0L7Qu9GM0YjQtSDQvtC00L3QvtCz0L4g0YDQsNC30LAuXHJcbiAqXHJcbiAqIGBjdHhgIOKAlCDQutC+0L3RgtC10LrRgdGCINC60LvQuNC10L3RgtCwLCDQuNC3INC60L7RgtC+0YDQvtCz0L4g0LHQtdGA0YPRgtGB0Y8gYHJlZnJlc2hgLCBgaXNBdXRoRXJyb3JgINC4XHJcbiAqINC+0LHRidC10LUg0YHQvtGB0YLQvtGP0L3QuNC1INC/0YDQvtC00LvQtdC90LjRjy5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiB3aXRoQXV0aFJlZnJlc2g8VD4ocmVxdWVzdCQ6IE9ic2VydmFibGU8VD4sIGN0eDogQlhSZXN0Q29udGV4dCA9IGdsb2JhbENvbnRleHQpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICByZXR1cm4gZGVmZXIoKCkgPT4ge1xyXG4gICAgY29uc3QgeyByZWZyZXNoLCBpc0F1dGhFcnJvciA9IGlzQlhSZXN0QXV0aEVycm9yIH0gPSBjdHguc2V0dGluZ3MuYXV0aFxyXG4gICAgaWYgKCFyZWZyZXNoKSB7XHJcbiAgICAgIHJldHVybiByZXF1ZXN0JFxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJlZnJlc2hDb3VudEF0U3RhcnQgPSBjdHgucmVmcmVzaENvdW50XHJcbiAgICByZXR1cm4gcmVxdWVzdCQucGlwZShcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IHVua25vd24pID0+IHtcclxuICAgICAgICBpZiAoIWlzQXV0aEVycm9yKGVycm9yKSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vINCf0L7QutCwINGN0YLQvtGCINC30LDQv9GA0L7RgSDQsdGL0Lsg0LIg0L/Rg9GC0LgsINGC0L7QutC10L0g0YPQttC1INC/0YDQvtC00LvQuNC70Lgg0L/QviDQvtGI0LjQsdC60LUg0LTRgNGD0LPQvtCz0L5cclxuICAgICAgICAvLyDQt9Cw0L/RgNC+0YHQsCDigJQg0L/QvtCy0YLQvtGA0Y/QtdC8INCx0LXQtyDQvdC+0LLQvtCz0L4g0L/RgNC+0LTQu9C10L3QuNGPXHJcbiAgICAgICAgY29uc3QgcmVmcmVzaGVkID0gKGN0eC5yZWZyZXNoQ291bnQgIT09IHJlZnJlc2hDb3VudEF0U3RhcnQpXHJcbiAgICAgICAgICA/IFByb21pc2UucmVzb2x2ZSgpXHJcbiAgICAgICAgICA6IHNoYXJlZFJlZnJlc2gocmVmcmVzaCwgY3R4KVxyXG5cclxuICAgICAgICByZXR1cm4gZnJvbShyZWZyZXNoZWQpLnBpcGUoXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChyZWZyZXNoRXJyb3I6IHVua25vd24pID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycm9yICYmIHR5cGVvZiBlcnJvciA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICAoZXJyb3IgYXMgeyBhdXRoUmVmcmVzaEVycm9yPzogdW5rbm93biB9KS5hdXRoUmVmcmVzaEVycm9yID0gcmVmcmVzaEVycm9yXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiByZXF1ZXN0JClcclxuICAgICAgICApXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgfSlcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ответ не 2xx при `transport: 'fetch'`. Поле `response` такое же, как у
|
|
3
|
+
* `AxiosError`: по нему библиотека узнаёт ошибки Bitrix и ошибки авторизации.
|
|
4
|
+
* В `.resVanilla()` приходит сама эта ошибка, в `.res()` — в `cause`.
|
|
5
|
+
*/
|
|
6
|
+
export class BXRestHttpError extends Error {
|
|
7
|
+
constructor(response) {
|
|
8
|
+
super(`Request failed with status code ${response.status}`);
|
|
9
|
+
this.response = response;
|
|
10
|
+
this.name = 'BXRestHttpError';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Транспорт `transport: 'fetch'`: глобальный `fetch` браузера или Node 18+.
|
|
15
|
+
* Тело ответа разбирается как JSON, а если это не JSON (например, HTML от
|
|
16
|
+
* прокси) — отдаётся строкой, как это делает axios.
|
|
17
|
+
*/
|
|
18
|
+
export async function fetchSend(config) {
|
|
19
|
+
let body;
|
|
20
|
+
if (config.method === 'POST') {
|
|
21
|
+
body = (typeof config.data === 'string') ? config.data : JSON.stringify(config.data ?? {});
|
|
22
|
+
}
|
|
23
|
+
const response = await fetch(config.url, {
|
|
24
|
+
method: config.method,
|
|
25
|
+
headers: config.headers,
|
|
26
|
+
body,
|
|
27
|
+
credentials: config.withCredentials ? 'include' : 'same-origin',
|
|
28
|
+
signal: config.signal,
|
|
29
|
+
});
|
|
30
|
+
const text = await response.text();
|
|
31
|
+
let data = text;
|
|
32
|
+
if (text) {
|
|
33
|
+
try {
|
|
34
|
+
data = JSON.parse(text);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
// Не JSON — отдаём текстом
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (!response.ok) {
|
|
41
|
+
throw new BXRestHttpError({ status: response.status, data });
|
|
42
|
+
}
|
|
43
|
+
return data;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ieC1yZXN0L3NyYy9zZXJ2aWNlcy9odHRwL2ZldGNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxLQUFLO0lBQ3hDLFlBQXFCLFFBQTJDO1FBQzlELEtBQUssQ0FBQyxtQ0FBbUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFEeEMsYUFBUSxHQUFSLFFBQVEsQ0FBbUM7UUFFOUQsSUFBSSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQTtJQUMvQixDQUFDO0NBQ0Y7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxTQUFTLENBQUMsTUFBMkI7SUFDekQsSUFBSSxJQUF3QixDQUFBO0lBQzVCLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUM3QixJQUFJLEdBQUcsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUM1RixDQUFDO0lBQ0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtRQUN2QyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07UUFDckIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1FBQ3ZCLElBQUk7UUFDSixXQUFXLEVBQUUsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhO1FBQy9ELE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtLQUN0QixDQUFDLENBQUE7SUFDRixNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUNsQyxJQUFJLElBQUksR0FBWSxJQUFJLENBQUE7SUFDeEIsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNULElBQUksQ0FBQztZQUNILElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3pCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCwyQkFBMkI7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxlQUFlLENBQUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQzlELENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCWFJlc3RSZXF1ZXN0Q29uZmlnIH0gZnJvbSAnLi90cmFuc3BvcnQnXG5cbi8qKlxuICog0J7RgtCy0LXRgiDQvdC1IDJ4eCDQv9GA0LggYHRyYW5zcG9ydDogJ2ZldGNoJ2AuINCf0L7Qu9C1IGByZXNwb25zZWAg0YLQsNC60L7QtSDQttC1LCDQutCw0Log0YNcbiAqIGBBeGlvc0Vycm9yYDog0L/QviDQvdC10LzRgyDQsdC40LHQu9C40L7RgtC10LrQsCDRg9C30L3QsNGR0YIg0L7RiNC40LHQutC4IEJpdHJpeCDQuCDQvtGI0LjQsdC60Lgg0LDQstGC0L7RgNC40LfQsNGG0LjQuC5cbiAqINCSIGAucmVzVmFuaWxsYSgpYCDQv9GA0LjRhdC+0LTQuNGCINGB0LDQvNCwINGN0YLQsCDQvtGI0LjQsdC60LAsINCyIGAucmVzKClgIOKAlCDQsiBgY2F1c2VgLlxuICovXG5leHBvcnQgY2xhc3MgQlhSZXN0SHR0cEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSByZXNwb25zZTogeyBzdGF0dXM6IG51bWJlciwgZGF0YTogdW5rbm93biB9KSB7XG4gICAgc3VwZXIoYFJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgJHtyZXNwb25zZS5zdGF0dXN9YClcbiAgICB0aGlzLm5hbWUgPSAnQlhSZXN0SHR0cEVycm9yJ1xuICB9XG59XG5cbi8qKlxuICog0KLRgNCw0L3RgdC/0L7RgNGCIGB0cmFuc3BvcnQ6ICdmZXRjaCdgOiDQs9C70L7QsdCw0LvRjNC90YvQuSBgZmV0Y2hgINCx0YDQsNGD0LfQtdGA0LAg0LjQu9C4IE5vZGUgMTgrLlxuICog0KLQtdC70L4g0L7RgtCy0LXRgtCwINGA0LDQt9Cx0LjRgNCw0LXRgtGB0Y8g0LrQsNC6IEpTT04sINCwINC10YHQu9C4INGN0YLQviDQvdC1IEpTT04gKNC90LDQv9GA0LjQvNC10YAsIEhUTUwg0L7RglxuICog0L/RgNC+0LrRgdC4KSDigJQg0L7RgtC00LDRkdGC0YHRjyDRgdGC0YDQvtC60L7QuSwg0LrQsNC6INGN0YLQviDQtNC10LvQsNC10YIgYXhpb3MuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaFNlbmQoY29uZmlnOiBCWFJlc3RSZXF1ZXN0Q29uZmlnKTogUHJvbWlzZTx1bmtub3duPiB7XG4gIGxldCBib2R5OiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgaWYgKGNvbmZpZy5tZXRob2QgPT09ICdQT1NUJykge1xuICAgIGJvZHkgPSAodHlwZW9mIGNvbmZpZy5kYXRhID09PSAnc3RyaW5nJykgPyBjb25maWcuZGF0YSA6IEpTT04uc3RyaW5naWZ5KGNvbmZpZy5kYXRhID8/IHt9KVxuICB9XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goY29uZmlnLnVybCwge1xuICAgIG1ldGhvZDogY29uZmlnLm1ldGhvZCxcbiAgICBoZWFkZXJzOiBjb25maWcuaGVhZGVycyxcbiAgICBib2R5LFxuICAgIGNyZWRlbnRpYWxzOiBjb25maWcud2l0aENyZWRlbnRpYWxzID8gJ2luY2x1ZGUnIDogJ3NhbWUtb3JpZ2luJyxcbiAgICBzaWduYWw6IGNvbmZpZy5zaWduYWwsXG4gIH0pXG4gIGNvbnN0IHRleHQgPSBhd2FpdCByZXNwb25zZS50ZXh0KClcbiAgbGV0IGRhdGE6IHVua25vd24gPSB0ZXh0XG4gIGlmICh0ZXh0KSB7XG4gICAgdHJ5IHtcbiAgICAgIGRhdGEgPSBKU09OLnBhcnNlKHRleHQpXG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyDQndC1IEpTT04g4oCUINC+0YLQtNCw0ZHQvCDRgtC10LrRgdGC0L7QvFxuICAgIH1cbiAgfVxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEJYUmVzdEh0dHBFcnJvcih7IHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLCBkYXRhIH0pXG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cbiJdfQ==
|
|
@@ -1,75 +1,29 @@
|
|
|
1
|
-
import { from, throwError } from 'rxjs';
|
|
2
|
-
import { switchMap } from 'rxjs/operators';
|
|
3
1
|
import axios from 'axios';
|
|
4
|
-
import { SessionKeyServices } from '
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
2
|
+
import { SessionKeyServices } from './sessionKey';
|
|
3
|
+
import { BXRestContext, runInContext } from '../context';
|
|
4
|
+
/**
|
|
5
|
+
* Общая часть HTTP-клиента: экземпляр axios и источник токена и адреса.
|
|
6
|
+
* Сами запросы отправляет `HttpBXServices` (`BXRestRequest`).
|
|
7
|
+
*/
|
|
8
|
+
export class HttpServices {
|
|
9
|
+
/**
|
|
10
|
+
* @param settings свои настройки, как у `new BXRestNavvy(settings)`: запросы
|
|
11
|
+
* идут на этот портал с этим токеном, а `BXRestSettings` на них не влияют.
|
|
12
|
+
* Без них — настройки клиента, внутри которого создан объект, или
|
|
13
|
+
* глобальные `BXRestSettings`.
|
|
14
|
+
*/
|
|
15
|
+
constructor(settings) {
|
|
16
|
+
this.session = settings
|
|
17
|
+
? runInContext(new BXRestContext(settings), () => new SessionKeyServices())
|
|
18
|
+
: new SessionKeyServices();
|
|
13
19
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
paramsClone[this.session.getKeyAuth()] = auth;
|
|
23
|
-
}
|
|
24
|
-
return this.session.getBaseUrl().pipe(switchMap((baseUrl) => {
|
|
25
|
-
if (!baseUrl) {
|
|
26
|
-
return throwError(() => this.session.getBaseUrlError('post'));
|
|
27
|
-
}
|
|
28
|
-
const fullUrl = prepareBaseAddress(baseUrl) + url;
|
|
29
|
-
if (this.session.getKeyAuth() === 'sessid') {
|
|
30
|
-
const urlEncodedBody = new URLSearchParams();
|
|
31
|
-
Object.keys(paramsClone).forEach((key) => {
|
|
32
|
-
const value = paramsClone[key];
|
|
33
|
-
if (typeof value === 'object' && value !== null) {
|
|
34
|
-
for (const subKey in value) {
|
|
35
|
-
if (Object.prototype.hasOwnProperty.call(value, subKey)) {
|
|
36
|
-
urlEncodedBody.append(`${key}[${subKey}]`, value[subKey]);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
urlEncodedBody.append(key, value);
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
return from(this.axiosInstance.post(fullUrl, urlEncodedBody.toString(), {
|
|
45
|
-
headers: {
|
|
46
|
-
'Content-Type': 'application/x-www-form-urlencoded',
|
|
47
|
-
},
|
|
48
|
-
}).then((response) => response.data));
|
|
49
|
-
}
|
|
50
|
-
const body = this.getHttpParamsPost(paramsClone, new FormData(), [], settings);
|
|
51
|
-
return from(this.axiosInstance.post(fullUrl, body).then((response) => response.data));
|
|
52
|
-
}));
|
|
53
|
-
}
|
|
54
|
-
httpGet(url, params = {}) {
|
|
55
|
-
const auth = this.session.getAuthParams();
|
|
56
|
-
const checkIsOn = this.session.getCheckAuthParamsIsOn();
|
|
57
|
-
const paramsClone = clone(params);
|
|
58
|
-
if (checkIsOn) {
|
|
59
|
-
if (!auth) {
|
|
60
|
-
return throwError(() => this.session.getAuthError('get'));
|
|
61
|
-
}
|
|
62
|
-
paramsClone[this.session.getKeyAuth()] = auth;
|
|
63
|
-
}
|
|
64
|
-
return this.session.getBaseUrl().pipe(switchMap((baseUrl) => {
|
|
65
|
-
if (!baseUrl) {
|
|
66
|
-
return throwError(() => this.session.getBaseUrlError('get'));
|
|
67
|
-
}
|
|
68
|
-
const fullUrl = prepareBaseAddress(baseUrl) + url;
|
|
69
|
-
const queryString = new URLSearchParams(paramsClone).toString();
|
|
70
|
-
const finalUrl = `${fullUrl}?${queryString}`;
|
|
71
|
-
return from(this.axiosInstance.get(finalUrl).then((response) => response.data));
|
|
72
|
-
}));
|
|
20
|
+
/**
|
|
21
|
+
* Экземпляр axios клиента. Один на контекст (клиента со своими настройками
|
|
22
|
+
* или глобальные настройки) и создаётся при первом запросе — раньше каждый
|
|
23
|
+
* объект запроса создавал свой.
|
|
24
|
+
*/
|
|
25
|
+
get axiosInstance() {
|
|
26
|
+
return this.session.ctx.axios ??= axios.create();
|
|
73
27
|
}
|
|
74
28
|
}
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3NlcnZpY2VzL2h0dHAvaHR0cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQXdCLE1BQU0sT0FBTyxDQUFBO0FBQzVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUd4RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUl2Qjs7Ozs7T0FLRztJQUNILFlBQVksUUFBMEI7UUFDcEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRO1lBQ3JCLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1lBQzNFLENBQUMsQ0FBQyxJQUFJLGtCQUFrQixFQUFFLENBQUE7SUFDOUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFjLGFBQWE7UUFDekIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFBO0lBQ2xELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBheGlvcywgeyBBeGlvc0luc3RhbmNlIH0gZnJvbSAnYXhpb3MnXG5pbXBvcnQgeyBTZXNzaW9uS2V5U2VydmljZXMgfSBmcm9tICcuL3Nlc3Npb25LZXknXG5pbXBvcnQgeyBCWFJlc3RDb250ZXh0LCBydW5JbkNvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0J1xuaW1wb3J0IHsgaUJYUmVzdFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vdHlwaWZpY2F0aW9uL3NldHRpbmdzJ1xuXG4vKipcbiAqINCe0LHRidCw0Y8g0YfQsNGB0YLRjCBIVFRQLdC60LvQuNC10L3RgtCwOiDRjdC60LfQtdC80L/Qu9GP0YAgYXhpb3Mg0Lgg0LjRgdGC0L7Rh9C90LjQuiDRgtC+0LrQtdC90LAg0Lgg0LDQtNGA0LXRgdCwLlxuICog0KHQsNC80Lgg0LfQsNC/0YDQvtGB0Ysg0L7RgtC/0YDQsNCy0LvRj9C10YIgYEh0dHBCWFNlcnZpY2VzYCAoYEJYUmVzdFJlcXVlc3RgKS5cbiAqL1xuZXhwb3J0IGNsYXNzIEh0dHBTZXJ2aWNlcyB7XG5cbiAgcHVibGljIHJlYWRvbmx5IHNlc3Npb246IFNlc3Npb25LZXlTZXJ2aWNlc1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gc2V0dGluZ3Mg0YHQstC+0Lgg0L3QsNGB0YLRgNC+0LnQutC4LCDQutCw0Log0YMgYG5ldyBCWFJlc3ROYXZ2eShzZXR0aW5ncylgOiDQt9Cw0L/RgNC+0YHRi1xuICAgKiAgINC40LTRg9GCINC90LAg0Y3RgtC+0YIg0L/QvtGA0YLQsNC7INGBINGN0YLQuNC8INGC0L7QutC10L3QvtC8LCDQsCBgQlhSZXN0U2V0dGluZ3NgINC90LAg0L3QuNGFINC90LUg0LLQu9C40Y/RjtGCLlxuICAgKiAgINCR0LXQtyDQvdC40YUg4oCUINC90LDRgdGC0YDQvtC50LrQuCDQutC70LjQtdC90YLQsCwg0LLQvdGD0YLRgNC4INC60L7RgtC+0YDQvtCz0L4g0YHQvtC30LTQsNC9INC+0LHRitC10LrRgiwg0LjQu9C4XG4gICAqICAg0LPQu9C+0LHQsNC70YzQvdGL0LUgYEJYUmVzdFNldHRpbmdzYC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHNldHRpbmdzPzogaUJYUmVzdFNldHRpbmdzKSB7XG4gICAgdGhpcy5zZXNzaW9uID0gc2V0dGluZ3NcbiAgICAgID8gcnVuSW5Db250ZXh0KG5ldyBCWFJlc3RDb250ZXh0KHNldHRpbmdzKSwgKCkgPT4gbmV3IFNlc3Npb25LZXlTZXJ2aWNlcygpKVxuICAgICAgOiBuZXcgU2Vzc2lvbktleVNlcnZpY2VzKClcbiAgfVxuXG4gIC8qKlxuICAgKiDQrdC60LfQtdC80L/Qu9GP0YAgYXhpb3Mg0LrQu9C40LXQvdGC0LAuINCe0LTQuNC9INC90LAg0LrQvtC90YLQtdC60YHRgiAo0LrQu9C40LXQvdGC0LAg0YHQviDRgdCy0L7QuNC80Lgg0L3QsNGB0YLRgNC+0LnQutCw0LzQuFxuICAgKiDQuNC70Lgg0LPQu9C+0LHQsNC70YzQvdGL0LUg0L3QsNGB0YLRgNC+0LnQutC4KSDQuCDRgdC+0LfQtNCw0ZHRgtGB0Y8g0L/RgNC4INC/0LXRgNCy0L7QvCDQt9Cw0L/RgNC+0YHQtSDigJQg0YDQsNC90YzRiNC1INC60LDQttC00YvQuVxuICAgKiDQvtCx0YrQtdC60YIg0LfQsNC/0YDQvtGB0LAg0YHQvtC30LTQsNCy0LDQuyDRgdCy0L7QuS5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgYXhpb3NJbnN0YW5jZSgpOiBBeGlvc0luc3RhbmNlIHtcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uLmN0eC5heGlvcyA/Pz0gYXhpb3MuY3JlYXRlKClcbiAgfVxufVxuIl19
|