@typeberry/lib 0.2.0-daa61f5 → 0.2.0-dabd741
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/index.cjs +473 -375
- package/index.d.ts +1182 -1077
- package/index.js +445 -348
- package/package.json +1 -1
package/index.cjs
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
var assert = require('node:assert');
|
|
4
4
|
var fs = require('node:fs');
|
|
5
5
|
var os = require('node:os');
|
|
6
|
-
var node_url = require('node:url');
|
|
7
6
|
|
|
8
7
|
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
9
8
|
var GpVersion;
|
|
@@ -204,6 +203,13 @@ class WithDebug {
|
|
|
204
203
|
return inspect(this);
|
|
205
204
|
}
|
|
206
205
|
}
|
|
206
|
+
function lazyInspect(obj) {
|
|
207
|
+
return {
|
|
208
|
+
toString() {
|
|
209
|
+
return inspect(obj);
|
|
210
|
+
},
|
|
211
|
+
};
|
|
212
|
+
}
|
|
207
213
|
|
|
208
214
|
const env = typeof process === "undefined" ? {} : process.env;
|
|
209
215
|
/**
|
|
@@ -576,7 +582,7 @@ function isResult(x) {
|
|
|
576
582
|
* as an afterthought.
|
|
577
583
|
*/
|
|
578
584
|
|
|
579
|
-
var index$
|
|
585
|
+
var index$v = /*#__PURE__*/Object.freeze({
|
|
580
586
|
__proto__: null,
|
|
581
587
|
get CURRENT_SUITE () { return CURRENT_SUITE; },
|
|
582
588
|
get CURRENT_VERSION () { return CURRENT_VERSION; },
|
|
@@ -598,6 +604,7 @@ var index$u = /*#__PURE__*/Object.freeze({
|
|
|
598
604
|
deepEqual: deepEqual,
|
|
599
605
|
inspect: inspect,
|
|
600
606
|
isBrowser: isBrowser,
|
|
607
|
+
lazyInspect: lazyInspect,
|
|
601
608
|
measure: measure,
|
|
602
609
|
resultToString: resultToString,
|
|
603
610
|
safeAllocUint8Array: safeAllocUint8Array,
|
|
@@ -732,7 +739,7 @@ class Ordering {
|
|
|
732
739
|
}
|
|
733
740
|
}
|
|
734
741
|
|
|
735
|
-
var index$
|
|
742
|
+
var index$u = /*#__PURE__*/Object.freeze({
|
|
736
743
|
__proto__: null,
|
|
737
744
|
Ordering: Ordering
|
|
738
745
|
});
|
|
@@ -762,12 +769,13 @@ class BytesBlob {
|
|
|
762
769
|
}
|
|
763
770
|
/** Display a hex-encoded version of this byte blob, but truncated if it's large. */
|
|
764
771
|
toStringTruncated() {
|
|
772
|
+
const bytes = `${this.raw.length} ${this.raw.length === 1 ? "byte" : "bytes"}`;
|
|
765
773
|
if (this.raw.length > 32) {
|
|
766
774
|
const start = bytesToHexString(this.raw.subarray(0, 16));
|
|
767
775
|
const end = bytesToHexString(this.raw.subarray(this.raw.length - 16));
|
|
768
|
-
return `${start}...${end.substring(2)} (${
|
|
776
|
+
return `${start}...${end.substring(2)} (${bytes})`;
|
|
769
777
|
}
|
|
770
|
-
return this.toString()
|
|
778
|
+
return `${this.toString()} (${bytes})`;
|
|
771
779
|
}
|
|
772
780
|
toJSON() {
|
|
773
781
|
return this.toString();
|
|
@@ -983,7 +991,7 @@ function u8ArraySameLengthEqual(self, other) {
|
|
|
983
991
|
}
|
|
984
992
|
const bytesBlobComparator = (a, b) => a.compare(b);
|
|
985
993
|
|
|
986
|
-
var index$
|
|
994
|
+
var index$t = /*#__PURE__*/Object.freeze({
|
|
987
995
|
__proto__: null,
|
|
988
996
|
BitVec: BitVec,
|
|
989
997
|
Bytes: Bytes,
|
|
@@ -1085,7 +1093,7 @@ const minU64 = (a, ...values) => values.reduce((min, value) => (value > min ? mi
|
|
|
1085
1093
|
/** Get the biggest value between U64 a and values given as input parameters. */
|
|
1086
1094
|
const maxU64 = (a, ...values) => values.reduce((max, value) => (value < max ? max : value), a);
|
|
1087
1095
|
|
|
1088
|
-
var index$
|
|
1096
|
+
var index$s = /*#__PURE__*/Object.freeze({
|
|
1089
1097
|
__proto__: null,
|
|
1090
1098
|
isU16: isU16,
|
|
1091
1099
|
isU32: isU32,
|
|
@@ -2524,7 +2532,7 @@ function sequenceViewFixLen(type, { fixedLength }) {
|
|
|
2524
2532
|
}, skipper);
|
|
2525
2533
|
}
|
|
2526
2534
|
|
|
2527
|
-
var index$
|
|
2535
|
+
var index$r = /*#__PURE__*/Object.freeze({
|
|
2528
2536
|
__proto__: null,
|
|
2529
2537
|
Decoder: Decoder,
|
|
2530
2538
|
Descriptor: Descriptor,
|
|
@@ -3725,7 +3733,7 @@ var keyDerivation = /*#__PURE__*/Object.freeze({
|
|
|
3725
3733
|
trivialSeed: trivialSeed
|
|
3726
3734
|
});
|
|
3727
3735
|
|
|
3728
|
-
var index$
|
|
3736
|
+
var index$q = /*#__PURE__*/Object.freeze({
|
|
3729
3737
|
__proto__: null,
|
|
3730
3738
|
BANDERSNATCH_KEY_BYTES: BANDERSNATCH_KEY_BYTES,
|
|
3731
3739
|
BANDERSNATCH_PROOF_BYTES: BANDERSNATCH_PROOF_BYTES,
|
|
@@ -4363,7 +4371,7 @@ var keccak = /*#__PURE__*/Object.freeze({
|
|
|
4363
4371
|
// TODO [ToDr] (#213) this should most likely be moved to a separate
|
|
4364
4372
|
// package to avoid pulling in unnecessary deps.
|
|
4365
4373
|
|
|
4366
|
-
var index$
|
|
4374
|
+
var index$p = /*#__PURE__*/Object.freeze({
|
|
4367
4375
|
__proto__: null,
|
|
4368
4376
|
Blake2b: Blake2b,
|
|
4369
4377
|
HASH_SIZE: HASH_SIZE,
|
|
@@ -5000,7 +5008,7 @@ class TruncatedHashDictionary {
|
|
|
5000
5008
|
}
|
|
5001
5009
|
}
|
|
5002
5010
|
|
|
5003
|
-
var index$
|
|
5011
|
+
var index$o = /*#__PURE__*/Object.freeze({
|
|
5004
5012
|
__proto__: null,
|
|
5005
5013
|
ArrayView: ArrayView,
|
|
5006
5014
|
FixedSizeArray: FixedSizeArray,
|
|
@@ -5049,6 +5057,8 @@ const EC_SEGMENT_SIZE = 4104;
|
|
|
5049
5057
|
* Additional data that has to be passed to the codec to correctly parse incoming bytes.
|
|
5050
5058
|
*/
|
|
5051
5059
|
class ChainSpec extends WithDebug {
|
|
5060
|
+
/** Human-readable name of the chain spec. */
|
|
5061
|
+
name;
|
|
5052
5062
|
/** Number of validators. */
|
|
5053
5063
|
validatorsCount;
|
|
5054
5064
|
/** 1/3 of number of validators */
|
|
@@ -5091,6 +5101,7 @@ class ChainSpec extends WithDebug {
|
|
|
5091
5101
|
maxLookupAnchorAge;
|
|
5092
5102
|
constructor(data) {
|
|
5093
5103
|
super();
|
|
5104
|
+
this.name = data.name;
|
|
5094
5105
|
this.validatorsCount = data.validatorsCount;
|
|
5095
5106
|
this.thirdOfValidators = tryAsU16(Math.floor(data.validatorsCount / 3));
|
|
5096
5107
|
this.validatorsSuperMajority = tryAsU16(Math.floor(data.validatorsCount / 3) * 2 + 1);
|
|
@@ -5111,6 +5122,7 @@ class ChainSpec extends WithDebug {
|
|
|
5111
5122
|
}
|
|
5112
5123
|
/** Set of values for "tiny" chain as defined in JAM test vectors. */
|
|
5113
5124
|
const tinyChainSpec = new ChainSpec({
|
|
5125
|
+
name: "tiny",
|
|
5114
5126
|
validatorsCount: tryAsU16(6),
|
|
5115
5127
|
coresCount: tryAsU16(2),
|
|
5116
5128
|
epochLength: tryAsU32(12),
|
|
@@ -5132,6 +5144,7 @@ const tinyChainSpec = new ChainSpec({
|
|
|
5132
5144
|
* Please note that only validatorsCount and epochLength are "full", the rest is copied from "tiny".
|
|
5133
5145
|
*/
|
|
5134
5146
|
const fullChainSpec = new ChainSpec({
|
|
5147
|
+
name: "full",
|
|
5135
5148
|
validatorsCount: tryAsU16(1023),
|
|
5136
5149
|
coresCount: tryAsU16(341),
|
|
5137
5150
|
epochLength: tryAsU32(600),
|
|
@@ -5182,7 +5195,7 @@ var PvmBackend;
|
|
|
5182
5195
|
PvmBackend[PvmBackend["Ananas"] = 1] = "Ananas";
|
|
5183
5196
|
})(PvmBackend || (PvmBackend = {}));
|
|
5184
5197
|
|
|
5185
|
-
var index$
|
|
5198
|
+
var index$n = /*#__PURE__*/Object.freeze({
|
|
5186
5199
|
__proto__: null,
|
|
5187
5200
|
Bootnode: Bootnode,
|
|
5188
5201
|
ChainSpec: ChainSpec,
|
|
@@ -6689,7 +6702,7 @@ function reencodeAsView(codec, object, chainSpec) {
|
|
|
6689
6702
|
return Decoder.decodeObject(codec.View, encoded, chainSpec);
|
|
6690
6703
|
}
|
|
6691
6704
|
|
|
6692
|
-
var index$
|
|
6705
|
+
var index$m = /*#__PURE__*/Object.freeze({
|
|
6693
6706
|
__proto__: null,
|
|
6694
6707
|
Block: Block,
|
|
6695
6708
|
EpochMarker: EpochMarker,
|
|
@@ -6946,7 +6959,7 @@ var json;
|
|
|
6946
6959
|
json.object = object;
|
|
6947
6960
|
})(json || (json = {}));
|
|
6948
6961
|
|
|
6949
|
-
var index$
|
|
6962
|
+
var index$l = /*#__PURE__*/Object.freeze({
|
|
6950
6963
|
__proto__: null,
|
|
6951
6964
|
get json () { return json; },
|
|
6952
6965
|
parseFromJson: parseFromJson
|
|
@@ -7216,7 +7229,7 @@ const blockFromJson = (spec) => json.object({
|
|
|
7216
7229
|
extrinsic: getExtrinsicFromJson(spec),
|
|
7217
7230
|
}, ({ header, extrinsic }) => Block.create({ header, extrinsic }));
|
|
7218
7231
|
|
|
7219
|
-
var index$
|
|
7232
|
+
var index$k = /*#__PURE__*/Object.freeze({
|
|
7220
7233
|
__proto__: null,
|
|
7221
7234
|
blockFromJson: blockFromJson,
|
|
7222
7235
|
disputesExtrinsicFromJson: disputesExtrinsicFromJson,
|
|
@@ -7710,7 +7723,7 @@ class Logger {
|
|
|
7710
7723
|
}
|
|
7711
7724
|
}
|
|
7712
7725
|
|
|
7713
|
-
var index$
|
|
7726
|
+
var index$j = /*#__PURE__*/Object.freeze({
|
|
7714
7727
|
__proto__: null,
|
|
7715
7728
|
get Level () { return Level; },
|
|
7716
7729
|
Logger: Logger,
|
|
@@ -7741,7 +7754,7 @@ const DEFAULT_CONFIG = "default";
|
|
|
7741
7754
|
const NODE_DEFAULTS = {
|
|
7742
7755
|
name: isBrowser() ? "browser" : os.hostname(),
|
|
7743
7756
|
config: [DEFAULT_CONFIG],
|
|
7744
|
-
pvm: PvmBackend.
|
|
7757
|
+
pvm: PvmBackend.Ananas,
|
|
7745
7758
|
};
|
|
7746
7759
|
/** Chain spec chooser. */
|
|
7747
7760
|
var KnownChainSpec;
|
|
@@ -7925,7 +7938,7 @@ function isJsonObject(value) {
|
|
|
7925
7938
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
7926
7939
|
}
|
|
7927
7940
|
|
|
7928
|
-
var index$
|
|
7941
|
+
var index$i = /*#__PURE__*/Object.freeze({
|
|
7929
7942
|
__proto__: null,
|
|
7930
7943
|
DEFAULT_CONFIG: DEFAULT_CONFIG,
|
|
7931
7944
|
DEV_CONFIG: DEV_CONFIG,
|
|
@@ -8169,7 +8182,7 @@ function accumulationOutputComparator(a, b) {
|
|
|
8169
8182
|
if (result > 0) {
|
|
8170
8183
|
return Ordering.Greater;
|
|
8171
8184
|
}
|
|
8172
|
-
return
|
|
8185
|
+
return a.output.compare(b.output);
|
|
8173
8186
|
}
|
|
8174
8187
|
|
|
8175
8188
|
/** `O`: Maximum number of items in the authorizations pool. */
|
|
@@ -9066,26 +9079,6 @@ class InMemoryStateView {
|
|
|
9066
9079
|
}
|
|
9067
9080
|
}
|
|
9068
9081
|
|
|
9069
|
-
/** Dictionary entry of services that auto-accumulate every block. */
|
|
9070
|
-
class AutoAccumulate {
|
|
9071
|
-
service;
|
|
9072
|
-
gasLimit;
|
|
9073
|
-
static Codec = codec$1.Class(AutoAccumulate, {
|
|
9074
|
-
service: codec$1.u32.asOpaque(),
|
|
9075
|
-
gasLimit: codec$1.u64.asOpaque(),
|
|
9076
|
-
});
|
|
9077
|
-
static create({ service, gasLimit }) {
|
|
9078
|
-
return new AutoAccumulate(service, gasLimit);
|
|
9079
|
-
}
|
|
9080
|
-
constructor(
|
|
9081
|
-
/** Service id that auto-accumulates. */
|
|
9082
|
-
service,
|
|
9083
|
-
/** Gas limit for auto-accumulation. */
|
|
9084
|
-
gasLimit) {
|
|
9085
|
-
this.service = service;
|
|
9086
|
-
this.gasLimit = gasLimit;
|
|
9087
|
-
}
|
|
9088
|
-
}
|
|
9089
9082
|
/**
|
|
9090
9083
|
* https://graypaper.fluffylabs.dev/#/ab2cdbd/114402114402?v=0.7.2
|
|
9091
9084
|
*/
|
|
@@ -9103,7 +9096,9 @@ class PrivilegedServices {
|
|
|
9103
9096
|
registrar: Compatibility.isGreaterOrEqual(GpVersion.V0_7_1)
|
|
9104
9097
|
? codec$1.u32.asOpaque()
|
|
9105
9098
|
: ignoreValueWithDefault(tryAsServiceId(2 ** 32 - 1)),
|
|
9106
|
-
autoAccumulateServices:
|
|
9099
|
+
autoAccumulateServices: codec$1.dictionary(codec$1.u32.asOpaque(), codec$1.u64.asOpaque(), {
|
|
9100
|
+
sortKeys: (a, b) => a - b,
|
|
9101
|
+
}),
|
|
9107
9102
|
});
|
|
9108
9103
|
static create(a) {
|
|
9109
9104
|
return new PrivilegedServices(a.manager, a.delegator, a.registrar, a.assigners, a.autoAccumulateServices);
|
|
@@ -9338,6 +9333,15 @@ class InMemoryService extends WithDebug {
|
|
|
9338
9333
|
}),
|
|
9339
9334
|
};
|
|
9340
9335
|
}
|
|
9336
|
+
/** Return identical `InMemoryService` which does not share any references. */
|
|
9337
|
+
clone() {
|
|
9338
|
+
return new InMemoryService(this.serviceId, {
|
|
9339
|
+
info: ServiceAccountInfo.create(this.data.info),
|
|
9340
|
+
preimages: HashDictionary.fromEntries(Array.from(this.data.preimages.entries())),
|
|
9341
|
+
lookupHistory: HashDictionary.fromEntries(Array.from(this.data.lookupHistory.entries()).map(([k, v]) => [k, v.slice()])),
|
|
9342
|
+
storage: new Map(this.data.storage.entries()),
|
|
9343
|
+
});
|
|
9344
|
+
}
|
|
9341
9345
|
/**
|
|
9342
9346
|
* Create a new in-memory service from another state service
|
|
9343
9347
|
* by copying all given entries.
|
|
@@ -9708,7 +9712,7 @@ class InMemoryState extends WithDebug {
|
|
|
9708
9712
|
assigners: tryAsPerCore(new Array(spec.coresCount).fill(tryAsServiceId(0)), spec),
|
|
9709
9713
|
delegator: tryAsServiceId(0),
|
|
9710
9714
|
registrar: tryAsServiceId(MAX_VALUE),
|
|
9711
|
-
autoAccumulateServices:
|
|
9715
|
+
autoAccumulateServices: new Map(),
|
|
9712
9716
|
}),
|
|
9713
9717
|
accumulationOutputLog: SortedArray.fromArray(accumulationOutputComparator, []),
|
|
9714
9718
|
services: new Map(),
|
|
@@ -9727,11 +9731,10 @@ const serviceDataCodec = codec$1.dictionary(codec$1.u32.asOpaque(), serviceEntri
|
|
|
9727
9731
|
sortKeys: (a, b) => a - b,
|
|
9728
9732
|
});
|
|
9729
9733
|
|
|
9730
|
-
var index$
|
|
9734
|
+
var index$h = /*#__PURE__*/Object.freeze({
|
|
9731
9735
|
__proto__: null,
|
|
9732
9736
|
AUTHORIZATION_QUEUE_SIZE: AUTHORIZATION_QUEUE_SIZE,
|
|
9733
9737
|
AccumulationOutput: AccumulationOutput,
|
|
9734
|
-
AutoAccumulate: AutoAccumulate,
|
|
9735
9738
|
AvailabilityAssignment: AvailabilityAssignment,
|
|
9736
9739
|
BASE_SERVICE_BALANCE: BASE_SERVICE_BALANCE,
|
|
9737
9740
|
BlockState: BlockState,
|
|
@@ -10802,7 +10805,7 @@ const bitLookup = [
|
|
|
10802
10805
|
[0b00000000, 8],
|
|
10803
10806
|
];
|
|
10804
10807
|
|
|
10805
|
-
var index$
|
|
10808
|
+
var index$g = /*#__PURE__*/Object.freeze({
|
|
10806
10809
|
__proto__: null,
|
|
10807
10810
|
BranchNode: BranchNode,
|
|
10808
10811
|
InMemoryTrie: InMemoryTrie,
|
|
@@ -10852,7 +10855,6 @@ function* serializeRemovedServices(servicesRemoved) {
|
|
|
10852
10855
|
return;
|
|
10853
10856
|
}
|
|
10854
10857
|
for (const serviceId of servicesRemoved) {
|
|
10855
|
-
// TODO [ToDr] what about all data associated with a service?
|
|
10856
10858
|
const codec = serialize.serviceData(serviceId);
|
|
10857
10859
|
yield [StateEntryUpdateAction.Remove, codec.key, EMPTY_BLOB];
|
|
10858
10860
|
}
|
|
@@ -11170,7 +11172,7 @@ function loadState(spec, blake2b, entries) {
|
|
|
11170
11172
|
* hashmap of `key -> value` entries.
|
|
11171
11173
|
*/
|
|
11172
11174
|
|
|
11173
|
-
var index$
|
|
11175
|
+
var index$f = /*#__PURE__*/Object.freeze({
|
|
11174
11176
|
__proto__: null,
|
|
11175
11177
|
SerializedService: SerializedService,
|
|
11176
11178
|
SerializedState: SerializedState,
|
|
@@ -11415,7 +11417,7 @@ class InMemoryStates {
|
|
|
11415
11417
|
async close() { }
|
|
11416
11418
|
}
|
|
11417
11419
|
|
|
11418
|
-
var index$
|
|
11420
|
+
var index$e = /*#__PURE__*/Object.freeze({
|
|
11419
11421
|
__proto__: null,
|
|
11420
11422
|
InMemoryBlocks: InMemoryBlocks,
|
|
11421
11423
|
InMemorySerializedStates: InMemorySerializedStates,
|
|
@@ -11779,7 +11781,7 @@ const initEc = async () => {
|
|
|
11779
11781
|
await init.reedSolomon();
|
|
11780
11782
|
};
|
|
11781
11783
|
|
|
11782
|
-
var index$
|
|
11784
|
+
var index$d = /*#__PURE__*/Object.freeze({
|
|
11783
11785
|
__proto__: null,
|
|
11784
11786
|
N_CHUNKS_REDUNDANCY: N_CHUNKS_REDUNDANCY,
|
|
11785
11787
|
N_CHUNKS_REQUIRED: N_CHUNKS_REQUIRED,
|
|
@@ -12213,7 +12215,7 @@ class FuzzTarget {
|
|
|
12213
12215
|
}
|
|
12214
12216
|
}
|
|
12215
12217
|
|
|
12216
|
-
var index$
|
|
12218
|
+
var index$c = /*#__PURE__*/Object.freeze({
|
|
12217
12219
|
__proto__: null,
|
|
12218
12220
|
AncestryItem: AncestryItem,
|
|
12219
12221
|
ErrorMessage: ErrorMessage,
|
|
@@ -12231,9 +12233,9 @@ var index$b = /*#__PURE__*/Object.freeze({
|
|
|
12231
12233
|
stateRootCodec: stateRootCodec
|
|
12232
12234
|
});
|
|
12233
12235
|
|
|
12234
|
-
var index$
|
|
12236
|
+
var index$b = /*#__PURE__*/Object.freeze({
|
|
12235
12237
|
__proto__: null,
|
|
12236
|
-
v1: index$
|
|
12238
|
+
v1: index$c
|
|
12237
12239
|
});
|
|
12238
12240
|
|
|
12239
12241
|
/** Size of the transfer memo. */
|
|
@@ -12304,13 +12306,6 @@ var ForgetPreimageError;
|
|
|
12304
12306
|
})(ForgetPreimageError || (ForgetPreimageError = {}));
|
|
12305
12307
|
/**
|
|
12306
12308
|
* Errors that may occur when the transfer is invoked.
|
|
12307
|
-
*
|
|
12308
|
-
* TODO [ToDr] Since I don't fully understand yet which of these
|
|
12309
|
-
* could be checked directly in the host call (i.e. if we will
|
|
12310
|
-
* have access to the service account state there) for now I keep
|
|
12311
|
-
* them safely in the `AccumulationPartialState` implementation.
|
|
12312
|
-
* However, if possible, these should be moved directly to the
|
|
12313
|
-
* host call implementation.
|
|
12314
12309
|
*/
|
|
12315
12310
|
var TransferError;
|
|
12316
12311
|
(function (TransferError) {
|
|
@@ -12520,7 +12515,7 @@ function deepCloneMapWithArray(map) {
|
|
|
12520
12515
|
class AccumulationStateUpdate {
|
|
12521
12516
|
services;
|
|
12522
12517
|
transfers;
|
|
12523
|
-
|
|
12518
|
+
yieldedRoot;
|
|
12524
12519
|
/** Updated authorization queues for cores. */
|
|
12525
12520
|
authorizationQueues = new Map();
|
|
12526
12521
|
/** New validators data. */
|
|
@@ -12533,10 +12528,10 @@ class AccumulationStateUpdate {
|
|
|
12533
12528
|
/** Pending transfers. */
|
|
12534
12529
|
transfers,
|
|
12535
12530
|
/** Yielded accumulation root. */
|
|
12536
|
-
|
|
12531
|
+
yieldedRoot = null) {
|
|
12537
12532
|
this.services = services;
|
|
12538
12533
|
this.transfers = transfers;
|
|
12539
|
-
this.
|
|
12534
|
+
this.yieldedRoot = yieldedRoot;
|
|
12540
12535
|
}
|
|
12541
12536
|
/** Create new empty state update. */
|
|
12542
12537
|
static empty() {
|
|
@@ -12566,7 +12561,7 @@ class AccumulationStateUpdate {
|
|
|
12566
12561
|
storage: deepCloneMapWithArray(from.services.storage),
|
|
12567
12562
|
};
|
|
12568
12563
|
const transfers = [...from.transfers];
|
|
12569
|
-
const update = new AccumulationStateUpdate(serviceUpdates, transfers,
|
|
12564
|
+
const update = new AccumulationStateUpdate(serviceUpdates, transfers, from.yieldedRoot);
|
|
12570
12565
|
// update entries
|
|
12571
12566
|
for (const [k, v] of from.authorizationQueues) {
|
|
12572
12567
|
update.authorizationQueues.set(k, v);
|
|
@@ -12588,6 +12583,12 @@ class AccumulationStateUpdate {
|
|
|
12588
12583
|
this.transfers = [];
|
|
12589
12584
|
return transfers;
|
|
12590
12585
|
}
|
|
12586
|
+
/** Retrieve and clear yielded root. */
|
|
12587
|
+
takeYieldedRoot() {
|
|
12588
|
+
const yieldedRoot = this.yieldedRoot;
|
|
12589
|
+
this.yieldedRoot = null;
|
|
12590
|
+
return yieldedRoot;
|
|
12591
|
+
}
|
|
12591
12592
|
}
|
|
12592
12593
|
class PartiallyUpdatedState {
|
|
12593
12594
|
state;
|
|
@@ -12665,6 +12666,16 @@ class PartiallyUpdatedState {
|
|
|
12665
12666
|
}
|
|
12666
12667
|
/** Get status of a preimage of current service taking into account any updates. */
|
|
12667
12668
|
getLookupHistory(currentTimeslot, serviceId, hash, length) {
|
|
12669
|
+
const updatedService = this.stateUpdate.services.updated.get(serviceId);
|
|
12670
|
+
/** Return lookup history item for newly created service */
|
|
12671
|
+
if (updatedService !== undefined && updatedService.action.kind === UpdateServiceKind.Create) {
|
|
12672
|
+
const lookupHistoryItem = updatedService.action.lookupHistory;
|
|
12673
|
+
if (lookupHistoryItem !== null &&
|
|
12674
|
+
hash.isEqualTo(lookupHistoryItem.hash) &&
|
|
12675
|
+
length === BigInt(lookupHistoryItem.length)) {
|
|
12676
|
+
return lookupHistoryItem;
|
|
12677
|
+
}
|
|
12678
|
+
}
|
|
12668
12679
|
const preimages = this.stateUpdate.services.preimages.get(serviceId) ?? [];
|
|
12669
12680
|
// TODO [ToDr] This is most likely wrong. We may have `provide` and `remove` within
|
|
12670
12681
|
// the same state update. We should however switch to proper "updated state"
|
|
@@ -12780,260 +12791,43 @@ function preimageLenAsU32(length) {
|
|
|
12780
12791
|
return length >= 2n ** 32n ? null : tryAsU32(Number(length));
|
|
12781
12792
|
}
|
|
12782
12793
|
|
|
12783
|
-
|
|
12784
|
-
|
|
12785
|
-
|
|
12786
|
-
|
|
12787
|
-
*/
|
|
12788
|
-
const HostCallResult = {
|
|
12789
|
-
/** The return value indicating an item does not exist. */
|
|
12790
|
-
NONE: tryAsU64(0xffffffffffffffffn), // 2**64 - 1
|
|
12791
|
-
/** Name unknown. */
|
|
12792
|
-
WHAT: tryAsU64(0xfffffffffffffffen), // 2**64 - 2
|
|
12793
|
-
/** The inner PVM memory index provided for reading/writing is not accessible. */
|
|
12794
|
-
OOB: tryAsU64(0xfffffffffffffffdn), // 2**64 - 3
|
|
12795
|
-
/** Index unknown. */
|
|
12796
|
-
WHO: tryAsU64(0xfffffffffffffffcn), // 2**64 - 4
|
|
12797
|
-
/** Storage full or resource already allocated. */
|
|
12798
|
-
FULL: tryAsU64(0xfffffffffffffffbn), // 2**64 - 5
|
|
12799
|
-
/** Core index unknown. */
|
|
12800
|
-
CORE: tryAsU64(0xfffffffffffffffan), // 2**64 - 6
|
|
12801
|
-
/** Insufficient funds. */
|
|
12802
|
-
CASH: tryAsU64(0xfffffffffffffff9n), // 2**64 - 7
|
|
12803
|
-
/** Gas limit too low. */
|
|
12804
|
-
LOW: tryAsU64(0xfffffffffffffff8n), // 2**64 - 8
|
|
12805
|
-
/** The item is already solicited, cannot be forgotten or the operation is invalid due to privilege level. */
|
|
12806
|
-
HUH: tryAsU64(0xfffffffffffffff7n), // 2**64 - 9
|
|
12807
|
-
/** The return value indicating general success. */
|
|
12808
|
-
OK: tryAsU64(0n),
|
|
12794
|
+
const REGISTER_SIZE_SHIFT = 3; // x << 3 === x * 8
|
|
12795
|
+
const tryAsRegisterIndex = (index) => {
|
|
12796
|
+
check `${index >= 0 && index < NO_OF_REGISTERS$1} Incorrect register index: ${index}!`;
|
|
12797
|
+
return asOpaqueType(index);
|
|
12809
12798
|
};
|
|
12810
|
-
|
|
12811
|
-
|
|
12812
|
-
|
|
12813
|
-
|
|
12814
|
-
|
|
12815
|
-
|
|
12816
|
-
|
|
12817
|
-
|
|
12818
|
-
|
|
12799
|
+
class Registers {
|
|
12800
|
+
bytes;
|
|
12801
|
+
asSigned;
|
|
12802
|
+
asUnsigned;
|
|
12803
|
+
constructor(bytes = safeAllocUint8Array(NO_OF_REGISTERS$1 << REGISTER_SIZE_SHIFT)) {
|
|
12804
|
+
this.bytes = bytes;
|
|
12805
|
+
check `${bytes.length === NO_OF_REGISTERS$1 << REGISTER_SIZE_SHIFT} Invalid size of registers array.`;
|
|
12806
|
+
this.asSigned = new BigInt64Array(bytes.buffer, bytes.byteOffset);
|
|
12807
|
+
this.asUnsigned = new BigUint64Array(bytes.buffer, bytes.byteOffset);
|
|
12819
12808
|
}
|
|
12820
|
-
|
|
12821
|
-
|
|
12822
|
-
function getServiceId(serviceId) {
|
|
12823
|
-
const { lower, upper } = u64IntoParts(serviceId);
|
|
12824
|
-
if (upper === 0) {
|
|
12825
|
-
return tryAsServiceId(lower);
|
|
12809
|
+
getAllEncoded() {
|
|
12810
|
+
return this.bytes;
|
|
12826
12811
|
}
|
|
12827
|
-
|
|
12828
|
-
}
|
|
12829
|
-
|
|
12830
|
-
check `${destination.length >= SERVICE_ID_BYTES} Not enough space in the destination.`;
|
|
12831
|
-
destination.set(u32AsLeBytes(serviceId));
|
|
12832
|
-
}
|
|
12833
|
-
/** Clamp a U64 to the maximum value of a 32-bit unsigned integer. */
|
|
12834
|
-
function clampU64ToU32(value) {
|
|
12835
|
-
return value > MAX_U32_BIG_INT ? MAX_U32 : tryAsU32(Number(value));
|
|
12836
|
-
}
|
|
12837
|
-
function emptyRegistersBuffer() {
|
|
12838
|
-
return safeAllocUint8Array(NO_OF_REGISTERS$1 * REGISTER_BYTE_SIZE);
|
|
12839
|
-
}
|
|
12840
|
-
|
|
12841
|
-
var index$9 = /*#__PURE__*/Object.freeze({
|
|
12842
|
-
__proto__: null,
|
|
12843
|
-
AccumulationStateUpdate: AccumulationStateUpdate,
|
|
12844
|
-
CURRENT_SERVICE_ID: CURRENT_SERVICE_ID,
|
|
12845
|
-
get EjectError () { return EjectError; },
|
|
12846
|
-
get ForgetPreimageError () { return ForgetPreimageError; },
|
|
12847
|
-
HostCallResult: HostCallResult,
|
|
12848
|
-
InsufficientFundsError: InsufficientFundsError,
|
|
12849
|
-
MachineInstance: MachineInstance,
|
|
12850
|
-
get MemoryOperation () { return MemoryOperation; },
|
|
12851
|
-
get NewServiceError () { return NewServiceError; },
|
|
12852
|
-
NoMachineError: NoMachineError,
|
|
12853
|
-
get PagesError () { return PagesError; },
|
|
12854
|
-
PartiallyUpdatedState: PartiallyUpdatedState,
|
|
12855
|
-
get PeekPokeError () { return PeekPokeError; },
|
|
12856
|
-
PendingTransfer: PendingTransfer,
|
|
12857
|
-
get PreimageStatusKind () { return PreimageStatusKind; },
|
|
12858
|
-
get ProvidePreimageError () { return ProvidePreimageError; },
|
|
12859
|
-
get RequestPreimageError () { return RequestPreimageError; },
|
|
12860
|
-
SERVICE_ID_BYTES: SERVICE_ID_BYTES,
|
|
12861
|
-
SegmentExportError: SegmentExportError,
|
|
12862
|
-
TRANSFER_MEMO_BYTES: TRANSFER_MEMO_BYTES,
|
|
12863
|
-
get TransferError () { return TransferError; },
|
|
12864
|
-
UnprivilegedError: UnprivilegedError,
|
|
12865
|
-
get UpdatePrivilegesError () { return UpdatePrivilegesError; },
|
|
12866
|
-
get ZeroVoidError () { return ZeroVoidError; },
|
|
12867
|
-
clampU64ToU32: clampU64ToU32,
|
|
12868
|
-
emptyRegistersBuffer: emptyRegistersBuffer,
|
|
12869
|
-
getServiceId: getServiceId,
|
|
12870
|
-
getServiceIdOrCurrent: getServiceIdOrCurrent,
|
|
12871
|
-
slotsToPreimageStatus: slotsToPreimageStatus,
|
|
12872
|
-
toMemoryOperation: toMemoryOperation,
|
|
12873
|
-
tryAsMachineId: tryAsMachineId,
|
|
12874
|
-
tryAsProgramCounter: tryAsProgramCounter,
|
|
12875
|
-
writeServiceIdAsLeBytes: writeServiceIdAsLeBytes
|
|
12876
|
-
});
|
|
12877
|
-
|
|
12878
|
-
const SUPER_PEAK_STRING = BytesBlob.blobFromString("peak");
|
|
12879
|
-
/**
|
|
12880
|
-
* Merkle Mountain Range.
|
|
12881
|
-
*
|
|
12882
|
-
* https://graypaper.fluffylabs.dev/#/5f542d7/3aa0023aa002?v=0.6.2
|
|
12883
|
-
*/
|
|
12884
|
-
class MerkleMountainRange {
|
|
12885
|
-
hasher;
|
|
12886
|
-
mountains;
|
|
12887
|
-
/** Construct an empty MMR. */
|
|
12888
|
-
static empty(hasher) {
|
|
12889
|
-
return new MerkleMountainRange(hasher);
|
|
12812
|
+
setAllEncoded(bytes) {
|
|
12813
|
+
check `${bytes.length === this.bytes.length} Incorrect size of input registers. Got: ${bytes.length}, need: ${this.bytes.length}`;
|
|
12814
|
+
this.bytes.set(bytes, 0);
|
|
12890
12815
|
}
|
|
12891
|
-
|
|
12892
|
-
|
|
12893
|
-
return new
|
|
12894
|
-
.reduce((acc, peak, index) => {
|
|
12895
|
-
if (peak !== null) {
|
|
12896
|
-
acc.push(Mountain.fromPeak(peak, 2 ** index));
|
|
12897
|
-
}
|
|
12898
|
-
return acc;
|
|
12899
|
-
}, [])
|
|
12900
|
-
.reverse());
|
|
12816
|
+
static fromBytes(bytes) {
|
|
12817
|
+
check `${bytes.length === NO_OF_REGISTERS$1 << REGISTER_SIZE_SHIFT} Invalid size of registers array.`;
|
|
12818
|
+
return new Registers(bytes);
|
|
12901
12819
|
}
|
|
12902
|
-
|
|
12903
|
-
|
|
12904
|
-
|
|
12905
|
-
this.hasher = hasher;
|
|
12906
|
-
this.mountains = mountains;
|
|
12820
|
+
getBytesAsLittleEndian(index, len) {
|
|
12821
|
+
const offset = index << REGISTER_SIZE_SHIFT;
|
|
12822
|
+
return this.bytes.subarray(offset, offset + len);
|
|
12907
12823
|
}
|
|
12908
|
-
|
|
12909
|
-
|
|
12910
|
-
|
|
12911
|
-
* https://graypaper.fluffylabs.dev/#/5f542d7/3b11003b1100?v=0.6.2
|
|
12912
|
-
*/
|
|
12913
|
-
append(hash) {
|
|
12914
|
-
let newMountain = Mountain.fromPeak(hash, 1);
|
|
12915
|
-
for (;;) {
|
|
12916
|
-
const last = this.mountains.pop();
|
|
12917
|
-
if (last === undefined) {
|
|
12918
|
-
this.mountains.push(newMountain);
|
|
12919
|
-
return;
|
|
12920
|
-
}
|
|
12921
|
-
if (last.size !== newMountain.size) {
|
|
12922
|
-
this.mountains.push(last);
|
|
12923
|
-
this.mountains.push(newMountain);
|
|
12924
|
-
return;
|
|
12925
|
-
}
|
|
12926
|
-
newMountain = last.mergeWith(this.hasher, newMountain);
|
|
12927
|
-
}
|
|
12824
|
+
copyFrom(regs) {
|
|
12825
|
+
const array = regs instanceof BigUint64Array ? regs : regs.asUnsigned;
|
|
12826
|
+
this.asUnsigned.set(array);
|
|
12928
12827
|
}
|
|
12929
|
-
|
|
12930
|
-
|
|
12931
|
-
|
|
12932
|
-
* https://graypaper.fluffylabs.dev/#/5f542d7/3b20013b2001?v=0.6.2
|
|
12933
|
-
*/
|
|
12934
|
-
getSuperPeakHash() {
|
|
12935
|
-
if (this.mountains.length === 0) {
|
|
12936
|
-
return Bytes.zero(HASH_SIZE).asOpaque();
|
|
12937
|
-
}
|
|
12938
|
-
const revMountains = this.mountains.slice().reverse();
|
|
12939
|
-
const length = revMountains.length;
|
|
12940
|
-
let lastHash = revMountains[0].peak;
|
|
12941
|
-
for (let i = 1; i < length; i++) {
|
|
12942
|
-
const mountain = revMountains[i];
|
|
12943
|
-
lastHash = this.hasher.hashConcatPrepend(SUPER_PEAK_STRING, lastHash, mountain.peak);
|
|
12944
|
-
}
|
|
12945
|
-
return lastHash;
|
|
12946
|
-
}
|
|
12947
|
-
/** Get current peaks. */
|
|
12948
|
-
getPeaks() {
|
|
12949
|
-
const peaks = [];
|
|
12950
|
-
const mountains = this.mountains;
|
|
12951
|
-
// always 2**index
|
|
12952
|
-
let currentSize = 1;
|
|
12953
|
-
let currentIdx = mountains.length - 1;
|
|
12954
|
-
while (currentIdx >= 0) {
|
|
12955
|
-
const currentItem = mountains[currentIdx];
|
|
12956
|
-
if (currentItem.size >= currentSize && currentItem.size < 2 * currentSize) {
|
|
12957
|
-
peaks.push(currentItem.peak);
|
|
12958
|
-
currentIdx -= 1;
|
|
12959
|
-
}
|
|
12960
|
-
else {
|
|
12961
|
-
peaks.push(null);
|
|
12962
|
-
}
|
|
12963
|
-
// move to the next index.
|
|
12964
|
-
currentSize = currentSize << 1;
|
|
12965
|
-
}
|
|
12966
|
-
return { peaks };
|
|
12967
|
-
}
|
|
12968
|
-
}
|
|
12969
|
-
/** An internal helper structure to represent a merkle trie for MMR. */
|
|
12970
|
-
class Mountain {
|
|
12971
|
-
peak;
|
|
12972
|
-
size;
|
|
12973
|
-
constructor(peak, size) {
|
|
12974
|
-
this.peak = peak;
|
|
12975
|
-
this.size = size;
|
|
12976
|
-
}
|
|
12977
|
-
static fromPeak(peak, size) {
|
|
12978
|
-
return new Mountain(peak, size);
|
|
12979
|
-
}
|
|
12980
|
-
static fromChildren(hasher, children) {
|
|
12981
|
-
const [left, right] = children;
|
|
12982
|
-
const peak = hasher.hashConcat(left.peak, right.peak);
|
|
12983
|
-
const size = left.size + right.size;
|
|
12984
|
-
return new Mountain(peak, size);
|
|
12985
|
-
}
|
|
12986
|
-
/** Merge with another montain of the same size. */
|
|
12987
|
-
mergeWith(hasher, other) {
|
|
12988
|
-
return Mountain.fromChildren(hasher, [this, other]);
|
|
12989
|
-
}
|
|
12990
|
-
toString() {
|
|
12991
|
-
return `${this.size} @ ${this.peak}`;
|
|
12992
|
-
}
|
|
12993
|
-
}
|
|
12994
|
-
|
|
12995
|
-
var index$8 = /*#__PURE__*/Object.freeze({
|
|
12996
|
-
__proto__: null,
|
|
12997
|
-
MerkleMountainRange: MerkleMountainRange
|
|
12998
|
-
});
|
|
12999
|
-
|
|
13000
|
-
const REGISTER_SIZE_SHIFT = 3; // x << 3 === x * 8
|
|
13001
|
-
const tryAsRegisterIndex = (index) => {
|
|
13002
|
-
check `${index >= 0 && index < NO_OF_REGISTERS$1} Incorrect register index: ${index}!`;
|
|
13003
|
-
return asOpaqueType(index);
|
|
13004
|
-
};
|
|
13005
|
-
class Registers {
|
|
13006
|
-
bytes;
|
|
13007
|
-
asSigned;
|
|
13008
|
-
asUnsigned;
|
|
13009
|
-
constructor(bytes = safeAllocUint8Array(NO_OF_REGISTERS$1 << REGISTER_SIZE_SHIFT)) {
|
|
13010
|
-
this.bytes = bytes;
|
|
13011
|
-
check `${bytes.length === NO_OF_REGISTERS$1 << REGISTER_SIZE_SHIFT} Invalid size of registers array.`;
|
|
13012
|
-
this.asSigned = new BigInt64Array(bytes.buffer, bytes.byteOffset);
|
|
13013
|
-
this.asUnsigned = new BigUint64Array(bytes.buffer, bytes.byteOffset);
|
|
13014
|
-
}
|
|
13015
|
-
getAllEncoded() {
|
|
13016
|
-
return this.bytes;
|
|
13017
|
-
}
|
|
13018
|
-
setAllEncoded(bytes) {
|
|
13019
|
-
check `${bytes.length === this.bytes.length} Incorrect size of input registers. Got: ${bytes.length}, need: ${this.bytes.length}`;
|
|
13020
|
-
this.bytes.set(bytes, 0);
|
|
13021
|
-
}
|
|
13022
|
-
static fromBytes(bytes) {
|
|
13023
|
-
check `${bytes.length === NO_OF_REGISTERS$1 << REGISTER_SIZE_SHIFT} Invalid size of registers array.`;
|
|
13024
|
-
return new Registers(bytes);
|
|
13025
|
-
}
|
|
13026
|
-
getBytesAsLittleEndian(index, len) {
|
|
13027
|
-
const offset = index << REGISTER_SIZE_SHIFT;
|
|
13028
|
-
return this.bytes.subarray(offset, offset + len);
|
|
13029
|
-
}
|
|
13030
|
-
copyFrom(regs) {
|
|
13031
|
-
const array = regs instanceof BigUint64Array ? regs : regs.asUnsigned;
|
|
13032
|
-
this.asUnsigned.set(array);
|
|
13033
|
-
}
|
|
13034
|
-
reset() {
|
|
13035
|
-
for (let i = 0; i < NO_OF_REGISTERS$1; i++) {
|
|
13036
|
-
this.asUnsigned[i] = 0n;
|
|
12828
|
+
reset() {
|
|
12829
|
+
for (let i = 0; i < NO_OF_REGISTERS$1; i++) {
|
|
12830
|
+
this.asUnsigned[i] = 0n;
|
|
13037
12831
|
}
|
|
13038
12832
|
}
|
|
13039
12833
|
getLowerU32(registerIndex) {
|
|
@@ -14062,7 +13856,7 @@ function getRegisters(argsLength) {
|
|
|
14062
13856
|
return regs;
|
|
14063
13857
|
}
|
|
14064
13858
|
|
|
14065
|
-
var index$
|
|
13859
|
+
var index$a = /*#__PURE__*/Object.freeze({
|
|
14066
13860
|
__proto__: null,
|
|
14067
13861
|
MemorySegment: MemorySegment,
|
|
14068
13862
|
SpiMemory: SpiMemory,
|
|
@@ -14121,7 +13915,7 @@ function extractCodeAndMetadata(blobWithMetadata) {
|
|
|
14121
13915
|
return { metadata, code };
|
|
14122
13916
|
}
|
|
14123
13917
|
|
|
14124
|
-
var index$
|
|
13918
|
+
var index$9 = /*#__PURE__*/Object.freeze({
|
|
14125
13919
|
__proto__: null,
|
|
14126
13920
|
Program: Program,
|
|
14127
13921
|
extractCodeAndMetadata: extractCodeAndMetadata
|
|
@@ -16993,7 +16787,7 @@ class Interpreter {
|
|
|
16993
16787
|
}
|
|
16994
16788
|
}
|
|
16995
16789
|
|
|
16996
|
-
var index$
|
|
16790
|
+
var index$8 = /*#__PURE__*/Object.freeze({
|
|
16997
16791
|
__proto__: null,
|
|
16998
16792
|
Interpreter: Interpreter,
|
|
16999
16793
|
Memory: Memory,
|
|
@@ -17004,7 +16798,7 @@ var index$5 = /*#__PURE__*/Object.freeze({
|
|
|
17004
16798
|
tryAsSbrkIndex: tryAsSbrkIndex
|
|
17005
16799
|
});
|
|
17006
16800
|
|
|
17007
|
-
async function instantiate(module, imports = {}) {
|
|
16801
|
+
async function instantiate$1(module, imports = {}) {
|
|
17008
16802
|
const adaptedImports = {
|
|
17009
16803
|
env: Object.setPrototypeOf({
|
|
17010
16804
|
abort(message, fileName, lineNumber, columnNumber) {
|
|
@@ -17381,9 +17175,28 @@ async function instantiate(module, imports = {}) {
|
|
|
17381
17175
|
return adaptedExports;
|
|
17382
17176
|
}
|
|
17383
17177
|
|
|
17384
|
-
//
|
|
17385
|
-
|
|
17386
|
-
|
|
17178
|
+
// Auto-generated inline WASM module
|
|
17179
|
+
// Target: release-stub
|
|
17180
|
+
// Source: build/release-stub.wasm
|
|
17181
|
+
|
|
17182
|
+
|
|
17183
|
+
const wasmBase64 = "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IAckACAGIAM2AgAFIAMgB0EBdCIGIAMgBksbEA0iAyACIAf8CgAAIAMhAgsFIAgEQCACIANqJAAgBiADNgIACwsgAkEEayABNgIQIAJBEGoiAiAEakEAIAEgBGv8CwAgAiAFRwRAIAAgAjYCACAAIAI2AgQLIAAgATYCCAsLTQEBfyABIAAoAgxPBEAgAUEASARAQfDEAEGwxQBBggFBFhAAAAsgACABQQFqIgNBAkEBEBEgACADNgIMCyAAKAIEIAFBAnRqIAI2AgAL4xcBAX9BjKUBJABBwA5BAEEAEA4kAUHwD0EIQQAQDiQCQecBQQJBCUEAEBAiAEEAQZAQQQBBARAOEBIgAEEBQbAQQQBBARAOEBIgAEECIwEQEiAAQQMjARASIABBBCMBEBIgAEEFIwEQEiAAQQYjARASIABBByMBEBIgAEEIIwEQEiAAQQkjARASIABBCkHgEEEBQQAQDhASIABBCyMBEBIgAEEMIwEQEiAAQQ0jARASIABBDiMBEBIgAEEPIwEQEiAAQRAjARASIABBESMBEBIgAEESIwEQEiAAQRMjARASIABBFEGAEUEFQQAQDhASIABBFSMBEBIgAEEWIwEQEiAAQRcjARASIABBGCMBEBIgAEEZIwEQEiAAQRojARASIABBGyMBEBIgAEEcIwEQEiAAQR0jARASIABBHkGwEUECQQAQDhASIABBH0HgEUECQQAQDhASIABBIEGQEkECQQAQDhASIABBIUHAEkECQQAQDhASIABBIiMBEBIgAEEjIwEQEiAAQSQjARASIABBJSMBEBIgAEEmIwEQEiAAQScjARASIABBKEHwEkEDQQEQDhASIABBKSMBEBIgAEEqIwEQEiAAQSsjARASIABBLCMBEBIgAEEtIwEQEiAAQS4jARASIABBLyMBEBIgAEEwIwEQEiAAQTEjARASIABBMkGQE0EEQQEQDhASIABBM0HAE0EEQQAQDhASIABBNEHwE0EEQQAQDhASIABBNUGgFEEEQQAQDhASIABBNkHQFEEEQQAQDhASIABBN0GAFUEEQQAQDhASIABBOEGwFUEEQQAQDhASIABBOUHgFUEEQQAQDhASIABBOkGQFkEEQQAQDhASIABBO0HAFkEEQQAQDhASIABBPEHwFkEEQQAQDhASIABBPUGgF0EEQQAQDhASIABBPkHQF0EE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QQN0aiACQQwgATUCACIEpyAEQg1aG0EDdGopAwCnZ603AwAgAEEANgIAIABBADYCCCAAC0cBAX4gAkEMIAE1AgQiBKcgBEINWhtBA3RqIAJBDCABNQIAIgSnIARCDVobQQN0aikDAHo3AwAgAEEANgIAIABBADYCCCAAC0kBAX4gAkEMIAE1AgQiBKcgBEINWhtBA3RqIAJBDCABNQIAIgSnIARCDVobQQN0aikDAKdorTcDACAAQQA2AgAgAEEANgIIIAALSQEBfiACQQwgATUCBCIEpyAEQg1aG0EDdGogAkEMIAE1AgAiBKcgBEINWhtBA3RqKQMAp8CsNwMAIABBADYCACAAQQA2AgggAAtJAQF+IAJBDCABNQIEIgSnIARCDVobQQN0aiACQQwgATUCACIEpyAEQg1aG0EDdGopAwCnwaw3AwAgAEEANgIAIABBADYCCCAAC00BAX4gAkEMIAE1AgQiBKcgBEINWhtBA3RqIAJBDCABNQIAIgSnIARCDVobQQN0aikDAKdB//8Dca03AwAgAEEANgIAIABBADYCCCAAC4cBAQF+IAJBDCABNQIEIgSnIARCDVobQQN0aiACQQwgATUCACIEpyAEQg1aG0EDdGopAwAiBEIIiEL/gfyH8J/A/wCDIARC/4H8h/CfwP8Ag0IIhoQiBEIQiEL//4OA8P8/gyAEQv//g4Dw/z+DQhCGhEIgijcDACAAQQA2AgAgAEEANgIIIAALTgEBfiACQQwgATUCACIEpyAEQg1aG0EDdGopAwAgATQCBFEEQCABKAIIIQEgAEEBNgIAIAAgATYCBCAADwsgAEEANgIAIABBADYCCCAAC04BAX4gAkEMIAE1AgAiBKcgBEINWhtBA3RqKQMAIAE0AgRSBEAgASgCCCEBIABBATYCACAAIAE2AgQgAA8LIABBADYCACAAQQA2AgggAAtOAQF+IAJBDCABNQIAIgSnIARCDVobQQN0aikDACABNAIEVARAIAEoAgghASAAQQE2AgAgACABNgIEIAAPCyAAQQA2AgAgAEEANgIIIAALTgEBfiACQQwgATUCACIEpyAEQg1aG0EDdGopAwAgATQCBFgEQCABKAIIIQEgAEEBNgIAIAAgATYCBCAADwsgAEEANgIAIABBADYCCCAAC04BAX4gAkEMIAE1AgAiBKcgBEINWhtBA3RqKQMAIAE0AgRaBEAgASgCCCEBIABBATYCACAAIAE2AgQgAA8LIABBADYCACAAQQA2AgggAAtOAQF+IAJBDCABNQIAIgSnIARCDVobQQN0aikDACABNAIEVgRAIAEoAgghASAAQQE2AgAgACABNgIEIAAPCyAAQQA2AgAgAEEANgIIIAALTgEBfiACQQwgATUCACIEpyAEQg1aG0EDdGopAwAgATQCBFMEQCABKAIIIQEgAEEBNgIAIAAgATYCBCAADwsgAEEANgIAIABBADYCCCAAC04BAX4gAkEMIAE1AgAiBKcgBEINWhtBA3RqKQMAIAE0AgRXBEAgASgCCCEBIABBATYCACAAIAE2AgQgAA8LIABBADYCACAAQQA2AgggAAtOAQF+IAJBDCABNQIAIgSnIARCDVobQQN0aikDACABNAIEWQRAIAEoAgghASAAQQE2AgAgACABNgIEIAAPCyAAQQA2AgAgAEEANgIIIAALTgEBfiACQQwgATUCACIEpyAEQg1aG0EDdGopAwAgATQCBFUEQCABKAIIIQEgAEEBNgIAIAAgATYCBCAADwsgAEEANgIAIABBADYCCCAAC2IBAX4gAkEMIAE1AgAiBKcgBEINWhtBA3RqKQMAIAJBDCABNQIEIgSnIARCDVobQQN0aikDAFEEQCABKAIIIQEgAEEBNgIAIAAgATYCBCAADwsgAEEANgIAIABBADYCCCAAC2IBAX4gAkEMIAE1AgAiBKcgBEINWhtBA3RqKQMAIAJBDCABNQIEIgSnIARCDVobQQN0aikDAFIEQCABKAIIIQEgAEEBNgIAIAAgATYCBCAADwsgAEEANgIAIABBADYCCCAAC2IBAX4gAkEMIAE1AgQiBKcgBEINWhtBA3RqKQMAIAJBDCABNQIAIgSnIARCDVobQQN0aikDAFQEQCABKAIIIQEgAEEBNgIAIAAgATYCBCAADwsgAEEANgIAIABBADYCCCAAC2IBAX4gAkEMIAE1AgQiBKcgBEINWhtBA3RqKQMAIAJBDCABNQIAIgSnIARCDVobQQN0aikDAFMEQCABKAIIIQEgAEEBNgIAIAAgATYCBCAADwsgAEEANgIAIABBADYCCCAAC2IBAX4gAkEMIAE1AgQiBKcgBEINWhtBA3RqKQMAIAJBDCABNQIAIgSnIARCDVobQQN0aikD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QQwgATUCBCIEpyAEQg1aG0EDdGogAkEMIAE1AgAiBKcgBEINWhtBA3RqKQMAIAE0AgiENwMAIABBADYCACAAQQA2AgggAAtgAQF+IAJBDCABNQIIIgSnIARCDVobQQN0aiACQQwgATUCBCIEpyAEQg1aG0EDdGopAwAgAkEMIAE1AgAiBKcgBEINWhtBA3RqKQMAgzcDACAAQQA2AgAgAEEANgIIIAALYAEBfiACQQwgATUCCCIEpyAEQg1aG0EDdGogAkEMIAE1AgQiBKcgBEINWhtBA3RqKQMAIAJBDCABNQIAIgSnIARCDVobQQN0aikDAIU3AwAgAEEANgIAIABBADYCCCAAC2ABAX4gAkEMIAE1AggiBKcgBEINWhtBA3RqIAJBDCABNQIEIgSnIARCDVobQQN0aikDACACQQwgATUCACIEpyAEQg1aG0EDdGopAwCENwMAIABBADYCACAAQQA2AgggAAtjAQF+IAJBDCABNQIIIgSnIARCDVobQQN0aiACQQwgATUCBCIEpyAEQg1aG0EDdGopAwAgAkEMIAE1AgAiBKcgBEINWhtBA3RqKQMAQn+FgzcDACAAQQA2AgAgAEEANgIIIAALYwEBfiACQQwgATUCCCIEpyAEQg1aG0EDdGogAkEMIAE1AgQiBKcgBEINWhtBA3RqKQMAIAJBDCABNQIAIgSnIARCDVobQQN0aikDAEJ/hYQ3AwAgAEEANgIAIABBADYCCCAAC2MBAX4gAkEMIAE1AggiBKcgBEINWhtBA3RqIAJBDCABNQIEIgSnIARCDVobQQN0aikDACACQQwgATUCACIEpyAEQg1aG0EDdGopAwCFQn+FNwMAIABBADYCACAAQQA2AgggAAtNAQF+IAJBDCABNQIEIgSnIARCDVobQQN0aiACQQwgATUCACIEpyAEQg1aG0EDdGopAwAgATQCCHzENwMAIABBADYCACAAQQA2AgggAAtNAQF+IAJBDCABNQIEIgSnIARCDVobQQN0aiACQQwgATUCACIEpyAEQg1aG0EDdGopAwAgATUCCH7ENwMAIABBADYCACAAQQA2AgggAAtUAQF+IAJBDCABNQIEIgSnIARCDVobQQN0aiABNQIIQoCAgIAQhCACQQwgATUCACIEpyAEQg1aG0EDdGopAwB9xDcDACAAQQA2AgAgAEEANgIIIAALTAEBfiACQQwgATUCBCIEpyAEQg1aG0EDdGogAkEMIAE1AgAiBKcgBEINWhtBA3RqKQMAIAE0Agh8NwMAIABBADYCACAAQQA2AgggAAtMAQF+IAJBDCABNQIEIgSnIARCDVobQQN0aiACQQwgATUCACIEpyAEQg1aG0EDdGopAwAgATQCCH43AwAgAEEANgIAIABBADYCCCAAC0wBAX4gAkEMIAE1AgQiBKcgBEINWhtBA3RqIAE0AgggAkEMIAE1AgAiBKcgBEINWhtBA3RqKQMAfTcDACAAQQA2AgAgAEEANgIIIAALYwEBfiACQQwgATUCCCIEpyAEQg1aG0EDdGogAkEMIAE1AgAiBKcgBEINWhtBA3RqKQMApyACQQwgATUCBCIEpyAEQg1aG0EDdGopAwCnaqw3AwAgAEEANgIAIABBADYCCCAAC2oBAX4gAkEMIAE1AggiBKcgBEINWhtBA3RqIAJBDCABNQIEIgSnIARCDVobQQN0aikDAEKAgICAEHwgAkEMIAE1AgAiBKcgBEINWhtBA3RqKQMAp619xDcDACAAQQA2AgAgAEEANgIIIAALYQEBfiACQQwgATUCCCIEpyAEQg1aG0EDdGogAkEMIAE1AgAiBKcgBEINWhtBA3RqKQMAIAJBDCABNQIEIgSnIARCDVobQQN0aikDAH7ENwMAIABBADYCACAAQQA2AgggAAuGAQEBfiACQQwgATUCACIEpyAEQg1aG0EDdGopAwCnIgMEQCACQQwgATUCCCIEpyAEQg1aG0EDdGogAkEMIAE1AgQiBKcgBEINWhtBA3RqKQMApyADbqw3AwAFIAJBDCABNQIIIgSnIARCDVobQQN0akJ/NwMACyAAQQA2AgAgAEEANgIIIAALuAEBA34gAkEMIAE1AgQiBKcgBEINWhtBA3RqKQMAxCEEIAJBDCABNQIAIgWnIAVCDVobQQN0aikDAMQiBVAEQCACQQwgATUCCCIEpyAEQg1aG0EDdGpCfzcDAAUgBEKAgICAeFEgBUJ/UXEEQCACQQwgATUCCCIFpyAFQg1aG0EDdGogBDcDAAUgAkEMIAE1AggiBqcgBkINWhtBA3RqIAQgBX83AwALCyAAQQA2AgAgAEEANgIIIAALjQECAX4BfyACQQwgATUCBCIEpyAEQg1aG0EDdGopAwCnIQMgAkEMIAE1AgAiBKcgBEINWhtBA3RqKQMApyIFBEAgAkEMIAE1AggiBKcgBEINWhtBA3RqIAMgBXCsNwMABSACQQwgATUCCCIEpyAEQg1aG0EDdGogA6w3AwALIABBADYCACAAQQA2AgggAAu8AQIBfgF/IAJBDCABNQIEIgSnIARCDVobQQN0aikDAKchAyACQQwgATUCACIEpyAEQg1aG0EDdGopAwCnIgUEQCADQYCAgIB4RiAFQX9GcQRAIAJBDCABNQIIIgSnIARCDVobQQN0akIANwMABSACQQwgATUCCCIEpyAEQg1aG0EDdGogA6wgBayBNwMACwUgAkEMIAE1AggiBKcgBEINWhtBA3RqIAOsNwMACyAAQQA2AgAgAEEANgIIIAALYAEBfiACQQwgATUCCCIEpyAEQg1aG0EDdGogAkEMIAE1AgAiBKcgBEINWhtBA3RqKQMAIAJBDCABNQIEIgSnIARCDVobQQN0aikDAHw3AwAgAEEANgIAIABBADYCCCAAC2ABAX4gAkEMIAE1AggiBKcgBEINWhtBA3RqIAJBDCABNQIEIgSnIARCDVobQQN0aikDACACQQwgATUCACIEpyAEQg1aG0EDdGopAwB9NwMAIABBADYCACAAQQA2AgggAAtgAQF+IAJBDCABNQIIIgSnIARCDVobQQN0aiACQQwgATUCACIEpyAEQg1aG0EDdGopAwAgAkEMIAE1AgQiBKcgBEINWhtBA3RqKQMAfjcDACAAQQA2AgAgAEEANgIIIAALmQEBAX4gAkEMIAE1AgAiBKcgBEINWhtBA3RqKQMAUARAIAJBDCABNQIIIgSnIARCDVobQQN0akJ/NwMABSACQQwgATUCCCIEpyAEQg1aG0EDdGogAkEMIAE1AgQiBKcgBEINWhtBA3RqKQMAIAJBDCABNQIAIgSnIARCDVobQQN0aikDAIA3AwALIABBADYCACAAQQA2AgggAAu7AQEDfiACQQwgATUCBCIEpyAEQg1aG0EDdGopAwAhBCACQQwgATUCACIFpyAFQg1aG0EDdGopAwAiBVAEQCACQQwgATUCCCIEpyAEQg1aG0EDdGpCfzcDAAUgBEKAgICAgICAgIB/USAFQn9RcQRAIAJBDCABNQIIIgWnIAVCDVobQQN0aiAENwMABSACQQwgATUCCCIGpyAGQg1aG0EDdGogBCAFfzcDAAsLIABBADYCACAAQQA2AgggAAuwAQEBfiACQQwgATUCACIEpyAEQg1aG0EDdGopAwBQBEAgAkEMIAE1AggiBKcgBEINWhtBA3RqIAJBDCABNQIEIgSnIARCDVobQQN0aikDADcDAAUgAkEMIAE1AggiBKcgBEINWhtBA3RqIAJBDCABNQIEIgSnIARCDVobQQN0aikDACACQQwgATUCACIEpyAEQg1aG0EDdGopAwCCNwMACyAAQQA2AgAgAEEANgIIIAALuwEBA34gAkEMIAE1AgQiBKcgBEINWhtBA3RqKQMAIQQgAkEMIAE1AgAiBacgBUINWhtBA3RqKQMAIgVQBEAgAkEMIAE1AggiBacgBUINWhtBA3RqIAQ3AwAFIARCgICAgICAgICAf1EgBUJ/UXEEQCACQQwgATUCCCIEpyAEQg1aG0EDdGpCADcDAAUgAkEMIAE1AggiBqcgBkINWhtBA3RqIAQgBYE3AwALCyAAQQA2AgAgAEEANgIIIAAL2wIBCH4gAkEMIAE1AggiBKcgBEINWhtBA3RqAn4gAkEMIAE1AgAiBKcgBEINWhtBA3RqKQMAIQQgAkEMIAE1AgQiBacgBUINWhtBA3RqKQMAIgVCAFMEfyAFQn+FQgF8IQVBAQVBAAshASAEQgBTBH8gBEJ/hUIBfCEEIAFFBSABCwRAIARCIIgiCCAFQv////8PgyIJfiEGIAVCIIgiByAEQv////8PgyIKfiELIAQgBX5QrSAHIAh+IAZCIIh8IAtCIIh8IAZC/////w+DIAkgCn5CIIh8IAtC/////w+DfEIgiHxCf4V8DAELIARCIIgiBiAFQv////8PgyIHfiEIIAVCIIgiBSAEQv////8PgyIEfiEJIAUgBn4gCEIgiHwgCUIgiHwgCEL/////D4MgBCAHfkIgiHwgCUL/////D4N8QiCIfAs3AwAgAEEANgIAIABBADYCCCAAC7oBAQZ+IAJBDCABNQIEIgSnIARCDVobQQN0aikDACIFQiCIIQQgBUL/////D4MiBSACQQwgATUCACIGpyAGQg1aG0EDdGopAwAiBkIgiCIHfiEIIAJBDCABNQIIIgmnIAlCDVobQQN0aiAEIAd+IAhCIIh8IAZC/////w+DIgYgBH4iBEIgiHwgCEL/////D4MgBSAGfkIgiHwgBEL/////D4N8QiCIfDcDACAAQQA2AgAgAEEANgIIIAALtwIBCH4gAkEMIAE1AggiBKcgBEINWhtBA3RqAn4gAkEMIAE1AgAiBKcgBEINWhtBA3RqKQMAIQYgAkEMIAE1AgQiBKcgBEINWhtBA3RqKQMAIgRCAFMEQCAEQn+FQgF8IgdC/////w+DIgggBkIgiCIJfiEEIAdCIIgiBSAGQv////8PgyIKfiELIAYgB35QrSAFIAl+IARCIIh8IAtCIIh8IARC/////w+DIAggCn5CIIh8IAtC/////w+DfEIgiHxCf4V8DAELIARC/////w+DIgUgBkIgiCIHfiEIIARCIIgiBCAGQv////8PgyIGfiEJIAQgB34gCEIgiHwgCUIgiHwgCEL/////D4MgBSAGfkIgiHwgCUL/////D4N8QiCIfAs3AwAgAEEANgIAIABBADYCCCAAC2kBAn4gAkEMIAE1AggiBKcgBEINWhtBA3RqIAJBDCABNQIEIgSnIARCDVobQQN0aikDACIEIAJBDCABNQIAIgWnIAVCDVobQQN0aikDACIFIAQgBVUbNwMAIABBADYCACAAQQA2AgggAAtpAQJ+IAJBDCABNQIIIgSnIARCDVobQQN0aiACQQwgATUCBCIEpyAEQg1aG0EDdGopAwAiBCACQQwgATUCACIFpyAFQg1aG0EDdGopAwAiBSAEIAVWGzcDACAAQQA2AgAgAEEANgIIIAALaQECfiACQQwgATUCCCIEpyAEQg1aG0EDdGogAkEMIAE1AgQiBKcgBEINWhtBA3RqKQMAIgQgAkEMIAE1AgAiBacgBUINWhtBA3RqKQMAIgUgBCAFUxs3AwAgAEEANgIAIABBADYCCCAAC2kBAn4gAkEMIAE1AggiBKcgBEINWhtBA3RqIAJBDCABNQIEIgSnIARCDVobQQN0aikDACIEIAJBDCABNQIAIgWnIAVCDVobQQN0aikDACIFIAQgBVQbNwMAIABBADYCACAAQQA2AgggAAsSACAAQQM2AgAgAEEANgIMIAALEgAgAEEANgIAIABBADYCCCAACyAAIAEoAgAhASAAQQM2AgAgAEEDNgIMIAAgATYCECAAC6IBAQJ/IAAoAgAiASgCDCICQQBKBEAgAkEATARAQYDdAEGwxQBBjwJBEhAAAAsgASgCBCACQQFrIgBBAnRqKAIAIAEgADYCDA8LIAAoAghBDHQiASAAKAIERgRAQbDdABABCyABQYCAgIACSQR/QYAgEBQFQQALIQEgACAAKAIIQQFqNgIIIAAoAgghAEEIQQwQDyICIAA2AgAgAiABNgIEIAILMAEBfyAAQfz///8DSwRAQeDFAEGQxgBBNEErEAAACyAAQQEQDyIBQQAgAPwLACABC5YEAQl/IAAoAgAgASIDQb3cypV8bEG1z9myAWpBEXdBr9bTvgJsIgFBD3YgAXNB95Svr3hsIgFBDXYgAXNBvdzKlXxsIgFBEHYgAXMiCCAAKAIEcUECdGooAgAhAQJAA0AgAQRAIAEoAggiBEEBcQR/QQAFIAEoAgAgA0YLDQIgBEF+cSEBDAELC0EAIQELIAEEQCABIAI2AgQFIAAoAgwiASAAKAIQRgRAIAAoAhQgAUEDbEEEbUgEfyAAKAIEBSAAKAIEQQF0QQFyCyIGQQFqIgFBAnQQdCEHIAFBA3RBA20iCUEMbBB0IQQgACgCCCIFIAAoAhBBDGxqIQogBCEBA0AgBSAKRwRAIAUoAghBAXFFBEAgASAFKAIAIgs2AgAgASAFKAIENgIEIAEgByALQb3cypV8bEG1z9myAWpBEXdBr9bTvgJsIgsgC0EPdnNB95Svr3hsIgsgC0ENdnNBvdzKlXxsIgsgC0EQdnMgBnFBAnRqIgsoAgA2AgggCyABNgIAIAFBDGohAQsgBUEMaiEFDAELCyAAIAc2AgAgACAGNgIEIAAgBDYCCCAAIAk2AgwgACAAKAIUNgIQCyAAKAIIIAAgACgCECIEQQFqNgIQIARBDGxqIgEgAzYCACABIAI2AgQgACAAKAIUQQFqNgIUIAEgACgCACAIIAAoAgRxQQJ0aiIAKAIANgIIIAAgATYCAAsLsAICBn8CfgJ+IwghBCADKAIUIQUgAkEMIAE1AgAiCqcgCkINWhtBA3RqKQMApyIGRQRAIARBADoAACAFrQwBCyADNQIUIAatfCIKQoCAgIAQWgRAIARBAToAACAFrQwBCyADIAo+AhQgBa0gAygCACIEIApCAX1CDIenIghGDQAaIARBAWohBANAIAQgCEwEQCADKAIMEHMhBiADKAIQQQhBCxAPIglBAjYCACAJIAY2AgQgBCAJEHUgBEEBaiEEDAELCyADIAg2AgAgBa0LIQojCC0AAARAIwgiAS0AAARAIABBAzYCACAAQQJBASABLQABGzYCDCAAIAEoAgQ2AhALIAAPCyACQQwgATUCBCILpyALQg1aG0EDdGogCjcDACAAQQA2AgAgAEEANgIIIAALRgEBfiACQQwgATUCBCIEpyAEQg1aG0EDdGogAkEMIAE1AgAiBKcgBEINWhtBA3RqKQMANwMAIABBADYCACAAQQA2AgggAAtPAQF+IAJBDCABNQIAIgSnIARCDVobQQN0aikDAFAEQCACQQwgATUCBCIEpyAEQg1aG0EDdGogATQCCDcDAAsgAEEANgIAIABBADYCCCAAC1EBAX4gAkEMIAE1AgAiBKcgBEINWhtBA3RqKQMAQgBSBEAgAkEMIAE1AgQiBKcgBEINWhtBA3RqIAE0Agg3AwALIABBADYCACAAQQA2AgggAAtjAQF+IAJBDCABNQIAIgSnIARCDVobQQN0aikDAFAEQCACQQwgATUCCCIEpyAEQg1aG0EDdGogAkEMIAE1AgQiBKcgBEINWhtBA3RqKQMANwMACyAAQQA2AgAgAEEANgIIIAALZQEBfiACQQwgATUCACIEpyAEQg1aG0EDdGopAwBCAFIEQCACQQwgATUCCCIEpyAEQg1aG0EDdGogAkEMIAE1AgQiBKcgBEINWhtBA3RqKQMANwMACyAAQQA2AgAgAEEANgIIIAALTAEBfiACQQwgATUCBCIEpyAEQg1aG0EDdGogAkEMIAE1AgAiBKcgBEINWhtBA3RqKQMAIAE0AgiKNwMAIABBADYCACAAQQA2AgggAAtMAQF+IAJBDCABNQIEIgSnIARCDVobQQN0aiABNAIIIAJBDCABNQIAIgSnIARCDVobQQN0aikDAIo3AwAgAEEANgIAIABBADYCCCAAC04BAX4gAkEMIAE1AgQiBKcgBEINWhtBA3RqIAJBDCABNQIAIgSnIARCDVobQQN0aikDAKcgASgCCHisNwMAIABBADYCACAAQQA2AgggAAtOAQF+IAJBDCABNQIEIgSnIARCDVobQQN0aiABKAIIIAJBDCABNQIAIgSnIARCDVobQQN0aikDAKd4rDcDACAAQQA2AgAgAEEANgIIIAALYAEBfiACQQwgATUCCCIEpyAEQg1aG0EDdGogAkEMIAE1AgQiBKcgBEINWhtBA3RqKQMAIAJBDCABNQIAIgSnIARCDVobQQN0aikDAIk3AwAgAEEANgIAIABBADYCCCAAC2MBAX4gAkEMIAE1AggiBKcgBEINWhtBA3RqIAJBDCABNQIEIgSnIARCDVobQQN0aikDAKcgAkEMIAE1AgAiBKcgBEINWhtBA3RqKQMAp3esNwMAIABBADYCACAAQQA2AgggAAtgAQF+IAJBDCABNQIIIgSnIARCDVobQQN0aiACQQwgATUCBCIEpyAEQg1aG0EDdGopAwAgAkEMIAE1AgAiBKcgBEINWhtBA3RqKQMAijcDACAAQQA2AgAgAEEANgIIIAALYwEBfiACQQwgATUCCCIEpyAEQg1aG0EDdGogAkEMIAE1AgQiBKcgBEINWhtBA3RqKQMApyACQQwgATUCACIEpyAEQg1aG0EDdGopAwCneKw3AwAgAEEANgIAIABBADYCCCAAC00BAX4gAkEMIAE1AgQiBKcgBEINWhtBA3RqIAJBDCABNQIAIgSnIARCDVobQQN0aikDACABNAIIVK03AwAgAEEANgIAIABBADYCCCAAC00BAX4gAkEMIAE1AgQiBKcgBEINWhtBA3RqIAJBDCABNQIAIgSnIARCDVobQQN0aikDACABNAIIU603AwAgAEEANgIAIABBADYCCCAAC00BAX4gAkEMIAE1AgQiBKcgBEINWhtBA3RqIAJBDCABNQIAIgSnIARCDVobQQN0aikDACABNAIIVq03AwAgAEEANgIAIABBADYCCCAAC00BAX4gAkEMIAE1AgQiBKcgBEINWhtBA3RqIAJBDCABNQIAIgSnIARCDVobQQN0aikDACABNAIIVa03AwAgAEEANgIAIABBADYCCCAAC2EBAX4gAkEMIAE1AggiBKcgBEINWhtBA3RqIAJBDCABNQIEIgSnIARCDVobQQN0aikDACACQQwgATUCACIEpyAEQg1aG0EDdGopAwBUrTcDACAAQQA2AgAgAEEANgIIIAALYQEBfiACQQwgATUCCCIEpyAEQg1aG0EDdGogAkEMIAE1AgQiBKcgBEINWhtBA3RqKQMAIAJBDCABNQIAIgSnIARCDVobQQN0aikDAFOtNwMAIABBADYCACAAQQA2AgggAAtOAQF+IAJBDCABNQIEIgSnIARCDVobQQN0aiACQQwgATUCACIEpyAEQg1aG0EDdGopAwCnIAEoAgh0rDcDACAAQQA2AgAgAEEANgIIIAALTgEBfiACQQwgATUCBCIEpyAEQg1aG0EDdGogAkEMIAE1AgAiBKcgBEINWhtBA3RqKQMApyABKAIIdqw3AwAgAEEANgIAIABBADYCCCAAC1EBAX4gAkEMIAE1AgQiBKcgBEINWhtBA3RqIAJBDCABNQIAIgSnIARCDVobQQN0aikDAMQgASgCCEEfca2HNwMAIABBADYCACAAQQA2AgggAAtRAQF+IAJBDCABNQIEIgSnIARCDVobQQN0aiABKAIIIAJBDCABNQIAIgSnIARCDVobQQN0aikDAEIfg6d0rDcDACAAQQA2AgAgAEEANgIIIAALUQEBfiACQQwgATUCBCIEpyAEQg1aG0EDdGogASgCCCACQQwgATUCACIEpyAEQg1aG0EDdGopAwBCH4Ondqw3AwAgAEEANgIAIABBADYCCCAAC1ABAX4gAkEMIAE1AgQiBKcgBEINWhtBA3RqIAE0AgggAkEMIAE1AgAiBKcgBEINWhtBA3RqKQMAQh+Dh8Q3AwAgAEEANgIAIABBADYCCCAAC1ABAX4gAkEMIAE1AgQiBKcgBEINWhtBA3RqIAJBDCABNQIAIgSnIARCDVobQQN0aikDACABKAIIQT9xrYY3AwAgAEEANgIAIABBADYCCCAAC1ABAX4gAkEMIAE1AgQiBKcgBEINWhtBA3RqIAJBDCABNQIAIgSnIARCDVobQQN0aikDACABKAIIQT9xrYg3AwAgAEEANgIAIABBADYCCCAAC1ABAX4gAkEMIAE1AgQiBKcgBEINWhtBA3RqIAJBDCABNQIAIgSnIARCDVobQQN0aikDACABKAIIQT9xrYc3AwAgAEEANgIAIABBADYCCCAAC0wBAX4gAkEMIAE1AgQiBKcgBEINWhtBA3RqIAE0AgggAkEMIAE1AgAiBKcgBEINWhtBA3RqKQMAhjcDACAAQQA2AgAgAEEANgIIIAALTAEBfiACQQwgATUCBCIEpyAEQg1aG0EDdGogATQCCCACQQwgATUCACIEpyAEQg1aG0EDdGopAwCINwMAIABBADYCACAAQQA2AgggAAtNAQF+IAJBDCABNQIEIgSnIARCDVobQQN0aiABNAIIIAJBDCABNQIAIgSnIARCDVobQQN0aikDAIfENwMAIABBADYCACAAQQA2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IAAgARDBASAAKAIAIAAoAgQiAiABIAJqELkBIAAgACgCBCABajYCBAtdAQN/QQhBKBAPIgEgADYCACABQQA2AgQgASABEMIBEMMBIQIgASgCACABKAIEQQEkBxC6ASEAIAEgASgCBCAAKAIIajYCBEEIQScQDyIBIAA2AgAgASACNgIEIAELSAECfyAAQQMQwQEgACgCBCIBIAAoAgAoAgQiAmotAAAgAUEBaiACai0AAEEIdHIgAUECaiACai0AAEEQdHIgACABQQNqNgIEC1cBAn8gAEEEEMEBIAAoAgQiASAAKAIAKAIEIgJqLQAAIAFBAWogAmotAABBCHRyIAFBAmogAmotAABBEHRyIAFBA2ogAmotAABBGHRyIAAgAUEEajYCBAsoAQJ/IABBARDBASAAKAIEIgEgACgCACgCBGotAAAgACABQQFqNgIECzQBAX8gAEH///8/SwRAQeDFAEHAhgFBM0E8EAAACyAAQQN0IgBBDhAPIgFBACAA/AsAIAELxAYCDH8DfkEIQSgQDyICIAA2AgAgAkEANgIEIAIQwgEhACACEMcBIQYgAhDCASEHIAIgACAGbBDDASEIIAIgBxDDASIAKAIIELUBIQMDQCABIAAoAghIBEAgAyABIAEgACgCBGotAAAQtgEgAUEBaiEBDAELCyACIAdBB2pBA3YQwwEhCkEEQRsQDyIJQQA2AgACQCAHQf////8ASw0AIAdBAnQiAEEcEA8iAUEAIAD8CwAgCSABNgIAIAooAghBAWshAQNAIAFBAE4EQCABIAooAgRqLQAAIQIgAUEDdCELQQchAANAIABBAE4EQCACQYABcSEMIAJBAXQhAiAAIAtqIgUgB0gEQCAJKAIAIAVBAnRqQRlBACAEQQFqIAwbIgQgBEEZTxs2AgALIABBAWshAAwBCwsgAUEBayEBDAELC0EEQR0QDyICQQA2AgAgBkH/AXEiAAR/IAgoAgggAG0FQQALEMgBIQRBACEAA0AgACAIKAIISARAQgAhDSAGQQFrQf8BcSEBA0AgAUEATgRAQn8gDUIIhiIOIAgoAgQgACABamoxAAB8Ig8gDSAPViANIA5WchshDSABQQFrIQEMAQsLIAQgACAGQf8BcSIBbUEDdGogDTcDACAAIAFqIQAMAQsLIAIgBDYCAEEAIQFBBEEeEA8iAEEANgIAIAMoAgwiBEH/////AEsNACAEQQJ0IgVBHxAPIgZBACAF/AsAIARBAEoEQCAGQQI2AgALA0AgASAESARAIAkoAgBBFGsoAhBBAnasIAGtWAR/QQEFIAkoAgAgAUECdGooAgALRQRAAn8gAUEBaiIFIAkoAgAiB0EUaygCEEECdkkEQCAHIAVBAnRqKAIADAELQQALIQUgASADKAIEai0AACMDKAIMQf8BcU8EfyMBBSMDKAIEIAEgAygCBGotAABBAnRqKAIACy0AEARAIAFBAWogBWoiBSAESARAIAYgBUECdGpBAjYCAAsgBiABQQJ0aiIFIAUoAgBBBHI2AgALCyABQQFqIQEMAQsLIAAgBjYCAEEQQRoQDyIBIAM2AgAgASAJNgIEIAEgAjYCCCABIAA2AgwgAQ8LQeDFAEHAhgFBM0E8EAAAC+oCAQh/QQhBKxAPIgBFBEBBAEEAEA8hAAtBGEEUEA8iAkEQEHQ2AgAgAkEDNgIEIAJBMBB0NgIIIAJBBDYCDCACQQA2AhAgAkEANgIUIAAgAjYCAEEMQRIQDyIDQQA2AgAgA0EANgIEIANBADYCCCADQYCAIDYCBCADQQBBAkETQdCQARAQNgIAIANBgAE2AgggAygCBBB0IQIDQCABQYABSARAIAMoAgAhBSABQQx0IgQgAkEUaygCECIGSwRAQfDEAEGQigFBxA5BBRAAAAsgBEGAIGogBkoEQEHgxQBBkIoBQdIOQQcQAAALQQxBChAPIgYgAjYCACAGQYAgNgIIIAYgAiAEajYCBEEIQQwQDyIEIAE2AgAgBCAGNgIEIAUgBSgCDEEBaiIGQQJBARARIAUoAgQiB0EEaiAHIAZBAWtBAnT8CgAAIAcgBDYCACAFIAY2AgwgAUEBaiEBDAELCyAAIAM2AgQgAAvtAQEDfyACQQx2IgNBEEkEQEHwkAEgA0EKELMBEK8BQdCRAUHKAEEHEAAACyAAKAIAIgIoAgAgAigCBCADQb3cypV8bEG1z9myAWpBEXdBr9bTvgJsIgJBD3YgAnNB95Svr3hsIgJBDXYgAnNBvdzKlXxsIgJBEHYgAnNxQQJ0aigCACECAkADQCACBEAgAigCCCIEQQFxBH9BAAUgAigCACADRgsNAiAEQX5xIQIMAQsLQQAhAgsgAkUEQCAAKAIEEHMhBCAAKAIAQQhBCxAPIgIgATYCACACIAQ2AgQgAyACEHULIAAoAgAgAxA2C5cBAQV/A0AgAygCCEEASgRAIAAgASACEMsBQYAgIAJB/x9xIgVrIgQgAygCCEsEQCADKAIIIQQLKAIEEDghByADQQAgBBC5ASIGKAIIIQggBygCCCAFIAhqSARAQfDEAEGQigFB7g5BBRAAAAsgBSAHKAIEaiAGKAIEIAj8CgAAIAIgBGohAkEBJAcgAyAEELoBIQMMAQsLCygAIAEgAmohAgNAIAEgAkkEQCAAQQIgARDLARogAUGAIGohAQwBCwsLzAIBA38gACgCBCEDIAAoAgAhBEEYQQ8QDyICIAM2AgwgAiAENgIQIAIgATYCFCACQQA2AgBBCEEQEA8iAEUEQEEAQQAQDyEACyAAIwU2AgAgAEEANgIEIAIgADYCBEEQQREQDyIARQRAQQBBABAPIQALIAAjBDYCACAAQQA2AgQgACMENgIIIABBADYCDCACIAA2AgggAUEMdiIBQRBJBEBBkJIBQdCRAUHmAEEHEAAACyABQQFrIQMgBCgCACAEKAIEIAFBvdzKlXxsQbXP2bIBakERd0Gv1tO+AmwiAEEPdiAAc0H3lK+veGwiAEENdiAAc0G93MqVfGwiAEEQdiAAc3FBAnRqKAIAIQACQANAIAAEQCAAKAIIIgRBAXEEf0EABSAAKAIAIAFGCw0CIARBfnEhAAwBCwtBACEACyACIAEgAyAAGzYCACACCzgBAX9BHEEqEA8iAyAANgIQIAMgATYCFCADIAI2AhggA0EAEBQ2AgAgA0EANgIEIANCADcDCCADC98DAQx/IAEoAggiAkGAgIAISwRAIAJBChCzASEAQYCAgAhBChCzASEBQeSOASAANgIAQeyOASABNgIAQeCOAUHcjgEoAgBBAnZB8PQAELQBQZCPAUESQQUQAAALQQhBKBAPIgMgADYCACADQQA2AgQgAxDFASEGIAMQxQEhACADQQIQwQEgAygCBCIEIAMoAgAoAgQiBWotAAAgBSAEQQFqai0AAEEIdHIgAyAEQQJqNgIEIAMQxQEhByADIAYQwwEhCCADIAAQwwEhCSADIAMQxgEQwwEgAygCACgCCCIKIAMoAgRKBEBB0I8BIAogAygCBGsQsgEQrwFB0IkBQR9BBxAAAAsQyQEhChDKASELQQx0IgMgBkH//wNqQYCAfHFBgIAIaiIEIABB/x9qQYBgcWoiDGohDUGAgPh3IAdB/x9qQYBgcSIHayEFIAYEQCALQQFBgIAEIAgQzAELIAIEQCALQQFBgID8dyABEMwBCyAABEAgC0ECIAQgCRDMAQsgAwRAIAsgDCADEM0BCyAHBEAgCyAFIAcQzQELIAsgDRDOASEAQQ0QyAEiAUKAgPz/DzcDACABQoCA+PcPNwMIIAFCgID89w83AzggAUFAayACrTcDACAKIAAgARDPAQuvAgECf0E0QRkQDyIEQQA2AgAgBEEANgIEIARBADYCCCAEQQA2AgwgBEEANgIQIARBADYCFCAEQQA2AhggBEEANgIcIARBADoAIEEIQSEQDyIDRQRAQQBBABAPIQMLIANBADYCACADQQA2AgQgBCADNgIkIAQQrgE2AihBFEENEA8iA0UEQEEAQQAQDyEDCyADQQA2AgAgA0EANgIEIANBADYCCCADQQA2AgwgA0EANgIQIAQgAzYCLEEIQSIQDyIDRQRAQQBBABAPIQMLIANBADoAACADQQA2AgQgBCADNgIwIAQgADYCACAEIAE2AgQgBCACNgIIQQhBLBAPIgBCADcDACAEIAA2AgwgBEEANgIQIARBfzYCFCAEQQA2AhggBEEANgIcIARBADoAICAECy8BAn8gACAAKAIMIgJBAWoiA0ECQQEQESAAKAIEIAJBAnRqIAE2AgAgACADNgIMC8ICAQd/IAAoAhAiBCgCCCEDIAQoAhAhBkEQQS0QDyIEQQA2AgAgBEEANgIEIARBADYCCCAEQQA2AgwgBkH/////AEsEQEHgxQBBsMUAQcYAQTwQAAALQQggBiAGQQhNG0ECdCIFQQEQDyIHQQAgBfwLACAEIAc2AgAgBCAHNgIEIAQgBTYCCCAEIAY2AgwDQCACIAZIBEAgAyACQQxsaiIFKAIIQQFxRQRAIAQgASAFKAIEEBIgAUEBaiEBCyACQQFqIQIMAQsLIAQgAUECQQAQESAEIAE2AgxBACEBA0AgASAEKAIMSARAIAAoAgwoAgAgBCgCBCABQQJ0aigCACgCBBDSASABQQFqIQEMAQsLIAAoAhAiAEEQEHQ2AgAgAEEDNgIEIABBMBB0NgIIIABBBDYCDCAAQQA2AhAgAEEANgIUC6cBAAJAAkACQCMHQQRrDgIBAgALAAtBACEECyAEBEAgACgCDBAUIgQgABDAASAEEMQBKAIAIQQFIAAoAgwQFCIEIAAQwAELIAMoAgwQFCIAIAMQwAEgBCAAENABIgAoAhAgACgCGCAAKAIUENEBIgAgAfwDNgIcAkAgACgCDCIDQQhrKAIAQSxGBEAgAyACNwMADAELAAsjCgRAIwooAggQ0wELIAAkCgvGAQIDfwF+IABBFGsoAhBBeHEiAiABKAIMIgRHBEAgBBCyASEAIAIQsgEhAUGUlAEgADYCAEGclAEgATYCAEGQlAFBjJQBKAIAQQJ2QfD0ABC0AUHAlAFB7wFBBRAAAAsDQCADIABBFGsoAhBBA3ZIBEBCACEFQQAhAgNAIAJBCEkEQCAFIAEoAgQgA0EDdCACamoxAAAgAkEDdEH/AXGthoQhBSACQQFqIQIMAQsLIAAgA0EDdGogBTcDACADQQFqIQMMAQsLC50BAAJAAkACQCMHQQNrDgIBAgALAAtBACEDCyADBEAgACgCDBAUIgMgABDAASADEMQBKAIAIQMFIAAoAgwQFCIDIAAQwAELIAMQyQEhAEENEMgBIgMgARDVAUECJAcCQCAAIAMQygFBABDOARDRASIAKAIMIgFBCGsoAgBBLEYEQCABIAI3AwAMAQsACyMKBEAjCigCCBDTAQsgACQKCzIBAX9BCEEwEA8iAEUEQEEAQQAQDyEACyAAQQA2AgAgAEEAQQBBBkHQlQEQEDYCBCAAC9wBAQR/QYCABCEDA0AgBCABKAIMSARAIAAgASgCBCAEQQJ0aigCACIGKAIIIAYoAgAgBigCBBAUEMwBIAYoAghBAkYEQCADIAYoAgBNBEAgBigCACEDCwsgBEEBaiEEDAELCwNAIAUgAigCDEgEQCACKAIEIAVBAnRqKAIAIgQoAgQoAgwQFCEGQQAhAQNAIAEgBigCCEgEQCABIAYoAgRqIAEgBCgCBCgCBGotAAA6AAAgAUEBaiEBDAELCyAAQQAgBCgCACAGEMwBIAVBAWohBQwBCwsgACADEM4BC6gDAQV/AkACQAJAIwdBBWsOAgECAAsAC0EAIQULIAAhBiAFBEAgACgCDBAUIgUgABDAASAFEMQBKAIAIQAFIAYoAgwQFCIAIAYQwAELIAAQyQEhBkENEMgBIgUgARDVARDKASEHQQBBAkEvQZCVARAQIQFBCEEoEA8iCCACNgIAIAhBADYCBANAIAgoAgQgCCgCACgCCEgEQEEMQS4QDyIARQRAQQBBABAPIQALIABBADYCACAAQQA2AgQgAEEANgIIIAAgCBDGATYCACAAIAgQxgE2AgQgAEECQQEgCBDHARs2AgggASAAENIBDAELC0EAQQJBMUGwlQEQECEIQQhBKBAPIgIgAzYCACACQQA2AgQDQCACKAIEIAIoAgAoAghIBEAQ1wEiCSACEMYBNgIAIAIgAhDGASIDEMMBIQpBACEAA0AgACADSQRAIAkoAgQgACAKKAIEai0AABC7ASAAQQFqIQAMAQsLIAggCRDSAQwBCwsCQCAGIAUgByABIAgQ2AEQ0QEiACgCDCIBQQhrKAIAQSxGBEAgASAENwMADAELAAsgACQKC6IKAgF+DH8gACgCFEEDRgRAIABBfzYCFCAAIAAoAhw2AhAgAEF/NgIcCwJAIAAoAhRBf0cNACAAKAIcIgNBf0cEQCAAIAM2AhAgAEF/NgIcQQEPCyAAKAIAIggoAgAhBSAIKAIEIQMgACgCKCEHIAAoAiwhBAJAA0AgASAGSwRAIABBADYCGCAEQQA2AgwgBEEANgIAIAMoAgBBFGsoAhBBAnasIAAoAhAiCa1YBH9BAQUgAygCACAJQQJ0aigCAAsEQCMBKQMIIQICQCAAKAIMIgFBCGsoAgBBLEYEQAJ/IAEgASkDACACfTcDACABKQMAQgBTBEAgAUIANwMAQQEMAQtBAAshAQwBCwALIAEEQCAAQQQ2AhQFIABBATYCFAsMBAsgCSAFKAIEai0AACIKIwMoAgxIBH8jAygCBCAKQQJ0aigCAAUjAQsiCykDCCECAkAgACgCDCIMQQhrKAIAQSxGBEACfyAMIAwpAwAgAn03AwAgDCkDAEIAUwRAIAxCADcDAEEBDAELQQALIQwMAQsACyAMBEAgAEEENgIUDAQLIAsjAUYNAiALKAIEIQwCfyAJQQFqIg0gAygCACIOQRRrKAIQQQJ2SQRAIA4gDUECdGooAgAMAQtBAAshDiAHIAwgBSANIA4QtwEhDCALIwJGBH8gAC0AIAVBAAsEQCAAKAIEQQwgDDUCACICpyACQg1aG0EDdGopAwCnrUL/H3xCDIhCBIYhAgJAIAAoAgwiC0EIaygCAEEsRgRAAn8gCyALKQMAIAJ9NwMAIAspAwBCAFMEQCALQgA3AwBBAQwBC0EACyELDAELAAsgCwRAIABBBDYCFAwFCwtBhPMAKAIAIApBAnRqKAIAIQogACgCBCELIAAoAgghDUEEJAcCQAJAAkACQAJAIAQgDCALIA0gCigCABEAACIKKAIADgQDAQACBAsgACgCJCEJIAgoAgghCwJAIAooAggiCkGAgHxGBEAgCUEBNgIADAELIApBAXFBASAKGwRAIAlBAjYCAAwBCyAKQQF2QQFrIgogCygCAEEUaygCEEEDdk8EQCAJQQI2AgAMAQsgCygCACAKQQN0aikDACICQoCAgIAQWgRAIAlBAjYCAAwBCyAJQQA2AgAgCSACPgIECyAJKAIAQQFGBEAgAEEANgIUDAgLIAkoAgBBAkYNBiAAKAIwIQoCfyAJKAIEIgkgCCgCDCgCACILQRRrKAIQQQJ2SQRAIAsgCUECdGooAgBBAnFBAEcMAQtBAAsEQCAKQQE6AAAgCiAJNgIEBSAKQQA6AAAgCkEANgIECyAKLQAARQ0GIAAgCigCBDYCEAwDCyAAKAIwIQsCfyAKKAIEIAlqIgkgCCgCDCgCACIKQRRrKAIQQQJ2SQRAIAogCUECdGooAgBBAnFBAEcMAQtBAAsEQCALQQE6AAAgCyAJNgIEBSALQQA6AAAgC0EANgIECyALLQAARQ0FIAAgCygCBDYCEAwCCyAKKAIMQQNGBEAgAEEDNgIUIAAgCigCEDYCGCAAIAAoAhBBAWogDmo2AhwMBgsgCigCDEEBRgRAIAooAhBBgIAESQRAIABBATYCFAUgAEECNgIUIAAgCigCEDYCGAsMBgsgCigCDCIBQQJGDQQgAUUEQCAAQQE2AhQgACAKKAIQNgIYDAYLQfCVAUGglgFBugFBCxAAAAsgACAAKAIQIA5BAWpqNgIQCyAGQQFqIQYMAQsLQQEPCyAAQQE2AhQLQQALEQAjCgRAIwpBARDaAQ8LQQALEQAjCgRAIwogABDaAQ8LQQALEAAjCkUEQEEADwsjCigCEAsQACMKRQRADwsjCiAANgIcCxQAIwpFBEBBAQ8LIwooAhRB/wFxCxAAIwpFBEBBAA8LIwooAhgLMQIBfwF+IwpFBEBCAA8LAkAjCigCDCIAQQhrKAIAQSxGBEAgACkDACEBDAELAAsgAQspAQF/IwoEQAJAIwooAgwiAUEIaygCAEEsRgRAIAEgADcDAAwBCwALCwu0AQIFfwF+QegAEBQhAUEBJAcgASgCBCEDIAEoAggiBEEAIARBAEwbIQAgACAESARAIAAgA2pBACAEIABr/AsACyMKRQRAIAEPCyMKIQMDQCACIAMoAgQiAEEUaygCEEEDdkgEQCAAIAJBA3RqKQMAIQVBACEAA0AgAEEISARAIAEoAgQgAkEDdCAAamogBUL/AYM8AAAgBUIIiCEFIABBAWohAAwBCwsgAkEBaiECDAELCyABCxMAIwpFBEAPCyMKKAIEIAAQ1QEL9gEBA38CQCMKRQ0AIwooAggiAigCECIBKAIAIAEoAgQgAEG93MqVfGxBtc/ZsgFqQRF3Qa/W074CbCIBQQ92IAFzQfeUr694bCIBQQ12IAFzQb3cypV8bCIBQRB2IAFzcUECdGooAgAhAQJAA0AgAQRAIAEoAggiA0EBcQR/QQAFIAEoAgAgAEYLDQIgA0F+cSEBDAELC0EAIQELIAEEfyACKAIQIAAQNigCBBA4BUEACyIARQ0AIAAPC0GAIBAUIQBBASQHIAAoAgQhASAAKAIIIgJBACACQQBMGyEDIAIgA0oEQCABIANqQQAgAiADa/wLAAsgAAuhAgEHfyMKRQRAQQAPCyMKIQIQMyEEAn8gAigCCCEFIAEiAgRAIAAhASACrUL/H3xCDIinIQcDQCADIAdIBEAgBSAEIAUoAgRBASABEDdBACAELQAADQMaIAFBgCBqIQEgA0EBaiEDDAELCwsgAhAUIQcDQCAHKAIIIgEgBkoEQAJAIAEgBmshAiAFIAQgBSgCBCIIQQEgABA3IAQtAAANACACIAgoAgQiAWpBgCBPBEBBgCAgAWshAgsgASACaiEDIAgoAgAoAgQQOCEIA0AgASADSQRAIAYgBygCBGogASAIKAIEai0AADoAACAGQQFqIQYgAUEBaiEBDAELCyAAIAJqIQAMAgsLC0EAIAQtAAANABogBwsgBC0AAARAQQAPCwtgAQR/IwpFBEBBAA8LIwohBCAAIAEoAghqIQUQMyEDIAAhAgNAIAIgBUkEQCAEKAIIIAMgAiABKAIEIAIgAGtqMQAAQQEQnAEgAy0AAARAQQAPCyACQQFqIQIMAQsLQQEL0gEBAX8gAigCDBAUIgcgAhDAASAHIQJBABAUIQcgAUUEQCACEMQBIgEoAgAhAiABKAIEIQcLIABFBEAgAhDJARDKASAEIAUQ2AFBDRDIASEEQQAhAANAIAAgAygCDEgEQCAAQQN0IgUgBGogAygCBCAFaikDADcDACAAQQFqIQAMAQsLIAQQzwEiACAHNgIAIAAPCyAAQQFGBEAgBigCDBAUIgAgBhDAASACIAAQ0AEiACAHNgIAIAAPC0HwlwEgABCyARCvAUGgmAFB0QBBAxAAAAucBQEEfyABIAIgAEEAQQNBNEHwlgEQEEEAQQJBL0GQlwEQEEEAQQJBMUGwlwEQEEEAQQBBBkHQlwEQEBDoASgCECIAKAIAKAIMIQFBGEE1EA8iAkEQEHQ2AgAgAkEDNgIEIAJBMBB0NgIIIAJBBDYCDCACQQA2AhAgAkEANgIUA0AgASAESgRAIAAoAgQiBSgCAEEUaygCEEECdqwgBK1YBH9BAQUgBSgCACAEQQJ0aigCAAsEQEGQ9QBB4JgBQRBBBxAAAAsgBCAAKAIAKAIEai0AACIFIwMoAgxB/wFxTwR/IwEFIwMoAgQgBUECdGooAgALIQUCfyAEIAAoAgwoAgAiBkEUaygCEEECdkkEQCAEQQJ0IAZqKAIAQQJxQQBHDAELQQALBEAgAwRAIAIgAygCACADEHULQRBBMhAPIgNFBEBBAEEAEA8hAwsgA0EANgIAIANCADcDCCADIAQ2AgALIAMEQCADIAMpAwggBSkDCHw3AwgLAn8gBEEBaiIFIAAoAgQoAgAiBkEUaygCEEECdkkEQCAFQQJ0IAZqKAIADAELQQALIARqQQFqIQQMAQsLIAMEQCACIAMoAgAgAxB1CyACKAIIIQEgAigCECEDQRBBMxAPIgRBADYCACAEQQA2AgQgBEEANgIIIARBADYCDCADQf////8ASwRAQeDFAEGwxQBBxgBBPBAAAAtBCCADIANBCE0bQQJ0IgBBARAPIgJBACAA/AsAIAQgAjYCACAEIAI2AgQgBCAANgIIIAQgAzYCDEEAIQBBACECA0AgAiADSARAIAEgAkEMbGoiBSgCCEEBcUUEQCAEIAAgBSgCBBASIABBAWohAAsgAkEBaiECDAELCyAEIABBAkEAEBEgBCAANgIMIAQLrwEBBH8gAUH/AXFBEBCzASIBQRRrKAIQQX5xIQYgAEGs+AAoAgBBfnEiAEUgBkEES3IEfyABBUEEQQIQDyECQQQgBmsiBSAASwRAIAUgBUECayAAbiAAbCIHayEDA0AgBCAHSQRAIAIgBGpBsPgAIAD8CgAAIAAgBGohBAwBCwsgAiAHakGw+AAgA/wKAAAFIAJBsPgAIAX8CgAACyACIAVqIAEgBvwKAAAgAgsQrwELvgEBBX8gASACIABBAEEDQTRBoJkBEBBBAEECQS9BwJkBEBBBAEECQTFB4JkBEBBBAEEAQQZBgJoBEBAQ6AEhAyACBH9B8PQABUGgmgFB0JoBEK8BQfD0ACEBIAMoAgAiBigCBCECQQAhACAGKAIIIQQDQCAAIARIBEAgACACai0AACEFQQQkByABIAUgACAGQfCaASgCABEAACEBIABBAWohAAwBCwsgARCvAUGQmwEQrwELIAMoAhAQuAEQrwELqgIBAn8gACECIAFCClQEQCAAIAFCMIQ9AQBBAQ8LIAFC/////w9YBEAgAaciA0GgjQZJBH8gA0HkAEkEfyADQQpPQQFqBSADQZDOAE9BA2ogA0HoB09qCwUgA0GAreIESQR/IANBwIQ9T0EGagUgA0GAlOvcA09BCGogA0GAwtcvT2oLCyEAIAIgAyAAELABBSACIAEgAUKAgJqm6q/jAVQEfyABQoCglKWNHVQEfyABQoDQ28P0AlpBCmogAUKAyK+gJVpqBSABQoCA6YOx3hZaQQ1qIAFCgMDK84SjAlpqCwUgAUKAgKjsha/RsQFUBH8gAUKAgIT+pt7hEVpBEGoFIAFCgICgz8jgyOOKf1pBEmogAUKAgJC7utat8A1aagsLIgAQvQELIAALsAIBBX8gAUEBayIFQQBIBEBB8PQADwsgBUUEQCAAKQMAQQoQvgEPC0H8hQEoAgBBAXYiBEEUaiAFbEEUaiIGQQF0QQIQDyEBA0AgAyAFSARAIAEgAkEBdGogACADQQN0aikDABDsASACaiECIAQEQCABIAJBAXRqQYCGASAEQQF0/AoAACACIARqIQILIANBAWohAwwBCwsgBiABIAJBAXRqIAAgBUEDdGopAwAQ7AEgAmoiAEoEQCAAQQAgAEEAShsiACABQRRrKAIQQQF2IgIgACACSBsiA0EAIANBAEwbQQF0IQRB8PQAIQACQCADQQAgA0EAThtBAXQiAyAEayIFRQ0AIAEhACAERSADIAJBAXRGcQ0AIAVBAhAPIgAgASAEaiAF/AoAAAsgAA8LIAELEABB0JoBIABBEBC+ARCvAQtiAgR/AX4gAEEUaygCEEEDdiIDQQJBOUEAEBAiBCgCBCEFA0AgAiADSARAIAAgAkEDdGopAwAhBkEDJAcgBSACQQJ0aiAGIAIgACABKAIAEQsANgIAIAJBAWohAgwBCwsgBAvXAgEEfyAAUARAQbD4AA8LQgAgAH0gACAAQj+Ip0EBdCIBGyIAQv////8PWARAIACnIgRBoI0GSQR/IARB5ABJBH8gBEEKT0EBagUgBEGQzgBPQQNqIARB6AdPagsFIARBgK3iBEkEfyAEQcCEPU9BBmoFIARBgJTr3ANPQQhqIARBgMLXL09qCwsiA0EBdCABakECEA8iAiABaiAEIAMQsAEFIABCgICapuqv4wFUBH8gAEKAoJSljR1UBH8gAEKA0NvD9AJaQQpqIABCgMivoCVaagUgAEKAgOmDsd4WWkENaiAAQoDAyvOEowJaagsFIABCgICo7IWv0bEBVAR/IABCgICE/qbe4RFaQRBqBSAAQoCAoM/I4Mjjin9aQRJqIABCgICQu7rWrfANWmoLCyIDQQF0IAFqQQIQDyICIAFqIAAgAxC9AQsgAQRAIAJBLTsBAAsgAgv/BAEBfiAAIAEgAiADIAQQtwEiAkUEQEEADwtBJEE7EA8iAEUEQEEAQQAQDyEACyAAQgA3AwAgAEIANwMIIABCADcDECAAQgA3AxggABCuATYCICAAIAI2AiACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABDg0MBwAHAQIJCQMKCgQFBgsgACACNAIANwMADAcLIAAgBUEMIAI1AgAiBqcgBkINWhtBA3RqKQMANwMADAYLIAAgBUEMIAI1AgAiBqcgBkINWhtBA3RqKQMANwMAIAAgAjUCBCACNQIAQiCGfDcDCAwJCyAAIAVBDCACNQIAIganIAZCDVobQQN0aikDADcDACAAIAVBDCACNQIEIganIAZCDVobQQN0aikDADcDCAwICyAAIAVBDCACNQIAIganIAZCDVobQQN0aikDADcDACAAIAVBDCACNQIEIganIAZCDVobQQN0aikDADcDCCAAIAI0Agg3AxAgACACNAIMNwMYDAcLIAAgBUEMIAI1AgAiBqcgBkINWhtBA3RqKQMANwMAIAAgBUEMIAI1AgQiBqcgBkINWhtBA3RqKQMANwMIIAAgBUEMIAI1AggiBqcgBkINWhtBA3RqKQMANwMQDAYLQYCHASABELIBEK8BQfCfAUHQAkEHEAAACyAAIAI0AgA3AwAMBAsgACACNAIENwMIDAMLIAAgBUEMIAI1AgAiBqcgBkINWhtBA3RqKQMANwMAIAAgAjQCBDcDCAwBCyAAIAVBDCACNQIAIganIAZCDVobQQN0aikDADcDACAAIAVBDCACNQIEIganIAZCDVobQQN0aikDADcDCAsgACACNAIINwMQCyAAC7UDAQl/QQBBAkExQYCjARAQIQQgACgCECICKAIIIQYgAigCECECQRBBJBAPIgVBADYCACAFQQA2AgQgBUEANgIIIAVBADYCDCACQf////8ASwRAQeDFAEGwxQBBxgBBPBAAAAtBCCACIAJBCE0bQQJ0IgdBARAPIghBACAH/AsAIAUgCDYCACAFIAg2AgQgBSAHNgIIIAUgAjYCDANAIAIgA0oEQCAGIANBDGxqIgcoAghBAXFFBEAgBSABIAcoAgAQEiABQQFqIQELIANBAWohAwwBCwsgBSABQQJBABARIAUgATYCDEEAIQFBACEDA0AgAyAFKAIMSARAIAAoAhAgBSgCBCADQQJ0aigCACIHEDYiCCgCBCgCBARAQQAhAgNAIAIgCCgCBBA4KAIISARAIAIgCCgCBBA4KAIEai0AACIGBEAgAQRAIAEoAgQgBhC7AQUQ1wEiASAHQQx0IAJqNgIAQQFBAEEGQQAQECIJQQAgBhC2ASABIAk2AgQLBSABBEAgBCABENIBQQAhAQsLIAJBAWohAgwBCwsLIANBAWohAwwBCwsgAQRAIAQgARDSAQsgBAvZCAINfwF+QQEhAhCuASEJA0ACQCACRQRAIAEEQEGUnAEgACgCBCICIAJBFGsoAhBBA3YQ7QE2AgBBkJwBQYycASgCAEECdkHw9AAQtAEQAQsgAQRAQbScASAAKAIEQdCcARDvASICKAIEIAIoAgxBgIYBELQBNgIAQbCcAUGsnAEoAgBBAnZB8PQAELQBEAELIAEEQEHwnAEgACgCFBCyARCvARABCyABBEBBsJ0BIAAoAhhBChCzARCvARABCwwBCyABBEBB4J0BIAAoAhBBChCzARCvARABCyABBEACQCAAKAIMIgJBCGsoAgBBLEYEQCACKQMA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LABBmBcLGQIAAAASAAAAUwBUAE8AUgBFAF8AVQAzADIAQbwXCwEsAEHIFwsZAgAAABIAAABTAFQATwBSAEUAXwBVADYANABB7BcLATwAQfgXCycCAAAAIAAAAFMAVABPAFIARQBfAEkATQBNAF8ASQBOAEQAXwBVADgAQawYCwE8AEG4GAspAgAAACIAAABTAFQATwBSAEUAXwBJAE0ATQBfAEkATgBEAF8AVQAxADYAQewYCwE8AEH4GAspAgAAACIAAABTAFQATwBSAEUAXwBJAE0ATQBfAEkATgBEAF8AVQAzADIAQawZCwE8AEG4GQspAgAAACIAAABTAFQATwBSAEUAXwBJAE0ATQBfAEkATgBEAF8AVQA2ADQAQewZCwEsAEH4GQshAgAAABoAAABMAE8AQQBEAF8ASQBNAE0AXwBKAFUATQBQAEGcGgsBLABBqBoLIQIAAAAaAAAAQgBSAEEATgBDAEgAXwBFAFEAXwBJAE0ATQBBzBoLASwAQdgaCyECAAAAGgAAAEIAUgBBAE4AQwBIAF8ATgBFAF8ASQBNAE0AQfwaCwE8AEGIGwslAgAAAB4AAABCAFIAQQBOAEMASABfAEwAVABfAFUAXwBJAE0ATQBBvBsLATwAQcgbCyUCAAAAHgAAAEIAUgBBAE4AQwBIAF8ATABFAF8AVQBfAEkATQBNAEH8GwsBPABBiBwLJQIAAAAeAAAAQgBSAEEATgBDAEgAXwBHAEUAXwBVAF8ASQBNAE0AQbwcCwE8AEHIHAslAgAAAB4AAABCAFIAQQBOAEMASABfAEcAVABfAFUAXwBJAE0ATQBB/BwLATwAQYgdCyUCAAAAHgAAAEIAUgBBAE4AQwBIAF8ATABUAF8AUwBfAEkATQBNAEG8HQsBPABByB0LJQIAAAAeAAAAQgBSAEEATgBDAEgAXwBMAEUAXwBTAF8ASQBNAE0AQfwdCwE8AEGIHgslAgAAAB4AAABCAFIAQQBOAEMASABfAEcARQBfAFMAXwBJAE0ATQBBvB4LATwAQcgeCyUCAAAAHgAAAEIAUgBBAE4AQwBIAF8ARwBUAF8AUwBfAEkATQBNAEH8HgsBLABBiB8LFwIAAAAQAAAATQBPAFYARQBfAFIARQBHAEGsHwsBPABBuB8LKQIAAAAiAAAAQwBPAFUATgBUAF8AUwBFAFQAXwBCAEkAVABTAF8ANgA0AEHsHwsBPABB+B8LKQIAAAAiAAAAQwBPAFUATgBUAF8AUwBFAFQAXwBCAEkAVABTAF8AMwAyAEGsIAsBPABBuCALLwIAAAAoAAAATABFAEEARABJAE4ARwBfAFoARQBSAE8AXwBCAEkAVABTAF8ANgA0AEHsIAsBPABB+CALLwIAAAAoAAAATABFAEEARABJAE4ARwBfAFoARQBSAE8AXwBCAEkAVABTAF8AMwAyAEGsIQsBPABBuCELMQIAAAAqAAAAVABSAEEASQBMAEkATgBHAF8AWgBFAFIATwBfAEIASQBUAFMAXwA2ADQAQewhCwE8AEH4IQsxAgAAACoAAABUAFIAQQBJAEwASQBOAEcAXwBaAEUAUgBPAF8AQgBJAFQAUwBfADMAMgBBrCILASwAQbgiCyECAAAAGgAAAFMASQBHAE4AXwBFAFgAVABFAE4ARABfADgAQdwiCwEsAEHoIgsjAgAAABwAAABTAEkARwBOAF8ARQBYAFQARQBOAEQAXwAxADYAQYwjCwEsAEGYIwsjAgAAABwAAABaAEUAUgBPAF8ARQBYAFQARQBOAEQAXwAxADYAQbwjCwEsAEHIIwshAgAAABoAAABSAEUAVgBFAFIAUwBFAF8AQgBZAFQARQBTAEHsIwsBLABB+CMLHwIAAAAYAAAAUwBUAE8AUgBFAF8ASQBOAEQAXwBVADgAQZwkCwEsAEGoJAshAgAAABoAAABTAFQATwBSAEUAXwBJAE4ARABfAFUAMQA2AEHMJAsBLABB2CQLIQIAAAAaAAAAUwBUAE8AUgBFAF8ASQBOAEQAXwBVADMAMgBB/CQLASwAQYglCyECAAAAGgAAAFMAVABPAFIARQBfAEkATgBEAF8AVQA2ADQAQawlCwEsAEG4JQsdAgAAABYAAABMAE8AQQBEAF8ASQBOAEQAXwBVADgAQdwlCwEsAEHoJQsdAgAAABYAAABMAE8AQQBEAF8ASQBOAEQAXwBJADgAQYwmCwEsAEGYJgsfAgAAABgAAABMAE8AQQBEAF8ASQBOAEQAXwBVADEANgBBvCYLASwAQcgmCx8CAAAAGAAAAEwATwBBAEQAXwBJAE4ARABfAEkAMQA2AEHsJgsBLABB+CYLHwIAAAAYAAAATABPAEEARABfAEkATgBEAF8AVQAzADIAQZwnCwEsAEGoJwsfAgAAABgAAABMAE8AQQBEAF8ASQBOAEQAXwBJADMAMgBBzCcLASwAQdgnCx8CAAAAGAAAAEwATwBBAEQAXwBJAE4ARABfAFUANgA0AEH8JwsBLABBiCgLGwIAAAAUAAAAQQBEAEQAXwBJAE0ATQBfADMAMgBBrCgLASwAQbgoCxUCAAAADgAAAEEATgBEAF8ASQBNAE0AQdwoCwEsAEHoKAsVAgAAAA4AAABYAE8AUgBfAEkATQBNAEGMKQsBHABBmCkLEwIAAAAMAAAATwBSAF8ASQBNAE0AQawpCwEsAEG4KQsbAgAAABQAAABNAFUATABfAEkATQBNAF8AMwAyAEHcKQsBLABB6CkLHwIAAAAYAAAAUwBFAFQAXwBMAFQAXwBVAF8ASQBNAE0AQYwqCwEsAEGYKgsfAgAAABgAAABTAEUAVABfAEwAVABfAFMAXwBJAE0ATQBBvCoLASwAQcgqCyECAAAAGgAAAFMASABMAE8AXwBMAF8ASQBNAE0AXwAzADIAQewqCwEsAEH4KgshAgAAABoAAABTAEgATABPAF8AUgBfAEkATQBNAF8AMwAyAEGcKwsBLABBqCsLIQIAAAAaAAAAUwBIAEEAUgBfAFIAXwBJAE0ATQBfADMAMgBBzCsLASwAQdgrCyMCAAAAHAAAAE4ARQBHAF8AQQBEAEQAXwBJAE0ATQBfADMAMgBB/CsLASwAQYgsCx8CAAAAGAAAAFMARQBUAF8ARwBUAF8AVQBfAEkATQBNAEGsLAsBLABBuCwLHwIAAAAYAAAAUwBFAFQAXwBHAFQAXwBTAF8ASQBNAE0AQdwsCwE8AEHoLAspAgAAACIAAABTAEgATABPAF8ATABfAEkATQBNAF8AQQBMAFQAXwAzADIAQZwtCwE8AEGoLQspAgAAACIAAABTAEgATABPAF8AUgBfAEkATQBNAF8AQQBMAFQAXwAzADIAQdwtCwE8AEHoLQspAgAAACIAAABTAEgAQQBSAF8AUgBfAEkATQBNAF8AQQBMAFQAXwAzADIAQZwuCwEsAEGoLgsdAgAAABYAAABDAE0ATwBWAF8ASQBaAF8ASQBNAE0AQcwuCwEsAEHYLgsdAgAAABYAAABDAE0ATwBWAF8ATgBaAF8ASQBNAE0AQfwuCwEsAEGILwsbAgAAABQAAABBAEQARABfAEkATQBNAF8ANgA0AEGsLwsBLABBuC8LGwIAAAAUAAAATQBVAEwAXwBJAE0ATQBfADYANABB3C8LASwAQegvCyECAAAAGgAAAFMASABMAE8AXwBMAF8ASQBNAE0AXwA2ADQAQYwwCwEsAEGYMAshAgAAABoAAABTAEgATABPAF8AUgBfAEkATQBNAF8ANgA0AEG8MAsBLABByDALIQIAAAAaAAAAUwBIAEEAUgBfAFIAXwBJAE0ATQBfADYANABB7DALASwAQfgwCyMCAAAAHAAAAE4ARQBHAF8AQQBEAEQAXwBJAE0ATQBfADYANABBnDELATwAQagxCykCAAAAIgAAAFMASABMAE8AXwBMAF8ASQBNAE0AXwBBAEwAVABfADYANABB3DELATwAQegxCykCAAAAIgAAAFMASABMAE8AXwBSAF8ASQBNAE0AXwBBAEwAVABfADYANABBnDILATwAQagyCykCAAAAIgAAAFMASABBAFIAXwBSAF8ASQBNAE0AXwBBAEwAVABfADYANABB3DILASwAQegyCx8CAAAAGAAAAFIATwBUAF8AUgBfADYANABfAEkATQBNAEGMMwsBPABBmDMLJwIAAAAgAAAAUgBPAFQAXwBSAF8ANgA0AF8ASQBNAE0AXwBBAEwAVABBzDMLASwAQdgzCx8CAAAAGAAAAFIATwBUAF8AUgBfADMAMgBfAEkATQBNAEH8MwsBPABBiDQLJwIAAAAgAAAAUgBPAFQAXwBSAF8AMwAyAF8ASQBNAE0AXwBBAEwAVABBvDQLASwAQcg0CxkCAAAAEgAAAEIAUgBBAE4AQwBIAF8ARQBRAEHsNAsBLABB+DQLGQIAAAASAAAAQgBSAEEATgBDAEgAXwBOAEUAQZw1CwEsAEGoNQsdAgAAABYAAABCAFIAQQBOAEMASABfAEwAVABfAFUAQcw1CwEsAEHYNQsdAgAAABYAAABCAFIAQQBOAEMASABfAEwAVABfAFMAQfw1CwEsAEGINgsdAgAAABYAAABCAFIAQQBOAEMASABfAEcARQBfAFUAQaw2CwEsAEG4NgsdAgAAABYAAABCAFIAQQBOAEMASABfAEcARQBfAFMAQdw2CwE8AEHoNgspAgAAACIAAABMAE8AQQBEAF8ASQBNAE0AXwBKAFUATQBQAF8ASQBOAEQAQZw3CwEcAEGoNwsTAgAAAAwAAABBAEQARABfADMAMgBBvDcLARwAQcg3CxMCAAAADAAAAFMAVQBCAF8AMwAyAEHcNwsBHABB6DcLEwIAAAAMAAAATQBVAEwAXwAzADIAQfw3CwEsAEGIOAsXAgAAABAAAABEAEkAVgBfAFUAXwAzADIAQaw4CwEsAEG4OAsXAgAAABAAAABEAEkAVgBfAFMAXwAzADIAQdw4CwEsAEHoOAsXAgAAABAAAABSAEUATQBfAFUAXwAzADIAQYw5CwEsAEGYOQsXAgAAABAAAABSAEUATQBfAFMAXwAzADIAQbw5CwEsAEHIOQsZAgAAABIAAABTAEgATABPAF8ATABfADMAMgBB7DkLASwAQfg5CxkCAAAAEgAAAFMASABMAE8AXwBSAF8AMwAyAEGcOgsBLABBqDoLGQIAAAASAAAAUwBIAEEAUgBfAFIAXwAzADIAQcw6CwEcAEHYOgsTAgAAAAwAAABBAEQARABfADYANABB7DoLARwAQfg6CxMCAAAADAAAAFMAVQBCAF8ANgA0AEGMOwsBHABBmDsLEwIAAAAMAAAATQBVAEwAXwA2ADQAQaw7CwEsAEG4OwsXAgAAABAAAABEAEkAVgBfAFUAXwA2ADQAQdw7CwEsAEHoOwsXAgAAABAAAABEAEkAVgBfAFMAXwA2ADQAQYw8CwEsAEGYPAsXAgAAABAAAABSAEUATQBfAFUAXwA2ADQAQbw8CwEsAEHIPAsXAgAAABAAAABSAEUATQBfAFMAXwA2ADQAQew8CwEsAEH4PAsZAgAAABIAAABTAEgATABPAF8ATABfADYANABBnD0LASwAQag9CxkCAAAAEgAAAFMASABMAE8AXwBSAF8ANgA0AEHMPQsBLABB2D0LGQIAAAASAAAAUwBIAEEAUgBfAFIAXwA2ADQAQfw9CwEcAEGIPgsNAgAAAAYAAABBAE4ARABBnD4LARwAQag+Cw0CAAAABgAAAFgATwBSAEG8PgsBHABByD4LCwIAAAAEAAAATwBSAEHcPgsBLABB6D4LIQIAAAAaAAAATQBVAEwAXwBVAFAAUABFAFIAXwBTAF8AUwBBjD8LASwAQZg/CyECAAAAGgAAAE0AVQBMAF8AVQBQAFAARQBSAF8AVQBfAFUAQbw/CwEsAEHIPwshAgAAABoAAABNAFUATABfAFUAUABQAEUAUgBfAFMAXwBVAEHsPwsBLABB+D8LFwIAAAAQAAAAUwBFAFQAXwBMAFQAXwBVAEGcwAALASwAQajAAAsXAgAAABAAAABTAEUAVABfAEwAVABfAFMAQczAAAsBLABB2MAACxUCAAAADgAAAEMATQBPAFYAXwBJAFoAQfzAAAsBLABBiMEACxUCAAAADgAAAEMATQBPAFYAXwBOAFoAQazBAAsBLABBuMEACxcCAAAAEAAAAFIATwBUAF8ATABfADYANABB3MEACwEsAEHowQALFwIAAAAQAAAAUgBPAFQAXwBMAF8AMwAyAEGMwgALASwAQZjCAAsXAgAAABAAAABSAE8AVABfAFIAXwA2ADQAQbzCAAsBLABByMIACxcCAAAAEAAAAFIATwBUAF8AUgBfADMAMgBB7MIACwEsAEH4wgALFQIAAAAOAAAAQQBOAEQAXwBJAE4AVgBBnMMACwEcAEGowwALEwIAAAAMAAAATwBSAF8ASQBOAFYAQbzDAAsBHABByMMACw8CAAAACAAAAFgATgBPAFIAQdzDAAsBHABB6MMACw0CAAAABgAAAE0AQQBYAEH8wwALARwAQYjEAAsRAgAAAAoAAABNAEEAWABfAFUAQZzEAAsBHABBqMQACw0CAAAABgAAAE0ASQBOAEG8xAALARwAQcjEAAsRAgAAAAoAAABNAEkATgBfAFUAQdzEAAsBPABB6MQACysCAAAAJAAAAEkAbgBkAGUAeAAgAG8AdQB0ACAAbwBmACAAcgBhAG4AZwBlAEGcxQALASwAQajFAAshAgAAABoAAAB+AGwAaQBiAC8AYQByAHIAYQB5AC4AdABzAEHMxQALASwAQdjFAAsjAgAAABwAAABJAG4AdgBhAGwAaQBkACAAbABlAG4AZwB0AGgAQfzFAAsBPABBiMYACy0CAAAAJgAAAH4AbABpAGIALwBhAHIAcgBhAHkAYgB1AGYAZgBlAHIALgB0AHMAQbzGAAsBHABByMYACwkVAAAACAAAAA4AQdzGAAsBHABB6MYACwkVAAAACAAAAA8AQfzGAAsBHABBiMcACwkVAAAACAAAABAAQZzHAAsBHABBqMcACwkVAAAACAAAABEAQbzHAAsBHABByMcACwkVAAAACAAAABIAQdzHAAsBHABB6McACwkVAAAACAAAABMAQfzHAAsBHABBiMgACwkVAAAACAAAABQAQZzIAAsBHABBqMgACwkVAAAACAAAABUAQbzIAAsBHABByMgACwkVAAAACAAAABYAQdzIAAsBHABB6MgACwkVAAAACAAAABcAQfzIAAsBHABBiMkACwkVAAAACAAAABgAQZzJAAsBHABBqMkACwkVAAAACAAAABkAQbzJAAsBHABByMkACwkVAAAACAAAABoAQdzJAAsBHABB6MkACwkVAAAACAAAABsAQfzJAAsBHABBiMoACwkVAAAACAAAABwAQZzKAAsBHABBqMoACwkVAAAACAAAAB0AQbzKAAsBHABByMoACwkVAAAACAAAAB4AQdzKAAsBHABB6MoACwkVAAAACAAAAB8AQfzKAAsBHABBiMsACwkVAAAACAAAACAAQZzLAAsBHABBqMsACwkVAAAACAAAACEAQbzLAAsBHABByMsACwkVAAAACAAAACIAQdzLAAsBHABB6MsACwkVAAAACAAAACMAQfzLAAsBHABBiMwACwkVAAAACAAAACQAQZzMAAsBHABBqMwACwkVAAAACAAAACUAQbzMAAsBHABByMwACwkVAAAACAAAACYAQdzMAAsBHABB6MwACwkVAAAACAAAACcAQfzMAAsBHABBiM0ACwkVAAAACAAAACgAQZzNAAsBHABBqM0ACwkVAAAACAAAACkAQbzNAAsBHABByM0ACwkVAAAACAAAACoAQdzNAAsBHABB6M0ACwkVAAAACAAAACsAQfzNAAsBHABBiM4ACwkVAAAACAAAACwAQZzOAAsBHABBqM4ACwkVAAAACAAAAC0AQbzOAAsBPABByM4ACysCAAAAJAAAAEsAZQB5ACAAZABvAGUAcwAgAG4AbwB0ACAAZQB4AGkAcwB0AEH8zgALASwAQYjPAAsdAgAAABYAAAB+AGwAaQBiAC8AbQBhAHAALgB0AHMAQazPAAsBHABBuM8ACwkVAAAACAAAAC4AQczPAAsBHABB2M8ACwkVAAAACAAAAC8AQezPAAsBHABB+M8ACwkVAAAACAAAADAAQYzQAAsBHABBmNAACwkVAAAACAAAADEAQazQAAsBHABBuNAACwkVAAAACAAAADIAQczQAAsBHABB2NAACwkVAAAACAAAADMAQezQAAsBHABB+NAACwkVAAAACAAAADQAQYzRAAsBHABBmNEACwkVAAAACAAAADUAQazRAAsBHABBuNEACwkVAAAACAAAADYAQczRAAsBHABB2NEACwkVAAAACAAAADcAQezRAAsBHABB+NEACwkVAAAACAAAADgAQYzSAAsBHABBmNIACwkVAAAACAAAADkAQazSAAsBHABBuNIACwkVAAAACAAAADoAQczSAAsBHABB2NIACwkVAAAACAAAADsAQezSAAsBHABB+NIACwkVAAAACAAAADwAQYzTAAsBHABBmNMACwkVAAAACAAAAD0AQazTAAsBHABBuNMACwkVAAAACAAAAD4AQczTAAsBHABB2NMACwkVAAAACAAAAD8AQezTAAsBHABB+NMACwkVAAAACAAAAEAAQYzUAAsBHABBmNQACwkVAAAACAAAAEEAQazUAAsBHABBuNQACwkVAAAACAAAAEIAQczUAAsBHABB2NQACwkVAAAACAAAAEMAQezUAAsBHABB+NQACwkVAAAACAAAAEQAQYzVAAsBHABBmNUACwkVAAAACAAAAEUAQazVAAsBHABBuNUACwkVAAAACAAAAEYAQczVAAsBHABB2NUACwkVAAAACAAAAEcAQezVAAsBHABB+NUACwkVAAAACAAAAEgAQYzWAAsBHABBmNYACwkVAAAACAAAAEkAQazWAAsBHABBuNYACwkVAAAACAAAAEoAQczWAAsBHABB2NYACwkVAAAACAAAAEsAQezWAAsBHABB+NYACwkVAAAACAAAAEwAQYzXAAsBHABBmNcACwkVAAAACAAAAE0AQazXAAsBHABBuNcACwkVAAAACAAAAE4AQczXAAsBHABB2NcACwkVAAAACAAAAE8AQezXAAsBHABB+NcACwkVAAAACAAAAFAAQYzYAAsBHABBmNgACwkVAAAACAAAAFEAQazYAAsBHABBuNgACwkVAAAACAAAAFIAQczYAAsBHABB2NgACwkVAAAACAAAAFMAQezYAAsBHABB+NgACwkVAAAACAAAAFQAQYzZAAsBHABBmNkACwkVAAAACAAAAFUAQazZAAsBHABBuNkACwkVAAAACAAAAFYAQczZAAsBHABB2NkACwkVAAAACAAAAFcAQezZAAsBHABB+NkACwkVAAAACAAAAFgAQYzaAAsBHABBmNoACwkVAAAACAAAAFkAQazaAAsBHABBuNoACwkVAAAACAAAAFoAQczaAAsBHABB2NoACwkVAAAACAAAAFsAQezaAAsBHABB+NoACwkVAAAACAAAAFwAQYzbAAsBHABBmNsACwkVAAAACAAAAF0AQazbAAsBHABBuNsACwkVAAAACAAAAF4AQczbAAsBHABB2NsACwkVAAAACAAAAF8AQezbAAsBHABB+NsACwkVAAAACAAAAGAAQYzcAAsBHABBmNwACwkVAAAACAAAAGEAQazcAAsBHABBuNwACwkVAAAACAAAAGIAQczcAAsBHABB2NwACwkVAAAACAAAAGMAQezcAAsBLABB+NwACyMCAAAAHAAAAEEAcgByAGEAeQAgAGkAcwAgAGUAbQBwAHQAeQBBnN0ACwFcAEGo3QALUwIAAABMAAAAVwBhAHIAbgBpAG4AZwA6ACAAUgB1AG4AIABvAHUAdAAgAG8AZgAgAHAAYQBnAGUAcwAhACAAQQBsAGwAbwBjAGEAdABpAG4AZwAuAEH83QALARwAQYjeAAsJFQAAAAgAAABkAEGc3gALARwAQajeAAsJFQAAAAgAAABlAEG83gALARwAQcjeAAsJFQAAAAgAAABmAEHc3gALARwAQejeAAsJFQAAAAgAAABnAEH83gALARwAQYjfAAsJFQAAAAgAAABoAEGc3wALARwAQajfAAsJFQAAAAgAAABpAEG83wALARwAQcjfAAsJFQAAAAgAAABqAEHc3wALARwAQejfAAsJFQAAAAgAAABrAEH83wALARwAQYjgAAsJFQAAAAgAAABsAEGc4AALARwAQajgAAsJFQAAAAgAAABtAEG84AALARwAQcjgAAsJFQAAAAgAAABuAEHc4AALARwAQejgAAsJFQAAAAgAAABvAEH84AALARwAQYjhAAsJFQAAAAgAAABwAEGc4QALARwAQajhAAsJFQAAAAgAAABxAEG84QALARwAQcjhAAsJFQAAAAgAAAByAEHc4QALARwAQejhAAsJFQAAAAgAAABzAEH84QALARwAQYjiAAsJFQAAAAgAAAB0AEGc4gALARwAQajiAAsJFQAAAAgAAAB1AEG84gALARwAQcjiAAsJFQAAAAgAAAB2AEHc4gALARwAQejiAAsJFQAAAAgAAAB3AEH84gALARwAQYjjAAsJFQAAAAgAAAB4AEGc4wALARwAQajjAAsJFQAAAAgAAAB5AEG84wALARwAQcjjAAsJFQAAAAgAAAB6AEHc4wALARwAQejjAAsJFQAAAAgAAAB7AEH84wALARwAQYjkAAsJFQAAAAgAAAB8AEGc5AALARwAQajkAAsJFQAAAAgAAAB9AEG85AALARwAQcjkAAsJFQAAAAgAAAB+AEHc5AALARwAQejkAAsJFQAAAAgAAAB/AEH85AALARwAQYjlAAsJFQAAAAgAAACAAEGc5QALARwAQajlAAsJFQAAAAgAAACBAEG85QALARwAQcjlAAsJFQAAAAgAAACCAEHc5QALARwAQejlAAsJFQAAAAgAAACDAEH85QALARwAQYjmAAsJFQAAAAgAAACEAEGc5gALARwAQajmAAsJFQAAAAgAAACFAEG85gALARwAQcjmAAsJFQAAAAgAAACGAEHc5gALARwAQejmAAsJFQAAAAgAAACHAEH85gALARwAQYjnAAsJFQAAAAgAAACIAEGc5wALARwAQajnAAsJFQAAAAgAAACJAEG85wALARwAQcjnAAsJFQAAAAgAAACKAEHc5wALARwAQejnAAsJFQAAAAgAAACLAEH85wALARwAQYjoAAsJFQAAAAgAAACMAEGc6AALARwAQajoAAsJFQAAAAgAAACNAEG86AALARwAQcjoAAsJFQAAAAgAAACOAEHc6AALARwAQejoAAsJFQAAAAgAAACPAEH86AALARwAQYjpAAsJFQAAAAgAAACQAEGc6QALARwAQajpAAsJFQAAAAgAAACRAEG86QALARwAQcjpAAsJFQAAAAgAAACSAEHc6QALARwAQejpAAsJFQAAAAgAAACTAEH86QALARwAQYjqAAsJFQAAAAgAAACUAEGc6gALARwAQajqAAsJFQAAAAgAAACVAEG86gALARwAQcjqAAsJFQAAAAgAAACWAEHc6gALARwAQejqAAsJFQAAAAgAAACXAEH86gALARwAQYjrAAsJFQAAAAgAAACYAEGc6wALARwAQajrAAsJFQAAAAgAAACZAEG86wALAqwDAEHI6wALogcBAAAAnAMAACAuAABALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAABgLgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAECcAAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AANAzAADwMwAAEDQAADA0AAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAACQJgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAsCYAADAnAADAJwAA4CcAAAAoAAAgKAAAQCgAAGAoAACAKAAAUDQAAHA0AACQNAAAsDQAAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAADQNAAA8DQAABA1AAAwNQAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAA0CYAAJAkAACwJAAA0CQAAPAkAAAQJQAAMCUAAFAlAABwJQAAkCUAALAlAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAwLwAAEC8AAFAjAABwIwAAkCMAALAjAADQIwAA8CMAABAkAAAwJAAAUCQAAHAkAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAFA1AABwNQAAkDUAALA1AACgKAAAwCgAAOAoAAAAKQAAICkAAEApAABgKQAAoCoAAIApAACgKQAAwCkAAMAqAADQMAAA8DAAAJAxAACwMQAA0DEAAOAqAAAQMQAAMDEAAPAxAAAQMgAAMDIAAFAvAABwLwAAACsAACArAABQMgAAcDIAAJAyAABAKwAAsDIAANAyAADwMgAA0C8AAPAvAAAQMAAAMDAAAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAA0CUAAPAlAAAQJgAAMCYAAFAmAABwJgAAAC4AAAAuAAAALgAAAC4AAPAmAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAAAALgAAAC4AAAAuAABgKwAAgCsAAKArAADAKwAA4CsAAAAsAAAgLAAAEDMAADAzAABQMwAAQCwAAGAsAACALAAAoCwAAMAsAADgLAAAAC0AAHAzAACQMwAAsDMAAOApAAAAKgAAICoAACAtAABALQAAYC0AAFAxAABwMQAAkC8AALAvAABQMAAAcDAAAJAwAACwMAAAQCoAAGAqAACAKgAAgC0AAKAtAADALQAA4C0AQezyAAsBLABB+PIACxUXAAAAEAAAANA1AADQNQAAnAMAAOcAQZzzAAsBHABBqPMACxABAAAACAAAAP/+/Pjw4MCAAEG88wALASwAQcjzAAsVBgAAABAAAACwOQAAsDkAAAgAAAAIAEHs8wALARwAQfjzAAsJGAAAAAgAAACaAEGM9AALAUwAQZj0AAtBAgAAADoAAAA8AHMAZQBlAG0AcwAgAHQAaABhAHQAIAB0AGgAZQByAGUAIABpAHMAIABuAG8AIABjAG8AZABlAD4AQdz0AAsBHABB6PQACwECAEH89AALAWwAQYj1AAtZAgAAAFIAAABXAGUAIABzAGgAbwB1AGwAZAAgAGkAdABlAHIAYQB0AGUAIABvAG4AbAB5ACAAbwB2AGUAcgAgAGkAbgBzAHQAcgB1AGMAdABpAG8AbgBzACEAQez1AAsBTABB+PUACzcCAAAAMAAAAGEAcwBzAGUAbQBiAGwAeQAvAGEAcABpAC0AaQBuAHQAZQByAG4AYQBsAC4AdABzAEG89gALARwAQcj2AAsJAgAAAAIAAAAKAEHc9gALAXwAQej2AAtrAgAAAGQAAAB0AG8AUwB0AHIAaQBuAGcAKAApACAAcgBhAGQAaQB4ACAAYQByAGcAdQBtAGUAbgB0ACAAbQB1AHMAdAAgAGIAZQAgAGIAZQB0AHcAZQBlAG4AIAAyACAAYQBuAGQAIAAzADYAQdz3AAsBPABB6PcACy0CAAAAJgAAAH4AbABpAGIALwB1AHQAaQBsAC8AbgB1AG0AYgBlAHIALgB0AHMAQZz4AAsBHABBqPgACwkCAAAAAgAAADAAQbz4AAuPAzAAMAAwADEAMAAyADAAMwAwADQAMAA1ADAANgAwADcAMAA4ADAAOQAxADAAMQAxADEAMgAxADMAMQA0ADEANQAxADYAMQA3ADEAOAAxADkAMgAwADIAMQAyADIAMgAzADIANAAyADUAMgA2ADIANwAyADgAMgA5ADMAMAAzADEAMwAyADMAMwAzADQAMwA1ADMANgAzADcAMwA4ADMAOQA0ADAANAAxADQAMgA0ADMANAA0ADQANQA0ADYANAA3ADQAOAA0ADkANQAwADUAMQA1ADIANQAzADUANAA1ADUANQA2ADUANwA1ADgANQA5ADYAMAA2ADEANgAyADYAMwA2ADQANgA1ADYANgA2ADcANgA4ADYAOQA3ADAANwAxADcAMgA3ADMANwA0ADcANQA3ADYANwA3ADcAOAA3ADkAOAAwADgAMQA4ADIAOAAzADgANAA4ADUAOAA2ADgANwA4ADgAOAA5ADkAMAA5ADEAOQAyADkAMwA5ADQAOQA1ADkANgA5ADcAOQA4ADkAOQBBzPsACwIcBABB2PsAC4cIAgAAAAAEAAAwADAAMAAxADAAMgAwADMAMAA0ADAANQAwADYAMAA3ADAAOAAwADkAMABhADAAYgAwAGMAMABkADAAZQAwAGYAMQAwADEAMQAxADIAMQAzADEANAAxADUAMQA2ADEANwAxADgAMQA5ADEAYQAxAGIAMQBjADEAZAAxAGUAMQBmADIAMAAyADEAMgAyADIAMwAyADQAMgA1ADIANgAyADcAMgA4ADIAOQAyAGEAMgBiADIAYwAyAGQAMgBlADIAZgAzADAAMwAxADMAMgAzADMAMwA0ADMANQAzADYAMwA3ADMAOAAzADkAMwBhADMAYgAzAGMAMwBkADMAZQAzAGYANAAwADQAMQA0ADIANAAzADQANAA0ADUANAA2ADQANwA0ADgANAA5ADQAYQA0AGIANABjADQAZAA0AGUANABmADUAMAA1ADEANQAyADUAMwA1ADQANQA1ADUANgA1ADcANQA4ADUAOQA1AGEANQBiADUAYwA1AGQANQBlADUAZgA2ADAANgAxADYAMgA2ADMANgA0ADYANQA2ADYANgA3ADYAOAA2ADkANgBhADYAYgA2AGMANgBkADYAZQA2AGYANwAwADcAMQA3ADIANwAzADcANAA3ADUANwA2ADcANwA3ADgANwA5ADcAYQA3AGIANwBjADcAZAA3AGUANwBmADgAMAA4ADEAOAAyADgAMwA4ADQAOAA1ADgANgA4ADcAOAA4ADgAOQA4AGEAOABiADgAYwA4AGQAOABlADgAZgA5ADAAOQAxADkAMgA5ADMAOQA0ADkANQA5ADYAOQA3ADkAOAA5ADkAOQBhADkAYgA5AGMAOQBkADkAZQA5AGYAYQAwAGEAMQBhADIAYQAzAGEANABhADUAYQA2AGEANwBhADgAYQA5AGEAYQBhAGIAYQBjAGEAZABhAGUAYQBmAGIAMABiADEAYgAyAGIAMwBiADQAYgA1AGIANgBiADcAYgA4AGIAOQBiAGEAYgBiAGIAYwBiAGQAYgBlAGIAZgBjADAAYwAxAGMAMgBjADMAYwA0AGMANQBjADYAYwA3AGMAOABjADkAYwBhAGMAYgBjAGMAYwBkAGMAZQBjAGYAZAAwAGQA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";
|
|
17184
|
+
let compiledModulePromise = null;
|
|
17185
|
+
|
|
17186
|
+
// Helper function to decode and instantiate the module
|
|
17187
|
+
async function instantiate(imports) {
|
|
17188
|
+
if (compiledModulePromise === null) {
|
|
17189
|
+
compiledModulePromise = WebAssembly.compile(getWasmBytes());
|
|
17190
|
+
}
|
|
17191
|
+
const module = await compiledModulePromise;
|
|
17192
|
+
return instantiate$1(module, imports);
|
|
17193
|
+
}
|
|
17194
|
+
|
|
17195
|
+
// Helper function to just get the bytes
|
|
17196
|
+
function getWasmBytes() {
|
|
17197
|
+
return Uint8Array.from(atob(wasmBase64), c => c.charCodeAt(0));
|
|
17198
|
+
}
|
|
17199
|
+
|
|
17387
17200
|
// Max u32 value
|
|
17388
17201
|
const INF_STEPS = 2 ** 32 - 1;
|
|
17389
17202
|
class AnanasRegisters {
|
|
@@ -17469,8 +17282,7 @@ class AnanasInterpreter {
|
|
|
17469
17282
|
this.gas = new AnanasGasCounter(instance);
|
|
17470
17283
|
}
|
|
17471
17284
|
static async new() {
|
|
17472
|
-
const
|
|
17473
|
-
const instance = await instantiate(wasmModule, {
|
|
17285
|
+
const instance = await instantiate({
|
|
17474
17286
|
env: {
|
|
17475
17287
|
abort: () => {
|
|
17476
17288
|
throw new Error("Abort called from WASM");
|
|
@@ -17566,7 +17378,7 @@ class InterpreterInstanceManager {
|
|
|
17566
17378
|
}
|
|
17567
17379
|
}
|
|
17568
17380
|
|
|
17569
|
-
var index$
|
|
17381
|
+
var index$7 = /*#__PURE__*/Object.freeze({
|
|
17570
17382
|
__proto__: null,
|
|
17571
17383
|
HostCallMemory: HostCallMemory,
|
|
17572
17384
|
HostCallRegisters: HostCallRegisters,
|
|
@@ -17578,15 +17390,252 @@ var index$4 = /*#__PURE__*/Object.freeze({
|
|
|
17578
17390
|
tryAsHostCallIndex: tryAsHostCallIndex
|
|
17579
17391
|
});
|
|
17580
17392
|
|
|
17393
|
+
/**
|
|
17394
|
+
* Host call result constants.
|
|
17395
|
+
*
|
|
17396
|
+
* https://graypaper.fluffylabs.dev/#/85129da/2c7c022c7c02?v=0.6.3
|
|
17397
|
+
*/
|
|
17398
|
+
const HostCallResult = {
|
|
17399
|
+
/** The return value indicating an item does not exist. */
|
|
17400
|
+
NONE: tryAsU64(0xffffffffffffffffn), // 2**64 - 1
|
|
17401
|
+
/** Name unknown. */
|
|
17402
|
+
WHAT: tryAsU64(0xfffffffffffffffen), // 2**64 - 2
|
|
17403
|
+
/** The inner PVM memory index provided for reading/writing is not accessible. */
|
|
17404
|
+
OOB: tryAsU64(0xfffffffffffffffdn), // 2**64 - 3
|
|
17405
|
+
/** Index unknown. */
|
|
17406
|
+
WHO: tryAsU64(0xfffffffffffffffcn), // 2**64 - 4
|
|
17407
|
+
/** Storage full or resource already allocated. */
|
|
17408
|
+
FULL: tryAsU64(0xfffffffffffffffbn), // 2**64 - 5
|
|
17409
|
+
/** Core index unknown. */
|
|
17410
|
+
CORE: tryAsU64(0xfffffffffffffffan), // 2**64 - 6
|
|
17411
|
+
/** Insufficient funds. */
|
|
17412
|
+
CASH: tryAsU64(0xfffffffffffffff9n), // 2**64 - 7
|
|
17413
|
+
/** Gas limit too low. */
|
|
17414
|
+
LOW: tryAsU64(0xfffffffffffffff8n), // 2**64 - 8
|
|
17415
|
+
/** The item is already solicited, cannot be forgotten or the operation is invalid due to privilege level. */
|
|
17416
|
+
HUH: tryAsU64(0xfffffffffffffff7n), // 2**64 - 9
|
|
17417
|
+
/** The return value indicating general success. */
|
|
17418
|
+
OK: tryAsU64(0n),
|
|
17419
|
+
};
|
|
17420
|
+
|
|
17421
|
+
const MAX_U32 = tryAsU32(2 ** 32 - 1);
|
|
17422
|
+
const MAX_U32_BIG_INT = tryAsU64(MAX_U32);
|
|
17423
|
+
const SERVICE_ID_BYTES = 4;
|
|
17424
|
+
const CURRENT_SERVICE_ID = tryAsServiceId(2 ** 32 - 1);
|
|
17425
|
+
function getServiceIdOrCurrent(regNumber, regs, currentServiceId) {
|
|
17426
|
+
const regValue = regs.get(regNumber);
|
|
17427
|
+
if (regValue === 2n ** 64n - 1n) {
|
|
17428
|
+
return currentServiceId;
|
|
17429
|
+
}
|
|
17430
|
+
return getServiceId(regValue);
|
|
17431
|
+
}
|
|
17432
|
+
function getServiceId(serviceId) {
|
|
17433
|
+
const { lower, upper } = u64IntoParts(serviceId);
|
|
17434
|
+
if (upper === 0) {
|
|
17435
|
+
return tryAsServiceId(lower);
|
|
17436
|
+
}
|
|
17437
|
+
return null;
|
|
17438
|
+
}
|
|
17439
|
+
function writeServiceIdAsLeBytes(serviceId, destination) {
|
|
17440
|
+
check `${destination.length >= SERVICE_ID_BYTES} Not enough space in the destination.`;
|
|
17441
|
+
destination.set(u32AsLeBytes(serviceId));
|
|
17442
|
+
}
|
|
17443
|
+
/** Clamp a U64 to the maximum value of a 32-bit unsigned integer. */
|
|
17444
|
+
function clampU64ToU32(value) {
|
|
17445
|
+
return value > MAX_U32_BIG_INT ? MAX_U32 : tryAsU32(Number(value));
|
|
17446
|
+
}
|
|
17447
|
+
function emptyRegistersBuffer() {
|
|
17448
|
+
return safeAllocUint8Array(NO_OF_REGISTERS$1 * REGISTER_BYTE_SIZE);
|
|
17449
|
+
}
|
|
17450
|
+
|
|
17451
|
+
Compatibility.isSuite(TestSuite.W3F_DAVXY) || Compatibility.isGreaterOrEqual(GpVersion.V0_7_2) ? 9 : 11;
|
|
17452
|
+
Compatibility.isSuite(TestSuite.W3F_DAVXY) || Compatibility.isGreaterOrEqual(GpVersion.V0_7_2) ? 10 : 12;
|
|
17453
|
+
/**
|
|
17454
|
+
* Service account details with threshold balance.
|
|
17455
|
+
*
|
|
17456
|
+
* Used exclusively by `info` host call.
|
|
17457
|
+
*
|
|
17458
|
+
* https://graypaper.fluffylabs.dev/#/ab2cdbd/33920033b500?v=0.7.2
|
|
17459
|
+
*/
|
|
17460
|
+
const codecServiceAccountInfoWithThresholdBalance = codec$1.object({
|
|
17461
|
+
codeHash: codec$1.bytes(HASH_SIZE),
|
|
17462
|
+
balance: codec$1.u64,
|
|
17463
|
+
thresholdBalance: codec$1.u64,
|
|
17464
|
+
accumulateMinGas: codec$1.u64.convert((i) => i, tryAsServiceGas),
|
|
17465
|
+
onTransferMinGas: codec$1.u64.convert((i) => i, tryAsServiceGas),
|
|
17466
|
+
storageUtilisationBytes: codec$1.u64,
|
|
17467
|
+
storageUtilisationCount: codec$1.u32,
|
|
17468
|
+
gratisStorage: codec$1.u64,
|
|
17469
|
+
created: codec$1.u32.convert((x) => x, tryAsTimeSlot),
|
|
17470
|
+
lastAccumulation: codec$1.u32.convert((x) => x, tryAsTimeSlot),
|
|
17471
|
+
parentService: codec$1.u32.convert((x) => x, tryAsServiceId),
|
|
17472
|
+
}, "ServiceAccountInfoWithThresholdBalance");
|
|
17473
|
+
|
|
17474
|
+
var index$6 = /*#__PURE__*/Object.freeze({
|
|
17475
|
+
__proto__: null,
|
|
17476
|
+
AccumulationStateUpdate: AccumulationStateUpdate,
|
|
17477
|
+
CURRENT_SERVICE_ID: CURRENT_SERVICE_ID,
|
|
17478
|
+
get EjectError () { return EjectError; },
|
|
17479
|
+
get ForgetPreimageError () { return ForgetPreimageError; },
|
|
17480
|
+
HostCallResult: HostCallResult,
|
|
17481
|
+
InsufficientFundsError: InsufficientFundsError,
|
|
17482
|
+
MachineInstance: MachineInstance,
|
|
17483
|
+
get MemoryOperation () { return MemoryOperation; },
|
|
17484
|
+
get NewServiceError () { return NewServiceError; },
|
|
17485
|
+
NoMachineError: NoMachineError,
|
|
17486
|
+
get PagesError () { return PagesError; },
|
|
17487
|
+
PartiallyUpdatedState: PartiallyUpdatedState,
|
|
17488
|
+
get PeekPokeError () { return PeekPokeError; },
|
|
17489
|
+
PendingTransfer: PendingTransfer,
|
|
17490
|
+
get PreimageStatusKind () { return PreimageStatusKind; },
|
|
17491
|
+
get ProvidePreimageError () { return ProvidePreimageError; },
|
|
17492
|
+
get RequestPreimageError () { return RequestPreimageError; },
|
|
17493
|
+
SERVICE_ID_BYTES: SERVICE_ID_BYTES,
|
|
17494
|
+
SegmentExportError: SegmentExportError,
|
|
17495
|
+
TRANSFER_MEMO_BYTES: TRANSFER_MEMO_BYTES,
|
|
17496
|
+
get TransferError () { return TransferError; },
|
|
17497
|
+
UnprivilegedError: UnprivilegedError,
|
|
17498
|
+
get UpdatePrivilegesError () { return UpdatePrivilegesError; },
|
|
17499
|
+
get ZeroVoidError () { return ZeroVoidError; },
|
|
17500
|
+
clampU64ToU32: clampU64ToU32,
|
|
17501
|
+
emptyRegistersBuffer: emptyRegistersBuffer,
|
|
17502
|
+
getServiceId: getServiceId,
|
|
17503
|
+
getServiceIdOrCurrent: getServiceIdOrCurrent,
|
|
17504
|
+
hostCallInfoAccount: codecServiceAccountInfoWithThresholdBalance,
|
|
17505
|
+
slotsToPreimageStatus: slotsToPreimageStatus,
|
|
17506
|
+
toMemoryOperation: toMemoryOperation,
|
|
17507
|
+
tryAsMachineId: tryAsMachineId,
|
|
17508
|
+
tryAsProgramCounter: tryAsProgramCounter,
|
|
17509
|
+
writeServiceIdAsLeBytes: writeServiceIdAsLeBytes
|
|
17510
|
+
});
|
|
17511
|
+
|
|
17512
|
+
const SUPER_PEAK_STRING = BytesBlob.blobFromString("peak");
|
|
17513
|
+
/**
|
|
17514
|
+
* Merkle Mountain Range.
|
|
17515
|
+
*
|
|
17516
|
+
* https://graypaper.fluffylabs.dev/#/5f542d7/3aa0023aa002?v=0.6.2
|
|
17517
|
+
*/
|
|
17518
|
+
class MerkleMountainRange {
|
|
17519
|
+
hasher;
|
|
17520
|
+
mountains;
|
|
17521
|
+
/** Construct an empty MMR. */
|
|
17522
|
+
static empty(hasher) {
|
|
17523
|
+
return new MerkleMountainRange(hasher);
|
|
17524
|
+
}
|
|
17525
|
+
/** Construct a new MMR from existing peaks. */
|
|
17526
|
+
static fromPeaks(hasher, mmr) {
|
|
17527
|
+
return new MerkleMountainRange(hasher, mmr.peaks
|
|
17528
|
+
.reduce((acc, peak, index) => {
|
|
17529
|
+
if (peak !== null) {
|
|
17530
|
+
acc.push(Mountain.fromPeak(peak, 2 ** index));
|
|
17531
|
+
}
|
|
17532
|
+
return acc;
|
|
17533
|
+
}, [])
|
|
17534
|
+
.reverse());
|
|
17535
|
+
}
|
|
17536
|
+
constructor(hasher,
|
|
17537
|
+
/** Store non-empty merkle tries (mountains) ordered by descending size. */
|
|
17538
|
+
mountains = []) {
|
|
17539
|
+
this.hasher = hasher;
|
|
17540
|
+
this.mountains = mountains;
|
|
17541
|
+
}
|
|
17542
|
+
/**
|
|
17543
|
+
* Append a new hash to the MMR structure.
|
|
17544
|
+
*
|
|
17545
|
+
* https://graypaper.fluffylabs.dev/#/5f542d7/3b11003b1100?v=0.6.2
|
|
17546
|
+
*/
|
|
17547
|
+
append(hash) {
|
|
17548
|
+
let newMountain = Mountain.fromPeak(hash, 1);
|
|
17549
|
+
for (;;) {
|
|
17550
|
+
const last = this.mountains.pop();
|
|
17551
|
+
if (last === undefined) {
|
|
17552
|
+
this.mountains.push(newMountain);
|
|
17553
|
+
return;
|
|
17554
|
+
}
|
|
17555
|
+
if (last.size !== newMountain.size) {
|
|
17556
|
+
this.mountains.push(last);
|
|
17557
|
+
this.mountains.push(newMountain);
|
|
17558
|
+
return;
|
|
17559
|
+
}
|
|
17560
|
+
newMountain = last.mergeWith(this.hasher, newMountain);
|
|
17561
|
+
}
|
|
17562
|
+
}
|
|
17563
|
+
/**
|
|
17564
|
+
* Root of the entire structure.
|
|
17565
|
+
*
|
|
17566
|
+
* https://graypaper.fluffylabs.dev/#/5f542d7/3b20013b2001?v=0.6.2
|
|
17567
|
+
*/
|
|
17568
|
+
getSuperPeakHash() {
|
|
17569
|
+
if (this.mountains.length === 0) {
|
|
17570
|
+
return Bytes.zero(HASH_SIZE).asOpaque();
|
|
17571
|
+
}
|
|
17572
|
+
const revMountains = this.mountains.slice().reverse();
|
|
17573
|
+
const length = revMountains.length;
|
|
17574
|
+
let lastHash = revMountains[0].peak;
|
|
17575
|
+
for (let i = 1; i < length; i++) {
|
|
17576
|
+
const mountain = revMountains[i];
|
|
17577
|
+
lastHash = this.hasher.hashConcatPrepend(SUPER_PEAK_STRING, lastHash, mountain.peak);
|
|
17578
|
+
}
|
|
17579
|
+
return lastHash;
|
|
17580
|
+
}
|
|
17581
|
+
/** Get current peaks. */
|
|
17582
|
+
getPeaks() {
|
|
17583
|
+
const peaks = [];
|
|
17584
|
+
const mountains = this.mountains;
|
|
17585
|
+
// always 2**index
|
|
17586
|
+
let currentSize = 1;
|
|
17587
|
+
let currentIdx = mountains.length - 1;
|
|
17588
|
+
while (currentIdx >= 0) {
|
|
17589
|
+
const currentItem = mountains[currentIdx];
|
|
17590
|
+
if (currentItem.size >= currentSize && currentItem.size < 2 * currentSize) {
|
|
17591
|
+
peaks.push(currentItem.peak);
|
|
17592
|
+
currentIdx -= 1;
|
|
17593
|
+
}
|
|
17594
|
+
else {
|
|
17595
|
+
peaks.push(null);
|
|
17596
|
+
}
|
|
17597
|
+
// move to the next index.
|
|
17598
|
+
currentSize = currentSize << 1;
|
|
17599
|
+
}
|
|
17600
|
+
return { peaks };
|
|
17601
|
+
}
|
|
17602
|
+
}
|
|
17603
|
+
/** An internal helper structure to represent a merkle trie for MMR. */
|
|
17604
|
+
class Mountain {
|
|
17605
|
+
peak;
|
|
17606
|
+
size;
|
|
17607
|
+
constructor(peak, size) {
|
|
17608
|
+
this.peak = peak;
|
|
17609
|
+
this.size = size;
|
|
17610
|
+
}
|
|
17611
|
+
static fromPeak(peak, size) {
|
|
17612
|
+
return new Mountain(peak, size);
|
|
17613
|
+
}
|
|
17614
|
+
static fromChildren(hasher, children) {
|
|
17615
|
+
const [left, right] = children;
|
|
17616
|
+
const peak = hasher.hashConcat(left.peak, right.peak);
|
|
17617
|
+
const size = left.size + right.size;
|
|
17618
|
+
return new Mountain(peak, size);
|
|
17619
|
+
}
|
|
17620
|
+
/** Merge with another montain of the same size. */
|
|
17621
|
+
mergeWith(hasher, other) {
|
|
17622
|
+
return Mountain.fromChildren(hasher, [this, other]);
|
|
17623
|
+
}
|
|
17624
|
+
toString() {
|
|
17625
|
+
return `${this.size} @ ${this.peak}`;
|
|
17626
|
+
}
|
|
17627
|
+
}
|
|
17628
|
+
|
|
17629
|
+
var index$5 = /*#__PURE__*/Object.freeze({
|
|
17630
|
+
__proto__: null,
|
|
17631
|
+
MerkleMountainRange: MerkleMountainRange
|
|
17632
|
+
});
|
|
17633
|
+
|
|
17581
17634
|
class DebuggerAdapter {
|
|
17582
17635
|
pvm;
|
|
17583
17636
|
constructor(useSbrkGas = false) {
|
|
17584
17637
|
this.pvm = new Interpreter({ useSbrkGas });
|
|
17585
17638
|
}
|
|
17586
|
-
// TODO [MaSi]: a temporary solution that is needed to implement host calls in PVM debugger
|
|
17587
|
-
getInterpreter() {
|
|
17588
|
-
return this.pvm;
|
|
17589
|
-
}
|
|
17590
17639
|
resetGeneric(rawProgram, flatRegisters, initialGas) {
|
|
17591
17640
|
this.pvm.resetGeneric(rawProgram, 0, tryAsGas(initialGas), new Registers(flatRegisters));
|
|
17592
17641
|
}
|
|
@@ -17650,7 +17699,7 @@ class DebuggerAdapter {
|
|
|
17650
17699
|
}
|
|
17651
17700
|
}
|
|
17652
17701
|
|
|
17653
|
-
var index$
|
|
17702
|
+
var index$4 = /*#__PURE__*/Object.freeze({
|
|
17654
17703
|
__proto__: null,
|
|
17655
17704
|
AccumulationStateUpdate: AccumulationStateUpdate,
|
|
17656
17705
|
ArgsDecoder: ArgsDecoder,
|
|
@@ -17699,8 +17748,8 @@ var index$3 = /*#__PURE__*/Object.freeze({
|
|
|
17699
17748
|
asOpaqueType: asOpaqueType,
|
|
17700
17749
|
assertEmpty: assertEmpty,
|
|
17701
17750
|
assertNever: assertNever,
|
|
17702
|
-
block: index$
|
|
17703
|
-
bytes: index$
|
|
17751
|
+
block: index$m,
|
|
17752
|
+
bytes: index$t,
|
|
17704
17753
|
check: check,
|
|
17705
17754
|
clampU64ToU32: clampU64ToU32,
|
|
17706
17755
|
createResults: createResults,
|
|
@@ -17709,13 +17758,15 @@ var index$3 = /*#__PURE__*/Object.freeze({
|
|
|
17709
17758
|
extractCodeAndMetadata: extractCodeAndMetadata,
|
|
17710
17759
|
getServiceId: getServiceId,
|
|
17711
17760
|
getServiceIdOrCurrent: getServiceIdOrCurrent,
|
|
17712
|
-
hash: index$
|
|
17761
|
+
hash: index$p,
|
|
17762
|
+
hostCallInfoAccount: codecServiceAccountInfoWithThresholdBalance,
|
|
17713
17763
|
inspect: inspect,
|
|
17714
17764
|
instructionArgumentTypeMap: instructionArgumentTypeMap,
|
|
17715
|
-
interpreter: index$
|
|
17765
|
+
interpreter: index$8,
|
|
17716
17766
|
isBrowser: isBrowser,
|
|
17767
|
+
lazyInspect: lazyInspect,
|
|
17717
17768
|
measure: measure,
|
|
17718
|
-
numbers: index$
|
|
17769
|
+
numbers: index$s,
|
|
17719
17770
|
resultToString: resultToString,
|
|
17720
17771
|
seeThrough: seeThrough,
|
|
17721
17772
|
slotsToPreimageStatus: slotsToPreimageStatus,
|
|
@@ -17762,7 +17813,7 @@ function hashToNumberSequence(blake2b, entropy, length) {
|
|
|
17762
17813
|
return result;
|
|
17763
17814
|
}
|
|
17764
17815
|
|
|
17765
|
-
var index$
|
|
17816
|
+
var index$3 = /*#__PURE__*/Object.freeze({
|
|
17766
17817
|
__proto__: null,
|
|
17767
17818
|
fisherYatesShuffle: fisherYatesShuffle
|
|
17768
17819
|
});
|
|
@@ -18120,10 +18171,7 @@ const fullStateDumpFromJson = (spec) => json.object({
|
|
|
18120
18171
|
chi_a: json.array("number"),
|
|
18121
18172
|
chi_v: "number",
|
|
18122
18173
|
chi_r: json.optional("number"),
|
|
18123
|
-
chi_g: json.nullable(json.
|
|
18124
|
-
service: "number",
|
|
18125
|
-
gasLimit: json.fromNumber((v) => tryAsServiceGas(v)),
|
|
18126
|
-
})),
|
|
18174
|
+
chi_g: json.nullable(json.map("number", json.fromNumber((v) => tryAsServiceGas(v)))),
|
|
18127
18175
|
},
|
|
18128
18176
|
pi: JsonStatisticsData.fromJson,
|
|
18129
18177
|
omega: json.array(json.array(notYetAccumulatedFromJson)),
|
|
@@ -18164,7 +18212,7 @@ const fullStateDumpFromJson = (spec) => json.object({
|
|
|
18164
18212
|
assigners: chi.chi_a,
|
|
18165
18213
|
delegator: chi.chi_v,
|
|
18166
18214
|
registrar: chi.chi_r ?? tryAsServiceId(2 ** 32 - 1),
|
|
18167
|
-
autoAccumulateServices: chi.chi_g ??
|
|
18215
|
+
autoAccumulateServices: chi.chi_g ?? new Map(),
|
|
18168
18216
|
}),
|
|
18169
18217
|
statistics: JsonStatisticsData.toStatisticsData(spec, pi),
|
|
18170
18218
|
accumulationQueue: omega,
|
|
@@ -18174,7 +18222,7 @@ const fullStateDumpFromJson = (spec) => json.object({
|
|
|
18174
18222
|
});
|
|
18175
18223
|
});
|
|
18176
18224
|
|
|
18177
|
-
var index$
|
|
18225
|
+
var index$2 = /*#__PURE__*/Object.freeze({
|
|
18178
18226
|
__proto__: null,
|
|
18179
18227
|
JsonCoreStatistics: JsonCoreStatistics,
|
|
18180
18228
|
JsonService: JsonService,
|
|
@@ -18192,6 +18240,65 @@ var index$1 = /*#__PURE__*/Object.freeze({
|
|
|
18192
18240
|
validatorDataFromJson: validatorDataFromJson
|
|
18193
18241
|
});
|
|
18194
18242
|
|
|
18243
|
+
class StateKeyVal {
|
|
18244
|
+
static fromJson = {
|
|
18245
|
+
key: fromJson.bytesN(TRUNCATED_HASH_SIZE),
|
|
18246
|
+
value: fromJson.bytesBlob,
|
|
18247
|
+
};
|
|
18248
|
+
key;
|
|
18249
|
+
value;
|
|
18250
|
+
}
|
|
18251
|
+
class TestState {
|
|
18252
|
+
static fromJson = {
|
|
18253
|
+
state_root: fromJson.bytes32(),
|
|
18254
|
+
keyvals: json.array(StateKeyVal.fromJson),
|
|
18255
|
+
};
|
|
18256
|
+
static Codec = codec$1.object({
|
|
18257
|
+
state_root: codec$1.bytes(HASH_SIZE).asOpaque(),
|
|
18258
|
+
keyvals: codec$1.sequenceVarLen(codec$1.object({
|
|
18259
|
+
key: codec$1.bytes(TRUNCATED_HASH_SIZE),
|
|
18260
|
+
value: codec$1.blob,
|
|
18261
|
+
})),
|
|
18262
|
+
});
|
|
18263
|
+
state_root;
|
|
18264
|
+
keyvals;
|
|
18265
|
+
}
|
|
18266
|
+
class StateTransitionGenesis {
|
|
18267
|
+
static fromJson = {
|
|
18268
|
+
header: headerFromJson,
|
|
18269
|
+
state: TestState.fromJson,
|
|
18270
|
+
};
|
|
18271
|
+
static Codec = codec$1.object({
|
|
18272
|
+
header: Header.Codec,
|
|
18273
|
+
state: TestState.Codec,
|
|
18274
|
+
});
|
|
18275
|
+
header;
|
|
18276
|
+
state;
|
|
18277
|
+
}
|
|
18278
|
+
class StateTransition {
|
|
18279
|
+
static fromJson = {
|
|
18280
|
+
pre_state: TestState.fromJson,
|
|
18281
|
+
post_state: TestState.fromJson,
|
|
18282
|
+
block: blockFromJson(tinyChainSpec),
|
|
18283
|
+
};
|
|
18284
|
+
static Codec = codec$1.object({
|
|
18285
|
+
pre_state: TestState.Codec,
|
|
18286
|
+
block: Block.Codec,
|
|
18287
|
+
post_state: TestState.Codec,
|
|
18288
|
+
});
|
|
18289
|
+
pre_state;
|
|
18290
|
+
post_state;
|
|
18291
|
+
block;
|
|
18292
|
+
}
|
|
18293
|
+
|
|
18294
|
+
var index$1 = /*#__PURE__*/Object.freeze({
|
|
18295
|
+
__proto__: null,
|
|
18296
|
+
StateKeyVal: StateKeyVal,
|
|
18297
|
+
StateTransition: StateTransition,
|
|
18298
|
+
StateTransitionGenesis: StateTransitionGenesis,
|
|
18299
|
+
TestState: TestState
|
|
18300
|
+
});
|
|
18301
|
+
|
|
18195
18302
|
/** Helper function to create most used hashes in the block */
|
|
18196
18303
|
class TransitionHasher {
|
|
18197
18304
|
context;
|
|
@@ -18240,15 +18347,6 @@ class TransitionHasher {
|
|
|
18240
18347
|
const encoded = BytesBlob.blobFromParts([et.raw, ep.raw, eg.raw, ea.raw, ed.raw]);
|
|
18241
18348
|
return new WithHashAndBytes(this.blake2b.hashBytes(encoded).asOpaque(), extrinsicView, encoded);
|
|
18242
18349
|
}
|
|
18243
|
-
/** Creates hash for given WorkPackage */
|
|
18244
|
-
workPackage(workPackage) {
|
|
18245
|
-
return this.encode(WorkPackage.Codec, workPackage);
|
|
18246
|
-
}
|
|
18247
|
-
encode(codec, data) {
|
|
18248
|
-
// TODO [ToDr] Use already allocated encoding destination and hash bytes from some arena.
|
|
18249
|
-
const encoded = Encoder.encodeObject(codec, data, this.context);
|
|
18250
|
-
return new WithHashAndBytes(this.blake2b.hashBytes(encoded).asOpaque(), data, encoded);
|
|
18251
|
-
}
|
|
18252
18350
|
}
|
|
18253
18351
|
|
|
18254
18352
|
var PreimagesErrorCode;
|
|
@@ -18257,7 +18355,6 @@ var PreimagesErrorCode;
|
|
|
18257
18355
|
PreimagesErrorCode["PreimagesNotSortedUnique"] = "preimages_not_sorted_unique";
|
|
18258
18356
|
PreimagesErrorCode["AccountNotFound"] = "account_not_found";
|
|
18259
18357
|
})(PreimagesErrorCode || (PreimagesErrorCode = {}));
|
|
18260
|
-
// TODO [SeKo] consider whether this module is the right place to remove expired preimages
|
|
18261
18358
|
class Preimages {
|
|
18262
18359
|
state;
|
|
18263
18360
|
blake2b;
|
|
@@ -18319,33 +18416,34 @@ var index = /*#__PURE__*/Object.freeze({
|
|
|
18319
18416
|
TransitionHasher: TransitionHasher
|
|
18320
18417
|
});
|
|
18321
18418
|
|
|
18322
|
-
exports.block = index$
|
|
18323
|
-
exports.block_json = index$
|
|
18324
|
-
exports.bytes = index$
|
|
18325
|
-
exports.codec = index$
|
|
18326
|
-
exports.collections = index$
|
|
18327
|
-
exports.config = index$
|
|
18328
|
-
exports.config_node = index$
|
|
18329
|
-
exports.crypto = index$
|
|
18330
|
-
exports.database = index$
|
|
18331
|
-
exports.erasure_coding = index$
|
|
18332
|
-
exports.fuzz_proto = index$
|
|
18333
|
-
exports.hash = index$
|
|
18334
|
-
exports.jam_host_calls = index$
|
|
18335
|
-
exports.json_parser = index$
|
|
18336
|
-
exports.logger = index$
|
|
18337
|
-
exports.mmr = index$
|
|
18338
|
-
exports.numbers = index$
|
|
18339
|
-
exports.ordering = index$
|
|
18340
|
-
exports.pvm = index$
|
|
18341
|
-
exports.pvm_host_calls = index$
|
|
18342
|
-
exports.pvm_interpreter = index$
|
|
18343
|
-
exports.pvm_program = index$
|
|
18344
|
-
exports.pvm_spi_decoder = index$
|
|
18345
|
-
exports.shuffling = index$
|
|
18346
|
-
exports.state = index$
|
|
18347
|
-
exports.state_json = index$
|
|
18348
|
-
exports.state_merkleization = index$
|
|
18419
|
+
exports.block = index$m;
|
|
18420
|
+
exports.block_json = index$k;
|
|
18421
|
+
exports.bytes = index$t;
|
|
18422
|
+
exports.codec = index$r;
|
|
18423
|
+
exports.collections = index$o;
|
|
18424
|
+
exports.config = index$n;
|
|
18425
|
+
exports.config_node = index$i;
|
|
18426
|
+
exports.crypto = index$q;
|
|
18427
|
+
exports.database = index$e;
|
|
18428
|
+
exports.erasure_coding = index$d;
|
|
18429
|
+
exports.fuzz_proto = index$b;
|
|
18430
|
+
exports.hash = index$p;
|
|
18431
|
+
exports.jam_host_calls = index$6;
|
|
18432
|
+
exports.json_parser = index$l;
|
|
18433
|
+
exports.logger = index$j;
|
|
18434
|
+
exports.mmr = index$5;
|
|
18435
|
+
exports.numbers = index$s;
|
|
18436
|
+
exports.ordering = index$u;
|
|
18437
|
+
exports.pvm = index$4;
|
|
18438
|
+
exports.pvm_host_calls = index$7;
|
|
18439
|
+
exports.pvm_interpreter = index$8;
|
|
18440
|
+
exports.pvm_program = index$9;
|
|
18441
|
+
exports.pvm_spi_decoder = index$a;
|
|
18442
|
+
exports.shuffling = index$3;
|
|
18443
|
+
exports.state = index$h;
|
|
18444
|
+
exports.state_json = index$2;
|
|
18445
|
+
exports.state_merkleization = index$f;
|
|
18446
|
+
exports.state_vectors = index$1;
|
|
18349
18447
|
exports.transition = index;
|
|
18350
|
-
exports.trie = index$
|
|
18351
|
-
exports.utils = index$
|
|
18448
|
+
exports.trie = index$g;
|
|
18449
|
+
exports.utils = index$v;
|