@spiffcommerce/core 16.5.1-2 → 16.5.1-alpha.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/dist/index.d.ts +0 -23
- package/dist/index.js +626 -625
- package/dist/index.umd.cjs +23 -22
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { createHttpLink as Ct, InMemoryCache as Qt, ApolloClient as ut, from as mt, gql as
|
|
2
|
-
import { fetch as _A, getAttributesFromArrayBuffer as Fe, AssetType as le, StepType as I, StepAspectType as O, getFrameData as Ae, frameDataCache as pt, UpdateFramePattern as Me, calculateOffsets as ee, LayoutElementType as
|
|
1
|
+
import { createHttpLink as Ct, InMemoryCache as Qt, ApolloClient as ut, from as mt, gql as M } from "@apollo/client/core";
|
|
2
|
+
import { fetch as _A, getAttributesFromArrayBuffer as Fe, AssetType as le, StepType as I, StepAspectType as O, getFrameData as Ae, frameDataCache as pt, UpdateFramePattern as Me, calculateOffsets as ee, LayoutElementType as U, generate as k, CreateElementCommand as J, generateSVGWithUnknownColors as ye, svgObjectURL as FA, fetchAsString as Z, DeleteElementCommand as $, GroupCommand as G, generateDefaultRectangleFrameSvg as Be, GetSVGDimensions as It, patternImageDataCache as de, fetchAsArrayBuffer as Dt, findElement as MA, modifySVGWithElementProperties as ft, IllustrationColorCommand as jA, IllustrationCacheCommand as Ft, getFontMetrics as Mt, getPatternImageData as VA, FontColorCommand as yt, FontImageFillCommand as bA, applyTextTransformations as WA, determineCorrectFontSizeAndLines as IA, FontSourceCommand as we, loadFont as te, TextChangeCommand as Yt, FontSizeCommand as St, createElementNS as xt, createElement as wA, _loadFontExternalDataURL as ae, UpdateWorkflowStateCommand as Ee, CommandContext as Nt, createCanvas as yA, getSvgElement as Ye, LayoutRenderingPurpose as Se, renderPapyrusComponentAsString as xe, loadImage as Ne, getDomParser as Re, toBase64 as he, getVariant as Rt, generateFrameSVG as Pt, getDefaultVariant as UA, domParser as Pe, sanitizeSvgTree as He, traverse as Ht, xmlSerializer as Ue, CreateLayoutCommand as Ut, sortElementsByLayersWithIndex as Gt, AspectType as DA, rehydrateSerializedLayout as AA } from "@spiffcommerce/papyrus";
|
|
3
3
|
import { AssetType as Ts, BringForwardCommand as Ls, BringToBackCommand as Os, BringToFrontCommand as zs, CanvasCommand as Ks, CommandContext as js, CreateElementCommand as Vs, CreateLayoutCommand as Ws, DeleteElementCommand as Xs, FontAlignmentCommand as qs, FontColorCommand as Zs, FontSizeCommand as $s, FontSourceCommand as _s, GroupCommand as Ai, LayoutElementFactory as ei, LayoutElementType as ti, MoveCommand as ai, ResizeCommand as ni, RotateCommand as si, SendBackwardsCommand as ii, StepAspectType as oi, StepType as ri, TextChangeCommand as ci, UnitOfMeasurement as gi, dataUrlFromExternalUrl as li, determineCorrectFontSizeAndLines as Bi, findElement as di, frameDataCache as wi, generate as Ei, generateSVGWithUnknownColors as hi, getAttributesFromArrayBuffer as Ci, getAxisAlignedBoundingBox as Qi, getFrameData as ui, getSvgElement as mi, loadFont as pi, patternImageDataCache as Ii, registerFetchImplementation as Di, registerWindowImplementation as fi, rehydrateSerializedLayout as Fi, setCanvasModule as Mi } from "@spiffcommerce/papyrus";
|
|
4
4
|
import { setContext as vt } from "@apollo/client/link/context";
|
|
5
5
|
import { onError as kt } from "@apollo/client/link/error";
|
|
@@ -7,15 +7,15 @@ import { Pith as Ge } from "pith";
|
|
|
7
7
|
import ve from "lodash.debounce";
|
|
8
8
|
import ke from "lodash.isequal";
|
|
9
9
|
import gA from "lodash.clonedeep";
|
|
10
|
-
import { toString as
|
|
10
|
+
import { toString as Je } from "qrcode";
|
|
11
11
|
import { split as XA } from "unicode-default-word-boundary";
|
|
12
12
|
import ne from "svg-path-bbox";
|
|
13
|
-
class
|
|
13
|
+
class be extends Error {
|
|
14
14
|
constructor(A) {
|
|
15
15
|
super(A), this.name = this.constructor.name;
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
class dA extends
|
|
18
|
+
class dA extends be {
|
|
19
19
|
constructor(A) {
|
|
20
20
|
super(`ConfigurationError - ${A}`);
|
|
21
21
|
}
|
|
@@ -25,7 +25,7 @@ class YA extends dA {
|
|
|
25
25
|
super(`Option not Configured: ${A.stepTitle}`), this.optionId = (A == null ? void 0 : A.optionId) || "N/A";
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
-
class
|
|
28
|
+
class T extends dA {
|
|
29
29
|
constructor(A) {
|
|
30
30
|
super(`Panel not Found: ${A.panelId}`), this.panelId = (A == null ? void 0 : A.panelId) || "N/A";
|
|
31
31
|
}
|
|
@@ -45,7 +45,7 @@ class SA extends dA {
|
|
|
45
45
|
super(`Workflow Misconfiguration: ${A.stepName} - ${e}`), this.step = A;
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
-
class GA extends
|
|
48
|
+
class GA extends be {
|
|
49
49
|
constructor(A) {
|
|
50
50
|
super(`ImplementationError - ${A}`);
|
|
51
51
|
}
|
|
@@ -60,7 +60,7 @@ class rA extends GA {
|
|
|
60
60
|
super(`Parsing Error: ${A}`);
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
|
-
class
|
|
63
|
+
class H extends GA {
|
|
64
64
|
constructor(A) {
|
|
65
65
|
super(`Client Error: ${A}`);
|
|
66
66
|
}
|
|
@@ -70,7 +70,7 @@ class vA extends GA {
|
|
|
70
70
|
super(`Resource Generation Failed: ${A}`);
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
-
class
|
|
73
|
+
class Jt {
|
|
74
74
|
get(A) {
|
|
75
75
|
return localStorage.getItem(A) || void 0;
|
|
76
76
|
}
|
|
@@ -113,13 +113,13 @@ class Ce {
|
|
|
113
113
|
this.set(A, t);
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
|
-
const
|
|
116
|
+
const bt = () => {
|
|
117
117
|
try {
|
|
118
|
-
return localStorage ? new
|
|
118
|
+
return localStorage ? new Jt() : new Ce();
|
|
119
119
|
} catch {
|
|
120
120
|
return console.warn("Local storage was unavilable due to browser security settings. Using in-memory storage instead."), new Ce();
|
|
121
121
|
}
|
|
122
|
-
},
|
|
122
|
+
}, S = bt();
|
|
123
123
|
class Tt {
|
|
124
124
|
constructor() {
|
|
125
125
|
this.defaultServerUrl = "https://api.spiff.com.au", this.defaultServicesApiUrl = "https://services.spiff.com.au", this.defaultHubUrl = "https://hub.spiff.com.au", this.serverUrl = this.defaultServerUrl, this.servicesApiUrl = this.defaultServicesApiUrl, this.hubUrl = this.defaultHubUrl, this.serverUrlCallbacks = [];
|
|
@@ -190,8 +190,8 @@ class Kt {
|
|
|
190
190
|
uri: `${xA.getServerUrl()}/graphql`,
|
|
191
191
|
fetch: _A
|
|
192
192
|
}), e = vt(async (s, i) => {
|
|
193
|
-
const { headers: o } = i, r = o || {}, c = await zt(), B = i.bearer ?? c.bearer, l = i.partnerId ?? c.partnerId, d = i.activeIntegration ?? c.activeIntegration, E = i.transactionOwnerId ?? c.transactionOwnerId,
|
|
194
|
-
return B && (r.Authorization = `Bearer ${B}`), l && (r.partnerId = l), d && (r.activeIntegration = d), E && (r.transactionOwnerId = E),
|
|
193
|
+
const { headers: o } = i, r = o || {}, c = await zt(), B = i.bearer ?? c.bearer, l = i.partnerId ?? c.partnerId, d = i.activeIntegration ?? c.activeIntegration, E = i.transactionOwnerId ?? c.transactionOwnerId, h = i.customerToken ?? c.customerToken, w = i.applicationKey ?? c.applicationKey, Q = i.bundleOwnerId ?? c.bundleOwnerId;
|
|
194
|
+
return B && (r.Authorization = `Bearer ${B}`), l && (r.partnerId = l), d && (r.activeIntegration = d), E && (r.transactionOwnerId = E), h && (r.customerToken = h), w && (r["X-Application-Key"] = w), Q && (r.bundleOwnerId = Q), {
|
|
195
195
|
headers: r
|
|
196
196
|
};
|
|
197
197
|
}), t = kt(({ operation: s, graphQLErrors: i, networkError: o }) => {
|
|
@@ -251,14 +251,14 @@ class Kt {
|
|
|
251
251
|
});
|
|
252
252
|
}
|
|
253
253
|
}
|
|
254
|
-
const
|
|
254
|
+
const x = new Kt(), jt = M`
|
|
255
255
|
fragment AssetMetadataFields on Asset {
|
|
256
256
|
metadata {
|
|
257
257
|
key
|
|
258
258
|
value
|
|
259
259
|
}
|
|
260
260
|
}
|
|
261
|
-
`, kA = (g) =>
|
|
261
|
+
`, kA = (g) => M`
|
|
262
262
|
${g && jt || ""}
|
|
263
263
|
fragment AssetFields on Asset {
|
|
264
264
|
name
|
|
@@ -273,14 +273,14 @@ const N = new Kt(), jt = y`
|
|
|
273
273
|
}
|
|
274
274
|
${g && "...AssetMetadataFields" || ""}
|
|
275
275
|
}
|
|
276
|
-
`, Vt =
|
|
276
|
+
`, Vt = M`
|
|
277
277
|
${kA(!1)}
|
|
278
278
|
query GetAssets($keys: [String]!) {
|
|
279
279
|
assets(keys: $keys) {
|
|
280
280
|
...AssetFields
|
|
281
281
|
}
|
|
282
282
|
}
|
|
283
|
-
`, se =
|
|
283
|
+
`, se = M`
|
|
284
284
|
fragment MaterialFields on Material {
|
|
285
285
|
id
|
|
286
286
|
name
|
|
@@ -321,14 +321,14 @@ const N = new Kt(), jt = y`
|
|
|
321
321
|
fileLink
|
|
322
322
|
}
|
|
323
323
|
}
|
|
324
|
-
`, Wt =
|
|
324
|
+
`, Wt = M`
|
|
325
325
|
${se}
|
|
326
326
|
query GetMaterials($ids: [String]) {
|
|
327
327
|
materials(id: $ids) {
|
|
328
328
|
...MaterialFields
|
|
329
329
|
}
|
|
330
330
|
}
|
|
331
|
-
`, Xt =
|
|
331
|
+
`, Xt = M`
|
|
332
332
|
mutation CreateAsset($name: String!, $type: String!, $mimeType: String!, $anonymous: Boolean, $temporary: Boolean) {
|
|
333
333
|
assetCreate(name: $name, type: $type, mimeType: $mimeType, anonymous: $anonymous, temporary: $temporary) {
|
|
334
334
|
uploadUrl
|
|
@@ -342,14 +342,14 @@ const N = new Kt(), jt = y`
|
|
|
342
342
|
}
|
|
343
343
|
}
|
|
344
344
|
}
|
|
345
|
-
`, Ke = async (g) => (await
|
|
345
|
+
`, Ke = async (g) => (await x.getShadowGraphqlClient().query({
|
|
346
346
|
query: Vt,
|
|
347
347
|
errorPolicy: "all",
|
|
348
348
|
fetchPolicy: "no-cache",
|
|
349
349
|
variables: {
|
|
350
350
|
keys: g
|
|
351
351
|
}
|
|
352
|
-
})).data.assets, qt = async (g) => (await
|
|
352
|
+
})).data.assets, qt = async (g) => (await x.getShadowGraphqlClient().query({
|
|
353
353
|
query: Wt,
|
|
354
354
|
errorPolicy: "all",
|
|
355
355
|
fetchPolicy: "no-cache",
|
|
@@ -358,7 +358,7 @@ const N = new Kt(), jt = y`
|
|
|
358
358
|
}
|
|
359
359
|
})).data.materials, Zt = async (g, A, e, t, a) => {
|
|
360
360
|
var s;
|
|
361
|
-
return (s = (await
|
|
361
|
+
return (s = (await x.getShadowGraphqlClient().mutate({
|
|
362
362
|
mutation: Xt,
|
|
363
363
|
errorPolicy: "all",
|
|
364
364
|
fetchPolicy: "no-cache",
|
|
@@ -453,7 +453,7 @@ class $t {
|
|
|
453
453
|
name: A.name,
|
|
454
454
|
blob: new Blob([A], { type: A.type })
|
|
455
455
|
};
|
|
456
|
-
return await
|
|
456
|
+
return await b.uploadAssetWithProgress(n, a, e, !0);
|
|
457
457
|
}
|
|
458
458
|
}
|
|
459
459
|
removePersistedAsset(A) {
|
|
@@ -502,31 +502,31 @@ class LA {
|
|
|
502
502
|
}
|
|
503
503
|
const e = /* @__PURE__ */ new Map();
|
|
504
504
|
e.set(A.key || "", A.fileLink);
|
|
505
|
-
const t =
|
|
505
|
+
const t = S.getMap(sA);
|
|
506
506
|
t && t.forEach((a, n) => {
|
|
507
507
|
e.set(n, a);
|
|
508
|
-
}),
|
|
508
|
+
}), S.setMap(sA, e);
|
|
509
509
|
}
|
|
510
510
|
/**
|
|
511
511
|
* Remove an existing asset from persistence. Noop if the asset doesn't exist.
|
|
512
512
|
* @param assetKey The key to remove.
|
|
513
513
|
*/
|
|
514
514
|
static remove(A) {
|
|
515
|
-
const e =
|
|
515
|
+
const e = S.getMap(sA);
|
|
516
516
|
if (!e)
|
|
517
517
|
return;
|
|
518
518
|
const t = Array.from(e.entries()).find((a) => a[0] === A);
|
|
519
|
-
t && (e.delete(t[0]),
|
|
519
|
+
t && (e.delete(t[0]), S.setMap(sA, e));
|
|
520
520
|
}
|
|
521
521
|
/**
|
|
522
522
|
* Get a list of all persisted assets.
|
|
523
523
|
*/
|
|
524
524
|
static list() {
|
|
525
|
-
const A =
|
|
525
|
+
const A = S.getMap(sA);
|
|
526
526
|
return A ? Array.from(A.entries()).map((e) => ({ assetKey: e[0], src: e[1] })) : [];
|
|
527
527
|
}
|
|
528
528
|
}
|
|
529
|
-
const
|
|
529
|
+
const b = new $t();
|
|
530
530
|
class _t {
|
|
531
531
|
constructor() {
|
|
532
532
|
this.cache = {};
|
|
@@ -546,7 +546,7 @@ class _t {
|
|
|
546
546
|
return this.cache[t] = e, e;
|
|
547
547
|
}
|
|
548
548
|
}
|
|
549
|
-
const BA = new _t(), je =
|
|
549
|
+
const BA = new _t(), je = M`
|
|
550
550
|
fragment OptionFields on Option {
|
|
551
551
|
id
|
|
552
552
|
name
|
|
@@ -586,7 +586,7 @@ const BA = new _t(), je = y`
|
|
|
586
586
|
...AssetFields
|
|
587
587
|
}
|
|
588
588
|
}
|
|
589
|
-
`, Aa =
|
|
589
|
+
`, Aa = M`
|
|
590
590
|
${kA(!1)}
|
|
591
591
|
${se}
|
|
592
592
|
${je}
|
|
@@ -596,7 +596,7 @@ const BA = new _t(), je = y`
|
|
|
596
596
|
}
|
|
597
597
|
}
|
|
598
598
|
`, ea = async (g) => {
|
|
599
|
-
const A = await
|
|
599
|
+
const A = await x.getShadowGraphqlClient().query({
|
|
600
600
|
query: Aa,
|
|
601
601
|
errorPolicy: "all",
|
|
602
602
|
fetchPolicy: "no-cache",
|
|
@@ -606,8 +606,8 @@ const BA = new _t(), je = y`
|
|
|
606
606
|
});
|
|
607
607
|
return A.data.options.forEach((e) => {
|
|
608
608
|
var t, a;
|
|
609
|
-
(t = e.defaultVariant) != null && t.asset &&
|
|
610
|
-
n.asset &&
|
|
609
|
+
(t = e.defaultVariant) != null && t.asset && b.cacheAsset(e.defaultVariant.asset), e.colorProfile && b.cacheAsset(e.colorProfile), (a = e.variants) == null || a.forEach((n) => {
|
|
610
|
+
n.asset && b.cacheAsset(n.asset), n.displayImage && b.cacheAsset(n.displayImage), n.thumbnail && b.cacheAsset(n.thumbnail), n.material && b.cacheMaterial(n.material);
|
|
611
611
|
});
|
|
612
612
|
}), A.data.options;
|
|
613
613
|
}, ta = async (g, A) => (await A).find((t) => t.id === g), aa = async (g) => {
|
|
@@ -674,7 +674,7 @@ class na {
|
|
|
674
674
|
}
|
|
675
675
|
const z = new na();
|
|
676
676
|
var sa = /* @__PURE__ */ ((g) => (g[g.Orbit = 0] = "Orbit", g[g.Pan = 1] = "Pan", g))(sa || {}), ia = /* @__PURE__ */ ((g) => (g.PerVariation = "PerVariation", g.BaseProduct = "BaseProduct", g))(ia || {}), oa = /* @__PURE__ */ ((g) => (g.Manual = "Manual", g.OnStart = "OnStart", g.OnQuit = "OnQuit", g.OnEnd = "OnEnd", g))(oa || {}), ra = /* @__PURE__ */ ((g) => (g.Email = "Email", g.FirstName = "FirstName", g.LastName = "LastName", g.Phone = "Phone", g))(ra || {}), NA = /* @__PURE__ */ ((g) => (g.Owner = "Owner", g.Approver = "Approver", g.Editor = "Editor", g.Viewer = "Viewer", g))(NA || {});
|
|
677
|
-
const ue =
|
|
677
|
+
const ue = M`
|
|
678
678
|
mutation CreateTransaction(
|
|
679
679
|
$integrationProductId: String
|
|
680
680
|
$externalIntegrationId: String
|
|
@@ -768,7 +768,7 @@ const ue = y`
|
|
|
768
768
|
}
|
|
769
769
|
}
|
|
770
770
|
}
|
|
771
|
-
`, ca =
|
|
771
|
+
`, ca = M`
|
|
772
772
|
mutation CreateTransactions($inputs: [TransactionCreateInput]!) {
|
|
773
773
|
transactionCreateMany(inputs: $inputs) {
|
|
774
774
|
id
|
|
@@ -848,7 +848,7 @@ const ue = y`
|
|
|
848
848
|
}
|
|
849
849
|
}
|
|
850
850
|
}
|
|
851
|
-
`, ga =
|
|
851
|
+
`, ga = M`
|
|
852
852
|
mutation ClaimTransaction($id: String!) {
|
|
853
853
|
transactionClaim(id: $id) {
|
|
854
854
|
id
|
|
@@ -928,7 +928,7 @@ const ue = y`
|
|
|
928
928
|
}
|
|
929
929
|
}
|
|
930
930
|
}
|
|
931
|
-
`, EA =
|
|
931
|
+
`, EA = M`
|
|
932
932
|
query ReadTransactions($ids: [String]!) {
|
|
933
933
|
transactions(ids: $ids) {
|
|
934
934
|
bulk
|
|
@@ -1015,26 +1015,26 @@ const ue = y`
|
|
|
1015
1015
|
}
|
|
1016
1016
|
}
|
|
1017
1017
|
}
|
|
1018
|
-
`, la =
|
|
1018
|
+
`, la = M`
|
|
1019
1019
|
mutation UpdateTransactionWorkflowState($id: String!, $workflowState: String!) {
|
|
1020
1020
|
transactionUpdate(id: $id, workflowState: $workflowState) {
|
|
1021
1021
|
id
|
|
1022
1022
|
}
|
|
1023
1023
|
}
|
|
1024
|
-
`, Ba =
|
|
1024
|
+
`, Ba = M`
|
|
1025
1025
|
mutation UpdateTransactionWorkflowId($id: String!, $workflowId: String!) {
|
|
1026
1026
|
transactionUpdate(id: $id, workflowId: $workflowId) {
|
|
1027
1027
|
id
|
|
1028
1028
|
}
|
|
1029
1029
|
}
|
|
1030
|
-
`, da =
|
|
1030
|
+
`, da = M`
|
|
1031
1031
|
mutation UpdateVariationRecords($transactionId: String!, $updates: [VariationRecordUpdateInput]!) {
|
|
1032
1032
|
variationRecordsUpdate(transactionId: $transactionId, updates: $updates) {
|
|
1033
1033
|
recordNumber
|
|
1034
1034
|
}
|
|
1035
1035
|
}
|
|
1036
1036
|
`;
|
|
1037
|
-
|
|
1037
|
+
M`
|
|
1038
1038
|
query ReadTransactionForDesignCreation($id: String!) {
|
|
1039
1039
|
transactions(ids: [$id]) {
|
|
1040
1040
|
id
|
|
@@ -1087,7 +1087,7 @@ y`
|
|
|
1087
1087
|
}
|
|
1088
1088
|
}
|
|
1089
1089
|
`;
|
|
1090
|
-
const Ve =
|
|
1090
|
+
const Ve = M`
|
|
1091
1091
|
query ReadWorkflowStates($ids: [String]!) {
|
|
1092
1092
|
transactions(ids: $ids) {
|
|
1093
1093
|
id
|
|
@@ -1317,22 +1317,24 @@ const Ve = y`
|
|
|
1317
1317
|
silentSteps: g.silentSteps.filter((t) => nA(t, A))
|
|
1318
1318
|
};
|
|
1319
1319
|
return e.silentSteps.length === 0 && e.renderableSteps.length === 0 ? null : e;
|
|
1320
|
-
}, aA = (g, A) => g.map((e) => ha(e, A)).filter((e) => e !== null), Ca = async (g, A
|
|
1321
|
-
var
|
|
1322
|
-
const
|
|
1323
|
-
for (const
|
|
1324
|
-
for (const
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1320
|
+
}, aA = (g, A) => g.map((e) => ha(e, A)).filter((e) => e !== null), Ca = async (g, A) => {
|
|
1321
|
+
var n;
|
|
1322
|
+
const e = aA(g, A), t = [];
|
|
1323
|
+
for (const s of e)
|
|
1324
|
+
for (const i of s.renderableSteps)
|
|
1325
|
+
if (i.type === I.Model || i.type === I.Material || i.type === I.Picture || i.type === I.Shape) {
|
|
1326
|
+
const o = (((n = i.option) == null ? void 0 : n.variants) || []).length;
|
|
1327
|
+
o && o > 1 && t.push(i.stepName);
|
|
1328
|
+
} else
|
|
1329
|
+
t.push(i.stepName);
|
|
1330
|
+
const a = e.filter((s) => s.renderableSteps.filter(
|
|
1331
|
+
(o) => t.includes(o.stepName)
|
|
1330
1332
|
).length > 0);
|
|
1331
|
-
for (const
|
|
1332
|
-
|
|
1333
|
-
(
|
|
1333
|
+
for (const s of a)
|
|
1334
|
+
s.renderableSteps = s.renderableSteps.filter(
|
|
1335
|
+
(i) => t.includes(i.stepName)
|
|
1334
1336
|
);
|
|
1335
|
-
return
|
|
1337
|
+
return a;
|
|
1336
1338
|
};
|
|
1337
1339
|
class Xe {
|
|
1338
1340
|
constructor() {
|
|
@@ -1592,7 +1594,7 @@ class me {
|
|
|
1592
1594
|
var o, r, c, B;
|
|
1593
1595
|
const n = this.layouts.find((l) => l.panelId === a.panelId);
|
|
1594
1596
|
if (!n)
|
|
1595
|
-
throw new
|
|
1597
|
+
throw new T(a);
|
|
1596
1598
|
let s = "";
|
|
1597
1599
|
if (this.configuration.type === I.ProductOverlay) {
|
|
1598
1600
|
let l = "";
|
|
@@ -1600,7 +1602,7 @@ class me {
|
|
|
1600
1602
|
throw new SA(this.configuration, "Couldn't find an asset for product overlay step");
|
|
1601
1603
|
}
|
|
1602
1604
|
const i = this.evaluateAssetType();
|
|
1603
|
-
if (i ===
|
|
1605
|
+
if (i === U.Image) {
|
|
1604
1606
|
const l = this.configuration.type === I.SilentIllustration ? (r = this.configuration.data.asset) == null ? void 0 : r.fileLink : (c = this.product) == null ? void 0 : c.overlayImageUrl;
|
|
1605
1607
|
if (!l)
|
|
1606
1608
|
throw new Error("Undefined raster silent step source");
|
|
@@ -1634,10 +1636,10 @@ class me {
|
|
|
1634
1636
|
Q("Undefined vector silent step source");
|
|
1635
1637
|
return;
|
|
1636
1638
|
}
|
|
1637
|
-
Z(l, !0).then((
|
|
1638
|
-
w(
|
|
1639
|
-
}).catch((
|
|
1640
|
-
}))()),
|
|
1639
|
+
Z(l, !0).then((C) => {
|
|
1640
|
+
w(C);
|
|
1641
|
+
}).catch((C) => console.error(C));
|
|
1642
|
+
}))()), h = {
|
|
1641
1643
|
stepName: this.configuration.stepName,
|
|
1642
1644
|
id: k(),
|
|
1643
1645
|
cachedObjectURL: await FA(E.svg),
|
|
@@ -1658,10 +1660,10 @@ class me {
|
|
|
1658
1660
|
};
|
|
1659
1661
|
return {
|
|
1660
1662
|
regionElement: {
|
|
1661
|
-
id:
|
|
1663
|
+
id: h.id,
|
|
1662
1664
|
region: a
|
|
1663
1665
|
},
|
|
1664
|
-
command: new J(
|
|
1666
|
+
command: new J(h, n)
|
|
1665
1667
|
};
|
|
1666
1668
|
}
|
|
1667
1669
|
}, this.configuration = A, this.layouts = e, this.product = t || void 0;
|
|
@@ -1676,7 +1678,7 @@ class me {
|
|
|
1676
1678
|
return this.configuration.type === I.ProductOverlay ? Promise.all(
|
|
1677
1679
|
this.configuration.data.regions.map((A) => {
|
|
1678
1680
|
if (!this.layouts.find((t) => A.panelId === t.panelId))
|
|
1679
|
-
throw new
|
|
1681
|
+
throw new T(A);
|
|
1680
1682
|
return this.processRegion(A);
|
|
1681
1683
|
})
|
|
1682
1684
|
) : Promise.reject("Unknown silent step. This is a bug");
|
|
@@ -1684,7 +1686,7 @@ class me {
|
|
|
1684
1686
|
evaluateAssetType() {
|
|
1685
1687
|
var e, t, a;
|
|
1686
1688
|
const A = this.configuration.type === I.ProductOverlay && ((e = this.product) != null && e.overlayImageUrl) ? this.product.overlayImageUrl.toLowerCase() : (a = (t = this.configuration.data.asset) == null ? void 0 : t.fileLink) == null ? void 0 : a.toLowerCase().split("?")[0];
|
|
1687
|
-
return A != null && A.startsWith("data:image/png") || A != null && A.endsWith(".jpeg") || A != null && A.endsWith(".jpg") || A != null && A.endsWith(".png") ?
|
|
1689
|
+
return A != null && A.startsWith("data:image/png") || A != null && A.endsWith(".jpeg") || A != null && A.endsWith(".jpg") || A != null && A.endsWith(".png") ? U.Image : A != null && A.endsWith(".svg") || A != null && A.startsWith("image/svg+xml") ? U.Illustration : U.Illustration;
|
|
1688
1690
|
}
|
|
1689
1691
|
}
|
|
1690
1692
|
const ma = async (g) => {
|
|
@@ -1745,19 +1747,19 @@ class pa {
|
|
|
1745
1747
|
async regenerateQRCode(A, e, t, a, n, s, i, o, r) {
|
|
1746
1748
|
if (!e && t !== "" && a === "") {
|
|
1747
1749
|
const c = async () => {
|
|
1748
|
-
var
|
|
1749
|
-
const
|
|
1750
|
-
return { asset:
|
|
1751
|
-
}, B = await new Promise((
|
|
1750
|
+
var D, p;
|
|
1751
|
+
const C = (await Ke([t]))[0], u = (p = (D = C == null ? void 0 : C.versions) == null ? void 0 : D.find((f) => f.name === "mpeg4")) == null ? void 0 : p.link;
|
|
1752
|
+
return { asset: C, link: u };
|
|
1753
|
+
}, B = await new Promise((C, u) => {
|
|
1752
1754
|
new Ze(
|
|
1753
1755
|
async () => !!(await c()).link,
|
|
1754
1756
|
async () => {
|
|
1755
|
-
const
|
|
1756
|
-
if (!
|
|
1757
|
-
throw new lA(
|
|
1758
|
-
|
|
1757
|
+
const D = await c();
|
|
1758
|
+
if (!D.link || !D.link)
|
|
1759
|
+
throw new lA(D.asset);
|
|
1760
|
+
C({
|
|
1759
1761
|
rel: "mpeg4",
|
|
1760
|
-
href:
|
|
1762
|
+
href: D.link
|
|
1761
1763
|
});
|
|
1762
1764
|
},
|
|
1763
1765
|
() => {
|
|
@@ -1767,19 +1769,19 @@ class pa {
|
|
|
1767
1769
|
40
|
|
1768
1770
|
);
|
|
1769
1771
|
});
|
|
1770
|
-
A.forEach((
|
|
1772
|
+
A.forEach((C) => o(new $(C.id)));
|
|
1771
1773
|
const l = s.data.baseUrl.slice(0, 4) === "http" ? "" : "https://", d = new URL(l + s.data.baseUrl);
|
|
1772
1774
|
d.searchParams.append("video", btoa(JSON.stringify([B]))), d.pathname = d.pathname + (d.pathname.slice(-1) === "/" ? "" : "/");
|
|
1773
1775
|
const E = d.toString();
|
|
1774
1776
|
if (E.length >= 2e3)
|
|
1775
1777
|
throw new vA("Cannot create QR code, URL too long.");
|
|
1776
|
-
const
|
|
1777
|
-
if (i(
|
|
1778
|
+
const h = await ma(E);
|
|
1779
|
+
if (i(h), !s.data || !s.data.regions)
|
|
1778
1780
|
throw new SA(s, "Missing regions.");
|
|
1779
|
-
const w = await this.regionElements(s), Q = await this.command(
|
|
1781
|
+
const w = await this.regionElements(s), Q = await this.command(h, w, n, s.stepName);
|
|
1780
1782
|
Q && (Q.command && n.getCommandDispatcher()(Q.command), Q.followup && await Q.followup()), await n.setSelectionsAndElements(s.stepName, [], w, async () => {
|
|
1781
1783
|
n.updateStorage(s.stepName, {
|
|
1782
|
-
videoShortUrl:
|
|
1784
|
+
videoShortUrl: h,
|
|
1783
1785
|
videoUrl: a
|
|
1784
1786
|
}), r(!1);
|
|
1785
1787
|
});
|
|
@@ -1791,10 +1793,10 @@ class pa {
|
|
|
1791
1793
|
return A.data.regions.map(e);
|
|
1792
1794
|
}
|
|
1793
1795
|
async command(A, e, t, a) {
|
|
1794
|
-
const n = t.getLayouts(), i = `data:image/svg+xml;base64,${btoa(await
|
|
1796
|
+
const n = t.getLayouts(), i = `data:image/svg+xml;base64,${btoa(await Je(A, { type: "svg" }))}`, o = e.map((r) => {
|
|
1795
1797
|
const c = r.region, B = n.find((l) => l.panelId === (c == null ? void 0 : c.panelId));
|
|
1796
1798
|
if (!B && c)
|
|
1797
|
-
throw new
|
|
1799
|
+
throw new T(c);
|
|
1798
1800
|
if (B && !c)
|
|
1799
1801
|
throw new Error("Region not found");
|
|
1800
1802
|
if (!B || !c)
|
|
@@ -1805,7 +1807,7 @@ class pa {
|
|
|
1805
1807
|
stepName: a,
|
|
1806
1808
|
id: r.id,
|
|
1807
1809
|
src: i,
|
|
1808
|
-
type:
|
|
1810
|
+
type: U.Image,
|
|
1809
1811
|
y: c.top,
|
|
1810
1812
|
x: c.left,
|
|
1811
1813
|
width: c.width,
|
|
@@ -1871,13 +1873,13 @@ class Da {
|
|
|
1871
1873
|
}
|
|
1872
1874
|
if (a) {
|
|
1873
1875
|
const c = async () => {
|
|
1874
|
-
var d, E,
|
|
1876
|
+
var d, E, h, w;
|
|
1875
1877
|
const B = (d = a.storage) == null ? void 0 : d.framePatternSrc, l = (E = a.storage) == null ? void 0 : E.frameOffsetsList;
|
|
1876
1878
|
if (e.updateMetadata(A.stepName, {
|
|
1877
1879
|
frameOffsetsList: l,
|
|
1878
1880
|
framePatternSrc: B
|
|
1879
1881
|
}), B) {
|
|
1880
|
-
const Q = (
|
|
1882
|
+
const Q = (h = e.getStepSpecificServices(A.stepName)) == null ? void 0 : h.frameService;
|
|
1881
1883
|
if (!Q)
|
|
1882
1884
|
throw new Error("Frame service unavailable, cannot load pattern!");
|
|
1883
1885
|
await this.loadPatternFromString(B, Q), e.updateMetadata(A.stepName, { image: B }), e.updateStorage(A.stepName, {
|
|
@@ -1917,11 +1919,11 @@ class Da {
|
|
|
1917
1919
|
new Ze(
|
|
1918
1920
|
async () => {
|
|
1919
1921
|
var o;
|
|
1920
|
-
const s = (o = (await
|
|
1922
|
+
const s = (o = (await b.getLocalOrFromServer(e.key || "")).versions) == null ? void 0 : o.find((r) => r.name === "svg");
|
|
1921
1923
|
return s ? (await fetch(s.link)).status === 200 : !1;
|
|
1922
1924
|
},
|
|
1923
1925
|
() => {
|
|
1924
|
-
|
|
1926
|
+
b.getLocalOrFromServer(e.key || "").then((n) => {
|
|
1925
1927
|
this.loadPatternFromAsset(n, A, t);
|
|
1926
1928
|
});
|
|
1927
1929
|
},
|
|
@@ -1945,7 +1947,7 @@ class Da {
|
|
|
1945
1947
|
return new J(
|
|
1946
1948
|
{
|
|
1947
1949
|
id: A,
|
|
1948
|
-
type:
|
|
1950
|
+
type: U.Frame,
|
|
1949
1951
|
x: e.left,
|
|
1950
1952
|
y: e.top,
|
|
1951
1953
|
width: e.width,
|
|
@@ -2000,22 +2002,22 @@ class Da {
|
|
|
2000
2002
|
n && n(!0);
|
|
2001
2003
|
const r = await Promise.all(
|
|
2002
2004
|
A.data.regions.map(async (d, E) => {
|
|
2003
|
-
const
|
|
2005
|
+
const h = await Ae(o[E]), w = i.getImageData(), Q = t.map((m) => new $(m.id)), C = w ? ee(w, h) : void 0, u = w ? {
|
|
2004
2006
|
id: k(),
|
|
2005
2007
|
src: w.src,
|
|
2006
|
-
x: (
|
|
2007
|
-
y: (
|
|
2008
|
+
x: (C == null ? void 0 : C.x) || 0,
|
|
2009
|
+
y: (C == null ? void 0 : C.y) || 0,
|
|
2008
2010
|
width: w.width,
|
|
2009
2011
|
height: w.height,
|
|
2010
|
-
scaleX: (
|
|
2011
|
-
scaleY: (
|
|
2012
|
+
scaleX: (C == null ? void 0 : C.zoom) || 1,
|
|
2013
|
+
scaleY: (C == null ? void 0 : C.zoom) || 1,
|
|
2012
2014
|
rotation: 0
|
|
2013
|
-
} : void 0,
|
|
2014
|
-
if (!
|
|
2015
|
-
throw new
|
|
2015
|
+
} : void 0, D = k(), f = a.getLayouts().find((m) => m.panelId === d.panelId);
|
|
2016
|
+
if (!f)
|
|
2017
|
+
throw new T(d);
|
|
2016
2018
|
return {
|
|
2017
|
-
command: this.getCreateElementCommand(
|
|
2018
|
-
frameData:
|
|
2019
|
+
command: this.getCreateElementCommand(D, d, f, {
|
|
2020
|
+
frameData: h,
|
|
2019
2021
|
pattern: u,
|
|
2020
2022
|
disablePlaceholder: A.data.disablePlaceholder,
|
|
2021
2023
|
focalBlur: A.data.focalBlur,
|
|
@@ -2024,7 +2026,7 @@ class Da {
|
|
|
2024
2026
|
stepName: A.stepName
|
|
2025
2027
|
}),
|
|
2026
2028
|
regionEl: {
|
|
2027
|
-
id:
|
|
2029
|
+
id: D,
|
|
2028
2030
|
region: d
|
|
2029
2031
|
},
|
|
2030
2032
|
removeExistingCommands: Q
|
|
@@ -2095,7 +2097,7 @@ class fa {
|
|
|
2095
2097
|
src: a.src,
|
|
2096
2098
|
svg: a.svg.svg,
|
|
2097
2099
|
cachedObjectURL: a.objectURL,
|
|
2098
|
-
type:
|
|
2100
|
+
type: U.Illustration,
|
|
2099
2101
|
y: e.top,
|
|
2100
2102
|
x: e.left,
|
|
2101
2103
|
rotation: e.rotation,
|
|
@@ -2192,32 +2194,32 @@ class fa {
|
|
|
2192
2194
|
return;
|
|
2193
2195
|
const s = MA(
|
|
2194
2196
|
e[0].id,
|
|
2195
|
-
a().map((
|
|
2197
|
+
a().map((h) => h.layoutState)
|
|
2196
2198
|
), i = { ...s.colors }, o = {};
|
|
2197
|
-
Object.entries(i).forEach(([
|
|
2198
|
-
const Q = { browserValue: w.browserValue },
|
|
2199
|
-
|
|
2199
|
+
Object.entries(i).forEach(([h, w]) => {
|
|
2200
|
+
const Q = { browserValue: w.browserValue }, C = w.spotColor;
|
|
2201
|
+
C && (Q.spotColor = { profileName: C.profileName, namedColor: C.namedColor }), o[h] = Q;
|
|
2200
2202
|
});
|
|
2201
|
-
for (const [
|
|
2202
|
-
i[
|
|
2203
|
-
let r = Array.from(Object.values(i)).map((
|
|
2203
|
+
for (const [h, w] of n.entries())
|
|
2204
|
+
i[h] = { browserValue: w, spotColor: (d = i[h]) == null ? void 0 : d.spotColor }, o[h] = { browserValue: w };
|
|
2205
|
+
let r = Array.from(Object.values(i)).map((h) => h.browserValue);
|
|
2204
2206
|
const c = A.data.colorOption;
|
|
2205
|
-
c && ((E = c.variants) == null || E.forEach((
|
|
2207
|
+
c && ((E = c.variants) == null || E.forEach((h) => {
|
|
2206
2208
|
r = r.map((w) => {
|
|
2207
2209
|
var Q;
|
|
2208
|
-
return w.toLowerCase() === ((Q =
|
|
2210
|
+
return w.toLowerCase() === ((Q = h.color) == null ? void 0 : Q.toLowerCase()) ? h.name : w;
|
|
2209
2211
|
});
|
|
2210
2212
|
})), t.updateMetadata(A.stepName, { colors: r });
|
|
2211
2213
|
const B = /* @__PURE__ */ new Map();
|
|
2212
|
-
if (Object.entries(i).forEach(([
|
|
2213
|
-
B.set(
|
|
2214
|
+
if (Object.entries(i).forEach(([h, w]) => {
|
|
2215
|
+
B.set(h, w.browserValue);
|
|
2214
2216
|
}), !s.svg)
|
|
2215
2217
|
throw new Error("Colors changed before SVG loaded. This should never happen!");
|
|
2216
2218
|
const l = await this.changeColorsCommand(
|
|
2217
2219
|
s.svg,
|
|
2218
2220
|
s.width,
|
|
2219
2221
|
s.height,
|
|
2220
|
-
e.map((
|
|
2222
|
+
e.map((h) => h.id),
|
|
2221
2223
|
B
|
|
2222
2224
|
);
|
|
2223
2225
|
t.updateStorage(A.stepName, {
|
|
@@ -2233,7 +2235,7 @@ class fa {
|
|
|
2233
2235
|
if (!A.data || !A.data.regions)
|
|
2234
2236
|
throw new SA(A, "Missing regions.");
|
|
2235
2237
|
a(!0);
|
|
2236
|
-
const s = t.map((
|
|
2238
|
+
const s = t.map((C) => new $(C.id));
|
|
2237
2239
|
n.setMandatoryFulfilled(A.stepName, !1);
|
|
2238
2240
|
const i = e.asset;
|
|
2239
2241
|
if (!i)
|
|
@@ -2241,35 +2243,35 @@ class fa {
|
|
|
2241
2243
|
const o = i.fileLink;
|
|
2242
2244
|
if (!o)
|
|
2243
2245
|
throw new lA(i);
|
|
2244
|
-
const r = await ye(await this.getIllustrationBody(o)), c = await FA(r.svg), B = (
|
|
2245
|
-
const u = n.getLayouts().find((p) => p.panelId ===
|
|
2246
|
+
const r = await ye(await this.getIllustrationBody(o)), c = await FA(r.svg), B = (C) => {
|
|
2247
|
+
const u = n.getLayouts().find((p) => p.panelId === C.panelId);
|
|
2246
2248
|
if (!u)
|
|
2247
|
-
throw new
|
|
2248
|
-
const
|
|
2249
|
+
throw new T(C);
|
|
2250
|
+
const D = k();
|
|
2249
2251
|
return {
|
|
2250
|
-
regionElement: { id:
|
|
2251
|
-
command: this.getCreateElementCommand(
|
|
2252
|
+
regionElement: { id: D, region: C },
|
|
2253
|
+
command: this.getCreateElementCommand(D, C, u, {
|
|
2252
2254
|
stepName: A.stepName,
|
|
2253
2255
|
src: o,
|
|
2254
2256
|
objectURL: c,
|
|
2255
2257
|
svg: r
|
|
2256
2258
|
})
|
|
2257
2259
|
};
|
|
2258
|
-
}, l = A.data.regions.map(B), E = [...l.map((
|
|
2259
|
-
let
|
|
2260
|
+
}, l = A.data.regions.map(B), E = [...l.map((C) => C.command), ...s];
|
|
2261
|
+
let h = Array.from(Object.values(r.colors)).map((C) => C.browserValue);
|
|
2260
2262
|
const w = A.data.colorOption;
|
|
2261
|
-
return w && ((Q = w.variants) == null || Q.forEach((
|
|
2262
|
-
|
|
2263
|
-
var
|
|
2264
|
-
return u.toLowerCase() === ((
|
|
2263
|
+
return w && ((Q = w.variants) == null || Q.forEach((C) => {
|
|
2264
|
+
h = h.map((u) => {
|
|
2265
|
+
var D;
|
|
2266
|
+
return u.toLowerCase() === ((D = C.color) == null ? void 0 : D.toLowerCase()) ? C.name : u;
|
|
2265
2267
|
});
|
|
2266
|
-
})), n.updateMetadata(A.stepName, { colors:
|
|
2268
|
+
})), n.updateMetadata(A.stepName, { colors: h }), {
|
|
2267
2269
|
command: new G(E),
|
|
2268
2270
|
followup: async () => {
|
|
2269
2271
|
await n.setSelectionsAndElements(
|
|
2270
2272
|
A.stepName,
|
|
2271
2273
|
[e],
|
|
2272
|
-
l.map((
|
|
2274
|
+
l.map((C) => C.regionElement),
|
|
2273
2275
|
async () => {
|
|
2274
2276
|
n.setMandatoryFulfilled(A.stepName, !0), a(!1);
|
|
2275
2277
|
}
|
|
@@ -2315,8 +2317,8 @@ class Fa {
|
|
|
2315
2317
|
async () => {
|
|
2316
2318
|
const E = e.getModelContainer();
|
|
2317
2319
|
if (E) {
|
|
2318
|
-
const
|
|
2319
|
-
Promise.all(
|
|
2320
|
+
const h = A.data.targetMaterials.map((w) => E.applyMaterialVariant(w, o.id || "", l || {}));
|
|
2321
|
+
Promise.all(h).then(
|
|
2320
2322
|
() => e.setMandatoryFulfilled(A.stepName, !0)
|
|
2321
2323
|
);
|
|
2322
2324
|
}
|
|
@@ -2388,13 +2390,13 @@ class Ma {
|
|
|
2388
2390
|
var E;
|
|
2389
2391
|
const d = e.getModelContainer();
|
|
2390
2392
|
if (d && A.option) {
|
|
2391
|
-
const
|
|
2392
|
-
if (!
|
|
2393
|
+
const h = (E = B.asset) == null ? void 0 : E.fileLink;
|
|
2394
|
+
if (!h)
|
|
2393
2395
|
throw new _(B);
|
|
2394
2396
|
await d.applyModelVariant(
|
|
2395
2397
|
A.stepName || "",
|
|
2396
2398
|
{
|
|
2397
|
-
model:
|
|
2399
|
+
model: h,
|
|
2398
2400
|
contextService: e.getLayoutPreviewService()
|
|
2399
2401
|
},
|
|
2400
2402
|
A.data.replaceProductModel || !1
|
|
@@ -2474,7 +2476,7 @@ class ya {
|
|
|
2474
2476
|
return console.error("Missing configuration."), null;
|
|
2475
2477
|
t.updateStorage(A.stepName, { text: e });
|
|
2476
2478
|
const r = (B, l, d) => {
|
|
2477
|
-
const E = d || k(), w = t.getLayouts().find((
|
|
2479
|
+
const E = d || k(), w = t.getLayouts().find((C) => C.panelId === l.panelId);
|
|
2478
2480
|
if (!w)
|
|
2479
2481
|
return console.error(`Can not find layout for region: ${l.panelId}`), null;
|
|
2480
2482
|
const Q = [];
|
|
@@ -2486,7 +2488,7 @@ class ya {
|
|
|
2486
2488
|
colors: {},
|
|
2487
2489
|
id: E,
|
|
2488
2490
|
svg: B,
|
|
2489
|
-
type:
|
|
2491
|
+
type: U.Illustration,
|
|
2490
2492
|
y: l.top,
|
|
2491
2493
|
x: l.left,
|
|
2492
2494
|
rotation: l.rotation,
|
|
@@ -2601,9 +2603,9 @@ class Sa {
|
|
|
2601
2603
|
return console.error("No URL for picture!"), null;
|
|
2602
2604
|
a(!0), t.setMandatoryFulfilled(A.stepName, !1);
|
|
2603
2605
|
const o = t.getRegionElements(A.stepName).map((B) => new $(B.id)), r = (B) => {
|
|
2604
|
-
const d = t.getLayouts().find((
|
|
2606
|
+
const d = t.getLayouts().find((h) => h.panelId === B.panelId);
|
|
2605
2607
|
if (!d)
|
|
2606
|
-
throw new
|
|
2608
|
+
throw new T(B);
|
|
2607
2609
|
const E = k();
|
|
2608
2610
|
return {
|
|
2609
2611
|
regionElement: { id: E, region: B },
|
|
@@ -2613,7 +2615,7 @@ class Sa {
|
|
|
2613
2615
|
stepRegion: B,
|
|
2614
2616
|
id: E,
|
|
2615
2617
|
src: s,
|
|
2616
|
-
type:
|
|
2618
|
+
type: U.Image,
|
|
2617
2619
|
y: B.top,
|
|
2618
2620
|
x: B.left,
|
|
2619
2621
|
rotation: B.rotation,
|
|
@@ -2721,7 +2723,7 @@ class Na {
|
|
|
2721
2723
|
const a = t.getLayouts(), s = (t.getRegionElements(e.stepName) || []).map((i) => {
|
|
2722
2724
|
const o = i.region;
|
|
2723
2725
|
if (!a.find((c) => c.panelId === (o == null ? void 0 : o.panelId)))
|
|
2724
|
-
throw new
|
|
2726
|
+
throw new T(o);
|
|
2725
2727
|
return new jA(i.id, this.shapeFillId, A);
|
|
2726
2728
|
}).filter((i) => !!i);
|
|
2727
2729
|
t.getCommandDispatcher()(new G(s)), t.updateStorage(e.stepName, { colour: A });
|
|
@@ -2791,8 +2793,8 @@ class Na {
|
|
|
2791
2793
|
if (t.length > 0) {
|
|
2792
2794
|
const r = (B) => {
|
|
2793
2795
|
const l = B.region;
|
|
2794
|
-
if (!n.find((
|
|
2795
|
-
throw new
|
|
2796
|
+
if (!n.find((h) => h.panelId === (l == null ? void 0 : l.panelId)))
|
|
2797
|
+
throw new T(l);
|
|
2796
2798
|
const E = i();
|
|
2797
2799
|
return new jA(B.id, this.shapeFillId, E);
|
|
2798
2800
|
}, c = t.map(r).filter((B) => !!B);
|
|
@@ -2810,8 +2812,8 @@ class Na {
|
|
|
2810
2812
|
const r = (d) => {
|
|
2811
2813
|
const E = n.find((u) => u.panelId === d.panelId);
|
|
2812
2814
|
if (!E)
|
|
2813
|
-
throw new
|
|
2814
|
-
const
|
|
2815
|
+
throw new T(d);
|
|
2816
|
+
const h = i(), w = `
|
|
2815
2817
|
<svg
|
|
2816
2818
|
xmlns="http://www.w3.org/2000/svg"
|
|
2817
2819
|
xmlnsXlink="http://www.w3.org/1999/xlink"
|
|
@@ -2828,23 +2830,23 @@ class Na {
|
|
|
2828
2830
|
width="1"
|
|
2829
2831
|
height="1"
|
|
2830
2832
|
class="${this.shapeFillId}"
|
|
2831
|
-
fill="${
|
|
2833
|
+
fill="${h}"
|
|
2832
2834
|
/>
|
|
2833
2835
|
</svg>
|
|
2834
2836
|
`, Q = {};
|
|
2835
|
-
Q[this.shapeFillId] = { browserValue:
|
|
2836
|
-
const
|
|
2837
|
+
Q[this.shapeFillId] = { browserValue: h };
|
|
2838
|
+
const C = k();
|
|
2837
2839
|
return {
|
|
2838
|
-
id:
|
|
2840
|
+
id: C,
|
|
2839
2841
|
region: d,
|
|
2840
2842
|
command: new J(
|
|
2841
2843
|
{
|
|
2842
2844
|
stepRegion: d,
|
|
2843
2845
|
stepName: A.stepName,
|
|
2844
2846
|
colors: Q,
|
|
2845
|
-
id:
|
|
2847
|
+
id: C,
|
|
2846
2848
|
svg: w,
|
|
2847
|
-
type:
|
|
2849
|
+
type: U.Illustration,
|
|
2848
2850
|
y: d.top,
|
|
2849
2851
|
x: d.left,
|
|
2850
2852
|
rotation: d.rotation,
|
|
@@ -3061,7 +3063,7 @@ class Ua {
|
|
|
3061
3063
|
fillImage: e
|
|
3062
3064
|
});
|
|
3063
3065
|
for (const r of t) {
|
|
3064
|
-
const c = new
|
|
3066
|
+
const c = new bA(r.id, e);
|
|
3065
3067
|
n(c);
|
|
3066
3068
|
}
|
|
3067
3069
|
}
|
|
@@ -3086,15 +3088,15 @@ class Ua {
|
|
|
3086
3088
|
for (const d of e) {
|
|
3087
3089
|
if (!d.fontData)
|
|
3088
3090
|
throw new v("Failed to resolve font data for text.");
|
|
3089
|
-
const [E,
|
|
3091
|
+
const [E, h] = IA(
|
|
3090
3092
|
d.fontSize,
|
|
3091
3093
|
d.fontData,
|
|
3092
3094
|
{ left: d.x, top: d.y, width: d.width, height: d.height, rotation: d.rotation, panelId: "" },
|
|
3093
3095
|
[s],
|
|
3094
3096
|
{ size: t.data.size, minSize: t.data.minSize, maxSize: t.data.maxSize }
|
|
3095
3097
|
);
|
|
3096
|
-
B.set(d.id, E), l.set(d.id,
|
|
3097
|
-
const w = t.data.curved ? s : (
|
|
3098
|
+
B.set(d.id, E), l.set(d.id, h);
|
|
3099
|
+
const w = t.data.curved ? s : (h || []).join(`
|
|
3098
3100
|
`);
|
|
3099
3101
|
c.push(this.generateTextChangeCommandsForRegion(E, t.data, d.id, w, r));
|
|
3100
3102
|
}
|
|
@@ -3137,24 +3139,24 @@ class Ua {
|
|
|
3137
3139
|
if (o && l) {
|
|
3138
3140
|
const d = (r = o.variants) == null ? void 0 : r.find((E) => E.id === l);
|
|
3139
3141
|
if (d) {
|
|
3140
|
-
const E = await this.fontDataFromVariant(d),
|
|
3142
|
+
const E = await this.fontDataFromVariant(d), h = i.map((u) => ({ id: u.id, region: u.stepRegion })), w = (c = a.storage) == null ? void 0 : c.color, Q = (B = a.storage) == null ? void 0 : B.text;
|
|
3141
3143
|
await e.setSelectionsAndElements(
|
|
3142
3144
|
A.stepName,
|
|
3143
3145
|
[d],
|
|
3144
|
-
|
|
3146
|
+
h,
|
|
3145
3147
|
async () => {
|
|
3146
3148
|
e.updateMetadata(A.stepName, { color: w, text: Q }), e.updateStorage(A.stepName, { text: Q, inputText: Q });
|
|
3147
|
-
const u = i.map((p) => new we(p.id, E)),
|
|
3148
|
-
e.getCommandDispatcher()(
|
|
3149
|
+
const u = i.map((p) => new we(p.id, E)), D = new G(u);
|
|
3150
|
+
e.getCommandDispatcher()(D), e.setMandatoryFulfilled(A.stepName, !0);
|
|
3149
3151
|
}
|
|
3150
3152
|
);
|
|
3151
|
-
const { command:
|
|
3153
|
+
const { command: C } = K.updateInputText(
|
|
3152
3154
|
Q || "",
|
|
3153
3155
|
i,
|
|
3154
3156
|
A,
|
|
3155
3157
|
e
|
|
3156
3158
|
);
|
|
3157
|
-
|
|
3159
|
+
C && e.getCommandDispatcher()(C);
|
|
3158
3160
|
}
|
|
3159
3161
|
}
|
|
3160
3162
|
}
|
|
@@ -3193,10 +3195,10 @@ class Ua {
|
|
|
3193
3195
|
var B;
|
|
3194
3196
|
const r = n.markUpdatePending(), c = await this.fontDataFromVariant(e);
|
|
3195
3197
|
if (a.length > 0) {
|
|
3196
|
-
const l = a.map((
|
|
3198
|
+
const l = a.map((h) => new we(h.id, c));
|
|
3197
3199
|
if (o) {
|
|
3198
|
-
const
|
|
3199
|
-
l.push(...
|
|
3200
|
+
const h = a.map((w) => new bA(w.id, o));
|
|
3201
|
+
l.push(...h);
|
|
3200
3202
|
}
|
|
3201
3203
|
const d = await this.changeInputTextWithRegion(
|
|
3202
3204
|
A,
|
|
@@ -3236,7 +3238,7 @@ class Ua {
|
|
|
3236
3238
|
), E = l.flatMap((w) => w.commands);
|
|
3237
3239
|
if (o) {
|
|
3238
3240
|
const w = l.map(
|
|
3239
|
-
(Q) => new
|
|
3241
|
+
(Q) => new bA(Q.regionElement.id, o)
|
|
3240
3242
|
);
|
|
3241
3243
|
E.push(...w);
|
|
3242
3244
|
}
|
|
@@ -3261,35 +3263,35 @@ class Ua {
|
|
|
3261
3263
|
throw new Error("Step data not supplied");
|
|
3262
3264
|
const i = s.getTransaction().bulk && t.varyText || !1, o = i ? "" : n.text || t.defaultText || "", r = this.getProcessedInput(o, t, !1), c = async (l) => {
|
|
3263
3265
|
var w;
|
|
3264
|
-
const E = s.getLayouts().find((Q) => Q.panelId === l.panelId),
|
|
3266
|
+
const E = s.getLayouts().find((Q) => Q.panelId === l.panelId), h = k();
|
|
3265
3267
|
try {
|
|
3266
3268
|
if (!E)
|
|
3267
3269
|
throw new PA("Failed to find layout for region: " + l.panelId);
|
|
3268
3270
|
const Q = t.colorOption;
|
|
3269
|
-
let
|
|
3271
|
+
let C;
|
|
3270
3272
|
if (Q && Q.variants) {
|
|
3271
|
-
const
|
|
3273
|
+
const L = Q.variants.find((V) => {
|
|
3272
3274
|
var W;
|
|
3273
3275
|
return V.id === ((W = Q.defaultVariant) == null ? void 0 : W.id);
|
|
3274
3276
|
}) || Q.variants[0];
|
|
3275
|
-
|
|
3277
|
+
C = this.createTextFillSpotColor(Q, L), s.updateStorage(A, {
|
|
3276
3278
|
colorProfileAssetKey: (w = Q.colorProfile) == null ? void 0 : w.key
|
|
3277
3279
|
});
|
|
3278
3280
|
}
|
|
3279
|
-
const u = await this.getDefaultColor(t),
|
|
3281
|
+
const u = await this.getDefaultColor(t), D = u || "#000000", p = {
|
|
3280
3282
|
stepRegion: l,
|
|
3281
3283
|
stepName: A,
|
|
3282
3284
|
align: this.textAlign(t),
|
|
3283
|
-
fill: n.color ? n.color :
|
|
3285
|
+
fill: n.color ? n.color : D,
|
|
3284
3286
|
fontSize: t.size || OA,
|
|
3285
3287
|
fontData: a,
|
|
3286
|
-
id:
|
|
3288
|
+
id: h,
|
|
3287
3289
|
layer: l.layer,
|
|
3288
3290
|
layerIndex: l.layerIndex,
|
|
3289
3291
|
rotation: l.rotation,
|
|
3290
3292
|
text: r,
|
|
3291
3293
|
input: o,
|
|
3292
|
-
type:
|
|
3294
|
+
type: U.Textbox,
|
|
3293
3295
|
vertical: t.vertical,
|
|
3294
3296
|
x: l.left,
|
|
3295
3297
|
y: l.top,
|
|
@@ -3299,8 +3301,8 @@ class Ua {
|
|
|
3299
3301
|
verticalAlign: t.verticalAlign || "middle",
|
|
3300
3302
|
curved: t.curved,
|
|
3301
3303
|
paths: t.paths,
|
|
3302
|
-
fillSpotColorDefinition:
|
|
3303
|
-
},
|
|
3304
|
+
fillSpotColorDefinition: C
|
|
3305
|
+
}, f = [], m = /* @__PURE__ */ new Map(), y = /* @__PURE__ */ new Map();
|
|
3304
3306
|
if (!p.fontData)
|
|
3305
3307
|
throw new v("Failed to resolve font data for text.");
|
|
3306
3308
|
const [Y, F] = IA(
|
|
@@ -3317,16 +3319,16 @@ class Ua {
|
|
|
3317
3319
|
[r],
|
|
3318
3320
|
{ size: t.size, minSize: t.minSize, maxSize: t.maxSize }
|
|
3319
3321
|
);
|
|
3320
|
-
m.set(p.id, Y),
|
|
3321
|
-
const
|
|
3322
|
+
m.set(p.id, Y), y.set(p.id, F);
|
|
3323
|
+
const R = t.curved || t.vertical ? r : (F || []).join(`
|
|
3322
3324
|
`);
|
|
3323
|
-
|
|
3324
|
-
this.generateTextChangeCommandsForRegion(Y, t, p.id,
|
|
3325
|
+
f.push(
|
|
3326
|
+
this.generateTextChangeCommandsForRegion(Y, t, p.id, R, i)
|
|
3325
3327
|
);
|
|
3326
|
-
const
|
|
3327
|
-
return
|
|
3328
|
-
regionElement: { id:
|
|
3329
|
-
commands: [
|
|
3328
|
+
const N = new J(p, E);
|
|
3329
|
+
return N.varying = i, {
|
|
3330
|
+
regionElement: { id: h, region: l },
|
|
3331
|
+
commands: [N, ...f],
|
|
3330
3332
|
newElement: p,
|
|
3331
3333
|
fontData: a
|
|
3332
3334
|
};
|
|
@@ -3362,30 +3364,30 @@ class Ua {
|
|
|
3362
3364
|
* @deprecated
|
|
3363
3365
|
*/
|
|
3364
3366
|
async changeInputTextWithRegion(A, e, t, a, n, s, i, o, r, c) {
|
|
3365
|
-
const B = (a || "").replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g, ""), l = this.getProcessedInput(B, A.data, i), d = s.getRegionElements(A.stepName), E = /* @__PURE__ */ new Map(),
|
|
3367
|
+
const B = (a || "").replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g, ""), l = this.getProcessedInput(B, A.data, i), d = s.getRegionElements(A.stepName), E = /* @__PURE__ */ new Map(), h = /* @__PURE__ */ new Map();
|
|
3366
3368
|
for (const p of d)
|
|
3367
3369
|
if (p.region) {
|
|
3368
|
-
const [
|
|
3370
|
+
const [f, m] = IA(
|
|
3369
3371
|
e,
|
|
3370
3372
|
t,
|
|
3371
3373
|
p.region,
|
|
3372
3374
|
[l],
|
|
3373
3375
|
{ size: A.data.size, minSize: A.data.minSize, maxSize: A.data.maxSize }
|
|
3374
3376
|
);
|
|
3375
|
-
E.set(p.id,
|
|
3377
|
+
E.set(p.id, f), h.set(p.id, m);
|
|
3376
3378
|
}
|
|
3377
3379
|
const Q = (() => {
|
|
3378
3380
|
if (A.data && A.data.maxLength && l.length > A.data.maxLength)
|
|
3379
3381
|
return c && c(!0), { info: "0" };
|
|
3380
|
-
const p = s.getProfanities(),
|
|
3381
|
-
for (const m of
|
|
3382
|
-
for (const
|
|
3383
|
-
const Y = p[
|
|
3382
|
+
const p = s.getProfanities(), f = XA(l.toLowerCase());
|
|
3383
|
+
for (const m of f)
|
|
3384
|
+
for (const y in p) {
|
|
3385
|
+
const Y = p[y].toLowerCase().replace(/\s/g, "");
|
|
3384
3386
|
if (m === Y)
|
|
3385
3387
|
return o(!0), { error: "Blocked profanity." };
|
|
3386
3388
|
}
|
|
3387
3389
|
return !A.data.vertical && !A.data.allowNewlines && (l.includes(`
|
|
3388
|
-
`) || l.includes("\r")) ? (o(!0), { error: "Cannot span multiple lines." }) : !A.data.curved && !Array.from(
|
|
3390
|
+
`) || l.includes("\r")) ? (o(!0), { error: "Cannot span multiple lines." }) : !A.data.curved && !Array.from(h.values()).every((y) => y) ? (o(!0), { error: "Does not fit." }) : (o(!1), { info: (A.data.maxLength - l.length).toString() });
|
|
3389
3391
|
})();
|
|
3390
3392
|
if (Q.error) {
|
|
3391
3393
|
r(Q.error);
|
|
@@ -3396,24 +3398,24 @@ class Ua {
|
|
|
3396
3398
|
s.updateStorage(A.stepName, { text: B }), s.updateMetadata(A.stepName, {
|
|
3397
3399
|
text: this.injectReplaceableText(B, A.data)
|
|
3398
3400
|
});
|
|
3399
|
-
const
|
|
3401
|
+
const C = s.getTransaction().bulk && A.data.varyText || !1;
|
|
3400
3402
|
n.defaultCleared && s.setMandatoryFulfilled(A.stepName, !0);
|
|
3401
3403
|
const u = [];
|
|
3402
3404
|
for (const p of d) {
|
|
3403
|
-
const
|
|
3405
|
+
const f = A.data.curved ? l : (h.get(p.id) || []).join(`
|
|
3404
3406
|
`);
|
|
3405
3407
|
u.push(
|
|
3406
3408
|
this.generateTextChangeCommandsForRegion(
|
|
3407
3409
|
E.get(p.id) || 1,
|
|
3408
3410
|
A.data,
|
|
3409
3411
|
p.id,
|
|
3410
|
-
|
|
3411
|
-
|
|
3412
|
+
f,
|
|
3413
|
+
C
|
|
3412
3414
|
)
|
|
3413
3415
|
);
|
|
3414
3416
|
}
|
|
3415
|
-
const
|
|
3416
|
-
return
|
|
3417
|
+
const D = new G(u);
|
|
3418
|
+
return D.varying = C, D;
|
|
3417
3419
|
}
|
|
3418
3420
|
}
|
|
3419
3421
|
const K = new Ua();
|
|
@@ -4680,27 +4682,27 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
|
|
|
4680
4682
|
</g>
|
|
4681
4683
|
</svg>
|
|
4682
4684
|
|
|
4683
|
-
`,
|
|
4684
|
-
const e =
|
|
4685
|
+
`, P = (g) => xt("http://www.w3.org/2000/svg", g), oe = (g, A) => {
|
|
4686
|
+
const e = P("rect");
|
|
4685
4687
|
return e.setAttribute("height", `${g}`), e.setAttribute("width", `${A}`), e;
|
|
4686
4688
|
}, ka = () => {
|
|
4687
|
-
const g =
|
|
4689
|
+
const g = P("svg");
|
|
4688
4690
|
return g.setAttribute("xmlns", "http://www.w3.org/2000/svg"), g.setAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink"), g.setAttribute("version", "1.1"), g;
|
|
4689
|
-
},
|
|
4690
|
-
const A =
|
|
4691
|
+
}, Ja = (g) => {
|
|
4692
|
+
const A = P("use");
|
|
4691
4693
|
return A.setAttribute("xlink:href", g), A.setAttribute("href", g), A;
|
|
4692
4694
|
};
|
|
4693
4695
|
function tt(g) {
|
|
4694
4696
|
const A = ka(), e = /viewBox="0 0 (.+?) (.+?)"/.exec(g) || ["0", "0"], t = parseFloat(e[1]), a = parseFloat(e[2]);
|
|
4695
4697
|
return A.setAttribute("height", `${a}`), A.setAttribute("width", `${t}`), [A, a, t];
|
|
4696
4698
|
}
|
|
4697
|
-
const
|
|
4698
|
-
const t =
|
|
4699
|
+
const ba = (g, A, e) => {
|
|
4700
|
+
const t = P("g");
|
|
4699
4701
|
g.appendChild(t), t.setAttribute("id", e), t.innerHTML = A;
|
|
4700
4702
|
};
|
|
4701
4703
|
function at(g, A, e) {
|
|
4702
4704
|
const t = k();
|
|
4703
|
-
|
|
4705
|
+
ba(A, e, `bgdef-${t}`), g.appendChild(Ja(`#bgdef-${t}`));
|
|
4704
4706
|
}
|
|
4705
4707
|
const nt = (g, A, e, t) => {
|
|
4706
4708
|
const a = wA("filter");
|
|
@@ -4857,31 +4859,31 @@ class La extends ie {
|
|
|
4857
4859
|
}
|
|
4858
4860
|
brandSvg(A, e) {
|
|
4859
4861
|
const t = A.toSVG(2), a = A.getBoundingBox(), n = a.x2 - a.x1, s = A.toPathData(3), i = () => {
|
|
4860
|
-
const p =
|
|
4861
|
-
p.appendChild(
|
|
4862
|
-
const m =
|
|
4862
|
+
const p = P("g"), f = P("defs");
|
|
4863
|
+
p.appendChild(f), f.appendChild(nt(3, 7, 4, "shadow"));
|
|
4864
|
+
const m = P("g");
|
|
4863
4865
|
p.appendChild(m), m.setAttribute("filter", "url(#shadow)"), m.innerHTML = t;
|
|
4864
|
-
const
|
|
4865
|
-
p.appendChild(
|
|
4866
|
-
const Y =
|
|
4866
|
+
const y = P("g");
|
|
4867
|
+
p.appendChild(y), y.setAttribute("fill", "red"), y.setAttribute("stroke", "red"), y.setAttribute("stroke-width", "9"), y.innerHTML = t;
|
|
4868
|
+
const Y = P("g");
|
|
4867
4869
|
p.appendChild(Y), Y.setAttribute("fill", "#9d2621"), Y.setAttribute("transform", "translate(1,1)"), Y.innerHTML = t;
|
|
4868
|
-
const F =
|
|
4869
|
-
return p.appendChild(F), F.setAttribute("fill", "yellow"), F.innerHTML = t, new ce(p).transform(([
|
|
4870
|
+
const F = P("g");
|
|
4871
|
+
return p.appendChild(F), F.setAttribute("fill", "yellow"), F.innerHTML = t, new ce(p).transform(([N, L]) => [N, L + (n / 2 - N) ** 2 / (n * 2.9)]), p;
|
|
4870
4872
|
}, [o, r, c] = tt(e);
|
|
4871
4873
|
if (!o)
|
|
4872
4874
|
return "";
|
|
4873
|
-
const B =
|
|
4875
|
+
const B = P("defs");
|
|
4874
4876
|
o.appendChild(B), at(o, B, e);
|
|
4875
|
-
const l = r * 0.23, d = c * 0.94, E = c * 0.04,
|
|
4876
|
-
o.appendChild(w), w.setAttribute("transform", `translate(${E} ${
|
|
4877
|
+
const l = r * 0.23, d = c * 0.94, E = c * 0.04, h = r * 0.53, w = P("g");
|
|
4878
|
+
o.appendChild(w), w.setAttribute("transform", `translate(${E} ${h}) rotate(-21)`);
|
|
4877
4879
|
const Q = oe(l, d);
|
|
4878
4880
|
Q.setAttribute("opacity", "0"), w.appendChild(Q);
|
|
4879
|
-
const
|
|
4880
|
-
w.appendChild(
|
|
4881
|
+
const C = P("g");
|
|
4882
|
+
w.appendChild(C);
|
|
4881
4883
|
const u = i();
|
|
4882
|
-
|
|
4883
|
-
const
|
|
4884
|
-
return re(
|
|
4884
|
+
C.appendChild(u);
|
|
4885
|
+
const D = ne(s);
|
|
4886
|
+
return re(C, D, l, d), st(o.outerHTML);
|
|
4885
4887
|
}
|
|
4886
4888
|
}
|
|
4887
4889
|
const Oa = "data:application/octet-stream;base64,AAEAAAAPAIAAAwBwRkZUTYPq+1wAAOjIAAAAHEdERUYA4AB5AADfmAAAACRHUE9TS5tfuQAA5DwAAASKR1NVQiMzLFQAAN+8AAAEfk9TLzJp7a5lAAABeAAAAGBjbWFw0xjbSAAABIgAAAJwZ2FzcP//AAMAAN+QAAAACGdseWbwDKFSAAAIVAAAz+xoZWFkEhAn1wAAAPwAAAA2aGhlYQarAo0AAAE0AAAAJGhtdHht1RNRAAAB2AAAArBsb2Nh+CbEtgAABvgAAAFabWF4cADzANMAAAFYAAAAIG5hbWXa9+qFAADYQAAAAjFwb3N0jPH63wAA2nQAAAUZAAEAAAABAAARfaMVXw889QALA+gAAAAA1+lypQAAAADX6XKl/zH/FgPtApIAAAAIAAIAAAAAAAAAAQAAA4r/JgAAA7P/Mf8HA+0AAQAAAAAAAAAAAAAAAAAAAKwAAQAAAKwA0AAFAAAAAAACAAAAAQABAAAAQAAAAAAAAAAEAisBkAAFAAACigK7AAAAjAKKArsAAAHfADEBAgAAAAAAAAAAAAAAAAAAAANQAAAAAAAAAAAAAABYWFhYAEAACvsCA4r/JgAAAokA5QAAAAEAAAAAAaQCfwAAACAAAwH0AAAAAAAAAU0AAAAAAAAAAAAAAN4AAAH3ACIB4AAwAbYALwHsADABTwAwASsALQHZADEBpQAtATkAMAGCAC8B/gAvAdAALQJXAC0B2gAtAdUALwGWADIB5wAvAb4AMgG+ABsA5wAtAbcAMAFZADECQwAoAd8ALwELAC8CAAAoAUb/7AE1//kBKv/3ATL/9gFC//gA7AAeAVH/9QFC//sAm//7ALn/OgFo//sAsv//AeL//gE7//4BSv/4AWb/xwFG//gBAAACAUn/6ACxAAQBRP/9AUkABQHT//UBhAABAUz/1AFi//cA3gAAA2EAIgKfACICKwAwAigAMAIBADAC1gAwAhkAMAKuADACMAAtAr4ALQLiAC0CGwAtArkALQJtAC0CjwAtAhAAMAKyADACJAAwAfMAMAH1ADAClgAxAm8ALwJkAC8C4wAvAxcALwJUAC8C7AAvAr8ALwNxAC8DNwAvAoQALQMAAC0DiQAtAxAALQKSAC0CsQAtAq0ALwMQAC8C0wAyA3MAMgKTADICdAAyAtwAMgLaADICOQAyAp4AMgLsADICQwAyAyYAMgJZADIDAAAyAxwAMgLoADIC4wAyAtQAMgN1ADIDMAAyAp8AMgKDADICJgAtAhkALQKzAC0C1QAtAh8ALQKtAC0CeAAwAuYAMAKkADACLAAxAoIAMQI9ADECBgAxAv4AKAMiACgDQwAvAfUALwGyAC4CEwAvAnIALwHWAC8CmAAvAnEALwKMACIC9QAvAsUAMAK5ADEDJAAvAeQAAQIyAAgCDAAGAeEAAAKEAAUB///8AgkAAAH6ACgChwApAoAAJQK2AC4CNv/3AYD/MgIV/9ABoAAAAboAAgISAAQBdgAWAk4ACAGPAA8DEQAGAycAAQOz//4B+QAlAasAHQH2AC4AAAADAAAAAwAAABwAAQAAAAABagADAAEAAAAcAAQBTgAAADQAIAAEABQAAAAKAA0AIABaAHoAoADFAM8A1gDdAOUA7wD2AP0A//AB8AbwDfBV8FvwXfBm8Hb7Av//AAAAAAAKAA0AIABBAGEAoADAAMcA0QDYAN8A5wDxAPgA//AB8APwCPAP8FfwXfBf8Gn7AP//AAD/+f/3/+X/xf+//5oAAAAAAAAAAAAAAAAAAAAA/zkQOhA5EDgQNxA2EDUQNBAyBakAAQAAAAAAAAAAAAAAAAAAACYAMABAAEoAVABgAHAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAGAAYABgAGAAYACAAKAAoACgAKAA4ADgAOAA4AEwAUABQAFAAUABQAFAAaABoAGgAaAB4AMgAgACAAIAAgACAAIAAiACQAJAAkACQAKAAoACgAKAAtAC4ALgAuAC4ALgAuADQANAA0ADQAOAAAAQYAAAEAAAAAAAAAAQIDAAAEAAAAAAAAAAAAAAAAAAAAAQAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8AAAAAAAAgISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OQAAAAAABgYIChMUGiAgICAgICIkJCQkKCgoKC0uLi4uLjQ0NDQAAAAAAAAAMgAAAAAAAAAUAAAAAAAAAAAAAAAAAAAALgAAAAAAAAAAAAA6BgYUAAAAAAAAAAAAADgAAAAAAKqrAAAAAAAGCgYKCg4ODg4UFAAUGhoaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAMwBMAF+Ad4CSALGA0oDngQOBI4E7gWaBhYGcAa6Bz4Hlgf6CEgIlgjuCXoJ3AoeCogK+gtmC7oMJgyEDPYNkg38DkAOjg76DzgP3hBGEJQQ/hFkEaASABJYEqoS9hNwE8QURhScFJwVXBYAFrQXfBgkGPIZhhpSGwgb0hyeHTYeCB7eH84geCEwIfIilCMgI9gkmCV2JkInFCe0KIwpXipCK0Ar9CzqLfIvBC/UMLoxfDIeMsozijQCNJw1WDXqNnI3JjfQOFo5BDmCOhg6rDs8O+o8kj2MPkY/Ej+6QFhBEkHEQnhDAEOyRFJE9kW0RmZHGEfgSHZJVkpOSxBLpkwiTNZNfE38Tq5PWFAgUPpRvlJ4UzhT/FSeVXpWPFb6V7hYhFlGWhpa9lvQXKxdWl4qXtZfmGBaYOxhqmI6Y05khmW8ZpxnUGf2AAAAAgAi//kB7QKFACgAOQAAJRQWBgcGJy4BJyY/AS4CBwYHBgcGJyY3Njc+Azc2HgIHBhUHBic2FzY3NgciBw4BBw4CHgEBugUBAw0cEBcDBwUDEzYsEB0LBw0aMToUDUMOPlNbHx0kCAMDARoZwk0vAw4ZGgUMElkdAQICAQhMBRsQBxoDAhMPHT0iBgcBAQMSCjFhAwRXPIocZnteBgYTIygQBQLCv2UCEDNLiQEKDos7AQMJBwYAAAMAMP//AeACgAAhADEARgAAAR4FBgcOBAcGBwYmJyY3Ejc2Nz4BHgEXFg4BBzYmJyYGDwEGBw4BFjMyNhM+AScmBwYHDgEPARYyNjI+BAF8AgcRDg4HBAkBBRkiPyYdJT5SAgEJRVwWIw8yOzQMDxIzRRkFHhY7GRoeDQMCEhcnVy4kAyYQDiASFB4GBQEFDg4VExYTEgFRAQQOEh8mNx8FDyoiIwcGAQEZMRgpATaDIhAHBAkoITFeRsgmVw8IAgYGTEkNFAoZASkfZw4GAwgcIEoVFAEBAgMFBwkAAAAAAQAv//8B7wKMAEYAADMiLgEnLgY3Njc2NzY3NhcWFQYHBiIuAicwLgMGBw4GBw4BHgI+Azc+AxceAhUOAQcOArYDECAKAgYUDhMHBQcLHTpxNytEJhgBEQsRCwcFAQYECwsUDAIHFxgjIScRFg4LGBoWDw4HCAYRCxcPDRQHAzUXEhoxAgkIAQURFiQqOiE0QopcLAoQKxwmHwoGCQoNAQkFBwMBBAEDEBQkLEImL04uIAsCBQsHCgYbDwsCAhMZDBpFDgsNCgACADD//QH7AogAHQAvAAABHgMHDgUHBi4DNSY2NzY3PgE3Njc2Ez4BLgEnJg4CDwEOARceATYBiyUyEQcFAhAcLThOLC9CJxYHAw4XBAIQRh4YMzgaHxkKHBYTIxYQBAQoQQcGRWACeQk0QEccFUJaWE82BggHDBcQCSpJUg8IO6g6Lw8Q/mZPd0UlBQUNGRsJCl7JHxwUQAAAAAABADD/+gHjAosAPAAAAS4BIgcGBxc2FxYHBgcGIwcGBwYXFjYWFx4BBxQOAwcGJyYnLgE2NzY3BgcGJyY+ATc2Fx4EBwYBtgY3MRdHFSwZDw8GBhcUEUEdBQk0DSEYCA8PBAEEBw0IPSk8HQwDCws5RhUGIQ8JAwoHM5wmOBwQBAEBAiYBAQNhPQEBDg4XFQUFBlYtRAUBAwEECBsOAQMICAkDFQcLMBRKTCK+ZQQBBhELFhAEJRAEDA0QCgYYAAABAC3//wHgAoYASQAAAR4CDgEHDgIiLgEjJgcUBxQOAQcyFx4BFxYGIwYHFDEGBxQOByMiLgEnJjY3NjcGJyIuBCcmNz4DPwE2FgHDDQ4CBQMBBA0NEw8WByEwARMgDTEKCxcDBRgaHzUuDAMBAwMFBwkNBwQLFQMFKB0gNRUPAwcGBgQEARgLAQcJBwMCNNQCYgcRCgwDAQQDAgEBAQMBAQEsTSABAQ8QExsBBgGEXwQVBxEGDQUGAgISEBy6Ulp/BAEBAgICAQEPGwQJBgUBARcOAAEAMf/9Ad4ChwBVAAABDgQHDgEeAhcWNzY3Jjc2ND4EMxYXMh4DBwYHFAcGBwYnKgEuAjc2NwYHDgInJicuAzY3Njc2NzY3NhcWBwYHDgEuAjU0JyYBawQOKio6GhgUBhIVCRgbBQkbBwEEBAoLEQphFAEDCQQEBAgYAQgFCR0BBg4KCAEBAhsWERcuFyESAwkVDAELEB9CaTQmPRwSBAQQCw0KBAQBCwIYAgYfK1EyLkoqHQsBAh8GDQkbAQQKCQsHBgUGAQQJDwwgBwkLXhMeAwYLGA8KDiENCQoJBQUUAgsnLk8sNEGIUCgGCi8fJh8IBAELCg4BAQEYAAEALf/+Af0CgwBdAAABHgMUDgIxDgIHBgcUDgQjKgEuAicmNjc2JyYHBgcGBw4HIyIuAScmNjc+AT8BND4DFx4DFA4CMQ4CBwYXFhcWNz4BPwE+BAHhCAsGAgIDAgEjMA4yCgMCBgkRCwEFDAoKAgQVEwMLRw4NBx0IAQIBAwQHCg0JBAsWAwUnHRIwEBAEDA4XDAgLBgICAwIBGCcOBAUmMgoEEi4PDgEEDA4WAn0DCQkNCgwHCAFWeiiYUgYfCxUIBwQHEAoVfEgKAQwEBBNmQAUWChIIDAUEAhMQHcBUM4EnJwIHEggJBgMJCQ0KDAcIATxfJg4BCQQBCjJ7JSQCBxIICQAAAAEAMP//Ab4CgAA5AAABFgYHIiMGBwYHFDEWFzAWMh4EBhUOAQciJyYnJjY3MjM2NzY3JiMwJiIuBDQ3PgE3FhcWAbwBHCMJCkYVMAkSBAUCBgMFAgMBBBoYaxAhAgEbIwgLDS0fMQoCBQIGAwUCAgEFGhhrECECYBMmAaw/lVABAQEBAgIEBQgJBhkTAgIEFRMnAnSHWoABAQIDAwYHCgUZEwIEAgUAAAEAL///AhoCfwBNAAABPgM/AQYHMCMGJyY+ATc+ARceBBcWFQYHBicmJw4EBw4GIy4ENzQ+ATc+AxYXFgcGBwYHBhcWNz4DASAHEg8OBARSEgM6CQUHEQsUmDAKGw8QCwUXASIHChUUBAsiHyUNAQEHCxYbKhoHFC4hGAQCEQ8BBA0NFAkYBAIICwINJSsNAQ8SFwGPFzElHgcIAQQMHhAbEgQHAQYBAgEDAwILGiYGAQEBBQYVTFuWVAIJGRcbFAwBAhAbOScGFTIQAQUJBgEFDh4NDhIKNggJKQVEUl8AAQAv//gCVgKLAFcAAAEOAQ8BMD4FNz4BHgIXFBYOAgcGBx4CFxYXHgEGBw4BLgYnLgEnDgQHDgIHBiY3PgE3PgE/AQ4EJy4BNjc+ARceAwYBLQsiCwwTISs0NDoZAwgYFBUGAQMHFBChXAMNOCUXDQcKDBYIEA8ODgsMBwkBDUwDAQYODQ8FBgkPEyAuAwMqGA4YBQQBBQ8OFgkQAhMQHmImAgUMBwECMhlbISETHycpJR0HAQEBBhIOAgQNDQ8GQFwMKHIyFwwHGSMNBQIEBw0KEAoOAROXEwIGFBYkEhZLJwsUHiQjqUssURISAQQNBQUGBh4iEiMzEAEDCw8aAAEALQAAAaEChABDAAAlFgcOAw8BDgEqASYjJiMiBwYHBisBIiMqAS4CJyY2Nz4FPwE+BBceAxQOAjEUDgEHBgc+ARcWAZoGAwEEBAQBAQQMDQoMATIMGFsOKAMEAQQBAgYQDQwCBS4fCRQUFBANBAMBBAwOFwwICwYCAwIDJTAOFxw0gh4aVg8SBgwIBgECBQcDBggBBAEEBxAKG71ZFzYwMCYeCAgCBhIJCAYDCQoMCgwIBwFWeSlDiAYBBwYAAAEALf/zAoYCiwByAAABDgMPAQ4EBxwBBgcGJy4BNzY3Njc2NzY1NAcGJyY2NzY3NhYHBgcGFjc+ATc2NzYWBw4DBwY3Mj4CNz4DNzYWBwIHBhcWIwYnJjY3Njc2JgYHDgIHBgcOAQcGJicmNz4DNzY3NiYBPwgTEA8EBQMMHhcVAQgHFikRFQYTQBMMBAIBDRwXDgERMzchKQcGIQUBCgc6GCkkGBgIAw0KCgIFBQIEIisLDQ0XFgwcFA1aCggHBjEzCAcaFh0CAQUPDA8nJwYSAwITER4wBAgmCREJCgUVBAQEAc0DDRAQBQYEETk+YDAJGjUKIQ4GMSyKojcgCwsGAgkIEBAKKBAvDAcrGhU+CAkHBj4VJgYEHxgKHxkYAw8BAyIrCgsLDwcBAycm/v9BOE9EASMexTtOHgcKBA4QP1AdOkQyMgYLFxcwdBo1HB4NMRgLGwAAAQAt//8CIwKCAFUAAAEeAQ4BBzAOAQcGBxQVDgQHKgEuAjUuAic0LgEnBgcGBw4BJyIuAScmNjc+BT8BPgQXNhcWFx4BFx4CFz4CNz4BPwE0PgMCBg4OAQMBJS8NKQ0CAwcJEQwDBxMPDAEIEAgDAwEZFhoPBBsgBAwWBAYlHAgTERIPCwQDAQIJCxEKHQ4GAQIOAgEHCwQCCQgCCysQEAMLDhgCdwIVHA4GVnkof2oCBBAPFwoJAQUJEw0Gebs5BQsLBD9EUpcoKwIDFREdwFMYNTAvJh0ICAEGDQoIAQIeDAkNaAsGPGAeCRoZCS19KCgCBxALCAACAC///wHoAn8AHwA7AAABHgEHDgIHDgYnLgM3PgQ3PgQXNiYHDgUPAQ4BBwYXFBcWFxY3Njc+AgFrNUgDAg1SQwEFEBEcHScTJjQXBwcCBhsjQigCCRweKyoEFhcGDQwLCgcCAjtCBwMBAQQHDx8YEyhBHQJ+AVBQHGXgRgEFDgsOBgMGCCw6RSMIHlZSaCkDCRcSD6wvHQoDCAkKCQcCAkunMhgKCwUQChYHBhImlHgAAAACADL//QHvAoIAGgAtAAABFgYHDgMjJw4BBwYnLgE1Jz4CNzY3PgEHNiYnJicmBw4BDwE6AT4EAbo1DTYZQjo0DxAVGAIENxMUAQZJNhkPGChwICkBHwYJNRYMIAsKDA0ZEBgUGAJnJp1EHioRCAFDaho8AwIdDg5M6IM4HxMfB+4vVQwDAQgxGlIdHAMECA0SAAAAAgAv//kB6AKBAC8AVwAAAR4BBw4EBxYXFhcWBwYHBicmJwYHDgYnLgM3PgQ3PgQXNiYHDgMPAQ4BBwYXFBcWFxY3Njc2Ny4BLwEmNhcWFx4CFz4BAWs1SAMBAg0UKBoSFQgGCQsFBhIUGx8DAwEFEBEcHScTJjQXBwcCBhsjQigCCRweKyoEFhcIEw8NBAQ8QQcDAQEEBw8fGBMNDRMVAQIBFQwOFQIJCgQaIQKAAlFPCB5QT2grHB0LDBUSCAMKCQ4pBAICBQ4LDgUEBggsO0YiCR1YUmkpAwkYEg6tLx4LAw0NDQQES6gyGQoLBRALFQcGEg0SKEENDRcXAwMmBBIRCDyEAAAAAgAy//0B7wKDACUANQAAARYGBwYHFhcWFxYXFgYPAQYmLwEmJwYHBicuATUnPgI3Njc+AQc2JicmJyYHDgEPATI+AgG6NQ02Nl0RIhMmCgUFBAQFEiYODjw4LQQENRMUAQZJNhkPGChwICkBHwYJNRYMIAsKFhgpJwJoJp5DQxYwPiMgCQsPFwcHEAIJCSrBjDk8AwIdDg5N54M5HxMfB+4vVA0DAQcxGVMcHQMKGQABABv//QHPAoIAPwAANxY3NicmJyYnJjc+ARYXFgcGBwYnLgQnJgcOAhceBBcWBgcGJicmNz4CFx4CBg8BDgEfAR4BF94bECscFRscCRc0E0VCFT8FAh4MDggLCAQFAQ4iDhYDEQYgDxcNBAsfLjJ8LUkhBx0rFxARAQQEEgYBAwIFGwtbAw8jVUQtLiJgShscAw4sQh4KAwUCCA0IDgIfDAUmOCAKPB4vJhEwahweBCA2axorGAgGFRcRBiAMGQcGDxABAAAAAAEALQAAAeQCgQAxAAABFgcGBwYmLwEmJwYHBgcUDgcjIi4BJyY2NzY3ByIOASMuATc+AT8BNhYXFgHeBgYLIQgeDAsdKEsVLwwDAQMDBgcJDQcECxYDBSkeHzJEBAsdCxISCQUYCgk97ikbAmANEB4FAQICAgMBsD6HYQMVCBEHDQUGAgISERy+VFd8BgIDASUWDRACAggDBgQAAAEAMP//AgUCgQAuAAABDgEHDgQeARceAT4CNz4BNz4BFx4BBwYCBwYHBgcGJicmJyY2Nz4BFx4BAQEKOgYCBQwKBwEODQMLIB8nEBNHChMfGRYNCgNWGjI2KT8jPBEVAQEyHhknIR8PAh8XpxEEDyooMSYfBQEBCBg+LTbzGCocBQU0Fgr+9UB/LSMGAxocIiw811tOQAEBPQAAAAEAMf/xAbYCggA4AAA3PgI3PgIXHgEPAQYHDgMHDgEHBicuAScuAT4BPwE+AzU+AT8BPgEfARYHFA4CBw4BB5IPX1sBBhAaDw4MAQEDIgEaFicTIikdOyYUCgcCAQECAQEBDg8OAQQDAgojDAwjCgYHCwYHDQSRFNjWAwsPCQYGGgsLIFEBQDVWJkM/IUYWDCA6FDMtJwwMFmJdTwMGDgUEEgwDAw8yAhsgOx8oijEAAQAo//oChgKBAGEAABMOAQcOAhUGNzY3PgE3ND4HNzYWFx4BDgIHBgcOBR4CMxY+ATc+Ajc+BjcyHgEXFgYHBgcOAwcGJyYnDgYnLgE3Njc+ARceAf0FGxAFER0CNB8XDj8JBgMGAwcFBgcEESEGAgEBBgYGQAcBBQIDAQEDBQkFESMWCQMsJQUBCAMJBwwPCQMJEwQFCRJILgYUIDEcMSIWAgIEDxAZGB8ONiEWMyIOHRUYHgIxEUEsEDWBLGE1IFo60BIBDgUNBgoHBwUCCQwRBhAOGBISwjMIGhEYEBIMDAYCMTUdCpd9CwMVBxEICwUBAQsKFzAyzZITJikdAwUiGB8DBhQQFQkIBhCEYe9WJRsBASsAAAEAL//sAfwCgQA+AAAlDgEHBicuAT4BPwE+AT8BJicmNzY3Nh4BHwE+ATc+ARceAgYHDgUPAR4EFx4BDgEHBiYnLgEnAQsDORc+LhAMBQkFBRFOHx8dEBgBAykOGQwEKQ9YCw8pCQcMCQoPBxYaHBoVBgYDCRgTEQIDAwEMCxUbCQkkDuoDYChzGAgcHBsICB56Li5qL0EUJwcCGBoOhhN+DREHCAQOFyMTCB4jJyQdCAkIHEo8NwgMGBwWBQcMDQ1pLwABAC///gGjAo8AKAAAEy4BJy4BNzYXHgEfAT4GFxYHBgcOAhUOAScuAT4BPwE+ATeSAjUUEgURKCYNIAoJDiQWHBQVFAkpFwSOHicaCTgSBwcBBAECDCgOASchmykkPQwWOxVfJiUXPSctGxgIAgc/C/gzb2oCGwYTBhYVFAYGKWIdAAABACgAAAH6AoEATAAANzYXHgcGFQ4GJiMmBwYnJicmNz4BPwEmJzAqAS4GNTQ+BDsBNh4CFx4BBxQOBgcGBw4BB7ByLwYWEBcOEwkMAgMMDBMNFgoVAncnMyAiDA4cFphCQRB3CwcNCQ4JCgYEBgwNDgsDBBhKSEAOGQ0DAwIGAwkEDAMGCU6GHGwEBAEBAQIDBQcKDQkMEgwIBAEBAQIBAgICGh1BMs9PTgIDAgEEBAcIDAcLEQsHAwICAQQGBQcaGwYMCAsFDAUPAwcKWbUuAAAAAAL/6//+AV0BtwAtAEkAAAEOAQcGFRQXFgcOAScuAicuAicmBwYHBicmJyY3PgE3PgI3NhcWNzYXHgEHPgInJgYPAQ4DDwEGFx4CNz4FNwFRDjELAwcDAgUjEAgKAwIBAgEBAgcWKCcgFQ4bDAYrIgQPMxs4KgUFEBgVCMAdLA0JDBkKChsqFg4CAgIEAwkKBgYOCwsIBgIBXxp+OxESGRsMCBAPBgMKBQcCBQYCBQoiBQUOCRQmQiVrJQYSLA4eIwUFDwgIIvUvakQLBQoICBpBODEODhcJBgcCAQIJCwwLCQIAAAL/+P/+AR4CfAAqAEIAAAEWBw4BBw4CJyIuAScmNQcGBwYmNz4BPwE2NzYWFxYPATY3NhcWFxYXFgc+AScuAQcOAQ8BDgEPARYGFjM+AzcBGAYFBjUkAgojFAMJFAUCAwUhGBYBAicdXgsWEh8GDA5HCQIcHwkGCQQGcBwXBAIKCgcOBAQaHgIDAQEKCgYNCwoCAV0mLjuPJgMKDgQDDwwFAQQiAQEeGiO5Te4cCwcLCRQkqwoDHhAFCAoMDvYvgxUMCgIBDQYGJ2cgIAEQEQEKDQ4FAAAAAAH/9gABATMBrQA2AAABFhcUBwYuAjEmBw4EBw4BHgI3Njc+AhceARUOAQcGByInIi4FNzY3Njc2NzYBHxIBDAkQBgcNHAMKHx0mEA4ICBMRCBgPAhIQDQ8QASUQJy8cEQEFDwwQBwUEBxInTSQmMQGSERkTBwcEBgwPDAEGFx85Ih8wGA8EAQERAxsKAQEXDBEvCRgCCwMLDRcbJRUiLFw9HQoMAAAAAAL/9f/9AZkCfAAxAEIAAAE2HgEHDgEHDgQfARYGJyYnJicmJyYiBhUGBwYuAScmPgE3PgE3NhYfATY3Njc2AzYnJgcGBw4BFxY3Njc+ATcBZg4cCQ8GLwsDLCQKAgEBBCgaAQELBAIBAQEFGyIUKx8CARMjFB1EIBAYBAQZBhsKHoMHCAoaHSAPIAMDFQkHHjMKAnYGDyMcCWsgCHRmLDMODyAeDwEBBxAKAwEHASIIBRErHR1XVyEuMgIBBQMDQQ47Ezj+yCEKDRgZRR9rFhINBQgiayQAAAL/9//9AUQBqQAkADgAAAEWBgcOAQ8BBgcGFjc2Nz4BFx4BFQcGBwYHBiYnJjY3PgE3NhYHNicmBg8BDgMPAQYWPwE+AgE7CBYtHlsfHgcCAxoYIxoHGg8KCgEBBw0VK2ocHgIeHm0sJz9SFw0HEQYGDBsWEwUGCw0ODhkrEAFzH1MoGyEDAwgbFBwBAScKDAcEEgcHCw4YDhsIHSBXTUlqBwceYi8KBgEDAwYZHBoJCBkOBAMLJhcAAAAAAQAe//8BtAKAAEgAAAEeAQcOASciLgMiDgEHBgcGBw4CBxcWFxYXFhcWBw4BDwEGJyYnBw4DFQ4BJicmNzY3NjcmJy4BNzY3Nhc3Njc+ARcWAYoYEgwMIggBCwcNCw4LDAUVEQMCAQQDAhQNCwkFAwEDBAMHAgEUJwUQJAwUCQwEGRoHEwYEFhAmFwcPAQkLGwkXDhEZGE8rFgJwCiASDwIFBAICAQMHBBcrBwQDCQsEAwEFBAYEBAoLCAwCAhcDAQJtI0wnPwERDwMGDy0iW0RpBAIGJA4XAwIDISkmJCYFAgAAAv/0/zoBTgGlAEgAagAAAR4FDgMxBgcOAQcOAgcOAycuAicmNjc2FxYXFjc2NzY3NiYHBgcGJicuATc2NzY3PgU/AT4FFgc2LgEjIiYOAgcOAw8BBhY7AT4BPwE+Az8BPgE3AR0KEQsHAwEBAgIDBB0JKAEBCg8GBxIeLBkhKgwFBg0SGB4FBRAOGBILCgECARIXFE8TEgQHBBMQFgcOCwoHBQECAgcWFyAfIhECBgUBBAoVFh4QDxkNCAECAw4ICQseCAkIFBEOBAMIDAMBmwUNDQ8NDwsNBgkOXB6PCQclLg8QHSYUAwMVEAwPJgsNEAMCBwYKLx4tAQEBFw0NEBsZQxwaLSYgCxINCgcFAQECBQ8NDgYDVgwOAgIKDyIXFzInIAkJFxYCGQwLCyEhHgkKESoMAAAAAf/6//0BNwJ7AEMAAAEGBwYfARYGJy4BNSY2PwE2NzQ2NzYuASMiBwYHDgEPAQ4BJyYnND4BNzY3Njc+Ajc2FhUWBwYHFDIxPgEXHgEfARYBLB8HCQYDAhMYGBMBDAYGBQIPAgEEBgITGBgWBSACCQMZEiEDAQYBBSkRUQkLFA0TIgEXES4BEjETCxIEAxMBNGkjLywkDxsCAyQmFUgZGRYGATgIBwgDFBQqCoEWPQ8QAwQmCBQlCi2KOMkZFhgCBRMRGDQldQETEwQCDgUGIAAAAAAC//oAAADGAgMAJAAsAAATHgMcAQ4BMTAOAQcGFRQWDgMjIicmNjc+Az8BPgMeAQ4BLgE2iAcLBgMCARYeBx0BAQMHDQocCgcPEQYRDw0DBAIGGykbCw4dHAoNAY4BBgYIBggEBTZMGV80AxMHDQUFGBF4NRQwKCIJCgQKDXELHR0NCh0dAAAAAv85/zkA2QIGACYALgAAExYHBgcOAQcOAQ8BBgcOAScmJyY3Njc2FxY2PwE2Nz4BNT4BNz4CHgEOAS4BNqURAwELAj0LCBoICREkG04kKQQBBw0bEh8SGwgIDhMFRgUiCAkeGBwLDB0cCwwBiwoXBycFwCYdTRgYLSUdDhEUIBAPGgMCEggKCwsSQRDeAg9fDA4FcgocHg4KHB4AAf/6//YBRwJ8AEsAACUUDgUxIjEGJyYnJicGBw4FIyIuAScmNjc+AT8BPgQXHgMOAzEUDgEHNjc2FxYHBgcWFx4BHwEeARceARUBRgIEBQUFAgEdHBsfETkTBAEDAgcJEAwECxYDBSkeEjMQEAEDDQ4XDAgMBQMBAgIDJTAOUgcoDg8dEVMMCAkYCAgHLwMICDEFCggHBQMCEhIRKBZjRSMFHwsVBwcCEhEcvVQyfycmAgcRCQgGAwkJDQoMBwcBU3cnPQUaIygcEDoWDhAkCgoIJgIHDgMAAf/+AAEBBQJ8ACgAABMeAxQOAgcUDgMHBgcOBSMiLgEnJjY3PgE/ATQ+A+oICwUCAgMCAQ8XGRsINAoBAwIGCRELBAsVAwUpHRIyEBAEDA4WAnYDCQoMCgwHBwEBIjc9RBqVUQUfCxUHBwISERy9UzJ/JyYCBhIICQAAAAH//f/yAd8BngBxAAABFgcOAgcOAR4BFRQGBwYnJjc+AT8BNjc2Jg8BDgEHDgEXFgcGBxQHMDEGBzAHIiMGIicmJyY3PgE/ATY3NiYPAQ4BBw4BFxYHDgEHIiYvAS4BJzU0Njc+AR8CPgUWFxYXPgM/AT4EAao0DQEOFggGBAECEBEoCwgMAhIHCAYIBAkHBxQaFBMkAwIEAwcCBAUBAQEECQUfCQgLAhIIBwYJBAoGBxQaFBMkAwIFAxEMCA4DBAcHAU8XCxgHBg4BAwwMExEWCicCAwkIBgICAgcXFSABkBRABS1FGhYyISICDhoBAykfQg9EGhsSHQ4MAQEGGyAejSAXEgkHAQEEAgECAQMjH0IPRBsaEh4NDAEBBhsgHo0gFxILDwEFAwIHGgoKOvUUCwIEBA4BBAoICAQCBRMsBQsIBgIBAgUOBQQAAf/9//0BMwGlAEIAAAEeAhQHDgIHDgEeARUWDgEHBicmNz4BPwE2NzYmDwEOAQcOARcWBw4BBwYmLwEuASc1JjY3PgEfAj4FFgEHEhUEAQEPFQgGBAEDAQYQDSkLCQoDEQgIBQkECgcHFRsUEyQEAgUCEgwIDwQDCAgBAU8XDBkHBg8BBAwMExIXAZ4IGRsRBwUuRRoWMiEjAggREAEDKh5DDkUbGxIdDgwBAQcbIR6OIBcSCw8BAQUDAgcaCgo69xULAwUEDQEDCgkIBAEAAAL/9wAAATcBpgAbADAAAAEUDgMHDgQnLgE3PgQ3PgI3NhYHNiYHDgEPAQ4CBwYfAR4BPwE+AQE2AQoTKx4CBhYZJxU4LQYBAxEXLRwFETMZJzpPAg4RCRMEBR0mCgIBAgEEFggJJzgBQgcYR0JRHwIGEAsGAgdLMgYTOTZHHAUQGwIBMj0fEQcEEgYHI141GAsJBREGBgYfnQAAAAL/xv8yAU0BqAAsAEUAABMyFgcUDgMHDgInJicGBw4FJyIuAScmNjc+AT8BPgQXFhc2FzYuAQcOAw8BDgMHBh8BHgE/AT4B9CQ1AQEMEyodBBE4Hx4VHgYBAwEHCRALAwsVAwUnHhEwEA8BBAsOFgwXAxckAwUNCgUMCAcCAhUgEAgBAQEBAxQICCU5AY8xLgsQRztNHAUOEwQFEGYzBR8KFQgHAQISEBy8UzF+JiYCBxEICQYIFwtnExUDBAIJCAgCAxk8OSMPCwkFDwYFBRyTAAAAAv/3/yIBVAG1ACwAQAAAATYWFRQHBgcGAgcyPgEzFhUWBwYHBicmNTQ2Nw4BLgInJjc2NzY3Nhc+Agc2BwYHDgEPARQVFhcWNzY3PgIBJxIbAggPGmEOAwgSBR0BIhseHBEPFA0FDyggHwYEAxBYFhpALgIGFEcDEhEiHyMDAgEDCxcIBh0qDQGkARMVBwgeIDn+6F0DBAIaGBQPCAgODBoWeisBAwILJBwWGYBlGQ0hLgMKEGwjAgIqJmEeHgUFBwYUEQUIIms/AAAAAQACAAABLwGqACMAAAEWDgIvASIGDwEOAQ8BDgEnLgEnNSYSNzYXMh4CFxU+ARYBLAINExIDHhgoCAkTGQMEAxYYEBEBAkgKEhwIDQYDARBBOAGDERUFAwIDIBARJW0kJB8fAgIYCwwoAQEaKwIICQoDAxcTEAAAAf/nAAIBPwGqADwAAAEeAQcGBwYnLgQ1JgcOARcWFxYGBwYmJyY3PgEXHgEGDwEOAR8BHgM3Mz4BPwE2JyYnJicmNz4BAQ0YGQQEGAsKBQkGBAQLGhIFFUUEAyAlJmUjOBMGMhoRDgMEDgUBAgIDCwsLBAQGDAMDIAwEJxQHEicVWgGaCyoUFAYDAgIFCAYJARQIBS8fWycgRBITARYkRBkmCAUVEAUVBxEEBAYIAgEBAQQCAhI1FDUaGT0xGxAAAQAE//0BJAJ7ADoAAAEeAQcOASciJwYHBgcUDgQjIi4BJyY2NzY3JicmNjc+AR8BFjM3PgQXHgMOAzEUBxYBBhAOAgMfJAkKIRAzCwQCBgkPCgQKEwIEKR0SGRcHDQEJBxwKCgQGFQEECw0VCwcKBQIBAgIDDRUCDQUNDRQhAwFUMJdRBR8LFQgHARIQHL5UM0QEAwggEAwKAQEBNwIGEgkJBgIJCQwKDAcIAR4DAAAB//z/9wFiAakANQAAARYHBgcOBAcGJyYxJgcwDgMHBiYnJjc2Nz4BFx4BBwYHDgIWNzI+Azc+Ajc2AUAiFU0JAQMDBQwKJhEBBQ0KCA0PCRcsCwkBBEQUHxcdCw0vEAMJDwYQAQUPDhUJCCofByABnQ0qoj0MKh8fEgIILgIHDQoHCQUBAhcUEiVLpjAlAgEmFVsrCR0+JwEBCA4fFhRoRw00AAEABf//AVQBqgAtAAABHgEHDgEHDgMHDgEuATc2NzY3PgEzNx4BBxUOAgcGFxY3Njc2Nz4BNz4BAUMNBAUFKhQPFyIoFBcvJhYCBz8FCQkVBgcSEQECChcMHgIBDQECHiAMSQIJKAGgBhUOFHEpHSo3Kg4PBRIwJFu1DgsKCgEBEwoKChg2IVQ/HwYBARZAGLwEFg0AAAAAAf/0//0B6QGmAFAAAAEWBwYHDgEHBicmJw4GJy4BNzY3PgEXMhYHDgEHBgcGNzY3PgI3Njc+Ajc2FhcWBgcGBwYHBhYXFj4BNz4DNz4GMzYB4AkcPScLOSsoGxIBAQQMDRUTGgssGRMsHQwYERMYCgUXDSoCAioaEwggHQQBAgYHEAgOGgUDBgs2BwEDCAERDR4SBwMZFxYDAQcDBwYKDAcVAY0TPIdhHDUEAxYPFQIEDQsOBgUECldAnTgZEgEdFwsrHF9BPyIWOxhURwgBAwoNDwQGCAsPFRuAIgULGy8BASAjEwhAPTgHAQ4FCwUHBAIAAAEAAf/4AXgBqgA0AAABHgIHDgEPARYXFgYHBi4BLwEGBwYnLgE+AT8BPgE/ASYnJjU0PgMeAh8BPgM3NgFYCBEHDws8GBhICQcFEAsVDQVJBUg0JAoKAgQDAw5AGhohEhkECA4TEg8FBTAJHRwZBRgBogMSIBQQQhoZfhIMJAwJBAkHhwNcQg0EERIQBgUUTh0eQx0pDQYMDAoCCBYIClcKHx8dBiEAAAH/0/9FAWwBqwBXAAABFgcOAQ8BBgcOCAcGJyYnJicmNhcWFxY+Ajc+ATcwJhUGBw4CJyoBLgInJjY3Njc+BBcWBwYHDgEHBhcWNz4CNz4CNz4DFgFGJRgFDQMEQxMBCggNDREUFxwQERI7EQEBCywdCQ8OFRMLBAoWAwEGDAUQIhACBxUQEQMGERorEwUIEAsTBxcMAw0MKgYXDgUIDi0pDgchEwYBAwgJDwGlEzAMIQoLsj4FIxcnHCQZGA4DAgIKJgMCHi8KAwoGAREOCBI+DgEBCAwFDA4CBgoWDxxrP2kXCAkOBAQGCzAKFxdbEUgVBgIEOEkgElUrCAECBwMBAAAAAf/2//wBXwGkADYAAAEeAQcGBw4BBw4BDwEWFx4CFRQOAScmBwYHBicmNDc+BT8BJiIGIyIuAjc+AT8BPgEBNxIWAQEgAgUCOFMNDj4fERYRDRUMYSMuHRoMCQsFHScuLCQLDBIoIgMIDxYMAQEOBgcenwGhARoRHh4CCAI4ZBYVAwUCCRQQEBcJAg0CAgcGDgsjFAYkLjYzKQ0NAgIDBhALDxQCAwYBAAAAAAQAIv8sA0oCiQAtAEQAbgB/AAABNh4BBxQOAwcOAicmJwYHDgUjIi4BJyY2Nz4BPwE+BBcWFzYXNiYHDgMPAQ4CBwYfAR4BPwE+ASUGFxQWBgcGJy4BJyY/AS4CBwYHBgcGJyY3Njc+BDc2HgIHBhUHNgciBw4BBw4CHgE3Nhc2AvEXKBoBAQwTKh0EETgfHhUeBgEDAQcIEAwDCxUDBSgdETEPDwEECw4WDBcDFyQEDRAFDAgHAgIbJgsCAQEBAxQICCU5/tUZBQUBAw0cEBcDBwUDEzYsEB0LBw0aMToUDUMKK0JCRxkdJAgDAwFoGRoFDBJZHQECAgEICU0vAwGJARQsHwkURTxNHAQPEwUEEGYzBR4LFQcHAhIRHLtTMn4mJgIGEggIBggWC2gdEQcCCAkHAwIhWDIWCgkFEAYFBR2TXsBCBRwQBxoEAhIPHjwiBggBAgMSCjFhAwRXPIsUS2NYQgQGEyMoEAUCrIoCCQ+KOwEECQcGAQEPMwAAAAQAIv8uAsYCkgApADEAVwBoAAABFgcGBw4BBw4DDwEGBw4BJyYnJjc2NzYXFjY/ATY3PgE1PgI3PgIOAS4BPgEWATcuAQcGBwYHBicmNzY3PgQ3NgcUDwEGFxQWBgcGJy4BJyYnNhc2NzYHBgcOAQcOAh4BApURAwELAj0LBQ4OCwQDESQbTiQpBAEHDRsSHxIbCAgOEwVGAhEXBQkePRUfFwEVHxf+oQMcUhcdCwcNGjE6FA1DCitCQkcZTAEDGhkFBQEDDRwQFwMHbk0vAw4ZGgUMElkdAQICAQgBgAoXBycFwCUTLSYiCgksJh0OERQgEQ8ZAwISCAsKCxJCD94DBjE6CQ0FPxkEEiAZBBP+mSIJBwIDEwoxYQQEVjyLFEtjWEIFDlcIH8HAQgUbEQcaBAISDx61AQ8zSooBAQkOizsBBAkHBQACADD/+gKtAosAPAB5AAABHgEHDgEnJicGBwYHDgUHIi4BJyY+Ajc2NyYnJjY3PgEfARYzNz4EFx4DFA4CMRQHFiciJgYHBgcXNhcWBwYHBiMHBgcGFxY2FhceAQcUDgMHBicmJy4BNjc2NwYHBicmPgE3NhceBAcGAo4QDgEDICQICiERMgsBBAIGCBAKAwsTAgIJEhsOEhoXBw4BCQccCgoEBhYBAwsNFQsICgQCAwIDDBTSBjcxF0cVLBkPDwYGFxQRQR0FCDMNIRgIDw8EAQQHDQg9KTwdDAMLCzlGFQYhDwkDCgcznCY4HBAEAQECEwQNDRUgAgEBVDGWUQUfCxUIBwECEhANQ1NhKTREAwMJHxEMCgEBATYDBhIJCQYCCQkMCwsIBwEeAxICAQNhPQEBDg4XFQUFBlYtRAUBAwEECBsOAQMICAkDFQgKMBRKTCO9ZQQBBhELFhAEJRADDQ0PCwYYAAACADD//ALzAo4ARwCCAAABHgEHDgEnMC4CKgEOAQcGBwYHDgEHFxYXFhcWFxYHDgEPAQYnIicHDgMHDgEmJyY3Njc2NyYnLgE3Njc2Fzc2Nz4BFxYFNhcWBwYHBiMHBgcGFxY2MhceAQcUDgEHBicmJy4BNjc2NwYHBicmPgE3NhceBAcGJyImBgcGBwLIGBIMCyMICwcOCg4LDAUVEQMCAQcCFA4LCAUEAQIDAwcBAhQnBBEjDBMJCwEDGRoHEwUEFRAlFwcPAQgLGwoXDREZF08rFv5OGQ8PBgYXFBFBHQUIMw0hGAgPDwQDEQ09KTwdDAMLCzlGFQYhDwkDCgcznCY4HBAEAQErBjcxF0cVAnEJIBIQAgYDAgMDBwUXKggEBBIFAwEEBAYEBAoLCAwDAhYDAm0kSyc/AhAPAgYPLSFcRGkEAwUkDhcEAQMiKSYlJgQD8QEODhcVBQUGVi1EBQEDBQccDgIIEQUVCAowFEpMI71lBAEGEQsWEAQlEAMNDQ8LBhgBAgECYj0AAAAAAwAw/zQCJQKMACgAMABrAAABFgcGBw4BBw4BDwEGBw4BJy4BJyY3Njc2FxY2PwE2Nz4BNz4CNz4CHgEOAS4BNgMGJyYnLgE2NzY3BgcGJyY+ATc2Fx4EBwYjIiYiBwYHMzYXFgcGBwYjBwYHBhcWNhYXHgEHFA4BAewRAgEKATcKCBcICA8jGk4kFBgDAgcMGxIgEhoICA4RBD8BARAUBggeHhwLDR0cCw3iPSk8HQwDCws5RhUGIQ8JAwoHM5wmOBwQBAEBKwY3MRdHFSwZDw8GBhcUEUEdBQk0DSEYCA8PBAMRAY4KFwcnBcImHU4YGS0mHhERCRsOEQ8aBAIRCAwLCxJCEOACBzE7CQ4GcgocHg4KHB7+FhUHCzAUSkwivmUFAQURChcPBSUQBAwNEAoHFwIDYT4BDg8WFQUFBlcsRAUBAwEECBsOAggSAAAAAgAw//cCuAKLAFUAkAAAJRQOBTEGMQYnJicmJwYHDgUjIi4BJyY2Nz4FPwE+BBceAw4DMTAOAQc2NzYXFgcGBxYXHgcfAR4BFx4BFwEiJgYHBgcXNhcWBwYHBiMHBgcGFxY2FhceAQcUDgEHBicmJy4BNjc2NwYHBicmPgE3NhceBAcGArcCBAUFBAMBHRwbHxE5EwQBAwIGChAMBAsWAwUpHgkUExMPDAQDAQQMDhcNCAsGAgECAgMkMQ5SBygODx0QUwsIAwgHBwcGBQQBAQcvAwgIAf7/BjcxF0cVLBkPDwYGFxQRQR0FCDMNIRgIDw8EAxENPSk8HQwDCws5RhUGIQ8JAwoHM5wmOBwQBAEBMgUKCAcFBAEBEhMRJxdjRSMGHwoVCAcCExAdvVQXNTAvJh0ICAIGEggJBgMJCgwKDAcIVHYoPgUaIygcEDoWDgYNCwsJCAcEAgEIJgMGDgQB8gIBA2E9AQEODhcVBQUGVi1EBQEDAQQIGw4CCBEFFQgKMBRKTCO9ZQQBBhELFhAEJRADDQ0PCwYYAAIAMP/8AnICjgAnAGQAAAEeAxQOAxUiDgEHBgcOBSMiLgEnJjY3PgE/ATQ+AwciJiIHBgczNhcWBwYHBiMHBgcGFxY2FhceAQcUDgMHBicmJy4BNjc2NwYHBicmPgE3NhceBAcGAlcHCgYDAQICAgEkMQ00CgEDAgYJEQsECxUDBSkdEjIQEAQMDhaUBjcxF0cVLBkPDwYGFxQRQR0FCDMNIRgIDw8EAQQHDQg9KTwdDAMLCzlGFQYhDwkDCgcznCY4HBAEAQECdAMHCQoKCgkGBgFVeCiVUQUfCxQIBwISERy9UzJ/JyYCBhIICVECA2E+AQ4PFhUFBQZWLUQFAQMBBAgbDgEDCQcJAxUHCzAUSkwivmUFAQURChcQBCUQBAwNEAoHFwAAAwAw//sCmQKMADYATACHAAABFgcOAQcOBCciLgMnJiMHBhQOBCMGJjc+Az8BNjc2FhcWDwE2NzYXFhcWFxYHPgEnLgEHBgcOAQ8BFgYWNzI+AjcDIiYiBwYHFzYXFgcGBwYjBwYHBhcWNhYXHgEHFA4BBwYnJicuATY3NjcGBwYnJj4BNzYXHgQHBgKSBgUGNCQBBA0OFwwBBAsJCgICAQIBAgMHBwwGGBcBAQoQHBBdDBYRHwYND0YIAxsfCQcIBQZxHRYEAgkLDg4aHwICAQIKCgYOCwkDZwY3MRdHFSwZDw8GBhcUEUEdBQgzDSEYCA8PBAMRDT0pPB0MAwsLOUYVBiEPCQMKBzOcJjgcEAQBAQFeJi47jiYCBAoGBQMBBAYMCAUEAwEJBQgFBAEfGQ49UmMp7hwMBgoKFCSrCgQdEAUICgsP9i+DFQ0JAgIYJ2cgIAEQEQEKDg0FAbMBA2E9AQEODhcVBQUGVi1EBQEDAQQIGw4CCBEFFQgKMBRKTCO9ZQQBBhELFhAEJRADDQ0QCgYYAAAAAgAt//8CqwKGADwAfwAAAR4BBw4BJyYnBgcGBw4HIyIuAScmNjc2NyYnJjY3PgEfATIzNz4EFx4DDgMxFAcWJw4BIiYjJgcUBxQOAQcyFx4BFxYGIwYHFDEGBxQOByMiLgEnJjY3NjcGJyImLwEmNz4DPwE2FhceAQcCjRAOAgMfJAkKIRAzCwECAQMEBwgMCAQKEwIEKR0SGRcHDQEJBxwKCgQGFQEECw0VCwcKBQIBAgIDDRWwBhcTJgchMAETIA0xCgsXAwUYGh81LgwDAQMDBQcJDQcECxUDBSgdIDUVDwcPBQQYCwEHCQcDAjTUJhUKBgIPBQwNFSACAQFUMZdQBhQLEQkLBgQCEREcvVQ0RAMDCR8QDAoBATYCBxIICgYCCQkNCgwHBwEfAh8FBAIBAwEBASxMIQEBDxASHAEGAYRfBBQIEQYNBQYCAhIQHLpSWn8EAQUCAg8cAwkGBQEBFw4WDBkHAAAAAAIALf/+ArECiABHAIoAAAEGBwYfARYGJy4CJzQ+Aj8BNjc0Njc2LgIjIgcGBw4BDwEOAScmJyY+Ajc2NzY3PgI3NhYVFAcGBxQzPgEXHgEfARYlBjEUDgEHMhceARcWBiMGBxQxBgcUDgcjIi4BJyY2NzY3BiciJi8BJjc+Az8BNhYXHgEPAQ4BIiYjJgKmHgcJBQQBEhgREwcBBQcHAgMFAg4CAQIEBAETGBkVBSADCAQYEiEDAQIBBAEGKRBRCgsUDBQiFhEvARMxEwsSAwQT/ngBEyANMQoLFwMFGBofNS4MAwEDAwUHCQ0HBAsVAwUoHSA1FQ8HDwUEGAsBBwkHAwI01CYVCgYFBhcTJgchATRoIy8sJQ4bAgITHxkNJyUiCgoWBgE4CAUIAwIUFSkKgRc8DxADBCUFFgwbCi2KOMkYFxgCBRQQGDQldQETEwQCDgUGINECASxNIAEBDxATGwEGAYRfBBUHEQYNBQYCAhIQHLpSWn8EAQUCAg8bBAkGBQEBFw4WDBkHBgUEAgEAAAAAAgAt//YCvAKGAEoAkAAAJRQOBTEGJyYnJicGBxQOBCMiLgEnJjY3PgE/AT4EFx4DFA4CMQ4CBzY3NhcWBwYHFhceAR8BHgIXHgEVAQYVFA4BBzIXHgEXFgYjBgcUMQYHFA4HIyIuAScmNjc2NwYnIi4EJyY3PgM/ATYWFx4BDwEOASImIyYCuwIEBQUFAx0dGx4RORMFAwIHCRELBAsWAwUpHhIzEBABAwwPFwwIDAUCAgMCASQxDlMHKA0QHhBTDAcJGQgIBRQZBwcJ/m8BEyANMQoLFwMFGBofNS4MAwEDAwUHCQ0HBAsVAwUoHSA1FQ8DBwYGBAQBGAsBBwkHAwI01CYVCgYFBhcTJgchMQUKCAYFBAISEhInFmRFJAUfCxUHBwITEBy+UzN/JiYDBhEJCAYCCQoMCwsIBwFTdig+BBojJx0POhYPECQKCQYRFQUHDgMB8gEBASxMIQEBDxASHAEGAYRfBBQIEQYNBQYCAhIQHLpSWn8EAQECAgIBAQ8cAwkGBQEBFw4WDBkHBgUEAgEAAAAAAgAt//8CcgKHACYAaQAAAR4DFA4CFSIOAQcGBw4FIyIuAScmNjc+AT8BPgQFFAcUDgEHMhceARcWBiMGBxQxBgcUDgcjIi4BJyY2NzY3BiciJi8BJjc+Az8BNhYXHgEPAQ4BIiYjJgJXCAsFAgIDAgEkMQ00CgEDAgYJEQsECxUDBSkdEjIQEAEDDA4X/t4BEyANMQoLFwMFGBofNS4MAwEDAwUHCQ0HBAsVAwUoHSA1FQ8HDwUEGAsBBwkHAwI01CYVCgYFBhcTJgchAnQDCQoMCgwHBwFVeCiVUQUfCxQIBwISERy9UzJ/JyYCBhIICVIBAQEsTCEBAQ8QEhwBBgGEXwQUBxIGDQUGAgISEBy6Ulp/BAEFAgIPHAMJBgUBARcOFgwZBwYFBAIBAAAAAAMALf//ApsChgA0AEoAjwAAARYHDgEHFA4FJyIuAycmNQcUDgMjBiY3PgE/ATY3NhYXFg8BNjc2FxYXFhcWBz4BJy4BBw4BDwEOAQ8BFgYWNz4BNwMGFRQOAQcyFx4BFxYGIwYHFDEGBxQOByMiLgEnJjY3NjcGJyImLwEmNz4DPwE2FhceAgYPAQ4BIiYjJgKVBgUGNSQCBwcMDBIJAQQKCQoDAgMBBQgOChgWAQInHV4LFhIfBgwORwgDHB8IBwkEBnAcFwQCCgoHDgQEGh4CAwEBCgoJFwbyARMgDTEKCxcDBRgaHzUuDAMBAwMFBwkNBwQLFQMFKB0gNRUPBw8FBBgLAQcJBwMCNNQmDQ4BAwMCBhcTJgchAWEnLjqPJgECBgUHAgICAQQGDAcFAQUDBAwIBwEeGiO5Te4cCwcLChMkqwoDHhEECAoMD/UvgxUMCgIBDQYGJ2cgIAIPEgEBFwwBtgEBASxMIQEBDxASHAEGAYRfBBQIEQYNBQYCAhIQHLpSWn8EAQUCAg8cAwkGBQEBFw4WBxAMCgMCBQQCAQAAAAIALf//AuAChAA6AJkAAAEeAQcOAScmJwYHBgcUDgQHIi4BJyY2NzY3JicmNjc+AR8BMjM3PgQXHgMOAzEUBxYnHgMUDgIxDgIHBgcUDgQjIi4BJyY2NzYnJgcGBwYHFA4FIyIuAScmNjc+BT8BND4DFx4DFA4CMQ4CBwYXFhcWNz4BPwE0PgMCwRAOAgIgJAgKIREyDAQCBggQCgMLEwIEKR0SGhcHDgEJBxwKCgQGFgEDCw0VCwcKBQIBAgIDDRXaCAsGAgIDAgEjMA4yCgMCBgkRCwQLFgMEFRMDC0cODQcdCAMCBAYKDwoECxYDBScdCBQSEg8MAwQEDA4XDAgLBgICAwIBGCcOBAUmMgoEEi4PDwQMDhYCDwQNDRUgAgEBVDGXUAYeCxUIBwECEhAcvVQ0RAMDCR8RDAkBATYCBxIJCQYCCQkMCwsIBwEfAm0DCQkNCgwHCAFWeiiZUQYfCxUIBwISERV8RwsBDAQEE2ZABRsJFQcLBAITEB3AVBg2MDAmHggIAgcSCAkGAwkJDQoMBwgBPF8mDgEJBAEKMnslJAIHEggJAAAAAgAt//8DUAKEAEkApwAAAR4BBw4BJyIuAyIOAgcGBwYHDgIHFxYXFhcWFxYHDgEPAQYnJicHDgMVDgEmJyY3Njc2NyYnLgE3Njc2Fzc2Nz4BFxYlHgMUDgIxDgIHBgcUDgQjKgEuAicmNjc2JyYHBgcGBw4HIyIuAScmNjc+AT8BND4DFx4DFA4CMQ4CBwYXFhcWNz4BPwE0PgMDJhgSDAsjCAEJBgsKDAoLCgQWEQMCAQMEAhQOCwgFAwEDBAMGAgIUJwQRJAwUCQwEGRoHEwYEFhAnGAcOAQgLGwoXDREZGE8rF/7PCAsGAgIDAgEjMA4yCgMCBgkRCwEFDAoKAgQVEwMLRw4NBx0IAQIBAwQHCg0JBAsWAwUnHRIwEBAEDA4XDAgLBgICAwIBGCcOBAUmMgoEEi4PDwQMDhYCcAkgEhABBQMCAgIBAwYFFisHBQMICwUCAgQEBgQECgsIDAIDFgMBAm0kSyc/AREPAwYPLSFcQ2kEAwYkDhcDAQMiKSYkJgUDBgMJCQ0KDAcIAVZ6KJhSBh8LFQgHBAcQChV8RwsBDAQEE2ZABRYKEggMBQQCExAdwFQzgScnAgcSCAkGAwkJDQoMBwgBPF8mDgEJBAEKMnslJAIHEggJAAAAAgAw//8CigKBADsAeQAAAR4BBw4BJyInBgcGBxQOBSMiLgEnJjY3NjcmJyY2Nz4BHwEyFzc+BBceAw4DMRQHFiciIwYHBgcwFDEWFzAyHgUGFQ4BByYnJicmNjc2MzY3NjcmIzAuBzQ3PgM3FhcWFxYGAmsQDgICICQICiIQMwsDAgQGCQ0JAwsTAgQpHRIaGAcNAQkHHAoKBAYWAQMLDRULBwoFAgECAgMNFecJCkYVMAkSBAUCBgMFAgMBBBoYaxAhAgEbIwgLDS0fMQoCBAMEAwUCAwEBAgoPEAxrECEBARwCEgUNDBUhAwFTMZdRBhgLEwkKBAESEBy+VDRDBAMIIBAMCgEBATcCBhIJCQUDCAoMCgwHCAEeAhKrQJRQAgEBAQEDBAUHCQYaEwIBAQQVEygBAXSHWYABAQEBAgMDBgcJBQ0RCgQBAwMEFhMmAAAAAAMAMP8rApACfwAuAEcAgQAAATYWBxQOAwcOAicmJwYHDgUjIi4BJyY2Nz4DPwE+BBcWFzYXNiYHDgMPAQ4EBwYXFR4BPwE+AQUwFjIeBAYVDgEHIicmJyY2NzIzNjc2NyYjMC4GNDc+ATcWFxYXFgYHIiMGBwYHFDEWAjckNQEBDBMrHAQROB8eFR4GAQMCBgkQCwMLFQMFJx0LHRgVBgYBBAsOFgwXAxckBA0QBQwIBwICERwQDAQBAQEEFAgIJTn+rgUCBgMFAgMBBBoYaxAhAgEbIwgLDS0fMQoCBQIGAwUCAgEFGhhrECEBARwjCQtFFTAJEgGIATEuBxdDPU0cBA8TBQQQZjMFHgsVBwcCEhEcu1MfSz81Dw8CBhIICAYIFgtoHREHAggJBwMCFDIqLBkMCgkFEAYFBR2ToQECAgQFCAkGGRMCAgQVEycCdIdagAEBAQEDAwYHCgYYEwIEAgQWEyYBrD+VUAEBAAAAAgAw//4C4wKAAEkAhAAAAR4BBw4BJzAuAioBDgEHBgcGBw4BBxcWFxYXFhcWBw4DByMGJyYnBw4DBw4BJicmNzY3NjcmJy4BNzY3Nhc3Njc+ARcWAQYHMBQxFhcwMh4FBhUOAQcmJyYnJjY3NjM2NzY3JiM0Ii4FNDc+ATcWFxYXFgYHIiMGArgYEgwLIwgLBw4KDgsMBRYQAwICBgITDgsIBgMBAgQBBAMDAQETJwURIwwVCAwBAxoZBxMFBRUQJxcIDgEIDBsJFw4RGRhOKxf+bDAJEgQFAgYDBQIDAQQaGGsQIQIBGyMICw0tHzEKAgUCBgMFAgIBBRoYaxAhAQEcIwkKRgJvCiASDwIFBAIDAwcEFysHBAQSBQMBBQQGAwUKCwUJBQQBFwMBAm0jTCc/AREOAgYPLSJbRGkEAwUkDhcDAgMhKSYkJgUC/sSUUAIBAQEBAwQFBwkGGRQCAQEEFRQnAQF0h1mAAQEBAgIEBQcKBhkSAgMDBBUUJgGrAAAAAAMAMP84AhECggApADEAbQAAARYHBgcOAQcOAQ8BBgcOAScuAScmNzY3NhcWMj4BPwE2Nz4BNT4BNz4CHgEOAS4BNgMOAQcmJyYnJjY3MjM2NzY3JicwIi4FNDc+AjcWFxYXFgYjBiMGBwYHMBQVFjMwHgYGAdsRAwEKAjoLCBgJCBAkG04jFBgCAgcNGxIfCxIPCwMDDhIERAQiBwkeGhwLDB0cCwzGBBoYaxAhAgEbIwgLDS0fMQoCBQIGAwUCAgEDEBQQaxAhAQEcIwkLRRUwCRIEBQIGAwUCAwEBjgoYByYGwSUdThgYLSYdDxAKHA4QDxoEAhIFCgsEBRJCD98DDmAMDgVwChweDgscHv44GRMDAQIDFhMnAnSHWYABAQECAgQGBwkGERQHAQMCBRUTJwGrP5VQAQEBAQEBAgQFCAkAAAIAMP//Ak8CgAAoAGMAAAEeAxQOAjEiDgEHBgcOBSMiLgEnJjY3PgM/AT4EAQYHMBQxFhcwMh4FBhUOAQcmJyYnJjY3NjM2NzY3JiMwLgY0Nz4BNxYXFhcWBgciIwYCNAgLBQICAwIBJDENNAoBAwIGCRELBAsVAwUpHQwcGRYGBwEDDA4X/ugwCRIEBQIGAwUCAwEEGhhrECECARsjCAsNLR8xCgIFAgYDBQICAQUaGGsQIQEBHCMJC0UCdQMJCgwKDAcIVXgolVEFHwsVBwcCEhEcvVMgSz81EA8CBhIICf7AlFACAQEBAQMEBQcJBhoTAgEBBBUTKAEBdIdZgAEBAQEDBAUHCgYZEgIDAwQWEyYBqwAAAAADADH//wJ4AoAAKwBBAH4AAAEWBw4CBw4CJyIuAScmNQcGBwYmNz4BPwE2NzYWFxYPATY3NhcWFxYXFgc+AScuAQcGBw4BDwEUBhY3PgM3JwYHMBQxFhcwMh4FBhUOAgcmJyYnJj4BNzYzNjc2NyYjMC4GNDc+ATcWFxYXFgYHIiMGAnIGBQQYKhkCCiMUAwkUBQICBiEYFgECJx1eDBYRHwYMDkcJAhwfCQYJBAdxHBcEAgoKDw4aHgICAQoKBg0LCgLsMAkSBAUCBgMFAgMBAw8UEGsQIQIBCB4YCAsNLR8xCgIFAgYDBQICAQUaGGsQIQEBHCMJCkYBXycuJFhZGgMKDgQDDwwFAQUhAQEeGiO5Te4cCwcLChMkqwoDHhEECAoMD/UvgxUMCgIDFydnICACDxIBAQoNDgTGlFACAQEBAQMEBQcJBhIUBwIBAQQVCxgYAQF0h1mAAQEBAQMEBQcKBhkSAgMDBBYTJgGrAAIAL///AvACgAA7AIcAAAEeAQcOAScmIwYHBgcUDgUjIi4BJyY2NzY3JicmNjc+AR8BMhc3PgQXHgMOAzEUBxYnBicmJw4EBw4EJy4ENzQ+ATcwPgUyFhcWBwYHBgcGFxY3PgM3PgE/AQYHMCMGJyY2Nz4BFx4DFxYVBgLREA4CAiAkCAohETIMAwIEBgkNCQMLEwIEKR0SGhgHDQEJBxwKCgQGFgEDCw0VCwcKBQIBAgIDDRXVBwoVFAQLIh8lDQEDERs2IwcULiEYBAIRDwEFBAgHCQoLBRgEAggLAg0lKw0BDxIXCQsfCgpSEgM6CQcTEhSYMAsjDxEGFwECDwUNDBUhAwFTMZdRBhgLEgkLBAIRERu+VDRDBAMIIBAMCgEBATcCBhIJCQUDCAoMCgwHCAEeAgwBAQEFBhVMW5ZUBRAqHxkBAQIQGzknBhUyEAIEBAUDAwMDDh4NDhIKNggJKQVEUWAcJU0UFAEEDB4XJAYHAQYBAwIDAwsaJgAAAAIAL///Ay0CgABKAJkAAAEeAQcOASciLgMOAgcGBwYHDgEHFxYXFhcWFxYHDgMVBwYnIicHDgMVDgImJyY3Njc2NyYnLgE3Njc2Fzc2Nz4BFxYFJicOBAcOBCciLgM3ND4BNz4DMhcWBwYHBgcGFxY3PgU3PgM/AQYHMCMGJyY2Nz4BFx4GFxYVBgcGAwMYEgwMIggBCwYOCw4LDAQWEQMCAQcCFA4LCAUDAQMEAgQDAwEUJwQRJAwUCQwDEBQSBRMGBBYQJhcHDwEJCxsJGA0RGRhPKxf+9hUUBAsiHyUNAQMRGzYjBxQuIRgEAhEPAQQNDRQJGAQCCAsCDSUrDQEICg0NDwYHEg8OBARSEgM6CQcTEhSYMAgTDQ4JCggDFwEiBwJwCSATDwIGAwIDAQEDBgUXKggEBBIFAwEFAwYEBAoLBQkGAwEBFgMCbCRLJz8CDA8DAwQQLCJcQ2kEAwUlDRgDAQMhKSYlJgUDXQIEBRVNWpdTBRAqHxkBAxAbOScGFTIQAQUJBQUOHg4NEgo2CAoqAyIvPDk5FBcxJB4ICAEEDB4XJAYHAQYBAQIBAQIDAQsbJQYBAAAAAAIAL//+At8CgQBEAIsAAAEGBwYfARYGJy4BJzQ2PwE2Nz4BNzYuAiMiBwYHDgEPAQ4CJyYnJj4BNzY3Njc+Ajc2FhUUBwYHFDM+ARceAR8BFicmJw4EBw4EJyIuAzc0PgE3PgMyFxYHBgcGBwYXFjc+Ajc+AT8BBgcwBwYnJjY3NjIXHgMXFhUGBwYC1B8GCQUEARIYGRIBDAYGBQEBDgIBAgQEARMZGBUFIQIIAg0TDCEDAQIFAQYpEFEKChUMFCIWES8BEzAUCxIDBBP6FRQECyIeJg0BAxEbNiMHFC4hGAQCEQ8BBA0NFAkYBAIICwINJSsNARcfCwsfCgpSEgM6CQcTEhSYMAsjDxEGFwEiBwE0aSIvLCUOGwIDJCYVRxoZFgYBOAgFCAMCFBUpCoEXPAoOBgIEJQkUJQotijjJGBcYAgUUEBg0JXUBExMEAg4FBiDFAgQFFU1al1MFESkgGAECEBs6JgcVMhABBAoFBg0eDg0TCjUICikFaoMkJU0VFAIDAQseFiQHBwUBAwIEAwobJQYCAAIAL//2AvECgABNAJQAACUUDgUxBicmJyYnBgcOBSMiLgEnJjY3PgU/AT4EFx4DDgMxDgIHNjc2FxYHBgcWFx4BHwEeARceARUBJicOBAcOBCciLgM3ND4BNz4DFhcWBwYHBgcGFxY3PgI3PgE/AQYHMAcGJyY2NzYyFx4DFxYVBgcGAvACBAUFBQMdHRseETkTBAEDAgcJEQsECxYDBSkeCBUSExAMBAMBAw0OFwwIDAUDAQICAwEkMA9TBygNEB0RUwwICBkICAcvAwgI/vYVFAQLIh8lDQEDERs2IwcULiEYBAIRDwEEDQ0UCRgEAggLAg0lKw0BFx8LCx8KClISAzoJBxMSFJgwCyMPEQYXASIHMQYJCAcFBAISEhInF2NFJAUfChUIBwITEB29VBc1LzAlHggIAgYSCAgGAgkKDAoMBwgBU3YoPgUaIygcEDoWDxAkCQoIJgMHDQQB6AEFBRVNWpdUBRApIBgBAhAbOiYHFTIPAgQKBQEFDR4ODhIKNQkJKQVphCQlTRQVAgMBCx4WJAcHBQIDAQQDCxolBwEAAAIAL///ArMCfwAoAHEAAAEeAw4DMTAOAQcGBxQOBCMiLgEnJjY3PgM/AT4EByYnDgQHDgYnIi4DNzQ+ATc+AzIXFgcGBwYHBhcWNz4CNz4BPwEGBzAjBicmNjc+ARceAxcWFQYHBgKYCAsGAgECAgMlMA4zCwMCBwkQCwQLFgMFKR4LHRkWBgYBAw0NF6cVFAQLIh8lDQEBBwsWGyoaBxQuIRgEAhEPAQQNDRQJGAQCCAsCDSUrDQEXHwsLHwoKUhIDOgkHExIUmDALIw8RBhcBIgcCdAIJCgwKDAcIVXgolVEFHwsVBwcCEhEcvVMgSz81EA8CBhIICF8CBAUVTVqXUwMIGhYcEw0BAxAbOScGFTIQAQUJBQUOHg4NEgo2CAoqBWmDJSVNFBQBBAweFyQGBwEGAQMCBAILGyUGAQAAAwAv//8C1AKBADQASgCSAAABFgcOAgciDgUnLgInJiMHBhQOAyMGJjc+AT8BNjc2FhcWDwE2NzYXFhcWFxYHPgEnLgEHDgEPAQ4BDwEWBhY3MjY3AyYnDgQHDgQnLgQ3ND4BNz4DFhcWBwYHBgcGFxY3PgM3PgE/AQYHMCMGJyY2Nz4BFx4DFxYVBgcGAs0GBQMZKhgBAgYICw0RCQMKFAQCAQIBAwYIDQcZFgECJx5dDBYRHwYND0cJAxsfCQcIBQZxHRYEAgkLBw4EBBkfAgIBAgoKCRcHbxUUBAsiHyUNAQMRGzYjBxQuIRgEAhEPAQQNDRQJGAQCCAsCDSUrDQEPEhcJCx8KClISAzoJBxMSFJgwCyMPEQYXASIHAV4mLiVYWRoCBwUGAwICAQIPDQUEAwMJBwgFAR8ZI7lN7hwMBgoKFCSrCwMdEAUICgsP9i+DFQ0JAgENBgYnZyAgARARARgLAbABBQYVTFuWVAUQKh8ZAQECEBs5JwYVMhABBQkGAQUOHg0OEgo2CAkpBURRYBwlTRQUAQQMHhckBgcBBgEDAgMDCxomBgEAAAAAAgAv//gDPwKLADwAkgAAAR4BBw4BJyYnBgcGBw4GIyIuAScmPgE3NjcmJyY2Nz4BHwEyMzc+BBceAxQOAjEUBxYBFhceAQYHDgEuBicuAScOAgcOAgcGJjc+ATc+AT8BDgQnLgE2Nz4BFzIeAgYHDgEPATA+BTcyNh4CFxQWDgIHBgceAgMhEA4CAyAjCQohEDMLAQMBBAYJDgkDChMDAhAiExEaFwcOAQoHGwoLAwcVAQMMDRULBwoFAQMCAwwV/n0XDQcKDBYIEA8ODgsMBwkBDUwDBA0dCAYJDxMgLgMDKhgOGAUEAQUPDhYJEAITEB5iJgIFDAcBBwsiCwwTISs0NDoZAwgYFBUGAQMHFBChXAMNOAIPBQwNFSACAQFUMZdQBhgMEgkKBQIRERJkgDc0RAMDCR8QDAoBATYCBxIICgYCCQkNCgwHBwEfAv5pGAsIGCQNBAMEBw0LEAkOAhKXEwQQNh4VSycMEx4jI6lLLVATEgIEDAUFBQceIhIiNBEDDA4bEBlbICETHyYpJR4HAQEGEg4BBQ0MEAY/XQspcgAAAwAv/y8DVAKLAC4ARgCfAAABNhYHFA4DBw4CJyYnBgcOBSMiLgEnJjY3PgM/AT4EFxYXNhc2JgcOAw8BDgMHBh8BHgE/AT4BBRYXHgEGBw4BLgUnLgEnDgQHDgIHBiY3PgE3PgE/AQ4EJy4BNjc+ARcyHgIGBw4BDwEwPgU3PgEeAhccAg4DBwYHHgIC+iU1AQEMFCocBRE4Hh8UHgYBAwIGCRALBAsVAwUoHQscGRUGBgEDDA4WDBcCGCQDDBAGCwkHAQIWIBAHAgEBAQQUCAglOP6WFw0HCgwWCBMPEgwPCAsBDUwDAQYODQ8FBgkPEyAuAwMqGA4YBQQBBQ8OFgkQAhMQHmImAgUMBwEHCyILDBMhKzQ0OhkDCBgUFQYCBQoRC6FcAw04AYwBMS4JFEU8TRwEDxMFBBBmMwUeCxUHBwISERy7Ux9LPzUPDwIGEggIBggWC2gdEQcCCAkHAwIZPTgkDwoJBRAGBQUdk30YCwgYJA0FAQQNCxILEQESlxMBBhQWJBMVSycMEx4kIqlMLFESEgEFDAUFBQceIhIiNBEDDA4bEBhbISETHycpJB4HAQECBhIOAQIHCAoKCgU/XAwpcQAAAgAv/z8DXQKLAFgAsQAAARYHDgMPAQYHDggnJicmJyY2FxYXFj4CNz4BNzAmFQYHDgMnIi4DJyY2NzY3PgQXFgcGBw4BBwYXFjc+ATc+Azc+AxYBFhceAQYHDgEuBScuAScOAgcOAwcGJjc+ATc+Az8BDgQnLgE+ATc+ARcyHgIGBw4BDwEwPgU3PgEeAhcUFg4CBwYHHgIDOCUYBAgGBQEBQxMBDQgRDhgXICISOxEBAQsrHggQDhQUCwMKFwMCBQ0DCxMZDAIIFBERAwYRGisTBggPDBIHGA0DDA0qBRcNBQgWRxUIFw4QBQECCQkO/mgXDQcKDBYIEw8SDA8ICwENTAMEDR0IBQgFEA8gLgMDKhgJEAsIAQIBBQ8OFgkMBwgQDB5iJgIFDAcBBwsiCwwTISs0NDoZAwgYFBUGAQMHFBChXAMNOAGfEzAHExEPBASyPgQsFy8dJxgTBQIKJgMCHi8KAwoGAREOCBI+DgEBCAwECAwHAQEGChYPHGs/aRcICQ4EBAYLMAoXF1sRSBUGAgZrNBI8JCIGAQIHAwH+1xcMCBgkDQUBBA0LEgsRARKYEgQQNh4TNx8hCRMeJCOoTBw1JR0HBwEFDAUFBQUUGRoNIjQRAwsPGw8ZWyEhEx8nKSQeBwEBAQcSDgEFDQwQBj9cDClxAAAAAAMALf80AqUCfwAtADgAegAAARYHBgcOAgcOAw8BBgcOAScmJyY3Njc2FxY2PwE2Nz4BNz4ENz4BFzYeAQcOAicuATYBJiMiBwYHIisBBiMwIi4GJyY2Nz4BPwE+BBceAxQOAjEUDgEHBgc2MhcWFxYHDgEPAQ4CLgECchEEAQsCHSIIBQ8NDAMDESQcTiMpBAIIDRoTHxEbCAkOEwRGAQEHDAwLBAkeCw0cCwYFEBMKDgsN/vkyDBhbDigDBAEEAQIHBggICAYFAQUuHxI1EREBBAwOFwwICwYCAwIDJTAOFxw0gh4aCQYDAQgDAwQMDQoMAYYKFwcnB1ptHBMtJiIKCSwmHQ4RFCARDxkDAhIICwoLEkIP3gMDFiAgGwYNBQh6ChwPCg0EAwUdHf4TBQcBBQEBAQMEBQgKBhu8WTOBJycCBhIICQYDCQoMCwwHBwFWeihDiQcGBhYPEgoSAwQGBgEBAwAAAAMALf80AyICiwAtADgAoQAAARYHBgcOAgcOBQ8BBgcOAScmJyY3Njc2FxY2PwE2Nz4CNz4BNz4BFzYeAQcOAicuATYHNiYGBw4BBwYHBgcGJicmNz4CNzY3NiYHDgEPAQ4EBxYHBicuATc2NzY3Njc2NTQHBicmNjc2NzYWBwYHBhY3PgE3Njc2FgcOATEGPwE+Ajc+Ajc2FgcCBwYXFiMGJyY2NzYC7hEEAQoCHSMIBAoJCggHAQIRJBtOJCkEAggNGhMfERsJCA4TAyUiAQQjCAkeCw0cCwYEERMKDgsN5wEFDwwYQgkSAwQiHjAECCYLFQsHFQQEBBEMIQsLAwweFxUBARAWKREVBhNAEwwEAgENHBcOAREzNyEpBwYhBQEKBzoYKSQYGAgGIAUFBAIiKwsREiAQHBQNWgoIBwYxMwgHGhYdAYYKFwcnB1ptHA4fHR0YEgUFLCYdDhEUIBEPGQMCEggLCgsSQgt0bQQOXw0NBQh6ChwPCg0EAwUdHUgICgQOHHYqOkReDAsXFzB0IEIjETEYCxoFAx0NDQQROT5gMEwWIQ4GMSyKojcgCwsGAQkHEBAKKBAvDAcrGhU+CAkHBj4VJgYEHxgSSw8BAQIiKwoPDg8BAycm/v9BOE9EASMexTtOAAAAAAIALf/1A34CjQBFAK8AAAEGBwYfARYGJy4BNSY2PwE2NzQ+Ai4BIyIHBgcOAQ8BDgEnJicmPgE3Njc2Nz4CNzYWFRQHBgciFjM+ARceAx8BFiUCBwYXFgciJyY2NzY3NiYGBw4BBwYHBgcGJicmNz4CNzY3NiYHDgEPAQ4EBxYHBicuATc2NzY3Njc2NTQHBicmNjc2NzYWBwYHBhY3PgE3Njc2FgcOAgcGNzI+Ajc+Ajc2FgNyHgcJBgMBEhgZEgEMBgYFAggHAwUFAhMYGBYFIAMIAxkSIQMBAgUCBSkRUQkLFAwUIhYRLgEBARIxEwcMCAYBAhP+/FoKCAcGMTMIBxoWHQIBBQ8MGEIJEgMEIh4wBAgmCxULBxUEBAQRDCELCwMMHhcVAQEQFikRFQYTQBMMBAIBDRwXDgERMzchKQcGIQUBCgc6GCkkGBgIBBEPAgUFAgQiKwsREiAQHBQBNWoiLi0kDhwDAiUmFEgZGhUGAxseDAkCFBQqCoEWPBAQAwUlCBQmCS2KOMoYFhgDBBMRGDMmdQETFAQCBwcHAgMftf8AQTlPQwEiHsY6Th4HCgQNHHYqO0RdDQsXGDBzIEMjETAZChsFAx0NDQUROD5gMUsXIA4FMiuKojcgDAsFAgkIEBEJKRAuDAgrGhU/BwoIBT8VJQcEIBcOKSMEDgECIysJDw4PAgImAAAAAAIALf/4A98CjwBIALYAAAEeAQcOAScwLgMOAgcGBwYHDgIHFxYXFhcWFxYHDgEPAQYnIicHDgMVDgEmJyY3Njc2NyYnLgE3Njc2Fzc2Nz4BFxYFAgcGFxYjBicmNjc2NzYmBgcOAQcGBwYHBiYnJjc+Ajc2NzYmBw4BDwEOBAccAQYHBicuATc2NzY3Njc2NTQHBicmNjc2NzYWBwYHBhY3PgE3Njc2FgcOAgcGNzI3PgM3PgI3NhYDtBgTDAsjCAsHDgoOCwwFFRADAQIDAwIUDgsIBQQBAwQDBgICEycEESEMEggLAxkaBxMEBBMPJBcIDgIICxsJFw0QGBhNLBb+2loKCAcGMTMIBxoWHQIBBQ8MGEIJEgMEIh4wBAgmCxULBxUEBAQRDCELCwMMHhcVAQgHFikRFQYTQBMMBAIBDRwXDgERMzchKQcGIQUBCgc6GCkkGBgIBBEPAgUFAgIBFxofCRESIBAcFAJ2CSASEAIFAwICAQEDBwUXKwcFAwkKBQIBBQMGBAQKCwgMAwIXAwJuJEsoPwERDwIFDy0iXERqAwMFJA4XBAIDIiknJScEAmz+/0E5T0MBIh/FO04dBwsEDhx2KjpFXQwLFxcwdCBCIxEwGQsaBQMdDQ0EETk+YDEIGjUKIQ4GMSuKojgfDAsFAgkIEBEKKBAvCwgrGhU+CAkHBj4VJgYEHxgNKiMDDwEBARcbHggODw8BAiYAAAAAAgAt//8DCwKEAD0AkgAAAR4BBw4BJyYjBgcGBw4GIyIuAScmPgI3NjcmJyY2Nz4BHwEyFzc+BBceAxQOAjEUBxYnHgEOAQcwDgEHBgcUFQ4EByoBLgI1LgInLgEnBgcGBw4BJy4CJyY2Nz4DPwE+BBc2FxYXHgEXHgMXPgE3PgM/ATQ+AwLtEA4CAyAjCQohETILAQMBBAYJDgkDChQCAgoSGg8RGhcHDgEKBxsKCwMHFQEDDA0VCwcKBQEDAgMMFeEODgEDASUvDSgOAgMHCREMAwcTDwwBCBAIAQUBGRYaDwQbIAQMFgQGJRwLGxgVBgYBAgkLEQodDgYBAg8BAQUFCQMCEQIHFxYVBgcDCw4YAg8FDQwVIQMBUzGXUQYYCxIJCwQCERENQ1NhKTNEBAMIIBAMCgEBATcCBhIJCQUDCAoMCgwHCAEeAmcCFRwOBlZ5KH9pAwQQDxcKCQEFCRMNBnm7OQcWAj9DU5YpKwIBAhURHcBUH0w/Ng8PAgUNCggBAh0NCQ1oCwUqMkYZCTELHEk/NhAQAgcQCwgAAAACAC3//wN9AoMASQCdAAABHgEHDgEnIi4DIg4BBwYHBgcOAQcXFhcWFxYXFgcOAw8BBicmJwcOAxUOASYnJjc2NzY3JicuATc2NzYXNzY3PgEXFgUeAQ4BBzAOAQcGBxQVDgQHKgEuAjUuAic0LgMnBgcGBw4BJy4CJyY2Nz4BPwE+BBc2FxYXHgIXHgIXPgE3PgE/ATQ+AwNSGBIMCyMIAQoHDgoOCwwFFhEDAgEHAhQOCwgFAwEDBAIEAwIBARQnBBEkDBQJDAMaGQgTBgQWECcXCA4BCAsbChcNEhgYTysX/sgODgEDASUvDSgOAgMHCREMAwcTDwwBCBAIAQIBAgEZFhoPBBsgBAwWBAYlHBEvEA8BAgkLEQodDgYBAgcIAQEHCwQCEQILKxAQAwsOGAJyCSASEAEFBAEDAQMHBRcqBwUDEgYCAgQEBgQECgsFCQUEAQEWAwECbSRLJz8BEQ8DBg8tIVxDaQQDBiQOFwMBAyIpJiQmBQMDAhUcDgZWeSh/aQMEEA8XCgkBBQkTDQZ5uzkDBwYGBwI/Q1OWKSsCAQIVER3AVDJ/JyYCBQ0KCAECHQ0JCzc1CQY8YB4KMAstfSgoAgcQCwgAAwAv//4DdgKDAEcAaQCBAAABHgEHDgEnNC4DDgIHBgcGBw4BBxcWFxYXFhcWBw4BDwEGJyInBw4DFQ4BJicmNzY3NjcmJy4BNzY3Nhc3Njc+ARcWJR4BBw4EBw4GJy4DNz4ENz4EFzYmBw4BDwEOAQcGFxQXFhcWNzY3PgIDSxgTDAsjCAsHDgoODAsFFREDAQIGAhQOCwgFAwEDBAIHAQIUJwQRIgwTCAsEGRkIEwUEFA8mGAcPAQgLGwkXDREYGE4rF/40NUgDAQQUIEEqAQUQERwdJxMmNBcHBwIGGyNCKAIJHB4rKgQWFw0fCQo7QgcDAQEEBw8fGBMoQR0CcwkfEw8DBQEDAgIBAQMGBRgqCAQEEgUCAgQEBgMECgwIDAICFwMCbSRMJz8BEQ8CBg8sIlxEaQQDBSQOFwQBAiEpJyQoBQIHAVFPCilqZXksAgQPCg8FAwUJKzpGIgkdV1JoKQIKFxIOqy8cCgUZCglLpzIZCgoFEQoVBwYSJpR4AAAAAAMAL//8AyECfwAzAFUAbQAAAR4BBwYHDgIHDgMPARYXHgEVFAYnJgcGBwYnJjQ3PgE/ASYiBiMiLgI3PgE/ATYyJR4BBw4EBw4GJy4DNz4ENz4EFzYmBw4BDwEOAQcGFxQXFhcWNzY3PgIC+RIWAQEgAgMCAiM9IxkFBT4fGh4bE2EjLh0aDAkLCm4zMxIoIgMIDxYMAQEOBgYfn/6HNUgDAQQUIEEqAQUQERwdJxMmNBcHBwIGGyNCKAIJHB4rKgQWFw0fCQo7QgcDAQEEBw8fGBMoQR0BoQIaEB8eAgQEASRDLiMICAMEBRQXGBgCDQEDBwYPCiMUDoI6OgMCAgcPDA8TAwIH2wFQUAopamR6LAEFDgsOBgMGCCw6RSMIHlZSaCkDCRgRD6wvHQoGGQkKS6cyGAoLBRAKFgcGEiaUeAAAAAQAMv8WAuQCgAAvAEcAYwBzAAABMhYVFAcGBw4CBzI+AzMWFxQHBgcGJyYnNDY3DgEuAicmNzY3Njc2Fz4CBzYHBgcOBQcVFBcWFxY3Njc+AicOAycjDgEHBicuATUnPgM3Njc+ARcWBgc2JicmJyYHDgEPATI+AgK2ExoCCA8NMz8JAQMJCAkDHQEhHB4cEQ4BFA0FDyggHwYEBBBXFhpALwEGFEcDEhIhDhcOCwUDAQEBAgsYBwccKg23GUI6NA8QFRgCBDcTFAEFKTkmEQ8YKHArNQ1zKQEfBgk1FgwgCwoWGCknAZkTFAcJHiAch8pBAQMCAQEaGRMQCAcODBoVeysCAgEMJBwWGYBlGA4gLQMJEWwiAgMoEiglJB0XBgcEBgcFFBEFCCJrPkEfKhEIAUJrGjsDAR0ODjucl1wlHxMfBxsmnQ8uVQ0CAQgxGVMcHQMKGQAAAwAy//wDjgKEAFgAcgCDAAABFgcGBw4BBwYnJicOBicuATc2Nz4BMx4BBw4BBwYHBjc2Nz4CNz4JNzYWFxYGBwYHDgQUHgIXFjY3PgI3PgYzNiUWBgcOAycjBgcGJy4BNSc+Ajc2Nz4BBzYmJyYnJgcOAQ8BPgQDhQkcPScMOCsoGxIBAQQNDBUTGgwrGRMsHA0XEhMYCgUXDSoCAioaEwggHQQBBAIEAwUDBQQGAg4bBQMGCzcGAQQCAwECAwcFEyQNAyUgBAEHAggGCgwHFf48NQ02GUI6NA8QKgUENxMUAQZJNhkPGChwICkBHwYJNRYMIAsKERMiGiIBjBM8h2AdNQQDFhAUAQUNCg4GBQQKVkCdORgSARwXDCodX0BAIxU7GFRHCAEIAwcEBgQFBAMBBggLDhYbgCEFEgsPCwwIBwQBAjcgB2NSCAEOBQsFBwQCzSaeQx4rEAkBh0A7AwEdDg5N6II5HxMfB+4vVA0DAQcwGlIdHQEBBgsXAAAAAwAy//0CyAKFACAAOgBKAAABFgYmIycmBg8BDgEPAQ4BJy4BJzUmEjc2Fx4BHwE+ARYFDgMjJwYHBicuATUnPgI3Njc+ARcWBgc2JicmJyYHDgEPATI+AgLFAhcZBh4XKQgJExsEAwQXGBAQAQFKCxMbDRABARBCN/7pGUI6NA8QKgUENxMUAQZJNhkPGChwKzUNcykBHwYJNRYMIAsKFhgpJwF9FRcBAwEgEBElbSMkHx8CAhkLCykBABorAgIRCAgXExExHioRCAGHQDwEAR0ODk3ngzgfEx8HGyadEC9VDAMBCDEZUx0cAgoaAAAAAwAy//8C5wKFADsAVQBnAAABHgEHDgEnJiMGBwYHDgYjIi4BJyY2NzY3JicmNjc+AR8BMhc3PgQXHgMUDgIxFAcWJRYGBw4DJyMGBwYnLgE1Jz4CNzY3PgEHNiYnJicmBw4BDwE2Mj4DAskQDgIDICMJCiEQMwsBAwEEBgkOCQMKEwMEKh0RGhcHDgEKBxsKCwMHFQEDDA0VCwcKBQEDAgMMFf73NQ02GUI6NA8QKgUENxMUAQZJNhkPGChwICkBHwYJNRYMIAsKDg8dFRsaAg8FDQwVIQMBUzGXUQYYCxIJCwQCEREbvlQ0QwQDCCAQDAoBAQE3AgYSCQkFAwgKDAoMBwgBHgJZJ51DHisQCQGHQDsDAR0ODk3ngzkfEx4I7i9UDQICBzEZUh0dAQMIDBUAAAADADL/QwL/AoUAVgBsAH4AAAEWBw4BDwEGBw4IJyYnJicmNhcWFxY+Ajc+ATcwJgcGBw4CJyIuAycmNjc2Nz4EFxYHBgcOAwcGFxY3PgE3PgI3PgMWBQYjBgcGJy4BNSc+Ajc2Nz4BFxYGBzYmJyYnJgcOAQ8BMj4EAtolGAYMBANDEwENBxIOGBcgIhI7EQEBCywdCBAOFBQLBAkXAwEBBQ0FDyMPAggUERAEBhIaKxIGCA8MEgcYDQINBhISEAIXDQUIFkcVCCESBwECCQkP/tlOmioFBDcTFAEGSTYZDxgocCs1DXMpAR8GCTUWDCALCg4PHRUbGgGjEzAMIQoLsj4ELBcvHScYEwUCCiYDAh4vCgMKBgERDggSPg4BAQgMBQwOAQEGChYPHGs/aRcICQ4EBAYLMAoXCyQnJAlIFQcDBms0ElUrCAECBwMBRGGHQDsDAR0ODk3ngzgfEx8HGyadEC9VDQIBCDEZUxwdAQMIDBUAAAAAAwAy//oC/wKEADUATwBfAAABFgcGBw4EBwYnJgciFSIOAwcGJicmNzY3PgEXHgEHBgcOAhY3Mj4DNz4CNzYFDgMnIwYHBicuATUnPgI3Njc+ARcWBgc2JicmJyYHDgEPAT4DAt0hFE0JAgMCBgwJJhMDDQEBCQgNEAkXLAsJAgNFFB4YHQoNLw8DCQ8GDwIEDw8UCQkqHggg/u8ZQjo0DxAqBQQ3ExQBBkk2GQ8YKHArNQ1zKQEfBgk1FgwgCwoWGCknAZ8MK6I8DSofHxICBi8HDQEKBgkGAQEXExImSqYwJQECJhVbKwkdPSgBAQgPHxUUaEcNNEkeKxEIAYdAOwMBHQ4OTeeDOR8SHwgbJ50PL1QNAgIHMRlTHB0BAgoZAAAAAAQAMv/8AmUCggAiAC0ASABbAAABHgQOAjEwDgEHBgcUFhQOAiMiJyY2Nz4BPwE+Ax4BBw4CJy4BNicWBgcOAycjBgcGJy4BNSc+Azc2Nz4BBzYmJyYnJgcOAQ8BNjI+BAIoBwoGAwEBAQIWHQgcAQEEBw0KHAkIDxEKHQoKAQcaKRwKBwQREwoOCg5oNQ02GUI6NA8QKgUENxMUAQUpOSYRDxgocCApAR8GCTUWDCALCgwNGRAYFBgBjwEGBggGCAQFNkwaXzMDEwcNBQUXEng1IFAYGQMLDXAKHQ8JDQMDBR0dcSaeQx4rEAkBh0A7AwEdDg47nJdcJh8THwfuL1QNAwEHMRlSHR0BAgUIDBMAAwAy//4DZQKGAEkAYwB2AAABHgEHDgEnMC4CKgEOAQcGBwYHDgEHFxYXFhcWFxYHDgMHIwYnJicHDgMHDgEmJyY3Njc2NyYnLgE3Njc2Fzc2Nz4BFxYFFgYHDgMnIwYHBicuATUnPgI3Njc+AQc2JicmJyYHDgMPATI+AwM6GBIMCyMICwcOCg4LDAUWEQICAgYCEw4LCAUEAQIEAQQEAgEBEygEESMMFQgMAQMaGQcTBQUVECcXCA4BCAwbCRcOERkYTisX/pQ1DTYZQjo0DxAqBQQ3ExQBBkk2GQ8YKHAgKQEfBgk1FggSEQ4EBBETIhoiAm8KIBIPAgUEAgMDBwQXKwcEBBIFAwEFBAYDBQoLBQkFBAEXAwECbSNMJz8BEQ4CBg8tIltEaQQDBSQOFwMCAyEpJiQmBQINJp1DHyoRCAGHQDsDAR0ODk3ngzgfEx8H7S5VDQIBCDEQLiomCwwBBgwXAAAAAwAy//4C5gKDAEMAXgBuAAABBgcGHwEWBicuATUmNj8BNjc0Njc2LgEjIgcGBw4BDwEOAScmJzQ+ATc2NzY3PgI3NhYVFgcGBxQyMT4BFx4BHwEWARYGBw4DIycOAQcGJy4BNSc+Ajc2Nz4BBzYmJyYnJgcOAQ8BMj4CAtsfBwkGAwITGBgTAQwGBgUCDwIBBAYCExgYFgUgAgkDGRIhAwEGAQUpEVEJCxQNEyIBFxEuARIxEwsSBAMT/tU1DTYZQjo0DxAVGAIENxMUAQZJNhkPGChwICkBHwYJNRYMIAsKFhgpJwE0aCMvLCUOGwIDJCYVRxoZFgYBOAgHCAMUFSkKgRc8DxADBCUJFCUKLYo4yRgXGAIFFBAYNCV1ARMTBAIOBQYgARAmnUQeKhEIAUNqGjwDAh0ODkzogzgfEx8H7i9VDAMBCDEZUx0cAgoaAAAAAAQAMv86AmYCgwAmAC4ARQBVAAABFgcGBw4BBw4BDwEGBw4BJyYnJjc2NzYXFjY/ATY3PgE3PgE3PgIeAQ4BLgE2BwYjBgcGJy4BNSc+Azc2Nz4BFxYGJw4BDwEyPgI3NiYnJicmAjIRAwELAT0LCRkJCRAkHE4jKgMCCAwbEx4SGwgIDxMERgEEIwgIHxgcCw0dHAsNdk6aKgUENxMUAQUpOSYRDxgocCs1DcQMIAsKFhgpJxQpAR8GCTUBjAoXBycFwCUdThgYLCYdDhEUIBEPGQMCEggLCgsSQg/eAw5fDQ0FcgocHg4KHR2XYYdAOwMBHQ4OO5yXXCUgEh8HGyadWxlTHB0DChkVLlUNAgEIAAAAAAMAMv/5AvcCggBHAGEAcwAAJRYHBicmJyYnBgcUDgQjIi4BJyY2Nz4DPwE+BBceAw4DMQ4CBzY3NhcWBwYHFhceAx8BHgEXHgEVARYGBw4DJyMGBwYnLgE1Jz4CNzY3PgEHNiYnJicmBw4BDwE2Mj4DAvUCGh0dGx4RORMFAwIHCRELBAsWAwUpHgseGRYGBwEDDQ4XDAgMBQMBAgMCASQxDlIIKA0QHhBTDAgFDg0KBAMHLgQHCf7GNQ02GUI6NA8QKgUENxMUAQZJNhkPGChwICkBHwYJNRYMIAsKDg8dFRsaNBkQEhISJxZkRSQFHwoVCAcCExAdvVMgTD81DxACBhIICAYCCQoMCgwHCAFTdig+BRkiKB0POhYPChYRDgQECCYDBw0EAjAmnkMeKxAJAYdAOwMBHQ4OTeeDOR8THwfuL1QNAwEHMRlSHR0BBAcMFQADADL//AKxAoIAKABCAFQAAAEeAxQOAjEOBAcGBw4FIyIuAScmNjc+AT8BPgQHFgYHDgMnIwYHBicuATUnPgI3Njc+AQc2JicmJyYHDgEPATYyPgMClggLBQICAwIBDxcZGwg0CgEDAgYJEQsECxUDBSkdEjIQEAEDDA4WzzUNNhlCOjQPECoFBDcTFAEGSTYZDxgocCApAR8GCTUWDCALCg4PHRUbGgJ0AwkJDQoMBwcBIzc9RBmWUQUfChUIBwITEBy9UzN+JyYCBhIICRMmnkMeKxAJAYdAOwMBHQ4OTeeDOR8THwfuL1QNAwEHMRlSHR0BBAcMFQAAAAADADL//AMOAoIANgBQAGEAAAEeAhUGBw4BBw4DDwEWFx4CFxQOAScmBwYHBicmNDc+AT8BLgEOASMiLgI3PgE/AT4BJRYGBw4DJyMGBwYnLgE1Jz4CNzY3PgEHNiYnJicmBw4BDwE+BALmDBIJAiACBAIkPCMaBAU+HhIWEAEOFA1gIy4dGg0ICwlvMzIOIBYXAwgPFg0BAQ4HBh6f/uo1DTYZQjo0DxAqBQQ3ExQBBkk2GQ8YKHAgKQEfBgk1FgwgCwoREyIaIgGkAQ0UCh4fAgcCJEMtIwgJAgUDCBUPEBcJAg0CAgcHDwokEw6DOjoBAQEBAgcQCw8UAgMGAcAmnkMeKxAJAYdAOwMBHQ4OTeeDOR8THwfuL1QNAwEHMRlSHR0BAQYLFwAAAAADADL/+AMiAogANABPAF8AAAEeAgcOAQ8BFhcWBgcGLgEvAQYHBicuAT4BPwE+Az8BJicmNTQ2NzYeAh8BPgI3NiUWBgcOAyMnDgEHBicuATUnPgI3Njc+AQc2JicmJyYHDgEPATI+AgMBCRAIDws8GBhICAgFEAsVDQVKBEkzJAoKAgQDAwghIyEKCiERGRETCRIPBAYvDSglBxj+zTUNNhlCOjQPEBUYAgQ3ExQBBkk2GQ8YKHAgKQEfBgk1FgwgCwoWGCknAaEDEiATEEMZGn4RDCUMCQQJB4cDXEIOBBASEQUFDSkpJgwMQx0pDg0ZAgIJFggKVw0sKgkgxCadRB4qEQgBQ2oaPAMCHQ4NTeiDOB8THwfuL1UMAwEIMRpSHRwCChoAAAMAMv/+AvwCgwAvAEkAXQAAAR4BBw4BBw4DBw4BLgE3Njc2Nz4DOwEeAQ8BDgIHBhcWNzY3Njc+ATc+ASUWBgcOAy8BBgcGJy4BNSc+Ajc2Nz4BBzYmJyYnJgcOBQ8BPgMC6wwFBQUqFA8XIycVFi8mFgIHPwUJBQ0KCQMCExEBAQEKGAweAwENAQIeIAxJAgko/t01DTYZQjo0DxAqBQQ3ExQBBkk2GQ8YKHAgKQEfBgk1FgYMDQwKCAICFhgpJwGfBhUOFHEpHSo2Kw4OBhIxI1u1DwoHCAQCARMKCQsYNiFUPx8GAQEWQBi8BRUNwCaeQx4qEQkBAYhAOwMBHQ4OTeiCOR8THwfuL1QNAwEHMAwfHiAbFQcGAQIKGQAAAAQAMv//As4ChQAuAEQAXwBwAAABFgcOAQcUDgUnLgInJiMHBgcGJjc+AT8BNjc2FhcWDwE2NzYXFhcWFxYHPgEnLgEHBgcOAQ8BFgYWNzI+AjcDFgYHDgMjJw4BBwYnLgE1Jz4CNzY3PgEHNiYnJicmBw4BDwEyPgMCyAUEBjUkAgcHDA0RCQMJFQQCAQIGIBgWAQInHV4LFhIfBgwORwgDHB8IBwgFBnAcFwQDCQsODhoeAwIBAgoLBQ4LCQOYNQ02GUI6NA8QFRgCBDcTFAEGSTYZDxgocCApAR8GCTUWDCALChETIhoiAV4mLjuOJgECBwUGAwICAQIPDQUEIgEBHxkjuU3uHAwGCgoUJKsKBB0QBQgKCw/2L4MVDQkCAhgnZyAgARARAQoODQUB9SadRB4qEQgBQ2oaPAMBHg4NTeiDOB8THwfuL1UMAwEIMRpSHRwBBgwXAAAAAAMAMv/9AtACiABEAF4AbgAAARYHDgIHDgEeARcUBgcGJyY3PgM/ATY3NiYPAQ4BBw4BFxYHDgEHIi4CLwEuATUnJjY3PgEeAR8CPgUWBw4DJyMGBwYnLgE1Jz4CNzY3PgEXFgYHNiYnJicmBw4BDwE+AwKaNQsBDxUIBgQBAwERESkMCQsBCAoJBAMGCAQKBwcVGhUTJAQCBAMSDAUKBwYBAQgIAQFQFggQDAkDAg8BBAwMExIX5BlCOjQPECoFBDcTFAEGSTYZDxgocCs1DXMpAR8GCTUWDCALChYYKScBnhg8BS5FGhYyISMCDhoCAykfQgojJSILCxIdDgwBAQcbIR6OIBcSCxABAgMDAQEHGgoKOvcVBwYBAwICDgIDCggJBAE9HisRCAGHQDsDAR0ODk3ngzkfEh8IGyedDy9UDQICBzEZUxwdAQIKGQAAAAMAMv/zA3kCgwCCAJwArAAAARYHFA4CBw4BHgEVFA4DBwYnJjc+Bz8BNjc2Jg8BDgEHDgEXFgcGBwYHIxUGBzAHIiMOAScmJyY3PgM/ATY3NiYPAQ4CBw4BFxYHDgEHIi4CLwEuASc1NDY3PgEeAR8CPgUWFxYXPgM/AT4EBQ4DIycGBwYnLgE1Jz4CNzY3PgEXFgYHNiYnJicmBw4BDwEyPgIDRDQNCgwRBQYFAQICBQcMBygKCAsBAwUFBQYEBAEBBggECQcHFBoUEiUDAgQDBgEBAQQFAQEBBAkEIAkICwIICgkDBAUJBAoGBw4WEA4TJAMCBQMRDAUJBwUBAgcHAVAWBw8MCQMCDgEECwwTERYKKAEDCQgGAgICBxcVIP50GUI6NA8QKgUENxMUAQZJNhkPGChwKzUNcykBHwYJNRYMIAsKFhgpJwGSFEEEHyU0FRUyISMCBAsLCAYBAikeQgYQEhUUFBANAwQSHQ4MAQEGGyEdjSAYEQkHAQEBAwIBAgEBAyQfQgkjJCILCxIdDgwBAQQRFhYejSAYEQsPAQEEAwEBBxoKCjr1FAcGAgMBAg4BBAkICQQCBRMtBgoIBwECAgUNBgQ4HioRCAGHQDwDAh0ODkzogzgfEx8HGyadEC9VDAMBCDEZUx0cAgoaAAAABAAy/ygDFgKDAC8ARABqAHoAAAEUDgMHDgInJicGBw4FIyIuAScmNjc+Az8BPgQXFhc2NzYeAQc2JgcOAQ8BDgIHBh8BHgE/AT4BJQYHFhcWFxYXFgYPAQYmLwEmJwYHBicuATUnPgI3Njc+ARcWBgc2JicmJyYHDgEPATI+AgMVAQoTKRwEETcfHhUdBQECAgYIEAsECxUEBSUbCxsXFAYGAQMMDRYMFwMYFhcoG0sDDQ8JEgQFGyQKAgEBAQQUCAgkN/7mNl0RIhMmCgUFBAQFEiYODjw4LQQENRMUAQZJNhkPGChwKzUNcykBHwYJNRYMIAsKFhgpJwEsBxZEPU0dBQ4UBAQQZzMFHwoVCAcCEhAcvFMgSz81EA8CBhIICQYHFwsBARMsKRwRBwQQBgYhWDMWCgkFEAUFBR2UbUMWMD4jIAkLDxcHBxACCQkqwYw5PAMCHQ4OTeeDOR8THwcbJp4PL1QNAwEHMRlTHB0DChkAAwAy//4DZgKIAEkAcQCFAAABHgEHDgEnMC4CIg4CBwYHBgcOAQcXFhcWFxYXFgcOAw8BBicmJwcOAxUOASYnJjc2NzY3JicuATc2NzYXNzY3PgEXFgUWBgcGBxYXFhcWFxYGDwEOAS4BLwEmJwYHBicuATUnPgI3Njc+AQc2JicmJyYHDgUPATI+AgM6GRMMCyIJCwcOCg4LDAUVDwMCAQYCEw4LCQUDAgIDAgQDAgEBEycEESELEgcLAxkaBxMEAxMPIxcIDgIICxsJFw0QFxdOKxf+lDUNNjZdESITJgoFBQQEBQoYFRIGBTw4LQQENRMUAQZJNhkPGChwICkBHwYJNRYGDQwMCggCAhYYKScCdwggEhADBQQBAwEDBwUXKwcFBBIFAgEFAwYDBQoLBQkFBAEBFwIBAW0kTCdAAREPAgUPLSJcRGoDAwUkDhgEAQIhKiYlKQQCEiedQ0MWMD4jIAkMDhgHBwoGBQgEBCnCjTg8AwEdDg5N6IM4IBIfCO8vVQ0CAgcxCx8fIBsVBgYDChkAAAAABAAy/zQCpAKBACkAMQBYAGgAAAEWBwYHDgEHDgMPAQYHDgEnJicmNzY3NhcWNj8BNjc+ATc+ATc+ARc2HgEOAS4BNgEmJwYHBicuATUnPgM3Njc+ARcWBgcGBxYXFhcWFxYGDwEGJicDDgEPATI+Ajc2JicmJyYCcREEAQsBPQsGDg0MAwQQJBxOIyoDAggNGhMfERsICA8TBEYBBCMICR4LDRwLDR0cCw3+2Dw4LQQENRMUAQUpOSYRDxgocCs1DTY2XBAiEyYKBQUEBAUSJg4oDCALChYYKScUKQEfBgk1AYYKFwcnBcAlEy0mIgoJLCYdDhEUIBEPGQMCEggLCgsSQg/eAw5fDQ0FCHoKHB4OCh0d/h8qwYw5PAQBHQ4OO5yXXCYfEx8HGyaeQ0MWMD4jIAkLDxcHBxACCQH2GlIdHQMKGRUvVA0DAQcAAAAAAgAt//8CmwKBADgAbgAAAR4BBw4BJyYjBgcGBw4GIyIuAScmNjc2NyYnJjc2NzYXNz4EFx4DFA4CMRQHFicGIi4CMSYnBgcGBxQOByMiLgEnJjY3NjcHDgIjIiY3PgM3MzYWFxYXFgcGAn0PDgEDICMJCiERMgsBAwIDBgkOCQMKFAIEKR0SGhcHGhMMIAwMFgEDDAwVDAcKBQEDAgMMFcUGDxENCh0oSxUvDAMBAwMGBwkNBwQLFgMFKR4fMkQECx0LEhIJAw0NDAMEPe4pGwkGBgsCDwUNDBUhAwFTMZdRBhgLEgkLBAIRERu+VDRDBAMLIRQJAwE3AgYSCQkFAwgKDAoMBwgBHgIPAQICAQQBsD+HYAQVBxIGDQUHAgITERy+U1d8BQECAiYWCAwHBAEIAwUEFA4PHwAAAAIALf/+AugCggBLAH0AAAEeAQcOASciLgIqAQ4BBwYHBgcOAQcXFhcWFxYXFgcOBTEHBiciJwcOAxUOASYnJjc2NzY3JicuATc2NzYXNzY3PgEXFgcGLgExJicGBwYHFA4HIyIuAScmNjc2NwcOAiciJjc+AT8BNhYXFhcWBwYCvRgTDAwiCAELBw0LDgsMBBYRAgICBgIUDQsJBQMBAwQBAwIDAgEBEygEESIMFAgMAxoZCBMGBBUPJhcIDgEICxsJFw4RGBhOKxf3CB4XHShLFS8MAwEDAwYHCQ0HBAsWAwUpHh8yRAQLHQsSEgkFGAoJPe4pGwkGBgsCcQkgEhACBgMCAwMHBRcqCAQEEgUDAQUDBgQECgsEBgUEAwIBFgMCbSRLJz8CEA8CBg8tIVxEaQQDBSQOFwQBAyIpJiQnBQJYAgMDBAGwP4dgBBUHEgcMBQcCAhMQHb5TV3wFAQIDASYVDREBAggDBQQUDg8fAAAAAAIALf//AqwCgABHAHkAAAEGBwYfARYGJy4BNSY2PwE2NzQ+Ai4BIyIHBgcOAQ8BDgEnJic0PgE3Njc2Nz4ENzYWFRYHBgcUMDM+ARceAx8BFicGLgExJiMGBwYHFA4HIyIuAScmNjc2NwcOAiMuATc+AT8BNhYXFhcWBwYCoR8HCQYDAhMYGRIBDAYGBQIIBwMFBQITGBgWBSACCQMZEiEDAQYBBSkRUQYFDAkNCBMiARcRLgESMRMHDAgGAgET+QgeFx0oSxUvDAMBAwMGBwkNBwQLFgMFKR4fMkQECx0LEhIJBRgKCT3uKRsJBgYLATdoIy8sJQ4bAgMkJhVHGhkWBgIcHQ0IAxQVKQqBFzwPEAMEJQkUJQotijjJDw4WCgsBBRQQGDQldQESFAQBBwcHAwIgxAECBASwPodhAxUIEQcMBgYCAhMQHb1UV3wFAQIDASYVDRACAggDBgMUDg8fAAAAAgAt//YCswKDAEkAfQAAJRYHMCMGJyYnJicGBw4FIyIuAScmNjc+Az8BPgQXHgMUDgIxFA4BBzY3NhcWBwYHFhceAx8BHgEXHgEXAwYuAzEmJwYHBgcUDgcjIi4BJyY2NzY3ByIOASMiJjc+AT8BNhYXFhcWBwYCsAIZAR0cGx8RORMEAQMCBgkRDAMMFgMFKR8LHRoWBgYBBAwOFw0ICwYCAwIDJDEOUgcoDhAeEFMLCAYODAsDAwcvAwgIAf4GDxENCh0oSxUvDAMBAwMGBwkNBwQLFgMFKR0gMkQECx0LEhIJBRgKCT3uKRsJBgYLMRkQEhISJxdjRSQFHwoVCAcCExAdvVQfTD81EA8CBhIICAYCCQoMCgwHCAFTdig+BRojKBwQOhYPChYRDgQECCYDBw0EAe4BAQECAQQBsD6HYQMVCBEHDQUGAgISERy+VFd8BgIDJhYNEAICCAQFBBQNEB8AAAAAAgAt//8CbgKBACwAYAAAAR4DDgMxFA4BBwYHDgYjIi4BJyY+ATc+AT8BND4GMgcGLgExJiMGBwYHFA4HIyIuAScmNjc2NwcOAiMuATc+AzM3NhYXFhcWBwYCUwcMBQMBAgIDJC8NMgkBAgIDBgoOCgQLFgMDDx8TEjAPEAEEBAcHCgsOmggeFx0oSxUvDAMBAwMGBwkNBwQLFgMFKR0gMkQECx0LEhIJAw0NDAMEPe4pGwkGBgsCdgMJCQwLDAcHAVV4KJdQBhgMEgkKBAISEBNjgTcyfycmAQIHBgkGBgNZAQMDBK8/h2AEFQgRBwwFBwICExAdvVRXfAUBAgMBJhUIDQcEAQgDBgMUDg8fAAADAC3//wKTAoAAKgBDAHUAAAEWBw4BBw4CJy4CJyYjBwYHBiY3PgE/ATY3NhYXFg8BNjc2FxYXFhcWBz4CJy4BByIOAg8BDgEPARQGFjcyNjcDBi4BMSYjBgcGBxQOByMiLgEnJjY3NjcHDgIjLgE3PgE/ATYWFxYXFgcGAo0GBQY0JAMKIxMDChQEAgECBiEYFgECJx1eDBYRHwYND0cJAxsfCQcIBQZxFBgFAgIKCgQJBwYBAhkfAgIBCgoJFwdiCB4XHShLFS8MAwEDAwYHCQ0HBAsWAwUpHh8yRAQLHQsSEgkFGAoJPe4pGwkGBgsBXiYuO44mBAoNAwECEAwFBCIBAR8ZI7lN7hwMBwsKFCSrCwMdEAUICQwP9SBePQsNCQIGCAcCAydnICABEBEBGAsBsQECBASwPodhAxUIEQcMBgYCAhMQHb1UV3wFAQIDASYVDRACAggDBgMUDg8fAAAAAAIAMP//Au8CgQA7AGsAAAEeAQcOAScmIwYHBgcOBiMiLgEnJjY3NjcmJyY2Nz4BHwEyFzc+BBceAxQOAjEUBxYnHgEHDgIHBgcGBwYmJyYnJjY3PgEXHgEHDgEHDgQeARceAT4CNz4BNz4BAtAQDgEDICQICiERMgsBAwIEBQkOCQMLEwIEKR0SGhcHDgEJBxwKCgQGFgEDCw0VCwgJBQIDAgMNFegWDQoIKS8TMjYpPyM8ERUBATIeGSchHw8PCjoGAgUMCgcBDg0DCyAfJxATRwoTHwIPBQ0MFSEDAVMxl1EGGAsSCQsEAhERG75UNEMEAwggEAwKAQEBNwIGEgkJBQMICgwKDAcIAR4CagUzFxWDjTB+LiMFAxobIyw81lxOQAEBPiAYphIEDisnMiYeBQECCRc+LjX0FyscAAAAAgAw//0C2wJ/ADoAaQAAAR4BBwYHBicuBDUmBw4BFxYXFgYHBiYnJjc+ARceAQYPAQ4BHwEeATM3PgE/ATYnJicmJyY3PgEnHgEHBgIHBgcGBwYmJyYnJjY3PgEXMhYHDgEHDgQeARceAT4CNz4BNz4BAqkYGQQEGAsKBQkGBAQLGhIFFUUEAyAlJmUjOBMGMhoRDgMEDgUBAgIEFgkJBgwDAyAMBCcUBxInFVqkFg0KA1YaMjYpPyM8ERUBATIeGSchHw8PCjoGAgUMCgcBDg0DCyAfJxATRwoTHwGXCyoUFAYDAgIFCAYJARQIBS8eXCcgRBEUARcjRBkmCAUVEAUVBxEEBAoHAQEEAgISNRQ1Ghk9MRsQ0gUzFwr+9UB/LSMFAxkcIiw811tOQAE+IRemEgQPKicyJh8EAQIIGD4uNfMYKxsAAAIAMP/+A2QCgABLAH8AAAEeAQcOAScwLgIqAQ4BBwYHBgcOAgcXFhcWFxYXFgcOAwcjBicmJwcOAxUOAiYnJjc2NzY3JicuATc2NzYXNzY3PgEXFiUeAQcOAgcGBwYHBiYnJicmNjc+ARcyFgcOAQcOBB4BFx4BPgI3PgU3PgEDORgSDAsjCAsHDgoOCwwFFhECAgIDBAIUDgsIBQQBAgQBBAQCAQETKAQRIwwVCA0CERMSBRMFBRUQJxcIDgEIDBsJFw4RGRhOKxf+vRYNCggpLxIzNik/IzwRFQEBMh4ZJyEfDw8KOgYCBQwKBwEODQQKIB8nEAkVERMPDwQTHwJvCiASDwIFBAIDAwcEFysHBAMJCwQDAQUEBgMFCgsFCQUEARcDAQJtI0wnPwENDwMEBA8tIltEaQQDBSQOFwMCAyEpJiQmBQIDBTMXFoOMMH8tIwUDGRwiLDzXW05AAT4hF6YSBA8qJzImHwQBAggYPi4ZQjxAMysLKxsAAgAx//ACogKCADwAewAAAR4BBw4BJyInBgcGBxQOBCMiLgEnJj4CNzY3JicmNDc+ARczFjM3PgQXHgMUDgIVBgcWJwYHDgMHDgEHBicuAScuAT4BPwE+BDU+AT8BPgEfARYHFA4CBw4FFQc+Ajc+AxceAQcCgxAOAQMfIwoJIBAwCgMCBggPCwMKFAMCCRAaDREZFwcOCQccCgoEBhUBAwsNFQsHCgUCAwICAQwVygMiARoWJxMiKR07JhQKBwIBAQIBAQEJDQwJAQQDAgojDAwjCgYHCwYDBgUFBAMBD19bAQQLEBQMDgwBAhIEDQ0UIgMBVDGYUQUfCxUICAESEA1DVGEqM0UDAwgfEQwKAQE3AgYSCQoGAggKDAoMBwcBAR4CKSBRAkA0VyVEPiJFFgsgOhQzLSgMCxJITkk0AwUPBAURDAMDDjICHCA6HxMyMzUuJAoLFNjWBAcNCwEEBRsLAAACADH/7gJ2AoAAOgBzAAABHgEHBgcGJy4EJyYHDgEXFhcWBgcGJicmNz4BFx4BBg8BDgEfAR4BNzM+AT8BNicmJyYnJjc+AScGBw4EBw4BBwYnLgEnLgE+AT8BPgI1PgE/AT4BHwEWBxQOAgcOAQ8BPgI3PgIXHgEHAkQYGQQEGAsKBggGBAQBChoSBRVFBAMgJSZlIzgSBzIaEQ0CBA4FAQICBBYJCQYMAwMgDAQnFAgSKBVabgMiAhESGR4PIikdOyYUCgcCAQECAQEBFRYBBAMCCiMMDCMKBgcLBgcNBAMPX1sBBhAaDw4MAQGXCyoUFAYDAwEGBwYJARQIBS8eXCcgRBEUARcjRBkmCAUVEAUVBxEEBAkIAQEFAQISNRQ1Gho8MRsQlCBRBCkrOkEfQz8iRRYLIDsTNC0nDAsdjH0CBQ8EBREMAgMPMgIbITofKIoxMBPZ1gMLDwkHBRsKAAAAAAIAMf/zAwwChQBHAIQAAAEeAQcOAScwLgMOAgcGBwYHDgEHFxYXFhcWFxYHDgEPAQYnIicHDgMHDgEmJyY3Njc2NyYnLgE3Njc2Fzc2Nz4BFxYFBgcOAwcOAgcGJy4BJy4BPgE/AT4ENT4BPwE+AR8BFgcUDgIHDgMPAT4CNz4CFx4BBwLhGBMMCyMICwcOCg4LDAUVEAMCAgYCFA4LCAYDAQMEAwYCAhMnBBEiDBMHCwEDGRoHEwUDFQ4lFwgOAggLGwoXDRAYGE4rF/7mAyIBGhYnExgkGBQ7JhQKBwIBAQIBAQEJDQwJAQQDAgojDAwjCgYHCwYECQYFAgEPX1sBBhAaDw4MAQJ0CR8TDwMFBAEDAQEDBwUXKwcEBBIGAgEFAwYEBAoLCAwDAhYCAm0kTCc/AREPAgYPLCJcRGkEAwUkDhcEAQIhKiYlJwQCPCBRAUE0ViYvPiAXRRYLIToTNC0nDAsSSE5JNAMGDgUEEgsCAw8yAhshOh8ZTEdAFBMU2NYDCw8JBwUbCgAAAAACADH/7gJcAoAAKABoAAABHgMUDgIxMA4BBwYHFA4EIyIuAScmNjc+Az8BPgQHBgcOAwcOAQcGJy4BJy4BPgE/AT4ENT4BPwE+AR8BFgcUDgIHDgUVBz4DNz4DFx4BBwJACAsGAgMCAyQxDjMLAwIHCRALBAsWAgUoHgsdGRYGBgEEDA0XgQMiARoWJxMiKR07JhQKBwIBAQIBAQEJDQwJAQQDAgojDAwjCgYHCwYDBgUFBAMBC0JCOQIECxAUDA4MAQJ1AgkKDAoMBwhVeCiVUQUfCxUHBwISERy9UyBLPzUQDwIGEggIQCBRAUE0ViZDPyJFFgsgOxM0LScMCxJITkk0AwUPBAURDAIDDzICGyE6HxMyMzUuJAoKD5CahwUIDAsBBAUbCgAAAAACACj/+wNzAoIAOwCgAAABHgEHDgEnIicGBwYHDgYjIi4BJyY2NzY3JicmNjc+AR8BMhc3ND4DFx4DDgMxFAcWJxYGBwYHDgMHBicmJw4GJy4BNzY3PgEzHgEHDgEHDgIVBjc2Nz4BNzQ+Bzc2FhceAQ4BBwYHDgUeAhcWPgE3PgY3PgY3OgEWA1UQDgIDHyQICyEQMwsBAgIEBgkNCQQKEwIEKR0SGhgHDQEJBxwKCgQGFgQLDRULBwoFAgECAgMNFc8FCRJILgYUIDEcMSIWAgIEDxAZGB8ONiEWMyIOHRUYHgwFGxAFER0CNB8XDj8JBgMGAwcFBgcEESEGAwEGBwdABwEFAgMBAQMFCQURIxYJAgwOEREOCwIBCAMJBwwPCQMJEwIQBQ0MFSEDAVMxl1EGGAsSCgoEARIQHL5UNEMEAwggEAwKAQEBNwIGEgkJBQMICgwKDAcIAR4CSBYxMc6SEicpHAMGIxcfAgcUDxYJBwYPhGLuViUbASsjEkAsETWBK2I1IVk60BMBDgQNBgsGCAUCCQwRCBIaFhbCNAcbERcQEwwLBgECMTUdCSkxOTcwIQYCFQcSBwsFAQsAAgAo//sD6QKCAEcAqgAAAR4BBw4BJyIuAyIOAQcGBwYHDgEHFxYXFhcWFxYHDgEPAQYnJicHDgMVDgEmJyY3Njc2NyYnLgE3Njc2Fzc2Nz4BFxYFFgYHBgcOAwcGJyYnDgYnLgE3Njc+ATMeAQcOAQcOAhUGNzY3PgE3ND4HNzYWFx4BDgIHBgcOBR4CFxY+ATc+Ajc+Bzc6ARYDvxgSDAsjCAELBg4KDgwMBBYRAwIBBwIUDgsIBQMBAwQDBgICFCcEESQMFAkMBBkZCBMGBBYQJxgHDgEICxsKFw0RGRhPKxf+1QUJEkguBhQgMRwxIhYCAgQPEBkYHw42IRYzIg4dFRgeDAUbEAURHQI0HxcOPwkGAwYDBwUGBwQRIQYCAQEGBgZABwEFAgMBAQMFCQURIxYJAywlBQEGAwcGCgoNCAMJEwJvCSASDwIFBAEDAQMHBRYrBwUDEgYCAgQEBgQECgsIDAIDFgMBAm0kSyc/AREPAwYPLSFcQ2kEAwYkDhcDAQMiKSYkJgUDHRYxMc6SEicpHAMGIxcfAgcUDxYJBwYPhGLuViUbASsjEkAsETWBK2I1IVk60BMBDgQNBgsGCAUCCQwRBw8OGBMRwjQHGxEXEBMMCwYBAjE1HQqYfAwDEAgPCAoGBQELAAAAAAMAL/8vAyoCgwAsAEMAggAAATYWFRQOAwcOAicmJwYHFA4EIyIuAScmNjc+AT8BPgQXFhc2FzYmBw4DDwEOAgcGHwEeAT8BPgElFhceAQYHBiYnLgEvAQ4CBwYnLgE+AT8BPgU/ASYnJjc2NzYeAR8BPgE3PgEXHgIGBw4FBwLQJTQCCxQqHQQROB4fFB4HAwIGCRALBAsVAwUoHRExDxABAwwNFwwXAhclAw0PBgsJBwIBHCYLAgEBAQQTCQgkOf59QwcFAwsPFRsJCSQODgIdJQ8+LhAMBQkFBQgZHR8cFwYHHRAYAQMpDhkMBCkPWAsPKQkHDAkKDwcWGhwaFQYBjAExLgcXQz1NHAQPEwUEEGYzBR4LFQcHAhIRHLtTMn4mJgIGEggIBggWC2gdEQcCCAkHAwIhWDIWCgkFEAYFBR2TU80cESAjBwYLDQ1qLi8CLkEachcIHB0aCAkNKiwwKiIKCmovQRUmBwIYGg2HE34NEQcIBA4XIhMIHyMnJBwJAAACAC///QJyAo4AOgBlAAABHgEHDgEnIicGBwYHDgUjIi4BJyY2NzY3JicmNjc+AR8BMhc3PgQXHgMUDgIxFAcWJxYHBgcOAhUOAScuAT4BPwE+AT8BLgEnLgE3NhceAR8BPggCVBANAQMgIwkKIREyCwEDAgcIDwsDChQCBCkeERoXBw4BCgcbCgsDBhYBAwwNFAwHCgUBAwIDDBXVKRcEjh4nGgk4EgcHAQQBAgwoDg8CNRQSBREoJg0gCgkMGxMXEBMQEA8CEAUNDBUhAwFTMZdRBR8KFQgIARIQHL5UNEMEAwggEAwKAQEBNwIGEgkJBQMICgwKDAcIAR4CYwc/C/g0bmoCGwYTBhUWFAYGKWIdHSGaKiQ9DBY7FV8mJRMuIiYbGxEOBQAAAAADAC7//AHhAo0AJAAsAFMAAAEeBA4CMTAOAQcGFRwCDgIjIicmNjc+Az8BPgMeAQ4BLgE2JxYHBgcOAhUOAScuAT8BPgE/AS4BJy4BNzYXHgEfAT4GAaAHCgYDAQEBAhYeCB0EBw0KHAkHDxEHEQ8NBAQBBxsrHAoNHhwKDiUpFASFGyQVCDgTCwUEBAklDQ4DPBYSCBAoKA4kCwsNIRUaEhUUAY8CBgYHBwcFBTZMGV8zAxQGDgQFGBJ3NRQwJyIKCQQKDnMLHB4NCxwehgY/C/41cGoCGwgRCigQDylkHh0hmCkkPA0XOhReJSUYPigvGxgKAAAAAAIAL///AuICkABJAHcAAAEeAQcOAScwLgIqAQ4BBwYHBgcOAQcXFhcWFxYXFgcOAQ8BBicmJwcOBAcOAiYnJjc2NzY3JicuATc2NzYXNzY3PgEXFiEWBwYHDgIVDgEnLgE+AT8BPgE/AS4BJy4BNzYXHgMfAT4JArcYEgwLIwgLBw4KDgsMBRYRAwIBBwIUDgsIBQMBAwQDBgICFCcEESQJEQsHCAEDEBMSBhIFBBYQJxcIDgEICxsKFw0SGRdPKxf+1ikXBI4eJxoJOBIHBwEEAQIMKA4PAjUUEgURKCYIExAOAwQLGBIVDxIODw4OAm8KIBIPAgUEAgMDBwQXKwcEBBIFAwEFBAYDBQoLCAwCAhcDAQJtHTgyIigFDQ8DBAQPLSJbRGkEAwUkDhcDAgMhKSYkJgUCBz8L+DNvagIbBhMGFhUUBgYpYh0dIZspJD0MFjsNMTMwDw8RKh8jGhsTEAkFAAAAAAIAL//+AmcCkABFAG4AAAEGBwYfARYGJy4BJzQ2PwE2Nz4DLgEjIgcGBw4CDwEOAScmJyY+ATc2NzY3PgM3NhYXFAcGBxQyMT4BFx4BHwEWAxYHBgcOAhUOAScuAT4BPwE+AT8BLgEnLgE3NhceAR8BPgYCXB8GCQUEARMYGBIBCwYGBgEBBwgCBAUCExkYFQQSEQEIBBgTIQIBAgUBBSkRUQcIDg8JFCEBFxAvARMwEwsSBAMU7ikXBI4eJxoJOBIHBwEEAQIMKA4PAjUUEgURKCYNIAoJDiQWHBQVFAE0aCMvLCUOGwIDJCYVRxoZFgYCHB0NCAMUFSkGQ0oPPA8QAwQlCRQlCi2KOMkTERgLAgUUEBg0JXUBExMEAg4FBiABHwg/Cvkzb2kCGwYSBxUVFAYHKGIdHSGbKSU9DBU7FGAlJhc+Jy0bFwgAAgAv//0CMgKOACsAWQAAAR4DFA4CMQ4CBwYHDgUjIi4BJyY+ATc+BT8BND4DBxYHBgcOAhUOAScuAT4BPwE+AT8BLgEnLgE3NhceAx8BPgkCFwgLBQICAwIBJDENNAoBAwIGCRELBAsVAwMQIRMJExMTDwwDBAQMDhaRKRcEjh4nGgk4EgcHAQQBAgwoDg8CNRQSBREoJggTEA4DBAsYEhUPEg4PDg4CdAMICgwLCwcIAVV3KJZQBh4LFQgHAhMQE2OANxc1Ly8mHQgIAgcRCQgFBz8L+DRuagIbBhMGFRYUBgYpYh0dIZoqJD0MFjsNMTMwDw8RKh8jGhsTEAkEAAIAL//2AnUCjgBQAH4AACUWDgUxMCMGJyYnJicGBw4FIyIuAScmNjc+AT8BPgQXHgMUDgIxFA4BBzY3NhcWBwYHFhceAR8BHgIXHgUVAxYHBgcOAhUOAScuAT4BPwE+AT8BLgEnLgE3NhceAx8BPgkCdAEDBAUFBAMBHRwbHxE5EwQBAwIGChAMAwwWAwUpHhMyEBABBAwOFw0ICwYCAwIDJDEOUgcoDhAeEFMLCAkYCAgFFBoGBAUEAgEB+ykXBI4eJxoJOBIHBwEEAQIMKA4PAjUUEgURKCYIExAOAwQLGBIVDxIODw4OMQUKBwcFBAISEhInFmRFJAUfCxUHBwITEBy+UzN/JiYDBhEJCAYCCQoMCwsIBwFTdig+BBojJx0POhYPECQKCQYRFQUDBwUFAwMBAkMHPwv4NG5qAhsGEwYVFhQGBiliHR0hmiokPQwWOw0xMzAPDxEqHyMaGxMQCQQAAwAv//0CVQKOACsAQwBuAAABFgcOAgcOAiciLgEnJicHBgcGJjc+AT8BNjc2FhcWDwE2NzYXFhcWFxYHPgEnLgEHDgEPAQ4BDwEWBhY3PgM3AxYHBgcOAhUOAScuAT4BPwE+AT8BLgEnLgE3NhceAR8BPggCTwUEBBkqGAMKIhQDChQEAgECBiAYFgEBJx5eCxYSHwYMDkcIAxwfCAcIBQZwHBcEAwkLBg4EBBoeAwIBAgoKBg4LCQNgKRcEjh4nGgk4EgcHAQQBAgwoDg8CNRQSBREoJg0gCgkMGxMXEBMQEA8BYCcuJFhZGgMKDgQDDwwFAQUhAQEeGiO5Te4cCwcLCRQkqwoDHhAFCAoMD/UvgxUMCgIBDQYGJ2cgIAEQEgEBCg0OBAH/Bz8L+DRuagIbBhMGFRYUBgYpYh0dIZoqJD0MFjsVXyYlEy4iJhsbEQ4FAAMAIv/9A28CiQBHAHEAggAAAR4BBw4BJyIuAw4CBwYHBgcOAQcXFhcWFxYXFgcOAQ8BBicmJwcOAxUOASYnJjc2NzY3JicuATc2NzYXNzY3PgEXFiU2HgIHBhUHBhcUFgYHBicuAScmPwEuAgcGBwYHBicmNzY3PgQDNgciBw4BBw4CHgEzNhc2A0MYEwsLIwgBCwcNCw4LDAQVEAMBAgYCFA4LCAYDAQMEAgcBAhMoAxIgDBIHCwMZGgcTBAMUDiQYBw8CCAsbCRgMEBgXTisX/nEdJAgDAwEaGQUFAQMNHBAXAwcFAxM2LBAdCwcNGjE6FA1DCitCQkcHGRoFDBJZHQECAgEICU0vAwJ3CR8TDwMFAwICAQEDBwUXKwgEBBIFAgEFAwYEBAoLCA0CAhcCAQFtJEwnQAERDwIFDy0iXERqAwMFJA4YAwICISomJSgDAgQGEyMoEAUCwr9DBBwQBxoDAhMPHT0iBgcCAgMSCjFhAwRXPIoVS2NYQv7piQEKDos7AQMJBwYCEDMAAAACAC//PwMZAo0AVgCYAAABFgcOAQ8BBgcOCCcmJyY1JjYXFhcWPgI3PgE3MiYVBgcOAiciLgUnJjY3Njc+BBcWBwYHDgEHBhcWNz4BNz4CNzQ+AhYlDgQHDgEeAjc+Ajc+AxceAQcOAQcOAiMmJy4GNzY3Njc2NzYXFhUGBwYiLgInMC4DBgL0JRgGDQMEQhMCDAgRDxcYHyISOxIBDCwdCRANFRQKBAoWAwECBQ0FECIPAQULDA4MCgIGERorEwYIDwsTBxgNAwwNKgYWDQUIFkcVCCATBwMICg7+fAQOKik3GBYOCxgaCw4VCgoGEQsXDxQVAQM1FxIaMR0mFwIGFA4TBwUHCx06cTcrRCYYARELEQsHBQEGBAsLFAGfEzAMIQoLsj4ELBcvHScYEwUCCiYDAh4vCgMKBgERDggSPg4BAQgMBQwOAQECAwkKEgscaz9pFwgJDgQEBgswChcXWxFIFQYCBms0ElUrCAECBwMBgQEIIS1VNC9OLh8LAQEKCgwHGg8LAgIlExpFDgsMCwIRAQURFiQqOiE0Q4lcLQoPKxwmHgoHCQoNAQkFCAIBAAAAAgAw//wCsQKOAEUAggAAAQYHBh8BFgYnLgEnND4CPwE2NzQ2NzYuASMiBwYHDgEPAQ4BJyYnND4BNzY3Njc+Ajc2FhUWBwYHFDIxPgEXHgEfARYnIi4BIgYHBgczNhcWBwYHBiMHBgcGFxY2FhceAQcUDgEHBicmJy4BNjc2NwYHBicmPgE3NhceBAcGAqYfBwgFAwITGBgSAQQHBwMCBgEPAgEEBgISGRgVBiACCQMZEiEDAQYBBSkRUQoKFQwUIQEXEC8BEzATCxIEAxP6BxoZHSAORxUsGQ8PBgYXFBFBHQUIMw0hGAgPDwQDEQ09KTwdDAMLCzlGFQYhDwkDCgcznCY4HBAEAQEBNGgjLywlDhsCAyQmDSclIgoKFgYBOAgHCAMUFSkKgRc8DxADBCUJFCUKLYo4yRgXGAIFFBAYNCV1ARMTBAIOBQYg0QEBAQJhPgEODxYVBQUGVi1EBQEDAQQIGw4CCBIEFQcLMBRKTCK+ZQUBBREKFxAEJRAEDA0QCgcXAAACADH//QLtAocAWACAAAABDgQHDgEeAhcWNzY3Jjc+BDMWFzIeAwcGBxYHDgIHBiciLgM3NjcGBw4CJyYnLgM2NzY3Njc2NzYXFgcGBw4BLgU1MCcmBRYOAi8BIgYPAQ4BDwEOAScuBT0BJhI3NhcyHgIXFT4BFgFrBA4qKjoaGBQGEhUJGBsFCRsHAQEICxYOYRQBAwkEBAQIGQEBAQMHAgkdAQYOCggBAQIbFhEXLhchEgMJFQwBCxAfQmk0Jj0cEgQEEAYLCAYEAwICAQsBWwINExIDHhgoCAkTGQMEAxYYCAsHBQIBAkgLERwIDQYDARBBOAIXAQceK1EyLkoqHgoBAh8GDQgcAgYRDAsFBgEECQ8MIAgICwsgPggfAwEGCxcQCg4hDQoJCQUFEwMKJy9PLDRAiFEoBgovHyYfCQMCAwUHCAcGAQEZoxEVBQMCAyARECZtIyQfHwIBBggKCggDAikBARorAggKCQMEFxQQAAAEAC//LAMJAn8AMABHAG0AhQAAATYWBxQOAwcOAicmJwYHDgUjIi4BJyY2Nz4FPwE+BBcWFzYXNiYHDgMPAQ4CBwYfAR4BPwE+AQEyHgIHDgYHDgYnLgM3PgQ3PgQXNiYHDgEPAQ4BBwYXFBcWFxY3Njc+AgKwJDUBAQwTKh0EETgfHhUeBgEDAQcJEAsDCxUDBSceCBMSEg8MAwMBBAsOFgwXAxckBA0QBQwIBwICHCULAgEBAQMUCAglOf6zGSskEwEBAQkNGSEzHwEFEBEcHScTJjQXBwcCBhsjQigCCRweKyoEFhcNHwkKO0IHAwEBBAcPHxgTKEEdAYkBMS4HF0M9TRwEDxMFBBBmMwUeCxUHBwISERy7Uxc0MC4mHQgIAgYSCAgGCBYLaB0RBwIICQcDAiFYMhYKCQUQBgUFHZMBihMlQCkFFjw+VExSIAEFDgsOBgMGCCw6RSMIHlZSaCkDCRgRD6wvHQoGGQkKS6cyGAoLBRAKFgcGEiaUeAADAAH//wJXAn8AKgBHAIMAAAEWFxYHDgEHDgInIi4BJyY1BwYHBiY3PgE/ATY3NhYXFg8BNjc2FxYXFgM+AicuAQcOAw8BDgMPARYGFjc+AzcBHgEHDgEnJiMGBwYHFA4FIyIuAScmNjc2NyYnJjY3PgEfATIXNz4EFx4DDgMxFAcWARgGAwYFBjUkAgojFAMJFAUCAwUhGBYBAicdXgsWEh8GDA5HCQIcHwkGCWYUGAUCAgoKBAkHBgECEBkLBwEBAQEKCgYNCwoCAY0QDgICICQJCSIQMgwDAgQGCQ0JAwsTAgQpHRIaGAcNAQkHHAoKBAYWAQMLDRULBwoFAgECAgMNFQF/DxAnLTuPJgMKDgQDDwwFAQUhAQEeGiO5Te4cCwcLCRQkqwoDHhAFCAr+8CFdPgsMCgIBBgcHAwIZPDQsDA0BEBIBAQoNDgQBmQUNDBUhAwFTMZdRBhgLEgkLBAIRERu+VDRDBAMIIBAMCgEBATcCBhIJCQUDCAoMCgwHCAEeAgAAAAMACP//AmgCfQAqAEIAaAAAARYXFgcOAQcOAicuAicmMQcGBwYmNz4BPwE2NzYWFxYPATY3NhcWFxYDPgEnLgEHIg4CDwEOAQ8BFgYWNzI2NwEWDgIvASIGDwEOAQ8BDgEnLgU9ASYSNzYXHgEfAT4BFgEfBgMGBQY1JAIKIxQDCRQFAgMFIRgWAQInHV4LFhIfBgwORwkCHB8JBglmHBcEAgoKBAkHBgECGh4CAwEBCgoJFwYBtwINExIDHhgoCAkTGQMEAxYYBwwHBQIBAkgLERwNEAEBEEE4AX4PESYuO44nAwoNAwECDw0FBCIBAR8ZI7lN7hwMBgoKFCSrCwMdEAUICv7wL4MVDQkCBggHAgMnZyAgARARARgLARcRFQUDAgMgEBElbSQkHx8CAQYJCgoIAgMoAQEaKwIBEAgIFxMQAAMABv//AtICgAAqAEQAkAAAARYXFgcOAQcOAicuAicmMQcGBwYmNz4BPwE2NzYWFxYPATY3NhcWFxYDPgEnLgEHDgEPAQ4DDwEWBhY3Mj4CNwEeAQcOASciLgMOAgcGBwYHDgEHFxYXFhcWFxYHDgMVBwYnIicHDgMVDgMmJyY3Njc2NyYnLgE3Njc2Fzc2Nz4BFxYBHQYDBgUGNSQCCiMUAwkUBQIDBSEYFgECJx1eCxYSHwYMDkcJAhwfCQYJZhwXBAIKCgcOBAQQGQsHAQEBAQoKBg0LCgIB+BgSDAsjCAELBg4KDgwMBBYRAwIBBwIUDgsIBQMBAwQCBAMDARQnBBEkDBQJDAIMDw8OBBMGBBYQJxgHDgEICxsKFw0SGBhPKxcBfg8RJi47jicDCg0DAQIPDQUEIgEBHxkjuU3uHAwGCgoUJKsLAx0QBQgK/vAvgxUNCQIBDQYGGD0zLQwNARARAQoODQUB+wkgEhACBgMCAwEBAwYFFyoIBAQSBQMBBQMGBAQKCwUJBQQBARYDAmwkSyc/AQsOBQEEAxAsIlxDaQQDBSUNGAMBAyEpJiUmBQMAAAAABAAA/zEB/AJ7ACoARgBzAH4AADciLgEnJjEHBgciJjc+AT8BNjc2FhcWDwE2NzYXFhcWFxYXFgcOAQcOAicWBhY3Mj4CPwE+AScuAQcOAw8BDgMHARYHBgcOAgcOAQ8BBgcOAScmJyY3Njc2Fx4BPgM/ATY3PgE3PgI3PgIeAQcOAicuATZ/AwkUBQIDBSEYFgECJx1eCxYSHwYMDkcJAhwfCQYJBAYDBgUGNSQCCiMnAQEKCgYNCwoCAxwXBAIKCgQJBwYBAhAZCwcBAVsRAwELAh0iCQgaCAkRJBtOJCkEAQcNGxIfBw4MCwgGAgEOEwVGAQERFwUJHhgdCgYEERIKDgsMAgIQDAUEIgEeGSO5Tu0cDAcLChQkqwsDHhEECAoMDxEmLjuOJgQKDWwBEBEBCg4NBQUvghUNCQEBBgcIAgMYPTMsDQEMChcHJwdabRwdThgYLCYdDhEUIBEPGQMCEgQCBAYIBwMCEkIP3gMGMToJDQVyChwPCg0EAwUdHQAAAAMABf//AooCfQAuAEoAfgAAARYHDgEHFA4FJy4CJyYxBwYHBiY3PgE/ATY3NhYXFg8BNjc2FxYXFhcWBz4BJy4BByIOAg8BDgMPARYGFjcyPgI3AR4BBwYHDgEHDgMPARYXHgIVFAYnJgcGBwYnJjQ3PgE/ASYiBiMiLgI3PgE/ATYyASUGBQY1JAIHBwwMEgkDCRQFAgMFIRgWAQInHV4LFhIfBgwORwkCHB8JBgkEBnAcFwQCCgoECQcGAQIQGQsHAQEBAQoKBg0LCgIBsxIWAQEgAgUCIzwkGQUFPh8RFhEbE2EjLR4aDAkMCW4zMxIoIgMIDxYMAQEOBgcenwFeJi47jiYBAgcFBgMCAgECDw0FBCIBAR8ZI7lN7hwMBgoKFCSrCgQdEAUICgsP9i+DFQ0JAgYIBwIDGD0zLQwNARARAQoODQUBMAIaEB4fAgcCJEMtIwkIAgUDCBUQFxkDDQICCAYPCiMUDoI6OgMCAgcQCw8UAgMGAAAAA//7//kCdAKCADAAQwB+AAABNh4BBw4BBw4CBw4BFBYfARYGJyYnJicmNSYHBgcGJicmNjc+ATc2Fh8BNjc2NzYDNicmBwYHDgEXFjc2Nz4DNyUeAQcOASciJwYHBgcUDgQjIi4BJyY2NzY3JicmNjc+AR8BMjM3PgQXHgMOAzEUBxYBYw0dCQ4GLQoDKiIEAwMBAQEFKBoCAQoFAwIFGyIfPwMDKh4cQyAQGAMEGAcZCh19BggKGhwfDx4FAxUJBhIiFhAEAYYQDgEDICMJCiARMQsEAgYIDwsDChQCBCgcEhkXBw4BCQccCgoEBhUBAwwNFQsHCgUCAQICAw0VAnsGDiMcCmsgCHVnFg4fGRUFBiAfDgEBBxAKAwEIIwgILyssjzIvMwMBBAMDQQ47FDj+xiIJDRgbRCBsFhENBQgWPTcxDuoFDQwVIQMBVDGXUQUfChYHCAESEBy+VDNFAwMIIBAMCgEBNgMGEgkJBgIICgwKDAcIAR4CAAAD/////gLbAoMAJwA7AIQAABM2FhcWBgcOAw8BBgcGFjc2Nz4BFx4BFQcGBwYHBiYnJjY3PgIXNicmBg8BDgEPAQYUFjY/AT4CAR4BBw4BJzAuAw4CBwYHBgcOAQcXFhcWFxYXFgcOAQ8BBiciJwcOAwcOAiYnJjc2NzY3JicuATc2NzYXNzY3PgEXFtYnPwcIFi0TNC4pDAwHAgMaGCMaBxoPCgoBAQcNFStqHB4CHhRDRDAXDQcRBgYTLQ0OBwwNBgYZKxAByRgTDAsjCAsHDgoOCwwFFRADAgEHAhQOCwgGAwEDBAMGAgITJwQRIgsTCAsBAhATEwUTBQMVDiUXCA4CCAsbChcNEBgYTisXAaMGHhceVCgRGg0IAQEIGhUcAQEnCgwHBBIHBwoPGA4bCRwgWEwxVDF1LwoGAQMCCjMVFQ8QBQECAgomFwFRCR8TDwMFBAEDAQEDBwUXKwcEBBIGAgEFAwYEBAoLCAwDAhYCAm0kTCc/AQ0PBAMFDywiXERpBAMFJA4XBAECISomJScEAgAAAAACACj//gJmAoUARwCEAAATBgcOAQcXFhcWFxYXFgcOAQ8BBiciJwcOAxUOASYnJjc2NzY3JicuATc2NzYXNzY3PgEXFhceAQcOAScwLgMOAgcGBR4BBw4DJyInBgcGBw4FIyIuAScmNjc2NyYnLgE3Njc2Fzc+BhceAw4DMQYHFvQDAgEGAhQOCwgFBAEDBAIHAQITJwQSIAsSCAoDGRkIEwQDEw4kGAcPAggLGwkXDRAYFk4rFxQZEwwLIgkLBw4KDgsMBRUBRRAOAgEHDxwTCQohEDILAQMCBwgPCwMKEwMEKR0SGRcHDgEMDBkODhUBAQYHCwsQCAcKBQIBAgMCAQwVAeUHBQMTBQIBBAMGBAQKCwgNAgIXAgJuJEwnQAERDwIFDy0iXERqAwMFJA4YBAECISonJSgEAgcJHxMPAwUDAgIBAQMHBRgDBA0NCBERCgIBUzCWUQUfChUICAISEBy8VDNEAwMGIAsMCgUBNgEECwgLBAMDAwgKDAoMBwcBHgMAAgAp//4CeAKEAEsAjgAAARYXFgcOBSMVBiciJwcOAxUOASYnJjc2NzY3JicuATc2NzYXNzY3PgEXFhceAQcOAScwLgIqAQ4BBwYHBgcOAQcXFhcWBQYHBh8BFgYnLgEnNDY/ATY3MDY3Ni4BIyIHBgcOAQ8BDgEnJicmPgE3Njc2Nz4CNzYWFRQHBgcwFz4BFx4BHwEWASQDAQMEAQMCAgIBARMoBBEhCxMHCwMZGgcTBAQTDiUYBw8CCAsbChcMERgXTSwWFRgTDAsiCQsHDgoOCwwFFRACAgIGAhQOCwgBTx8GCQYDARIYGRIBDAYGBQIPAQEEBQITGBkVBSADCAQYEiEDAQIFAQYpEFEKCxQMFCIWES8BEzETCxIDBBMBrAMECgwDBwUEAwIBFgICbSRMJ0ABEQ8CBQ8tIlxEagMDBSQOGAMCAyIpJyUoBAIICR8TDwMFAwIDBAYFGCsHBAQSBgIBBAR8aiIuLSQOHAMCJSYUSBkaFQc4CQYJAhQUKQuBFjwQEAMFJQgUJgktijjKGBYYAwQTERgzJnUBExQEAw0GBh8AAAMAJf/+AmQCgwAvAEkAkQAAARYHDgEHDgInIi4BJyYjBwYUDgIjBiY3PgI/ATY3NhYXFg8BNjc2FxYXFhcWBz4BJy4BBw4BDwEOAxUHFgYWMz4DNwMWFxYHDgEPAQYnIicHDgMVDgEmJyY3Njc2NyYnLgE3Njc2Fzc2Nz4BFxYXHgEHDgEnIi4DDgIHBgcGBw4BBxcWFxYCXgUEBzQkAwoiFAMKFAQCAQIBBgcPCRgXAgEPIRVdDBYSHwYMDkcIAxsgCAcIBQZxHRYDAwkLBg8DBBEYDAcBAQIKCgYOCwkDxgMBAwQDBgICEycEESILEwgLAxkaBxQFBBQOJRcIDgIICxsKFwwRGBdOKxcVGBILCyMIAQsHDQsOCwwEFRECAgIGAhQOCwgBYiYuO48mAwoNAwMPDQUEBAQMCAcBHhoTWoc17hwLBwsJFCSrCgQdEAUICgwO9i+DFQ0JAgENBgYZPDMtDA0BEBEBCg0OBQEyAwQKDAgMAgMWAgJtJEwnPwERDwIFECwiXERpBAMFJA4XBAIDIikmJSgFAgcJIBIQAgUDAgIBAQMGBRgrBwQEEgUDAQQEAAAAAgAu//YCjAKAAEsAlQAAARYXFgcOAwcVBicmJwcOAxUOASYnJjc2NzY3JicuATc2NzYXNzY3PgIXFhceAQcOAScwLgIqAQ4BBwYHBgcOAgcXFhcWARQOBTEGJyYnJicGBxQOBCMiLgEnJjY3PgE/AT4EFx4DDgMxDgIHNjc2FxYHBgcWFx4BHwEeARceARUBLQMBAwQBBAMDARQnBBEiDBQICwMaGQgTBQQVDyUXBw8BCAsbCRcNERkPLjccFxUYEgwLIgkLBw4KDgsMBRURAgICAwMCFA4LCAFjAgQFBQUDHR0bHhE5EwUDAgcJEQsECxYDBSkeEjMQEAEDDQ4XDAgMBQMBAgMCASQxDlMHKA0QHhBTDAgIGQgIBy4EBwkBqgQECgsFCQUEAQEWAgEBbCRMJz8BEQ8CBg8sIlxEaQQDBSQOFwQBAiEpJhkiEAMDBwofEw8CBQMCAwMHBRcrBwQDCQsEAwEFA/6BBQoIBwUEAhISEicXY0UjBh8KFQgHAhMQHb1UMn8mJwIGEggJBwIJCgwKDAcIAVN2KD4FGiMoHBA6Fg4RJAkKCCYDBw0EAAAAAAT/9v8xAk8CCABCAF4AigCSAAAlDgIHDgIHBicuAicmNjc2FxYXFjc2NzY3NiIjBgcGJicuATc2NzY3PgE/AT4FFhceBQ4DMQYHPgI1PgE/ATYmLwEmDgEHDgEPAQYWNzM+ATcBFgcUBw4BBw4BDwEGBw4BJyYnJjc2NzYWMh4CFxY2PwE2Nz4BNz4BNz4CHgEOAS4BNgEnAx8WAQENEQYvSx0lCwUGDRIYHgUFEA4YEgsKAQIBEhcUTxMSBAcEExAWDx0GBwIHFhcgHyIPChELBwMBAQICAwSgDSITCAwDAwEFBAMHFzAZGCAEBAMOCAkLHggBgRICCQEwCAcUBwcOIRpGJCIGAwYMGAIKAwoFDQQOGgUGCw8DNwEDHAcIHhYdCwsdHAwMvQpfRwUGJy0PbQgDFRANDicKDhADAwcGCy8dLgEYDQ0RGxlDHBotJSEWIQUFAgYPDQ0GAgcFDQ0PDQ8LDQcIDqEQPy0BEioMDAwNAQICBSglJFEXFhcXAQEZDAEnCRcIJwXEJh1PGRktKB8TDw4hEg8bBQEBBAIFAgYOCgoPRw/jAg5iDQ4HbQkcHg8JHB4ABP8x/yEBkQH7AC8ANwBmAHEAABMOAQcOAQ8BBgcOAScuAicmNzY3NhceAT4DPwE2Nz4BNz4CNz4BFzAxFgcGLgI+AR4BBhcWBxQHDgEHDgEPAQYHDgEnJicmNzY3NjIeAxcWNj8BNjc+ATc+Ajc+ARcyNx4BDgEuATc+ApcBOgoIGAkIECMbTiQNFAsCAggMGxIfBw8LCwgGAQIOEgRCAQIPFgYIHgwRAwEEHAwNHB0LDKYSAggBLQgGEwYHDSEZRSUiBwMGCxkDBwUJBg0EDhkGBQoPAzMBAQ0RBQgdDAEWDg0MHB0MBgQPEwEpBsElHU4YGSwnHQ8QBhISChAPGgMDEgQCBAcIBwIDEkIP4AIHMTsIDgUHChcIUQocHg4KHB4mCRcIJwXFJh1QGRguKCAUDg0iERAbBQEBAwIFAgUOCgoPRw/kAgcyPAkOBwZvBBweDwkbDwoPBAAAA//P/zoCJQIVAFQAhACMAAABDgIHDggnJicmJyY2FxYXFj4CNz4BNzQmFQYHDgInIi4DJyY2NzY3PgQXFgcGBw4BBwYXFjc+ATc+Ajc+AhcWBw4BBzcWBwYHDgEHDgMPAQYHDgEnJicmNzY3MjYeAhcWNj8BNjc+Ajc+ATc+ARcwNh4BDgEuATYBNgcYLgkBDQcRDxcYHyMSOxEBAQssHQkPDhUTCwQKFgMBBgwFECIQAgcVEBEDBhEaKxMFCBALEwcXDAMNDCoGFw4FCBZHFQchEwYCBxcLJRgFDQO6EgEBCAEtBwQLCQkDAwwhGUYlIgYEBwsYBwIOAxEEDhkGBQsOAhsZAQMaBwgeDAgdDAwcHA0MASAUP4IcAywXMB0nFxMGAwknAgIeLwoDCQYBEQ4HEz0OAQEBCA0FDA4CAQUKFw8ba0BoGAcJDwQEBgwvCxcXWhFJFAYCBms0ElUrBwMFCQgTMAwhC3YIGAcnBsQmEy4nIwoJLiggFA4NIhEQGwUCBQEGAgUOCgoPRwt3cAMPYg0OBwZ0CRweDwgcHgAC/////wIZAn4APAB4AAABDgEnJicGBwYHFA4EIyIuAScmNjc2NyYnJjY3PgEfATIzNz4GFx4DDgMxFAcWFx4BNx4BBw4BJyYjBgcGBxQOBSMiLgEnJjY3NjcmJyY2Nz4BHwEyFzc0PgMXHgMOAzEUBxYBHQMfJAkKIRAzCwQCBgkPCgQKEwIEKR0SGRcHDQEJBxwKCgQGFQECBQcLCxAIBwoFAgECAgMNFQYQDtsQDgICICQICyEQMwsDAgQGCQ0JBAoTAgQpHRIaGAcNAQkHHAoKBAYWBAsNFQsHCgUCAQICAw0VAfMVIAIBAVQxl1AGHgsVCAgCEhAcvVQ0RAMDCR8QDAoBATYBBAsICwQEBAIJCQwLDAcHAR8CAgUMDwUNDBUhAwFTMZdRBhgLEgkLBAIRERu+VDNEBAMIIBAMCgEBATcCBhIJCQUDCAoMCgwHCAEeAgAAAAIAAv/+AoIChABIAIMAAAEeAQcOASciLgMiDgIHBgcGBw4BBxcWFxYXFhcWBw4BDwEGJyInBw4DFQ4BJicmNzY3NjcmJy4BNzY3Nhc3Njc+ARcWBQ4BJyYjBgcGBw4FIyIuAScmNjc2NyYnJjY3PgEzFxYzNz4EFx4DDgMxFAcWFx4BAlcYEwwLIggBCQYMCQwLCgoEFg8DAgEHARMOCwkFAwEDAwMGAgITJwQSIQsSCAsDGRoHEwQEEw8kFwgOAggKGwoXDRAYF04rF/7ZAiAjCQohDzIKAQMCBggPCwMKFAIFKBwSGRcHDgEJBxsKCwMHFQEDCw0VCwcKBQIBAgIDDBUGEA4CdgkfEw8DBQMBAwEBBAYFFysHBAQTBQIBBAQGAwQKDAgMAgMWAgJtJEwnQAERDwIFDy0iXERqAwMFJA4XBAIDIiknJSgEAooVIQIBUzGYUQUfChUICAESEBy+VDREAwMIIBAMCgEBNwIGEgkJBQIJCQwKDAcIAR8CAQUNAAACAAT//gIOAoAASgCFAAABBgcGHwEWBicuASc0PgI/ATY3MDY3Ni4CIyIHBgcOAw8BDgEnJicmPgE3Njc2Nz4CNzYWFxQHBgcwFjU+ARceAx8BFicOAScmIwYHBgcOBSMiLgEnJjY3NjcmJyY2Nz4BHwEyMzc+BBceAw4DMRQHFhceAQIDHwYJBQQBEhgZEgEFBwcCAgYBDwIBAgQEARMZGBUDDA0LAQgEGBMgAwECBQEFKRFRCgoVDBQhARcQLwETMBMHDQgGAQEU8gIgIwkKIBAwCgEDAgYIDwsDChQCBSccERkXBw4BCQcbCgsDBhUBAwsNFQsICgUCAQICAwwVBhAOATVoIy8tJA4cAwIlJg0nJSEKCxUHOAkFBwQBFBQpBSwzMws8EA8CBSUJFCUJLYo5yRgWGAMEExEYMyZ1AQESFAQCBwcHAgMfmxUhAgFTMpdRBR8LFQgIARIQHL5UNEQEAwgfEQwKAQE3AgYSCQoGAggKDAoMBwgBHgICBQwAAAAAAwAW//4BnQKCADoAXQBlAAABDgEnJiMGBwYHDgUjIi4BJyY2NzY3JicmNDc+ATMXMhc3PgQXHgMUDgIxFAcWFx4BFx4EDgIxMA4BBwYXFBYUDgIjBicmNjc+AT8BPgMeAQ4BLgE2ASwDHyQJCSAPMAkBAwIGCA8KBAoUAgUmGxEZGAcNCQcbCgsDBxQBAwsNFQsHCgUCAgIDDBUGEA4lCAoGBAEBAQEUGwYZAgEDBg0KHAsICw4JGgkIAgYaNhsLDh0cCg0B9hQiAgFUMZhRBR8KFggIARIQHL5VNEQDAwggEAwKAQE3AgcSCQoGAggKDAoMBwgBHgICBA1xAgUGBwcHBQU3TRlgNAMTBw0GBQEXEHk2IFIYGQQKD24KHR0NCh0dAAIACP/2AigCfABJAIYAACUWBzAVBicmJyYnBgcOBSciLgEnJjY3PgM/ATQ+AxceAxQOAjEUDgMHNjc2FxYHBgcWFx4BHwEeARceARUDDgEnJiMGBwYHFA4EIyIuAScmNjc2NyYnJjY3PgEfATIXNz4GFx4DDgMxFAcWFx4BAiUDGh0dGx4SORIFAQMCBgkRCwQMFQQFKR8LHRoWBgcEDA4XDQgLBgIDAgMPFxkbCVIIJw4QHhBTCwgJGQgIBi8DCAn/Ax8kCQohEDMLBAIGCQ8KBAoTAgQpHRIZFwcNAQkHHAoKBAYVAQIFBwsLEAgHCgUCAQICAw0VBhAOMRkPARITESgWY0UjBh4LFQgHAQISERy9VCBLPzYPDwIGEggJBgMJCgwKDAcIASI1PUMaPgUaIygcEDoVDxEjCgoIJgIHDgQBvRUhAwFTMZdRBR8KFQgIAhERG75UNEMEAwggEAwKAQEBNwEECggMBAMDAwgKDAoMBwgBHgICBQ0AAgAP//8B2wKBACoAZQAAAR4DFA4DMQ4EBwYHDgUjIi4BJyY+ATc+AT8BPgQHDgEnJicGBwYHDgUjIi4BJyY2NzY3JicmNjc+ARczFjM3PgQXHgMOAzEUBxYXHgEBwAcKBgQBAgICAQ4WGRkJMQkBAgIGCRALBAsWAwQPHxMRMA8PAQMMDhaMAiAjCQogEDAKAQMCBggPCwMKFAIFJxwRGRcHDgEJBxsKCwMHFAEDDAwVCwgKBQIBAgIDDBUGEA4CdgIHCQoKCQoGBgIiNz5FGZZRBh4LFQgHAhIQEmSBNzKAJicCBhIICYcVIQIBAVQxmFEFHwsVCAgCERAcvlU0RAMDCCAQDAoBATcCBhIJCgYCCAoMCgwHCAEeAgIFDAAAAwAG//4DBgJ+AEcAhADBAAABBgcGHwEWBicuASc0Nj8BNjcwNjc2LgEjIgcGBw4CDwEOAScmJyY+Ajc2NzY3PgM3NhYXFAcGBxY1PgEXHgMfARYlDgEnJicGBwYHFA4EIyIuAScmNjc2NyYnJjY3PgEfATIzNz4GFx4DDgMxFAcWFx4BFw4BJyYjBgcGBxQOBSMiLgEnJjY3NjcmJyY2Nz4BHwEyFzc0PgMXHgMUDgMVFAcWFx4BAvsfBgkFBAESGBkSAQsGBwUBDwIBBAUCExkYFQQSEAIIBBgTIAMBAQIEAQYoEVEHCA4PCRQhARcQLwETMBQGDQgGAQEU/h4DHyQJCiEQMwsEAgYJDwoEChMCBCkdEhkXBw0BCQccCgoEBhUBAgUHCwsQCAcKBQIBAgIDDRUGEA73AiAkCAshEDMLAwIEBgkNCQQKEwIEKR0SGhgHDQEJBxwKCgQGFgQLDRULBwkFAwEDAgINFQYQDgE1aCMvLSQOHAMCJSYVRxoZFQc5CAYJAxUUKQdCSg88EA8CBSUEFg0bCiyKOckSERgMAgQTEBg0JnUBARIUBAIGCAcCAiCaFSACAQFUMZdQBh4LFQgIAhIQHL1UNEQDAwkfEAwKAQE2AQQLCAsEBAQCCQkMCwwHBwEfAgIFDA8VIQMBUzGXUQYYCxIJCwQCEREbvlQ0QwQDCCAQDAoBAQE3AgYSCQkFAgcJCgoKCQYGAQEeAgIFDQAABAAB//wD7QKMACcAPQCFAM8AABM2FhceAQ4BBw4BDwEGBwYWMzY3PgEXHgEVBwYHBgcGJicmNjc+Ahc2Jy4BDgEPAQ4BDwEGFBY2PwE+AiUWFxYHDgEPAQYnIicHDgMVDgEmJyY3Njc2NyYnLgE3Njc2Fzc2Nz4BFxYXHgEHDgEnIi4CIg4CBwYHBgcOAQcXMhcWJR4BBw4BJyIuAw4CBwYHBgcOAQcXFhcWFxYXFgcOAQ8BBicmJwcOAxUOAiYnJjc2NzY3JicuATc2NzYXNzY3PgIXFtgnPwcDAQkeGB5bHx4HAgMaGCMaBxoPCgoBAQcNFStqHB4CHhRDRDAXDQQKCQkCAhMtDQ4HDA0GBhkrEAFtBAEDAwIGAgISJwQSHQoQBwgDGBoHFAMCEQwhGAgOAwcKGwoXCw8XFkwrFxUYFAsKIwgBCwcOCg4LCwUUDwICAQYBEw4LCQFwGBQMCiMIAQsHDgoOCwwEFQ8CAgEGAhQOCwgGAwEDAwIGAgITJwQRHwsRBgoCEBMSBRQEAhINIhcIDwIIChsJFwwQFw8sNxwXAaAHHhgNHykvFhshAwMIGhUbASgKCwYFEgcGCw4ZDhsJHR9YTTBVMHUwCgMCAQMBAQozFRUPEAUBAgIKJheUBAQKCwgNAgIYAQFuJEwoQAEREAEGDi0iXEVrAgMEJQ4XBQICIionJioCAQcIHxMQBAUDAQMBBAcFGCwHBQMTBQIEA8UIHxMQAwUDAQIBAQQHBRgrBwUDEwUCAQQDBgMECgwIDAMCFwEBAW4kTCg/AQ0QBAMEDi0iXERrAwMEJQ0YBQECIionGSMSAgIABf/9//4DlgKGAC0AQwBuAIUAzQAAEzYeAhcWBgcOAQ8BBgcGFjc2Nz4DFx4FFQcGBwYHBiYnJjY3PgIXNicuAQ4BDwEOAQ8BBhQWNj8BPgIlFgcOAQcOAicuAicmIwcGBwYmNz4BPwE2NzYWFxYPATY3NhcWFxYXFgc+AicuAQcOAQ8BDgEPARYGFjcyNjcDBgcOAQcXFhcWFxYXFgcOAQ8BBiciJwcOAxUOASYnJjc2NzY3JicuATc2NzYXNzY3PgEXFhceAQcOASciLgIqAQ4BBwbUFCUdFAMIFi0eWx8eBwIDGhgjGgMJDA8JBAgEAgEBAQEHDRUrahweAh4UQ0QwFw0ECgkJAgITLQ0OBwwNBgYZKxACqwUEBjUkAwoiFAMKFAQCAQIGIBgWAQEoHV4LFhIfBgwORwgDHB8IBwgFBnATGAYCAwkLBg4EBBoeAwIBAgoKChYH8gMCAQYCFA4LCAUEAQMEAgYCAhMnBBEgCxIHCwMYGggTBAMTDiMXCA4DCAsbCRcNEBcXTSsXFRgTCwsjCAELBg4KDwsLBRUBogQFDhQLH1MoGyEDAwgbFBwBAScECAYBBAIGBwcGBQECCw4YDhsIHSBXTTFUMXUvCgQCAgIBAgk0FBUQEAQBAgELJhdBJi47jicDCg0DAQIPDQUEIgEBHxkjuU3uHAwGCgoUJKsKBB0QBQgKCw/2IV0+Cw0JAgENBgYnZyAgARARARgLAXIIBAQSBQIBBQMGAwUJDAgMAwIXAgJuJEwnQAEQEAIFDy0iXERqAwMFJA4YBAECIiknJSkEAgcJHxMPAwUDAgIEBwUXAAACACX//gK4AocASACVAAABFhcWBw4BDwEGJyInBw4DFQ4BJicmNzY3NjcmJy4BNzY3Nhc3Njc+ARcWFx4BBw4BJyIuAyIOAgcGBwYHDgEHFxYXFiUeAQcOAScwLgIqAQ4BBwYHBgcOAgcXFhcWFxYXFgcOAwcVBiciJwcOAxUOASYnJjc2NzY3JicuATc2NzYXNzY3PgMXFgEbAwEDAwMGAgETJwQSHwsSBwoDGRkIEwQDEg4jGAcPAggKGwkYDBAXF00rFxQZEwsLIwgBCQYLCgwKCwoEFQ8DAgEGAhQOCwgBdxkSCwsjCAsHDgoPCwsFFRADAQIDAwIUDgsIBQQBAwQCAwMDARMoBBEhCxIICwMZGgcTBAQTDiUYBw8CCAsbCRgMEBgMHyUrFRcBrwQECgsIDQICFwIBbSVMJz8BERABBg8tIV1EagMDBSQOGAQBAiIqJiYoAwIHCR8SEAMFAgICAQIDBgUYKwcEBBMFAgEEA8MJHxMPAwUDAgMEBwUXKwcFAwgLBQIBBAQGAwQKDAUJBQQBARYCAm4kSyg/AREPAQYPLSJcRGkEAwUkDhcEAgMiKScSHRMJAgIAAAAAAwAd//4BxgKCAEkAbQB5AAABBiciJwcOAxUOASYnJjc2NzY3JicuATc2NzYXNzY3PgEXFhceAQcOASciLgIqAQ4BBwYHBgcOAQcXFhcWFxYXFgcOAyM3HgMcAQ4BMRQOAQcGFxQWFA4DIwYnJjY3PgE/AT4DHgEHDgMnLgE2ARIUJwQRIgwTCAsDGhkHFAUEFA8lFwcPAQgLGwkXDREYF08rFhUYEgsLIwgBCwcNCw4LDAQWEAMCAQYCEw4LCQUDAQMEAQQDAwF1BwoGBAECFRsHGwEBAgQHDAgcCggNDwobCQkCBhorGwsHAwsODwcOCg0BdRcDAm0kTCc/AREPAgYPLCJcRGkEAwUkDhcEAQIhKiYlJwUCBwofEw8CBQMCAwQGBRcrBwUDEwUCAQUDBwMECgsGCAYEHQIFBggGCAQFATZNGV80AxAHCwYHAgEXEHo1IFEYGQQKDnAKHQ8HCwYBAwUcHgAAAgAu//4CRgKFAEkAcAAAARYXFgcOAQ8BBiciJwcOAxUOASYnJjc2NzY3JicuATc2NzYXNzY3PgEXFhceAQcOASciLgMOAgcGBwYHDgMHFxYXFiUeAxQOAjEUDgEHBgcOBSMiLgEnJjY3PgE/ATQ+AwEnAwEDBAIGAgITJwQRIQsSBwsDGRkIEwQDEw4kFwgOAgcLGwkYDBAYF00rFxUYEwwLIggBCwcOCg4LDAQVEAMBAQMCAgIUDgsIAQoICwUCAgMDJDENNAoBAwIGCRELBAsVAwUpHRIyEBAEDA4WAa0DBAoMCAwCAxYCAW0kTCdAAREPAgUPLSJcRGoDAwUkDhgEAQIhKiYmKAQCBwkfExACBQMCAgEBBAYFGCsHBQIHBggEAgEEBMcDCQoMCgwHBwFVeCeWUQUfCxQIBwISERy9UzJ/JyYCBhIICQAAABAAxgABAAAAAAABAAkAFAABAAAAAAACAAcALgABAAAAAAADABYAZAABAAAAAAAEAAkAjwABAAAAAAAFACIA3wABAAAAAAAGABABJAABAAAAAAAQAAkBSQABAAAAAAARAAcBYwADAAEECQABABIAAAADAAEECQACAA4AHgADAAEECQADACwANgADAAEECQAEABIAewADAAEECQAFAEQAmQADAAEECQAGACABAgADAAEECQAQABIBNQADAAEECQARAA4BUwBNAGEAbAB0AGUAcwBlAHIAcwAATWFsdGVzZXJzAABSAGUAZwB1AGwAYQByAABSZWd1bGFyAAAxAC4AMAAwADIAOwBNAGEAbAB0AGUAcwBlAHIAcwBSAGUAZwB1AGwAYQByAAAxLjAwMjtNYWx0ZXNlcnNSZWd1bGFyAABNAGEAbAB0AGUAcwBlAHIAcwAATWFsdGVzZXJzAABWAGUAcgBzAGkAbwBuACAAMQAuADAAMAAyADsARgBvAG4AdABzAGUAbABmACAATQBhAGsAZQByACAAMgAuADMALgA1AABWZXJzaW9uIDEuMDAyO0ZvbnRzZWxmIE1ha2VyIDIuMy41AABNAGEAbAB0AGUAcwBlAHIAcwBSAGUAZwB1AGwAYQByAABNYWx0ZXNlcnNSZWd1bGFyAABNAGEAbAB0AGUAcwBlAHIAcwAATWFsdGVzZXJzAABSAGUAZwB1AGwAYQByAABSZWd1bGFyAAAAAAACAAAAAAAA/4MAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAKwAAAABAAIBAgEDAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQCsAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AToBOwE8AT0BPgE/AUABQQFCAUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8BUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAljb250cm9sTEYJY29udHJvbENSB0FwLmxpZ2EHQWoubGlnYQdFdC5saWdhB0VmLmxpZ2EHRWoubGlnYQdFay5saWdhB0VsLmxpZ2EHRWIubGlnYQdGdC5saWdhB0ZoLmxpZ2EHRmsubGlnYQdGbC5saWdhB0ZiLmxpZ2EHSHQubGlnYQdIZi5saWdhB0l0LmxpZ2EHSXAubGlnYQdJZi5saWdhB0lqLmxpZ2EHSWwubGlnYQdJYi5saWdhB0p0LmxpZ2EHSmYubGlnYQdKaC5saWdhB0prLmxpZ2EHSmwubGlnYQdKYi5saWdhB0t0LmxpZ2EHS3AubGlnYQdLeS5saWdhB0xqLmxpZ2EHTWoubGlnYQdNaC5saWdhB01mLmxpZ2EHTnQubGlnYQdOZi5saWdhB09mLmxpZ2EHT3oubGlnYQdQcS5saWdhB1B3LmxpZ2EHUHIubGlnYQdQdC5saWdhB1B5LmxpZ2EHUHUubGlnYQdQaS5saWdhB1BmLmxpZ2EHUGgubGlnYQdQai5saWdhB1BrLmxpZ2EHUGwubGlnYQdQei5saWdhB1B4LmxpZ2EHUHYubGlnYQdQYi5saWdhB1BuLmxpZ2EHUG0ubGlnYQdScC5saWdhB1JmLmxpZ2EHUmoubGlnYQdUdC5saWdhB1RmLmxpZ2EHVGgubGlnYQdUay5saWdhB1RsLmxpZ2EHVGIubGlnYQdVdC5saWdhB1VzLmxpZ2EHVWYubGlnYQdWdC5saWdhB1ZzLmxpZ2EHVmYubGlnYQdWbC5saWdhB1d0LmxpZ2EHV2YubGlnYQdYcC5saWdhB1l0LmxpZ2EHWWkubGlnYQdZZi5saWdhB1loLmxpZ2EHWWwubGlnYQdZay5saWdhB1liLmxpZ2EHQWYubGlnYQdDeS5saWdhB0VoLmxpZ2EHR3IubGlnYQdPcC5saWdhB2J0LmxpZ2EHYnIubGlnYQdiZi5saWdhB2JqLmxpZ2EHYnoubGlnYQdkdC5saWdhB2VmLmxpZ2EHZnQubGlnYQdmaC5saWdhB2ZiLmxpZ2EHZmsubGlnYQdnai5saWdhB2pqLmxpZ2EHeWoubGlnYQd0dC5saWdhB3RmLmxpZ2EHdGgubGlnYQd0aS5saWdhB3RrLmxpZ2EHdGwubGlnYQh0dGgubGlnYQhlZmYubGlnYQhlZmIubGlnYQdmZi5saWdhB2ZpLmxpZ2EHZmwubGlnYQAAAAAAAAH//wACAAEAAAAMAAAAHAAAAAIAAgADADoAAQA7AKsAAgAEAAAAAgAAAAEAAAAKAB4ALAABbGF0bgAIAAQAAAAA//8AAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQQIAB0AQABaAGQAngDIANIA5AEWAUgBYgFsAYYBmAGyAkQCXgKQAqoCzALeAugDIgNMA1YDdAOuA7gDwgP+AAMACAAOABQAjQACACUAPAACACkAOwACAC8AAQAEAI4AAgA4AAcAEAAWABwAIgAoAC4ANACPAAIAJwBCAAIAIQBBAAIAKwBAAAIAKgA/AAIAKQA+AAIAJQA9AAIAMwAFAAwAEgAYAB4AJABHAAIAIQBGAAIAKwBFAAIAKgBEAAIAJwBDAAIAMwABAAQAkAACADEAAgAGAAwASQACACUASAACADMABgAOABQAGgAgACYALABPAAIAIQBOAAIAKwBNAAIAKQBMAAIAJQBLAAIALwBKAAIAMwAGAA4AFAAaACAAJgAsAFUAAgAhAFQAAgArAFMAAgAqAFIAAgAnAFEAAgAlAFAAAgAzAAMACAAOABQAWAACADgAVwACAC8AVgACADMAAQAEAFkAAgApAAMACAAOABQAXAACACUAWwACACcAWgACACkAAgAGAAwAXgACACUAXQACADMAAwAIAA4AFACRAAIALwBgAAIAOQBfAAIAJQASACYALAAyADgAPgBEAEoAUABWAFwAYgBoAG4AdAB6AIAAhgCMAHIAAgAsAHEAAgAtAHAAAgAhAG8AAgA1AG4AAgA3AG0AAgA5AGwAAgArAGsAAgAqAGoAAgApAGkAAgAnAGgAAgAlAGcAAgAoAGYAAgA0AGUAAgA4AGQAAgAzAGMAAgAxAGIAAgA2AGEAAgAwAAMACAAOABQAdQACACkAdAACACUAcwACAC8ABgAOABQAGgAgACYALAB7AAIAIQB6AAIAKwB5AAIAKgB4AAIAJwB3AAIAJQB2AAIAMwADAAgADgAUAH4AAgAlAH0AAgAyAHwAAgAzAAQACgAQABYAHACCAAIAKwCBAAIAJQCAAAIAMgB/AAIAMwACAAYADACEAAIAJQCDAAIAMwABAAQAhQACAC8ABwAQABYAHAAiACgALgA0AIwAAgAhAIsAAgAqAIoAAgArAIkAAgAnAIgAAgAlAIcAAgAoAIYAAgAzAAUADAASABgAHgAkAJYAAgA5AJUAAgApAJQAAgAlAJMAAgAxAJIAAgAzAAEABACXAAIAMwADAAgAEAAYAKgAAwAlACEApwADACUAJQCYAAIAJQAHABAAFgAcACIAKAAuADQAqwACACsAqgACACgAqQACACUAnAACACoAmwACACEAmgACACcAmQACADMAAQAEAJ0AAgApAAEABACeAAIAKQAHABAAGAAeACQAKgAwADYApgADADMAJwClAAIAKwCkAAIAKgCjAAIAKACiAAIAJwChAAIAJQCgAAIAMwABAAQAnwACACkAAQAdAAYACAAKAAsADAANAA4ADwAQABEAEgATABQAFQAXABkAGgAbABwAHQAeACEAIwAkACUAJgApADMAOAAAAAEAAAAKAB4ALAABbGF0bgAIAAQAAAAA//8AAQAAAAFrZXJuAAgAAAABAAAAAQAEAAIAAAABAAgAAQPGAAQAAABEAJIAnADSAOABIgEoATYBPAFKAVABXgFkAW4BfAGKAawBsgHAAcYB1AHiAewB/gIIAhYCSAJiAnAChgKcAqoCvALKAtAC6gL0AvoDAAMKAxADGgMgAyYDLAMyAzgDOAMyAz4DRANOAz4DVANaA2ADIANmA2wDcgN4A34DiAOOA5gDngOkA7IDvAACAC7//AA3//IADQAl/+oAKP/8ACn/9AAq//AAK//6ACz//gAt//4AMf/qADP//AA0//wANf/+ADb/+AA5//QAAwAt//wALv/8ADb//AAQACT//AAl/+wAJv/6ACf//AAp/+wAKv/0ACv/+gAs//gALf/8AC//7gAx//gAMv/0ADT/9gA3/+oAOP/6ADn/5AABADf/+gADADX//AA3/+gAOf/6AAEALv/2AAMAKP/8ACn/6AAy/+QAAQAu//IAAwAo/+4AL//2ADX/5gABACT/8AACABgAAgAoAAQAAwAo//4ALv/wADL/+AADACf/9gAv/+4Ao//sAAgAKf/qACv/9AAu//wAL//uADH/7gAy//IAN//mAJX/9AABADYADgADACAABAAjAAQAM//4AAEAMv/8AAMAJv/+ACr/+AA3//4AAwAo//gALv/0AJn/7AACACMAAgAl/+wABAAk//wAL//8ADT/9AA4//4AAgAt//IAq//iAAMAJf/sACb/+AA3//wADAAk//wAJv/+ACj/+gAp/+AAK//+ACz/9gAt//wAL//qADH/7AAy//IAN//cAKP/4gAGACQAAgAl/9oAK//yAC//4gAx/+gAMv/8AAMAKQB+ADL/7ACeAIgABQAg//wAIv/4ACb//AAu//YANQAEAAUAKf/0ACr/+AAv//QAM//mAKP/3gADACEAHAAkAAIALv/4AAQAJf/0AC3//gAv//wAmf/8AAMAJP/wACf/+AAp/+4AAQAk//oABgAg//QAIf/wACj/9gAu/+wAL//0ADP/9AACACH//gA3//IAAQApAEIAAQAnACgAAgAzADQAqgAoAAEAMwA0AAIAMwAyAKEARgABADL/6gABADMALAABACkANAABAJoAGAABADMAMgABACkAOAABADMAMAACACUAEgAzAC4AAQApAHgAAQApADYAAQAzAC4AAQAzADgAAQAzAEIAAQAzAEwAAQAz//IAAQAnAEgAAgAl/+4Amv/oAAEAKQBiAAIAKQBaAJ4AUAABACkAVgABAKEARAADADMANgCaABIAogBKAAIAJwAsAKEARgACAC3/8gA3/+oAAQBEAAYABwAIAAkACgAMABEAFAAVABgAHQAgACEAIgAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOQA8AD0APgBIAEkASwBMAE0AUABRAFkAWgBcAF4AXwBhAGgAagB+AIEAhACIAI0AkQCYAJoAnQCeAJ8AoAChAKkAqgAAAAAAAQAAAADUGBYRAAAAANfpcqUAAAAA1+lypQ==";
|
|
@@ -4901,34 +4903,34 @@ class za extends ie {
|
|
|
4901
4903
|
}
|
|
4902
4904
|
brandSvg(A, e, t) {
|
|
4903
4905
|
const a = A.toSVG(2), n = A.getBoundingBox(), s = n.y2 - n.y1, i = n.x2 - n.x1, o = A.toPathData(3), r = () => {
|
|
4904
|
-
const m =
|
|
4905
|
-
m.appendChild(
|
|
4906
|
-
const Y =
|
|
4906
|
+
const m = P("g"), y = P("g");
|
|
4907
|
+
m.appendChild(y), y.setAttribute("stroke", "#5C1A0D"), y.setAttribute("stroke-width", "4"), y.setAttribute("transform", "translate(1,1)"), y.innerHTML = a;
|
|
4908
|
+
const Y = P("g");
|
|
4907
4909
|
m.appendChild(Y), Y.setAttribute("fill", "#FFE386"), Y.setAttribute("transform", "translate(1,1)"), Y.innerHTML = a;
|
|
4908
|
-
const F =
|
|
4910
|
+
const F = P("g");
|
|
4909
4911
|
m.appendChild(F), F.setAttribute("fill", "white"), F.innerHTML = a;
|
|
4910
|
-
const
|
|
4911
|
-
return
|
|
4912
|
-
|
|
4913
|
-
|
|
4914
|
-
]),
|
|
4912
|
+
const R = new ce(m);
|
|
4913
|
+
return R.transform(([N, L]) => [N, L + ((i - N) * L) ** 2 / (i * 5e4)]), R.transform(([N, L]) => [
|
|
4914
|
+
N,
|
|
4915
|
+
L + (i / 3 - N) ** 2 / i * this.indicator(N < i / 3)
|
|
4916
|
+
]), R.transform(([N, L]) => [N - (s - L) * (i - N) / 800, L]), m;
|
|
4915
4917
|
}, [c, B, l] = tt(e);
|
|
4916
4918
|
if (!c)
|
|
4917
4919
|
return "";
|
|
4918
|
-
const d =
|
|
4920
|
+
const d = P("defs");
|
|
4919
4921
|
c.appendChild(d), at(c, d, e);
|
|
4920
|
-
let E,
|
|
4921
|
-
t ? (E = B * 0.25 * (1 + 0.1),
|
|
4922
|
-
const
|
|
4923
|
-
c.appendChild(
|
|
4924
|
-
const u = oe(E,
|
|
4925
|
-
u.setAttribute("opacity", "0"),
|
|
4926
|
-
const
|
|
4927
|
-
|
|
4922
|
+
let E, h, w, Q;
|
|
4923
|
+
t ? (E = B * 0.25 * (1 + 0.1), h = l / 2 * (1 + 0.1), w = l * 0.22, Q = B * 0.32) : (E = B * 0.22 * (1 + 0.1), h = l * 0.8, w = l * 0.067, Q = B * 0.33);
|
|
4924
|
+
const C = P("g");
|
|
4925
|
+
c.appendChild(C), C.setAttribute("transform", `translate(${w} ${Q}) rotate(-10)`);
|
|
4926
|
+
const u = oe(E, h);
|
|
4927
|
+
u.setAttribute("opacity", "0"), C.appendChild(u);
|
|
4928
|
+
const D = P("g");
|
|
4929
|
+
C.appendChild(D);
|
|
4928
4930
|
const p = r();
|
|
4929
|
-
|
|
4930
|
-
const
|
|
4931
|
-
return re(
|
|
4931
|
+
D.appendChild(p);
|
|
4932
|
+
const f = ne(o);
|
|
4933
|
+
return re(D, f, E, h), c.outerHTML;
|
|
4932
4934
|
}
|
|
4933
4935
|
// 1 if true, 0 if false.
|
|
4934
4936
|
}
|
|
@@ -4945,34 +4947,34 @@ class ja extends ie {
|
|
|
4945
4947
|
}
|
|
4946
4948
|
svgElement(A, e) {
|
|
4947
4949
|
const t = ae(Ka), n = A !== "" ? ((u) => u.charAt(0).toUpperCase() + u.substr(1).toLowerCase())(A) : "", s = t.getPath(n, 0, 72, 72), i = s.toSVG(2), o = s.getBoundingBox(), r = o.x2 - o.x1, c = s.toPathData(3), B = () => {
|
|
4948
|
-
const u =
|
|
4950
|
+
const u = P("g");
|
|
4949
4951
|
u.classList.add("module-text-group");
|
|
4950
|
-
const
|
|
4951
|
-
u.appendChild(
|
|
4952
|
-
const p =
|
|
4953
|
-
p.setAttribute("d", c), p.setAttribute("stroke", "black"), p.setAttribute("stroke-width", "3"),
|
|
4954
|
-
const
|
|
4955
|
-
|
|
4956
|
-
const m =
|
|
4952
|
+
const D = P("defs");
|
|
4953
|
+
u.appendChild(D), D.appendChild(nt(0, 2, 2, "shadow"));
|
|
4954
|
+
const p = P("path");
|
|
4955
|
+
p.setAttribute("d", c), p.setAttribute("stroke", "black"), p.setAttribute("stroke-width", "3"), D.appendChild(p);
|
|
4956
|
+
const f = P("g");
|
|
4957
|
+
f.classList.add("module-layer0"), u.appendChild(f), f.setAttribute("filter", "url(#shadow)"), f.innerHTML = p.outerHTML;
|
|
4958
|
+
const m = P("g");
|
|
4957
4959
|
m.classList.add("module-layer1"), u.appendChild(m), m.setAttribute("stroke-width", "3"), m.setAttribute("stroke", "rgb(45,41,38)"), m.setAttribute("fill", "rgb(45,41,38)"), m.setAttribute("transform", "translate(0.5,0)"), m.innerHTML = i;
|
|
4958
|
-
const
|
|
4959
|
-
|
|
4960
|
-
const Y =
|
|
4961
|
-
return Y.classList.add("module-layer3"), u.appendChild(Y), Y.setAttribute("fill", "white"), Y.innerHTML = i, new ce(u).transform(([
|
|
4962
|
-
}, l =
|
|
4960
|
+
const y = P("g");
|
|
4961
|
+
y.classList.add("module-layer2"), u.appendChild(y), y.setAttribute("fill", "rgb(255,209,0)"), y.setAttribute("transform", "translate(1,-0.1)"), y.innerHTML = i;
|
|
4962
|
+
const Y = P("g");
|
|
4963
|
+
return Y.classList.add("module-layer3"), u.appendChild(Y), Y.setAttribute("fill", "white"), Y.innerHTML = i, new ce(u).transform(([R, N]) => [R, N + (r / 2 - R) ** 2 / (r * 6)]), u;
|
|
4964
|
+
}, l = P("g");
|
|
4963
4965
|
l.classList.add("module-root");
|
|
4964
|
-
const d =
|
|
4966
|
+
const d = P("defs");
|
|
4965
4967
|
l.appendChild(d);
|
|
4966
|
-
const E =
|
|
4968
|
+
const E = P("g");
|
|
4967
4969
|
E.classList.add("module-bounds"), l.appendChild(E);
|
|
4968
|
-
const
|
|
4969
|
-
|
|
4970
|
-
const w =
|
|
4970
|
+
const h = oe(e.height, e.width);
|
|
4971
|
+
h.setAttribute("opacity", "0"), E.appendChild(h);
|
|
4972
|
+
const w = P("g");
|
|
4971
4973
|
w.classList.add("module-text-enclosure"), l.appendChild(w);
|
|
4972
4974
|
const Q = B();
|
|
4973
4975
|
w.appendChild(Q);
|
|
4974
|
-
const
|
|
4975
|
-
return re(w,
|
|
4976
|
+
const C = ne(c);
|
|
4977
|
+
return re(w, C, e.height, e.width, 0.35, 0.65), st(l.outerHTML);
|
|
4976
4978
|
}
|
|
4977
4979
|
}
|
|
4978
4980
|
async function it(g) {
|
|
@@ -5001,24 +5003,25 @@ class Ie extends Xe {
|
|
|
5001
5003
|
}
|
|
5002
5004
|
}
|
|
5003
5005
|
class Wa {
|
|
5004
|
-
|
|
5005
|
-
|
|
5006
|
-
|
|
5006
|
+
// True when the transaction is being reloaded, rather than newly created.
|
|
5007
|
+
constructor(A, e, t, a, n, s, i, o, r, c, B = !1, l, d = !1) {
|
|
5008
|
+
this.workflowStatePromiseQueue = new qe(1), this.variationRecords = [], this.initialized = !1, this.readOnly = !1, this.isReloadedTransaction = !1, this.renderLayouts = () => {
|
|
5009
|
+
var w;
|
|
5007
5010
|
if (!this.previewService)
|
|
5008
5011
|
return;
|
|
5009
|
-
const
|
|
5010
|
-
if (
|
|
5011
|
-
for (const [,
|
|
5012
|
-
|
|
5012
|
+
const E = this.getCommandContext().getAllLayouts(), h = (w = this.getLayoutPreviewService()) == null ? void 0 : w.getAll();
|
|
5013
|
+
if (h)
|
|
5014
|
+
for (const [, Q] of h)
|
|
5015
|
+
Q.render(
|
|
5013
5016
|
this.getWorkflow(),
|
|
5014
|
-
|
|
5017
|
+
E,
|
|
5015
5018
|
this.getCurrentVariationRecord() || null,
|
|
5016
5019
|
this.getProduct().overlayImageUrl
|
|
5017
5020
|
);
|
|
5018
|
-
}, this.updateTransaction = n, this.commandContext = a, this.reloadedState = c, this.transaction = s, this.readOnly = B, this.
|
|
5021
|
+
}, this.updateTransaction = n, this.commandContext = a, this.reloadedState = c, this.transaction = s, this.readOnly = B, this.confirmedDesign = !1, this.editedSteps = {}, this.informationResults = [], this.mandatorySteps = {}, this.pendingUpdates = [], this.selectionCost = 0, this.workflow = A, this.stepSpecificServices = {}, this.profanityFilter = e, this.pollers = [], this.allScenes = [], this.layouts = t, this.product = i, this.previewService = o, this.modelContainer = l, this.stepElements = {}, this.stepInitialised = {}, this.stepMetadata = {}, this.stepSelections = {}, this.storage = {}, this.confirmCallbacks = [], this.editedCallbacks = [], this.elementsCallbacks = [], this.informationResultCallbacks = [], this.initCallbacks = [], this.mandatoryCallbacks = [], this.makingAdjustmentsCallback = [], this.metadataCallbacks = [], this.selectionCallbacks = [], this.stepSpecificStorageCallbacks = {}, this.storageCallbacks = [], this.currentVariationRecordCallbacks = [], this.variationRecordCallbacks = [], this.currentAdjustingStepId = "", this.renderableContextService = r, this.currentVariationRecord = null, this.isReloadedTransaction = d, this.initializationPromise = this.initializeDefaultWorkflowState(A, s), this.initializationPromise.then(() => {
|
|
5019
5022
|
this.initialized = !0;
|
|
5020
|
-
}), this.initializationPromise.catch((
|
|
5021
|
-
throw console.error(
|
|
5023
|
+
}), this.initializationPromise.catch((E) => {
|
|
5024
|
+
throw console.error(E), this.initialized = !1, new Error("Workflow initialization failed due to an error. See console.");
|
|
5022
5025
|
}), this.initializationPromise.finally(
|
|
5023
5026
|
() => this.getCommandContext().registerStateCallback(() => {
|
|
5024
5027
|
this.updateStateWithServer(), this.renderLayouts();
|
|
@@ -5453,14 +5456,14 @@ class Wa {
|
|
|
5453
5456
|
this.stepSelections = {
|
|
5454
5457
|
...this.stepSelections,
|
|
5455
5458
|
[A]: { selectedVariants: e }
|
|
5456
|
-
}, this.selectionCost = Object.values(this.stepSelections).reduce((
|
|
5457
|
-
nA(
|
|
5459
|
+
}, this.selectionCost = Object.values(this.stepSelections).reduce((f, m) => f + m.selectedVariants.map((y) => y.priceModifier || 0).reduce((y, Y) => y + Y, 0), 0), this.workflow.steps.forEach((f) => {
|
|
5460
|
+
nA(f, this.stepSelections) || (this.stepInitialised[f.stepName] = !1, delete this.stepMetadata[f.stepName], delete this.stepSelections[f.stepName], delete this.storage[f.stepName]);
|
|
5458
5461
|
});
|
|
5459
|
-
const s = this.allScenes, i = aA(s, n), o = aA(s, this.stepSelections), r = i.map((
|
|
5460
|
-
(
|
|
5462
|
+
const s = this.allScenes, i = aA(s, n), o = aA(s, this.stepSelections), r = i.map((f) => f.silentSteps).flat(), B = o.map((f) => f.silentSteps).flat().filter(
|
|
5463
|
+
(f) => !r.some((m) => m.stepName === f.stepName)
|
|
5461
5464
|
);
|
|
5462
|
-
r.forEach((
|
|
5463
|
-
nA(
|
|
5465
|
+
r.forEach((f) => {
|
|
5466
|
+
nA(f, this.stepSelections) || (this.stepInitialised[f.stepName] = !1);
|
|
5464
5467
|
});
|
|
5465
5468
|
const l = this.getInvalidCanvasRegions(), { stepElements: d, commands: E } = await this.stepElementsForIntroducedSilentSteps(B, !1);
|
|
5466
5469
|
this.stepElements = {
|
|
@@ -5468,17 +5471,17 @@ class Wa {
|
|
|
5468
5471
|
...d,
|
|
5469
5472
|
[A]: t
|
|
5470
5473
|
}, this.removeElements(l);
|
|
5471
|
-
const
|
|
5472
|
-
if ((
|
|
5473
|
-
const
|
|
5474
|
-
(p =
|
|
5475
|
-
}
|
|
5476
|
-
const w = l.map((
|
|
5477
|
-
|
|
5478
|
-
const u = this.getInvalidModelVariants(),
|
|
5479
|
-
if (
|
|
5480
|
-
const
|
|
5481
|
-
(m) =>
|
|
5474
|
+
const h = this.workflow.steps.find((f) => f.stepName === A);
|
|
5475
|
+
if ((h == null ? void 0 : h.type) === I.Frame) {
|
|
5476
|
+
const f = this.getStepSpecificServices(A);
|
|
5477
|
+
(p = f == null ? void 0 : f.frameService) == null || p.setTargetElements(t.map((m) => m.id));
|
|
5478
|
+
}
|
|
5479
|
+
const w = l.map((f) => new $(f.id)), Q = new Ee(this.constructSerializableWorkflow()), C = [...E, ...w, Q];
|
|
5480
|
+
C.length > 0 && this.commandContext.apply(new G(C), !0), await this.ensureStepsAreLoaded(), this.onElementsChange();
|
|
5481
|
+
const u = this.getInvalidModelVariants(), D = this.modelContainer;
|
|
5482
|
+
if (D) {
|
|
5483
|
+
const f = u.map(
|
|
5484
|
+
(m) => D.applyModelVariant(
|
|
5482
5485
|
m,
|
|
5483
5486
|
{
|
|
5484
5487
|
contextService: this.getLayoutPreviewService()
|
|
@@ -5486,7 +5489,7 @@ class Wa {
|
|
|
5486
5489
|
!1
|
|
5487
5490
|
)
|
|
5488
5491
|
);
|
|
5489
|
-
await Promise.all(
|
|
5492
|
+
await Promise.all(f);
|
|
5490
5493
|
}
|
|
5491
5494
|
await this.onSelectionChange(), a && await a();
|
|
5492
5495
|
}
|
|
@@ -5623,7 +5626,7 @@ class Wa {
|
|
|
5623
5626
|
}), this.renderLayouts();
|
|
5624
5627
|
}
|
|
5625
5628
|
traversableScenes() {
|
|
5626
|
-
return Ca(this.allScenes, this.stepSelections
|
|
5629
|
+
return Ca(this.allScenes, this.stepSelections);
|
|
5627
5630
|
}
|
|
5628
5631
|
}
|
|
5629
5632
|
class X {
|
|
@@ -5806,7 +5809,7 @@ const ot = class ZA {
|
|
|
5806
5809
|
};
|
|
5807
5810
|
ot.updateState = /* @__PURE__ */ new Map();
|
|
5808
5811
|
let j = ot;
|
|
5809
|
-
const rt =
|
|
5812
|
+
const rt = M`
|
|
5810
5813
|
mutation AddTransactionStakeholder($id: String!, $type: String!, $details: CustomerDetailsInput!) {
|
|
5811
5814
|
transactionAddStakeholder(id: $id, details: $details, type: $type) {
|
|
5812
5815
|
id
|
|
@@ -5820,7 +5823,7 @@ const rt = y`
|
|
|
5820
5823
|
}
|
|
5821
5824
|
}
|
|
5822
5825
|
}
|
|
5823
|
-
`, Xa =
|
|
5826
|
+
`, Xa = M`
|
|
5824
5827
|
mutation UpdateDesignName($transactionId: String!, $designName: String!) {
|
|
5825
5828
|
transactionUpdate(id: $transactionId, designName: $designName) {
|
|
5826
5829
|
id
|
|
@@ -5835,7 +5838,7 @@ class qa extends j {
|
|
|
5835
5838
|
throw new Error("Bulk step does not support variants.");
|
|
5836
5839
|
}
|
|
5837
5840
|
async setDesignName(A) {
|
|
5838
|
-
await
|
|
5841
|
+
await x.getShadowGraphqlClient().mutate({
|
|
5839
5842
|
mutation: Xa,
|
|
5840
5843
|
variables: {
|
|
5841
5844
|
transactionId: this.manager.getTransaction().id,
|
|
@@ -5862,7 +5865,7 @@ class qa extends j {
|
|
|
5862
5865
|
window.open(this.transaction.bulkSourceUrl, "_blank");
|
|
5863
5866
|
}
|
|
5864
5867
|
async sendGoogleSheetLinkToEmail(A) {
|
|
5865
|
-
await
|
|
5868
|
+
await x.getShadowGraphqlClient().mutate({
|
|
5866
5869
|
mutation: rt,
|
|
5867
5870
|
variables: { id: this.transaction.id, details: { emailAddress: A }, type: "Owner" }
|
|
5868
5871
|
}), this.openBulkSourceUrl();
|
|
@@ -6176,8 +6179,8 @@ class an extends j {
|
|
|
6176
6179
|
}
|
|
6177
6180
|
]);
|
|
6178
6181
|
else {
|
|
6179
|
-
const
|
|
6180
|
-
this.manager.setInformationResults(
|
|
6182
|
+
const h = B.filter((w) => w.stepID !== this.step.stepName);
|
|
6183
|
+
this.manager.setInformationResults(h);
|
|
6181
6184
|
}
|
|
6182
6185
|
return e.helperText = l || c, e.errorText = l, e;
|
|
6183
6186
|
}
|
|
@@ -6279,7 +6282,7 @@ class oA {
|
|
|
6279
6282
|
}
|
|
6280
6283
|
}
|
|
6281
6284
|
}
|
|
6282
|
-
const ct =
|
|
6285
|
+
const ct = M`
|
|
6283
6286
|
fragment CreateDesignTransaction on Transaction {
|
|
6284
6287
|
id
|
|
6285
6288
|
bulk
|
|
@@ -6296,7 +6299,7 @@ const ct = y`
|
|
|
6296
6299
|
workflowViewerLink
|
|
6297
6300
|
workflowViewerReadOnlyLink
|
|
6298
6301
|
}
|
|
6299
|
-
`, sn =
|
|
6302
|
+
`, sn = M`
|
|
6300
6303
|
${ct}
|
|
6301
6304
|
mutation CreateDesign(
|
|
6302
6305
|
$name: String!
|
|
@@ -6328,7 +6331,7 @@ const ct = y`
|
|
|
6328
6331
|
}
|
|
6329
6332
|
}
|
|
6330
6333
|
}
|
|
6331
|
-
`, on =
|
|
6334
|
+
`, on = M`
|
|
6332
6335
|
${ct}
|
|
6333
6336
|
mutation CreateDesigns($inputs: [DesignCreateInput]!) {
|
|
6334
6337
|
designCreateMany(inputs: $inputs) {
|
|
@@ -6344,7 +6347,7 @@ const ct = y`
|
|
|
6344
6347
|
}
|
|
6345
6348
|
`, rn = async (g) => {
|
|
6346
6349
|
var e;
|
|
6347
|
-
return (e = (await
|
|
6350
|
+
return (e = (await x.getShadowGraphqlClient().mutate({
|
|
6348
6351
|
mutation: sn,
|
|
6349
6352
|
errorPolicy: "all",
|
|
6350
6353
|
fetchPolicy: "no-cache",
|
|
@@ -6361,7 +6364,7 @@ const ct = y`
|
|
|
6361
6364
|
})).data) == null ? void 0 : e.designCreate;
|
|
6362
6365
|
}, cn = async (g) => {
|
|
6363
6366
|
var e;
|
|
6364
|
-
return (e = (await
|
|
6367
|
+
return (e = (await x.getShadowGraphqlClient().mutate({
|
|
6365
6368
|
mutation: on,
|
|
6366
6369
|
errorPolicy: "all",
|
|
6367
6370
|
fetchPolicy: "no-cache",
|
|
@@ -6448,7 +6451,7 @@ const ct = y`
|
|
|
6448
6451
|
}
|
|
6449
6452
|
return a;
|
|
6450
6453
|
}, gt = (g, A, e, t, a, n, s, i, o, r) => {
|
|
6451
|
-
const B = (
|
|
6454
|
+
const B = (S.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map()).get(g.id), l = {
|
|
6452
6455
|
baseCost: e,
|
|
6453
6456
|
designProductId: g.externalDesignProductId,
|
|
6454
6457
|
designProductVariantId: g.externalDesignProductVariantId,
|
|
@@ -6500,37 +6503,37 @@ const ct = y`
|
|
|
6500
6503
|
i
|
|
6501
6504
|
);
|
|
6502
6505
|
}, Bt = async (g, A, e, t, a, n, s, i, o, r) => {
|
|
6503
|
-
var
|
|
6506
|
+
var y;
|
|
6504
6507
|
await (async () => {
|
|
6505
|
-
var
|
|
6508
|
+
var N;
|
|
6506
6509
|
if (r !== void 0)
|
|
6507
6510
|
return r;
|
|
6508
6511
|
await g.outstandingRequestsPromise();
|
|
6509
|
-
const F = await
|
|
6512
|
+
const F = await x.getShadowGraphqlClient().query({
|
|
6510
6513
|
query: Ve,
|
|
6511
6514
|
variables: { ids: [a.id] },
|
|
6512
6515
|
fetchPolicy: "no-cache",
|
|
6513
6516
|
errorPolicy: "all"
|
|
6514
|
-
}),
|
|
6515
|
-
return F.errors ? (F.errors.forEach((
|
|
6516
|
-
F.errors && console.log("Server Error:",
|
|
6517
|
-
}), null) :
|
|
6517
|
+
}), R = (N = F.data) == null ? void 0 : N.transactions[0].workflowState;
|
|
6518
|
+
return F.errors ? (F.errors.forEach((L) => {
|
|
6519
|
+
F.errors && console.log("Server Error:", L.message);
|
|
6520
|
+
}), null) : R ?? null;
|
|
6518
6521
|
})() || (console.warn("State mismatch detected. Uploading known state explicitly"), console.warn("State Object:", JSON.stringify(t())), await g.updateStateWithServerImmediate(t), console.log("Server state is undefined @ Workflow completion"));
|
|
6519
|
-
const l = g.getPreviewService(), d = (
|
|
6522
|
+
const l = g.getPreviewService(), d = (y = A == null ? void 0 : A.finalizeStepConfig) == null ? void 0 : y.lookAtAnimation, E = l && A.showModelOnFinishStep && !!d, h = o && $A(o, A, !0), w = o && $A(o, A, !1), Q = async (Y) => {
|
|
6520
6523
|
const F = {};
|
|
6521
|
-
let
|
|
6524
|
+
let R = 0;
|
|
6522
6525
|
if (Object.keys(n).length > 0)
|
|
6523
|
-
for (const
|
|
6524
|
-
const
|
|
6525
|
-
for (let W = 0; W <
|
|
6526
|
-
const q =
|
|
6526
|
+
for (const N of Object.keys(n)) {
|
|
6527
|
+
const L = n[N], V = A.steps.find((W) => W.stepName === N);
|
|
6528
|
+
for (let W = 0; W < L.selections.length; ++W) {
|
|
6529
|
+
const q = L.selections[W];
|
|
6527
6530
|
if (V && (!Y || V.option && (V.option.variants || []).length > 1 && !V.data.hideSelectionInCart && !V.data.hideSelectionsInCart)) {
|
|
6528
|
-
const
|
|
6529
|
-
F[
|
|
6531
|
+
const JA = V.stepTitle;
|
|
6532
|
+
F[JA] ? F[JA].push({
|
|
6530
6533
|
id: q.id || "",
|
|
6531
6534
|
name: q.name,
|
|
6532
6535
|
priceModifier: q.priceModifier
|
|
6533
|
-
}) : F[
|
|
6536
|
+
}) : F[JA] = [
|
|
6534
6537
|
{
|
|
6535
6538
|
id: q.id || "",
|
|
6536
6539
|
name: q.name,
|
|
@@ -6538,18 +6541,18 @@ const ct = y`
|
|
|
6538
6541
|
}
|
|
6539
6542
|
];
|
|
6540
6543
|
}
|
|
6541
|
-
|
|
6544
|
+
R += q.priceModifier;
|
|
6542
6545
|
}
|
|
6543
6546
|
}
|
|
6544
|
-
return [F,
|
|
6545
|
-
}, [
|
|
6546
|
-
Object.keys(
|
|
6547
|
-
), [
|
|
6548
|
-
Object.keys(
|
|
6547
|
+
return [F, R];
|
|
6548
|
+
}, [C] = await Q(!0), u = Object.fromEntries(
|
|
6549
|
+
Object.keys(C).map((Y) => [Y, C[Y].map((F) => F.id)])
|
|
6550
|
+
), [D] = await Q(!1), p = Object.fromEntries(
|
|
6551
|
+
Object.keys(D).map((Y) => [
|
|
6549
6552
|
Y,
|
|
6550
|
-
|
|
6553
|
+
D[Y].map((F) => F.id)
|
|
6551
6554
|
])
|
|
6552
|
-
),
|
|
6555
|
+
), f = await i(E);
|
|
6553
6556
|
return {
|
|
6554
6557
|
designDetails: (() => {
|
|
6555
6558
|
const Y = {
|
|
@@ -6561,29 +6564,29 @@ const ct = y`
|
|
|
6561
6564
|
workflowId: A.id,
|
|
6562
6565
|
transactionId: a.id,
|
|
6563
6566
|
useThreeDimPreview: !!E,
|
|
6564
|
-
previewImage:
|
|
6567
|
+
previewImage: f
|
|
6565
6568
|
};
|
|
6566
6569
|
if (w) {
|
|
6567
6570
|
const F = [];
|
|
6568
|
-
for (const [
|
|
6569
|
-
F.push({ key:
|
|
6571
|
+
for (const [R, N] of Object.entries(w))
|
|
6572
|
+
F.push({ key: R, value: N });
|
|
6570
6573
|
Y.metadata = F;
|
|
6571
6574
|
}
|
|
6572
6575
|
if (u) {
|
|
6573
6576
|
const F = [];
|
|
6574
|
-
for (const [
|
|
6575
|
-
F.push({ key:
|
|
6577
|
+
for (const [R, N] of Object.entries(p))
|
|
6578
|
+
F.push({ key: R, ids: N });
|
|
6576
6579
|
Y.selectedVariants = F;
|
|
6577
6580
|
}
|
|
6578
6581
|
return Y;
|
|
6579
6582
|
})(),
|
|
6580
|
-
cartSelectionsWithPrices:
|
|
6581
|
-
cartMetadata:
|
|
6583
|
+
cartSelectionsWithPrices: C,
|
|
6584
|
+
cartMetadata: h
|
|
6582
6585
|
};
|
|
6583
6586
|
}, Bn = async (g, A, e, t, a, n, s, i, o, r, c, B, l) => {
|
|
6584
|
-
var u,
|
|
6587
|
+
var u, D, p;
|
|
6585
6588
|
o("workflow.steps.finish.finalize.buildingLayouts");
|
|
6586
|
-
const { designDetails: d, cartSelectionsWithPrices: E, cartMetadata:
|
|
6589
|
+
const { designDetails: d, cartSelectionsWithPrices: E, cartMetadata: h } = await Bt(
|
|
6587
6590
|
g,
|
|
6588
6591
|
A,
|
|
6589
6592
|
e,
|
|
@@ -6599,19 +6602,19 @@ const ct = y`
|
|
|
6599
6602
|
if (!(w != null && w.transaction))
|
|
6600
6603
|
throw new Error("Failed to create design");
|
|
6601
6604
|
o("workflow.steps.finish.finalize.updatingTransaction");
|
|
6602
|
-
const
|
|
6605
|
+
const C = w.transaction;
|
|
6603
6606
|
return n.bulk ? ln(
|
|
6604
|
-
|
|
6607
|
+
C,
|
|
6605
6608
|
a,
|
|
6606
6609
|
Q,
|
|
6607
|
-
(
|
|
6610
|
+
(D = w == null ? void 0 : w.processExecution) == null ? void 0 : D.id
|
|
6608
6611
|
) : await lt(
|
|
6609
|
-
|
|
6612
|
+
C,
|
|
6610
6613
|
a,
|
|
6611
6614
|
A,
|
|
6612
6615
|
E,
|
|
6613
6616
|
w == null ? void 0 : w.sku,
|
|
6614
|
-
|
|
6617
|
+
h,
|
|
6615
6618
|
Q,
|
|
6616
6619
|
(p = w == null ? void 0 : w.processExecution) == null ? void 0 : p.id
|
|
6617
6620
|
);
|
|
@@ -6623,7 +6626,7 @@ const ct = y`
|
|
|
6623
6626
|
);
|
|
6624
6627
|
const t = await (async () => {
|
|
6625
6628
|
var o;
|
|
6626
|
-
const i = await
|
|
6629
|
+
const i = await x.getShadowGraphqlClient().query({
|
|
6627
6630
|
query: Ve,
|
|
6628
6631
|
variables: { ids: g.map((r) => r.transaction.id) },
|
|
6629
6632
|
fetchPolicy: "no-cache",
|
|
@@ -6690,7 +6693,7 @@ class wn {
|
|
|
6690
6693
|
*/
|
|
6691
6694
|
async getSavedDesigns() {
|
|
6692
6695
|
if (this.storageMethod === "Local") {
|
|
6693
|
-
const A =
|
|
6696
|
+
const A = S.get(this.localPersistenceKey);
|
|
6694
6697
|
return A ? JSON.parse(A) : [];
|
|
6695
6698
|
}
|
|
6696
6699
|
throw new v("Unexpected storage method requested");
|
|
@@ -6730,7 +6733,7 @@ class wn {
|
|
|
6730
6733
|
}
|
|
6731
6734
|
async setDesigns(A) {
|
|
6732
6735
|
if (this.storageMethod === "Local") {
|
|
6733
|
-
|
|
6736
|
+
S.set(this.localPersistenceKey, JSON.stringify(A));
|
|
6734
6737
|
return;
|
|
6735
6738
|
}
|
|
6736
6739
|
throw new v("Unexpected storage method requested");
|
|
@@ -6805,7 +6808,7 @@ class CA {
|
|
|
6805
6808
|
return this.workflowManager;
|
|
6806
6809
|
}
|
|
6807
6810
|
async updateVariationRecords(A) {
|
|
6808
|
-
await
|
|
6811
|
+
await x.getShadowGraphqlClient().mutate({
|
|
6809
6812
|
mutation: da,
|
|
6810
6813
|
variables: {
|
|
6811
6814
|
transactionId: this.workflowManager.getTransaction().id,
|
|
@@ -6821,8 +6824,8 @@ class CA {
|
|
|
6821
6824
|
});
|
|
6822
6825
|
}
|
|
6823
6826
|
async createPreviewImage(A, e) {
|
|
6824
|
-
var
|
|
6825
|
-
const t = this.workflowManager.getWorkflow(), a = (
|
|
6827
|
+
var C, u;
|
|
6828
|
+
const t = this.workflowManager.getWorkflow(), a = (C = t == null ? void 0 : t.finalizeStepConfig) == null ? void 0 : C.lookAtAnimation;
|
|
6826
6829
|
if (A) {
|
|
6827
6830
|
if (!a)
|
|
6828
6831
|
throw new Error("Failed to generate cart preview image!");
|
|
@@ -6830,9 +6833,9 @@ class CA {
|
|
|
6830
6833
|
}
|
|
6831
6834
|
let n = 2048;
|
|
6832
6835
|
e && e <= 2048 && (n = e);
|
|
6833
|
-
const s = yA(n, n), i = this.commandContext.getAllLayouts(), o = t.defaultPreviewPanelIndex || 0, r = t.panels[o], c = i.find((
|
|
6836
|
+
const s = yA(n, n), i = this.commandContext.getAllLayouts(), o = t.defaultPreviewPanelIndex || 0, r = t.panels[o], c = i.find((D) => {
|
|
6834
6837
|
var p;
|
|
6835
|
-
return ((p =
|
|
6838
|
+
return ((p = D.layoutState) == null ? void 0 : p.layout.panelId) === (r == null ? void 0 : r.name);
|
|
6836
6839
|
}) || i[0], B = c.layoutState.layout.previewRegion ? {
|
|
6837
6840
|
x: c.layoutState.layout.previewRegion.left,
|
|
6838
6841
|
y: c.layoutState.layout.previewRegion.top,
|
|
@@ -6851,8 +6854,8 @@ class CA {
|
|
|
6851
6854
|
purpose: Se.Print,
|
|
6852
6855
|
region: { left: B.x, top: B.y, width: B.width, height: B.height }
|
|
6853
6856
|
}
|
|
6854
|
-
}),
|
|
6855
|
-
await (await Ge.from(d,
|
|
6857
|
+
}), h = xe(E);
|
|
6858
|
+
await (await Ge.from(d, h, {
|
|
6856
6859
|
anonymousCrossOrigin: !0,
|
|
6857
6860
|
ignoreDimensions: !1,
|
|
6858
6861
|
createCanvas: yA,
|
|
@@ -6928,7 +6931,7 @@ class CA {
|
|
|
6928
6931
|
}
|
|
6929
6932
|
async assignCustomerDetails(A) {
|
|
6930
6933
|
var a, n, s;
|
|
6931
|
-
const t = (s = (n = (a = (await
|
|
6934
|
+
const t = (s = (n = (a = (await x.getShadowGraphqlClient().mutate({
|
|
6932
6935
|
mutation: rt,
|
|
6933
6936
|
variables: {
|
|
6934
6937
|
id: this.getWorkflowManager().getTransaction().id,
|
|
@@ -6943,8 +6946,8 @@ class CA {
|
|
|
6943
6946
|
);
|
|
6944
6947
|
if (t != null && t.customer) {
|
|
6945
6948
|
this.getWorkflowManager().setTransactionCustomer(t.customer);
|
|
6946
|
-
const i =
|
|
6947
|
-
i.set(this.getWorkflowManager().getTransaction().id, t.customer.id),
|
|
6949
|
+
const i = S.getMap("transactionCustomerIds") || /* @__PURE__ */ new Map();
|
|
6950
|
+
i.set(this.getWorkflowManager().getTransaction().id, t.customer.id), S.setMap("transactionCustomerIds", i);
|
|
6948
6951
|
}
|
|
6949
6952
|
}
|
|
6950
6953
|
attachRenderableSceneListener(A) {
|
|
@@ -7043,16 +7046,16 @@ const En = [
|
|
|
7043
7046
|
], hn = async (g, A, e) => {
|
|
7044
7047
|
const t = A.data, a = e.data.baseUrl, n = t.assetUrl.replace("localhost", "localstack"), s = a.slice(0, 4) === "http" ? "" : "https://", i = new URL(s + a);
|
|
7045
7048
|
i.searchParams.append("video", he(JSON.stringify([{ href: n }]))), i.pathname = i.pathname + (i.pathname.slice(-1) === "/" ? "" : "/");
|
|
7046
|
-
const o = i.toString(), c = `data:image/svg+xml;base64,${he(await
|
|
7049
|
+
const o = i.toString(), c = `data:image/svg+xml;base64,${he(await Je(o, { type: "svg" }))}`, B = (d) => {
|
|
7047
7050
|
const E = g.find((w) => w.panelId === d.panelId);
|
|
7048
7051
|
if (!E)
|
|
7049
|
-
throw new
|
|
7050
|
-
const
|
|
7052
|
+
throw new T(d);
|
|
7053
|
+
const h = k();
|
|
7051
7054
|
return new J(
|
|
7052
7055
|
{
|
|
7053
|
-
id:
|
|
7056
|
+
id: h,
|
|
7054
7057
|
src: c,
|
|
7055
|
-
type:
|
|
7058
|
+
type: U.Image,
|
|
7056
7059
|
y: d.top,
|
|
7057
7060
|
x: d.left,
|
|
7058
7061
|
width: d.width,
|
|
@@ -7073,16 +7076,16 @@ const En = [
|
|
|
7073
7076
|
const i = Rt(a, t.option);
|
|
7074
7077
|
i && (A[t.stepName] = { selectedVariants: [i] });
|
|
7075
7078
|
const o = async (r) => {
|
|
7076
|
-
var
|
|
7079
|
+
var h;
|
|
7077
7080
|
const c = await Pt(
|
|
7078
7081
|
r || {
|
|
7079
7082
|
width: 1,
|
|
7080
7083
|
height: 1
|
|
7081
7084
|
},
|
|
7082
|
-
(
|
|
7085
|
+
(h = i == null ? void 0 : i.asset) == null ? void 0 : h.fileLink
|
|
7083
7086
|
), B = await Ae(c), l = k(), d = g.find((w) => w.panelId === r.panelId);
|
|
7084
7087
|
if (!d)
|
|
7085
|
-
throw new
|
|
7088
|
+
throw new T(r);
|
|
7086
7089
|
const E = ee(s, B, {
|
|
7087
7090
|
scale: a.scale,
|
|
7088
7091
|
left: a.x,
|
|
@@ -7095,7 +7098,7 @@ const En = [
|
|
|
7095
7098
|
path: B.path,
|
|
7096
7099
|
dataWidth: B.width,
|
|
7097
7100
|
dataHeight: B.height,
|
|
7098
|
-
type:
|
|
7101
|
+
type: U.Frame,
|
|
7099
7102
|
focalBlur: t.data.focalBlur,
|
|
7100
7103
|
focalBlurStrength: t.data.focalBlurStrength,
|
|
7101
7104
|
focalBlurRadius: t.data.focalBlurRadius,
|
|
@@ -7121,7 +7124,7 @@ const En = [
|
|
|
7121
7124
|
return console.error(i), [];
|
|
7122
7125
|
}
|
|
7123
7126
|
}, Qn = async (g, A, e, t) => {
|
|
7124
|
-
var p,
|
|
7127
|
+
var p, f;
|
|
7125
7128
|
const a = e.data, n = t.option;
|
|
7126
7129
|
if (!n)
|
|
7127
7130
|
return console.error(`No option for step ${t.stepName}.`), [];
|
|
@@ -7131,47 +7134,47 @@ const En = [
|
|
|
7131
7134
|
if (!s.asset)
|
|
7132
7135
|
return console.error(`No asset for variant with ID: ${a.illustrationVariantId}`), [];
|
|
7133
7136
|
A[t.stepName] = { selectedVariants: [s] };
|
|
7134
|
-
const i = (
|
|
7137
|
+
const i = (f = s.asset) == null ? void 0 : f.fileLink;
|
|
7135
7138
|
if (!i)
|
|
7136
7139
|
return console.error(`No asset link for variant with ID: ${a.illustrationVariantId}`), [];
|
|
7137
7140
|
const o = await Z(i, !0), r = /<svg.*?<\/svg>/s, c = o.match(r) || [], B = (c == null ? void 0 : c.length) > 0 ? c[0] : "", E = Pe().parseFromString(B, "image/svg+xml").firstElementChild;
|
|
7138
7141
|
if (!E)
|
|
7139
7142
|
return console.error("Failed to read SVG."), [];
|
|
7140
7143
|
He(E);
|
|
7141
|
-
const
|
|
7144
|
+
const h = {};
|
|
7142
7145
|
Ht(E, (m) => {
|
|
7143
7146
|
En.includes(m.tagName) && !m.attributes.getNamedItem("fill") && m.setAttribute("fill", "#000000");
|
|
7144
|
-
const
|
|
7145
|
-
if (
|
|
7146
|
-
const F =
|
|
7147
|
-
m.classList.add(
|
|
7147
|
+
const y = m.attributes.getNamedItem("fill");
|
|
7148
|
+
if (y && y.value !== "none") {
|
|
7149
|
+
const F = y.value, N = `spiff-fill-${F.replace(/\W/g, "")}`;
|
|
7150
|
+
m.classList.add(N), h[N] = { browserValue: F };
|
|
7148
7151
|
}
|
|
7149
7152
|
const Y = m.attributes.getNamedItem("stroke");
|
|
7150
7153
|
if (Y && Y.value !== "none") {
|
|
7151
|
-
const F = Y.value,
|
|
7152
|
-
m.classList.add(
|
|
7154
|
+
const F = Y.value, N = `spiff-stroke-${F.replace(/\W/g, "")}`;
|
|
7155
|
+
m.classList.add(N), h[N] = { browserValue: F };
|
|
7153
7156
|
}
|
|
7154
7157
|
});
|
|
7155
|
-
const Q = Ue().serializeToString(E),
|
|
7156
|
-
if (
|
|
7157
|
-
for (const [m,
|
|
7158
|
-
for (const Y of Object.keys(
|
|
7159
|
-
if (
|
|
7160
|
-
|
|
7158
|
+
const Q = Ue().serializeToString(E), C = a.colors;
|
|
7159
|
+
if (C) {
|
|
7160
|
+
for (const [m, y] of Object.entries(h))
|
|
7161
|
+
for (const Y of Object.keys(C))
|
|
7162
|
+
if (y.browserValue === Y) {
|
|
7163
|
+
h[m] = { browserValue: C[Y] };
|
|
7161
7164
|
break;
|
|
7162
7165
|
}
|
|
7163
7166
|
}
|
|
7164
7167
|
const u = (m) => {
|
|
7165
|
-
const
|
|
7166
|
-
if (!
|
|
7167
|
-
throw new
|
|
7168
|
+
const y = g.find((F) => F.panelId === m.panelId);
|
|
7169
|
+
if (!y)
|
|
7170
|
+
throw new T(m);
|
|
7168
7171
|
const Y = k();
|
|
7169
7172
|
return new J(
|
|
7170
7173
|
{
|
|
7171
|
-
colors:
|
|
7174
|
+
colors: h,
|
|
7172
7175
|
id: Y,
|
|
7173
7176
|
svg: Q,
|
|
7174
|
-
type:
|
|
7177
|
+
type: U.Illustration,
|
|
7175
7178
|
y: m.top,
|
|
7176
7179
|
x: m.left,
|
|
7177
7180
|
rotation: m.rotation,
|
|
@@ -7181,11 +7184,11 @@ const En = [
|
|
|
7181
7184
|
layerIndex: m.layerIndex,
|
|
7182
7185
|
immutable: m.immutable
|
|
7183
7186
|
},
|
|
7184
|
-
|
|
7187
|
+
y
|
|
7185
7188
|
);
|
|
7186
|
-
},
|
|
7189
|
+
}, D = t.data.regions;
|
|
7187
7190
|
try {
|
|
7188
|
-
return
|
|
7191
|
+
return D.map(u);
|
|
7189
7192
|
} catch (m) {
|
|
7190
7193
|
return console.error(m), [];
|
|
7191
7194
|
}
|
|
@@ -7193,14 +7196,14 @@ const En = [
|
|
|
7193
7196
|
const t = await it(e.data.module), a = A.data, n = (i, o) => {
|
|
7194
7197
|
const r = g.find((B) => B.panelId === o.panelId);
|
|
7195
7198
|
if (!r)
|
|
7196
|
-
throw new
|
|
7199
|
+
throw new T(o);
|
|
7197
7200
|
const c = k();
|
|
7198
7201
|
return new J(
|
|
7199
7202
|
{
|
|
7200
7203
|
colors: {},
|
|
7201
7204
|
id: c,
|
|
7202
7205
|
svg: i,
|
|
7203
|
-
type:
|
|
7206
|
+
type: U.Illustration,
|
|
7204
7207
|
y: o.top,
|
|
7205
7208
|
x: o.left,
|
|
7206
7209
|
rotation: o.rotation,
|
|
@@ -7234,15 +7237,15 @@ const En = [
|
|
|
7234
7237
|
if (!i)
|
|
7235
7238
|
return console.error(`No asset link for variant with ID: ${a.pictureVariantId}`), [];
|
|
7236
7239
|
const o = (l) => {
|
|
7237
|
-
const d = g.find((
|
|
7240
|
+
const d = g.find((h) => h.panelId === l.panelId);
|
|
7238
7241
|
if (!d)
|
|
7239
|
-
throw new
|
|
7242
|
+
throw new T(l);
|
|
7240
7243
|
const E = k();
|
|
7241
7244
|
return new J(
|
|
7242
7245
|
{
|
|
7243
7246
|
id: E,
|
|
7244
7247
|
src: i,
|
|
7245
|
-
type:
|
|
7248
|
+
type: U.Image,
|
|
7246
7249
|
y: l.top,
|
|
7247
7250
|
x: l.left,
|
|
7248
7251
|
rotation: l.rotation,
|
|
@@ -7273,7 +7276,7 @@ const En = [
|
|
|
7273
7276
|
const i = (c) => {
|
|
7274
7277
|
const B = g.find((w) => w.panelId === c.panelId);
|
|
7275
7278
|
if (!B)
|
|
7276
|
-
throw new
|
|
7279
|
+
throw new T(c);
|
|
7277
7280
|
const l = `
|
|
7278
7281
|
<svg
|
|
7279
7282
|
xmlns="http://www.w3.org/2000/svg"
|
|
@@ -7294,13 +7297,13 @@ const En = [
|
|
|
7294
7297
|
fill="${s == null ? void 0 : s.color}"
|
|
7295
7298
|
/>
|
|
7296
7299
|
</svg>
|
|
7297
|
-
`, E = { "spiff-fill-shape": { browserValue: s.color || "#000000" } },
|
|
7300
|
+
`, E = { "spiff-fill-shape": { browserValue: s.color || "#000000" } }, h = k();
|
|
7298
7301
|
return new J(
|
|
7299
7302
|
{
|
|
7300
7303
|
colors: E,
|
|
7301
|
-
id:
|
|
7304
|
+
id: h,
|
|
7302
7305
|
svg: l,
|
|
7303
|
-
type:
|
|
7306
|
+
type: U.Illustration,
|
|
7304
7307
|
y: c.top,
|
|
7305
7308
|
x: c.left,
|
|
7306
7309
|
rotation: c.rotation,
|
|
@@ -7322,13 +7325,13 @@ const En = [
|
|
|
7322
7325
|
const t = [], n = (() => {
|
|
7323
7326
|
var r, c;
|
|
7324
7327
|
return A.type === I.ProductOverlay ? e || ((r = A.data.asset) == null ? void 0 : r.fileLink) || "" : ((c = A.data.asset) == null ? void 0 : c.fileLink) || "";
|
|
7325
|
-
})(), i = (() => n.endsWith(".jpeg") || n.endsWith(".jpg") || n.endsWith(".png") ?
|
|
7328
|
+
})(), i = (() => n.endsWith(".jpeg") || n.endsWith(".jpg") || n.endsWith(".png") ? U.Image : n.endsWith(".svg") ? U.Illustration : U.Illustration)(), o = A.data.regions;
|
|
7326
7329
|
if (i === "image")
|
|
7327
7330
|
try {
|
|
7328
7331
|
o.forEach((r) => {
|
|
7329
7332
|
const c = g.find((l) => l.panelId === r.panelId);
|
|
7330
7333
|
if (!c)
|
|
7331
|
-
throw new
|
|
7334
|
+
throw new T(r);
|
|
7332
7335
|
const B = {
|
|
7333
7336
|
id: k(),
|
|
7334
7337
|
src: n,
|
|
@@ -7361,7 +7364,7 @@ const En = [
|
|
|
7361
7364
|
o.forEach((B) => {
|
|
7362
7365
|
const l = g.find((E) => E.panelId === B.panelId);
|
|
7363
7366
|
if (!l)
|
|
7364
|
-
throw new
|
|
7367
|
+
throw new T(B);
|
|
7365
7368
|
const d = {
|
|
7366
7369
|
id: k(),
|
|
7367
7370
|
src: n,
|
|
@@ -7391,13 +7394,13 @@ const En = [
|
|
|
7391
7394
|
const w = t.option;
|
|
7392
7395
|
if (!w)
|
|
7393
7396
|
return;
|
|
7394
|
-
const Q = ((u = w.variants) == null ? void 0 : u.find((
|
|
7397
|
+
const Q = ((u = w.variants) == null ? void 0 : u.find((D) => D.id === n.fontVariantId)) || UA(w);
|
|
7395
7398
|
if (!Q || !Q.asset)
|
|
7396
7399
|
return;
|
|
7397
7400
|
A[t.stepName] = { selectedVariants: [Q] };
|
|
7398
|
-
const
|
|
7399
|
-
if (
|
|
7400
|
-
return
|
|
7401
|
+
const C = Q.asset.fileLink;
|
|
7402
|
+
if (C)
|
|
7403
|
+
return C;
|
|
7401
7404
|
}, c = await (async () => {
|
|
7402
7405
|
const w = o();
|
|
7403
7406
|
if (!w)
|
|
@@ -7414,14 +7417,14 @@ const En = [
|
|
|
7414
7417
|
const Q = w.colorOption;
|
|
7415
7418
|
if (!Q)
|
|
7416
7419
|
return;
|
|
7417
|
-
const
|
|
7418
|
-
return
|
|
7419
|
-
}, E = n.color || await d(t.data),
|
|
7420
|
-
for (const w of
|
|
7420
|
+
const C = z.getDefaultVariant(Q);
|
|
7421
|
+
return C == null ? void 0 : C.color;
|
|
7422
|
+
}, E = n.color || await d(t.data), h = t.data.regions;
|
|
7423
|
+
for (const w of h) {
|
|
7421
7424
|
const Q = g.find((u) => u.panelId === w.panelId);
|
|
7422
7425
|
if (!Q)
|
|
7423
7426
|
continue;
|
|
7424
|
-
const
|
|
7427
|
+
const C = {
|
|
7425
7428
|
stepName: e.name,
|
|
7426
7429
|
id: k(),
|
|
7427
7430
|
align: i(t.data),
|
|
@@ -7435,7 +7438,7 @@ const En = [
|
|
|
7435
7438
|
paths: t.data.paths,
|
|
7436
7439
|
rotation: w.rotation,
|
|
7437
7440
|
text: l,
|
|
7438
|
-
type:
|
|
7441
|
+
type: U.Textbox,
|
|
7439
7442
|
vertical: t.data.vertical,
|
|
7440
7443
|
verticalAlign: t.data.verticalAlign || "middle",
|
|
7441
7444
|
width: w.width,
|
|
@@ -7443,7 +7446,7 @@ const En = [
|
|
|
7443
7446
|
y: w.top
|
|
7444
7447
|
};
|
|
7445
7448
|
if (c) {
|
|
7446
|
-
const [u,
|
|
7449
|
+
const [u, D] = IA(
|
|
7447
7450
|
t.data.size || s,
|
|
7448
7451
|
c,
|
|
7449
7452
|
w,
|
|
@@ -7462,16 +7465,16 @@ const En = [
|
|
|
7462
7465
|
a.push(
|
|
7463
7466
|
new J(
|
|
7464
7467
|
{
|
|
7465
|
-
...
|
|
7468
|
+
...C,
|
|
7466
7469
|
fontSize: u,
|
|
7467
|
-
text:
|
|
7470
|
+
text: C.curved ? C.text : (D || []).join(`
|
|
7468
7471
|
`)
|
|
7469
7472
|
},
|
|
7470
7473
|
Q
|
|
7471
7474
|
)
|
|
7472
7475
|
);
|
|
7473
7476
|
} else
|
|
7474
|
-
a.push(new J(
|
|
7477
|
+
a.push(new J(C, Q));
|
|
7475
7478
|
}
|
|
7476
7479
|
return a;
|
|
7477
7480
|
}, fn = (g, A) => g.conditions ? g.conditions.every((e) => {
|
|
@@ -7675,19 +7678,19 @@ class Yn extends Xe {
|
|
|
7675
7678
|
return;
|
|
7676
7679
|
const e = A.layoutState.elements || [];
|
|
7677
7680
|
if (this.variationRecord) {
|
|
7678
|
-
const l = this.variationRecord.values.map((
|
|
7679
|
-
stepName:
|
|
7680
|
-
stepAspectType:
|
|
7681
|
-
value:
|
|
7681
|
+
const l = this.variationRecord.values.map((h) => ({
|
|
7682
|
+
stepName: h.stepName,
|
|
7683
|
+
stepAspectType: h.aspect,
|
|
7684
|
+
value: h.value
|
|
7682
7685
|
})), d = await xn(
|
|
7683
7686
|
Sn(l, this.workflow),
|
|
7684
7687
|
this.workflow,
|
|
7685
|
-
this.layouts.map((
|
|
7688
|
+
this.layouts.map((h) => h.layoutState.layout),
|
|
7686
7689
|
this.productOverlayImageUrl
|
|
7687
7690
|
), E = d == null ? void 0 : d.layouts[A.layoutState.layout.id];
|
|
7688
|
-
((E == null ? void 0 : E.elements) || []).forEach((
|
|
7689
|
-
const w = e.find((Q) => Q.stepName ===
|
|
7690
|
-
w && w.type ===
|
|
7691
|
+
((E == null ? void 0 : E.elements) || []).forEach((h) => {
|
|
7692
|
+
const w = e.find((Q) => Q.stepName === h.stepName);
|
|
7693
|
+
w && w.type === U.Textbox ? (w.text = h.text, w.fontSize = h.fontSize) : e.push(h);
|
|
7691
7694
|
}), Gt(e);
|
|
7692
7695
|
}
|
|
7693
7696
|
const t = A.layoutState.layout.width, a = A.layoutState.layout.height, n = this.getDynamicTextureResolution().width, s = this.getDynamicTextureResolution().height;
|
|
@@ -7735,7 +7738,7 @@ const Sn = (g, A) => {
|
|
|
7735
7738
|
a = new G(e.map((o) => new Ut(o))).apply(a);
|
|
7736
7739
|
const s = await Fn(g, A, e, t);
|
|
7737
7740
|
return new G(s).apply(a);
|
|
7738
|
-
}, Nn =
|
|
7741
|
+
}, Nn = M`
|
|
7739
7742
|
fragment ProductFields on Product {
|
|
7740
7743
|
id
|
|
7741
7744
|
basePrice
|
|
@@ -7770,7 +7773,7 @@ const Sn = (g, A) => {
|
|
|
7770
7773
|
name
|
|
7771
7774
|
}
|
|
7772
7775
|
}
|
|
7773
|
-
`, Rn =
|
|
7776
|
+
`, Rn = M`
|
|
7774
7777
|
${Nn}
|
|
7775
7778
|
fragment ProductCollectionProductFields on ProductCollectionProduct {
|
|
7776
7779
|
id
|
|
@@ -7780,7 +7783,7 @@ const Sn = (g, A) => {
|
|
|
7780
7783
|
...ProductFields
|
|
7781
7784
|
}
|
|
7782
7785
|
}
|
|
7783
|
-
`, dt =
|
|
7786
|
+
`, dt = M`
|
|
7784
7787
|
${Rn}
|
|
7785
7788
|
fragment ProductCollectionFields on ProductCollection {
|
|
7786
7789
|
id
|
|
@@ -7827,7 +7830,7 @@ const Sn = (g, A) => {
|
|
|
7827
7830
|
}
|
|
7828
7831
|
}
|
|
7829
7832
|
}
|
|
7830
|
-
`, Pn =
|
|
7833
|
+
`, Pn = M`
|
|
7831
7834
|
${dt}
|
|
7832
7835
|
query GetBundle($id: String!) {
|
|
7833
7836
|
bundles(ids: [$id]) {
|
|
@@ -7849,7 +7852,7 @@ const Sn = (g, A) => {
|
|
|
7849
7852
|
}
|
|
7850
7853
|
}
|
|
7851
7854
|
}
|
|
7852
|
-
`, Hn =
|
|
7855
|
+
`, Hn = M`
|
|
7853
7856
|
query GetBundleStakeholders($id: String!) {
|
|
7854
7857
|
bundles(ids: [$id]) {
|
|
7855
7858
|
id
|
|
@@ -7869,7 +7872,7 @@ const Sn = (g, A) => {
|
|
|
7869
7872
|
}
|
|
7870
7873
|
}
|
|
7871
7874
|
}
|
|
7872
|
-
`, Un =
|
|
7875
|
+
`, Un = M`
|
|
7873
7876
|
query GetBundlesForCustomer($id: String!) {
|
|
7874
7877
|
customers(ids: [$id]) {
|
|
7875
7878
|
bundleStakeholders {
|
|
@@ -7890,7 +7893,7 @@ const Sn = (g, A) => {
|
|
|
7890
7893
|
}
|
|
7891
7894
|
}
|
|
7892
7895
|
}
|
|
7893
|
-
`, Gn =
|
|
7896
|
+
`, Gn = M`
|
|
7894
7897
|
${dt}
|
|
7895
7898
|
mutation CreateBundle($collectionId: String) {
|
|
7896
7899
|
bundleCreate(collectionId: $collectionId) {
|
|
@@ -7909,25 +7912,25 @@ const Sn = (g, A) => {
|
|
|
7909
7912
|
}
|
|
7910
7913
|
}
|
|
7911
7914
|
}
|
|
7912
|
-
`, vn =
|
|
7915
|
+
`, vn = M`
|
|
7913
7916
|
mutation UpdateBundle($id: String!, $name: String, $metadata: [MetadataInput!], $bundleStateData: String) {
|
|
7914
7917
|
bundleUpdate(id: $id, name: $name, metadata: $metadata, bundleStateData: $bundleStateData) {
|
|
7915
7918
|
id
|
|
7916
7919
|
}
|
|
7917
7920
|
}
|
|
7918
|
-
`, kn =
|
|
7921
|
+
`, kn = M`
|
|
7919
7922
|
mutation BundleAddTransaction($id: String!, $transactionId: String!) {
|
|
7920
7923
|
bundleAddTransaction(id: $id, transactionId: $transactionId) {
|
|
7921
7924
|
id
|
|
7922
7925
|
}
|
|
7923
7926
|
}
|
|
7924
|
-
`,
|
|
7927
|
+
`, Jn = M`
|
|
7925
7928
|
mutation BundleAddTransactions($id: String!, $transactionIds: [String!]!, $transactionOwnerIds: [String!]) {
|
|
7926
7929
|
bundleAddTransactions(id: $id, transactionIds: $transactionIds, transactionOwnerIds: $transactionOwnerIds) {
|
|
7927
7930
|
id
|
|
7928
7931
|
}
|
|
7929
7932
|
}
|
|
7930
|
-
`,
|
|
7933
|
+
`, bn = M`
|
|
7931
7934
|
mutation BundleRemoveTransaction(
|
|
7932
7935
|
$id: String!
|
|
7933
7936
|
$transactionId: String!
|
|
@@ -7942,7 +7945,7 @@ const Sn = (g, A) => {
|
|
|
7942
7945
|
id
|
|
7943
7946
|
}
|
|
7944
7947
|
}
|
|
7945
|
-
`, Tn =
|
|
7948
|
+
`, Tn = M`
|
|
7946
7949
|
mutation BundleRemoveTransactions(
|
|
7947
7950
|
$id: String!
|
|
7948
7951
|
$transactionIds: [String!]!
|
|
@@ -7957,7 +7960,7 @@ const Sn = (g, A) => {
|
|
|
7957
7960
|
id
|
|
7958
7961
|
}
|
|
7959
7962
|
}
|
|
7960
|
-
`, Ln =
|
|
7963
|
+
`, Ln = M`
|
|
7961
7964
|
mutation BundleAddStakeholder($id: String!, $details: CustomerDetailsInput!, $type: String!) {
|
|
7962
7965
|
bundleAddStakeholder(id: $id, details: $details, type: $type) {
|
|
7963
7966
|
id
|
|
@@ -7977,7 +7980,7 @@ const Sn = (g, A) => {
|
|
|
7977
7980
|
}
|
|
7978
7981
|
}
|
|
7979
7982
|
}
|
|
7980
|
-
`, On =
|
|
7983
|
+
`, On = M`
|
|
7981
7984
|
mutation BundleUpdateStakeholders($id: String!, $input: [BundleStakeholderInput!]!) {
|
|
7982
7985
|
bundleUpdateStakeholders(id: $id, input: $input) {
|
|
7983
7986
|
id
|
|
@@ -7997,7 +8000,7 @@ const Sn = (g, A) => {
|
|
|
7997
8000
|
}
|
|
7998
8001
|
}
|
|
7999
8002
|
}
|
|
8000
|
-
`, zn =
|
|
8003
|
+
`, zn = M`
|
|
8001
8004
|
mutation BundleUpdateTransactionOrder($id: String!, $transactionIds: [String!]!) {
|
|
8002
8005
|
bundleUpdateTransactionOrder(id: $id, transactionIds: $transactionIds) {
|
|
8003
8006
|
id
|
|
@@ -8129,7 +8132,7 @@ class jn extends ge {
|
|
|
8129
8132
|
const e = this.bundle.getGlobalPropertyStateManager().getAspect(this.property.name);
|
|
8130
8133
|
if (!e)
|
|
8131
8134
|
return Promise.resolve();
|
|
8132
|
-
const t = await
|
|
8135
|
+
const t = await b.getLocalOrFromServer(e);
|
|
8133
8136
|
return t ? this.applyImageSelection(t, A) : Promise.resolve();
|
|
8134
8137
|
}
|
|
8135
8138
|
async applyImageSelection(A, e) {
|
|
@@ -8249,7 +8252,7 @@ class Wn extends wt {
|
|
|
8249
8252
|
return this.getSharedSteps()[0].getCustomColor();
|
|
8250
8253
|
}
|
|
8251
8254
|
}
|
|
8252
|
-
const Xn =
|
|
8255
|
+
const Xn = M`
|
|
8253
8256
|
mutation CreateGlobalPropertyState($bundleId: String!) {
|
|
8254
8257
|
globalPropertyStateCreate(bundleId: $bundleId) {
|
|
8255
8258
|
id
|
|
@@ -8259,7 +8262,7 @@ const Xn = y`
|
|
|
8259
8262
|
}
|
|
8260
8263
|
}
|
|
8261
8264
|
}
|
|
8262
|
-
`, qn =
|
|
8265
|
+
`, qn = M`
|
|
8263
8266
|
mutation UpdateGlobalPropertyState($id: String!, $aspects: [GlobalPropertyStateAspectInput]!) {
|
|
8264
8267
|
globalPropertyStateUpdate(id: $id, aspects: $aspects) {
|
|
8265
8268
|
id
|
|
@@ -8269,7 +8272,7 @@ const Xn = y`
|
|
|
8269
8272
|
}
|
|
8270
8273
|
}
|
|
8271
8274
|
}
|
|
8272
|
-
`, Zn =
|
|
8275
|
+
`, Zn = M`
|
|
8273
8276
|
query GetGlobalPropertyState($bundleId: String!) {
|
|
8274
8277
|
globalPropertyState(bundleId: $bundleId) {
|
|
8275
8278
|
id
|
|
@@ -8309,7 +8312,7 @@ class $n {
|
|
|
8309
8312
|
var e;
|
|
8310
8313
|
if (!this.globalPropertyState)
|
|
8311
8314
|
throw new Error("Global property state not initialized");
|
|
8312
|
-
const A = await
|
|
8315
|
+
const A = await x.getShadowGraphqlClient().mutate({
|
|
8313
8316
|
mutation: qn,
|
|
8314
8317
|
variables: {
|
|
8315
8318
|
id: this.globalPropertyState.id,
|
|
@@ -8323,7 +8326,7 @@ class $n {
|
|
|
8323
8326
|
}
|
|
8324
8327
|
async getOrCreateGlobalPropertyState() {
|
|
8325
8328
|
var t;
|
|
8326
|
-
const A = await
|
|
8329
|
+
const A = await x.getShadowGraphqlClient().query({
|
|
8327
8330
|
query: Zn,
|
|
8328
8331
|
errorPolicy: "all",
|
|
8329
8332
|
fetchPolicy: "no-cache",
|
|
@@ -8333,7 +8336,7 @@ class $n {
|
|
|
8333
8336
|
});
|
|
8334
8337
|
if (A.data.globalPropertyState && A.data.globalPropertyState.id)
|
|
8335
8338
|
return A.data.globalPropertyState;
|
|
8336
|
-
const e = await
|
|
8339
|
+
const e = await x.getShadowGraphqlClient().mutate({
|
|
8337
8340
|
mutation: Xn,
|
|
8338
8341
|
variables: {
|
|
8339
8342
|
bundleId: this.bundleId
|
|
@@ -8489,7 +8492,7 @@ class es {
|
|
|
8489
8492
|
getDefaultWorkflow() {
|
|
8490
8493
|
const A = this.product.workflows || [];
|
|
8491
8494
|
if (A.length === 0)
|
|
8492
|
-
throw new
|
|
8495
|
+
throw new H(
|
|
8493
8496
|
"No workflows found on product. This is generally due to a configuration error. Please confirm at least one workflow is configured for this product."
|
|
8494
8497
|
);
|
|
8495
8498
|
const e = this.productResource.workflowId;
|
|
@@ -8667,9 +8670,9 @@ class fe {
|
|
|
8667
8670
|
throw new Error(
|
|
8668
8671
|
"Unable to add transaction to bundle - Already Exists: " + t.filter((s) => !!s).map((s) => s == null ? void 0 : s.getWorkflowManager().getTransaction().id).join(", ")
|
|
8669
8672
|
);
|
|
8670
|
-
const a =
|
|
8671
|
-
await
|
|
8672
|
-
mutation:
|
|
8673
|
+
const a = S.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map(), n = e.map((s) => a.get(s));
|
|
8674
|
+
await x.getShadowGraphqlClient().mutate({
|
|
8675
|
+
mutation: Jn,
|
|
8673
8676
|
variables: {
|
|
8674
8677
|
id: this.id,
|
|
8675
8678
|
transactionIds: e,
|
|
@@ -8693,8 +8696,8 @@ class fe {
|
|
|
8693
8696
|
(i) => i.getWorkflowManager().getTransaction().id === t
|
|
8694
8697
|
))
|
|
8695
8698
|
throw new Error("Unable to add transaction to bundle - Already Exists!");
|
|
8696
|
-
const s = (
|
|
8697
|
-
await
|
|
8699
|
+
const s = (S.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map()).get(t);
|
|
8700
|
+
await x.getShadowGraphqlClient().mutate({
|
|
8698
8701
|
mutation: kn,
|
|
8699
8702
|
variables: {
|
|
8700
8703
|
id: this.id,
|
|
@@ -8726,8 +8729,8 @@ class fe {
|
|
|
8726
8729
|
const a = this.workflowExperiences.find(
|
|
8727
8730
|
(n) => n.getWorkflowManager().getTransaction().id === e.id
|
|
8728
8731
|
);
|
|
8729
|
-
this.previewService && a.getWorkflowManager().ejectFromPreviewService(), this.bundleStateManager.removeStateForTransaction(e.id), await
|
|
8730
|
-
mutation:
|
|
8732
|
+
this.previewService && a.getWorkflowManager().ejectFromPreviewService(), this.bundleStateManager.removeStateForTransaction(e.id), await x.getShadowGraphqlClient().mutate({
|
|
8733
|
+
mutation: bn,
|
|
8731
8734
|
variables: {
|
|
8732
8735
|
id: this.id,
|
|
8733
8736
|
transactionId: e.id,
|
|
@@ -8753,7 +8756,7 @@ class fe {
|
|
|
8753
8756
|
1
|
|
8754
8757
|
)[0]
|
|
8755
8758
|
);
|
|
8756
|
-
this.previewService && t.forEach((a) => a.getWorkflowManager().ejectFromPreviewService()), A.forEach((a) => this.bundleStateManager.removeStateForTransaction(a.id)), await
|
|
8759
|
+
this.previewService && t.forEach((a) => a.getWorkflowManager().ejectFromPreviewService()), A.forEach((a) => this.bundleStateManager.removeStateForTransaction(a.id)), await x.getShadowGraphqlClient().mutate({
|
|
8757
8760
|
mutation: Tn,
|
|
8758
8761
|
variables: {
|
|
8759
8762
|
id: this.id,
|
|
@@ -8811,7 +8814,7 @@ class fe {
|
|
|
8811
8814
|
}
|
|
8812
8815
|
async addStakeholder(A, e) {
|
|
8813
8816
|
var n;
|
|
8814
|
-
const t = await
|
|
8817
|
+
const t = await x.getShadowGraphqlClient().mutate({
|
|
8815
8818
|
mutation: Ln,
|
|
8816
8819
|
variables: {
|
|
8817
8820
|
id: this.id,
|
|
@@ -8826,7 +8829,7 @@ class fe {
|
|
|
8826
8829
|
}
|
|
8827
8830
|
async updateStakeholders(A) {
|
|
8828
8831
|
var a;
|
|
8829
|
-
const e = await
|
|
8832
|
+
const e = await x.getShadowGraphqlClient().mutate({
|
|
8830
8833
|
mutation: On,
|
|
8831
8834
|
variables: {
|
|
8832
8835
|
id: this.id,
|
|
@@ -8839,7 +8842,7 @@ class fe {
|
|
|
8839
8842
|
this.storeStakeholderCustomers(t);
|
|
8840
8843
|
}
|
|
8841
8844
|
async getAllStakeholders() {
|
|
8842
|
-
const A = await
|
|
8845
|
+
const A = await x.getShadowGraphqlClient().query({
|
|
8843
8846
|
query: Hn,
|
|
8844
8847
|
errorPolicy: "all",
|
|
8845
8848
|
variables: {
|
|
@@ -8927,7 +8930,7 @@ class fe {
|
|
|
8927
8930
|
}
|
|
8928
8931
|
async updateBundle() {
|
|
8929
8932
|
var e;
|
|
8930
|
-
if (!((e = (await
|
|
8933
|
+
if (!((e = (await x.getShadowGraphqlClient().mutate({
|
|
8931
8934
|
mutation: vn,
|
|
8932
8935
|
variables: {
|
|
8933
8936
|
id: this.id,
|
|
@@ -8939,7 +8942,7 @@ class fe {
|
|
|
8939
8942
|
throw new Error("Bundle not found!");
|
|
8940
8943
|
}
|
|
8941
8944
|
async updateTransactionOrder() {
|
|
8942
|
-
await
|
|
8945
|
+
await x.getShadowGraphqlClient().mutate({
|
|
8943
8946
|
mutation: zn,
|
|
8944
8947
|
variables: {
|
|
8945
8948
|
id: this.id,
|
|
@@ -8970,7 +8973,7 @@ class fe {
|
|
|
8970
8973
|
);
|
|
8971
8974
|
}
|
|
8972
8975
|
}
|
|
8973
|
-
const ns =
|
|
8976
|
+
const ns = M`
|
|
8974
8977
|
mutation processFlowCreate($processFlowId: String!, $inputs: [String]!) {
|
|
8975
8978
|
processExecutionCreate(processFlowId: $processFlowId, inputs: $inputs) {
|
|
8976
8979
|
id
|
|
@@ -8987,7 +8990,7 @@ class ss {
|
|
|
8987
8990
|
*/
|
|
8988
8991
|
async execute(A, e, t) {
|
|
8989
8992
|
var B, l, d;
|
|
8990
|
-
const n = (l = (B = (await
|
|
8993
|
+
const n = (l = (B = (await x.getShadowGraphqlClient().mutate({
|
|
8991
8994
|
mutation: ns,
|
|
8992
8995
|
variables: {
|
|
8993
8996
|
processFlowId: A,
|
|
@@ -8997,14 +9000,14 @@ class ss {
|
|
|
8997
9000
|
if (!n)
|
|
8998
9001
|
throw new Error("Failed to create process execution.");
|
|
8999
9002
|
function s(E) {
|
|
9000
|
-
return new Promise((
|
|
9001
|
-
setTimeout(
|
|
9003
|
+
return new Promise((h) => {
|
|
9004
|
+
setTimeout(h, E);
|
|
9002
9005
|
});
|
|
9003
9006
|
}
|
|
9004
9007
|
let i = !1, o = 0, r, c;
|
|
9005
9008
|
for (; !i; ) {
|
|
9006
|
-
r = await
|
|
9007
|
-
query:
|
|
9009
|
+
r = await x.getShadowGraphqlClient().query({
|
|
9010
|
+
query: M`
|
|
9008
9011
|
query getProcessFlowExecution($ids: [String]!) {
|
|
9009
9012
|
processExecutions(ids: $ids) {
|
|
9010
9013
|
id
|
|
@@ -9034,8 +9037,8 @@ class ss {
|
|
|
9034
9037
|
break;
|
|
9035
9038
|
}
|
|
9036
9039
|
o += 1;
|
|
9037
|
-
const
|
|
9038
|
-
if (o >=
|
|
9040
|
+
const h = t != null && t.repeats ? t == null ? void 0 : t.repeats : 5;
|
|
9041
|
+
if (o >= h)
|
|
9039
9042
|
throw new Error("Maximum wait time exceeded for execution result.");
|
|
9040
9043
|
await s(t != null && t.sleepTime ? Math.max(t.sleepTime, 500) : 2e3);
|
|
9041
9044
|
}
|
|
@@ -9140,7 +9143,7 @@ class Et extends os {
|
|
|
9140
9143
|
return A.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i);
|
|
9141
9144
|
}
|
|
9142
9145
|
}
|
|
9143
|
-
const cs =
|
|
9146
|
+
const cs = M`
|
|
9144
9147
|
fragment RegionFields on Region {
|
|
9145
9148
|
width
|
|
9146
9149
|
top
|
|
@@ -9158,7 +9161,7 @@ const cs = y`
|
|
|
9158
9161
|
height
|
|
9159
9162
|
}
|
|
9160
9163
|
}
|
|
9161
|
-
`, gs =
|
|
9164
|
+
`, gs = M`
|
|
9162
9165
|
fragment LookAtAnimationFields on LookAtAnimation {
|
|
9163
9166
|
latDeg
|
|
9164
9167
|
lonDeg
|
|
@@ -9169,7 +9172,7 @@ const cs = y`
|
|
|
9169
9172
|
z
|
|
9170
9173
|
}
|
|
9171
9174
|
}
|
|
9172
|
-
`, ls =
|
|
9175
|
+
`, ls = M`
|
|
9173
9176
|
fragment RenderingPipelineConfigurationFields on RenderingPipelineConfiguration {
|
|
9174
9177
|
antiAliasing {
|
|
9175
9178
|
samples
|
|
@@ -9253,14 +9256,14 @@ const cs = y`
|
|
|
9253
9256
|
weight
|
|
9254
9257
|
}
|
|
9255
9258
|
}
|
|
9256
|
-
`, Bs =
|
|
9259
|
+
`, Bs = M`
|
|
9257
9260
|
fragment ModelAnimationFields on ModelAnimation {
|
|
9258
9261
|
from
|
|
9259
9262
|
to
|
|
9260
9263
|
loop
|
|
9261
9264
|
name
|
|
9262
9265
|
}
|
|
9263
|
-
`, ds = (g) =>
|
|
9266
|
+
`, ds = (g) => M`
|
|
9264
9267
|
${kA(g)}
|
|
9265
9268
|
${se}
|
|
9266
9269
|
${je}
|
|
@@ -9291,6 +9294,8 @@ const cs = y`
|
|
|
9291
9294
|
emissiveGlowIntensity
|
|
9292
9295
|
enableAR
|
|
9293
9296
|
environmentFile
|
|
9297
|
+
environmentIntensity
|
|
9298
|
+
environmentRotationY
|
|
9294
9299
|
idleTimeBeforeRotation
|
|
9295
9300
|
lowerAlphaLimitDeg
|
|
9296
9301
|
lowerBetaLimitDeg
|
|
@@ -9362,7 +9367,6 @@ const cs = y`
|
|
|
9362
9367
|
stepTitle
|
|
9363
9368
|
helpText
|
|
9364
9369
|
mandatory
|
|
9365
|
-
silent
|
|
9366
9370
|
conditions {
|
|
9367
9371
|
requiredVariantSelections
|
|
9368
9372
|
targetStepName
|
|
@@ -9656,7 +9660,7 @@ const cs = y`
|
|
|
9656
9660
|
}
|
|
9657
9661
|
}
|
|
9658
9662
|
}
|
|
9659
|
-
`, ws =
|
|
9663
|
+
`, ws = M`
|
|
9660
9664
|
query GetTransactionForPartner($id: String!) {
|
|
9661
9665
|
transactions(ids: [$id]) {
|
|
9662
9666
|
id
|
|
@@ -9673,7 +9677,7 @@ const cs = y`
|
|
|
9673
9677
|
}
|
|
9674
9678
|
}
|
|
9675
9679
|
}
|
|
9676
|
-
`, Es =
|
|
9680
|
+
`, Es = M`
|
|
9677
9681
|
${kA(!1)}
|
|
9678
9682
|
query GetWorkflowForTheme($id: String!) {
|
|
9679
9683
|
workflow(id: $id) {
|
|
@@ -9695,7 +9699,7 @@ const cs = y`
|
|
|
9695
9699
|
}
|
|
9696
9700
|
}
|
|
9697
9701
|
}
|
|
9698
|
-
`, hs =
|
|
9702
|
+
`, hs = M`
|
|
9699
9703
|
query GetCustomer($emailAddress: String!) {
|
|
9700
9704
|
customer(emailAddress: $emailAddress) {
|
|
9701
9705
|
id
|
|
@@ -9705,7 +9709,7 @@ const cs = y`
|
|
|
9705
9709
|
}
|
|
9706
9710
|
}
|
|
9707
9711
|
}
|
|
9708
|
-
`, Cs =
|
|
9712
|
+
`, Cs = M`
|
|
9709
9713
|
mutation CustomerCreate($details: CustomerDetailsInput!) {
|
|
9710
9714
|
customerCreate(details: $details) {
|
|
9711
9715
|
id
|
|
@@ -9715,7 +9719,7 @@ const cs = y`
|
|
|
9715
9719
|
}
|
|
9716
9720
|
}
|
|
9717
9721
|
}
|
|
9718
|
-
`, Qs =
|
|
9722
|
+
`, Qs = M`
|
|
9719
9723
|
mutation CustomerAuthenticate($loginToken: String!) {
|
|
9720
9724
|
customerAuthenticate(loginToken: $loginToken) {
|
|
9721
9725
|
id
|
|
@@ -9742,11 +9746,11 @@ const cs = y`
|
|
|
9742
9746
|
}
|
|
9743
9747
|
}
|
|
9744
9748
|
}
|
|
9745
|
-
`, us =
|
|
9749
|
+
`, us = M`
|
|
9746
9750
|
mutation CustomerGenerateVerificationCode($emailAddress: String!) {
|
|
9747
9751
|
customerGenerateVerificationCode(emailAddress: $emailAddress)
|
|
9748
9752
|
}
|
|
9749
|
-
`, ms =
|
|
9753
|
+
`, ms = M`
|
|
9750
9754
|
mutation CustomerVerifyCode($emailAddress: String!, $verificationCode: String!) {
|
|
9751
9755
|
customerVerifyCode(emailAddress: $emailAddress, verificationCode: $verificationCode) {
|
|
9752
9756
|
id
|
|
@@ -9778,13 +9782,13 @@ const cs = y`
|
|
|
9778
9782
|
var A;
|
|
9779
9783
|
for (const e in g.layouts) {
|
|
9780
9784
|
const t = g.layouts[e].elements.filter(
|
|
9781
|
-
(n) => n.type ===
|
|
9785
|
+
(n) => n.type === U.Illustration
|
|
9782
9786
|
);
|
|
9783
9787
|
for (let n = 0; n < t.length; ++n) {
|
|
9784
9788
|
const s = t[n];
|
|
9785
9789
|
s.src && s.svg && (s.cachedObjectURL = await FA(s.svg));
|
|
9786
9790
|
}
|
|
9787
|
-
const a = g.layouts[e].elements.filter((n) => n.type ===
|
|
9791
|
+
const a = g.layouts[e].elements.filter((n) => n.type === U.Textbox);
|
|
9788
9792
|
for (let n = 0; n < a.length; ++n) {
|
|
9789
9793
|
const s = a[n];
|
|
9790
9794
|
(A = s.fontData) != null && A.assetUrl && await te(s.fontData.assetUrl);
|
|
@@ -9792,7 +9796,7 @@ const cs = y`
|
|
|
9792
9796
|
}
|
|
9793
9797
|
}, ps = async (g, A) => {
|
|
9794
9798
|
var a;
|
|
9795
|
-
const e = await
|
|
9799
|
+
const e = await x.getShadowGraphqlClient().query({
|
|
9796
9800
|
query: ds(((a = A == null ? void 0 : A.assets) == null ? void 0 : a.metadata) || !1),
|
|
9797
9801
|
errorPolicy: "all",
|
|
9798
9802
|
fetchPolicy: "no-cache",
|
|
@@ -9805,8 +9809,8 @@ const cs = y`
|
|
|
9805
9809
|
return t.forEach((n) => {
|
|
9806
9810
|
n.steps.forEach((s) => {
|
|
9807
9811
|
var i, o, r;
|
|
9808
|
-
delete s.data.__typename, (i = s.option) != null && i.id && ((o = s.option.defaultVariant) != null && o.asset &&
|
|
9809
|
-
c.asset &&
|
|
9812
|
+
delete s.data.__typename, (i = s.option) != null && i.id && ((o = s.option.defaultVariant) != null && o.asset && b.cacheAsset(s.option.defaultVariant.asset), s.option.colorProfile && b.cacheAsset(s.option.colorProfile), (r = s.option.variants) == null || r.forEach((c) => {
|
|
9813
|
+
c.asset && b.cacheAsset(c.asset), c.displayImage && b.cacheAsset(c.displayImage), c.thumbnail && b.cacheAsset(c.thumbnail), c.material && b.cacheMaterial(c.material);
|
|
9810
9814
|
}), BA.set({ id: s.option.id }, Promise.resolve(s.option)));
|
|
9811
9815
|
});
|
|
9812
9816
|
}), t;
|
|
@@ -9844,12 +9848,12 @@ class fs {
|
|
|
9844
9848
|
constructor(A) {
|
|
9845
9849
|
this.updateTransactionState = async (e) => {
|
|
9846
9850
|
try {
|
|
9847
|
-
return
|
|
9851
|
+
return x.getShadowGraphqlClient().mutate({
|
|
9848
9852
|
...e,
|
|
9849
9853
|
mutation: la
|
|
9850
9854
|
});
|
|
9851
9855
|
} catch (t) {
|
|
9852
|
-
throw console.error(t), new
|
|
9856
|
+
throw console.error(t), new H("Critical - Unable to synchronize workflow state with server.");
|
|
9853
9857
|
}
|
|
9854
9858
|
}, this.initialized = !1, this.options = A, this.options.applicationKey && Lt(this.options.applicationKey);
|
|
9855
9859
|
}
|
|
@@ -9858,7 +9862,7 @@ class fs {
|
|
|
9858
9862
|
* and the Spiff Commerce platform.
|
|
9859
9863
|
*/
|
|
9860
9864
|
getAssetManager() {
|
|
9861
|
-
return
|
|
9865
|
+
return b;
|
|
9862
9866
|
}
|
|
9863
9867
|
getCurrencyCode() {
|
|
9864
9868
|
if (this.currencyCode === void 0)
|
|
@@ -9878,14 +9882,14 @@ class fs {
|
|
|
9878
9882
|
*/
|
|
9879
9883
|
async authenticateBundleFromLocalStorage(A) {
|
|
9880
9884
|
var a, n;
|
|
9881
|
-
const e =
|
|
9885
|
+
const e = S.getMap("bundleOwnerIds");
|
|
9882
9886
|
if (e != null && e.has(A)) {
|
|
9883
9887
|
const s = e.get(A);
|
|
9884
9888
|
return TA(s), Promise.resolve({ success: !0, stakeholderType: NA.Owner });
|
|
9885
9889
|
}
|
|
9886
|
-
const t =
|
|
9890
|
+
const t = S.getMap("bundlePartnerIds") || /* @__PURE__ */ new Map();
|
|
9887
9891
|
if (t.has(A)) {
|
|
9888
|
-
const s = t.get(A), o = (
|
|
9892
|
+
const s = t.get(A), o = (S.getMap("partnerCustomerIds") || /* @__PURE__ */ new Map()).get(s);
|
|
9889
9893
|
if (o && await this.authenticateCustomerId(o)) {
|
|
9890
9894
|
const c = (n = (a = this.customer) == null ? void 0 : a.bundleStakeholders) == null ? void 0 : n.find(
|
|
9891
9895
|
(B) => {
|
|
@@ -9913,8 +9917,8 @@ class fs {
|
|
|
9913
9917
|
* @throws An error if the transaction is not found.
|
|
9914
9918
|
*/
|
|
9915
9919
|
async authenticateTransactionFromLocalStorage(A) {
|
|
9916
|
-
var c, B, l, d, E,
|
|
9917
|
-
const e =
|
|
9920
|
+
var c, B, l, d, E, h;
|
|
9921
|
+
const e = x.getShadowGraphqlClient(), t = await e.query({
|
|
9918
9922
|
query: ws,
|
|
9919
9923
|
errorPolicy: "all",
|
|
9920
9924
|
fetchPolicy: "no-cache",
|
|
@@ -9929,30 +9933,30 @@ class fs {
|
|
|
9929
9933
|
throw new Error(`Unable to read transaction: ${A}`);
|
|
9930
9934
|
if (a.isOrdered)
|
|
9931
9935
|
return Promise.resolve({ success: !1, transactionReadOnly: !0 });
|
|
9932
|
-
const s =
|
|
9936
|
+
const s = S.getMap("transactionOwnerIds");
|
|
9933
9937
|
if (s != null && s.has(A)) {
|
|
9934
9938
|
const w = s.get(A);
|
|
9935
9939
|
return eA(w), Promise.resolve({ success: !0, stakeholderType: NA.Owner });
|
|
9936
9940
|
}
|
|
9937
|
-
const i =
|
|
9941
|
+
const i = S.getMap("transactionCustomerIds");
|
|
9938
9942
|
if (i != null && i.has(A)) {
|
|
9939
9943
|
const w = i.get(A);
|
|
9940
9944
|
if (w && await this.authenticateCustomerId(w)) {
|
|
9941
|
-
const
|
|
9945
|
+
const C = ((d = (l = this.customer) == null ? void 0 : l.bundleStakeholders) == null ? void 0 : d.find(
|
|
9942
9946
|
(u) => {
|
|
9943
|
-
var
|
|
9944
|
-
return (p = (
|
|
9947
|
+
var D, p;
|
|
9948
|
+
return (p = (D = u.bundle) == null ? void 0 : D.transactions) == null ? void 0 : p.some((f) => f.id === A);
|
|
9945
9949
|
}
|
|
9946
|
-
)) || ((
|
|
9950
|
+
)) || ((h = (E = this.customer) == null ? void 0 : E.stakeholders) == null ? void 0 : h.find(
|
|
9947
9951
|
(u) => {
|
|
9948
|
-
var
|
|
9949
|
-
return ((
|
|
9952
|
+
var D;
|
|
9953
|
+
return ((D = u.transaction) == null ? void 0 : D.id) === A;
|
|
9950
9954
|
}
|
|
9951
9955
|
));
|
|
9952
|
-
if (
|
|
9956
|
+
if (C)
|
|
9953
9957
|
return Promise.resolve({
|
|
9954
9958
|
success: !0,
|
|
9955
|
-
stakeholderType:
|
|
9959
|
+
stakeholderType: C.type
|
|
9956
9960
|
});
|
|
9957
9961
|
}
|
|
9958
9962
|
}
|
|
@@ -9975,8 +9979,8 @@ class fs {
|
|
|
9975
9979
|
this.customer = void 0;
|
|
9976
9980
|
}
|
|
9977
9981
|
clearCustomerForTransaction(A) {
|
|
9978
|
-
const e =
|
|
9979
|
-
e != null && e.has(A) && (e.delete(A),
|
|
9982
|
+
const e = S.getMap("transactionCustomerIds");
|
|
9983
|
+
e != null && e.has(A) && (e.delete(A), S.setMap("transactionCustomerIds", e));
|
|
9980
9984
|
}
|
|
9981
9985
|
getStakeholderTypeForTransaction(A) {
|
|
9982
9986
|
var t, a;
|
|
@@ -9992,7 +9996,7 @@ class fs {
|
|
|
9992
9996
|
async getOrCreateCustomer(A) {
|
|
9993
9997
|
var s;
|
|
9994
9998
|
this.customer = void 0;
|
|
9995
|
-
const e =
|
|
9999
|
+
const e = x.getShadowGraphqlClient(), a = (await e.query({
|
|
9996
10000
|
query: hs,
|
|
9997
10001
|
errorPolicy: "all",
|
|
9998
10002
|
fetchPolicy: "no-cache",
|
|
@@ -10027,7 +10031,7 @@ class fs {
|
|
|
10027
10031
|
}
|
|
10028
10032
|
async authenticateCustomerId(A) {
|
|
10029
10033
|
var i;
|
|
10030
|
-
const e =
|
|
10034
|
+
const e = x.getShadowGraphqlClient(), t = S.getMap("customerTokens");
|
|
10031
10035
|
if (!(t != null && t.has(A)))
|
|
10032
10036
|
return !1;
|
|
10033
10037
|
const a = t.get(A);
|
|
@@ -10048,7 +10052,7 @@ class fs {
|
|
|
10048
10052
|
* @param emailAddress The email address to generate a verification code for. The user will be sent an email with the verification code.
|
|
10049
10053
|
*/
|
|
10050
10054
|
async generateVerificationCode(A) {
|
|
10051
|
-
await
|
|
10055
|
+
await x.getShadowGraphqlClient().mutate({
|
|
10052
10056
|
mutation: us,
|
|
10053
10057
|
variables: {
|
|
10054
10058
|
emailAddress: A
|
|
@@ -10063,7 +10067,7 @@ class fs {
|
|
|
10063
10067
|
*/
|
|
10064
10068
|
async verifyCode(A, e) {
|
|
10065
10069
|
var n, s;
|
|
10066
|
-
const a = (n = (await
|
|
10070
|
+
const a = (n = (await x.getShadowGraphqlClient().mutate({
|
|
10067
10071
|
mutation: ms,
|
|
10068
10072
|
errorPolicy: "all",
|
|
10069
10073
|
fetchPolicy: "no-cache",
|
|
@@ -10075,8 +10079,8 @@ class fs {
|
|
|
10075
10079
|
if (a != null && a.loginToken) {
|
|
10076
10080
|
if (!((s = a.partner) != null && s.id))
|
|
10077
10081
|
throw new Error(`Unable to find customer: ${A}`);
|
|
10078
|
-
const i =
|
|
10079
|
-
return i.set(a.id, a.loginToken),
|
|
10082
|
+
const i = S.getMap("customerTokens") || /* @__PURE__ */ new Map();
|
|
10083
|
+
return i.set(a.id, a.loginToken), S.setMap("customerTokens", i), this.storeCustomer(a), Qe(a.loginToken), this.customer = {
|
|
10080
10084
|
...a,
|
|
10081
10085
|
loginToken: void 0
|
|
10082
10086
|
}, !0;
|
|
@@ -10089,7 +10093,7 @@ class fs {
|
|
|
10089
10093
|
*/
|
|
10090
10094
|
async getNewBundle(A) {
|
|
10091
10095
|
var s;
|
|
10092
|
-
const t = (s = (await
|
|
10096
|
+
const t = (s = (await x.getShadowGraphqlClient().mutate({
|
|
10093
10097
|
mutation: Gn,
|
|
10094
10098
|
variables: {
|
|
10095
10099
|
collectionId: A
|
|
@@ -10098,10 +10102,10 @@ class fs {
|
|
|
10098
10102
|
})).data) == null ? void 0 : s.bundleCreate;
|
|
10099
10103
|
if (!(t != null && t.id))
|
|
10100
10104
|
throw new Error("Unable to create bundle");
|
|
10101
|
-
const a =
|
|
10102
|
-
a.set(t.id, t.partner.id),
|
|
10103
|
-
const n =
|
|
10104
|
-
return n.set(t.id, t.bundleOwnerId),
|
|
10105
|
+
const a = S.getMap("bundlePartnerIds") || /* @__PURE__ */ new Map();
|
|
10106
|
+
a.set(t.id, t.partner.id), S.setMap("bundlePartnerIds", a), TA(t.bundleOwnerId);
|
|
10107
|
+
const n = S.getMap("bundleOwnerIds") || /* @__PURE__ */ new Map();
|
|
10108
|
+
return n.set(t.id, t.bundleOwnerId), S.setMap("bundleOwnerIds", n), new fe(this, t);
|
|
10105
10109
|
}
|
|
10106
10110
|
/**
|
|
10107
10111
|
* Retrieves an existing bundle from the API, by id.
|
|
@@ -10112,9 +10116,9 @@ class fs {
|
|
|
10112
10116
|
*/
|
|
10113
10117
|
async getExistingBundle(A, e, t) {
|
|
10114
10118
|
var c, B, l, d;
|
|
10115
|
-
const a =
|
|
10119
|
+
const a = S.getMap("bundleOwnerIds"), n = a == null ? void 0 : a.get(A);
|
|
10116
10120
|
n && TA(n);
|
|
10117
|
-
const s = await
|
|
10121
|
+
const s = await x.getShadowGraphqlClient().query({
|
|
10118
10122
|
query: Pn,
|
|
10119
10123
|
variables: {
|
|
10120
10124
|
id: A
|
|
@@ -10123,8 +10127,8 @@ class fs {
|
|
|
10123
10127
|
});
|
|
10124
10128
|
if (!((c = s.data) != null && c.bundles) || ((B = s.data) == null ? void 0 : B.bundles.length) === 0 || !((l = s.data) != null && l.bundles[0]))
|
|
10125
10129
|
throw new Error(`Unable to find bundle: ${A}`);
|
|
10126
|
-
const i = (d = s.data) == null ? void 0 : d.bundles[0], o =
|
|
10127
|
-
o.set(i.id, i.partner.id),
|
|
10130
|
+
const i = (d = s.data) == null ? void 0 : d.bundles[0], o = S.getMap("bundlePartnerIds") || /* @__PURE__ */ new Map();
|
|
10131
|
+
o.set(i.id, i.partner.id), S.setMap("bundlePartnerIds", o);
|
|
10128
10132
|
const r = new fe(this, i, e, t);
|
|
10129
10133
|
return await r.getInitializationPromise(), r;
|
|
10130
10134
|
}
|
|
@@ -10136,7 +10140,7 @@ class fs {
|
|
|
10136
10140
|
var n;
|
|
10137
10141
|
if (!this.customer)
|
|
10138
10142
|
throw new Error("Customer not authenticated.");
|
|
10139
|
-
const A = await
|
|
10143
|
+
const A = await x.getShadowGraphqlClient().query({
|
|
10140
10144
|
query: Un,
|
|
10141
10145
|
variables: {
|
|
10142
10146
|
id: this.customer.id
|
|
@@ -10145,11 +10149,11 @@ class fs {
|
|
|
10145
10149
|
});
|
|
10146
10150
|
if (!((n = A.data) != null && n.customers) || A.data.customers.length === 0)
|
|
10147
10151
|
throw new Error("Unable to find customer.");
|
|
10148
|
-
const t = A.data.customers[0].bundleStakeholders || [], a =
|
|
10152
|
+
const t = A.data.customers[0].bundleStakeholders || [], a = S.getMap("bundlePartnerIds") || /* @__PURE__ */ new Map();
|
|
10149
10153
|
return t.forEach((s) => {
|
|
10150
10154
|
var i, o;
|
|
10151
10155
|
(i = s.bundle) != null && i.id && ((o = s.bundle.partner) != null && o.id) && a.set(s.bundle.id, s.bundle.partner.id);
|
|
10152
|
-
}),
|
|
10156
|
+
}), S.setMap("bundlePartnerIds", a), t;
|
|
10153
10157
|
}
|
|
10154
10158
|
/**
|
|
10155
10159
|
* Creates a new instance of WorkflowExperience. A high level wrapper for workflows.
|
|
@@ -10160,40 +10164,40 @@ class fs {
|
|
|
10160
10164
|
* @returns A workflow experience configured as requested.
|
|
10161
10165
|
*/
|
|
10162
10166
|
async getWorkflowExperience(A, e, t, a) {
|
|
10163
|
-
var B, l, d, E
|
|
10167
|
+
var B, l, d, E;
|
|
10164
10168
|
if (!a)
|
|
10165
10169
|
return await this.getWorkflowExperienceDeprecated(A, e, t);
|
|
10166
10170
|
const n = async () => {
|
|
10167
|
-
var
|
|
10168
|
-
const
|
|
10171
|
+
var w, Q;
|
|
10172
|
+
const h = x.getShadowGraphqlClient();
|
|
10169
10173
|
if (a.type === "transaction") {
|
|
10170
|
-
const { transactionId:
|
|
10174
|
+
const { transactionId: C, readOnly: u } = a, D = await h.query({
|
|
10171
10175
|
query: EA,
|
|
10172
10176
|
variables: {
|
|
10173
|
-
ids: [
|
|
10177
|
+
ids: [C]
|
|
10174
10178
|
},
|
|
10175
10179
|
errorPolicy: "all",
|
|
10176
10180
|
fetchPolicy: "no-cache"
|
|
10177
10181
|
});
|
|
10178
|
-
if (!((
|
|
10179
|
-
throw new
|
|
10180
|
-
const
|
|
10181
|
-
if (!
|
|
10182
|
-
throw new
|
|
10183
|
-
const
|
|
10184
|
-
if (!
|
|
10185
|
-
throw new
|
|
10186
|
-
return { transaction:
|
|
10182
|
+
if (!((w = D.data) != null && w.transactions) || D.data.transactions.length === 0)
|
|
10183
|
+
throw new H("Existing transaction not found.");
|
|
10184
|
+
const p = (Q = D.data) == null ? void 0 : Q.transactions[0];
|
|
10185
|
+
if (!p.workflowId)
|
|
10186
|
+
throw new H("Existing transaction has no workflow ID.");
|
|
10187
|
+
const f = await pA(p.workflowId);
|
|
10188
|
+
if (!p.product)
|
|
10189
|
+
throw new H("Failed to load transaction, product not available.");
|
|
10190
|
+
return { transaction: p, workflow: f, readOnly: u };
|
|
10187
10191
|
}
|
|
10188
10192
|
if (a.type === "integration" || a.type === "external") {
|
|
10189
|
-
const
|
|
10190
|
-
const
|
|
10193
|
+
const C = async () => {
|
|
10194
|
+
const f = a.type === "integration" ? { integrationProductId: a.integrationProductId } : {
|
|
10191
10195
|
externalIntegrationId: a.externalIntegrationId,
|
|
10192
10196
|
externalProductId: a.externalProductId
|
|
10193
|
-
},
|
|
10197
|
+
}, m = await h.mutate({
|
|
10194
10198
|
mutation: ue,
|
|
10195
10199
|
variables: {
|
|
10196
|
-
...
|
|
10200
|
+
...f,
|
|
10197
10201
|
bulk: a.bulk,
|
|
10198
10202
|
workflowId: a.workflowId,
|
|
10199
10203
|
claim: !0
|
|
@@ -10203,38 +10207,37 @@ class fs {
|
|
|
10203
10207
|
// TODO: this should be changed to required once the API is updated. Should this also be moved to server.ts?
|
|
10204
10208
|
context: this.options.applicationKey ? { headers: { "X-Application-Key": this.options.applicationKey } } : void 0
|
|
10205
10209
|
});
|
|
10206
|
-
if (!
|
|
10207
|
-
throw new
|
|
10208
|
-
const
|
|
10209
|
-
if (!
|
|
10210
|
-
throw new
|
|
10211
|
-
return
|
|
10212
|
-
},
|
|
10213
|
-
return { transaction:
|
|
10210
|
+
if (!m.data || !m.data.transactionCreate)
|
|
10211
|
+
throw new H("Failed to create transaction!");
|
|
10212
|
+
const y = m.data.transactionCreate;
|
|
10213
|
+
if (!y.product)
|
|
10214
|
+
throw new H("Failed to create transaction, product not available.");
|
|
10215
|
+
return y;
|
|
10216
|
+
}, u = pA(a.workflowId, a == null ? void 0 : a.graphql), [D, p] = await Promise.all([C(), u]);
|
|
10217
|
+
return { transaction: D, workflow: p };
|
|
10214
10218
|
}
|
|
10215
|
-
throw new
|
|
10219
|
+
throw new H("No workflow ID provided.");
|
|
10216
10220
|
}, { transaction: s, workflow: i, readOnly: o } = await n();
|
|
10217
10221
|
this.currencyCode = (B = s.product.partner) == null ? void 0 : B.currencyCode;
|
|
10218
10222
|
const r = {
|
|
10219
10223
|
product: s.product,
|
|
10220
10224
|
transaction: s,
|
|
10221
10225
|
layouts: [],
|
|
10222
|
-
singleVariantsRenderable: (l = a == null ? void 0 : a.workflowConfiguration) == null ? void 0 : l.singleVariantsRenderable,
|
|
10223
10226
|
stateMutationFunc: o ? async () => {
|
|
10224
10227
|
throw new v("State mutation is forbidden in read only mode!");
|
|
10225
|
-
} : async (
|
|
10226
|
-
const
|
|
10227
|
-
return this.updateTransactionState({ ...
|
|
10228
|
+
} : async (h) => {
|
|
10229
|
+
const Q = (S.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map()).get(s.id) || void 0;
|
|
10230
|
+
return this.updateTransactionState({ ...h, context: { transactionOwnerId: Q } });
|
|
10228
10231
|
},
|
|
10229
10232
|
readOnly: o,
|
|
10230
10233
|
workflow: i
|
|
10231
10234
|
};
|
|
10232
10235
|
if (a.type === "transaction" && s.workflowState) {
|
|
10233
|
-
const
|
|
10234
|
-
r.layouts = Object.values(
|
|
10236
|
+
const h = JSON.parse(s.workflowState);
|
|
10237
|
+
r.layouts = Object.values(h.layouts).map((w) => w.layout), await AA(h), await tA(h), r.reloadedState = h;
|
|
10235
10238
|
} else if (!o && a.workflowState) {
|
|
10236
|
-
const
|
|
10237
|
-
r.layouts = Object.values(
|
|
10239
|
+
const h = JSON.parse(a.workflowState);
|
|
10240
|
+
r.layouts = Object.values(h.layouts).map((w) => w.layout), await AA(h), await tA(h), r.reloadedState = h;
|
|
10238
10241
|
} else
|
|
10239
10242
|
r.layouts = KA(
|
|
10240
10243
|
r.transaction,
|
|
@@ -10242,18 +10245,18 @@ class fs {
|
|
|
10242
10245
|
);
|
|
10243
10246
|
if (r.renderableContextService = new QA(
|
|
10244
10247
|
r.layouts
|
|
10245
|
-
), a.previewService ? (r.previewService = a.previewService, (
|
|
10248
|
+
), a.previewService ? (r.previewService = a.previewService, (l = r.product) != null && l.modelUrl && (r.modelContainer = r.previewService.loadModel({
|
|
10246
10249
|
model: r.product.modelUrl,
|
|
10247
10250
|
contextService: r.renderableContextService
|
|
10248
|
-
}))) : (r.previewService = t && t(i), (
|
|
10251
|
+
}))) : (r.previewService = t && t(i), (d = r.product) != null && d.modelUrl && (r.modelContainer = (E = r.previewService) == null ? void 0 : E.loadModel({
|
|
10249
10252
|
model: r.product.modelUrl,
|
|
10250
10253
|
contextService: r.renderableContextService
|
|
10251
10254
|
}))), a.type !== "transaction") {
|
|
10252
|
-
const
|
|
10253
|
-
|
|
10255
|
+
const h = S.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map();
|
|
10256
|
+
h.set(s.id, s.transactionOwnerId), eA(s.transactionOwnerId || ""), S.setMap("transactionOwnerIds", h);
|
|
10254
10257
|
} else {
|
|
10255
|
-
const
|
|
10256
|
-
|
|
10258
|
+
const w = (S.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map()).get(s.id);
|
|
10259
|
+
w && eA(w), r.isReloadedTransaction = !0;
|
|
10257
10260
|
}
|
|
10258
10261
|
this.initialized = !0, this.experienceOptions = r;
|
|
10259
10262
|
const c = new CA(this, r);
|
|
@@ -10268,39 +10271,39 @@ class fs {
|
|
|
10268
10271
|
*/
|
|
10269
10272
|
async getWorkflowExperiences(A, e) {
|
|
10270
10273
|
if (A.length === 0)
|
|
10271
|
-
throw new
|
|
10272
|
-
const t =
|
|
10273
|
-
(
|
|
10274
|
+
throw new H("No options provided!");
|
|
10275
|
+
const t = x.getShadowGraphqlClient(), a = A.map((C, u) => ({ option: C, index: u })), n = a.filter((C) => C.option.type === "transaction"), s = a.filter(
|
|
10276
|
+
(C) => C.option.type === "integration" || C.option.type === "external"
|
|
10274
10277
|
), i = async () => {
|
|
10275
|
-
var p,
|
|
10278
|
+
var p, f;
|
|
10276
10279
|
if (n.length === 0)
|
|
10277
10280
|
return [];
|
|
10278
|
-
const
|
|
10281
|
+
const C = n.map((m) => m.option.transactionId), u = await t.query({
|
|
10279
10282
|
query: EA,
|
|
10280
10283
|
variables: {
|
|
10281
|
-
ids:
|
|
10284
|
+
ids: C
|
|
10282
10285
|
},
|
|
10283
10286
|
errorPolicy: "all",
|
|
10284
10287
|
fetchPolicy: "no-cache"
|
|
10285
|
-
}),
|
|
10286
|
-
if (
|
|
10287
|
-
const m = ((
|
|
10288
|
-
throw new
|
|
10288
|
+
}), D = u.data.transactions;
|
|
10289
|
+
if (D.length !== n.length) {
|
|
10290
|
+
const m = ((f = (p = u.errors) == null ? void 0 : p[0]) == null ? void 0 : f.message) || "Unknown error";
|
|
10291
|
+
throw new H(`Not all transactions were found: ${m}`);
|
|
10289
10292
|
}
|
|
10290
|
-
return
|
|
10293
|
+
return D.map((m, y) => {
|
|
10291
10294
|
var Y;
|
|
10292
10295
|
return {
|
|
10293
10296
|
transaction: m,
|
|
10294
10297
|
workflowId: m.workflowId,
|
|
10295
10298
|
readOnly: ((Y = n.find((F) => F.option.transactionId === m.id)) == null ? void 0 : Y.option.readOnly) ?? !1,
|
|
10296
|
-
index: n[
|
|
10299
|
+
index: n[y].index
|
|
10297
10300
|
};
|
|
10298
10301
|
});
|
|
10299
10302
|
}, o = async () => {
|
|
10300
|
-
var
|
|
10303
|
+
var D, p, f;
|
|
10301
10304
|
if (s.length === 0)
|
|
10302
10305
|
return [];
|
|
10303
|
-
const
|
|
10306
|
+
const C = await t.mutate({
|
|
10304
10307
|
mutation: ca,
|
|
10305
10308
|
variables: {
|
|
10306
10309
|
inputs: s.map((m) => ({
|
|
@@ -10314,39 +10317,37 @@ class fs {
|
|
|
10314
10317
|
},
|
|
10315
10318
|
errorPolicy: "all",
|
|
10316
10319
|
fetchPolicy: "no-cache"
|
|
10317
|
-
}), u = (
|
|
10320
|
+
}), u = (D = C.data) == null ? void 0 : D.transactionCreateMany;
|
|
10318
10321
|
if (!u || u.length === 0) {
|
|
10319
|
-
const m = ((
|
|
10320
|
-
throw new
|
|
10322
|
+
const m = ((f = (p = C.errors) == null ? void 0 : p[0]) == null ? void 0 : f.message) || "Unknown error";
|
|
10323
|
+
throw new H(`Failed to create transactions: ${m}`);
|
|
10321
10324
|
}
|
|
10322
|
-
return u.map((m,
|
|
10325
|
+
return u.map((m, y) => ({
|
|
10323
10326
|
transaction: m,
|
|
10324
10327
|
workflowId: m.workflowId,
|
|
10325
10328
|
readOnly: !1,
|
|
10326
|
-
index: s[
|
|
10329
|
+
index: s[y].index
|
|
10327
10330
|
}));
|
|
10328
|
-
}, r = (await Promise.all([i(), o()])).flat(), c = [...new Set(r.map((
|
|
10329
|
-
|
|
10330
|
-
const { transaction: u, workflowId: f, readOnly: p, index: D } = h, m = l.get(f), M = A[D];
|
|
10331
|
+
}, r = (await Promise.all([i(), o()])).flat(), c = [...new Set(r.map((C) => C.workflowId))], B = await ht(c, e), l = new Map(B.map((C) => [C.id, C])), d = S.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map(), E = r.map(async (C) => {
|
|
10332
|
+
const { transaction: u, workflowId: D, readOnly: p, index: f } = C, m = l.get(D), y = A[f];
|
|
10331
10333
|
!d.get(u.id) && u.transactionOwnerId && d.set(u.id, u.transactionOwnerId);
|
|
10332
10334
|
const Y = d.get(u.id) || void 0, F = {
|
|
10333
10335
|
product: u.product,
|
|
10334
10336
|
transaction: u,
|
|
10335
10337
|
layouts: [],
|
|
10336
|
-
singleVariantsRenderable: (U = M == null ? void 0 : M.workflowConfiguration) == null ? void 0 : U.singleVariantsRenderable,
|
|
10337
10338
|
stateMutationFunc: p ? async () => {
|
|
10338
10339
|
throw new v("State mutation is forbidden in read only mode!");
|
|
10339
|
-
} : async (
|
|
10340
|
+
} : async (R) => this.updateTransactionState({ ...R, context: { transactionOwnerId: Y } }),
|
|
10340
10341
|
readOnly: p,
|
|
10341
10342
|
workflow: m,
|
|
10342
|
-
isReloadedTransaction:
|
|
10343
|
+
isReloadedTransaction: y.type === "transaction"
|
|
10343
10344
|
};
|
|
10344
|
-
if (
|
|
10345
|
-
const
|
|
10346
|
-
F.layouts = Object.values(
|
|
10347
|
-
} else if (!p &&
|
|
10348
|
-
const
|
|
10349
|
-
F.layouts = Object.values(
|
|
10345
|
+
if (y.type === "transaction" && u.workflowState) {
|
|
10346
|
+
const R = JSON.parse(u.workflowState);
|
|
10347
|
+
F.layouts = Object.values(R.layouts).map((N) => N.layout), await AA(R), await tA(R), F.reloadedState = R;
|
|
10348
|
+
} else if (!p && y.workflowState) {
|
|
10349
|
+
const R = JSON.parse(y.workflowState);
|
|
10350
|
+
F.layouts = Object.values(R.layouts).map((N) => N.layout), await AA(R), await tA(R), F.reloadedState = R;
|
|
10350
10351
|
} else
|
|
10351
10352
|
F.layouts = KA(
|
|
10352
10353
|
F.transaction,
|
|
@@ -10354,12 +10355,12 @@ class fs {
|
|
|
10354
10355
|
);
|
|
10355
10356
|
return F.renderableContextService = new QA(
|
|
10356
10357
|
F.layouts
|
|
10357
|
-
), this.initialized = !0, this.experienceOptions = F, { experienceOptions: F, index:
|
|
10358
|
+
), this.initialized = !0, this.experienceOptions = F, { experienceOptions: F, index: f, options: y };
|
|
10358
10359
|
});
|
|
10359
|
-
|
|
10360
|
-
const Q = (await Promise.all(E)).sort((
|
|
10361
|
-
const { experienceOptions: u, options:
|
|
10362
|
-
return await p.getWorkflowManager().getInitializationPromise(),
|
|
10360
|
+
S.setMap("transactionOwnerIds", d);
|
|
10361
|
+
const Q = (await Promise.all(E)).sort((C, u) => C.index - u.index).map(async (C) => {
|
|
10362
|
+
const { experienceOptions: u, options: D } = C, p = new CA(this, u);
|
|
10363
|
+
return await p.getWorkflowManager().getInitializationPromise(), D.type !== "transaction" && this.customer && await p.attachCustomerDetails({ email: this.customer.emailAddress }), p;
|
|
10363
10364
|
});
|
|
10364
10365
|
return await Promise.all(Q);
|
|
10365
10366
|
}
|
|
@@ -10371,8 +10372,8 @@ class fs {
|
|
|
10371
10372
|
async initFromIntegrationProduct(A) {
|
|
10372
10373
|
var s;
|
|
10373
10374
|
if (A === "")
|
|
10374
|
-
throw new
|
|
10375
|
-
const t = await
|
|
10375
|
+
throw new H("No integration product ID provided.");
|
|
10376
|
+
const t = await x.getShadowGraphqlClient().mutate({
|
|
10376
10377
|
mutation: ue,
|
|
10377
10378
|
variables: {
|
|
10378
10379
|
integrationProductId: A,
|
|
@@ -10385,13 +10386,13 @@ class fs {
|
|
|
10385
10386
|
context: this.options.applicationKey ? { headers: { "X-Application-Key": this.options.applicationKey } } : void 0
|
|
10386
10387
|
});
|
|
10387
10388
|
if (!t.data || !t.data.transactionCreate)
|
|
10388
|
-
throw new
|
|
10389
|
+
throw new H("Failed to create transaction!");
|
|
10389
10390
|
const a = t.data.transactionCreate;
|
|
10390
10391
|
if (!a.product)
|
|
10391
|
-
throw new
|
|
10392
|
+
throw new H("Failed to create transaction, product not available.");
|
|
10392
10393
|
this.currencyCode = (s = a.product.partner) == null ? void 0 : s.currencyCode;
|
|
10393
|
-
const n =
|
|
10394
|
-
n.set(a.id, a.transactionOwnerId), eA(a.transactionOwnerId || ""),
|
|
10394
|
+
const n = S.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map();
|
|
10395
|
+
n.set(a.id, a.transactionOwnerId), eA(a.transactionOwnerId || ""), S.setMap("transactionOwnerIds", n), this.experienceOptions = {
|
|
10395
10396
|
product: a.product,
|
|
10396
10397
|
transaction: a,
|
|
10397
10398
|
layouts: [],
|
|
@@ -10407,8 +10408,8 @@ class fs {
|
|
|
10407
10408
|
async initFromTransaction(A, e = !1) {
|
|
10408
10409
|
var i, o, r, c;
|
|
10409
10410
|
if (A === "")
|
|
10410
|
-
throw new
|
|
10411
|
-
const t =
|
|
10411
|
+
throw new H("No transaction ID provided.");
|
|
10412
|
+
const t = x.getShadowGraphqlClient(), a = async () => {
|
|
10412
10413
|
var d, E;
|
|
10413
10414
|
const l = (d = (await t.query({
|
|
10414
10415
|
query: EA,
|
|
@@ -10417,9 +10418,9 @@ class fs {
|
|
|
10417
10418
|
errorPolicy: "all"
|
|
10418
10419
|
})).data) == null ? void 0 : d.transactions[0];
|
|
10419
10420
|
if (!l)
|
|
10420
|
-
throw new
|
|
10421
|
+
throw new H("Failed to read transaction.");
|
|
10421
10422
|
if (!l.product)
|
|
10422
|
-
throw new
|
|
10423
|
+
throw new H("Failed to load transaction, product not available.");
|
|
10423
10424
|
this.currencyCode = (E = l.product.partner) == null ? void 0 : E.currencyCode, this.experienceOptions = {
|
|
10424
10425
|
product: l.product,
|
|
10425
10426
|
transaction: l,
|
|
@@ -10432,7 +10433,7 @@ class fs {
|
|
|
10432
10433
|
};
|
|
10433
10434
|
if (e)
|
|
10434
10435
|
return await a();
|
|
10435
|
-
const n =
|
|
10436
|
+
const n = S.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map(), s = n.get(A);
|
|
10436
10437
|
if (s) {
|
|
10437
10438
|
eA(s);
|
|
10438
10439
|
const l = (i = (await t.query({
|
|
@@ -10443,9 +10444,9 @@ class fs {
|
|
|
10443
10444
|
errorPolicy: "all"
|
|
10444
10445
|
})).data) == null ? void 0 : i.transactions[0];
|
|
10445
10446
|
if (!l)
|
|
10446
|
-
throw new
|
|
10447
|
+
throw new H("Failed to read transaction.");
|
|
10447
10448
|
if (!l.product)
|
|
10448
|
-
throw new
|
|
10449
|
+
throw new H("Failed to load transaction, product not available.");
|
|
10449
10450
|
this.currencyCode = (o = l.product.partner) == null ? void 0 : o.currencyCode, this.experienceOptions = {
|
|
10450
10451
|
product: l.product,
|
|
10451
10452
|
transaction: l,
|
|
@@ -10462,10 +10463,10 @@ class fs {
|
|
|
10462
10463
|
errorPolicy: "all"
|
|
10463
10464
|
})).data) == null ? void 0 : r.transactionClaim;
|
|
10464
10465
|
if (!l)
|
|
10465
|
-
throw new
|
|
10466
|
+
throw new H("Failed to read transaction.");
|
|
10466
10467
|
if (!l.product)
|
|
10467
|
-
throw new
|
|
10468
|
-
this.currencyCode = (c = l.product.partner) == null ? void 0 : c.currencyCode, l.transactionOwnerId && (n.set(l.id, l.transactionOwnerId), eA(l.transactionOwnerId),
|
|
10468
|
+
throw new H("Failed to load transaction, product not available.");
|
|
10469
|
+
this.currencyCode = (c = l.product.partner) == null ? void 0 : c.currencyCode, l.transactionOwnerId && (n.set(l.id, l.transactionOwnerId), eA(l.transactionOwnerId), S.setMap("transactionOwnerIds", n)), this.experienceOptions = {
|
|
10469
10470
|
product: l.product,
|
|
10470
10471
|
transaction: l,
|
|
10471
10472
|
layouts: [],
|
|
@@ -10473,7 +10474,7 @@ class fs {
|
|
|
10473
10474
|
readOnly: e
|
|
10474
10475
|
}, this.initialized = !0;
|
|
10475
10476
|
} catch {
|
|
10476
|
-
throw new
|
|
10477
|
+
throw new H("Attempted to access a transaction that isn't available.");
|
|
10477
10478
|
}
|
|
10478
10479
|
}
|
|
10479
10480
|
/**
|
|
@@ -10482,7 +10483,7 @@ class fs {
|
|
|
10482
10483
|
async getWorkflowExperienceDeprecated(A, e, t) {
|
|
10483
10484
|
var a, n, s, i;
|
|
10484
10485
|
if (!this.initialized || !this.experienceOptions)
|
|
10485
|
-
throw new
|
|
10486
|
+
throw new H("Cannot launch experience: Not initialized.");
|
|
10486
10487
|
if (this.experienceOptions.transaction.workflowId) {
|
|
10487
10488
|
const o = await pA(this.experienceOptions.transaction.workflowId);
|
|
10488
10489
|
if (this.experienceOptions.workflow = o, this.experienceOptions.transaction.workflowState) {
|
|
@@ -10497,7 +10498,7 @@ class fs {
|
|
|
10497
10498
|
return await r.getWorkflowManager().getInitializationPromise(), r;
|
|
10498
10499
|
}
|
|
10499
10500
|
if (A) {
|
|
10500
|
-
const o =
|
|
10501
|
+
const o = x.getShadowGraphqlClient().mutate({
|
|
10501
10502
|
mutation: Ba,
|
|
10502
10503
|
variables: {
|
|
10503
10504
|
workflowId: A,
|
|
@@ -10519,7 +10520,7 @@ class fs {
|
|
|
10519
10520
|
const c = new CA(this, this.experienceOptions);
|
|
10520
10521
|
return await c.getWorkflowManager().getInitializationPromise(), c;
|
|
10521
10522
|
}
|
|
10522
|
-
throw new
|
|
10523
|
+
throw new H("No workflow ID provided.");
|
|
10523
10524
|
}
|
|
10524
10525
|
/**
|
|
10525
10526
|
* @deprecated The value this returns will be changed whenever `getWorkflowExperience()` is called. Use `workflowExperience.getWorkflowManager().getPreviewService()` instead.
|
|
@@ -10535,7 +10536,7 @@ class fs {
|
|
|
10535
10536
|
*/
|
|
10536
10537
|
getProduct() {
|
|
10537
10538
|
if (!this.initialized || !this.experienceOptions)
|
|
10538
|
-
throw new
|
|
10539
|
+
throw new H("Cannot get product: Not initialized.");
|
|
10539
10540
|
return this.experienceOptions.product;
|
|
10540
10541
|
}
|
|
10541
10542
|
/**
|
|
@@ -10544,12 +10545,12 @@ class fs {
|
|
|
10544
10545
|
*/
|
|
10545
10546
|
getTransaction() {
|
|
10546
10547
|
if (!this.initialized || !this.experienceOptions)
|
|
10547
|
-
throw new
|
|
10548
|
+
throw new H("Cannot get transaction: Not initialized.");
|
|
10548
10549
|
return this.experienceOptions.transaction;
|
|
10549
10550
|
}
|
|
10550
10551
|
storeCustomer(A) {
|
|
10551
|
-
const e =
|
|
10552
|
-
e.set(A.partner.id, A.id),
|
|
10552
|
+
const e = S.getMap("partnerCustomerIds") || /* @__PURE__ */ new Map();
|
|
10553
|
+
e.set(A.partner.id, A.id), S.setMap("partnerCustomerIds", e);
|
|
10553
10554
|
}
|
|
10554
10555
|
}
|
|
10555
10556
|
class ks {
|
|
@@ -10778,7 +10779,7 @@ export {
|
|
|
10778
10779
|
nn as InformationStepHandle,
|
|
10779
10780
|
ei as LayoutElementFactory,
|
|
10780
10781
|
ti as LayoutElementType,
|
|
10781
|
-
|
|
10782
|
+
T as LayoutNotFoundError,
|
|
10782
10783
|
$a as MaterialStepHandle,
|
|
10783
10784
|
SA as MisconfigurationError,
|
|
10784
10785
|
ks as MockWorkflowManager,
|
|
@@ -10813,7 +10814,7 @@ export {
|
|
|
10813
10814
|
gi as UnitOfMeasurement,
|
|
10814
10815
|
X as Variant,
|
|
10815
10816
|
CA as WorkflowExperienceImpl,
|
|
10816
|
-
|
|
10817
|
+
b as assetService,
|
|
10817
10818
|
Bn as createDesign,
|
|
10818
10819
|
li as dataUrlFromExternalUrl,
|
|
10819
10820
|
zA as designService,
|
|
@@ -10834,7 +10835,7 @@ export {
|
|
|
10834
10835
|
mi as getSvgElement,
|
|
10835
10836
|
pA as getWorkflow,
|
|
10836
10837
|
ht as getWorkflows,
|
|
10837
|
-
|
|
10838
|
+
x as graphQlManager,
|
|
10838
10839
|
fA as illustrationStepService,
|
|
10839
10840
|
pi as loadFont,
|
|
10840
10841
|
$e as materialStepService,
|
|
@@ -10842,7 +10843,7 @@ export {
|
|
|
10842
10843
|
Ya as moduleStepService,
|
|
10843
10844
|
z as optionService,
|
|
10844
10845
|
Ii as patternImageDataCache,
|
|
10845
|
-
|
|
10846
|
+
S as persistenceService,
|
|
10846
10847
|
At as pictureStepService,
|
|
10847
10848
|
et as questionStepService,
|
|
10848
10849
|
Di as registerFetchImplementation,
|