@effect-app/vue 2.77.5 → 2.77.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/makeClient.d.ts +223 -152
- package/dist/makeClient.d.ts.map +1 -1
- package/dist/makeClient.js +254 -255
- package/package.json +1 -1
- package/src/makeClient.ts +684 -620
package/dist/makeClient.js
CHANGED
|
@@ -74,270 +74,272 @@ export const useMutationInt = () => {
|
|
|
74
74
|
const _useMutation = useMakeMutation();
|
|
75
75
|
return (self, options) => Object.assign(mapHandler(_useMutation(self, options), Effect.withSpan(`mutation ${self.id}`, { captureStackTrace: false })), { id: self.id });
|
|
76
76
|
};
|
|
77
|
+
export class LegacyMutationImpl {
|
|
78
|
+
getRuntime;
|
|
79
|
+
toast;
|
|
80
|
+
intl;
|
|
81
|
+
constructor(getRuntime, toast, intl) {
|
|
82
|
+
this.getRuntime = getRuntime;
|
|
83
|
+
this.toast = toast;
|
|
84
|
+
this.intl = intl;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Effect results are converted to Exit, so errors are ignored by default.
|
|
88
|
+
* you should use the result ref to render errors!
|
|
89
|
+
* @deprecated use `Command.fn` and friends instead
|
|
90
|
+
*/
|
|
91
|
+
useSafeMutation = (self, options) => {
|
|
92
|
+
const unsafe = _useMutation(self, options);
|
|
93
|
+
const mh = options?.mapHandler ?? identity;
|
|
94
|
+
const [a, b] = asResult(mapHandler(mapHandler(unsafe, mh), Effect.tapDefect(reportRuntimeError)));
|
|
95
|
+
return [
|
|
96
|
+
a,
|
|
97
|
+
mapHandler(b, Effect.withSpan(`mutation ${self.id}`, { captureStackTrace: false }))
|
|
98
|
+
];
|
|
99
|
+
};
|
|
100
|
+
/** handles errors as toasts and reports defects
|
|
101
|
+
* @deprecated use `Command.fn` and friends instead
|
|
102
|
+
*/
|
|
103
|
+
useHandleRequestWithToast = () => {
|
|
104
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
105
|
+
const self = this;
|
|
106
|
+
return handleRequestWithToast;
|
|
107
|
+
/**
|
|
108
|
+
* Pass a function that returns a Promise.
|
|
109
|
+
* Returns an execution function which reports errors as Toast.
|
|
110
|
+
*/
|
|
111
|
+
function handleRequestWithToast(f, id, action, options = {}) {
|
|
112
|
+
const actionMessage = self.intl.formatMessage({ id: `action.${action}`, defaultMessage: action });
|
|
113
|
+
const defaultWarnMessage = self.intl.formatMessage({ id: "handle.with_warnings" }, { action: actionMessage });
|
|
114
|
+
const defaultSuccessMessage = self.intl.formatMessage({ id: "handle.success" }, { action: actionMessage });
|
|
115
|
+
const defaultErrorMessage = self.intl.formatMessage({ id: "handle.with_errors" }, { action: actionMessage });
|
|
116
|
+
return handleRequest(f, id, action, {
|
|
117
|
+
onSuccess: Effect.fnUntraced(function* (a, i) {
|
|
118
|
+
const message = options.successMessage ? yield* options.successMessage(a, i) : defaultSuccessMessage
|
|
119
|
+
+ (S.is(OperationSuccess)(a) && a.message
|
|
120
|
+
? "\n" + a.message
|
|
121
|
+
: "");
|
|
122
|
+
if (message) {
|
|
123
|
+
yield* self.toast.success(message);
|
|
124
|
+
}
|
|
125
|
+
}),
|
|
126
|
+
onFail: Effect.fnUntraced(function* (e, i) {
|
|
127
|
+
if (!options.failMessage && e._tag === "OperationFailure") {
|
|
128
|
+
yield* self.toast.warning(defaultWarnMessage + e.message
|
|
129
|
+
? "\n" + e.message
|
|
130
|
+
: "");
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
const message = options.failMessage
|
|
134
|
+
? yield* options.failMessage(e, i)
|
|
135
|
+
: `${defaultErrorMessage}:\n` + renderError(e);
|
|
136
|
+
if (message) {
|
|
137
|
+
yield* self.toast.error(message);
|
|
138
|
+
}
|
|
139
|
+
}),
|
|
140
|
+
onDefect: Effect.fnUntraced(function* (cause, i) {
|
|
141
|
+
const message = options.defectMessage
|
|
142
|
+
? yield* options.defectMessage(cause, i)
|
|
143
|
+
: self.intl.formatMessage({ id: "handle.unexpected_error" }, {
|
|
144
|
+
action: actionMessage,
|
|
145
|
+
error: Cause.pretty(cause)
|
|
146
|
+
});
|
|
147
|
+
if (message) {
|
|
148
|
+
yield* self.toast.error(message);
|
|
149
|
+
}
|
|
150
|
+
})
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
function renderError(e) {
|
|
154
|
+
return Match.value(e).pipe(Match.tags({
|
|
155
|
+
// HttpErrorRequest: e =>
|
|
156
|
+
// this.intl.value.formatMessage(
|
|
157
|
+
// { id: "handle.request_error" },
|
|
158
|
+
// { error: `${e.error}` },
|
|
159
|
+
// ),
|
|
160
|
+
// HttpErrorResponse: e =>
|
|
161
|
+
// e.response.status >= 500 ||
|
|
162
|
+
// e.response.body._tag !== "Some" ||
|
|
163
|
+
// !e.response.body.value
|
|
164
|
+
// ? this.intl.value.formatMessage(
|
|
165
|
+
// { id: "handle.error_response" },
|
|
166
|
+
// {
|
|
167
|
+
// error: `${
|
|
168
|
+
// e.response.body._tag === "Some" && e.response.body.value
|
|
169
|
+
// ? parseError(e.response.body.value)
|
|
170
|
+
// : "Unknown"
|
|
171
|
+
// } (${e.response.status})`,
|
|
172
|
+
// },
|
|
173
|
+
// )
|
|
174
|
+
// : this.intl.value.formatMessage(
|
|
175
|
+
// { id: "handle.unexpected_error" },
|
|
176
|
+
// {
|
|
177
|
+
// error:
|
|
178
|
+
// JSON.stringify(e.response.body, undefined, 2) +
|
|
179
|
+
// "( " +
|
|
180
|
+
// e.response.status +
|
|
181
|
+
// ")",
|
|
182
|
+
// },
|
|
183
|
+
// ),
|
|
184
|
+
// ResponseError: e =>
|
|
185
|
+
// this.intl.value.formatMessage(
|
|
186
|
+
// { id: "handle.response_error" },
|
|
187
|
+
// { error: `${e.error}` },
|
|
188
|
+
// ),
|
|
189
|
+
ParseError: (e) => {
|
|
190
|
+
console.warn(e.toString());
|
|
191
|
+
return self.intl.formatMessage({ id: "validation.failed" });
|
|
192
|
+
}
|
|
193
|
+
}), Match.orElse((e) => `${e.message ?? e._tag ?? e}`));
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
/**
|
|
197
|
+
* Pass a function that returns an Effect, e.g from a client action, give it a name.
|
|
198
|
+
* Returns a tuple with raw Result and execution function which reports success and errors as Toast.
|
|
199
|
+
* @deprecated use `Command.fn` and friends instead
|
|
200
|
+
*/
|
|
201
|
+
useAndHandleMutationResult = (self, action, options) => {
|
|
202
|
+
const handleRequestWithToast = this.useHandleRequestWithToast();
|
|
203
|
+
const handler = self.handler;
|
|
204
|
+
const unsafe = _useMutation({
|
|
205
|
+
...self,
|
|
206
|
+
handler: Effect.isEffect(handler)
|
|
207
|
+
? pipe(Effect.annotateCurrentSpan({ action }), Effect.zipRight(handler))
|
|
208
|
+
: (...args) => pipe(Effect.annotateCurrentSpan({ action }), Effect.zipRight(handler(...args)))
|
|
209
|
+
}, options ? dropUndefinedT(options) : undefined);
|
|
210
|
+
const mh = options?.mapHandler ?? identity;
|
|
211
|
+
// Effect.tapDefect(reportRuntimeError) handled in toast handler,
|
|
212
|
+
const [a, b] = asResult(mapHandler(unsafe, mh));
|
|
213
|
+
return tuple(a, handleRequestWithToast(b, self.id, action, options));
|
|
214
|
+
};
|
|
215
|
+
//
|
|
216
|
+
/**
|
|
217
|
+
* Pass a function that returns an Effect, e.g from a client action, give it a name.
|
|
218
|
+
* Returns a tuple with state ref and execution function which reports success and errors as Toast.
|
|
219
|
+
*
|
|
220
|
+
* @deprecated use `Command.fn` and friends instead
|
|
221
|
+
*/
|
|
222
|
+
useAndHandleMutation = (self, action, options) => {
|
|
223
|
+
const [a, b] = this.useAndHandleMutationResult(self, action, options);
|
|
224
|
+
return tuple(computed(() => mutationResultToVue(a.value)), b);
|
|
225
|
+
};
|
|
226
|
+
/** @deprecated use `Command.fn` and friends instead */
|
|
227
|
+
makeUseAndHandleMutation = (defaultOptions) => ((self, action, options) => {
|
|
228
|
+
return this.useAndHandleMutation(self, action, { ...defaultOptions, ...options });
|
|
229
|
+
});
|
|
230
|
+
/**
|
|
231
|
+
* The same as @see useAndHandleMutation, but does not display any toasts by default.
|
|
232
|
+
* Messages for success, error and defect toasts can be provided in the Options.
|
|
233
|
+
* @deprecated use `Command.fn` and friends instead
|
|
234
|
+
*/
|
|
235
|
+
useAndHandleMutationSilently = this.makeUseAndHandleMutation({
|
|
236
|
+
successMessage: suppressToast,
|
|
237
|
+
failMessage: suppressToast,
|
|
238
|
+
defectMessage: suppressToast
|
|
239
|
+
});
|
|
240
|
+
/**
|
|
241
|
+
* The same as @see useAndHandleMutation, but does not act on success, error or defect by default.
|
|
242
|
+
* Actions for success, error and defect can be provided in the Options.
|
|
243
|
+
* @deprecated use `Command.fn` and friends instead
|
|
244
|
+
*/
|
|
245
|
+
useAndHandleMutationCustom = (self, action, options) => {
|
|
246
|
+
const unsafe = _useMutation({
|
|
247
|
+
...self,
|
|
248
|
+
handler: Effect.isEffect(self.handler)
|
|
249
|
+
? pipe(Effect.annotateCurrentSpan({ action }), Effect.andThen(self.handler))
|
|
250
|
+
: (...args) => pipe(Effect.annotateCurrentSpan({ action }), Effect.andThen(self.handler(...args)))
|
|
251
|
+
}, options ? dropUndefinedT(options) : undefined);
|
|
252
|
+
const mh = options?.mapHandler ?? identity;
|
|
253
|
+
const [a, b] = asResult(mapHandler(mapHandler(unsafe, mh), Effect.tapDefect(reportRuntimeError)));
|
|
254
|
+
return tuple(computed(() => mutationResultToVue(a.value)), handleRequest(b, self.id, action, {
|
|
255
|
+
onSuccess: suppressToast,
|
|
256
|
+
onDefect: suppressToast,
|
|
257
|
+
onFail: suppressToast,
|
|
258
|
+
...options
|
|
259
|
+
}));
|
|
260
|
+
};
|
|
261
|
+
/**
|
|
262
|
+
* Effect results are converted to Exit, so errors are ignored by default.
|
|
263
|
+
* you should use the result ref to render errors!
|
|
264
|
+
* @deprecated use `Command.fn` and friends instead
|
|
265
|
+
*/
|
|
266
|
+
useSafeMutationWithState = (self, options) => {
|
|
267
|
+
const [a, b] = this.useSafeMutation(self, options);
|
|
268
|
+
return tuple(computed(() => mutationResultToVue(a.value)), b);
|
|
269
|
+
};
|
|
270
|
+
/** @deprecated use OmegaForm */
|
|
271
|
+
buildFormFromSchema = (s, state, onSubmit) => {
|
|
272
|
+
const fields = buildFieldInfoFromFieldsRoot(s).fields;
|
|
273
|
+
const schema = S.Struct(Struct.omit(s.fields, "_tag"));
|
|
274
|
+
const parse = S.decodeUnknown(schema);
|
|
275
|
+
const isDirty = ref(false);
|
|
276
|
+
const isValid = ref(true);
|
|
277
|
+
const isLoading = ref(false);
|
|
278
|
+
const runPromise = Runtime.runPromise(this.getRuntime());
|
|
279
|
+
const submit1 = (onSubmit) => async (e) => {
|
|
280
|
+
isLoading.value = true;
|
|
281
|
+
try {
|
|
282
|
+
const r = await e;
|
|
283
|
+
if (!r.valid)
|
|
284
|
+
return;
|
|
285
|
+
return await runPromise(onSubmit(new s(await runPromise(parse(state.value)))));
|
|
286
|
+
}
|
|
287
|
+
finally {
|
|
288
|
+
isLoading.value = false;
|
|
289
|
+
}
|
|
290
|
+
};
|
|
291
|
+
const submit = submit1(onSubmit);
|
|
292
|
+
watch(state, (v) => {
|
|
293
|
+
// TODO: do better
|
|
294
|
+
isDirty.value = JSON.stringify(v) !== JSON.stringify(state.value);
|
|
295
|
+
}, { deep: true });
|
|
296
|
+
const submitFromState = Effect.gen(function* () {
|
|
297
|
+
return yield* onSubmit(yield* parse(state.value));
|
|
298
|
+
});
|
|
299
|
+
const submitFromStatePromise = () => runPromise(submitFromState);
|
|
300
|
+
return {
|
|
301
|
+
fields,
|
|
302
|
+
/** optimized for Vuetify v-form submit callback */
|
|
303
|
+
submit,
|
|
304
|
+
/** optimized for Native form submit callback or general use */
|
|
305
|
+
submitFromState,
|
|
306
|
+
submitFromStatePromise,
|
|
307
|
+
isDirty,
|
|
308
|
+
isValid,
|
|
309
|
+
isLoading
|
|
310
|
+
};
|
|
311
|
+
};
|
|
312
|
+
}
|
|
77
313
|
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
78
314
|
export class LegacyMutation extends Effect.Service()("LegacyMutation", {
|
|
79
315
|
effect: Effect.gen(function* () {
|
|
80
316
|
const intl = yield* I18n;
|
|
81
317
|
const toast = yield* Toast;
|
|
82
|
-
return (getRuntime) =>
|
|
83
|
-
/**
|
|
84
|
-
* Effect results are converted to Exit, so errors are ignored by default.
|
|
85
|
-
* you should use the result ref to render errors!
|
|
86
|
-
*/
|
|
87
|
-
const _useSafeMutation = (self, options) => {
|
|
88
|
-
const unsafe = _useMutation(self, options);
|
|
89
|
-
const mh = options?.mapHandler ?? identity;
|
|
90
|
-
const [a, b] = asResult(mapHandler(mapHandler(unsafe, mh), Effect.tapDefect(reportRuntimeError)));
|
|
91
|
-
return [
|
|
92
|
-
a,
|
|
93
|
-
mapHandler(b, Effect.withSpan(`mutation ${self.id}`, { captureStackTrace: false }))
|
|
94
|
-
];
|
|
95
|
-
};
|
|
96
|
-
/** handles errors as toasts and reports defects */
|
|
97
|
-
const _useHandleRequestWithToast = () => {
|
|
98
|
-
return handleRequestWithToast;
|
|
99
|
-
/**
|
|
100
|
-
* Pass a function that returns a Promise.
|
|
101
|
-
* Returns an execution function which reports errors as Toast.
|
|
102
|
-
*/
|
|
103
|
-
function handleRequestWithToast(f, id, action, options = {}) {
|
|
104
|
-
const actionMessage = intl.formatMessage({ id: `action.${action}`, defaultMessage: action });
|
|
105
|
-
const defaultWarnMessage = intl.formatMessage({ id: "handle.with_warnings" }, { action: actionMessage });
|
|
106
|
-
const defaultSuccessMessage = intl.formatMessage({ id: "handle.success" }, { action: actionMessage });
|
|
107
|
-
const defaultErrorMessage = intl.formatMessage({ id: "handle.with_errors" }, { action: actionMessage });
|
|
108
|
-
return handleRequest(f, id, action, {
|
|
109
|
-
onSuccess: Effect.fnUntraced(function* (a, i) {
|
|
110
|
-
const message = options.successMessage ? yield* options.successMessage(a, i) : defaultSuccessMessage
|
|
111
|
-
+ (S.is(OperationSuccess)(a) && a.message
|
|
112
|
-
? "\n" + a.message
|
|
113
|
-
: "");
|
|
114
|
-
if (message) {
|
|
115
|
-
yield* toast.success(message);
|
|
116
|
-
}
|
|
117
|
-
}),
|
|
118
|
-
onFail: Effect.fnUntraced(function* (e, i) {
|
|
119
|
-
if (!options.failMessage && e._tag === "OperationFailure") {
|
|
120
|
-
yield* toast.warning(defaultWarnMessage + e.message
|
|
121
|
-
? "\n" + e.message
|
|
122
|
-
: "");
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
const message = options.failMessage
|
|
126
|
-
? yield* options.failMessage(e, i)
|
|
127
|
-
: `${defaultErrorMessage}:\n` + renderError(e);
|
|
128
|
-
if (message) {
|
|
129
|
-
yield* toast.error(message);
|
|
130
|
-
}
|
|
131
|
-
}),
|
|
132
|
-
onDefect: Effect.fnUntraced(function* (cause, i) {
|
|
133
|
-
const message = options.defectMessage
|
|
134
|
-
? yield* options.defectMessage(cause, i)
|
|
135
|
-
: intl.formatMessage({ id: "handle.unexpected_error" }, {
|
|
136
|
-
action: actionMessage,
|
|
137
|
-
error: Cause.pretty(cause)
|
|
138
|
-
});
|
|
139
|
-
if (message) {
|
|
140
|
-
yield* toast.error(message);
|
|
141
|
-
}
|
|
142
|
-
})
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
function renderError(e) {
|
|
146
|
-
return Match.value(e).pipe(Match.tags({
|
|
147
|
-
// HttpErrorRequest: e =>
|
|
148
|
-
// intl.value.formatMessage(
|
|
149
|
-
// { id: "handle.request_error" },
|
|
150
|
-
// { error: `${e.error}` },
|
|
151
|
-
// ),
|
|
152
|
-
// HttpErrorResponse: e =>
|
|
153
|
-
// e.response.status >= 500 ||
|
|
154
|
-
// e.response.body._tag !== "Some" ||
|
|
155
|
-
// !e.response.body.value
|
|
156
|
-
// ? intl.value.formatMessage(
|
|
157
|
-
// { id: "handle.error_response" },
|
|
158
|
-
// {
|
|
159
|
-
// error: `${
|
|
160
|
-
// e.response.body._tag === "Some" && e.response.body.value
|
|
161
|
-
// ? parseError(e.response.body.value)
|
|
162
|
-
// : "Unknown"
|
|
163
|
-
// } (${e.response.status})`,
|
|
164
|
-
// },
|
|
165
|
-
// )
|
|
166
|
-
// : intl.value.formatMessage(
|
|
167
|
-
// { id: "handle.unexpected_error" },
|
|
168
|
-
// {
|
|
169
|
-
// error:
|
|
170
|
-
// JSON.stringify(e.response.body, undefined, 2) +
|
|
171
|
-
// "( " +
|
|
172
|
-
// e.response.status +
|
|
173
|
-
// ")",
|
|
174
|
-
// },
|
|
175
|
-
// ),
|
|
176
|
-
// ResponseError: e =>
|
|
177
|
-
// intl.value.formatMessage(
|
|
178
|
-
// { id: "handle.response_error" },
|
|
179
|
-
// { error: `${e.error}` },
|
|
180
|
-
// ),
|
|
181
|
-
ParseError: (e) => {
|
|
182
|
-
console.warn(e.toString());
|
|
183
|
-
return intl.formatMessage({ id: "validation.failed" });
|
|
184
|
-
}
|
|
185
|
-
}), Match.orElse((e) => `${e.message ?? e._tag ?? e}`));
|
|
186
|
-
}
|
|
187
|
-
};
|
|
188
|
-
/**
|
|
189
|
-
* Pass a function that returns an Effect, e.g from a client action, give it a name.
|
|
190
|
-
* Returns a tuple with raw Result and execution function which reports success and errors as Toast.
|
|
191
|
-
*/
|
|
192
|
-
const _useAndHandleMutationResult = (self, action, options) => {
|
|
193
|
-
const handleRequestWithToast = _useHandleRequestWithToast();
|
|
194
|
-
const handler = self.handler;
|
|
195
|
-
const unsafe = _useMutation({
|
|
196
|
-
...self,
|
|
197
|
-
handler: Effect.isEffect(handler)
|
|
198
|
-
? pipe(Effect.annotateCurrentSpan({ action }), Effect.zipRight(handler))
|
|
199
|
-
: (...args) => pipe(Effect.annotateCurrentSpan({ action }), Effect.zipRight(handler(...args)))
|
|
200
|
-
}, options ? dropUndefinedT(options) : undefined);
|
|
201
|
-
const mh = options?.mapHandler ?? identity;
|
|
202
|
-
// Effect.tapDefect(reportRuntimeError) handled in toast handler,
|
|
203
|
-
const [a, b] = asResult(mapHandler(unsafe, mh));
|
|
204
|
-
return tuple(a, handleRequestWithToast(b, self.id, action, options));
|
|
205
|
-
};
|
|
206
|
-
//
|
|
207
|
-
/**
|
|
208
|
-
* Pass a function that returns an Effect, e.g from a client action, give it a name.
|
|
209
|
-
* Returns a tuple with state ref and execution function which reports success and errors as Toast.
|
|
210
|
-
*/
|
|
211
|
-
const _useAndHandleMutation = (self, action, options) => {
|
|
212
|
-
const [a, b] = _useAndHandleMutationResult(self, action, options);
|
|
213
|
-
return tuple(computed(() => mutationResultToVue(a.value)), b);
|
|
214
|
-
};
|
|
215
|
-
function _makeUseAndHandleMutation(defaultOptions) {
|
|
216
|
-
return ((self, action, options) => {
|
|
217
|
-
return _useAndHandleMutation(self, action, { ...defaultOptions, ...options });
|
|
218
|
-
});
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* The same as @see useAndHandleMutation, but does not display any toasts by default.
|
|
222
|
-
* Messages for success, error and defect toasts can be provided in the Options.
|
|
223
|
-
*/
|
|
224
|
-
const _useAndHandleMutationSilently = _makeUseAndHandleMutation({
|
|
225
|
-
successMessage: suppressToast,
|
|
226
|
-
failMessage: suppressToast,
|
|
227
|
-
defectMessage: suppressToast
|
|
228
|
-
});
|
|
229
|
-
/**
|
|
230
|
-
* The same as @see useAndHandleMutation, but does not act on success, error or defect by default.
|
|
231
|
-
* Actions for success, error and defect can be provided in the Options.
|
|
232
|
-
*/
|
|
233
|
-
const _useAndHandleMutationCustom = (self, action, options) => {
|
|
234
|
-
const unsafe = _useMutation({
|
|
235
|
-
...self,
|
|
236
|
-
handler: Effect.isEffect(self.handler)
|
|
237
|
-
? pipe(Effect.annotateCurrentSpan({ action }), Effect.andThen(self.handler))
|
|
238
|
-
: (...args) => pipe(Effect.annotateCurrentSpan({ action }), Effect.andThen(self.handler(...args)))
|
|
239
|
-
}, options ? dropUndefinedT(options) : undefined);
|
|
240
|
-
const mh = options?.mapHandler ?? identity;
|
|
241
|
-
const [a, b] = asResult(mapHandler(mapHandler(unsafe, mh), Effect.tapDefect(reportRuntimeError)));
|
|
242
|
-
return tuple(computed(() => mutationResultToVue(a.value)), handleRequest(b, self.id, action, {
|
|
243
|
-
onSuccess: suppressToast,
|
|
244
|
-
onDefect: suppressToast,
|
|
245
|
-
onFail: suppressToast,
|
|
246
|
-
...options
|
|
247
|
-
}));
|
|
248
|
-
};
|
|
249
|
-
/**
|
|
250
|
-
* Effect results are converted to Exit, so errors are ignored by default.
|
|
251
|
-
* you should use the result ref to render errors!
|
|
252
|
-
*/
|
|
253
|
-
const _useSafeMutationWithState = (self, options) => {
|
|
254
|
-
const [a, b] = _useSafeMutation(self, options);
|
|
255
|
-
return tuple(computed(() => mutationResultToVue(a.value)), b);
|
|
256
|
-
};
|
|
257
|
-
/** @deprecated use OmegaForm */
|
|
258
|
-
const _buildFormFromSchema = (s, state, onSubmit) => {
|
|
259
|
-
const fields = buildFieldInfoFromFieldsRoot(s).fields;
|
|
260
|
-
const schema = S.Struct(Struct.omit(s.fields, "_tag"));
|
|
261
|
-
const parse = S.decodeUnknown(schema);
|
|
262
|
-
const isDirty = ref(false);
|
|
263
|
-
const isValid = ref(true);
|
|
264
|
-
const isLoading = ref(false);
|
|
265
|
-
const runPromise = Runtime.runPromise(getRuntime());
|
|
266
|
-
const submit1 = (onSubmit) => async (e) => {
|
|
267
|
-
isLoading.value = true;
|
|
268
|
-
try {
|
|
269
|
-
const r = await e;
|
|
270
|
-
if (!r.valid)
|
|
271
|
-
return;
|
|
272
|
-
return await runPromise(onSubmit(new s(await runPromise(parse(state.value)))));
|
|
273
|
-
}
|
|
274
|
-
finally {
|
|
275
|
-
isLoading.value = false;
|
|
276
|
-
}
|
|
277
|
-
};
|
|
278
|
-
const submit = submit1(onSubmit);
|
|
279
|
-
watch(state, (v) => {
|
|
280
|
-
// TODO: do better
|
|
281
|
-
isDirty.value = JSON.stringify(v) !== JSON.stringify(state.value);
|
|
282
|
-
}, { deep: true });
|
|
283
|
-
const submitFromState = Effect.gen(function* () {
|
|
284
|
-
return yield* onSubmit(yield* parse(state.value));
|
|
285
|
-
});
|
|
286
|
-
const submitFromStatePromise = () => runPromise(submitFromState);
|
|
287
|
-
return {
|
|
288
|
-
fields,
|
|
289
|
-
/** optimized for Vuetify v-form submit callback */
|
|
290
|
-
submit,
|
|
291
|
-
/** optimized for Native form submit callback or general use */
|
|
292
|
-
submitFromState,
|
|
293
|
-
submitFromStatePromise,
|
|
294
|
-
isDirty,
|
|
295
|
-
isValid,
|
|
296
|
-
isLoading
|
|
297
|
-
};
|
|
298
|
-
};
|
|
299
|
-
return {
|
|
300
|
-
/** @deprecated use Command.fn */
|
|
301
|
-
useSafeMutationWithState: _useSafeMutationWithState,
|
|
302
|
-
/** @deprecated use Command.fn */
|
|
303
|
-
useAndHandleMutation: _useAndHandleMutation,
|
|
304
|
-
/** @deprecated use Command.fn */
|
|
305
|
-
useAndHandleMutationResult: _useAndHandleMutationResult,
|
|
306
|
-
/** @deprecated use Command.fn */
|
|
307
|
-
useAndHandleMutationSilently: _useAndHandleMutationSilently,
|
|
308
|
-
/** @deprecated use Command.fn */
|
|
309
|
-
useAndHandleMutationCustom: _useAndHandleMutationCustom,
|
|
310
|
-
/** @deprecated use Command.fn */
|
|
311
|
-
makeUseAndHandleMutation: _makeUseAndHandleMutation,
|
|
312
|
-
/**
|
|
313
|
-
* handles errors as toasts and reports defects
|
|
314
|
-
* @deprecated use Command.fn
|
|
315
|
-
*/
|
|
316
|
-
useHandleRequestWithToast: _useHandleRequestWithToast,
|
|
317
|
-
/** @deprecated use OmegaForm */
|
|
318
|
-
buildFormFromSchema: _buildFormFromSchema,
|
|
319
|
-
/** @deprecated use Command.fn */
|
|
320
|
-
useSafeMutation: _useSafeMutation
|
|
321
|
-
};
|
|
322
|
-
};
|
|
318
|
+
return (getRuntime) => new LegacyMutationImpl(getRuntime, toast, intl);
|
|
323
319
|
})
|
|
324
320
|
}) {
|
|
325
321
|
}
|
|
326
|
-
|
|
327
|
-
|
|
322
|
+
export class QueryImpl {
|
|
323
|
+
getRuntime;
|
|
324
|
+
constructor(getRuntime) {
|
|
325
|
+
this.getRuntime = getRuntime;
|
|
326
|
+
this.useQuery = makeQuery(this.getRuntime);
|
|
327
|
+
}
|
|
328
328
|
/**
|
|
329
329
|
* Effect results are passed to the caller, including errors.
|
|
330
|
+
* @deprecated use client helpers instead (.query())
|
|
330
331
|
*/
|
|
331
332
|
// TODO
|
|
332
|
-
|
|
333
|
+
useQuery;
|
|
333
334
|
/**
|
|
334
335
|
* The difference with useQuery is that this function will return a Promise you can await in the Setup,
|
|
335
336
|
* which ensures that either there always is a latest value, or an error occurs on load.
|
|
336
337
|
* So that Suspense and error boundaries can be used.
|
|
338
|
+
* @deprecated use client helpers instead (.suspense())
|
|
337
339
|
*/
|
|
338
|
-
|
|
339
|
-
const runPromise = Runtime.runPromise(getRuntime());
|
|
340
|
-
const q =
|
|
340
|
+
useSuspenseQuery = (self) => {
|
|
341
|
+
const runPromise = Runtime.runPromise(this.getRuntime());
|
|
342
|
+
const q = this.useQuery(self);
|
|
341
343
|
return (argOrOptions, options) => {
|
|
342
344
|
const [resultRef, latestRef, fetch, uqrt] = q(argOrOptions, { ...options, suspense: true } // experimental_prefetchInRender: true }
|
|
343
345
|
);
|
|
@@ -377,8 +379,7 @@ const mkQuery = (getRuntime) => {
|
|
|
377
379
|
return runPromise(eff);
|
|
378
380
|
};
|
|
379
381
|
};
|
|
380
|
-
|
|
381
|
-
};
|
|
382
|
+
}
|
|
382
383
|
// somehow mrt.runtimeEffect doesnt work sync, but this workaround works fine? not sure why though as the layers are generally only sync
|
|
383
384
|
const managedRuntimeRt = (mrt) => mrt.runSync(Effect.runtime());
|
|
384
385
|
export const makeClient = (
|
|
@@ -409,12 +410,13 @@ getBaseMrt, clientFor_) => {
|
|
|
409
410
|
"useSafeMutation"
|
|
410
411
|
];
|
|
411
412
|
const mutations = keys.reduce((prev, cur) => {
|
|
413
|
+
;
|
|
412
414
|
prev[cur] = ((...args) => {
|
|
413
415
|
return getMutation()[cur](...args);
|
|
414
416
|
});
|
|
415
417
|
return prev;
|
|
416
418
|
}, {});
|
|
417
|
-
const query =
|
|
419
|
+
const query = new QueryImpl(getBaseRt);
|
|
418
420
|
const useQuery = query.useQuery;
|
|
419
421
|
const useSuspenseQuery = query.useSuspenseQuery;
|
|
420
422
|
const mapQuery = (client) => {
|
|
@@ -492,10 +494,7 @@ getBaseMrt, clientFor_) => {
|
|
|
492
494
|
};
|
|
493
495
|
const legacy = {
|
|
494
496
|
...mutations,
|
|
495
|
-
|
|
496
|
-
useQuery,
|
|
497
|
-
/** @deprecated use .suspense on the clientFor(x).Action */
|
|
498
|
-
useSuspenseQuery
|
|
497
|
+
...query
|
|
499
498
|
};
|
|
500
499
|
const Command = {
|
|
501
500
|
...{
|
|
@@ -514,4 +513,4 @@ getBaseMrt, clientFor_) => {
|
|
|
514
513
|
legacy
|
|
515
514
|
};
|
|
516
515
|
};
|
|
517
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWtlQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEtBQUssTUFBTSxNQUFNLDBCQUEwQixDQUFBO0FBQ2xELE9BQU8sRUFBaUYsZ0JBQWdCLEVBQTBFLE1BQU0scUJBQXFCLENBQUE7QUFDN00sT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQXVCLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFHeEcsT0FBTyxFQUFFLGFBQWEsRUFBd0IsTUFBTSwwQkFBMEIsQ0FBQTtBQUM5RSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDckUsT0FBTyxFQUF5QixnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBRS9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUVqRCxPQUFPLEVBQUUsUUFBUSxFQUFvQixlQUFlLEVBQVksR0FBRyxFQUFFLEtBQUssRUFBb0IsTUFBTSxLQUFLLENBQUE7QUFDekcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2xELE9BQU8sRUFBa0IsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFDN0UsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQzdDLE9BQU8sRUFBMEIsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFDekYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQy9DLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQWtELG1CQUFtQixFQUFZLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNwSixPQUFPLEVBQTBHLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUU5SSxNQUFNLFVBQVUsR0FBRyxDQUNqQixPQUFvRSxFQUNwRSxHQUFzRSxFQUN0RSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxTQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBRTdGOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWUsU0FBUSxLQUFLLENBQUMsY0FBYztJQUM3QyxJQUFJLEdBQUcsZ0JBQWdCLENBQUE7SUFDdkIsQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUE7Q0FDaEM7QUFnRkQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUE7QUFFaEUsc0RBQXNEO0FBQ3RELFNBQVMsYUFBYSxDQVlwQixDQUFrRyxFQUNsRyxFQUFVLEVBQ1YsTUFBYyxFQUNkLE9BSUM7SUFFRCxNQUFNLFlBQVksR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUE4QyxFQUFFLEVBQUUsQ0FDbEYsSUFBSSxDQUFDLElBQUksQ0FDUCxNQUFNLENBQUMsR0FBRyxDQUNSLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDZixTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QyxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNuQixNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUNsQixJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNuQyxPQUFPLENBQUMsSUFBSSxDQUFDLCtCQUErQixNQUFNLEVBQUUsQ0FBQyxDQUFBO2dCQUNyRCxPQUFNO1lBQ1IsQ0FBQztZQUVELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDdkMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztvQkFDekMsT0FBTyxDQUFDLElBQUksQ0FBQyw4QkFBOEIsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO29CQUNoRSxPQUFNO2dCQUNSLENBQUM7Z0JBQ0QsTUFBTSxPQUFPLEdBQUcscUJBQXFCLE1BQU0sRUFBRSxDQUFBO2dCQUM3QyxLQUFLLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQTtnQkFDNUQsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO2dCQUNwQyxPQUFNO1lBQ1IsQ0FBQztZQUVELE1BQU0sS0FBSyxHQUFHO2dCQUNaLE1BQU07Z0JBQ04sT0FBTyxFQUFFLDhCQUE4QixNQUFNLEVBQUU7YUFDaEQsQ0FBQTtZQUNELEtBQUssQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQTtZQUV2QyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUNuQyxDQUFDLENBQUM7S0FDTCxDQUFDLENBQ0gsRUFDRCxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxFQUFFLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUNoRSxDQUFBO0lBQ0gsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUNsQixNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNoQixDQUFDLENBQUMsSUFBSSxDQUNKLENBQUMsRUFDRCxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDckI7UUFDRCxDQUFDLENBQUMsQ0FBQyxDQUFJLEVBQUUsRUFBRSxDQUNULElBQUksQ0FDRixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ0osWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUNoQixFQUNMLEVBQUUsTUFBTSxFQUFFLENBQ1gsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLFlBQVksR0FBRyxZQUFZLEVBQUUsQ0FBQTtBQUVuQzs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUF3QixDQVE5QyxJQUFpRyxFQUNqRyxPQUE2QixFQUM3QixFQUFFLENBQ0YsTUFBTSxDQUFDLE1BQU0sQ0FDWCxVQUFVLENBQ1IsWUFBWSxDQUFDLElBQVcsRUFBRSxPQUFPLENBQUMsRUFDbEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxZQUFZLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQzlELEVBQ1IsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUNoQixDQUFBO0FBRUg7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxHQUF3QixFQUFFO0lBQ3RELE1BQU0sWUFBWSxHQUFHLGVBQWUsRUFBRSxDQUFBO0lBQ3RDLE9BQU8sQ0FRTCxJQUFpRyxFQUNqRyxPQUE2QixFQUM3QixFQUFFLENBQ0YsTUFBTSxDQUFDLE1BQU0sQ0FDWCxVQUFVLENBQ1IsWUFBWSxDQUFDLElBQVcsRUFBRSxPQUFPLENBQUMsRUFDbEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxZQUFZLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQzlELEVBQ1IsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUNoQixDQUFBO0FBQ0wsQ0FBQyxDQUFBO0FBRUQsbUVBQW1FO0FBQ25FLE1BQU0sT0FBTyxjQUFlLFNBQVEsTUFBTSxDQUFDLE9BQU8sRUFBa0IsQ0FBQyxnQkFBZ0IsRUFBRTtJQUNyRixNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDMUIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFBO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQTtRQUUxQixPQUFPLENBQUksVUFBb0MsRUFBRSxFQUFFO1lBQ2pEOzs7ZUFHRztZQUNILE1BQU0sZ0JBQWdCLEdBZWxCLENBQ0YsSUFBaUcsRUFDakcsT0FBaUQsRUFDakQsRUFBRTtnQkFDRixNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsSUFBVyxFQUFFLE9BQU8sQ0FBQyxDQUFBO2dCQUdqRCxNQUFNLEVBQUUsR0FBRyxPQUFPLEVBQUUsVUFBVSxJQUFJLFFBQWMsQ0FBQTtnQkFFaEQsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFhLEVBQUUsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFRLENBQUMsQ0FBQTtnQkFDL0csT0FBTztvQkFDTCxDQUFDO29CQUNELFVBQVUsQ0FDUixDQUFDLEVBQ0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxZQUFZLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQ3JFO2lCQUNjLENBQUE7WUFDbkIsQ0FBQyxDQUFBO1lBRUQsbURBQW1EO1lBQ25ELE1BQU0sMEJBQTBCLEdBQUcsR0FBRyxFQUFFO2dCQUN0QyxPQUFPLHNCQUFzQixDQUFBO2dCQUM3Qjs7O21CQUdHO2dCQUNILFNBQVMsc0JBQXNCLENBZTdCLENBQXdHLEVBQ3hHLEVBQVUsRUFDVixNQUFjLEVBQ2QsVUFBOEYsRUFBRTtvQkFFaEcsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLE1BQU0sRUFBRSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBO29CQUM1RixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQzNDLEVBQUUsRUFBRSxFQUFFLHNCQUFzQixFQUFFLEVBQzlCLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxDQUMxQixDQUFBO29CQUNELE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FDOUMsRUFBRSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsRUFDeEIsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLENBQzFCLENBQUE7b0JBQ0QsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUM1QyxFQUFFLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxFQUM1QixFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsQ0FDMUIsQ0FBQTtvQkFFRCxPQUFPLGFBQWEsQ0FBd0UsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUU7d0JBQ3pHLFNBQVMsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFDLENBQUMsRUFBRSxDQUFDOzRCQUN6QyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCO2tDQUNoRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTztvQ0FDdkMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTztvQ0FDbEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBOzRCQUNULElBQUksT0FBTyxFQUFFLENBQUM7Z0NBQ1osS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTs0QkFDL0IsQ0FBQzt3QkFDSCxDQUFDLENBQUM7d0JBQ0YsTUFBTSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUMsQ0FBQyxFQUFFLENBQUM7NEJBQ3RDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssa0JBQWtCLEVBQUUsQ0FBQztnQ0FDMUQsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDbEIsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLE9BQU87b0NBQzVCLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU87b0NBQ2xCLENBQUMsQ0FBQyxFQUFFLENBQ1AsQ0FBQTtnQ0FDRCxPQUFNOzRCQUNSLENBQUM7NEJBRUQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFdBQVc7Z0NBQ2pDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0NBQ2xDLENBQUMsQ0FBQyxHQUFHLG1CQUFtQixLQUFLLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFBOzRCQUNoRCxJQUFJLE9BQU8sRUFBRSxDQUFDO2dDQUNaLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7NEJBQzdCLENBQUM7d0JBQ0gsQ0FBQyxDQUFDO3dCQUNGLFFBQVEsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFDLEtBQUssRUFBRSxDQUFDOzRCQUM1QyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsYUFBYTtnQ0FDbkMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztnQ0FDeEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQ2xCLEVBQUUsRUFBRSxFQUFFLHlCQUF5QixFQUFFLEVBQ2pDO29DQUNFLE1BQU0sRUFBRSxhQUFhO29DQUNyQixLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7aUNBQzNCLENBQ0YsQ0FBQTs0QkFDSCxJQUFJLE9BQU8sRUFBRSxDQUFDO2dDQUNaLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7NEJBQzdCLENBQUM7d0JBQ0gsQ0FBQyxDQUFDO3FCQUNILENBQUMsQ0FBQTtnQkFDSixDQUFDO2dCQUVELFNBQVMsV0FBVyxDQUFDLENBQWlCO29CQUNwQyxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUN4QixLQUFLLENBQUMsSUFBSSxDQUFDO3dCQUNULHlCQUF5Qjt3QkFDekIsOEJBQThCO3dCQUM5QixzQ0FBc0M7d0JBQ3RDLCtCQUErQjt3QkFDL0IsT0FBTzt3QkFDUCwwQkFBMEI7d0JBQzFCLGdDQUFnQzt3QkFDaEMsdUNBQXVDO3dCQUN2QywyQkFBMkI7d0JBQzNCLGtDQUFrQzt3QkFDbEMsMkNBQTJDO3dCQUMzQyxZQUFZO3dCQUNaLHVCQUF1Qjt3QkFDdkIsdUVBQXVFO3dCQUN2RSxvREFBb0Q7d0JBQ3BELDRCQUE0Qjt3QkFDNUIsdUNBQXVDO3dCQUN2QyxhQUFhO3dCQUNiLFVBQVU7d0JBQ1Ysa0NBQWtDO3dCQUNsQyw2Q0FBNkM7d0JBQzdDLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQiw4REFBOEQ7d0JBQzlELHFCQUFxQjt3QkFDckIsa0NBQWtDO3dCQUNsQyxtQkFBbUI7d0JBQ25CLGFBQWE7d0JBQ2IsV0FBVzt3QkFDWCxzQkFBc0I7d0JBQ3RCLDhCQUE4Qjt3QkFDOUIsdUNBQXVDO3dCQUN2QywrQkFBK0I7d0JBQy9CLE9BQU87d0JBQ1AsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7NEJBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7NEJBQzFCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUE7d0JBQ3hELENBQUM7cUJBQ0YsQ0FBQyxFQUNGLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQ25ELENBQUE7Z0JBQ0gsQ0FBQztZQUNILENBQUMsQ0FBQTtZQUVEOzs7ZUFHRztZQUNILE1BQU0sMkJBQTJCLEdBMEM3QixDQUNGLElBQWlHLEVBQ2pHLE1BQVcsRUFDWCxPQUErRSxFQUMxRSxFQUFFO2dCQUNQLE1BQU0sc0JBQXNCLEdBQUcsMEJBQTBCLEVBQUUsQ0FBQTtnQkFDM0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQTtnQkFDNUIsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDO29CQUMxQixHQUFHLElBQUk7b0JBQ1AsT0FBTyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO3dCQUMvQixDQUFDLENBQUUsSUFBSSxDQUNMLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQ3RDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQ2pCO3dCQUNULENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FDbkIsSUFBSSxDQUNGLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQ3RDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FDbEM7aUJBQ04sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUE7Z0JBR2pELE1BQU0sRUFBRSxHQUFHLE9BQU8sRUFBRSxVQUFVLElBQUksUUFBYyxDQUFBO2dCQUVoRCxpRUFBaUU7Z0JBQ2pFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFRLENBQUMsQ0FBQTtnQkFFdEQsT0FBTyxLQUFLLENBQ1YsQ0FBQyxFQUNELHNCQUFzQixDQUFDLENBQVEsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FDM0QsQ0FBQTtZQUNILENBQUMsQ0FBQTtZQUNELEVBQUU7WUFFRjs7O2VBR0c7WUFDSCxNQUFNLHFCQUFxQixHQTBDdkIsQ0FDRixJQUFTLEVBQ1QsTUFBVyxFQUNYLE9BQStFLEVBQzFFLEVBQUU7Z0JBQ1AsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRywyQkFBMkIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFBO2dCQUVqRSxPQUFPLEtBQUssQ0FDVixRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQzVDLENBQUMsQ0FDRixDQUFBO1lBQ0gsQ0FBQyxDQUFBO1lBRUQsU0FBUyx5QkFBeUIsQ0FDaEMsY0FBa0U7Z0JBRWxFLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxNQUFXLEVBQUUsT0FBWSxFQUFFLEVBQUU7b0JBQy9DLE9BQU8scUJBQXFCLENBQzFCLElBQUksRUFDSixNQUFNLEVBQ04sRUFBRSxHQUFHLGNBQWMsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUNsQyxDQUFBO2dCQUNILENBQUMsQ0F5Q0EsQ0FBQTtZQUNILENBQUM7WUFFRDs7O2VBR0c7WUFDSCxNQUFNLDZCQUE2QixHQTBDL0IseUJBQXlCLENBQUM7Z0JBQzVCLGNBQWMsRUFBRSxhQUFhO2dCQUM3QixXQUFXLEVBQUUsYUFBYTtnQkFDMUIsYUFBYSxFQUFFLGFBQWE7YUFDN0IsQ0FBUSxDQUFBO1lBRVQ7OztlQUdHO1lBQ0gsTUFBTSwyQkFBMkIsR0EwQzdCLENBQUMsSUFBUyxFQUFFLE1BQWMsRUFBRSxPQUFZLEVBQUUsRUFBRTtnQkFDOUMsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDO29CQUMxQixHQUFHLElBQUk7b0JBQ1AsT0FBTyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQzt3QkFDcEMsQ0FBQyxDQUFFLElBQUksQ0FDTCxNQUFNLENBQUMsbUJBQW1CLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUN0QyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FDckI7d0JBQ1QsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFXLEVBQUUsRUFBRSxDQUNuQixJQUFJLENBQ0YsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFDdEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FDdEM7aUJBQ04sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUE7Z0JBR2pELE1BQU0sRUFBRSxHQUFHLE9BQU8sRUFBRSxVQUFVLElBQUksUUFBYyxDQUFBO2dCQUVoRCxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQWEsRUFBRSxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQVEsQ0FBQyxDQUFBO2dCQUUvRyxPQUFPLEtBQUssQ0FDVixRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQzVDLGFBQWEsQ0FBQyxDQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUU7b0JBQ3ZDLFNBQVMsRUFBRSxhQUFhO29CQUN4QixRQUFRLEVBQUUsYUFBYTtvQkFDdkIsTUFBTSxFQUFFLGFBQWE7b0JBQ3JCLEdBQUcsT0FBTztpQkFDWCxDQUFDLENBQ0ksQ0FBQTtZQUNWLENBQUMsQ0FBQTtZQUVEOzs7ZUFHRztZQUNILE1BQU0seUJBQXlCLEdBZTNCLENBQ0YsSUFBaUcsRUFDakcsT0FBaUQsRUFDakQsRUFBRTtnQkFDRixNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLElBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQTtnQkFFckQsT0FBTyxLQUFLLENBQ1YsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUM1QyxDQUFDLENBQ0ssQ0FBQTtZQUNWLENBQUMsQ0FBQTtZQUVELGdDQUFnQztZQUNoQyxNQUFNLG9CQUFvQixHQUFHLENBTTNCLENBTTRELEVBQzVELEtBQThCLEVBQzlCLFFBQXVELEVBQ3ZELEVBQUU7Z0JBQ0YsTUFBTSxNQUFNLEdBQUcsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFBO2dCQUNyRCxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBUSxDQUFBO2dCQUM3RCxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFjLE1BQU0sQ0FBQyxDQUFBO2dCQUNsRCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQzFCLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDekIsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO2dCQUM1QixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUE7Z0JBRW5ELE1BQU0sT0FBTyxHQUNYLENBQUMsUUFBdUQsRUFBRSxFQUFFLENBQzVELEtBQUssRUFBeUMsQ0FBSSxFQUFFLEVBQUU7b0JBQ3BELFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFBO29CQUN0QixJQUFJLENBQUM7d0JBQ0gsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUE7d0JBQ2pCLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSzs0QkFBRSxPQUFNO3dCQUNwQixPQUFPLE1BQU0sVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7b0JBQ2hGLENBQUM7NEJBQVMsQ0FBQzt3QkFDVCxTQUFTLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtvQkFDekIsQ0FBQztnQkFDSCxDQUFDLENBQUE7Z0JBQ0gsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFBO2dCQUVoQyxLQUFLLENBQ0gsS0FBSyxFQUNMLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQ0osa0JBQWtCO29CQUNsQixPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ25FLENBQUMsRUFDRCxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FDZixDQUFBO2dCQUVELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO29CQUMxQyxPQUFPLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7Z0JBQ25ELENBQUMsQ0FBQyxDQUFBO2dCQUVGLE1BQU0sc0JBQXNCLEdBQUcsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFBO2dCQUVoRSxPQUFPO29CQUNMLE1BQU07b0JBQ04sbURBQW1EO29CQUNuRCxNQUFNO29CQUNOLCtEQUErRDtvQkFDL0QsZUFBZTtvQkFDZixzQkFBc0I7b0JBQ3RCLE9BQU87b0JBQ1AsT0FBTztvQkFDUCxTQUFTO2lCQUNWLENBQUE7WUFDSCxDQUFDLENBQUE7WUFDRCxPQUFPO2dCQUNMLGlDQUFpQztnQkFDakMsd0JBQXdCLEVBQUUseUJBQXlCO2dCQUNuRCxpQ0FBaUM7Z0JBQ2pDLG9CQUFvQixFQUFFLHFCQUFxQjtnQkFDM0MsaUNBQWlDO2dCQUNqQywwQkFBMEIsRUFBRSwyQkFBMkI7Z0JBQ3ZELGlDQUFpQztnQkFDakMsNEJBQTRCLEVBQUUsNkJBQTZCO2dCQUMzRCxpQ0FBaUM7Z0JBQ2pDLDBCQUEwQixFQUFFLDJCQUEyQjtnQkFDdkQsaUNBQWlDO2dCQUNqQyx3QkFBd0IsRUFBRSx5QkFBeUI7Z0JBQ25EOzs7bUJBR0c7Z0JBQ0gseUJBQXlCLEVBQUUsMEJBQTBCO2dCQUNyRCxnQ0FBZ0M7Z0JBQ2hDLG1CQUFtQixFQUFFLG9CQUFvQjtnQkFDekMsaUNBQWlDO2dCQUNqQyxlQUFlLEVBQUUsZ0JBQWdCO2FBQ2xDLENBQUE7UUFDSCxDQUFDLENBQUE7SUFDSCxDQUFDLENBQUM7Q0FDSCxDQUFDO0NBQUc7QUFJTCxNQUFNLE9BQU8sR0FBRyxDQUFJLFVBQW9DLEVBQUUsRUFBRTtJQUMxRCwwRkFBMEY7SUFDMUY7O09BRUc7SUFDSCxPQUFPO0lBQ1AsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBRXZDOzs7O09BSUc7SUFDSCxNQUFNLGdCQUFnQixHQW1FbEIsQ0FDRixJQUFtRyxFQUNuRyxFQUFFO1FBQ0YsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFBO1FBQ25ELE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQyxJQUFXLENBQVEsQ0FBQTtRQUN2QyxPQUFPLENBQUMsWUFBa0IsRUFBRSxPQUFhLEVBQUUsRUFBRTtZQUMzQyxNQUFNLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyx3Q0FBd0M7YUFDbEksQ0FBQTtZQUVELE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUMzQixlQUFlLENBQUMsR0FBRyxFQUFFO2dCQUNuQixTQUFTLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtZQUN6QixDQUFDLENBQUMsQ0FBQTtZQUVGLG9EQUFvRDtZQUNwRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztnQkFDOUIsc0ZBQXNGO2dCQUN0RixvREFBb0Q7Z0JBQ3BELDhLQUE4SztnQkFDOUssTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQzVELE1BQU0sQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUMxQyxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7b0JBQy9CLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7b0JBQzFELENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO3dCQUM3QixDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVM7d0JBQ2xCLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUM3QixDQUFBO2dCQUNELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ3JCLE9BQU8sS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQTtnQkFDaEMsQ0FBQztnQkFDRCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFBO2dCQUM5QixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDN0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxvREFBb0QsRUFBRTt3QkFDbEUsSUFBSTt3QkFDSixZQUFZO3dCQUNaLE9BQU87d0JBQ1AsQ0FBQzt3QkFDRCxTQUFTO3FCQUNWLENBQUMsQ0FBQTtvQkFDRixPQUFPLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQ3RCLG9EQUFvRCxDQUNyRCxDQUFBO2dCQUNILENBQUM7Z0JBQ0QsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7b0JBQzdCLE9BQU8sS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQzVDLENBQUM7Z0JBRUQsT0FBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBVSxDQUFBO1lBQ3JELENBQUMsQ0FBQyxDQUFBO1lBRUYsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDeEIsQ0FBQyxDQUFBO0lBQ0gsQ0FBQyxDQUFBO0lBRUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQTtBQUNsRCxDQUFDLENBQUE7QUFFRCx3SUFBd0k7QUFDeEksTUFBTSxnQkFBZ0IsR0FBRyxDQUFPLEdBQXdDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBSyxDQUFDLENBQUE7QUFHN0csTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0FBQ3hCLDBEQUEwRDtBQUMxRCxVQUFpSCxFQUNqSCxVQUEwRCxFQUMxRCxFQUFFO0lBRUYsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sRUFBSyxDQUFBO0lBQ2pDLE1BQU0sU0FBUyxHQUFHLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUE7SUFDdEQsTUFBTSxXQUFXLEdBQUcsY0FBYyxFQUFLLENBQUE7SUFDdkMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDdkMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFBO1FBRWpDLE9BQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQy9DLENBQUMsQ0FBQyxDQUFBO0lBQ0YsSUFBSSxHQUE4QyxDQUFBO0lBQ2xELE1BQU0sVUFBVSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDbEUsSUFBSSxHQUErQyxDQUFBO0lBQ25ELE1BQU0sV0FBVyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUE7SUFFcEUsSUFBSSxDQUFvQyxDQUFBO0lBQ3hDLE1BQU0sV0FBVyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxjQUFjLEVBQUUsQ0FBQTtJQUVoRCxNQUFNLElBQUksR0FBc0Q7UUFDOUQsMEJBQTBCO1FBQzFCLHNCQUFzQjtRQUN0Qiw0QkFBNEI7UUFDNUIsOEJBQThCO1FBQzlCLDRCQUE0QjtRQUM1QiwwQkFBMEI7UUFDMUIsMkJBQTJCO1FBQzNCLHFCQUFxQjtRQUNyQixpQkFBaUI7S0FDbEIsQ0FBQTtJQUdELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQzNCLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQVcsRUFBRSxFQUFFO1lBQzlCLE9BQVEsV0FBVyxFQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQTtRQUM3QyxDQUFDLENBQVEsQ0FBQTtRQUNULE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQyxFQUNELEVBQWtDLENBQ25DLENBQUE7SUFFRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDaEMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQTtJQUMvQixNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQTtJQUUvQyxNQUFNLFFBQVEsR0FBRyxDQUNmLE1BQXFCLEVBQ3JCLEVBQUU7UUFDRixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FDeEMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDWCxDQUFDO1lBQUMsR0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFRLENBQUMsRUFBRTtnQkFDcEYsRUFBRSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2FBQ25CLENBQUMsQ0FDRDtZQUFDLEdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsZUFBZSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFRLENBQUMsRUFBRTtnQkFDcEcsRUFBRSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2FBQ25CLENBQUMsQ0FBQTtZQUNGLE9BQU8sR0FBRyxDQUFBO1FBQ1osQ0FBQyxFQUNELEVBaUJHLENBQ0osQ0FBQTtRQUNELE9BQU8sT0FBTyxDQUFBO0lBQ2hCLENBQUMsQ0FBQTtJQUVELE1BQU0sV0FBVyxHQUFHLENBQ2xCLE1BQXFCLEVBQ3JCLEVBQUU7UUFDRixNQUFNLE9BQU8sR0FBRyxVQUFVLEVBQUUsQ0FBQTtRQUM1QixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFBO1FBQzFCLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUE7UUFDdEIsTUFBTSxRQUFRLEdBQUcsV0FBVyxFQUFFLENBQUE7UUFDOUIsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQzFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ1gsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQVEsQ0FBQyxDQUFBO1lBQ3hDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7WUFDOUIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUN0QjtZQUFDLEdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDeEQsR0FBRyxFQUNILEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUNaLElBQUksQ0FDTCxDQUFBO1lBQ0QsT0FBTyxHQUFHLENBQUE7UUFDWixDQUFDLEVBQ0QsRUE4Q0MsQ0FDRixDQUFBO1FBQ0QsT0FBTyxTQUFTLENBQUE7SUFDbEIsQ0FBQyxDQUFBO0lBRUQsa0VBQWtFO0lBQ2xFLGdEQUFnRDtJQUNoRCxNQUFNLFNBQVMsR0FBRyxDQUNoQixpQkFBbUUsRUFDbkUsRUFBRSxDQUNKLENBQ0UsTUFBcUIsRUFDckIsRUFBRTtRQUNGLE1BQU0sT0FBTyxHQUFHLFVBQVUsRUFBRSxDQUFBO1FBQzVCLE1BQU0sUUFBUSxHQUFHLFdBQVcsRUFBRSxDQUFBO1FBQzlCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUE7UUFDekIsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQTtRQUN0QixNQUFNLFlBQVksR0FBRyxpQkFBaUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2hELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUN6QyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNYLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7WUFDOUIsTUFBTSxPQUFPLEdBQUc7Z0JBQ2QsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO2dCQUNkLEdBQUcsRUFBRTtnQkFDTCxLQUFLLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQVEsQ0FBQztnQkFDbkMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQVEsQ0FBQzthQUMvQyxDQUFBO1lBQ0QsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUNyQixNQUFNLENBQUMsR0FBRyxDQUFRLEVBQ2xCLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQzNFLENBQ0E7WUFBQyxHQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUE7WUFDdkcsT0FBTyxHQUFHLENBQUE7UUFDWixDQUFDLEVBQ0QsRUF3REMsQ0FDRixDQUFBO1FBQ0QsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQzlGLENBQUMsQ0FBQTtJQUVELGlEQUFpRDtJQUNqRCx1RkFBdUY7SUFDdkYsTUFBTSxXQUFXLEdBQUcsQ0FDbEIsQ0FBSSxFQUNKLGlCQUFtRSxFQUNuRSxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUV2RiwyQ0FBMkM7SUFDM0MsMEdBQTBHO0lBQzFHLGtEQUFrRDtJQUNsRCxNQUFNLFNBQVMsR0FBRyxDQUNoQixDQUFJLEVBQ0osaUJBQW1FLEVBQ25FLEVBQUU7UUFFRixJQUFJLE1BQU0sR0FBdUIsU0FBUyxDQUFBO1FBQzFDLE1BQU0sZUFBZSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxLQUFLLFdBQVcsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFBO1FBRTVFLDRCQUE0QjtRQUM1QixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ25FLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtnQkFDOUIsWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLEdBQUc7b0JBQ0QsTUFBTSxDQUFDLEdBQUcsZUFBZSxFQUFFLENBQUMsR0FBVSxDQUFDLENBQUE7b0JBQ3ZDLHNCQUFzQjtvQkFDdEIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7b0JBQzdDLE9BQU8sQ0FBQyxDQUFBO2dCQUNWLENBQUM7YUFDRixDQUFDLENBQUE7WUFDRixPQUFPLEdBQUcsQ0FBQTtRQUNaLENBQUMsRUFBRSxFQUFZLENBQUMsQ0FBQTtRQUNoQixPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUMsQ0FBQTtJQUVELE1BQU0sTUFBTSxHQUFHO1FBQ2IsR0FBRyxTQUFTO1FBQ1osd0RBQXdEO1FBQ3hELFFBQVE7UUFDUiwyREFBMkQ7UUFDM0QsZ0JBQWdCO0tBQ2pCLENBQUE7SUFFRCxNQUFNLE9BQU8sR0FBeUI7UUFDcEMsR0FBRztZQUNELDBDQUEwQztZQUMxQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQVcsRUFBRSxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ2hELElBQUksRUFBRSxDQUFDLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDcEQsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFXLEVBQUUsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNsRCxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQVcsRUFBRSxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQ3BCO1FBQ2xDLEdBQUcsZUFBZTtLQUNuQixDQUFBO0lBRUQsT0FBTztRQUNMLE9BQU87UUFDUCxVQUFVO1FBQ1YsU0FBUztRQUNULE1BQU07S0FDUCxDQUFBO0FBQ0gsQ0FBQyxDQUFBIn0=
|
|
516
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWtlQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEtBQUssTUFBTSxNQUFNLDBCQUEwQixDQUFBO0FBQ2xELE9BQU8sRUFBaUYsZ0JBQWdCLEVBQTBFLE1BQU0scUJBQXFCLENBQUE7QUFDN00sT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQXVCLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFHeEcsT0FBTyxFQUFFLGFBQWEsRUFBd0IsTUFBTSwwQkFBMEIsQ0FBQTtBQUM5RSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDckUsT0FBTyxFQUF5QixnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBRS9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUVqRCxPQUFPLEVBQUUsUUFBUSxFQUFvQixlQUFlLEVBQVksR0FBRyxFQUFFLEtBQUssRUFBb0IsTUFBTSxLQUFLLENBQUE7QUFDekcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2xELE9BQU8sRUFBa0IsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFDN0UsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQzdDLE9BQU8sRUFBMEIsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFDekYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQy9DLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLFdBQVcsQ0FBQTtB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
|