@indigo-labs/indigo-sdk 0.3.9 → 0.3.11
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.mts +337 -772
- package/dist/index.d.ts +337 -772
- package/dist/index.js +1194 -557
- package/dist/index.mjs +1091 -451
- package/package.json +1 -1
- package/src/contracts/cdp/helpers.ts +12 -0
- package/src/contracts/cdp/transactions.ts +32 -8
- package/src/contracts/gov/helpers.ts +58 -0
- package/src/contracts/gov/transactions.ts +35 -14
- package/src/contracts/iasset/helpers.ts +3 -0
- package/src/contracts/price-oracle/types-new.ts +1 -1
- package/src/contracts/rob/helpers.ts +274 -196
- package/src/contracts/rob/transactions.ts +11 -5
- package/src/contracts/rob-leverage/helpers.ts +379 -371
- package/src/contracts/rob-leverage/transactions.ts +176 -104
- package/src/contracts/staking/transactions.ts +3 -0
- package/src/contracts/treasury/transactions.ts +58 -36
- package/src/contracts/treasury/types-new.ts +1 -1
- package/src/index.ts +0 -2
- package/src/utils/utils.ts +0 -3
- package/src/validators/cdp-creator-validator.ts +1 -1
- package/src/validators/cdp-redeem-validator.ts +1 -1
- package/src/validators/cdp-validator.ts +1 -1
- package/src/validators/collector-validator.ts +1 -1
- package/src/validators/execute-validator.ts +1 -1
- package/src/validators/governance-validator.ts +1 -1
- package/src/validators/interest-collection-validator.ts +1 -1
- package/src/validators/interest-oracle-validator.ts +1 -1
- package/src/validators/poll-manager-validator.ts +1 -1
- package/src/validators/poll-shard-validator.ts +1 -1
- package/src/validators/stability-pool-validator.ts +1 -1
- package/src/validators/stableswap-validator.ts +1 -1
- package/src/validators/staking-validator.ts +1 -1
- package/src/validators/treasury-validator.ts +1 -1
- package/tests/cdp/actions.ts +87 -6
- package/tests/cdp/cdp-queries.ts +1 -1
- package/tests/cdp/cdp.test.ts +949 -94
- package/tests/endpoints/initialize.ts +14 -2
- package/tests/gov/gov.test.ts +864 -1
- package/tests/interest-collection/interest-collector-queries.ts +2 -1
- package/tests/queries/collector-queries.ts +2 -1
- package/tests/queries/poll-queries.ts +2 -1
- package/tests/queries/treasury-queries.ts +8 -2
- package/tests/rob/rob-leverage.test.ts +1646 -612
- package/tests/rob/rob.test.ts +35 -19
- package/tests/rob/transactions-mutated.ts +6 -4
- package/tests/stability-pool.test.ts +251 -25
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import {
|
|
2
2
|
LucidEvolution,
|
|
3
3
|
TxBuilder,
|
|
4
4
|
OutRef,
|
|
@@ -7,26 +7,25 @@
|
|
|
7
7
|
slotToUnixTime,
|
|
8
8
|
Data,
|
|
9
9
|
fromHex,
|
|
10
|
+
getInputIndices,
|
|
10
11
|
} from '@lucid-evolution/lucid';
|
|
11
12
|
import {
|
|
12
13
|
addrDetails,
|
|
13
14
|
createScriptAddress,
|
|
14
15
|
getInlineDatumOrThrow,
|
|
15
16
|
} from '../../utils/lucid-utils';
|
|
16
|
-
import { parsePriceOracleDatum } from '../price-oracle/types-new';
|
|
17
|
-
import { ocdMul } from '../../types/on-chain-decimal';
|
|
18
17
|
import { serialiseCdpDatum } from '../cdp/types-new';
|
|
19
|
-
import { calculateFeeFromPercentage } from '../../utils/indigo-helpers';
|
|
20
18
|
import { matchSingle } from '../../utils/utils';
|
|
21
19
|
import {
|
|
22
20
|
fromSystemParamsAsset,
|
|
23
21
|
fromSystemParamsScriptRef,
|
|
24
22
|
SystemParams,
|
|
25
23
|
} from '../../types/system-params';
|
|
26
|
-
import { oracleExpirationAwareValidity } from '../price-oracle/helpers';
|
|
27
24
|
import { parseInterestOracleDatum } from '../interest-oracle/types-new';
|
|
28
|
-
import {
|
|
29
|
-
|
|
25
|
+
import {
|
|
26
|
+
serialiseCDPCreatorDatum,
|
|
27
|
+
serialiseCDPCreatorRedeemer,
|
|
28
|
+
} from '../cdp-creator/types-new';
|
|
30
29
|
import { calculateUnitaryInterestSinceOracleLastUpdated } from '../interest-oracle/helpers';
|
|
31
30
|
import {
|
|
32
31
|
approximateLeverageRedemptions,
|
|
@@ -34,33 +33,41 @@ import {
|
|
|
34
33
|
calculateLeverageFromCollateralRatio,
|
|
35
34
|
MAX_REDEMPTIONS_WITH_CDP_OPEN,
|
|
36
35
|
} from './helpers';
|
|
37
|
-
|
|
38
|
-
buildRedemptionsTx,
|
|
39
|
-
randomLrpsSubsetSatisfyingTargetLovelaces,
|
|
40
|
-
} from '../lrp/helpers';
|
|
36
|
+
|
|
41
37
|
import {
|
|
42
38
|
parseCollateralAssetDatumOrThrow,
|
|
43
39
|
parseIAssetDatumOrThrow,
|
|
44
40
|
} from '../iasset/types';
|
|
41
|
+
import { mkAssetsOf } from '@3rd-eye-labs/cardano-offchain-common';
|
|
42
|
+
import { RobDatum } from '../rob/types-new';
|
|
43
|
+
import { rationalToFloat } from '../../types/rational';
|
|
45
44
|
import {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
} from '
|
|
49
|
-
import {
|
|
45
|
+
buildRedemptionsTx,
|
|
46
|
+
randomRobsSubsetSatisfyingTargetCollateral,
|
|
47
|
+
} from '../rob/helpers';
|
|
48
|
+
import { treasuryFeeTx } from '../treasury/transactions';
|
|
49
|
+
import Decimal from 'decimal.js';
|
|
50
|
+
import { fromDecimal } from '../../utils/bigint-utils';
|
|
51
|
+
import { calculateFeeFromRatio } from '../../utils/indigo-helpers';
|
|
52
|
+
import { retrieveAdjustedPrice } from '../../utils/oracle-helpers';
|
|
53
|
+
import { attachOracle } from '../iasset/helpers';
|
|
54
|
+
import { OracleIdx } from '../price-oracle/types-new';
|
|
50
55
|
|
|
51
|
-
export async function
|
|
56
|
+
export async function leverageCdpWithRob(
|
|
52
57
|
leverage: number,
|
|
53
58
|
baseCollateral: bigint,
|
|
54
|
-
priceOracleOutRef: OutRef,
|
|
59
|
+
priceOracleOutRef: OutRef | undefined,
|
|
55
60
|
iassetOutRef: OutRef,
|
|
56
61
|
collateralAssetOutRef: OutRef,
|
|
57
62
|
cdpCreatorOref: OutRef,
|
|
58
63
|
interestOracleOref: OutRef,
|
|
59
|
-
|
|
64
|
+
treasuryOref: OutRef,
|
|
60
65
|
sysParams: SystemParams,
|
|
61
66
|
lucid: LucidEvolution,
|
|
62
67
|
allRobs: [UTxO, RobDatum][],
|
|
63
68
|
currentSlot: number,
|
|
69
|
+
pythMessage: string | undefined = undefined,
|
|
70
|
+
pythStateOref: OutRef | undefined = undefined,
|
|
64
71
|
): Promise<TxBuilder> {
|
|
65
72
|
const network = lucid.config().network!;
|
|
66
73
|
const currentTime = BigInt(slotToUnixTime(network, currentSlot));
|
|
@@ -112,14 +119,6 @@ export async function leverageCdpWithLrp(
|
|
|
112
119
|
getInlineDatumOrThrow(interestOracleUtxo),
|
|
113
120
|
);
|
|
114
121
|
|
|
115
|
-
const priceOracleUtxo = matchSingle(
|
|
116
|
-
await lucid.utxosByOutRef([priceOracleOutRef]),
|
|
117
|
-
(_) => new Error('Expected a single price oracle UTXO'),
|
|
118
|
-
);
|
|
119
|
-
const priceOracleDatum = parsePriceOracleDatum(
|
|
120
|
-
getInlineDatumOrThrow(priceOracleUtxo),
|
|
121
|
-
);
|
|
122
|
-
|
|
123
122
|
const iassetUtxo = matchSingle(
|
|
124
123
|
await lucid.utxosByOutRef([iassetOutRef]),
|
|
125
124
|
(_) => new Error('Expected a single IAsset UTXO'),
|
|
@@ -136,14 +135,25 @@ export async function leverageCdpWithLrp(
|
|
|
136
135
|
getInlineDatumOrThrow(collateralAssetUtxo),
|
|
137
136
|
);
|
|
138
137
|
|
|
138
|
+
const [price, _] = await retrieveAdjustedPrice(
|
|
139
|
+
iassetDatum.assetName,
|
|
140
|
+
collateralAssetDatum.collateralAsset,
|
|
141
|
+
collateralAssetDatum.priceInfo,
|
|
142
|
+
collateralAssetDatum.extraDecimals,
|
|
143
|
+
priceOracleOutRef,
|
|
144
|
+
pythMessage,
|
|
145
|
+
sysParams.pythConfig,
|
|
146
|
+
lucid,
|
|
147
|
+
);
|
|
148
|
+
|
|
139
149
|
const maxLeverage = calculateLeverageFromCollateralRatio(
|
|
140
150
|
collateralAssetDatum.iasset,
|
|
151
|
+
collateralAssetDatum.collateralAsset,
|
|
141
152
|
collateralAssetDatum.maintenanceRatio,
|
|
142
153
|
baseCollateral,
|
|
143
|
-
|
|
144
|
-
iassetDatum.
|
|
145
|
-
iassetDatum.
|
|
146
|
-
sysParams.robParams,
|
|
154
|
+
price,
|
|
155
|
+
iassetDatum.debtMintingFeeRatio,
|
|
156
|
+
iassetDatum.redemptionReimbursementRatio,
|
|
147
157
|
allRobs,
|
|
148
158
|
);
|
|
149
159
|
|
|
@@ -154,8 +164,8 @@ export async function leverageCdpWithLrp(
|
|
|
154
164
|
const leverageSummary = approximateLeverageRedemptions(
|
|
155
165
|
baseCollateral,
|
|
156
166
|
leverage,
|
|
157
|
-
iassetDatum.
|
|
158
|
-
iassetDatum.
|
|
167
|
+
iassetDatum.redemptionProcessingFeeRatio,
|
|
168
|
+
iassetDatum.debtMintingFeeRatio,
|
|
159
169
|
);
|
|
160
170
|
|
|
161
171
|
if (maxLeverage < leverageSummary.leverage) {
|
|
@@ -163,8 +173,8 @@ export async function leverageCdpWithLrp(
|
|
|
163
173
|
}
|
|
164
174
|
|
|
165
175
|
if (
|
|
166
|
-
leverageSummary.collateralRatio
|
|
167
|
-
collateralAssetDatum.maintenanceRatio
|
|
176
|
+
rationalToFloat(leverageSummary.collateralRatio) <
|
|
177
|
+
rationalToFloat(collateralAssetDatum.maintenanceRatio)
|
|
168
178
|
) {
|
|
169
179
|
throw new Error(
|
|
170
180
|
"Can't have collateral ratio smaller than maintenance ratio",
|
|
@@ -172,83 +182,67 @@ export async function leverageCdpWithLrp(
|
|
|
172
182
|
}
|
|
173
183
|
|
|
174
184
|
const redemptionDetails = summarizeActualLeverageRedemptions(
|
|
175
|
-
leverageSummary.
|
|
176
|
-
iassetDatum.
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
randomLrpsSubsetSatisfyingTargetLovelaces(
|
|
185
|
+
leverageSummary.redeemedCollateral,
|
|
186
|
+
iassetDatum.redemptionReimbursementRatio,
|
|
187
|
+
price,
|
|
188
|
+
randomRobsSubsetSatisfyingTargetCollateral(
|
|
180
189
|
iassetDatum.assetName,
|
|
181
|
-
|
|
182
|
-
|
|
190
|
+
collateralAssetDatum.collateralAsset,
|
|
191
|
+
leverageSummary.redeemedCollateral,
|
|
192
|
+
price,
|
|
183
193
|
allRobs,
|
|
184
|
-
sysParams.robParams,
|
|
185
194
|
MAX_REDEMPTIONS_WITH_CDP_OPEN,
|
|
186
195
|
),
|
|
187
196
|
);
|
|
188
197
|
|
|
189
|
-
|
|
198
|
+
// payout / (1 - debtMintingFee) = total minted amount
|
|
199
|
+
const mintedAmt = fromDecimal(
|
|
200
|
+
Decimal(redemptionDetails.totalIAssetPayout)
|
|
201
|
+
.div(
|
|
202
|
+
Decimal(1).minus(
|
|
203
|
+
Decimal(iassetDatum.debtMintingFeeRatio.numerator).div(
|
|
204
|
+
iassetDatum.debtMintingFeeRatio.denominator,
|
|
205
|
+
),
|
|
206
|
+
),
|
|
207
|
+
)
|
|
208
|
+
.floor(),
|
|
209
|
+
);
|
|
190
210
|
|
|
191
|
-
const debtMintingFee =
|
|
192
|
-
iassetDatum.
|
|
193
|
-
|
|
211
|
+
const debtMintingFee = calculateFeeFromRatio(
|
|
212
|
+
iassetDatum.debtMintingFeeRatio,
|
|
213
|
+
mintedAmt,
|
|
194
214
|
);
|
|
195
215
|
|
|
196
216
|
const collateralAmt =
|
|
197
|
-
redemptionDetails.
|
|
217
|
+
redemptionDetails.totalRedeemedCollateral + baseCollateral;
|
|
198
218
|
|
|
199
219
|
const cdpNftVal = mkAssetsOf(
|
|
200
220
|
fromSystemParamsAsset(sysParams.cdpParams.cdpAuthToken),
|
|
201
221
|
1n,
|
|
202
222
|
);
|
|
203
223
|
|
|
204
|
-
const
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
},
|
|
211
|
-
mintedAmt,
|
|
212
|
-
);
|
|
224
|
+
const iassetClass = {
|
|
225
|
+
currencySymbol: fromHex(
|
|
226
|
+
sysParams.cdpParams.cdpAssetSymbol.unCurrencySymbol,
|
|
227
|
+
),
|
|
228
|
+
tokenName: iassetDatum.assetName,
|
|
229
|
+
};
|
|
213
230
|
|
|
214
|
-
const
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
231
|
+
const iassetTokensVal = mkAssetsOf(iassetClass, mintedAmt);
|
|
232
|
+
|
|
233
|
+
const refScripts = [
|
|
234
|
+
cdpCreatorRefScriptUtxo,
|
|
235
|
+
cdpAuthTokenPolicyRefScriptUtxo,
|
|
236
|
+
iAssetTokenPolicyRefScriptUtxo,
|
|
237
|
+
robScriptRefUtxo,
|
|
238
|
+
];
|
|
220
239
|
|
|
221
240
|
const tx = lucid
|
|
222
241
|
.newTx()
|
|
223
|
-
.validFrom(txValidity.validFrom)
|
|
224
|
-
.validTo(txValidity.validTo)
|
|
225
|
-
// Ref inputs
|
|
226
|
-
.readFrom([
|
|
227
|
-
priceOracleUtxo,
|
|
228
|
-
interestOracleUtxo,
|
|
229
|
-
iassetUtxo,
|
|
230
|
-
collateralAssetUtxo,
|
|
231
|
-
])
|
|
232
242
|
// Ref scripts
|
|
233
|
-
.readFrom(
|
|
234
|
-
cdpCreatorRefScriptUtxo,
|
|
235
|
-
cdpAuthTokenPolicyRefScriptUtxo,
|
|
236
|
-
iAssetTokenPolicyRefScriptUtxo,
|
|
237
|
-
robScriptRefUtxo,
|
|
238
|
-
])
|
|
243
|
+
.readFrom(refScripts)
|
|
239
244
|
.mintAssets(cdpNftVal, Data.void())
|
|
240
245
|
.mintAssets(iassetTokensVal, Data.void())
|
|
241
|
-
.collectFrom(
|
|
242
|
-
[cdpCreatorUtxo],
|
|
243
|
-
serialiseCDPCreatorRedeemer({
|
|
244
|
-
CreateCDP: {
|
|
245
|
-
cdpOwner: fromHex(pkh.hash),
|
|
246
|
-
minted: mintedAmt,
|
|
247
|
-
collateral: collateralAmt,
|
|
248
|
-
currentTime: currentTime,
|
|
249
|
-
},
|
|
250
|
-
}),
|
|
251
|
-
)
|
|
252
246
|
.pay.ToContract(
|
|
253
247
|
createScriptAddress(network, sysParams.validatorHashes.cdpHash, skh),
|
|
254
248
|
{
|
|
@@ -256,6 +250,7 @@ export async function leverageCdpWithLrp(
|
|
|
256
250
|
value: serialiseCdpDatum({
|
|
257
251
|
cdpOwner: fromHex(pkh.hash),
|
|
258
252
|
iasset: iassetDatum.assetName,
|
|
253
|
+
collateralAsset: collateralAssetDatum.collateralAsset,
|
|
259
254
|
mintedAmt: mintedAmt,
|
|
260
255
|
cdpFees: {
|
|
261
256
|
ActiveCDPInterestTracking: {
|
|
@@ -269,31 +264,108 @@ export async function leverageCdpWithLrp(
|
|
|
269
264
|
},
|
|
270
265
|
}),
|
|
271
266
|
},
|
|
272
|
-
addAssets(
|
|
267
|
+
addAssets(
|
|
268
|
+
cdpNftVal,
|
|
269
|
+
mkAssetsOf(collateralAssetDatum.collateralAsset, collateralAmt),
|
|
270
|
+
),
|
|
273
271
|
)
|
|
274
272
|
.pay.ToContract(
|
|
275
273
|
cdpCreatorUtxo.address,
|
|
276
|
-
{
|
|
274
|
+
{
|
|
275
|
+
kind: 'inline',
|
|
276
|
+
value: serialiseCDPCreatorDatum({
|
|
277
|
+
creatorInputOref: {
|
|
278
|
+
outputIndex: BigInt(cdpCreatorUtxo.outputIndex),
|
|
279
|
+
txHash: fromHex(cdpCreatorUtxo.txHash),
|
|
280
|
+
},
|
|
281
|
+
}),
|
|
282
|
+
},
|
|
277
283
|
cdpCreatorUtxo.assets,
|
|
278
|
-
)
|
|
279
|
-
|
|
284
|
+
);
|
|
285
|
+
|
|
286
|
+
const treasuryRefScriptUtxo =
|
|
287
|
+
debtMintingFee > 0n
|
|
288
|
+
? await treasuryFeeTx(
|
|
289
|
+
iassetClass,
|
|
290
|
+
debtMintingFee,
|
|
291
|
+
0n,
|
|
292
|
+
lucid,
|
|
293
|
+
sysParams,
|
|
294
|
+
tx,
|
|
295
|
+
cdpCreatorUtxo,
|
|
296
|
+
treasuryOref,
|
|
297
|
+
)
|
|
298
|
+
: undefined;
|
|
299
|
+
|
|
300
|
+
const { interval, referenceInputs: refInputs } = await attachOracle(
|
|
301
|
+
iassetDatum.assetName,
|
|
302
|
+
collateralAssetDatum.collateralAsset,
|
|
303
|
+
collateralAssetDatum.priceInfo,
|
|
304
|
+
priceOracleOutRef,
|
|
305
|
+
pythStateOref,
|
|
306
|
+
pythMessage,
|
|
307
|
+
sysParams.pythConfig,
|
|
308
|
+
sysParams.cdpCreatorParams.biasTime,
|
|
309
|
+
currentSlot,
|
|
310
|
+
lucid,
|
|
311
|
+
tx,
|
|
312
|
+
);
|
|
313
|
+
|
|
314
|
+
const referenceInputs = [
|
|
315
|
+
interestOracleUtxo,
|
|
316
|
+
iassetUtxo,
|
|
317
|
+
collateralAssetUtxo,
|
|
318
|
+
...refInputs,
|
|
319
|
+
];
|
|
320
|
+
|
|
321
|
+
const refInputsIndices = getInputIndices(referenceInputs, [
|
|
322
|
+
...referenceInputs,
|
|
323
|
+
...refScripts,
|
|
324
|
+
...(treasuryRefScriptUtxo != null ? [treasuryRefScriptUtxo] : []),
|
|
325
|
+
]);
|
|
326
|
+
|
|
327
|
+
const oracleIdx: OracleIdx =
|
|
328
|
+
priceOracleOutRef !== undefined
|
|
329
|
+
? { OracleRefInputIdx: refInputsIndices[3] }
|
|
330
|
+
: 'OracleVoid';
|
|
331
|
+
|
|
332
|
+
tx.validFrom(interval.validFrom)
|
|
333
|
+
.validTo(interval.validTo)
|
|
334
|
+
.readFrom(referenceInputs)
|
|
335
|
+
.collectFrom([cdpCreatorUtxo], {
|
|
336
|
+
kind: 'self',
|
|
337
|
+
makeRedeemer: (inputIdx) => {
|
|
338
|
+
return serialiseCDPCreatorRedeemer({
|
|
339
|
+
CreateCDP: {
|
|
340
|
+
cdpOwner: fromHex(pkh.hash),
|
|
341
|
+
minted: mintedAmt,
|
|
342
|
+
collateralAmt: collateralAmt,
|
|
343
|
+
currentTime: currentTime,
|
|
344
|
+
creatorInputIdx: inputIdx,
|
|
345
|
+
creatorOutputIdx: 1n,
|
|
346
|
+
cdpOutputIdx: 0n,
|
|
347
|
+
iassetRefInputIdx: refInputsIndices[1],
|
|
348
|
+
collateralAssetRefInputIdx: refInputsIndices[2],
|
|
349
|
+
interestOracleRefInputIdx: refInputsIndices[0],
|
|
350
|
+
priceOracleIdx: oracleIdx,
|
|
351
|
+
},
|
|
352
|
+
});
|
|
353
|
+
},
|
|
354
|
+
});
|
|
280
355
|
|
|
281
356
|
buildRedemptionsTx(
|
|
282
|
-
redemptionDetails.redemptions.map((r) => [
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
iassetDatum.redemptionReimbursementPercentage,
|
|
357
|
+
redemptionDetails.redemptions.map((r) => [r.utxo, r.iassetsPayoutAmt]),
|
|
358
|
+
iassetDatum.assetName,
|
|
359
|
+
collateralAssetDatum.collateralAsset,
|
|
360
|
+
price,
|
|
361
|
+
iassetDatum.redemptionReimbursementRatio,
|
|
288
362
|
sysParams,
|
|
289
363
|
tx,
|
|
290
|
-
2n,
|
|
364
|
+
2n + (debtMintingFee > 0n ? 1n : 0n),
|
|
365
|
+
refInputsIndices[2],
|
|
366
|
+
refInputsIndices[1],
|
|
367
|
+
oracleIdx,
|
|
291
368
|
);
|
|
292
369
|
|
|
293
|
-
if (debtMintingFee > 0) {
|
|
294
|
-
await collectorFeeTx(debtMintingFee, lucid, sysParams, tx, collectorOref);
|
|
295
|
-
}
|
|
296
|
-
|
|
297
370
|
return tx;
|
|
298
371
|
}
|
|
299
|
-
*/
|
|
@@ -195,6 +195,9 @@ export async function adjustStakingPosition(
|
|
|
195
195
|
kind: 'inline',
|
|
196
196
|
value: serialiseStakingDatum({
|
|
197
197
|
...stakingPositionOut.datum,
|
|
198
|
+
positionSnapshot: {
|
|
199
|
+
snapshotAda: stakingManagerOut.datum.managerSnapshot.snapshotAda,
|
|
200
|
+
},
|
|
198
201
|
lockedAmount: newLockedAmount,
|
|
199
202
|
}),
|
|
200
203
|
},
|
|
@@ -35,7 +35,10 @@ export async function treasuryFeeTx(
|
|
|
35
35
|
sysParams: SystemParams,
|
|
36
36
|
tx: TxBuilder,
|
|
37
37
|
actionOref: OutRef,
|
|
38
|
-
|
|
38
|
+
/**
|
|
39
|
+
* `undefined` in case using direct treasury payment.
|
|
40
|
+
*/
|
|
41
|
+
treasuryOref: OutRef | undefined,
|
|
39
42
|
): Promise<UTxO | null> {
|
|
40
43
|
const [asset, amt, extraLov] = ((): [AssetClass, bigint, bigint] => {
|
|
41
44
|
if (amountToPay <= 0 && extraLovelaces > 0) {
|
|
@@ -48,56 +51,75 @@ export async function treasuryFeeTx(
|
|
|
48
51
|
// If no fee is to be collected, do not include treasury collection.
|
|
49
52
|
if (amt <= 0n) return null;
|
|
50
53
|
|
|
51
|
-
|
|
52
|
-
await lucid.utxosByOutRef([treasuryOref]),
|
|
53
|
-
(_) => new Error('Expected a single treasury UTXO'),
|
|
54
|
-
);
|
|
54
|
+
let treasuryRefScriptUtxo = null;
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
]),
|
|
62
|
-
(_) => new Error('Expected a single treasury Ref Script UTXO'),
|
|
63
|
-
);
|
|
56
|
+
if (treasuryOref !== undefined) {
|
|
57
|
+
const treasuryUtxo = matchSingle(
|
|
58
|
+
await lucid.utxosByOutRef([treasuryOref]),
|
|
59
|
+
(_) => new Error('Expected a single treasury UTXO'),
|
|
60
|
+
);
|
|
64
61
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
62
|
+
treasuryRefScriptUtxo = matchSingle(
|
|
63
|
+
await lucid.utxosByOutRef([
|
|
64
|
+
fromSystemParamsScriptRef(
|
|
65
|
+
sysParams.scriptReferences.treasuryValidatorRef,
|
|
66
|
+
),
|
|
67
|
+
]),
|
|
68
|
+
(_) => new Error('Expected a single treasury Ref Script UTXO'),
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
tx.readFrom([treasuryRefScriptUtxo])
|
|
72
|
+
.collectFrom(
|
|
73
|
+
[treasuryUtxo],
|
|
74
|
+
serialiseTreasuryRedeemer({
|
|
75
|
+
Collect: {
|
|
76
|
+
assetToCollect: asset,
|
|
77
|
+
amountToCollect: amt,
|
|
78
|
+
extraLovelaces: extraLov,
|
|
79
|
+
actionInputOref: {
|
|
80
|
+
txHash: fromHex(actionOref.txHash),
|
|
81
|
+
outputIndex: BigInt(actionOref.outputIndex),
|
|
82
|
+
},
|
|
76
83
|
},
|
|
84
|
+
}),
|
|
85
|
+
)
|
|
86
|
+
.pay.ToContract(
|
|
87
|
+
mkTreasuryAddr(lucid, sysParams),
|
|
88
|
+
{
|
|
89
|
+
kind: 'inline',
|
|
90
|
+
value: serialiseTreasuryDatum({
|
|
91
|
+
treasuryInputOref: {
|
|
92
|
+
txHash: fromHex(treasuryOref.txHash),
|
|
93
|
+
outputIndex: BigInt(treasuryOref.outputIndex),
|
|
94
|
+
},
|
|
95
|
+
actionInputOref: {
|
|
96
|
+
txHash: fromHex(actionOref.txHash),
|
|
97
|
+
outputIndex: BigInt(actionOref.outputIndex),
|
|
98
|
+
},
|
|
99
|
+
}),
|
|
77
100
|
},
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
101
|
+
addAssets(
|
|
102
|
+
treasuryUtxo.assets,
|
|
103
|
+
mkAssetsOf(asset, amt),
|
|
104
|
+
mkLovelacesOf(extraLov),
|
|
105
|
+
),
|
|
106
|
+
);
|
|
107
|
+
} else {
|
|
108
|
+
tx.pay.ToContract(
|
|
81
109
|
mkTreasuryAddr(lucid, sysParams),
|
|
82
110
|
{
|
|
83
111
|
kind: 'inline',
|
|
84
112
|
value: serialiseTreasuryDatum({
|
|
85
|
-
treasuryInputOref:
|
|
86
|
-
txHash: fromHex(treasuryOref.txHash),
|
|
87
|
-
outputIndex: BigInt(treasuryOref.outputIndex),
|
|
88
|
-
},
|
|
113
|
+
treasuryInputOref: null,
|
|
89
114
|
actionInputOref: {
|
|
90
115
|
txHash: fromHex(actionOref.txHash),
|
|
91
116
|
outputIndex: BigInt(actionOref.outputIndex),
|
|
92
117
|
},
|
|
93
118
|
}),
|
|
94
119
|
},
|
|
95
|
-
addAssets(
|
|
96
|
-
treasuryUtxo.assets,
|
|
97
|
-
mkAssetsOf(asset, amt),
|
|
98
|
-
mkLovelacesOf(extraLov),
|
|
99
|
-
),
|
|
120
|
+
addAssets(mkAssetsOf(asset, amt), mkLovelacesOf(extraLov)),
|
|
100
121
|
);
|
|
122
|
+
}
|
|
101
123
|
|
|
102
124
|
return treasuryRefScriptUtxo;
|
|
103
125
|
}
|
|
@@ -14,7 +14,7 @@ export type WithdrawalOutputDatum = typeof WithdrawalOutputDatumSchema.Type;
|
|
|
14
14
|
|
|
15
15
|
const TreasuryDatumSchema = TSchema.Struct(
|
|
16
16
|
{
|
|
17
|
-
treasuryInputOref: OutputReferenceSchema,
|
|
17
|
+
treasuryInputOref: TSchema.NullOr(OutputReferenceSchema),
|
|
18
18
|
actionInputOref: OutputReferenceSchema,
|
|
19
19
|
},
|
|
20
20
|
{ flatFields: true },
|
package/src/index.ts
CHANGED
|
@@ -6,8 +6,6 @@ export * from './contracts/cdp/scripts';
|
|
|
6
6
|
export * from './contracts/cdp-creator/types';
|
|
7
7
|
export * from './contracts/cdp-creator/scripts';
|
|
8
8
|
export * from './contracts/poll/scripts';
|
|
9
|
-
export * from './contracts/poll/types-poll-new';
|
|
10
|
-
export * from './contracts/poll/helpers';
|
|
11
9
|
export * from './contracts/collector/transactions';
|
|
12
10
|
export * from './contracts/collector/types-new';
|
|
13
11
|
export * from './contracts/gov/transactions';
|
package/src/utils/utils.ts
CHANGED
|
@@ -23,6 +23,3 @@ export function loadSystemParamsFromUrl(url: string): Promise<SystemParams> {
|
|
|
23
23
|
.then((res: Response) => res.json())
|
|
24
24
|
.then((data: unknown) => data as SystemParams);
|
|
25
25
|
}
|
|
26
|
-
|
|
27
|
-
export const getRandomElement = <T>(arr: T[]) =>
|
|
28
|
-
arr.length ? arr[Math.floor(Math.random() * arr.length)] : undefined;
|
|
@@ -3,5 +3,5 @@ export const _cdpCreatorValidator = {
|
|
|
3
3
|
type: 'PlutusScriptV3',
|
|
4
4
|
description: 'Generated by Aiken',
|
|
5
5
|
cborHex:
|
|
6
|
-
'592929592926010100229800aba2aba1aba0aab9faab9eaab9dab9cab9a488888888cc896600264653001300b00198059806000cdc3a4005300b0024888966002600460166ea800e33001300c3754007370e90024dc3a4001300b375400891111919912cc004c014012264b300130180018992cc004c01cc050dd5000c4c8c8c8c8c8c8c8c8c8ca60026eb4c0880066046003375c6044015375a6044013375a6044011375a604400f375a604400d375a604400b375a6044009375a6044007375a6044004911111111112cc004c0b802a26464b3001301e001899192cc004c0c800a03b1640bc6eb4c0c0004c0b0dd5001456600260440031323259800981900140762c8178dd6981800098161baa0028acc004c07c0062b3001302c375400501b8b205a8b205240a48148c0a8dd5000981680545902b0c088004c084004c080004c07c004c078004c074004c070004c06c004c068004c054dd5000c59012180b800c5901518099baa00b8acc004c0240122b3001301337540170028b20288acc004c0180122b3001301337540170028b20288b202040408080660024602a602c602c602c602c602c602c003374a900048c054c0580064446466446600400400244b3001001801c4c8cc896600266e4401c00a2b30013371e00e0051001803202e899802802980f002202e375c602e0026eb4c060004c068005018191919800800803112cc00400600713233225980099b910090028acc004cdc78048014400600c80c226600a00a603e00880c0dd7180c0009bab3019001301b0014064297adef6c6014800244646600200200644b30010018a5eb8226644b3001300500289980c80119802002000c4cc010010005014180c000980c800a02c9b88480024602a602c602c602c602c0032301530163016001911919800800801911980180098010014966002600a60226ea80062602a60246ea80062c807a60206ea80264b300130043011375400312323375e602e60286ea8c05cc050dd5001000980b18099baa002891919baf301730143754004002602c60266ea800900f48888c8cc0040040148966002003133019337606ea4014dd400225eb7bdb1822653001375c602e003375a6030003301c00248896600266e4002400e26603a66ec0dd48049ba80080058acc004cdc7804801c6600201300880148cc078cdd81ba900a37500020051001401d13301d337606ea400cdd400119803003000a0304060301a0014061222232330010010052259800800c4cc064cdd81ba9005374c00897adef6c608994c004dd7180b800cdd5980c000cc0700092225980099b9000900389980e99bb037520126e980200162b30013371e01200719800804c02200523301e337606ea4028dd30008014400500744cc074cdd81ba9003374c0046600c00c00280c10180c068005018496600200314a314a0809a24444464b3001300900180144c00c00501419b800040039b81480024464b30013006001899192cc004c06800a00916405c6eb8c060004c050dd5001c5660026014003159800980a1baa0038014590154590112022301237540052259800980298091baa0028991919912cc004c06c00e00b1640606eb4c060004dd6980c001180c00098099baa0028b2020912cc004c014c048dd500144c8c8cc896600260360070058b2030375c60300026eb8c060008c060004c04cdd50014590104dc4a4009370e90044dd2a4004911111111111111111111114c00488c8cc00400400c896600200314c0103d87a80008992cc004cdd7981818169baa0010048980d99817800a5eb8226600600660620048150c0bc00502d488c0826002005375c605a60546ea80066eb8c05cc0a8dd5000a02c919912cc00528452f5bded8c113232330010014bd6f7b630112cc00400626606066ec0dd48029ba60034bd6f7b63044ca60026eb8c0b80066eacc0bc00660660049112cc004cdc8004801c4cc0d0cdd81ba9009374c00e00b15980099b8f00900389981a19bb037520126e9801c00626606866ec0dd48019ba60023300600600140bc817860620028178c8cc0040052f5bded8c044b300100189981799bb037520069810101004bd6f7b63044ca60026eb8c0b40066eb4c0b800660640049112cc004cdc8003801c4cc0cccdd81ba90074c010101000058acc004cdc7803801c4cc0cccdd81ba90074c0101010000189981999bb037520066ea0008cc01801800502e205c1818000a05c40a06eb8c0b0c0a4dd50009bae3016302937540032223259800800c528c56600260600031323298009bae30310019bad303130320019bae303100248896600266e3c0052201008acc004cdc7801a441008acc004c08cc0c0dd5003c56600266e252000002899b89002482026fb80a294102e44cdc4a40000048172294102e4528205c18188009bac302f0018a5040b48168c8cc004004ca60020030059919800800802912cc004006297adef6c608991981919bb0302f001374c64660020026eacc0c4008896600200314bd6f7b63044c8cc0d4cdd818190009ba83012375a606600266006006606e004606a0028198cc00c00cc0d0008c0c8005030200222259800801440062653001004981a001e6002005375c605e00337566060003222223259800980b800c00a260060028198c8ca6002003006802a00222259800801440062653001004981f001e6002005375c6072003375a607400300540748020c0f000903a280aa024401060640048180896600200314bd7044c8cc88cc88cc008008004896600200310038991981a9ba733035375200a6606a60640026606a606600297ae0330030033037002303500140cc6eacc0c000cdd718168009980180198190011818000a05c91192cc004c074006264b300130300018998049817800801c5902d18159baa0038acc004c084006264b300130300018998041817800801c5902d18159baa0038acc004c07800626464b3001303100280245902e1bae302f001302b37540071640a0814102818149baa002488888c9660026040027198009b804800644b30010018a4d13259800800c5268992cc004cdc81bae30313035003375c60620031330040043303400130360028a998182481326b65797320696e206173736f63696174697665206c697374206172656e277420696e20617363656e64696e67206f72646572001640bc60680028190c0d0005031488cc88c080cc0d0dd419b82375a606a0046eb4c0d4004cc0d0dd419b82375a606a606c0046eb4c0d4c0d80052f5c060606ea8008c0c0dd5000c8966002604400314c0103d87a80008acc004cdc4000a40011301e33032301e330323750601e004660646ea0c03c0052f5c097ae08980f19819180f198191ba800233032375000297ae04bd70205a40b5230323033303330333033303330333033001911919800800801912cc0040062980103d87a80008992cc004cdd78021819000c4c084cc0d4c0cc0052f5c1133003003303700240c0606a002819a4464b300130230018acc004c08cc0c0dd500145300103d87a80008a6103d879800040b91598009812000c566002604860606ea800a2980103d87a80008a6103d87b800040b913322598009814800c4c96600266e2000c0062980103d87980008acc004cdc4000801c530103d87b80008a6103d87a800040c48188dd6981b18199baa0048acc004c094006298103d87b80008a6103d879800040c08180dd6981a18189baa00330303754004817102e18179baa0029180e998189ba8001330314c10101004bd70488889660026602e00800b15980099baf301b3033375400a007198009bab30203033375400b002800a0108a5040c114a081824606460666066606600323032303330333033303330333033303330333033001918191819981998199819981998199819981998199819800c8c0c8c0ccc0ccc0ccc0ccc0ccc0ccc0ccc0cc006605c6ea8c0c4c0b8dd50134c0b8dd5011a4444444444444453001222598008014530103d87a80008acc004c0c80062605c66084608600497ae08cc00400e60880053012001400c81e90414c03803a444b30013371000290004520008acc004c0c80062900144c966002606666e1800920048cc0040126002007337060049002200889800cc00401260020073370660260049002200840f86e0800903d207a9192cc004c0c4c0f8dd5000c4c108c0fcdd5000c54cc0f5241263c65787065637465643e2044656e6f6d696e61746f722063616e6e6f74206265207a65726f2e001640f06601a6eb4c104c0f8dd50009bad302b303e37540032302c330403259800981a981f1baa0018992cc004c0d8c0fcdd5181698201baa3043304037540071301933042375000297ae08980c998211ba833700002900125eb8103d1bad3042303f3754003100140f06082607c6ea8c104c0f8dd500099820192cc004c0d4c0f8dd5000c4c966002606c607e6ea8c0b4c100dd5181698201baa0038980c998211ba80014bd7044c064cc108dd41809000a5eb8103d1bad3042303f3754003100140f06082607c6ea8c0acc0f8dd5000a5eb826082005375c608000530410019bac3040001488888888a60026012013300700791119912cc004c0f400e200b19800802c00a6464004601c0026609a66ec0dd48009ba80034bd6f7b630488888c966002606400300289801800a09c329800802401e013222229800802c00e009002800a00c40d0a06081690481bae304c304937540046eb8c0d8c124dd50014c1280126eb4c1240126eb0c12400a6eb0c124c1280092222222323322323232323298009bad3058001982c182c800cdd6982c0064dd6982c0044cc018040dd6982c003cdd6982c0024dd6982c00124444444b3001304e305b37540071325980099baf3060305d375400209b1598009981a1bab304a305d3754609460ba6ea8004c180c174dd5031c4c96600260a060ba6ea8006264b300198009831182f9baa002981c198309831182f9baa304c305f375400697ae09800998309826998309831182f9baa0034bd7025eb82606a60c460be6ea8196980103d87a800040a5132598009829182f9baa0018992cc004cc0e0dd5982718309baa304e30613754002605460c26ea819e264b3001305430613754003132598009833800c4c96600260ac60c66ea80062646464646464646465300130700019bae30700099bad307000898380034c1c001660e00093070003992cc004c1b80062b30013049306d0018b44c190c1b400506b45906f1baa30700024888888896600260f2013133052307800f133052005133052004133052003133052002133053008132598009834183a9baa0018992cc004cc138dd59832183b9baa30643077375400260c060ee6ea81f6264b3001306e3077375400313259800983e800c4c8c96600260da60f46ea800a2646464646464646464646530013089010019bae30890100b9bad3089010099844808044c2240401e61120200d3089010059844808024dd6984480801cc966002610e020031598009831184300800c5a260fa610c0200284200a2c844008dd518448080124444444444b300130940100b89983618498080a0998320038998360030998368028998368020998368018992cc004c20c04006264b3001309601001899837184a8080080c459093011848809baa00b8acc004c21c040062b300130910137540170178b2124028b211c02423804611e026ea802a2c848808611202002611002002610e02002610c02002610a0200261080200261060200261040200261020200261000200260f66ea800a2c83c0566002b30013375e60a6660f8608460f46ea8200052f5c060fa60f46ea8c1f4c1e8dd51833983d1baa01a899baf30533307c3042307a37541000297ae0307d307a375460fa60f46ea8c19cc1e8dd5002452820ee8acc004cdc79bae307d307a375402e6eb8c1f4c1e8dd5000c4c96600260da60f46ea8006264b300133053375660d260f86ea8c1a4c1f0dd50009832983e1baa0038992cc004c1bcc1f0dd5000c4c8c8c8cc8966002610c0200713259800983a9841009baa001899192cc004c2240400a264b30019800820cc1b8c21804dd504600d30103d87a8000416513259800983c9843009baa0018acc0066002611402610e026ea800660ea661120260c0661120260aa610e026ea8234052f5c097ae098149984480983a9984480983a9984480983a99844809ba90444bd7019844809845009843809baa02433089013074308701375401c66112026ea00f4cc22404c1d4cc22404dd401799844809ba8337006eb4c22804c21c04dd5005acc004cdc41bad306f308701375401605f13370666e0ccdc119b823370205e6eb4c1bcc21c04dd50059bad308a01308701375460e8610e026ea802d208080a0f6f4acdbe01b48202c227efa8052080897a8a9984280a49015a001642100497ae04bd7025eb812f5c19800982e98379843809baa08d01983a1843809baa00e818207ea60103d87a8000414515980099912cc004c96600260fa00314a3159800984000800c528c528210e02421c046110026ea8cc154c23004c22404dd50011846009844809baa0018992cc004c1f000629462b30013080010018a518a50421c04843808c22004dd51982a983b1844809baa0023076308901375400314a0843008c118c154c21c04dd503e1823183a9984480983a9984480983019844809ba83370205e6eb4c138c21c04dd504680a5eb80cc22406600294698103d87a8000a60103d879800042100497ae033089013075330890130603308901375066e000bcdd698271843809baa08d014bd701984480cc00528d300103d87a8000a60103d879800042100497ae04bd7044c96600266ebcc1c4c22004dd503e9ba69800982f18381844009baa08e01800c0f9040456600264b3001307b3088013754003133223371266e08dd69847008009bad308e01308f01002337046eb4c23804008dd69847009847808009844809baa308c0130890137540026112026ea8cc164010c124c1e0c22404dd5008459086011982b81881f456600260e407d15980099b89375a609c6110026ea803c0c62b300132323298009bad308e010019bad308e01308f010019bae3051308b01375412203375660a66116026ea820006611c02004911112cc004c1e8016264b300100184680c566002612a0200314a308d01424804849008cc1ecc8cc1f01308cdd7984a809849009baa309501309201375460fe6124026ea8004008c1a4cc24804dd4801a5eb808c8cc8966002610c02003159800984a009baa003801459095014566002611402003159800984a009baa003801459095014566002610e02003159800984a009baa00380145909501456600266e1d20060018acc004c25004dd5001c00a2c84a80a2b3001306e0018991919194c004c26c040066eb4c26c0400e6eb4c26c0400922259800984f8080244cc1dcc2780401c566002611a026134026ea800e264646644b300130a301003806c590a0011bad30a001001375c6140020046140020026136026ea800e2c84c00a2c84e0086136020026134020026132020026128026ea800e2b30013370e9005000c5660026128026ea800e0051642540516424404848809091012122024244048488084cdd780099ba548020cc2500400ccc25004dd40039984a009ba80063309401082014bd701848809baa00132598009842009848809baa0018984a809849009baa0018b211e023305e003306a3309301309401309101375400297ae08a51423404308e010013259800acc004cdc4800a400114a114a084380a2661180298106d8799f4040ff003308c014c10100003308c014c10100004bd7044cc23004c23404008cc23004dd40009984600a610100004bd70210e02375a611802611a02002661140200266114026ea16600266e240f920008a4001132337066eb4c23004004dd69846009846808009844009baa33058305303e30483070308801375404a8428092f5c114a31533086014901243c65787065637465643e204d757374207061792064656274206d696e74696e67206665650016421405153308601491253c65787065637465643e204d696e20636f6c6c61746572616c20756e7361746973666965640016421405153308601491213c65787065637465643e204e6f6e706f736974697665206d696e74656420616d740016421405153308601491203c65787065637465643e20556e646572636f6c6c61746572697a6564204344500016421405153308601491223c65787065637465643e204d696e7465642076616c756520697320696e76616c6964001642140460ea661120260e8610e026ea823404cc22404c22804c21c04dd501225eb822a6610a029201203c65787065637465643e20496e636f72726563742074782076616c69646974790016421005153308501491203c65787065637465643e20434450206f757470757420697320696e76616c69640016421005164210046606e07405908101421c04646644b3001307a0018801456600260e400313305800230533304148050006264b3001307b30880137540031308c0130890137540031642180464b3001307f308801375400314c0103d87a80008983b99845809982c8019846009844809baa0014bd70210c023233225980099b8800248002260f26611a0260f26611a026ea0c1a8004cc23404dd4183500125eb812f5c1159800983a80144c1e4cc23404c1e4cc23404dd400099846809ba80024bd7025eb82298103d87a8000422004844008dd69846008009bad308c01308d01001308801375460a666082900a1833800a10a0242140464b300130790018acc006600294294294508401454cc21405240101570016898239845009843809baa002421005159800983e800c4c96600264b3001307f30880137540031337126eb4c1d8c22404dd50011bad308c013089013754003164218046116026110026ea8c1d4c22004dd5182b1844009baa07d8a9984300a48101580016898241845809844009baa00142140464b30013305f375660ea6110026ea8004c22c04c22004dd5001c4c96600260f66110026ea800626464646644b3001309201003899835984880802880345908f011847808009bad308f01002308f01001308e0100130890137540031642180460dc60e06110026ea80062c842808c96600260f400313259800983d9844009baa0018983b1844809baa308c01308901375400316421804660726eb0c1d4c22004dd503e9bad308b013088013754065159800983f000c4c96600260f66110026ea800626118026112026ea80062c843008cc0e4dd618381844009baa07d375a6116026110026ea80ca2a6610c029201014f0016421404842808c21804dd5018c4c96600260f4610e026ea8006264b3001307b308801375400313232325980098480080144cc1a4c23c0400c4c130c23c04c23004dd500245908d011847008009847008009844809baa0018b210c02308b01308801375400316421404660a86eacc13cc21c04dd503e18149984480983019844809845009843809baa0024bd7025eb810840121080230850137540026eb4c1b8c21804dd500698271842809baa00c8b210c02375a610e020026106026ea80062c840008c214040122c841808dd69841808009bad308301003308301001308201001307d37540031641e860c460c860f86ea8c1a4c1f0dd5000c59079183f183d9baa0018b20f03302b02f0258a9983c2491b3c65787065637465643e2077726f6e6720636f6c6c206173736574001641dd1533078491193c65787065637465643e204d697865642076657273696f6e73001641dc60f80031641e860f06ea80062c83a8c174c17cc1dcdd51832183b9baa0018b20e83079307637540031641cc6604c0540351641d83070001306f001306e001306d001306c001306b001306a00130690013064375400316418460cc00316419060c46ea80062c82f8c11cc124c184dd5182718309baa0018b20bc306330603754003164174660200286eb4c1880362a660ba92012b3c65787065637465643e2043445043726561746f72206f757470757420646f6573206e6f74206d61746368001641706e9520048b20b63300e011375a60c001b153305b4901203c65787065637465643e2043445043726561746f724e4654206d697373696e670016416916416860be60b86ea800e2c82c860b000260ae00260ac00260aa00260a800460a400244b300133710002900045300103d87a8000899805001000a09a305100411598009812009c4cc88ca6002660120020432232598009813000c4c8c96600260740050048b206e375c607000260686ea800e2b3001302a001899192cc004c0e800a0091640dc6eb8c0e0004c0d0dd5001c5903120623032375400537586068606a606a00530030034888966002604e60686ea8012264b30013300d37566046606c6ea8c08cc0d8dd5000981c981b1baa03c8992cc006600200f301f3037375407b4c103d87a8000402913259800981e000c4c966002605660706ea80062646464646465300130420019bad30420049bad30420039bad30420024888966002608e00b1329800899912cc004c0e0006264b3001304b0018992cc004c0e8c11cdd5000c4c8c8c966002609e0051332259800981f98261baa00289919192cc004c15000a26603c60a6006264b300130430018992cc004c15800626464b300130460018992cc004c16400626604660b000201316415860a86ea800a2b3001304a00189919194c004dd6982d000cdd6982d001cdd6982d0012444b3001305e00480745905b0c168004c164004c150dd500145905120a23052375400260aa00316414c60a26ea800a2b300130470018acc004c144dd500140162c82922c827104e18279baa0018b20a230520013052001304d3754005164128609c00626606400244b3001002804c4c9660026080609a6ea800626464653001375a60a8003375c60a8007375c60a80049112cc004c1600122601060b001316415430540013053001304e375400316412c60a000482722c8260dd61826800982680098241baa0018b208a304a0018b20903046375400f159800981e000c566002608c6ea801e00516411d16410c8218566002b3001301e3043375400314a314a0820a264b30010018800c54cc10d24012043445043726561746f72206f757470757420646f6573206e6f74206d6174636800100141086466446600400466064028605600244b30010018a508acc004c96600266ebcc0c0c120dd5000a60107d87b9fd87980ff008cc004dd5981a98241baa0018025300103d87a8000407514a08228c128006294626600400460960028221048180f19823807a5eb80c068c11cc110dd502545904118219baa00598219baa0019bad304700b4889660026072005132598009826000c4c966002607660906ea80062646464646465300130520019bae305200698290024c14800e60a4004911112cc004c16001a26606260ae01426606200626606200426606200226606200a021164154305200130510013050001304f001304e001304937540031641186096003164124608e6ea80122b3001303d0028992cc004c130006264b3001303b30483754003132323232323298009829000cdd718290034c14801260a400730520024888896600260b000d133031305700a1330310031330310021330310011330310050108b20aa1829000982880098280009827800982700098249baa0018b208c304b0018b209230473754009159800981d00144c966002609800313259800981d98241baa00189919191919191919194c004dd6982a800cdd7182a804cdd6982a803cc15401a60aa00b3055004982a801cc1540092222222259800982f004c4cc0d8c1740404cc0b80144cc0d80104cc0dc00c4cc0dc0084cc0dc00405a2c82d860aa00260a800260a600260a400260a200260a0002609e002609c00260926ea80062c8230c12c0062c8248c11cdd5002456600266e1d20060028992cc004c130006264b3001303b30483754003132323232323232323298009bad30550019bae30550099bad3055007982a8034c15401660aa0093055003982a801244444444b3001305e00989981b182e80809981700289981b00209981b80189981b80109981b80080b45905b0c154004c150004c14c004c148004c144004c140004c13c004c138004c124dd5000c590461825800c5904918239baa0048acc004c08400a264b3001304c0018992cc004c0ecc120dd5000c4c8c8c8c8c8c8c8c8ca60026eb8c1540066eb8c15402660aa00f3055006982a802cc1540126eb4c15400e6eb4c1540092222222259800982f004c4cc0d8c1740404cc0dc0184cc0dc0144cc0dc0104cc0e000c05a2c82d860aa00260a800260a600260a400260a200260a0002609e002609c00260926ea80062c8230c12c0062c8248c11cdd5002456600266e1d200a0028992cc004c130006264b3001303b304837540031323232323232323232323298009bae30570019bae305700b982b804cc15c02260ae00f3259800982a800c566002606060a80031689825982a000a0a48b20ac375460ae00d3259800982a800c566002606060a80031689825982a000a0a48b20ac375460ae00b30570049bad30570039bad3057002488888888896600260c401713303a306101413303b00813303b00713303b00613303c00301a8b20be182b800982b000982a800982a00098298009829000982880098280009827800982700098249baa0018b208c304b0018b20923047375400915980099b874803000a264b3001304c0018992cc004c0ecc120dd5000c4c8c8c8c8c8c8c8c8c8c8c8ca600260b0003375a60b0019375a60b0017375a60b0015375a60b0013375a60b0011375a60b000f375a60b000d375a60b000b375a60b0009375a60b0004911111111112cc004c19003226607c60c601c266058016039164184305800130570013056001305500130540013053001305200130510013050001304f001304e001304937540031641186096003164124608e6ea80122b30013370e900700144c966002609800313259800981d98241baa00189919912cc004c1400062660666eb0c13c004896600200500a89919912cc004c154006264b30013044305137540031323259800982c00144c01cc1600222c82a8dd7182b00098291baa0018b209e30540018b20a4375c60a400260a60026eb0c14400904f45904d1bad304d001304e001304937540031641186096003164124608e6ea80122b30013370e900800144c8c966002609a0050058b2094375c6096002608e6ea80122c8221044208841108221044208841108220608c013164110304200130410013040001303f001303e001303937540031640d8603c604060706ea8c094c0e0dd5181d800c590394c00401e607460766076607660766076606e6ea80f698103d8798000402903240e06072606c6ea8c08cc0d8dd5000c54cc0d1241253c65787065637465643e2043445043726561746f72204e46542069732070726573656e742e001640cc6070606a6ea80122c81906eb0c0cc004888c96600260480031323259800981c00140122c81a8dd7181b00098191baa0038acc004c0a00062646644b3001303900189980e1bac30380012259800801401e33001009981d00144c004c0ec00900920708b206c375a606c002606e00260646ea800e2c817902f18181baa002302e3754047132332259800981198181baa0018992cc004c0a0c0c4dd5000c4cc89660026070003132598009813981a1baa00189919912cc004c0f000626603e6eb0c0ec0048966002005132598009816981d1baa001899191980080098071bab3026303d375406444b30010018a508acc004cdc79bae30410010038a518998010011821000a07640fc6eb8c0f8c0ecdd5000c5903819198008009bac3028303b375400e44b30010018a60103d87a80008992cc006600266ebc00530103d87a8000a50a5140e9100189980180198208012074325980099b8f375c60800020171302b3303f304030410014bd7045300103d87a800040e86eb0c0fc00503d44c8c8cc896600260840071300530420068b207e375c607e0026eb8c0fc008c0fc004dd6181e80120768b2072375a60720026074002606a6ea80062c8190c068c070c0d0dd51810981a1baa30370018b206a375c606a60646ea800660026eb0c07cc0c8dd5013cc084c0c8dd501c530103d879800040151640bc606860626ea8c0d0c0c4dd5180f18189baa3034303137540031640b860020026600e6eb0c0c8c0bcdd501200f912cc004006297ae08998191817981980099801001181a000a06240ac8158888c8cc0700108c008c07cc0c8dd5000acc004c088c0bcdd5000c48cc020dd5980f18189baa00100389180dcc004dd5980f18189baa0019bae303430313754007375c603c60626ea800d01d205a0c050c054014c04c011164024300b00130063754017149a26cac801854cc0092401373c65787065637465643e2053696e676c6520747265617375727920696e707574207769746820636f72726563742072656465656d65722e001615330024911d3c65787065637465643e204e6f204344507320617265207370656e742e001601',
|
|
6
|
+
'59296c592969010100229800aba2aba1aba0aab9faab9eaab9dab9cab9a488888888c96600264653001300a00198051805800cdc3a4005300a0024888966002600460146ea800e33001300b3754007370e90024dc3a4001300a375400891111919912cc004c014012264b300130170018992cc004c01cc04cdd5000c4c8c8c8c8c8c8c8c8c8ca60026eb4c0840066044003375c6042015375a6042013375a6042011375a604200f375a604200d375a604200b375a6042009375a6042007375a6042004911111111112cc004c0b402a26464b3001301e001899192cc004c0c400a03b1640b86eb4c0bc004c0acdd5001456600260440031323259800981880140762c8170dd6981780098159baa0028acc004c07c0062b3001302b375400501b8b20588b205040a08140c0a4dd5000981600545902a0c084004c080004c07c004c078004c074004c070004c06c004c068004c064004c050dd5000c59011180b000c5901418091baa00b8acc004c0240122b3001301237540170028b20268acc004c0180122b3001301237540170028b20268b201e403c80786600246028602a602a602a602a602a602a003374a900048c050c0540064446466446600400400244b3001001801c4c8cc896600266e4401c00a2b30013371e00e0051001803202c899802802980e802202c375c602c0026eb4c05c004c064005017191919800800803112cc00400600713233225980099b910090028acc004cdc78048014400600c80ba26600a00a603c00880b8dd7180b8009bab3018001301a0014060297adef6c6014800244646600200200644b30010018a5eb8226644b3001300500289980c00119802002000c4cc010010005013180b800980c000a02a9b884800246028602a602a602a602a0032232330010010032233003001300200292cc004c014c040dd5000c4c050c044dd5000c5900e48c050c054c054006601e6ea8026444b300130060018a5eb7bdb182264646600200297adef6c602259800800c4cc060cdd81ba9006374c00697adef6c608994c004dd7180b000cdd5980b800cc06c0092225980099b9000a00389980e19bb037520146e9801c0162b30013371e01400713301c337606ea4028dd3003800c4cc070cdd81ba9003374c0046600c00c00280b90170c0640050171919800800a5eb7bdb1808966002003133017337606ea4010dd4001a5eb7bdb1822653001375c602a003375a602c003301a00248896600266e4002000e26603666ec0dd48041ba80070058acc004cdc7804001c4cc06ccdd81ba9008375000e00313301b337606ea400cdd400119803003000a02c40583018001405880824464b30013006001899192cc004c06400a0091640586eb8c05c004c04cdd5001c566002601400315980098099baa0038014590144590102020301137540052259800980298089baa0028991919912cc004c06800e00b16405c6eb4c05c004dd6980b801180b80098091baa0028b201e912cc004c014c044dd500144c8c8cc896600260340070058b202e375c602e0026eb8c05c008c05c004c048dd500145900f48888c8cc0040040148966002003133018337606ea4014dd400225eb7bdb1822653001375c602c003375a602e003301b00248896600266e4002400e26603866ec0dd48049ba80080058acc004cdc7804801c6600201300880148cc074cdd81ba900a37500020051001401d13301c337606ea400cdd400119803003000a02e405c3019001405d222232330010010052259800800c4cc060cdd81ba9005374c00897adef6c608994c004dd7180b000cdd5980b800cc06c0092225980099b9000900389980e19bb037520126e980200162b30013371e01200719800804c02200523301d337606ea4028dd30008014400500744cc070cdd81ba9003374c0046600c00c00280b90170c064005017496600200314a314a0809224444464b3001300900180144c00c00501319b8000400392cc004c010c040dd5000c48c8cdd7980b18099baa301630133754004002602a60246ea800a246466ebcc058c04cdd5001000980a98091baa0024039370290004dc4a4009370e90044dd2a40049111111111111111111111114c00488c8cc00400400c896600200314c0103d87a80008992cc004cdd7981818169baa0010048980e19817800a5eb8226600600660620048150c0bc00502d488c0866002005375c605a60546ea80066eb8c060c0a8dd5000a02e94c004dd7181618149baa0019bae3017302937540034800900e488c966002603c003132598009818000c4cc03cc0bc00400e2c8168c0acdd5001c5660026044003132598009818000c4cc038c0bc00400e2c8168c0acdd5001c566002603e0031323259800981880140122c8170dd7181780098159baa0038b205040a08140c0a4dd50014888c96600200314a31598009818000c4c8ca60026eb8c0c40066eb4c0c4c0c80066eb8c0c40092225980099b8f001489008acc004cdc7801a441008acc004c090c0c0dd5003c56600266e252000002899b89002482026fb80a294102e44cdc4a40000048172294102e4528205c18188009bac302f0018a5040b48168c8cc004004ca60020030059919800800802912cc004006297adef6c608991981919bb0302f001374c64660020026eacc0c4008896600200314bd6f7b63044c8cc0d4cdd818190009ba8300f375a606600266006006606e004606a0028198cc00c00cc0d0008c0c8005030200222259800801440062653001004981a001e6002005375c605e00337566060003222223259800980a800c00a260060028198c8ca6002003006802a00222259800801440062653001004981f001e6002005375c6072003375a6074003005406c8020c0f000903a2809a020401060640048180896600200314bd7044c8cc88cc88cc008008004896600200310038991981a9ba733035375200a6606a60640026606a606600297ae0330030033037002303500140cc6eacc0c000cdd718168009980180198190011818000a05c488888cc8966002604402b198009b804800644b30010018a4d13259800800c5268992cc004cdc81bae30323036003375c60640031330040043303500130370028a99818a49326b65797320696e206173736f63696174697665206c697374206172656e277420696e20617363656e64696e67206f72646572001640c0606a0028198c0d4005032488cc88c088cc0d4dd419b82375a606c0046eb4c0d8004cc0d4dd419b82375a606c606e0046eb4c0d8c0dc0052f5c060626ea8008c0c4dd5000c8966002604800314c0103d87a80008acc004cdc4000a400113020330333020330333750601a004660666ea0c0340052f5c097ae089810198199810198199ba800233033375000297ae04bd70205c40b9230333034303430343034303430343034001911919800800801912cc0040062980103d87a80008992cc004cdd78021819800c4c08ccc0d8c0d00052f5c1133003003303800240c4606c00281a24464b300130250018acc004c094c0c4dd500145300103d87a80008a6103d879800040bd1598009813000c566002604c60626ea800a2980103d87a80008a6103d87b800040bd13322598009815800c4c96600266e2000c0062980103d87980008acc004cdc4000801c530103d87b80008a6103d87a800040c88190dd6981b981a1baa0048acc004c09c006298103d87b80008a6103d879800040c48188dd6981a98191baa00330313754004817902f18181baa0029180f998191ba8001330324c10101004bd70488889660026602200800b15980099baf301b3034375400a007198009bab30223034375400b002800a0108a5040c514a0818a460666068606860680032303330343034303430343034303430343034303400191819981a181a181a181a181a181a181a181a181a181a000c8c0ccc0d0c0d0c0d0c0d0c0d0c0d0c0d0c0d0006605e6ea8c0c8c0bcdd50144c0bcdd5012a4444444444444453001222598008014530103d87a80008acc004c0d00062606066086608800497ae08cc00400e608a0053012001400c81f10424c03803a444b30013371000290004520008acc004c0d00062900144c966002606a66e1800920048cc0040126002007337060049002200889800cc00401260020073370660260049002200840fc6e0800903e207c9192cc004c0ccc0fcdd5000c4c10cc100dd5000c54cc0f9241263c65787065637465643e2044656e6f6d696e61746f722063616e6e6f74206265207a65726f2e001640f46601a6eb4c108c0fcdd50009bad302d303f37540032302e330413259800981b981f9baa0018992cc004c0e0c100dd5181798209baa3044304137540071301a33043375000297ae08980d198219ba833700002900125eb8103e1bad304330403754003100140f46084607e6ea8c108c0fcdd500099820992cc004c0dcc0fcdd5000c4c966002607060806ea8c0bcc104dd5181798209baa0038980d198219ba80014bd7044c068cc10cdd41809000a5eb8103e1bad304330403754003100140f46084607e6ea8c0b4c0fcdd5000a5eb826084005375c608200530420019bac3041001488888888a60026012013300700791112cc004c0f8006200919800802400e6464004601a0026609a66ec0dd48011ba80014bd6f7b630488888c966002606000300289801800a09c329800802402200f222229800802c00e009002800a00c40c8a05c81590484c12c0126eb4c1280126eb0c12800a6eb0c128c12c00922222229800912cc004cdc4000a400114c0103d87a8000899804801000a09a9114c00400e6eb8c150c144dd50014dd7181f98289baa002800a01098290024dd69828802244446464646464653001375a60b6003305b305c0019bad305b008998050091bad305b0069bad305b0049bad305b00248888896600260a260ba6ea800e264b30013375e60c460be6ea80041422b3001330363756609a60be6ea8c134c17cdd50009831182f9baa0658992cc004c14cc17cdd5000c4c9660033001306430613754005303a33063306430613754609e60c26ea800d2f5c130013306330503306330643061375400697ae04bd704c0dcc190c184dd5033d30103d87a800040a913259800982a98309baa0018992cc004cc0e8dd5982898319baa305130633754002605660c66ea81a6264b3001305730633754003132598009834800c4c96600260b260ca6ea80062646464646464646465300130720019bae30720099bad307200898390034c1c801660e40093072003992cc004c1c00062b3001304b306f0018b44c19cc1bc00506d4590711baa30720024888888896600260f601313305a307a00f13305a00513305a00413305a00313305a00213305b008132598009835983b9baa0018992cc004cc140dd59833983c9baa30673079375400260c660f26ea81fe264b300130713079375400313259800983f800c4c8c96600260e060f86ea800a264646464646464646464653001308b010019bae308b0100b9bad308b010099845808044c22c0401e61160200d308b010059845808024dd6984580801cc9660026112020031598009832184400800c5a261000261100200284300a2c845008dd518458080124444444444b300130960100b89983a184a8080a09983380389983a00309983a80289983a80209983a8018992cc004c21804006264b300130980100189983b184b8080080c459095011849809baa00b8acc004c228040062b300130930137540170178b2128028b2120024240046122026ea802a2c849808611602002611402002611202002611002002610e02002610c02002610a0200261080200261060200261040200260fa6ea800a2c83d0566002b30013375e60aa660fc608660f86ea8208052f5c060fe60f86ea8c1fcc1f0dd51835183e1baa01a899baf30553307e3043307c37541040297ae0307f307c375460fe60f86ea8c1a8c1f0dd5002452820f28acc004cdc79bae307f307c375402e6eb8c1fcc1f0dd5000c4c96600260e060f86ea8006264b300133055375660d860fc6ea8c1b0c1f8dd50009834183f1baa0038992cc004c1c8c1f8dd5000c4c8c8c8cc896600261100200713259800983c1842009baa001899192cc004c22c0400a264b300198008214c1bcc22004dd504700d30103d87a8000416d13259800983e1844009baa0018acc00660026118026112026ea800660f0661160260c4661160260ac6112026ea823c052f5c097ae098149984580983c1984580983c1984580983c19845809ba90454bd7019845809846009844809baa0243308b013077308901375401c66116026ea00f8cc22c04c1e0cc22c04dd401799845809ba8337006eb4c23004c22404dd5005acc004cdc41bad3070308901375401605f13370666e0ccdc119b823370205e6eb4c1c0c22404dd50059bad308c01308901375460ee6112026ea802d208080a0f6f4acdbe01b48202c227efa8052080897a8a9984380a49015a001642180497ae04bd7025eb812f5c19800982f98381844809baa08f01983b9844809baa00e81c2074a60103d87a8000414915980099912cc004c96600261000200314a3159800984180800c528c5282112024224046114026ea8cc158c23804c22c04dd50011847009845809baa0018992cc004c1fc00629462b30013083010018a518a50422404844808c22804dd51982b183c9845809baa0023079308b01375400314a0844008c11cc158c22404dd503f9823983c1984580983c1984580983119845809ba83370205e6eb4c13cc22404dd504780a5eb80cc22c06600294698103d87a8000a60103d879800042180497ae03308b0130783308b0130623308b01375066e000bcdd698279844809baa08f014bd701984580cc00528d300103d87a8000a60103d879800042180497ae04bd7044c96600266ebcc1d0c22804dd5040009ba69800983018389845009baa09001800c0fd03b456600264b3001307e308a013754003133223371266e08dd69848008009bad309001309101002337046eb4c24004008dd69848009848808009845809baa308e01308b0137540026116026ea8cc168010c128c1ecc22c04dd5008459088011982c01c81fc56600260ea07f15980099b89375a609e6114026ea803c0e62b300132323298009bad3090010019bad3090013091010019bae3052308d01375412603375660a8611a026ea820c06612002004911112cc004c1f401626464b30010018cc00411e6106026612c0200497ae0981a1984b009841809984b00a6103d87a80003309601085014bd7025eb83300198009bae3097013094013754007375c6104026128026ea800e00e83ca910100a441008032096a6103d87a80004199159800984c00800c4c8cc8966002611402003159800984b809baa003801459098014566002611c02003159800984b809baa003801459098014566002611602003159800984b809baa00380145909801456600266e1d20060018acc004c25c04dd5001c00a2c84c00a2b300130710018991919194c004c278040066eb4c2780400e6eb4c278040092225980098510080244cc20004c2840401c566002612202613a026ea800e264646644b300130a601003806c590a3011bad30a301001375c614602004614602002613c026ea800e2c84d80a2c84f808613c02002613a02002613802002612e026ea800e2b30013370e9005000c566002612e026ea800e005164260051642500484a0090940121280242500484a0084cdd780099ba548020cc25c04010cc25c04dd40041984b809ba80073309701086014bd70184a009baa0013259800984400984a009baa0018984c00984a809baa0018b21240233060004306d33096013097013094013754612e0200297ae08b212a02425404660fe09a466ebcc25c04c25004dd5184b80984a009baa308201309401375400200460d666128026ea400d2f5c114a284780861200200264b30015980099b8900148002294229410890144cc2380530106d8799f4040ff003308e014c10100003308e014c10100004bd7044cc23804c23c04008cc23804dd40009984700a610100004bd70211202375a611c02611e02002661180200266118026ea16600266e240fd20008a4001132337066eb4c23804004dd69847009847808009845009baa33059305403f30493071308a01375404a8438092f5c114a31533088014901243c65787065637465643e204d757374207061792064656274206d696e74696e67206665650016421c05153308801491253c65787065637465643e204d696e20636f6c6c61746572616c20756e7361746973666965640016421c05153308801491213c65787065637465643e204e6f6e706f736974697665206d696e74656420616d740016421c05153308801491203c65787065637465643e20556e646572636f6c6c61746572697a6564204344500016421c05153308801491223c65787065637465643e204d696e7465642076616c756520697320696e76616c69640016421c0460f0661160260ee6112026ea823c04cc22c04c23004c22404dd501225eb822a6610e029201203c65787065637465643e20496e636f72726563742074782076616c69646974790016421805153308701491203c65787065637465643e20434450206f757470757420697320696e76616c69640016421805164218046607407605908401422404646644b3001307d0018801456600260ea00313305900230543304248050006264b3001307e308a0137540031308e01308b0137540031642200464b3001308201308a01375400314c0103d87a80008983d19846809982d0019847009845809baa0014bd702110023233225980099b8800248002260f86611e0260f86611e026ea0c1a4004cc23c04dd4183480125eb812f5c1159800983c00144c1f0cc23c04c1f0cc23c04dd400099847809ba80024bd7025eb82298103d87a8000422804845008dd69847008009bad308e01308f01001308a01375460a866084900a1833000a10e02421c0464b3001307c0018acc006600294294294508601454cc21c05240101570016898241846009844809baa002421805159800984000800c4c96600264b3001308201308a0137540031337126eb4c1e4c22c04dd50011bad308e01308b01375400316422004611a026114026ea8c1e0c22804dd5182b9845009baa080018a9984400a48101580016898249846809845009baa001421c0464b300133061375660f06114026ea8004c23404c22804dd5001c4c96600260fc6114026ea800626464646644b30013094010038998399849808028803459091011848808009bad309101002309101001309001001308b0137540031642200460e460e26114026ea80062c843808c96600260fa00313259800983f1845009baa0018983c9845809baa308e01308b01375400316422004660786eb0c1e0c22804dd5040009bad308d01308a013754063159800984080800c4c96600260fc6114026ea80062611c026116026ea80062c844008cc0f0dd618389845009baa08001375a611a026114026ea80c62a66110029201014f0016421c04843808c22004dd501844c96600260fa6112026ea8006264b3001307e308a01375400313232325980098490080144cc1c4c2440400c4c134c24404c23804dd500245908f011848008009848008009845809baa0018b211002308d01308a01375400316421c04660aa6eacc140c22404dd503f98149984580983119845809846009844809baa0024bd7025eb8108601210c0230870137540026eb4c1bcc22004dd500698279843809baa00c8b211002375a611202002610a026ea80062c841008c21c040122c842808dd69842808009bad308501003308501001308401001307f37540031641f060cc60ca60fc6ea8c1b0c1f8dd5000c5907b184000983e9baa0018b20f43302e0300248a9983d2491b3c65787065637465643e2077726f6e6720636f6c6c206173736574001641e5153307a491193c65787065637465643e204d697865642076657273696f6e73001641e460fc0031641f060f46ea80062c83b8c184c180c1e4dd51833983c9baa0018b20ec307b307837540031641d4660520560351641e0307200130710013070001306f001306e001306d001306c001306b0013066375400316418c60d000316419860c86ea80062c8308c12cc128c18cdd5182898319baa0018b20c030653062375400316417c6602602a6eb4c1900322a660be92012b3c65787065637465643e2043445043726561746f72206f757470757420646f6573206e6f74206d61746368001641786e9520048b20ba33011012375a60c4019153305d4901203c65787065637465643e2043445043726561746f724e4654206d697373696e670016417116417060c260bc6ea800e2c82d860b600260b400260b200260b000260ae00260ac0041159800981300ac4cc88ca6002660140020472232598009814000c4c8c96600260760050048b2070375c6072002606a6ea800e2b3001302c001899192cc004c0ec00a0091640e06eb8c0e4004c0d4dd5001c590322064303337540053758606a606c606c005300300348889660026052606a6ea8012264b30013300e3756604a606e6ea8c094c0dcdd5000981d181b9baa03d8992cc006600200f301f3038375407d4c103d87a8000402d13259800981e800c4c966002605a60726ea80062646464646465300130430019bad30430049bad30430039bad30430024888966002609000b1329800899912cc004c0e8006264b3001304c0018992cc004c0f0c120dd5000c4c8c8c96600260a00051332259800982098269baa00289919192cc004c15400a26603c60a8006264b300130450018992cc004c15c00626464b300130480018992cc004c16800626604660b200201316415c60aa6ea800a2b3001304c00189919194c004dd6982d800cdd6982d801cdd6982d8012444b3001305f00480745905c0c16c004c168004c154dd500145905220a43053375400260ac00316415060a46ea800a2b300130490018acc004c148dd500140162c829a2c827904f18281baa0018b20a430530013053001304e375400516412c609e00626606a00244b3001002804c4c9660026084609c6ea800626464653001375a60aa003375c60aa007375c60aa0049112cc004c1640122601060b201316415830550013054001304f375400316413060a2004827a2c8268dd61827000982700098249baa0018b208c304b0018b20923047375400f159800981f000c566002608e6ea801e0051641211641108220566002b3001301f3044375400314a314a08212264b30010018800c54cc11124012043445043726561746f72206f757470757420646f6573206e6f74206d61746368001001410d3001011980f1982380725eb8298107d87b9fd87980ff00980d982418229baa04ba6103d87a8000405d16410860886ea801660886ea80066eb4c12002d22259800981d80144c966002609a00313259800981e98249baa00189919191919194c004c14c0066eb8c14c01a60a600930530039829801244444b3001305900689981c182c00509981c00189981c00109981c00089981c0028084590560c14c004c148004c144004c140004c13c004c128dd5000c590471826000c5904a18241baa0048acc004c0fc00a264b3001304d0018992cc004c0f4c124dd5000c4c8c8c8c8c8ca600260a6003375c60a600d30530049829801cc14c0092222259800982c80344cc0e0c1600284cc0e000c4cc0e00084cc0e00044cc0e00140422c82b060a600260a400260a200260a0002609e00260946ea80062c8238c1300062c8250c120dd500245660026078005132598009826800c4c966002607a60926ea800626464646464646464653001375a60ac003375c60ac013375a60ac00f3056006982b002cc15801260ac00730560024888888896600260be01313303d305e01013303000513303d00413303e00313303e00213303e0010168b20b8182b000982a800982a0009829800982900098288009828000982780098251baa0018b208e304c0018b20943048375400915980099b874801800a264b3001304d0018992cc004c0f4c124dd5000c4c8c8c8c8c8c8c8c8ca60026eb4c1580066eb8c1580266eb4c15801e60ac00d3056005982b0024c15800e60ac004911111112cc004c17c02626607a60bc02026606000a26607a00826607c00626607c00426607c00202d1641703056001305500130540013053001305200130510013050001304f001304a375400316411c609800316412860906ea80122b300130220028992cc004c134006264b3001303d30493754003132323232323232323298009bae30560019bae3056009982b003cc15801a60ac00b30560049bad30560039bad30560024888888896600260be01313303d305e01013303e00613303e00513303e00413303f0030168b20b8182b000982a800982a0009829800982900098288009828000982780098251baa0018b208e304c0018b20943048375400915980099b874802800a264b3001304d0018992cc004c0f4c124dd5000c4c8c8c8c8c8c8c8c8c8c8ca60026eb8c1600066eb8c16002e60b00133058008982c003cc96600260ac0031598009818982a800c5a2609a60aa002829a2c82b8dd5182c0034c96600260ac0031598009818982a800c5a2609a60aa002829a2c82b8dd5182c002cc1600126eb4c16000e6eb4c1600092222222222598009831805c4cc104c1880504cc1080204cc10801c4cc1080184cc10c00c06a2c830060b000260ae00260ac00260aa00260a800260a600260a400260a200260a0002609e00260946ea80062c8238c1300062c8250c120dd5002456600266e1d200c0028992cc004c134006264b3001303d3049375400313232323232323232323232329800982c800cdd6982c8064dd6982c805cdd6982c8054dd6982c804cdd6982c8044dd6982c803cdd6982c8034dd6982c802cdd6982c8024dd6982c801244444444444b3001306500c899822983200709981600580e4590620c164004c160004c15c004c158004c154004c150004c14c004c148004c144004c140004c13c004c128dd5000c590471826000c5904a18241baa0048acc004cdc3a401c005132598009826800c4c966002607a60926ea80062646644b3001305100189981b1bac30500012259800801402a2646644b300130560018992cc004c118c148dd5000c4c8c96600260b20051300730590088b20ac375c60ae00260a66ea80062c8280c1540062c8298dd71829800982a0009bac305200241411641386eb4c138004c13c004c128dd5000c590471826000c5904a18241baa0048acc004cdc3a40200051323259800982700140162c8258dd7182600098241baa0048b208a41148229045208a41148229045208a1823804c590450c10c004c108004c104004c100004c0fc004c0e8dd5000c5903718109810181c9baa30273039375460780031640e93001007981d981e181e181e181e181e181c1baa03ea60103d8798000402d03440e46074606e6ea8c094c0dcdd5000c54cc0d5241253c65787065637465643e2043445043726561746f72204e46542069732070726573656e742e001640d06072606c6ea80122c81986eb0c0d0004888c966002604c0031323259800981c80140122c81b0dd7181b80098199baa0038acc004c0a80062646644b3001303a00189980f9bac30390012259800801401e33001009981d80144c004c0f000900920728b206e375a606e002607000260666ea800e2c818103018189baa002302f375404b132332259800981298189baa0018992cc004c0a8c0c8dd5000c4cc89660026072003132598009814981a9baa00189919912cc004c0f40062660446eb0c0f00048966002005132598009817981d9baa001899191980080098071bab3028303e375406844b30010018a508acc004cdc79bae30420010038a518998010011821800a07841006eb8c0fcc0f0dd5000c5903919198008009bac302a303c375400e44b30010018a60103d87a80008992cc006600266ebc00530103d87a8000a50a5140ed100189980180198210012076325980099b8f375c60820020171302d33040304130420014bd7045300103d87a800040ec6eb0c10000503e44c8c8cc896600260860071300530430068b2080375c60800026eb8c100008c100004dd6181f00120788b2074375a60740026076002606c6ea80062c8198c074c070c0d4dd51811981a9baa30380018b206c375c606c60666ea800660026eb0c084c0ccdd5014cc08cc0ccdd501cd30103d879800040191640c0606a60646ea8c0d4c0c8dd5181018191baa3035303237540031640bc6002002660106eb0c0ccc0c0dd5013010912cc004006297ae08998199818181a00099801001181a800a06440b08160888c8cc0740108c008c080c0c8dd5000acc004c08cc0bcdd5000c48cc020dd5980f98189baa00100389180e4c004dd5980f98189baa0019bae303430313754007375c603e60626ea800d01e205a222223232330010010072259800800c528456600264b300130040018acc004cdd7980e981b1baa0010078cc004dd59812181b1baa001803401500a452820668a5040cc607000314a3133002002303900140c881b0c03c0103013301400530120044590080c028004c014dd5005452689b2b200415330024911d3c65787065637465643e204e6f204344507320617265207370656e742e001601',
|
|
7
7
|
};
|