@xsolla/payment-client-core 0.2.7 → 0.2.9

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.
Files changed (64) hide show
  1. package/esm2020/lib/core/agreementsGroup.const.mjs +14 -0
  2. package/esm2020/lib/core/extended-window.interface.mjs +1 -1
  3. package/esm2020/lib/core/payment/actions/next-action.interface.mjs +1 -1
  4. package/esm2020/lib/core/payment/actions/next-actions.mjs +3 -1
  5. package/esm2020/lib/core/payment/actions/redirect/ps4-pages/pages-payment-methods-id.const.mjs +2 -2
  6. package/esm2020/lib/core/payment/actions/redirect/ps4-pages/pages-routes.const.mjs +3 -3
  7. package/esm2020/lib/core/payment/actions/show-qr-code/show-qr-code.action.class.mjs +22 -0
  8. package/esm2020/lib/core/payment/actions/show-qr-code/show-qr-code.action.type.mjs +2 -0
  9. package/esm2020/lib/core/payment/field-names.enum.mjs +2 -1
  10. package/esm2020/lib/core/payment/form-response.interface.mjs +2 -0
  11. package/esm2020/lib/core/payment/initialize/initialize-request-params.interface.mjs +1 -1
  12. package/esm2020/lib/core/payment/payment.interface.mjs +1 -1
  13. package/esm2020/lib/core/payment/payment.service.mjs +62 -2
  14. package/esm2020/lib/core/payment/xps-api/xps-api.service.mjs +4 -1
  15. package/esm2020/lib/core/sdk-payment-systems/apple-pay/apple-pay-integration.type.mjs +2 -0
  16. package/esm2020/lib/core/sdk-payment-systems/apple-pay/apple-pay-params.interface.mjs +2 -0
  17. package/esm2020/lib/core/sdk-payment-systems/apple-pay/apple-pay.const.mjs +2 -0
  18. package/esm2020/lib/core/sdk-payment-systems/apple-pay/apple-pay.errors.enum.mjs +6 -0
  19. package/esm2020/lib/core/sdk-payment-systems/apple-pay/apple-pay.service.mjs +265 -0
  20. package/esm2020/lib/core/sdk-payment-systems/apple-pay/checkout-params.interface.mjs +2 -0
  21. package/esm2020/lib/core/settings/configuration.interface.mjs +1 -1
  22. package/esm2020/lib/core/settings/settings.service.mjs +6 -1
  23. package/esm2020/lib/core/user-agent/browserInfo.interface.mjs +2 -0
  24. package/esm2020/lib/core/user-agent/browsers.mjs +44 -0
  25. package/esm2020/lib/core/user-agent/device.enum.mjs +6 -0
  26. package/esm2020/lib/core/user-agent/os.mjs +255 -0
  27. package/esm2020/lib/core/user-agent/user-agent-data.interface.mjs +2 -0
  28. package/esm2020/lib/core/user-agent/user-agent.service.mjs +200 -0
  29. package/esm2020/lib/core-library.service.mjs +17 -1
  30. package/esm2020/public-api.mjs +3 -1
  31. package/fesm2015/xsolla-payment-client-core.mjs +891 -4
  32. package/fesm2015/xsolla-payment-client-core.mjs.map +1 -1
  33. package/fesm2020/xsolla-payment-client-core.mjs +883 -4
  34. package/fesm2020/xsolla-payment-client-core.mjs.map +1 -1
  35. package/lib/core/agreementsGroup.const.d.ts +2 -0
  36. package/lib/core/extended-window.interface.d.ts +11 -0
  37. package/lib/core/payment/actions/next-action.interface.d.ts +2 -1
  38. package/lib/core/payment/actions/redirect/ps4-pages/pages-payment-methods-id.const.d.ts +1 -1
  39. package/lib/core/payment/actions/show-qr-code/show-qr-code.action.class.d.ts +11 -0
  40. package/lib/core/payment/actions/show-qr-code/show-qr-code.action.type.d.ts +3 -0
  41. package/lib/core/payment/field-names.enum.d.ts +2 -1
  42. package/lib/core/payment/form-response.interface.d.ts +8 -0
  43. package/lib/core/payment/initialize/initialize-request-params.interface.d.ts +1 -0
  44. package/lib/core/payment/payment.interface.d.ts +1 -0
  45. package/lib/core/payment/payment.service.d.ts +10 -1
  46. package/lib/core/sdk-payment-systems/apple-pay/apple-pay-integration.type.d.ts +1 -0
  47. package/lib/core/sdk-payment-systems/apple-pay/apple-pay-params.interface.d.ts +4 -0
  48. package/lib/core/sdk-payment-systems/apple-pay/apple-pay.const.d.ts +1 -0
  49. package/lib/core/sdk-payment-systems/apple-pay/apple-pay.errors.enum.d.ts +4 -0
  50. package/lib/core/sdk-payment-systems/apple-pay/apple-pay.service.d.ts +46 -0
  51. package/lib/core/sdk-payment-systems/apple-pay/checkout-params.interface.d.ts +9 -0
  52. package/lib/core/settings/configuration.interface.d.ts +1 -0
  53. package/lib/core/settings/settings.service.d.ts +2 -0
  54. package/lib/core/user-agent/browserInfo.interface.d.ts +13 -0
  55. package/lib/core/user-agent/browsers.d.ts +9 -0
  56. package/lib/core/user-agent/device.enum.d.ts +4 -0
  57. package/lib/core/user-agent/os.d.ts +7 -0
  58. package/lib/core/user-agent/user-agent-data.interface.d.ts +10 -0
  59. package/lib/core/user-agent/user-agent.service.d.ts +36 -0
  60. package/lib/core-library.service.d.ts +9 -0
  61. package/package.json +4 -2
  62. package/public-api.d.ts +2 -0
  63. package/xsolla-payment-client-core-0.2.9.tgz +0 -0
  64. package/xsolla-payment-client-core-0.2.7.tgz +0 -0
