@rudderstack/integrations-lib 0.2.23 → 0.2.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ import GoogleAds from './googleAds';
2
+ export { GoogleAds };
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sdks/googleAdsRestAPI/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.GoogleAds = void 0;
7
+ const googleAds_1 = __importDefault(require("./googleAds"));
8
+ exports.GoogleAds = googleAds_1.default;
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2Rrcy9nb29nbGVBZHNSZXN0QVBJL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDREQUFvQztBQUUzQixvQkFGRixtQkFBUyxDQUVFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEdvb2dsZUFkcyBmcm9tICcuL2dvb2dsZUFkcyc7XG5cbmV4cG9ydCB7IEdvb2dsZUFkcyB9O1xuIl19
@@ -0,0 +1,243 @@
1
+ export type AuthObject = {
2
+ accessToken: string;
3
+ customerId: string;
4
+ loginCustomerId?: string;
5
+ developerToken: string;
6
+ };
7
+ export type SearchStreamResponse<T> = {
8
+ results: T[];
9
+ fieldMask: string;
10
+ requestId: string;
11
+ queryResourceConsumption: string;
12
+ };
13
+ export type ConversionActionResponse = {
14
+ conversionAction: {
15
+ resourceName: string;
16
+ id: string;
17
+ };
18
+ };
19
+ export type CustomVariableResults = {
20
+ conversionCustomVariable: {
21
+ resourceName: string;
22
+ name: string;
23
+ };
24
+ };
25
+ type UserIdentifier = {
26
+ userIdentifierSource?: 'UNSPECIFIED' | 'UNKNOWN' | 'FIRST_PARTY' | 'THIRD_PARTY';
27
+ hashedEmail?: string;
28
+ hashedPhoneNumber?: string;
29
+ mobileId?: string;
30
+ thirdPartyUserId?: string;
31
+ addressInfo?: {
32
+ hashedFirstName?: string;
33
+ hashedLastName?: string;
34
+ city?: string;
35
+ state?: string;
36
+ countryCode?: string;
37
+ postalCode?: string;
38
+ hashedStreetAddress?: string;
39
+ };
40
+ orderId?: string;
41
+ conversionAction?: string;
42
+ adjustmentDateTime?: string;
43
+ userAgent?: string;
44
+ };
45
+ export type ConversionAdjustmentData = {
46
+ conversionAdjustments: {
47
+ gclidDateTimePair?: {
48
+ gclid?: string;
49
+ conversionDateTime?: string;
50
+ };
51
+ adjustmentType: 'UNSPECIFIED' | 'UNKNOWN' | 'RETRACTION' | 'RESTATEMENT' | 'ENHANCEMENT';
52
+ restatementValue?: {
53
+ adjustedValue?: number;
54
+ currencyCode?: string;
55
+ };
56
+ userIdentifiers?: UserIdentifier[];
57
+ }[];
58
+ partialFailure: boolean;
59
+ validateOnly?: boolean;
60
+ jobId?: number;
61
+ };
62
+ export type ConversionAdjustmentResponse = {
63
+ partialFailureError?: Record<string, string>;
64
+ results?: {
65
+ gclidDateTimePair?: {
66
+ gclid?: string;
67
+ conversionDateTime?: string;
68
+ };
69
+ orderId?: string;
70
+ adjustmentType?: 'UNSPECIFIED' | 'UNKNOWN' | 'RETRACTION' | 'RESTATEMENT' | 'ENHANCEMENT';
71
+ conversionAction?: string;
72
+ adjustmentDateTime?: string;
73
+ }[];
74
+ jobId?: string;
75
+ };
76
+ type Consent = {
77
+ adUserData: 'UNSPECIFIED' | 'UNKNOWN' | 'GRANTED' | 'DENIED';
78
+ adPersonalization: 'UNSPECIFIED' | 'UNKNOWN' | 'GRANTED' | 'DENIED';
79
+ };
80
+ export type CreateOfflineUserDataJobData = {
81
+ job: {
82
+ resourceName?: string;
83
+ type: 'UNSPECIFIED' | 'UNKNOWN' | 'STORE_SALES_UPLOAD_FIRST_PARTY' | 'STORE_SALES_UPLOAD_THIRD_PARTY' | 'CUSTOMER_MATCH_USER_LIST' | 'CUSTOMER_MATCH_WITH_ATTRIBUTES';
84
+ customerMatchUserListMetadata?: {
85
+ userList: string;
86
+ consent?: Consent;
87
+ };
88
+ storeSalesMetadata?: {
89
+ thirdPartyMetadata?: {
90
+ advertiserUploadDateTime?: string;
91
+ validTransactionFraction?: number;
92
+ partnerMatchFraction?: number;
93
+ partnerUploadFraction?: number;
94
+ bridgeMapVersionId?: string;
95
+ partnerId?: string;
96
+ };
97
+ loyaltyFraction?: number;
98
+ transactionUploadFraction?: number;
99
+ customKey?: string;
100
+ };
101
+ };
102
+ validateOnly?: boolean;
103
+ enableMatchRateRangePreview?: boolean;
104
+ };
105
+ export type CreateOfflineUserDataJobRespose = {
106
+ resourceName: string;
107
+ };
108
+ export type RunOfflineUserDataJobResponse = {
109
+ name?: string;
110
+ done?: boolean;
111
+ };
112
+ type CustomVariable = {
113
+ conversionCustomVariable?: string;
114
+ value?: string;
115
+ };
116
+ export type ClickConversionData = {
117
+ conversions: {
118
+ gbraid?: string;
119
+ wbraid?: string;
120
+ externalAttributionData?: {
121
+ externalAttributionCredit?: number;
122
+ externalAttributionModel?: string;
123
+ };
124
+ customVariables?: CustomVariable[];
125
+ cartData?: {
126
+ merchantId?: string;
127
+ feedCountryCode?: string;
128
+ feedLanguageCode?: string;
129
+ localTransactionCost?: number;
130
+ items?: {
131
+ productId?: string;
132
+ quantity?: number;
133
+ unitPrice?: number;
134
+ }[];
135
+ };
136
+ userIdentifiers?: UserIdentifier[];
137
+ conversionEnvironment?: 'UNSPECIFIED' | 'UNKNOWN' | 'APP' | 'WEB';
138
+ consent?: Consent;
139
+ gclid?: string;
140
+ conversionAction?: string;
141
+ conversionDateTime?: string;
142
+ conversionValue?: number;
143
+ currencyCode?: string;
144
+ orderId?: string;
145
+ }[];
146
+ partialFailure?: boolean;
147
+ validateOnly?: boolean;
148
+ debugEnabled?: boolean;
149
+ jobId?: number;
150
+ };
151
+ export type ClickConversionResponse = {
152
+ partialFailureError?: Record<string, string>;
153
+ results?: {
154
+ gbraid?: string;
155
+ wbraid?: string;
156
+ userIdentifiers?: UserIdentifier[];
157
+ gclid?: string;
158
+ conversionAction?: string;
159
+ conversionDateTime?: string;
160
+ }[];
161
+ };
162
+ type CallConversion = {
163
+ customVariables?: CustomVariable[];
164
+ consent?: Consent;
165
+ callerId?: string;
166
+ callStartDateTime?: string;
167
+ conversionAction?: string;
168
+ conversionDateTime?: string;
169
+ conversionValue?: number;
170
+ currencyCode?: string;
171
+ };
172
+ export type CallConversionData = {
173
+ conversions?: CallConversion[];
174
+ partialFailure?: boolean;
175
+ validateOnly?: boolean;
176
+ };
177
+ export type CallConversionResponse = {
178
+ partialFailureError?: Record<string, string>;
179
+ results?: {
180
+ callerId?: string;
181
+ callStartDateTime?: string;
182
+ conversionAction?: string;
183
+ conversionDateTime?: string;
184
+ }[];
185
+ };
186
+ type UserData = {
187
+ userIdentifiers?: UserIdentifier[];
188
+ transactionAttribute?: {
189
+ storeAttribute?: {
190
+ storeCode?: string;
191
+ };
192
+ itemAttribute?: {
193
+ itemId?: string;
194
+ countryCode?: string;
195
+ languageCode?: string;
196
+ quantity?: string;
197
+ merchantId?: string;
198
+ };
199
+ transactionDateTime?: string;
200
+ transactionAmountMicros?: number;
201
+ currencyCode?: string;
202
+ conversionAction?: string;
203
+ orderId?: string;
204
+ customValue?: string;
205
+ };
206
+ userAttribute?: {
207
+ lastPurchaseDateTime?: string;
208
+ averagePurchaseCount?: number;
209
+ averagePurchaseValueMicros?: string;
210
+ acquisitionDateTime?: string;
211
+ lifecycleStage?: string;
212
+ firstPurchaseDateTime?: string;
213
+ eventAttribute?: {
214
+ event: string;
215
+ eventDateTime: string;
216
+ itemAttribute: {
217
+ itemId: string;
218
+ }[];
219
+ }[];
220
+ lifetimeValueMicros?: string;
221
+ lifetimeValueBucket?: number;
222
+ shoppingLoyalty?: {
223
+ loyaltyTier: string;
224
+ };
225
+ };
226
+ consent?: Consent;
227
+ };
228
+ export type OfflineUserDataJobAddData = {
229
+ operations: {
230
+ create?: UserData;
231
+ remove?: UserData;
232
+ removeAll?: boolean;
233
+ }[];
234
+ validateOnly?: boolean;
235
+ enablePartialFailure?: boolean;
236
+ enableWarnings?: boolean;
237
+ };
238
+ export type OfflineUserDataJobAddDataResponse = {
239
+ partialFailureError?: Record<string, string | Array<Record<string, string>>>;
240
+ warning?: Record<string, string | Array<Record<string, string>>>;
241
+ };
242
+ export {};
243
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/sdks/googleAdsRestAPI/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI;IACpC,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,wBAAwB,EAAE,MAAM,CAAC;CAClC,CAAC;AACF,MAAM,MAAM,wBAAwB,GAAG;IACrC,gBAAgB,EAAE;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,wBAAwB,EAAE;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,oBAAoB,CAAC,EAAE,aAAa,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,CAAC;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE;QACZ,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AACF,MAAM,MAAM,wBAAwB,GAAG;IACrC,qBAAqB,EAAE;QACrB,iBAAiB,CAAC,EAAE;YAClB,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,kBAAkB,CAAC,EAAE,MAAM,CAAC;SAC7B,CAAC;QACF,cAAc,EAAE,aAAa,GAAG,SAAS,GAAG,YAAY,GAAG,aAAa,GAAG,aAAa,CAAC;QACzF,gBAAgB,CAAC,EAAE;YACjB,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,YAAY,CAAC,EAAE,MAAM,CAAC;SACvB,CAAC;QACF,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;KACpC,EAAE,CAAC;IACJ,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE;QACR,iBAAiB,CAAC,EAAE;YAClB,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,kBAAkB,CAAC,EAAE,MAAM,CAAC;SAC7B,CAAC;QACF,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,cAAc,CAAC,EAAE,aAAa,GAAG,SAAS,GAAG,YAAY,GAAG,aAAa,GAAG,aAAa,CAAC;QAC1F,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B,EAAE,CAAC;IACJ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,OAAO,GAAG;IACb,UAAU,EAAE,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC7D,iBAAiB,EAAE,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;CACrE,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,GAAG,EAAE;QACH,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,IAAI,EACA,aAAa,GACb,SAAS,GACT,gCAAgC,GAChC,gCAAgC,GAChC,0BAA0B,GAC1B,gCAAgC,CAAC;QACrC,6BAA6B,CAAC,EAAE;YAC9B,QAAQ,EAAE,MAAM,CAAC;YACjB,OAAO,CAAC,EAAE,OAAO,CAAC;SACnB,CAAC;QACF,kBAAkB,CAAC,EAAE;YACnB,kBAAkB,CAAC,EAAE;gBACnB,wBAAwB,CAAC,EAAE,MAAM,CAAC;gBAClC,wBAAwB,CAAC,EAAE,MAAM,CAAC;gBAClC,oBAAoB,CAAC,EAAE,MAAM,CAAC;gBAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;gBAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;gBAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;aACpB,CAAC;YACF,eAAe,CAAC,EAAE,MAAM,CAAC;YACzB,yBAAyB,CAAC,EAAE,MAAM,CAAC;YACnC,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,CAAC;KACH,CAAC;IACF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE;QACX,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,uBAAuB,CAAC,EAAE;YACxB,yBAAyB,CAAC,EAAE,MAAM,CAAC;YACnC,wBAAwB,CAAC,EAAE,MAAM,CAAC;SACnC,CAAC;QACF,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;QACnC,QAAQ,CAAC,EAAE;YACT,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,eAAe,CAAC,EAAE,MAAM,CAAC;YACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;YAC9B,KAAK,CAAC,EAAE;gBACN,SAAS,CAAC,EAAE,MAAM,CAAC;gBACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAClB,SAAS,CAAC,EAAE,MAAM,CAAC;aACpB,EAAE,CAAC;SACL,CAAC;QACF,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;QACnC,qBAAqB,CAAC,EAAE,aAAa,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;QAClE,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,EAAE,CAAC;IACJ,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;QACnC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B,EAAE,CAAC;CACL,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B,EAAE,CAAC;CACL,CAAC;AAEF,KAAK,QAAQ,GAAG;IACd,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,oBAAoB,CAAC,EAAE;QACrB,cAAc,CAAC,EAAE;YACf,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,CAAC;QACF,aAAa,CAAC,EAAE;YACd,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,CAAC;QACF,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,aAAa,CAAC,EAAE;QACd,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,0BAA0B,CAAC,EAAE,MAAM,CAAC;QACpC,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,cAAc,CAAC,EAAE;YACf,KAAK,EAAE,MAAM,CAAC;YACd,aAAa,EAAE,MAAM,CAAC;YACtB,aAAa,EAAE;gBACb,MAAM,EAAE,MAAM,CAAC;aAChB,EAAE,CAAC;SACL,EAAE,CAAC;QACJ,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,eAAe,CAAC,EAAE;YAChB,WAAW,EAAE,MAAM,CAAC;SACrB,CAAC;KACH,CAAC;IACF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAGF,MAAM,MAAM,yBAAyB,GAAG;IACtC,UAAU,EAAE;QACV,MAAM,CAAC,EAAE,QAAQ,CAAC;QAClB,MAAM,CAAC,EAAE,QAAQ,CAAC;QAClB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,EAAE,CAAC;IACJ,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAGF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAClE,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2Rrcy9nb29nbGVBZHNSZXN0QVBJL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBBdXRoT2JqZWN0ID0ge1xuICBhY2Nlc3NUb2tlbjogc3RyaW5nO1xuICBjdXN0b21lcklkOiBzdHJpbmc7XG4gIGxvZ2luQ3VzdG9tZXJJZD86IHN0cmluZztcbiAgZGV2ZWxvcGVyVG9rZW46IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFNlYXJjaFN0cmVhbVJlc3BvbnNlPFQ+ID0ge1xuICByZXN1bHRzOiBUW107XG4gIGZpZWxkTWFzazogc3RyaW5nO1xuICByZXF1ZXN0SWQ6IHN0cmluZztcbiAgcXVlcnlSZXNvdXJjZUNvbnN1bXB0aW9uOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgQ29udmVyc2lvbkFjdGlvblJlc3BvbnNlID0ge1xuICBjb252ZXJzaW9uQWN0aW9uOiB7XG4gICAgcmVzb3VyY2VOYW1lOiBzdHJpbmc7XG4gICAgaWQ6IHN0cmluZztcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbVZhcmlhYmxlUmVzdWx0cyA9IHtcbiAgY29udmVyc2lvbkN1c3RvbVZhcmlhYmxlOiB7XG4gICAgcmVzb3VyY2VOYW1lOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICB9O1xufTtcblxudHlwZSBVc2VySWRlbnRpZmllciA9IHtcbiAgdXNlcklkZW50aWZpZXJTb3VyY2U/OiAnVU5TUEVDSUZJRUQnIHwgJ1VOS05PV04nIHwgJ0ZJUlNUX1BBUlRZJyB8ICdUSElSRF9QQVJUWSc7XG4gIGhhc2hlZEVtYWlsPzogc3RyaW5nO1xuICBoYXNoZWRQaG9uZU51bWJlcj86IHN0cmluZztcbiAgbW9iaWxlSWQ/OiBzdHJpbmc7XG4gIHRoaXJkUGFydHlVc2VySWQ/OiBzdHJpbmc7XG4gIGFkZHJlc3NJbmZvPzoge1xuICAgIGhhc2hlZEZpcnN0TmFtZT86IHN0cmluZztcbiAgICBoYXNoZWRMYXN0TmFtZT86IHN0cmluZztcbiAgICBjaXR5Pzogc3RyaW5nO1xuICAgIHN0YXRlPzogc3RyaW5nO1xuICAgIGNvdW50cnlDb2RlPzogc3RyaW5nO1xuICAgIHBvc3RhbENvZGU/OiBzdHJpbmc7XG4gICAgaGFzaGVkU3RyZWV0QWRkcmVzcz86IHN0cmluZztcbiAgfTtcbiAgb3JkZXJJZD86IHN0cmluZztcbiAgY29udmVyc2lvbkFjdGlvbj86IHN0cmluZztcbiAgYWRqdXN0bWVudERhdGVUaW1lPzogc3RyaW5nO1xuICB1c2VyQWdlbnQ/OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgQ29udmVyc2lvbkFkanVzdG1lbnREYXRhID0ge1xuICBjb252ZXJzaW9uQWRqdXN0bWVudHM6IHtcbiAgICBnY2xpZERhdGVUaW1lUGFpcj86IHtcbiAgICAgIGdjbGlkPzogc3RyaW5nO1xuICAgICAgY29udmVyc2lvbkRhdGVUaW1lPzogc3RyaW5nO1xuICAgIH07XG4gICAgYWRqdXN0bWVudFR5cGU6ICdVTlNQRUNJRklFRCcgfCAnVU5LTk9XTicgfCAnUkVUUkFDVElPTicgfCAnUkVTVEFURU1FTlQnIHwgJ0VOSEFOQ0VNRU5UJztcbiAgICByZXN0YXRlbWVudFZhbHVlPzoge1xuICAgICAgYWRqdXN0ZWRWYWx1ZT86IG51bWJlcjtcbiAgICAgIGN1cnJlbmN5Q29kZT86IHN0cmluZztcbiAgICB9O1xuICAgIHVzZXJJZGVudGlmaWVycz86IFVzZXJJZGVudGlmaWVyW107XG4gIH1bXTtcbiAgcGFydGlhbEZhaWx1cmU6IGJvb2xlYW47XG4gIHZhbGlkYXRlT25seT86IGJvb2xlYW47XG4gIGpvYklkPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgQ29udmVyc2lvbkFkanVzdG1lbnRSZXNwb25zZSA9IHtcbiAgcGFydGlhbEZhaWx1cmVFcnJvcj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHJlc3VsdHM/OiB7XG4gICAgZ2NsaWREYXRlVGltZVBhaXI/OiB7XG4gICAgICBnY2xpZD86IHN0cmluZztcbiAgICAgIGNvbnZlcnNpb25EYXRlVGltZT86IHN0cmluZztcbiAgICB9O1xuICAgIG9yZGVySWQ/OiBzdHJpbmc7XG4gICAgYWRqdXN0bWVudFR5cGU/OiAnVU5TUEVDSUZJRUQnIHwgJ1VOS05PV04nIHwgJ1JFVFJBQ1RJT04nIHwgJ1JFU1RBVEVNRU5UJyB8ICdFTkhBTkNFTUVOVCc7XG4gICAgY29udmVyc2lvbkFjdGlvbj86IHN0cmluZztcbiAgICBhZGp1c3RtZW50RGF0ZVRpbWU/OiBzdHJpbmc7XG4gIH1bXTtcbiAgam9iSWQ/OiBzdHJpbmc7XG59O1xuXG50eXBlIENvbnNlbnQgPSB7XG4gIGFkVXNlckRhdGE6ICdVTlNQRUNJRklFRCcgfCAnVU5LTk9XTicgfCAnR1JBTlRFRCcgfCAnREVOSUVEJztcbiAgYWRQZXJzb25hbGl6YXRpb246ICdVTlNQRUNJRklFRCcgfCAnVU5LTk9XTicgfCAnR1JBTlRFRCcgfCAnREVOSUVEJztcbn07XG5cbmV4cG9ydCB0eXBlIENyZWF0ZU9mZmxpbmVVc2VyRGF0YUpvYkRhdGEgPSB7XG4gIGpvYjoge1xuICAgIHJlc291cmNlTmFtZT86IHN0cmluZztcbiAgICB0eXBlOlxuICAgICAgfCAnVU5TUEVDSUZJRUQnXG4gICAgICB8ICdVTktOT1dOJ1xuICAgICAgfCAnU1RPUkVfU0FMRVNfVVBMT0FEX0ZJUlNUX1BBUlRZJ1xuICAgICAgfCAnU1RPUkVfU0FMRVNfVVBMT0FEX1RISVJEX1BBUlRZJ1xuICAgICAgfCAnQ1VTVE9NRVJfTUFUQ0hfVVNFUl9MSVNUJ1xuICAgICAgfCAnQ1VTVE9NRVJfTUFUQ0hfV0lUSF9BVFRSSUJVVEVTJztcbiAgICBjdXN0b21lck1hdGNoVXNlckxpc3RNZXRhZGF0YT86IHtcbiAgICAgIHVzZXJMaXN0OiBzdHJpbmc7XG4gICAgICBjb25zZW50PzogQ29uc2VudDtcbiAgICB9O1xuICAgIHN0b3JlU2FsZXNNZXRhZGF0YT86IHtcbiAgICAgIHRoaXJkUGFydHlNZXRhZGF0YT86IHtcbiAgICAgICAgYWR2ZXJ0aXNlclVwbG9hZERhdGVUaW1lPzogc3RyaW5nO1xuICAgICAgICB2YWxpZFRyYW5zYWN0aW9uRnJhY3Rpb24/OiBudW1iZXI7XG4gICAgICAgIHBhcnRuZXJNYXRjaEZyYWN0aW9uPzogbnVtYmVyO1xuICAgICAgICBwYXJ0bmVyVXBsb2FkRnJhY3Rpb24/OiBudW1iZXI7XG4gICAgICAgIGJyaWRnZU1hcFZlcnNpb25JZD86IHN0cmluZztcbiAgICAgICAgcGFydG5lcklkPzogc3RyaW5nO1xuICAgICAgfTtcbiAgICAgIGxveWFsdHlGcmFjdGlvbj86IG51bWJlcjtcbiAgICAgIHRyYW5zYWN0aW9uVXBsb2FkRnJhY3Rpb24/OiBudW1iZXI7XG4gICAgICBjdXN0b21LZXk/OiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbiAgdmFsaWRhdGVPbmx5PzogYm9vbGVhbjtcbiAgZW5hYmxlTWF0Y2hSYXRlUmFuZ2VQcmV2aWV3PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIENyZWF0ZU9mZmxpbmVVc2VyRGF0YUpvYlJlc3Bvc2UgPSB7XG4gIHJlc291cmNlTmFtZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgUnVuT2ZmbGluZVVzZXJEYXRhSm9iUmVzcG9uc2UgPSB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGRvbmU/OiBib29sZWFuO1xufTtcblxudHlwZSBDdXN0b21WYXJpYWJsZSA9IHtcbiAgY29udmVyc2lvbkN1c3RvbVZhcmlhYmxlPzogc3RyaW5nO1xuICB2YWx1ZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIENsaWNrQ29udmVyc2lvbkRhdGEgPSB7XG4gIGNvbnZlcnNpb25zOiB7XG4gICAgZ2JyYWlkPzogc3RyaW5nO1xuICAgIHdicmFpZD86IHN0cmluZztcbiAgICBleHRlcm5hbEF0dHJpYnV0aW9uRGF0YT86IHtcbiAgICAgIGV4dGVybmFsQXR0cmlidXRpb25DcmVkaXQ/OiBudW1iZXI7XG4gICAgICBleHRlcm5hbEF0dHJpYnV0aW9uTW9kZWw/OiBzdHJpbmc7XG4gICAgfTtcbiAgICBjdXN0b21WYXJpYWJsZXM/OiBDdXN0b21WYXJpYWJsZVtdO1xuICAgIGNhcnREYXRhPzoge1xuICAgICAgbWVyY2hhbnRJZD86IHN0cmluZztcbiAgICAgIGZlZWRDb3VudHJ5Q29kZT86IHN0cmluZztcbiAgICAgIGZlZWRMYW5ndWFnZUNvZGU/OiBzdHJpbmc7XG4gICAgICBsb2NhbFRyYW5zYWN0aW9uQ29zdD86IG51bWJlcjtcbiAgICAgIGl0ZW1zPzoge1xuICAgICAgICBwcm9kdWN0SWQ/OiBzdHJpbmc7XG4gICAgICAgIHF1YW50aXR5PzogbnVtYmVyO1xuICAgICAgICB1bml0UHJpY2U/OiBudW1iZXI7XG4gICAgICB9W107XG4gICAgfTtcbiAgICB1c2VySWRlbnRpZmllcnM/OiBVc2VySWRlbnRpZmllcltdO1xuICAgIGNvbnZlcnNpb25FbnZpcm9ubWVudD86ICdVTlNQRUNJRklFRCcgfCAnVU5LTk9XTicgfCAnQVBQJyB8ICdXRUInO1xuICAgIGNvbnNlbnQ/OiBDb25zZW50O1xuICAgIGdjbGlkPzogc3RyaW5nO1xuICAgIGNvbnZlcnNpb25BY3Rpb24/OiBzdHJpbmc7XG4gICAgY29udmVyc2lvbkRhdGVUaW1lPzogc3RyaW5nO1xuICAgIGNvbnZlcnNpb25WYWx1ZT86IG51bWJlcjtcbiAgICBjdXJyZW5jeUNvZGU/OiBzdHJpbmc7XG4gICAgb3JkZXJJZD86IHN0cmluZztcbiAgfVtdO1xuICBwYXJ0aWFsRmFpbHVyZT86IGJvb2xlYW47XG4gIHZhbGlkYXRlT25seT86IGJvb2xlYW47XG4gIGRlYnVnRW5hYmxlZD86IGJvb2xlYW47XG4gIGpvYklkPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgQ2xpY2tDb252ZXJzaW9uUmVzcG9uc2UgPSB7XG4gIHBhcnRpYWxGYWlsdXJlRXJyb3I/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICByZXN1bHRzPzoge1xuICAgIGdicmFpZD86IHN0cmluZztcbiAgICB3YnJhaWQ/OiBzdHJpbmc7XG4gICAgdXNlcklkZW50aWZpZXJzPzogVXNlcklkZW50aWZpZXJbXTtcbiAgICBnY2xpZD86IHN0cmluZztcbiAgICBjb252ZXJzaW9uQWN0aW9uPzogc3RyaW5nO1xuICAgIGNvbnZlcnNpb25EYXRlVGltZT86IHN0cmluZztcbiAgfVtdO1xufTtcblxudHlwZSBDYWxsQ29udmVyc2lvbiA9IHtcbiAgY3VzdG9tVmFyaWFibGVzPzogQ3VzdG9tVmFyaWFibGVbXTtcbiAgY29uc2VudD86IENvbnNlbnQ7XG4gIGNhbGxlcklkPzogc3RyaW5nO1xuICBjYWxsU3RhcnREYXRlVGltZT86IHN0cmluZztcbiAgY29udmVyc2lvbkFjdGlvbj86IHN0cmluZztcbiAgY29udmVyc2lvbkRhdGVUaW1lPzogc3RyaW5nO1xuICBjb252ZXJzaW9uVmFsdWU/OiBudW1iZXI7XG4gIGN1cnJlbmN5Q29kZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIENhbGxDb252ZXJzaW9uRGF0YSA9IHtcbiAgY29udmVyc2lvbnM/OiBDYWxsQ29udmVyc2lvbltdO1xuICBwYXJ0aWFsRmFpbHVyZT86IGJvb2xlYW47XG4gIHZhbGlkYXRlT25seT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBDYWxsQ29udmVyc2lvblJlc3BvbnNlID0ge1xuICBwYXJ0aWFsRmFpbHVyZUVycm9yPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgcmVzdWx0cz86IHtcbiAgICBjYWxsZXJJZD86IHN0cmluZztcbiAgICBjYWxsU3RhcnREYXRlVGltZT86IHN0cmluZztcbiAgICBjb252ZXJzaW9uQWN0aW9uPzogc3RyaW5nO1xuICAgIGNvbnZlcnNpb25EYXRlVGltZT86IHN0cmluZztcbiAgfVtdO1xufTtcblxudHlwZSBVc2VyRGF0YSA9IHtcbiAgdXNlcklkZW50aWZpZXJzPzogVXNlcklkZW50aWZpZXJbXTtcbiAgdHJhbnNhY3Rpb25BdHRyaWJ1dGU/OiB7XG4gICAgc3RvcmVBdHRyaWJ1dGU/OiB7XG4gICAgICBzdG9yZUNvZGU/OiBzdHJpbmc7XG4gICAgfTtcbiAgICBpdGVtQXR0cmlidXRlPzoge1xuICAgICAgaXRlbUlkPzogc3RyaW5nO1xuICAgICAgY291bnRyeUNvZGU/OiBzdHJpbmc7XG4gICAgICBsYW5ndWFnZUNvZGU/OiBzdHJpbmc7XG4gICAgICBxdWFudGl0eT86IHN0cmluZztcbiAgICAgIG1lcmNoYW50SWQ/OiBzdHJpbmc7XG4gICAgfTtcbiAgICB0cmFuc2FjdGlvbkRhdGVUaW1lPzogc3RyaW5nO1xuICAgIHRyYW5zYWN0aW9uQW1vdW50TWljcm9zPzogbnVtYmVyO1xuICAgIGN1cnJlbmN5Q29kZT86IHN0cmluZztcbiAgICBjb252ZXJzaW9uQWN0aW9uPzogc3RyaW5nO1xuICAgIG9yZGVySWQ/OiBzdHJpbmc7XG4gICAgY3VzdG9tVmFsdWU/OiBzdHJpbmc7XG4gIH07XG4gIHVzZXJBdHRyaWJ1dGU/OiB7XG4gICAgbGFzdFB1cmNoYXNlRGF0ZVRpbWU/OiBzdHJpbmc7XG4gICAgYXZlcmFnZVB1cmNoYXNlQ291bnQ/OiBudW1iZXI7XG4gICAgYXZlcmFnZVB1cmNoYXNlVmFsdWVNaWNyb3M/OiBzdHJpbmc7XG4gICAgYWNxdWlzaXRpb25EYXRlVGltZT86IHN0cmluZztcbiAgICBsaWZlY3ljbGVTdGFnZT86IHN0cmluZztcbiAgICBmaXJzdFB1cmNoYXNlRGF0ZVRpbWU/OiBzdHJpbmc7XG4gICAgZXZlbnRBdHRyaWJ1dGU/OiB7XG4gICAgICBldmVudDogc3RyaW5nO1xuICAgICAgZXZlbnREYXRlVGltZTogc3RyaW5nO1xuICAgICAgaXRlbUF0dHJpYnV0ZToge1xuICAgICAgICBpdGVtSWQ6IHN0cmluZztcbiAgICAgIH1bXTtcbiAgICB9W107XG4gICAgbGlmZXRpbWVWYWx1ZU1pY3Jvcz86IHN0cmluZztcbiAgICBsaWZldGltZVZhbHVlQnVja2V0PzogbnVtYmVyO1xuICAgIHNob3BwaW5nTG95YWx0eT86IHtcbiAgICAgIGxveWFsdHlUaWVyOiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbiAgY29uc2VudD86IENvbnNlbnQ7XG59O1xuXG4vLyBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9nb29nbGUtYWRzL2FwaS9yZXN0L3JlZmVyZW5jZS9yZXN0L3YxOS9jdXN0b21lcnMub2ZmbGluZVVzZXJEYXRhSm9icy9hZGRPcGVyYXRpb25zI3JlcXVlc3QtYm9keVxuZXhwb3J0IHR5cGUgT2ZmbGluZVVzZXJEYXRhSm9iQWRkRGF0YSA9IHtcbiAgb3BlcmF0aW9uczoge1xuICAgIGNyZWF0ZT86IFVzZXJEYXRhO1xuICAgIHJlbW92ZT86IFVzZXJEYXRhO1xuICAgIHJlbW92ZUFsbD86IGJvb2xlYW47XG4gIH1bXTtcbiAgdmFsaWRhdGVPbmx5PzogYm9vbGVhbjtcbiAgZW5hYmxlUGFydGlhbEZhaWx1cmU/OiBib29sZWFuO1xuICBlbmFibGVXYXJuaW5ncz86IGJvb2xlYW47XG59O1xuXG4vLyBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9nb29nbGUtYWRzL2FwaS9yZXN0L3JlZmVyZW5jZS9yZXN0L3YxOS9jdXN0b21lcnMub2ZmbGluZVVzZXJEYXRhSm9icy9hZGRPcGVyYXRpb25zI3Jlc3BvbnNlLWJvZHlcbmV4cG9ydCB0eXBlIE9mZmxpbmVVc2VyRGF0YUpvYkFkZERhdGFSZXNwb25zZSA9IHtcbiAgcGFydGlhbEZhaWx1cmVFcnJvcj86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IEFycmF5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+PjtcbiAgd2FybmluZz86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IEFycmF5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+Pjtcbn07XG4iXX0=
@@ -1,5 +1,5 @@
1
- import SFMC from './sfmc';
2
- import CustomerIOSegment from './customerio_audience';
3
- import * as ZOHO_SDK from './zoho';
4
- export { SFMC, CustomerIOSegment, ZOHO_SDK };
1
+ export { default as SFMC } from './sfmc';
2
+ export { default as CustomerIOSegment } from './customerio_audience';
3
+ export * as ZOHO_SDK from './zoho';
4
+ export * as GoogleAdsSDK from './googleAdsRestAPI';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sdks/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,iBAAiB,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,QAAQ,MAAM,QAAQ,CAAC;AAEnC,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sdks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,KAAK,QAAQ,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC"}
@@ -36,11 +36,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.ZOHO_SDK = exports.CustomerIOSegment = exports.SFMC = void 0;
40
- const sfmc_1 = __importDefault(require("./sfmc"));
41
- exports.SFMC = sfmc_1.default;
42
- const customerio_audience_1 = __importDefault(require("./customerio_audience"));
43
- exports.CustomerIOSegment = customerio_audience_1.default;
44
- const ZOHO_SDK = __importStar(require("./zoho"));
45
- exports.ZOHO_SDK = ZOHO_SDK;
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2Rrcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrREFBMEI7QUFJakIsZUFKRixjQUFJLENBSUU7QUFIYixnRkFBc0Q7QUFHdkMsNEJBSFIsNkJBQWlCLENBR1E7QUFGaEMsaURBQW1DO0FBRUQsNEJBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU0ZNQyBmcm9tICcuL3NmbWMnO1xuaW1wb3J0IEN1c3RvbWVySU9TZWdtZW50IGZyb20gJy4vY3VzdG9tZXJpb19hdWRpZW5jZSc7XG5pbXBvcnQgKiBhcyBaT0hPX1NESyBmcm9tICcuL3pvaG8nO1xuXG5leHBvcnQgeyBTRk1DLCBDdXN0b21lcklPU2VnbWVudCwgWk9IT19TREsgfTtcbiJdfQ==
39
+ exports.GoogleAdsSDK = exports.ZOHO_SDK = exports.CustomerIOSegment = exports.SFMC = void 0;
40
+ var sfmc_1 = require("./sfmc");
41
+ Object.defineProperty(exports, "SFMC", { enumerable: true, get: function () { return __importDefault(sfmc_1).default; } });
42
+ var customerio_audience_1 = require("./customerio_audience");
43
+ Object.defineProperty(exports, "CustomerIOSegment", { enumerable: true, get: function () { return __importDefault(customerio_audience_1).default; } });
44
+ exports.ZOHO_SDK = __importStar(require("./zoho"));
45
+ exports.GoogleAdsSDK = __importStar(require("./googleAdsRestAPI"));
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2Rrcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFBeUM7QUFBaEMsNkdBQUEsT0FBTyxPQUFRO0FBQ3hCLDZEQUFxRTtBQUE1RCx5SUFBQSxPQUFPLE9BQXFCO0FBQ3JDLG1EQUFtQztBQUNuQyxtRUFBbUQiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBkZWZhdWx0IGFzIFNGTUMgfSBmcm9tICcuL3NmbWMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBDdXN0b21lcklPU2VnbWVudCB9IGZyb20gJy4vY3VzdG9tZXJpb19hdWRpZW5jZSc7XG5leHBvcnQgKiBhcyBaT0hPX1NESyBmcm9tICcuL3pvaG8nO1xuZXhwb3J0ICogYXMgR29vZ2xlQWRzU0RLIGZyb20gJy4vZ29vZ2xlQWRzUmVzdEFQSSc7XG4iXX0=
@@ -126,4 +126,14 @@ export declare const generateUUID: () => string;
126
126
  export declare const convertToString: (value: any) => string;
