@n1xyz/nord-ts 0.7.2 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions.d.ts +31 -20
- package/dist/client/Nord.d.ts +10 -2
- package/dist/client/NordUser.d.ts +20 -21
- package/dist/gen/nord_pb.d.ts +217 -179
- package/dist/gen/openapi.d.ts +13 -82
- package/dist/index.browser.js +205 -183
- package/dist/index.common.js +208 -186
- package/dist/types.d.ts +7 -8
- package/package.json +1 -1
- package/dist/gen/core_pb.d.ts +0 -120
- package/dist/gen/src/components/rfq/rfq_pb.d.ts +0 -791
package/dist/index.common.js
CHANGED
|
@@ -1628,7 +1628,7 @@ var require_fallback = __commonJS((exports, module) => {
|
|
|
1628
1628
|
|
|
1629
1629
|
// node_modules/bufferutil/index.js
|
|
1630
1630
|
var require_bufferutil = __commonJS((exports, module) => {
|
|
1631
|
-
var __dirname = "/Users/
|
|
1631
|
+
var __dirname = "/Users/sheheryar/work/proton.wt0/nord/ts/node_modules/bufferutil";
|
|
1632
1632
|
try {
|
|
1633
1633
|
module.exports = require_node_gyp_build2()(__dirname);
|
|
1634
1634
|
} catch (e2) {
|
|
@@ -2040,7 +2040,7 @@ var require_fallback2 = __commonJS((exports, module) => {
|
|
|
2040
2040
|
|
|
2041
2041
|
// node_modules/utf-8-validate/index.js
|
|
2042
2042
|
var require_utf_8_validate = __commonJS((exports, module) => {
|
|
2043
|
-
var __dirname = "/Users/
|
|
2043
|
+
var __dirname = "/Users/sheheryar/work/proton.wt0/nord/ts/node_modules/utf-8-validate";
|
|
2044
2044
|
try {
|
|
2045
2045
|
module.exports = require_node_gyp_build2()(__dirname);
|
|
2046
2046
|
} catch (e2) {
|
|
@@ -49235,7 +49235,7 @@ var require_file_uri_to_path = __commonJS((exports, module) => {
|
|
|
49235
49235
|
|
|
49236
49236
|
// node_modules/bindings/bindings.js
|
|
49237
49237
|
var require_bindings = __commonJS((exports, module) => {
|
|
49238
|
-
var __filename = "/Users/
|
|
49238
|
+
var __filename = "/Users/sheheryar/work/proton.wt0/nord/ts/node_modules/bindings/bindings.js";
|
|
49239
49239
|
var fs = __require("fs");
|
|
49240
49240
|
var path = __require("path");
|
|
49241
49241
|
var fileURLToPath = require_file_uri_to_path();
|
|
@@ -53911,6 +53911,8 @@ __export(exports_nord_pb, {
|
|
|
53911
53911
|
RfqTradeActionSchema: () => RfqTradeActionSchema,
|
|
53912
53912
|
RfqPlaceOnlySchema: () => RfqPlaceOnlySchema,
|
|
53913
53913
|
RfqMakersSetSchema: () => RfqMakersSetSchema,
|
|
53914
|
+
RfqFillStatusSchema: () => RfqFillStatusSchema,
|
|
53915
|
+
RfqFillStatus: () => RfqFillStatus,
|
|
53914
53916
|
ReduceOrderLiquidationSchema: () => ReduceOrderLiquidationSchema,
|
|
53915
53917
|
Receipt_WithdrawResultSchema: () => Receipt_WithdrawResultSchema,
|
|
53916
53918
|
Receipt_VaultPlacementReceiptSchema: () => Receipt_VaultPlacementReceiptSchema,
|
|
@@ -53970,11 +53972,13 @@ __export(exports_nord_pb, {
|
|
|
53970
53972
|
Receipt_AccountPlacementReceiptSchema: () => Receipt_AccountPlacementReceiptSchema,
|
|
53971
53973
|
ReceiptSchema: () => ReceiptSchema,
|
|
53972
53974
|
RFQQtyPlaceSchema: () => RFQQtyPlaceSchema,
|
|
53975
|
+
RFQExecutionSchema: () => RFQExecutionSchema,
|
|
53973
53976
|
PythLazerTrustedSignerSchema: () => PythLazerTrustedSignerSchema,
|
|
53974
53977
|
PlacementRoleSchema: () => PlacementRoleSchema,
|
|
53975
53978
|
PlacementRole: () => PlacementRole,
|
|
53976
53979
|
PlaceTypeSchema: () => PlaceTypeSchema,
|
|
53977
53980
|
PlaceRFQResultSchema: () => PlaceRFQResultSchema,
|
|
53981
|
+
PartialFillSchema: () => PartialFillSchema,
|
|
53978
53982
|
OrderLimitSchema: () => OrderLimitSchema,
|
|
53979
53983
|
MarketTypeSchema: () => MarketTypeSchema,
|
|
53980
53984
|
MarketType: () => MarketType,
|
|
@@ -53985,6 +53989,7 @@ __export(exports_nord_pb, {
|
|
|
53985
53989
|
MarketMode: () => MarketMode,
|
|
53986
53990
|
IntentSchema: () => IntentSchema,
|
|
53987
53991
|
Intent: () => Intent,
|
|
53992
|
+
FillTypeSchema: () => FillTypeSchema,
|
|
53988
53993
|
FillRFQResultSchema: () => FillRFQResultSchema,
|
|
53989
53994
|
FillModeSchema: () => FillModeSchema,
|
|
53990
53995
|
FillMode: () => FillMode,
|
|
@@ -53997,14 +54002,11 @@ __export(exports_nord_pb, {
|
|
|
53997
54002
|
CreateRfqMarket_MarginsSchema: () => CreateRfqMarket_MarginsSchema,
|
|
53998
54003
|
CreateRfqMarket_DecimalsSchema: () => CreateRfqMarket_DecimalsSchema,
|
|
53999
54004
|
CreateRfqMarketSchema: () => CreateRfqMarketSchema,
|
|
54000
|
-
AtomicV2Schema: () => AtomicV2Schema,
|
|
54001
54005
|
AtomicV1Schema: () => AtomicV1Schema,
|
|
54002
|
-
AtomicSubactionV2Schema: () => AtomicSubactionV2Schema,
|
|
54003
54006
|
AtomicSubactionSchema: () => AtomicSubactionSchema,
|
|
54004
54007
|
AtomicSubactionKindV1Schema: () => AtomicSubactionKindV1Schema,
|
|
54005
54008
|
AtomicSchema: () => AtomicSchema,
|
|
54006
54009
|
AtomicRemoveTriggerSchema: () => AtomicRemoveTriggerSchema,
|
|
54007
|
-
AtomicPlacementRequestSchema: () => AtomicPlacementRequestSchema,
|
|
54008
54010
|
AtomicEditTriggerSchema: () => AtomicEditTriggerSchema,
|
|
54009
54011
|
AtomicCancelOrderByIdSchema: () => AtomicCancelOrderByIdSchema,
|
|
54010
54012
|
AtomicCancelOrderByClientIdSchema: () => AtomicCancelOrderByClientIdSchema,
|
|
@@ -57294,73 +57296,73 @@ function fileDesc(b64, imports) {
|
|
|
57294
57296
|
}
|
|
57295
57297
|
|
|
57296
57298
|
// src/gen/nord_pb.ts
|
|
57297
|
-
var file_nord = /* @__PURE__ */ fileDesc("Cgpub3JkLnByb3RvEgRub3JkIh4KBFUxMjgSCgoCbG8YASABKAQSCgoCaGkYAiABKAQiiAEKCFJmcVRyYWRlEhsKDnRpbWVvdXRfbWlsbGlzGAEgASgNSACIAQESEQoJbWFya2V0X2lkGAIgASgNEhAKCG9yZGVyX2lkGAMgASgEEg0KBXByaWNlGAQgASgEEhgKEHRpbWVzdGFtcF9taWxsaXMYBSABKANCEQoPX3RpbWVvdXRfbWlsbGlzItQBCgxSZnFQbGFjZU9ubHkSEQoJbWFya2V0X2lkGAcgASgNEhsKDnRpbWVvdXRfbWlsbGlzGAEgASgNSACIAQESHAoPY2xpZW50X29yZGVyX2lkGAIgASgESAGIAQESDQoFcHJpY2UYAyABKAQSGAoEc2lkZRgEIAEoDjIKLm5vcmQuU2lkZRIMCgRiYXNlGAUgASgEEhgKEHRpbWVzdGFtcF9taWxsaXMYBiABKANCEQoPX3RpbWVvdXRfbWlsbGlzQhIKEF9jbGllbnRfb3JkZXJfaWQiIwoMU2V0UmZxTWFrZXJzEhMKC2FjY291bnRfaWRzGAEgAygNIiUKEFNldE1hcmtldE1vZGVSRlESEQoJbWFya2V0X2lkGAEgASgNItMCCg9DcmVhdGVSZnFNYXJrZXQSMAoIZGVjaW1hbHMYASABKAsyHi5ub3JkLkNyZWF0ZVJmcU1hcmtldC5EZWNpbWFscxIuCgdtYXJnaW5zGAIgASgLMh0ubm9yZC5DcmVhdGVSZnFNYXJrZXQuTWFyZ2lucxIuCgdzeW1ib2xzGAMgASgLMh0ubm9yZC5DcmVhdGVSZnFNYXJrZXQuU3ltYm9scxo5CghEZWNpbWFscxIVCg1zaXplX2RlY2ltYWxzGAEgASgNEhYKDnByaWNlX2RlY2ltYWxzGAIgASgNGjwKB01hcmdpbnMSDwoHaW1mX2JwcxgDIAEoDRIPCgdjbWZfYnBzGAQgASgNEg8KB21tZl9icHMYBSABKA0aNQoHU3ltYm9scxITCgt2aWV3X3N5bWJvbBgHIAEoCRIVCg1vcmFjbGVfc3ltYm9sGAggASgJIpQBCg5SZnFUcmFkZUFjdGlvbhIQCghvcmRlcl9pZBgBIAEoBBIRCgltYXJrZXRfaWQYAiABKA0SGAoEc2lkZRgDIAEoDjIKLm5vcmQuU2lkZRIcChRxdW90ZV90aW1lb3V0X21pbGxpcxgEIAEoDRITCgliYXNlX3NpemUYBSABKANIAEIKCghxdWFudGl0eUoECAYQByLbAgoPUmZxVHJhZGVSZWNlaXB0EhAKCG9yZGVyX2lkGAEgASgEEhEKCW1hcmtldF9pZBgCIAEoDRIwCgdzdWNjZXNzGAMgASgLMh0ubm9yZC5SZnFUcmFkZVJlY2VpcHQuU3VjY2Vzc0gAEjYKB2ZhaWx1cmUYBCABKA4yIy5ub3JkLlJmcVRyYWRlUmVjZWlwdC5GYWlsdXJlUmVhc29uSAAaggEKB1N1Y2Nlc3MSEAoIcXVvdGVfaWQYASABKAQSGAoEc2lkZRgCIAEoDjIKLm5vcmQuU2lkZRIYChBmaWxsZWRfYmFzZV9zaXplGAMgASgEEiIKDnF1b3RlX25vdGlvbmFsGAQgASgLMgoubm9yZC5VMTI4Eg0KBXByaWNlGAUgASgEIioKDUZhaWx1cmVSZWFzb24SCwoHVElNRU9VVBAAEgwKCFJFSkVDVEVEEAFCCAoGcmVzdWx0IjoKDlBsYWNlUkZRUmVzdWx0EhAKCG9yZGVyX2lkGAEgASgEEhYKDnRpbWVvdXRfbWlsbGlzGAIgASgNIqMBCg1GaWxsUkZRUmVzdWx0EhAKCG9yZGVyX2lkGAEgASgEEhgKEG1ha2VyX2FjY291bnRfaWQYAiABKA0SGAoQdGFrZXJfYWNjb3VudF9pZBgDIAEoDRIYCgtmaWxsZWRfc2l6ZRgEIAEoBEgAiAEBEhUKCHRyYWRlX2lkGAUgASgESAGIAQFCDgoMX2ZpbGxlZF9zaXplQgsKCV90cmFkZV9pZCIjCgxSZnFNYWtlcnNTZXQSEwoLYWNjb3VudF9pZHMYASADKA0iJgoLUkZRUXR5UGxhY2USFwoDcXR5GAEgASgLMgoubm9yZC5VMTI4Ij0KDUZlZVRpZXJDb25maWcSFQoNbWFrZXJfZmVlX3BwbRgBIAEoDRIVCg10YWtlcl9mZWVfcHBtGAIgASgNIvcBCgZNYXJrZXQSEQoJbWFya2V0X2lkGAEgASgNEhYKDnByaWNlX2RlY2ltYWxzGAIgASgNEhUKDXNpemVfZGVjaW1hbHMYAyABKA0SFQoNYmFzZV90b2tlbl9pZBgEIAEoDRIlCgttYXJrZXRfdHlwZRgFIAEoDjIQLm5vcmQuTWFya2V0VHlwZRIPCgdpbWZfYnBzGAYgASgNEg8KB2NtZl9icHMYByABKA0SDwoHbW1mX2JwcxgIIAEoDRIlCgttYXJrZXRfbW9kZRgJIAEoDjIQLm5vcmQuTWFya2V0TW9kZRITCgt2aWV3X3N5bWJvbBgKIAEoCSJaCgVUb2tlbhIQCgh0b2tlbl9pZBgBIAEoDRIWCg50b2tlbl9kZWNpbWFscxgCIAEoDRISCgp3ZWlnaHRfYnBzGAQgASgNEhMKC3ZpZXdfc3ltYm9sGAUgASgJIrYBCgtWYXVsdEhlYWx0aBIqChFyYXdfYWNjb3VudF92YWx1ZRgBIAEoCzIKLm5vcmQuVTEyOEgAiAEBEisKEnNhZmVfYWNjb3VudF92YWx1ZRgCIAEoCzIKLm5vcmQuVTEyOEgBiAEBEiEKBnN0YXR1cxgDIAEoDjIRLm5vcmQuVmF1bHRTdGF0dXNCFAoSX3Jhd19hY2NvdW50X3ZhbHVlQhUKE19zYWZlX2FjY291bnRfdmFsdWUisAEKC1ZhdWx0Q29uZmlnEh8KC2RlcG9zaXRfY2FwGAEgASgLMgoubm9yZC5VMTI4EiIKGm9wZW5fcG9zaXRpb25fZGlzY291bnRfYnBzGAIgASgNEh8KF2RyYXdkb3duX3Byb3RlY3Rpb25fYnBzGAMgASgNEhsKE2RyYXdkb3duX2ZyZWV6ZV9icHMYBCABKA0SHgoWZXBvY2hfbWluX2R1cmF0aW9uX3NlYxgFIAEoDSLMAgoQVmF1bHRDb25maWdQYXRjaBIkCgtkZXBvc2l0X2NhcBgBIAEoCzIKLm5vcmQuVTEyOEgAiAEBEicKGm9wZW5fcG9zaXRpb25fZGlzY291bnRfYnBzGAIgASgNSAGIAQESJAoXZHJhd2Rvd25fcHJvdGVjdGlvbl9icHMYAyABKA1IAogBARIgChNkcmF3ZG93bl9mcmVlemVfYnBzGAQgASgNSAOIAQESIwoWZXBvY2hfbWluX2R1cmF0aW9uX3NlYxgFIAEoDUgEiAEBQg4KDF9kZXBvc2l0X2NhcEIdChtfb3Blbl9wb3NpdGlvbl9kaXNjb3VudF9icHNCGgoYX2RyYXdkb3duX3Byb3RlY3Rpb25fYnBzQhYKFF9kcmF3ZG93bl9mcmVlemVfYnBzQhkKF19lcG9jaF9taW5fZHVyYXRpb25fc2VjIkgKC0NyZWF0ZVZhdWx0EhYKDm1hbmFnZXJfcHVia2V5GAEgASgMEiEKBmNvbmZpZxgCIAEoCzIRLm5vcmQuVmF1bHRDb25maWciUwoRVXBkYXRlVmF1bHRDb25maWcSEAoIdmF1bHRfaWQYASABKA0SLAoMY29uZmlnX3BhdGNoGAIgASgLMhYubm9yZC5WYXVsdENvbmZpZ1BhdGNoIjsKD1NldFZhdWx0TWFuYWdlchIQCgh2YXVsdF9pZBgBIAEoDRIWCg5tYW5hZ2VyX3B1YmtleRgCIAEoDCI3Cg9WYXVsdFN5bmNFcG9jaHMSEgoKc2Vzc2lvbl9pZBgBIAEoBBIQCgh2YXVsdF9pZBgCIAEoDSJOChFTdGFnZWRBZG1pbkFjdGlvbhIUCgxhZG1pbl9wdWJrZXkYASABKAwSIwoEa2luZBgCIAEoCzIVLm5vcmQuQWRtaW5BY3Rpb25LaW5kIrMECg9BZG1pbkFjdGlvbktpbmQSKQoMY3JlYXRlX3ZhdWx0GAEgASgLMhEubm9yZC5DcmVhdGVWYXVsdEgAEjYKE3VwZGF0ZV92YXVsdF9jb25maWcYAiABKAsyFy5ub3JkLlVwZGF0ZVZhdWx0Q29uZmlnSAASMgoRc2V0X3ZhdWx0X21hbmFnZXIYAyABKAsyFS5ub3JkLlNldFZhdWx0TWFuYWdlckgAEjIKEWNyZWF0ZV9yZnFfbWFya2V0GAQgASgLMhUubm9yZC5DcmVhdGVSZnFNYXJrZXRIABJWCiFzZXRfbWFya2V0X21vZGVfY2xvYl90cmFkaW5nX29ubHkYBSABKAsyKS5ub3JkLkFjdGlvbi5TZXRNYXJrZXRNb2RlQ0xPQlRyYWRpbmdPbmx5SAASNQoTc2V0X21hcmtldF9tb2RlX3JmcRgGIAEoCzIWLm5vcmQuU2V0TWFya2V0TW9kZVJGUUgAElAKHnNldF9tYXJrZXRfbW9kZV9jbG9iX3Bvc3Rfb25seRgHIAEoCzImLm5vcmQuQWN0aW9uLlNldE1hcmtldE1vZGVDTE9CUG9zdE9ubHlIABI+ChRzZXRfbWFya2V0X21vZGVfY2xvYhgIIAEoCzIeLm5vcmQuQWN0aW9uLlNldE1hcmtldE1vZGVDTE9CSAASLAoOc2V0X3JmcV9tYWtlcnMYCSABKAsyEi5ub3JkLlNldFJmcU1ha2Vyc0gAQgYKBGtpbmQiRAoMVmF1bHREZXBvc2l0EhIKCnNlc3Npb25faWQYASABKAQSEAoIdmF1bHRfaWQYAiABKA0SDgoGYW1vdW50GAMgASgEIvUBCg1WYXVsdFdpdGhkcmF3EhIKCnNlc3Npb25faWQYASABKAQSEAoIdmF1bHRfaWQYAiABKA0SLgoHcmVxdWVzdBgDIAEoCzIbLm5vcmQuVmF1bHRXaXRoZHJhdy5SZXF1ZXN0SAASKgoFY2xhaW0YBCABKAsyGS5ub3JkLlZhdWx0V2l0aGRyYXcuQ2xhaW1IABpRCgdSZXF1ZXN0EhgKDnF1b3RlX25vdGlvbmFsGAEgASgESAASIgoMc2hhcmVfYW1vdW50GAIgASgLMgoubm9yZC5VMTI4SABCCAoGYW1vdW50GgcKBUNsYWltQgYKBGtpbmQingEKEkNyZWF0ZVZhdWx0UmVjZWlwdBIQCgh2YXVsdF9pZBgBIAEoDRIYChB2YXVsdF9hY2NvdW50X2lkGAIgASgNEhYKDm1hbmFnZXJfcHVia2V5GAMgASgMEiEKBnN0YXR1cxgEIAEoDjIRLm5vcmQuVmF1bHRTdGF0dXMSIQoGY29uZmlnGAUgASgLMhEubm9yZC5WYXVsdENvbmZpZyJyChhVcGRhdGVWYXVsdENvbmZpZ1JlY2VpcHQSEAoIdmF1bHRfaWQYASABKA0SIQoGY29uZmlnGAIgASgLMhEubm9yZC5WYXVsdENvbmZpZxIhCgZzdGF0dXMYAyABKA4yES5ub3JkLlZhdWx0U3RhdHVzIkIKFlNldFZhdWx0TWFuYWdlclJlY2VpcHQSEAoIdmF1bHRfaWQYASABKA0SFgoObWFuYWdlcl9wdWJrZXkYAiABKAwi4QEKFlZhdWx0U3luY0Vwb2Noc1JlY2VpcHQSEAoIdmF1bHRfaWQYASABKA0SFwoPY2xvc2VkX2Vwb2NoX2lkGAIgASgNEhgKEGNsYWltYWJsZV9hbW91bnQYAyABKAQSIQoGc3RhdHVzGAQgASgOMhEubm9yZC5WYXVsdFN0YXR1cxIhCgZlcG9jaHMYBSABKAsyES5ub3JkLlZhdWx0RXBvY2hzEiUKEWxpdmVfc2hhcmVfc3VwcGx5GAYgASgLMgoubm9yZC5VMTI4EhUKDXF1b3RlX2JhbGFuY2UYByABKAMijwIKE1ZhdWx0RGVwb3NpdFJlY2VpcHQSEAoIdmF1bHRfaWQYASABKA0SFwoPZnJvbV9hY2NvdW50X2lkGAIgASgNEg4KBmFtb3VudBgDIAEoBBIhCg1zaGFyZXNfaXNzdWVkGAQgASgLMgoubm9yZC5VMTI4Eh8KC3VzZXJfc2hhcmVzGAUgASgLMgoubm9yZC5VMTI4EiUKEWxpdmVfc2hhcmVfc3VwcGx5GAYgASgLMgoubm9yZC5VMTI4EiEKBnN0YXR1cxgHIAEoDjIRLm5vcmQuVmF1bHRTdGF0dXMSGAoQdmF1bHRfYWNjb3VudF9pZBgIIAEoDRIVCg1xdW90ZV9iYWxhbmNlGAkgASgDIlUKEVdpdGhkcmF3YWxCdWNrZXRzEhUKDWN1cnJlbnRfZXBvY2gYASABKAQSFgoOcHJldmlvdXNfZXBvY2gYAiABKAQSEQoJY2xhaW1hYmxlGAMgASgEIoUBCgtWYXVsdFBwc1JlZhIQCghlcG9jaF9pZBgBIAEoDRIrChJzYWZlX2FjY291bnRfdmFsdWUYAiABKAsyCi5ub3JkLlUxMjhIAIgBARIgCgxzaGFyZV9zdXBwbHkYAyABKAsyCi5ub3JkLlUxMjhCFQoTX3NhZmVfYWNjb3VudF92YWx1ZSKWAgoLVmF1bHRFcG9jaHMSGAoQY3VycmVudF9lcG9jaF9pZBgBIAEoDRIgChhjdXJyZW50X2Vwb2NoX3N0YXJ0ZWRfYXQYAiABKAMSIgoVcGFpZF90aHJvdWdoX2Vwb2NoX2lkGAMgASgNSACIAQESLAoLd2l0aGRyYXdhbHMYBCABKAsyFy5ub3JkLldpdGhkcmF3YWxCdWNrZXRzEi8KFGxhdGVzdF9lcG9jaF9wcHNfcmVmGAUgASgLMhEubm9yZC5WYXVsdFBwc1JlZhIuChNwcmlvcl9lcG9jaF9wcHNfcmVmGAYgASgLMhEubm9yZC5WYXVsdFBwc1JlZkIYChZfcGFpZF90aHJvdWdoX2Vwb2NoX2lkIo8BCg5WYXVsdFVzZXJTdGF0ZRIaCgZzaGFyZXMYASABKAsyCi5ub3JkLlUxMjgSLAoLd2l0aGRyYXdhbHMYAiABKAsyFy5ub3JkLldpdGhkcmF3YWxCdWNrZXRzEhgKEGN1cnJlbnRfZXBvY2hfaWQYAyABKA0SGQoRcHJldmlvdXNfZXBvY2hfaWQYBCABKA0itgMKFFZhdWx0V2l0aGRyYXdSZWNlaXB0EhAKCHZhdWx0X2lkGAEgASgNEhUKDXRvX2FjY291bnRfaWQYAiABKA0SOQoJcmVxdWVzdGVkGAMgASgLMiQubm9yZC5WYXVsdFdpdGhkcmF3UmVjZWlwdC5SZXF1ZXN0ZWRIABI1CgdjbGFpbWVkGAQgASgLMiIubm9yZC5WYXVsdFdpdGhkcmF3UmVjZWlwdC5DbGFpbWVkSAASLQoPcG9zdF91c2VyX3N0YXRlGAUgASgLMhQubm9yZC5WYXVsdFVzZXJTdGF0ZRIlChFsaXZlX3NoYXJlX3N1cHBseRgGIAEoCzIKLm5vcmQuVTEyOBIhCgZzdGF0dXMYByABKA4yES5ub3JkLlZhdWx0U3RhdHVzEhgKEHZhdWx0X2FjY291bnRfaWQYCCABKA0SFQoNcXVvdGVfYmFsYW5jZRgJIAEoAxo2CglSZXF1ZXN0ZWQSDQoFcXVvdGUYASABKAQSGgoGYnVybmVkGAIgASgLMgoubm9yZC5VMTI4GhkKB0NsYWltZWQSDgoGYW1vdW50GAEgASgEQgYKBGtpbmQiSQoKT3JkZXJMaW1pdBINCgVwcmljZRgGIAEoBBIMCgRzaXplGAcgASgEEh4KCnF1b3RlX3NpemUYCCABKAsyCi5ub3JkLlUxMjgiuQEKCVBsYWNlVHlwZRIYCgRzaWRlGAMgASgOMgoubm9yZC5TaWRlEiEKCWZpbGxfbW9kZRgEIAEoDjIOLm5vcmQuRmlsbE1vZGUSFgoOaXNfcmVkdWNlX29ubHkYBSABKAgSPQoVc2VsZl90cmFkZV9wcmV2ZW50aW9uGAYgASgOMhkubm9yZC5TZWxmVHJhZGVQcmV2ZW50aW9uSACIAQFCGAoWX3NlbGZfdHJhZGVfcHJldmVudGlvbiLJAQoMVHJhZGVPclBsYWNlEhEKCW1hcmtldF9pZBgCIAEoDRIjCgpwbGFjZV90eXBlGAMgASgLMg8ubm9yZC5QbGFjZVR5cGUSHwoFbGltaXQYBiABKAsyEC5ub3JkLk9yZGVyTGltaXQSHAoPY2xpZW50X29yZGVyX2lkGCEgASgESACIAQESIQoIcmVmZXJyZXIYIiABKAsyCi5ub3JkLlUxMjhIAYgBAUISChBfY2xpZW50X29yZGVyX2lkQgsKCV9yZWZlcnJlciIpChVBdG9taWNDYW5jZWxPcmRlckJ5SWQSEAoIb3JkZXJfaWQYAiABKAQiNgobQXRvbWljQ2FuY2VsT3JkZXJCeUNsaWVudElkEhcKD2NsaWVudF9vcmRlcl9pZBgCIAEoBCKGAQoQQXRvbWljQWRkVHJpZ2dlchIkCgd0cmlnZ2VyGAEgASgLMhMubm9yZC5UcmlnZ2VyUmVjb3JkEhwKBmludGVudBgCIAEoDjIMLm5vcmQuSW50ZW50EiEKCHJlZmVycmVyGAMgASgLMgoubm9yZC5VMTI4SACIAQFCCwoJX3JlZmVycmVyIlEKEUF0b21pY0VkaXRUcmlnZ2VyEhIKCnRyaWdnZXJfaWQYASABKAQSKAoLbmV3X3RyaWdnZXIYAiABKAsyEy5ub3JkLlRyaWdnZXJSZWNvcmQiPAoTQXRvbWljUmVtb3ZlVHJpZ2dlchIRCgltYXJrZXRfaWQYASABKA0SEgoKdHJpZ2dlcl9pZBgCIAEoBCJGChZSZWR1Y2VPcmRlckxpcXVpZGF0aW9uEhkKEXRhcmdldF9hY2NvdW50X2lkGAEgASgNEhEKCW1hcmtldF9pZBgCIAEoDSLPAQoVQXRvbWljU3ViYWN0aW9uS2luZFYxEiwKDnRyYWRlX29yX3BsYWNlGAYgASgLMhIubm9yZC5UcmFkZU9yUGxhY2VIABIzCgxjYW5jZWxfb3JkZXIYByABKAsyGy5ub3JkLkF0b21pY0NhbmNlbE9yZGVyQnlJZEgAEkYKGWNhbmNlbF9vcmRlcl9ieV9jbGllbnRfaWQYCCABKAsyIS5ub3JkLkF0b21pY0NhbmNlbE9yZGVyQnlDbGllbnRJZEgAOgIYAUIHCgVpbm5lciKwAQoIQXRvbWljVjESEgoKc2Vzc2lvbl9pZBgBIAEoBBIXCgphY2NvdW50X2lkGAIgASgNSACIAQESHwoSc2VuZGVyX3RyYWNraW5nX2lkGAMgASgESAGIAQESLAoHYWN0aW9ucxgGIAMoCzIbLm5vcmQuQXRvbWljU3ViYWN0aW9uS2luZFYxOgIYAUINCgtfYWNjb3VudF9pZEIVChNfc2VuZGVyX3RyYWNraW5nX2lkIlcKFkF0b21pY1BsYWNlbWVudFJlcXVlc3QSEgoIdmF1bHRfaWQYASABKA1IABIgChZsaXF1aWRhdGlvbl9hY2NvdW50X2lkGAIgASgNSABCBwoFaW5uZXIiqwQKD0F0b21pY1N1YmFjdGlvbhIhChRkZWxlZ2F0b3JfYWNjb3VudF9pZBggIAEoDUgBiAEBEiwKDnRyYWRlX29yX3BsYWNlGAYgASgLMhIubm9yZC5UcmFkZU9yUGxhY2VIABIzCgxjYW5jZWxfb3JkZXIYByABKAsyGy5ub3JkLkF0b21pY0NhbmNlbE9yZGVyQnlJZEgAEkYKGWNhbmNlbF9vcmRlcl9ieV9jbGllbnRfaWQYCCABKAsyIS5ub3JkLkF0b21pY0NhbmNlbE9yZGVyQnlDbGllbnRJZEgAEi0KC2FkZF90cmlnZ2VyGAkgASgLMhYubm9yZC5BdG9taWNBZGRUcmlnZ2VySAASLwoMZWRpdF90cmlnZ2VyGAogASgLMhcubm9yZC5BdG9taWNFZGl0VHJpZ2dlckgAEjMKDnJlbW92ZV90cmlnZ2VyGAsgASgLMhkubm9yZC5BdG9taWNSZW1vdmVUcmlnZ2VySAASQAoYcmVkdWNlX29yZGVyX2xpcXVpZGF0aW9uGAwgASgLMhwubm9yZC5SZWR1Y2VPcmRlckxpcXVpZGF0aW9uSAASLAoOcmZxX3BsYWNlX29ubHkYDSABKAsyEi5ub3JkLlJmcVBsYWNlT25seUgAEiMKCXJmcV90cmFkZRgOIAEoCzIOLm5vcmQuUmZxVHJhZGVIAEIHCgVpbm5lckIXChVfZGVsZWdhdG9yX2FjY291bnRfaWQigQEKEUF0b21pY1N1YmFjdGlvblYyEjQKCXBsYWNlbWVudBgBIAEoCzIcLm5vcmQuQXRvbWljUGxhY2VtZW50UmVxdWVzdEgAiAEBEigKCXN1YmFjdGlvbhgCIAEoCzIVLm5vcmQuQXRvbWljU3ViYWN0aW9uQgwKCl9wbGFjZW1lbnQipAEKBkF0b21pYxISCgpzZXNzaW9uX2lkGAEgASgEEhcKCmFjY291bnRfaWQYAiABKA1IAIgBARIfChJzZW5kZXJfdHJhY2tpbmdfaWQYAyABKARIAYgBARImCgdhY3Rpb25zGAYgAygLMhUubm9yZC5BdG9taWNTdWJhY3Rpb25CDQoLX2FjY291bnRfaWRCFQoTX3NlbmRlcl90cmFja2luZ19pZCKoAQoIQXRvbWljVjISEgoKc2Vzc2lvbl9pZBgBIAEoBBIXCgphY2NvdW50X2lkGAIgASgNSACIAQESHwoSc2VuZGVyX3RyYWNraW5nX2lkGAMgASgESAGIAQESKAoHYWN0aW9ucxgGIAMoCzIXLm5vcmQuQXRvbWljU3ViYWN0aW9uVjJCDQoLX2FjY291bnRfaWRCFQoTX3NlbmRlcl90cmFja2luZ19pZCI8ChZQeXRoTGF6ZXJUcnVzdGVkU2lnbmVyEg4KBnB1YmtleRgBIAEoDBISCgpleHBpcmVzX2F0GAIgASgDIpYBCg1UcmlnZ2VyUmVjb3JkEhUKDXRyaWdnZXJfcHJpY2UYASABKAQSEQoJbWFya2V0X2lkGAIgASgNEiAKBmxpbWl0cxgDIAEoCzIQLm5vcmQuT3JkZXJMaW1pdBIfCgRraW5kGAQgASgOMhEubm9yZC5UcmlnZ2VyS2luZBIYCgRzaWRlGAUgASgOMgoubm9yZC5TaWRlIpsBCgdUcmlnZ2VyEhUKDXRyaWdnZXJfcHJpY2UYASABKAQSHwoEa2luZBgCIAEoDjIRLm5vcmQuVHJpZ2dlcktpbmQSGAoEc2lkZRgDIAEoDjIKLm5vcmQuU2lkZRIgCgZsaW1pdHMYBCABKAsyEC5ub3JkLk9yZGVyTGltaXQSHAoGaW50ZW50GAUgASgOMgwubm9yZC5JbnRlbnQi/zMKBkFjdGlvbhIZChFjdXJyZW50X3RpbWVzdGFtcBgBIAEoAxINCgVub25jZRgCIAEoDRI0Cg5jcmVhdGVfc2Vzc2lvbhgEIAEoCzIaLm5vcmQuQWN0aW9uLkNyZWF0ZVNlc3Npb25IABIwCgxjcmVhdGVfdG9rZW4YBSABKAsyGC5ub3JkLkFjdGlvbi5DcmVhdGVUb2tlbkgAEjIKDWNyZWF0ZV9tYXJrZXQYBiABKAsyGS5ub3JkLkFjdGlvbi5DcmVhdGVNYXJrZXRIABIuCgtwbGFjZV9vcmRlchgHIAEoCzIXLm5vcmQuQWN0aW9uLlBsYWNlT3JkZXJIABI6ChJjYW5jZWxfb3JkZXJfYnlfaWQYCCABKAsyHC5ub3JkLkFjdGlvbi5DYW5jZWxPcmRlckJ5SWRIABInCgdkZXBvc2l0GAkgASgLMhQubm9yZC5BY3Rpb24uRGVwb3NpdEgAEikKCHdpdGhkcmF3GAogASgLMhUubm9yZC5BY3Rpb24uV2l0aGRyYXdIABJMChtweXRoX3NldF93b3JtaG9sZV9ndWFyZGlhbnMYCyABKAsyJS5ub3JkLkFjdGlvbi5QeXRoU2V0V29ybWhvbGVHdWFyZGlhbnNIABI+ChRweXRoX3NldF9zeW1ib2xfZmVlZBgMIAEoCzIeLm5vcmQuQWN0aW9uLlB5dGhTZXRTeW1ib2xGZWVkSAASQgoWcHl0aF9wcmljZV9mZWVkX3VwZGF0ZRgNIAEoCzIgLm5vcmQuQWN0aW9uLlB5dGhQcmljZUZlZWRVcGRhdGVIABI0Cg5yZXZva2Vfc2Vzc2lvbhgPIAEoCzIaLm5vcmQuQWN0aW9uLlJldm9rZVNlc3Npb25IABIjCgVwYXVzZRgQIAEoCzISLm5vcmQuQWN0aW9uLlBhdXNlSAASJwoHdW5wYXVzZRgRIAEoCzIULm5vcmQuQWN0aW9uLlVucGF1c2VIABIpCgh0cmFuc2ZlchgSIAEoCzIVLm5vcmQuQWN0aW9uLlRyYW5zZmVySAASLgoLYWRkX3RyaWdnZXIYICABKAsyFy5ub3JkLkFjdGlvbi5BZGRUcmlnZ2VySAASNAoOcmVtb3ZlX3RyaWdnZXIYISABKAsyGi5ub3JkLkFjdGlvbi5SZW1vdmVUcmlnZ2VySAASJwoJYXRvbWljX3YxGCMgASgLMg4ubm9yZC5BdG9taWNWMUICGAFIABIyCg1mcmVlemVfbWFya2V0GCQgASgLMhkubm9yZC5BY3Rpb24uRnJlZXplTWFya2V0SAASNgoPdW5mcmVlemVfbWFya2V0GCUgASgLMhsubm9yZC5BY3Rpb24uVW5mcmVlemVNYXJrZXRIABIvCgxhZGRfZmVlX3RpZXIYJiABKAsyFy5ub3JkLkFjdGlvbi5BZGRGZWVUaWVySAASNQoPdXBkYXRlX2ZlZV90aWVyGCcgASgLMhoubm9yZC5BY3Rpb24uVXBkYXRlRmVlVGllckgAEj8KFHVwZGF0ZV9hY2NvdW50c190aWVyGCggASgLMh8ubm9yZC5BY3Rpb24uVXBkYXRlQWNjb3VudHNUaWVySAASLAoKdXBkYXRlX2FjbBgpIAEoCzIWLm5vcmQuQWN0aW9uLlVwZGF0ZUFjbEgAEjsKEmZlZV92YXVsdF90cmFuc2ZlchgqIAEoCzIdLm5vcmQuQWN0aW9uLkZlZVZhdWx0VHJhbnNmZXJIABI7ChJ0YWtlX2FsbF9wb3NpdGlvbnMYKyABKAsyHS5ub3JkLkFjdGlvbi5UYWtlQWxsUG9zaXRpb25zSAASRwoZY2FuY2VsX29yZGVyX2J5X2NsaWVudF9pZBgsIAEoCzIiLm5vcmQuQWN0aW9uLkNhbmNlbE9yZGVyQnlDbGllbnRJZEgAEjYKD2V4ZWN1dGVfdHJpZ2dlchgtIAEoCzIbLm5vcmQuQWN0aW9uLkV4ZWN1dGVUcmlnZ2VySAASPwoUc2V0X2JhY2tzdG9wX2FjY291bnQYLiABKAsyHy5ub3JkLkFjdGlvbi5TZXRCYWNrc3RvcEFjY291bnRIABIwCgxlZGl0X3RyaWdnZXIYLyABKAsyGC5ub3JkLkFjdGlvbi5FZGl0VHJpZ2dlckgAEh4KBmF0b21pYxgwIAEoCzIMLm5vcmQuQXRvbWljSAASKAoFYWRtaW4YMSABKAsyFy5ub3JkLlN0YWdlZEFkbWluQWN0aW9uSAASMAoMY2xlYXJfbWFya2V0GDIgASgLMhgubm9yZC5BY3Rpb24uQ2xlYXJNYXJrZXRIABIyChF2YXVsdF9zeW5jX2Vwb2Nocxg1IAEoCzIVLm5vcmQuVmF1bHRTeW5jRXBvY2hzSAASKwoNdmF1bHRfZGVwb3NpdBg2IAEoCzISLm5vcmQuVmF1bHREZXBvc2l0SAASLQoOdmF1bHRfd2l0aGRyYXcYNyABKAsyEy5ub3JkLlZhdWx0V2l0aGRyYXdIABIjCglhdG9taWNfdjIYOCABKAsyDi5ub3JkLkF0b21pY1YySAASUQoecHl0aF9sYXplcl9zZXRfdHJ1c3RlZF9zaWduZXJzGDkgASgLMicubm9yZC5BY3Rpb24uUHl0aExhemVyU2V0VHJ1c3RlZFNpZ25lcnNIABJJChpweXRoX2xhemVyX3NldF9mZWVkX3N5bWJvbBg6IAEoCzIjLm5vcmQuQWN0aW9uLlB5dGhMYXplclNldEZlZWRTeW1ib2xIABJNChxweXRoX2xhemVyX3ByaWNlX2ZlZWRfdXBkYXRlGDsgASgLMiUubm9yZC5BY3Rpb24uUHl0aExhemVyUHJpY2VGZWVkVXBkYXRlSAASNgoPcmVmcmVzaF9zZXNzaW9uGDwgASgLMhsubm9yZC5BY3Rpb24uUmVmcmVzaFNlc3Npb25IABI9ChNzZWxmX3Jldm9rZV9zZXNzaW9uGD0gASgLMh4ubm9yZC5BY3Rpb24uU2VsZlJldm9rZVNlc3Npb25IABrjAQoNQ3JlYXRlU2Vzc2lvbhITCgt1c2VyX3B1YmtleRgBIAEoDBIWCg5zZXNzaW9uX3B1YmtleRgCIAEoDBIYChBleHBpcnlfdGltZXN0YW1wGAMgASgDEkEKEXNpZ25hdHVyZV9mcmFtaW5nGAQgASgOMiEubm9yZC5BY3Rpb24uVXNlclNpZ25hdHVyZUZyYW1pbmdIAIgBARIdChByZWZyZXNoX2RlYWRsaW5lGAUgASgDSAGIAQFCFAoSX3NpZ25hdHVyZV9mcmFtaW5nQhMKEV9yZWZyZXNoX2RlYWRsaW5lGosBCgtDcmVhdGVUb2tlbhIWCg50b2tlbl9kZWNpbWFscxgBIAEoDRISCgp3ZWlnaHRfYnBzGAMgASgNEhMKC3ZpZXdfc3ltYm9sGAQgASgJEhUKDW9yYWNsZV9zeW1ib2wYBSABKAkSEAoIc29sX2FkZHIYBiABKAwSEgoKYWNsX3B1YmtleRgHIAEoDBoxChxTZXRNYXJrZXRNb2RlQ0xPQlRyYWRpbmdPbmx5EhEKCW1hcmtldF9pZBgBIAEoDRouChlTZXRNYXJrZXRNb2RlQ0xPQlBvc3RPbmx5EhEKCW1hcmtldF9pZBgBIAEoDRomChFTZXRNYXJrZXRNb2RlQ0xPQhIRCgltYXJrZXRfaWQYASABKA0a7gEKDENyZWF0ZU1hcmtldBIVCg1zaXplX2RlY2ltYWxzGAEgASgNEhYKDnByaWNlX2RlY2ltYWxzGAIgASgNEg8KB2ltZl9icHMYAyABKA0SDwoHY21mX2JwcxgEIAEoDRIPCgdtbWZfYnBzGAUgASgNEiUKC21hcmtldF90eXBlGAYgASgOMhAubm9yZC5NYXJrZXRUeXBlEhMKC3ZpZXdfc3ltYm9sGAcgASgJEhUKDW9yYWNsZV9zeW1ib2wYCCABKAkSFQoNYmFzZV90b2tlbl9pZBgJIAEoDRISCgphY2xfcHVia2V5GAogASgMGqoECgpQbGFjZU9yZGVyEhIKCnNlc3Npb25faWQYASABKAQSEQoJbWFya2V0X2lkGAIgASgNEhgKBHNpZGUYAyABKA4yCi5ub3JkLlNpZGUSIQoJZmlsbF9tb2RlGAQgASgOMg4ubm9yZC5GaWxsTW9kZRIWCg5pc19yZWR1Y2Vfb25seRgFIAEoCBINCgVwcmljZRgGIAEoBBIMCgRzaXplGAcgASgEEh4KCnF1b3RlX3NpemUYCCABKAsyCi5ub3JkLlUxMjgSIQoUZGVsZWdhdG9yX2FjY291bnRfaWQYICABKA1IAIgBARIcCg9jbGllbnRfb3JkZXJfaWQYISABKARIAYgBARIeChFzZW5kZXJfYWNjb3VudF9pZBgiIAEoDUgCiAEBEh8KEnNlbmRlcl90cmFja2luZ19pZBgjIAEoBEgDiAEBEj0KFXNlbGZfdHJhZGVfcHJldmVudGlvbhgkIAEoDjIZLm5vcmQuU2VsZlRyYWRlUHJldmVudGlvbkgEiAEBEiEKCHJlZmVycmVyGCUgASgLMgoubm9yZC5VMTI4SAWIAQFCFwoVX2RlbGVnYXRvcl9hY2NvdW50X2lkQhIKEF9jbGllbnRfb3JkZXJfaWRCFAoSX3NlbmRlcl9hY2NvdW50X2lkQhUKE19zZW5kZXJfdHJhY2tpbmdfaWRCGAoWX3NlbGZfdHJhZGVfcHJldmVudGlvbkILCglfcmVmZXJyZXIaqQEKD0NhbmNlbE9yZGVyQnlJZBISCgpzZXNzaW9uX2lkGAEgASgEEhAKCG9yZGVyX2lkGAIgASgEEiEKFGRlbGVnYXRvcl9hY2NvdW50X2lkGCAgASgNSACIAQESHgoRc2VuZGVyX2FjY291bnRfaWQYISABKA1IAYgBAUIXChVfZGVsZWdhdG9yX2FjY291bnRfaWRCFAoSX3NlbmRlcl9hY2NvdW50X2lkGnoKFUNhbmNlbE9yZGVyQnlDbGllbnRJZBISCgpzZXNzaW9uX2lkGAEgASgEEhcKD2NsaWVudF9vcmRlcl9pZBgCIAEoBBIeChFzZW5kZXJfYWNjb3VudF9pZBgDIAEoDUgAiAEBQhQKEl9zZW5kZXJfYWNjb3VudF9pZBpvCgdEZXBvc2l0EhQKDGFjdGlvbl9ub25jZRgBIAEoBBISCgp0b2tlbl9hZGRyGAIgASgMEg4KBmFtb3VudBgDIAEoBBITCgt1c2VyX3B1YmtleRgEIAEoDBIVCg1zZW5kZXJfcHVia2V5GAUgASgMGmoKCFdpdGhkcmF3EhAKCHRva2VuX2lkGAEgASgNEhIKCnNlc3Npb25faWQYAiABKAQSDgoGYW1vdW50GAMgASgEEhgKC2Rlc3RfcHVia2V5GAQgASgMSACIAQFCDgoMX2Rlc3RfcHVia2V5Gl0KGFB5dGhTZXRXb3JtaG9sZUd1YXJkaWFucxIaChJndWFyZGlhbl9zZXRfaW5kZXgYASABKA0SEQoJYWRkcmVzc2VzGAIgAygMEhIKCmFjbF9wdWJrZXkYAyABKAwaVQoRUHl0aFNldFN5bWJvbEZlZWQSFQoNb3JhY2xlX3N5bWJvbBgBIAEoCRIVCg1wcmljZV9mZWVkX2lkGAIgASgMEhIKCmFjbF9wdWJrZXkYAyABKAwaLwoTUHl0aFByaWNlRmVlZFVwZGF0ZRIYChByYXdfcHl0aG5ldF9kYXRhGAEgASgMGlIKGFB5dGhMYXplclByaWNlRmVlZFVwZGF0ZRIPCgdwYXlsb2FkGAEgASgMEhEKCXNpZ25hdHVyZRgCIAEoDBISCgpwdWJsaWNfa2V5GAMgASgMGmcKGlB5dGhMYXplclNldFRydXN0ZWRTaWduZXJzEhIKCmFjbF9wdWJrZXkYASABKAwSNQoPdHJ1c3RlZF9zaWduZXJzGAIgAygLMhwubm9yZC5QeXRoTGF6ZXJUcnVzdGVkU2lnbmVyGqsBChZQeXRoTGF6ZXJTZXRGZWVkU3ltYm9sEhIKCmFjbF9wdWJrZXkYASABKAwSQgoFZmVlZHMYAiADKAsyMy5ub3JkLkFjdGlvbi5QeXRoTGF6ZXJTZXRGZWVkU3ltYm9sLkZlZWRTeW1ib2xJbnB1dBo5Cg9GZWVkU3ltYm9sSW5wdXQSDwoHZmVlZF9pZBgBIAEoDRIVCg1vcmFjbGVfc3ltYm9sGAIgASgJGiMKDVJldm9rZVNlc3Npb24SEgoKc2Vzc2lvbl9pZBgBIAEoBBo0Cg5SZWZyZXNoU2Vzc2lvbhISCgpzZXNzaW9uX2lkGAEgASgEEg4KBmV4cGlyeRgCIAEoAxonChFTZWxmUmV2b2tlU2Vzc2lvbhISCgpzZXNzaW9uX2lkGAEgASgEGhsKBVBhdXNlEhIKCmFjbF9wdWJrZXkYASABKAwaHQoHVW5wYXVzZRISCgphY2xfcHVia2V5GAEgASgMGjwKElNldEJhY2tzdG9wQWNjb3VudBISCgphY2xfcHVia2V5GAEgASgMEhIKCmFjY291bnRfaWQYAiABKA0a+QEKCVJlY2lwaWVudBIxCgdzcGVjaWFsGAEgASgLMh4ubm9yZC5BY3Rpb24uUmVjaXBpZW50LlNwZWNpYWxIABItCgVvd25lZBgCIAEoCzIcLm5vcmQuQWN0aW9uLlJlY2lwaWVudC5Pd25lZEgAEjEKB3Vub3duZWQYAyABKAsyHi5ub3JkLkFjdGlvbi5SZWNpcGllbnQuVW5vd25lZEgAGgkKB1NwZWNpYWwaGwoFT3duZWQSEgoKYWNjb3VudF9pZBgBIAEoDRodCgdVbm93bmVkEhIKCmFjY291bnRfaWQYASABKA1CEAoOcmVjaXBpZW50X3R5cGUanwEKCFRyYW5zZmVyEhIKCnNlc3Npb25faWQYASABKAQSFwoPZnJvbV9hY2NvdW50X2lkGAIgASgNEhAKCHRva2VuX2lkGAMgASgNEg4KBmFtb3VudBgEIAEoBBIyCg10b19hY2NvdW50X2lkGAggASgLMhYubm9yZC5BY3Rpb24uUmVjaXBpZW50SACIAQFCEAoOX3RvX2FjY291bnRfaWQaWwoQRmVlVmF1bHRUcmFuc2ZlchISCgphY2xfcHVia2V5GAEgASgMEhEKCXJlY2lwaWVudBgCIAEoDRIQCgh0b2tlbl9pZBgDIAEoDRIOCgZhbW91bnQYBCABKAQavAEKCkFkZFRyaWdnZXISEgoKc2Vzc2lvbl9pZBgBIAEoBBIkCgd0cmlnZ2VyGAIgASgLMhMubm9yZC5UcmlnZ2VyUmVjb3JkEhwKBmludGVudBgDIAEoDjIMLm5vcmQuSW50ZW50EhcKCmFjY291bnRfaWQYCiABKA1IAIgBARIhCghyZWZlcnJlchgLIAEoCzIKLm5vcmQuVTEyOEgBiAEBQg0KC19hY2NvdW50X2lkQgsKCV9yZWZlcnJlchqHAQoLRWRpdFRyaWdnZXISEgoKc2Vzc2lvbl9pZBgBIAEoBBISCgp0cmlnZ2VyX2lkGAIgASgEEigKC25ld190cmlnZ2VyGAMgASgLMhMubm9yZC5UcmlnZ2VyUmVjb3JkEhcKCmFjY291bnRfaWQYCiABKA1IAIgBAUINCgtfYWNjb3VudF9pZBpyCg1SZW1vdmVUcmlnZ2VyEhIKCnNlc3Npb25faWQYASABKAQSEQoJbWFya2V0X2lkGAIgASgNEhIKCnRyaWdnZXJfaWQYAyABKAQSFwoKYWNjb3VudF9pZBgKIAEoDUgAiAEBQg0KC19hY2NvdW50X2lkGkUKCkFkZEZlZVRpZXISEgoKYWNsX3B1YmtleRgBIAEoDBIjCgZjb25maWcYAiABKAsyEy5ub3JkLkZlZVRpZXJDb25maWcaVAoNVXBkYXRlRmVlVGllchIKCgJpZBgBIAEoDRIjCgZjb25maWcYAiABKAsyEy5ub3JkLkZlZVRpZXJDb25maWcSEgoKYWNsX3B1YmtleRgDIAEoDBpLChJVcGRhdGVBY2NvdW50c1RpZXISDwoHdGllcl9pZBgBIAEoDRIQCghhY2NvdW50cxgCIAMoDRISCgphY2xfcHVia2V5GAMgASgMGl8KCVVwZGF0ZUFjbBISCgphY2xfcHVia2V5GAEgASgMEhUKDXRhcmdldF9wdWJrZXkYAiABKAwSEgoKcm9sZXNfbWFzaxgDIAEoDRITCgtyb2xlc192YWx1ZRgEIAEoDRo1CgxGcmVlemVNYXJrZXQSEgoKYWNsX3B1YmtleRgBIAEoDBIRCgltYXJrZXRfaWQYAiABKA0aNwoOVW5mcmVlemVNYXJrZXQSEgoKYWNsX3B1YmtleRgBIAEoDBIRCgltYXJrZXRfaWQYAiABKA0aTQoLQ2xlYXJNYXJrZXQSEgoKYWNsX3B1YmtleRgBIAEoDBIRCgltYXJrZXRfaWQYAiABKA0SFwoPY2xlYXJhbmNlX3ByaWNlGAMgASgEGmEKDkV4ZWN1dGVUcmlnZ2VyEhQKDGV4ZWN1dG9yX3NpZBgBIAEoBBISCgphY2NvdW50X2lkGAIgASgNEhEKCW1hcmtldF9pZBgDIAEoDRISCgp0cmlnZ2VyX2lkGAQgASgEGkEKEFRha2VBbGxQb3NpdGlvbnMSEgoKc2Vzc2lvbl9pZBgBIAEoBBIZChF0YXJnZXRfYWNjb3VudF9pZBgCIAEoDSI3ChRVc2VyU2lnbmF0dXJlRnJhbWluZxIHCgNIRVgQABIWChJTT0xBTkFfVFJBTlNBQ1RJT04QAUIGCgRraW5kIstCCgdSZWNlaXB0EhEKCWFjdGlvbl9pZBgBIAEoBBIaCgNlcnIYICABKA4yCy5ub3JkLkVycm9ySAASQgoVY3JlYXRlX3Nlc3Npb25fcmVzdWx0GCEgASgLMiEubm9yZC5SZWNlaXB0LkNyZWF0ZVNlc3Npb25SZXN1bHRIABI4Cg50cmFkZV9vcl9wbGFjZRgiIAEoCzIeLm5vcmQuUmVjZWlwdC5QbGFjZU9yZGVyUmVzdWx0SAASPgoTY2FuY2VsX29yZGVyX3Jlc3VsdBgjIAEoCzIfLm5vcmQuUmVjZWlwdC5DYW5jZWxPcmRlclJlc3VsdEgAEjUKDmRlcG9zaXRfcmVzdWx0GCQgASgLMhsubm9yZC5SZWNlaXB0LkRlcG9zaXRSZXN1bHRIABI+ChNpbnNlcnRfdG9rZW5fcmVzdWx0GCUgASgLMh8ubm9yZC5SZWNlaXB0Lkluc2VydFRva2VuUmVzdWx0SAASQAoUaW5zZXJ0X21hcmtldF9yZXN1bHQYJiABKAsyIC5ub3JkLlJlY2VpcHQuSW5zZXJ0TWFya2V0UmVzdWx0SAASNwoPd2l0aGRyYXdfcmVzdWx0GCcgASgLMhwubm9yZC5SZWNlaXB0LldpdGhkcmF3UmVzdWx0SAASSQoZb3JhY2xlX3N5bWJvbF9mZWVkX3Jlc3VsdBgoIAEoCzIkLm5vcmQuUmVjZWlwdC5PcmFjbGVTeW1ib2xGZWVkUmVzdWx0SAASQAoUb3JhY2xlX3VwZGF0ZV9yZXN1bHQYKSABKAsyIC5ub3JkLlJlY2VpcHQuT3JhY2xlVXBkYXRlUmVzdWx0SAASSwoadXBkYXRlX2d1YXJkaWFuX3NldF9yZXN1bHQYKiABKAsyJS5ub3JkLlJlY2VpcHQuVXBkYXRlR3VhcmRpYW5TZXRSZXN1bHRIABI3Cg9zZXNzaW9uX3Jldm9rZWQYLCABKAsyHC5ub3JkLlJlY2VpcHQuU2Vzc2lvblJldm9rZWRIABImCgZwYXVzZWQYLSABKAsyFC5ub3JkLlJlY2VpcHQuUGF1c2VkSAASKgoIdW5wYXVzZWQYLiABKAsyFi5ub3JkLlJlY2VpcHQuVW5wYXVzZWRIABIwCgt0cmFuc2ZlcnJlZBgvIAEoCzIZLm5vcmQuUmVjZWlwdC5UcmFuc2ZlcnJlZEgAEjMKDXRyaWdnZXJfYWRkZWQYQCABKAsyGi5ub3JkLlJlY2VpcHQuVHJpZ2dlckFkZGVkSAASNwoPdHJpZ2dlcl9yZW1vdmVkGEEgASgLMhwubm9yZC5SZWNlaXB0LlRyaWdnZXJSZW1vdmVkSAASLAoGYXRvbWljGEMgASgLMhoubm9yZC5SZWNlaXB0LkF0b21pY1Jlc3VsdEgAEkIKFW1hcmtldF9mcmVlemVfdXBkYXRlZBhEIAEoCzIhLm5vcmQuUmVjZWlwdC5NYXJrZXRGcmVlemVVcGRhdGVkSAASNAoOZmVlX3RpZXJfYWRkZWQYRSABKAsyGi5ub3JkLlJlY2VpcHQuRmVlVGllckFkZGVkSAASOAoQZmVlX3RpZXJfdXBkYXRlZBhGIAEoCzIcLm5vcmQuUmVjZWlwdC5GZWVUaWVyVXBkYXRlZEgAEkIKFWFjY291bnRzX3RpZXJfdXBkYXRlZBhHIAEoCzIhLm5vcmQuUmVjZWlwdC5BY2NvdW50c1RpZXJVcGRhdGVkSAASLwoLYWNsX3VwZGF0ZWQYSCABKAsyGC5ub3JkLlJlY2VpcHQuQWNsVXBkYXRlZEgAEkIKFWZlZV92YXVsdF90cmFuc2ZlcnJlZBhJIAEoCzIhLm5vcmQuUmVjZWlwdC5GZWVWYXVsdFRyYW5zZmVycmVkSAASOQoQdHJpZ2dlcl9leGVjdXRlZBhKIAEoCzIdLm5vcmQuUmVjZWlwdC5UcmlnZ2VyRXhlY3V0ZWRIABJJChl0YWtlX2FsbF9wb3NpdGlvbnNfcmVzdWx0GEsgASgLMiQubm9yZC5SZWNlaXB0LlRha2VBbGxQb3NpdGlvbnNSZXN1bHRIABJAChRiYWNrc3RvcF9hY2NvdW50X3NldBhMIAEoCzIgLm5vcmQuUmVjZWlwdC5CYWNrc3RvcEFjY291bnRTZXRIABI1Cg50cmlnZ2VyX2VkaXRlZBhNIAEoCzIbLm5vcmQuUmVjZWlwdC5UcmlnZ2VyRWRpdGVkSAASMQoNdmF1bHRfY3JlYXRlZBhOIAEoCzIYLm5vcmQuQ3JlYXRlVmF1bHRSZWNlaXB0SAASPgoUdmF1bHRfY29uZmlnX3VwZGF0ZWQYTyABKAsyHi5ub3JkLlVwZGF0ZVZhdWx0Q29uZmlnUmVjZWlwdEgAEj0KFXZhdWx0X21hbmFnZXJfdXBkYXRlZBhQIAEoCzIcLm5vcmQuU2V0VmF1bHRNYW5hZ2VyUmVjZWlwdEgAEjsKE3ZhdWx0X2Vwb2Noc19zeW5jZWQYUSABKAsyHC5ub3JkLlZhdWx0U3luY0Vwb2Noc1JlY2VpcHRIABI0Cg92YXVsdF9kZXBvc2l0ZWQYUiABKAsyGS5ub3JkLlZhdWx0RGVwb3NpdFJlY2VpcHRIABI1Cg92YXVsdF93aXRoZHJhd24YUyABKAsyGi5ub3JkLlZhdWx0V2l0aGRyYXdSZWNlaXB0SAASPgoTY2xlYXJfbWFya2V0X3Jlc3VsdBhUIAEoCzIfLm5vcmQuUmVjZWlwdC5DbGVhck1hcmtldFJlc3VsdEgAElQKH3B5dGhfbGF6ZXJfb3JhY2xlX3VwZGF0ZV9yZXN1bHQYVSABKAsyKS5ub3JkLlJlY2VpcHQuUHl0aExhemVyT3JhY2xlVXBkYXRlUmVzdWx0SAASXwolcHl0aF9sYXplcl90cnVzdGVkX3NpZ25lcnNfc2V0X3Jlc3VsdBhWIAEoCzIuLm5vcmQuUmVjZWlwdC5QeXRoTGF6ZXJUcnVzdGVkU2lnbmVyc1NldFJlc3VsdEgAElcKIXB5dGhfbGF6ZXJfZmVlZF9zeW1ib2xfc2V0X3Jlc3VsdBhXIAEoCzIqLm5vcmQuUmVjZWlwdC5QeXRoTGF6ZXJGZWVkU3ltYm9sU2V0UmVzdWx0SAASVQofcmVkdWNlX29yZGVyX2xpcXVpZGF0aW9uX3Jlc3VsdBhYIAEoCzIqLm5vcmQuUmVjZWlwdC5SZWR1Y2VPcmRlckxpcXVpZGF0aW9uUmVzdWx0SAASPgoTbWFya2V0X21vZGVfdXBkYXRlZBhZIAEoCzIfLm5vcmQuUmVjZWlwdC5NYXJrZXRNb2RlVXBkYXRlZEgAEiwKDnJmcV9tYWtlcnNfc2V0GFogASgLMhIubm9yZC5SZnFNYWtlcnNTZXRIABI7ChFzZXNzaW9uX3JlZnJlc2hlZBhbIAEoCzIeLm5vcmQuUmVjZWlwdC5TZXNzaW9uUmVmcmVzaGVkSAASQAoUc2VsZl9zZXNzaW9uX3Jldm9rZWQYXCABKAsyIC5ub3JkLlJlY2VpcHQuU2VsZlNlc3Npb25SZXZva2VkSAAaeAoGUG9zdGVkEhgKBHNpZGUYASABKA4yCi5ub3JkLlNpZGUSEQoJbWFya2V0X2lkGAIgASgNEg0KBXByaWNlGAMgASgEEgwKBHNpemUYBCABKAQSEAoIb3JkZXJfaWQYBSABKAQSEgoKYWNjb3VudF9pZBgGIAEoDRpwCgVUcmFkZRIQCghvcmRlcl9pZBgCIAEoBBINCgVwcmljZRgEIAEoBBIMCgRzaXplGAUgASgEEhIKCmFjY291bnRfaWQYBiABKA0SEQoJbWFrZXJfZmVlGAcgASgEEhEKCXRha2VyX2ZlZRgIIAEoBBptChNDcmVhdGVTZXNzaW9uUmVzdWx0EhIKCnNlc3Npb25faWQYASABKAQSDgoGZXhwaXJ5GAIgASgDEh0KEHJlZnJlc2hfZGVhZGxpbmUYAyABKANIAIgBAUITChFfcmVmcmVzaF9kZWFkbGluZRpMChBDYW5jZWxsZWRUcmlnZ2VyEhIKCmFjY291bnRfaWQYASABKA0SJAoHdHJpZ2dlchgCIAEoCzITLm5vcmQuVHJpZ2dlclJlY29yZBraAQoLT3JkZXJVcGRhdGUSMAoGcmVhc29uGAEgASgOMiAubm9yZC5SZWNlaXB0Lk9yZGVyVXBkYXRlLlJlYXNvbhISCgphY2NvdW50X2lkGAIgASgNEhAKCG9yZGVyX2lkGAMgASgEEhYKDnJlbWFpbmluZ19zaXplGAQgASgEEhYKDmNhbmNlbGxlZF9zaXplGAUgASgEEg0KBXByaWNlGAYgASgEIjQKBlJlYXNvbhIPCgtSRURVQ0VfT05MWRAAEhkKFVNFTEZfVFJBREVfUFJFVkVOVElPThABGvcCChBQbGFjZU9yZGVyUmVzdWx0EikKBnBvc3RlZBgBIAEoCzIULm5vcmQuUmVjZWlwdC5Qb3N0ZWRIAIgBARIiCgVmaWxscxgCIAMoCzITLm5vcmQuUmVjZWlwdC5UcmFkZRIcCg9jbGllbnRfb3JkZXJfaWQYAyABKARIAYgBARIfChJzZW5kZXJfdHJhY2tpbmdfaWQYBCABKARIAogBARI6ChJjYW5jZWxsZWRfdHJpZ2dlcnMYBSADKAsyHi5ub3JkLlJlY2VpcHQuQ2FuY2VsbGVkVHJpZ2dlchIwCg1vcmRlcl91cGRhdGVzGAYgAygLMhkubm9yZC5SZWNlaXB0Lk9yZGVyVXBkYXRlEjEKCXBsYWNlbWVudBgHIAEoCzIeLm5vcmQuUmVjZWlwdC5QbGFjZW1lbnRSZWNlaXB0QgkKB19wb3N0ZWRCEgoQX2NsaWVudF9vcmRlcl9pZEIVChNfc2VuZGVyX3RyYWNraW5nX2lkGnoKHFJlZHVjZU9yZGVyTGlxdWlkYXRpb25SZXN1bHQSNgoOdHJhZGVfb3JfcGxhY2UYASABKAsyHi5ub3JkLlJlY2VpcHQuUGxhY2VPcmRlclJlc3VsdBIiCgZhY3Rpb24YAiABKAsyEi5ub3JkLlRyYWRlT3JQbGFjZRqvAQoQUGxhY2VtZW50UmVjZWlwdBIhCgRyb2xlGAEgASgOMhMubm9yZC5QbGFjZW1lbnRSb2xlEjgKB2FjY291bnQYAiABKAsyJS5ub3JkLlJlY2VpcHQuQWNjb3VudFBsYWNlbWVudFJlY2VpcHRIABI0CgV2YXVsdBgDIAEoCzIjLm5vcmQuUmVjZWlwdC5WYXVsdFBsYWNlbWVudFJlY2VpcHRIAEIICgZ0YXJnZXQaGQoXQWNjb3VudFBsYWNlbWVudFJlY2VpcHQaTAoVVmF1bHRQbGFjZW1lbnRSZWNlaXB0EhAKCHZhdWx0X2lkGAEgASgNEiEKBmhlYWx0aBgCIAEoCzIRLm5vcmQuVmF1bHRIZWFsdGga/gEKD1RyaWdnZXJFeGVjdXRlZBITCgtleGVjdXRvcl9pZBgBIAEoDRISCgphY2NvdW50X2lkGAIgASgNEhEKCW1hcmtldF9pZBgDIAEoDRIeCgd0cmlnZ2VyGAQgASgLMg0ubm9yZC5UcmlnZ2VyEhIKCnRyaWdnZXJfaWQYCCABKAQSMQoHc3VjY2VzcxgFIAEoCzIeLm5vcmQuUmVjZWlwdC5QbGFjZU9yZGVyUmVzdWx0SAASKQoHZmFpbHVyZRgGIAEoDjIWLm5vcmQuVHJpZ2dlckV4ZWNFcnJvckgAEhMKCWNhbmNlbGxlZBgHIAEoCEgAQggKBnN0YXR1cxoyCg5UYWtlQWxsQmFsYW5jZRIQCgh0b2tlbl9pZBgBIAEoDRIOCgZhbW91bnQYAiABKAQadwoPVGFrZUFsbFBvc2l0aW9uEhEKCW1hcmtldF9pZBgBIAEoDRIRCgliYXNlX3NpemUYAiABKAMSGAoQc2V0dGxlbWVudF9wcmljZRgDIAEoBBIkChBiYW5rcnVwdGN5X3F1b3RlGAQgASgLMgoubm9yZC5VMTI4GlMKE1Rha2VBbGxPcmRlclVwZGF0ZXMSEQoJbWFya2V0X2lkGAEgASgNEikKBm9yZGVycxgCIAMoCzIZLm5vcmQuUmVjZWlwdC5PcmRlclVwZGF0ZRraAQoWVGFrZUFsbFBvc2l0aW9uc1Jlc3VsdBIYChB0YWtlcl9hY2NvdW50X2lkGAEgASgNEjQKDnRha2VuX2JhbGFuY2VzGAMgAygLMhwubm9yZC5SZWNlaXB0LlRha2VBbGxCYWxhbmNlEjYKD3Rha2VuX3Bvc2l0aW9ucxgEIAMoCzIdLm5vcmQuUmVjZWlwdC5UYWtlQWxsUG9zaXRpb24SOAoNb3JkZXJfdXBkYXRlcxgFIAMoCzIhLm5vcmQuUmVjZWlwdC5UYWtlQWxsT3JkZXJVcGRhdGVzGnMKGUNsZWFyTWFya2V0Q2FuY2VsbGVkT3JkZXISEgoKYWNjb3VudF9pZBgBIAEoDRIQCghvcmRlcl9pZBgCIAEoBBIcCg9jbGllbnRfb3JkZXJfaWQYAyABKARIAIgBAUISChBfY2xpZW50X29yZGVyX2lkGq0BChlDbGVhck1hcmtldENsb3NlZFBvc2l0aW9uEhIKCmFjY291bnRfaWQYASABKA0SEQoJYmFzZV9zaXplGAIgASgDEhgKEHNldHRsZW1lbnRfcHJpY2UYAyABKAQSGQoFcXVvdGUYBCABKAsyCi5ub3JkLlUxMjgSGQoRdHJhZGluZ19wbmxfZGVsdGEYBSABKAMSGQoRZnVuZGluZ19wbmxfZGVsdGEYBiABKAMaxQEKEUNsZWFyTWFya2V0UmVzdWx0EhEKCW1hcmtldF9pZBgBIAEoDRIXCg9jbGVhcmFuY2VfcHJpY2UYBSABKAQSQQoQY2FuY2VsbGVkX29yZGVycxgDIAMoCzInLm5vcmQuUmVjZWlwdC5DbGVhck1hcmtldENhbmNlbGxlZE9yZGVyEkEKEGNsb3NlZF9wb3NpdGlvbnMYBCADKAsyJy5ub3JkLlJlY2VpcHQuQ2xlYXJNYXJrZXRDbG9zZWRQb3NpdGlvbhqeAQoRQ2FuY2VsT3JkZXJSZXN1bHQSEAoIb3JkZXJfaWQYASABKAQSEgoKYWNjb3VudF9pZBgCIAEoDRIcCg9jbGllbnRfb3JkZXJfaWQYAyABKARIAIgBARIxCglwbGFjZW1lbnQYBCABKAsyHi5ub3JkLlJlY2VpcHQuUGxhY2VtZW50UmVjZWlwdEISChBfY2xpZW50X29yZGVyX2lkGnAKDURlcG9zaXRSZXN1bHQSEAoIdG9rZW5faWQYASABKA0SDgoGYW1vdW50GAIgASgEEhIKCmFjY291bnRfaWQYAyABKA0SFAoMdXNlcl9jcmVhdGVkGAQgASgIEhMKC3VzZXJfcHVia2V5GAUgASgMGkMKEUluc2VydFRva2VuUmVzdWx0EhIKCmNoYWluX2FkZHIYASABKAwSGgoFdG9rZW4YAiABKAsyCy5ub3JkLlRva2VuGjIKEkluc2VydE1hcmtldFJlc3VsdBIcCgZtYXJrZXQYASABKAsyDC5ub3JkLk1hcmtldBp5Cg5XaXRoZHJhd1Jlc3VsdBIQCgh0b2tlbl9pZBgBIAEoDRIOCgZhbW91bnQYAiABKAQSDwoHYmFsYW5jZRgDIAEoBBISCgphY2NvdW50X2lkGAQgASgNEgsKA2ZlZRgFIAEoBBITCgt1c2VyX3B1YmtleRgGIAEoDBpAChZPcmFjbGVTeW1ib2xGZWVkUmVzdWx0EhUKDW9yYWNsZV9zeW1ib2wYASABKAkSDwoHZmVlZF9pZBgCIAEoDBonChJPcmFjbGVVcGRhdGVSZXN1bHQSEQoJdGltZXN0YW1wGAEgASgDGjcKG1B5dGhMYXplck9yYWNsZVVwZGF0ZVJlc3VsdBIYChB0aW1lc3RhbXBfbWlsbGlzGAEgASgEGlkKIFB5dGhMYXplclRydXN0ZWRTaWduZXJzU2V0UmVzdWx0EjUKD3RydXN0ZWRfc2lnbmVycxgBIAMoCzIcLm5vcmQuUHl0aExhemVyVHJ1c3RlZFNpZ25lchqaAQocUHl0aExhemVyRmVlZFN5bWJvbFNldFJlc3VsdBJECgVmZWVkcxgBIAMoCzI1Lm5vcmQuUmVjZWlwdC5QeXRoTGF6ZXJGZWVkU3ltYm9sU2V0UmVzdWx0LkZlZWRTeW1ib2waNAoKRmVlZFN5bWJvbBIPCgdmZWVkX2lkGAEgASgNEhUKDW9yYWNsZV9zeW1ib2wYAiABKAkaSAoXVXBkYXRlR3VhcmRpYW5TZXRSZXN1bHQSGgoSZ3VhcmRpYW5fc2V0X2luZGV4GAEgASgNEhEKCWFkZHJlc3NlcxgCIAMoDBpDCgxQZXJwUG9zaXRpb24SEQoJbWFya2V0X2lkGAEgASgNEhEKCWJhc2Vfc2l6ZRgCIAEoAxINCgVwcmljZRgDIAEoBBoQCg5TZXNzaW9uUmV2b2tlZBoUChJTZWxmU2Vzc2lvblJldm9rZWQaNgoQU2Vzc2lvblJlZnJlc2hlZBISCgpzZXNzaW9uX2lkGAEgASgEEg4KBmV4cGlyeRgCIAEoAxoICgZQYXVzZWQaCgoIVW5wYXVzZWQaKAoSQmFja3N0b3BBY2NvdW50U2V0EhIKCmFjY291bnRfaWQYASABKA0a/AEKCVJlY2lwaWVudBIyCgdzcGVjaWFsGAEgASgLMh8ubm9yZC5SZWNlaXB0LlJlY2lwaWVudC5TcGVjaWFsSAASLgoFb3duZWQYAiABKAsyHS5ub3JkLlJlY2VpcHQuUmVjaXBpZW50Lk93bmVkSAASMgoHdW5vd25lZBgDIAEoCzIfLm5vcmQuUmVjZWlwdC5SZWNpcGllbnQuVW5vd25lZEgAGgkKB1NwZWNpYWwaGwoFT3duZWQSEgoKYWNjb3VudF9pZBgBIAEoDRodCgdVbm93bmVkEhIKCmFjY291bnRfaWQYASABKA1CEAoOcmVjaXBpZW50X3R5cGUaowEKC1RyYW5zZmVycmVkEhcKD2Zyb21fYWNjb3VudF9pZBgBIAEoDRIrCgp0b19hY2NvdW50GAIgASgLMhcubm9yZC5SZWNlaXB0LlJlY2lwaWVudBIQCgh0b2tlbl9pZBgDIAEoDRIOCgZhbW91bnQYBCABKAQSFwoPYWNjb3VudF9jcmVhdGVkGAUgASgIEhMKC3VzZXJfcHVia2V5GAYgASgMGkoKE0ZlZVZhdWx0VHJhbnNmZXJyZWQSEQoJcmVjaXBpZW50GAEgASgNEhAKCHRva2VuX2lkGAIgASgNEg4KBmFtb3VudBgDIAEoBBp6CgxUcmlnZ2VyQWRkZWQSEgoKYWNjb3VudF9pZBgBIAEoDRISCgp0cmlnZ2VyX2lkGAIgASgEEiQKB3RyaWdnZXIYAyABKAsyEy5ub3JkLlRyaWdnZXJSZWNvcmQSHAoGaW50ZW50GAQgASgOMgwubm9yZC5JbnRlbnQafAoOVHJpZ2dlclJlbW92ZWQSEgoKYWNjb3VudF9pZBgBIAEoDRISCgp0cmlnZ2VyX2lkGAIgASgEEiQKB3RyaWdnZXIYAyABKAsyEy5ub3JkLlRyaWdnZXJSZWNvcmQSHAoGaW50ZW50GAQgASgOMgwubm9yZC5JbnRlbnQagAEKDVRyaWdnZXJFZGl0ZWQSEgoKYWNjb3VudF9pZBgBIAEoDRISCgp0cmlnZ2VyX2lkGAIgASgEEicKEHByZXZpb3VzX3RyaWdnZXIYAyABKAsyDS5ub3JkLlRyaWdnZXISHgoHdHJpZ2dlchgEIAEoCzINLm5vcmQuVHJpZ2dlcho4ChNNYXJrZXRGcmVlemVVcGRhdGVkEhEKCW1hcmtldF9pZBgBIAEoDRIOCgZmcm96ZW4YAiABKAgakAEKEU1hcmtldE1vZGVVcGRhdGVkEhEKCW1hcmtldF9pZBgBIAEoDRIlCgttYXJrZXRfbW9kZRgCIAEoDjIQLm5vcmQuTWFya2V0TW9kZRJBChBjYW5jZWxsZWRfb3JkZXJzGAMgAygLMicubm9yZC5SZWNlaXB0LkNsZWFyTWFya2V0Q2FuY2VsbGVkT3JkZXIaPwoMRmVlVGllckFkZGVkEiMKBmNvbmZpZxgBIAEoCzITLm5vcmQuRmVlVGllckNvbmZpZxIKCgJpZBgCIAEoDRpBCg5GZWVUaWVyVXBkYXRlZBIKCgJpZBgBIAEoDRIjCgZjb25maWcYAiABKAsyEy5ub3JkLkZlZVRpZXJDb25maWcaOAoTQWNjb3VudHNUaWVyVXBkYXRlZBIPCgd0aWVyX2lkGAEgASgNEhAKCGFjY291bnRzGAIgAygNGmAKCkFjbFVwZGF0ZWQSEgoKYWNsX3B1YmtleRgBIAEoDBISCgpyb2xlc19tYXNrGAIgASgEEhUKDXRhcmdldF9wdWJrZXkYAyABKAwSEwoLcm9sZXNfdmFsdWUYBCABKAQa7AMKGUF0b21pY1N1YmFjdGlvblJlc3VsdEtpbmQSPAoScGxhY2Vfb3JkZXJfcmVzdWx0GAEgASgLMh4ubm9yZC5SZWNlaXB0LlBsYWNlT3JkZXJSZXN1bHRIABI3CgxjYW5jZWxfb3JkZXIYAiABKAsyHy5ub3JkLlJlY2VpcHQuQ2FuY2VsT3JkZXJSZXN1bHRIABIzCg10cmlnZ2VyX2FkZGVkGAMgASgLMhoubm9yZC5SZWNlaXB0LlRyaWdnZXJBZGRlZEgAEjcKD3RyaWdnZXJfcmVtb3ZlZBgEIAEoCzIcLm5vcmQuUmVjZWlwdC5UcmlnZ2VyUmVtb3ZlZEgAEjUKDnRyaWdnZXJfZWRpdGVkGAUgASgLMhsubm9yZC5SZWNlaXB0LlRyaWdnZXJFZGl0ZWRIABJOChhyZWR1Y2Vfb3JkZXJfbGlxdWlkYXRpb24YBiABKAsyKi5ub3JkLlJlY2VpcHQuUmVkdWNlT3JkZXJMaXF1aWRhdGlvblJlc3VsdEgAEioKCnJmcV9yZXN1bHQYByABKAsyFC5ub3JkLlBsYWNlUkZRUmVzdWx0SAASLgoPcmZxX2ZpbGxfcmVzdWx0GAggASgLMhMubm9yZC5GaWxsUkZRUmVzdWx0SABCBwoFaW5uZXIaSAoMQXRvbWljUmVzdWx0EjgKB3Jlc3VsdHMYASADKAsyJy5ub3JkLlJlY2VpcHQuQXRvbWljU3ViYWN0aW9uUmVzdWx0S2luZEIGCgRraW5kKhgKBFNpZGUSBwoDQVNLEAASBwoDQklEEAEqHwoKTWFya2V0TW9kZRIICgRDTE9CEAASBwoDUkZREAEqYwoMTWFya2V0UmVnaW1lEhgKFE1BUktFVF9SRUdJTUVfTk9STUFMEAASGwoXTUFSS0VUX1JFR0lNRV9QT1NUX09OTFkQARIcChhNQVJLRVRfUkVHSU1FX1RSQURFX09OTFkQAiotCgtUcmlnZ2VyS2luZBINCglTVE9QX0xPU1MQABIPCgtUQUtFX1BST0ZJVBABKiQKBkludGVudBIMCghERUNSRUFTRRAAEgwKCElOQ1JFQVNFEAEqTwoIRmlsbE1vZGUSCQoFTElNSVQQABINCglQT1NUX09OTFkQARIXChNJTU1FRElBVEVfT1JfQ0FOQ0VMEAISEAoMRklMTF9PUl9LSUxMEAMqrgEKDVBsYWNlbWVudFJvbGUSIAocUExBQ0VNRU5UX1JPTEVfQUNDT1VOVF9PV05FUhAAEiAKHFBMQUNFTUVOVF9ST0xFX1ZBVUxUX01BTkFHRVIQARIeChpQTEFDRU1FTlRfUk9MRV9TVVBFUl9BRE1JThACEhoKFlBMQUNFTUVOVF9ST0xFX1RSSUdHRVIQAxIdChlQTEFDRU1FTlRfUk9MRV9MSVFVSURBVE9SEAQqMQoTU2VsZlRyYWRlUHJldmVudGlvbhIICgROT05FEAASEAoMRVhQSVJFX01BS0VSEAEqJgoKTWFya2V0VHlwZRIICgRTUE9UEAASDgoKUEVSUEVUVUFMUxABKn0KEFRyaWdnZXJFeGVjRXJyb3ISDwoLTk9fUE9TSVRJT04QABITCg9QTEFOTklOR19GQUlMRUQQARIOCgpCQU5LUlVQVENZEAISFQoRUklTS19DSEVDS19GQUlMRUQQAxIcChhSRURVQ0VfT05MWV9DSEVDS19GQUlMRUQQBCofCg5TcGVjaWFsQWNjb3VudBINCglGRUVfVkFVTFQQACpdCgtWYXVsdFN0YXR1cxIXChNWQVVMVF9TVEFUVVNfQUNUSVZFEAASHAoYVkFVTFRfU1RBVFVTX0RFUklTS19PTkxZEAESFwoTVkFVTFRfU1RBVFVTX0ZST1pFThACKugpCgVFcnJvchINCglEVVBMSUNBVEUQABIVChFJTlZBTElEX1NJR05BVFVSRRADEhQKEE1BUktFVF9OT1RfRk9VTkQQBBITCg9UT0tFTl9OT1RfRk9VTkQQBRISCg5VU0VSX05PVF9GT1VORBAGEhUKEVNFU1NJT05fTk9UX0ZPVU5EEAcSEwoPT1JERVJfTk9UX0ZPVU5EEAgSEwoPT1JERVJfU0laRV9aRVJPEAkSDgoKQVJJVEhNRVRJQxALEhcKE0FSSVRITUVUSUNfT1ZFUkZMT1cQDBIYChRBUklUSE1FVElDX1VOREVSRkxPVxANEh8KG0FSSVRITUVUSUNfRElWSVNJT05fQllfWkVSTxAOEhoKFktFWV9BTFJFQURZX1JFR0lTVEVSRUQQDxIcChhVUERBVEVfVElNRVNUQU1QX0lOX1BBU1QQERIYChRUT09fTUFOWV9PUEVOX09SREVSUxASEh0KGVdJVEhEUkFXX0FNT1VOVF9UT09fU01BTEwQFRIpCiVTT1VSQ0VfQU5EX1RBUkdFVF9TSE9VTERfTk9UX0JFX0VRVUFMEBgSEgoOREVDT0RFX0ZBSUxVUkUQIBIgChxERUNPREVfRkFJTFVSRV9MRU5HVEhfUFJFRklYECESFgoSREVDT0RFX0ZBSUxVUkVfUkFXECISGQoVREVDT0RFX0ZBSUxVUkVfRE9NQUlOECMSHwobVVBEQVRFX1BVQkxJU0hfVElNRV9JTl9QQVNUECQSCwoHU0VTU0lPThAwEh8KG1NFU1NJT05fUkVGUkVTSF9OT1RfRU5BQkxFRBAxEioKJlNFU1NJT05fUkVGUkVTSF9ERUFETElORV9CRUZPUkVfRVhQSVJZEDISFwoTUFlUSF9GRUVEX05PVF9BRERFRBBdEhUKEVBZVEhfRkVFRF9NSVNTSU5HEF4SGwoXUFlUSF9GRUVEX0FMUkVBRFlfQURERUQQXxIjCh9QWVRIX0dVQVJESUFOX1NFVF9VTklOSVRJQUxJWkVEEGASHQoZUFlUSF9HVUFSRElBTl9TRVRfSU5WQUxJRBBhEiMKH1BZVEhfRkVFRF9ERUNJTUFMU19PVVRfT0ZfUkFOR0UQYhIgChxQWVRIX0ZFRURfUFJJQ0VfT1VUX09GX1JBTkdFEGMSIwofUFlUSF9GRUVEX1ZBUklBTkNFX09VVF9PRl9SQU5HRRBkEjUKMVBZVEhfR1VBUkRJQU5fU0VUX0FORF9QWVRIX1NJR05BVFVSRV9ET19OT1RfTUFUQ0gQZRIcChhJTlZBTElEX1RPS0VOX1BBUkFNRVRFUlMQZhIcChhJTkRFWF9QUklDRV9PVVRfT0ZfUkFOR0UQZxIfChtJTkRFWF9ERUNJTUFMU19PVVRfT0ZfUkFOR0UQaBIZChVJTlZBTElEX1NUQVRFX1ZFUlNJT04QaRITCg9JTlZBTElEX01BUkdJTlMQbBIhCh1NQVJLRVRfREVDSU1BTFNfRVhDRUVEX0xJTUlUUxBtEhMKD1RPT19NQU5ZX1RPS0VOUxBuEggKBFRJRVIQcxIZChVUSUVSX0ZFRV9PVVRfT0ZfUkFOR0UQdBIYChRUSUVSX0lEX09VVF9PRl9SQU5HRRB1EhIKDlRJRVJfTk9UX0ZPVU5EEHYSFAoQRlVORElOR19PVkVSRkxPVxB7EjcKM0NBTl9SRURVQ0VfUE9TSVRJT05fT05MWV9JRl9BTExfT1JERVJTX0FSRV9DQU5DRUxFRBB8EhcKE1VORVhQRUNURURfVE9LRU5fSUQQfxIWChFSRVBFQVRFRF9PUkRFUl9JRBCAARIeChlDTElFTlRfT1JERVJfSURfVE9PX0xBUkdFEIEBEhQKD1RPS0VOX05PVF9SRUFEWRCCARIdChhUT0tFTl9BTFJFQURZX1JFR0lTVEVSRUQQgwESIQocSU1NRURJQVRFX09SREVSX0dPVF9OT19GSUxMUxCFARIZChRGQUlMRURfVE9fRklMTF9MSU1JVBCGARIwCitQT1NUX09OTFlfTVVTVF9OT1RfRklMTF9BTllfT1BQT1NJVEVfT1JERVJTEIcBEgwKB0lOVkFMSUQQiAESEAoLTUFJTlRFTkFOQ0UQiQESGgoVTUlOSU1VTV9TSVpFX0RFQ0lNQUxTEIoBEjIKLVBBUkFNRVRFUlNfV0lMTF9DUkVBVEVfTk9OX09QRVJBVElPTkFMX01BUktFVBCLARIiCh1PTkxZX0lNTUVESUFURV9PUkRFUlNfQUxMT1dFRBCMARIbChZUT09fTUFOWV9VU0VSX0FDQ09VTlRTEI0BEhYKEUFDQ09VTlRfTk9UX0ZPVU5EEI4BEhoKFUFDQ09VTlRfSU5WQUxJRF9PV05FUhCPARIbChZTVUJBQ1RJT05fT1VUX09GX1JBTkdFEJABEhEKDERVU1RfQUNDT1VOVBCRARIMCgdCQUxBTkNFEKABEh0KGEJBTEFOQ0VfREVQT1NJVF9PVkVSRkxPVxChARIcChdCQUxBTkNFX0NIQU5HRV9PVkVSRkxPVxCiARIiCh1CQUxBTkNFX0NIQU5HRV9MSU1JVF9FWENFRURFRBCjARIZChRCQUxBTkNFX0lOU1VGRklDSUVOVBCkARIeChlVTkFVVEhFTlRJQ0FURURfTDFfQUNUSU9OEKUBEh0KGEVOQ09ERURfQUNUSU9OX1RPT19MQVJHRRCmARIMCgdUUklHR0VSEKgBEhoKFVRSSUdHRVJfSU5WQUxJRF9QUklDRRCpARIWChFUUklHR0VSX05PVF9GT1VORBCqARIrCiZUUklHR0VSX09OTFlfREVDUkVBU0VfT1JERVJTX1NVUFBPUlRFRBCrARIoCiNUUklHR0VSX01BWF9TSVpFX1BMQUNFTUVOVF9FWENFRURFRBCsARIYChNUUklHR0VSX05PVF9DSEFOR0VEEK0BEg4KCVRJTUVTVEFNUBCwARIfChpUSU1FU1RBTVBfT1VUX09GX1RIUkVTSE9MRBCxARIUCg9USU1FU1RBTVBfU1RBTEUQsgESHAoYRVhQSVJZX1RJTUVTVEFNUF9JTl9QQVNUEBASJQogQkFOS1JVUFRDWV9JTlNVRkZJQ0lFTlRfQ09WRVJBR0UQuQESGQoUQkFOS1JVUFRDWV9OT1RfRk9VTkQQugESGwoWQkFOS1JVUFRDWV9OT1RfQUxMT1dFRBC7ARIVChBNQVJLRVRfTk9UX1JFQURZEMABEhIKDU1BUktFVF9GUk9aRU4QwQESEQoMTUFSS0VUX0VNUFRZEMIBEjAKK01BUktFVF9NT0RFX0RPRVNfTk9UX1NVUFBPUlRfVEhJU19PUEVSQVRJT04QwwESDQoIUE9TSVRJT04QyAESFwoSUE9TSVRJT05fTk9UX0ZPVU5EEMkBEhkKFFBPU0lUSU9OX1NUQVRFX09SREVSEMoBEh8KGlBPU0lUSU9OX1NUQVRFX09SREVSX1BSSUNFEMsBEh4KGVBPU0lUSU9OX1NUQVRFX09SREVSX1NJWkUQzAESHgoZUE9TSVRJT05fU1RBVEVfT1JERVJfU0lERRDNARIYChNQT1NJVElPTl9TSVpFX0xJTUlUEM4BEhgKE1BPU0lUSU9OX1NUQVRFX1BFUlAQzwESJAofUE9TSVRJT05fU1RBVEVfT1JERVJfREVMRUdBVElPThDQARIKCgVQUklDRRDRARIbChZTSUdOQVRVUkVfVkVSSUZJQ0FUSU9OENkBEjAKK1NJR05BVFVSRV9WRVJJRklDQVRJT05fTUFMRk9STUVEX1BVQkxJQ19LRVkQ2gESKgolU0lHTkFUVVJFX1ZFUklGSUNBVElPTl9JTlZBTElEX0xFTkdUSBDbARIJCgRSSVNLEOABEjQKL1JJU0tfREVMRUdBVElPTl9NRl9UT19CRV9MRVNTX1RIQU5fT1JfRVFVQUxfTU1GEOEBEiQKH1JJU0tfT01GX0xFU1NfVEhBTl9PUl9FUVVBTF9JTUYQ4gESJAofUklTS19PTUZfTEVTU19USEFOX09SX0VRVUFMX0NNRhDjARI1CjBSSVNLX1VOSEVBTFRIWV9NRl9BTkRfUE9OX0FGVEVSX0JFVFRFUl9PRl9CRUZPUkUQ5AESKgolUklTS19UUkFERV9PTUZfTEVTU19USEFOX09SX0VRVUFMX0NNRhDlARIUCg9SSVNLX05PVF9FTk9VR0gQ5gESFAoPT1JERVJfRVhFQ1VUSU9OEPABEhoKFU9SREVSX0VYRUNVVElPTl9FTVBUWRDxARIhChxPUkRFUl9FWEVDVVRJT05fRklMTF9PUl9LSUxMEPIBEiMKHk9SREVSX0VYRUNVVElPTl9NSVNTSU5HX0xJTUlUUxDzARIiCh1PUkRFUl9FWEVDVVRJT05fTUlTU0lOR19QUklDRRD0ARIfChpPUkRFUl9FWEVDVVRJT05fU0laRV9MSU1JVBD1ARIgChtPUkRFUl9FWEVDVVRJT05fTElNSVRfUFJJQ0UQ9gESHgoZT1JERVJfUkVEVUNFX0lTX1BPU1RfT05MWRD3ARIfChpPUkRFUl9FWEVDVVRJT05fU0VMTF9QUklDRRD4ARIlCiBPUkRFUl9TSVpFX0VYQ0VFRFNfUE9TSVRJT05fU0laRRD5ARIMCgdBVE9NSUNTEIACEigKI0FUT01JQ1NfVFJBREVTX0NBTk5PVF9GT0xMT1dfUExBQ0VTEIECEjAKK0FUT01JQ1NfQ0FOQ0VMU19DQU5OT1RfRk9MTE9XX1RSQURFU19QTEFDRVMQggISHQoYQVRPTUlDU19EVVBMSUNBVEVfQ0FOQ0VMEIMCEhgKE1JGUV9PUkRFUl9USU1FT1VURUQQ+gESJgohQUNUSU9OX1BPU0lUSU9OX1NIT1VMRF9CRV9DT1ZFUkVEEJECEhkKFEFDVElPTl9JTlZBTElEX05PTkNFEJICEikKJEFDVElPTl9QUk9QT1NFRF9QUklDRV9NVVNUX0JFX0hJR0hFUhCTAhIcChdBRE1JTl9ST0xFX0lOU1VGRklDSUVOVBCUAhIUCg9BRE1JTl9OT1RfRk9VTkQQlQISKQokVU5JUVVFX1NVUEVSX0FETUlOX0NBTk5PVF9CRV9SRU1PVkVEEJYCEh8KGlNVUEVSX0FETUlOX0FMUkVBRFlfRVhJU1RTEJcCEhUKEFRSSUdHRVJfQ09ORkxJQ1QQmAISGgoVVFJJR0dFUl9FRElUX0NPTkZMSUNUEJkCEhwKF1RSSUdHRVJfUkVNT1ZFX0NPTkZMSUNUEJoCEg0KCFRSQU5TRkVSEKACEi4KKVRSQU5TRkVSX1RPX1VOT1dORURfQUNDT1VOVF9JU19QUk9ISUJJVEVEEKECEiwKJ1RSQU5TRkVSX1RPX09XTkVEX0FDQ09VTlRfV0FTX1JFUVVFU1RFRBCiAhIKCgVWQVVMVBCoAhIUCg9WQVVMVF9OT1RfRk9VTkQQqQISHQoYVkFVTFRfQUNUSU9OX05PVF9BTExPV0VEEKoCEhkKFFZBVUxUX1NUQVRVU19JTlZBTElEEKsCEiUKIFZBVUxUX1JFRFVDRV9PTkxZX09SREVSX1JFUVVJUkVEEKwCEiYKIVZBVUxUX0FDVElPTl9XT1VMRF9ERUdSQURFX1NUQVRVUxCtAhIZChRWQVVMVF9VU0VSX05PVF9GT1VORBCuAhIdChhWQVVMVF9VU0VSX0hBU19OT19TSEFSRVMQrwISHAoXVkFVTFRfUEVSTUlTU0lPTl9ERU5JRUQQtgISEgoNVkFVTFRfREVQT1NJVBCwAhIxCixWQVVMVF9ERVBPU0lUX0JPT1RTVFJBUF9SRVFVSVJFU19FTVBUWV9WQVVMVBCxAhIfChpWQVVMVF9ERVBPU0lUX0NBUF9FWENFRURFRBCyAhIpCiRWQVVMVF9ERVBPU0lUX1JFUVVJUkVTX0FDVElWRV9TVEFUVVMQswISLwoqVkFVTFRfREVQT1NJVF9DQVBfQkVMT1dfQ1VSUkVOVF9SQVdfRVFVSVRZELQCEhwKF1ZBVUxUX0RFUE9TSVRfVE9PX1NNQUxMELUCEhMKDlZBVUxUX1dJVEhEUkFXELgCEh4KGVZBVUxUX0lOU1VGRklDSUVOVF9TSEFSRVMQuQISLgopVkFVTFRfV0lUSERSQVdfUkVRVUlSRVNfTk9OX0ZST1pFTl9TVEFUVVMQugISIgodVkFVTFRfTk9fQ0xBSU1BQkxFX1dJVEhEUkFXQUwQuwISJQogVkFVTFRfV0lUSERSQVdfUVVPVEVfVU5BVkFJTEFCTEUQvAISLQooVkFVTFRfRFVTVF9FWElUX1JFUVVJUkVTX0ZVTExfU0hBUkVfRVhJVBC9AhI1CjBWQVVMVF9MQVNUX1NIQVJFX1dJVEhEUkFXX1JFUVVJUkVTX0VNUFRZX0FDQ09VTlQQvgISKAojVkFVTFRfV0lUSERSQVdfUkVRVUlSRVNfTElWRV9TSEFSRVMQvwISEgoNVkFVTFRfQ09OVFJPTBDAAhIdChhWQVVMVF9FUE9DSF9OT1RfRUxJR0lCTEUQwQISMQosVkFVTFRfUFJFVklPVVNfRVBPQ0hfV0lUSERSQVdBTFNfTk9UX1BBWUFCTEUQwgISMgotVkFVTFRfRlJFRVpFX1RIUkVTSE9MRF9NVVNUX0VYQ0VFRF9QUk9URUNUSU9OEMMCEh0KGFZBVUxUX0NPTkZJR19QQVRDSF9FTVBUWRDEAhIoCiNWQVVMVF9OT19TVEFUVVNfVFJBTlNJVElPTl9SRVFVSVJFRBDFAhItCihWQVVMVF9GUk9aRU5fU1RBVFVTX1JFUVVJUkVTX1NVUEVSX0FETUlOEMYCEioKJVZBVUxUX05FV19DT05GSUdfV09VTERfREVHUkFERV9TVEFUVVMQxwISDgoJUkZRX0VSUk9SEMgCEhAKC1JGUV9USU1FT1VUEMkCEhQKD05PVF9JTVBMRU1FTlRFRBD0AxIXChJBQ1RJT05fTk9UX0FMTE9XRUQQ9QMSGAoTTk9UX1NVUFBPUlRFRF9JTlBVVBD2AxIMCgdEUk9QUEVEEOcHYgZwcm90bzM");
|
|
57299
|
+
var file_nord = /* @__PURE__ */ fileDesc("Cgpub3JkLnByb3RvEgRub3JkIh4KBFUxMjgSCgoCbG8YASABKAQSCgoCaGkYAiABKAQiqwEKCFJmcVRyYWRlEhsKDnRpbWVvdXRfbWlsbGlzGAEgASgNSACIAQESEQoJbWFya2V0X2lkGAIgASgNEhAKCG9yZGVyX2lkGAMgASgEEg0KBXByaWNlGAQgASgEEhgKEHRpbWVzdGFtcF9taWxsaXMYBSABKAMSIQoJZmlsbF90eXBlGAYgASgLMg4ubm9yZC5GaWxsVHlwZUIRCg9fdGltZW91dF9taWxsaXMiOQoLUGFydGlhbEZpbGwSFAoMbWluaW11bV9zaXplGAEgASgEEhQKDG1heGltdW1fc2l6ZRgCIAEoBCJ5CghGaWxsVHlwZRIbCg5pc19yZWR1Y2Vfb25seRgBIAEoCEgAiAEBEiwKDHBhcnRpYWxfZmlsbBgCIAEoCzIRLm5vcmQuUGFydGlhbEZpbGxIAYgBAUIRCg9faXNfcmVkdWNlX29ubHlCDwoNX3BhcnRpYWxfZmlsbCL3AQoMUmZxUGxhY2VPbmx5EhEKCW1hcmtldF9pZBgHIAEoDRIbCg50aW1lb3V0X21pbGxpcxgBIAEoDUgAiAEBEhwKD2NsaWVudF9vcmRlcl9pZBgCIAEoBEgBiAEBEg0KBXByaWNlGAMgASgEEhgKBHNpZGUYBCABKA4yCi5ub3JkLlNpZGUSDAoEYmFzZRgFIAEoBBIYChB0aW1lc3RhbXBfbWlsbGlzGAYgASgDEiEKCWZpbGxfdHlwZRgIIAEoCzIOLm5vcmQuRmlsbFR5cGVCEQoPX3RpbWVvdXRfbWlsbGlzQhIKEF9jbGllbnRfb3JkZXJfaWQiIwoMU2V0UmZxTWFrZXJzEhMKC2FjY291bnRfaWRzGAEgAygNIiUKEFNldE1hcmtldE1vZGVSRlESEQoJbWFya2V0X2lkGAEgASgNItMCCg9DcmVhdGVSZnFNYXJrZXQSMAoIZGVjaW1hbHMYASABKAsyHi5ub3JkLkNyZWF0ZVJmcU1hcmtldC5EZWNpbWFscxIuCgdtYXJnaW5zGAIgASgLMh0ubm9yZC5DcmVhdGVSZnFNYXJrZXQuTWFyZ2lucxIuCgdzeW1ib2xzGAMgASgLMh0ubm9yZC5DcmVhdGVSZnFNYXJrZXQuU3ltYm9scxo5CghEZWNpbWFscxIVCg1zaXplX2RlY2ltYWxzGAEgASgNEhYKDnByaWNlX2RlY2ltYWxzGAIgASgNGjwKB01hcmdpbnMSDwoHaW1mX2JwcxgDIAEoDRIPCgdjbWZfYnBzGAQgASgNEg8KB21tZl9icHMYBSABKA0aNQoHU3ltYm9scxITCgt2aWV3X3N5bWJvbBgHIAEoCRIVCg1vcmFjbGVfc3ltYm9sGAggASgJIpQBCg5SZnFUcmFkZUFjdGlvbhIQCghvcmRlcl9pZBgBIAEoBBIRCgltYXJrZXRfaWQYAiABKA0SGAoEc2lkZRgDIAEoDjIKLm5vcmQuU2lkZRIcChRxdW90ZV90aW1lb3V0X21pbGxpcxgEIAEoDRITCgliYXNlX3NpemUYBSABKANIAEIKCghxdWFudGl0eUoECAYQByLbAgoPUmZxVHJhZGVSZWNlaXB0EhAKCG9yZGVyX2lkGAEgASgEEhEKCW1hcmtldF9pZBgCIAEoDRIwCgdzdWNjZXNzGAMgASgLMh0ubm9yZC5SZnFUcmFkZVJlY2VpcHQuU3VjY2Vzc0gAEjYKB2ZhaWx1cmUYBCABKA4yIy5ub3JkLlJmcVRyYWRlUmVjZWlwdC5GYWlsdXJlUmVhc29uSAAaggEKB1N1Y2Nlc3MSEAoIcXVvdGVfaWQYASABKAQSGAoEc2lkZRgCIAEoDjIKLm5vcmQuU2lkZRIYChBmaWxsZWRfYmFzZV9zaXplGAMgASgEEiIKDnF1b3RlX25vdGlvbmFsGAQgASgLMgoubm9yZC5VMTI4Eg0KBXByaWNlGAUgASgEIioKDUZhaWx1cmVSZWFzb24SCwoHVElNRU9VVBAAEgwKCFJFSkVDVEVEEAFCCAoGcmVzdWx0IjoKDlBsYWNlUkZRUmVzdWx0EhAKCG9yZGVyX2lkGAEgASgEEhYKDnRpbWVvdXRfbWlsbGlzGAIgASgNIk4KDFJGUUV4ZWN1dGlvbhITCgtmaWxsZWRfc2l6ZRgBIAEoBBIQCgh0cmFkZV9pZBgCIAEoBBIXCg9leGVjdXRpb25fcHJpY2UYAyABKAQioQEKDUZpbGxSRlFSZXN1bHQSEAoIb3JkZXJfaWQYASABKAQSGAoQbWFrZXJfYWNjb3VudF9pZBgCIAEoDRIYChB0YWtlcl9hY2NvdW50X2lkGAMgASgNEiUKCWV4ZWN1dGlvbhgEIAEoCzISLm5vcmQuUkZRRXhlY3V0aW9uEiMKBnN0YXR1cxgFIAEoDjITLm5vcmQuUmZxRmlsbFN0YXR1cyIjCgxSZnFNYWtlcnNTZXQSEwoLYWNjb3VudF9pZHMYASADKA0iJgoLUkZRUXR5UGxhY2USFwoDcXR5GAEgASgLMgoubm9yZC5VMTI4Ij0KDUZlZVRpZXJDb25maWcSFQoNbWFrZXJfZmVlX3BwbRgBIAEoDRIVCg10YWtlcl9mZWVfcHBtGAIgASgNIvcBCgZNYXJrZXQSEQoJbWFya2V0X2lkGAEgASgNEhYKDnByaWNlX2RlY2ltYWxzGAIgASgNEhUKDXNpemVfZGVjaW1hbHMYAyABKA0SFQoNYmFzZV90b2tlbl9pZBgEIAEoDRIlCgttYXJrZXRfdHlwZRgFIAEoDjIQLm5vcmQuTWFya2V0VHlwZRIPCgdpbWZfYnBzGAYgASgNEg8KB2NtZl9icHMYByABKA0SDwoHbW1mX2JwcxgIIAEoDRIlCgttYXJrZXRfbW9kZRgJIAEoDjIQLm5vcmQuTWFya2V0TW9kZRITCgt2aWV3X3N5bWJvbBgKIAEoCSJaCgVUb2tlbhIQCgh0b2tlbl9pZBgBIAEoDRIWCg50b2tlbl9kZWNpbWFscxgCIAEoDRISCgp3ZWlnaHRfYnBzGAQgASgNEhMKC3ZpZXdfc3ltYm9sGAUgASgJIrYBCgtWYXVsdEhlYWx0aBIqChFyYXdfYWNjb3VudF92YWx1ZRgBIAEoCzIKLm5vcmQuVTEyOEgAiAEBEisKEnNhZmVfYWNjb3VudF92YWx1ZRgCIAEoCzIKLm5vcmQuVTEyOEgBiAEBEiEKBnN0YXR1cxgDIAEoDjIRLm5vcmQuVmF1bHRTdGF0dXNCFAoSX3Jhd19hY2NvdW50X3ZhbHVlQhUKE19zYWZlX2FjY291bnRfdmFsdWUisAEKC1ZhdWx0Q29uZmlnEh8KC2RlcG9zaXRfY2FwGAEgASgLMgoubm9yZC5VMTI4EiIKGm9wZW5fcG9zaXRpb25fZGlzY291bnRfYnBzGAIgASgNEh8KF2RyYXdkb3duX3Byb3RlY3Rpb25fYnBzGAMgASgNEhsKE2RyYXdkb3duX2ZyZWV6ZV9icHMYBCABKA0SHgoWZXBvY2hfbWluX2R1cmF0aW9uX3NlYxgFIAEoDSLMAgoQVmF1bHRDb25maWdQYXRjaBIkCgtkZXBvc2l0X2NhcBgBIAEoCzIKLm5vcmQuVTEyOEgAiAEBEicKGm9wZW5fcG9zaXRpb25fZGlzY291bnRfYnBzGAIgASgNSAGIAQESJAoXZHJhd2Rvd25fcHJvdGVjdGlvbl9icHMYAyABKA1IAogBARIgChNkcmF3ZG93bl9mcmVlemVfYnBzGAQgASgNSAOIAQESIwoWZXBvY2hfbWluX2R1cmF0aW9uX3NlYxgFIAEoDUgEiAEBQg4KDF9kZXBvc2l0X2NhcEIdChtfb3Blbl9wb3NpdGlvbl9kaXNjb3VudF9icHNCGgoYX2RyYXdkb3duX3Byb3RlY3Rpb25fYnBzQhYKFF9kcmF3ZG93bl9mcmVlemVfYnBzQhkKF19lcG9jaF9taW5fZHVyYXRpb25fc2VjIkgKC0NyZWF0ZVZhdWx0EhYKDm1hbmFnZXJfcHVia2V5GAEgASgMEiEKBmNvbmZpZxgCIAEoCzIRLm5vcmQuVmF1bHRDb25maWciUwoRVXBkYXRlVmF1bHRDb25maWcSEAoIdmF1bHRfaWQYASABKA0SLAoMY29uZmlnX3BhdGNoGAIgASgLMhYubm9yZC5WYXVsdENvbmZpZ1BhdGNoIjsKD1NldFZhdWx0TWFuYWdlchIQCgh2YXVsdF9pZBgBIAEoDRIWCg5tYW5hZ2VyX3B1YmtleRgCIAEoDCI3Cg9WYXVsdFN5bmNFcG9jaHMSEgoKc2Vzc2lvbl9pZBgBIAEoBBIQCgh2YXVsdF9pZBgCIAEoDSJOChFTdGFnZWRBZG1pbkFjdGlvbhIUCgxhZG1pbl9wdWJrZXkYASABKAwSIwoEa2luZBgCIAEoCzIVLm5vcmQuQWRtaW5BY3Rpb25LaW5kIrMECg9BZG1pbkFjdGlvbktpbmQSKQoMY3JlYXRlX3ZhdWx0GAEgASgLMhEubm9yZC5DcmVhdGVWYXVsdEgAEjYKE3VwZGF0ZV92YXVsdF9jb25maWcYAiABKAsyFy5ub3JkLlVwZGF0ZVZhdWx0Q29uZmlnSAASMgoRc2V0X3ZhdWx0X21hbmFnZXIYAyABKAsyFS5ub3JkLlNldFZhdWx0TWFuYWdlckgAEjIKEWNyZWF0ZV9yZnFfbWFya2V0GAQgASgLMhUubm9yZC5DcmVhdGVSZnFNYXJrZXRIABJWCiFzZXRfbWFya2V0X21vZGVfY2xvYl90cmFkaW5nX29ubHkYBSABKAsyKS5ub3JkLkFjdGlvbi5TZXRNYXJrZXRNb2RlQ0xPQlRyYWRpbmdPbmx5SAASNQoTc2V0X21hcmtldF9tb2RlX3JmcRgGIAEoCzIWLm5vcmQuU2V0TWFya2V0TW9kZVJGUUgAElAKHnNldF9tYXJrZXRfbW9kZV9jbG9iX3Bvc3Rfb25seRgHIAEoCzImLm5vcmQuQWN0aW9uLlNldE1hcmtldE1vZGVDTE9CUG9zdE9ubHlIABI+ChRzZXRfbWFya2V0X21vZGVfY2xvYhgIIAEoCzIeLm5vcmQuQWN0aW9uLlNldE1hcmtldE1vZGVDTE9CSAASLAoOc2V0X3JmcV9tYWtlcnMYCSABKAsyEi5ub3JkLlNldFJmcU1ha2Vyc0gAQgYKBGtpbmQiRAoMVmF1bHREZXBvc2l0EhIKCnNlc3Npb25faWQYASABKAQSEAoIdmF1bHRfaWQYAiABKA0SDgoGYW1vdW50GAMgASgEIvUBCg1WYXVsdFdpdGhkcmF3EhIKCnNlc3Npb25faWQYASABKAQSEAoIdmF1bHRfaWQYAiABKA0SLgoHcmVxdWVzdBgDIAEoCzIbLm5vcmQuVmF1bHRXaXRoZHJhdy5SZXF1ZXN0SAASKgoFY2xhaW0YBCABKAsyGS5ub3JkLlZhdWx0V2l0aGRyYXcuQ2xhaW1IABpRCgdSZXF1ZXN0EhgKDnF1b3RlX25vdGlvbmFsGAEgASgESAASIgoMc2hhcmVfYW1vdW50GAIgASgLMgoubm9yZC5VMTI4SABCCAoGYW1vdW50GgcKBUNsYWltQgYKBGtpbmQingEKEkNyZWF0ZVZhdWx0UmVjZWlwdBIQCgh2YXVsdF9pZBgBIAEoDRIYChB2YXVsdF9hY2NvdW50X2lkGAIgASgNEhYKDm1hbmFnZXJfcHVia2V5GAMgASgMEiEKBnN0YXR1cxgEIAEoDjIRLm5vcmQuVmF1bHRTdGF0dXMSIQoGY29uZmlnGAUgASgLMhEubm9yZC5WYXVsdENvbmZpZyJyChhVcGRhdGVWYXVsdENvbmZpZ1JlY2VpcHQSEAoIdmF1bHRfaWQYASABKA0SIQoGY29uZmlnGAIgASgLMhEubm9yZC5WYXVsdENvbmZpZxIhCgZzdGF0dXMYAyABKA4yES5ub3JkLlZhdWx0U3RhdHVzIkIKFlNldFZhdWx0TWFuYWdlclJlY2VpcHQSEAoIdmF1bHRfaWQYASABKA0SFgoObWFuYWdlcl9wdWJrZXkYAiABKAwi+wEKFlZhdWx0U3luY0Vwb2Noc1JlY2VpcHQSEAoIdmF1bHRfaWQYASABKA0SFwoPY2xvc2VkX2Vwb2NoX2lkGAIgASgNEhgKEGNsYWltYWJsZV9hbW91bnQYAyABKAQSIQoGc3RhdHVzGAQgASgOMhEubm9yZC5WYXVsdFN0YXR1cxIhCgZlcG9jaHMYBSABKAsyES5ub3JkLlZhdWx0RXBvY2hzEiUKEWxpdmVfc2hhcmVfc3VwcGx5GAYgASgLMgoubm9yZC5VMTI4EhUKDXF1b3RlX2JhbGFuY2UYByABKAMSGAoQdmF1bHRfYWNjb3VudF9pZBgIIAEoDSKPAgoTVmF1bHREZXBvc2l0UmVjZWlwdBIQCgh2YXVsdF9pZBgBIAEoDRIXCg9mcm9tX2FjY291bnRfaWQYAiABKA0SDgoGYW1vdW50GAMgASgEEiEKDXNoYXJlc19pc3N1ZWQYBCABKAsyCi5ub3JkLlUxMjgSHwoLdXNlcl9zaGFyZXMYBSABKAsyCi5ub3JkLlUxMjgSJQoRbGl2ZV9zaGFyZV9zdXBwbHkYBiABKAsyCi5ub3JkLlUxMjgSIQoGc3RhdHVzGAcgASgOMhEubm9yZC5WYXVsdFN0YXR1cxIYChB2YXVsdF9hY2NvdW50X2lkGAggASgNEhUKDXF1b3RlX2JhbGFuY2UYCSABKAMiVQoRV2l0aGRyYXdhbEJ1Y2tldHMSFQoNY3VycmVudF9lcG9jaBgBIAEoBBIWCg5wcmV2aW91c19lcG9jaBgCIAEoBBIRCgljbGFpbWFibGUYAyABKAQihQEKC1ZhdWx0UHBzUmVmEhAKCGVwb2NoX2lkGAEgASgNEisKEnNhZmVfYWNjb3VudF92YWx1ZRgCIAEoCzIKLm5vcmQuVTEyOEgAiAEBEiAKDHNoYXJlX3N1cHBseRgDIAEoCzIKLm5vcmQuVTEyOEIVChNfc2FmZV9hY2NvdW50X3ZhbHVlIpYCCgtWYXVsdEVwb2NocxIYChBjdXJyZW50X2Vwb2NoX2lkGAEgASgNEiAKGGN1cnJlbnRfZXBvY2hfc3RhcnRlZF9hdBgCIAEoAxIiChVwYWlkX3Rocm91Z2hfZXBvY2hfaWQYAyABKA1IAIgBARIsCgt3aXRoZHJhd2FscxgEIAEoCzIXLm5vcmQuV2l0aGRyYXdhbEJ1Y2tldHMSLwoUbGF0ZXN0X2Vwb2NoX3Bwc19yZWYYBSABKAsyES5ub3JkLlZhdWx0UHBzUmVmEi4KE3ByaW9yX2Vwb2NoX3Bwc19yZWYYBiABKAsyES5ub3JkLlZhdWx0UHBzUmVmQhgKFl9wYWlkX3Rocm91Z2hfZXBvY2hfaWQijwEKDlZhdWx0VXNlclN0YXRlEhoKBnNoYXJlcxgBIAEoCzIKLm5vcmQuVTEyOBIsCgt3aXRoZHJhd2FscxgCIAEoCzIXLm5vcmQuV2l0aGRyYXdhbEJ1Y2tldHMSGAoQY3VycmVudF9lcG9jaF9pZBgDIAEoDRIZChFwcmV2aW91c19lcG9jaF9pZBgEIAEoDSK2AwoUVmF1bHRXaXRoZHJhd1JlY2VpcHQSEAoIdmF1bHRfaWQYASABKA0SFQoNdG9fYWNjb3VudF9pZBgCIAEoDRI5CglyZXF1ZXN0ZWQYAyABKAsyJC5ub3JkLlZhdWx0V2l0aGRyYXdSZWNlaXB0LlJlcXVlc3RlZEgAEjUKB2NsYWltZWQYBCABKAsyIi5ub3JkLlZhdWx0V2l0aGRyYXdSZWNlaXB0LkNsYWltZWRIABItCg9wb3N0X3VzZXJfc3RhdGUYBSABKAsyFC5ub3JkLlZhdWx0VXNlclN0YXRlEiUKEWxpdmVfc2hhcmVfc3VwcGx5GAYgASgLMgoubm9yZC5VMTI4EiEKBnN0YXR1cxgHIAEoDjIRLm5vcmQuVmF1bHRTdGF0dXMSGAoQdmF1bHRfYWNjb3VudF9pZBgIIAEoDRIVCg1xdW90ZV9iYWxhbmNlGAkgASgDGjYKCVJlcXVlc3RlZBINCgVxdW90ZRgBIAEoBBIaCgZidXJuZWQYAiABKAsyCi5ub3JkLlUxMjgaGQoHQ2xhaW1lZBIOCgZhbW91bnQYASABKARCBgoEa2luZCJJCgpPcmRlckxpbWl0Eg0KBXByaWNlGAYgASgEEgwKBHNpemUYByABKAQSHgoKcXVvdGVfc2l6ZRgIIAEoCzIKLm5vcmQuVTEyOCK5AQoJUGxhY2VUeXBlEhgKBHNpZGUYAyABKA4yCi5ub3JkLlNpZGUSIQoJZmlsbF9tb2RlGAQgASgOMg4ubm9yZC5GaWxsTW9kZRIWCg5pc19yZWR1Y2Vfb25seRgFIAEoCBI9ChVzZWxmX3RyYWRlX3ByZXZlbnRpb24YBiABKA4yGS5ub3JkLlNlbGZUcmFkZVByZXZlbnRpb25IAIgBAUIYChZfc2VsZl90cmFkZV9wcmV2ZW50aW9uIskBCgxUcmFkZU9yUGxhY2USEQoJbWFya2V0X2lkGAIgASgNEiMKCnBsYWNlX3R5cGUYAyABKAsyDy5ub3JkLlBsYWNlVHlwZRIfCgVsaW1pdBgGIAEoCzIQLm5vcmQuT3JkZXJMaW1pdBIcCg9jbGllbnRfb3JkZXJfaWQYISABKARIAIgBARIhCghyZWZlcnJlchgiIAEoCzIKLm5vcmQuVTEyOEgBiAEBQhIKEF9jbGllbnRfb3JkZXJfaWRCCwoJX3JlZmVycmVyIikKFUF0b21pY0NhbmNlbE9yZGVyQnlJZBIQCghvcmRlcl9pZBgCIAEoBCI2ChtBdG9taWNDYW5jZWxPcmRlckJ5Q2xpZW50SWQSFwoPY2xpZW50X29yZGVyX2lkGAIgASgEIoYBChBBdG9taWNBZGRUcmlnZ2VyEiQKB3RyaWdnZXIYASABKAsyEy5ub3JkLlRyaWdnZXJSZWNvcmQSHAoGaW50ZW50GAIgASgOMgwubm9yZC5JbnRlbnQSIQoIcmVmZXJyZXIYAyABKAsyCi5ub3JkLlUxMjhIAIgBAUILCglfcmVmZXJyZXIiUQoRQXRvbWljRWRpdFRyaWdnZXISEgoKdHJpZ2dlcl9pZBgBIAEoBBIoCgtuZXdfdHJpZ2dlchgCIAEoCzITLm5vcmQuVHJpZ2dlclJlY29yZCI8ChNBdG9taWNSZW1vdmVUcmlnZ2VyEhEKCW1hcmtldF9pZBgBIAEoDRISCgp0cmlnZ2VyX2lkGAIgASgEIisKFlJlZHVjZU9yZGVyTGlxdWlkYXRpb24SEQoJbWFya2V0X2lkGAIgASgNIs8BChVBdG9taWNTdWJhY3Rpb25LaW5kVjESLAoOdHJhZGVfb3JfcGxhY2UYBiABKAsyEi5ub3JkLlRyYWRlT3JQbGFjZUgAEjMKDGNhbmNlbF9vcmRlchgHIAEoCzIbLm5vcmQuQXRvbWljQ2FuY2VsT3JkZXJCeUlkSAASRgoZY2FuY2VsX29yZGVyX2J5X2NsaWVudF9pZBgIIAEoCzIhLm5vcmQuQXRvbWljQ2FuY2VsT3JkZXJCeUNsaWVudElkSAA6AhgBQgcKBWlubmVyIrABCghBdG9taWNWMRISCgpzZXNzaW9uX2lkGAEgASgEEhcKCmFjY291bnRfaWQYAiABKA1IAIgBARIfChJzZW5kZXJfdHJhY2tpbmdfaWQYAyABKARIAYgBARIsCgdhY3Rpb25zGAYgAygLMhsubm9yZC5BdG9taWNTdWJhY3Rpb25LaW5kVjE6AhgBQg0KC19hY2NvdW50X2lkQhUKE19zZW5kZXJfdHJhY2tpbmdfaWQixwQKD0F0b21pY1N1YmFjdGlvbhIUCgd1c2Vfa2V5GAEgASgISAGIAQESHgoRdGFyZ2V0X2FjY291bnRfaWQYICABKA1IAogBARIsCg50cmFkZV9vcl9wbGFjZRgGIAEoCzISLm5vcmQuVHJhZGVPclBsYWNlSAASMwoMY2FuY2VsX29yZGVyGAcgASgLMhsubm9yZC5BdG9taWNDYW5jZWxPcmRlckJ5SWRIABJGChljYW5jZWxfb3JkZXJfYnlfY2xpZW50X2lkGAggASgLMiEubm9yZC5BdG9taWNDYW5jZWxPcmRlckJ5Q2xpZW50SWRIABItCgthZGRfdHJpZ2dlchgJIAEoCzIWLm5vcmQuQXRvbWljQWRkVHJpZ2dlckgAEi8KDGVkaXRfdHJpZ2dlchgKIAEoCzIXLm5vcmQuQXRvbWljRWRpdFRyaWdnZXJIABIzCg5yZW1vdmVfdHJpZ2dlchgLIAEoCzIZLm5vcmQuQXRvbWljUmVtb3ZlVHJpZ2dlckgAEkAKGHJlZHVjZV9vcmRlcl9saXF1aWRhdGlvbhgMIAEoCzIcLm5vcmQuUmVkdWNlT3JkZXJMaXF1aWRhdGlvbkgAEiwKDnJmcV9wbGFjZV9vbmx5GA0gASgLMhIubm9yZC5SZnFQbGFjZU9ubHlIABIjCglyZnFfdHJhZGUYDiABKAsyDi5ub3JkLlJmcVRyYWRlSABCBwoFaW5uZXJCCgoIX3VzZV9rZXlCFAoSX3RhcmdldF9hY2NvdW50X2lkIqQBCgZBdG9taWMSEgoKc2Vzc2lvbl9pZBgBIAEoBBIXCgphY2NvdW50X2lkGAIgASgNSACIAQESHwoSc2VuZGVyX3RyYWNraW5nX2lkGAMgASgESAGIAQESJgoHYWN0aW9ucxgGIAMoCzIVLm5vcmQuQXRvbWljU3ViYWN0aW9uQg0KC19hY2NvdW50X2lkQhUKE19zZW5kZXJfdHJhY2tpbmdfaWQiPAoWUHl0aExhemVyVHJ1c3RlZFNpZ25lchIOCgZwdWJrZXkYASABKAwSEgoKZXhwaXJlc19hdBgCIAEoAyKWAQoNVHJpZ2dlclJlY29yZBIVCg10cmlnZ2VyX3ByaWNlGAEgASgEEhEKCW1hcmtldF9pZBgCIAEoDRIgCgZsaW1pdHMYAyABKAsyEC5ub3JkLk9yZGVyTGltaXQSHwoEa2luZBgEIAEoDjIRLm5vcmQuVHJpZ2dlcktpbmQSGAoEc2lkZRgFIAEoDjIKLm5vcmQuU2lkZSKbAQoHVHJpZ2dlchIVCg10cmlnZ2VyX3ByaWNlGAEgASgEEh8KBGtpbmQYAiABKA4yES5ub3JkLlRyaWdnZXJLaW5kEhgKBHNpZGUYAyABKA4yCi5ub3JkLlNpZGUSIAoGbGltaXRzGAQgASgLMhAubm9yZC5PcmRlckxpbWl0EhwKBmludGVudBgFIAEoDjIMLm5vcmQuSW50ZW50ItozCgZBY3Rpb24SGQoRY3VycmVudF90aW1lc3RhbXAYASABKAMSDQoFbm9uY2UYAiABKA0SNAoOY3JlYXRlX3Nlc3Npb24YBCABKAsyGi5ub3JkLkFjdGlvbi5DcmVhdGVTZXNzaW9uSAASMAoMY3JlYXRlX3Rva2VuGAUgASgLMhgubm9yZC5BY3Rpb24uQ3JlYXRlVG9rZW5IABIyCg1jcmVhdGVfbWFya2V0GAYgASgLMhkubm9yZC5BY3Rpb24uQ3JlYXRlTWFya2V0SAASLgoLcGxhY2Vfb3JkZXIYByABKAsyFy5ub3JkLkFjdGlvbi5QbGFjZU9yZGVySAASOgoSY2FuY2VsX29yZGVyX2J5X2lkGAggASgLMhwubm9yZC5BY3Rpb24uQ2FuY2VsT3JkZXJCeUlkSAASJwoHZGVwb3NpdBgJIAEoCzIULm5vcmQuQWN0aW9uLkRlcG9zaXRIABIpCgh3aXRoZHJhdxgKIAEoCzIVLm5vcmQuQWN0aW9uLldpdGhkcmF3SAASTAobcHl0aF9zZXRfd29ybWhvbGVfZ3VhcmRpYW5zGAsgASgLMiUubm9yZC5BY3Rpb24uUHl0aFNldFdvcm1ob2xlR3VhcmRpYW5zSAASPgoUcHl0aF9zZXRfc3ltYm9sX2ZlZWQYDCABKAsyHi5ub3JkLkFjdGlvbi5QeXRoU2V0U3ltYm9sRmVlZEgAEkIKFnB5dGhfcHJpY2VfZmVlZF91cGRhdGUYDSABKAsyIC5ub3JkLkFjdGlvbi5QeXRoUHJpY2VGZWVkVXBkYXRlSAASNAoOcmV2b2tlX3Nlc3Npb24YDyABKAsyGi5ub3JkLkFjdGlvbi5SZXZva2VTZXNzaW9uSAASIwoFcGF1c2UYECABKAsyEi5ub3JkLkFjdGlvbi5QYXVzZUgAEicKB3VucGF1c2UYESABKAsyFC5ub3JkLkFjdGlvbi5VbnBhdXNlSAASKQoIdHJhbnNmZXIYEiABKAsyFS5ub3JkLkFjdGlvbi5UcmFuc2ZlckgAEi4KC2FkZF90cmlnZ2VyGCAgASgLMhcubm9yZC5BY3Rpb24uQWRkVHJpZ2dlckgAEjQKDnJlbW92ZV90cmlnZ2VyGCEgASgLMhoubm9yZC5BY3Rpb24uUmVtb3ZlVHJpZ2dlckgAEicKCWF0b21pY192MRgjIAEoCzIOLm5vcmQuQXRvbWljVjFCAhgBSAASMgoNZnJlZXplX21hcmtldBgkIAEoCzIZLm5vcmQuQWN0aW9uLkZyZWV6ZU1hcmtldEgAEjYKD3VuZnJlZXplX21hcmtldBglIAEoCzIbLm5vcmQuQWN0aW9uLlVuZnJlZXplTWFya2V0SAASLwoMYWRkX2ZlZV90aWVyGCYgASgLMhcubm9yZC5BY3Rpb24uQWRkRmVlVGllckgAEjUKD3VwZGF0ZV9mZWVfdGllchgnIAEoCzIaLm5vcmQuQWN0aW9uLlVwZGF0ZUZlZVRpZXJIABI/ChR1cGRhdGVfYWNjb3VudHNfdGllchgoIAEoCzIfLm5vcmQuQWN0aW9uLlVwZGF0ZUFjY291bnRzVGllckgAEiwKCnVwZGF0ZV9hY2wYKSABKAsyFi5ub3JkLkFjdGlvbi5VcGRhdGVBY2xIABI7ChJmZWVfdmF1bHRfdHJhbnNmZXIYKiABKAsyHS5ub3JkLkFjdGlvbi5GZWVWYXVsdFRyYW5zZmVySAASOwoSdGFrZV9hbGxfcG9zaXRpb25zGCsgASgLMh0ubm9yZC5BY3Rpb24uVGFrZUFsbFBvc2l0aW9uc0gAEkcKGWNhbmNlbF9vcmRlcl9ieV9jbGllbnRfaWQYLCABKAsyIi5ub3JkLkFjdGlvbi5DYW5jZWxPcmRlckJ5Q2xpZW50SWRIABI2Cg9leGVjdXRlX3RyaWdnZXIYLSABKAsyGy5ub3JkLkFjdGlvbi5FeGVjdXRlVHJpZ2dlckgAEj8KFHNldF9iYWNrc3RvcF9hY2NvdW50GC4gASgLMh8ubm9yZC5BY3Rpb24uU2V0QmFja3N0b3BBY2NvdW50SAASMAoMZWRpdF90cmlnZ2VyGC8gASgLMhgubm9yZC5BY3Rpb24uRWRpdFRyaWdnZXJIABIeCgZhdG9taWMYMCABKAsyDC5ub3JkLkF0b21pY0gAEigKBWFkbWluGDEgASgLMhcubm9yZC5TdGFnZWRBZG1pbkFjdGlvbkgAEjAKDGNsZWFyX21hcmtldBgyIAEoCzIYLm5vcmQuQWN0aW9uLkNsZWFyTWFya2V0SAASMgoRdmF1bHRfc3luY19lcG9jaHMYNSABKAsyFS5ub3JkLlZhdWx0U3luY0Vwb2Noc0gAEisKDXZhdWx0X2RlcG9zaXQYNiABKAsyEi5ub3JkLlZhdWx0RGVwb3NpdEgAEi0KDnZhdWx0X3dpdGhkcmF3GDcgASgLMhMubm9yZC5WYXVsdFdpdGhkcmF3SAASUQoecHl0aF9sYXplcl9zZXRfdHJ1c3RlZF9zaWduZXJzGDkgASgLMicubm9yZC5BY3Rpb24uUHl0aExhemVyU2V0VHJ1c3RlZFNpZ25lcnNIABJJChpweXRoX2xhemVyX3NldF9mZWVkX3N5bWJvbBg6IAEoCzIjLm5vcmQuQWN0aW9uLlB5dGhMYXplclNldEZlZWRTeW1ib2xIABJNChxweXRoX2xhemVyX3ByaWNlX2ZlZWRfdXBkYXRlGDsgASgLMiUubm9yZC5BY3Rpb24uUHl0aExhemVyUHJpY2VGZWVkVXBkYXRlSAASNgoPcmVmcmVzaF9zZXNzaW9uGDwgASgLMhsubm9yZC5BY3Rpb24uUmVmcmVzaFNlc3Npb25IABI9ChNzZWxmX3Jldm9rZV9zZXNzaW9uGD0gASgLMh4ubm9yZC5BY3Rpb24uU2VsZlJldm9rZVNlc3Npb25IABrjAQoNQ3JlYXRlU2Vzc2lvbhITCgt1c2VyX3B1YmtleRgBIAEoDBIWCg5zZXNzaW9uX3B1YmtleRgCIAEoDBIYChBleHBpcnlfdGltZXN0YW1wGAMgASgDEkEKEXNpZ25hdHVyZV9mcmFtaW5nGAQgASgOMiEubm9yZC5BY3Rpb24uVXNlclNpZ25hdHVyZUZyYW1pbmdIAIgBARIdChByZWZyZXNoX2RlYWRsaW5lGAUgASgDSAGIAQFCFAoSX3NpZ25hdHVyZV9mcmFtaW5nQhMKEV9yZWZyZXNoX2RlYWRsaW5lGosBCgtDcmVhdGVUb2tlbhIWCg50b2tlbl9kZWNpbWFscxgBIAEoDRISCgp3ZWlnaHRfYnBzGAMgASgNEhMKC3ZpZXdfc3ltYm9sGAQgASgJEhUKDW9yYWNsZV9zeW1ib2wYBSABKAkSEAoIc29sX2FkZHIYBiABKAwSEgoKYWNsX3B1YmtleRgHIAEoDBoxChxTZXRNYXJrZXRNb2RlQ0xPQlRyYWRpbmdPbmx5EhEKCW1hcmtldF9pZBgBIAEoDRouChlTZXRNYXJrZXRNb2RlQ0xPQlBvc3RPbmx5EhEKCW1hcmtldF9pZBgBIAEoDRomChFTZXRNYXJrZXRNb2RlQ0xPQhIRCgltYXJrZXRfaWQYASABKA0a7gEKDENyZWF0ZU1hcmtldBIVCg1zaXplX2RlY2ltYWxzGAEgASgNEhYKDnByaWNlX2RlY2ltYWxzGAIgASgNEg8KB2ltZl9icHMYAyABKA0SDwoHY21mX2JwcxgEIAEoDRIPCgdtbWZfYnBzGAUgASgNEiUKC21hcmtldF90eXBlGAYgASgOMhAubm9yZC5NYXJrZXRUeXBlEhMKC3ZpZXdfc3ltYm9sGAcgASgJEhUKDW9yYWNsZV9zeW1ib2wYCCABKAkSFQoNYmFzZV90b2tlbl9pZBgJIAEoDRISCgphY2xfcHVia2V5GAogASgMGqoECgpQbGFjZU9yZGVyEhIKCnNlc3Npb25faWQYASABKAQSEQoJbWFya2V0X2lkGAIgASgNEhgKBHNpZGUYAyABKA4yCi5ub3JkLlNpZGUSIQoJZmlsbF9tb2RlGAQgASgOMg4ubm9yZC5GaWxsTW9kZRIWCg5pc19yZWR1Y2Vfb25seRgFIAEoCBINCgVwcmljZRgGIAEoBBIMCgRzaXplGAcgASgEEh4KCnF1b3RlX3NpemUYCCABKAsyCi5ub3JkLlUxMjgSIQoUZGVsZWdhdG9yX2FjY291bnRfaWQYICABKA1IAIgBARIcCg9jbGllbnRfb3JkZXJfaWQYISABKARIAYgBARIeChFzZW5kZXJfYWNjb3VudF9pZBgiIAEoDUgCiAEBEh8KEnNlbmRlcl90cmFja2luZ19pZBgjIAEoBEgDiAEBEj0KFXNlbGZfdHJhZGVfcHJldmVudGlvbhgkIAEoDjIZLm5vcmQuU2VsZlRyYWRlUHJldmVudGlvbkgEiAEBEiEKCHJlZmVycmVyGCUgASgLMgoubm9yZC5VMTI4SAWIAQFCFwoVX2RlbGVnYXRvcl9hY2NvdW50X2lkQhIKEF9jbGllbnRfb3JkZXJfaWRCFAoSX3NlbmRlcl9hY2NvdW50X2lkQhUKE19zZW5kZXJfdHJhY2tpbmdfaWRCGAoWX3NlbGZfdHJhZGVfcHJldmVudGlvbkILCglfcmVmZXJyZXIaqQEKD0NhbmNlbE9yZGVyQnlJZBISCgpzZXNzaW9uX2lkGAEgASgEEhAKCG9yZGVyX2lkGAIgASgEEiEKFGRlbGVnYXRvcl9hY2NvdW50X2lkGCAgASgNSACIAQESHgoRc2VuZGVyX2FjY291bnRfaWQYISABKA1IAYgBAUIXChVfZGVsZWdhdG9yX2FjY291bnRfaWRCFAoSX3NlbmRlcl9hY2NvdW50X2lkGnoKFUNhbmNlbE9yZGVyQnlDbGllbnRJZBISCgpzZXNzaW9uX2lkGAEgASgEEhcKD2NsaWVudF9vcmRlcl9pZBgCIAEoBBIeChFzZW5kZXJfYWNjb3VudF9pZBgDIAEoDUgAiAEBQhQKEl9zZW5kZXJfYWNjb3VudF9pZBpvCgdEZXBvc2l0EhQKDGFjdGlvbl9ub25jZRgBIAEoBBISCgp0b2tlbl9hZGRyGAIgASgMEg4KBmFtb3VudBgDIAEoBBITCgt1c2VyX3B1YmtleRgEIAEoDBIVCg1zZW5kZXJfcHVia2V5GAUgASgMGmoKCFdpdGhkcmF3EhAKCHRva2VuX2lkGAEgASgNEhIKCnNlc3Npb25faWQYAiABKAQSDgoGYW1vdW50GAMgASgEEhgKC2Rlc3RfcHVia2V5GAQgASgMSACIAQFCDgoMX2Rlc3RfcHVia2V5Gl0KGFB5dGhTZXRXb3JtaG9sZUd1YXJkaWFucxIaChJndWFyZGlhbl9zZXRfaW5kZXgYASABKA0SEQoJYWRkcmVzc2VzGAIgAygMEhIKCmFjbF9wdWJrZXkYAyABKAwaVQoRUHl0aFNldFN5bWJvbEZlZWQSFQoNb3JhY2xlX3N5bWJvbBgBIAEoCRIVCg1wcmljZV9mZWVkX2lkGAIgASgMEhIKCmFjbF9wdWJrZXkYAyABKAwaLwoTUHl0aFByaWNlRmVlZFVwZGF0ZRIYChByYXdfcHl0aG5ldF9kYXRhGAEgASgMGlIKGFB5dGhMYXplclByaWNlRmVlZFVwZGF0ZRIPCgdwYXlsb2FkGAEgASgMEhEKCXNpZ25hdHVyZRgCIAEoDBISCgpwdWJsaWNfa2V5GAMgASgMGmcKGlB5dGhMYXplclNldFRydXN0ZWRTaWduZXJzEhIKCmFjbF9wdWJrZXkYASABKAwSNQoPdHJ1c3RlZF9zaWduZXJzGAIgAygLMhwubm9yZC5QeXRoTGF6ZXJUcnVzdGVkU2lnbmVyGqsBChZQeXRoTGF6ZXJTZXRGZWVkU3ltYm9sEhIKCmFjbF9wdWJrZXkYASABKAwSQgoFZmVlZHMYAiADKAsyMy5ub3JkLkFjdGlvbi5QeXRoTGF6ZXJTZXRGZWVkU3ltYm9sLkZlZWRTeW1ib2xJbnB1dBo5Cg9GZWVkU3ltYm9sSW5wdXQSDwoHZmVlZF9pZBgBIAEoDRIVCg1vcmFjbGVfc3ltYm9sGAIgASgJGiMKDVJldm9rZVNlc3Npb24SEgoKc2Vzc2lvbl9pZBgBIAEoBBo0Cg5SZWZyZXNoU2Vzc2lvbhISCgpzZXNzaW9uX2lkGAEgASgEEg4KBmV4cGlyeRgCIAEoAxonChFTZWxmUmV2b2tlU2Vzc2lvbhISCgpzZXNzaW9uX2lkGAEgASgEGhsKBVBhdXNlEhIKCmFjbF9wdWJrZXkYASABKAwaHQoHVW5wYXVzZRISCgphY2xfcHVia2V5GAEgASgMGjwKElNldEJhY2tzdG9wQWNjb3VudBISCgphY2xfcHVia2V5GAEgASgMEhIKCmFjY291bnRfaWQYAiABKA0a+QEKCVJlY2lwaWVudBIxCgdzcGVjaWFsGAEgASgLMh4ubm9yZC5BY3Rpb24uUmVjaXBpZW50LlNwZWNpYWxIABItCgVvd25lZBgCIAEoCzIcLm5vcmQuQWN0aW9uLlJlY2lwaWVudC5Pd25lZEgAEjEKB3Vub3duZWQYAyABKAsyHi5ub3JkLkFjdGlvbi5SZWNpcGllbnQuVW5vd25lZEgAGgkKB1NwZWNpYWwaGwoFT3duZWQSEgoKYWNjb3VudF9pZBgBIAEoDRodCgdVbm93bmVkEhIKCmFjY291bnRfaWQYASABKA1CEAoOcmVjaXBpZW50X3R5cGUanwEKCFRyYW5zZmVyEhIKCnNlc3Npb25faWQYASABKAQSFwoPZnJvbV9hY2NvdW50X2lkGAIgASgNEhAKCHRva2VuX2lkGAMgASgNEg4KBmFtb3VudBgEIAEoBBIyCg10b19hY2NvdW50X2lkGAggASgLMhYubm9yZC5BY3Rpb24uUmVjaXBpZW50SACIAQFCEAoOX3RvX2FjY291bnRfaWQaWwoQRmVlVmF1bHRUcmFuc2ZlchISCgphY2xfcHVia2V5GAEgASgMEhEKCXJlY2lwaWVudBgCIAEoDRIQCgh0b2tlbl9pZBgDIAEoDRIOCgZhbW91bnQYBCABKAQavAEKCkFkZFRyaWdnZXISEgoKc2Vzc2lvbl9pZBgBIAEoBBIkCgd0cmlnZ2VyGAIgASgLMhMubm9yZC5UcmlnZ2VyUmVjb3JkEhwKBmludGVudBgDIAEoDjIMLm5vcmQuSW50ZW50EhcKCmFjY291bnRfaWQYCiABKA1IAIgBARIhCghyZWZlcnJlchgLIAEoCzIKLm5vcmQuVTEyOEgBiAEBQg0KC19hY2NvdW50X2lkQgsKCV9yZWZlcnJlchqHAQoLRWRpdFRyaWdnZXISEgoKc2Vzc2lvbl9pZBgBIAEoBBISCgp0cmlnZ2VyX2lkGAIgASgEEigKC25ld190cmlnZ2VyGAMgASgLMhMubm9yZC5UcmlnZ2VyUmVjb3JkEhcKCmFjY291bnRfaWQYCiABKA1IAIgBAUINCgtfYWNjb3VudF9pZBpyCg1SZW1vdmVUcmlnZ2VyEhIKCnNlc3Npb25faWQYASABKAQSEQoJbWFya2V0X2lkGAIgASgNEhIKCnRyaWdnZXJfaWQYAyABKAQSFwoKYWNjb3VudF9pZBgKIAEoDUgAiAEBQg0KC19hY2NvdW50X2lkGkUKCkFkZEZlZVRpZXISEgoKYWNsX3B1YmtleRgBIAEoDBIjCgZjb25maWcYAiABKAsyEy5ub3JkLkZlZVRpZXJDb25maWcaVAoNVXBkYXRlRmVlVGllchIKCgJpZBgBIAEoDRIjCgZjb25maWcYAiABKAsyEy5ub3JkLkZlZVRpZXJDb25maWcSEgoKYWNsX3B1YmtleRgDIAEoDBpLChJVcGRhdGVBY2NvdW50c1RpZXISDwoHdGllcl9pZBgBIAEoDRIQCghhY2NvdW50cxgCIAMoDRISCgphY2xfcHVia2V5GAMgASgMGl8KCVVwZGF0ZUFjbBISCgphY2xfcHVia2V5GAEgASgMEhUKDXRhcmdldF9wdWJrZXkYAiABKAwSEgoKcm9sZXNfbWFzaxgDIAEoDRITCgtyb2xlc192YWx1ZRgEIAEoDRo1CgxGcmVlemVNYXJrZXQSEgoKYWNsX3B1YmtleRgBIAEoDBIRCgltYXJrZXRfaWQYAiABKA0aNwoOVW5mcmVlemVNYXJrZXQSEgoKYWNsX3B1YmtleRgBIAEoDBIRCgltYXJrZXRfaWQYAiABKA0aTQoLQ2xlYXJNYXJrZXQSEgoKYWNsX3B1YmtleRgBIAEoDBIRCgltYXJrZXRfaWQYAiABKA0SFwoPY2xlYXJhbmNlX3ByaWNlGAMgASgEGmEKDkV4ZWN1dGVUcmlnZ2VyEhQKDGV4ZWN1dG9yX3NpZBgBIAEoBBISCgphY2NvdW50X2lkGAIgASgNEhEKCW1hcmtldF9pZBgDIAEoDRISCgp0cmlnZ2VyX2lkGAQgASgEGkEKEFRha2VBbGxQb3NpdGlvbnMSEgoKc2Vzc2lvbl9pZBgBIAEoBBIZChF0YXJnZXRfYWNjb3VudF9pZBgCIAEoDSI3ChRVc2VyU2lnbmF0dXJlRnJhbWluZxIHCgNIRVgQABIWChJTT0xBTkFfVFJBTlNBQ1RJT04QAUIGCgRraW5kIstCCgdSZWNlaXB0EhEKCWFjdGlvbl9pZBgBIAEoBBIaCgNlcnIYICABKA4yCy5ub3JkLkVycm9ySAASQgoVY3JlYXRlX3Nlc3Npb25fcmVzdWx0GCEgASgLMiEubm9yZC5SZWNlaXB0LkNyZWF0ZVNlc3Npb25SZXN1bHRIABI4Cg50cmFkZV9vcl9wbGFjZRgiIAEoCzIeLm5vcmQuUmVjZWlwdC5QbGFjZU9yZGVyUmVzdWx0SAASPgoTY2FuY2VsX29yZGVyX3Jlc3VsdBgjIAEoCzIfLm5vcmQuUmVjZWlwdC5DYW5jZWxPcmRlclJlc3VsdEgAEjUKDmRlcG9zaXRfcmVzdWx0GCQgASgLMhsubm9yZC5SZWNlaXB0LkRlcG9zaXRSZXN1bHRIABI+ChNpbnNlcnRfdG9rZW5fcmVzdWx0GCUgASgLMh8ubm9yZC5SZWNlaXB0Lkluc2VydFRva2VuUmVzdWx0SAASQAoUaW5zZXJ0X21hcmtldF9yZXN1bHQYJiABKAsyIC5ub3JkLlJlY2VpcHQuSW5zZXJ0TWFya2V0UmVzdWx0SAASNwoPd2l0aGRyYXdfcmVzdWx0GCcgASgLMhwubm9yZC5SZWNlaXB0LldpdGhkcmF3UmVzdWx0SAASSQoZb3JhY2xlX3N5bWJvbF9mZWVkX3Jlc3VsdBgoIAEoCzIkLm5vcmQuUmVjZWlwdC5PcmFjbGVTeW1ib2xGZWVkUmVzdWx0SAASQAoUb3JhY2xlX3VwZGF0ZV9yZXN1bHQYKSABKAsyIC5ub3JkLlJlY2VpcHQuT3JhY2xlVXBkYXRlUmVzdWx0SAASSwoadXBkYXRlX2d1YXJkaWFuX3NldF9yZXN1bHQYKiABKAsyJS5ub3JkLlJlY2VpcHQuVXBkYXRlR3VhcmRpYW5TZXRSZXN1bHRIABI3Cg9zZXNzaW9uX3Jldm9rZWQYLCABKAsyHC5ub3JkLlJlY2VpcHQuU2Vzc2lvblJldm9rZWRIABImCgZwYXVzZWQYLSABKAsyFC5ub3JkLlJlY2VpcHQuUGF1c2VkSAASKgoIdW5wYXVzZWQYLiABKAsyFi5ub3JkLlJlY2VpcHQuVW5wYXVzZWRIABIwCgt0cmFuc2ZlcnJlZBgvIAEoCzIZLm5vcmQuUmVjZWlwdC5UcmFuc2ZlcnJlZEgAEjMKDXRyaWdnZXJfYWRkZWQYQCABKAsyGi5ub3JkLlJlY2VpcHQuVHJpZ2dlckFkZGVkSAASNwoPdHJpZ2dlcl9yZW1vdmVkGEEgASgLMhwubm9yZC5SZWNlaXB0LlRyaWdnZXJSZW1vdmVkSAASLAoGYXRvbWljGEMgASgLMhoubm9yZC5SZWNlaXB0LkF0b21pY1Jlc3VsdEgAEkIKFW1hcmtldF9mcmVlemVfdXBkYXRlZBhEIAEoCzIhLm5vcmQuUmVjZWlwdC5NYXJrZXRGcmVlemVVcGRhdGVkSAASNAoOZmVlX3RpZXJfYWRkZWQYRSABKAsyGi5ub3JkLlJlY2VpcHQuRmVlVGllckFkZGVkSAASOAoQZmVlX3RpZXJfdXBkYXRlZBhGIAEoCzIcLm5vcmQuUmVjZWlwdC5GZWVUaWVyVXBkYXRlZEgAEkIKFWFjY291bnRzX3RpZXJfdXBkYXRlZBhHIAEoCzIhLm5vcmQuUmVjZWlwdC5BY2NvdW50c1RpZXJVcGRhdGVkSAASLwoLYWNsX3VwZGF0ZWQYSCABKAsyGC5ub3JkLlJlY2VpcHQuQWNsVXBkYXRlZEgAEkIKFWZlZV92YXVsdF90cmFuc2ZlcnJlZBhJIAEoCzIhLm5vcmQuUmVjZWlwdC5GZWVWYXVsdFRyYW5zZmVycmVkSAASOQoQdHJpZ2dlcl9leGVjdXRlZBhKIAEoCzIdLm5vcmQuUmVjZWlwdC5UcmlnZ2VyRXhlY3V0ZWRIABJJChl0YWtlX2FsbF9wb3NpdGlvbnNfcmVzdWx0GEsgASgLMiQubm9yZC5SZWNlaXB0LlRha2VBbGxQb3NpdGlvbnNSZXN1bHRIABJAChRiYWNrc3RvcF9hY2NvdW50X3NldBhMIAEoCzIgLm5vcmQuUmVjZWlwdC5CYWNrc3RvcEFjY291bnRTZXRIABI1Cg50cmlnZ2VyX2VkaXRlZBhNIAEoCzIbLm5vcmQuUmVjZWlwdC5UcmlnZ2VyRWRpdGVkSAASMQoNdmF1bHRfY3JlYXRlZBhOIAEoCzIYLm5vcmQuQ3JlYXRlVmF1bHRSZWNlaXB0SAASPgoUdmF1bHRfY29uZmlnX3VwZGF0ZWQYTyABKAsyHi5ub3JkLlVwZGF0ZVZhdWx0Q29uZmlnUmVjZWlwdEgAEj0KFXZhdWx0X21hbmFnZXJfdXBkYXRlZBhQIAEoCzIcLm5vcmQuU2V0VmF1bHRNYW5hZ2VyUmVjZWlwdEgAEjsKE3ZhdWx0X2Vwb2Noc19zeW5jZWQYUSABKAsyHC5ub3JkLlZhdWx0U3luY0Vwb2Noc1JlY2VpcHRIABI0Cg92YXVsdF9kZXBvc2l0ZWQYUiABKAsyGS5ub3JkLlZhdWx0RGVwb3NpdFJlY2VpcHRIABI1Cg92YXVsdF93aXRoZHJhd24YUyABKAsyGi5ub3JkLlZhdWx0V2l0aGRyYXdSZWNlaXB0SAASPgoTY2xlYXJfbWFya2V0X3Jlc3VsdBhUIAEoCzIfLm5vcmQuUmVjZWlwdC5DbGVhck1hcmtldFJlc3VsdEgAElQKH3B5dGhfbGF6ZXJfb3JhY2xlX3VwZGF0ZV9yZXN1bHQYVSABKAsyKS5ub3JkLlJlY2VpcHQuUHl0aExhemVyT3JhY2xlVXBkYXRlUmVzdWx0SAASXwolcHl0aF9sYXplcl90cnVzdGVkX3NpZ25lcnNfc2V0X3Jlc3VsdBhWIAEoCzIuLm5vcmQuUmVjZWlwdC5QeXRoTGF6ZXJUcnVzdGVkU2lnbmVyc1NldFJlc3VsdEgAElcKIXB5dGhfbGF6ZXJfZmVlZF9zeW1ib2xfc2V0X3Jlc3VsdBhXIAEoCzIqLm5vcmQuUmVjZWlwdC5QeXRoTGF6ZXJGZWVkU3ltYm9sU2V0UmVzdWx0SAASVQofcmVkdWNlX29yZGVyX2xpcXVpZGF0aW9uX3Jlc3VsdBhYIAEoCzIqLm5vcmQuUmVjZWlwdC5SZWR1Y2VPcmRlckxpcXVpZGF0aW9uUmVzdWx0SAASPgoTbWFya2V0X21vZGVfdXBkYXRlZBhZIAEoCzIfLm5vcmQuUmVjZWlwdC5NYXJrZXRNb2RlVXBkYXRlZEgAEiwKDnJmcV9tYWtlcnNfc2V0GFogASgLMhIubm9yZC5SZnFNYWtlcnNTZXRIABI7ChFzZXNzaW9uX3JlZnJlc2hlZBhbIAEoCzIeLm5vcmQuUmVjZWlwdC5TZXNzaW9uUmVmcmVzaGVkSAASQAoUc2VsZl9zZXNzaW9uX3Jldm9rZWQYXCABKAsyIC5ub3JkLlJlY2VpcHQuU2VsZlNlc3Npb25SZXZva2VkSAAaeAoGUG9zdGVkEhgKBHNpZGUYASABKA4yCi5ub3JkLlNpZGUSEQoJbWFya2V0X2lkGAIgASgNEg0KBXByaWNlGAMgASgEEgwKBHNpemUYBCABKAQSEAoIb3JkZXJfaWQYBSABKAQSEgoKYWNjb3VudF9pZBgGIAEoDRpwCgVUcmFkZRIQCghvcmRlcl9pZBgCIAEoBBINCgVwcmljZRgEIAEoBBIMCgRzaXplGAUgASgEEhIKCmFjY291bnRfaWQYBiABKA0SEQoJbWFrZXJfZmVlGAcgASgEEhEKCXRha2VyX2ZlZRgIIAEoBBptChNDcmVhdGVTZXNzaW9uUmVzdWx0EhIKCnNlc3Npb25faWQYASABKAQSDgoGZXhwaXJ5GAIgASgDEh0KEHJlZnJlc2hfZGVhZGxpbmUYAyABKANIAIgBAUITChFfcmVmcmVzaF9kZWFkbGluZRpMChBDYW5jZWxsZWRUcmlnZ2VyEhIKCmFjY291bnRfaWQYASABKA0SJAoHdHJpZ2dlchgCIAEoCzITLm5vcmQuVHJpZ2dlclJlY29yZBraAQoLT3JkZXJVcGRhdGUSMAoGcmVhc29uGAEgASgOMiAubm9yZC5SZWNlaXB0Lk9yZGVyVXBkYXRlLlJlYXNvbhISCgphY2NvdW50X2lkGAIgASgNEhAKCG9yZGVyX2lkGAMgASgEEhYKDnJlbWFpbmluZ19zaXplGAQgASgEEhYKDmNhbmNlbGxlZF9zaXplGAUgASgEEg0KBXByaWNlGAYgASgEIjQKBlJlYXNvbhIPCgtSRURVQ0VfT05MWRAAEhkKFVNFTEZfVFJBREVfUFJFVkVOVElPThABGvcCChBQbGFjZU9yZGVyUmVzdWx0EikKBnBvc3RlZBgBIAEoCzIULm5vcmQuUmVjZWlwdC5Qb3N0ZWRIAIgBARIiCgVmaWxscxgCIAMoCzITLm5vcmQuUmVjZWlwdC5UcmFkZRIcCg9jbGllbnRfb3JkZXJfaWQYAyABKARIAYgBARIfChJzZW5kZXJfdHJhY2tpbmdfaWQYBCABKARIAogBARI6ChJjYW5jZWxsZWRfdHJpZ2dlcnMYBSADKAsyHi5ub3JkLlJlY2VpcHQuQ2FuY2VsbGVkVHJpZ2dlchIwCg1vcmRlcl91cGRhdGVzGAYgAygLMhkubm9yZC5SZWNlaXB0Lk9yZGVyVXBkYXRlEjEKCXBsYWNlbWVudBgHIAEoCzIeLm5vcmQuUmVjZWlwdC5QbGFjZW1lbnRSZWNlaXB0QgkKB19wb3N0ZWRCEgoQX2NsaWVudF9vcmRlcl9pZEIVChNfc2VuZGVyX3RyYWNraW5nX2lkGnoKHFJlZHVjZU9yZGVyTGlxdWlkYXRpb25SZXN1bHQSNgoOdHJhZGVfb3JfcGxhY2UYASABKAsyHi5ub3JkLlJlY2VpcHQuUGxhY2VPcmRlclJlc3VsdBIiCgZhY3Rpb24YAiABKAsyEi5ub3JkLlRyYWRlT3JQbGFjZRqvAQoQUGxhY2VtZW50UmVjZWlwdBIhCgRyb2xlGAEgASgOMhMubm9yZC5QbGFjZW1lbnRSb2xlEjgKB2FjY291bnQYAiABKAsyJS5ub3JkLlJlY2VpcHQuQWNjb3VudFBsYWNlbWVudFJlY2VpcHRIABI0CgV2YXVsdBgDIAEoCzIjLm5vcmQuUmVjZWlwdC5WYXVsdFBsYWNlbWVudFJlY2VpcHRIAEIICgZ0YXJnZXQaGQoXQWNjb3VudFBsYWNlbWVudFJlY2VpcHQaTAoVVmF1bHRQbGFjZW1lbnRSZWNlaXB0EhAKCHZhdWx0X2lkGAEgASgNEiEKBmhlYWx0aBgCIAEoCzIRLm5vcmQuVmF1bHRIZWFsdGga/gEKD1RyaWdnZXJFeGVjdXRlZBITCgtleGVjdXRvcl9pZBgBIAEoDRISCgphY2NvdW50X2lkGAIgASgNEhEKCW1hcmtldF9pZBgDIAEoDRIeCgd0cmlnZ2VyGAQgASgLMg0ubm9yZC5UcmlnZ2VyEhIKCnRyaWdnZXJfaWQYCCABKAQSMQoHc3VjY2VzcxgFIAEoCzIeLm5vcmQuUmVjZWlwdC5QbGFjZU9yZGVyUmVzdWx0SAASKQoHZmFpbHVyZRgGIAEoDjIWLm5vcmQuVHJpZ2dlckV4ZWNFcnJvckgAEhMKCWNhbmNlbGxlZBgHIAEoCEgAQggKBnN0YXR1cxoyCg5UYWtlQWxsQmFsYW5jZRIQCgh0b2tlbl9pZBgBIAEoDRIOCgZhbW91bnQYAiABKAQadwoPVGFrZUFsbFBvc2l0aW9uEhEKCW1hcmtldF9pZBgBIAEoDRIRCgliYXNlX3NpemUYAiABKAMSGAoQc2V0dGxlbWVudF9wcmljZRgDIAEoBBIkChBiYW5rcnVwdGN5X3F1b3RlGAQgASgLMgoubm9yZC5VMTI4GlMKE1Rha2VBbGxPcmRlclVwZGF0ZXMSEQoJbWFya2V0X2lkGAEgASgNEikKBm9yZGVycxgCIAMoCzIZLm5vcmQuUmVjZWlwdC5PcmRlclVwZGF0ZRraAQoWVGFrZUFsbFBvc2l0aW9uc1Jlc3VsdBIYChB0YWtlcl9hY2NvdW50X2lkGAEgASgNEjQKDnRha2VuX2JhbGFuY2VzGAMgAygLMhwubm9yZC5SZWNlaXB0LlRha2VBbGxCYWxhbmNlEjYKD3Rha2VuX3Bvc2l0aW9ucxgEIAMoCzIdLm5vcmQuUmVjZWlwdC5UYWtlQWxsUG9zaXRpb24SOAoNb3JkZXJfdXBkYXRlcxgFIAMoCzIhLm5vcmQuUmVjZWlwdC5UYWtlQWxsT3JkZXJVcGRhdGVzGnMKGUNsZWFyTWFya2V0Q2FuY2VsbGVkT3JkZXISEgoKYWNjb3VudF9pZBgBIAEoDRIQCghvcmRlcl9pZBgCIAEoBBIcCg9jbGllbnRfb3JkZXJfaWQYAyABKARIAIgBAUISChBfY2xpZW50X29yZGVyX2lkGq0BChlDbGVhck1hcmtldENsb3NlZFBvc2l0aW9uEhIKCmFjY291bnRfaWQYASABKA0SEQoJYmFzZV9zaXplGAIgASgDEhgKEHNldHRsZW1lbnRfcHJpY2UYAyABKAQSGQoFcXVvdGUYBCABKAsyCi5ub3JkLlUxMjgSGQoRdHJhZGluZ19wbmxfZGVsdGEYBSABKAMSGQoRZnVuZGluZ19wbmxfZGVsdGEYBiABKAMaxQEKEUNsZWFyTWFya2V0UmVzdWx0EhEKCW1hcmtldF9pZBgBIAEoDRIXCg9jbGVhcmFuY2VfcHJpY2UYBSABKAQSQQoQY2FuY2VsbGVkX29yZGVycxgDIAMoCzInLm5vcmQuUmVjZWlwdC5DbGVhck1hcmtldENhbmNlbGxlZE9yZGVyEkEKEGNsb3NlZF9wb3NpdGlvbnMYBCADKAsyJy5ub3JkLlJlY2VpcHQuQ2xlYXJNYXJrZXRDbG9zZWRQb3NpdGlvbhqeAQoRQ2FuY2VsT3JkZXJSZXN1bHQSEAoIb3JkZXJfaWQYASABKAQSEgoKYWNjb3VudF9pZBgCIAEoDRIcCg9jbGllbnRfb3JkZXJfaWQYAyABKARIAIgBARIxCglwbGFjZW1lbnQYBCABKAsyHi5ub3JkLlJlY2VpcHQuUGxhY2VtZW50UmVjZWlwdEISChBfY2xpZW50X29yZGVyX2lkGnAKDURlcG9zaXRSZXN1bHQSEAoIdG9rZW5faWQYASABKA0SDgoGYW1vdW50GAIgASgEEhIKCmFjY291bnRfaWQYAyABKA0SFAoMdXNlcl9jcmVhdGVkGAQgASgIEhMKC3VzZXJfcHVia2V5GAUgASgMGkMKEUluc2VydFRva2VuUmVzdWx0EhIKCmNoYWluX2FkZHIYASABKAwSGgoFdG9rZW4YAiABKAsyCy5ub3JkLlRva2VuGjIKEkluc2VydE1hcmtldFJlc3VsdBIcCgZtYXJrZXQYASABKAsyDC5ub3JkLk1hcmtldBp5Cg5XaXRoZHJhd1Jlc3VsdBIQCgh0b2tlbl9pZBgBIAEoDRIOCgZhbW91bnQYAiABKAQSDwoHYmFsYW5jZRgDIAEoBBISCgphY2NvdW50X2lkGAQgASgNEgsKA2ZlZRgFIAEoBBITCgt1c2VyX3B1YmtleRgGIAEoDBpAChZPcmFjbGVTeW1ib2xGZWVkUmVzdWx0EhUKDW9yYWNsZV9zeW1ib2wYASABKAkSDwoHZmVlZF9pZBgCIAEoDBonChJPcmFjbGVVcGRhdGVSZXN1bHQSEQoJdGltZXN0YW1wGAEgASgDGjcKG1B5dGhMYXplck9yYWNsZVVwZGF0ZVJlc3VsdBIYChB0aW1lc3RhbXBfbWlsbGlzGAEgASgEGlkKIFB5dGhMYXplclRydXN0ZWRTaWduZXJzU2V0UmVzdWx0EjUKD3RydXN0ZWRfc2lnbmVycxgBIAMoCzIcLm5vcmQuUHl0aExhemVyVHJ1c3RlZFNpZ25lchqaAQocUHl0aExhemVyRmVlZFN5bWJvbFNldFJlc3VsdBJECgVmZWVkcxgBIAMoCzI1Lm5vcmQuUmVjZWlwdC5QeXRoTGF6ZXJGZWVkU3ltYm9sU2V0UmVzdWx0LkZlZWRTeW1ib2waNAoKRmVlZFN5bWJvbBIPCgdmZWVkX2lkGAEgASgNEhUKDW9yYWNsZV9zeW1ib2wYAiABKAkaSAoXVXBkYXRlR3VhcmRpYW5TZXRSZXN1bHQSGgoSZ3VhcmRpYW5fc2V0X2luZGV4GAEgASgNEhEKCWFkZHJlc3NlcxgCIAMoDBpDCgxQZXJwUG9zaXRpb24SEQoJbWFya2V0X2lkGAEgASgNEhEKCWJhc2Vfc2l6ZRgCIAEoAxINCgVwcmljZRgDIAEoBBoQCg5TZXNzaW9uUmV2b2tlZBoUChJTZWxmU2Vzc2lvblJldm9rZWQaNgoQU2Vzc2lvblJlZnJlc2hlZBISCgpzZXNzaW9uX2lkGAEgASgEEg4KBmV4cGlyeRgCIAEoAxoICgZQYXVzZWQaCgoIVW5wYXVzZWQaKAoSQmFja3N0b3BBY2NvdW50U2V0EhIKCmFjY291bnRfaWQYASABKA0a/AEKCVJlY2lwaWVudBIyCgdzcGVjaWFsGAEgASgLMh8ubm9yZC5SZWNlaXB0LlJlY2lwaWVudC5TcGVjaWFsSAASLgoFb3duZWQYAiABKAsyHS5ub3JkLlJlY2VpcHQuUmVjaXBpZW50Lk93bmVkSAASMgoHdW5vd25lZBgDIAEoCzIfLm5vcmQuUmVjZWlwdC5SZWNpcGllbnQuVW5vd25lZEgAGgkKB1NwZWNpYWwaGwoFT3duZWQSEgoKYWNjb3VudF9pZBgBIAEoDRodCgdVbm93bmVkEhIKCmFjY291bnRfaWQYASABKA1CEAoOcmVjaXBpZW50X3R5cGUaowEKC1RyYW5zZmVycmVkEhcKD2Zyb21fYWNjb3VudF9pZBgBIAEoDRIrCgp0b19hY2NvdW50GAIgASgLMhcubm9yZC5SZWNlaXB0LlJlY2lwaWVudBIQCgh0b2tlbl9pZBgDIAEoDRIOCgZhbW91bnQYBCABKAQSFwoPYWNjb3VudF9jcmVhdGVkGAUgASgIEhMKC3VzZXJfcHVia2V5GAYgASgMGkoKE0ZlZVZhdWx0VHJhbnNmZXJyZWQSEQoJcmVjaXBpZW50GAEgASgNEhAKCHRva2VuX2lkGAIgASgNEg4KBmFtb3VudBgDIAEoBBp6CgxUcmlnZ2VyQWRkZWQSEgoKYWNjb3VudF9pZBgBIAEoDRISCgp0cmlnZ2VyX2lkGAIgASgEEiQKB3RyaWdnZXIYAyABKAsyEy5ub3JkLlRyaWdnZXJSZWNvcmQSHAoGaW50ZW50GAQgASgOMgwubm9yZC5JbnRlbnQafAoOVHJpZ2dlclJlbW92ZWQSEgoKYWNjb3VudF9pZBgBIAEoDRISCgp0cmlnZ2VyX2lkGAIgASgEEiQKB3RyaWdnZXIYAyABKAsyEy5ub3JkLlRyaWdnZXJSZWNvcmQSHAoGaW50ZW50GAQgASgOMgwubm9yZC5JbnRlbnQagAEKDVRyaWdnZXJFZGl0ZWQSEgoKYWNjb3VudF9pZBgBIAEoDRISCgp0cmlnZ2VyX2lkGAIgASgEEicKEHByZXZpb3VzX3RyaWdnZXIYAyABKAsyDS5ub3JkLlRyaWdnZXISHgoHdHJpZ2dlchgEIAEoCzINLm5vcmQuVHJpZ2dlcho4ChNNYXJrZXRGcmVlemVVcGRhdGVkEhEKCW1hcmtldF9pZBgBIAEoDRIOCgZmcm96ZW4YAiABKAgakAEKEU1hcmtldE1vZGVVcGRhdGVkEhEKCW1hcmtldF9pZBgBIAEoDRIlCgttYXJrZXRfbW9kZRgCIAEoDjIQLm5vcmQuTWFya2V0TW9kZRJBChBjYW5jZWxsZWRfb3JkZXJzGAMgAygLMicubm9yZC5SZWNlaXB0LkNsZWFyTWFya2V0Q2FuY2VsbGVkT3JkZXIaPwoMRmVlVGllckFkZGVkEiMKBmNvbmZpZxgBIAEoCzITLm5vcmQuRmVlVGllckNvbmZpZxIKCgJpZBgCIAEoDRpBCg5GZWVUaWVyVXBkYXRlZBIKCgJpZBgBIAEoDRIjCgZjb25maWcYAiABKAsyEy5ub3JkLkZlZVRpZXJDb25maWcaOAoTQWNjb3VudHNUaWVyVXBkYXRlZBIPCgd0aWVyX2lkGAEgASgNEhAKCGFjY291bnRzGAIgAygNGmAKCkFjbFVwZGF0ZWQSEgoKYWNsX3B1YmtleRgBIAEoDBISCgpyb2xlc19tYXNrGAIgASgEEhUKDXRhcmdldF9wdWJrZXkYAyABKAwSEwoLcm9sZXNfdmFsdWUYBCABKAQa7AMKGUF0b21pY1N1YmFjdGlvblJlc3VsdEtpbmQSPAoScGxhY2Vfb3JkZXJfcmVzdWx0GAEgASgLMh4ubm9yZC5SZWNlaXB0LlBsYWNlT3JkZXJSZXN1bHRIABI3CgxjYW5jZWxfb3JkZXIYAiABKAsyHy5ub3JkLlJlY2VpcHQuQ2FuY2VsT3JkZXJSZXN1bHRIABIzCg10cmlnZ2VyX2FkZGVkGAMgASgLMhoubm9yZC5SZWNlaXB0LlRyaWdnZXJBZGRlZEgAEjcKD3RyaWdnZXJfcmVtb3ZlZBgEIAEoCzIcLm5vcmQuUmVjZWlwdC5UcmlnZ2VyUmVtb3ZlZEgAEjUKDnRyaWdnZXJfZWRpdGVkGAUgASgLMhsubm9yZC5SZWNlaXB0LlRyaWdnZXJFZGl0ZWRIABJOChhyZWR1Y2Vfb3JkZXJfbGlxdWlkYXRpb24YBiABKAsyKi5ub3JkLlJlY2VpcHQuUmVkdWNlT3JkZXJMaXF1aWRhdGlvblJlc3VsdEgAEioKCnJmcV9yZXN1bHQYByABKAsyFC5ub3JkLlBsYWNlUkZRUmVzdWx0SAASLgoPcmZxX2ZpbGxfcmVzdWx0GAggASgLMhMubm9yZC5GaWxsUkZRUmVzdWx0SABCBwoFaW5uZXIaSAoMQXRvbWljUmVzdWx0EjgKB3Jlc3VsdHMYASADKAsyJy5ub3JkLlJlY2VpcHQuQXRvbWljU3ViYWN0aW9uUmVzdWx0S2luZEIGCgRraW5kKhgKBFNpZGUSBwoDQVNLEAASBwoDQklEEAEqHwoKTWFya2V0TW9kZRIICgRDTE9CEAASBwoDUkZREAEqYwoMTWFya2V0UmVnaW1lEhgKFE1BUktFVF9SRUdJTUVfTk9STUFMEAASGwoXTUFSS0VUX1JFR0lNRV9QT1NUX09OTFkQARIcChhNQVJLRVRfUkVHSU1FX1RSQURFX09OTFkQAipqCg1SZnFGaWxsU3RhdHVzEh0KGVJGUV9GSUxMX1NUQVRVU19DT01QTEVURUQQABIdChlSRlFfRklMTF9TVEFUVVNfVFJVTkNBVEVEEAESGwoXUkZRX0ZJTExfU1RBVFVTX1BBUlRJQUwQAiotCgtUcmlnZ2VyS2luZBINCglTVE9QX0xPU1MQABIPCgtUQUtFX1BST0ZJVBABKiQKBkludGVudBIMCghERUNSRUFTRRAAEgwKCElOQ1JFQVNFEAEqTwoIRmlsbE1vZGUSCQoFTElNSVQQABINCglQT1NUX09OTFkQARIXChNJTU1FRElBVEVfT1JfQ0FOQ0VMEAISEAoMRklMTF9PUl9LSUxMEAMqrgEKDVBsYWNlbWVudFJvbGUSIAocUExBQ0VNRU5UX1JPTEVfQUNDT1VOVF9PV05FUhAAEiAKHFBMQUNFTUVOVF9ST0xFX1ZBVUxUX01BTkFHRVIQARIeChpQTEFDRU1FTlRfUk9MRV9TVVBFUl9BRE1JThACEhoKFlBMQUNFTUVOVF9ST0xFX1RSSUdHRVIQAxIdChlQTEFDRU1FTlRfUk9MRV9MSVFVSURBVE9SEAQqMQoTU2VsZlRyYWRlUHJldmVudGlvbhIICgROT05FEAASEAoMRVhQSVJFX01BS0VSEAEqJgoKTWFya2V0VHlwZRIICgRTUE9UEAASDgoKUEVSUEVUVUFMUxABKn0KEFRyaWdnZXJFeGVjRXJyb3ISDwoLTk9fUE9TSVRJT04QABITCg9QTEFOTklOR19GQUlMRUQQARIOCgpCQU5LUlVQVENZEAISFQoRUklTS19DSEVDS19GQUlMRUQQAxIcChhSRURVQ0VfT05MWV9DSEVDS19GQUlMRUQQBCowCg5TcGVjaWFsQWNjb3VudBINCglGRUVfVkFVTFQQABIPCgtDTEFJTV9WQVVMVBABKl0KC1ZhdWx0U3RhdHVzEhcKE1ZBVUxUX1NUQVRVU19BQ1RJVkUQABIcChhWQVVMVF9TVEFUVVNfREVSSVNLX09OTFkQARIXChNWQVVMVF9TVEFUVVNfRlJPWkVOEAIq4SkKBUVycm9yEg0KCURVUExJQ0FURRAAEhUKEUlOVkFMSURfU0lHTkFUVVJFEAMSFAoQTUFSS0VUX05PVF9GT1VORBAEEhMKD1RPS0VOX05PVF9GT1VORBAFEhIKDlVTRVJfTk9UX0ZPVU5EEAYSFQoRU0VTU0lPTl9OT1RfRk9VTkQQBxITCg9PUkRFUl9OT1RfRk9VTkQQCBITCg9PUkRFUl9TSVpFX1pFUk8QCRIOCgpBUklUSE1FVElDEAsSFwoTQVJJVEhNRVRJQ19PVkVSRkxPVxAMEhgKFEFSSVRITUVUSUNfVU5ERVJGTE9XEA0SHwobQVJJVEhNRVRJQ19ESVZJU0lPTl9CWV9aRVJPEA4SGgoWS0VZX0FMUkVBRFlfUkVHSVNURVJFRBAPEhwKGFVQREFURV9USU1FU1RBTVBfSU5fUEFTVBAREhgKFFRPT19NQU5ZX09QRU5fT1JERVJTEBISHQoZV0lUSERSQVdfQU1PVU5UX1RPT19TTUFMTBAVEikKJVNPVVJDRV9BTkRfVEFSR0VUX1NIT1VMRF9OT1RfQkVfRVFVQUwQGBISCg5ERUNPREVfRkFJTFVSRRAgEiAKHERFQ09ERV9GQUlMVVJFX0xFTkdUSF9QUkVGSVgQIRIWChJERUNPREVfRkFJTFVSRV9SQVcQIhIZChVERUNPREVfRkFJTFVSRV9ET01BSU4QIxIfChtVUERBVEVfUFVCTElTSF9USU1FX0lOX1BBU1QQJBILCgdTRVNTSU9OEDASHwobU0VTU0lPTl9SRUZSRVNIX05PVF9FTkFCTEVEEDESKgomU0VTU0lPTl9SRUZSRVNIX0RFQURMSU5FX0JFRk9SRV9FWFBJUlkQMhIXChNQWVRIX0ZFRURfTk9UX0FEREVEEF0SFQoRUFlUSF9GRUVEX01JU1NJTkcQXhIbChdQWVRIX0ZFRURfQUxSRUFEWV9BRERFRBBfEiMKH1BZVEhfR1VBUkRJQU5fU0VUX1VOSU5JVElBTElaRUQQYBIdChlQWVRIX0dVQVJESUFOX1NFVF9JTlZBTElEEGESIwofUFlUSF9GRUVEX0RFQ0lNQUxTX09VVF9PRl9SQU5HRRBiEiAKHFBZVEhfRkVFRF9QUklDRV9PVVRfT0ZfUkFOR0UQYxIjCh9QWVRIX0ZFRURfVkFSSUFOQ0VfT1VUX09GX1JBTkdFEGQSNQoxUFlUSF9HVUFSRElBTl9TRVRfQU5EX1BZVEhfU0lHTkFUVVJFX0RPX05PVF9NQVRDSBBlEhwKGElOVkFMSURfVE9LRU5fUEFSQU1FVEVSUxBmEhwKGElOREVYX1BSSUNFX09VVF9PRl9SQU5HRRBnEh8KG0lOREVYX0RFQ0lNQUxTX09VVF9PRl9SQU5HRRBoEhkKFUlOVkFMSURfU1RBVEVfVkVSU0lPThBpEhMKD0lOVkFMSURfTUFSR0lOUxBsEiEKHU1BUktFVF9ERUNJTUFMU19FWENFRURfTElNSVRTEG0SEwoPVE9PX01BTllfVE9LRU5TEG4SCAoEVElFUhBzEhkKFVRJRVJfRkVFX09VVF9PRl9SQU5HRRB0EhgKFFRJRVJfSURfT1VUX09GX1JBTkdFEHUSEgoOVElFUl9OT1RfRk9VTkQQdhIUChBGVU5ESU5HX09WRVJGTE9XEHsSNwozQ0FOX1JFRFVDRV9QT1NJVElPTl9PTkxZX0lGX0FMTF9PUkRFUlNfQVJFX0NBTkNFTEVEEHwSFwoTVU5FWFBFQ1RFRF9UT0tFTl9JRBB/EhYKEVJFUEVBVEVEX09SREVSX0lEEIABEh4KGUNMSUVOVF9PUkRFUl9JRF9UT09fTEFSR0UQgQESFAoPVE9LRU5fTk9UX1JFQURZEIIBEh0KGFRPS0VOX0FMUkVBRFlfUkVHSVNURVJFRBCDARIhChxJTU1FRElBVEVfT1JERVJfR09UX05PX0ZJTExTEIUBEhkKFEZBSUxFRF9UT19GSUxMX0xJTUlUEIYBEjAKK1BPU1RfT05MWV9NVVNUX05PVF9GSUxMX0FOWV9PUFBPU0lURV9PUkRFUlMQhwESDAoHSU5WQUxJRBCIARIQCgtNQUlOVEVOQU5DRRCJARIaChVNSU5JTVVNX1NJWkVfREVDSU1BTFMQigESMgotUEFSQU1FVEVSU19XSUxMX0NSRUFURV9OT05fT1BFUkFUSU9OQUxfTUFSS0VUEIsBEiIKHU9OTFlfSU1NRURJQVRFX09SREVSU19BTExPV0VEEIwBEhsKFlRPT19NQU5ZX1VTRVJfQUNDT1VOVFMQjQESFgoRQUNDT1VOVF9OT1RfRk9VTkQQjgESGgoVQUNDT1VOVF9JTlZBTElEX09XTkVSEI8BEhsKFlNVQkFDVElPTl9PVVRfT0ZfUkFOR0UQkAESEQoMRFVTVF9BQ0NPVU5UEJEBEgwKB0JBTEFOQ0UQoAESHQoYQkFMQU5DRV9ERVBPU0lUX09WRVJGTE9XEKEBEhwKF0JBTEFOQ0VfQ0hBTkdFX09WRVJGTE9XEKIBEiIKHUJBTEFOQ0VfQ0hBTkdFX0xJTUlUX0VYQ0VFREVEEKMBEhkKFEJBTEFOQ0VfSU5TVUZGSUNJRU5UEKQBEh4KGVVOQVVUSEVOVElDQVRFRF9MMV9BQ1RJT04QpQESHQoYRU5DT0RFRF9BQ1RJT05fVE9PX0xBUkdFEKYBEgwKB1RSSUdHRVIQqAESGgoVVFJJR0dFUl9JTlZBTElEX1BSSUNFEKkBEhYKEVRSSUdHRVJfTk9UX0ZPVU5EEKoBEisKJlRSSUdHRVJfT05MWV9ERUNSRUFTRV9PUkRFUlNfU1VQUE9SVEVEEKsBEigKI1RSSUdHRVJfTUFYX1NJWkVfUExBQ0VNRU5UX0VYQ0VFREVEEKwBEhgKE1RSSUdHRVJfTk9UX0NIQU5HRUQQrQESDgoJVElNRVNUQU1QELABEh8KGlRJTUVTVEFNUF9PVVRfT0ZfVEhSRVNIT0xEELEBEhQKD1RJTUVTVEFNUF9TVEFMRRCyARIcChhFWFBJUllfVElNRVNUQU1QX0lOX1BBU1QQEBIlCiBCQU5LUlVQVENZX0lOU1VGRklDSUVOVF9DT1ZFUkFHRRC5ARIZChRCQU5LUlVQVENZX05PVF9GT1VORBC6ARIbChZCQU5LUlVQVENZX05PVF9BTExPV0VEELsBEhUKEE1BUktFVF9OT1RfUkVBRFkQwAESEgoNTUFSS0VUX0ZST1pFThDBARIRCgxNQVJLRVRfRU1QVFkQwgESMAorTUFSS0VUX01PREVfRE9FU19OT1RfU1VQUE9SVF9USElTX09QRVJBVElPThDDARINCghQT1NJVElPThDIARIXChJQT1NJVElPTl9OT1RfRk9VTkQQyQESGQoUUE9TSVRJT05fU1RBVEVfT1JERVIQygESHwoaUE9TSVRJT05fU1RBVEVfT1JERVJfUFJJQ0UQywESHgoZUE9TSVRJT05fU1RBVEVfT1JERVJfU0laRRDMARIeChlQT1NJVElPTl9TVEFURV9PUkRFUl9TSURFEM0BEhgKE1BPU0lUSU9OX1NJWkVfTElNSVQQzgESGAoTUE9TSVRJT05fU1RBVEVfUEVSUBDPARIkCh9QT1NJVElPTl9TVEFURV9PUkRFUl9ERUxFR0FUSU9OENABEgoKBVBSSUNFENEBEhsKFlNJR05BVFVSRV9WRVJJRklDQVRJT04Q2QESMAorU0lHTkFUVVJFX1ZFUklGSUNBVElPTl9NQUxGT1JNRURfUFVCTElDX0tFWRDaARIqCiVTSUdOQVRVUkVfVkVSSUZJQ0FUSU9OX0lOVkFMSURfTEVOR1RIENsBEgkKBFJJU0sQ4AESNAovUklTS19ERUxFR0FUSU9OX01GX1RPX0JFX0xFU1NfVEhBTl9PUl9FUVVBTF9NTUYQ4QESJAofUklTS19PTUZfTEVTU19USEFOX09SX0VRVUFMX0lNRhDiARIkCh9SSVNLX09NRl9MRVNTX1RIQU5fT1JfRVFVQUxfQ01GEOMBEjUKMFJJU0tfVU5IRUFMVEhZX01GX0FORF9QT05fQUZURVJfQkVUVEVSX09GX0JFRk9SRRDkARIqCiVSSVNLX1RSQURFX09NRl9MRVNTX1RIQU5fT1JfRVFVQUxfQ01GEOUBEhQKD1JJU0tfTk9UX0VOT1VHSBDmARIUCg9PUkRFUl9FWEVDVVRJT04Q8AESGgoVT1JERVJfRVhFQ1VUSU9OX0VNUFRZEPEBEiEKHE9SREVSX0VYRUNVVElPTl9GSUxMX09SX0tJTEwQ8gESIwoeT1JERVJfRVhFQ1VUSU9OX01JU1NJTkdfTElNSVRTEPMBEiIKHU9SREVSX0VYRUNVVElPTl9NSVNTSU5HX1BSSUNFEPQBEh8KGk9SREVSX0VYRUNVVElPTl9TSVpFX0xJTUlUEPUBEiAKG09SREVSX0VYRUNVVElPTl9MSU1JVF9QUklDRRD2ARIeChlPUkRFUl9SRURVQ0VfSVNfUE9TVF9PTkxZEPcBEh8KGk9SREVSX0VYRUNVVElPTl9TRUxMX1BSSUNFEPgBEiUKIE9SREVSX1NJWkVfRVhDRUVEU19QT1NJVElPTl9TSVpFEPkBEgwKB0FUT01JQ1MQgAISKAojQVRPTUlDU19UUkFERVNfQ0FOTk9UX0ZPTExPV19QTEFDRVMQgQISMAorQVRPTUlDU19DQU5DRUxTX0NBTk5PVF9GT0xMT1dfVFJBREVTX1BMQUNFUxCCAhIdChhBVE9NSUNTX0RVUExJQ0FURV9DQU5DRUwQgwISGAoTUkZRX09SREVSX1RJTUVPVVRFRBD6ARImCiFBQ1RJT05fUE9TSVRJT05fU0hPVUxEX0JFX0NPVkVSRUQQkQISGQoUQUNUSU9OX0lOVkFMSURfTk9OQ0UQkgISKQokQUNUSU9OX1BST1BPU0VEX1BSSUNFX01VU1RfQkVfSElHSEVSEJMCEhwKF0FETUlOX1JPTEVfSU5TVUZGSUNJRU5UEJQCEhQKD0FETUlOX05PVF9GT1VORBCVAhIpCiRVTklRVUVfU1VQRVJfQURNSU5fQ0FOTk9UX0JFX1JFTU9WRUQQlgISHwoaU1VQRVJfQURNSU5fQUxSRUFEWV9FWElTVFMQlwISFQoQVFJJR0dFUl9DT05GTElDVBCYAhIaChVUUklHR0VSX0VESVRfQ09ORkxJQ1QQmQISHAoXVFJJR0dFUl9SRU1PVkVfQ09ORkxJQ1QQmgISDQoIVFJBTlNGRVIQoAISLgopVFJBTlNGRVJfVE9fVU5PV05FRF9BQ0NPVU5UX0lTX1BST0hJQklURUQQoQISLAonVFJBTlNGRVJfVE9fT1dORURfQUNDT1VOVF9XQVNfUkVRVUVTVEVEEKICEioKJVRSQU5TRkVSX1RPX0NMQUlNX1ZBVUxUX0lTX1BST0hJQklURUQQowISCgoFVkFVTFQQqAISFAoPVkFVTFRfTk9UX0ZPVU5EEKkCEh0KGFZBVUxUX0FDVElPTl9OT1RfQUxMT1dFRBCqAhIZChRWQVVMVF9TVEFUVVNfSU5WQUxJRBCrAhIlCiBWQVVMVF9SRURVQ0VfT05MWV9PUkRFUl9SRVFVSVJFRBCsAhImCiFWQVVMVF9BQ1RJT05fV09VTERfREVHUkFERV9TVEFUVVMQrQISGQoUVkFVTFRfVVNFUl9OT1RfRk9VTkQQrgISHQoYVkFVTFRfVVNFUl9IQVNfTk9fU0hBUkVTEK8CEhwKF1ZBVUxUX1BFUk1JU1NJT05fREVOSUVEELYCEhIKDVZBVUxUX0RFUE9TSVQQsAISMQosVkFVTFRfREVQT1NJVF9CT09UU1RSQVBfUkVRVUlSRVNfRU1QVFlfVkFVTFQQsQISHwoaVkFVTFRfREVQT1NJVF9DQVBfRVhDRUVERUQQsgISKQokVkFVTFRfREVQT1NJVF9SRVFVSVJFU19BQ1RJVkVfU1RBVFVTELMCEi8KKlZBVUxUX0RFUE9TSVRfQ0FQX0JFTE9XX0NVUlJFTlRfUkFXX0VRVUlUWRC0AhIcChdWQVVMVF9ERVBPU0lUX1RPT19TTUFMTBC1AhITCg5WQVVMVF9XSVRIRFJBVxC4AhIeChlWQVVMVF9JTlNVRkZJQ0lFTlRfU0hBUkVTELkCEi4KKVZBVUxUX1dJVEhEUkFXX1JFUVVJUkVTX05PTl9GUk9aRU5fU1RBVFVTELoCEiIKHVZBVUxUX05PX0NMQUlNQUJMRV9XSVRIRFJBV0FMELsCEiUKIFZBVUxUX1dJVEhEUkFXX1FVT1RFX1VOQVZBSUxBQkxFELwCEi0KKFZBVUxUX0RVU1RfRVhJVF9SRVFVSVJFU19GVUxMX1NIQVJFX0VYSVQQvQISNQowVkFVTFRfTEFTVF9TSEFSRV9XSVRIRFJBV19SRVFVSVJFU19FTVBUWV9BQ0NPVU5UEL4CEigKI1ZBVUxUX1dJVEhEUkFXX1JFUVVJUkVTX0xJVkVfU0hBUkVTEL8CEhIKDVZBVUxUX0NPTlRST0wQwAISHQoYVkFVTFRfRVBPQ0hfTk9UX0VMSUdJQkxFEMECEjIKLVZBVUxUX0ZSRUVaRV9USFJFU0hPTERfTVVTVF9FWENFRURfUFJPVEVDVElPThDDAhIdChhWQVVMVF9DT05GSUdfUEFUQ0hfRU1QVFkQxAISKAojVkFVTFRfTk9fU1RBVFVTX1RSQU5TSVRJT05fUkVRVUlSRUQQxQISLQooVkFVTFRfRlJPWkVOX1NUQVRVU19SRVFVSVJFU19TVVBFUl9BRE1JThDGAhIqCiVWQVVMVF9ORVdfQ09ORklHX1dPVUxEX0RFR1JBREVfU1RBVFVTEMcCEg4KCVJGUV9FUlJPUhDIAhIQCgtSRlFfVElNRU9VVBDJAhIUCg9OT1RfSU1QTEVNRU5URUQQ9AMSFwoSQUNUSU9OX05PVF9BTExPV0VEEPUDEhgKE05PVF9TVVBQT1JURURfSU5QVVQQ9gMSDAoHRFJPUFBFRBDnB2IGcHJvdG8z");
|
|
57298
57300
|
var U128Schema = /* @__PURE__ */ messageDesc(file_nord, 0);
|
|
57299
57301
|
var RfqTradeSchema = /* @__PURE__ */ messageDesc(file_nord, 1);
|
|
57300
|
-
var
|
|
57301
|
-
var
|
|
57302
|
-
var
|
|
57303
|
-
var
|
|
57304
|
-
var
|
|
57305
|
-
var
|
|
57306
|
-
var
|
|
57307
|
-
var
|
|
57308
|
-
var
|
|
57309
|
-
var
|
|
57302
|
+
var PartialFillSchema = /* @__PURE__ */ messageDesc(file_nord, 2);
|
|
57303
|
+
var FillTypeSchema = /* @__PURE__ */ messageDesc(file_nord, 3);
|
|
57304
|
+
var RfqPlaceOnlySchema = /* @__PURE__ */ messageDesc(file_nord, 4);
|
|
57305
|
+
var SetRfqMakersSchema = /* @__PURE__ */ messageDesc(file_nord, 5);
|
|
57306
|
+
var SetMarketModeRFQSchema = /* @__PURE__ */ messageDesc(file_nord, 6);
|
|
57307
|
+
var CreateRfqMarketSchema = /* @__PURE__ */ messageDesc(file_nord, 7);
|
|
57308
|
+
var CreateRfqMarket_DecimalsSchema = /* @__PURE__ */ messageDesc(file_nord, 7, 0);
|
|
57309
|
+
var CreateRfqMarket_MarginsSchema = /* @__PURE__ */ messageDesc(file_nord, 7, 1);
|
|
57310
|
+
var CreateRfqMarket_SymbolsSchema = /* @__PURE__ */ messageDesc(file_nord, 7, 2);
|
|
57311
|
+
var RfqTradeActionSchema = /* @__PURE__ */ messageDesc(file_nord, 8);
|
|
57312
|
+
var RfqTradeReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 9);
|
|
57313
|
+
var RfqTradeReceipt_SuccessSchema = /* @__PURE__ */ messageDesc(file_nord, 9, 0);
|
|
57310
57314
|
var RfqTradeReceipt_FailureReason;
|
|
57311
57315
|
((RfqTradeReceipt_FailureReason2) => {
|
|
57312
57316
|
RfqTradeReceipt_FailureReason2[RfqTradeReceipt_FailureReason2["TIMEOUT"] = 0] = "TIMEOUT";
|
|
57313
57317
|
RfqTradeReceipt_FailureReason2[RfqTradeReceipt_FailureReason2["REJECTED"] = 1] = "REJECTED";
|
|
57314
57318
|
})(RfqTradeReceipt_FailureReason ||= {});
|
|
57315
|
-
var RfqTradeReceipt_FailureReasonSchema = /* @__PURE__ */ enumDesc(file_nord,
|
|
57316
|
-
var PlaceRFQResultSchema = /* @__PURE__ */ messageDesc(file_nord,
|
|
57317
|
-
var
|
|
57318
|
-
var
|
|
57319
|
-
var
|
|
57320
|
-
var
|
|
57321
|
-
var
|
|
57322
|
-
var
|
|
57323
|
-
var
|
|
57324
|
-
var
|
|
57325
|
-
var
|
|
57326
|
-
var
|
|
57327
|
-
var
|
|
57328
|
-
var
|
|
57329
|
-
var
|
|
57330
|
-
var
|
|
57331
|
-
var
|
|
57332
|
-
var
|
|
57333
|
-
var
|
|
57334
|
-
var
|
|
57335
|
-
var
|
|
57336
|
-
var
|
|
57337
|
-
var
|
|
57338
|
-
var
|
|
57339
|
-
var
|
|
57340
|
-
var
|
|
57341
|
-
var
|
|
57342
|
-
var
|
|
57343
|
-
var
|
|
57344
|
-
var
|
|
57345
|
-
var
|
|
57346
|
-
var
|
|
57347
|
-
var
|
|
57348
|
-
var
|
|
57349
|
-
var
|
|
57350
|
-
var
|
|
57351
|
-
var
|
|
57352
|
-
var
|
|
57353
|
-
var
|
|
57354
|
-
var
|
|
57355
|
-
var
|
|
57356
|
-
var
|
|
57357
|
-
var
|
|
57358
|
-
var
|
|
57359
|
-
var
|
|
57360
|
-
var AtomicSubactionSchema = /* @__PURE__ */ messageDesc(file_nord,
|
|
57361
|
-
var
|
|
57362
|
-
var AtomicSchema = /* @__PURE__ */ messageDesc(file_nord, 50);
|
|
57363
|
-
var AtomicV2Schema = /* @__PURE__ */ messageDesc(file_nord, 51);
|
|
57319
|
+
var RfqTradeReceipt_FailureReasonSchema = /* @__PURE__ */ enumDesc(file_nord, 9, 0);
|
|
57320
|
+
var PlaceRFQResultSchema = /* @__PURE__ */ messageDesc(file_nord, 10);
|
|
57321
|
+
var RFQExecutionSchema = /* @__PURE__ */ messageDesc(file_nord, 11);
|
|
57322
|
+
var FillRFQResultSchema = /* @__PURE__ */ messageDesc(file_nord, 12);
|
|
57323
|
+
var RfqMakersSetSchema = /* @__PURE__ */ messageDesc(file_nord, 13);
|
|
57324
|
+
var RFQQtyPlaceSchema = /* @__PURE__ */ messageDesc(file_nord, 14);
|
|
57325
|
+
var FeeTierConfigSchema = /* @__PURE__ */ messageDesc(file_nord, 15);
|
|
57326
|
+
var MarketSchema = /* @__PURE__ */ messageDesc(file_nord, 16);
|
|
57327
|
+
var TokenSchema = /* @__PURE__ */ messageDesc(file_nord, 17);
|
|
57328
|
+
var VaultHealthSchema = /* @__PURE__ */ messageDesc(file_nord, 18);
|
|
57329
|
+
var VaultConfigSchema = /* @__PURE__ */ messageDesc(file_nord, 19);
|
|
57330
|
+
var VaultConfigPatchSchema = /* @__PURE__ */ messageDesc(file_nord, 20);
|
|
57331
|
+
var CreateVaultSchema = /* @__PURE__ */ messageDesc(file_nord, 21);
|
|
57332
|
+
var UpdateVaultConfigSchema = /* @__PURE__ */ messageDesc(file_nord, 22);
|
|
57333
|
+
var SetVaultManagerSchema = /* @__PURE__ */ messageDesc(file_nord, 23);
|
|
57334
|
+
var VaultSyncEpochsSchema = /* @__PURE__ */ messageDesc(file_nord, 24);
|
|
57335
|
+
var StagedAdminActionSchema = /* @__PURE__ */ messageDesc(file_nord, 25);
|
|
57336
|
+
var AdminActionKindSchema = /* @__PURE__ */ messageDesc(file_nord, 26);
|
|
57337
|
+
var VaultDepositSchema = /* @__PURE__ */ messageDesc(file_nord, 27);
|
|
57338
|
+
var VaultWithdrawSchema = /* @__PURE__ */ messageDesc(file_nord, 28);
|
|
57339
|
+
var VaultWithdraw_RequestSchema = /* @__PURE__ */ messageDesc(file_nord, 28, 0);
|
|
57340
|
+
var VaultWithdraw_ClaimSchema = /* @__PURE__ */ messageDesc(file_nord, 28, 1);
|
|
57341
|
+
var CreateVaultReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 29);
|
|
57342
|
+
var UpdateVaultConfigReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 30);
|
|
57343
|
+
var SetVaultManagerReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 31);
|
|
57344
|
+
var VaultSyncEpochsReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 32);
|
|
57345
|
+
var VaultDepositReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 33);
|
|
57346
|
+
var WithdrawalBucketsSchema = /* @__PURE__ */ messageDesc(file_nord, 34);
|
|
57347
|
+
var VaultPpsRefSchema = /* @__PURE__ */ messageDesc(file_nord, 35);
|
|
57348
|
+
var VaultEpochsSchema = /* @__PURE__ */ messageDesc(file_nord, 36);
|
|
57349
|
+
var VaultUserStateSchema = /* @__PURE__ */ messageDesc(file_nord, 37);
|
|
57350
|
+
var VaultWithdrawReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 38);
|
|
57351
|
+
var VaultWithdrawReceipt_RequestedSchema = /* @__PURE__ */ messageDesc(file_nord, 38, 0);
|
|
57352
|
+
var VaultWithdrawReceipt_ClaimedSchema = /* @__PURE__ */ messageDesc(file_nord, 38, 1);
|
|
57353
|
+
var OrderLimitSchema = /* @__PURE__ */ messageDesc(file_nord, 39);
|
|
57354
|
+
var PlaceTypeSchema = /* @__PURE__ */ messageDesc(file_nord, 40);
|
|
57355
|
+
var TradeOrPlaceSchema = /* @__PURE__ */ messageDesc(file_nord, 41);
|
|
57356
|
+
var AtomicCancelOrderByIdSchema = /* @__PURE__ */ messageDesc(file_nord, 42);
|
|
57357
|
+
var AtomicCancelOrderByClientIdSchema = /* @__PURE__ */ messageDesc(file_nord, 43);
|
|
57358
|
+
var AtomicAddTriggerSchema = /* @__PURE__ */ messageDesc(file_nord, 44);
|
|
57359
|
+
var AtomicEditTriggerSchema = /* @__PURE__ */ messageDesc(file_nord, 45);
|
|
57360
|
+
var AtomicRemoveTriggerSchema = /* @__PURE__ */ messageDesc(file_nord, 46);
|
|
57361
|
+
var ReduceOrderLiquidationSchema = /* @__PURE__ */ messageDesc(file_nord, 47);
|
|
57362
|
+
var AtomicSubactionKindV1Schema = /* @__PURE__ */ messageDesc(file_nord, 48);
|
|
57363
|
+
var AtomicV1Schema = /* @__PURE__ */ messageDesc(file_nord, 49);
|
|
57364
|
+
var AtomicSubactionSchema = /* @__PURE__ */ messageDesc(file_nord, 50);
|
|
57365
|
+
var AtomicSchema = /* @__PURE__ */ messageDesc(file_nord, 51);
|
|
57364
57366
|
var PythLazerTrustedSignerSchema = /* @__PURE__ */ messageDesc(file_nord, 52);
|
|
57365
57367
|
var TriggerRecordSchema = /* @__PURE__ */ messageDesc(file_nord, 53);
|
|
57366
57368
|
var TriggerSchema = /* @__PURE__ */ messageDesc(file_nord, 54);
|
|
@@ -57493,18 +57495,25 @@ var MarketRegime;
|
|
|
57493
57495
|
MarketRegime2[MarketRegime2["TRADE_ONLY"] = 2] = "TRADE_ONLY";
|
|
57494
57496
|
})(MarketRegime ||= {});
|
|
57495
57497
|
var MarketRegimeSchema = /* @__PURE__ */ enumDesc(file_nord, 2);
|
|
57498
|
+
var RfqFillStatus;
|
|
57499
|
+
((RfqFillStatus2) => {
|
|
57500
|
+
RfqFillStatus2[RfqFillStatus2["COMPLETED"] = 0] = "COMPLETED";
|
|
57501
|
+
RfqFillStatus2[RfqFillStatus2["TRUNCATED"] = 1] = "TRUNCATED";
|
|
57502
|
+
RfqFillStatus2[RfqFillStatus2["PARTIAL"] = 2] = "PARTIAL";
|
|
57503
|
+
})(RfqFillStatus ||= {});
|
|
57504
|
+
var RfqFillStatusSchema = /* @__PURE__ */ enumDesc(file_nord, 3);
|
|
57496
57505
|
var TriggerKind;
|
|
57497
57506
|
((TriggerKind2) => {
|
|
57498
57507
|
TriggerKind2[TriggerKind2["STOP_LOSS"] = 0] = "STOP_LOSS";
|
|
57499
57508
|
TriggerKind2[TriggerKind2["TAKE_PROFIT"] = 1] = "TAKE_PROFIT";
|
|
57500
57509
|
})(TriggerKind ||= {});
|
|
57501
|
-
var TriggerKindSchema = /* @__PURE__ */ enumDesc(file_nord,
|
|
57510
|
+
var TriggerKindSchema = /* @__PURE__ */ enumDesc(file_nord, 4);
|
|
57502
57511
|
var Intent;
|
|
57503
57512
|
((Intent2) => {
|
|
57504
57513
|
Intent2[Intent2["DECREASE"] = 0] = "DECREASE";
|
|
57505
57514
|
Intent2[Intent2["INCREASE"] = 1] = "INCREASE";
|
|
57506
57515
|
})(Intent ||= {});
|
|
57507
|
-
var IntentSchema = /* @__PURE__ */ enumDesc(file_nord,
|
|
57516
|
+
var IntentSchema = /* @__PURE__ */ enumDesc(file_nord, 5);
|
|
57508
57517
|
var FillMode;
|
|
57509
57518
|
((FillMode2) => {
|
|
57510
57519
|
FillMode2[FillMode2["LIMIT"] = 0] = "LIMIT";
|
|
@@ -57512,7 +57521,7 @@ var FillMode;
|
|
|
57512
57521
|
FillMode2[FillMode2["IMMEDIATE_OR_CANCEL"] = 2] = "IMMEDIATE_OR_CANCEL";
|
|
57513
57522
|
FillMode2[FillMode2["FILL_OR_KILL"] = 3] = "FILL_OR_KILL";
|
|
57514
57523
|
})(FillMode ||= {});
|
|
57515
|
-
var FillModeSchema = /* @__PURE__ */ enumDesc(file_nord,
|
|
57524
|
+
var FillModeSchema = /* @__PURE__ */ enumDesc(file_nord, 6);
|
|
57516
57525
|
var PlacementRole;
|
|
57517
57526
|
((PlacementRole2) => {
|
|
57518
57527
|
PlacementRole2[PlacementRole2["ACCOUNT_OWNER"] = 0] = "ACCOUNT_OWNER";
|
|
@@ -57521,19 +57530,19 @@ var PlacementRole;
|
|
|
57521
57530
|
PlacementRole2[PlacementRole2["TRIGGER"] = 3] = "TRIGGER";
|
|
57522
57531
|
PlacementRole2[PlacementRole2["LIQUIDATOR"] = 4] = "LIQUIDATOR";
|
|
57523
57532
|
})(PlacementRole ||= {});
|
|
57524
|
-
var PlacementRoleSchema = /* @__PURE__ */ enumDesc(file_nord,
|
|
57533
|
+
var PlacementRoleSchema = /* @__PURE__ */ enumDesc(file_nord, 7);
|
|
57525
57534
|
var SelfTradePrevention;
|
|
57526
57535
|
((SelfTradePrevention2) => {
|
|
57527
57536
|
SelfTradePrevention2[SelfTradePrevention2["NONE"] = 0] = "NONE";
|
|
57528
57537
|
SelfTradePrevention2[SelfTradePrevention2["EXPIRE_MAKER"] = 1] = "EXPIRE_MAKER";
|
|
57529
57538
|
})(SelfTradePrevention ||= {});
|
|
57530
|
-
var SelfTradePreventionSchema = /* @__PURE__ */ enumDesc(file_nord,
|
|
57539
|
+
var SelfTradePreventionSchema = /* @__PURE__ */ enumDesc(file_nord, 8);
|
|
57531
57540
|
var MarketType;
|
|
57532
57541
|
((MarketType2) => {
|
|
57533
57542
|
MarketType2[MarketType2["SPOT"] = 0] = "SPOT";
|
|
57534
57543
|
MarketType2[MarketType2["PERPETUALS"] = 1] = "PERPETUALS";
|
|
57535
57544
|
})(MarketType ||= {});
|
|
57536
|
-
var MarketTypeSchema = /* @__PURE__ */ enumDesc(file_nord,
|
|
57545
|
+
var MarketTypeSchema = /* @__PURE__ */ enumDesc(file_nord, 9);
|
|
57537
57546
|
var TriggerExecError;
|
|
57538
57547
|
((TriggerExecError2) => {
|
|
57539
57548
|
TriggerExecError2[TriggerExecError2["NO_POSITION"] = 0] = "NO_POSITION";
|
|
@@ -57542,19 +57551,20 @@ var TriggerExecError;
|
|
|
57542
57551
|
TriggerExecError2[TriggerExecError2["RISK_CHECK_FAILED"] = 3] = "RISK_CHECK_FAILED";
|
|
57543
57552
|
TriggerExecError2[TriggerExecError2["REDUCE_ONLY_CHECK_FAILED"] = 4] = "REDUCE_ONLY_CHECK_FAILED";
|
|
57544
57553
|
})(TriggerExecError ||= {});
|
|
57545
|
-
var TriggerExecErrorSchema = /* @__PURE__ */ enumDesc(file_nord,
|
|
57554
|
+
var TriggerExecErrorSchema = /* @__PURE__ */ enumDesc(file_nord, 10);
|
|
57546
57555
|
var SpecialAccount;
|
|
57547
57556
|
((SpecialAccount2) => {
|
|
57548
57557
|
SpecialAccount2[SpecialAccount2["FEE_VAULT"] = 0] = "FEE_VAULT";
|
|
57558
|
+
SpecialAccount2[SpecialAccount2["CLAIM_VAULT"] = 1] = "CLAIM_VAULT";
|
|
57549
57559
|
})(SpecialAccount ||= {});
|
|
57550
|
-
var SpecialAccountSchema = /* @__PURE__ */ enumDesc(file_nord,
|
|
57560
|
+
var SpecialAccountSchema = /* @__PURE__ */ enumDesc(file_nord, 11);
|
|
57551
57561
|
var VaultStatus;
|
|
57552
57562
|
((VaultStatus2) => {
|
|
57553
57563
|
VaultStatus2[VaultStatus2["ACTIVE"] = 0] = "ACTIVE";
|
|
57554
57564
|
VaultStatus2[VaultStatus2["DERISK_ONLY"] = 1] = "DERISK_ONLY";
|
|
57555
57565
|
VaultStatus2[VaultStatus2["FROZEN"] = 2] = "FROZEN";
|
|
57556
57566
|
})(VaultStatus ||= {});
|
|
57557
|
-
var VaultStatusSchema = /* @__PURE__ */ enumDesc(file_nord,
|
|
57567
|
+
var VaultStatusSchema = /* @__PURE__ */ enumDesc(file_nord, 12);
|
|
57558
57568
|
var Error2;
|
|
57559
57569
|
((Error3) => {
|
|
57560
57570
|
Error3[Error3["DUPLICATE"] = 0] = "DUPLICATE";
|
|
@@ -57694,6 +57704,7 @@ var Error2;
|
|
|
57694
57704
|
Error3[Error3["TRANSFER"] = 288] = "TRANSFER";
|
|
57695
57705
|
Error3[Error3["TRANSFER_TO_UNOWNED_ACCOUNT_IS_PROHIBITED"] = 289] = "TRANSFER_TO_UNOWNED_ACCOUNT_IS_PROHIBITED";
|
|
57696
57706
|
Error3[Error3["TRANSFER_TO_OWNED_ACCOUNT_WAS_REQUESTED"] = 290] = "TRANSFER_TO_OWNED_ACCOUNT_WAS_REQUESTED";
|
|
57707
|
+
Error3[Error3["TRANSFER_TO_CLAIM_VAULT_IS_PROHIBITED"] = 291] = "TRANSFER_TO_CLAIM_VAULT_IS_PROHIBITED";
|
|
57697
57708
|
Error3[Error3["VAULT"] = 296] = "VAULT";
|
|
57698
57709
|
Error3[Error3["VAULT_NOT_FOUND"] = 297] = "VAULT_NOT_FOUND";
|
|
57699
57710
|
Error3[Error3["VAULT_ACTION_NOT_ALLOWED"] = 298] = "VAULT_ACTION_NOT_ALLOWED";
|
|
@@ -57719,7 +57730,6 @@ var Error2;
|
|
|
57719
57730
|
Error3[Error3["VAULT_WITHDRAW_REQUIRES_LIVE_SHARES"] = 319] = "VAULT_WITHDRAW_REQUIRES_LIVE_SHARES";
|
|
57720
57731
|
Error3[Error3["VAULT_CONTROL"] = 320] = "VAULT_CONTROL";
|
|
57721
57732
|
Error3[Error3["VAULT_EPOCH_NOT_ELIGIBLE"] = 321] = "VAULT_EPOCH_NOT_ELIGIBLE";
|
|
57722
|
-
Error3[Error3["VAULT_PREVIOUS_EPOCH_WITHDRAWALS_NOT_PAYABLE"] = 322] = "VAULT_PREVIOUS_EPOCH_WITHDRAWALS_NOT_PAYABLE";
|
|
57723
57733
|
Error3[Error3["VAULT_FREEZE_THRESHOLD_MUST_EXCEED_PROTECTION"] = 323] = "VAULT_FREEZE_THRESHOLD_MUST_EXCEED_PROTECTION";
|
|
57724
57734
|
Error3[Error3["VAULT_CONFIG_PATCH_EMPTY"] = 324] = "VAULT_CONFIG_PATCH_EMPTY";
|
|
57725
57735
|
Error3[Error3["VAULT_NO_STATUS_TRANSITION_REQUIRED"] = 325] = "VAULT_NO_STATUS_TRANSITION_REQUIRED";
|
|
@@ -57732,7 +57742,7 @@ var Error2;
|
|
|
57732
57742
|
Error3[Error3["NOT_SUPPORTED_INPUT"] = 502] = "NOT_SUPPORTED_INPUT";
|
|
57733
57743
|
Error3[Error3["DROPPED"] = 999] = "DROPPED";
|
|
57734
57744
|
})(Error2 ||= {});
|
|
57735
|
-
var ErrorSchema = /* @__PURE__ */ enumDesc(file_nord,
|
|
57745
|
+
var ErrorSchema = /* @__PURE__ */ enumDesc(file_nord, 13);
|
|
57736
57746
|
|
|
57737
57747
|
// src/types.ts
|
|
57738
57748
|
var TOPIC_INFO_NAMES = {
|
|
@@ -92458,18 +92468,34 @@ class Nord {
|
|
|
92458
92468
|
markets = [];
|
|
92459
92469
|
tokens = [];
|
|
92460
92470
|
symbolToMarketId = new Map;
|
|
92461
|
-
|
|
92471
|
+
protonConfig;
|
|
92472
|
+
protonClientPromise;
|
|
92462
92473
|
httpClient;
|
|
92463
92474
|
constructor({
|
|
92464
92475
|
solanaConnection,
|
|
92465
92476
|
webServerUrl,
|
|
92466
|
-
|
|
92477
|
+
protonConfig
|
|
92467
92478
|
}) {
|
|
92468
92479
|
this.webServerUrl = webServerUrl;
|
|
92469
92480
|
this.solanaConnection = solanaConnection;
|
|
92470
|
-
this.
|
|
92481
|
+
this.protonConfig = protonConfig;
|
|
92471
92482
|
this.httpClient = createClient({ baseUrl: webServerUrl });
|
|
92472
92483
|
}
|
|
92484
|
+
getProtonClient() {
|
|
92485
|
+
if (this.protonClientPromise === undefined) {
|
|
92486
|
+
const initialization = ProtonClient.init({
|
|
92487
|
+
...this.protonConfig,
|
|
92488
|
+
solConn: this.solanaConnection
|
|
92489
|
+
});
|
|
92490
|
+
this.protonClientPromise = initialization;
|
|
92491
|
+
initialization.catch(() => {
|
|
92492
|
+
if (this.protonClientPromise === initialization) {
|
|
92493
|
+
this.protonClientPromise = undefined;
|
|
92494
|
+
}
|
|
92495
|
+
});
|
|
92496
|
+
}
|
|
92497
|
+
return this.protonClientPromise;
|
|
92498
|
+
}
|
|
92473
92499
|
createWebSocketClient({
|
|
92474
92500
|
trades,
|
|
92475
92501
|
deltas,
|
|
@@ -92596,15 +92622,13 @@ class Nord {
|
|
|
92596
92622
|
webServerUrl,
|
|
92597
92623
|
protonUrl
|
|
92598
92624
|
}) {
|
|
92599
|
-
const protonClient = await ProtonClient.init({
|
|
92600
|
-
protonUrl: protonUrl ?? webServerUrl,
|
|
92601
|
-
app: new import_web39.PublicKey(app),
|
|
92602
|
-
solConn: solanaConnection
|
|
92603
|
-
});
|
|
92604
92625
|
const nord = new Nord({
|
|
92605
|
-
protonClient,
|
|
92606
92626
|
solanaConnection,
|
|
92607
|
-
webServerUrl
|
|
92627
|
+
webServerUrl,
|
|
92628
|
+
protonConfig: {
|
|
92629
|
+
protonUrl: protonUrl ?? webServerUrl,
|
|
92630
|
+
app: new import_web39.PublicKey(app)
|
|
92631
|
+
}
|
|
92608
92632
|
});
|
|
92609
92633
|
await nord.init();
|
|
92610
92634
|
return nord;
|
|
@@ -93730,7 +93754,25 @@ function normalizeAtomicReceipt(resp, actionCount) {
|
|
|
93730
93754
|
}
|
|
93731
93755
|
return;
|
|
93732
93756
|
}
|
|
93733
|
-
function
|
|
93757
|
+
function buildFillType(minimumSize, maximumSize, isReduceOnly) {
|
|
93758
|
+
if (minimumSize === undefined && maximumSize === undefined) {
|
|
93759
|
+
return isReduceOnly === undefined ? undefined : create(FillTypeSchema, { isReduceOnly });
|
|
93760
|
+
}
|
|
93761
|
+
assert3(minimumSize !== undefined && maximumSize !== undefined, "partial-fill RFQ requires both minimumSize and maximumSize");
|
|
93762
|
+
const partialFill = create(PartialFillSchema, {
|
|
93763
|
+
minimumSize: BigInt(minimumSize),
|
|
93764
|
+
maximumSize: BigInt(maximumSize)
|
|
93765
|
+
});
|
|
93766
|
+
return create(FillTypeSchema, {
|
|
93767
|
+
isReduceOnly,
|
|
93768
|
+
partialFill
|
|
93769
|
+
});
|
|
93770
|
+
}
|
|
93771
|
+
function atomicSubactionToProto(currentTimestamp, a2) {
|
|
93772
|
+
const target = {
|
|
93773
|
+
targetAccountId: a2.targetAccountId,
|
|
93774
|
+
useKey: a2.useKey
|
|
93775
|
+
};
|
|
93734
93776
|
if (a2.kind === "place") {
|
|
93735
93777
|
const price = toScaledU64(a2.price ?? 0, a2.priceDecimals);
|
|
93736
93778
|
const size = toScaledU64(a2.size ?? 0, a2.sizeDecimals);
|
|
@@ -93752,16 +93794,16 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
|
|
|
93752
93794
|
referrer: a2.referrer === undefined ? undefined : toProtoU128(a2.referrer)
|
|
93753
93795
|
});
|
|
93754
93796
|
return create(AtomicSubactionSchema, {
|
|
93755
|
-
|
|
93797
|
+
...target,
|
|
93756
93798
|
inner: { case: "tradeOrPlace", value: tradeOrPlace }
|
|
93757
93799
|
});
|
|
93758
93800
|
}
|
|
93759
93801
|
if (a2.kind === "reduceOrderLiquidation") {
|
|
93760
93802
|
return create(AtomicSubactionSchema, {
|
|
93803
|
+
...target,
|
|
93761
93804
|
inner: {
|
|
93762
93805
|
case: "reduceOrderLiquidation",
|
|
93763
93806
|
value: create(ReduceOrderLiquidationSchema, {
|
|
93764
|
-
targetAccountId: a2.targetAccountId,
|
|
93765
93807
|
marketId: a2.marketId
|
|
93766
93808
|
})
|
|
93767
93809
|
}
|
|
@@ -93771,8 +93813,9 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
|
|
|
93771
93813
|
const price = toScaledU64(a2.price, a2.priceDecimals);
|
|
93772
93814
|
const size = toScaledU64(a2.size, a2.sizeDecimals);
|
|
93773
93815
|
const timestampMillis = currentTimestamp * 1000n;
|
|
93816
|
+
const fillType = buildFillType(a2.minimumSize, a2.maximumSize, a2.isReduceOnly);
|
|
93774
93817
|
return create(AtomicSubactionSchema, {
|
|
93775
|
-
|
|
93818
|
+
...target,
|
|
93776
93819
|
inner: {
|
|
93777
93820
|
case: "rfqPlaceOnly",
|
|
93778
93821
|
value: create(RfqPlaceOnlySchema, {
|
|
@@ -93782,7 +93825,8 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
|
|
|
93782
93825
|
price,
|
|
93783
93826
|
side: a2.side === "bid" /* Bid */ ? 1 /* BID */ : 0 /* ASK */,
|
|
93784
93827
|
base: size,
|
|
93785
|
-
timestampMillis
|
|
93828
|
+
timestampMillis,
|
|
93829
|
+
fillType
|
|
93786
93830
|
})
|
|
93787
93831
|
}
|
|
93788
93832
|
});
|
|
@@ -93790,8 +93834,9 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
|
|
|
93790
93834
|
if (a2.kind === "rfqFill") {
|
|
93791
93835
|
const price = toScaledU64(a2.price, a2.priceDecimals);
|
|
93792
93836
|
const timestampMillis = currentTimestamp * 1000n;
|
|
93837
|
+
const fillType = buildFillType(a2.minimumSize, a2.maximumSize, a2.isReduceOnly);
|
|
93793
93838
|
return create(AtomicSubactionSchema, {
|
|
93794
|
-
|
|
93839
|
+
...target,
|
|
93795
93840
|
inner: {
|
|
93796
93841
|
case: "rfqTrade",
|
|
93797
93842
|
value: create(RfqTradeSchema, {
|
|
@@ -93799,14 +93844,15 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
|
|
|
93799
93844
|
marketId: a2.marketId,
|
|
93800
93845
|
orderId: BigInt(a2.orderId),
|
|
93801
93846
|
price,
|
|
93802
|
-
timestampMillis
|
|
93847
|
+
timestampMillis,
|
|
93848
|
+
fillType
|
|
93803
93849
|
})
|
|
93804
93850
|
}
|
|
93805
93851
|
});
|
|
93806
93852
|
}
|
|
93807
93853
|
if (a2.kind === "cancelByClientId") {
|
|
93808
93854
|
return create(AtomicSubactionSchema, {
|
|
93809
|
-
|
|
93855
|
+
...target,
|
|
93810
93856
|
inner: {
|
|
93811
93857
|
case: "cancelOrderByClientId",
|
|
93812
93858
|
value: create(AtomicCancelOrderByClientIdSchema, {
|
|
@@ -93820,6 +93866,7 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
|
|
|
93820
93866
|
assert3(triggerPrice > 0n, "Trigger price must be positive");
|
|
93821
93867
|
const limits = buildLimits(a2.priceDecimals, a2.sizeDecimals, a2.limitPrice, a2.limitBaseSize, a2.limitQuoteSize);
|
|
93822
93868
|
return create(AtomicSubactionSchema, {
|
|
93869
|
+
...target,
|
|
93823
93870
|
inner: {
|
|
93824
93871
|
case: "addTrigger",
|
|
93825
93872
|
value: create(AtomicAddTriggerSchema, {
|
|
@@ -93841,6 +93888,7 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
|
|
|
93841
93888
|
assert3(triggerPrice > 0n, "Trigger price must be positive");
|
|
93842
93889
|
const limits = buildLimits(a2.priceDecimals, a2.sizeDecimals, a2.limitPrice, a2.limitBaseSize, a2.limitQuoteSize);
|
|
93843
93890
|
return create(AtomicSubactionSchema, {
|
|
93891
|
+
...target,
|
|
93844
93892
|
inner: {
|
|
93845
93893
|
case: "editTrigger",
|
|
93846
93894
|
value: create(AtomicEditTriggerSchema, {
|
|
@@ -93858,6 +93906,7 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
|
|
|
93858
93906
|
}
|
|
93859
93907
|
if (a2.kind === "removeTrigger") {
|
|
93860
93908
|
return create(AtomicSubactionSchema, {
|
|
93909
|
+
...target,
|
|
93861
93910
|
inner: {
|
|
93862
93911
|
case: "removeTrigger",
|
|
93863
93912
|
value: create(AtomicRemoveTriggerSchema, {
|
|
@@ -93868,7 +93917,7 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
|
|
|
93868
93917
|
});
|
|
93869
93918
|
}
|
|
93870
93919
|
return create(AtomicSubactionSchema, {
|
|
93871
|
-
|
|
93920
|
+
...target,
|
|
93872
93921
|
inner: {
|
|
93873
93922
|
case: "cancelOrder",
|
|
93874
93923
|
value: create(AtomicCancelOrderByIdSchema, {
|
|
@@ -93877,53 +93926,10 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
|
|
|
93877
93926
|
}
|
|
93878
93927
|
});
|
|
93879
93928
|
}
|
|
93880
|
-
function
|
|
93881
|
-
return "placement" in a2 ? a2.placement : undefined;
|
|
93882
|
-
}
|
|
93883
|
-
async function atomic(client2, signFn, currentTimestamp, nonce, params) {
|
|
93929
|
+
function createAtomicAction(currentTimestamp, nonce, params) {
|
|
93884
93930
|
assert3(params.actions.length > 0 && params.actions.length <= 10, "Atomic action must contain between 1 and 10 sub-actions");
|
|
93885
|
-
const
|
|
93886
|
-
|
|
93887
|
-
const action = createAction(currentTimestamp, nonce, useAtomicV2 ? {
|
|
93888
|
-
case: "atomicV2",
|
|
93889
|
-
value: create(AtomicV2Schema, {
|
|
93890
|
-
sessionId: BigInt(params.sessionId),
|
|
93891
|
-
accountId: params.accountId,
|
|
93892
|
-
actions: params.actions.map((a2, index) => {
|
|
93893
|
-
const subaction = subactions[index];
|
|
93894
|
-
assert3(subaction !== undefined, "Atomic subaction missing");
|
|
93895
|
-
let placement;
|
|
93896
|
-
const placementRequest = atomicPlacement(a2);
|
|
93897
|
-
if (placementRequest === undefined) {
|
|
93898
|
-
if ("delegatorAccountId" in a2 && a2.delegatorAccountId !== undefined) {
|
|
93899
|
-
placement = create(AtomicPlacementRequestSchema, {
|
|
93900
|
-
inner: {
|
|
93901
|
-
case: "liquidationAccountId",
|
|
93902
|
-
value: a2.delegatorAccountId
|
|
93903
|
-
}
|
|
93904
|
-
});
|
|
93905
|
-
}
|
|
93906
|
-
} else if (placementRequest !== "accountOwner") {
|
|
93907
|
-
if ("vault" in placementRequest) {
|
|
93908
|
-
placement = create(AtomicPlacementRequestSchema, {
|
|
93909
|
-
inner: { case: "vaultId", value: placementRequest.vault }
|
|
93910
|
-
});
|
|
93911
|
-
} else {
|
|
93912
|
-
placement = create(AtomicPlacementRequestSchema, {
|
|
93913
|
-
inner: {
|
|
93914
|
-
case: "liquidationAccountId",
|
|
93915
|
-
value: placementRequest.liquidation
|
|
93916
|
-
}
|
|
93917
|
-
});
|
|
93918
|
-
}
|
|
93919
|
-
}
|
|
93920
|
-
return create(AtomicSubactionV2Schema, {
|
|
93921
|
-
placement,
|
|
93922
|
-
subaction
|
|
93923
|
-
});
|
|
93924
|
-
})
|
|
93925
|
-
})
|
|
93926
|
-
} : {
|
|
93931
|
+
const subactions = params.actions.map((a2) => atomicSubactionToProto(currentTimestamp, a2));
|
|
93932
|
+
return createAction(currentTimestamp, nonce, {
|
|
93927
93933
|
case: "atomic",
|
|
93928
93934
|
value: create(AtomicSchema, {
|
|
93929
93935
|
sessionId: BigInt(params.sessionId),
|
|
@@ -93931,6 +93937,9 @@ async function atomic(client2, signFn, currentTimestamp, nonce, params) {
|
|
|
93931
93937
|
actions: subactions
|
|
93932
93938
|
})
|
|
93933
93939
|
});
|
|
93940
|
+
}
|
|
93941
|
+
async function atomic(client2, signFn, currentTimestamp, nonce, params) {
|
|
93942
|
+
const action = createAtomicAction(currentTimestamp, nonce, params);
|
|
93934
93943
|
const resp = await sendAction(client2, (m2) => sessionSign(signFn, m2), action);
|
|
93935
93944
|
const results = normalizeAtomicReceipt(resp, params.actions.length);
|
|
93936
93945
|
if (results !== undefined) {
|
|
@@ -93943,17 +93952,25 @@ async function atomic(client2, signFn, currentTimestamp, nonce, params) {
|
|
|
93943
93952
|
}
|
|
93944
93953
|
|
|
93945
93954
|
// src/client/NordUser.ts
|
|
93955
|
+
function withAtomicTarget(target, action) {
|
|
93956
|
+
const targetFields = target.targetAccountId === undefined ? {} : target.useKey === true ? { targetAccountId: target.targetAccountId, useKey: true } : { targetAccountId: target.targetAccountId };
|
|
93957
|
+
return { ...targetFields, ...action };
|
|
93958
|
+
}
|
|
93946
93959
|
function decodeRfqFillResult(actionId, result) {
|
|
93947
93960
|
if (result?.case !== "rfqFillResult") {
|
|
93948
93961
|
throw new NordError("RFQ fill did not return an RFQ fill result");
|
|
93949
93962
|
}
|
|
93963
|
+
const execution = result.value.execution;
|
|
93950
93964
|
return {
|
|
93951
93965
|
actionId,
|
|
93952
93966
|
orderId: result.value.orderId,
|
|
93953
93967
|
makerAccountId: result.value.makerAccountId,
|
|
93954
93968
|
takerAccountId: result.value.takerAccountId,
|
|
93955
|
-
|
|
93956
|
-
|
|
93969
|
+
execution: execution === undefined ? null : {
|
|
93970
|
+
filledSize: execution.filledSize,
|
|
93971
|
+
tradeId: execution.tradeId,
|
|
93972
|
+
executionPrice: execution.executionPrice
|
|
93973
|
+
}
|
|
93957
93974
|
};
|
|
93958
93975
|
}
|
|
93959
93976
|
|
|
@@ -94078,7 +94095,8 @@ class NordUser {
|
|
|
94078
94095
|
const mint = new import_web310.PublicKey(tokenInfo.mint);
|
|
94079
94096
|
const fromAccount = await this.getAssociatedTokenAccount(mint);
|
|
94080
94097
|
const payer = this.publicKey;
|
|
94081
|
-
const
|
|
94098
|
+
const protonClient = await this.nord.getProtonClient();
|
|
94099
|
+
const { ix, extraSigner } = await protonClient.buildDepositIx({
|
|
94082
94100
|
payer,
|
|
94083
94101
|
recipient: recipient ?? payer,
|
|
94084
94102
|
quantAmount: floatToScaledBigIntLossy(amount, tokenInfo.precision),
|
|
@@ -94478,7 +94496,10 @@ class NordUser {
|
|
|
94478
94496
|
price,
|
|
94479
94497
|
timeout,
|
|
94480
94498
|
accountId,
|
|
94481
|
-
clientOrderId
|
|
94499
|
+
clientOrderId,
|
|
94500
|
+
minimumSize,
|
|
94501
|
+
maximumSize,
|
|
94502
|
+
isReduceOnly
|
|
94482
94503
|
}) {
|
|
94483
94504
|
try {
|
|
94484
94505
|
const result = await this.atomic([
|
|
@@ -94489,7 +94510,10 @@ class NordUser {
|
|
|
94489
94510
|
size,
|
|
94490
94511
|
price,
|
|
94491
94512
|
timeout,
|
|
94492
|
-
clientOrderId
|
|
94513
|
+
clientOrderId,
|
|
94514
|
+
minimumSize,
|
|
94515
|
+
maximumSize,
|
|
94516
|
+
isReduceOnly
|
|
94493
94517
|
}
|
|
94494
94518
|
], accountId);
|
|
94495
94519
|
const rfqResult = result.results[0]?.inner;
|
|
@@ -94509,7 +94533,10 @@ class NordUser {
|
|
|
94509
94533
|
orderId,
|
|
94510
94534
|
price,
|
|
94511
94535
|
timeout,
|
|
94512
|
-
accountId
|
|
94536
|
+
accountId,
|
|
94537
|
+
minimumSize,
|
|
94538
|
+
maximumSize,
|
|
94539
|
+
isReduceOnly
|
|
94513
94540
|
}) {
|
|
94514
94541
|
try {
|
|
94515
94542
|
const result = await this.atomic([
|
|
@@ -94518,7 +94545,10 @@ class NordUser {
|
|
|
94518
94545
|
marketId,
|
|
94519
94546
|
orderId,
|
|
94520
94547
|
price,
|
|
94521
|
-
timeout
|
|
94548
|
+
timeout,
|
|
94549
|
+
minimumSize,
|
|
94550
|
+
maximumSize,
|
|
94551
|
+
isReduceOnly
|
|
94522
94552
|
}
|
|
94523
94553
|
], accountId);
|
|
94524
94554
|
return decodeRfqFillResult(result.actionId, result.results[0]?.inner);
|
|
@@ -94848,7 +94878,7 @@ class NordUser {
|
|
|
94848
94878
|
if (!market) {
|
|
94849
94879
|
throw new NordError(`Market ${act.marketId} not found`);
|
|
94850
94880
|
}
|
|
94851
|
-
return {
|
|
94881
|
+
return withAtomicTarget(act, {
|
|
94852
94882
|
kind: "place",
|
|
94853
94883
|
marketId: act.marketId,
|
|
94854
94884
|
side: act.side,
|
|
@@ -94860,34 +94890,27 @@ class NordUser {
|
|
|
94860
94890
|
price: act.price,
|
|
94861
94891
|
quoteSize: act.quoteSize,
|
|
94862
94892
|
clientOrderId: act.clientOrderId,
|
|
94863
|
-
delegatorAccountId: act.delegatorAccountId,
|
|
94864
|
-
placement: act.placement,
|
|
94865
94893
|
referrer: act.referrer
|
|
94866
|
-
};
|
|
94894
|
+
});
|
|
94867
94895
|
}
|
|
94868
94896
|
if (act.kind === "cancel") {
|
|
94869
|
-
return {
|
|
94897
|
+
return withAtomicTarget(act, {
|
|
94870
94898
|
kind: "cancel",
|
|
94871
|
-
orderId: act.orderId
|
|
94872
|
-
|
|
94873
|
-
placement: act.placement
|
|
94874
|
-
};
|
|
94899
|
+
orderId: act.orderId
|
|
94900
|
+
});
|
|
94875
94901
|
}
|
|
94876
94902
|
if (act.kind === "reduceOrderLiquidation") {
|
|
94877
|
-
return {
|
|
94903
|
+
return withAtomicTarget(act, {
|
|
94878
94904
|
kind: "reduceOrderLiquidation",
|
|
94879
|
-
|
|
94880
|
-
|
|
94881
|
-
delegatorAccountId: act.delegatorAccountId,
|
|
94882
|
-
placement: act.placement
|
|
94883
|
-
};
|
|
94905
|
+
marketId: act.marketId
|
|
94906
|
+
});
|
|
94884
94907
|
}
|
|
94885
94908
|
if (act.kind === "rfq") {
|
|
94886
94909
|
const market = findMarket(this.nord.markets, act.marketId);
|
|
94887
94910
|
if (!market) {
|
|
94888
94911
|
throw new NordError(`Market ${act.marketId} not found`);
|
|
94889
94912
|
}
|
|
94890
|
-
return {
|
|
94913
|
+
return withAtomicTarget(act, {
|
|
94891
94914
|
kind: "rfq",
|
|
94892
94915
|
marketId: act.marketId,
|
|
94893
94916
|
side: act.side,
|
|
@@ -94897,30 +94920,34 @@ class NordUser {
|
|
|
94897
94920
|
size: act.size,
|
|
94898
94921
|
timeout: act.timeout,
|
|
94899
94922
|
clientOrderId: act.clientOrderId,
|
|
94900
|
-
|
|
94901
|
-
|
|
94923
|
+
minimumSize: act.minimumSize,
|
|
94924
|
+
maximumSize: act.maximumSize,
|
|
94925
|
+
isReduceOnly: act.isReduceOnly
|
|
94926
|
+
});
|
|
94902
94927
|
}
|
|
94903
94928
|
if (act.kind === "rfqFill") {
|
|
94904
94929
|
const market = findMarket(this.nord.markets, act.marketId);
|
|
94905
94930
|
if (!market) {
|
|
94906
94931
|
throw new NordError(`Market ${act.marketId} not found`);
|
|
94907
94932
|
}
|
|
94908
|
-
return {
|
|
94933
|
+
return withAtomicTarget(act, {
|
|
94909
94934
|
kind: "rfqFill",
|
|
94910
94935
|
marketId: act.marketId,
|
|
94911
94936
|
orderId: act.orderId,
|
|
94912
94937
|
priceDecimals: market.priceDecimals,
|
|
94913
94938
|
price: act.price,
|
|
94914
94939
|
timeout: act.timeout,
|
|
94915
|
-
|
|
94916
|
-
|
|
94940
|
+
minimumSize: act.minimumSize,
|
|
94941
|
+
maximumSize: act.maximumSize,
|
|
94942
|
+
isReduceOnly: act.isReduceOnly
|
|
94943
|
+
});
|
|
94917
94944
|
}
|
|
94918
94945
|
if (act.kind === "addTrigger") {
|
|
94919
94946
|
const market = findMarket(this.nord.markets, act.marketId);
|
|
94920
94947
|
if (!market) {
|
|
94921
94948
|
throw new NordError(`Market ${act.marketId} not found`);
|
|
94922
94949
|
}
|
|
94923
|
-
return {
|
|
94950
|
+
return withAtomicTarget(act, {
|
|
94924
94951
|
kind: "addTrigger",
|
|
94925
94952
|
marketId: act.marketId,
|
|
94926
94953
|
side: act.side,
|
|
@@ -94931,16 +94958,15 @@ class NordUser {
|
|
|
94931
94958
|
limitPrice: act.limitPrice,
|
|
94932
94959
|
limitBaseSize: act.limitBaseSize,
|
|
94933
94960
|
limitQuoteSize: act.limitQuoteSize,
|
|
94934
|
-
placement: act.placement,
|
|
94935
94961
|
referrer: act.referrer
|
|
94936
|
-
};
|
|
94962
|
+
});
|
|
94937
94963
|
}
|
|
94938
94964
|
if (act.kind === "editTrigger") {
|
|
94939
94965
|
const market = findMarket(this.nord.markets, act.marketId);
|
|
94940
94966
|
if (!market) {
|
|
94941
94967
|
throw new NordError(`Market ${act.marketId} not found`);
|
|
94942
94968
|
}
|
|
94943
|
-
return {
|
|
94969
|
+
return withAtomicTarget(act, {
|
|
94944
94970
|
kind: "editTrigger",
|
|
94945
94971
|
triggerId: act.triggerId,
|
|
94946
94972
|
marketId: act.marketId,
|
|
@@ -94951,24 +94977,20 @@ class NordUser {
|
|
|
94951
94977
|
sizeDecimals: market.sizeDecimals,
|
|
94952
94978
|
limitPrice: act.limitPrice,
|
|
94953
94979
|
limitBaseSize: act.limitBaseSize,
|
|
94954
|
-
limitQuoteSize: act.limitQuoteSize
|
|
94955
|
-
|
|
94956
|
-
};
|
|
94980
|
+
limitQuoteSize: act.limitQuoteSize
|
|
94981
|
+
});
|
|
94957
94982
|
}
|
|
94958
94983
|
if (act.kind === "removeTrigger") {
|
|
94959
|
-
return {
|
|
94984
|
+
return withAtomicTarget(act, {
|
|
94960
94985
|
kind: "removeTrigger",
|
|
94961
94986
|
marketId: act.marketId,
|
|
94962
|
-
triggerId: act.triggerId
|
|
94963
|
-
|
|
94964
|
-
};
|
|
94987
|
+
triggerId: act.triggerId
|
|
94988
|
+
});
|
|
94965
94989
|
}
|
|
94966
|
-
return {
|
|
94990
|
+
return withAtomicTarget(act, {
|
|
94967
94991
|
kind: "cancelByClientId",
|
|
94968
|
-
clientOrderId: act.clientOrderId
|
|
94969
|
-
|
|
94970
|
-
placement: act.placement
|
|
94971
|
-
};
|
|
94992
|
+
clientOrderId: act.clientOrderId
|
|
94993
|
+
});
|
|
94972
94994
|
});
|
|
94973
94995
|
const result = await atomic(this.nord.httpClient, this.signSessionMessage, await this.nord.getTimestamp(), this.getNonce(), {
|
|
94974
94996
|
sessionId: optExpect(this.sessionId, "No session"),
|