@@ -0,0 +1,265 @@
1
+ import { Subject } from 'rxjs';
2
+ import { Inject, Injectable } from '@angular/core';
3
+ import { applePayVersion } from './apple-pay.const';
4
+ import { agreementsGroup } from '../../agreementsGroup.const';
5
+ import { windowToken } from '../../window.token';
6
+ import { FieldNames } from '../../payment/field-names.enum';
7
+ import { ApplePayErrors } from './apple-pay.errors.enum';
8
+ import { pagesRoutes } from '../../payment/actions/redirect/ps4-pages/pages-routes.const';
9
+ import { applePayId } from '../../payment/actions/redirect/ps4-pages/pages-payment-methods-id.const';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "../../user-agent/user-agent.service";
12
+ import * as i2 from "../../payment/finance-details/summary/summary-finance-details-adapter.service";
13
+ export class ApplePayService {
14
+ get paymentParameters() {
15
+ return this.applePayParams;
16
+ }
17
+ get payment$() {
18
+ return this.payment.asObservable();
19
+ }
20
+ get error$() {
21
+ return this.error.asObservable();
22
+ }
23
+ get integrationType$() {
24
+ return this.integrationType.asObservable();
25
+ }
26
+ constructor(window, userAgentService, summaryFinanceDetailsAdapterService) {
27
+ this.window = window;
28
+ this.userAgentService = userAgentService;
29
+ this.summaryFinanceDetailsAdapterService = summaryFinanceDetailsAdapterService;
30
+ this.agreementFieldsNames = agreementsGroup;
31
+ this.payment = new Subject();
32
+ this.error = new Subject();
33
+ this.integrationType = new Subject();
34
+ this.paymentClient = null;
35
+ this.applePayParams = null;
36
+ this.order = null;
37
+ this.api = this.loadBraintree();
38
+ }
39
+ setApplePayParams(data) {
40
+ const formFields = data?.paymentForm?.fields;
41
+ const summary = data?.paymentForm?.summary;
42
+ if (!formFields || !summary) {
43
+ return;
44
+ }
45
+ const fields = formFields.reduce((acc, field) => {
46
+ if (this.agreementFieldsNames.includes(field.name) &&
47
+ field.isVisible === '1') {
48
+ acc[field.name] = field.title;
49
+ }
50
+ else {
51
+ acc[field.name] = field.value;
52
+ }
53
+ return acc;
54
+ }, {});
55
+ const agreements = this.agreementFieldsNames
56
+ .map((fieldName) => fields[fieldName])
57
+ .filter(Boolean);
58
+ this.applePayParams = {
59
+ tokenKey: this.getAppleToken(formFields),
60
+ totalLabel: fields['label_applePay'] ?? '',
61
+ totalAmount: this.getTotalAmount(summary),
62
+ currencyCode: this.getTotalCurrency(summary),
63
+ countryCode: fields['countryCode'] ?? '',
64
+ merchantCapabilities: this.getJsonValueFromField(fields, 'merchantCapabilities'),
65
+ supportedNetworks: this.getJsonValueFromField(fields, 'supportedNetworks'),
66
+ agreements: agreements,
67
+ };
68
+ }
69
+ async initLibrary(tokenKey) {
70
+ try {
71
+ const api = await this.api;
72
+ const clientInstance = await api.client.create({
73
+ authorization: tokenKey,
74
+ });
75
+ this.paymentClient = await api.applePay.create({
76
+ client: clientInstance,
77
+ });
78
+ }
79
+ catch (error) {
80
+ console.error('apple pay: initialize failed', error);
81
+ }
82
+ this.emitIntegrationType();
83
+ if (!this.paymentClient ||
84
+ (!this.isDeviceCapable() && !this.userAgentService.isSafari)) {
85
+ this.emitError(ApplePayErrors.deviceIsNotCapableError);
86
+ }
87
+ }
88
+ redirectToPaymentPage(parameters, token) {
89
+ const route = pagesRoutes.get(applePayId);
90
+ if (!route) {
91
+ return;
92
+ }
93
+ const query = new URLSearchParams({
94
+ ...parameters,
95
+ merchantCapabilities: JSON.stringify(parameters.merchantCapabilities),
96
+ supportedNetworks: JSON.stringify(parameters.supportedNetworks),
97
+ token,
98
+ agreements: JSON.stringify(parameters.agreements),
99
+ });
100
+ if (this.order) {
101
+ query.append('order', this.order);
102
+ }
103
+ const url = `${route}?${query.toString()}`;
104
+ return url;
105
+ }
106
+ setOrder(data) {
107
+ const summary = data?.paymentForm?.summary;
108
+ if (!summary) {
109
+ return;
110
+ }
111
+ const financeDetails = this.summaryFinanceDetailsAdapterService.getFinanceDetails(summary);
112
+ if (financeDetails?.purchase && financeDetails?.finance) {
113
+ const cartItems = financeDetails.cartItems;
114
+ this.order = cartItems?.reduce((curr, item) => {
115
+ if (curr) {
116
+ return curr + `; ${item.title}`;
117
+ }
118
+ return curr + item.title;
119
+ }, '');
120
+ }
121
+ }
122
+ proceedCheckout(parameters) {
123
+ if (!parameters) {
124
+ return;
125
+ }
126
+ if (!this.paymentClient || !this.isDeviceCapable()) {
127
+ console.warn('apple pay: device is not capable', this.paymentClient);
128
+ this.emitError(ApplePayErrors.deviceIsNotCapableError);
129
+ return;
130
+ }
131
+ try {
132
+ const paymentRequest = this.paymentClient.createPaymentRequest({
133
+ total: {
134
+ label: parameters.totalLabel,
135
+ amount: parameters.totalAmount,
136
+ },
137
+ currencyCode: parameters.currencyCode,
138
+ countryCode: parameters.countryCode,
139
+ merchantCapabilities: parameters.merchantCapabilities,
140
+ supportedNetworks: parameters.supportedNetworks,
141
+ });
142
+ const session = new this.window.ApplePaySession(applePayVersion, paymentRequest);
143
+ session.onvalidatemerchant = (event) => {
144
+ console.info('apple pay: merchant validation', event);
145
+ this.paymentClient
146
+ ?.performValidation({
147
+ validationURL: event.validationURL,
148
+ displayName: parameters?.totalLabel,
149
+ })
150
+ .then((merchantSession) => {
151
+ session.completeMerchantValidation(merchantSession);
152
+ })
153
+ .catch((error) => {
154
+ console.error('apple pay: merchant validation error', error);
155
+ session.abort();
156
+ });
157
+ };
158
+ session.onpaymentauthorized = (event) => {
159
+ console.info('apple pay: payment authorization', event);
160
+ this.paymentClient
161
+ ?.tokenize({
162
+ token: event.payment.token,
163
+ })
164
+ .then((authorizationResponse) => {
165
+ this.payment.next(authorizationResponse?.nonce ?? '');
166
+ session.completePayment(this.window.ApplePaySession.STATUS_SUCCESS);
167
+ })
168
+ .catch((error) => {
169
+ console.error('apple pay: payment authorization error', error);
170
+ session.completePayment(this.window.ApplePaySession.STATUS_FAILURE);
171
+ });
172
+ };
173
+ session.oncancel = (event) => {
174
+ this.emitError(ApplePayErrors.paymentError);
175
+ console.error('apple pay: user cancel payment', event);
176
+ };
177
+ session.begin();
178
+ }
179
+ catch (error) {
180
+ console.error('apple pay: checkout error', error);
181
+ this.emitError(ApplePayErrors.paymentError);
182
+ }
183
+ }
184
+ isDeviceCapable() {
185
+ try {
186
+ return Boolean(this.window.ApplePaySession?.supportsVersion(applePayVersion) &&
187
+ this.window.ApplePaySession?.canMakePayments());
188
+ }
189
+ catch (error) {
190
+ return false;
191
+ }
192
+ }
193
+ getTokenNonceFieldData(tokenNonce) {
194
+ const name = FieldNames.tokenApplePay;
195
+ const value = btoa(tokenNonce);
196
+ return { name, value };
197
+ }
198
+ updateApplePayParams(data) {
199
+ const summary = data?.summary;
200
+ if (!this.applePayParams || !summary) {
201
+ return;
202
+ }
203
+ this.applePayParams.totalAmount = this.getTotalAmount(summary);
204
+ this.applePayParams.currencyCode = this.getTotalCurrency(summary);
205
+ }
206
+ async loadBraintree() {
207
+ const api = await import('braintree-web');
208
+ return api;
209
+ }
210
+ getAppleToken(formFields) {
211
+ const appleTokenField = formFields.find((field) => {
212
+ return field.name === 'token_key';
213
+ });
214
+ if (!appleTokenField) {
215
+ return '';
216
+ }
217
+ return appleTokenField.value;
218
+ }
219
+ getTotalAmount(summary) {
220
+ const finance = summary?.finance;
221
+ const total = finance?.grand_total?.amount ?? finance?.total.amount;
222
+ return total?.toString() ?? '';
223
+ }
224
+ getTotalCurrency(summary) {
225
+ const finance = summary?.finance;
226
+ return finance?.grand_total?.currency ?? finance?.total?.currency ?? '';
227
+ }
228
+ getJsonValueFromField(fields, fieldName) {
229
+ const field = fields[fieldName];
230
+ try {
231
+ return field ? JSON.parse(field) : undefined;
232
+ }
233
+ catch (error) {
234
+ return undefined;
235
+ }
236
+ }
237
+ emitError(error) {
238
+ this.error.next(error);
239
+ }
240
+ emitIntegrationType() {
241
+ let integrationType;
242
+ if (this.paymentClient && this.isDeviceCapable()) {
243
+ integrationType = 'sdk';
244
+ }
245
+ else if (this.userAgentService.isSafari) {
246
+ integrationType = 'redirect';
247
+ }
248
+ else {
249
+ integrationType = 'none';
250
+ }
251
+ this.integrationType.next(integrationType);
252
+ }
253
+ }
254
+ ApplePayService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ApplePayService, deps: [{ token: windowToken }, { token: i1.UserAgentService }, { token: i2.SummaryFinanceDetailsAdapterService }], target: i0.ɵɵFactoryTarget.Injectable });
255
+ ApplePayService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ApplePayService, providedIn: 'root' });
256
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ApplePayService, decorators: [{
257
+ type: Injectable,
258
+ args: [{
259
+ providedIn: 'root',
260
+ }]
261
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
262
+ type: Inject,
263
+ args: [windowToken]
264
+ }] }, { type: i1.UserAgentService }, { type: i2.SummaryFinanceDetailsAdapterService }]; } });
265
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGUtcGF5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wYXltZW50LWNsaWVudC1jb3JlL3NyYy9saWIvY29yZS9zZGstcGF5bWVudC1zeXN0ZW1zL2FwcGxlLXBheS9hcHBsZS1wYXkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFJOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWpELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQzs7OztBQU9yRyxNQUFNLE9BQU8sZUFBZTtJQWUxQixJQUFXLGlCQUFpQjtRQUMxQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUNELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBVyxnQkFBZ0I7UUFDekIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdDLENB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QUMsZUFBZSxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7NEdBNVRVLGVBQWUsa0JBK0JoQixXQUFXO2dIQS9CVixlQUFlLGNBRmQsTUFBTTsyRkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBZ0NJLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxlUGF5LCBhcHBsZVBheSwgY2xpZW50IH0gZnJvbSAnYnJhaW50cmVlLXdlYic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGFwcGxlUGF5VmVyc2lvbiB9IGZyb20gJy4vYXBwbGUtcGF5LmNvbnN0JztcbmltcG9ydCB7IGFncmVlbWVudHNHcm91cCB9IGZyb20gJy4uLy4uL2FncmVlbWVudHNHcm91cC5jb25zdCc7XG5pbXBvcnQgeyBBcHBsZVBheVBhcmFtcyB9IGZyb20gJy4vYXBwbGUtcGF5LXBhcmFtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuLi8uLi9wYXltZW50L2ZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBFeHRlbmRlZFdpbmRvdyB9IGZyb20gJy4uLy4uL2V4dGVuZGVkLXdpbmRvdy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgd2luZG93VG9rZW4gfSBmcm9tICcuLi8uLi93aW5kb3cudG9rZW4nO1xuaW1wb3J0IHsgWHBzUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9wYXltZW50L3hwcy1yZXNwb25zZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmllbGROYW1lcyB9IGZyb20gJy4uLy4uL3BheW1lbnQvZmllbGQtbmFtZXMuZW51bSc7XG5pbXBvcnQgeyBBcHBsZVBheUVycm9ycyB9IGZyb20gJy4vYXBwbGUtcGF5LmVycm9ycy5lbnVtJztcbmltcG9ydCB7IFVzZXJBZ2VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi91c2VyLWFnZW50L3VzZXItYWdlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBsZVBheUludGVncmF0aW9uIH0gZnJvbSAnLi9hcHBsZS1wYXktaW50ZWdyYXRpb24udHlwZSc7XG5pbXBvcnQgeyBwYWdlc1JvdXRlcyB9IGZyb20gJy4uLy4uL3BheW1lbnQvYWN0aW9ucy9yZWRpcmVjdC9wczQtcGFnZXMvcGFnZXMtcm91dGVzLmNvbnN0JztcbmltcG9ydCB7IGFwcGxlUGF5SWQgfSBmcm9tICcuLi8uLi9wYXltZW50L2FjdGlvbnMvcmVkaXJlY3QvcHM0LXBhZ2VzL3BhZ2VzLXBheW1lbnQtbWV0aG9kcy1pZC5jb25zdCc7XG5pbXBvcnQgeyBJbml0aWFsaXplUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9wYXltZW50L2luaXRpYWxpemUvcmVzcG9uc2UvaW5pdGlhbGl6ZS1yZXNwb25zZS5jbGFzcyc7XG5pbXBvcnQgeyBTdW1tYXJ5RmluYW5jZURldGFpbHNBZGFwdGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3BheW1lbnQvZmluYW5jZS1kZXRhaWxzL3N1bW1hcnkvc3VtbWFyeS1maW5hbmNlLWRldGFpbHMtYWRhcHRlci5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFwcGxlUGF5U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWdyZWVtZW50RmllbGRzTmFtZXM6IHN0cmluZ1tdID0gYWdyZWVtZW50c0dyb3VwO1xuICBwcml2YXRlIHJlYWRvbmx5IHBheW1lbnQ6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXJyb3I6IFN1YmplY3Q8QXBwbGVQYXlFcnJvcnM+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpbnRlZ3JhdGlvblR5cGU6IFN1YmplY3Q8QXBwbGVQYXlJbnRlZ3JhdGlvbj4gPVxuICAgIG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSBwYXltZW50Q2xpZW50OiBBcHBsZVBheSB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpOiBQcm9taXNlPHtcbiAgICBhcHBsZVBheTogdHlwZW9mIGFwcGxlUGF5O1xuICAgIGNsaWVudDogdHlwZW9mIGNsaWVudDtcbiAgfT47XG4gIHByaXZhdGUgYXBwbGVQYXlQYXJhbXM6IEFwcGxlUGF5UGFyYW1zIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgb3JkZXI/OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHVibGljIGdldCBwYXltZW50UGFyYW1ldGVycygpOiBBcHBsZVBheVBhcmFtcyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmFwcGxlUGF5UGFyYW1zO1xuICB9XG4gIHB1YmxpYyBnZXQgcGF5bWVudCQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5wYXltZW50LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBlcnJvciQoKTogT2JzZXJ2YWJsZTxBcHBsZVBheUVycm9ycz4ge1xuICAgIHJldHVybiB0aGlzLmVycm9yLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBpbnRlZ3JhdGlvblR5cGUkKCk6IE9ic2VydmFibGU8QXBwbGVQYXlJbnRlZ3JhdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmludGVncmF0aW9uVHlwZS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KHdpbmRvd1Rva2VuKSBwcml2YXRlIHJlYWRvbmx5IHdpbmRvdzogRXh0ZW5kZWRXaW5kb3csXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyQWdlbnRTZXJ2aWNlOiBVc2VyQWdlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3VtbWFyeUZpbmFuY2VEZXRhaWxzQWRhcHRlclNlcnZpY2U6IFN1bW1hcnlGaW5hbmNlRGV0YWlsc0FkYXB0ZXJTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuYXBpID0gdGhpcy5sb2FkQnJhaW50cmVlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0QXBwbGVQYXlQYXJhbXMoZGF0YTogdW5rbm93bik6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1GaWVsZHMgPSAoZGF0YSBhcyBJbml0aWFsaXplUmVzcG9uc2UpPy5wYXltZW50Rm9ybT8uZmllbGRzO1xuICAgIGNvbnN0IHN1bW1hcnkgPSAoZGF0YSBhcyBJbml0aWFsaXplUmVzcG9uc2UpPy5wYXltZW50Rm9ybT8uc3VtbWFyeTtcblxuICAgIGlmICghZm9ybUZpZWxkcyB8fCAhc3VtbWFyeSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmaWVsZHMgPSBmb3JtRmllbGRzLnJlZHVjZShcbiAgICAgIChhY2M6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sIGZpZWxkKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLmFncmVlbWVudEZpZWxkc05hbWVzLmluY2x1ZGVzKGZpZWxkLm5hbWUpICYmXG4gICAgICAgICAgZmllbGQuaXNWaXNpYmxlID09PSAnMSdcbiAgICAgICAgKSB7XG4gICAgICAgICAgYWNjW2ZpZWxkLm5hbWVdID0gZmllbGQudGl0bGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWNjW2ZpZWxkLm5hbWVdID0gZmllbGQudmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHt9XG4gICAgKTtcblxuICAgIGNvbnN0IGFncmVlbWVudHMgPSB0aGlzLmFncmVlbWVudEZpZWxkc05hbWVzXG4gICAgICAubWFwKChmaWVsZE5hbWUpID0+IGZpZWxkc1tmaWVsZE5hbWUgYXMga2V5b2YgdHlwZW9mIGZpZWxkc10gYXMgc3RyaW5nKVxuICAgICAgLmZpbHRlcihCb29sZWFuKTtcblxuICAgIHRoaXMuYXBwbGVQYXlQYXJhbXMgPSB7XG4gICAgICB0b2tlbktleTogdGhpcy5nZXRBcHBsZVRva2VuKGZvcm1GaWVsZHMpLFxuICAgICAgdG90YWxMYWJlbDogZmllbGRzWydsYWJlbF9hcHBsZVBheSddID8/ICcnLFxuICAgICAgdG90YWxBbW91bnQ6IHRoaXMuZ2V0VG90YWxBbW91bnQoc3VtbWFyeSksXG4gICAgICBjdXJyZW5jeUNvZGU6IHRoaXMuZ2V0VG90YWxDdXJyZW5jeShzdW1tYXJ5KSxcbiAgICAgIGNvdW50cnlDb2RlOiBmaWVsZHNbJ2NvdW50cnlDb2RlJ10gPz8gJycsXG4gICAgICBtZXJjaGFudENhcGFiaWxpdGllczogdGhpcy5nZXRKc29uVmFsdWVGcm9tRmllbGQoXG4gICAgICAgIGZpZWxkcyxcbiAgICAgICAgJ21lcmNoYW50Q2FwYWJpbGl0aWVzJ1xuICAgICAgKSxcbiAgICAgIHN1cHBvcnRlZE5ldHdvcmtzOiB0aGlzLmdldEpzb25WYWx1ZUZyb21GaWVsZChcbiAgICAgICAgZmllbGRzLFxuICAgICAgICAnc3VwcG9ydGVkTmV0d29ya3MnXG4gICAgICApLFxuICAgICAgYWdyZWVtZW50czogYWdyZWVtZW50cyxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGluaXRMaWJyYXJ5KHRva2VuS2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYXBpID0gYXdhaXQgdGhpcy5hcGk7XG4gICAgICBjb25zdCBjbGllbnRJbnN0YW5jZSA9IGF3YWl0IGFwaS5jbGllbnQuY3JlYXRlKHtcbiAgICAgICAgYXV0aG9yaXphdGlvbjogdG9rZW5LZXksXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5wYXltZW50Q2xpZW50ID0gYXdhaXQgYXBpLmFwcGxlUGF5LmNyZWF0ZSh7XG4gICAgICAgIGNsaWVudDogY2xpZW50SW5zdGFuY2UsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgY29uc29sZS5lcnJvcignYXBwbGUgcGF5OiBpbml0aWFsaXplIGZhaWxlZCcsIGVycm9yKTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRJbnRlZ3JhdGlvblR5cGUoKTtcblxuICAgIGlmIChcbiAgICAgICF0aGlzLnBheW1lbnRDbGllbnQgfHxcbiAgICAgICghdGhpcy5pc0RldmljZUNhcGFibGUoKSAmJiAhdGhpcy51c2VyQWdlbnRTZXJ2aWNlLmlzU2FmYXJpKVxuICAgICkge1xuICAgICAgdGhpcy5lbWl0RXJyb3IoQXBwbGVQYXlFcnJvcnMuZGV2aWNlSXNOb3RDYXBhYmxlRXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWRpcmVjdFRvUGF5bWVudFBhZ2UoXG4gICAgcGFyYW1ldGVyczogQXBwbGVQYXlQYXJhbXMsXG4gICAgdG9rZW46IHN0cmluZ1xuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHJvdXRlID0gcGFnZXNSb3V0ZXMuZ2V0KGFwcGxlUGF5SWQpO1xuICAgIGlmICghcm91dGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBxdWVyeSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoe1xuICAgICAgLi4ucGFyYW1ldGVycyxcbiAgICAgIG1lcmNoYW50Q2FwYWJpbGl0aWVzOiBKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzLm1lcmNoYW50Q2FwYWJpbGl0aWVzKSxcbiAgICAgIHN1cHBvcnRlZE5ldHdvcmtzOiBKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzLnN1cHBvcnRlZE5ldHdvcmtzKSxcbiAgICAgIHRva2VuLFxuICAgICAgYWdyZWVtZW50czogSlNPTi5zdHJpbmdpZnkocGFyYW1ldGVycy5hZ3JlZW1lbnRzKSxcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLm9yZGVyKSB7XG4gICAgICBxdWVyeS5hcHBlbmQoJ29yZGVyJywgdGhpcy5vcmRlcik7XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gYCR7cm91dGV9PyR7cXVlcnkudG9TdHJpbmcoKX1gO1xuICAgIHJldHVybiB1cmw7XG4gIH1cblxuICBwdWJsaWMgc2V0T3JkZXIoZGF0YTogdW5rbm93bik6IHZvaWQge1xuICAgIGNvbnN0IHN1bW1hcnkgPSAoZGF0YSBhcyBJbml0aWFsaXplUmVzcG9uc2UpPy5wYXltZW50Rm9ybT8uc3VtbWFyeTtcbiAgICBpZiAoIXN1bW1hcnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZmluYW5jZURldGFpbHMgPVxuICAgICAgdGhpcy5zdW1tYXJ5RmluYW5jZURldGFpbHNBZGFwdGVyU2VydmljZS5nZXRGaW5hbmNlRGV0YWlscyhzdW1tYXJ5KTtcblxuICAgIGlmIChmaW5hbmNlRGV0YWlscz8ucHVyY2hhc2UgJiYgZmluYW5jZURldGFpbHM/LmZpbmFuY2UpIHtcbiAgICAgIGNvbnN0IGNhcnRJdGVtcyA9IGZpbmFuY2VEZXRhaWxzLmNhcnRJdGVtcztcbiAgICAgIHRoaXMub3JkZXIgPSBjYXJ0SXRlbXM/LnJlZHVjZSgoY3VyciwgaXRlbSkgPT4ge1xuICAgICAgICBpZiAoY3Vycikge1xuICAgICAgICAgIHJldHVybiBjdXJyICsgYDsgJHtpdGVtLnRpdGxlfWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY3VyciArIGl0ZW0udGl0bGU7XG4gICAgICB9LCAnJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHByb2NlZWRDaGVja291dChwYXJhbWV0ZXJzPzogQXBwbGVQYXlQYXJhbXMpOiB2b2lkIHtcbiAgICBpZiAoIXBhcmFtZXRlcnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucGF5bWVudENsaWVudCB8fCAhdGhpcy5pc0RldmljZUNhcGFibGUoKSkge1xuICAgICAgY29uc29sZS53YXJuKCdhcHBsZSBwYXk6IGRldmljZSBpcyBub3QgY2FwYWJsZScsIHRoaXMucGF5bWVudENsaWVudCk7XG4gICAgICB0aGlzLmVtaXRFcnJvcihBcHBsZVBheUVycm9ycy5kZXZpY2VJc05vdENhcGFibGVFcnJvcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBheW1lbnRSZXF1ZXN0ID0gdGhpcy5wYXltZW50Q2xpZW50LmNyZWF0ZVBheW1lbnRSZXF1ZXN0KHtcbiAgICAgICAgdG90YWw6IHtcbiAgICAgICAgICBsYWJlbDogcGFyYW1ldGVycy50b3RhbExhYmVsLFxuICAgICAgICAgIGFtb3VudDogcGFyYW1ldGVycy50b3RhbEFtb3VudCxcbiAgICAgICAgfSxcbiAgICAgICAgY3VycmVuY3lDb2RlOiBwYXJhbWV0ZXJzLmN1cnJlbmN5Q29kZSxcbiAgICAgICAgY291bnRyeUNvZGU6IHBhcmFtZXRlcnMuY291bnRyeUNvZGUsXG4gICAgICAgIG1lcmNoYW50Q2FwYWJpbGl0aWVzOiBwYXJhbWV0ZXJzLm1lcmNoYW50Q2FwYWJpbGl0aWVzLFxuICAgICAgICBzdXBwb3J0ZWROZXR3b3JrczogcGFyYW1ldGVycy5zdXBwb3J0ZWROZXR3b3JrcyxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBzZXNzaW9uID0gbmV3IHRoaXMud2luZG93LkFwcGxlUGF5U2Vzc2lvbihcbiAgICAgICAgYXBwbGVQYXlWZXJzaW9uLFxuICAgICAgICBwYXltZW50UmVxdWVzdFxuICAgICAgKTtcblxuICAgICAgc2Vzc2lvbi5vbnZhbGlkYXRlbWVyY2hhbnQgPSAoZXZlbnQ6IHsgdmFsaWRhdGlvblVSTDogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgY29uc29sZS5pbmZvKCdhcHBsZSBwYXk6IG1lcmNoYW50IHZhbGlkYXRpb24nLCBldmVudCk7XG4gICAgICAgIHRoaXMucGF5bWVudENsaWVudFxuICAgICAgICAgID8ucGVyZm9ybVZhbGlkYXRpb24oe1xuICAgICAgICAgICAgdmFsaWRhdGlvblVSTDogZXZlbnQudmFsaWRhdGlvblVSTCxcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBwYXJhbWV0ZXJzPy50b3RhbExhYmVsLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnRoZW4oKG1lcmNoYW50U2Vzc2lvbikgPT4ge1xuICAgICAgICAgICAgc2Vzc2lvbi5jb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihtZXJjaGFudFNlc3Npb24pO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignYXBwbGUgcGF5OiBtZXJjaGFudCB2YWxpZGF0aW9uIGVycm9yJywgZXJyb3IpO1xuICAgICAgICAgICAgc2Vzc2lvbi5hYm9ydCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgc2Vzc2lvbi5vbnBheW1lbnRhdXRob3JpemVkID0gKGV2ZW50OiB7IHBheW1lbnQ6IHsgdG9rZW46IHN0cmluZyB9IH0pID0+IHtcbiAgICAgICAgY29uc29sZS5pbmZvKCdhcHBsZSBwYXk6IHBheW1lbnQgYXV0aG9yaXphdGlvbicsIGV2ZW50KTtcbiAgICAgICAgdGhpcy5wYXltZW50Q2xpZW50XG4gICAgICAgICAgPy50b2tlbml6ZSh7XG4gICAgICAgICAgICB0b2tlbjogZXZlbnQucGF5bWVudC50b2tlbixcbiAgICAgICAgICB9KVxuICAgICAgICAgIC50aGVuKChhdXRob3JpemF0aW9uUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMucGF5bWVudC5uZXh0KGF1dGhvcml6YXRpb25SZXNwb25zZT8ubm9uY2UgPz8gJycpO1xuICAgICAgICAgICAgc2Vzc2lvbi5jb21wbGV0ZVBheW1lbnQodGhpcy53aW5kb3cuQXBwbGVQYXlTZXNzaW9uLlNUQVRVU19TVUNDRVNTKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2FwcGxlIHBheTogcGF5bWVudCBhdXRob3JpemF0aW9uIGVycm9yJywgZXJyb3IpO1xuICAgICAgICAgICAgc2Vzc2lvbi5jb21wbGV0ZVBheW1lbnQodGhpcy53aW5kb3cuQXBwbGVQYXlTZXNzaW9uLlNUQVRVU19GQUlMVVJFKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIHNlc3Npb24ub25jYW5jZWwgPSAoZXZlbnQ6IHVua25vd24pID0+IHtcbiAgICAgICAgdGhpcy5lbWl0RXJyb3IoQXBwbGVQYXlFcnJvcnMucGF5bWVudEVycm9yKTtcbiAgICAgICAgY29uc29sZS5lcnJvcignYXBwbGUgcGF5OiB1c2VyIGNhbmNlbCBwYXltZW50JywgZXZlbnQpO1xuICAgICAgfTtcblxuICAgICAgc2Vzc2lvbi5iZWdpbigpO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdhcHBsZSBwYXk6IGNoZWNrb3V0IGVycm9yJywgZXJyb3IpO1xuICAgICAgdGhpcy5lbWl0RXJyb3IoQXBwbGVQYXlFcnJvcnMucGF5bWVudEVycm9yKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNEZXZpY2VDYXBhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gQm9vbGVhbihcbiAgICAgICAgdGhpcy53aW5kb3cuQXBwbGVQYXlTZXNzaW9uPy5zdXBwb3J0c1ZlcnNpb24oYXBwbGVQYXlWZXJzaW9uKSAmJlxuICAgICAgICAgIHRoaXMud2luZG93LkFwcGxlUGF5U2Vzc2lvbj8uY2FuTWFrZVBheW1lbnRzKClcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0VG9rZW5Ob25jZUZpZWxkRGF0YSh0b2tlbk5vbmNlOiBzdHJpbmcpOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gIH0ge1xuICAgIGNvbnN0IG5hbWUgPSBGaWVsZE5hbWVzLnRva2VuQXBwbGVQYXk7XG4gICAgY29uc3QgdmFsdWUgPSBidG9hKHRva2VuTm9uY2UpO1xuICAgIHJldHVybiB7IG5hbWUsIHZhbHVlIH07XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQXBwbGVQYXlQYXJhbXMoZGF0YTogdW5rbm93bik6IHZvaWQge1xuICAgIGNvbnN0IHN1bW1hcnkgPSAoZGF0YSBhcyBYcHNSZXNwb25zZSk/LnN1bW1hcnk7XG4gICAgaWYgKCF0aGlzLmFwcGxlUGF5UGFyYW1zIHx8ICFzdW1tYXJ5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hcHBsZVBheVBhcmFtcy50b3RhbEFtb3VudCA9IHRoaXMuZ2V0VG90YWxBbW91bnQoc3VtbWFyeSk7XG4gICAgdGhpcy5hcHBsZVBheVBhcmFtcy5jdXJyZW5jeUNvZGUgPSB0aGlzLmdldFRvdGFsQ3VycmVuY3koc3VtbWFyeSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRCcmFpbnRyZWUoKTogUHJvbWlzZTx7XG4gICAgYXBwbGVQYXk6IHR5cGVvZiBhcHBsZVBheTtcbiAgICBjbGllbnQ6IHR5cGVvZiBjbGllbnQ7XG4gIH0+IHtcbiAgICBjb25zdCBhcGkgPSBhd2FpdCBpbXBvcnQoJ2JyYWludHJlZS13ZWInKTtcblxuICAgIHJldHVybiBhcGk7XG4gIH1cblxuICBwcml2YXRlIGdldEFwcGxlVG9rZW4oZm9ybUZpZWxkczogRmllbGRbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgYXBwbGVUb2tlbkZpZWxkID0gZm9ybUZpZWxkcy5maW5kKChmaWVsZCkgPT4ge1xuICAgICAgcmV0dXJuIGZpZWxkLm5hbWUgPT09ICd0b2tlbl9rZXknO1xuICAgIH0pO1xuXG4gICAgaWYgKCFhcHBsZVRva2VuRmllbGQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gYXBwbGVUb2tlbkZpZWxkLnZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb3RhbEFtb3VudChzdW1tYXJ5OiBYcHNSZXNwb25zZVsnc3VtbWFyeSddKTogc3RyaW5nIHtcbiAgICBjb25zdCBmaW5hbmNlID0gc3VtbWFyeT8uZmluYW5jZTtcbiAgICBjb25zdCB0b3RhbCA9IGZpbmFuY2U/LmdyYW5kX3RvdGFsPy5hbW91bnQgPz8gZmluYW5jZT8udG90YWwuYW1vdW50O1xuXG4gICAgcmV0dXJuIHRvdGFsPy50b1N0cmluZygpID8/ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb3RhbEN1cnJlbmN5KHN1bW1hcnk6IFhwc1Jlc3BvbnNlWydzdW1tYXJ5J10pOiBzdHJpbmcge1xuICAgIGNvbnN0IGZpbmFuY2UgPSBzdW1tYXJ5Py5maW5hbmNlO1xuICAgIHJldHVybiBmaW5hbmNlPy5ncmFuZF90b3RhbD8uY3VycmVuY3kgPz8gZmluYW5jZT8udG90YWw/LmN1cnJlbmN5ID8/ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRKc29uVmFsdWVGcm9tRmllbGQoXG4gICAgZmllbGRzOiB7XG4gICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgfSxcbiAgICBmaWVsZE5hbWU6IHN0cmluZ1xuICApOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZmllbGQgPSBmaWVsZHNbZmllbGROYW1lXTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZmllbGQgPyAoSlNPTi5wYXJzZShmaWVsZCkgYXMgc3RyaW5nW10pIDogdW5kZWZpbmVkO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZW1pdEVycm9yKGVycm9yOiBBcHBsZVBheUVycm9ycyk6IHZvaWQge1xuICAgIHRoaXMuZXJyb3IubmV4dChlcnJvcik7XG4gIH1cblxuICBwcml2YXRlIGVtaXRJbnRlZ3JhdGlvblR5cGUoKTogdm9pZCB7XG4gICAgbGV0IGludGVncmF0aW9uVHlwZTogQXBwbGVQYXlJbnRlZ3JhdGlvbjtcbiAgICBpZiAodGhpcy5wYXltZW50Q2xpZW50ICYmIHRoaXMuaXNEZXZpY2VDYXBhYmxlKCkpIHtcbiAgICAgIGludGVncmF0aW9uVHlwZSA9ICdzZGsnO1xuICAgIH0gZWxzZSBpZiAodGhpcy51c2VyQWdlbnRTZXJ2aWNlLmlzU2FmYXJpKSB7XG4gICAgICBpbnRlZ3JhdGlvblR5cGUgPSAncmVkaXJlY3QnO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnRlZ3JhdGlvblR5cGUgPSAnbm9uZSc7XG4gICAgfVxuICAgIHRoaXMuaW50ZWdyYXRpb25UeXBlLm5leHQoaW50ZWdyYXRpb25UeXBlKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtcGFyYW1zLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BheW1lbnQtY2xpZW50LWNvcmUvc3JjL2xpYi9jb3JlL3Nkay1wYXltZW50LXN5c3RlbXMvYXBwbGUtcGF5L2NoZWNrb3V0LXBhcmFtcy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQXBwbGVQYXlDaGVja291dFBhcmFtcyB7XG4gIHRvdGFsTGFiZWw6IHN0cmluZztcbiAgdG90YWxBbW91bnQ6IHN0cmluZztcbiAgY3VycmVuY3lDb2RlOiBzdHJpbmc7XG4gIGNvdW50cnlDb2RlOiBzdHJpbmc7XG4gIG1lcmNoYW50Q2FwYWJpbGl0aWVzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgc3VwcG9ydGVkTmV0d29ya3M6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICBhZ3JlZW1lbnRzOiBzdHJpbmdbXTtcbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wYXltZW50LWNsaWVudC1jb3JlL3NyYy9saWIvY29yZS9zZXR0aW5ncy9jb25maWd1cmF0aW9uLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJbml0Q29uZmlndXJhdGlvbiB7XG4gIHRva2VuOiBzdHJpbmc7XG4gIGlzV2Vidmlldz86IGJvb2xlYW47XG4gIHNhbmRib3g/OiBib29sZWFuO1xufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wYXltZW50LWNsaWVudC1jb3JlL3NyYy9saWIvY29yZS9zZXR0aW5ncy9jb25maWd1cmF0aW9uLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJbml0Q29uZmlndXJhdGlvbiB7XG4gIHRva2VuOiBzdHJpbmc7XG4gIGlzTW9iaWxlOiBib29sZWFuO1xuICBpc1dlYnZpZXc/OiBib29sZWFuO1xuICBzYW5kYm94PzogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -47,6 +47,9 @@ export class SettingsService {
47
47
  get token() {
48
48
  return this._token;
49
49
  }
50
+ get isMobile() {
51
+ return this._isMobile;
52
+ }
50
53
  get hasResponse() {
51
54
  return !!this.response;
52
55
  }
@@ -55,6 +58,7 @@ export class SettingsService {
55
58
  this.isInitialized = false;
56
59
  this._token = '';
57
60
  this.sandboxMode = false;
61
+ this._isMobile = false;
58
62
  }
59
63
  async init(configuration) {
60
64
  if (!configuration.token) {
@@ -62,6 +66,7 @@ export class SettingsService {
62
66
  }
63
67
  this._token = configuration.token;
64
68
  this.sandboxMode = !!configuration.sandbox;
69
+ this._isMobile = configuration.isMobile;
65
70
  await this.sendRequest(this.token);
66
71
  this.isInitialized = true;
67
72
  }
@@ -82,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
82
87
  providedIn: 'root',
83
88
  }]