127
127
  export declare const uuidv5: (val: string) => string;
128
128
  export declare const generateRandomString: (length?: number) => string;
129
+ /**
130
+ *
131
+ * @param {Record<string, any | any[]} qParams - Object containing parameters where values are arrays
132
+ * @returns {Record<string, any>} Flattened object where array values of length one are replaced with their first element
133
+ * @description
134
+ * Flattens an object by replacing array values of length one with their first element,
135
+ * while keeping non-array values or arrays of length more than one unchanged.
136
+ * In case of empty array, the key is removed from the output
137
+ */
138
+ export declare const flattenQueryParams: (qParams: Record<string, any | any[]>) => Record<string, any>;
129
139
  //# sourceMappingURL=misc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../src/utils/misc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../src/utils/misc.ts"],"names":[],"mappings":"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"}
@@ -36,7 +36,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.generateRandomString = exports.uuidv5 = exports.convertToString = exports.generateUUID = exports.hashToSha256 = exports.formatTimeStamp = exports.getOffsetInSec = exports.flattenJson = exports.getValueFromPropertiesOrTraits = exports.getHashFromArrayWithValueAsObject = exports.getHashFromArrayWithDuplicate = exports.getHashFromArray = exports.removeUndefinedNullEmptyExclBoolInt = exports.isDefinedNotNullNotEmpty = exports.isEmptyObject = exports.isEmpty = exports.isObject = exports.getType = exports.isPrimitive = exports.stripTrailingSlash = exports.isValidUrl = exports.base64Convertor = exports.flattenMap = exports.removeUndefinedAndNullAndEmptyValues = exports.removeUndefinedAndNullValues = exports.removeNullValues = exports.removeUndefinedValues = exports.isBlank = exports.isDefinedAndNotNullAndNotEmpty = exports.isDefinedAndNotNull = exports.isNotNull = exports.isNotEmpty = exports.isDefined = exports.set = exports.get = void 0;
39
+ exports.flattenQueryParams = exports.generateRandomString = exports.uuidv5 = exports.convertToString = exports.generateUUID = exports.hashToSha256 = exports.formatTimeStamp = exports.getOffsetInSec = exports.flattenJson = exports.getValueFromPropertiesOrTraits = exports.getHashFromArrayWithValueAsObject = exports.getHashFromArrayWithDuplicate = exports.getHashFromArray = exports.removeUndefinedNullEmptyExclBoolInt = exports.isDefinedNotNullNotEmpty = exports.isEmptyObject = exports.isEmpty = exports.isObject = exports.getType = exports.isPrimitive = exports.stripTrailingSlash = exports.isValidUrl = exports.base64Convertor = exports.flattenMap = exports.removeUndefinedAndNullAndEmptyValues = exports.removeUndefinedAndNullValues = exports.removeNullValues = exports.removeUndefinedValues = exports.isBlank = exports.isDefinedAndNotNullAndNotEmpty = exports.isDefinedAndNotNull = exports.isNotNull = exports.isNotEmpty = exports.isDefined = exports.set = exports.get = void 0;
40
40
  const lodash_1 = __importDefault(require("lodash"));
