@ring-protocol/smart-order-router 0.5.5 → 0.5.6
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/build/main/providers/caching/route/model/cached-route.js +9 -1
- package/build/main/routers/alpha-router/functions/compute-all-routes.d.ts +1 -1
- package/build/main/routers/alpha-router/functions/compute-all-routes.js +3 -3
- package/build/main/tsconfig.tsbuildinfo +1 -1
- package/build/main/util/routes.js +10 -28
- package/build/module/providers/caching/route/model/cached-route.js +9 -1
- package/build/module/routers/alpha-router/functions/compute-all-routes.d.ts +1 -1
- package/build/module/routers/alpha-router/functions/compute-all-routes.js +3 -3
- package/build/module/tsconfig.module.tsbuildinfo +1 -1
- package/build/module/util/routes.js +15 -33
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Pair as
|
|
1
|
+
import { Pair as FewV2Pair } from '@ring-protocol/few-v2-sdk';
|
|
2
2
|
import { Protocol } from '@ring-protocol/router-sdk';
|
|
3
3
|
import { Percent } from '@ring-protocol/sdk-core';
|
|
4
4
|
import { Pair } from '@ring-protocol/v2-sdk';
|
|
@@ -7,6 +7,7 @@ import { Pool as V4Pool } from '@ring-protocol/v4-sdk';
|
|
|
7
7
|
import _ from 'lodash';
|
|
8
8
|
import { addFn } from '../routers/alpha-router/functions/best-swap-route';
|
|
9
9
|
import { V3_CORE_FACTORY_ADDRESSES } from './addresses';
|
|
10
|
+
import { log } from './log';
|
|
10
11
|
import { CurrencyAmount, V4_ETH_WETH_FAKE_POOL } from '.';
|
|
11
12
|
export const routeToTokens = (route) => {
|
|
12
13
|
switch (route.protocol) {
|
|
@@ -37,7 +38,6 @@ export const routeToPools = (route) => {
|
|
|
37
38
|
}
|
|
38
39
|
};
|
|
39
40
|
export const poolToString = (pool) => {
|
|
40
|
-
var _a, _b;
|
|
41
41
|
if (pool instanceof V4Pool) {
|
|
42
42
|
return ` -- ${pool.fee / 10000}% [${V4Pool.getPoolId(pool.token0, pool.token1, pool.fee, pool.tickSpacing, pool.hooks)}]`;
|
|
43
43
|
}
|
|
@@ -47,35 +47,14 @@ export const poolToString = (pool) => {
|
|
|
47
47
|
else if (pool instanceof Pair) {
|
|
48
48
|
return ` -- [${Pair.getAddress(pool.token0, pool.token1)}]`;
|
|
49
49
|
}
|
|
50
|
-
else if (pool instanceof
|
|
51
|
-
return ` -- [${
|
|
50
|
+
else if (pool instanceof FewV2Pair) {
|
|
51
|
+
return ` -- [${FewV2Pair.getAddress(pool.token0, pool.token1)}]`;
|
|
52
52
|
}
|
|
53
53
|
else {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
//
|
|
58
|
-
if (pool &&
|
|
59
|
-
typeof pool === 'object' &&
|
|
60
|
-
('liquidityToken' in pool || 'tokenAmounts' in pool)) {
|
|
61
|
-
const poolObj = pool;
|
|
62
|
-
let token0Address;
|
|
63
|
-
let token1Address;
|
|
64
|
-
if (poolObj.tokenAmounts && Array.isArray(poolObj.tokenAmounts)) {
|
|
65
|
-
const token0 = (_a = poolObj.tokenAmounts[0]) === null || _a === void 0 ? void 0 : _a.currency;
|
|
66
|
-
const token1 = (_b = poolObj.tokenAmounts[1]) === null || _b === void 0 ? void 0 : _b.currency;
|
|
67
|
-
token0Address = (token0 === null || token0 === void 0 ? void 0 : token0.address) || (token0 === null || token0 === void 0 ? void 0 : token0.id);
|
|
68
|
-
token1Address = (token1 === null || token1 === void 0 ? void 0 : token1.address) || (token1 === null || token1 === void 0 ? void 0 : token1.id);
|
|
69
|
-
}
|
|
70
|
-
if (token0Address && token1Address) {
|
|
71
|
-
// For logging purposes we just show the two addresses. This avoids
|
|
72
|
-
// throwing while still giving useful debug information.
|
|
73
|
-
return ` -- [${token0Address}/${token1Address}]`;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
// As a last resort, avoid throwing – just show an opaque placeholder so
|
|
77
|
-
// route logging never breaks the main quote flow.
|
|
78
|
-
return ' -- [UnknownPool]';
|
|
54
|
+
log.info('2025-12-16-15-30');
|
|
55
|
+
log.info(`Unsupported pool ${JSON.stringify(pool)}`);
|
|
56
|
+
return `-- [UnknownPool] ${JSON.stringify(pool)}`;
|
|
57
|
+
// throw new Error(`Unsupported pool ${JSON.stringify(pool)}`);
|
|
79
58
|
}
|
|
80
59
|
};
|
|
81
60
|
export const routeToString = (route) => {
|
|
@@ -88,8 +67,8 @@ export const routeToString = (route) => {
|
|
|
88
67
|
if (pool instanceof Pair) {
|
|
89
68
|
return ` -- [${Pair.getAddress(pool.token0, pool.token1)}]`;
|
|
90
69
|
}
|
|
91
|
-
else if (pool instanceof
|
|
92
|
-
return ` -- [${
|
|
70
|
+
else if (pool instanceof FewV2Pair) {
|
|
71
|
+
return ` -- [${FewV2Pair.getAddress(pool.token0, pool.token1)}]`;
|
|
93
72
|
}
|
|
94
73
|
else if (pool instanceof V3Pool) {
|
|
95
74
|
return ` -- ${pool.fee / 10000}% [${V3Pool.getAddress(pool.token0, pool.token1, pool.fee, undefined, V3_CORE_FACTORY_ADDRESSES[pool.chainId])}]`;
|
|
@@ -175,7 +154,7 @@ export function shouldWipeoutCachedRoutes(cachedRoutes, routingConfig) {
|
|
|
175
154
|
return containsExcludedProtocolPools !== undefined;
|
|
176
155
|
}
|
|
177
156
|
function poolIsInExcludedProtocols(pool, excludedProtocolsFromMixed) {
|
|
178
|
-
var _a, _b, _c;
|
|
157
|
+
var _a, _b, _c, _d;
|
|
179
158
|
if (pool instanceof V4Pool) {
|
|
180
159
|
return (_a = excludedProtocolsFromMixed === null || excludedProtocolsFromMixed === void 0 ? void 0 : excludedProtocolsFromMixed.includes(Protocol.V4)) !== null && _a !== void 0 ? _a : false;
|
|
181
160
|
}
|
|
@@ -185,8 +164,11 @@ function poolIsInExcludedProtocols(pool, excludedProtocolsFromMixed) {
|
|
|
185
164
|
else if (pool instanceof Pair) {
|
|
186
165
|
return (_c = excludedProtocolsFromMixed === null || excludedProtocolsFromMixed === void 0 ? void 0 : excludedProtocolsFromMixed.includes(Protocol.V2)) !== null && _c !== void 0 ? _c : false;
|
|
187
166
|
}
|
|
167
|
+
else if (pool instanceof FewV2Pair) {
|
|
168
|
+
return (_d = excludedProtocolsFromMixed === null || excludedProtocolsFromMixed === void 0 ? void 0 : excludedProtocolsFromMixed.includes(Protocol.FEWV2)) !== null && _d !== void 0 ? _d : false;
|
|
169
|
+
}
|
|
188
170
|
else {
|
|
189
171
|
return false;
|
|
190
172
|
}
|
|
191
173
|
}
|
|
192
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWwvcm91dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLElBQUksU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXJELE9BQU8sRUFBcUIsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFPdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBRzFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRTVCLE9BQU8sRUFBRSxjQUFjLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxHQUFHLENBQUM7QUFFMUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBc0IsRUFBYyxFQUFFO0lBQ2xFLFFBQVEsS0FBSyxDQUFDLFFBQVEsRUFBRTtRQUN0QixLQUFLLFFBQVEsQ0FBQyxFQUFFO1lBQ2QsT0FBTyxLQUFLLENBQUMsWUFBWSxDQUFDO1FBQzVCLEtBQUssUUFBUSxDQUFDLEVBQUU7WUFDZCxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDekIsS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ2pCLEtBQUssUUFBUSxDQUFDLEtBQUssQ0FBQztRQUNwQixLQUFLLFFBQVEsQ0FBQyxLQUFLO1lBQ2pCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQztRQUNwQjtZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQ2pFO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBc0IsRUFBVyxFQUFFO0lBQzlELFFBQVEsS0FBSyxDQUFDLFFBQVEsRUFBRTtRQUN0QixLQUFLLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDakIsS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ2pCLEtBQUssUUFBUSxDQUFDLEtBQUs7WUFDakIsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3JCLEtBQUssUUFBUSxDQUFDLEVBQUU7WUFDZCxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDckIsS0FBSyxRQUFRLENBQUMsS0FBSztZQUNqQixPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDckI7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUNqRTtBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLElBQVcsRUFBVSxFQUFFO0lBQ2xELElBQUksSUFBSSxZQUFZLE1BQU0sRUFBRTtRQUMxQixPQUFPLE9BQU8sSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLE1BQU0sTUFBTSxDQUFDLFNBQVMsQ0FDbEQsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxHQUFHLEVBQ1IsSUFBSSxDQUFDLFdBQVcsRUFDaEIsSUFBSSxDQUFDLEtBQUssQ0FDWCxHQUFHLENBQUM7S0FDTjtTQUFNLElBQUksSUFBSSxZQUFZLE1BQU0sRUFBRTtRQUNqQyxPQUFPLE9BQU8sSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLE1BQU0sTUFBTSxDQUFDLFVBQVUsQ0FDbkQsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxHQUFHLEVBQ1IsU0FBUyxFQUNULHlCQUF5QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FDeEMsR0FBRyxDQUFDO0tBQ047U0FBTSxJQUFJLElBQUksWUFBWSxJQUFJLEVBQUU7UUFDL0IsT0FBTyxRQUFRLElBQUksQ0FBQyxVQUFVLENBQzNCLElBQWEsQ0FBQyxNQUFNLEVBQ3BCLElBQWEsQ0FBQyxNQUFNLENBQ3RCLEdBQUcsQ0FBQztLQUNOO1NBQU0sSUFBSSxJQUFJLFlBQVksU0FBUyxFQUFFO1FBQ3BDLE9BQU8sUUFBUSxTQUFTLENBQUMsVUFBVSxDQUNoQyxJQUFrQixDQUFDLE1BQU0sRUFDekIsSUFBa0IsQ0FBQyxNQUFNLENBQzNCLEdBQUcsQ0FBQztLQUNOO1NBQU07UUFDTCxHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDN0IsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckQsT0FBTyxvQkFBb0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2xELCtEQUErRDtLQUNoRTtBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQXNCLEVBQVUsRUFBRTtJQUM5RCxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDcEIsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzlELE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFOztRQUN4QyxJQUFJLElBQUksWUFBWSxJQUFJLEVBQUU7WUFDeEIsT0FBTyxRQUFRLElBQUksQ0FBQyxVQUFVLENBQzNCLElBQWEsQ0FBQyxNQUFNLEVBQ3BCLElBQWEsQ0FBQyxNQUFNLENBQ3RCLEdBQUcsQ0FBQztTQUNOO2FBQU0sSUFBSSxJQUFJLFlBQVksU0FBUyxFQUFFO1lBQ3BDLE9BQU8sUUFBUSxTQUFTLENBQUMsVUFBVSxDQUNoQyxJQUFrQixDQUFDLE1BQU0sRUFDekIsSUFBa0IsQ0FBQyxNQUFNLENBQzNCLEdBQUcsQ0FBQztTQUNOO2FBQU0sSUFBSSxJQUFJLFlBQVksTUFBTSxFQUFFO1lBQ2pDLE9BQU8sT0FBTyxJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssTUFBTSxNQUFNLENBQUMsVUFBVSxDQUNuRCxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLEdBQUcsRUFDUixTQUFTLEVBQ1QseUJBQXlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUN4QyxHQUFHLENBQUM7U0FDTjthQUFNLElBQUksSUFBSSxZQUFZLE1BQU0sRUFBRTtZQUNqQyxpREFBaUQ7WUFDakQsNEZBQTRGO1lBQzVGLElBQ0UsSUFBSSxDQUFDLFdBQVc7Z0JBQ2hCLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFrQixDQUFDLENBQUMsV0FBVyxFQUMxRDtnQkFDQSxPQUFPLE9BQU8sQ0FBQzthQUNoQjtZQUVELE9BQU8sT0FBTyxJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssTUFBTSxNQUFNLENBQUMsU0FBUyxDQUNsRCxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLEdBQUcsRUFDUixJQUFJLENBQUMsV0FBVyxFQUNoQixJQUFJLENBQUMsS0FBSyxDQUNYLEdBQUcsQ0FBQztTQUNOO2FBQU07WUFDTCwwRUFBMEU7WUFDMUUsd0RBQXdEO1lBQ3hELElBQ0UsSUFBSTtnQkFDSixPQUFPLElBQUksS0FBSyxRQUFRO2dCQUN4QixDQUFDLGdCQUFnQixJQUFJLElBQUksSUFBSSxjQUFjLElBQUksSUFBSSxDQUFDLEVBQ3BEO2dCQUNBLE1BQU0sT0FBTyxHQUFHLElBS2YsQ0FBQztnQkFFRixJQUFJLGFBQWlDLENBQUM7Z0JBQ3RDLElBQUksYUFBaUMsQ0FBQztnQkFFdEMsSUFBSSxPQUFPLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFO29CQUMvRCxNQUFNLE1BQU0sR0FBRyxNQUFBLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLDBDQUFFLFFBQVEsQ0FBQztvQkFDakQsTUFBTSxNQUFNLEdBQUcsTUFBQSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQywwQ0FBRSxRQUFRLENBQUM7b0JBQ2pELGFBQWEsR0FBRyxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxPQUFPLE1BQUksTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLEVBQUUsQ0FBQSxDQUFDO29CQUM5QyxhQUFhLEdBQUcsQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsT0FBTyxNQUFJLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxFQUFFLENBQUEsQ0FBQztpQkFDL0M7Z0JBRUQsSUFBSSxhQUFhLElBQUksYUFBYSxFQUFFO29CQUNsQyxPQUFPLFFBQVEsYUFBYSxJQUFJLGFBQWEsR0FBRyxDQUFDO2lCQUNsRDthQUNGO1lBRUQsbUVBQW1FO1lBQ25FLGlDQUFpQztZQUNqQyxPQUFPLG1CQUFtQixDQUFDO1NBQzVCO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN6QyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUU7WUFDMUIsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvQjtLQUNGO0lBRUQsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzNCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQ2xDLFlBQW1DLEVBQzNCLEVBQUU7SUFDVixNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsTUFBTSxDQUNwQixZQUFZLEVBQ1osQ0FBQyxLQUFxQixFQUFFLEdBQXdCLEVBQUUsRUFBRTtRQUNsRCxPQUFPLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLENBQUMsRUFDRCxjQUFjLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUNsRSxDQUFDO0lBRUYsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTtRQUN2RSxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BFLGtGQUFrRjtRQUNsRixPQUFPLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsUUFDdkQsS0FBSyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQ3pELENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUseUJBQXlCLENBQ3ZDLFlBQTJCLEVBQzNCLGFBQWlDO0lBRWpDLHlFQUF5RTtJQUN6RSxxR0FBcUc7SUFDckcsSUFDRSxDQUFBLGFBQWEsYUFBYixhQUFhLHVCQUFiLGFBQWEsQ0FBRSx5QkFBeUI7O1FBQ3hDLHlFQUF5RTtRQUN6RSx3R0FBd0c7UUFDeEcsbURBQW1EO1FBQ25ELDBCQUEwQjtRQUMxQixzSUFBc0k7UUFDdEksaUlBQWlJO1FBQ2pJLHNHQUFzRztRQUN0RyxhQUFhLGFBQWIsYUFBYSx1QkFBYixhQUFhLENBQUUsc0JBQXNCLENBQUEsRUFDckM7UUFDQSxPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsTUFBTSw2QkFBNkIsR0FBRyxZQUFZLGFBQVosWUFBWSx1QkFBWixZQUFZLENBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ3hFLFFBQVEsS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUN0QixLQUFLLFFBQVEsQ0FBQyxLQUFLO2dCQUNqQixPQUFPLENBQ0osS0FBSyxDQUFDLEtBQW9CLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO29CQUNoRCxPQUFPLHlCQUF5QixDQUM5QixJQUFJLEVBQ0osYUFBYSxhQUFiLGFBQWEsdUJBQWIsYUFBYSxDQUFFLDBCQUEwQixDQUMxQyxDQUFDO2dCQUNKLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQ2QsQ0FBQztZQUNKO2dCQUNFLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLDZCQUE2QixLQUFLLFNBQVMsQ0FBQztBQUNyRCxDQUFDO0FBRUQsU0FBUyx5QkFBeUIsQ0FDaEMsSUFBVyxFQUNYLDBCQUF1Qzs7SUFFdkMsSUFBSSxJQUFJLFlBQVksTUFBTSxFQUFFO1FBQzFCLE9BQU8sTUFBQSwwQkFBMEIsYUFBMUIsMEJBQTBCLHVCQUExQiwwQkFBMEIsQ0FBRSxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxtQ0FBSSxLQUFLLENBQUM7S0FDbkU7U0FBTSxJQUFJLElBQUksWUFBWSxNQUFNLEVBQUU7UUFDakMsT0FBTyxNQUFBLDBCQUEwQixhQUExQiwwQkFBMEIsdUJBQTFCLDBCQUEwQixDQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLG1DQUFJLEtBQUssQ0FBQztLQUNuRTtTQUFNLElBQUksSUFBSSxZQUFZLElBQUksRUFBRTtRQUMvQixPQUFPLE1BQUEsMEJBQTBCLGFBQTFCLDBCQUEwQix1QkFBMUIsMEJBQTBCLENBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsbUNBQUksS0FBSyxDQUFDO0tBQ25FO1NBQU0sSUFBSSxJQUFJLFlBQVksU0FBUyxFQUFFO1FBQ3BDLE9BQU8sTUFBQSwwQkFBMEIsYUFBMUIsMEJBQTBCLHVCQUExQiwwQkFBMEIsQ0FBRSxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxtQ0FBSSxLQUFLLENBQUM7S0FDdEU7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDIn0=
|