84
89
  }], ctorParameters: function () { return [{ type: i1.SecureApiClient }]; } });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3Muc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BheW1lbnQtY2xpZW50LWNvcmUvc3JjL2xpYi9jb3JlL3NldHRpbmdzL3NldHRpbmdzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUlsRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBVXZFLE1BQU0sT0FBTyxlQUFlO0lBQzFCLElBQVcsT0FBTztRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixNQUFNLElBQUksdUJBQXVCLEVBQUUsQ0FBQztTQUNyQztRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixNQUFNLElBQUksdUJBQXVCLEVBQUUsQ0FBQztTQUNyQztRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixNQUFNLElBQUksdUJBQXVCLEVBQUUsQ0FBQztTQUNyQztRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxvQkFBb0IsRUFBRTtZQUN2QyxPQUFPO2dCQUNMLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRO2dCQUN6QixvQkFBb0IsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQjthQUN6RCxDQUFDO1NBQ0g7UUFFRCxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFXLElBQUk7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixNQUFNLElBQUksdUJBQXVCLEVBQUUsQ0FBQztTQUNyQztRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQVcsYUFBYTtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixNQUFNLElBQUksdUJBQXVCLEVBQUUsQ0FBQztTQUNyQztRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELElBQVcsV0FBVztRQUNwQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFVRCxZQUFvQyxTQUEwQjtRQUExQixjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQVJ2RCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUlyQixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBRVosZ0JBQVcsR0FBRyxLQUFLLENBQUM7SUFFcUMsQ0FBQztJQUUzRCxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWdDO1FBQ2hELElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFO1lBQ3hCLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1NBQzNDO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7UUFFM0MsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVuQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztJQUM1QixDQUFDO0lBRU0sYUFBYTtRQUNsQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVPLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBYTtRQUNyQyxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFM0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFFcEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLGNBQWMsQ0FDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQWdCLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQ3ZELENBQUM7SUFDSixDQUFDOzs0R0EvRlUsZUFBZTtnSEFBZixlQUFlLGNBRmQsTUFBTTsyRkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgU2VjdXJlQXBpQ2xpZW50IH0gZnJvbSAnLi4vaHR0cC9zZWN1cmUtYXBpL3NlY3VyZS1hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBEZWVwUmVhZG9ubHkgfSBmcm9tICcuLi9kZWVwLXJlYWRvbmx5LnR5cGUnO1xuaW1wb3J0IHsgSW5pdENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IEVtcHR5VXRpbHNSZXNwb25zZUVycm9yIH0gZnJvbSAnLi9lbXB0eS11dGlscy1yZXNwb25zZS5lcnJvcic7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi91c2VyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gJy4vc2V0dGluZ3MuaW50ZXJmYWNlJztcbmltcG9ydCB7IFB1cmNoYXNlIH0gZnJvbSAnLi9wdXJjaGFzZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4vcHJvamVjdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVXRpbHNSZXNwb25zZSB9IGZyb20gJy4vdXRpbHMtcmVzcG9uc2UuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNldHRpbmdzU2VydmljZSB7XG4gIHB1YmxpYyBnZXQgcHJvamVjdCgpOiBEZWVwUmVhZG9ubHk8UHJvamVjdD4ge1xuICAgIGlmICghdGhpcy5yZXNwb25zZSkge1xuICAgICAgdGhyb3cgbmV3IEVtcHR5VXRpbHNSZXNwb25zZUVycm9yKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucmVzcG9uc2UucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHVyY2hhc2UoKTogRGVlcFJlYWRvbmx5PFB1cmNoYXNlPiB7XG4gICAgaWYgKCF0aGlzLnJlc3BvbnNlKSB7XG4gICAgICB0aHJvdyBuZXcgRW1wdHlVdGlsc1Jlc3BvbnNlRXJyb3IoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yZXNwb25zZS5wdXJjaGFzZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2V0dGluZ3MoKTogRGVlcFJlYWRvbmx5PFNldHRpbmdzPiB7XG4gICAgaWYgKCF0aGlzLnJlc3BvbnNlKSB7XG4gICAgICB0aHJvdyBuZXcgRW1wdHlVdGlsc1Jlc3BvbnNlRXJyb3IoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXNwb25zZT8ucHVyY2hhc2VfZXh0ZXJuYWxfaWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnRoaXMucmVzcG9uc2Uuc2V0dGluZ3MsXG4gICAgICAgIHB1cmNoYXNlX2V4dGVybmFsX2lkOiB0aGlzLnJlc3BvbnNlLnB1cmNoYXNlX2V4dGVybmFsX2lkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yZXNwb25zZT8uc2V0dGluZ3M7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHVzZXIoKTogRGVlcFJlYWRvbmx5PFVzZXI+IHtcbiAgICBpZiAoIXRoaXMucmVzcG9uc2UpIHtcbiAgICAgIHRocm93IG5ldyBFbXB0eVV0aWxzUmVzcG9uc2VFcnJvcigpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJlc3BvbnNlLnVzZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHV0aWxzUmVzcG9uc2UoKTogRGVlcFJlYWRvbmx5PFV0aWxzUmVzcG9uc2U+IHtcbiAgICBpZiAoIXRoaXMucmVzcG9uc2UpIHtcbiAgICAgIHRocm93IG5ldyBFbXB0eVV0aWxzUmVzcG9uc2VFcnJvcigpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJlc3BvbnNlO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5yZXNwb25zZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdG9rZW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW47XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1Jlc3BvbnNlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucmVzcG9uc2U7XG4gIH1cblxuICBwdWJsaWMgaXNJbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcmVzcG9uc2UhOiBEZWVwUmVhZG9ubHk8VXRpbHNSZXNwb25zZT4gfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBfdG9rZW4gPSAnJztcblxuICBwcml2YXRlIHNhbmRib3hNb2RlID0gZmFsc2U7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc2VjdXJlQXBpOiBTZWN1cmVBcGlDbGllbnQpIHt9XG5cbiAgcHVibGljIGFzeW5jIGluaXQoY29uZmlndXJhdGlvbjogSW5pdENvbmZpZ3VyYXRpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIWNvbmZpZ3VyYXRpb24udG9rZW4pIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgndG9rZW4gaXMgbWlzc2luZycpO1xuICAgIH1cblxuICAgIHRoaXMuX3Rva2VuID0gY29uZmlndXJhdGlvbi50b2tlbjtcbiAgICB0aGlzLnNhbmRib3hNb2RlID0gISFjb25maWd1cmF0aW9uLnNhbmRib3g7XG5cbiAgICBhd2FpdCB0aGlzLnNlbmRSZXF1ZXN0KHRoaXMudG9rZW4pO1xuXG4gICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBpc1NhbmRib3hNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNhbmRib3hNb2RlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kUmVxdWVzdCh0b2tlbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ2FjY2Vzc190b2tlbicsIHRva2VuKTtcblxuICAgIHRoaXMuc2VjdXJlQXBpLnNldFNhbmRib3hNb2RlKHRoaXMuaXNTYW5kYm94TW9kZSgpKTtcblxuICAgIHRoaXMucmVzcG9uc2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgIHRoaXMuc2VjdXJlQXBpLmdldDxVdGlsc1Jlc3BvbnNlPigndXRpbHMnLCB7IHBhcmFtcyB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3Muc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BheW1lbnQtY2xpZW50LWNvcmUvc3JjL2xpYi9jb3JlL3NldHRpbmdzL3NldHRpbmdzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUlsRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBVXZFLE1BQU0sT0FBTyxlQUFlO0lBQzFCLElBQVcsT0FBTztRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixNQUFNLElBQUksdUJBQXVCLEVBQUUsQ0FBQztTQUNyQztRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixNQUFNLElBQUksdUJBQXVCLEVBQUUsQ0FBQztTQUNyQztRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixNQUFNLElBQUksdUJBQXVCLEVBQUUsQ0FBQztTQUNyQztRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxvQkFBb0IsRUFBRTtZQUN2QyxPQUFPO2dCQUNMLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRO2dCQUN6QixvQkFBb0IsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQjthQUN6RCxDQUFDO1NBQ0g7UUFFRCxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFXLElBQUk7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixNQUFNLElBQUksdUJBQXVCLEVBQUUsQ0FBQztTQUNyQztRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQVcsYUFBYTtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixNQUFNLElBQUksdUJBQXVCLEVBQUUsQ0FBQztTQUNyQztRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQVcsV0FBVztRQUNwQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFZRCxZQUFvQyxTQUEwQjtRQUExQixjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQVZ2RCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUlyQixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBRVosZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFcEIsY0FBUyxHQUFHLEtBQUssQ0FBQztJQUV1QyxDQUFDO0lBRTNELEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBZ0M7UUFDaEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUU7WUFDeEIsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7U0FDM0M7UUFFRCxJQUFJLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUM7UUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQztRQUMzQyxJQUFJLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUM7UUFFeEMsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVuQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztJQUM1QixDQUFDO0lBRU0sYUFBYTtRQUNsQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVPLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBYTtRQUNyQyxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFM0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFFcEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLGNBQWMsQ0FDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQWdCLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQ3ZELENBQUM7SUFDSixDQUFDOzs0R0F0R1UsZUFBZTtnSEFBZixlQUFlLGNBRmQsTUFBTTsyRkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgU2VjdXJlQXBpQ2xpZW50IH0gZnJvbSAnLi4vaHR0cC9zZWN1cmUtYXBpL3NlY3VyZS1hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBEZWVwUmVhZG9ubHkgfSBmcm9tICcuLi9kZWVwLXJlYWRvbmx5LnR5cGUnO1xuaW1wb3J0IHsgSW5pdENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IEVtcHR5VXRpbHNSZXNwb25zZUVycm9yIH0gZnJvbSAnLi9lbXB0eS11dGlscy1yZXNwb25zZS5lcnJvcic7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi91c2VyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gJy4vc2V0dGluZ3MuaW50ZXJmYWNlJztcbmltcG9ydCB7IFB1cmNoYXNlIH0gZnJvbSAnLi9wdXJjaGFzZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4vcHJvamVjdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVXRpbHNSZXNwb25zZSB9IGZyb20gJy4vdXRpbHMtcmVzcG9uc2UuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNldHRpbmdzU2VydmljZSB7XG4gIHB1YmxpYyBnZXQgcHJvamVjdCgpOiBEZWVwUmVhZG9ubHk8UHJvamVjdD4ge1xuICAgIGlmICghdGhpcy5yZXNwb25zZSkge1xuICAgICAgdGhyb3cgbmV3IEVtcHR5VXRpbHNSZXNwb25zZUVycm9yKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucmVzcG9uc2UucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHVyY2hhc2UoKTogRGVlcFJlYWRvbmx5PFB1cmNoYXNlPiB7XG4gICAgaWYgKCF0aGlzLnJlc3BvbnNlKSB7XG4gICAgICB0aHJvdyBuZXcgRW1wdHlVdGlsc1Jlc3BvbnNlRXJyb3IoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yZXNwb25zZS5wdXJjaGFzZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2V0dGluZ3MoKTogRGVlcFJlYWRvbmx5PFNldHRpbmdzPiB7XG4gICAgaWYgKCF0aGlzLnJlc3BvbnNlKSB7XG4gICAgICB0aHJvdyBuZXcgRW1wdHlVdGlsc1Jlc3BvbnNlRXJyb3IoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXNwb25zZT8ucHVyY2hhc2VfZXh0ZXJuYWxfaWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnRoaXMucmVzcG9uc2Uuc2V0dGluZ3MsXG4gICAgICAgIHB1cmNoYXNlX2V4dGVybmFsX2lkOiB0aGlzLnJlc3BvbnNlLnB1cmNoYXNlX2V4dGVybmFsX2lkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yZXNwb25zZT8uc2V0dGluZ3M7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHVzZXIoKTogRGVlcFJlYWRvbmx5PFVzZXI+IHtcbiAgICBpZiAoIXRoaXMucmVzcG9uc2UpIHtcbiAgICAgIHRocm93IG5ldyBFbXB0eVV0aWxzUmVzcG9uc2VFcnJvcigpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJlc3BvbnNlLnVzZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHV0aWxzUmVzcG9uc2UoKTogRGVlcFJlYWRvbmx5PFV0aWxzUmVzcG9uc2U+IHtcbiAgICBpZiAoIXRoaXMucmVzcG9uc2UpIHtcbiAgICAgIHRocm93IG5ldyBFbXB0eVV0aWxzUmVzcG9uc2VFcnJvcigpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJlc3BvbnNlO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5yZXNwb25zZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdG9rZW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW47XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc01vYmlsZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzUmVzcG9uc2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5yZXNwb25zZTtcbiAgfVxuXG4gIHB1YmxpYyBpc0luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSByZXNwb25zZSE6IERlZXBSZWFkb25seTxVdGlsc1Jlc3BvbnNlPiB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIF90b2tlbiA9ICcnO1xuXG4gIHByaXZhdGUgc2FuZGJveE1vZGUgPSBmYWxzZTtcblxuICBwcml2YXRlIF9pc01vYmlsZSA9IGZhbHNlO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHNlY3VyZUFwaTogU2VjdXJlQXBpQ2xpZW50KSB7fVxuXG4gIHB1YmxpYyBhc3luYyBpbml0KGNvbmZpZ3VyYXRpb246IEluaXRDb25maWd1cmF0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFjb25maWd1cmF0aW9uLnRva2VuKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoJ3Rva2VuIGlzIG1pc3NpbmcnKTtcbiAgICB9XG5cbiAgICB0aGlzLl90b2tlbiA9IGNvbmZpZ3VyYXRpb24udG9rZW47XG4gICAgdGhpcy5zYW5kYm94TW9kZSA9ICEhY29uZmlndXJhdGlvbi5zYW5kYm94O1xuICAgIHRoaXMuX2lzTW9iaWxlID0gY29uZmlndXJhdGlvbi5pc01vYmlsZTtcblxuICAgIGF3YWl0IHRoaXMuc2VuZFJlcXVlc3QodGhpcy50b2tlbik7XG5cbiAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGlzU2FuZGJveE1vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2FuZGJveE1vZGU7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRSZXF1ZXN0KHRva2VuOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpLnNldCgnYWNjZXNzX3Rva2VuJywgdG9rZW4pO1xuXG4gICAgdGhpcy5zZWN1cmVBcGkuc2V0U2FuZGJveE1vZGUodGhpcy5pc1NhbmRib3hNb2RlKCkpO1xuXG4gICAgdGhpcy5yZXNwb25zZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgdGhpcy5zZWN1cmVBcGkuZ2V0PFV0aWxzUmVzcG9uc2U+KCd1dGlscycsIHsgcGFyYW1zIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3NlckluZm8uaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGF5bWVudC1jbGllbnQtY29yZS9zcmMvbGliL2NvcmUvdXNlci1hZ2VudC9icm93c2VySW5mby5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERldmljZSB9IGZyb20gJy4vZGV2aWNlLmVudW0nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJyb3dzZXJJbmZvIHtcbiAgbmFtZTogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICB1aV92ZXJzaW9uOiBEZXZpY2U7XG4gIG9zOiBzdHJpbmcgfCBudWxsO1xuICBtb2JpbGU/OiBib29sZWFuO1xuICB0YWJsZXQ/OiBib29sZWFuO1xuICBpcGhvbmU/OiBib29sZWFuO1xuICBpcGFkPzogYm9vbGVhbjtcbiAgaXBvZD86IGJvb2xlYW47XG4gIGFuZHJvaWQ/OiBib29sZWFuO1xufVxuIl19