41
41
  const get_value_1 = __importDefault(require("get-value"));
42
42
  exports.get = get_value_1.default;
@@ -364,4 +364,26 @@ const uuidv5 = (val) => (0, uuid_1.v5)(val, uuid_namespace);
364
364
  exports.uuidv5 = uuidv5;
365
365
  const generateRandomString = (length = 10) => crypto_1.default.randomBytes(length).toString('hex').slice(0, length);
366
366
  exports.generateRandomString = generateRandomString;
367
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9taXNjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUF1QjtBQUN2QiwwREFBNEI7QUFXbkIsY0FYRixtQkFBRyxDQVdFO0FBVlosMERBQTRCO0FBVWQsY0FWUCxtQkFBRyxDQVVPO0FBVGpCLHNFQUFxQztBQUNyQyxvREFBNEI7QUFDNUIsb0RBQTRCO0FBQzVCLCtCQUEwQjtBQUMxQixrREFBb0M7QUFNN0IsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsZ0JBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBOUMsUUFBQSxTQUFTLGFBQXFDO0FBQ3BELE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLGdCQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQTNDLFFBQUEsVUFBVSxjQUFpQztBQUNqRCxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUF0QyxRQUFBLFNBQVMsYUFBNkI7QUFDNUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLENBQVUsRUFBRSxFQUFFLENBQUMsSUFBQSxpQkFBUyxFQUFDLENBQUMsQ0FBQyxJQUFJLElBQUEsaUJBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztBQUFuRSxRQUFBLG1CQUFtQix1QkFBZ0Q7QUFDekUsTUFBTSw4QkFBOEIsR0FBRyxDQUFDLENBQVUsRUFBRSxFQUFFLENBQzNELElBQUEsaUJBQVMsRUFBQyxDQUFDLENBQUMsSUFBSSxJQUFBLGlCQUFTLEVBQUMsQ0FBQyxDQUFDLElBQUksSUFBQSxrQkFBVSxFQUFDLENBQUMsQ0FBQyxDQUFDO0FBRG5DLFFBQUEsOEJBQThCLGtDQUNLO0FB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akQsUUFBQSxvQkFBb0Isd0JBQzZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBnZXQgZnJvbSAnZ2V0LXZhbHVlJztcbmltcG9ydCBzZXQgZnJvbSAnc2V0LXZhbHVlJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcbmltcG9ydCBzaGEyNTYgZnJvbSAnc2hhMjU2JztcbmltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IHY1IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnLi4vbG9nZ2VyJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJTkxJTkVSU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgeyBnZXQsIHNldCB9O1xuZXhwb3J0IGNvbnN0IGlzRGVmaW5lZCA9ICh4OiB1bmtub3duKSA9PiAhXy5pc1VuZGVmaW5lZCh4KTtcbmV4cG9ydCBjb25zdCBpc05vdEVtcHR5ID0gKHg6IHVua25vd24pID0+ICFfLmlzRW1wdHkoeCk7XG5leHBvcnQgY29uc3QgaXNOb3ROdWxsID0gKHg6IHVua25vd24pID0+IHggIT0gbnVsbDtcbmV4cG9ydCBjb25zdCBpc0RlZmluZWRBbmROb3ROdWxsID0gKHg6IHVua25vd24pID0+IGlzRGVmaW5lZCh4KSAmJiBpc05vdE51bGwoeCk7XG5leHBvcnQgY29uc3QgaXNEZWZpbmVkQW5kTm90TnVsbEFuZE5vdEVtcHR5ID0gKHg6IHVua25vd24pID0+XG4gIGlzRGVmaW5lZCh4KSAmJiBpc05vdE51bGwoeCkgJiYgaXNOb3RFbXB0eSh4KTtcbmV4cG9ydCBjb25zdCBpc0JsYW5rID0gKHZhbHVlOiB1bmtub3duKSA9PiBfLmlzRW1wdHkoXy50b1N0cmluZyh2YWx1ZSkpO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCBjb25zdCByZW1vdmVVbmRlZmluZWRWYWx1ZXMgPSAob2JqOiB1bmtub3duKSA9PiB7XG4gIGlmICghXy5pc09iamVjdChvYmopKSByZXR1cm4gb2JqO1xuICByZXR1cm4gXy5waWNrQnkob2JqLCBpc0RlZmluZWQpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZU51bGxWYWx1ZXMgPSAob2JqOiB1bmtub3duKSA9PiB7XG4gIGlmICghXy5pc09iamVjdChvYmopKSByZXR1cm4gb2JqO1xuICByZXR1cm4gXy5waWNrQnkob2JqLCBpc05vdE51bGwpO1xufTtcbmV4cG9ydCBjb25zdCByZW1vdmVVbmRlZmluZWRBbmROdWxsVmFsdWVzID0gKG9iajogdW5rbm93bikgPT4ge1xuICBpZiAoIV8uaXNPYmplY3Qob2JqKSkgcmV0dXJuIG9iajtcbiAgcmV0dXJuIF8ucGlja0J5KG9iaiwgaXNEZWZpbmVkQW5kTm90TnVsbCk7XG59O1xuZXhwb3J0IGNvbnN0IHJlbW92ZVVuZGVmaW5lZEFuZE51bGxBbmRFbXB0eVZhbHVlcyA9IChvYmo6IHVua25vd24pID0+IHtcbiAgaWYgKCFfLmlzT2JqZWN0KG9iaikpIHJldHVybiBvYmo7XG4gIHJldHVybiBfLnBpY2tCeShvYmosIGlzRGVmaW5lZEFuZE5vdE51bGxBbmROb3RFbXB0eSk7XG59O1xuXG4vKipcbiAqIFRoZSBmbGF0dGVuTWFwIGZ1bmN0aW9uIHRha2VzIGEgY29sbGVjdGlvbiBhcyBpbnB1dCBhbmQgcmV0dXJucyBhIGZsYXR0ZW5lZCB2ZXJzaW9uIG9mIHRoZSBjb2xsZWN0aW9uLiBJZiB0aGUgaW5wdXQgaXMgbm90IGFuIGFycmF5IG9yIGFuIG9iamVjdCwgaXQgaXMgcmV0dXJuZWQgYXMgaXMuIE90aGVyd2lzZSwgdGhlIGZ1bmN0aW9uIHVzZXMgdGhlIGZsYXRNYXAgZnVuY3Rpb24gZnJvbSB0aGUgbG9kYXNoIGxpYnJhcnkgdG8gZmxhdHRlbiB0aGUgY29sbGVjdGlvbi5cbiAqIEBwYXJhbSBjb2xsZWN0aW9uXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgY29uc3QgZmxhdHRlbk1hcCA9IChjb2xsZWN0aW9uOiB1bmtub3duKSA9PiB7XG4gIGlmICghXy5pc0FycmF5KGNvbGxlY3Rpb24pICYmICFfLmlzT2JqZWN0KGNvbGxlY3Rpb24pKSByZXR1cm4gY29sbGVjdGlvbjtcbiAgcmV0dXJuIF8uZmxhdE1hcChjb2xsZWN0aW9uLCAoeCkgPT4geCk7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEdFTkVSSUMgVVRMSVRZXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGNvbnN0IGJhc2U2NENvbnZlcnRvciA9IChzdHJpbmc6IHN0cmluZykgPT4gQnVmZmVyLmZyb20oc3RyaW5nKS50b1N0cmluZygnYmFzZTY0Jyk7XG5cbi8vIHJldHVybiBhIHZhbGlkIFVSTCBvYmplY3QgaWYgY29ycmVjdCBlbHNlIG51bGxcbmV4cG9ydCBjb25zdCBpc1ZhbGlkVXJsID0gKHVybDogc3RyaW5nIHwgVVJMKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBVUkwodXJsKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBzdHJpcFRyYWlsaW5nU2xhc2ggPSAoc3RyOiBzdHJpbmcpID0+XG4gIHN0ciAmJiBzdHIuZW5kc1dpdGgoJy8nKSA/IHN0ci5zbGljZSgwLCAtMSkgOiBzdHI7XG5cbmV4cG9ydCBjb25zdCBpc1ByaW1pdGl2ZSA9IChhcmc6IHVua25vd24pID0+IHtcbiAgY29uc3QgdHlwZSA9IHR5cGVvZiBhcmc7XG4gIHJldHVybiBhcmcgPT0gbnVsbCB8fCAodHlwZSAhPT0gJ29iamVjdCcgJiYgdHlwZSAhPT0gJ2Z1bmN0aW9uJyk7XG59O1xuXG4vKipcbiAqXG4gKiBAcGFyYW0geyp9IGFyZ1xuICogQHJldHVybnMge3R5cGV9XG4gKlxuICogUmV0dXJucyB0eXBlIG9mIHBhc3NlZCBhcmdcbiAqIGZvciBudWxsIGFyZ3NzIHJldHVybnMgXCJOVUxMXCIgaW5zdGVkIG9mIFwib2JqZWN0XCJcbiAqXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRUeXBlID0gKGFyZzogdW5rbm93bikgPT4ge1xuICBjb25zdCB0eXBlID0gdHlwZW9mIGFyZztcbiAgaWYgKGFyZyA9PSBudWxsKSB7XG4gICAgcmV0dXJuICdOVUxMJztcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG4gICAgcmV0dXJuICdhcnJheSc7XG4gIH1cbiAgcmV0dXJuIHR5cGU7XG59O1xuXG5leHBvcnQgY29uc3QgaXNPYmplY3QgPSAodmFsdWU6IHVua25vd24pID0+IHtcbiAgY29uc3QgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgKHR5cGUgPT09ICdvYmplY3QnIHx8IHR5cGUgPT09ICdmdW5jdGlvbicpICYmICFBcnJheS5pc0FycmF5KHZhbHVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0VtcHR5ID0gKGlucHV0OiB1bmtub3duKSA9PiBfLmlzRW1wdHkoXy50b1N0cmluZyhpbnB1dCkudHJpbSgpKTtcblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgZm9yIGVtcHR5IG9iamVjdCB7fVxuICogQHBhcmFtIHsqfSBvYmpcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBjb25zdCBpc0VtcHR5T2JqZWN0ID0gKG9iajogYW55KSA9PiB7XG4gIGlmICghb2JqKSB7XG4gICAgbG9nZ2VyLndhcm4oJ2lucHV0IGlzIHVuZGVmaW5lZCBvciBudWxsJyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID09PSAwO1xufTtcblxuLyoqXG4gKiBGdW5jdGlvbiB0byBjaGVjayBpZiB2YWx1ZSBpcyBEZWZpbmVkLCBOb3QgbnVsbCBhbmQgTm90IEVtcHR5LlxuICogQ3JlYXRlIHRoaXMgZnVuY3Rpb24sIEJlY2F1c2UgZXhpc3RpbmcgaXNEZWZpbmVkQW5kTm90TnVsbEFuZE5vdEVtcHR5KDEyMykgaXMgcmV0dXJuaW5nIGZhbHNlIGR1ZSB0byBsb2Rhc2ggXy5pc0VtcHR5IGZ1bmN0aW9uLlxuICogXy5pc0VtcHR5IGlzIHVzZWQgdG8gZGV0ZWN0IGVtcHR5IGNvbGxlY3Rpb25zL29iamVjdHMgYW5kIGl0IHdpbGwgcmV0dXJuIHRydWUgZm9yIEludGVnZXIsIEJvb2xlYW4gdmFsdWVzLlxuICogcmVmOiBodHRwczovL2dpdGh1Yi5jb20vbG9kYXNoL2xvZGFzaC9pc3N1ZXMvNDk2XG4gKiBAcGFyYW0geyp9IHZhbHVlIDEyM1xuICogQHJldHVybnMgeWVzXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RlZmluZWROb3ROdWxsTm90RW1wdHkgPSAodmFsdWU6IHVua25vd24pID0+XG4gICEoXG4gICAgdmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgIHZhbHVlID09PSBudWxsIHx8XG4gICAgTnVtYmVyLmlzTmFOKHZhbHVlKSB8fFxuICAgICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDApIHx8XG4gICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpLmxlbmd0aCA9PT0gMClcbiAgKTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZVVuZGVmaW5lZE51bGxFbXB0eUV4Y2xCb29sSW50ID0gKG9iajogdW5rbm93bikgPT4ge1xuICBpZiAoIV8uaXNPYmplY3Qob2JqKSkgcmV0dXJuIG9iajtcbiAgcmV0dXJuIF8ucGlja0J5KG9iaiwgaXNEZWZpbmVkTm90TnVsbE5vdEVtcHR5KTtcbn07XG5cbi8vIEZvcm1hdCB0aGUgZGVzdGluYXRpb24uQ29uZmlnLmR5bmFtaWNNYXAgYXJyYXlzIHRvIGhhc2hNYXBcbmV4cG9ydCBjb25zdCBnZXRIYXNoRnJvbUFycmF5ID0gKGFycmF5cywgZnJvbUtleSA9ICdmcm9tJywgdG9LZXkgPSAndG8nLCBpc0xvd2VyQ2FzZSA9IHRydWUpID0+IHtcbiAgY29uc3QgaGFzaE1hcCA9IHt9O1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnJheXMpKSB7XG4gICAgYXJyYXlzLmZvckVhY2goKGFycmF5KSA9PiB7XG4gICAgICBpZiAoaXNFbXB0eShhcnJheVtmcm9tS2V5XSkpIHJldHVybjtcbiAgICAgIGhhc2hNYXBbaXNMb3dlckNhc2UgPyBhcnJheVtmcm9tS2V5XS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgOiBhcnJheVtmcm9tS2V5XV0gPVxuICAgICAgICBhcnJheVt0b0tleV07XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGhhc2hNYXA7XG59O1xuXG4vKipcbiAqIEZvcm1hdCB0aGUgZGVzdGluYXRpb24uQ29uZmlnLmR5bmFtaWNNYXAgYXJyYXlzIHRvIGhhc2hNYXBcbiAqIHdoZXJlIHZhbHVlIGlzIGFuIGFycmF5XG4gKiBAcGFyYW0gIHt9IGFycmF5cyBbe1wiZnJvbVwiOlwicHJvcDFcIixcInRvXCI6XCJ2YWwxXCJ9LHtcImZyb21cIjpcInByb3AxXCIsXCJ0b1wiOlwidmFsMlwifSx7XCJmcm9tXCI6XCJwcm9wMlwiLFwidG9cIjpcInZhbDJcIn1dXG4gKiBAcGFyYW0gIHt9IGZyb21LZXk9XCJmcm9tXCJcbiAqIEBwYXJhbSAge30gdG9LZXk9XCJ0b1wiXG4gKiBAcGFyYW0gIHt9IGlzTG93ZXJDYXNlPXRydWVcbiAqIEBwYXJhbSAge30gcmV0dXJuIGhhc2htYXAge1wicHJvcDFcIjpbXCJ2YWwxXCIsXCJ2YWwyXCJdLFwicHJvcDJcIjpbXCJ2YWwyXCJdfVxuICovXG5leHBvcnQgY29uc3QgZ2V0SGFzaEZyb21BcnJheVdpdGhEdXBsaWNhdGUgPSAoXG4gIGFycmF5czogeyBmcm9tOiBzdHJpbmc7IHRvOiBzdHJpbmcgfVtdLFxuICBmcm9tS2V5ID0gJ2Zyb20nLFxuICB0b0tleSA9ICd0bycsXG4gIGlzTG93ZXJDYXNlID0gdHJ1ZSxcbikgPT4ge1xuICBjb25zdCBoYXNoTWFwID0ge307XG4gIGlmIChBcnJheS5pc0FycmF5KGFycmF5cykpIHtcbiAgICBhcnJheXMuZm9yRWFjaCgoYXJyYXkpID0+IHtcbiAgICAgIGlmIChpc0VtcHR5KGFycmF5W2Zyb21LZXldKSkgcmV0dXJuO1xuICAgICAgY29uc3Qga2V5ID0gaXNMb3dlckNhc2VcbiAgICAgICAgPyBhcnJheVtmcm9tS2V5XS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkudHJpbSgpXG4gICAgICAgIDogYXJyYXlbZnJvbUtleV0udG9TdHJpbmcoKS50cmltKCk7XG5cbiAgICAgIGlmIChoYXNoTWFwW2tleV0pIHtcbiAgICAgICAgaGFzaE1hcFtrZXldLmFkZChhcnJheVt0b0tleV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaGFzaE1hcFtrZXldID0gbmV3IFNldCgpO1xuICAgICAgICBoYXNoTWFwW2tleV0uYWRkKGFycmF5W3RvS2V5XSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGhhc2hNYXA7XG59O1xuXG4vKipcbiAqIEZvcm1hdCB0aGUgYXJyYXlzIHRvIGhhc2hNYXAgd2l0aCBrZXkgYXMgYGZyb21LZXlgIGFuZCB2YWx1ZSBhcyBPYmplY3RcbiAqIEBwYXJhbSB7Kn0gYXJyYXlzIFt7XCJpZFwiOlwiYTBiOGVmZTEtYzgyOC00YzYzLTg4NTAtMGQwNzQyODg4ZjlkXCIsXCJuYW1lXCI6XCJFbWFpbFwiLFwidHlwZVwiOlwiZW1haWxcIixcInR5cGVfY29uZmlnXCI6e30sXCJkYXRlX2NyZWF0ZWRcIjpcIjE2NjIyMjU4NDAyODRcIixcImhpZGVfZnJvbV9ndWVzdHNcIjpmYWxzZSxcInJlcXVpcmVkXCI6ZmFsc2V9XVxuICogQHBhcmFtIHsqfSBmcm9tS2V5IG5hbWVcbiAqIEBwYXJhbSB7Kn0gaXNMb3dlckNhc2UgZmFsc2VcbiAqIEByZXR1cm5zIC8vIHtcIkVtYWlsXCI6e1wiaWRcIjpcImEwYjhlZmUxLWM4MjgtNGM2My04ODUwLTBkMDc0Mjg4OGY5ZFwiLFwibmFtZVwiOlwiRW1haWxcIixcInR5cGVcIjpcImVtYWlsXCIsXCJ0eXBlX2NvbmZpZ1wiOnt9LFwiZGF0ZV9jcmVhdGVkXCI6XCIxNjYyMjI1ODQwMjg0XCIsXCJoaWRlX2Zyb21fZ3Vlc3RzXCI6ZmFsc2UsXCJyZXF1aXJlZFwiOmZhbHNlfX1cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEhhc2hGcm9tQXJyYXlXaXRoVmFsdWVBc09iamVjdCA9IChhcnJheXMsIGZyb21LZXkgPSAnZnJvbScsIGlzTG93ZXJDYXNlID0gdHJ1ZSkgPT4ge1xuICBjb25zdCBoYXNoTWFwID0ge307XG4gIGlmIChBcnJheS5pc0FycmF5KGFycmF5cykpIHtcbiAgICBhcnJheXMuZm9yRWFjaCgoYXJyYXkpID0+IHtcbiAgICAgIGlmIChpc0VtcHR5KGFycmF5W2Zyb21LZXldKSkgcmV0dXJuO1xuICAgICAgaGFzaE1hcFtpc0xvd2VyQ2FzZSA/IGFycmF5W2Zyb21LZXldLnRvTG93ZXJDYXNlKCkgOiBhcnJheVtmcm9tS2V5XV0gPSBhcnJheTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gaGFzaE1hcDtcbn07XG5cbi8qKlxuICogUmV0cmlldmVzIGEgdmFsdWUgZnJvbSBhIG1lc3NhZ2Ugb2JqZWN0IGJhc2VkIG9uIGEgZ2l2ZW4ga2V5LiBJdCBzZWFyY2hlcyBmb3IgdGhlIGtleSBpbiB0aGUgcHJvcGVydGllcywgdHJhaXRzLCBhbmQgY29udGV4dC50cmFpdHMgb2YgdGhlIG1lc3NhZ2Ugb2JqZWN0IGluIHRoYXQgb3JkZXIuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucy5tZXNzYWdlIC0gVGhlIG1lc3NhZ2Ugb2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcywgdHJhaXRzLCBhbmQgY29udGV4dC50cmFpdHMuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5rZXkgLSBUaGUga2V5IHRvIHNlYXJjaCBmb3IgaW4gdGhlIG1lc3NhZ2Ugb2JqZWN0LlxuICogQHJldHVybnMgeyp9IFRoZSB2YWx1ZSBmb3VuZCBpbiB0aGUgbWVzc2FnZSBvYmplY3QgZm9yIHRoZSBnaXZlbiBrZXksIG9yIG51bGwgaWYgdGhlIGtleSBpcyBub3QgZm91bmQgb3IgdGhlIHZhbHVlIGlzIG51bGwuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRWYWx1ZUZyb21Qcm9wZXJ0aWVzT3JUcmFpdHMgPSAoeyBtZXNzYWdlLCBrZXkgfSkgPT4ge1xuICBjb25zdCBrZXlTZXQgPSBbJ3Byb3BlcnRpZXMnLCAndHJhaXRzJywgJ2NvbnRleHQudHJhaXRzJ107XG5cbiAgY29uc3QgdmFsID0gXy5maW5kKFxuICAgIF8ubWFwKGtleVNldCwgKGspID0+IGdldChtZXNzYWdlLCBgJHtrfS4ke2tleX1gKSksXG4gICAgKHYpID0+ICFfLmlzTmlsKHYpLFxuICApO1xuICByZXR1cm4gIV8uaXNOaWwodmFsKSA/IHZhbCA6IG51bGw7XG59O1xuXG4vKipcbiAqIEZsYXR0ZW5zIGEgSlNPTiBvYmplY3QgaW50byBhIHNpbmdsZS1sZXZlbCBvYmplY3QuXG4gKlxuICogQHBhcmFtIGRhdGEgLSBUaGUgSlNPTiBvYmplY3QgdG8gYmUgZmxhdHRlbmVkLlxuICogQHBhcmFtIHNlcGFyYXRvciAtIFRoZSBjaGFyYWN0ZXIgdXNlZCB0byBzZXBhcmF0ZSB0aGUga2V5cyBpbiB0aGUgZmxhdHRlbmVkIG9iamVjdC4gRGVmYXVsdCBpcyAnLicuXG4gKiBAcGFyYW0gbW9kZSAtIFRoZSBtb2RlIHVzZWQgdG8gZmxhdHRlbiBhcnJheXMuIElmIHNldCB0byAnc3RyaWN0JywgdGhlIGFycmF5IGluZGljZXMgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgZmxhdHRlbmVkIGtleXMuIERlZmF1bHQgaXMgJ25vcm1hbCcuXG4gKiBAcmV0dXJucyBUaGUgZmxhdHRlbmVkIEpTT04gb2JqZWN0LlxuICovXG5leHBvcnQgY29uc3QgZmxhdHRlbkpzb24gPSAoZGF0YTogdW5rbm93biwgc2VwYXJhdG9yID0gJy4nLCBtb2RlID0gJ25vcm1hbCcpID0+IHtcbiAgY29uc3QgcmVzdWx0ID0ge307XG5cbiAgLy8gYSByZWN1cnNpdmUgZnVuY3Rpb24gdG8gbG9vcCB0aHJvdWdoIHRoZSBhcnJheSBvZiB0aGUgZGF0YVxuICBjb25zdCByZWN1cnNlID0gKGN1ciwgcHJvcCkgPT4ge1xuICAgIGxldCBpO1xuICAgIGlmIChPYmplY3QoY3VyKSAhPT0gY3VyKSB7XG4gICAgICByZXN1bHRbcHJvcF0gPSBjdXI7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGN1cikpIHtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBjdXIubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgaWYgKG1vZGUgPT09ICdzdHJpY3QnKSB7XG4gICAgICAgICAgcmVjdXJzZShjdXJbaV0sIGAke3Byb3B9JHtzZXBhcmF0b3J9JHtpfWApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlY3Vyc2UoY3VyW2ldLCBgJHtwcm9wfVske2l9XWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY3VyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXN1bHRbcHJvcF0gPSBbXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGlzRW1wdHlGbGFnID0gdHJ1ZTtcbiAgICAgIE9iamVjdC5rZXlzKGN1cikuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGlzRW1wdHlGbGFnID0gZmFsc2U7XG4gICAgICAgIHJlY3Vyc2UoY3VyW2tleV0sIHByb3AgPyBgJHtwcm9wfSR7c2VwYXJhdG9yfSR7a2V5fWAgOiBrZXkpO1xuICAgICAgfSk7XG4gICAgICBpZiAoaXNFbXB0eUZsYWcgJiYgcHJvcCkgcmVzdWx0W3Byb3BdID0ge307XG4gICAgfVxuICB9O1xuXG4gIHJlY3Vyc2UoZGF0YSwgJycpO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIG9mZnNldCB2YWx1ZSBpbiBzZWNvbmRzIGZvciBhIGdpdmVuIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB0aW1lem9uZSB2YWx1ZSBmb3Igd2hpY2ggdGhlIG9mZnNldCBuZWVkcyB0byBiZSBjYWxjdWxhdGVkLlxuICogQHJldHVybnMgVGhlIG9mZnNldCB2YWx1ZSBpbiBzZWNvbmRzIGZvciB0aGUgZ2l2ZW4gdGltZXpvbmUuIElmIHRoZSB0aW1lem9uZSBpcyBpbnZhbGlkIG9yIG5vdCBmb3VuZCwgaXQgcmV0dXJucyBgdW5kZWZpbmVkYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgb2Zmc2V0ID0gZ2V0T2Zmc2V0SW5TZWMoJ0FzaWEvQ2FsY3V0dGEnKTtcbiAqIGNvbnNvbGUubG9nKG9mZnNldCk7IC8vIE91dHB1dDogMTk4MDBcbiAqL1xuZXhwb3J0IGNvbnN0IGdldE9mZnNldEluU2VjID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgbmFtZSA9IG1vbWVudC50ei56b25lKHZhbHVlKTtcbiAgaWYgKG5hbWUpIHtcbiAgICBjb25zdCB4ID0gbW9tZW50KCkudHoodmFsdWUpLmZvcm1hdCgnWicpO1xuICAgIGNvbnN0IHNwbGl0ID0geC5zcGxpdCgnOicpO1xuICAgIGNvbnN0IGhvdXIgPSBOdW1iZXIoc3BsaXRbMF0pO1xuICAgIGNvbnN0IG1pbiA9IE51bWJlcihzcGxpdFsxXSk7XG4gICAgbGV0IHNlYyA9IDA7XG4gICAgc2VjID0gaG91ciA8IDAgPyAtMSAqIChob3VyICogLTYwICogNjAgKyBtaW4gKiA2MCkgOiBob3VyICogNjAgKiA2MCArIG1pbiAqIDYwO1xuICAgIHJldHVybiBzZWM7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSBkYXRlIHN0cmluZyBpbnRvIGEgZm9ybWF0dGVkIHRpbWVzdGFtcC5cbiAqIElmIGEgZm9ybWF0IHN0cmluZyBpcyBwcm92aWRlZCwgaXQgdXNlcyB0aGUgbW9tZW50IGxpYnJhcnkgdG8gZm9ybWF0IHRoZSBkYXRlLlxuICogSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBwcm92aWRlZCwgaXQgcmV0dXJucyB0aGUgdGltZXN0YW1wIG9mIHRoZSBkYXRlLlxuICogQHBhcmFtIGRhdGVTdHIgLSBUaGUgZGF0ZSBzdHJpbmcgdG8gYmUgZm9ybWF0dGVkLlxuICogQHBhcmFtIGZvcm1hdCAtIChPcHRpb25hbCkgVGhlIGZvcm1hdCBzdHJpbmcgdG8gYmUgdXNlZCBmb3IgZm9ybWF0dGluZyB0aGUgZGF0ZS5cbiAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgZGF0ZSBhcyBhIHN0cmluZyBpZiBhIGZvcm1hdCBzdHJpbmcgaXMgcHJvdmlkZWQsXG4gKiAgICAgICAgICBvdGhlcndpc2UgdGhlIHRpbWVzdGFtcCBvZiB0aGUgZGF0ZSBhcyBhIG51bWJlci5cbiAqL1xuZXhwb3J0IGNvbnN0IGZvcm1hdFRpbWVTdGFtcCA9IChkYXRlU3RyOiBzdHJpbmcsIGZvcm1hdD86IHN0cmluZykgPT4ge1xuICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0ZVN0cik7XG4gIC8vIG1vbWVudCBmb3JtYXQgaXMgcGFzc2VkLiBmb3JtYXQgYWNjb3JkaW5nbHlcbiAgaWYgKGZvcm1hdCkge1xuICAgIHJldHVybiBtb21lbnQudXRjKGRhdGUpLmZvcm1hdChmb3JtYXQpO1xuICB9XG5cbiAgLy8gcmV0dXJuIGRlZmF1bHQgZm9ybWF0XG4gIHJldHVybiBkYXRlLmdldFRpbWUoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYXNoVG9TaGEyNTYgPSAodmFsdWU6IHN0cmluZyB8IEJ1ZmZlciB8IG51bWJlcltdKSA9PiBzaGEyNTYodmFsdWUpO1xuXG4vKipcbiAqIEdlbmVyYXRlcyBhIFVuaXZlcnNhbGx5IFVuaXF1ZSBJZGVudGlmaWVyIChVVUlEKSB1c2luZyB0aGUgYGNyeXB0by5yYW5kb21VVUlEKClgIG1ldGhvZC5cbiAqIFRoZSBgZGlzYWJsZUVudHJvcHlDYWNoZWAgb3B0aW9uIGlzIHNldCB0byBgdHJ1ZWAgdG8gcHJldmVudCBjYWNoaW5nIG9mIGdlbmVyYXRlZCBVVUlEcy5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIHJhbmRvbWx5IGdlbmVyYXRlZCBVVUlELlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvY3J5cHRvLmh0bWwjY3J5cHRvcmFuZG9tdXVpZG9wdGlvbnM6fjp0ZXh0PW9wdGlvbnMlMjAlM0NPYmplY3QlM0UtLGRpc2FibGVFbnRyb3B5Q2FjaGUsLSUzQ2Jvb2xlYW4lM0UlMjBCeX1cbiAqL1xuZXhwb3J0IGNvbnN0IGdlbmVyYXRlVVVJRCA9ICgpOiBzdHJpbmcgPT4gY3J5cHRvLnJhbmRvbVVVSUQoeyBkaXNhYmxlRW50cm9weUNhY2hlOiB0cnVlIH0pO1xuXG5leHBvcnQgY29uc3QgY29udmVydFRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbn07XG5cbmNvbnN0IHV1aWRfbmFtZXNwYWNlID0gJ2U3NmM2ZTUxLTA2ZjktNDIyMi05NjM2LTVhYmE3ZTNhODRiNic7XG5leHBvcnQgY29uc3QgdXVpZHY1ID0gKHZhbDogc3RyaW5nKSA9PiB2NSh2YWwsIHV1aWRfbmFtZXNwYWNlKTtcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlUmFuZG9tU3RyaW5nID0gKGxlbmd0aDogbnVtYmVyID0gMTApID0+XG4gIGNyeXB0by5yYW5kb21CeXRlcyhsZW5ndGgpLnRvU3RyaW5nKCdoZXgnKS5zbGljZSgwLCBsZW5ndGgpO1xuIl19
367
+ /**
368
+ *
369
+ * @param {Record<string, any | any[]} qParams - Object containing parameters where values are arrays
370
+ * @returns {Record<string, any>} Flattened object where array values of length one are replaced with their first element
371
+ * @description
372
+ * Flattens an object by replacing array values of length one with their first element,
373
+ * while keeping non-array values or arrays of length more than one unchanged.
374
+ * In case of empty array, the key is removed from the output
375
+ */
376
+ const flattenQueryParams = (qParams) => {
377
+ if (!qParams)
378
+ return {}; // Early return for nullish values
379
+ const formattedOutput = {};
380
+ Object.entries(qParams).forEach(([key, value]) => {
381
+ const finalValue = Array.isArray(value) && value.length <= 1 ? value[0] : value;
382
+ if (finalValue !== undefined && finalValue !== null) {
383
+ formattedOutput[key] = finalValue;
384
+ }
385
+ });
386
+ return formattedOutput;
387
+ };
388
+ exports.flattenQueryParams = flattenQueryParams;
389
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9taXNjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUF1QjtBQUN2QiwwREFBNEI7QUFXbkIsY0FYRixtQkFBRyxDQVdFO0FBVlosMERBQTRCO0FBVWQsY0FWUCxtQkFBRyxDQVVPO0FBVGpCLHNFQUFxQztBQUNyQyxvREFBNEI7QUFDNUIsb0RBQTRCO0FBQzVCLCtCQUEwQjtBQUMxQixrREFBb0M7QUFNN0IsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsZ0JBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBOUMsUUFBQSxTQUFTLGFBQXFDO0FBQ3BELE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLGdCQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQTNDLFFBQUEsVUFBVSxjQUFpQztBQUNqRCxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUF0QyxRQUFBLFNBQVMsYUFBNkI7QUFDNUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLENBQVUsRUFBRSxFQUFFLENBQUMsSUFBQSxpQkFBUyxFQUFDLENBQUMsQ0FBQyxJQUFJLElBQUEsaUJBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztBQUFuRSxRQUFBLG1CQUFtQix1QkFBZ0Q7QUFDekUsTUFBTSw4QkFBOEIsR0FBRyxDQUFDLENBQVUsRUFBRSxFQUFFLENBQzNELElBQUEsaUJBQVMsRUFBQyxDQUFDLENBQUMsSUFBSSxJQUFBLGlCQUFTLEVBQUMsQ0FBQyxDQUFDLElBQUksSUFBQSxrQkFBVSxFQUFDLENBQUMsQ0FBQyxDQUFDO0FBRG5DLFFBQUEsOEJBQThCLGtDQUNLO0FB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akQsUUFBQSxvQkFBb0Isd0JBQzZCO0FBRTlEOzs7Ozs7OztHQVFHO0FBQ0ksTUFBTSxrQkFBa0IsR0FBRyxDQUFDLE9BQW9DLEVBQXVCLEVBQUU7SUFDOUYsSUFBSSxDQUFDLE9BQU87UUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLGtDQUFrQztJQUMzRCxNQUFNLGVBQWUsR0FBd0IsRUFBRSxDQUFDO0lBRWhELE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtRQUMvQyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNoRixJQUFJLFVBQVUsS0FBSyxTQUFTLElBQUksVUFBVSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3BELGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxlQUFlLENBQUM7QUFDekIsQ0FBQyxDQUFDO0FBWlcsUUFBQSxrQkFBa0Isc0JBWTdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBnZXQgZnJvbSAnZ2V0LXZhbHVlJztcbmltcG9ydCBzZXQgZnJvbSAnc2V0LXZhbHVlJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcbmltcG9ydCBzaGEyNTYgZnJvbSAnc2hhMjU2JztcbmltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IHY1IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnLi4vbG9nZ2VyJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJTkxJTkVSU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgeyBnZXQsIHNldCB9O1xuZXhwb3J0IGNvbnN0IGlzRGVmaW5lZCA9ICh4OiB1bmtub3duKSA9PiAhXy5pc1VuZGVmaW5lZCh4KTtcbmV4cG9ydCBjb25zdCBpc05vdEVtcHR5ID0gKHg6IHVua25vd24pID0+ICFfLmlzRW1wdHkoeCk7XG5leHBvcnQgY29uc3QgaXNOb3ROdWxsID0gKHg6IHVua25vd24pID0+IHggIT0gbnVsbDtcbmV4cG9ydCBjb25zdCBpc0RlZmluZWRBbmROb3ROdWxsID0gKHg6IHVua25vd24pID0+IGlzRGVmaW5lZCh4KSAmJiBpc05vdE51bGwoeCk7XG5leHBvcnQgY29uc3QgaXNEZWZpbmVkQW5kTm90TnVsbEFuZE5vdEVtcHR5ID0gKHg6IHVua25vd24pID0+XG4gIGlzRGVmaW5lZCh4KSAmJiBpc05vdE51bGwoeCkgJiYgaXNOb3RFbXB0eSh4KTtcbmV4cG9ydCBjb25zdCBpc0JsYW5rID0gKHZhbHVlOiB1bmtub3duKSA9PiBfLmlzRW1wdHkoXy50b1N0cmluZyh2YWx1ZSkpO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCBjb25zdCByZW1vdmVVbmRlZmluZWRWYWx1ZXMgPSAob2JqOiB1bmtub3duKSA9PiB7XG4gIGlmICghXy5pc09iamVjdChvYmopKSByZXR1cm4gb2JqO1xuICByZXR1cm4gXy5waWNrQnkob2JqLCBpc0RlZmluZWQpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZU51bGxWYWx1ZXMgPSAob2JqOiB1bmtub3duKSA9PiB7XG4gIGlmICghXy5pc09iamVjdChvYmopKSByZXR1cm4gb2JqO1xuICByZXR1cm4gXy5waWNrQnkob2JqLCBpc05vdE51bGwpO1xufTtcbmV4cG9ydCBjb25zdCByZW1vdmVVbmRlZmluZWRBbmROdWxsVmFsdWVzID0gKG9iajogdW5rbm93bikgPT4ge1xuICBpZiAoIV8uaXNPYmplY3Qob2JqKSkgcmV0dXJuIG9iajtcbiAgcmV0dXJuIF8ucGlja0J5KG9iaiwgaXNEZWZpbmVkQW5kTm90TnVsbCk7XG59O1xuZXhwb3J0IGNvbnN0IHJlbW92ZVVuZGVmaW5lZEFuZE51bGxBbmRFbXB0eVZhbHVlcyA9IChvYmo6IHVua25vd24pID0+IHtcbiAgaWYgKCFfLmlzT2JqZWN0KG9iaikpIHJldHVybiBvYmo7XG4gIHJldHVybiBfLnBpY2tCeShvYmosIGlzRGVmaW5lZEFuZE5vdE51bGxBbmROb3RFbXB0eSk7XG59O1xuXG4vKipcbiAqIFRoZSBmbGF0dGVuTWFwIGZ1bmN0aW9uIHRha2VzIGEgY29sbGVjdGlvbiBhcyBpbnB1dCBhbmQgcmV0dXJucyBhIGZsYXR0ZW5lZCB2ZXJzaW9uIG9mIHRoZSBjb2xsZWN0aW9uLiBJZiB0aGUgaW5wdXQgaXMgbm90IGFuIGFycmF5IG9yIGFuIG9iamVjdCwgaXQgaXMgcmV0dXJuZWQgYXMgaXMuIE90aGVyd2lzZSwgdGhlIGZ1bmN0aW9uIHVzZXMgdGhlIGZsYXRNYXAgZnVuY3Rpb24gZnJvbSB0aGUgbG9kYXNoIGxpYnJhcnkgdG8gZmxhdHRlbiB0aGUgY29sbGVjdGlvbi5cbiAqIEBwYXJhbSBjb2xsZWN0aW9uXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgY29uc3QgZmxhdHRlbk1hcCA9IChjb2xsZWN0aW9uOiB1bmtub3duKSA9PiB7XG4gIGlmICghXy5pc0FycmF5KGNvbGxlY3Rpb24pICYmICFfLmlzT2JqZWN0KGNvbGxlY3Rpb24pKSByZXR1cm4gY29sbGVjdGlvbjtcbiAgcmV0dXJuIF8uZmxhdE1hcChjb2xsZWN0aW9uLCAoeCkgPT4geCk7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEdFTkVSSUMgVVRMSVRZXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGNvbnN0IGJhc2U2NENvbnZlcnRvciA9IChzdHJpbmc6IHN0cmluZykgPT4gQnVmZmVyLmZyb20oc3RyaW5nKS50b1N0cmluZygnYmFzZTY0Jyk7XG5cbi8vIHJldHVybiBhIHZhbGlkIFVSTCBvYmplY3QgaWYgY29ycmVjdCBlbHNlIG51bGxcbmV4cG9ydCBjb25zdCBpc1ZhbGlkVXJsID0gKHVybDogc3RyaW5nIHwgVVJMKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBVUkwodXJsKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBzdHJpcFRyYWlsaW5nU2xhc2ggPSAoc3RyOiBzdHJpbmcpID0+XG4gIHN0ciAmJiBzdHIuZW5kc1dpdGgoJy8nKSA/IHN0ci5zbGljZSgwLCAtMSkgOiBzdHI7XG5cbmV4cG9ydCBjb25zdCBpc1ByaW1pdGl2ZSA9IChhcmc6IHVua25vd24pID0+IHtcbiAgY29uc3QgdHlwZSA9IHR5cGVvZiBhcmc7XG4gIHJldHVybiBhcmcgPT0gbnVsbCB8fCAodHlwZSAhPT0gJ29iamVjdCcgJiYgdHlwZSAhPT0gJ2Z1bmN0aW9uJyk7XG59O1xuXG4vKipcbiAqXG4gKiBAcGFyYW0geyp9IGFyZ1xuICogQHJldHVybnMge3R5cGV9XG4gKlxuICogUmV0dXJucyB0eXBlIG9mIHBhc3NlZCBhcmdcbiAqIGZvciBudWxsIGFyZ3NzIHJldHVybnMgXCJOVUxMXCIgaW5zdGVkIG9mIFwib2JqZWN0XCJcbiAqXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRUeXBlID0gKGFyZzogdW5rbm93bikgPT4ge1xuICBjb25zdCB0eXBlID0gdHlwZW9mIGFyZztcbiAgaWYgKGFyZyA9PSBudWxsKSB7XG4gICAgcmV0dXJuICdOVUxMJztcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG4gICAgcmV0dXJuICdhcnJheSc7XG4gIH1cbiAgcmV0dXJuIHR5cGU7XG59O1xuXG5leHBvcnQgY29uc3QgaXNPYmplY3QgPSAodmFsdWU6IHVua25vd24pID0+IHtcbiAgY29uc3QgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgKHR5cGUgPT09ICdvYmplY3QnIHx8IHR5cGUgPT09ICdmdW5jdGlvbicpICYmICFBcnJheS5pc0FycmF5KHZhbHVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0VtcHR5ID0gKGlucHV0OiB1bmtub3duKSA9PiBfLmlzRW1wdHkoXy50b1N0cmluZyhpbnB1dCkudHJpbSgpKTtcblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgZm9yIGVtcHR5IG9iamVjdCB7fVxuICogQHBhcmFtIHsqfSBvYmpcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBjb25zdCBpc0VtcHR5T2JqZWN0ID0gKG9iajogYW55KSA9PiB7XG4gIGlmICghb2JqKSB7XG4gICAgbG9nZ2VyLndhcm4oJ2lucHV0IGlzIHVuZGVmaW5lZCBvciBudWxsJyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID09PSAwO1xufTtcblxuLyoqXG4gKiBGdW5jdGlvbiB0byBjaGVjayBpZiB2YWx1ZSBpcyBEZWZpbmVkLCBOb3QgbnVsbCBhbmQgTm90IEVtcHR5LlxuICogQ3JlYXRlIHRoaXMgZnVuY3Rpb24sIEJlY2F1c2UgZXhpc3RpbmcgaXNEZWZpbmVkQW5kTm90TnVsbEFuZE5vdEVtcHR5KDEyMykgaXMgcmV0dXJuaW5nIGZhbHNlIGR1ZSB0byBsb2Rhc2ggXy5pc0VtcHR5IGZ1bmN0aW9uLlxuICogXy5pc0VtcHR5IGlzIHVzZWQgdG8gZGV0ZWN0IGVtcHR5IGNvbGxlY3Rpb25zL29iamVjdHMgYW5kIGl0IHdpbGwgcmV0dXJuIHRydWUgZm9yIEludGVnZXIsIEJvb2xlYW4gdmFsdWVzLlxuICogcmVmOiBodHRwczovL2dpdGh1Yi5jb20vbG9kYXNoL2xvZGFzaC9pc3N1ZXMvNDk2XG4gKiBAcGFyYW0geyp9IHZhbHVlIDEyM1xuICogQHJldHVybnMgeWVzXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RlZmluZWROb3ROdWxsTm90RW1wdHkgPSAodmFsdWU6IHVua25vd24pID0+XG4gICEoXG4gICAgdmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgIHZhbHVlID09PSBudWxsIHx8XG4gICAgTnVtYmVyLmlzTmFOKHZhbHVlKSB8fFxuICAgICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDApIHx8XG4gICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpLmxlbmd0aCA9PT0gMClcbiAgKTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZVVuZGVmaW5lZE51bGxFbXB0eUV4Y2xCb29sSW50ID0gKG9iajogdW5rbm93bikgPT4ge1xuICBpZiAoIV8uaXNPYmplY3Qob2JqKSkgcmV0dXJuIG9iajtcbiAgcmV0dXJuIF8ucGlja0J5KG9iaiwgaXNEZWZpbmVkTm90TnVsbE5vdEVtcHR5KTtcbn07XG5cbi8vIEZvcm1hdCB0aGUgZGVzdGluYXRpb24uQ29uZmlnLmR5bmFtaWNNYXAgYXJyYXlzIHRvIGhhc2hNYXBcbmV4cG9ydCBjb25zdCBnZXRIYXNoRnJvbUFycmF5ID0gKGFycmF5cywgZnJvbUtleSA9ICdmcm9tJywgdG9LZXkgPSAndG8nLCBpc0xvd2VyQ2FzZSA9IHRydWUpID0+IHtcbiAgY29uc3QgaGFzaE1hcCA9IHt9O1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnJheXMpKSB7XG4gICAgYXJyYXlzLmZvckVhY2goKGFycmF5KSA9PiB7XG4gICAgICBpZiAoaXNFbXB0eShhcnJheVtmcm9tS2V5XSkpIHJldHVybjtcbiAgICAgIGhhc2hNYXBbaXNMb3dlckNhc2UgPyBhcnJheVtmcm9tS2V5XS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgOiBhcnJheVtmcm9tS2V5XV0gPVxuICAgICAgICBhcnJheVt0b0tleV07XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGhhc2hNYXA7XG59O1xuXG4vKipcbiAqIEZvcm1hdCB0aGUgZGVzdGluYXRpb24uQ29uZmlnLmR5bmFtaWNNYXAgYXJyYXlzIHRvIGhhc2hNYXBcbiAqIHdoZXJlIHZhbHVlIGlzIGFuIGFycmF5XG4gKiBAcGFyYW0gIHt9IGFycmF5cyBbe1wiZnJvbVwiOlwicHJvcDFcIixcInRvXCI6XCJ2YWwxXCJ9LHtcImZyb21cIjpcInByb3AxXCIsXCJ0b1wiOlwidmFsMlwifSx7XCJmcm9tXCI6XCJwcm9wMlwiLFwidG9cIjpcInZhbDJcIn1dXG4gKiBAcGFyYW0gIHt9IGZyb21LZXk9XCJmcm9tXCJcbiAqIEBwYXJhbSAge30gdG9LZXk9XCJ0b1wiXG4gKiBAcGFyYW0gIHt9IGlzTG93ZXJDYXNlPXRydWVcbiAqIEBwYXJhbSAge30gcmV0dXJuIGhhc2htYXAge1wicHJvcDFcIjpbXCJ2YWwxXCIsXCJ2YWwyXCJdLFwicHJvcDJcIjpbXCJ2YWwyXCJdfVxuICovXG5leHBvcnQgY29uc3QgZ2V0SGFzaEZyb21BcnJheVdpdGhEdXBsaWNhdGUgPSAoXG4gIGFycmF5czogeyBmcm9tOiBzdHJpbmc7IHRvOiBzdHJpbmcgfVtdLFxuICBmcm9tS2V5ID0gJ2Zyb20nLFxuICB0b0tleSA9ICd0bycsXG4gIGlzTG93ZXJDYXNlID0gdHJ1ZSxcbikgPT4ge1xuICBjb25zdCBoYXNoTWFwID0ge307XG4gIGlmIChBcnJheS5pc0FycmF5KGFycmF5cykpIHtcbiAgICBhcnJheXMuZm9yRWFjaCgoYXJyYXkpID0+IHtcbiAgICAgIGlmIChpc0VtcHR5KGFycmF5W2Zyb21LZXldKSkgcmV0dXJuO1xuICAgICAgY29uc3Qga2V5ID0gaXNMb3dlckNhc2VcbiAgICAgICAgPyBhcnJheVtmcm9tS2V5XS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkudHJpbSgpXG4gICAgICAgIDogYXJyYXlbZnJvbUtleV0udG9TdHJpbmcoKS50cmltKCk7XG5cbiAgICAgIGlmIChoYXNoTWFwW2tleV0pIHtcbiAgICAgICAgaGFzaE1hcFtrZXldLmFkZChhcnJheVt0b0tleV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaGFzaE1hcFtrZXldID0gbmV3IFNldCgpO1xuICAgICAgICBoYXNoTWFwW2tleV0uYWRkKGFycmF5W3RvS2V5XSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGhhc2hNYXA7XG59O1xuXG4vKipcbiAqIEZvcm1hdCB0aGUgYXJyYXlzIHRvIGhhc2hNYXAgd2l0aCBrZXkgYXMgYGZyb21LZXlgIGFuZCB2YWx1ZSBhcyBPYmplY3RcbiAqIEBwYXJhbSB7Kn0gYXJyYXlzIFt7XCJpZFwiOlwiYTBiOGVmZTEtYzgyOC00YzYzLTg4NTAtMGQwNzQyODg4ZjlkXCIsXCJuYW1lXCI6XCJFbWFpbFwiLFwidHlwZVwiOlwiZW1haWxcIixcInR5cGVfY29uZmlnXCI6e30sXCJkYXRlX2NyZWF0ZWRcIjpcIjE2NjIyMjU4NDAyODRcIixcImhpZGVfZnJvbV9ndWVzdHNcIjpmYWxzZSxcInJlcXVpcmVkXCI6ZmFsc2V9XVxuICogQHBhcmFtIHsqfSBmcm9tS2V5IG5hbWVcbiAqIEBwYXJhbSB7Kn0gaXNMb3dlckNhc2UgZmFsc2VcbiAqIEByZXR1cm5zIC8vIHtcIkVtYWlsXCI6e1wiaWRcIjpcImEwYjhlZmUxLWM4MjgtNGM2My04ODUwLTBkMDc0Mjg4OGY5ZFwiLFwibmFtZVwiOlwiRW1haWxcIixcInR5cGVcIjpcImVtYWlsXCIsXCJ0eXBlX2NvbmZpZ1wiOnt9LFwiZGF0ZV9jcmVhdGVkXCI6XCIxNjYyMjI1ODQwMjg0XCIsXCJoaWRlX2Zyb21fZ3Vlc3RzXCI6ZmFsc2UsXCJyZXF1aXJlZFwiOmZhbHNlfX1cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEhhc2hGcm9tQXJyYXlXaXRoVmFsdWVBc09iamVjdCA9IChhcnJheXMsIGZyb21LZXkgPSAnZnJvbScsIGlzTG93ZXJDYXNlID0gdHJ1ZSkgPT4ge1xuICBjb25zdCBoYXNoTWFwID0ge307XG4gIGlmIChBcnJheS5pc0FycmF5KGFycmF5cykpIHtcbiAgICBhcnJheXMuZm9yRWFjaCgoYXJyYXkpID0+IHtcbiAgICAgIGlmIChpc0VtcHR5KGFycmF5W2Zyb21LZXldKSkgcmV0dXJuO1xuICAgICAgaGFzaE1hcFtpc0xvd2VyQ2FzZSA/IGFycmF5W2Zyb21LZXldLnRvTG93ZXJDYXNlKCkgOiBhcnJheVtmcm9tS2V5XV0gPSBhcnJheTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gaGFzaE1hcDtcbn07XG5cbi8qKlxuICogUmV0cmlldmVzIGEgdmFsdWUgZnJvbSBhIG1lc3NhZ2Ugb2JqZWN0IGJhc2VkIG9uIGEgZ2l2ZW4ga2V5LiBJdCBzZWFyY2hlcyBmb3IgdGhlIGtleSBpbiB0aGUgcHJvcGVydGllcywgdHJhaXRzLCBhbmQgY29udGV4dC50cmFpdHMgb2YgdGhlIG1lc3NhZ2Ugb2JqZWN0IGluIHRoYXQgb3JkZXIuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucy5tZXNzYWdlIC0gVGhlIG1lc3NhZ2Ugb2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcywgdHJhaXRzLCBhbmQgY29udGV4dC50cmFpdHMuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5rZXkgLSBUaGUga2V5IHRvIHNlYXJjaCBmb3IgaW4gdGhlIG1lc3NhZ2Ugb2JqZWN0LlxuICogQHJldHVybnMgeyp9IFRoZSB2YWx1ZSBmb3VuZCBpbiB0aGUgbWVzc2FnZSBvYmplY3QgZm9yIHRoZSBnaXZlbiBrZXksIG9yIG51bGwgaWYgdGhlIGtleSBpcyBub3QgZm91bmQgb3IgdGhlIHZhbHVlIGlzIG51bGwuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRWYWx1ZUZyb21Qcm9wZXJ0aWVzT3JUcmFpdHMgPSAoeyBtZXNzYWdlLCBrZXkgfSkgPT4ge1xuICBjb25zdCBrZXlTZXQgPSBbJ3Byb3BlcnRpZXMnLCAndHJhaXRzJywgJ2NvbnRleHQudHJhaXRzJ107XG5cbiAgY29uc3QgdmFsID0gXy5maW5kKFxuICAgIF8ubWFwKGtleVNldCwgKGspID0+IGdldChtZXNzYWdlLCBgJHtrfS4ke2tleX1gKSksXG4gICAgKHYpID0+ICFfLmlzTmlsKHYpLFxuICApO1xuICByZXR1cm4gIV8uaXNOaWwodmFsKSA/IHZhbCA6IG51bGw7XG59O1xuXG4vKipcbiAqIEZsYXR0ZW5zIGEgSlNPTiBvYmplY3QgaW50byBhIHNpbmdsZS1sZXZlbCBvYmplY3QuXG4gKlxuICogQHBhcmFtIGRhdGEgLSBUaGUgSlNPTiBvYmplY3QgdG8gYmUgZmxhdHRlbmVkLlxuICogQHBhcmFtIHNlcGFyYXRvciAtIFRoZSBjaGFyYWN0ZXIgdXNlZCB0byBzZXBhcmF0ZSB0aGUga2V5cyBpbiB0aGUgZmxhdHRlbmVkIG9iamVjdC4gRGVmYXVsdCBpcyAnLicuXG4gKiBAcGFyYW0gbW9kZSAtIFRoZSBtb2RlIHVzZWQgdG8gZmxhdHRlbiBhcnJheXMuIElmIHNldCB0byAnc3RyaWN0JywgdGhlIGFycmF5IGluZGljZXMgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgZmxhdHRlbmVkIGtleXMuIERlZmF1bHQgaXMgJ25vcm1hbCcuXG4gKiBAcmV0dXJucyBUaGUgZmxhdHRlbmVkIEpTT04gb2JqZWN0LlxuICovXG5leHBvcnQgY29uc3QgZmxhdHRlbkpzb24gPSAoZGF0YTogdW5rbm93biwgc2VwYXJhdG9yID0gJy4nLCBtb2RlID0gJ25vcm1hbCcpID0+IHtcbiAgY29uc3QgcmVzdWx0ID0ge307XG5cbiAgLy8gYSByZWN1cnNpdmUgZnVuY3Rpb24gdG8gbG9vcCB0aHJvdWdoIHRoZSBhcnJheSBvZiB0aGUgZGF0YVxuICBjb25zdCByZWN1cnNlID0gKGN1ciwgcHJvcCkgPT4ge1xuICAgIGxldCBpO1xuICAgIGlmIChPYmplY3QoY3VyKSAhPT0gY3VyKSB7XG4gICAgICByZXN1bHRbcHJvcF0gPSBjdXI7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGN1cikpIHtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBjdXIubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgaWYgKG1vZGUgPT09ICdzdHJpY3QnKSB7XG4gICAgICAgICAgcmVjdXJzZShjdXJbaV0sIGAke3Byb3B9JHtzZXBhcmF0b3J9JHtpfWApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlY3Vyc2UoY3VyW2ldLCBgJHtwcm9wfVske2l9XWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY3VyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXN1bHRbcHJvcF0gPSBbXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGlzRW1wdHlGbGFnID0gdHJ1ZTtcbiAgICAgIE9iamVjdC5rZXlzKGN1cikuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGlzRW1wdHlGbGFnID0gZmFsc2U7XG4gICAgICAgIHJlY3Vyc2UoY3VyW2tleV0sIHByb3AgPyBgJHtwcm9wfSR7c2VwYXJhdG9yfSR7a2V5fWAgOiBrZXkpO1xuICAgICAgfSk7XG4gICAgICBpZiAoaXNFbXB0eUZsYWcgJiYgcHJvcCkgcmVzdWx0W3Byb3BdID0ge307XG4gICAgfVxuICB9O1xuXG4gIHJlY3Vyc2UoZGF0YSwgJycpO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIG9mZnNldCB2YWx1ZSBpbiBzZWNvbmRzIGZvciBhIGdpdmVuIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB0aW1lem9uZSB2YWx1ZSBmb3Igd2hpY2ggdGhlIG9mZnNldCBuZWVkcyB0byBiZSBjYWxjdWxhdGVkLlxuICogQHJldHVybnMgVGhlIG9mZnNldCB2YWx1ZSBpbiBzZWNvbmRzIGZvciB0aGUgZ2l2ZW4gdGltZXpvbmUuIElmIHRoZSB0aW1lem9uZSBpcyBpbnZhbGlkIG9yIG5vdCBmb3VuZCwgaXQgcmV0dXJucyBgdW5kZWZpbmVkYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgb2Zmc2V0ID0gZ2V0T2Zmc2V0SW5TZWMoJ0FzaWEvQ2FsY3V0dGEnKTtcbiAqIGNvbnNvbGUubG9nKG9mZnNldCk7IC8vIE91dHB1dDogMTk4MDBcbiAqL1xuZXhwb3J0IGNvbnN0IGdldE9mZnNldEluU2VjID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgbmFtZSA9IG1vbWVudC50ei56b25lKHZhbHVlKTtcbiAgaWYgKG5hbWUpIHtcbiAgICBjb25zdCB4ID0gbW9tZW50KCkudHoodmFsdWUpLmZvcm1hdCgnWicpO1xuICAgIGNvbnN0IHNwbGl0ID0geC5zcGxpdCgnOicpO1xuICAgIGNvbnN0IGhvdXIgPSBOdW1iZXIoc3BsaXRbMF0pO1xuICAgIGNvbnN0IG1pbiA9IE51bWJlcihzcGxpdFsxXSk7XG4gICAgbGV0IHNlYyA9IDA7XG4gICAgc2VjID0gaG91ciA8IDAgPyAtMSAqIChob3VyICogLTYwICogNjAgKyBtaW4gKiA2MCkgOiBob3VyICogNjAgKiA2MCArIG1pbiAqIDYwO1xuICAgIHJldHVybiBzZWM7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSBkYXRlIHN0cmluZyBpbnRvIGEgZm9ybWF0dGVkIHRpbWVzdGFtcC5cbiAqIElmIGEgZm9ybWF0IHN0cmluZyBpcyBwcm92aWRlZCwgaXQgdXNlcyB0aGUgbW9tZW50IGxpYnJhcnkgdG8gZm9ybWF0IHRoZSBkYXRlLlxuICogSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBwcm92aWRlZCwgaXQgcmV0dXJucyB0aGUgdGltZXN0YW1wIG9mIHRoZSBkYXRlLlxuICogQHBhcmFtIGRhdGVTdHIgLSBUaGUgZGF0ZSBzdHJpbmcgdG8gYmUgZm9ybWF0dGVkLlxuICogQHBhcmFtIGZvcm1hdCAtIChPcHRpb25hbCkgVGhlIGZvcm1hdCBzdHJpbmcgdG8gYmUgdXNlZCBmb3IgZm9ybWF0dGluZyB0aGUgZGF0ZS5cbiAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgZGF0ZSBhcyBhIHN0cmluZyBpZiBhIGZvcm1hdCBzdHJpbmcgaXMgcHJvdmlkZWQsXG4gKiAgICAgICAgICBvdGhlcndpc2UgdGhlIHRpbWVzdGFtcCBvZiB0aGUgZGF0ZSBhcyBhIG51bWJlci5cbiAqL1xuZXhwb3J0IGNvbnN0IGZvcm1hdFRpbWVTdGFtcCA9IChkYXRlU3RyOiBzdHJpbmcsIGZvcm1hdD86IHN0cmluZykgPT4ge1xuICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0ZVN0cik7XG4gIC8vIG1vbWVudCBmb3JtYXQgaXMgcGFzc2VkLiBmb3JtYXQgYWNjb3JkaW5nbHlcbiAgaWYgKGZvcm1hdCkge1xuICAgIHJldHVybiBtb21lbnQudXRjKGRhdGUpLmZvcm1hdChmb3JtYXQpO1xuICB9XG5cbiAgLy8gcmV0dXJuIGRlZmF1bHQgZm9ybWF0XG4gIHJldHVybiBkYXRlLmdldFRpbWUoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYXNoVG9TaGEyNTYgPSAodmFsdWU6IHN0cmluZyB8IEJ1ZmZlciB8IG51bWJlcltdKSA9PiBzaGEyNTYodmFsdWUpO1xuXG4vKipcbiAqIEdlbmVyYXRlcyBhIFVuaXZlcnNhbGx5IFVuaXF1ZSBJZGVudGlmaWVyIChVVUlEKSB1c2luZyB0aGUgYGNyeXB0by5yYW5kb21VVUlEKClgIG1ldGhvZC5cbiAqIFRoZSBgZGlzYWJsZUVudHJvcHlDYWNoZWAgb3B0aW9uIGlzIHNldCB0byBgdHJ1ZWAgdG8gcHJldmVudCBjYWNoaW5nIG9mIGdlbmVyYXRlZCBVVUlEcy5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIHJhbmRvbWx5IGdlbmVyYXRlZCBVVUlELlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvY3J5cHRvLmh0bWwjY3J5cHRvcmFuZG9tdXVpZG9wdGlvbnM6fjp0ZXh0PW9wdGlvbnMlMjAlM0NPYmplY3QlM0UtLGRpc2FibGVFbnRyb3B5Q2FjaGUsLSUzQ2Jvb2xlYW4lM0UlMjBCeX1cbiAqL1xuZXhwb3J0IGNvbnN0IGdlbmVyYXRlVVVJRCA9ICgpOiBzdHJpbmcgPT4gY3J5cHRvLnJhbmRvbVVVSUQoeyBkaXNhYmxlRW50cm9weUNhY2hlOiB0cnVlIH0pO1xuXG5leHBvcnQgY29uc3QgY29udmVydFRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbn07XG5cbmNvbnN0IHV1aWRfbmFtZXNwYWNlID0gJ2U3NmM2ZTUxLTA2ZjktNDIyMi05NjM2LTVhYmE3ZTNhODRiNic7XG5leHBvcnQgY29uc3QgdXVpZHY1ID0gKHZhbDogc3RyaW5nKSA9PiB2NSh2YWwsIHV1aWRfbmFtZXNwYWNlKTtcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlUmFuZG9tU3RyaW5nID0gKGxlbmd0aDogbnVtYmVyID0gMTApID0+XG4gIGNyeXB0by5yYW5kb21CeXRlcyhsZW5ndGgpLnRvU3RyaW5nKCdoZXgnKS5zbGljZSgwLCBsZW5ndGgpO1xuXG4vKipcbiAqXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueSB8IGFueVtdfSBxUGFyYW1zIC0gT2JqZWN0IGNvbnRhaW5pbmcgcGFyYW1ldGVycyB3aGVyZSB2YWx1ZXMgYXJlIGFycmF5c1xuICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIGFueT59IEZsYXR0ZW5lZCBvYmplY3Qgd2hlcmUgYXJyYXkgdmFsdWVzIG9mIGxlbmd0aCBvbmUgYXJlIHJlcGxhY2VkIHdpdGggdGhlaXIgZmlyc3QgZWxlbWVudFxuICogQGRlc2NyaXB0aW9uXG4gKiBGbGF0dGVucyBhbiBvYmplY3QgYnkgcmVwbGFjaW5nIGFycmF5IHZhbHVlcyBvZiBsZW5ndGggb25lIHdpdGggdGhlaXIgZmlyc3QgZWxlbWVudCxcbiAqIHdoaWxlIGtlZXBpbmcgbm9uLWFycmF5IHZhbHVlcyBvciBhcnJheXMgb2YgbGVuZ3RoIG1vcmUgdGhhbiBvbmUgdW5jaGFuZ2VkLlxuICogSW4gY2FzZSBvZiBlbXB0eSBhcnJheSwgdGhlIGtleSBpcyByZW1vdmVkIGZyb20gdGhlIG91dHB1dFxuICovXG5leHBvcnQgY29uc3QgZmxhdHRlblF1ZXJ5UGFyYW1zID0gKHFQYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueSB8IGFueVtdPik6IFJlY29yZDxzdHJpbmcsIGFueT4gPT4ge1xuICBpZiAoIXFQYXJhbXMpIHJldHVybiB7fTsgLy8gRWFybHkgcmV0dXJuIGZvciBudWxsaXNoIHZhbHVlc1xuICBjb25zdCBmb3JtYXR0ZWRPdXRwdXQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICBPYmplY3QuZW50cmllcyhxUGFyYW1zKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICBjb25zdCBmaW5hbFZhbHVlID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoIDw9IDEgPyB2YWx1ZVswXSA6IHZhbHVlO1xuICAgIGlmIChmaW5hbFZhbHVlICE9PSB1bmRlZmluZWQgJiYgZmluYWxWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgZm9ybWF0dGVkT3V0cHV0W2tleV0gPSBmaW5hbFZhbHVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGZvcm1hdHRlZE91dHB1dDtcbn07XG4iXX0=