@monerium/sdk-react-provider 0.1.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,50 +1,104 @@
1
+ | [Monerium.com](https://monerium.com/) | [Monerium.app](https://monerium.app/) | [Monerium.dev](https://monerium.dev/) |
2
+ | ------------------------------------- | ------------------------------------- | ------------------------------------- |
3
+
1
4
  # Monerium SDK React Provider
2
5
 
6
+ <a href="https://monerium.dev/">
7
+ <picture>
8
+ <source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/badge/Developer_portal-2c6ca7">
9
+ <img src="https://img.shields.io/badge/Developer_portal-2c6ca7" alt="Static Badge">
10
+ </picture>
11
+ </a>
12
+ <a href="https://monerium.dev/api-docs">
13
+ <picture>
14
+ <source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/badge/API_documentation-2c6ca7">
15
+ <img src="https://img.shields.io/badge/API_documentation-2c6ca7" alt="Static Badge">
16
+ </picture>
17
+ </a>
18
+ </br>
19
+ <a href="https://www.npmjs.com/package/@monerium/sdk-react-provider">
20
+ <picture>
21
+ <source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/npm/v/%40monerium%2Fsdk-react-provider?colorA=2c6ca7&colorB=21262d">
22
+ <img src="https://img.shields.io/npm/v/%40monerium%2Fsdk-react-provider?colorA=f6f8fa&colorB=f6f8fa" alt="Version">
23
+ </picture>
24
+ </a>
25
+ <a href="https://github.com/monerium/js-monorepo/issues>
26
+ <picture>
27
+ <source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/github/issues/monerium/js-monorepo?colorA=2c6ca7&colorB=21262d">
28
+ <img src="https://img.shields.io/github/issues/monerium/js-monorepo?colorA=2c6ca7&colorB=21262d" alt="Version">
29
+ </picture>
30
+ </a>
31
+
3
32
  ## Installation
4
33
 
5
34
  ```
6
- pnpm add @monerium/sdk-react-provider
35
+ pnpm add @monerium/sdk-react-provider @tanstack/react-query
7
36
  ```
8
37
 
9
- # Usage
38
+ - [TanStack Query](https://tanstack.com/query/v5) is an async state manager that handles requests, caching, and more.
39
+
40
+ ### Wrap App in Context Provider
10
41
 
11
- Wrap the application with the provider and pass the configuration as props.
42
+ Wrap your app in the `QueryClientProvider` React Context Provider and pass a new `QueryClient` instance to the `client` property
43
+
44
+ Inside the `QueryClientProvider`, wrap your app in the `MoneriumProvider` React Context Provider and pass the auth flow's `clientId`, `redirectUri`, and `environment` configuration.
12
45
 
13
46
  ```tsx
14
47
  import { StrictMode } from 'react';
15
48
  import { createRoot } from 'react-dom/client';
16
49
  import { MoneriumProvider } from '@monerium/sdk-react-provider';
50
+ import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
17
51
 
18
52
  import App from './App';
19
53
 
20
54
  const rootElement = document.getElementById('root');
21
55
  const root = createRoot(rootElement);
22
56
 
57
+ const queryClient = new QueryClient();
58
+
23
59
  root.render(
24
60
  <StrictMode>
25
- <MoneriumProvider
26
- clientId="f99e629b-6dca-11ee-8aa6-5273f65ed05b"
27
- redirectUrl="https://pntvgs.csb.app/"
28
- environment="sandbox"
29
- >
30
- <App />
31
- </MoneriumProvider>
61
+ <QueryClientProvider client={queryClient}>
62
+ <MoneriumProvider
63
+ clientId="f99e629b-6dca-11ee-8aa6-5273f65ed05b"
64
+ redirectUri="https://pntvgs.csb.app/"
65
+ environment="sandbox"
66
+ >
67
+ <App />
68
+ </MoneriumProvider>
69
+ </QueryClientProvider>
32
70
  </StrictMode>
33
71
  );
34
72
  ```
35
73
 
36
- Use the hook to access the Monerium SDK.
74
+ ## Hooks
75
+
76
+ The following hooks are now available within your application:
77
+
78
+ - [useAuth](./docs/generated/functions/useAuth.md)</br>
79
+ - [useAuthContext](./docs/generated/functions/useAuthContext.md)</br>
80
+ - [useBalances](./docs/generated/functions/useBalances.md)</br>
81
+ - [useLinkAddress](./docs/generated/functions/useLinkAddress.md)</br>
82
+ - [useOrder](./docs/generated/functions/useOrder.md)</br>
83
+ - [useOrders](./docs/generated/functions/useOrders.md)</br>
84
+ - [usePlaceOrder](./docs/generated/functions/usePlaceOrder.md)</br>
85
+ - [useProfile](./docs/generated/functions/useProfile.md)</br>
86
+ - [useProfiles](./docs/generated/functions/useProfiles.md)</br>
87
+ - [useTokens](./docs/generated/functions/useTokens.md)</br>
88
+
89
+ ### Example
37
90
 
38
91
  ```tsx
39
- import { useMonerium } from '@monerium/sdk-react-provider';
92
+ import { useAuth, useProfile } from '@monerium/sdk-react-provider';
40
93
 
41
94
  export default function App() {
42
- const { authorize, isAuthorized, profile, balances, tokens, orders } =
43
- useMonerium();
95
+ const { authorize, isAuthorized } = useAuth();
96
+ const { profile } = useProfile();
97
+
44
98
  return (
45
99
  <div className="App">
46
100
  {!isAuthorized && <button onClick={authorize}>Authorize</button>}
47
- <h1>Hello {profile ? profile?.email : 'CodeSandbox'}</h1>
101
+ {profile ? <h1>{profile?.email}</h1> : <h1>No profile</h1>}
48
102
  </div>
49
103
  );
50
104
  }
@@ -59,8 +113,52 @@ Hook used to access the SDK: https://codesandbox.io/s/monerium-sdk-react-provide
59
113
  The application is wrapped with MoneriumProvider
60
114
  https://codesandbox.io/s/monerium-sdk-react-provider-pntvgs?file=/src/index.js
61
115
 
116
+ # Development
117
+
62
118
  ## Running unit tests
63
119
 
64
120
  Run `turbo --filter @monerium/sdk-react-provider test` to execute the unit tests
65
121
 
66
- ####
122
+ ## Documentation
123
+
124
+ We use [TypeDoc](https://typedoc.org/) to generate the documentation.
125
+
126
+ There are a few caveats to keep in mind when documenting the code:
127
+
128
+ - Use `@group` to group functions in the entry file. E.g. `@group Hooks`.
129
+ - To specifically mark `@param` as optional, use square brackets, e.g. `[param]`. Useful for optional destructed parameters.
130
+ - For optional destructed parameters, use inline typing to improve readability.
131
+
132
+ ```diff
133
+ + @param {Object} [param] - Optional parameter.
134
+ + @param {MyQueryType} [param.query] - Description.
135
+ +
136
+ + function useMyHook(
137
+ + { query }:
138
+ + { query?: MyQueryType } = {}
139
+ + ) {}
140
+ ```
141
+
142
+ Document output:
143
+
144
+ ```ts
145
+ param?: Object
146
+ param?.query MyQueryType
147
+ ```
148
+
149
+ Instead of:
150
+
151
+ ```diff
152
+ - type UseMyHookParams = {
153
+ - query?: MyQueryType
154
+ - }
155
+ - function useMyHook(params?: UseHookParams) {}
156
+ ```
157
+
158
+ Document output:
159
+
160
+ ```ts
161
+ params?: UseMyHookParams
162
+ ```
163
+
164
+ > This would require the viewer to navigate into the `UseMyHookParams` type to see the optional `query` property.
package/dist/index.d.ts CHANGED
@@ -1,35 +1,546 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
1
2
  import * as react from 'react';
2
- import { FC, ReactNode } from 'react';
3
- import { Profile, Balances, LinkAddress, NewOrder, Order, Token } from '@monerium/sdk';
3
+ import { ReactNode } from 'react';
4
+ import { UseQueryOptions, UseQueryResult, UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
5
+ import MoneriumClient, { ChainId, AuthContext, Profile, Token, Balances, Order, OrderState, NewOrder, LinkedAddress, LinkAddress } from '@monerium/sdk';
6
+ export { AuthContext, Balances, LinkAddress, Order, OrderState, Profile, Token } from '@monerium/sdk';
4
7
 
5
- interface MoneriumProviderProps {
8
+ /**
9
+ * Place this provider at the root of your application.
10
+ * @group Provider
11
+ * @param params
12
+ * @param params.children - Rest of the application.
13
+ * @param params.clientId - Monerium auth flow client id.
14
+ * @param params.redirectUri - Monerium auth flow redirect url.
15
+ * @param params.environment - Monerium environment.
16
+ * @returns
17
+ */
18
+ declare const MoneriumProvider: ({ children, clientId, redirectUrl, redirectUri, environment, }: {
6
19
  children: ReactNode;
7
- clientId?: string;
20
+ clientId: string;
21
+ redirectUri: string;
22
+ /** @deprecated use redirectUri */
8
23
  redirectUrl?: string;
9
- environment?: 'sandbox' | 'production';
10
- }
11
- declare const MoneriumProvider: FC<MoneriumProviderProps>;
24
+ environment?: "sandbox" | "production";
25
+ }) => react_jsx_runtime.JSX.Element;
12
26
 
13
- interface MoneriumContextValue {
14
- authorize: () => Promise<void>;
27
+ type SdkInstance = {
28
+ /** Monerium SDK instance. */
29
+ sdk?: MoneriumClient;
30
+ };
31
+ type AuthorizeParams = {
32
+ address: string;
33
+ signature: string;
34
+ chainId?: ChainId;
35
+ } | {
36
+ state?: string;
37
+ scope?: string;
38
+ } | {};
39
+ type UseAuthReturn = {
40
+ /**
41
+ * Constructs the url and redirects to the Monerium auth flow.
42
+ */
43
+ authorize: (params?: AuthorizeParams) => Promise<void>;
44
+ /**
45
+ * Indicates whether the SDK is authorized.
46
+ */
15
47
  isAuthorized: boolean;
16
- profile: Profile | null;
17
- balances: Balances[] | null;
18
- loading: boolean;
19
- loadingPlaceOrder: boolean;
20
- loadingLinkAddress: boolean;
21
- loadingBalances: boolean;
22
- getBalances: () => Promise<void>;
23
- linkAddress: (addressDetails: LinkAddress) => Promise<unknown>;
24
- placeOrder: (orderDetails: NewOrder, supportingDocument?: File) => Promise<void>;
25
- orders: Order[];
26
- tokens: Token[];
48
+ /**
49
+ * Indicates whether the SDK authorization is loading.
50
+ */
51
+ isLoading: boolean;
27
52
  error: unknown;
28
- /** Is still checking if there is an active session */
29
- loadingAuth: boolean;
30
- }
31
- declare const MoneriumContext: react.Context<MoneriumContextValue | null>;
53
+ disconnect: () => Promise<void>;
54
+ revokeAccess: () => Promise<void>;
55
+ };
56
+ /**
57
+ * See [Tanstack Query - useQuery](https://tanstack.com/query/latest/docs/framework/react/reference/useQuery) options.
58
+ * @see # [Tanstack Query - useQuery](https://tanstack.com/query/latest/docs/framework/react/reference/useQuery)
59
+ * @template {Object} TData - The data returned.
60
+ *
61
+ * @options
62
+ * > `queryKey` and `queryFn` are used internally and therefore not included in the options.
63
+ * ```diff
64
+ * query: {
65
+ * - queryKey,
66
+ * - queryFn,
67
+ * gcTime,
68
+ * enabled,
69
+ * networkMode,
70
+ * initialData,
71
+ * initialDataUpdatedAt,
72
+ * meta,
73
+ * notifyOnChangeProps,
74
+ * placeholderData,
75
+ * queryKeyHashFn,
76
+ * refetchInterval,
77
+ * refetchIntervalInBackground,
78
+ * refetchOnMount,
79
+ * refetchOnReconnect,
80
+ * refetchOnWindowFocus,
81
+ * retry,
82
+ * retryOnMount,
83
+ * retryDelay,
84
+ * select,
85
+ * staleTime,
86
+ * structuralSharing,
87
+ * throwOnError
88
+ * }
89
+ * ```
90
+ * @example
91
+ * ```ts
92
+ * useQueryHook({
93
+ * query: {
94
+ * enabled: isReady,
95
+ * staleTime: 1000,
96
+ * placeHolderData: { foo: 'bar' },
97
+ * }
98
+ * })
99
+ * ```
100
+ * @usedBy
101
+ * {@link useAuthContext}
102
+ *
103
+ * {@link useBalances}
104
+ *
105
+ * {@link useOrders}
106
+ *
107
+ * {@link useProfile}
108
+ *
109
+ * {@link useTokens}
110
+ */
111
+ type QueryOptions<TData = unknown> = Omit<UseQueryOptions<TData>, 'queryKey' | 'queryFn'>;
112
+ /**
113
+ * See [Tanstack Query - useQuery](https://tanstack.com/query/latest/docs/framework/react/reference/useQuery) returns.
114
+ * @see # [Tanstack Query - useQuery](https://tanstack.com/query/latest/docs/framework/react/reference/useQuery)
115
+ *
116
+ * @template {string} TVarName - The name of the variable that returns the data.
117
+ * @template {Object} TData - The data returned.
118
+ *
119
+ * @example
120
+ * > `data` is renamed according to the `TVarName` and therefore not included in the result.
121
+ * ```diff
122
+ * {
123
+ * - data,
124
+ * dataUpdatedAt,
125
+ * error,
126
+ * errorUpdatedAt,
127
+ * failureCount,
128
+ * failureReason,
129
+ * fetchStatus,
130
+ * isError,
131
+ * isFetched,
132
+ * isFetchedAfterMount,
133
+ * isFetching,
134
+ * isInitialLoading,
135
+ * isLoading,
136
+ * isLoadingError,
137
+ * isPaused,
138
+ * isPending,
139
+ * isPlaceholderData,
140
+ * isRefetchError,
141
+ * isRefetching,
142
+ * isStale,
143
+ * isSuccess,
144
+ * refetch,
145
+ * status,
146
+ *}
147
+ * ```
148
+ * @usedBy
149
+ * {@link useAuthContext}
150
+ *
151
+ * {@link useBalances}
152
+ *
153
+ * {@link useOrders}
154
+ *
155
+ * {@link useProfile}
156
+ *
157
+ * {@link useTokens}
158
+ *
159
+ */
160
+ type QueryResult<TVarName extends string, TData = unknown> = Omit<UseQueryResult<TData>, 'data'> & {
161
+ [P in TVarName]: UseQueryResult<TData>['data'];
162
+ };
163
+ /**
164
+ * See [Tanstack Query - useMutation](https://tanstack.com/query/latest/docs/framework/react/reference/useMutation) options.
165
+ * @see # [Tanstack Query - useMutation](https://tanstack.com/query/latest/docs/framework/react/reference/useMutation)
166
+ *
167
+ * @template {Object} TData - The data returned.
168
+ * @template {Object} TError - The error returned.
169
+ * @template {Object} TVariables - The variables used in the mutation.
170
+ *
171
+ * @options
172
+ * > `mutationKey` and `mutationFn` are used internally and therefore not included in the options.
173
+ * ```diff
174
+ * mutation: {
175
+ * gcTime,
176
+ * meta,
177
+ * - mutationFn,
178
+ * - mutationKey,
179
+ * networkMode,
180
+ * onError,
181
+ * onMutate,
182
+ * onSettled,
183
+ * onSuccess,
184
+ * retry,
185
+ * retryDelay,
186
+ * scope,
187
+ * throwOnError,
188
+ * }
189
+ * ```
190
+ * @example
191
+ * ```ts
192
+ * useMutationHook({
193
+ * mutation: {
194
+ * onSuccess: (data, variables) => {
195
+ * console.log('onSuccess callback', data, variables);
196
+ * },
197
+ * onError: (error) => {
198
+ * console.log('onError callback', error);
199
+ * },
200
+ * },
201
+ * })
202
+ * ```
203
+ *
204
+ * @usedBy
205
+ * {@link useLinkAddress}
206
+ *
207
+ * {@link usePlaceOrder}
208
+ */
209
+ type MutationOptions<TData = unknown, TError = unknown, TVariables = unknown> = Omit<UseMutationOptions<TData, TError, TVariables>, 'mutationKey' | 'mutationFn'>;
210
+ /**
211
+ * See [Tanstack Query - useMutation](https://tanstack.com/query/latest/docs/framework/react/reference/useMutation) returns.
212
+ * @see # [Tanstack Query - useMutation](https://tanstack.com/query/latest/docs/framework/react/reference/useMutation)
213
+ *
214
+ * @template {string} TFuncName - The name of the function that mutates.
215
+ * @template {Object} TData - The data returned.
216
+ * @template {Object} TError - The error returned.
217
+ * @template {Object} TVariables - The variables used in the mutation.
218
+ * @template {Object} TContext - The context used in the mutation.
219
+ *
220
+ * @example
221
+ * > `mutateAsync` is renamed according to the `TFuncName` and therefore not included in the result.
222
+ * ```diff
223
+ * const {
224
+ * data,
225
+ * error,
226
+ * isError,
227
+ * isIdle,
228
+ * isPending,
229
+ * isPaused,
230
+ * isSuccess,
231
+ * failureCount,
232
+ * failureReason,
233
+ * mutate,
234
+ * - mutateAsync,
235
+ * reset,
236
+ * status,
237
+ * submittedAt,
238
+ * variables,
239
+ * } = useMutationHook();
240
+ * ```
241
+ * @usedBy
242
+ * {@link useLinkAddress}
243
+ *
244
+ * {@link usePlaceOrder}
245
+ */
246
+ type MutationResult<TFuncName extends string, TData, TError, TVariables, TContext = unknown> = Omit<UseMutationResult<TData, TError, TVariables, TContext>, 'mutateAsync'> & {
247
+ [P in TFuncName]: UseMutationResult<TData, TError, TVariables, TContext>['mutateAsync'];
248
+ };
32
249
 
33
- declare function useMonerium(): MoneriumContextValue;
250
+ declare const MoneriumContext: react.Context<(UseAuthReturn & SdkInstance) | null>;
34
251
 
35
- export { MoneriumContext, type MoneriumContextValue, MoneriumProvider, useMonerium };
252
+ /**
253
+ * @internal
254
+ * Query keys
255
+ * */
256
+ declare const keys: {
257
+ getAll: string[];
258
+ getAuthContext: string[];
259
+ getProfile: (profileId: string) => string[];
260
+ getProfiles: string[];
261
+ getBalances: (profileId?: string) => string[];
262
+ getTokens: string[];
263
+ getOrder: (orderId: string) => string[];
264
+ getOrders: (filter?: unknown) => {}[];
265
+ placeOrder: string[];
266
+ linkAddress: string[];
267
+ };
268
+ /**
269
+ * # Redirect to the Monerium auth flow.
270
+ * @group Hooks
271
+ * @example
272
+ * ```ts
273
+ * const { authorize, isAuthorized, isLoading, error } = useAuth();
274
+ *
275
+ * authorize(); // Redirects to the Monerium auth flow.
276
+ *
277
+ * // To opt-in to automated wallet linking, pass the address, signature and chain.
278
+ * authorize({ address, signature, chain }).
279
+ * ```
280
+ *
281
+ * @returns {UseAuthReturn}
282
+ * - `authorize` - Redirects to the Monerium auth flow.
283
+ * - `isAuthorized` - Whether the user is authorized.
284
+ * - `isLoading` - Whether the auth flow is loading.
285
+ * - `error` - Error message if the auth flow fails.
286
+ * - `disconnect` - Disconnect the user.
287
+ * - `revokeAccess` - Revoke the user's access.
288
+ */
289
+ declare function useAuth(): UseAuthReturn;
290
+ /**
291
+ * # Get the authentication context.
292
+ * @group Hooks
293
+ *
294
+ * @param {Object} [params] No required parameters.
295
+ * @param {QueryOptions<AuthContext>} [params.query] {@inheritDoc QueryOptions}
296
+ *
297
+ * @example
298
+ * ```ts
299
+ * const {
300
+ * authContext, // useQuery's `data` property
301
+ * isLoading,
302
+ * isError,
303
+ * error,
304
+ * refetch,
305
+ * ...moreUseQueryResults
306
+ * } = useAuthContext();
307
+ * ```
308
+ *
309
+ * @see
310
+ * [API Documentation](https://monerium.dev/api-docs#operation/auth-context)
311
+ *
312
+ * [AuthContext interface](https://github.com/monerium/js-monorepo/blob/main/packages/sdk/docs/generated/interfaces/AuthContext.md)
313
+ */
314
+ declare function useAuthContext({ query, }?: {
315
+ query?: QueryOptions<AuthContext>;
316
+ }): QueryResult<'authContext', AuthContext>;
317
+ /**
318
+ * # Get single profile
319
+ * If no `profileId` is provided, the default profile is used.
320
+ * @group Hooks
321
+ * @param {Object} params
322
+ * @param {string} [params.profileId] The id of the profile.
323
+ * @param {QueryOptions<Profile>} [params.query] {@inheritDoc QueryOptions}
324
+ *
325
+ * @example
326
+ * ```ts
327
+ * const {
328
+ * profile, // useQuery's `data` property
329
+ * isLoading,
330
+ * isError,
331
+ * error,
332
+ * refetch,
333
+ * ...moreUseQueryResults
334
+ * } = useProfile();
335
+ * ```
336
+
337
+ * @see
338
+ * [API Documentation](https://monerium.dev/api-docs#operation/profile)
339
+ *
340
+ * [Profile interface](https://github.com/monerium/js-monorepo/blob/main/packages/sdk/docs/generated/interfaces/Profile.md)
341
+ */
342
+ declare function useProfile({ profileId, query, }?: {
343
+ profileId?: string;
344
+ query?: QueryOptions<Profile>;
345
+ }): QueryResult<'profile', Profile>;
346
+ /**
347
+ * # Get profiles
348
+ * @group Hooks
349
+ * @param {Object} [params] No required parameters.
350
+ * @param {QueryOptions<Profile[]>} [params.query] {@inheritDoc QueryOptions}
351
+ *
352
+ * @example
353
+ * ```ts
354
+ * const {
355
+ * profiles, // useQuery's `data` property
356
+ * isLoading,
357
+ * isError,
358
+ * error,
359
+ * refetch,
360
+ * ...moreUseQueryResults
361
+ * } = useProfiles();
362
+ * ```
363
+
364
+ * @see
365
+ * [API Documentation](https://monerium.dev/api-docs#operation/profiles)
366
+ *
367
+ * [Profile interface](https://github.com/monerium/js-monorepo/blob/main/packages/sdk/docs/generated/interfaces/Profile.md)
368
+ */
369
+ declare function useProfiles({ query, }?: {
370
+ query?: QueryOptions<Profile[]>;
371
+ }): QueryResult<'profiles', Profile[]>;
372
+ /**
373
+ * # Get tokens
374
+ * @group Hooks
375
+ * @param {Object} [params] No required parameters.
376
+ * @param {QueryOptions<Token[]>} [params.query] {@inheritDoc QueryOptions}
377
+ *
378
+ * @example
379
+ * ```ts
380
+ * const {
381
+ * tokens, // useQuery's `data` property
382
+ * isLoading,
383
+ * isError,
384
+ * error,
385
+ * refetch,
386
+ * ...moreUseQueryResults
387
+ * } = useTokens();
388
+ * ```
389
+
390
+ * @see
391
+ * [API Documentation](https://monerium.dev/api-docs#operation/tokens)
392
+ *
393
+ * [Token interface](https://github.com/monerium/js-monorepo/blob/main/packages/sdk/docs/generated/interfaces/Token.md)
394
+ */
395
+ declare function useTokens({ query, }?: {
396
+ query?: QueryOptions<Token[]>;
397
+ }): QueryResult<'tokens', Token[]>;
398
+ /**
399
+ * # Get balances
400
+ * @group Hooks
401
+ * @param {Object} [params] No required parameters.
402
+ * @param {QueryOptions<Balances[]>} [params.profileId] Fetch balances for a specific profile.
403
+ * @param {QueryOptions<Balances[]>} [params.query] {@inheritDoc QueryOptions}
404
+
405
+ * @example
406
+ * ```ts
407
+ * const {
408
+ * balances, // useQuery's `data` property
409
+ * isLoading,
410
+ * isError,
411
+ * error,
412
+ * refetch,
413
+ * ...moreUseQueryResults
414
+ * } = useBalances();
415
+ * ```
416
+ * @see
417
+ * [API Documentation](https://monerium.dev/api-docs#operation/profile-balances)
418
+ *
419
+ * [Balances interface](https://github.com/monerium/js-monorepo/blob/main/packages/sdk/docs/generated/interfaces/Balances.md)
420
+ */
421
+ declare function useBalances({ profileId, query, }?: {
422
+ profileId?: string;
423
+ query?: QueryOptions<Balances[]>;
424
+ }): QueryResult<'balances', Balances[]>;
425
+ /**
426
+ * # Get single order
427
+ * @group Hooks
428
+ * @param {Object} params
429
+ * @param {Object} params.orderId The id of the order.
430
+ * @param {QueryOptions<Order>} [params.query] {@inheritDoc QueryOptions}
431
+ * @example
432
+ * ```ts
433
+ * const {
434
+ * order, // useQuery's `data` property
435
+ * isLoading,
436
+ * isError,
437
+ * error,
438
+ * refetch,
439
+ * ...moreUseQueryResults
440
+ * } = useOrder();
441
+ * ```
442
+ * @see
443
+ * [API Documentation](https://monerium.dev/api-docs#operation/order)
444
+ *
445
+ * [Order interface](https://github.com/monerium/js-monorepo/blob/main/packages/sdk/docs/generated/interfaces/Order.md)
446
+ */
447
+ declare function useOrder({ orderId, query, }: {
448
+ orderId: string;
449
+ query?: QueryOptions<Order>;
450
+ }): QueryResult<'order', Order>;
451
+ /**
452
+ * # Get orders
453
+ * @group Hooks
454
+ * @param {Object} [params] No required parameters.
455
+ * @param {Object} [params.address] Filter based on the blockchain address associated with the order.
456
+ * @param {Object} [params.memo] Filter by the payment memo/reference..
457
+ * @param {Object} [params.profile] Filter based on the profile ID associated with the order.
458
+ * @param {Object} [params.state] Filter based on the state of the order.
459
+ * @param {Object} [params.txHash] Filter based on the blockchain transaction hash.
460
+ * @param {QueryOptions<Order[]>} [params.query] {@inheritDoc QueryOptions}
461
+ *
462
+ * @example
463
+ * ```ts
464
+ * const {
465
+ * orders, // useQuery's `data` property
466
+ * isLoading,
467
+ * isError,
468
+ * error,
469
+ * refetch,
470
+ * ...moreUseQueryResults
471
+ * } = useOrders();
472
+ * ```
473
+ * @see
474
+ * [API Documentation](https://monerium.dev/api-docs#operation/orders)
475
+ *
476
+ * [Order interface](https://github.com/monerium/js-monorepo/blob/main/packages/sdk/docs/generated/interfaces/Order.md)
477
+ */
478
+ declare function useOrders({ query, ...filters }?: {
479
+ query?: QueryOptions<Order[]>;
480
+ address?: string;
481
+ txHash?: string;
482
+ profile?: string;
483
+ memo?: string;
484
+ state?: OrderState;
485
+ }): QueryResult<'orders', Order[]>;
486
+ /**
487
+ * # Place an order.
488
+ * When the order has been placed, the orders query will be invalidated and re-fetched.
489
+ *
490
+ * If the order amount is above 15000, a supporting document is required.
491
+ * @group Hooks
492
+ * @param param
493
+ * @param {File} param.supportingDocument Supporting document file.
494
+ * @param {Object} param.mutation {@inheritDoc MutationOptions}
495
+ *
496
+ * @example
497
+ * ```ts
498
+ * const {
499
+ * placeOrder, // useMutation's `mutateAsync` property
500
+ * isPending,
501
+ * isError,
502
+ * error,
503
+ * status,
504
+ * ...moreUseMutationResults
505
+ * } = usePlaceOrder();
506
+ * ```
507
+ * @see
508
+ * [API Documentation](https://monerium.dev/api-docs#operation/post-orders)
509
+ *
510
+ * [NewOrder type](https://github.com/monerium/js-monorepo/blob/main/packages/sdk/docs/generated/type-aliases/NewOrder.md)
511
+ */
512
+ declare function usePlaceOrder({ supportingDocument, mutation, }?: {
513
+ supportingDocument?: File;
514
+ mutation?: MutationOptions<Order, Error, NewOrder>;
515
+ }): MutationResult<'placeOrder', Order, Error, NewOrder>;
516
+ /**
517
+ * # Add address to profile.
518
+ * When the address has been linked, the relevant profile query will be invalidated and re-fetched.
519
+ *
520
+ * @group Hooks
521
+ * @param param
522
+ * @param {File} param.profileId Which profile to link the address.
523
+ * @param {Object} param.mutation {@inheritDoc MutationOptions}
524
+ *
525
+ * @example
526
+ * ```ts
527
+ * const {
528
+ * linkAddress, // useMutation's `mutateAsync` property
529
+ * isPending,
530
+ * isError,
531
+ * error,
532
+ * status,
533
+ * ...moreUseMutationResults
534
+ * } = useLinkAddress();
535
+ * ```
536
+ * @see
537
+ * [API Documentation](https://monerium.dev/api-docs#operation/profile-addresses)
538
+ *
539
+ * [LinkAddress interface](https://github.com/monerium/js-monorepo/blob/main/packages/sdk/docs/generated/interfaces/LinkAddress.md)
540
+ */
541
+ declare function useLinkAddress({ profileId, mutation, }: {
542
+ profileId: string;
543
+ mutation?: MutationOptions<LinkedAddress, Error, LinkAddress>;
544
+ }): MutationResult<'linkAddress', LinkedAddress, Error, LinkAddress>;
545
+
546
+ export { type AuthorizeParams, MoneriumContext, MoneriumProvider, type MutationOptions, type MutationResult, type QueryOptions, type QueryResult, type SdkInstance, type UseAuthReturn, keys, useAuth, useAuthContext, useBalances, useLinkAddress, useOrder, useOrders, usePlaceOrder, useProfile, useProfiles, useTokens };
package/dist/index.js CHANGED
@@ -1,13 +1,24 @@
1
1
  'use strict';
2
2
 
3
3
  var react = require('react');
4
+ var reactQuery = require('@tanstack/react-query');
4
5
  var sdk = require('@monerium/sdk');
5
6
  var jsxRuntime = require('react/jsx-runtime');
6
7
 
7
- var c=react.createContext(null);var ae=({children:i,clientId:A="f99e629b-6dca-11ee-8aa6-5273f65ed05b",redirectUrl:O="http://localhost:5173",environment:b="sandbox"})=>{let[e,y]=react.useState(),[t,C]=react.useState(!1),[l,M]=react.useState(null),[v,L]=react.useState(null),[B,g]=react.useState(!1),[D,p]=react.useState(!1),[E,h]=react.useState(!1),[z,k]=react.useState(!1),[N,s]=react.useState(null),[T,P]=react.useState([]),[F,I]=react.useState([]),[V,R]=react.useState(!0);react.useEffect(()=>{let r=new sdk.MoneriumClient({environment:b,clientId:A,redirectUrl:O});y(r);},[]),react.useEffect(()=>((async()=>{if(e)try{C(await e.getAccess());}catch(o){console.error("Failed to get access:",o);}finally{R(!1);}})(),()=>{e&&e.disconnect();}),[e]),react.useEffect(()=>{(async()=>{if(e&&t)try{g(!0);let[o]=await Promise.all([e.getAuthContext(),w()]),[a,u]=await Promise.all([e.getProfile(o.defaultProfile),e.getTokens()]),f=await e.getOrders();M(a),P(f),I(u);}catch(o){console.error("Error fetching data:",o),s(o);}finally{g(!1);}})();},[e,t]);let S=react.useCallback(async()=>{try{e&&await e.authorize();}catch(r){console.error("Error during authorization:",r),s(r);}},[e]),w=react.useCallback(async()=>{if(e&&t)try{k(!0);let r=await e.getBalances();L(r);}catch(r){console.error("Error getting balances:",r),s(r);}finally{k(!1);}},[e,t]),U=react.useCallback(async(r,o)=>{if(e&&t)try{p(!0);let a;parseInt(r.amount)>15e3&&o&&(a=(await e.uploadSupportingDocument(o)).id);let u={...r,documentId:a},f=await e.placeOrder(u);P(x=>[...x,f]);}catch(a){console.error("Error placing order:",a),s(a);}finally{p(!1);}},[e,t]),q=react.useCallback(async r=>{if(e&&t&&l)try{return h(!0),await e.linkAddress(l.id,r)}catch(o){console.error("Error linking address:",o),s(o);}finally{h(!1);}},[e,t,l]);return jsxRuntime.jsx(c.Provider,{value:{authorize:S,isAuthorized:t,profile:l,balances:v,loading:B,loadingPlaceOrder:D,loadingLinkAddress:E,loadingBalances:z,getBalances:w,linkAddress:q,placeOrder:U,orders:T,tokens:F,error:N,loadingAuth:V},children:i})};function ue(){let i=react.useContext(c);if(i===null)throw new Error("useMonerium must be used within a MoneriumProvider");return i}
8
+ var y=react.createContext(null);var T=({children:e,clientId:t,redirectUrl:r,redirectUri:o,environment:n="sandbox"})=>{let u=reactQuery.useQueryClient(),[s,i]=react.useState(),[a,d]=react.useState(!1),[A,g]=react.useState(null),[b,z]=react.useState(!0);react.useEffect(()=>{let h=new sdk.MoneriumClient({environment:n,clientId:t,redirectUri:o||r});i(h);},[]),react.useEffect(()=>((async()=>{if(s)try{d(await s.getAccess());}catch(p){console.error("Failed to get access:",p);}finally{z(!1);}})(),()=>{s&&s.disconnect();}),[s]);let v=react.useCallback(async h=>{try{s&&await s.authorize(h);}catch(p){console.error("Error during authorization:",p),g(p);}},[s]),C=async()=>{try{s&&await s.revokeAccess();}catch(h){console.error("Error during revoking access:",h),g(h);}finally{u.clear(),d(!1);}};return jsxRuntime.jsx(y.Provider,{value:{sdk:s,authorize:v,isAuthorized:a,isLoading:b,error:A,disconnect:async()=>s?.disconnect(),revokeAccess:async()=>C()},children:e})};var c={getAll:["monerium"],getAuthContext:["monerium","auth-context"],getProfile:e=>["monerium","profile",...e?[e]:[]],getProfiles:["monerium","profiles"],getBalances:e=>["monerium","balances",...e?[e]:[]],getTokens:["monerium","tokens"],getOrder:e=>["monerium","order",e],getOrders:e=>["monerium","orders",...e?[e]:[]],placeOrder:["monerium","place-order"],linkAddress:["monerium","link-address"]};function l(){let e=react.useContext(y);if(e===null)throw new Error("useSdk must be used within a MoneriumProvider");return e?.sdk}function f(){let e=react.useContext(y);if(e===null)throw new Error("useAuth must be used within a MoneriumProvider");return {isAuthorized:e.isAuthorized,authorize:e.authorize,isLoading:e.isLoading,error:e.error,disconnect:e.disconnect,revokeAccess:e.revokeAccess}}function M({query:e}={}){let{isAuthorized:t}=f(),r=l(),{data:o,...n}=reactQuery.useQuery({...e,queryKey:c.getAuthContext,queryFn:async()=>{if(!r)throw new Error("No SDK instance available");if(!t)throw new Error("User not authorized");return r.getAuthContext()},enabled:!!(r&&t&&(e?.enabled??!0))});return {authContext:o,...n}}function W({profileId:e,query:t}={}){let{isAuthorized:r}=f(),o=l(),{authContext:n}=M(),u=e||n?.defaultProfile,{data:s,...i}=reactQuery.useQuery({...t,queryKey:c.getProfile(u),queryFn:async()=>{if(!o)throw new Error("No SDK instance available");if(!r)throw new Error("User not authorized");if(!u)throw new Error("Profile Id is required");return o.getProfile(u)},enabled:!!(o&&r&&u&&(t?.enabled??!0))});return {profile:s,...i}}function X({query:e}={}){let{isAuthorized:t}=f(),r=l(),{data:o,...n}=reactQuery.useQuery({...e,queryKey:c.getProfiles,queryFn:async()=>{if(!r)throw new Error("No SDK instance available");if(!t)throw new Error("User not authorized");return r.getProfiles()},enabled:!!(r&&t&&(e?.enabled??!0))});return {profiles:o,...n}}function Y({query:e}={}){let t=l(),{isAuthorized:r}=f(),{data:o,...n}=reactQuery.useQuery({...e,queryKey:c.getTokens,queryFn:async()=>{if(!t)throw new Error("No SDK instance available");if(!r)throw new Error("User not authorized");return t.getTokens()},enabled:!!(t&&r&&(e?.enabled??!0))});return {tokens:o,...n}}function Z({profileId:e,query:t}={}){let r=l(),{isAuthorized:o}=f(),{data:n,...u}=reactQuery.useQuery({...t,queryKey:c.getBalances(e),queryFn:async()=>{if(!r)throw new Error("No SDK instance available");if(!o)throw new Error("User not authorized");return r.getBalances(e)},enabled:!!(r&&o&&(t?.enabled??!0))});return {balances:n,...u}}function _({orderId:e,query:t={}}){let r=l(),{isAuthorized:o}=f(),{data:n,...u}=reactQuery.useQuery({...t,queryKey:c.getOrder(e),queryFn:async()=>{if(!r)throw new Error("No SDK instance available");if(!o)throw new Error("User not authorized");if(!e)throw new Error("Order id is required");return r.getOrder(e)},enabled:!!(r&&o&&e&&(t.enabled??!0))});return {order:n,...u}}function $({query:e={},...t}={}){let r=l(),{isAuthorized:o}=f(),{data:n,...u}=reactQuery.useQuery({...e,queryKey:c.getOrders(t),queryFn:async()=>{if(!r)throw new Error("No SDK instance available");if(!o)throw new Error("User not authorized");return r.getOrders(t)},enabled:!!(r&&o&&(e.enabled??!0))});return {orders:n,...u}}function j({supportingDocument:e,mutation:t}={}){let r=l(),{isAuthorized:o}=f(),n=reactQuery.useQueryClient(),{mutateAsync:u,...s}=reactQuery.useMutation({...t,mutationKey:c.placeOrder,mutationFn:async i=>{if(!r)throw new Error("No SDK instance available");if(!o)throw new Error("User not authorized");let a;if(parseInt(i.amount)>15e3){if(!e)throw new Error("Supporting document is required for orders above 15000");a=(await r.uploadSupportingDocument(e)).id;}let d={...i,documentId:a};return r.placeOrder(d)},onSuccess(i,a,d){n.invalidateQueries({queryKey:c.getOrders()}),t?.onSuccess?.(i,a,d);},onError(i,a,d){throw t?.onError?.(i,a,d),i}});return {placeOrder:u,...s}}function ee({profileId:e,mutation:t}){let r=l(),{isAuthorized:o}=f(),n=reactQuery.useQueryClient(),{mutateAsync:u,...s}=reactQuery.useMutation({...t,mutationKey:c.linkAddress,mutationFn:async i=>{if(!r)throw new Error("No SDK instance available");if(!o)throw new Error("User not authorized");return r.linkAddress(e,i)},onSuccess(i,a,d){n.invalidateQueries({queryKey:c.getProfile(e)}),t?.onSuccess?.(i,a,d);},onError(i,a,d){throw t?.onError?.(i,a,d),i}});return {linkAddress:u,...s}}
8
9
 
9
- exports.MoneriumContext = c;
10
- exports.MoneriumProvider = ae;
11
- exports.useMonerium = ue;
12
- //# sourceMappingURL=out.js.map
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9saWIvcHJvdmlkZXIudHN4IiwiLi4vc3JjL2xpYi9jb250ZXh0LnRzeCIsIi4uL3NyYy9saWIvaG9vay50c3giXSwibmFtZXMiOlsidXNlQ2FsbGJhY2siLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsIk1vbmVyaXVtQ2xpZW50IiwiY3JlYXRlQ29udGV4dCIsIk1vbmVyaXVtQ29udGV4dCIsImpzeCIsIk1vbmVyaXVtUHJvdmlkZXIiLCJjaGlsZHJlbiIsImNsaWVudElkIiwicmVkaXJlY3RVcmwiLCJlbnZpcm9ubWVudCIsIm1vbmVyaXVtIiwic2V0TW9uZXJpdW0iLCJpc0F1dGhvcml6ZWQiLCJzZXRJc0F1dGhvcml6ZWQiLCJwcm9maWxlIiwic2V0UHJvZmlsZSIsImJhbGFuY2VzIiwic2V0QmFsYW5jZXMiLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsImxvYWRpbmdQbGFjZU9yZGVyIiwic2V0TG9hZGluZ1BsYWNlT3JkZXIiLCJsb2FkaW5nTGlua0FkZHJlc3MiLCJzZXRMb2FkaW5nTGlua0FkZHJlc3MiLCJsb2FkaW5nQmFsYW5jZXMiLCJzZXRMb2FkaW5nQmFsYW5jZXMiLCJlcnJvciIsInNldEVycm9yIiwib3JkZXJzIiwic2V0T3JkZXJzIiwidG9rZW5zIiwic2V0VG9rZW5zIiwibG9hZGluZ0F1dGgiLCJzZXRMb2FkaW5nQXV0aCIsInNkayIsImF1dGhDdHgiLCJnZXRCYWxhbmNlcyIsInByb2ZpbGVEYXRhIiwidG9rZW5zRGF0YSIsIm9yZGVyc0RhdGEiLCJlcnIiLCJhdXRob3JpemUiLCJwbGFjZU9yZGVyIiwib3JkZXJEZXRhaWxzIiwic3VwcG9ydGluZ0RvY3VtZW50IiwiZG9jdW1lbnRJZCIsIm5ld09yZGVyRGV0YWlscyIsIm5ld09yZGVyIiwicHJldk9yZGVycyIsImxpbmtBZGRyZXNzIiwiYWRkcmVzc0RldGFpbHMiLCJ1c2VDb250ZXh0IiwidXNlTW9uZXJpdW0iLCJjb250ZXh0Il0sIm1hcHBpbmdzIjoiQUFBQSxPQUF3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LEVBQWdCLFNBQWhCLENBQ0MsTUFBTyxDQUNMLFVBQUFzQyxFQUNBLGFBQUE3QixFQUNBLFFBQUFFLEVBQ0EsU0FBQUUsRUFDQSxRQUFBRSxFQUNBLGtCQUFBRSxFQUNBLG1CQUFBRSxFQUNBLGdCQUFBRSxFQUNBLFlBQUFZLEVBQ0EsWUFBQWEsRUFDQSxXQUFBUCxFQUNBLE9BQUFkLEVBQ0EsT0FBQUUsRUFDQSxNQUFBSixFQUNBLFlBQUFNLENBQ0YsRUFFQyxTQUFBMUIsRUFDSCxDQUVKLEVFN01BLE9BQVMsY0FBQTZDLE1BQWtCLFFBSXBCLFNBQVNDLElBQW9DLENBQ2xELElBQU1DLEVBQVVGLEVBQVdoRCxDQUFlLEVBRTFDLEdBQUlrRCxJQUFZLEtBQ2QsTUFBTSxJQUFJLE1BQU0sb0RBQW9ELEVBRXRFLE9BQU9BLENBQ1QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGQywgUmVhY3ROb2RlLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHtcbiAgQmFsYW5jZXMsXG4gIExpbmtBZGRyZXNzLFxuICBNb25lcml1bUNsaWVudCxcbiAgTmV3T3JkZXIsXG4gIE9yZGVyLFxuICBQcm9maWxlLFxuICBUb2tlbixcbn0gZnJvbSAnQG1vbmVyaXVtL3Nkayc7XG5cbmltcG9ydCB7IE1vbmVyaXVtQ29udGV4dCB9IGZyb20gJy4vY29udGV4dCc7XG5cbmludGVyZmFjZSBNb25lcml1bVByb3ZpZGVyUHJvcHMge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBjbGllbnRJZD86IHN0cmluZztcbiAgcmVkaXJlY3RVcmw/OiBzdHJpbmc7XG4gIGVudmlyb25tZW50PzogJ3NhbmRib3gnIHwgJ3Byb2R1Y3Rpb24nO1xufVxuXG5leHBvcnQgY29uc3QgTW9uZXJpdW1Qcm92aWRlcjogRkM8TW9uZXJpdW1Qcm92aWRlclByb3BzPiA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGllbnRJZCA9ICdmOTllNjI5Yi02ZGNhLTExZWUtOGFhNi01MjczZjY1ZWQwNWInLFxuICByZWRpcmVjdFVybCA9ICdodHRwOi8vbG9jYWxob3N0OjUxNzMnLFxuICBlbnZpcm9ubWVudCA9ICdzYW5kYm94Jyxcbn0pID0+IHtcbiAgY29uc3QgW21vbmVyaXVtLCBzZXRNb25lcml1bV0gPSB1c2VTdGF0ZTxNb25lcml1bUNsaWVudD4oKTtcbiAgY29uc3QgW2lzQXV0aG9yaXplZCwgc2V0SXNBdXRob3JpemVkXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW3Byb2ZpbGUsIHNldFByb2ZpbGVdID0gdXNlU3RhdGU8UHJvZmlsZSB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbYmFsYW5jZXMsIHNldEJhbGFuY2VzXSA9IHVzZVN0YXRlPEJhbGFuY2VzW10gfCBudWxsPihudWxsKTtcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbbG9hZGluZ1BsYWNlT3JkZXIsIHNldExvYWRpbmdQbGFjZU9yZGVyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2xvYWRpbmdMaW5rQWRkcmVzcywgc2V0TG9hZGluZ0xpbmtBZGRyZXNzXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2xvYWRpbmdCYWxhbmNlcywgc2V0TG9hZGluZ0JhbGFuY2VzXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZTxFcnJvciB8IHVua25vd24gfCBudWxsPihudWxsKTtcbiAgY29uc3QgW29yZGVycywgc2V0T3JkZXJzXSA9IHVzZVN0YXRlPE9yZGVyW10+KFtdKTtcbiAgY29uc3QgW3Rva2Vucywgc2V0VG9rZW5zXSA9IHVzZVN0YXRlPFRva2VuW10+KFtdKTtcbiAgY29uc3QgW2xvYWRpbmdBdXRoLCBzZXRMb2FkaW5nQXV0aF0gPSB1c2VTdGF0ZSh0cnVlKTtcblxuICAvLyBJbml0aWFsaXplIHRoZSBTREtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBzZGsgPSBuZXcgTW9uZXJpdW1DbGllbnQoe1xuICAgICAgZW52aXJvbm1lbnQ6IGVudmlyb25tZW50LFxuICAgICAgY2xpZW50SWQsXG4gICAgICByZWRpcmVjdFVybCxcbiAgICB9KTtcbiAgICBzZXRNb25lcml1bShzZGspO1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjb25uZWN0ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKG1vbmVyaXVtKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgc2V0SXNBdXRob3JpemVkKGF3YWl0IG1vbmVyaXVtLmdldEFjY2VzcygpKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gZ2V0IGFjY2VzczonLCBlcnJvcik7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgc2V0TG9hZGluZ0F1dGgoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbm5lY3QoKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAobW9uZXJpdW0pIHtcbiAgICAgICAgbW9uZXJpdW0uZGlzY29ubmVjdCgpO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFttb25lcml1bV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZmV0Y2hEYXRhID0gYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKG1vbmVyaXVtICYmIGlzQXV0aG9yaXplZCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgY29uc3QgW2F1dGhDdHhdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgbW9uZXJpdW0uZ2V0QXV0aENvbnRleHQoKSxcbiAgICAgICAgICAgIGdldEJhbGFuY2VzKCksXG4gICAgICAgICAgXSk7XG5cbiAgICAgICAgICBjb25zdCBbcHJvZmlsZURhdGEsIHRva2Vuc0RhdGFdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgbW9uZXJpdW0uZ2V0UHJvZmlsZShhdXRoQ3R4LmRlZmF1bHRQcm9maWxlKSxcbiAgICAgICAgICAgIG1vbmVyaXVtLmdldFRva2VucygpLFxuICAgICAgICAgIF0pO1xuXG4gICAgICAgICAgY29uc3Qgb3JkZXJzRGF0YSA9IGF3YWl0IG1vbmVyaXVtLmdldE9yZGVycygpO1xuXG4gICAgICAgICAgc2V0UHJvZmlsZShwcm9maWxlRGF0YSk7XG4gICAgICAgICAgc2V0T3JkZXJzKG9yZGVyc0RhdGEpO1xuICAgICAgICAgIHNldFRva2Vucyh0b2tlbnNEYXRhKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgZGF0YTonLCBlcnIpO1xuICAgICAgICAgIHNldEVycm9yKGVycik7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZmV0Y2hEYXRhKCk7XG4gIH0sIFttb25lcml1bSwgaXNBdXRob3JpemVkXSk7XG5cbiAgY29uc3QgYXV0aG9yaXplID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAobW9uZXJpdW0pIHtcbiAgICAgICAgYXdhaXQgbW9uZXJpdW0uYXV0aG9yaXplKCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkdXJpbmcgYXV0aG9yaXphdGlvbjonLCBlcnIpO1xuICAgICAgc2V0RXJyb3IoZXJyKTtcbiAgICB9XG4gIH0sIFttb25lcml1bV0pO1xuXG4gIGNvbnN0IGdldEJhbGFuY2VzID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGlmIChtb25lcml1bSAmJiBpc0F1dGhvcml6ZWQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNldExvYWRpbmdCYWxhbmNlcyh0cnVlKTtcbiAgICAgICAgY29uc3QgYmFsYW5jZXMgPSBhd2FpdCBtb25lcml1bS5nZXRCYWxhbmNlcygpO1xuICAgICAgICBzZXRCYWxhbmNlcyhiYWxhbmNlcyk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZ2V0dGluZyBiYWxhbmNlczonLCBlcnIpO1xuICAgICAgICBzZXRFcnJvcihlcnIpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc2V0TG9hZGluZ0JhbGFuY2VzKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFttb25lcml1bSwgaXNBdXRob3JpemVkXSk7XG5cbiAgY29uc3QgcGxhY2VPcmRlciA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChvcmRlckRldGFpbHM6IE5ld09yZGVyLCBzdXBwb3J0aW5nRG9jdW1lbnQ/OiBGaWxlKSA9PiB7XG4gICAgICBpZiAobW9uZXJpdW0gJiYgaXNBdXRob3JpemVkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgc2V0TG9hZGluZ1BsYWNlT3JkZXIodHJ1ZSk7XG5cbiAgICAgICAgICBsZXQgZG9jdW1lbnRJZDtcbiAgICAgICAgICBpZiAocGFyc2VJbnQob3JkZXJEZXRhaWxzLmFtb3VudCkgPiAxNTAwMCAmJiBzdXBwb3J0aW5nRG9jdW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHVwbG9hZGVkRG9jdW1lbnQgPVxuICAgICAgICAgICAgICBhd2FpdCBtb25lcml1bS51cGxvYWRTdXBwb3J0aW5nRG9jdW1lbnQoc3VwcG9ydGluZ0RvY3VtZW50KTtcbiAgICAgICAgICAgIGRvY3VtZW50SWQgPSB1cGxvYWRlZERvY3VtZW50LmlkO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IG5ld09yZGVyRGV0YWlscyA9IHtcbiAgICAgICAgICAgIC4uLm9yZGVyRGV0YWlscyxcbiAgICAgICAgICAgIGRvY3VtZW50SWQ6IGRvY3VtZW50SWQsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNvbnN0IG5ld09yZGVyID0gYXdhaXQgbW9uZXJpdW0ucGxhY2VPcmRlcihuZXdPcmRlckRldGFpbHMpO1xuICAgICAgICAgIHNldE9yZGVycygocHJldk9yZGVycykgPT4gWy4uLnByZXZPcmRlcnMsIG5ld09yZGVyXSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBsYWNpbmcgb3JkZXI6JywgZXJyKTtcbiAgICAgICAgICBzZXRFcnJvcihlcnIpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIHNldExvYWRpbmdQbGFjZU9yZGVyKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW21vbmVyaXVtLCBpc0F1dGhvcml6ZWRdXG4gICk7XG5cbiAgY29uc3QgbGlua0FkZHJlc3MgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoYWRkcmVzc0RldGFpbHM6IExpbmtBZGRyZXNzKSA9PiB7XG4gICAgICBpZiAobW9uZXJpdW0gJiYgaXNBdXRob3JpemVkICYmIHByb2ZpbGUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBzZXRMb2FkaW5nTGlua0FkZHJlc3ModHJ1ZSk7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IG1vbmVyaXVtLmxpbmtBZGRyZXNzKHByb2ZpbGUuaWQsIGFkZHJlc3NEZXRhaWxzKTtcblxuICAgICAgICAgIC8vIFVwZGF0ZSB5b3VyIHN0YXRlIG9yIGRvIHNvbWV0aGluZyB3aXRoIGxpbmtlZEFkZHJlc3NcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbGlua2luZyBhZGRyZXNzOicsIGVycik7XG4gICAgICAgICAgc2V0RXJyb3IoZXJyKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBzZXRMb2FkaW5nTGlua0FkZHJlc3MoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbbW9uZXJpdW0sIGlzQXV0aG9yaXplZCwgcHJvZmlsZV1cbiAgKTtcblxuICAvL1xuXG4gIHJldHVybiAoXG4gICAgPE1vbmVyaXVtQ29udGV4dC5Qcm92aWRlclxuICAgICAgdmFsdWU9e3tcbiAgICAgICAgYXV0aG9yaXplLFxuICAgICAgICBpc0F1dGhvcml6ZWQsXG4gICAgICAgIHByb2ZpbGUsXG4gICAgICAgIGJhbGFuY2VzLFxuICAgICAgICBsb2FkaW5nLFxuICAgICAgICBsb2FkaW5nUGxhY2VPcmRlcixcbiAgICAgICAgbG9hZGluZ0xpbmtBZGRyZXNzLFxuICAgICAgICBsb2FkaW5nQmFsYW5jZXMsXG4gICAgICAgIGdldEJhbGFuY2VzLFxuICAgICAgICBsaW5rQWRkcmVzcyxcbiAgICAgICAgcGxhY2VPcmRlcixcbiAgICAgICAgb3JkZXJzLFxuICAgICAgICB0b2tlbnMsXG4gICAgICAgIGVycm9yLFxuICAgICAgICBsb2FkaW5nQXV0aCxcbiAgICAgIH19XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvTW9uZXJpdW1Db250ZXh0LlByb3ZpZGVyPlxuICApO1xufTtcbiIsImltcG9ydCB7IGNyZWF0ZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7XG4gIEJhbGFuY2VzLFxuICBMaW5rQWRkcmVzcyxcbiAgTmV3T3JkZXIsXG4gIE9yZGVyLFxuICBQcm9maWxlLFxuICBUb2tlbixcbn0gZnJvbSAnQG1vbmVyaXVtL3Nkayc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9uZXJpdW1Db250ZXh0VmFsdWUge1xuICBhdXRob3JpemU6ICgpID0+IFByb21pc2U8dm9pZD47XG4gIGlzQXV0aG9yaXplZDogYm9vbGVhbjtcbiAgcHJvZmlsZTogUHJvZmlsZSB8IG51bGw7XG4gIGJhbGFuY2VzOiBCYWxhbmNlc1tdIHwgbnVsbDtcbiAgbG9hZGluZzogYm9vbGVhbjtcbiAgbG9hZGluZ1BsYWNlT3JkZXI6IGJvb2xlYW47XG4gIGxvYWRpbmdMaW5rQWRkcmVzczogYm9vbGVhbjtcbiAgbG9hZGluZ0JhbGFuY2VzOiBib29sZWFuO1xuICBnZXRCYWxhbmNlczogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgbGlua0FkZHJlc3M6IChhZGRyZXNzRGV0YWlsczogTGlua0FkZHJlc3MpID0+IFByb21pc2U8dW5rbm93bj47XG4gIHBsYWNlT3JkZXI6IChcbiAgICBvcmRlckRldGFpbHM6IE5ld09yZGVyLFxuICAgIHN1cHBvcnRpbmdEb2N1bWVudD86IEZpbGVcbiAgKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBvcmRlcnM6IE9yZGVyW107XG4gIHRva2VuczogVG9rZW5bXTtcbiAgZXJyb3I6IHVua25vd247XG4gIC8qKiBJcyBzdGlsbCBjaGVja2luZyBpZiB0aGVyZSBpcyBhbiBhY3RpdmUgc2Vzc2lvbiAqL1xuICBsb2FkaW5nQXV0aDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IE1vbmVyaXVtQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8TW9uZXJpdW1Db250ZXh0VmFsdWUgfCBudWxsPihudWxsKTtcbiIsImltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IE1vbmVyaXVtQ29udGV4dCwgTW9uZXJpdW1Db250ZXh0VmFsdWUgfSBmcm9tICcuL2NvbnRleHQnO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlTW9uZXJpdW0oKTogTW9uZXJpdW1Db250ZXh0VmFsdWUge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChNb25lcml1bUNvbnRleHQpO1xuXG4gIGlmIChjb250ZXh0ID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1c2VNb25lcml1bSBtdXN0IGJlIHVzZWQgd2l0aGluIGEgTW9uZXJpdW1Qcm92aWRlcicpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuIl19
10
+ exports.MoneriumContext = y;
11
+ exports.MoneriumProvider = T;
12
+ exports.keys = c;
13
+ exports.useAuth = f;
14
+ exports.useAuthContext = M;
15
+ exports.useBalances = Z;
16
+ exports.useLinkAddress = ee;
17
+ exports.useOrder = _;
18
+ exports.useOrders = $;
19
+ exports.usePlaceOrder = j;
20
+ exports.useProfile = W;
21
+ exports.useProfiles = X;
22
+ exports.useTokens = Y;
23
+ //# sourceMappingURL=index.js.map
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9saWIvY29udGV4dC50c3giLCIuLi9zcmMvbGliL3Byb3ZpZGVyLnRzeCIsIi4uL3NyYy9saWIvaG9va3MudHN4Il0sIm5hbWVzIjpbIk1vbmVyaXVtQ29udGV4dCIsImNyZWF0ZUNvbnRleHQiLCJNb25lcml1bVByb3ZpZGVyIiwiY2hpbGRyZW4iLCJjbGllbnRJZCIsInJlZGlyZWN0VXJsIiwicmVkaXJlY3RVcmkiLCJlbnZpcm9ubWVudCIsInF1ZXJ5Q2xpZW50IiwidXNlUXVlcnlDbGllbnQiLCJzZGsiLCJzZXRTZGsiLCJ1c2VTdGF0ZSIsImlzQXV0aG9yaXplZCIsInNldElzQXV0aG9yaXplZCIsImVycm9yIiwic2V0RXJyb3IiLCJsb2FkaW5nQXV0aCIsInNldExvYWRpbmdBdXRoIiwidXNlRWZmZWN0Iiwic2RrSW5zdGFuY2UiLCJNb25lcml1bUNsaWVudCIsImF1dGhvcml6ZSIsInVzZUNhbGxiYWNrIiwicGFyYW1zIiwiZXJyIiwicmV2b2tlQWNjZXNzIiwianN4Iiwia2V5cyIsInByb2ZpbGVJZCIsIm9yZGVySWQiLCJmaWx0ZXIiLCJ1c2VTZGsiLCJjb250ZXh0IiwidXNlQ29udGV4dCIsInVzZUF1dGgiLCJ1c2VBdXRoQ29udGV4dCIsInF1ZXJ5IiwiZGF0YSIsInJlc3QiLCJ1c2VRdWVyeSIsInVzZVByb2ZpbGUiLCJhdXRoQ29udGV4dCIsInByb2ZpbGVJZFRvVXNlIiwidXNlUHJvZmlsZXMiLCJ1c2VUb2tlbnMiLCJ1c2VCYWxhbmNlcyIsInVzZU9yZGVyIiwidXNlT3JkZXJzIiwiZmlsdGVycyIsInVzZVBsYWNlT3JkZXIiLCJzdXBwb3J0aW5nRG9jdW1lbnQiLCJtdXRhdGlvbiIsIm11dGF0ZUFzeW5jIiwidXNlTXV0YXRpb24iLCJib2R5IiwiZG9jdW1lbnRJZCIsIm5ld0JvZHkiLCJ2YXJpYWJsZXMiLCJ2YXJzIiwidXNlTGlua0FkZHJlc3MiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJTyxJQUFNQSxDQUFrQkMsQ0FB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QixFQUFZLGlCQUFrQixDQUFBLENBQzVCLFFBQVVvQixDQUFBQSxDQUFBQSxDQUFLLFVBQVdDLENBQUFBLENBQVMsQ0FDckMsQ0FBQyxFQUVEdUIsQ0FBVSxFQUFBLFNBQUEsR0FBWWQsQ0FBTW9CLENBQUFBLENBQUFBLENBQVd6QixDQUFPLEVBQ2hELENBQUEsQ0FDQSxPQUFRbEIsQ0FBQUEsQ0FBQUEsQ0FBTzRDLEVBQU0xQixDQUFTLENBQUEsQ0FFNUIsTUFBQW1CLENBQUFBLEVBQVUsT0FBVXJDLEdBQUFBLENBQUFBLENBQU80QyxDQUFNMUIsQ0FBQUEsQ0FBTyxFQUNsQ2xCLENBQ1IsQ0FDRixDQUFDLENBQUEsQ0FDRCxPQUFPLENBQ0wsV0FBQSxDQUFhc0MsQ0FDYixDQUFBLEdBQUdkLENBQ0wsQ0FDRiIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IFNka0luc3RhbmNlLCBVc2VBdXRoUmV0dXJuIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBNb25lcml1bUNvbnRleHQgPSBjcmVhdGVDb250ZXh0PFxuICAoVXNlQXV0aFJldHVybiAmIFNka0luc3RhbmNlKSB8IG51bGxcbj4obnVsbCk7XG4iLCJpbXBvcnQgeyBSZWFjdE5vZGUsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlUXVlcnlDbGllbnQgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknO1xuXG5pbXBvcnQgeyBNb25lcml1bUNsaWVudCB9IGZyb20gJ0Btb25lcml1bS9zZGsnO1xuXG5pbXBvcnQgeyBNb25lcml1bUNvbnRleHQgfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHsgQXV0aG9yaXplUGFyYW1zIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogUGxhY2UgdGhpcyBwcm92aWRlciBhdCB0aGUgcm9vdCBvZiB5b3VyIGFwcGxpY2F0aW9uLlxuICogQGdyb3VwIFByb3ZpZGVyXG4gKiBAcGFyYW0gcGFyYW1zXG4gKiBAcGFyYW0gcGFyYW1zLmNoaWxkcmVuIC0gUmVzdCBvZiB0aGUgYXBwbGljYXRpb24uXG4gKiBAcGFyYW0gcGFyYW1zLmNsaWVudElkIC0gTW9uZXJpdW0gYXV0aCBmbG93IGNsaWVudCBpZC5cbiAqIEBwYXJhbSBwYXJhbXMucmVkaXJlY3RVcmkgLSBNb25lcml1bSBhdXRoIGZsb3cgcmVkaXJlY3QgdXJsLlxuICogQHBhcmFtIHBhcmFtcy5lbnZpcm9ubWVudCAtIE1vbmVyaXVtIGVudmlyb25tZW50LlxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGNvbnN0IE1vbmVyaXVtUHJvdmlkZXIgPSAoe1xuICBjaGlsZHJlbixcbiAgY2xpZW50SWQsXG4gIHJlZGlyZWN0VXJsLFxuICByZWRpcmVjdFVyaSxcbiAgZW52aXJvbm1lbnQgPSAnc2FuZGJveCcsXG59OiB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGNsaWVudElkOiBzdHJpbmc7XG4gIHJlZGlyZWN0VXJpOiBzdHJpbmc7XG4gIC8qKiBAZGVwcmVjYXRlZCB1c2UgcmVkaXJlY3RVcmkgKi9cbiAgcmVkaXJlY3RVcmw/OiBzdHJpbmc7XG4gIGVudmlyb25tZW50PzogJ3NhbmRib3gnIHwgJ3Byb2R1Y3Rpb24nO1xufSkgPT4ge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgY29uc3QgW3Nkaywgc2V0U2RrXSA9IHVzZVN0YXRlPE1vbmVyaXVtQ2xpZW50PigpO1xuICBjb25zdCBbaXNBdXRob3JpemVkLCBzZXRJc0F1dGhvcml6ZWRdID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlPEVycm9yIHwgdW5rbm93biB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbbG9hZGluZ0F1dGgsIHNldExvYWRpbmdBdXRoXSA9IHVzZVN0YXRlKHRydWUpO1xuXG4gIC8vIEluaXRpYWxpemUgdGhlIFNES1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHNka0luc3RhbmNlID0gbmV3IE1vbmVyaXVtQ2xpZW50KHtcbiAgICAgIGVudmlyb25tZW50OiBlbnZpcm9ubWVudCxcbiAgICAgIGNsaWVudElkLFxuICAgICAgcmVkaXJlY3RVcmk6IHJlZGlyZWN0VXJpIHx8IHJlZGlyZWN0VXJsLFxuICAgIH0pO1xuICAgIHNldFNkayhzZGtJbnN0YW5jZSk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGNvbm5lY3QgPSBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoc2RrKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgc2V0SXNBdXRob3JpemVkKGF3YWl0IHNkay5nZXRBY2Nlc3MoKSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGdldCBhY2Nlc3M6JywgZXJyb3IpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIHNldExvYWRpbmdBdXRoKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25uZWN0KCk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHNkaykge1xuICAgICAgICBzZGsuZGlzY29ubmVjdCgpO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtzZGtdKTtcblxuICBjb25zdCBhdXRob3JpemUgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAocGFyYW1zPzogQXV0aG9yaXplUGFyYW1zKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoc2RrKSB7XG4gICAgICAgICAgYXdhaXQgc2RrLmF1dGhvcml6ZShwYXJhbXMpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZHVyaW5nIGF1dGhvcml6YXRpb246JywgZXJyKTtcbiAgICAgICAgc2V0RXJyb3IoZXJyKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtzZGtdXG4gICk7XG5cbiAgY29uc3QgcmV2b2tlQWNjZXNzID0gYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAoc2RrKSB7XG4gICAgICAgIGF3YWl0IHNkay5yZXZva2VBY2Nlc3MoKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGR1cmluZyByZXZva2luZyBhY2Nlc3M6JywgZXJyKTtcbiAgICAgIHNldEVycm9yKGVycik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmNsZWFyKCk7XG4gICAgICBzZXRJc0F1dGhvcml6ZWQoZmFsc2UpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxNb25lcml1bUNvbnRleHQuUHJvdmlkZXJcbiAgICAgIHZhbHVlPXt7XG4gICAgICAgIHNkayxcbiAgICAgICAgYXV0aG9yaXplLFxuICAgICAgICBpc0F1dGhvcml6ZWQsXG4gICAgICAgIGlzTG9hZGluZzogbG9hZGluZ0F1dGgsXG4gICAgICAgIGVycm9yLFxuICAgICAgICBkaXNjb25uZWN0OiBhc3luYyAoKSA9PiBzZGs/LmRpc2Nvbm5lY3QoKSxcbiAgICAgICAgcmV2b2tlQWNjZXNzOiBhc3luYyAoKSA9PiByZXZva2VBY2Nlc3MoKSxcbiAgICAgIH19XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvTW9uZXJpdW1Db250ZXh0LlByb3ZpZGVyPlxuICApO1xufTtcbiIsImltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VNdXRhdGlvbiwgdXNlUXVlcnksIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5JztcblxuaW1wb3J0IE1vbmVyaXVtQ2xpZW50LCB7XG4gIEF1dGhDb250ZXh0LFxuICBCYWxhbmNlcyxcbiAgTGlua0FkZHJlc3MsXG4gIExpbmtlZEFkZHJlc3MsXG4gIE5ld09yZGVyLFxuICBPcmRlcixcbiAgT3JkZXJTdGF0ZSxcbiAgUHJvZmlsZSxcbiAgVG9rZW4sXG59IGZyb20gJ0Btb25lcml1bS9zZGsnO1xuXG5pbXBvcnQgeyBNb25lcml1bUNvbnRleHQgfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHtcbiAgTXV0YXRpb25PcHRpb25zLFxuICBNdXRhdGlvblJlc3VsdCxcbiAgUXVlcnlPcHRpb25zLFxuICBRdWVyeVJlc3VsdCxcbiAgVXNlQXV0aFJldHVybixcbn0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKiBRdWVyeSBrZXlzXG4gKiAqL1xuZXhwb3J0IGNvbnN0IGtleXMgPSB7XG4gIGdldEFsbDogWydtb25lcml1bSddLFxuICBnZXRBdXRoQ29udGV4dDogWydtb25lcml1bScsICdhdXRoLWNvbnRleHQnXSxcbiAgZ2V0UHJvZmlsZTogKHByb2ZpbGVJZDogc3RyaW5nKSA9PiBbXG4gICAgJ21vbmVyaXVtJyxcbiAgICAncHJvZmlsZScsXG4gICAgLi4uKHByb2ZpbGVJZCA/IFtwcm9maWxlSWRdIDogW10pLFxuICBdLFxuICBnZXRQcm9maWxlczogWydtb25lcml1bScsICdwcm9maWxlcyddLFxuICBnZXRCYWxhbmNlczogKHByb2ZpbGVJZD86IHN0cmluZykgPT4gW1xuICAgICdtb25lcml1bScsXG4gICAgJ2JhbGFuY2VzJyxcbiAgICAuLi4ocHJvZmlsZUlkID8gW3Byb2ZpbGVJZF0gOiBbXSksXG4gIF0sXG4gIGdldFRva2VuczogWydtb25lcml1bScsICd0b2tlbnMnXSxcbiAgZ2V0T3JkZXI6IChvcmRlcklkOiBzdHJpbmcpID0+IFsnbW9uZXJpdW0nLCAnb3JkZXInLCBvcmRlcklkXSxcbiAgZ2V0T3JkZXJzOiAoZmlsdGVyPzogdW5rbm93bikgPT4gW1xuICAgICdtb25lcml1bScsXG4gICAgJ29yZGVycycsXG4gICAgLi4uKGZpbHRlciA/IFtmaWx0ZXJdIDogW10pLFxuICBdLFxuICBwbGFjZU9yZGVyOiBbJ21vbmVyaXVtJywgJ3BsYWNlLW9yZGVyJ10sXG4gIGxpbmtBZGRyZXNzOiBbJ21vbmVyaXVtJywgJ2xpbmstYWRkcmVzcyddLFxufTtcblxuLyoqIEludGVybmFsIGhvb2sgdG8gdXNlIFNESyAqL1xuZnVuY3Rpb24gdXNlU2RrKCk6IE1vbmVyaXVtQ2xpZW50IHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoTW9uZXJpdW1Db250ZXh0KTtcblxuICBpZiAoY29udGV4dCA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcigndXNlU2RrIG11c3QgYmUgdXNlZCB3aXRoaW4gYSBNb25lcml1bVByb3ZpZGVyJyk7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ/LnNkaztcbn1cblxuLyoqXG4gKiAjIFJlZGlyZWN0IHRvIHRoZSBNb25lcml1bSBhdXRoIGZsb3cuXG4gKiBAZ3JvdXAgSG9va3NcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogY29uc3QgeyBhdXRob3JpemUsIGlzQXV0aG9yaXplZCwgaXNMb2FkaW5nLCBlcnJvciB9ID0gdXNlQXV0aCgpO1xuICpcbiAqIGF1dGhvcml6ZSgpOyAvLyBSZWRpcmVjdHMgdG8gdGhlIE1vbmVyaXVtIGF1dGggZmxvdy5cbiAqXG4gKiAvLyBUbyBvcHQtaW4gdG8gYXV0b21hdGVkIHdhbGxldCBsaW5raW5nLCBwYXNzIHRoZSBhZGRyZXNzLCBzaWduYXR1cmUgYW5kIGNoYWluLlxuICogYXV0aG9yaXplKHsgYWRkcmVzcywgc2lnbmF0dXJlLCBjaGFpbiB9KS5cbiAqIGBgYFxuICpcbiAqIEByZXR1cm5zIHtVc2VBdXRoUmV0dXJufVxuICogLSBgYXV0aG9yaXplYCAgLSBSZWRpcmVjdHMgdG8gdGhlIE1vbmVyaXVtIGF1dGggZmxvdy5cbiAqIC0gYGlzQXV0aG9yaXplZGAgLSBXaGV0aGVyIHRoZSB1c2VyIGlzIGF1dGhvcml6ZWQuXG4gKiAtIGBpc0xvYWRpbmdgIC0gV2hldGhlciB0aGUgYXV0aCBmbG93IGlzIGxvYWRpbmcuXG4gKiAtIGBlcnJvcmAgLSBFcnJvciBtZXNzYWdlIGlmIHRoZSBhdXRoIGZsb3cgZmFpbHMuXG4gKiAtIGBkaXNjb25uZWN0YCAtIERpc2Nvbm5lY3QgdGhlIHVzZXIuXG4gKiAtIGByZXZva2VBY2Nlc3NgIC0gUmV2b2tlIHRoZSB1c2VyJ3MgYWNjZXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQXV0aCgpOiBVc2VBdXRoUmV0dXJuIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoTW9uZXJpdW1Db250ZXh0KTtcblxuICBpZiAoY29udGV4dCA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcigndXNlQXV0aCBtdXN0IGJlIHVzZWQgd2l0aGluIGEgTW9uZXJpdW1Qcm92aWRlcicpO1xuICB9XG4gIHJldHVybiB7XG4gICAgaXNBdXRob3JpemVkOiBjb250ZXh0LmlzQXV0aG9yaXplZCxcbiAgICBhdXRob3JpemU6IGNvbnRleHQuYXV0aG9yaXplLFxuICAgIGlzTG9hZGluZzogY29udGV4dC5pc0xvYWRpbmcsXG4gICAgZXJyb3I6IGNvbnRleHQuZXJyb3IsXG4gICAgZGlzY29ubmVjdDogY29udGV4dC5kaXNjb25uZWN0LFxuICAgIHJldm9rZUFjY2VzczogY29udGV4dC5yZXZva2VBY2Nlc3MsXG4gIH07XG59XG5cbi8qKlxuICogIyBHZXQgdGhlIGF1dGhlbnRpY2F0aW9uIGNvbnRleHQuXG4gKiBAZ3JvdXAgSG9va3NcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gW3BhcmFtc10gTm8gcmVxdWlyZWQgcGFyYW1ldGVycy5cbiAqIEBwYXJhbSB7UXVlcnlPcHRpb25zPEF1dGhDb250ZXh0Pn0gW3BhcmFtcy5xdWVyeV0ge0Bpbmhlcml0RG9jIFF1ZXJ5T3B0aW9uc31cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IHtcbiAqICAgIGF1dGhDb250ZXh0LCAvLyB1c2VRdWVyeSdzIGBkYXRhYCBwcm9wZXJ0eVxuICogICAgaXNMb2FkaW5nLFxuICogICAgaXNFcnJvcixcbiAqICAgIGVycm9yLFxuICogICAgcmVmZXRjaCxcbiAqICAgIC4uLm1vcmVVc2VRdWVyeVJlc3VsdHNcbiAqIH0gPSB1c2VBdXRoQ29udGV4dCgpO1xuICogYGBgXG4gKlxuICogQHNlZVxuICogW0FQSSBEb2N1bWVudGF0aW9uXShodHRwczovL21vbmVyaXVtLmRldi9hcGktZG9jcyNvcGVyYXRpb24vYXV0aC1jb250ZXh0KVxuICpcbiAqIFtBdXRoQ29udGV4dCBpbnRlcmZhY2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9tb25lcml1bS9qcy1tb25vcmVwby9ibG9iL21haW4vcGFja2FnZXMvc2RrL2RvY3MvZ2VuZXJhdGVkL2ludGVyZmFjZXMvQXV0aENvbnRleHQubWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBdXRoQ29udGV4dCh7XG4gIHF1ZXJ5LFxufToge1xuICBxdWVyeT86IFF1ZXJ5T3B0aW9uczxBdXRoQ29udGV4dD47XG59ID0ge30pOiBRdWVyeVJlc3VsdDwnYXV0aENvbnRleHQnLCBBdXRoQ29udGV4dD4ge1xuICBjb25zdCB7IGlzQXV0aG9yaXplZCB9ID0gdXNlQXV0aCgpO1xuICBjb25zdCBzZGsgPSB1c2VTZGsoKTtcblxuICBjb25zdCB7IGRhdGEsIC4uLnJlc3QgfSA9IHVzZVF1ZXJ5KHtcbiAgICAuLi5xdWVyeSxcbiAgICBxdWVyeUtleToga2V5cy5nZXRBdXRoQ29udGV4dCxcbiAgICBxdWVyeUZuOiBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoIXNkaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFNESyBpbnN0YW5jZSBhdmFpbGFibGUnKTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNBdXRob3JpemVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVXNlciBub3QgYXV0aG9yaXplZCcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNkay5nZXRBdXRoQ29udGV4dCgpO1xuICAgIH0sXG4gICAgZW5hYmxlZDogQm9vbGVhbihzZGsgJiYgaXNBdXRob3JpemVkICYmIChxdWVyeT8uZW5hYmxlZCA/PyB0cnVlKSksXG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGF1dGhDb250ZXh0OiBkYXRhLFxuICAgIC4uLnJlc3QsXG4gIH07XG59XG5cbi8qKlxuICogIyBHZXQgc2luZ2xlIHByb2ZpbGVcbiAqIElmIG5vIGBwcm9maWxlSWRgIGlzIHByb3ZpZGVkLCB0aGUgZGVmYXVsdCBwcm9maWxlIGlzIHVzZWQuXG4gKiBAZ3JvdXAgSG9va3NcbiAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXNcbiAqIEBwYXJhbSB7c3RyaW5nfSBbcGFyYW1zLnByb2ZpbGVJZF0gVGhlIGlkIG9mIHRoZSBwcm9maWxlLlxuICogQHBhcmFtIHtRdWVyeU9wdGlvbnM8UHJvZmlsZT59IFtwYXJhbXMucXVlcnldIHtAaW5oZXJpdERvYyBRdWVyeU9wdGlvbnN9XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBjb25zdCB7XG4gKiAgICBwcm9maWxlLCAvLyB1c2VRdWVyeSdzIGBkYXRhYCBwcm9wZXJ0eVxuICogICAgaXNMb2FkaW5nLFxuICogICAgaXNFcnJvcixcbiAqICAgIGVycm9yLFxuICogICAgcmVmZXRjaCxcbiAqICAgIC4uLm1vcmVVc2VRdWVyeVJlc3VsdHNcbiAqIH0gPSB1c2VQcm9maWxlKCk7XG4gKiBgYGBcblxuICogQHNlZVxuICogW0FQSSBEb2N1bWVudGF0aW9uXShodHRwczovL21vbmVyaXVtLmRldi9hcGktZG9jcyNvcGVyYXRpb24vcHJvZmlsZSlcbiAqXG4gKiBbUHJvZmlsZSBpbnRlcmZhY2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9tb25lcml1bS9qcy1tb25vcmVwby9ibG9iL21haW4vcGFja2FnZXMvc2RrL2RvY3MvZ2VuZXJhdGVkL2ludGVyZmFjZXMvUHJvZmlsZS5tZClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVByb2ZpbGUoe1xuICBwcm9maWxlSWQsXG4gIHF1ZXJ5LFxufToge1xuICBwcm9maWxlSWQ/OiBzdHJpbmc7XG4gIHF1ZXJ5PzogUXVlcnlPcHRpb25zPFByb2ZpbGU+O1xufSA9IHt9KTogUXVlcnlSZXN1bHQ8J3Byb2ZpbGUnLCBQcm9maWxlPiB7XG4gIGNvbnN0IHsgaXNBdXRob3JpemVkIH0gPSB1c2VBdXRoKCk7XG4gIGNvbnN0IHNkayA9IHVzZVNkaygpO1xuICBjb25zdCB7IGF1dGhDb250ZXh0IH0gPSB1c2VBdXRoQ29udGV4dCgpO1xuXG4gIGNvbnN0IHByb2ZpbGVJZFRvVXNlID0gcHJvZmlsZUlkIHx8IChhdXRoQ29udGV4dD8uZGVmYXVsdFByb2ZpbGUgYXMgc3RyaW5nKTtcblxuICBjb25zdCB7IGRhdGEsIC4uLnJlc3QgfSA9IHVzZVF1ZXJ5KHtcbiAgICAuLi5xdWVyeSxcbiAgICBxdWVyeUtleToga2V5cy5nZXRQcm9maWxlKHByb2ZpbGVJZFRvVXNlKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoIXNkaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFNESyBpbnN0YW5jZSBhdmFpbGFibGUnKTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNBdXRob3JpemVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVXNlciBub3QgYXV0aG9yaXplZCcpO1xuICAgICAgfVxuICAgICAgaWYgKCFwcm9maWxlSWRUb1VzZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Byb2ZpbGUgSWQgaXMgcmVxdWlyZWQnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNkay5nZXRQcm9maWxlKHByb2ZpbGVJZFRvVXNlKTtcbiAgICB9LFxuICAgIGVuYWJsZWQ6IEJvb2xlYW4oXG4gICAgICBzZGsgJiYgaXNBdXRob3JpemVkICYmIHByb2ZpbGVJZFRvVXNlICYmIChxdWVyeT8uZW5hYmxlZCA/PyB0cnVlKVxuICAgICksXG4gIH0pO1xuICByZXR1cm4ge1xuICAgIHByb2ZpbGU6IGRhdGEsXG4gICAgLi4ucmVzdCxcbiAgfTtcbn1cbi8qKlxuICogIyBHZXQgcHJvZmlsZXNcbiAqIEBncm91cCBIb29rc1xuICogQHBhcmFtIHtPYmplY3R9IFtwYXJhbXNdIE5vIHJlcXVpcmVkIHBhcmFtZXRlcnMuXG4gKiBAcGFyYW0ge1F1ZXJ5T3B0aW9uczxQcm9maWxlW10+fSBbcGFyYW1zLnF1ZXJ5XSB7QGluaGVyaXREb2MgUXVlcnlPcHRpb25zfVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogY29uc3Qge1xuICogICAgcHJvZmlsZXMsIC8vIHVzZVF1ZXJ5J3MgYGRhdGFgIHByb3BlcnR5XG4gKiAgICBpc0xvYWRpbmcsXG4gKiAgICBpc0Vycm9yLFxuICogICAgZXJyb3IsXG4gKiAgICByZWZldGNoLFxuICogICAgLi4ubW9yZVVzZVF1ZXJ5UmVzdWx0c1xuICogfSA9IHVzZVByb2ZpbGVzKCk7XG4gKiBgYGBcblxuICogQHNlZVxuICogW0FQSSBEb2N1bWVudGF0aW9uXShodHRwczovL21vbmVyaXVtLmRldi9hcGktZG9jcyNvcGVyYXRpb24vcHJvZmlsZXMpXG4gKlxuICogW1Byb2ZpbGUgaW50ZXJmYWNlXShodHRwczovL2dpdGh1Yi5jb20vbW9uZXJpdW0vanMtbW9ub3JlcG8vYmxvYi9tYWluL3BhY2thZ2VzL3Nkay9kb2NzL2dlbmVyYXRlZC9pbnRlcmZhY2VzL1Byb2ZpbGUubWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VQcm9maWxlcyh7XG4gIHF1ZXJ5LFxufToge1xuICBxdWVyeT86IFF1ZXJ5T3B0aW9uczxQcm9maWxlW10+O1xufSA9IHt9KTogUXVlcnlSZXN1bHQ8J3Byb2ZpbGVzJywgUHJvZmlsZVtdPiB7XG4gIGNvbnN0IHsgaXNBdXRob3JpemVkIH0gPSB1c2VBdXRoKCk7XG4gIGNvbnN0IHNkayA9IHVzZVNkaygpO1xuXG4gIGNvbnN0IHsgZGF0YSwgLi4ucmVzdCB9ID0gdXNlUXVlcnkoe1xuICAgIC4uLnF1ZXJ5LFxuICAgIHF1ZXJ5S2V5OiBrZXlzLmdldFByb2ZpbGVzLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpID0+IHtcbiAgICAgIGlmICghc2RrKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gU0RLIGluc3RhbmNlIGF2YWlsYWJsZScpO1xuICAgICAgfVxuICAgICAgaWYgKCFpc0F1dGhvcml6ZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVc2VyIG5vdCBhdXRob3JpemVkJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2RrLmdldFByb2ZpbGVzKCk7XG4gICAgfSxcbiAgICBlbmFibGVkOiBCb29sZWFuKHNkayAmJiBpc0F1dGhvcml6ZWQgJiYgKHF1ZXJ5Py5lbmFibGVkID8/IHRydWUpKSxcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgcHJvZmlsZXM6IGRhdGEsXG4gICAgLi4ucmVzdCxcbiAgfTtcbn1cbi8qKlxuICogIyBHZXQgdG9rZW5zXG4gKiBAZ3JvdXAgSG9va3NcbiAqIEBwYXJhbSB7T2JqZWN0fSBbcGFyYW1zXSBObyByZXF1aXJlZCBwYXJhbWV0ZXJzLlxuICogQHBhcmFtIHtRdWVyeU9wdGlvbnM8VG9rZW5bXT59IFtwYXJhbXMucXVlcnldIHtAaW5oZXJpdERvYyBRdWVyeU9wdGlvbnN9XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBjb25zdCB7XG4gKiAgICB0b2tlbnMsIC8vIHVzZVF1ZXJ5J3MgYGRhdGFgIHByb3BlcnR5XG4gKiAgICBpc0xvYWRpbmcsXG4gKiAgICBpc0Vycm9yLFxuICogICAgZXJyb3IsXG4gKiAgICByZWZldGNoLFxuICogICAgLi4ubW9yZVVzZVF1ZXJ5UmVzdWx0c1xuICogfSA9IHVzZVRva2VucygpO1xuICogYGBgXG5cbiAqIEBzZWVcbiAqIFtBUEkgRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9tb25lcml1bS5kZXYvYXBpLWRvY3Mjb3BlcmF0aW9uL3Rva2VucylcbiAqXG4gKiBbVG9rZW4gaW50ZXJmYWNlXShodHRwczovL2dpdGh1Yi5jb20vbW9uZXJpdW0vanMtbW9ub3JlcG8vYmxvYi9tYWluL3BhY2thZ2VzL3Nkay9kb2NzL2dlbmVyYXRlZC9pbnRlcmZhY2VzL1Rva2VuLm1kKVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlVG9rZW5zKHtcbiAgcXVlcnksXG59OiB7IHF1ZXJ5PzogUXVlcnlPcHRpb25zPFRva2VuW10+IH0gPSB7fSk6IFF1ZXJ5UmVzdWx0PCd0b2tlbnMnLCBUb2tlbltdPiB7XG4gIGNvbnN0IHNkayA9IHVzZVNkaygpO1xuICBjb25zdCB7IGlzQXV0aG9yaXplZCB9ID0gdXNlQXV0aCgpO1xuICBjb25zdCB7IGRhdGEsIC4uLnJlc3QgfSA9IHVzZVF1ZXJ5KHtcbiAgICAuLi5xdWVyeSxcbiAgICBxdWVyeUtleToga2V5cy5nZXRUb2tlbnMsXG4gICAgcXVlcnlGbjogYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKCFzZGspIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBTREsgaW5zdGFuY2UgYXZhaWxhYmxlJyk7XG4gICAgICB9XG4gICAgICBpZiAoIWlzQXV0aG9yaXplZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VzZXIgbm90IGF1dGhvcml6ZWQnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzZGsuZ2V0VG9rZW5zKCk7XG4gICAgfSxcbiAgICBlbmFibGVkOiBCb29sZWFuKHNkayAmJiBpc0F1dGhvcml6ZWQgJiYgKHF1ZXJ5Py5lbmFibGVkID8/IHRydWUpKSxcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgdG9rZW5zOiBkYXRhLFxuICAgIC4uLnJlc3QsXG4gIH07XG59XG5cbi8qKlxuICogIyBHZXQgYmFsYW5jZXNcbiAqIEBncm91cCBIb29rc1xuICogQHBhcmFtIHtPYmplY3R9IFtwYXJhbXNdIE5vIHJlcXVpcmVkIHBhcmFtZXRlcnMuXG4gKiBAcGFyYW0ge1F1ZXJ5T3B0aW9uczxCYWxhbmNlc1tdPn0gW3BhcmFtcy5wcm9maWxlSWRdIEZldGNoIGJhbGFuY2VzIGZvciBhIHNwZWNpZmljIHByb2ZpbGUuXG4gKiBAcGFyYW0ge1F1ZXJ5T3B0aW9uczxCYWxhbmNlc1tdPn0gW3BhcmFtcy5xdWVyeV0ge0Bpbmhlcml0RG9jIFF1ZXJ5T3B0aW9uc31cblxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBjb25zdCB7XG4gKiAgICBiYWxhbmNlcywgLy8gdXNlUXVlcnkncyBgZGF0YWAgcHJvcGVydHlcbiAqICAgIGlzTG9hZGluZyxcbiAqICAgIGlzRXJyb3IsXG4gKiAgICBlcnJvcixcbiAqICAgIHJlZmV0Y2gsXG4gKiAgICAuLi5tb3JlVXNlUXVlcnlSZXN1bHRzXG4gKiB9ID0gdXNlQmFsYW5jZXMoKTtcbiAqIGBgYFxuICogQHNlZVxuICogW0FQSSBEb2N1bWVudGF0aW9uXShodHRwczovL21vbmVyaXVtLmRldi9hcGktZG9jcyNvcGVyYXRpb24vcHJvZmlsZS1iYWxhbmNlcylcbiAqXG4gKiBbQmFsYW5jZXMgaW50ZXJmYWNlXShodHRwczovL2dpdGh1Yi5jb20vbW9uZXJpdW0vanMtbW9ub3JlcG8vYmxvYi9tYWluL3BhY2thZ2VzL3Nkay9kb2NzL2dlbmVyYXRlZC9pbnRlcmZhY2VzL0JhbGFuY2VzLm1kKVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQmFsYW5jZXMoe1xuICBwcm9maWxlSWQsXG4gIHF1ZXJ5LFxufToge1xuICBwcm9maWxlSWQ/OiBzdHJpbmc7XG4gIHF1ZXJ5PzogUXVlcnlPcHRpb25zPEJhbGFuY2VzW10+O1xufSA9IHt9KTogUXVlcnlSZXN1bHQ8J2JhbGFuY2VzJywgQmFsYW5jZXNbXT4ge1xuICBjb25zdCBzZGsgPSB1c2VTZGsoKTtcbiAgY29uc3QgeyBpc0F1dGhvcml6ZWQgfSA9IHVzZUF1dGgoKTtcblxuICBjb25zdCB7IGRhdGEsIC4uLnJlc3QgfSA9IHVzZVF1ZXJ5KHtcbiAgICAuLi5xdWVyeSxcbiAgICBxdWVyeUtleToga2V5cy5nZXRCYWxhbmNlcyhwcm9maWxlSWQpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpID0+IHtcbiAgICAgIGlmICghc2RrKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gU0RLIGluc3RhbmNlIGF2YWlsYWJsZScpO1xuICAgICAgfVxuICAgICAgaWYgKCFpc0F1dGhvcml6ZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVc2VyIG5vdCBhdXRob3JpemVkJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2RrLmdldEJhbGFuY2VzKHByb2ZpbGVJZCk7XG4gICAgfSxcbiAgICBlbmFibGVkOiBCb29sZWFuKHNkayAmJiBpc0F1dGhvcml6ZWQgJiYgKHF1ZXJ5Py5lbmFibGVkID8/IHRydWUpKSxcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgYmFsYW5jZXM6IGRhdGEsXG4gICAgLi4ucmVzdCxcbiAgfTtcbn1cblxuLyoqXG4gKiAjIEdldCBzaW5nbGUgb3JkZXJcbiAqIEBncm91cCBIb29rc1xuICogQHBhcmFtIHtPYmplY3R9IHBhcmFtc1xuICogQHBhcmFtIHtPYmplY3R9IHBhcmFtcy5vcmRlcklkIFRoZSBpZCBvZiB0aGUgb3JkZXIuXG4gKiBAcGFyYW0ge1F1ZXJ5T3B0aW9uczxPcmRlcj59IFtwYXJhbXMucXVlcnldIHtAaW5oZXJpdERvYyBRdWVyeU9wdGlvbnN9XG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IHtcbiAqICAgIG9yZGVyLCAvLyB1c2VRdWVyeSdzIGBkYXRhYCBwcm9wZXJ0eVxuICogICAgaXNMb2FkaW5nLFxuICogICAgaXNFcnJvcixcbiAqICAgIGVycm9yLFxuICogICAgcmVmZXRjaCxcbiAqICAgIC4uLm1vcmVVc2VRdWVyeVJlc3VsdHNcbiAqIH0gPSB1c2VPcmRlcigpO1xuICogYGBgXG4gKiBAc2VlXG4gKiBbQVBJIERvY3VtZW50YXRpb25dKGh0dHBzOi8vbW9uZXJpdW0uZGV2L2FwaS1kb2NzI29wZXJhdGlvbi9vcmRlcilcbiAqXG4gKiBbT3JkZXIgaW50ZXJmYWNlXShodHRwczovL2dpdGh1Yi5jb20vbW9uZXJpdW0vanMtbW9ub3JlcG8vYmxvYi9tYWluL3BhY2thZ2VzL3Nkay9kb2NzL2dlbmVyYXRlZC9pbnRlcmZhY2VzL09yZGVyLm1kKVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlT3JkZXIoe1xuICBvcmRlcklkLFxuICBxdWVyeSA9IHt9LFxufToge1xuICBvcmRlcklkOiBzdHJpbmc7XG4gIHF1ZXJ5PzogUXVlcnlPcHRpb25zPE9yZGVyPjtcbn0pOiBRdWVyeVJlc3VsdDwnb3JkZXInLCBPcmRlcj4ge1xuICBjb25zdCBzZGsgPSB1c2VTZGsoKTtcbiAgY29uc3QgeyBpc0F1dGhvcml6ZWQgfSA9IHVzZUF1dGgoKTtcbiAgY29uc3QgeyBkYXRhLCAuLi5yZXN0IH0gPSB1c2VRdWVyeSh7XG4gICAgLi4ucXVlcnksXG4gICAgcXVlcnlLZXk6IGtleXMuZ2V0T3JkZXIob3JkZXJJZCksXG4gICAgcXVlcnlGbjogYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKCFzZGspIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBTREsgaW5zdGFuY2UgYXZhaWxhYmxlJyk7XG4gICAgICB9XG4gICAgICBpZiAoIWlzQXV0aG9yaXplZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VzZXIgbm90IGF1dGhvcml6ZWQnKTtcbiAgICAgIH1cbiAgICAgIGlmICghb3JkZXJJZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ09yZGVyIGlkIGlzIHJlcXVpcmVkJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzZGsuZ2V0T3JkZXIob3JkZXJJZCk7XG4gICAgfSxcbiAgICBlbmFibGVkOiBCb29sZWFuKHNkayAmJiBpc0F1dGhvcml6ZWQgJiYgb3JkZXJJZCAmJiAocXVlcnkuZW5hYmxlZCA/PyB0cnVlKSksXG4gIH0pO1xuICByZXR1cm4ge1xuICAgIG9yZGVyOiBkYXRhLFxuICAgIC4uLnJlc3QsXG4gIH07XG59XG5cbi8qKlxuICogIyBHZXQgb3JkZXJzXG4gKiBAZ3JvdXAgSG9va3NcbiAqIEBwYXJhbSB7T2JqZWN0fSBbcGFyYW1zXSBObyByZXF1aXJlZCBwYXJhbWV0ZXJzLlxuICogQHBhcmFtIHtPYmplY3R9IFtwYXJhbXMuYWRkcmVzc10gRmlsdGVyIGJhc2VkIG9uIHRoZSBibG9ja2NoYWluIGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBvcmRlci5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcGFyYW1zLm1lbW9dIEZpbHRlciBieSB0aGUgcGF5bWVudCBtZW1vL3JlZmVyZW5jZS4uXG4gKiBAcGFyYW0ge09iamVjdH0gW3BhcmFtcy5wcm9maWxlXSBGaWx0ZXIgYmFzZWQgb24gdGhlIHByb2ZpbGUgSUQgYXNzb2NpYXRlZCB3aXRoIHRoZSBvcmRlci5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcGFyYW1zLnN0YXRlXSBGaWx0ZXIgYmFzZWQgb24gdGhlIHN0YXRlIG9mIHRoZSBvcmRlci5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcGFyYW1zLnR4SGFzaF0gRmlsdGVyIGJhc2VkIG9uIHRoZSBibG9ja2NoYWluIHRyYW5zYWN0aW9uIGhhc2guXG4gKiBAcGFyYW0ge1F1ZXJ5T3B0aW9uczxPcmRlcltdPn0gW3BhcmFtcy5xdWVyeV0ge0Bpbmhlcml0RG9jIFF1ZXJ5T3B0aW9uc31cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IHtcbiAqICAgIG9yZGVycywgLy8gdXNlUXVlcnkncyBgZGF0YWAgcHJvcGVydHlcbiAqICAgIGlzTG9hZGluZyxcbiAqICAgIGlzRXJyb3IsXG4gKiAgICBlcnJvcixcbiAqICAgIHJlZmV0Y2gsXG4gKiAgICAuLi5tb3JlVXNlUXVlcnlSZXN1bHRzXG4gKiB9ID0gdXNlT3JkZXJzKCk7XG4gKiBgYGBcbiAqIEBzZWVcbiAqIFtBUEkgRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9tb25lcml1bS5kZXYvYXBpLWRvY3Mjb3BlcmF0aW9uL29yZGVycylcbiAqXG4gKiBbT3JkZXIgaW50ZXJmYWNlXShodHRwczovL2dpdGh1Yi5jb20vbW9uZXJpdW0vanMtbW9ub3JlcG8vYmxvYi9tYWluL3BhY2thZ2VzL3Nkay9kb2NzL2dlbmVyYXRlZC9pbnRlcmZhY2VzL09yZGVyLm1kKVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlT3JkZXJzKHtcbiAgcXVlcnkgPSB7fSxcbiAgLi4uZmlsdGVyc1xufToge1xuICBxdWVyeT86IFF1ZXJ5T3B0aW9uczxPcmRlcltdPjtcbiAgYWRkcmVzcz86IHN0cmluZztcbiAgdHhIYXNoPzogc3RyaW5nO1xuICBwcm9maWxlPzogc3RyaW5nO1xuICBtZW1vPzogc3RyaW5nO1xuICBzdGF0ZT86IE9yZGVyU3RhdGU7XG59ID0ge30pOiBRdWVyeVJlc3VsdDwnb3JkZXJzJywgT3JkZXJbXT4ge1xuICBjb25zdCBzZGsgPSB1c2VTZGsoKTtcbiAgY29uc3QgeyBpc0F1dGhvcml6ZWQgfSA9IHVzZUF1dGgoKTtcbiAgY29uc3QgeyBkYXRhLCAuLi5yZXN0IH0gPSB1c2VRdWVyeSh7XG4gICAgLi4ucXVlcnksXG4gICAgcXVlcnlLZXk6IGtleXMuZ2V0T3JkZXJzKGZpbHRlcnMpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpID0+IHtcbiAgICAgIGlmICghc2RrKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gU0RLIGluc3RhbmNlIGF2YWlsYWJsZScpO1xuICAgICAgfVxuICAgICAgaWYgKCFpc0F1dGhvcml6ZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVc2VyIG5vdCBhdXRob3JpemVkJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzZGsuZ2V0T3JkZXJzKGZpbHRlcnMpO1xuICAgIH0sXG4gICAgZW5hYmxlZDogQm9vbGVhbihzZGsgJiYgaXNBdXRob3JpemVkICYmIChxdWVyeS5lbmFibGVkID8/IHRydWUpKSxcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgb3JkZXJzOiBkYXRhLFxuICAgIC4uLnJlc3QsXG4gIH07XG59XG5cbi8qKlxuICogIyBQbGFjZSBhbiBvcmRlci5cbiAqIFdoZW4gdGhlIG9yZGVyIGhhcyBiZWVuIHBsYWNlZCwgdGhlIG9yZGVycyBxdWVyeSB3aWxsIGJlIGludmFsaWRhdGVkIGFuZCByZS1mZXRjaGVkLlxuICpcbiAqIElmIHRoZSBvcmRlciBhbW91bnQgaXMgYWJvdmUgMTUwMDAsIGEgc3VwcG9ydGluZyBkb2N1bWVudCBpcyByZXF1aXJlZC5cbiAqIEBncm91cCBIb29rc1xuICogQHBhcmFtIHBhcmFtXG4gKiBAcGFyYW0ge0ZpbGV9IHBhcmFtLnN1cHBvcnRpbmdEb2N1bWVudCBTdXBwb3J0aW5nIGRvY3VtZW50IGZpbGUuXG4gKiBAcGFyYW0ge09iamVjdH0gcGFyYW0ubXV0YXRpb24ge0Bpbmhlcml0RG9jIE11dGF0aW9uT3B0aW9uc31cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IHtcbiAqICAgIHBsYWNlT3JkZXIsIC8vIHVzZU11dGF0aW9uJ3MgYG11dGF0ZUFzeW5jYCBwcm9wZXJ0eVxuICogICAgaXNQZW5kaW5nLFxuICogICAgaXNFcnJvcixcbiAqICAgIGVycm9yLFxuICogICAgc3RhdHVzLFxuICogICAgLi4ubW9yZVVzZU11dGF0aW9uUmVzdWx0c1xuICogfSA9IHVzZVBsYWNlT3JkZXIoKTtcbiAqIGBgYFxuICogQHNlZVxuICogW0FQSSBEb2N1bWVudGF0aW9uXShodHRwczovL21vbmVyaXVtLmRldi9hcGktZG9jcyNvcGVyYXRpb24vcG9zdC1vcmRlcnMpXG4gKlxuICogW05ld09yZGVyIHR5cGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9tb25lcml1bS9qcy1tb25vcmVwby9ibG9iL21haW4vcGFja2FnZXMvc2RrL2RvY3MvZ2VuZXJhdGVkL3R5cGUtYWxpYXNlcy9OZXdPcmRlci5tZClcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlUGxhY2VPcmRlcih7XG4gIHN1cHBvcnRpbmdEb2N1bWVudCxcbiAgbXV0YXRpb24sXG59OiB7XG4gIHN1cHBvcnRpbmdEb2N1bWVudD86IEZpbGU7XG4gIG11dGF0aW9uPzogTXV0YXRpb25PcHRpb25zPE9yZGVyLCBFcnJvciwgTmV3T3JkZXI+O1xufSA9IHt9KTogTXV0YXRpb25SZXN1bHQ8J3BsYWNlT3JkZXInLCBPcmRlciwgRXJyb3IsIE5ld09yZGVyPiB7XG4gIGNvbnN0IHNkayA9IHVzZVNkaygpO1xuICBjb25zdCB7IGlzQXV0aG9yaXplZCB9ID0gdXNlQXV0aCgpO1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgY29uc3QgeyBtdXRhdGVBc3luYywgLi4ucmVzdCB9ID0gdXNlTXV0YXRpb24oe1xuICAgIC4uLm11dGF0aW9uLFxuICAgIG11dGF0aW9uS2V5OiBrZXlzLnBsYWNlT3JkZXIsXG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGJvZHk6IE5ld09yZGVyKSA9PiB7XG4gICAgICBpZiAoIXNkaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFNESyBpbnN0YW5jZSBhdmFpbGFibGUnKTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNBdXRob3JpemVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVXNlciBub3QgYXV0aG9yaXplZCcpO1xuICAgICAgfVxuICAgICAgbGV0IGRvY3VtZW50SWQ7XG4gICAgICBpZiAocGFyc2VJbnQoYm9keS5hbW91bnQpID4gMTUwMDApIHtcbiAgICAgICAgaWYgKCFzdXBwb3J0aW5nRG9jdW1lbnQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnU3VwcG9ydGluZyBkb2N1bWVudCBpcyByZXF1aXJlZCBmb3Igb3JkZXJzIGFib3ZlIDE1MDAwJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXBsb2FkZWREb2N1bWVudCA9XG4gICAgICAgICAgYXdhaXQgc2RrLnVwbG9hZFN1cHBvcnRpbmdEb2N1bWVudChzdXBwb3J0aW5nRG9jdW1lbnQpO1xuICAgICAgICBkb2N1bWVudElkID0gdXBsb2FkZWREb2N1bWVudC5pZDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3Qm9keSA9IHtcbiAgICAgICAgLi4uYm9keSxcbiAgICAgICAgZG9jdW1lbnRJZDogZG9jdW1lbnRJZCxcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBzZGsucGxhY2VPcmRlcihuZXdCb2R5KTtcbiAgICB9LFxuICAgIG9uU3VjY2VzcyhkYXRhLCB2YXJpYWJsZXMsIGNvbnRleHQpIHtcbiAgICAgIC8vIFJlZmV0Y2ggYWxsIG9yZGVycyBvbiBzdWNjZXNzLlxuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoe1xuICAgICAgICBxdWVyeUtleToga2V5cy5nZXRPcmRlcnMoKSxcbiAgICAgIH0pO1xuICAgICAgLy8gQWxsb3cgdGhlIGNhbGxlciB0byBhZGQgY3VzdG9tIGxvZ2ljIG9uIHN1Y2Nlc3MuXG4gICAgICBtdXRhdGlvbj8ub25TdWNjZXNzPy4oZGF0YSwgdmFyaWFibGVzLCBjb250ZXh0KTtcbiAgICB9LFxuICAgIG9uRXJyb3IoZXJyb3IsIHZhcnMsIGNvbnRleHQpIHtcbiAgICAgIC8vIEFsbG93IHRoZSBjYWxsZXIgdG8gYWRkIGN1c3RvbSBsb2dpYyBvbiBlcnJvci5cbiAgICAgIG11dGF0aW9uPy5vbkVycm9yPy4oZXJyb3IsIHZhcnMsIGNvbnRleHQpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSxcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgcGxhY2VPcmRlcjogbXV0YXRlQXN5bmMsXG4gICAgLi4ucmVzdCxcbiAgfTtcbn1cbi8qKlxuICogIyBBZGQgYWRkcmVzcyB0byBwcm9maWxlLlxuICogV2hlbiB0aGUgYWRkcmVzcyBoYXMgYmVlbiBsaW5rZWQsIHRoZSByZWxldmFudCBwcm9maWxlIHF1ZXJ5IHdpbGwgYmUgaW52YWxpZGF0ZWQgYW5kIHJlLWZldGNoZWQuXG4gKlxuICogQGdyb3VwIEhvb2tzXG4gKiBAcGFyYW0gcGFyYW1cbiAqIEBwYXJhbSB7RmlsZX0gcGFyYW0ucHJvZmlsZUlkIFdoaWNoIHByb2ZpbGUgdG8gbGluayB0aGUgYWRkcmVzcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbS5tdXRhdGlvbiB7QGluaGVyaXREb2MgTXV0YXRpb25PcHRpb25zfVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogY29uc3Qge1xuICogICAgbGlua0FkZHJlc3MsIC8vIHVzZU11dGF0aW9uJ3MgYG11dGF0ZUFzeW5jYCBwcm9wZXJ0eVxuICogICAgaXNQZW5kaW5nLFxuICogICAgaXNFcnJvcixcbiAqICAgIGVycm9yLFxuICogICAgc3RhdHVzLFxuICogICAgLi4ubW9yZVVzZU11dGF0aW9uUmVzdWx0c1xuICogfSA9IHVzZUxpbmtBZGRyZXNzKCk7XG4gKiBgYGBcbiAqIEBzZWVcbiAqIFtBUEkgRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9tb25lcml1bS5kZXYvYXBpLWRvY3Mjb3BlcmF0aW9uL3Byb2ZpbGUtYWRkcmVzc2VzKVxuICpcbiAqIFtMaW5rQWRkcmVzcyBpbnRlcmZhY2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9tb25lcml1bS9qcy1tb25vcmVwby9ibG9iL21haW4vcGFja2FnZXMvc2RrL2RvY3MvZ2VuZXJhdGVkL2ludGVyZmFjZXMvTGlua0FkZHJlc3MubWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VMaW5rQWRkcmVzcyh7XG4gIHByb2ZpbGVJZCxcbiAgbXV0YXRpb24sXG59OiB7XG4gIHByb2ZpbGVJZDogc3RyaW5nO1xuICBtdXRhdGlvbj86IE11dGF0aW9uT3B0aW9uczxMaW5rZWRBZGRyZXNzLCBFcnJvciwgTGlua0FkZHJlc3M+O1xufSk6IE11dGF0aW9uUmVzdWx0PCdsaW5rQWRkcmVzcycsIExpbmtlZEFkZHJlc3MsIEVycm9yLCBMaW5rQWRkcmVzcz4ge1xuICBjb25zdCBzZGsgPSB1c2VTZGsoKTtcbiAgY29uc3QgeyBpc0F1dGhvcml6ZWQgfSA9IHVzZUF1dGgoKTtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIGNvbnN0IHsgbXV0YXRlQXN5bmMsIC4uLnJlc3QgfSA9IHVzZU11dGF0aW9uKHtcbiAgICAuLi5tdXRhdGlvbixcbiAgICBtdXRhdGlvbktleToga2V5cy5saW5rQWRkcmVzcyxcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoYm9keTogTGlua0FkZHJlc3MpID0+IHtcbiAgICAgIGlmICghc2RrKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gU0RLIGluc3RhbmNlIGF2YWlsYWJsZScpO1xuICAgICAgfVxuICAgICAgaWYgKCFpc0F1dGhvcml6ZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVc2VyIG5vdCBhdXRob3JpemVkJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2RrLmxpbmtBZGRyZXNzKHByb2ZpbGVJZCwgYm9keSk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3MoZGF0YSwgdmFyaWFibGVzLCBjb250ZXh0KSB7XG4gICAgICAvLyBSZWZldGNoIGFsbCBvcmRlcnMgb24gc3VjY2Vzcy5cbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHtcbiAgICAgICAgcXVlcnlLZXk6IGtleXMuZ2V0UHJvZmlsZShwcm9maWxlSWQpLFxuICAgICAgfSk7XG4gICAgICAvLyBBbGxvdyB0aGUgY2FsbGVyIHRvIGFkZCBjdXN0b20gbG9naWMgb24gc3VjY2Vzcy5cbiAgICAgIG11dGF0aW9uPy5vblN1Y2Nlc3M/LihkYXRhLCB2YXJpYWJsZXMsIGNvbnRleHQpO1xuICAgIH0sXG4gICAgb25FcnJvcihlcnJvciwgdmFycywgY29udGV4dCkge1xuICAgICAgLy8gQWxsb3cgdGhlIGNhbGxlciB0byBhZGQgY3VzdG9tIGxvZ2ljIG9uIGVycm9yLlxuICAgICAgbXV0YXRpb24/Lm9uRXJyb3I/LihlcnJvciwgdmFycywgY29udGV4dCk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9LFxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBsaW5rQWRkcmVzczogbXV0YXRlQXN5bmMsXG4gICAgLi4ucmVzdCxcbiAgfTtcbn1cbiJdfQ==
package/dist/index.mjs CHANGED
@@ -1,9 +1,10 @@
1
1
  import { createContext, useState, useEffect, useCallback, useContext } from 'react';
2
+ import { useQueryClient, useQuery, useMutation } from '@tanstack/react-query';
2
3
  import { MoneriumClient } from '@monerium/sdk';
3
4
  import { jsx } from 'react/jsx-runtime';
4
5
 
5
- var c=createContext(null);var ae=({children:i,clientId:A="f99e629b-6dca-11ee-8aa6-5273f65ed05b",redirectUrl:O="http://localhost:5173",environment:b="sandbox"})=>{let[e,y]=useState(),[t,C]=useState(!1),[l,M]=useState(null),[v,L]=useState(null),[B,g]=useState(!1),[D,p]=useState(!1),[E,h]=useState(!1),[z,k]=useState(!1),[N,s]=useState(null),[T,P]=useState([]),[F,I]=useState([]),[V,R]=useState(!0);useEffect(()=>{let r=new MoneriumClient({environment:b,clientId:A,redirectUrl:O});y(r);},[]),useEffect(()=>((async()=>{if(e)try{C(await e.getAccess());}catch(o){console.error("Failed to get access:",o);}finally{R(!1);}})(),()=>{e&&e.disconnect();}),[e]),useEffect(()=>{(async()=>{if(e&&t)try{g(!0);let[o]=await Promise.all([e.getAuthContext(),w()]),[a,u]=await Promise.all([e.getProfile(o.defaultProfile),e.getTokens()]),f=await e.getOrders();M(a),P(f),I(u);}catch(o){console.error("Error fetching data:",o),s(o);}finally{g(!1);}})();},[e,t]);let S=useCallback(async()=>{try{e&&await e.authorize();}catch(r){console.error("Error during authorization:",r),s(r);}},[e]),w=useCallback(async()=>{if(e&&t)try{k(!0);let r=await e.getBalances();L(r);}catch(r){console.error("Error getting balances:",r),s(r);}finally{k(!1);}},[e,t]),U=useCallback(async(r,o)=>{if(e&&t)try{p(!0);let a;parseInt(r.amount)>15e3&&o&&(a=(await e.uploadSupportingDocument(o)).id);let u={...r,documentId:a},f=await e.placeOrder(u);P(x=>[...x,f]);}catch(a){console.error("Error placing order:",a),s(a);}finally{p(!1);}},[e,t]),q=useCallback(async r=>{if(e&&t&&l)try{return h(!0),await e.linkAddress(l.id,r)}catch(o){console.error("Error linking address:",o),s(o);}finally{h(!1);}},[e,t,l]);return jsx(c.Provider,{value:{authorize:S,isAuthorized:t,profile:l,balances:v,loading:B,loadingPlaceOrder:D,loadingLinkAddress:E,loadingBalances:z,getBalances:w,linkAddress:q,placeOrder:U,orders:T,tokens:F,error:N,loadingAuth:V},children:i})};function ue(){let i=useContext(c);if(i===null)throw new Error("useMonerium must be used within a MoneriumProvider");return i}
6
+ var y=createContext(null);var T=({children:e,clientId:t,redirectUrl:r,redirectUri:o,environment:n="sandbox"})=>{let u=useQueryClient(),[s,i]=useState(),[a,d]=useState(!1),[A,g]=useState(null),[b,z]=useState(!0);useEffect(()=>{let h=new MoneriumClient({environment:n,clientId:t,redirectUri:o||r});i(h);},[]),useEffect(()=>((async()=>{if(s)try{d(await s.getAccess());}catch(p){console.error("Failed to get access:",p);}finally{z(!1);}})(),()=>{s&&s.disconnect();}),[s]);let v=useCallback(async h=>{try{s&&await s.authorize(h);}catch(p){console.error("Error during authorization:",p),g(p);}},[s]),C=async()=>{try{s&&await s.revokeAccess();}catch(h){console.error("Error during revoking access:",h),g(h);}finally{u.clear(),d(!1);}};return jsx(y.Provider,{value:{sdk:s,authorize:v,isAuthorized:a,isLoading:b,error:A,disconnect:async()=>s?.disconnect(),revokeAccess:async()=>C()},children:e})};var c={getAll:["monerium"],getAuthContext:["monerium","auth-context"],getProfile:e=>["monerium","profile",...e?[e]:[]],getProfiles:["monerium","profiles"],getBalances:e=>["monerium","balances",...e?[e]:[]],getTokens:["monerium","tokens"],getOrder:e=>["monerium","order",e],getOrders:e=>["monerium","orders",...e?[e]:[]],placeOrder:["monerium","place-order"],linkAddress:["monerium","link-address"]};function l(){let e=useContext(y);if(e===null)throw new Error("useSdk must be used within a MoneriumProvider");return e?.sdk}function f(){let e=useContext(y);if(e===null)throw new Error("useAuth must be used within a MoneriumProvider");return {isAuthorized:e.isAuthorized,authorize:e.authorize,isLoading:e.isLoading,error:e.error,disconnect:e.disconnect,revokeAccess:e.revokeAccess}}function M({query:e}={}){let{isAuthorized:t}=f(),r=l(),{data:o,...n}=useQuery({...e,queryKey:c.getAuthContext,queryFn:async()=>{if(!r)throw new Error("No SDK instance available");if(!t)throw new Error("User not authorized");return r.getAuthContext()},enabled:!!(r&&t&&(e?.enabled??!0))});return {authContext:o,...n}}function W({profileId:e,query:t}={}){let{isAuthorized:r}=f(),o=l(),{authContext:n}=M(),u=e||n?.defaultProfile,{data:s,...i}=useQuery({...t,queryKey:c.getProfile(u),queryFn:async()=>{if(!o)throw new Error("No SDK instance available");if(!r)throw new Error("User not authorized");if(!u)throw new Error("Profile Id is required");return o.getProfile(u)},enabled:!!(o&&r&&u&&(t?.enabled??!0))});return {profile:s,...i}}function X({query:e}={}){let{isAuthorized:t}=f(),r=l(),{data:o,...n}=useQuery({...e,queryKey:c.getProfiles,queryFn:async()=>{if(!r)throw new Error("No SDK instance available");if(!t)throw new Error("User not authorized");return r.getProfiles()},enabled:!!(r&&t&&(e?.enabled??!0))});return {profiles:o,...n}}function Y({query:e}={}){let t=l(),{isAuthorized:r}=f(),{data:o,...n}=useQuery({...e,queryKey:c.getTokens,queryFn:async()=>{if(!t)throw new Error("No SDK instance available");if(!r)throw new Error("User not authorized");return t.getTokens()},enabled:!!(t&&r&&(e?.enabled??!0))});return {tokens:o,...n}}function Z({profileId:e,query:t}={}){let r=l(),{isAuthorized:o}=f(),{data:n,...u}=useQuery({...t,queryKey:c.getBalances(e),queryFn:async()=>{if(!r)throw new Error("No SDK instance available");if(!o)throw new Error("User not authorized");return r.getBalances(e)},enabled:!!(r&&o&&(t?.enabled??!0))});return {balances:n,...u}}function _({orderId:e,query:t={}}){let r=l(),{isAuthorized:o}=f(),{data:n,...u}=useQuery({...t,queryKey:c.getOrder(e),queryFn:async()=>{if(!r)throw new Error("No SDK instance available");if(!o)throw new Error("User not authorized");if(!e)throw new Error("Order id is required");return r.getOrder(e)},enabled:!!(r&&o&&e&&(t.enabled??!0))});return {order:n,...u}}function $({query:e={},...t}={}){let r=l(),{isAuthorized:o}=f(),{data:n,...u}=useQuery({...e,queryKey:c.getOrders(t),queryFn:async()=>{if(!r)throw new Error("No SDK instance available");if(!o)throw new Error("User not authorized");return r.getOrders(t)},enabled:!!(r&&o&&(e.enabled??!0))});return {orders:n,...u}}function j({supportingDocument:e,mutation:t}={}){let r=l(),{isAuthorized:o}=f(),n=useQueryClient(),{mutateAsync:u,...s}=useMutation({...t,mutationKey:c.placeOrder,mutationFn:async i=>{if(!r)throw new Error("No SDK instance available");if(!o)throw new Error("User not authorized");let a;if(parseInt(i.amount)>15e3){if(!e)throw new Error("Supporting document is required for orders above 15000");a=(await r.uploadSupportingDocument(e)).id;}let d={...i,documentId:a};return r.placeOrder(d)},onSuccess(i,a,d){n.invalidateQueries({queryKey:c.getOrders()}),t?.onSuccess?.(i,a,d);},onError(i,a,d){throw t?.onError?.(i,a,d),i}});return {placeOrder:u,...s}}function ee({profileId:e,mutation:t}){let r=l(),{isAuthorized:o}=f(),n=useQueryClient(),{mutateAsync:u,...s}=useMutation({...t,mutationKey:c.linkAddress,mutationFn:async i=>{if(!r)throw new Error("No SDK instance available");if(!o)throw new Error("User not authorized");return r.linkAddress(e,i)},onSuccess(i,a,d){n.invalidateQueries({queryKey:c.getProfile(e)}),t?.onSuccess?.(i,a,d);},onError(i,a,d){throw t?.onError?.(i,a,d),i}});return {linkAddress:u,...s}}
6
7
 
7
- export { c as MoneriumContext, ae as MoneriumProvider, ue as useMonerium };
8
- //# sourceMappingURL=out.js.map
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9saWIvcHJvdmlkZXIudHN4IiwiLi4vc3JjL2xpYi9jb250ZXh0LnRzeCIsIi4uL3NyYy9saWIvaG9vay50c3giXSwibmFtZXMiOlsidXNlQ2FsbGJhY2siLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsIk1vbmVyaXVtQ2xpZW50IiwiY3JlYXRlQ29udGV4dCIsIk1vbmVyaXVtQ29udGV4dCIsImpzeCIsIk1vbmVyaXVtUHJvdmlkZXIiLCJjaGlsZHJlbiIsImNsaWVudElkIiwicmVkaXJlY3RVcmwiLCJlbnZpcm9ubWVudCIsIm1vbmVyaXVtIiwic2V0TW9uZXJpdW0iLCJpc0F1dGhvcml6ZWQiLCJzZXRJc0F1dGhvcml6ZWQiLCJwcm9maWxlIiwic2V0UHJvZmlsZSIsImJhbGFuY2VzIiwic2V0QmFsYW5jZXMiLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsImxvYWRpbmdQbGFjZU9yZGVyIiwic2V0TG9hZGluZ1BsYWNlT3JkZXIiLCJsb2FkaW5nTGlua0FkZHJlc3MiLCJzZXRMb2FkaW5nTGlua0FkZHJlc3MiLCJsb2FkaW5nQmFsYW5jZXMiLCJzZXRMb2FkaW5nQmFsYW5jZXMiLCJlcnJvciIsInNldEVycm9yIiwib3JkZXJzIiwic2V0T3JkZXJzIiwidG9rZW5zIiwic2V0VG9rZW5zIiwibG9hZGluZ0F1dGgiLCJzZXRMb2FkaW5nQXV0aCIsInNkayIsImF1dGhDdHgiLCJnZXRCYWxhbmNlcyIsInByb2ZpbGVEYXRhIiwidG9rZW5zRGF0YSIsIm9yZGVyc0RhdGEiLCJlcnIiLCJhdXRob3JpemUiLCJwbGFjZU9yZGVyIiwib3JkZXJEZXRhaWxzIiwic3VwcG9ydGluZ0RvY3VtZW50IiwiZG9jdW1lbnRJZCIsIm5ld09yZGVyRGV0YWlscyIsIm5ld09yZGVyIiwicHJldk9yZGVycyIsImxpbmtBZGRyZXNzIiwiYWRkcmVzc0RldGFpbHMiLCJ1c2VDb250ZXh0IiwidXNlTW9uZXJpdW0iLCJjb250ZXh0Il0sIm1hcHBpbmdzIjoiQUFBQSxPQUF3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LEVBQWdCLFNBQWhCLENBQ0MsTUFBTyxDQUNMLFVBQUFzQyxFQUNBLGFBQUE3QixFQUNBLFFBQUFFLEVBQ0EsU0FBQUUsRUFDQSxRQUFBRSxFQUNBLGtCQUFBRSxFQUNBLG1CQUFBRSxFQUNBLGdCQUFBRSxFQUNBLFlBQUFZLEVBQ0EsWUFBQWEsRUFDQSxXQUFBUCxFQUNBLE9BQUFkLEVBQ0EsT0FBQUUsRUFDQSxNQUFBSixFQUNBLFlBQUFNLENBQ0YsRUFFQyxTQUFBMUIsRUFDSCxDQUVKLEVFN01BLE9BQVMsY0FBQTZDLE1BQWtCLFFBSXBCLFNBQVNDLElBQW9DLENBQ2xELElBQU1DLEVBQVVGLEVBQVdoRCxDQUFlLEVBRTFDLEdBQUlrRCxJQUFZLEtBQ2QsTUFBTSxJQUFJLE1BQU0sb0RBQW9ELEVBRXRFLE9BQU9BLENBQ1QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGQywgUmVhY3ROb2RlLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHtcbiAgQmFsYW5jZXMsXG4gIExpbmtBZGRyZXNzLFxuICBNb25lcml1bUNsaWVudCxcbiAgTmV3T3JkZXIsXG4gIE9yZGVyLFxuICBQcm9maWxlLFxuICBUb2tlbixcbn0gZnJvbSAnQG1vbmVyaXVtL3Nkayc7XG5cbmltcG9ydCB7IE1vbmVyaXVtQ29udGV4dCB9IGZyb20gJy4vY29udGV4dCc7XG5cbmludGVyZmFjZSBNb25lcml1bVByb3ZpZGVyUHJvcHMge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBjbGllbnRJZD86IHN0cmluZztcbiAgcmVkaXJlY3RVcmw/OiBzdHJpbmc7XG4gIGVudmlyb25tZW50PzogJ3NhbmRib3gnIHwgJ3Byb2R1Y3Rpb24nO1xufVxuXG5leHBvcnQgY29uc3QgTW9uZXJpdW1Qcm92aWRlcjogRkM8TW9uZXJpdW1Qcm92aWRlclByb3BzPiA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGllbnRJZCA9ICdmOTllNjI5Yi02ZGNhLTExZWUtOGFhNi01MjczZjY1ZWQwNWInLFxuICByZWRpcmVjdFVybCA9ICdodHRwOi8vbG9jYWxob3N0OjUxNzMnLFxuICBlbnZpcm9ubWVudCA9ICdzYW5kYm94Jyxcbn0pID0+IHtcbiAgY29uc3QgW21vbmVyaXVtLCBzZXRNb25lcml1bV0gPSB1c2VTdGF0ZTxNb25lcml1bUNsaWVudD4oKTtcbiAgY29uc3QgW2lzQXV0aG9yaXplZCwgc2V0SXNBdXRob3JpemVkXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW3Byb2ZpbGUsIHNldFByb2ZpbGVdID0gdXNlU3RhdGU8UHJvZmlsZSB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbYmFsYW5jZXMsIHNldEJhbGFuY2VzXSA9IHVzZVN0YXRlPEJhbGFuY2VzW10gfCBudWxsPihudWxsKTtcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbbG9hZGluZ1BsYWNlT3JkZXIsIHNldExvYWRpbmdQbGFjZU9yZGVyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2xvYWRpbmdMaW5rQWRkcmVzcywgc2V0TG9hZGluZ0xpbmtBZGRyZXNzXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2xvYWRpbmdCYWxhbmNlcywgc2V0TG9hZGluZ0JhbGFuY2VzXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZTxFcnJvciB8IHVua25vd24gfCBudWxsPihudWxsKTtcbiAgY29uc3QgW29yZGVycywgc2V0T3JkZXJzXSA9IHVzZVN0YXRlPE9yZGVyW10+KFtdKTtcbiAgY29uc3QgW3Rva2Vucywgc2V0VG9rZW5zXSA9IHVzZVN0YXRlPFRva2VuW10+KFtdKTtcbiAgY29uc3QgW2xvYWRpbmdBdXRoLCBzZXRMb2FkaW5nQXV0aF0gPSB1c2VTdGF0ZSh0cnVlKTtcblxuICAvLyBJbml0aWFsaXplIHRoZSBTREtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBzZGsgPSBuZXcgTW9uZXJpdW1DbGllbnQoe1xuICAgICAgZW52aXJvbm1lbnQ6IGVudmlyb25tZW50LFxuICAgICAgY2xpZW50SWQsXG4gICAgICByZWRpcmVjdFVybCxcbiAgICB9KTtcbiAgICBzZXRNb25lcml1bShzZGspO1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjb25uZWN0ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKG1vbmVyaXVtKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgc2V0SXNBdXRob3JpemVkKGF3YWl0IG1vbmVyaXVtLmdldEFjY2VzcygpKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gZ2V0IGFjY2VzczonLCBlcnJvcik7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgc2V0TG9hZGluZ0F1dGgoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbm5lY3QoKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAobW9uZXJpdW0pIHtcbiAgICAgICAgbW9uZXJpdW0uZGlzY29ubmVjdCgpO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFttb25lcml1bV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZmV0Y2hEYXRhID0gYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKG1vbmVyaXVtICYmIGlzQXV0aG9yaXplZCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgY29uc3QgW2F1dGhDdHhdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgbW9uZXJpdW0uZ2V0QXV0aENvbnRleHQoKSxcbiAgICAgICAgICAgIGdldEJhbGFuY2VzKCksXG4gICAgICAgICAgXSk7XG5cbiAgICAgICAgICBjb25zdCBbcHJvZmlsZURhdGEsIHRva2Vuc0RhdGFdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgbW9uZXJpdW0uZ2V0UHJvZmlsZShhdXRoQ3R4LmRlZmF1bHRQcm9maWxlKSxcbiAgICAgICAgICAgIG1vbmVyaXVtLmdldFRva2VucygpLFxuICAgICAgICAgIF0pO1xuXG4gICAgICAgICAgY29uc3Qgb3JkZXJzRGF0YSA9IGF3YWl0IG1vbmVyaXVtLmdldE9yZGVycygpO1xuXG4gICAgICAgICAgc2V0UHJvZmlsZShwcm9maWxlRGF0YSk7XG4gICAgICAgICAgc2V0T3JkZXJzKG9yZGVyc0RhdGEpO1xuICAgICAgICAgIHNldFRva2Vucyh0b2tlbnNEYXRhKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgZGF0YTonLCBlcnIpO1xuICAgICAgICAgIHNldEVycm9yKGVycik7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZmV0Y2hEYXRhKCk7XG4gIH0sIFttb25lcml1bSwgaXNBdXRob3JpemVkXSk7XG5cbiAgY29uc3QgYXV0aG9yaXplID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAobW9uZXJpdW0pIHtcbiAgICAgICAgYXdhaXQgbW9uZXJpdW0uYXV0aG9yaXplKCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkdXJpbmcgYXV0aG9yaXphdGlvbjonLCBlcnIpO1xuICAgICAgc2V0RXJyb3IoZXJyKTtcbiAgICB9XG4gIH0sIFttb25lcml1bV0pO1xuXG4gIGNvbnN0IGdldEJhbGFuY2VzID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGlmIChtb25lcml1bSAmJiBpc0F1dGhvcml6ZWQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNldExvYWRpbmdCYWxhbmNlcyh0cnVlKTtcbiAgICAgICAgY29uc3QgYmFsYW5jZXMgPSBhd2FpdCBtb25lcml1bS5nZXRCYWxhbmNlcygpO1xuICAgICAgICBzZXRCYWxhbmNlcyhiYWxhbmNlcyk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZ2V0dGluZyBiYWxhbmNlczonLCBlcnIpO1xuICAgICAgICBzZXRFcnJvcihlcnIpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc2V0TG9hZGluZ0JhbGFuY2VzKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFttb25lcml1bSwgaXNBdXRob3JpemVkXSk7XG5cbiAgY29uc3QgcGxhY2VPcmRlciA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChvcmRlckRldGFpbHM6IE5ld09yZGVyLCBzdXBwb3J0aW5nRG9jdW1lbnQ/OiBGaWxlKSA9PiB7XG4gICAgICBpZiAobW9uZXJpdW0gJiYgaXNBdXRob3JpemVkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgc2V0TG9hZGluZ1BsYWNlT3JkZXIodHJ1ZSk7XG5cbiAgICAgICAgICBsZXQgZG9jdW1lbnRJZDtcbiAgICAgICAgICBpZiAocGFyc2VJbnQob3JkZXJEZXRhaWxzLmFtb3VudCkgPiAxNTAwMCAmJiBzdXBwb3J0aW5nRG9jdW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHVwbG9hZGVkRG9jdW1lbnQgPVxuICAgICAgICAgICAgICBhd2FpdCBtb25lcml1bS51cGxvYWRTdXBwb3J0aW5nRG9jdW1lbnQoc3VwcG9ydGluZ0RvY3VtZW50KTtcbiAgICAgICAgICAgIGRvY3VtZW50SWQgPSB1cGxvYWRlZERvY3VtZW50LmlkO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IG5ld09yZGVyRGV0YWlscyA9IHtcbiAgICAgICAgICAgIC4uLm9yZGVyRGV0YWlscyxcbiAgICAgICAgICAgIGRvY3VtZW50SWQ6IGRvY3VtZW50SWQsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNvbnN0IG5ld09yZGVyID0gYXdhaXQgbW9uZXJpdW0ucGxhY2VPcmRlcihuZXdPcmRlckRldGFpbHMpO1xuICAgICAgICAgIHNldE9yZGVycygocHJldk9yZGVycykgPT4gWy4uLnByZXZPcmRlcnMsIG5ld09yZGVyXSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBsYWNpbmcgb3JkZXI6JywgZXJyKTtcbiAgICAgICAgICBzZXRFcnJvcihlcnIpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIHNldExvYWRpbmdQbGFjZU9yZGVyKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW21vbmVyaXVtLCBpc0F1dGhvcml6ZWRdXG4gICk7XG5cbiAgY29uc3QgbGlua0FkZHJlc3MgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoYWRkcmVzc0RldGFpbHM6IExpbmtBZGRyZXNzKSA9PiB7XG4gICAgICBpZiAobW9uZXJpdW0gJiYgaXNBdXRob3JpemVkICYmIHByb2ZpbGUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBzZXRMb2FkaW5nTGlua0FkZHJlc3ModHJ1ZSk7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IG1vbmVyaXVtLmxpbmtBZGRyZXNzKHByb2ZpbGUuaWQsIGFkZHJlc3NEZXRhaWxzKTtcblxuICAgICAgICAgIC8vIFVwZGF0ZSB5b3VyIHN0YXRlIG9yIGRvIHNvbWV0aGluZyB3aXRoIGxpbmtlZEFkZHJlc3NcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbGlua2luZyBhZGRyZXNzOicsIGVycik7XG4gICAgICAgICAgc2V0RXJyb3IoZXJyKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBzZXRMb2FkaW5nTGlua0FkZHJlc3MoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbbW9uZXJpdW0sIGlzQXV0aG9yaXplZCwgcHJvZmlsZV1cbiAgKTtcblxuICAvL1xuXG4gIHJldHVybiAoXG4gICAgPE1vbmVyaXVtQ29udGV4dC5Qcm92aWRlclxuICAgICAgdmFsdWU9e3tcbiAgICAgICAgYXV0aG9yaXplLFxuICAgICAgICBpc0F1dGhvcml6ZWQsXG4gICAgICAgIHByb2ZpbGUsXG4gICAgICAgIGJhbGFuY2VzLFxuICAgICAgICBsb2FkaW5nLFxuICAgICAgICBsb2FkaW5nUGxhY2VPcmRlcixcbiAgICAgICAgbG9hZGluZ0xpbmtBZGRyZXNzLFxuICAgICAgICBsb2FkaW5nQmFsYW5jZXMsXG4gICAgICAgIGdldEJhbGFuY2VzLFxuICAgICAgICBsaW5rQWRkcmVzcyxcbiAgICAgICAgcGxhY2VPcmRlcixcbiAgICAgICAgb3JkZXJzLFxuICAgICAgICB0b2tlbnMsXG4gICAgICAgIGVycm9yLFxuICAgICAgICBsb2FkaW5nQXV0aCxcbiAgICAgIH19XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvTW9uZXJpdW1Db250ZXh0LlByb3ZpZGVyPlxuICApO1xufTtcbiIsImltcG9ydCB7IGNyZWF0ZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7XG4gIEJhbGFuY2VzLFxuICBMaW5rQWRkcmVzcyxcbiAgTmV3T3JkZXIsXG4gIE9yZGVyLFxuICBQcm9maWxlLFxuICBUb2tlbixcbn0gZnJvbSAnQG1vbmVyaXVtL3Nkayc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9uZXJpdW1Db250ZXh0VmFsdWUge1xuICBhdXRob3JpemU6ICgpID0+IFByb21pc2U8dm9pZD47XG4gIGlzQXV0aG9yaXplZDogYm9vbGVhbjtcbiAgcHJvZmlsZTogUHJvZmlsZSB8IG51bGw7XG4gIGJhbGFuY2VzOiBCYWxhbmNlc1tdIHwgbnVsbDtcbiAgbG9hZGluZzogYm9vbGVhbjtcbiAgbG9hZGluZ1BsYWNlT3JkZXI6IGJvb2xlYW47XG4gIGxvYWRpbmdMaW5rQWRkcmVzczogYm9vbGVhbjtcbiAgbG9hZGluZ0JhbGFuY2VzOiBib29sZWFuO1xuICBnZXRCYWxhbmNlczogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgbGlua0FkZHJlc3M6IChhZGRyZXNzRGV0YWlsczogTGlua0FkZHJlc3MpID0+IFByb21pc2U8dW5rbm93bj47XG4gIHBsYWNlT3JkZXI6IChcbiAgICBvcmRlckRldGFpbHM6IE5ld09yZGVyLFxuICAgIHN1cHBvcnRpbmdEb2N1bWVudD86IEZpbGVcbiAgKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBvcmRlcnM6IE9yZGVyW107XG4gIHRva2VuczogVG9rZW5bXTtcbiAgZXJyb3I6IHVua25vd247XG4gIC8qKiBJcyBzdGlsbCBjaGVja2luZyBpZiB0aGVyZSBpcyBhbiBhY3RpdmUgc2Vzc2lvbiAqL1xuICBsb2FkaW5nQXV0aDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IE1vbmVyaXVtQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8TW9uZXJpdW1Db250ZXh0VmFsdWUgfCBudWxsPihudWxsKTtcbiIsImltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IE1vbmVyaXVtQ29udGV4dCwgTW9uZXJpdW1Db250ZXh0VmFsdWUgfSBmcm9tICcuL2NvbnRleHQnO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlTW9uZXJpdW0oKTogTW9uZXJpdW1Db250ZXh0VmFsdWUge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChNb25lcml1bUNvbnRleHQpO1xuXG4gIGlmIChjb250ZXh0ID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1c2VNb25lcml1bSBtdXN0IGJlIHVzZWQgd2l0aGluIGEgTW9uZXJpdW1Qcm92aWRlcicpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuIl19
8
+ export { y as MoneriumContext, T as MoneriumProvider, c as keys, f as useAuth, M as useAuthContext, Z as useBalances, ee as useLinkAddress, _ as useOrder, $ as useOrders, j as usePlaceOrder, W as useProfile, X as useProfiles, Y as useTokens };
9
+ //# sourceMappingURL=index.mjs.map
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9saWIvY29udGV4dC50c3giLCIuLi9zcmMvbGliL3Byb3ZpZGVyLnRzeCIsIi4uL3NyYy9saWIvaG9va3MudHN4Il0sIm5hbWVzIjpbIk1vbmVyaXVtQ29udGV4dCIsImNyZWF0ZUNvbnRleHQiLCJNb25lcml1bVByb3ZpZGVyIiwiY2hpbGRyZW4iLCJjbGllbnRJZCIsInJlZGlyZWN0VXJsIiwicmVkaXJlY3RVcmkiLCJlbnZpcm9ubWVudCIsInF1ZXJ5Q2xpZW50IiwidXNlUXVlcnlDbGllbnQiLCJzZGsiLCJzZXRTZGsiLCJ1c2VTdGF0ZSIsImlzQXV0aG9yaXplZCIsInNldElzQXV0aG9yaXplZCIsImVycm9yIiwic2V0RXJyb3IiLCJsb2FkaW5nQXV0aCIsInNldExvYWRpbmdBdXRoIiwidXNlRWZmZWN0Iiwic2RrSW5zdGFuY2UiLCJNb25lcml1bUNsaWVudCIsImF1dGhvcml6ZSIsInVzZUNhbGxiYWNrIiwicGFyYW1zIiwiZXJyIiwicmV2b2tlQWNjZXNzIiwianN4Iiwia2V5cyIsInByb2ZpbGVJZCIsIm9yZGVySWQiLCJmaWx0ZXIiLCJ1c2VTZGsiLCJjb250ZXh0IiwidXNlQ29udGV4dCIsInVzZUF1dGgiLCJ1c2VBdXRoQ29udGV4dCIsInF1ZXJ5IiwiZGF0YSIsInJlc3QiLCJ1c2VRdWVyeSIsInVzZVByb2ZpbGUiLCJhdXRoQ29udGV4dCIsInByb2ZpbGVJZFRvVXNlIiwidXNlUHJvZmlsZXMiLCJ1c2VUb2tlbnMiLCJ1c2VCYWxhbmNlcyIsInVzZU9yZGVyIiwidXNlT3JkZXJzIiwiZmlsdGVycyIsInVzZVBsYWNlT3JkZXIiLCJzdXBwb3J0aW5nRG9jdW1lbnQiLCJtdXRhdGlvbiIsIm11dGF0ZUFzeW5jIiwidXNlTXV0YXRpb24iLCJib2R5IiwiZG9jdW1lbnRJZCIsIm5ld0JvZHkiLCJ2YXJpYWJsZXMiLCJ2YXJzIiwidXNlTGlua0FkZHJlc3MiXSwibWFwcGluZ3MiOiI7Ozs7O0FBSU8sSUFBTUEsQ0FBa0JDLENBQUFB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LENBQzVCLFFBQVVvQixDQUFBQSxDQUFBQSxDQUFLLFVBQVdDLENBQUFBLENBQVMsQ0FDckMsQ0FBQyxFQUVEdUIsQ0FBVSxFQUFBLFNBQUEsR0FBWWQsQ0FBTW9CLENBQUFBLENBQUFBLENBQVd6QixDQUFPLEVBQ2hELENBQUEsQ0FDQSxPQUFRbEIsQ0FBQUEsQ0FBQUEsQ0FBTzRDLEVBQU0xQixDQUFTLENBQUEsQ0FFNUIsTUFBQW1CLENBQUFBLEVBQVUsT0FBVXJDLEdBQUFBLENBQUFBLENBQU80QyxDQUFNMUIsQ0FBQUEsQ0FBTyxFQUNsQ2xCLENBQ1IsQ0FDRixDQUFDLENBQUEsQ0FDRCxPQUFPLENBQ0wsV0FBQSxDQUFhc0MsQ0FDYixDQUFBLEdBQUdkLENBQ0wsQ0FDRiIsImZpbGUiOiJpbmRleC5tanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBTZGtJbnN0YW5jZSwgVXNlQXV0aFJldHVybiB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgTW9uZXJpdW1Db250ZXh0ID0gY3JlYXRlQ29udGV4dDxcbiAgKFVzZUF1dGhSZXR1cm4gJiBTZGtJbnN0YW5jZSkgfCBudWxsXG4+KG51bGwpO1xuIiwiaW1wb3J0IHsgUmVhY3ROb2RlLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5JztcblxuaW1wb3J0IHsgTW9uZXJpdW1DbGllbnQgfSBmcm9tICdAbW9uZXJpdW0vc2RrJztcblxuaW1wb3J0IHsgTW9uZXJpdW1Db250ZXh0IH0gZnJvbSAnLi9jb250ZXh0JztcbmltcG9ydCB7IEF1dGhvcml6ZVBhcmFtcyB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFBsYWNlIHRoaXMgcHJvdmlkZXIgYXQgdGhlIHJvb3Qgb2YgeW91ciBhcHBsaWNhdGlvbi5cbiAqIEBncm91cCBQcm92aWRlclxuICogQHBhcmFtIHBhcmFtc1xuICogQHBhcmFtIHBhcmFtcy5jaGlsZHJlbiAtIFJlc3Qgb2YgdGhlIGFwcGxpY2F0aW9uLlxuICogQHBhcmFtIHBhcmFtcy5jbGllbnRJZCAtIE1vbmVyaXVtIGF1dGggZmxvdyBjbGllbnQgaWQuXG4gKiBAcGFyYW0gcGFyYW1zLnJlZGlyZWN0VXJpIC0gTW9uZXJpdW0gYXV0aCBmbG93IHJlZGlyZWN0IHVybC5cbiAqIEBwYXJhbSBwYXJhbXMuZW52aXJvbm1lbnQgLSBNb25lcml1bSBlbnZpcm9ubWVudC5cbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBjb25zdCBNb25lcml1bVByb3ZpZGVyID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNsaWVudElkLFxuICByZWRpcmVjdFVybCxcbiAgcmVkaXJlY3RVcmksXG4gIGVudmlyb25tZW50ID0gJ3NhbmRib3gnLFxufToge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBjbGllbnRJZDogc3RyaW5nO1xuICByZWRpcmVjdFVyaTogc3RyaW5nO1xuICAvKiogQGRlcHJlY2F0ZWQgdXNlIHJlZGlyZWN0VXJpICovXG4gIHJlZGlyZWN0VXJsPzogc3RyaW5nO1xuICBlbnZpcm9ubWVudD86ICdzYW5kYm94JyB8ICdwcm9kdWN0aW9uJztcbn0pID0+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIGNvbnN0IFtzZGssIHNldFNka10gPSB1c2VTdGF0ZTxNb25lcml1bUNsaWVudD4oKTtcbiAgY29uc3QgW2lzQXV0aG9yaXplZCwgc2V0SXNBdXRob3JpemVkXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZTxFcnJvciB8IHVua25vd24gfCBudWxsPihudWxsKTtcbiAgY29uc3QgW2xvYWRpbmdBdXRoLCBzZXRMb2FkaW5nQXV0aF0gPSB1c2VTdGF0ZSh0cnVlKTtcblxuICAvLyBJbml0aWFsaXplIHRoZSBTREtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBzZGtJbnN0YW5jZSA9IG5ldyBNb25lcml1bUNsaWVudCh7XG4gICAgICBlbnZpcm9ubWVudDogZW52aXJvbm1lbnQsXG4gICAgICBjbGllbnRJZCxcbiAgICAgIHJlZGlyZWN0VXJpOiByZWRpcmVjdFVyaSB8fCByZWRpcmVjdFVybCxcbiAgICB9KTtcbiAgICBzZXRTZGsoc2RrSW5zdGFuY2UpO1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjb25uZWN0ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKHNkaykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHNldElzQXV0aG9yaXplZChhd2FpdCBzZGsuZ2V0QWNjZXNzKCkpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBnZXQgYWNjZXNzOicsIGVycm9yKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBzZXRMb2FkaW5nQXV0aChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29ubmVjdCgpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChzZGspIHtcbiAgICAgICAgc2RrLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbc2RrXSk7XG5cbiAgY29uc3QgYXV0aG9yaXplID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHBhcmFtcz86IEF1dGhvcml6ZVBhcmFtcykgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHNkaykge1xuICAgICAgICAgIGF3YWl0IHNkay5hdXRob3JpemUocGFyYW1zKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGR1cmluZyBhdXRob3JpemF0aW9uOicsIGVycik7XG4gICAgICAgIHNldEVycm9yKGVycik7XG4gICAgICB9XG4gICAgfSxcbiAgICBbc2RrXVxuICApO1xuXG4gIGNvbnN0IHJldm9rZUFjY2VzcyA9IGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKHNkaykge1xuICAgICAgICBhd2FpdCBzZGsucmV2b2tlQWNjZXNzKCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkdXJpbmcgcmV2b2tpbmcgYWNjZXNzOicsIGVycik7XG4gICAgICBzZXRFcnJvcihlcnIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBxdWVyeUNsaWVudC5jbGVhcigpO1xuICAgICAgc2V0SXNBdXRob3JpemVkKGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8TW9uZXJpdW1Db250ZXh0LlByb3ZpZGVyXG4gICAgICB2YWx1ZT17e1xuICAgICAgICBzZGssXG4gICAgICAgIGF1dGhvcml6ZSxcbiAgICAgICAgaXNBdXRob3JpemVkLFxuICAgICAgICBpc0xvYWRpbmc6IGxvYWRpbmdBdXRoLFxuICAgICAgICBlcnJvcixcbiAgICAgICAgZGlzY29ubmVjdDogYXN5bmMgKCkgPT4gc2RrPy5kaXNjb25uZWN0KCksXG4gICAgICAgIHJldm9rZUFjY2VzczogYXN5bmMgKCkgPT4gcmV2b2tlQWNjZXNzKCksXG4gICAgICB9fVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L01vbmVyaXVtQ29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn07XG4iLCJpbXBvcnQgeyB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlTXV0YXRpb24sIHVzZVF1ZXJ5LCB1c2VRdWVyeUNsaWVudCB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSc7XG5cbmltcG9ydCBNb25lcml1bUNsaWVudCwge1xuICBBdXRoQ29udGV4dCxcbiAgQmFsYW5jZXMsXG4gIExpbmtBZGRyZXNzLFxuICBMaW5rZWRBZGRyZXNzLFxuICBOZXdPcmRlcixcbiAgT3JkZXIsXG4gIE9yZGVyU3RhdGUsXG4gIFByb2ZpbGUsXG4gIFRva2VuLFxufSBmcm9tICdAbW9uZXJpdW0vc2RrJztcblxuaW1wb3J0IHsgTW9uZXJpdW1Db250ZXh0IH0gZnJvbSAnLi9jb250ZXh0JztcbmltcG9ydCB7XG4gIE11dGF0aW9uT3B0aW9ucyxcbiAgTXV0YXRpb25SZXN1bHQsXG4gIFF1ZXJ5T3B0aW9ucyxcbiAgUXVlcnlSZXN1bHQsXG4gIFVzZUF1dGhSZXR1cm4sXG59IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICogUXVlcnkga2V5c1xuICogKi9cbmV4cG9ydCBjb25zdCBrZXlzID0ge1xuICBnZXRBbGw6IFsnbW9uZXJpdW0nXSxcbiAgZ2V0QXV0aENvbnRleHQ6IFsnbW9uZXJpdW0nLCAnYXV0aC1jb250ZXh0J10sXG4gIGdldFByb2ZpbGU6IChwcm9maWxlSWQ6IHN0cmluZykgPT4gW1xuICAgICdtb25lcml1bScsXG4gICAgJ3Byb2ZpbGUnLFxuICAgIC4uLihwcm9maWxlSWQgPyBbcHJvZmlsZUlkXSA6IFtdKSxcbiAgXSxcbiAgZ2V0UHJvZmlsZXM6IFsnbW9uZXJpdW0nLCAncHJvZmlsZXMnXSxcbiAgZ2V0QmFsYW5jZXM6IChwcm9maWxlSWQ/OiBzdHJpbmcpID0+IFtcbiAgICAnbW9uZXJpdW0nLFxuICAgICdiYWxhbmNlcycsXG4gICAgLi4uKHByb2ZpbGVJZCA/IFtwcm9maWxlSWRdIDogW10pLFxuICBdLFxuICBnZXRUb2tlbnM6IFsnbW9uZXJpdW0nLCAndG9rZW5zJ10sXG4gIGdldE9yZGVyOiAob3JkZXJJZDogc3RyaW5nKSA9PiBbJ21vbmVyaXVtJywgJ29yZGVyJywgb3JkZXJJZF0sXG4gIGdldE9yZGVyczogKGZpbHRlcj86IHVua25vd24pID0+IFtcbiAgICAnbW9uZXJpdW0nLFxuICAgICdvcmRlcnMnLFxuICAgIC4uLihmaWx0ZXIgPyBbZmlsdGVyXSA6IFtdKSxcbiAgXSxcbiAgcGxhY2VPcmRlcjogWydtb25lcml1bScsICdwbGFjZS1vcmRlciddLFxuICBsaW5rQWRkcmVzczogWydtb25lcml1bScsICdsaW5rLWFkZHJlc3MnXSxcbn07XG5cbi8qKiBJbnRlcm5hbCBob29rIHRvIHVzZSBTREsgKi9cbmZ1bmN0aW9uIHVzZVNkaygpOiBNb25lcml1bUNsaWVudCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KE1vbmVyaXVtQ29udGV4dCk7XG5cbiAgaWYgKGNvbnRleHQgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VzZVNkayBtdXN0IGJlIHVzZWQgd2l0aGluIGEgTW9uZXJpdW1Qcm92aWRlcicpO1xuICB9XG4gIHJldHVybiBjb250ZXh0Py5zZGs7XG59XG5cbi8qKlxuICogIyBSZWRpcmVjdCB0byB0aGUgTW9uZXJpdW0gYXV0aCBmbG93LlxuICogQGdyb3VwIEhvb2tzXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IHsgYXV0aG9yaXplLCBpc0F1dGhvcml6ZWQsIGlzTG9hZGluZywgZXJyb3IgfSA9IHVzZUF1dGgoKTtcbiAqXG4gKiBhdXRob3JpemUoKTsgLy8gUmVkaXJlY3RzIHRvIHRoZSBNb25lcml1bSBhdXRoIGZsb3cuXG4gKlxuICogLy8gVG8gb3B0LWluIHRvIGF1dG9tYXRlZCB3YWxsZXQgbGlua2luZywgcGFzcyB0aGUgYWRkcmVzcywgc2lnbmF0dXJlIGFuZCBjaGFpbi5cbiAqIGF1dGhvcml6ZSh7IGFkZHJlc3MsIHNpZ25hdHVyZSwgY2hhaW4gfSkuXG4gKiBgYGBcbiAqXG4gKiBAcmV0dXJucyB7VXNlQXV0aFJldHVybn1cbiAqIC0gYGF1dGhvcml6ZWAgIC0gUmVkaXJlY3RzIHRvIHRoZSBNb25lcml1bSBhdXRoIGZsb3cuXG4gKiAtIGBpc0F1dGhvcml6ZWRgIC0gV2hldGhlciB0aGUgdXNlciBpcyBhdXRob3JpemVkLlxuICogLSBgaXNMb2FkaW5nYCAtIFdoZXRoZXIgdGhlIGF1dGggZmxvdyBpcyBsb2FkaW5nLlxuICogLSBgZXJyb3JgIC0gRXJyb3IgbWVzc2FnZSBpZiB0aGUgYXV0aCBmbG93IGZhaWxzLlxuICogLSBgZGlzY29ubmVjdGAgLSBEaXNjb25uZWN0IHRoZSB1c2VyLlxuICogLSBgcmV2b2tlQWNjZXNzYCAtIFJldm9rZSB0aGUgdXNlcidzIGFjY2Vzcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUF1dGgoKTogVXNlQXV0aFJldHVybiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KE1vbmVyaXVtQ29udGV4dCk7XG5cbiAgaWYgKGNvbnRleHQgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VzZUF1dGggbXVzdCBiZSB1c2VkIHdpdGhpbiBhIE1vbmVyaXVtUHJvdmlkZXInKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGlzQXV0aG9yaXplZDogY29udGV4dC5pc0F1dGhvcml6ZWQsXG4gICAgYXV0aG9yaXplOiBjb250ZXh0LmF1dGhvcml6ZSxcbiAgICBpc0xvYWRpbmc6IGNvbnRleHQuaXNMb2FkaW5nLFxuICAgIGVycm9yOiBjb250ZXh0LmVycm9yLFxuICAgIGRpc2Nvbm5lY3Q6IGNvbnRleHQuZGlzY29ubmVjdCxcbiAgICByZXZva2VBY2Nlc3M6IGNvbnRleHQucmV2b2tlQWNjZXNzLFxuICB9O1xufVxuXG4vKipcbiAqICMgR2V0IHRoZSBhdXRoZW50aWNhdGlvbiBjb250ZXh0LlxuICogQGdyb3VwIEhvb2tzXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IFtwYXJhbXNdIE5vIHJlcXVpcmVkIHBhcmFtZXRlcnMuXG4gKiBAcGFyYW0ge1F1ZXJ5T3B0aW9uczxBdXRoQ29udGV4dD59IFtwYXJhbXMucXVlcnldIHtAaW5oZXJpdERvYyBRdWVyeU9wdGlvbnN9XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBjb25zdCB7XG4gKiAgICBhdXRoQ29udGV4dCwgLy8gdXNlUXVlcnkncyBgZGF0YWAgcHJvcGVydHlcbiAqICAgIGlzTG9hZGluZyxcbiAqICAgIGlzRXJyb3IsXG4gKiAgICBlcnJvcixcbiAqICAgIHJlZmV0Y2gsXG4gKiAgICAuLi5tb3JlVXNlUXVlcnlSZXN1bHRzXG4gKiB9ID0gdXNlQXV0aENvbnRleHQoKTtcbiAqIGBgYFxuICpcbiAqIEBzZWVcbiAqIFtBUEkgRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9tb25lcml1bS5kZXYvYXBpLWRvY3Mjb3BlcmF0aW9uL2F1dGgtY29udGV4dClcbiAqXG4gKiBbQXV0aENvbnRleHQgaW50ZXJmYWNlXShodHRwczovL2dpdGh1Yi5jb20vbW9uZXJpdW0vanMtbW9ub3JlcG8vYmxvYi9tYWluL3BhY2thZ2VzL3Nkay9kb2NzL2dlbmVyYXRlZC9pbnRlcmZhY2VzL0F1dGhDb250ZXh0Lm1kKVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQXV0aENvbnRleHQoe1xuICBxdWVyeSxcbn06IHtcbiAgcXVlcnk/OiBRdWVyeU9wdGlvbnM8QXV0aENvbnRleHQ+O1xufSA9IHt9KTogUXVlcnlSZXN1bHQ8J2F1dGhDb250ZXh0JywgQXV0aENvbnRleHQ+IHtcbiAgY29uc3QgeyBpc0F1dGhvcml6ZWQgfSA9IHVzZUF1dGgoKTtcbiAgY29uc3Qgc2RrID0gdXNlU2RrKCk7XG5cbiAgY29uc3QgeyBkYXRhLCAuLi5yZXN0IH0gPSB1c2VRdWVyeSh7XG4gICAgLi4ucXVlcnksXG4gICAgcXVlcnlLZXk6IGtleXMuZ2V0QXV0aENvbnRleHQsXG4gICAgcXVlcnlGbjogYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKCFzZGspIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBTREsgaW5zdGFuY2UgYXZhaWxhYmxlJyk7XG4gICAgICB9XG4gICAgICBpZiAoIWlzQXV0aG9yaXplZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VzZXIgbm90IGF1dGhvcml6ZWQnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzZGsuZ2V0QXV0aENvbnRleHQoKTtcbiAgICB9LFxuICAgIGVuYWJsZWQ6IEJvb2xlYW4oc2RrICYmIGlzQXV0aG9yaXplZCAmJiAocXVlcnk/LmVuYWJsZWQgPz8gdHJ1ZSkpLFxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBhdXRoQ29udGV4dDogZGF0YSxcbiAgICAuLi5yZXN0LFxuICB9O1xufVxuXG4vKipcbiAqICMgR2V0IHNpbmdsZSBwcm9maWxlXG4gKiBJZiBubyBgcHJvZmlsZUlkYCBpcyBwcm92aWRlZCwgdGhlIGRlZmF1bHQgcHJvZmlsZSBpcyB1c2VkLlxuICogQGdyb3VwIEhvb2tzXG4gKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zXG4gKiBAcGFyYW0ge3N0cmluZ30gW3BhcmFtcy5wcm9maWxlSWRdIFRoZSBpZCBvZiB0aGUgcHJvZmlsZS5cbiAqIEBwYXJhbSB7UXVlcnlPcHRpb25zPFByb2ZpbGU+fSBbcGFyYW1zLnF1ZXJ5XSB7QGluaGVyaXREb2MgUXVlcnlPcHRpb25zfVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogY29uc3Qge1xuICogICAgcHJvZmlsZSwgLy8gdXNlUXVlcnkncyBgZGF0YWAgcHJvcGVydHlcbiAqICAgIGlzTG9hZGluZyxcbiAqICAgIGlzRXJyb3IsXG4gKiAgICBlcnJvcixcbiAqICAgIHJlZmV0Y2gsXG4gKiAgICAuLi5tb3JlVXNlUXVlcnlSZXN1bHRzXG4gKiB9ID0gdXNlUHJvZmlsZSgpO1xuICogYGBgXG5cbiAqIEBzZWVcbiAqIFtBUEkgRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9tb25lcml1bS5kZXYvYXBpLWRvY3Mjb3BlcmF0aW9uL3Byb2ZpbGUpXG4gKlxuICogW1Byb2ZpbGUgaW50ZXJmYWNlXShodHRwczovL2dpdGh1Yi5jb20vbW9uZXJpdW0vanMtbW9ub3JlcG8vYmxvYi9tYWluL3BhY2thZ2VzL3Nkay9kb2NzL2dlbmVyYXRlZC9pbnRlcmZhY2VzL1Byb2ZpbGUubWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VQcm9maWxlKHtcbiAgcHJvZmlsZUlkLFxuICBxdWVyeSxcbn06IHtcbiAgcHJvZmlsZUlkPzogc3RyaW5nO1xuICBxdWVyeT86IFF1ZXJ5T3B0aW9uczxQcm9maWxlPjtcbn0gPSB7fSk6IFF1ZXJ5UmVzdWx0PCdwcm9maWxlJywgUHJvZmlsZT4ge1xuICBjb25zdCB7IGlzQXV0aG9yaXplZCB9ID0gdXNlQXV0aCgpO1xuICBjb25zdCBzZGsgPSB1c2VTZGsoKTtcbiAgY29uc3QgeyBhdXRoQ29udGV4dCB9ID0gdXNlQXV0aENvbnRleHQoKTtcblxuICBjb25zdCBwcm9maWxlSWRUb1VzZSA9IHByb2ZpbGVJZCB8fCAoYXV0aENvbnRleHQ/LmRlZmF1bHRQcm9maWxlIGFzIHN0cmluZyk7XG5cbiAgY29uc3QgeyBkYXRhLCAuLi5yZXN0IH0gPSB1c2VRdWVyeSh7XG4gICAgLi4ucXVlcnksXG4gICAgcXVlcnlLZXk6IGtleXMuZ2V0UHJvZmlsZShwcm9maWxlSWRUb1VzZSksXG4gICAgcXVlcnlGbjogYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKCFzZGspIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBTREsgaW5zdGFuY2UgYXZhaWxhYmxlJyk7XG4gICAgICB9XG4gICAgICBpZiAoIWlzQXV0aG9yaXplZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VzZXIgbm90IGF1dGhvcml6ZWQnKTtcbiAgICAgIH1cbiAgICAgIGlmICghcHJvZmlsZUlkVG9Vc2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm9maWxlIElkIGlzIHJlcXVpcmVkJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzZGsuZ2V0UHJvZmlsZShwcm9maWxlSWRUb1VzZSk7XG4gICAgfSxcbiAgICBlbmFibGVkOiBCb29sZWFuKFxuICAgICAgc2RrICYmIGlzQXV0aG9yaXplZCAmJiBwcm9maWxlSWRUb1VzZSAmJiAocXVlcnk/LmVuYWJsZWQgPz8gdHJ1ZSlcbiAgICApLFxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBwcm9maWxlOiBkYXRhLFxuICAgIC4uLnJlc3QsXG4gIH07XG59XG4vKipcbiAqICMgR2V0IHByb2ZpbGVzXG4gKiBAZ3JvdXAgSG9va3NcbiAqIEBwYXJhbSB7T2JqZWN0fSBbcGFyYW1zXSBObyByZXF1aXJlZCBwYXJhbWV0ZXJzLlxuICogQHBhcmFtIHtRdWVyeU9wdGlvbnM8UHJvZmlsZVtdPn0gW3BhcmFtcy5xdWVyeV0ge0Bpbmhlcml0RG9jIFF1ZXJ5T3B0aW9uc31cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IHtcbiAqICAgIHByb2ZpbGVzLCAvLyB1c2VRdWVyeSdzIGBkYXRhYCBwcm9wZXJ0eVxuICogICAgaXNMb2FkaW5nLFxuICogICAgaXNFcnJvcixcbiAqICAgIGVycm9yLFxuICogICAgcmVmZXRjaCxcbiAqICAgIC4uLm1vcmVVc2VRdWVyeVJlc3VsdHNcbiAqIH0gPSB1c2VQcm9maWxlcygpO1xuICogYGBgXG5cbiAqIEBzZWVcbiAqIFtBUEkgRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9tb25lcml1bS5kZXYvYXBpLWRvY3Mjb3BlcmF0aW9uL3Byb2ZpbGVzKVxuICpcbiAqIFtQcm9maWxlIGludGVyZmFjZV0oaHR0cHM6Ly9naXRodWIuY29tL21vbmVyaXVtL2pzLW1vbm9yZXBvL2Jsb2IvbWFpbi9wYWNrYWdlcy9zZGsvZG9jcy9nZW5lcmF0ZWQvaW50ZXJmYWNlcy9Qcm9maWxlLm1kKVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUHJvZmlsZXMoe1xuICBxdWVyeSxcbn06IHtcbiAgcXVlcnk/OiBRdWVyeU9wdGlvbnM8UHJvZmlsZVtdPjtcbn0gPSB7fSk6IFF1ZXJ5UmVzdWx0PCdwcm9maWxlcycsIFByb2ZpbGVbXT4ge1xuICBjb25zdCB7IGlzQXV0aG9yaXplZCB9ID0gdXNlQXV0aCgpO1xuICBjb25zdCBzZGsgPSB1c2VTZGsoKTtcblxuICBjb25zdCB7IGRhdGEsIC4uLnJlc3QgfSA9IHVzZVF1ZXJ5KHtcbiAgICAuLi5xdWVyeSxcbiAgICBxdWVyeUtleToga2V5cy5nZXRQcm9maWxlcyxcbiAgICBxdWVyeUZuOiBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoIXNkaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFNESyBpbnN0YW5jZSBhdmFpbGFibGUnKTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNBdXRob3JpemVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVXNlciBub3QgYXV0aG9yaXplZCcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNkay5nZXRQcm9maWxlcygpO1xuICAgIH0sXG4gICAgZW5hYmxlZDogQm9vbGVhbihzZGsgJiYgaXNBdXRob3JpemVkICYmIChxdWVyeT8uZW5hYmxlZCA/PyB0cnVlKSksXG4gIH0pO1xuICByZXR1cm4ge1xuICAgIHByb2ZpbGVzOiBkYXRhLFxuICAgIC4uLnJlc3QsXG4gIH07XG59XG4vKipcbiAqICMgR2V0IHRva2Vuc1xuICogQGdyb3VwIEhvb2tzXG4gKiBAcGFyYW0ge09iamVjdH0gW3BhcmFtc10gTm8gcmVxdWlyZWQgcGFyYW1ldGVycy5cbiAqIEBwYXJhbSB7UXVlcnlPcHRpb25zPFRva2VuW10+fSBbcGFyYW1zLnF1ZXJ5XSB7QGluaGVyaXREb2MgUXVlcnlPcHRpb25zfVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogY29uc3Qge1xuICogICAgdG9rZW5zLCAvLyB1c2VRdWVyeSdzIGBkYXRhYCBwcm9wZXJ0eVxuICogICAgaXNMb2FkaW5nLFxuICogICAgaXNFcnJvcixcbiAqICAgIGVycm9yLFxuICogICAgcmVmZXRjaCxcbiAqICAgIC4uLm1vcmVVc2VRdWVyeVJlc3VsdHNcbiAqIH0gPSB1c2VUb2tlbnMoKTtcbiAqIGBgYFxuXG4gKiBAc2VlXG4gKiBbQVBJIERvY3VtZW50YXRpb25dKGh0dHBzOi8vbW9uZXJpdW0uZGV2L2FwaS1kb2NzI29wZXJhdGlvbi90b2tlbnMpXG4gKlxuICogW1Rva2VuIGludGVyZmFjZV0oaHR0cHM6Ly9naXRodWIuY29tL21vbmVyaXVtL2pzLW1vbm9yZXBvL2Jsb2IvbWFpbi9wYWNrYWdlcy9zZGsvZG9jcy9nZW5lcmF0ZWQvaW50ZXJmYWNlcy9Ub2tlbi5tZClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVRva2Vucyh7XG4gIHF1ZXJ5LFxufTogeyBxdWVyeT86IFF1ZXJ5T3B0aW9uczxUb2tlbltdPiB9ID0ge30pOiBRdWVyeVJlc3VsdDwndG9rZW5zJywgVG9rZW5bXT4ge1xuICBjb25zdCBzZGsgPSB1c2VTZGsoKTtcbiAgY29uc3QgeyBpc0F1dGhvcml6ZWQgfSA9IHVzZUF1dGgoKTtcbiAgY29uc3QgeyBkYXRhLCAuLi5yZXN0IH0gPSB1c2VRdWVyeSh7XG4gICAgLi4ucXVlcnksXG4gICAgcXVlcnlLZXk6IGtleXMuZ2V0VG9rZW5zLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpID0+IHtcbiAgICAgIGlmICghc2RrKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gU0RLIGluc3RhbmNlIGF2YWlsYWJsZScpO1xuICAgICAgfVxuICAgICAgaWYgKCFpc0F1dGhvcml6ZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVc2VyIG5vdCBhdXRob3JpemVkJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2RrLmdldFRva2VucygpO1xuICAgIH0sXG4gICAgZW5hYmxlZDogQm9vbGVhbihzZGsgJiYgaXNBdXRob3JpemVkICYmIChxdWVyeT8uZW5hYmxlZCA/PyB0cnVlKSksXG4gIH0pO1xuICByZXR1cm4ge1xuICAgIHRva2VuczogZGF0YSxcbiAgICAuLi5yZXN0LFxuICB9O1xufVxuXG4vKipcbiAqICMgR2V0IGJhbGFuY2VzXG4gKiBAZ3JvdXAgSG9va3NcbiAqIEBwYXJhbSB7T2JqZWN0fSBbcGFyYW1zXSBObyByZXF1aXJlZCBwYXJhbWV0ZXJzLlxuICogQHBhcmFtIHtRdWVyeU9wdGlvbnM8QmFsYW5jZXNbXT59IFtwYXJhbXMucHJvZmlsZUlkXSBGZXRjaCBiYWxhbmNlcyBmb3IgYSBzcGVjaWZpYyBwcm9maWxlLlxuICogQHBhcmFtIHtRdWVyeU9wdGlvbnM8QmFsYW5jZXNbXT59IFtwYXJhbXMucXVlcnldIHtAaW5oZXJpdERvYyBRdWVyeU9wdGlvbnN9XG5cbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogY29uc3Qge1xuICogICAgYmFsYW5jZXMsIC8vIHVzZVF1ZXJ5J3MgYGRhdGFgIHByb3BlcnR5XG4gKiAgICBpc0xvYWRpbmcsXG4gKiAgICBpc0Vycm9yLFxuICogICAgZXJyb3IsXG4gKiAgICByZWZldGNoLFxuICogICAgLi4ubW9yZVVzZVF1ZXJ5UmVzdWx0c1xuICogfSA9IHVzZUJhbGFuY2VzKCk7XG4gKiBgYGBcbiAqIEBzZWVcbiAqIFtBUEkgRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9tb25lcml1bS5kZXYvYXBpLWRvY3Mjb3BlcmF0aW9uL3Byb2ZpbGUtYmFsYW5jZXMpXG4gKlxuICogW0JhbGFuY2VzIGludGVyZmFjZV0oaHR0cHM6Ly9naXRodWIuY29tL21vbmVyaXVtL2pzLW1vbm9yZXBvL2Jsb2IvbWFpbi9wYWNrYWdlcy9zZGsvZG9jcy9nZW5lcmF0ZWQvaW50ZXJmYWNlcy9CYWxhbmNlcy5tZClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUJhbGFuY2VzKHtcbiAgcHJvZmlsZUlkLFxuICBxdWVyeSxcbn06IHtcbiAgcHJvZmlsZUlkPzogc3RyaW5nO1xuICBxdWVyeT86IFF1ZXJ5T3B0aW9uczxCYWxhbmNlc1tdPjtcbn0gPSB7fSk6IFF1ZXJ5UmVzdWx0PCdiYWxhbmNlcycsIEJhbGFuY2VzW10+IHtcbiAgY29uc3Qgc2RrID0gdXNlU2RrKCk7XG4gIGNvbnN0IHsgaXNBdXRob3JpemVkIH0gPSB1c2VBdXRoKCk7XG5cbiAgY29uc3QgeyBkYXRhLCAuLi5yZXN0IH0gPSB1c2VRdWVyeSh7XG4gICAgLi4ucXVlcnksXG4gICAgcXVlcnlLZXk6IGtleXMuZ2V0QmFsYW5jZXMocHJvZmlsZUlkKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoIXNkaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFNESyBpbnN0YW5jZSBhdmFpbGFibGUnKTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNBdXRob3JpemVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVXNlciBub3QgYXV0aG9yaXplZCcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNkay5nZXRCYWxhbmNlcyhwcm9maWxlSWQpO1xuICAgIH0sXG4gICAgZW5hYmxlZDogQm9vbGVhbihzZGsgJiYgaXNBdXRob3JpemVkICYmIChxdWVyeT8uZW5hYmxlZCA/PyB0cnVlKSksXG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGJhbGFuY2VzOiBkYXRhLFxuICAgIC4uLnJlc3QsXG4gIH07XG59XG5cbi8qKlxuICogIyBHZXQgc2luZ2xlIG9yZGVyXG4gKiBAZ3JvdXAgSG9va3NcbiAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXNcbiAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXMub3JkZXJJZCBUaGUgaWQgb2YgdGhlIG9yZGVyLlxuICogQHBhcmFtIHtRdWVyeU9wdGlvbnM8T3JkZXI+fSBbcGFyYW1zLnF1ZXJ5XSB7QGluaGVyaXREb2MgUXVlcnlPcHRpb25zfVxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBjb25zdCB7XG4gKiAgICBvcmRlciwgLy8gdXNlUXVlcnkncyBgZGF0YWAgcHJvcGVydHlcbiAqICAgIGlzTG9hZGluZyxcbiAqICAgIGlzRXJyb3IsXG4gKiAgICBlcnJvcixcbiAqICAgIHJlZmV0Y2gsXG4gKiAgICAuLi5tb3JlVXNlUXVlcnlSZXN1bHRzXG4gKiB9ID0gdXNlT3JkZXIoKTtcbiAqIGBgYFxuICogQHNlZVxuICogW0FQSSBEb2N1bWVudGF0aW9uXShodHRwczovL21vbmVyaXVtLmRldi9hcGktZG9jcyNvcGVyYXRpb24vb3JkZXIpXG4gKlxuICogW09yZGVyIGludGVyZmFjZV0oaHR0cHM6Ly9naXRodWIuY29tL21vbmVyaXVtL2pzLW1vbm9yZXBvL2Jsb2IvbWFpbi9wYWNrYWdlcy9zZGsvZG9jcy9nZW5lcmF0ZWQvaW50ZXJmYWNlcy9PcmRlci5tZClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZU9yZGVyKHtcbiAgb3JkZXJJZCxcbiAgcXVlcnkgPSB7fSxcbn06IHtcbiAgb3JkZXJJZDogc3RyaW5nO1xuICBxdWVyeT86IFF1ZXJ5T3B0aW9uczxPcmRlcj47XG59KTogUXVlcnlSZXN1bHQ8J29yZGVyJywgT3JkZXI+IHtcbiAgY29uc3Qgc2RrID0gdXNlU2RrKCk7XG4gIGNvbnN0IHsgaXNBdXRob3JpemVkIH0gPSB1c2VBdXRoKCk7XG4gIGNvbnN0IHsgZGF0YSwgLi4ucmVzdCB9ID0gdXNlUXVlcnkoe1xuICAgIC4uLnF1ZXJ5LFxuICAgIHF1ZXJ5S2V5OiBrZXlzLmdldE9yZGVyKG9yZGVySWQpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpID0+IHtcbiAgICAgIGlmICghc2RrKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gU0RLIGluc3RhbmNlIGF2YWlsYWJsZScpO1xuICAgICAgfVxuICAgICAgaWYgKCFpc0F1dGhvcml6ZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVc2VyIG5vdCBhdXRob3JpemVkJyk7XG4gICAgICB9XG4gICAgICBpZiAoIW9yZGVySWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdPcmRlciBpZCBpcyByZXF1aXJlZCcpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc2RrLmdldE9yZGVyKG9yZGVySWQpO1xuICAgIH0sXG4gICAgZW5hYmxlZDogQm9vbGVhbihzZGsgJiYgaXNBdXRob3JpemVkICYmIG9yZGVySWQgJiYgKHF1ZXJ5LmVuYWJsZWQgPz8gdHJ1ZSkpLFxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBvcmRlcjogZGF0YSxcbiAgICAuLi5yZXN0LFxuICB9O1xufVxuXG4vKipcbiAqICMgR2V0IG9yZGVyc1xuICogQGdyb3VwIEhvb2tzXG4gKiBAcGFyYW0ge09iamVjdH0gW3BhcmFtc10gTm8gcmVxdWlyZWQgcGFyYW1ldGVycy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcGFyYW1zLmFkZHJlc3NdIEZpbHRlciBiYXNlZCBvbiB0aGUgYmxvY2tjaGFpbiBhZGRyZXNzIGFzc29jaWF0ZWQgd2l0aCB0aGUgb3JkZXIuXG4gKiBAcGFyYW0ge09iamVjdH0gW3BhcmFtcy5tZW1vXSBGaWx0ZXIgYnkgdGhlIHBheW1lbnQgbWVtby9yZWZlcmVuY2UuLlxuICogQHBhcmFtIHtPYmplY3R9IFtwYXJhbXMucHJvZmlsZV0gRmlsdGVyIGJhc2VkIG9uIHRoZSBwcm9maWxlIElEIGFzc29jaWF0ZWQgd2l0aCB0aGUgb3JkZXIuXG4gKiBAcGFyYW0ge09iamVjdH0gW3BhcmFtcy5zdGF0ZV0gRmlsdGVyIGJhc2VkIG9uIHRoZSBzdGF0ZSBvZiB0aGUgb3JkZXIuXG4gKiBAcGFyYW0ge09iamVjdH0gW3BhcmFtcy50eEhhc2hdIEZpbHRlciBiYXNlZCBvbiB0aGUgYmxvY2tjaGFpbiB0cmFuc2FjdGlvbiBoYXNoLlxuICogQHBhcmFtIHtRdWVyeU9wdGlvbnM8T3JkZXJbXT59IFtwYXJhbXMucXVlcnldIHtAaW5oZXJpdERvYyBRdWVyeU9wdGlvbnN9XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBjb25zdCB7XG4gKiAgICBvcmRlcnMsIC8vIHVzZVF1ZXJ5J3MgYGRhdGFgIHByb3BlcnR5XG4gKiAgICBpc0xvYWRpbmcsXG4gKiAgICBpc0Vycm9yLFxuICogICAgZXJyb3IsXG4gKiAgICByZWZldGNoLFxuICogICAgLi4ubW9yZVVzZVF1ZXJ5UmVzdWx0c1xuICogfSA9IHVzZU9yZGVycygpO1xuICogYGBgXG4gKiBAc2VlXG4gKiBbQVBJIERvY3VtZW50YXRpb25dKGh0dHBzOi8vbW9uZXJpdW0uZGV2L2FwaS1kb2NzI29wZXJhdGlvbi9vcmRlcnMpXG4gKlxuICogW09yZGVyIGludGVyZmFjZV0oaHR0cHM6Ly9naXRodWIuY29tL21vbmVyaXVtL2pzLW1vbm9yZXBvL2Jsb2IvbWFpbi9wYWNrYWdlcy9zZGsvZG9jcy9nZW5lcmF0ZWQvaW50ZXJmYWNlcy9PcmRlci5tZClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZU9yZGVycyh7XG4gIHF1ZXJ5ID0ge30sXG4gIC4uLmZpbHRlcnNcbn06IHtcbiAgcXVlcnk/OiBRdWVyeU9wdGlvbnM8T3JkZXJbXT47XG4gIGFkZHJlc3M/OiBzdHJpbmc7XG4gIHR4SGFzaD86IHN0cmluZztcbiAgcHJvZmlsZT86IHN0cmluZztcbiAgbWVtbz86IHN0cmluZztcbiAgc3RhdGU/OiBPcmRlclN0YXRlO1xufSA9IHt9KTogUXVlcnlSZXN1bHQ8J29yZGVycycsIE9yZGVyW10+IHtcbiAgY29uc3Qgc2RrID0gdXNlU2RrKCk7XG4gIGNvbnN0IHsgaXNBdXRob3JpemVkIH0gPSB1c2VBdXRoKCk7XG4gIGNvbnN0IHsgZGF0YSwgLi4ucmVzdCB9ID0gdXNlUXVlcnkoe1xuICAgIC4uLnF1ZXJ5LFxuICAgIHF1ZXJ5S2V5OiBrZXlzLmdldE9yZGVycyhmaWx0ZXJzKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoIXNkaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFNESyBpbnN0YW5jZSBhdmFpbGFibGUnKTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNBdXRob3JpemVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVXNlciBub3QgYXV0aG9yaXplZCcpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc2RrLmdldE9yZGVycyhmaWx0ZXJzKTtcbiAgICB9LFxuICAgIGVuYWJsZWQ6IEJvb2xlYW4oc2RrICYmIGlzQXV0aG9yaXplZCAmJiAocXVlcnkuZW5hYmxlZCA/PyB0cnVlKSksXG4gIH0pO1xuICByZXR1cm4ge1xuICAgIG9yZGVyczogZGF0YSxcbiAgICAuLi5yZXN0LFxuICB9O1xufVxuXG4vKipcbiAqICMgUGxhY2UgYW4gb3JkZXIuXG4gKiBXaGVuIHRoZSBvcmRlciBoYXMgYmVlbiBwbGFjZWQsIHRoZSBvcmRlcnMgcXVlcnkgd2lsbCBiZSBpbnZhbGlkYXRlZCBhbmQgcmUtZmV0Y2hlZC5cbiAqXG4gKiBJZiB0aGUgb3JkZXIgYW1vdW50IGlzIGFib3ZlIDE1MDAwLCBhIHN1cHBvcnRpbmcgZG9jdW1lbnQgaXMgcmVxdWlyZWQuXG4gKiBAZ3JvdXAgSG9va3NcbiAqIEBwYXJhbSBwYXJhbVxuICogQHBhcmFtIHtGaWxlfSBwYXJhbS5zdXBwb3J0aW5nRG9jdW1lbnQgU3VwcG9ydGluZyBkb2N1bWVudCBmaWxlLlxuICogQHBhcmFtIHtPYmplY3R9IHBhcmFtLm11dGF0aW9uIHtAaW5oZXJpdERvYyBNdXRhdGlvbk9wdGlvbnN9XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBjb25zdCB7XG4gKiAgICBwbGFjZU9yZGVyLCAvLyB1c2VNdXRhdGlvbidzIGBtdXRhdGVBc3luY2AgcHJvcGVydHlcbiAqICAgIGlzUGVuZGluZyxcbiAqICAgIGlzRXJyb3IsXG4gKiAgICBlcnJvcixcbiAqICAgIHN0YXR1cyxcbiAqICAgIC4uLm1vcmVVc2VNdXRhdGlvblJlc3VsdHNcbiAqIH0gPSB1c2VQbGFjZU9yZGVyKCk7XG4gKiBgYGBcbiAqIEBzZWVcbiAqIFtBUEkgRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9tb25lcml1bS5kZXYvYXBpLWRvY3Mjb3BlcmF0aW9uL3Bvc3Qtb3JkZXJzKVxuICpcbiAqIFtOZXdPcmRlciB0eXBlXShodHRwczovL2dpdGh1Yi5jb20vbW9uZXJpdW0vanMtbW9ub3JlcG8vYmxvYi9tYWluL3BhY2thZ2VzL3Nkay9kb2NzL2dlbmVyYXRlZC90eXBlLWFsaWFzZXMvTmV3T3JkZXIubWQpXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVBsYWNlT3JkZXIoe1xuICBzdXBwb3J0aW5nRG9jdW1lbnQsXG4gIG11dGF0aW9uLFxufToge1xuICBzdXBwb3J0aW5nRG9jdW1lbnQ/OiBGaWxlO1xuICBtdXRhdGlvbj86IE11dGF0aW9uT3B0aW9uczxPcmRlciwgRXJyb3IsIE5ld09yZGVyPjtcbn0gPSB7fSk6IE11dGF0aW9uUmVzdWx0PCdwbGFjZU9yZGVyJywgT3JkZXIsIEVycm9yLCBOZXdPcmRlcj4ge1xuICBjb25zdCBzZGsgPSB1c2VTZGsoKTtcbiAgY29uc3QgeyBpc0F1dGhvcml6ZWQgfSA9IHVzZUF1dGgoKTtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIGNvbnN0IHsgbXV0YXRlQXN5bmMsIC4uLnJlc3QgfSA9IHVzZU11dGF0aW9uKHtcbiAgICAuLi5tdXRhdGlvbixcbiAgICBtdXRhdGlvbktleToga2V5cy5wbGFjZU9yZGVyLFxuICAgIG11dGF0aW9uRm46IGFzeW5jIChib2R5OiBOZXdPcmRlcikgPT4ge1xuICAgICAgaWYgKCFzZGspIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBTREsgaW5zdGFuY2UgYXZhaWxhYmxlJyk7XG4gICAgICB9XG4gICAgICBpZiAoIWlzQXV0aG9yaXplZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VzZXIgbm90IGF1dGhvcml6ZWQnKTtcbiAgICAgIH1cbiAgICAgIGxldCBkb2N1bWVudElkO1xuICAgICAgaWYgKHBhcnNlSW50KGJvZHkuYW1vdW50KSA+IDE1MDAwKSB7XG4gICAgICAgIGlmICghc3VwcG9ydGluZ0RvY3VtZW50KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ1N1cHBvcnRpbmcgZG9jdW1lbnQgaXMgcmVxdWlyZWQgZm9yIG9yZGVycyBhYm92ZSAxNTAwMCdcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVwbG9hZGVkRG9jdW1lbnQgPVxuICAgICAgICAgIGF3YWl0IHNkay51cGxvYWRTdXBwb3J0aW5nRG9jdW1lbnQoc3VwcG9ydGluZ0RvY3VtZW50KTtcbiAgICAgICAgZG9jdW1lbnRJZCA9IHVwbG9hZGVkRG9jdW1lbnQuaWQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld0JvZHkgPSB7XG4gICAgICAgIC4uLmJvZHksXG4gICAgICAgIGRvY3VtZW50SWQ6IGRvY3VtZW50SWQsXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gc2RrLnBsYWNlT3JkZXIobmV3Qm9keSk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3MoZGF0YSwgdmFyaWFibGVzLCBjb250ZXh0KSB7XG4gICAgICAvLyBSZWZldGNoIGFsbCBvcmRlcnMgb24gc3VjY2Vzcy5cbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHtcbiAgICAgICAgcXVlcnlLZXk6IGtleXMuZ2V0T3JkZXJzKCksXG4gICAgICB9KTtcbiAgICAgIC8vIEFsbG93IHRoZSBjYWxsZXIgdG8gYWRkIGN1c3RvbSBsb2dpYyBvbiBzdWNjZXNzLlxuICAgICAgbXV0YXRpb24/Lm9uU3VjY2Vzcz8uKGRhdGEsIHZhcmlhYmxlcywgY29udGV4dCk7XG4gICAgfSxcbiAgICBvbkVycm9yKGVycm9yLCB2YXJzLCBjb250ZXh0KSB7XG4gICAgICAvLyBBbGxvdyB0aGUgY2FsbGVyIHRvIGFkZCBjdXN0b20gbG9naWMgb24gZXJyb3IuXG4gICAgICBtdXRhdGlvbj8ub25FcnJvcj8uKGVycm9yLCB2YXJzLCBjb250ZXh0KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0sXG4gIH0pO1xuICByZXR1cm4ge1xuICAgIHBsYWNlT3JkZXI6IG11dGF0ZUFzeW5jLFxuICAgIC4uLnJlc3QsXG4gIH07XG59XG4vKipcbiAqICMgQWRkIGFkZHJlc3MgdG8gcHJvZmlsZS5cbiAqIFdoZW4gdGhlIGFkZHJlc3MgaGFzIGJlZW4gbGlua2VkLCB0aGUgcmVsZXZhbnQgcHJvZmlsZSBxdWVyeSB3aWxsIGJlIGludmFsaWRhdGVkIGFuZCByZS1mZXRjaGVkLlxuICpcbiAqIEBncm91cCBIb29rc1xuICogQHBhcmFtIHBhcmFtXG4gKiBAcGFyYW0ge0ZpbGV9IHBhcmFtLnByb2ZpbGVJZCBXaGljaCBwcm9maWxlIHRvIGxpbmsgdGhlIGFkZHJlc3MuXG4gKiBAcGFyYW0ge09iamVjdH0gcGFyYW0ubXV0YXRpb24ge0Bpbmhlcml0RG9jIE11dGF0aW9uT3B0aW9uc31cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IHtcbiAqICAgIGxpbmtBZGRyZXNzLCAvLyB1c2VNdXRhdGlvbidzIGBtdXRhdGVBc3luY2AgcHJvcGVydHlcbiAqICAgIGlzUGVuZGluZyxcbiAqICAgIGlzRXJyb3IsXG4gKiAgICBlcnJvcixcbiAqICAgIHN0YXR1cyxcbiAqICAgIC4uLm1vcmVVc2VNdXRhdGlvblJlc3VsdHNcbiAqIH0gPSB1c2VMaW5rQWRkcmVzcygpO1xuICogYGBgXG4gKiBAc2VlXG4gKiBbQVBJIERvY3VtZW50YXRpb25dKGh0dHBzOi8vbW9uZXJpdW0uZGV2L2FwaS1kb2NzI29wZXJhdGlvbi9wcm9maWxlLWFkZHJlc3NlcylcbiAqXG4gKiBbTGlua0FkZHJlc3MgaW50ZXJmYWNlXShodHRwczovL2dpdGh1Yi5jb20vbW9uZXJpdW0vanMtbW9ub3JlcG8vYmxvYi9tYWluL3BhY2thZ2VzL3Nkay9kb2NzL2dlbmVyYXRlZC9pbnRlcmZhY2VzL0xpbmtBZGRyZXNzLm1kKVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlTGlua0FkZHJlc3Moe1xuICBwcm9maWxlSWQsXG4gIG11dGF0aW9uLFxufToge1xuICBwcm9maWxlSWQ6IHN0cmluZztcbiAgbXV0YXRpb24/OiBNdXRhdGlvbk9wdGlvbnM8TGlua2VkQWRkcmVzcywgRXJyb3IsIExpbmtBZGRyZXNzPjtcbn0pOiBNdXRhdGlvblJlc3VsdDwnbGlua0FkZHJlc3MnLCBMaW5rZWRBZGRyZXNzLCBFcnJvciwgTGlua0FkZHJlc3M+IHtcbiAgY29uc3Qgc2RrID0gdXNlU2RrKCk7XG4gIGNvbnN0IHsgaXNBdXRob3JpemVkIH0gPSB1c2VBdXRoKCk7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICBjb25zdCB7IG11dGF0ZUFzeW5jLCAuLi5yZXN0IH0gPSB1c2VNdXRhdGlvbih7XG4gICAgLi4ubXV0YXRpb24sXG4gICAgbXV0YXRpb25LZXk6IGtleXMubGlua0FkZHJlc3MsXG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGJvZHk6IExpbmtBZGRyZXNzKSA9PiB7XG4gICAgICBpZiAoIXNkaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFNESyBpbnN0YW5jZSBhdmFpbGFibGUnKTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNBdXRob3JpemVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVXNlciBub3QgYXV0aG9yaXplZCcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNkay5saW5rQWRkcmVzcyhwcm9maWxlSWQsIGJvZHkpO1xuICAgIH0sXG4gICAgb25TdWNjZXNzKGRhdGEsIHZhcmlhYmxlcywgY29udGV4dCkge1xuICAgICAgLy8gUmVmZXRjaCBhbGwgb3JkZXJzIG9uIHN1Y2Nlc3MuXG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7XG4gICAgICAgIHF1ZXJ5S2V5OiBrZXlzLmdldFByb2ZpbGUocHJvZmlsZUlkKSxcbiAgICAgIH0pO1xuICAgICAgLy8gQWxsb3cgdGhlIGNhbGxlciB0byBhZGQgY3VzdG9tIGxvZ2ljIG9uIHN1Y2Nlc3MuXG4gICAgICBtdXRhdGlvbj8ub25TdWNjZXNzPy4oZGF0YSwgdmFyaWFibGVzLCBjb250ZXh0KTtcbiAgICB9LFxuICAgIG9uRXJyb3IoZXJyb3IsIHZhcnMsIGNvbnRleHQpIHtcbiAgICAgIC8vIEFsbG93IHRoZSBjYWxsZXIgdG8gYWRkIGN1c3RvbSBsb2dpYyBvbiBlcnJvci5cbiAgICAgIG11dGF0aW9uPy5vbkVycm9yPy4oZXJyb3IsIHZhcnMsIGNvbnRleHQpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSxcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgbGlua0FkZHJlc3M6IG11dGF0ZUFzeW5jLFxuICAgIC4uLnJlc3QsXG4gIH07XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@monerium/sdk-react-provider",
3
- "version": "0.1.2",
3
+ "version": "0.3.0",
4
4
  "private": false,
5
5
  "description": "React provider for the Monerium SDK.",
6
6
  "repository": {
@@ -27,24 +27,29 @@
27
27
  "dist/index.d.ts"
28
28
  ],
29
29
  "dependencies": {
30
- "@monerium/sdk": "2.13.0"
30
+ "@monerium/sdk": "latest"
31
31
  },
32
32
  "peerDependencies": {
33
+ "@tanstack/react-query": ">=5.0.0",
33
34
  "@types/react": "^18.2.61",
34
- "react": "^18.2.0",
35
- "react-dom": "^18.2.0"
35
+ "react": ">=18.2.0",
36
+ "react-dom": ">=18.2.0"
36
37
  },
37
38
  "devDependencies": {
38
39
  "@testing-library/dom": "^10.1.0",
39
40
  "@testing-library/jest-dom": "^6.4.6",
40
- "@testing-library/react": "^16.0.0"
41
+ "@testing-library/react": "^16.0.0",
42
+ "undici": "^6.19.4"
41
43
  },
42
44
  "scripts": {
43
- "dev": "tsup --watch",
44
45
  "build": "tsup",
46
+ "dev": "tsup --watch --onSuccess 'pnpm type-map & pnpm run docs'",
47
+ "docs": "typedoc",
48
+ "docs:watch": "typedoc --watch",
45
49
  "lint": "eslint . --fix",
46
50
  "pub:pre": "pnpm publish --no-git-checks --dry-run",
47
51
  "test": "jest",
48
- "test:watch": "jest --watch"
52
+ "test:watch": "jest --watch",
53
+ "type-map": "tsc --emitDeclarationOnly --declaration"
49
54
  }
50
55
  }