@@ -0,0 +1,44 @@
1
+ export const unknownValue = 'unknown';
2
+ export const browsers = [
3
+ {
4
+ sentName: 'Mozilla Firefox',
5
+ shortName: 'Firefox',
6
+ regexpBrowserNameWithVersion: '(Firefox)\\/(.+)',
7
+ },
8
+ {
9
+ sentName: 'Samsung Internet',
10
+ shortName: 'SamsungBrowser',
11
+ regexpBrowserNameWithVersion: '(SamsungBrowser)\\/(.+)\\s',
12
+ },
13
+ {
14
+ sentName: 'Opera',
15
+ shortName: 'Opera',
16
+ regexpBrowserNameWithVersion: '(Opera)\\/(.+)',
17
+ },
18
+ {
19
+ sentName: 'Opera',
20
+ shortName: 'Opera',
21
+ regexpBrowserNameWithVersion: '(OPR)\\/(.+)',
22
+ },
23
+ {
24
+ sentName: 'Microsoft Edge (Legacy)',
25
+ shortName: 'MSEdge-legacy',
26
+ regexpBrowserNameWithVersion: '(Edge)\\/(.+)',
27
+ },
28
+ {
29
+ sentName: 'Microsoft Edge (Chromium)',
30
+ shortName: 'MSEdge',
31
+ regexpBrowserNameWithVersion: '(Edg)\\/(.+)',
32
+ },
33
+ {
34
+ sentName: 'Google Chrome or Chromium',
35
+ shortName: 'Chrome',
36
+ regexpBrowserNameWithVersion: '(Chrome)\\/(.+)\\s',
37
+ },
38
+ {
39
+ sentName: 'Apple Safari',
40
+ shortName: 'Safari',
41
+ regexpBrowserNameWithVersion: '(Safari)\\/(.+)',
42
+ },
43
+ ];
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3NlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wYXltZW50LWNsaWVudC1jb3JlL3NyYy9saWIvY29yZS91c2VyLWFnZW50L2Jyb3dzZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxTQUFrQixDQUFDO0FBZ0MvQyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQXVCO0lBQzFDO1FBQ0UsUUFBUSxFQUFFLGlCQUFpQjtRQUMzQixTQUFTLEVBQUUsU0FBUztRQUNwQiw0QkFBNEIsRUFBRSxrQkFBa0I7S0FDakQ7SUFDRDtRQUNFLFFBQVEsRUFBRSxrQkFBa0I7UUFDNUIsU0FBUyxFQUFFLGdCQUFnQjtRQUMzQiw0QkFBNEIsRUFBRSw0QkFBNEI7S0FDM0Q7SUFDRDtRQUNFLFFBQVEsRUFBRSxPQUFPO1FBQ2pCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLDRCQUE0QixFQUFFLGdCQUFnQjtLQUMvQztJQUNEO1FBQ0UsUUFBUSxFQUFFLE9BQU87UUFDakIsU0FBUyxFQUFFLE9BQU87UUFDbEIsNEJBQTRCLEVBQUUsY0FBYztLQUM3QztJQUNEO1FBQ0UsUUFBUSxFQUFFLHlCQUF5QjtRQUNuQyxTQUFTLEVBQUUsZUFBZTtRQUMxQiw0QkFBNEIsRUFBRSxlQUFlO0tBQzlDO0lBQ0Q7UUFDRSxRQUFRLEVBQUUsMkJBQTJCO1FBQ3JDLFNBQVMsRUFBRSxRQUFRO1FBQ25CLDRCQUE0QixFQUFFLGNBQWM7S0FDN0M7SUFDRDtRQUNFLFFBQVEsRUFBRSwyQkFBMkI7UUFDckMsU0FBUyxFQUFFLFFBQVE7UUFDbkIsNEJBQTRCLEVBQUUsb0JBQW9CO0tBQ25EO0lBQ0Q7UUFDRSxRQUFRLEVBQUUsY0FBYztRQUN4QixTQUFTLEVBQUUsUUFBUTtRQUNuQiw0QkFBNEIsRUFBRSxpQkFBaUI7S0FDaEQ7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHVua25vd25WYWx1ZSA9ICd1bmtub3duJyBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQnJvd3Nlck5hbWUgPVxuICB8IHR5cGVvZiBicm93c2Vyc1tudW1iZXJdWydzZW50TmFtZSddXG4gIHwgdHlwZW9mIHVua25vd25WYWx1ZVxuICB8IG51bGw7XG5cbmV4cG9ydCB0eXBlIEJyb3dzZXJBcHAgPVxuICB8IHR5cGVvZiBicm93c2Vyc1tudW1iZXJdWydzaG9ydE5hbWUnXVxuICB8IHR5cGVvZiB1bmtub3duVmFsdWVcbiAgfCBudWxsO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJyb3dzZXJJbnRlcmZhY2Uge1xuICBzZW50TmFtZTpcbiAgICB8ICdNb3ppbGxhIEZpcmVmb3gnXG4gICAgfCAnU2Ftc3VuZyBJbnRlcm5ldCdcbiAgICB8ICdPcGVyYSdcbiAgICB8ICdNaWNyb3NvZnQgRWRnZSAoTGVnYWN5KSdcbiAgICB8ICdNaWNyb3NvZnQgRWRnZSAoQ2hyb21pdW0pJ1xuICAgIHwgJ0dvb2dsZSBDaHJvbWUgb3IgQ2hyb21pdW0nXG4gICAgfCAnQXBwbGUgU2FmYXJpJztcbiAgc2hvcnROYW1lOlxuICAgIHwgJ0ZpcmVmb3gnXG4gICAgfCAnU2Ftc3VuZ0Jyb3dzZXInXG4gICAgfCAnT3BlcmEnXG4gICAgfCAnTVNFZGdlLWxlZ2FjeSdcbiAgICB8ICdNU0VkZ2UnXG4gICAgfCAnQ2hyb21lJ1xuICAgIHwgJ1NhZmFyaSc7XG4gIHJlZ2V4cEJyb3dzZXJOYW1lV2l0aFZlcnNpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGJyb3dzZXJzOiBCcm93c2VySW50ZXJmYWNlW10gPSBbXG4gIHtcbiAgICBzZW50TmFtZTogJ01vemlsbGEgRmlyZWZveCcsXG4gICAgc2hvcnROYW1lOiAnRmlyZWZveCcsXG4gICAgcmVnZXhwQnJvd3Nlck5hbWVXaXRoVmVyc2lvbjogJyhGaXJlZm94KVxcXFwvKC4rKScsXG4gIH0sXG4gIHtcbiAgICBzZW50TmFtZTogJ1NhbXN1bmcgSW50ZXJuZXQnLFxuICAgIHNob3J0TmFtZTogJ1NhbXN1bmdCcm93c2VyJyxcbiAgICByZWdleHBCcm93c2VyTmFtZVdpdGhWZXJzaW9uOiAnKFNhbXN1bmdCcm93c2VyKVxcXFwvKC4rKVxcXFxzJyxcbiAgfSxcbiAge1xuICAgIHNlbnROYW1lOiAnT3BlcmEnLFxuICAgIHNob3J0TmFtZTogJ09wZXJhJyxcbiAgICByZWdleHBCcm93c2VyTmFtZVdpdGhWZXJzaW9uOiAnKE9wZXJhKVxcXFwvKC4rKScsXG4gIH0sXG4gIHtcbiAgICBzZW50TmFtZTogJ09wZXJhJyxcbiAgICBzaG9ydE5hbWU6ICdPcGVyYScsXG4gICAgcmVnZXhwQnJvd3Nlck5hbWVXaXRoVmVyc2lvbjogJyhPUFIpXFxcXC8oLispJyxcbiAgfSxcbiAge1xuICAgIHNlbnROYW1lOiAnTWljcm9zb2Z0IEVkZ2UgKExlZ2FjeSknLFxuICAgIHNob3J0TmFtZTogJ01TRWRnZS1sZWdhY3knLFxuICAgIHJlZ2V4cEJyb3dzZXJOYW1lV2l0aFZlcnNpb246ICcoRWRnZSlcXFxcLyguKyknLFxuICB9LFxuICB7XG4gICAgc2VudE5hbWU6ICdNaWNyb3NvZnQgRWRnZSAoQ2hyb21pdW0pJyxcbiAgICBzaG9ydE5hbWU6ICdNU0VkZ2UnLFxuICAgIHJlZ2V4cEJyb3dzZXJOYW1lV2l0aFZlcnNpb246ICcoRWRnKVxcXFwvKC4rKScsXG4gIH0sXG4gIHtcbiAgICBzZW50TmFtZTogJ0dvb2dsZSBDaHJvbWUgb3IgQ2hyb21pdW0nLFxuICAgIHNob3J0TmFtZTogJ0Nocm9tZScsXG4gICAgcmVnZXhwQnJvd3Nlck5hbWVXaXRoVmVyc2lvbjogJyhDaHJvbWUpXFxcXC8oLispXFxcXHMnLFxuICB9LFxuICB7XG4gICAgc2VudE5hbWU6ICdBcHBsZSBTYWZhcmknLFxuICAgIHNob3J0TmFtZTogJ1NhZmFyaScsXG4gICAgcmVnZXhwQnJvd3Nlck5hbWVXaXRoVmVyc2lvbjogJyhTYWZhcmkpXFxcXC8oLispJyxcbiAgfSxcbl07XG4iXX0=
@@ -0,0 +1,6 @@
1
+ export var Device;
2
+ (function (Device) {
3
+ Device["mobile"] = "mobile";
4
+ Device["desktop"] = "desktop";
5
+ })(Device || (Device = {}));
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wYXltZW50LWNsaWVudC1jb3JlL3NyYy9saWIvY29yZS91c2VyLWFnZW50L2RldmljZS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLE1BR1g7QUFIRCxXQUFZLE1BQU07SUFDaEIsMkJBQWlCLENBQUE7SUFDakIsNkJBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUhXLE1BQU0sS0FBTixNQUFNLFFBR2pCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gRGV2aWNlIHtcbiAgbW9iaWxlID0gJ21vYmlsZScsXG4gIGRlc2t0b3AgPSAnZGVza3RvcCcsXG59XG4iXX0=